diff --git a/MSMBuilder/tpt.py b/MSMBuilder/tpt.py index 60f0498a..9fc1a40d 100644 --- a/MSMBuilder/tpt.py +++ b/MSMBuilder/tpt.py @@ -17,7 +17,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA """ -Functions for performing Transition Path Theory calculations. +Functions for performing Transition Path Theory calculations. Written and maintained by TJ Lane Contributions from Kyle Beauchamp, Robert McGibbon, Vince Voelz, @@ -30,8 +30,8 @@ References ---------- -.. [1] Metzner, P., Schutte, C. & Vanden-Eijnden, E. Transition path theory - for Markov jump processes. Multiscale Model. Simul. 7, 1192–1219 +.. [1] Metzner, P., Schutte, C. & Vanden-Eijnden, E. Transition path theory + for Markov jump processes. Multiscale Model. Simul. 7, 1192-1219 (2009). .. [2] Berezhkovskii, A., Hummer, G. & Szabo, A. Reactive flux and folding pathways in network models of coarse-grained protein dynamics. J. @@ -44,6 +44,8 @@ from msmbuilder import MSMLib from msmbuilder import msm_analysis from msmbuilder.utils import deprecated +import itertools +import copy import logging logger = logging.getLogger(__name__) @@ -64,13 +66,14 @@ def _ensure_iterable(arg): assert hasattr(arg, '__iter__') return arg - def _check_sources_sinks(sources, sinks): sources = _ensure_iterable(sources) sinks = _ensure_iterable(sinks) - if np.any(sources == sinks): - raise ValueError("Sets `sources` and `sinks` must be disjoint " - "to find paths between them") + + for s in sources: + if s in sinks: + raise ValueError("sources and sinks are not disjoint") + return sources, sinks @@ -78,7 +81,275 @@ def _check_sources_sinks(sources, sinks): # Path Finding Functions # -def find_top_paths(sources, sinks, tprob, num_paths=10, node_wipe=False, net_flux=None): +def get_top_path_scipy(sources, sinks, net_flux): + """ + Use the Dijkstra algorithm for finding the shortest path connecting + sources and sinks + + Parameters + ---------- + sources : array_like + nodes to define the source states + sinks : array_like + nodes to define the sink states + net_flux : scipy.sparse matrix + net flux of the MSM + + Returns + ------- + top_path : np.ndarray + array corresponding to the top path between sources and sinks + + """ + + _check_sources_sinks(sources, sinks) + + if not scipy.sparse.issparse(net_flux): + logger.warn("only sparse matrices are currently supported.") + net_flux = scipy.sparse.lil_matrix(net_flux) + + net_flux = net_flux.tolil() + n_states = net_flux.shape[0] + + sources = np.array(sources, dtype=np.int).flatten() + sinks = np.array(sinks, dtype=np.int).flatten() + + Q = list(sources) # nodes to check (the "queue") + # going to use list.pop method so I can't keep it as an array + +def get_top_path(sources, sinks, net_flux): + """ + Use the Dijkstra algorithm for finding the shortest path connecting + sources and sinks + + Parameters + ---------- + sources : array_like + nodes to define the source states + sinks : array_like + nodes to define the sink states + net_flux : scipy.sparse matrix + net flux of the MSM + + Returns + ------- + top_path : np.ndarray + array corresponding to the top path between sources and sinks + + """ + + _check_sources_sinks(sources, sinks) + + if not scipy.sparse.issparse(net_flux): + logger.warn("only sparse matrices are currently supported.") + net_flux = scipy.sparse.lil_matrix(net_flux) + + net_flux = net_flux.tolil() + n_states = net_flux.shape[0] + + sources = np.array(sources, dtype=np.int).flatten() + sinks = np.array(sinks, dtype=np.int).flatten() + + Q = list(sources) # nodes to check (the "queue") + # going to use list.pop method so I can't keep it as an array + visited = np.zeros(n_states).astype(np.bool) # have we already checked this node? + previous_node = np.ones(n_states).astype(np.int) * -1 # what node was found before finding this one + min_fluxes = np.ones(n_states) * -1 * np.inf # what is the flux of the highest flux path + # from this node to the source set. + + min_fluxes[sources] = np.inf # source states are connected to the source + # so this distance is zero which means the flux is infinite + + while len(Q) > 0: # iterate until there's nothing to check anymore + + test_node = Q.pop(min_fluxes[Q].argmax()) # find the node in the queue that has the + # highest flux path to it from the source set + visited[test_node] = True + + if np.all(visited[sinks]): + # if we've visited all of the sink states, then we just have to choose + # the path that goes to the sink state that is closest to the source + break + + #if test_node in sinks: # I *think* we want to break ... or are there paths we still + # # need to check? + # continue # I think if sinks is more than one state we have to check everything + + # now update the distances for each neighbor of the test_node: + neighbors = np.where(net_flux[test_node, :].toarray() > 0)[1] + if len(neighbors) == 0: + continue + new_fluxes = net_flux[test_node, neighbors].toarray().flatten() + # flux from test_node to each neighbor + + new_fluxes[np.where(new_fluxes > min_fluxes[test_node])] = min_fluxes[test_node] + # previous step to get to test_node was lower flux, so that is still the path flux + + ind = np.where((1 - visited[neighbors]) & (new_fluxes > min_fluxes[neighbors])) + min_fluxes[neighbors[ind]] = new_fluxes[ind] + + previous_node[neighbors[ind]] = test_node # each of these neighbors came from this test_node + # we don't want to update the nodes that have already been visited + + Q.extend(neighbors[ind]) + + top_path = [] + # populate the path in reverse + top_path.append(int(sinks[min_fluxes[sinks].argmax()])) + # find the closest sink state + + while previous_node[top_path[-1]] != -1: + top_path.append(previous_node[top_path[-1]]) + + return np.array(top_path[::-1]), min_fluxes[top_path[0]] + + +def get_paths(sources, sinks, net_flux, num_paths=np.inf, flux_cutoff=(1-1E-10)): + """ + Get the top N paths by iteratively performing Dijkstra's + algorithm, but at each step modifying the net flux matrix + by subtracting the previously found path's flux from each + edge in that path. + + Parameters + ---------- + sources : array_like + nodes to define the source states + sinks : array_like + nodes to define the sink states + net_flux : scipy.sparse matrix + net flux of the MSM + num_paths : int, optional + number of paths to find + flux_cutoff : float, optional + quit finding paths once the explained flux is greater + this cutoff (as a percentage of the total) + + Returns + ------- + paths : np.ndarray + list of paths + fluxes : np.ndarray + flux of each path returned + """ + + _check_sources_sinks(sources, sinks) + + if not scipy.sparse.issparse(net_flux): + logger.warn("only sparse matrices are currently supported") + net_flux = scipy.sparse.lil_matrix(net_flux) + + net_flux = copy.deepcopy(net_flux.tolil()) + + paths = [] + fluxes = [] + + total_flux = net_flux[sources, :].sum() + # total flux is the total flux coming from the sources (or going into the sinks) + + not_done = True + counter = 0 + expl_flux = 0.0 + while not_done: + path, flux = get_top_path(sources, sinks, net_flux) + if np.isinf(flux): + logger.info("no more paths exist") + break + + paths.append(path) + fluxes.append(flux) + + expl_flux += flux / total_flux + + counter += 1 + logger.debug("Found next path (%d) with flux %.4e (%.2f%% of total)" % (counter, flux, expl_flux * 100)) + + if counter >= num_paths or expl_flux >= flux_cutoff: + break + + # modify the net_flux matrix + for k in xrange(len(path) - 1): + net_flux[path[k], path[k+1]] -= flux + # since flux is the bottleneck, this will never be negative + # though... this might lead to CLOS which is bad... + # I'll fix this (^^^^) later.. for now let's get it working + + + max_len = np.max([len(p) for p in paths]) + temp = np.ones((len(paths), max_len)) * -1 + for i in range(len(paths)): + temp[i][:len(paths[i])] = paths[i] + + fluxes = np.array(fluxes) + + return temp, fluxes + + +def _get_enumerated_paths(sources, sinks, net_flux, num_paths=1): + """ + get all possible paths, sorted from highest to lowest flux + + Parameters + ---------- + sources : array_like + nodes to define the source states + sinks : array_like + nodes to define the sink states + net_flux : scipy.sparse matrix + net flux of the MSM + + Returns + ------- + paths : np.ndarray + list of paths + fluxes : np.ndarray + flux of each path returned + """ + + paths = [] + edges = [] + fluxes = [] + + temp_net_flux = copy.deepcopy(net_flux).tolil() + + path, flux = get_top_path(sources, sinks, temp_net_flux) + paths.append(path) + edges.append([[path[i], path[i + 1]] for i in xrange(len(path) - 1)]) + fluxes.append(flux) + + for i in xrange(1, num_paths): + #print "found %s - %.4e" % (str(paths[-1]), fluxes[-1]) + test_path = None + test_flux = - np.inf + + edge_list = itertools.product(*edges) + # this is a list of sets of edges to remove from net flux + + for edges_to_remove in edge_list: + temp_net_flux = copy.deepcopy(net_flux).tolil() + for edge in edges_to_remove: + temp_net_flux[edge[0], edge[1]] = 0.0 + + path, flux = get_top_path(sources, sinks, temp_net_flux) + if flux > test_flux: + test_path = path + test_flux = flux + + paths.append(test_path) + edges.append([[test_path[i], test_path[i + 1]] for i in xrange(len(test_path) - 1)]) + fluxes.append(test_flux) + + max_len = np.max([len(p) for p in paths]) + temp = np.ones((len(paths), max_len)) * -1 + for i in range(len(paths)): + temp[i][:len(paths[i])] = paths[i] + + fluxes = np.array(fluxes) + + return temp, fluxes + + +def _find_top_paths_cut(sources, sinks, tprob, num_paths=10, node_wipe=False, net_flux=None): r""" Calls the Dijkstra algorithm to find the top 'NumPaths'. @@ -121,7 +392,7 @@ def find_top_paths(sources, sinks, tprob, num_paths=10, node_wipe=False, net_flu References ---------- .. [1] Dijkstra, E. W. (1959). "A note on two problems in connexion with - graphs". Numerische Mathematik 1: 269–271. doi:10.1007/BF01386390. + graphs." Numerische Mathematik 1: 269-271. doi:10.1007/BF01386390. """ # first, do some checking on the input, esp. `sources` and `sinks` @@ -142,7 +413,7 @@ def find_top_paths(sources, sinks, tprob, num_paths=10, node_wipe=False, net_flu net_flux = net_flux.tolil() # run the initial Dijkstra pass - pi, b = Dijkstra(sources, sinks, net_flux) + pi, b = _Dijkstra(sources, sinks, net_flux) logger.info("Path Num | Path | Bottleneck | Flux") @@ -194,7 +465,7 @@ def find_top_paths(sources, sinks, tprob, num_paths=10, node_wipe=False, net_flu return paths, bottlenecks, fluxes -def Dijkstra(sources, sinks, net_flux): +def _Dijkstra(sources, sinks, net_flux): r""" A modified Dijkstra algorithm that dynamically computes the cost of all paths from A to B, weighted by NFlux. @@ -224,7 +495,7 @@ def Dijkstra(sources, sinks, net_flux): References ---------- .. [1] Dijkstra, E. W. (1959). "A note on two problems in connexion with - graphs". Numerische Mathematik 1: 269–271. doi:10.1007/BF01386390. + graphs." Numerische Mathematik 1: 269-271. doi:10.1007/BF01386390. """ sources, sinks = _check_sources_sinks(sources, sinks) @@ -420,7 +691,7 @@ def find_path_bottleneck(path, net_flux): References ---------- .. [1] Metzner, P., Schutte, C. & Vanden-Eijnden, E. Transition path theory - for Markov jump processes. Multiscale Model. Simul. 7, 1192–1219 + for Markov jump processes. Multiscale Model. Simul. 7, 1192-1219 (2009). .. [2] Berezhkovskii, A., Hummer, G. & Szabo, A. Reactive flux and folding pathways in network models of coarse-grained protein dynamics. J. @@ -471,7 +742,7 @@ def calculate_fluxes(sources, sinks, tprob, populations=None, committors=None): References ---------- .. [1] Metzner, P., Schutte, C. & Vanden-Eijnden, E. Transition path theory - for Markov jump processes. Multiscale Model. Simul. 7, 1192–1219 + for Markov jump processes. Multiscale Model. Simul. 7, 1192-1219 (2009). .. [2] Berezhkovskii, A., Hummer, G. & Szabo, A. Reactive flux and folding pathways in network models of coarse-grained protein dynamics. J. @@ -488,7 +759,7 @@ def calculate_fluxes(sources, sinks, tprob, populations=None, committors=None): # check if we got the populations if populations is None: - eigens = msm_analysis.get_eigenvectors(tprob, 1) + eigens = msm_analysis.get_eigenvectors(tprob, 5) if np.count_nonzero(np.imag(eigens[1][:, 0])) != 0: raise ValueError('First eigenvector has imaginary components') populations = np.real(eigens[1][:, 0]) @@ -556,7 +827,7 @@ def calculate_net_fluxes(sources, sinks, tprob, populations=None, committors=Non References ---------- .. [1] Metzner, P., Schutte, C. & Vanden-Eijnden, E. Transition path theory - for Markov jump processes. Multiscale Model. Simul. 7, 1192–1219 + for Markov jump processes. Multiscale Model. Simul. 7, 1192-1219 (2009). .. [2] Berezhkovskii, A., Hummer, G. & Szabo, A. Reactive flux and folding pathways in network models of coarse-grained protein dynamics. J. @@ -623,7 +894,7 @@ def calculate_ensemble_mfpt(sources, sinks, tprob, lag_time): References ---------- .. [1] Metzner, P., Schutte, C. & Vanden-Eijnden, E. Transition path theory - for Markov jump processes. Multiscale Model. Simul. 7, 1192–1219 + for Markov jump processes. Multiscale Model. Simul. 7, 1192-1219 (2009). .. [2] Berezhkovskii, A., Hummer, G. & Szabo, A. Reactive flux and folding pathways in network models of coarse-grained protein dynamics. J. @@ -673,7 +944,7 @@ def calculate_avg_TP_time(sources, sinks, tprob, lag_time): References ---------- .. [1] Metzner, P., Schutte, C. & Vanden-Eijnden, E. Transition path theory - for Markov jump processes. Multiscale Model. Simul. 7, 1192–1219 + for Markov jump processes. Multiscale Model. Simul. 7, 1192-1219 (2009). .. [2] Berezhkovskii, A., Hummer, G. & Szabo, A. Reactive flux and folding pathways in network models of coarse-grained protein dynamics. J. @@ -741,7 +1012,7 @@ def calculate_mfpt(sinks, tprob, lag_time=1.): References ---------- .. [1] Metzner, P., Schutte, C. & Vanden-Eijnden, E. Transition path theory - for Markov jump processes. Multiscale Model. Simul. 7, 1192–1219 + for Markov jump processes. Multiscale Model. Simul. 7, 1192-1219 (2009). .. [2] Berezhkovskii, A., Hummer, G. & Szabo, A. Reactive flux and folding pathways in network models of coarse-grained protein dynamics. J. @@ -808,7 +1079,7 @@ def calculate_all_to_all_mfpt(tprob, populations=None): References ---------- .. [1] Metzner, P., Schutte, C. & Vanden-Eijnden, E. Transition path theory - for Markov jump processes. Multiscale Model. Simul. 7, 1192–1219 + for Markov jump processes. Multiscale Model. Simul. 7, 1192-1219 (2009). .. [2] Berezhkovskii, A., Hummer, G. & Szabo, A. Reactive flux and folding pathways in network models of coarse-grained protein dynamics. J. @@ -868,7 +1139,7 @@ def calculate_committors(sources, sinks, tprob): References ---------- .. [1] Metzner, P., Schutte, C. & Vanden-Eijnden, E. Transition path theory - for Markov jump processes. Multiscale Model. Simul. 7, 1192–1219 + for Markov jump processes. Multiscale Model. Simul. 7, 1192-1219 (2009). .. [2] Berezhkovskii, A., Hummer, G. & Szabo, A. Reactive flux and folding pathways in network models of coarse-grained protein dynamics. J. diff --git a/reference/tpt/F.dat b/reference/tpt/F.dat new file mode 100644 index 00000000..2bbd69c2 --- /dev/null +++ b/reference/tpt/F.dat @@ -0,0 +1 @@ +70 diff --git a/reference/tpt/U.dat b/reference/tpt/U.dat new file mode 100644 index 00000000..573541ac --- /dev/null +++ b/reference/tpt/U.dat @@ -0,0 +1 @@ +0 diff --git a/reference/tpt/paths.h5 b/reference/tpt/paths.h5 new file mode 100644 index 00000000..016019ea Binary files /dev/null and b/reference/tpt/paths.h5 differ diff --git a/reference/tpt/tProb.mtx b/reference/tpt/tProb.mtx new file mode 100644 index 00000000..9536b800 --- /dev/null +++ b/reference/tpt/tProb.mtx @@ -0,0 +1,2949 @@ +%%MatrixMarket matrix coordinate real general +% +74 74 2946 +1 74 0.002387105275591766 +1 73 0.002555215933377272 +1 71 8.500177837193145e-05 +1 70 0.00153496356206692 +1 69 0.001613370525395051 +1 68 0.002376061781330696 +1 67 0.05018710556685915 +1 66 0.01414461926192278 +1 65 0.02418714429942547 +1 64 8.263722710771863e-05 +1 63 0.003913835174132316 +1 62 0.06800168633497511 +1 61 0.005697865460422503 +1 60 0.004501880588948897 +1 59 0.002733298652678454 +1 58 0.05921811682111736 +1 57 0.0397338334297197 +1 56 0.001866972439543779 +1 55 8.509259961284111e-05 +1 54 0.02817627361663111 +1 52 0.01997704296419617 +1 51 0.04399046430867901 +1 49 0.07611283362163702 +1 48 0.001352077393581154 +1 47 0.02547194693609996 +1 46 0.0001699797210679342 +1 45 0.001273554315930442 +1 44 8.532606446122428e-05 +1 43 0.0001704566313320604 +1 42 0.003545563431887587 +1 41 0.004666224514620704 +1 40 0.00195443397883072 +1 39 0.009007122320002003 +1 38 0.0186871474537008 +1 37 0.008424778874498155 +1 36 0.03221537418744366 +1 35 0.06342540927823155 +1 34 0.003818995888971036 +1 33 0.02171501454402129 +1 31 0.005323059280862939 +1 30 0.000170634070768158 +1 29 0.007322865806692972 +1 27 0.0004289159509359113 +1 26 0.0005942132586066071 +1 25 0.000254654807953532 +1 21 0.0002545106371654131 +1 19 0.02275873036839781 +1 18 0.00236380598513266 +1 17 0.006520230317281511 +1 16 0.001774353843931391 +1 15 0.02619514412868377 +1 13 0.01217138813608864 +1 11 0.008812539552616272 +1 10 0.09595088954650381 +1 9 0.00491521996626449 +1 8 8.515807672449442e-05 +1 6 0.004996941414772953 +1 5 0.001174769941291013 +1 4 0.000340131194833514 +1 3 0.0005891568393343945 +1 2 8.529592779575835e-05 +1 1 0.1477715641889387 +2 73 0.01920306427370829 +2 72 0.08159582399453698 +2 70 0.009613094962961742 +2 67 0.004802663832571564 +2 63 0.05275194623756527 +2 61 0.00479332749880841 +2 60 0.009575122567821875 +2 59 0.004814481872282009 +2 57 0.004785303633573033 +2 56 0.004783092514216585 +2 55 0.03357308488740286 +2 54 0.004783427865345974 +2 53 0.01928445921220508 +2 51 0.004786570217052656 +2 49 0.004777179390843647 +2 48 0.004762806240672474 +2 46 0.004790325503890951 +2 44 0.0529034250428731 +2 43 0.1008809705949583 +2 41 0.004781847781384723 +2 40 0.02394752233017431 +2 38 0.004809593839729035 +2 35 0.004792072840702388 +2 34 0.0191333213880402 +2 33 0.004780930306587793 +2 32 0.08166041356690346 +2 31 0.00952426981289467 +2 30 0.01442666981554931 +2 25 0.004784372116105096 +2 24 0.01438620888578285 +2 17 0.02386324417936555 +2 14 0.04319462911017028 +2 11 0.05253511202440067 +2 9 0.004776442092171792 +2 8 0.02399935122799879 +2 7 0.02111929179192045 +2 4 0.02875657098891649 +2 2 0.1826923047667123 +2 1 0.004775660791198888 +3 73 0.05621683896692635 +3 70 0.008040519429851355 +3 67 0.01606821871691463 +3 66 0.007986437658681358 +3 65 0.01600450564048163 +3 64 0.007793358288085036 +3 63 0.06418001524291594 +3 62 0.008004951636456233 +3 61 0.0481121934745533 +3 60 0.04004590432454889 +3 59 0.008053614934747487 +3 58 0.03199872206769763 +3 57 0.04002727086902749 +3 56 0.02400541273759974 +3 54 0.04001178908947955 +3 52 0.008049531263330949 +3 49 0.02397612943251556 +3 48 0.02390494589453026 +3 47 0.02393854482107666 +3 41 0.04799849716183487 +3 40 0.01602477685529547 +3 35 0.04809976756312614 +3 34 0.02400659052654588 +3 31 0.03186882793204197 +3 19 0.01601452028671474 +3 18 0.03184209095787422 +3 17 0.03992282051786188 +3 15 0.007967905775321873 +3 13 0.01605085344301282 +3 11 0.1198494444540665 +3 10 0.02404056830827784 +3 9 0.01598165204853107 +3 6 0.007986025855283175 +3 1 0.05592675382479143 +4 74 0.01354875451082154 +4 72 0.02706633635656965 +4 71 0.01350856604273382 +4 67 0.05416538466275026 +4 66 0.01346016849371572 +4 65 0.01348709820752754 +4 62 0.01349169380296459 +4 59 0.01357456408162175 +4 58 0.0808963084226504 +4 57 0.01349254953662835 +4 51 0.04048832918677447 +4 49 0.02693942653401933 +4 47 0.01344838098501389 +4 46 0.02701333058099038 +4 44 0.01356028651518858 +4 39 0.01350395264862485 +4 38 0.01356082495638877 +4 37 0.01352403615331974 +4 36 0.01343727772373892 +4 35 0.05404630712409531 +4 32 0.02708769503130704 +4 30 0.06779423223137336 +4 29 0.01353214236118016 +4 24 0.02704187440064713 +4 15 0.01342861420325334 +4 14 0.02706436250147816 +4 13 0.0135265602085451 +4 12 0.01352355317412558 +4 10 0.05402515641183626 +4 6 0.01345946729850777 +4 4 0.1081081073865975 +4 2 0.08133287970747095 +4 1 0.05386177855754012 +5 74 0.01154355532959534 +5 73 0.03459852734600113 +5 70 0.01731975650591961 +5 68 0.01149066837184901 +5 67 0.02884331764735416 +5 66 0.005734537126092764 +5 65 0.02298343499991633 +5 64 0.005596306232363808 +5 63 0.04032248007705444 +5 62 0.01149558148441054 +5 61 0.01727289568849208 +5 60 0.005750818297449616 +5 59 0.005782626495665714 +5 58 0.04595213856360372 +5 57 0.04598520393156145 +5 56 0.01149107526042686 +5 55 0.005760972872322755 +5 54 0.005745933914360534 +5 52 0.02889851618755972 +5 51 0.02874823592428711 +5 49 0.05164694954085013 +5 48 0.02288625471374253 +5 47 0.02291832522690183 +5 43 0.005770071817206159 +5 41 0.005744066722579372 +5 40 0.03451868683123553 +5 38 0.02888425720443186 +5 37 0.01152277400448647 +5 36 0.01144982612149249 +5 35 0.03453689617692881 +5 34 0.01723745603135467 +5 33 0.01148596505920366 +5 31 0.02288308100513425 +5 29 0.00576479460082058 +5 26 0.005747228908577247 +5 19 0.02299777328775286 +5 18 0.01714795524550186 +5 17 0.0343991753544106 +5 16 0.005720772647067478 +5 13 0.005762448042637396 +5 11 0.06884472963831739 +5 10 0.06329319153826304 +5 9 0.005737678645585817 +5 6 0.01146848465192755 +5 1 0.08031457472730373 +6 74 0.002079766911167798 +6 73 0.01246691236943531 +6 70 0.002080303206698832 +6 69 0.002071487946000328 +6 68 0.004140299044991845 +6 67 0.0582017595474922 +6 66 0.02479467494443696 +6 65 0.01035170148168487 +6 64 0.00201596408744843 +6 63 0.0249073461124072 +6 62 0.04142085854986968 +6 61 0.006223866144940774 +6 60 0.01243286402563363 +6 59 0.004167425654054032 +6 58 0.05381143573843326 +6 57 0.02485408514844588 +6 56 0.008280894044903654 +6 54 0.02691477921861441 +6 52 0.0145785470006235 +6 51 0.04143436173539512 +6 49 0.0578951031540949 +6 48 0.01030752493969783 +6 47 0.01857978589727074 +6 42 0.01029695917769717 +6 41 0.006209065715508619 +6 40 0.01036489547976408 +6 39 0.00829166880501301 +6 38 0.01873451086129077 +6 37 0.002075987769771009 +6 36 0.02268995305835254 +6 35 0.07674106580955593 +6 34 0.01035162861299003 +6 33 0.01655435419512362 +6 31 0.02061216456664918 +6 29 0.004154454236300652 +6 27 0.002092676589592318 +6 26 0.002070838598156695 +6 19 0.02278808339282706 +6 18 0.004118952673136742 +6 17 0.01446014604835917 +6 15 0.02267538213017697 +6 13 0.01245824202107418 +6 11 0.0268728290424428 +6 10 0.08293097695221682 +6 9 0.0041347307738881 +6 6 0.004132231405622581 +6 5 0.004094104753761292 +6 4 0.002074378953356304 +6 3 0.002053224673637271 +6 1 0.1219547467999938 +7 67 0.05004228253338049 +7 58 0.04980373346347327 +7 54 0.04982227555560585 +7 53 0.1005069475710379 +7 51 0.0997164073507594 +7 44 0.05011939283821266 +7 43 0.05005592041985021 +7 38 0.05012158527021775 +7 35 0.0499211291017659 +7 32 0.05005246482117643 +7 30 0.05011352923352679 +7 29 0.05000481973720056 +7 15 0.04958377868342191 +7 11 0.04973644465324235 +7 2 0.2003992887671286 +8 72 0.1499963812474894 +8 61 0.04993195414219785 +8 55 0.04996136016712859 +8 53 0.05022094143258242 +8 44 0.05009913210436396 +8 43 0.1000828965240991 +8 32 0.05003830742666753 +8 25 0.04983881722114977 +8 17 0.04971689302176872 +8 14 0.0499951421099613 +8 12 0.04996321819640883 +8 2 0.2504067384210071 +8 1 0.04974821798517552 +9 73 0.023482697060647 +9 72 0.00156518536131875 +9 70 0.007836930922459249 +9 68 0.003119462688085065 +9 67 0.03288868743888806 +9 66 0.007783855465772566 +9 65 0.01403887650846421 +9 64 0.001518881831748723 +9 63 0.04847933825146476 +9 62 0.04369133659246398 +9 61 0.05001930130965235 +9 60 0.02497975961482764 +9 59 0.006279826800208881 +9 58 0.02027181377717286 +9 57 0.03121007028387684 +9 56 0.006239148495282587 +9 54 0.01559895775996894 +9 53 0.001572105537484618 +9 52 0.00941493066180912 +9 51 0.02653553593053781 +9 49 0.04050465337600401 +9 48 0.0124257142727639 +9 47 0.02799742290411307 +9 45 0.001560545199540764 +9 43 0.003133028251202635 +9 42 0.006206484787513932 +9 41 0.04054397972097199 +9 40 0.02186610368246017 +9 39 0.003123635773059875 +9 38 0.01254698499126892 +9 37 0.006256531121648142 +9 36 0.01864959045227825 +9 35 0.03281663013350923 +9 34 0.02495782688845574 +9 33 0.01870903891719441 +9 31 0.009317980576563677 +9 29 0.004695201369650182 +9 27 0.003153429024953343 +9 26 0.007801254176229788 +9 19 0.02029115377789469 +9 17 0.03735368093351376 +9 16 0.001552997419573782 +9 15 0.01863760691802151 +9 13 0.01251538968042691 +9 11 0.07008583521176513 +9 10 0.05154887745148589 +9 9 0.01557632398251684 +9 6 0.003113380537562672 +9 5 0.001542318625666814 +9 3 0.003093943676849143 +9 2 0.001567757053884825 +9 1 0.09032799681932203 +10 74 0.002754069943361566 +10 73 0.001210651697282997 +10 70 0.0008815304302298226 +10 69 0.002304177694189469 +10 68 0.001644774112478363 +10 67 0.0696949419454746 +10 66 0.01641643533994162 +10 65 0.01798452658741065 +10 64 0.0004270872524546148 +10 63 0.003188316848551998 +10 62 0.06263818250116319 +10 61 0.003516458633564378 +10 60 0.002743940456188024 +10 59 0.002538568388077166 +10 58 0.06873559742047924 +10 57 0.0341185808767815 +10 56 0.0009868998612317062 +10 55 0.0001099539183578379 +10 54 0.02313893529219282 +10 52 0.02471078896058912 +10 51 0.05848874423842856 +10 49 0.06987405873603884 +10 48 0.0007643449881419881 +10 47 0.02252550477056901 +10 46 0.0002196415194888141 +10 45 0.001645634801745642 +10 43 0.0001101298194402994 +10 42 0.002836075498362401 +10 41 0.003288813214127811 +10 40 0.001098020052735854 +10 39 0.009881884388247717 +10 38 0.02304452558850965 +10 37 0.01154600203836144 +10 36 0.02884381613350033 +10 35 0.06316988698880845 +10 34 0.001535253620075844 +10 33 0.01556407323546374 +10 32 0.000330368763311268 +10 31 0.004476249031421534 +10 30 0.0003307344289934872 +10 29 0.008692196141518055 +10 27 0.000221698016008282 +10 26 0.000219376466372827 +10 24 0.0002198734810545571 +10 19 0.02337271130839203 +10 18 0.001963517725523118 +10 17 0.004267262109329757 +10 16 0.003384482410466635 +10 15 0.02838848341643263 +10 13 0.009128542180533314 +10 11 0.004708142394409844 +10 10 0.1225565561593927 +10 9 0.003613619665813676 +10 6 0.004377488158951702 +10 5 0.001192663989550746 +10 4 0.0004395056446553786 +10 3 0.0003262561380544788 +10 1 0.123609444577767 +11 74 0.000800406609012687 +11 73 0.03918316697909645 +11 72 0.001598978121693656 +11 70 0.01921471458208832 +11 69 0.000398609415702081 +11 68 0.001991758696889282 +11 67 0.01079960161229674 +11 66 0.003975957803951908 +11 65 0.006374215481274627 +11 64 0.00349127978204453 +11 63 0.1094365378608551 +11 62 0.01633947332822978 +11 61 0.06786617614029683 +11 60 0.04306345793138217 +11 59 0.002004814925740762 +11 58 0.01115126704158897 +11 57 0.01076082106526776 +11 56 0.0179264692733127 +11 55 0.00279612714959172 +11 54 0.005179118494432493 +11 53 0.000401511732575958 +11 52 0.008015165671485091 +11 51 0.0119596116882271 +11 49 0.01949596006315887 +11 48 0.02261118624582155 +11 47 0.02025968914442499 +11 45 0.0003985595735228789 +11 43 0.00120025156940871 +11 42 0.009907016278427942 +11 41 0.04779155953815173 +11 40 0.03949075305083881 +11 39 0.005584384110803382 +11 38 0.004806703056935494 +11 37 0.001997378665898433 +11 36 0.006350751559652056 +11 35 0.01476703280906269 +11 34 0.03784663787205328 +11 33 0.006769180447761142 +11 32 0.001600235482122391 +11 31 0.01864170068907229 +11 29 0.001598857343998939 +11 27 0.005234953404430622 +11 26 0.01195453205291845 +11 25 0.005180134130704199 +11 20 0.0003998629953424895 +11 19 0.01275646236657721 +11 18 0.01505928293635028 +11 17 0.05406025507023243 +11 15 0.007536672103489387 +11 14 0.000399715480695133 +11 13 0.007991000555829998 +11 11 0.1264916466712809 +11 10 0.01715499416666139 +11 9 0.01790170793220138 +11 7 0.0004394367484480851 +11 6 0.005168476823619922 +11 5 0.004726860608222825 +11 3 0.005926400151514228 +11 2 0.004404413888063462 +11 1 0.04136611302526542 +12 58 0.1661630316266465 +12 55 0.166660470279377 +12 43 0.1669274304406807 +12 32 0.1669169610073421 +12 8 0.1667892665239561 +12 4 0.1665428401219976 +13 74 0.002818881002107111 +13 73 0.01408113641657297 +13 70 0.005639223043632111 +13 69 0.0009358679917484734 +13 68 0.003741041214086007 +13 67 0.05165119979222203 +13 66 0.0158691177715328 +13 65 0.01496555073394851 +13 64 0.002731984855660657 +13 63 0.01219062717874084 +13 62 0.06549661568082249 +13 61 0.009372909924213914 +13 60 0.007489326921420616 +13 59 0.003765674680525788 +13 58 0.04488205729664647 +13 57 0.04959344311069009 +13 56 0.001870587793465508 +13 54 0.01777182731225846 +13 52 0.01975965365907549 +13 51 0.0402468167952233 +13 49 0.07473120748179098 +13 48 0.00186267099017163 +13 47 0.02984509612227084 +13 45 0.001871500893398387 +13 42 0.004651880511568512 +13 41 0.01215566322995142 +13 40 0.00561927016441297 +13 39 0.01123820309865885 +13 38 0.02069022814594066 +13 37 0.01313075523459244 +13 36 0.02422910078774246 +13 35 0.0524745860202681 +13 34 0.01028874334324223 +13 33 0.02337179987102117 +13 31 0.007449635986927123 +13 29 0.008446264278360869 +13 26 0.003742292664054604 +13 25 0.0009355435793364701 +13 19 0.02527034815572064 +13 18 0.002791243399370598 +13 17 0.005599536366202182 +13 16 0.0009312048939147619 +13 15 0.02141960310916124 +13 13 0.005628517824955621 +13 11 0.01867788423109025 +13 10 0.07774436674699432 +13 9 0.007471969816545426 +13 6 0.005600573043306378 +13 5 0.0009247740566089038 +13 4 0.0009371806173741109 +13 3 0.001855152407065792 +13 1 0.1335396597533863 +14 73 0.01852376764070716 +14 72 0.09259935326059383 +14 71 0.01848615662852855 +14 67 0.0185310775566392 +14 65 0.03691347578804954 +14 63 0.01850398987606117 +14 61 0.03699023047798807 +14 55 0.07402402544604474 +14 53 0.03720429507227706 +14 44 0.09278516499268519 +14 43 0.1482853489479696 +14 36 0.03677693245328523 +14 33 0.01844736252891645 +14 32 0.05560351603896541 +14 29 0.01851846489994956 +14 24 0.01850310966809179 +14 17 0.01841546291844991 +14 11 0.01842806042963329 +14 8 0.01852031705590345 +14 4 0.03698587271172122 +14 2 0.1669540156075396 +15 74 0.002515935754304745 +15 73 0.001675722939770701 +15 70 0.002516583030362062 +15 69 0.001670628966678297 +15 68 0.001252164010711959 +15 67 0.05196775359436385 +15 66 0.01458093418562876 +15 65 0.02003646623054562 +15 64 0.0008129747183091365 +15 63 0.008369737386453613 +15 62 0.06472299684183398 +15 61 0.00585602775115342 +15 60 0.003760102930193551 +15 59 0.001680465477722088 +15 58 0.05549979132571332 +15 57 0.04593534444048565 +15 56 0.001669611548840316 +15 54 0.03422941405405579 +15 52 0.02267473446751702 +15 51 0.05054212795868902 +15 50 0.0004183242969624157 +15 49 0.06795334457856574 +15 48 0.0004156490444756519 +15 47 0.02206048532113427 +15 46 0.0008360563584334905 +15 45 0.0008352103263574948 +15 44 0.0004196772816237226 +15 42 0.002491343710143624 +15 41 0.004172952782668289 +15 40 0.002507743208263248 +15 39 0.008776839763855926 +15 38 0.01888622283516921 +15 37 0.01004549815581748 +15 36 0.0295284787083688 +15 35 0.06607231894783104 +15 34 0.002504540688825319 +15 33 0.02002636612398705 +15 31 0.003324728017063542 +15 29 0.009632669745266748 +15 27 0.0008438389124019172 +15 26 0.0008350532371113942 +15 21 0.0008345555663590979 +15 19 0.02673207183572174 +15 18 0.003737168553577422 +15 17 0.006247499999702707 +15 16 0.003324729419150943 +15 15 0.02826267665050558 +15 13 0.00962872115468255 +15 11 0.00791887212042908 +15 10 0.1086843184459312 +15 9 0.00500193531110122 +15 7 0.0004603042287453899 +15 6 0.004582342084032132 +15 4 0.0004182387957770974 +15 3 0.0004139833218063218 +15 1 0.129195722854818 +16 74 0.004850855086549024 +16 67 0.1115090510436491 +16 66 0.02891603950258378 +16 65 0.01931568260868244 +16 62 0.06762777832250202 +16 59 0.004860036548394803 +16 58 0.06275571061978655 +16 57 0.02415430015979822 +16 54 0.004828984259647489 +16 52 0.02914537527247909 +16 51 0.06764977254494228 +16 49 0.04340462104331644 +16 47 0.01444543866037805 +16 39 0.004834916802120412 +16 38 0.01456544711506825 +16 37 0.01452618480601899 +16 36 0.04330076326584791 +16 35 0.05321392052339825 +16 33 0.02413243336960699 +16 31 0.004807690281979304 +16 29 0.004844945384705353 +16 24 0.004840959143940472 +16 19 0.02899172454522883 +16 18 0.004803641125516807 +16 16 0.009615384618552733 +16 15 0.03846490876270675 +16 13 0.004842959536782846 +16 10 0.1499081884195365 +16 9 0.004821998349243449 +16 5 0.004774730836850552 +16 1 0.1012455574401862 +17 74 0.00072016549615374 +17 73 0.02949913179916149 +17 72 0.0007193404969933095 +17 70 0.01584772565103634 +17 68 0.006451522886304221 +17 67 0.0151152406966871 +17 66 0.006439288044921038 +17 65 0.007885921161811082 +17 64 0.004188457929321992 +17 63 0.08552852406899973 +17 62 0.02151435542198078 +17 61 0.06968327735024202 +17 60 0.04376910935655361 +17 59 0.007215316033707678 +17 58 0.01218339120702119 +17 57 0.0172125714452568 +17 56 0.01362036834403152 +17 55 0.0007188049812347716 +17 54 0.01147058220339448 +17 52 0.009375125448199564 +17 51 0.01004330497289208 +17 49 0.02434337735783405 +17 48 0.02212913491168222 +17 47 0.023590132238794 +17 45 0.0007172096198740009 +17 44 0.0007207758908072663 +17 43 0.0007199506965900065 +17 42 0.007131114688491364 +17 41 0.05016734038139881 +17 40 0.02297009595836579 +17 39 0.01004911698324513 +17 38 0.005766435125263012 +17 37 0.0007188571266709913 +17 36 0.009999706505163488 +17 35 0.01939133603662314 +17 34 0.03584484391236396 +17 33 0.01648041498546351 +17 32 0.0007199057651682655 +17 31 0.01927106557648508 +17 30 0.0007206996674907028 +17 29 0.002157858597765535 +17 27 0.002898539700614712 +17 26 0.01075611660250868 +17 25 0.004302311278613337 +17 19 0.01506441841915093 +17 18 0.009270829410553084 +17 17 0.06437768236316099 +17 15 0.01070709227183069 +17 14 0.0007192882577271241 +17 13 0.004313944371424335 +17 11 0.09734801041029444 +17 10 0.02799879200389626 +17 9 0.01718092762369585 +17 8 0.0007193577395079156 +17 6 0.005008075328568554 +17 5 0.004253036574841733 +17 3 0.003554881695188213 +17 2 0.003602607387736794 +17 1 0.05511319153924139 +18 73 0.02746943839607145 +18 70 0.02250178178557178 +18 68 0.007464102395333135 +18 67 0.01998558928094848 +18 66 0.002483330053568399 +18 65 0.01741783874124879 +18 64 0.004846229842901398 +18 63 0.07982650539489912 +18 62 0.03235835749491962 +18 61 0.03241409790368138 +18 60 0.02988508198046726 +18 59 0.007512847574220546 +18 58 0.01989968313775559 +18 57 0.01991408929125377 +18 56 0.004976245539407187 +18 55 0.002494847807303586 +18 54 0.01244147712728931 +18 52 0.007509026413065396 +18 51 0.01742939278688698 +18 49 0.03479109694667563 +18 48 0.02477677905855175 +18 47 0.0248117093121761 +18 42 0.009900585155797155 +18 41 0.02487481915995531 +18 40 0.03986278278962079 +18 39 0.007474049326851689 +18 38 0.005003532457484241 +18 36 0.01239568558936422 +18 35 0.0423766855877267 +18 34 0.03483543305343813 +18 33 0.01492205729811547 +18 31 0.01981865790505233 +18 29 0.002496512944236223 +18 27 0.002515020441410358 +18 26 0.007466578914889179 +18 19 0.00746947330253848 +18 18 0.01980198019131103 +18 17 0.03227569423643915 +18 16 0.002477333281887704 +18 15 0.02229795163324993 +18 13 0.007486471623618471 +18 11 0.09440832339886029 +18 10 0.0448519989887491 +18 6 0.004966403232283045 +18 5 0.007381088798631319 +18 3 0.009871031031057232 +18 1 0.06956030139323539 +19 74 0.001892425231882407 +19 73 0.004253957477329509 +19 71 0.0004717048317111032 +19 70 0.002366143166942556 +19 69 0.002356089765178318 +19 68 0.002354563374439904 +19 67 0.05343181954378164 +19 66 0.01833066568449081 +19 65 0.01978015989682808 +19 64 0.0009171090475827557 +19 63 0.01038749022249116 +19 62 0.06030290554893714 +19 61 0.005663193694243146 +19 60 0.006599146292856565 +19 59 0.002844038093508488 +19 58 0.06826649879335195 +19 57 0.04381660510671523 +19 56 0.001412788652373439 +19 54 0.02543197084150622 +19 53 0.0004746564888172792 +19 52 0.02321442744866802 +19 51 0.05231101944572644 +19 49 0.06255653989502245 +19 48 0.003751527896195767 +19 47 0.02535872409717969 +19 45 0.001413476709589854 +19 42 0.00234229507784819 +19 41 0.006120497992507994 +19 40 0.001886232269911081 +19 39 0.008487791099470439 +19 38 0.01657345317607114 +19 37 0.008972642003095751 +19 36 0.02909156533529358 +19 35 0.06652518523435345 +19 34 0.006593340095034299 +19 33 0.01412152811206013 +19 31 0.003282126247097159 +19 29 0.007087905007582872 +19 27 0.001428152898963108 +19 26 0.0004710698445459734 +19 25 0.0004710549813877624 +19 19 0.01413760603610576 +19 18 0.001405434865979575 +19 17 0.009868022169117245 +19 16 0.002813252261212946 +19 15 0.03001066691871673 +19 13 0.01275297308203204 +19 11 0.0150472448598153 +19 10 0.1004562162869434 +19 9 0.006113609459998841 +19 6 0.005169918776057796 +19 5 0.001862578652671704 +19 3 0.0009341048273959867 +19 1 0.1260138851813795 +20 53 0.2510362773581096 +20 43 0.5002776205696746 +20 11 0.2486861020722158 +21 66 0.05546470628226988 +21 65 0.05557541824756947 +21 58 0.1111148218744587 +21 52 0.05590640564822597 +21 49 0.05550394634848547 +21 43 0.05581220930215144 +21 36 0.05537059819953476 +21 35 0.1670281570012861 +21 33 0.1110945835794803 +21 15 0.1106699614248425 +21 1 0.1664591920916955 +22 55 0.2499665020956377 +22 43 0.5007338847843641 +22 34 0.249299613119998 +23 65 0.500081032899755 +23 58 0.4999189671002448 +24 66 0.04147929637936362 +24 63 0.08333729323980686 +24 57 0.04157913759603717 +24 49 0.04150872597174667 +24 47 0.04144295174709355 +24 46 0.04162266110786714 +24 44 0.08357598686968223 +24 43 0.1252197711990225 +24 32 0.04173730637631064 +24 30 0.08356710641419245 +24 16 0.04137835358724577 +24 14 0.04170133533222942 +24 10 0.08324300239463531 +24 4 0.08328755234344018 +24 2 0.1253195194413264 +25 73 0.07601590629802953 +25 72 0.01519999284907106 +25 68 0.01514693973778377 +25 67 0.01520916202355721 +25 64 0.01474960189498442 +25 63 0.04556099875427139 +25 61 0.04553921562730861 +25 60 0.01516156602368074 +25 59 0.01524640581277773 +25 57 0.01515445086651449 +25 55 0.01518864942791787 +25 52 0.03047721670996107 +25 44 0.01523039790381447 +25 41 0.01514355942207939 +25 40 0.04550307025301669 +25 36 0.01509247885055453 +25 35 0.01517578444176798 +25 34 0.06059292750767101 +25 32 0.01521196653786244 +25 31 0.06032572393331751 +25 27 0.01531214290456231 +25 25 0.03030303021749556 +25 19 0.01515789889330947 +25 17 0.0906874062400216 +25 13 0.01519258396712384 +25 11 0.196623374966487 +25 8 0.0152003580847721 +25 2 0.01522500880420746 +25 1 0.04537218104607833 +26 73 0.05157552656982962 +26 70 0.01408291039808541 +26 67 0.01876211507487695 +26 66 0.004662457976398482 +26 65 0.01868708074928488 +26 64 0.004548795372533325 +26 63 0.1124086469450356 +26 62 0.01402007797055005 +26 61 0.0608589050618419 +26 60 0.03273094738539742 +26 59 0.004702015174662309 +26 58 0.01401076666178682 +26 57 0.028041931392944 +26 56 0.0373720484436378 +26 55 0.004684202452920992 +26 54 0.004671832012616431 +26 53 0.004708461855179698 +26 52 0.004699610350315833 +26 51 0.004674886329071718 +26 49 0.01399727560940084 +26 48 0.004651787640175132 +26 47 0.01863352749078211 +26 42 0.009294016891648703 +26 41 0.02802177713146704 +26 40 0.009355476711157207 +26 39 0.009355196736101747 +26 38 0.02348632170699787 +26 37 0.009369086220318814 +26 36 0.004654542369632559 +26 35 0.02340117373200272 +26 34 0.02803042335611553 +26 33 0.004669404411045667 +26 31 0.02325567542195494 +26 27 0.009444578483626878 +26 26 0.009345794385930249 +26 19 0.004674718642312188 +26 18 0.01394159866943015 +26 17 0.0699203222884598 +26 15 0.009303093040791655 +26 13 0.01874166363654674 +26 11 0.1399360110863128 +26 10 0.009356812600420322 +26 9 0.02332520940992656 +26 6 0.004662215504436172 +26 5 0.004619101453331206 +26 1 0.03264997719270516 +27 73 0.03237418275306354 +27 70 0.02160892942703684 +27 67 0.04318273858006093 +27 65 0.01075205379954773 +27 63 0.05389893127514492 +27 62 0.03226724954996173 +27 61 0.05387288799829112 +27 60 0.02152308381761205 +27 58 0.02149706210843324 +27 57 0.03226931425264963 +27 56 0.03225431843399681 +27 54 0.02150439518756113 +27 52 0.01081680895226924 +27 51 0.02151860284110305 +27 49 0.05369036000302266 +27 42 0.01069446578973877 +27 41 0.0107486255622627 +27 40 0.02153186968704146 +27 39 0.0107656092497101 +27 35 0.04308696470739345 +27 34 0.02150395427531115 +27 31 0.03211218780916707 +27 26 0.02150935002622427 +27 25 0.01075433222949609 +27 19 0.03227673422035048 +27 18 0.01069491022820804 +27 17 0.0429113205943295 +27 15 0.02141003887749084 +27 11 0.1395579035416997 +27 10 0.02153497680720931 +27 9 0.0214728104854671 +27 6 0.01072983185291445 +27 1 0.05367319507623089 +28 62 0.4998667687733101 +28 60 0.5001332312266898 +29 74 0.002885387042603637 +29 73 0.004324004387411547 +29 69 0.004310758798780187 +29 68 0.004307958536097708 +29 67 0.06632756462923778 +29 66 0.01289923006819068 +29 65 0.01005283457218221 +29 64 0.001398202541221649 +29 62 0.06895724359301937 +29 61 0.001439105358160504 +29 60 0.005749508556543981 +29 58 0.07034695691261057 +29 57 0.02729730924020331 +29 54 0.02297821261874664 +29 52 0.02889408013441854 +29 51 0.05029780354087787 +29 49 0.06741047923973953 +29 48 0.001429957608907919 +29 47 0.02720782751027951 +29 46 0.002876411234453426 +29 45 0.002873478096161214 +29 42 0.001428483969126642 +29 41 0.001435664711719358 +29 40 0.002875919080134641 +29 39 0.01150333099219621 +29 38 0.02310368928152887 +29 37 0.01152046271184234 +29 36 0.03004694741323134 +29 35 0.07049773664897516 +29 34 0.004308327182550967 +29 33 0.02009545621022209 +29 29 0.008645533143649133 +29 19 0.02155542591130952 +29 18 0.001428542896925824 +29 17 0.004298722880804306 +29 16 0.00142975700373663 +29 15 0.03288731499499056 +29 14 0.001440926337341417 +29 13 0.01296294277220449 +29 11 0.005735551347142523 +29 10 0.1136150749064216 +29 9 0.004302133603105074 +29 7 0.00158488938800798 +29 6 0.002866346038205581 +29 5 0.001419879178893653 +29 4 0.00143893581969912 +29 1 0.1233076913561867 +30 71 0.02767442345858734 +30 67 0.0554836088934297 +30 66 0.02757494216729978 +30 62 0.0552794845065241 +30 57 0.02764150122286562 +30 53 0.02784841009430315 +30 49 0.02759456128507648 +30 46 0.02767051641218687 +30 43 0.05549738206907598 +30 32 0.08324083838068928 +30 30 0.1111111099764833 +30 24 0.05539970557933383 +30 17 0.02756838483564007 +30 10 0.08300922944763976 +30 7 0.03049879035556182 +30 4 0.1384229647363775 +30 2 0.083312572213475 +30 1 0.05517157436545054 +31 73 0.02252593052971624 +31 72 0.001407576769615424 +31 70 0.008457300304086857 +31 69 0.001403591298710737 +31 68 0.007013432845924711 +31 67 0.02253475083818507 +31 66 0.001400032295800142 +31 65 0.01543097078700066 +31 64 0.004098170079418209 +31 63 0.07031895614009863 +31 62 0.03367897155340951 +31 61 0.03654845574070396 +31 60 0.02667666065176978 +31 58 0.03505907091297491 +31 57 0.0196473048986815 +31 56 0.0112218926653157 +31 54 0.01683400805088717 +31 52 0.01411136076026036 +31 51 0.02667119045198271 +31 49 0.0490356570175714 +31 48 0.01676211703186953 +31 47 0.02238102424189704 +31 42 0.009767902421469249 +31 41 0.03505937453279694 +31 40 0.01685519115521107 +31 39 0.005618229697567587 +31 38 0.009873044618435182 +31 36 0.02655566238740999 +31 35 0.02810690731358772 +31 34 0.03226453051855673 +31 33 0.009814759140295792 +31 32 0.001408680429217767 +31 31 0.01396648044263098 +31 27 0.004253741228528418 +31 26 0.007015761808164077 +31 25 0.005612433251294 +31 19 0.009825877239519498 +31 18 0.01116377402400465 +31 17 0.03779196969119631 +31 16 0.001396648633198557 +31 15 0.01117416814381005 +31 13 0.01125515089010222 +31 11 0.06583067655533126 +31 10 0.05759675463874288 +31 9 0.008404827466572819 +31 6 0.01399959825176134 +31 5 0.005548292933464503 +31 3 0.005564982790399643 +31 2 0.00281976514884463 +31 1 0.08823638878200564 +32 73 0.02220933661071064 +32 72 0.05551165056611139 +32 63 0.0221856033210593 +32 60 0.02214830091183481 +32 57 0.01106893273928152 +32 55 0.04437604619749738 +32 53 0.04460678560992604 +32 50 0.01108845538010874 +32 49 0.01105015654771248 +32 48 0.03305081453048027 +32 46 0.0110805389135826 +32 44 0.04449851018369977 +32 43 0.1222298978358998 +32 41 0.01106094581783595 +32 40 0.02215728278639553 +32 33 0.01105882541323818 +32 32 0.06666666558185474 +32 31 0.01101538662486462 +32 30 0.03337033043137242 +32 25 0.01106677988288793 +32 24 0.01109227353687801 +32 17 0.01103968581664 +32 14 0.0333045559151803 +32 12 0.01109442444405162 +32 11 0.044188976998158 +32 10 0.03324068881834564 +32 8 0.01110259795533316 +32 7 0.01221172895069303 +32 4 0.02217233913148962 +32 2 0.1890514825468768 +33 74 0.002791857799956968 +33 73 0.003904933946189421 +33 70 0.001675547299646294 +33 69 0.001668436235945626 +33 68 0.001111571046208154 +33 67 0.05524863300319884 +33 66 0.009985134607627724 +33 65 0.02167763599030615 +33 63 0.01114508762532464 +33 62 0.07283937335683754 +33 61 0.007240845871803295 +33 60 0.003894252738891646 +33 59 0.002237730380395409 +33 58 0.0622335556836065 +33 57 0.04337275262100817 +33 56 0.001111610835849995 +33 54 0.02278961099473903 +33 52 0.01901098749117988 +33 51 0.0428279616870402 +33 49 0.07438636156448042 +33 48 0.002767305551559067 +33 47 0.03214621552852764 +33 45 0.0005560757988508936 +33 43 0.0005582047290079637 +33 42 0.002211571653004281 +33 41 0.006112277360031403 +33 40 0.001113092736679617 +33 39 0.007791416155780087 +33 38 0.01397169447395275 +33 37 0.006130909130130018 +33 36 0.03599626022986155 +33 35 0.06236643400144257 +33 34 0.004446663212259562 +33 33 0.02888888889642728 +33 32 0.000558169831597294 +33 31 0.003873684697336615 +33 29 0.007807640776503952 +33 26 0.0005559708086624612 +33 21 0.001111276385425584 +33 19 0.01668562075702902 +33 18 0.003317493806153976 +33 17 0.01275576657883365 +33 16 0.002766918812264015 +33 15 0.02656475729618183 +33 14 0.0005576902256655859 +33 13 0.01393647852770106 +33 11 0.009434600191331412 +33 10 0.07904086066899685 +33 9 0.0066604427857872 +33 6 0.004437606984962112 +33 5 0.001099150082964788 +33 2 0.0005586480447597169 +33 1 0.1420663325000921 +34 74 0.001176311002463398 +34 73 0.0434826537101322 +34 72 0.001174960446275943 +34 70 0.02470891399646038 +34 69 0.001171618874034368 +34 68 0.002341720651358641 +34 67 0.01410802883873706 +34 66 0.008180444580316786 +34 65 0.00117096844618008 +34 64 0.003420457620227476 +34 63 0.1044821092975856 +34 62 0.02342733321252182 +34 61 0.05514957096625163 +34 60 0.04687962776957768 +34 59 0.002357094778234341 +34 58 0.01638824461388385 +34 57 0.01640017135435698 +34 56 0.02575984968842405 +34 54 0.005854919693511061 +34 52 0.003533834330634441 +34 51 0.007030495835836858 +34 49 0.0233892402639188 +34 48 0.01399153325284205 +34 47 0.01751420289526253 +34 43 0.001175959366433174 +34 42 0.009318108038211606 +34 41 0.02692377891927905 +34 40 0.03517391946302834 +34 39 0.00703457341967426 +34 38 0.004709427610955835 +34 37 0.003522507459588102 +34 36 0.009333211208094033 +34 35 0.01525016403235418 +34 34 0.04215456671601269 +34 33 0.009363004935098437 +34 31 0.02681334440984438 +34 29 0.003524614676934966 +34 27 0.002367255508933158 +34 26 0.007027505144579631 +34 25 0.004684855703138133 +34 22 0.00117424066393017 +34 19 0.01640390200563466 +34 18 0.01630735952243034 +34 17 0.0584179252285484 +34 15 0.006995404098931712 +34 13 0.01291826650017812 +34 11 0.1110697333076496 +34 10 0.01641683902914694 +34 9 0.01870851887770593 +34 6 0.005842870900138706 +34 5 0.003473311165480751 +34 3 0.003483805141177511 +34 2 0.00470757504077079 +34 1 0.05260914578708831 +35 74 0.002461170427532914 +35 73 0.002634488605001583 +35 70 0.001055060373067352 +35 69 0.001400763042782076 +35 68 0.001049890866887512 +35 67 0.06360404315711078 +35 66 0.01449583628092375 +35 65 0.01959977586995513 +35 64 0.0001703844928550606 +35 63 0.004210688089280032 +35 62 0.06862258670522627 +35 61 0.004384033010867163 +35 60 0.003853323078948897 +35 59 0.003346521755663578 +35 58 0.07085117536664683 +35 57 0.04149128684973063 +35 56 0.001399904714368456 +35 54 0.02590004711786071 +35 53 0.0001763745921830053 +35 52 0.02182926993039357 +35 51 0.04588010603514228 +35 49 0.07655033648160843 +35 48 0.001219738173116709 +35 47 0.02460389457428256 +35 45 0.001400587301487566 +35 42 0.003481380202879227 +35 41 0.005423223645752677 +35 40 0.001576997185566807 +35 39 0.007884749588266675 +35 38 0.02164240124679458 +35 37 0.0119324501363385 +35 36 0.02998848542872563 +35 35 0.05715287519451115 +35 34 0.002274957908810554 +35 33 0.01958983500424726 +35 31 0.003484476571521017 +35 29 0.008603536254539731 +35 27 0.0007075735005158639 +35 26 0.0008752014059423639 +35 25 0.0001750347518147741 +35 21 0.0005248059557304109 +35 19 0.02469031504567809 +35 18 0.002959295060032877 +35 17 0.004714395549241585 +35 16 0.001916462927498519 +35 15 0.02752980377167339 +35 13 0.009828557386798862 +35 11 0.006464880697592523 +35 10 0.1007670072708014 +35 9 0.003669656987118596 +35 7 0.0001930960145146146 +35 6 0.006461662722040934 +35 5 0.001038132235723124 +35 4 0.0007013627712953241 +35 3 0.001041274419164018 +35 2 0.0001758851391144985 +35 1 0.1303389411268317 +36 74 0.002252231931316859 +36 73 0.004125230411331055 +36 70 0.001126405869524031 +36 69 0.0003738801986214259 +36 68 0.002989112205838364 +36 67 0.05064766630856204 +36 66 0.0145443277163211 +36 65 0.02354142430306845 +36 64 0.0007277496515120959 +36 63 0.005244726867493148 +36 62 0.07102200190167278 +36 61 0.005242229104517816 +36 60 0.00486197939150363 +36 59 0.001880414988738094 +36 58 0.05192382928588277 +36 57 0.04373735948772516 +36 56 0.001494609431611731 +36 54 0.02541012625893046 +36 52 0.01841867916972441 +36 51 0.04711413017314535 +36 49 0.07687805529808529 +36 48 0.00111624401833301 +36 47 0.02459204386582992 +36 45 0.0007476670974871181 +36 43 0.0003752601928203549 +36 42 0.005575508407651036 +36 41 0.003735559660987327 +36 40 0.001870744454784174 +36 39 0.01122413214238547 +36 38 0.01577958943818221 +36 37 0.009367275651002038 +36 36 0.03723008191781805 +36 35 0.06438781802906236 +36 34 0.002989366204530029 +36 33 0.02427651959178696 +36 31 0.007068557606366455 +36 29 0.007873201231463194 +36 26 0.0003737631915524053 +36 25 0.0003737514495031881 +36 21 0.0003735402946995796 +36 19 0.02318231511381304 +36 18 0.00185857893587518 +36 17 0.005219810238800806 +36 16 0.003348265542249604 +36 15 0.02641641112133533 +36 14 0.0007498308314442016 +36 13 0.009743774599585186 +36 11 0.005969549728433134 +36 10 0.09878935609176252 +36 9 0.004477648149492392 +36 6 0.00410203377697913 +36 5 0.000738954059002364 +36 4 0.0003744011325842719 +36 1 0.1421422762772721 +37 74 0.00352756747359429 +37 73 0.001174749070659358 +37 71 0.001172365272832639 +37 69 0.002342305301771706 +37 68 0.003511176979847601 +37 67 0.06698710536141608 +37 66 0.01635426445074292 +37 65 0.01755751050125388 +37 64 0.002279229828808688 +37 63 0.00352048665125788 +37 62 0.06557039141494593 +37 61 0.004691732291687755 +37 60 0.003514576027749249 +37 59 0.001178097511963121 +37 58 0.06435661469182127 +37 57 0.0386421476348502 +37 56 0.00234086871520828 +37 54 0.02341032457715404 +37 53 0.001179716794424064 +37 52 0.02590485631970535 +37 51 0.06090673620011842 +37 49 0.05728054662629437 +37 48 0.001165481700295827 +37 47 0.01633993138932684 +37 45 0.001171005581482341 +37 42 0.004657125319473537 +37 41 0.001170130473387578 +37 40 0.002343999481400739 +37 39 0.007031787477319434 +37 38 0.02000737141568965 +37 37 0.01643192488786128 +37 36 0.02915433992627088 +37 35 0.07973862026621741 +37 34 0.003511477263397914 +37 33 0.01286897132879914 +37 29 0.009395303853034713 +37 26 0.002341567544686119 +37 19 0.02225358413255461 +37 17 0.001167884667373379 +37 16 0.003495954885319232 +37 15 0.02797010733825895 +37 13 0.01643499404654394 +37 11 0.005843415529669486 +37 10 0.1230775886250823 +37 9 0.004675242981074156 +37 6 0.001168100844963799 +37 5 0.002314544336943722 +37 4 0.001172794974522695 +37 1 0.1156933800309432 +38 74 0.002828728140412418 +38 73 0.003391270073315932 +38 70 0.001131785229740517 +38 69 0.002253906475085555 +38 68 0.001689329432781453 +38 67 0.0672867885446943 +38 66 0.01292677524038124 +38 65 0.01351589025880176 +38 64 0.0005482627635450969 +38 63 0.005081462335117837 +38 62 0.06196901224476093 +38 61 0.003386013381740333 +38 60 0.004509251353259723 +38 59 0.001700481390174517 +38 58 0.08163189119020245 +38 57 0.04000072645163646 +38 56 0.001126260176315398 +38 54 0.0191477659154369 +38 52 0.01926221408882769 +38 51 0.06706122327940808 +38 49 0.07255393981814211 +38 48 0.002242963115520179 +38 47 0.01909235319988548 +38 46 0.0005639819887506473 +38 45 0.001690217001261187 +38 42 0.001120323385454152 +38 41 0.00281491741893607 +38 40 0.001691655860899842 +38 39 0.005074814914795617 +38 38 0.02151755380092445 +38 37 0.009600067703741225 +38 36 0.02356513182101197 +38 35 0.06939509817091798 +38 34 0.002252632400229532 +38 33 0.01407188559545759 +38 31 0.003924631966757306 +38 29 0.009040792552868365 +38 26 0.002816493291497214 +38 19 0.01972317801918111 +38 18 0.001120369698266624 +38 17 0.004495200278842919 +38 16 0.00168198584486741 +38 15 0.02523202032121882 +38 13 0.01242594383282166 +38 11 0.006747422711530866 +38 10 0.1178689411845886 +38 9 0.004498774425598841 +38 7 0.0006216372908886395 +38 6 0.005058038928377443 +38 5 0.002783901886589907 +38 4 0.0005642689393295128 +38 2 0.0005660274437391196 +38 1 0.123133797221469 +39 73 0.0035713980409299 +39 70 0.003575682568774642 +39 69 0.00118682688209797 +39 68 0.002372115047653413 +39 67 0.0476373927049683 +39 66 0.01183800431895052 +39 65 0.01186167185054029 +39 64 0.002309826355272178 +39 63 0.0225947545922622 +39 62 0.06170169586410285 +39 61 0.01664079834074942 +39 60 0.005936020007463731 +39 58 0.05217441818272402 +39 57 0.04746585125750308 +39 56 0.004744400217025491 +39 54 0.02965457245870081 +39 52 0.01551215877598385 +39 51 0.04391748939807878 +39 50 0.001188733042313055 +39 49 0.06870907867830754 +39 48 0.005905442574363063 +39 47 0.0236552893831759 +39 43 0.001191229254004299 +39 42 0.002359747727587891 +39 41 0.01185792558974544 +39 40 0.003563052105293278 +39 39 0.009501187650262498 +39 38 0.01073382050489484 +39 37 0.007136481083579521 +39 36 0.03545365924067978 +39 35 0.05347433298360194 +39 34 0.007116952846371572 +39 33 0.01659792271486056 +39 31 0.004723690660404224 +39 29 0.009521007476475041 +39 27 0.001199007065184789 +39 26 0.002372907241617285 +39 19 0.02136449797567336 +39 18 0.003539767305814253 +39 17 0.01656928082100651 +39 16 0.001180923165889971 +39 15 0.02480157189868252 +39 13 0.01427562411153885 +39 11 0.01658059184827229 +39 10 0.1069068418158786 +39 9 0.002368914291482452 +39 6 0.004734955225387751 +39 4 0.001188488714397592 +39 1 0.1255319981394719 +40 73 0.04239514789570723 +40 72 0.003027589090355859 +40 70 0.01515928926901583 +40 68 0.007542526259178857 +40 67 0.01666179568106474 +40 65 0.004525934190912471 +40 64 0.005875570755161256 +40 63 0.09679994483292173 +40 62 0.02263737657534731 +40 61 0.05895923377596764 +40 60 0.04529890381534687 +40 59 0.00455526558295028 +40 58 0.009048930639282478 +40 57 0.01207403275637762 +40 56 0.01357703411783594 +40 54 0.006034658864373981 +40 52 0.007588222309237915 +40 51 0.004528956186741296 +40 49 0.01958711810411199 +40 48 0.02553714762047164 +40 47 0.0195561184695781 +40 42 0.01500640235963429 +40 41 0.04524504726569138 +40 40 0.03927492443788097 +40 39 0.004531586292085963 +40 38 0.004550658229705436 +40 37 0.003025547493622721 +40 36 0.007515378235328045 +40 35 0.01360242907686724 +40 34 0.04525902225470753 +40 33 0.003015759928702098 +40 32 0.003029976608864684 +40 31 0.01802369051209063 +40 29 0.003027359754145487 +40 27 0.003049951641099904 +40 26 0.003018018097734106 +40 25 0.004526884217936575 +40 19 0.006038391421445584 +40 18 0.02401123222660427 +40 17 0.04816889094106303 +40 15 0.009012643259389183 +40 13 0.009078335348976603 +40 11 0.1491242396712959 +40 10 0.01510789938783751 +40 9 0.02109057616231803 +40 6 0.007527780338912272 +40 5 0.008949714668244568 +40 3 0.002992263011839679 +40 2 0.007581443007986776 +40 1 0.03464315735604867 +41 74 0.0009570266395278877 +41 73 0.03059611531512349 +41 70 0.01914547702500863 +41 68 0.007620747431691275 +41 67 0.00860854082224328 +41 66 0.004753917238307256 +41 65 0.01047949503658719 +41 64 0.006493322936867916 +41 63 0.05253113102049679 +41 62 0.02287212595149891 +41 61 0.06300723434662103 +41 60 0.03909402459818762 +41 59 0.002876536682908088 +41 58 0.01904745340418069 +41 57 0.02573277003767234 +41 56 0.02095780575620724 +41 55 0.001910430354475719 +41 54 0.007621551740366698 +41 52 0.01054190982103261 +41 51 0.008579848194602375 +41 49 0.03520387697418863 +41 48 0.02086939192838783 +41 47 0.02279886472066921 +41 45 0.0009530910446371357 +41 42 0.00852871206187255 +41 41 0.0590476190202853 +41 40 0.02861693206734974 +41 39 0.009538692048282201 +41 38 0.004789386511864205 +41 37 0.0009552846062161014 +41 36 0.009491701665820005 +41 35 0.02958660221012915 +41 34 0.02191151693011566 +41 33 0.01047419119021273 +41 32 0.0009566808187914784 +41 31 0.0237118931574 +41 29 0.000955855895126876 +41 27 0.0009629775690202576 +41 26 0.005717466368434879 +41 25 0.0009528810236747065 +41 19 0.01239266976914739 +41 18 0.009476736239397295 +41 17 0.06653910292437079 +41 15 0.009485595812768935 +41 13 0.01242101237510839 +41 11 0.114144780156379 +41 10 0.02862101606536901 +41 9 0.02473406190354432 +41 6 0.002852202088371739 +41 5 0.0009419469104649677 +41 3 0.005668751764503405 +41 2 0.0009575006143608363 +41 1 0.05231354121012825 +42 73 0.005200610575357581 +42 70 0.005206808646507421 +42 68 0.002590738884940824 +42 67 0.04422248356802935 +42 66 0.007757522477462028 +42 65 0.007772930564823248 +42 64 0.005046285099846339 +42 63 0.05454861101489161 +42 62 0.04406150628809909 +42 61 0.03115581414959097 +42 60 0.02593226780963684 +42 59 0.002607657303012065 +42 58 0.03626198080773697 +42 57 0.01555209907897358 +42 56 0.01036332471199858 +42 54 0.01813707667451106 +42 52 0.01563798635592904 +42 51 0.0285196504688809 +42 49 0.03622725707832868 +42 48 0.01547973360529 +42 47 0.02583592668020038 +42 41 0.02331147507851088 +42 40 0.02594268461081188 +42 39 0.005188382509417293 +42 38 0.00521007448927842 +42 37 0.01039208564144843 +42 36 0.03872212479645038 +42 35 0.05191290548581787 +42 34 0.02072766940610092 +42 33 0.01035868820990127 +42 31 0.01805716975192384 +42 29 0.002599567334170706 +42 27 0.002618838007642608 +42 26 0.005183196865178633 +42 19 0.01296301506700183 +42 18 0.01030969998843906 +42 17 0.02585232386283505 +42 15 0.01547893565714655 +42 13 0.01299251385461274 +42 11 0.0646746418913101 +42 10 0.0674605580403201 +42 9 0.01034906382717051 +42 6 0.01292853546020342 +42 1 0.1086475783202612 +43 73 0.006939981430385 +43 72 0.07632372066484418 +43 70 0.006948332366178831 +43 66 0.006901006749746064 +43 61 0.006929236798750489 +43 58 0.006912594498316193 +43 55 0.02773328383536607 +43 53 0.04181624397903472 +43 49 0.006905911595137309 +43 44 0.03476227978065492 +43 43 0.305555549121326 +43 39 0.006923506578646473 +43 36 0.006889243760482701 +43 34 0.006914796384821728 +43 33 0.006911329632574919 +43 32 0.07638408877879233 +43 30 0.01390343182605759 +43 24 0.02079670410378445 +43 22 0.01386850263165664 +43 21 0.00691236257245067 +43 20 0.01388117662670885 +43 17 0.006899367393171886 +43 14 0.0555041031098357 +43 12 0.006933579017963269 +43 11 0.02071227423023864 +43 10 0.006924707246716318 +43 9 0.01380969319586514 +43 8 0.0138773749234837 +43 7 0.007631898607830347 +43 5 0.006836578743469587 +43 2 0.1459497037338029 +43 1 0.01380743608190657 +44 72 0.0516203386062092 +44 67 0.01721721352110114 +44 61 0.0171837315489776 +44 57 0.01715495639013062 +44 55 0.1203571003236816 +44 53 0.06913353020458134 +44 49 0.01712582129265559 +44 44 0.1034482737993127 +44 43 0.08610743976882705 +44 32 0.06888161963165941 +44 25 0.01715161578749549 +44 24 0.03438234914696209 +44 17 0.01710957386609573 +44 15 0.01707338691346886 +44 14 0.08602760177362398 +44 8 0.01720719515106816 +44 7 0.01892846374544071 +44 4 0.01718170295358641 +44 2 0.1895877102690754 +44 1 0.01712037530604676 +45 70 0.008967785393699733 +45 67 0.02688171904347045 +45 65 0.01784946140470468 +45 63 0.02684253896640898 +45 62 0.07142213669916794 +45 59 0.00898252029515061 +45 58 0.06245285669863487 +45 57 0.05356999490562743 +45 54 0.03569939533125019 +45 52 0.01795585070540291 +45 51 0.01786136951782481 +45 49 0.08021919743480262 +45 47 0.03559659790162261 +45 45 0.01785714286291726 +45 41 0.008921914312418549 +45 38 0.02692032837253844 +45 37 0.008949136118025346 +45 36 0.01778362658411991 +45 35 0.07152723247846987 +45 33 0.00892021038082718 +45 29 0.01790898395067194 +45 19 0.02679109307216155 +45 17 0.008904829920637715 +45 15 0.0177721781790317 +45 13 0.01790160757814342 +45 11 0.008910903853933167 +45 10 0.1340611562978726 +45 9 0.008911874838344373 +45 1 0.1336563569021194 +46 71 0.1000140650548801 +46 67 0.05012831884731823 +46 66 0.04982796125033892 +46 58 0.049911394926184 +46 38 0.05020039015142187 +46 32 0.05013757381964199 +46 30 0.05019306969130125 +46 29 0.1001885296773348 +46 24 0.05005280579458649 +46 15 0.09942241960033778 +46 10 0.0999972156971574 +46 4 0.100050675668699 +46 2 0.05018061370364981 +46 1 0.09969496611714862 +47 74 0.002948157539583079 +47 73 0.009256965728611762 +47 70 0.003370191009380945 +47 69 0.001677960805410209 +47 68 0.002515316306474761 +47 67 0.04882859749956338 +47 66 0.01338959588570164 +47 65 0.02138215726844737 +47 64 0.002449531490821078 +47 63 0.0172333125876114 +47 62 0.06207122312214247 +47 61 0.01806534727604919 +47 60 0.01007095075773713 +47 59 0.002953746414188694 +47 58 0.04819908521432858 +47 57 0.03774839664471305 +47 56 0.002934640487224226 +47 55 0.0004203702185860929 +47 54 0.02473654749139616 +47 52 0.0194004372646099 +47 51 0.03733877235763106 +47 49 0.07495090796870681 +47 48 0.004592172642606273 +47 47 0.02341137124236942 +47 45 0.001677751269711269 +47 42 0.004170426609407449 +47 41 0.01005902677143117 +47 40 0.005457294968587852 +47 39 0.008395587937861899 +47 38 0.01433231783746882 +47 37 0.005885609725618619 +47 36 0.0275693019276183 +47 35 0.05922215109746857 +47 34 0.006288825552011653 +47 33 0.02430468732271957 +47 31 0.006678589732952928 +47 29 0.007992377808195186 +47 26 0.001677435248746348 +47 24 0.0004203048269076981 +47 19 0.02265417537316377 +47 18 0.004170597590542472 +47 17 0.01380476384467499 +47 16 0.001252236103787505 +47 15 0.02212477940841783 +47 13 0.01345532088120769 +47 11 0.02134913940578588 +47 10 0.08648944551580554 +47 9 0.007535808734759845 +47 6 0.003765628607464599 +47 5 0.00165818342783498 +47 4 0.0004200751675075069 +47 3 0.001247384344527803 +47 1 0.1259950177339176 +48 74 0.004221082175163025 +48 73 0.05482278137227 +48 70 0.02322192505405828 +48 68 0.006302409639181945 +48 67 0.006328182800509108 +48 66 0.008387309408758294 +48 65 0.006302989136601861 +48 64 0.002045935166323074 +48 63 0.08425337308361108 +48 62 0.02522049382902868 +48 61 0.06315995386427907 +48 60 0.04415927666149758 +48 58 0.008401273163065843 +48 57 0.02312024323568228 +48 56 0.01470614690641269 +48 54 0.01050512028734076 +48 52 0.01268075893353266 +48 51 0.01681913153587835 +48 49 0.02098305003744152 +48 48 0.01255230124707124 +48 47 0.02304502726784543 +48 42 0.01253946308989231 +48 41 0.04620740261651178 +48 40 0.03576236035512965 +48 39 0.01051802792900373 +48 38 0.008449638361217683 +48 37 0.002106714625543077 +48 36 0.006279850555949032 +48 35 0.01473350095878951 +48 34 0.02521177946882748 +48 33 0.0104996862034127 +48 32 0.006329344439095154 +48 31 0.02510109663952014 +48 29 0.002107969495905655 +48 26 0.002101500928132464 +48 19 0.01681853096513299 +48 18 0.02089996077502155 +48 17 0.06498633756051136 +48 15 0.00209194225659451 +48 13 0.004214210718895195 +48 11 0.1195721290645939 +48 10 0.01472777099543823 +48 9 0.01678387328263359 +48 6 0.01048359398897609 +48 5 0.008309663527794123 +48 3 0.006250997519432533 +48 2 0.00211158218707069 +48 1 0.03356230668542216 +49 74 0.002254544675219817 +49 73 0.002413319102281349 +49 70 0.001771885094057386 +49 69 0.001924768411425681 +49 68 0.002083817494555457 +49 67 0.04941199894918066 +49 66 0.01375908682552223 +49 65 0.01939732081057237 +49 64 0.001092664437012547 +49 63 0.004821508622612298 +49 62 0.06542805634770664 +49 61 0.006586249390225083 +49 60 0.005294790781202318 +49 59 0.004678995607444043 +49 58 0.05192311968849909 +49 57 0.04426295395550061 +49 56 0.002404490801966646 +49 54 0.02372596209580401 +49 52 0.02338303116507941 +49 51 0.04347251952384883 +49 49 0.0723663144640298 +49 48 0.001596237924867609 +49 47 0.02861310090181545 +49 45 0.001443395756171355 +49 44 0.000161175527623542 +49 43 0.0001609908276779103 +49 42 0.00223244064318555 +49 41 0.005929543575352722 +49 40 0.002086667916770555 +49 39 0.009309470986579315 +49 38 0.02079246595644835 +49 37 0.007876556885275126 +49 36 0.03290194422007735 +49 35 0.07034211991577119 +49 34 0.003206146142701174 +49 33 0.02147046898192485 +49 32 0.0001609807708676885 +49 31 0.005586050204227516 +49 30 0.000161158466844367 +49 29 0.00755957851996247 +49 27 0.0008101964264576594 +49 26 0.0004810411492829293 +49 24 0.0001607093443255152 +49 21 0.0001602511951458078 +49 19 0.02133445764054583 +49 18 0.002232532313988481 +49 17 0.005438353897399116 +49 16 0.001436413517257438 +49 15 0.026017331579557 +49 13 0.01286207698820554 +49 11 0.007842964517335269 +49 10 0.1024218414300292 +49 9 0.004162025701634186 +49 6 0.004479470074724673 +49 5 0.001426534883157155 +49 4 0.0003212427831907953 +49 3 0.000476946476365621 +49 2 0.0001611185832707747 +49 1 0.1437265991302363 +50 71 0.09994281627001435 +50 65 0.09978395437210284 +50 55 0.1000500049864672 +50 52 0.2007594758457166 +50 50 0.1999999986113943 +50 39 0.09990867716260211 +50 32 0.1002038992594028 +50 15 0.0993511734922998 +51 74 0.002865544341999532 +51 73 0.002862852776878582 +51 71 0.0004761759124673639 +51 70 0.0009554284260316986 +51 69 0.001664895404371974 +51 68 0.00118844054616516 +51 67 0.06992883299899205 +51 66 0.01281074645848759 +51 65 0.01877909575167746 +51 64 0.000231450247540508 +51 63 0.004766340452129576 +51 62 0.05516750411622585 +51 61 0.004049451491001648 +51 60 0.003092930518219115 +51 59 0.002392496642971403 +51 58 0.06748776407585465 +51 57 0.04042702491662746 +51 56 0.0007130898824074645 +51 54 0.01973019725614531 +51 52 0.02295621588057912 +51 51 0.05708848717469756 +51 49 0.06433649934168309 +51 48 0.0018935430835772 +51 47 0.021095541524677 +51 45 0.0004756247895664247 +51 42 0.002600945675858292 +51 41 0.002138715365029794 +51 40 0.0007140416277015165 +51 39 0.008806249749420418 +51 38 0.02844193143872003 +51 37 0.01239473377543266 +51 36 0.02984097203557954 +51 35 0.0623929294370912 +51 34 0.001426250369687052 +51 33 0.01829440271404821 +51 31 0.004496533691008153 +51 29 0.008347603321724599 +51 27 0.0004805634012004592 +51 26 0.0002377674417735953 +51 19 0.02640247783210567 +51 18 0.001655215345885342 +51 17 0.003320518469055185 +51 16 0.003313236755488135 +51 15 0.02863835399869336 +51 13 0.01025140183661362 +51 11 0.007120251237083965 +51 10 0.1268795183950914 +51 9 0.004035248794702295 +51 7 0.000524525368452591 +51 6 0.004744474055694858 +51 5 0.001175145213396886 +51 4 0.0007145251239805519 +51 2 0.0002389137438759701 +51 1 0.1229363797746298 +52 74 0.00362563953971955 +52 73 0.002069837689188236 +52 70 0.003108498850651527 +52 69 0.001031740312408594 +52 68 0.001031068342396594 +52 67 0.06522568412459134 +52 66 0.01234916382362246 +52 65 0.01907653625780144 +52 64 0.001003869807284405 +52 63 0.006719771308657148 +52 62 0.05879646246071566 +52 61 0.004133255398670248 +52 60 0.003612243936391722 +52 59 0.004151513074962426 +52 58 0.07164253894836846 +52 57 0.03662118132338357 +52 56 0.00206221097811533 +52 54 0.01907679015581877 +52 52 0.02697095436554624 +52 51 0.04952908117323304 +52 50 0.001033405201372779 +52 49 0.07466264908471794 +52 48 0.003080185284101185 +52 47 0.02364842016986255 +52 45 0.001031610333136275 +52 42 0.003077002746642752 +52 41 0.005669603053069354 +52 40 0.002581222421481046 +52 39 0.006710976305642346 +52 38 0.01762600100685753 +52 37 0.01137399503615779 +52 36 0.02516982768736413 +52 35 0.06404867448064655 +52 34 0.001546735207751111 +52 33 0.01752086231104868 +52 31 0.005132917891980083 +52 29 0.01034621804917235 +52 27 0.0005211896143053668 +52 26 0.0005157071497114276 +52 25 0.001031381583042655 +52 21 0.0005153966273248469 +52 19 0.02527955652686526 +52 18 0.001538565004694311 +52 17 0.006687538702996388 +52 16 0.003079752047322122 +52 15 0.02772022246127313 +52 13 0.01085902967380864 +52 11 0.01029557753697203 +52 10 0.115655371304418 +52 9 0.003089011677951644 +52 6 0.003601651065908579 +52 5 0.002548683169430936 +52 3 0.0005112858199076315 +52 1 0.1204517318915357 +53 72 0.09218120625805284 +53 70 0.01846240703554433 +53 63 0.01842036085047895 +53 62 0.01837940802761386 +53 57 0.01838058063697878 +53 56 0.01837206403159712 +53 55 0.05526713184451391 +53 53 0.185185181626309 +53 44 0.0738936128054743 +53 43 0.1107122338023503 +53 37 0.01842372726576264 +53 35 0.01840665384118867 +53 32 0.07380350283683801 +53 30 0.01847142976293343 +53 26 0.01837757672609343 +53 20 0.01844175649376339 +53 19 0.01838479466555303 +53 14 0.03686977763955985 +53 11 0.01834443489657054 +53 9 0.01834644862166847 +53 8 0.01843668764663355 +53 7 0.04057175707396109 +53 2 0.07386726561056034 +54 74 0.00230190035105258 +54 73 0.003679583401805355 +54 69 0.0004585436457843462 +54 68 0.001374740286158909 +54 67 0.04371223865973305 +54 66 0.01966715861068402 +54 65 0.01833156314770186 +54 64 0.0008924564618876247 +54 63 0.005054043180116652 +54 62 0.07014207482197116 +54 61 0.006429343800334011 +54 60 0.007797715894877616 +54 59 0.001845021425904388 +54 58 0.05635128528346815 +54 57 0.04630586943087379 +54 56 0.004124368565239587 +54 54 0.02841429881755511 +54 52 0.01705772163308652 +54 51 0.03806335966559019 +54 49 0.06773952375972794 +54 48 0.002281646425749586 +54 47 0.02696158498253004 +54 45 0.001833944878770693 +54 42 0.003191023946926471 +54 41 0.003665156128083429 +54 40 0.00183549763046336 +54 39 0.01147151695809233 +54 38 0.01566684024536066 +54 37 0.009190835688842462 +54 36 0.03104876302089759 +54 35 0.0679496477254547 +54 34 0.002291429230036865 +54 33 0.01878033924533928 +54 31 0.005475183426073576 +54 29 0.007357067118351087 +54 27 0.0009264874622952305 +54 26 0.0004583996099522946 +54 19 0.02476322543866697 +54 18 0.002279396535503678 +54 17 0.007316281427474035 +54 16 0.0004562654787552227 +54 15 0.03741706225377096 +54 13 0.008732920300494575 +54 11 0.005948531667357665 +54 10 0.09683632235118113 +54 9 0.004576291988119582 +54 7 0.0005055907564737859 +54 6 0.005945576014871062 +54 5 0.0004531235705819782 +54 3 0.002272463141405219 +54 2 0.0004606081523362723 +54 1 0.1519081663562353 +55 73 0.02859883119627519 +55 72 0.1715569122227131 +55 63 0.02856831693440396 +55 55 0.05714285617006956 +55 53 0.04307963959578969 +55 50 0.01427857037390796 +55 47 0.0142067774346184 +55 44 0.1002755417505199 +55 43 0.05723438536297264 +55 41 0.02848640132750967 +55 32 0.05723079584338232 +55 26 0.01425115224835916 +55 25 0.01425070168493994 +55 22 0.01428762792425473 +55 18 0.01417259240884137 +55 17 0.01421586598092311 +55 14 0.05718146410771817 +55 12 0.01428624490832898 +55 11 0.09957908887612117 +55 10 0.01426799432540645 +55 8 0.01429675372033005 +55 5 0.01408669653290687 +55 2 0.1002399730305752 +55 1 0.01422481603913243 +56 74 0.002511547664380425 +56 73 0.035128664407796 +56 70 0.02260976937112214 +56 68 0.002499910472054332 +56 67 0.01506106283359166 +56 66 0.004990318546499107 +56 65 0.005000282618647652 +56 64 0.002434349264330886 +56 63 0.07519561028289219 +56 62 0.03501388096008936 +56 61 0.0375798340830453 +56 60 0.03253020951478805 +56 59 0.002516322347265584 +56 58 0.03499063372470462 +56 57 0.02251034827421116 +56 56 0.009999999995060297 +56 54 0.02250156947272612 +56 53 0.00251977130682483 +56 52 0.01006014308372091 +56 51 0.00750542533476412 +56 49 0.0374538761206126 +56 48 0.01742615442680598 +56 47 0.01745084988146038 +56 42 0.009947575023973919 +56 41 0.054985759837328 +56 40 0.02253000850473317 +56 39 0.010013037540114 +56 38 0.0050275613207109 +56 37 0.005013949635717254 +56 36 0.009963697664942732 +56 35 0.02003735876991269 +56 34 0.05500272085057781 +56 33 0.004997751237511587 +56 31 0.0199128121130693 +56 27 0.007581506753941292 +56 26 0.02000595405866636 +56 19 0.007505156197604208 +56 18 0.004973992001038961 +56 17 0.04739681258441828 +56 15 0.009957286531925515 +56 13 0.005014883529102647 +56 11 0.1123321404666465 +56 10 0.02253322465572902 +56 9 0.00998616665690993 +56 6 0.009980118202346537 +56 5 0.004943926881069666 +56 3 0.007438294981324973 +56 2 0.002512791851536514 +56 1 0.0549149781617545 +57 74 0.002202103402585612 +57 73 0.001650026658495311 +57 71 0.0002744477035140685 +57 70 0.001376670402443227 +57 69 0.0008224934754366376 +57 68 0.002191895319774906 +57 67 0.0511709524984349 +57 66 0.01531409324328541 +57 65 0.02109894140745786 +57 64 0.0008003948235321851 +57 63 0.00521952196183142 +57 62 0.07263794383128419 +57 61 0.009884891324057784 +57 60 0.006307785311562767 +57 59 0.004136797015308377 +57 58 0.05286721122745872 +57 57 0.05098684211985152 +57 56 0.002465970583454401 +57 54 0.02767560114121688 +57 53 0.0002761646455089398 +57 52 0.019570823040493 +57 51 0.04661315442914553 +57 49 0.07553004105258641 +57 48 0.003001240057372012 +57 47 0.02459041537019047 +57 45 0.001644780859163005 +57 44 0.0002754968502795916 +57 42 0.001635357883437737 +57 41 0.007395995464818028 +57 40 0.002194898659749976 +57 39 0.01097416481914352 +57 38 0.01956105184482979 +57 37 0.009067129998644407 +57 36 0.03194118763323253 +57 35 0.06505858003194354 +57 34 0.003836144094803097 +57 33 0.02136212865264652 +57 32 0.0002751633874839531 +57 31 0.00381922414808195 +57 30 0.0002754676387343225 +57 29 0.005223593036758493 +57 27 0.0008309273817503572 +57 26 0.001644470032728333 +57 25 0.0002740696930572683 +57 24 0.0002746986528574303 +57 19 0.02549922259234384 +57 18 0.002180566865647968 +57 17 0.006561629690604906 +57 16 0.001364009202259056 +57 15 0.03001084466607356 +57 13 0.01456507392312669 +57 11 0.007386868373572882 +57 10 0.08533887136320131 +57 9 0.0054723505693538 +57 6 0.003281420721905133 +57 5 0.002167380511860049 +57 4 0.0002745480613795083 +57 3 0.001358707201246901 +57 2 0.0002753993499355948 +57 1 0.1280321540970623 +58 74 0.003537022358370711 +58 73 0.001487875109692558 +58 72 0.0001859454049595125 +58 71 0.0001856081422559616 +58 70 0.0005586214747350058 +58 69 0.001297917224922004 +58 68 0.001482373911861528 +58 67 0.06512012980160911 +58 66 0.01313107141187698 +58 65 0.01834607059299784 +58 64 0.0003608770401080347 +58 63 0.003158371181212168 +58 62 0.06469651875527359 +58 61 0.004085350749516599 +58 60 0.003338560275270899 +58 59 0.003730257633351091 +58 58 0.07076695074646827 +58 57 0.03577999510241844 +58 56 0.002594247222665692 +58 54 0.02279390433357534 +58 52 0.02591203871795 +58 51 0.05266421637993254 +58 49 0.05996446732816499 +58 48 0.0007380865925887879 +58 47 0.02125005339577236 +58 46 0.0001855820853430351 +58 45 0.001297754734047499 +58 43 0.0001861034404634973 +58 42 0.00258065050956933 +58 41 0.003705108173977202 +58 40 0.001113302688724377 +58 39 0.008163975530461486 +58 38 0.02701705821687361 +58 37 0.01022011195233801 +58 36 0.02566368926058823 +58 35 0.07518801333492087 +58 34 0.002594375527038509 +58 33 0.02074464613499115 +58 31 0.004612394447392408 +58 29 0.009110635778637185 +58 27 0.0003746332504713538 +58 26 0.0005560755711892393 +58 23 0.0001852838211490029 +58 21 0.0003704952213063544 +58 19 0.026887456400758 +58 18 0.001474718046002287 +58 17 0.003143315873967907 +58 16 0.002398446128153405 +58 15 0.0245401078467368 +58 13 0.008921031298495169 +58 12 0.0001858135963165183 +58 11 0.005180754843138112 +58 10 0.1163567340346845 +58 9 0.002405612366665223 +58 7 0.0002044336399235904 +58 6 0.004808311433045087 +58 5 0.001465806523239531 +58 4 0.001114055787107992 +58 3 0.0007351168987399162 +58 1 0.1291418647159936 +59 73 0.01567841381452561 +59 70 0.009418392898952741 +59 69 0.003126047253445945 +59 68 0.006248020449647784 +59 67 0.05019078497503383 +59 66 0.02182623944075841 +59 65 0.02499440459065074 +59 63 0.02819091881541619 +59 62 0.0562566591010393 +59 61 0.02817735591114938 +59 60 0.01876227454128074 +59 58 0.06246562673877577 +59 57 0.04688353614206355 +59 56 0.003124122832212068 +59 54 0.01249736871118431 +59 52 0.02514428551708007 +59 51 0.03126397521028836 +59 49 0.09048740077504594 +59 47 0.02180703955682375 +59 45 0.003125653230551392 +59 42 0.003107638259214671 +59 41 0.009369926043046898 +59 40 0.009384950256798152 +59 38 0.009424370648036792 +59 37 0.003132895975390016 +59 36 0.01556353881151509 +59 35 0.05946993683332784 +59 34 0.006248556786510292 +59 33 0.01249083432870033 +59 26 0.003125058968425433 +59 25 0.003124959791079324 +59 19 0.01875770807418156 +59 18 0.009323300563290764 +59 17 0.03117291880199441 +59 16 0.003110416346898155 +59 15 0.01244276749070086 +59 13 0.01253393330718865 +59 11 0.01559715494549603 +59 10 0.07196162348199334 +59 9 0.01247909180236863 +59 6 0.006235742087595787 +59 5 0.0030888608063731 +59 4 0.003130447331140969 +59 3 0.003098253200980379 +59 2 0.003140213064704559 +59 1 0.09981638148712198 +60 73 0.04373032889105675 +60 70 0.01934587578068425 +60 68 0.001013219741224463 +60 67 0.01627815567469415 +60 66 0.007079045976834104 +60 65 0.0101331338709647 +60 64 0.004933117877286872 +60 63 0.06806538270818757 +60 62 0.02128682410526435 +60 61 0.05889408160283178 +60 60 0.03042596347440407 +60 59 0.006119266423215748 +60 58 0.01823372376436281 +60 57 0.02331561782869425 +60 56 0.01317232878447597 +60 54 0.01722655569450162 +60 52 0.007135490557347066 +60 51 0.01318186622688062 +60 49 0.03339628476206551 +60 48 0.0211885047993601 +60 47 0.02424978273955256 +60 42 0.01007939156660269 +60 41 0.04153273238688256 +60 40 0.03043826129257712 +60 39 0.005072891635184587 +60 38 0.008150772929953981 +60 37 0.00304825681935568 +60 36 0.01312446587460648 +60 35 0.02233331151582846 +60 34 0.04053224932914781 +60 33 0.007089599460960085 +60 32 0.0020351449133331 +60 31 0.01916786101266497 +60 29 0.004066775923915839 +60 28 0.001013928536492369 +60 27 0.002048556072165605 +60 26 0.007094905934344406 +60 25 0.00101352600318284 +60 19 0.01419534641372995 +60 18 0.01209576761677553 +60 17 0.06167422419107527 +60 15 0.00908031678348338 +60 13 0.00813020030408477 +60 11 0.1092682217221082 +60 10 0.02536884199062369 +60 9 0.0161896494062213 +60 6 0.006067437940893426 +60 5 0.00100188233143978 +60 3 0.005024559889434886 +60 2 0.002036890946294564 +60 1 0.05361947797274787 +61 74 0.0007264421600034963 +61 73 0.04281977281743492 +61 70 0.02325216829776893 +61 68 0.007230690431538521 +61 67 0.0123427633119256 +61 66 0.002886767584414276 +61 65 0.004338815713242148 +61 64 0.002112200833329226 +61 63 0.08554822404284233 +61 62 0.02242485386002915 +61 61 0.04057971012247191 +61 60 0.04197857643477669 +61 59 0.006550435373677501 +61 58 0.0159038236590121 +61 57 0.02604341771033813 +61 56 0.01084642489208236 +61 54 0.01012403755394489 +61 52 0.005819625789485544 +61 51 0.01230152603498688 +61 49 0.0296103523905768 +61 48 0.0216011174034459 +61 47 0.03100557195730284 +61 44 0.0007270605432831679 +61 43 0.0007262245502999869 +61 42 0.00863155369767944 +61 41 0.04771188686158521 +61 40 0.0282383965112569 +61 39 0.01013655637102332 +61 38 0.004362536497443123 +61 37 0.002900466729376743 +61 36 0.01008650189997396 +61 35 0.01811121427578393 +61 34 0.03398714951940669 +61 33 0.009395998135492625 +61 31 0.01871833744008087 +61 29 0.0007255513631625142 +61 27 0.003654850941811355 +61 26 0.009403039348114034 +61 25 0.00216986359308471 +61 19 0.00868311809973674 +61 18 0.009351235098068872 +61 17 0.06998752039853237 +61 15 0.01007999799087144 +61 14 0.001451106897090641 +61 13 0.007252520302598118 +61 11 0.1227423427141722 +61 10 0.02317328092477016 +61 9 0.02310696270377094 +61 8 0.0007256238387071242 +61 6 0.002164962887448816 +61 5 0.002144906055104939 +61 3 0.004302799722311962 +61 2 0.000726802799802093 +61 1 0.04837231291352471 +62 74 0.002453597670081493 +62 73 0.00262638620994582 +62 70 0.00140241821831844 +62 69 0.001745576597959507 +62 68 0.00157000145074189 +62 67 0.0555261328737501 +62 66 0.01775951928130689 +62 65 0.02076082567168826 +62 64 0.0003397359109291693 +62 63 0.003498120561510681 +62 62 0.06596858640972214 +62 61 0.005419494182639885 +62 60 0.00366687459499948 +62 59 0.003160625202937532 +62 58 0.06086704921382159 +62 57 0.04625074713243083 +62 56 0.002442311974480623 +62 54 0.02669284342744684 +62 53 0.0001758310554582328 +62 52 0.02000705417993666 +62 51 0.04050188705993867 +62 49 0.07108837003813742 +62 48 0.002084573114471883 +62 47 0.02574618400921881 +62 45 0.001396286334202958 +62 42 0.002950110918869655 +62 41 0.004185736081660058 +62 40 0.002620254223288205 +62 39 0.009083276109927978 +62 38 0.01929541438898968 +62 37 0.009796514232324534 +62 36 0.03302528848441048 +62 35 0.06851252455453521 +62 34 0.003489189778295154 +62 33 0.02284277976197663 +62 31 0.004168561320839551 +62 30 0.0003507746139829635 +62 29 0.008402037168622938 +62 28 0.0001745665728971528 +62 27 0.0005290424156072472 +62 26 0.0005235084316228873 +62 19 0.02234506710386835 +62 18 0.002256059960207852 +62 17 0.005222152026416264 +62 16 0.002431661800743756 +62 15 0.02692434026161042 +62 13 0.01224792455921053 +62 11 0.007141808731585641 +62 10 0.0997585882260984 +62 9 0.004877864207336361 +62 6 0.003482077569253917 +62 5 0.00034498737498275 +62 4 0.0001748018590324294 +62 3 0.0001730150250937297 +62 1 0.1395190398606336 +63 74 0.0005597826547688519 +63 73 0.04641823678966585 +63 72 0.00279569151127387 +63 70 0.02071732379754164 +63 68 0.00780055012055475 +63 67 0.01118952774481711 +63 66 0.005005083993735513 +63 65 0.005572337348674461 +63 64 0.005425327066354466 +63 63 0.07597765356774636 +63 62 0.01114847439811574 +63 61 0.0658901958977178 +63 60 0.03736733662678198 +63 59 0.005047646820985773 +63 58 0.009469895170624383 +63 57 0.01059172283398423 +63 56 0.01671606471897341 +63 55 0.001117440099930236 +63 54 0.006129652388463845 +63 53 0.00056162038777506 +63 52 0.007287307771049921 +63 51 0.0111521255471705 +63 49 0.01669545090930415 +63 48 0.02219379195901338 +63 47 0.02278095880725102 +63 45 0.0016724221420284 +63 42 0.01163974240659263 +63 41 0.03063816332797866 +63 40 0.03570862369420482 +63 39 0.01060067967657195 +63 38 0.005042534922664542 +63 37 0.001676282330488303 +63 36 0.007772437780269345 +63 35 0.01339789671885896 +63 34 0.04959345168985292 +63 33 0.01113901802400896 +63 32 0.001119159590468502 +63 31 0.02773833929982038 +63 27 0.00281636777475051 +63 26 0.01337684330545688 +63 25 0.001672052553758299 +63 24 0.001117265327264303 +63 19 0.0122668970591295 +63 18 0.01773748144300713 +63 17 0.06616263864675903 +63 15 0.01109631946247795 +63 14 0.0005590975018433693 +63 13 0.007265246603142269 +63 11 0.1524449962890493 +63 10 0.01618278590108373 +63 9 0.01724930994787909 +63 6 0.006673097471252806 +63 5 0.003856560613406708 +63 3 0.004420848083761778 +63 2 0.006160667596455048 +63 1 0.02559157388343939 +64 73 0.01745650051203844 +64 70 0.01747686345458136 +64 67 0.008731592435626582 +64 66 0.008680722373890823 +64 65 0.008697599818704735 +64 63 0.08719207237031096 +64 62 0.01740095957926721 +64 61 0.02614544785907569 +64 60 0.04352496414394745 +64 58 0.0173897096396382 +64 57 0.02610304816584678 +64 56 0.008697121130904813 +64 54 0.01739542372971692 +64 52 0.01749609331776469 +64 51 0.008703247112998058 +64 49 0.06080693157790153 +64 48 0.008661381267147666 +64 47 0.05204000570467321 +64 42 0.01730543542789049 +64 41 0.06086449924367808 +64 40 0.03483366233400315 +64 39 0.01741632380127102 +64 38 0.008743796267410463 +64 37 0.01744149309992987 +64 36 0.01733274945739145 +64 35 0.008712939430005539 +64 34 0.02609262024844116 +64 31 0.02598059509507289 +64 29 0.008725825731566906 +64 26 0.008699642281789516 +64 25 0.008699375185112617 +64 19 0.01740588644837397 +64 18 0.01730612832312038 +64 17 0.05207233736533827 +64 15 0.01732188837015847 +64 13 0.02616698426715245 +64 11 0.07816036116506368 +64 10 0.03483850406048248 +64 9 0.008685405621724585 +64 6 0.008680282894004266 +64 5 0.008602119511844085 +64 3 0.008627430974738271 +64 1 0.008684029200400865 +65 74 0.003986359299667746 +65 73 0.003413672119936293 +65 70 0.001139254100475475 +65 69 0.0005672083138827063 +65 68 0.002267364320614741 +65 67 0.05065605195188996 +65 66 0.01753867503891934 +65 65 0.02040816327140376 +65 64 0.0005519746152742998 +65 63 0.005683399172634198 +65 62 0.06748325905724738 +65 61 0.003408409475175121 +65 60 0.005673883220792257 +65 59 0.004564500761311658 +65 58 0.05610425793771173 +65 57 0.04366840237564159 +65 56 0.001133722761990067 +65 54 0.02267603698214739 +65 52 0.02110002160881143 +65 51 0.0448144453008403 +65 50 0.0005681181687360391 +65 49 0.06850585844184924 +65 48 0.001693407705010498 +65 47 0.02882873006791248 +65 45 0.001134274560043853 +65 42 0.001691668334239274 +65 41 0.006233860663137995 +65 40 0.001702852360523851 +65 39 0.005676004709033764 +65 38 0.01367966996483864 +65 37 0.008526644593077601 +65 36 0.03558261585061116 +65 35 0.0636070739846083 +65 34 0.0005668894254987156 +65 33 0.02209765036240226 +65 31 0.006208290768923388 +65 29 0.003981481185358279 +65 27 0.0005730221374212117 +65 26 0.002268120588450843 +65 23 0.0005668015504100219 +65 21 0.0005666907430154212 +65 19 0.02382454689543258 +65 18 0.003947388406027191 +65 17 0.006221928691706831 +65 16 0.002257561235775323 +65 15 0.02709311920553121 +65 14 0.001137569315772273 +65 13 0.009096781704158157 +65 11 0.009056248453131195 +65 10 0.09310255158784704 +65 9 0.005094694603937198 +65 6 0.002828671476848274 +65 5 0.002242015555371891 +65 4 0.0005680015455109998 +65 3 0.001124394721759303 +65 1 0.1613057387497204 +66 74 0.003784042474128498 +66 73 0.001512199063131959 +66 70 0.002271010974442133 +66 69 0.0007537956970473605 +66 68 0.002259925894613887 +66 67 0.06656287573772357 +66 66 0.01503759398932795 +66 65 0.0233547197365471 +66 64 0.0007335900449811215 +66 63 0.006797668907026899 +66 62 0.07687064254298689 +66 61 0.003019744911631406 +66 60 0.005278241101930058 +66 59 0.005307711173094449 +66 58 0.05347253876943733 +66 57 0.0422061563013349 +66 56 0.001506671113530881 +66 54 0.03239568416373936 +66 52 0.01818858057350271 +66 51 0.04070949016746889 +66 49 0.06470732612017571 +66 48 0.003000651203884374 +66 47 0.02403916290030245 +66 46 0.000754466744480494 +66 43 0.0007565827123330286 +66 42 0.00224818141313606 +66 41 0.003765704435278715 +66 39 0.007543158171617502 +66 38 0.01742204130803194 +66 37 0.0105760651853288 +66 36 0.0292736359229144 +66 35 0.06264342098163071 +66 34 0.005273609267433347 +66 33 0.01355395317007025 +66 31 0.0007500578016453657 +66 30 0.0007573699790470315 +66 29 0.00680295814874255 +66 26 0.0007535593929607477 +66 24 0.0007552608081643899 +66 21 0.0007531092376308414 +66 19 0.02940024619551444 +66 18 0.000749424555118668 +66 17 0.006765319782091075 +66 16 0.004500348712166842 +66 15 0.02625434012812664 +66 13 0.01284475222891751 +66 11 0.007522136898746454 +66 10 0.1131668720978066 +66 9 0.003761477286327186 +66 6 0.009022088219777529 +66 5 0.0007449033576811604 +66 4 0.0007548477632397474 +66 3 0.0007471495149932858 +66 1 0.1256129350170567 +67 74 0.003349610034269516 +67 73 0.002165352089941757 +67 70 0.001379609018642658 +67 69 0.002551208079592151 +67 68 0.0009805960360187234 +67 67 0.07916502562726127 +67 66 0.0172255563851819 +67 65 0.01745622773008745 +67 64 0.0001909555125208812 +67 63 0.003932797425511123 +67 62 0.06219678197068754 +67 61 0.003341273459201415 +67 60 0.003140948897695908 +67 59 0.003158592040978301 +67 58 0.06862574627161294 +67 57 0.03649633032718874 +67 56 0.001176757555257509 +67 54 0.01863329958781305 +67 52 0.02486114239677439 +67 51 0.05750673223147719 +67 49 0.06013640306485395 +67 48 0.0005858859039762384 +67 47 0.02268648972908629 +67 46 0.0001964225321450974 +67 45 0.0005886662995491273 +67 44 0.0001972039378103537 +67 42 0.003316596372678553 +67 41 0.00176467745873864 +67 40 0.002160277915210743 +67 39 0.007855320079452858 +67 38 0.02346820234522186 +67 37 0.01121051324722265 +67 36 0.02638053729476006 +67 35 0.07113086610382022 +67 34 0.002353632014086489 +67 33 0.01940773151897309 +67 31 0.00312428483659572 +67 30 0.0003943659039214947 +67 29 0.009052514804205885 +67 27 0.0007930657839017954 +67 26 0.0007847395377086166 +67 25 0.0001961786734830559 +67 19 0.0221775657736402 +67 18 0.00156081566176203 +67 17 0.004109667881022613 +67 16 0.004491161362393654 +67 15 0.02421535741082195 +67 14 0.0001967943668168225 +67 13 0.01081918492572767 +67 11 0.005287475685861132 +67 10 0.1243319927288734 +67 9 0.004112930812219772 +67 7 0.0002164708359587439 +67 6 0.005480572743777425 +67 5 0.0009695896206801786 +67 4 0.0007860893086940593 +67 3 0.0003890122964990035 +67 2 0.0001971338927067409 +67 1 0.1153390666574275 +68 73 0.02144683625220771 +68 70 0.004294506192365218 +68 68 0.01709401709358873 +68 67 0.0214552706437872 +68 66 0.01279614769641486 +68 65 0.01709559546807854 +68 63 0.05998724475289863 +68 62 0.03847816961565252 +68 61 0.04282755213121359 +68 60 0.00427762963527123 +68 59 0.00860311750878328 +68 58 0.0341801095140272 +68 57 0.03420498237413844 +68 56 0.004273657310509634 +68 54 0.01282186622431253 +68 52 0.008598718959188737 +68 51 0.02138374335688989 +68 49 0.05548921338794738 +68 48 0.01276687260870955 +68 47 0.02556992904284017 +68 42 0.004251253472524224 +68 41 0.03418040680692147 +68 40 0.02139678466687851 +68 39 0.00855845782139055 +68 38 0.01289164197695911 +68 37 0.01285674023097009 +68 36 0.03406514793772707 +68 35 0.02568983973134331 +68 34 0.008547737445842755 +68 33 0.008543470586740721 +68 31 0.021275137096788 +68 29 0.01286443066972694 +68 25 0.004274794762647052 +68 19 0.02138297658439389 +68 18 0.01275428474867092 +68 17 0.03837936324392959 +68 15 0.01276621107302444 +68 13 0.01714551310519696 +68 11 0.02133640440884172 +68 10 0.06419951682305593 +68 9 0.008535491254502696 +68 6 0.008530321634597788 +68 5 0.008451463101473924 +68 1 0.1194774310470274 +69 67 0.09452873464739775 +69 66 0.007227911040666493 +69 65 0.007242351702931596 +69 62 0.07244816015231628 +69 59 0.00728925343368366 +69 58 0.05068002047106522 +69 57 0.02173582466413207 +69 54 0.007242447576916612 +69 52 0.01457104839936219 +69 51 0.05073028786368763 +69 49 0.08679635152718247 +69 47 0.02888636054981926 +69 39 0.007251389607671756 +69 38 0.0291275446948451 +69 37 0.01452431800230084 +69 36 0.007215636139203021 +69 35 0.05804382325955023 +69 34 0.007242300589041403 +69 33 0.0217160491106163 +69 31 0.007210352392803778 +69 29 0.0217995173599892 +69 19 0.03623461972248071 +69 15 0.0288439616593638 +69 13 0.007263512474095753 +69 11 0.007231129916472904 +69 10 0.1523054922630095 +69 6 0.007227535033991448 +69 1 0.137384065745403 +70 73 0.05600733447883589 +70 72 0.002333147261304847 +70 70 0.03738317754088163 +70 68 0.002324966238747151 +70 67 0.01634192850519578 +70 66 0.006961578043319047 +70 65 0.004650363938800037 +70 64 0.004527406799444484 +70 63 0.08625231388444188 +70 62 0.01860781216244616 +70 61 0.07456076566912566 +70 60 0.04421721134673903 +70 59 0.007020913682070565 +70 58 0.006973274014182237 +70 57 0.01163062235849115 +70 56 0.02092544915907778 +70 53 0.002343528037703553 +70 52 0.01403461264762431 +70 51 0.009306960035583135 +70 49 0.02554393854546598 +70 48 0.02546710235613974 +70 47 0.01854790444170243 +70 45 0.002326186998720637 +70 43 0.002335140461261686 +70 42 0.004625603372693728 +70 41 0.046488899763755 +70 40 0.0232816600177246 +70 39 0.006984288026468007 +70 38 0.004675858138711109 +70 36 0.00694970521747642 +70 35 0.01397648511535209 +70 34 0.04882847527176847 +70 33 0.006971997334326906 +70 31 0.01388918919571459 +70 27 0.004700884323532627 +70 26 0.006977236379322725 +70 19 0.01163328083481141 +70 18 0.02081607511352166 +70 17 0.05103943810495741 +70 15 0.01389042342566248 +70 13 0.01399202857993913 +70 11 0.1114350641649292 +70 10 0.01862799976374743 +70 9 0.01160908958475785 +70 6 0.002320404783512811 +70 5 0.006896548718471745 +70 3 0.002305828389513081 +70 2 0.004674009846076656 +70 1 0.04178588792594799 +71 72 0.07155861075812252 +71 58 0.07129194585757752 +71 57 0.0713439122447662 +71 51 0.1427254608421801 +71 50 0.07146941599350412 +71 46 0.1428370482657373 +71 37 0.07151034152922907 +71 30 0.0716943384889397 +71 19 0.07136016721104642 +71 14 0.07155339414720906 +71 4 0.07145472140826813 +71 1 0.07120064325341993 +72 72 0.02380952337134497 +72 71 0.01188308838757722 +72 70 0.01192158277323451 +72 63 0.05947276307971601 +72 58 0.01186031769087915 +72 55 0.1427501871344637 +72 53 0.05978826992828602 +72 44 0.03578595530736493 +72 43 0.1310640927406722 +72 40 0.02375876171131536 +72 34 0.01186409237923955 +72 32 0.05957084851979886 +72 31 0.01181160731411695 +72 25 0.01186667203315481 +72 17 0.01183764245564892 +72 14 0.05951946123882276 +72 11 0.04738296339785988 +72 9 0.01184703546898939 +72 8 0.03571514597860759 +72 4 0.02377489356539284 +72 2 0.2027150955235144 +73 73 0.02877697839450058 +73 70 0.02881158369942142 +73 68 0.005972950015487763 +73 67 0.01319465477490301 +73 66 0.002384622595977266 +73 65 0.007168204289570895 +73 64 0.002326298486046072 +73 63 0.09941409593695591 +73 62 0.01792662711063212 +73 61 0.07063394895999693 +73 60 0.05141714107797447 +73 59 0.00601230743794874 +73 58 0.009554496587886176 +73 57 0.007171106411031156 +73 56 0.01672486117374801 +73 55 0.00239578151151058 +73 54 0.009557732630134754 +73 52 0.004807377617938236 +73 51 0.01434600350200337 +73 49 0.01789737275790031 +73 48 0.03092890943239257 +73 47 0.02620783928598836 +73 43 0.001199811333559953 +73 42 0.002376694358630796 +73 41 0.03821831999884073 +73 40 0.03349449885738897 +73 39 0.003588588546452132 +73 38 0.007207454493678839 +73 37 0.001197978167058178 +73 36 0.01309308286569527 +73 35 0.01795308991639439 +73 34 0.0442036135216841 +73 33 0.008358655747216188 +73 32 0.002399472027490919 +73 31 0.01903049607099004 +73 29 0.003596092270515878 +73 27 0.003622991826530339 +73 26 0.01314488884604004 +73 25 0.00597476039115906 +73 19 0.01075911538201531 +73 18 0.01307235836403169 +73 17 0.0488731578977559 +73 15 0.004758046288998127 +73 14 0.001198700874143931 +73 13 0.01797303186041261 +73 11 0.1168987027029761 +73 10 0.0131604384168887 +73 9 0.01789461447289849 +73 6 0.007153494495735029 +73 5 0.007087121319111663 +73 3 0.008293379235259871 +73 2 0.004803072618629303 +73 1 0.03578338314186865 +74 67 0.07387252285700872 +74 66 0.02159662396718247 +74 65 0.03029592260741786 +74 63 0.004339082814972187 +74 62 0.06061254504183656 +74 61 0.004336999212861231 +74 58 0.08220501444350109 +74 57 0.0346379425747964 +74 56 0.004327743191602418 +74 54 0.02164023233565582 +74 52 0.03047724770394669 +74 51 0.05197065910512155 +74 49 0.0605135389888847 +74 48 0.008618794433008137 +74 47 0.03020872682177926 +74 41 0.004326617514554112 +74 38 0.02175854829243366 +74 37 0.01301961962786199 +74 36 0.02587176102725601 +74 35 0.06070210387179701 +74 34 0.004327958276212544 +74 33 0.02162893896944769 +74 29 0.008684962581017615 +74 19 0.01732292895812041 +74 17 0.004318298417667583 +74 16 0.004308791924547113 +74 15 0.02585503729963598 +74 13 0.01302205588439173 +74 11 0.00864251210381194 +74 10 0.1083540830973568 +74 6 0.004319099197708074 +74 5 0.008557975051540946 +74 4 0.004336487651414991 +74 1 0.1209886241536486 diff --git a/scripts/FindPaths.py b/scripts/FindPaths.py index b6e13803..b96681f6 100755 --- a/scripts/FindPaths.py +++ b/scripts/FindPaths.py @@ -48,45 +48,35 @@ parser.add_argument('output', default='Paths.h5') -def run(tprob, A, B, n): +def run(tprob, sources, sinks, num_paths): - Paths, Bottlenecks, Fluxes = tpt.find_top_paths(A, B, tprob, num_paths=n) + net_flux = tpt.calculate_net_fluxes(sources, sinks, tprob) + + paths, fluxes = tpt.get_paths(sources, sinks, net_flux, num_paths=num_paths) # We have to pad the paths with -1s to make a square array - maxi = 0 # the maximum path length - for path in Paths: - if len(path) > maxi: - maxi = len(path) - PaddedPaths = -1 * np.ones((len(Paths), maxi)) - for i, path in enumerate(Paths): - PaddedPaths[i, :len(path)] = np.array(path) + max_length = np.max([len(p) for p in paths]) + + padded_paths = -1 * np.ones((len(paths), max_length)) + for i, path in enumerate(paths): + padded_paths[i, :len(path)] = np.array(path) - return PaddedPaths, np.array(Bottlenecks), np.array(Fluxes) + return padded_paths, np.array(fluxes) def entry_point(): args = parser.parse_args() - F = np.loadtxt(args.ending).astype(int) - U = np.loadtxt(args.starting).astype(int) - tprob = scipy.io.mmread(args.tprob) + sinks = np.loadtxt(args.ending).astype(int).reshape((-1,)) + sources = np.loadtxt(args.starting).astype(int).reshape((-1,)) + # .reshape((-1,)) ensures that a single number turns into an array with a shape - # deal with case where have single start or end state - # TJL note: this should be taken care of in library now... keeping it just - # in case - if F.shape == (): - tmp = np.zeros(1, dtype=int) - tmp[0] = int(F) - F = tmp.copy() - if U.shape == (): - tmp = np.zeros(1, dtype=int) - tmp[0] = int(U) - U = tmp.copy() + tprob = scipy.io.mmread(args.tprob) arglib.die_if_path_exists(args.output) - paths, bottlenecks, fluxes = run(tprob, U, F, args.number) + paths, fluxes = run(tprob, sources, sinks, args.number) - io.saveh(args.output, Paths=paths, Bottlenecks=bottlenecks, fluxes=fluxes) + io.saveh(args.output, paths=paths, fluxes=fluxes) logger.info('Saved output to %s', args.output) if __name__ == "__main__": diff --git a/tests/test_tpt.py b/tests/test_tpt.py index c24bf94c..4e946e81 100644 --- a/tests/test_tpt.py +++ b/tests/test_tpt.py @@ -72,10 +72,11 @@ def test_flux(self): net_flux_ref = io.loadh(tpt_get("net_flux.h5"), 'Data') npt.assert_array_almost_equal(net_flux.toarray(), net_flux_ref) - + + # this test is for the original bottleneck cutting code def test_path_calculations(self): - path_output = tpt.find_top_paths(self.sources, self.sinks, self.tprob) - + path_output = tpt._find_top_paths_cut(self.sources, self.sinks, self.tprob) + paths_ref = io.loadh( tpt_get("dijkstra_paths.h5"), 'Data') fluxes_ref = io.loadh( tpt_get("dijkstra_fluxes.h5"), 'Data') bottlenecks_ref = io.loadh( tpt_get("dijkstra_bottlenecks.h5"), 'Data') @@ -86,18 +87,18 @@ def test_path_calculations(self): npt.assert_array_almost_equal(path_output[2], fluxes_ref) - def test_multi_state_path_calculations(self): - path_output = FindPaths.run(self.tprob, self.multi_sources, self.multi_sinks, self.num_paths) + #def test_multi_state_path_calculations(self): + # path_output = FindPaths.run(self.tprob, self.multi_sources, self.multi_sinks, self.num_paths) - path_result_ref = io.loadh(tpt_get("many_state/Paths.h5")) + # path_result_ref = io.loadh(tpt_get("many_state/Paths.h5")) - paths_ref = path_result_ref['Paths'] - bottlenecks_ref = path_result_ref['Bottlenecks'] - fluxes_ref = path_result_ref['fluxes'] + # paths_ref = path_result_ref['Paths'] + # bottlenecks_ref = path_result_ref['Bottlenecks'] + # fluxes_ref = path_result_ref['fluxes'] - npt.assert_array_almost_equal(path_output[0], paths_ref) - npt.assert_array_almost_equal(path_output[1], bottlenecks_ref) - npt.assert_array_almost_equal(path_output[2], fluxes_ref) + # npt.assert_array_almost_equal(path_output[0], paths_ref) + # npt.assert_array_almost_equal(path_output[1], bottlenecks_ref) + # npt.assert_array_almost_equal(path_output[2], fluxes_ref) def test_mfpt(self): @@ -143,3 +144,33 @@ def test_hub_scores(self): assert np.abs(hub_score - all_hub_scores[waypoint]) < 0.0001 + +class TestTPT2(): + def setUp(self): + + self.net_flux = np.array([[0.0, 0.5, 0.5, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.3, 0.0, 0.2], + [0.0, 0.0, 0.0, 0.0, 0.5, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.3], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]) + + self.sources = np.array([0]) + self.sinks = np.array([4, 5]) + + self.ref_paths = np.array([[0, 2, 4, -1], + [0, 1, 3, 5], + [0, 1, 5, -1]]) + + self.ref_fluxes = np.array([0.5, 0.3, 0.2]) + + def testA(self): + + paths, fluxes = tpt.get_paths(self.sources, self.sinks, self.net_flux) + + npt.assert_array_almost_equal(fluxes, self.ref_fluxes) + + npt.assert_array_equal(paths, self.ref_paths) + + + diff --git a/tests/test_wrappers.py b/tests/test_wrappers.py index dc965c3a..d2ef6bc8 100644 --- a/tests/test_wrappers.py +++ b/tests/test_wrappers.py @@ -281,17 +281,18 @@ def test_CalculateClusterRadii(): def test_FindPaths(): - tprob = get("transition_path_theory_reference/tProb.mtx") - sources = [0] - sinks = [70] - paths, bottlenecks, fluxes = FindPaths.run(tprob, sources, sinks, 10) - # paths are hard to test due to type issues, adding later --TJL - bottlenecks_ref = get(pjoin("transition_path_theory_reference", - "dijkstra_bottlenecks.h5"))['Data'] - fluxes_ref = get(pjoin("transition_path_theory_reference", - "dijkstra_fluxes.h5"))['Data'] - eq(bottlenecks, bottlenecks_ref) + tprob = get("tpt/tProb.mtx") + sources = np.reshape(get("tpt/U.dat"), (-1,)).astype(int) + sinks = np.reshape(get("tpt/F.dat"), (-1,)).astype(int) + paths, fluxes = FindPaths.run(tprob, sources, sinks, 10) + + ref_data = get(pjoin("tpt", "paths.h5")) + + paths_ref = ref_data['paths'] + fluxes_ref = ref_data['fluxes'] + eq(fluxes, fluxes_ref) + eq(paths, paths_ref) class test_PCCA(WTempdir):