Analyze the simulated data#
Simulation on 2K SNPs#
import numpy as np
import pandas as pd
import tskit
from tskitetude import get_data_dir
Analyze the data/sheepTSsimMilano/ts300I2k.vcf.gz generated using msprime. Get a list of all sample names from VCF file:
export TSKIT_DIR=${PWD}
cd data/sheepTSsimMilano/
bcftools query -l ts300I2k.vcf.gz > ts300I2k.sample_names.txt
Now add population information to the sample names, and then write them into a file:
with open(get_data_dir() / "sheepTSsimMilano" / "ts300I2k.sample_names.txt") as f:
sample_names = f.read().splitlines()
pop_names = ["MM", "II", "A", "B", "C", "D", "E", "F", "G"]
# create a column for FID
fids = [pop_names[0]] * 5 + [pop_name for pop_name in pop_names[1:] for _ in range(300)]
sample_names = pd.DataFrame({"FID": fids, "IID": sample_names})
sample_names.to_csv(
get_data_dir() / "sheepTSsimMilano" / "ts300I2k.sample_names_fid.csv",
sep="\t",
index=False,
header=False
)
Analyze the data/sheepTSsimMilano/ts300I2k.vcf.gz generated using msprime. Call the create_tstree with the following parameters:
create_tstree --vcf ts300I2k.vcf.gz --focal ts300I2k.sample_names_fid.csv --ancestral_as_reference \
--output_samples ts300I2k.inferred.samples --output_trees ts300I2k.inferred.trees --num_threads 16 \
--mutation_rate 5.87e-9 --ne 34500
The 5.87-9 and 34500 are the mutation rate and effective population size respectively. The --ancestral_as_reference flag is used to treat the ancestral allele as the reference allele. The --num_threads 4 flag is used to specify the number of threads to use. The --output_samples flag is used to specify the output file for the inferred samples. The --output_trees flag is used to specify the output file for the inferred trees.
mutation_rate = 5.87e-9
print("Mutation rate: ", mutation_rate)
Mutation rate: 5.87e-09
ts300I2k = tskit.load(get_data_dir() / "sheepTSsimMilano/ts300I2k.inferred.trees")
ts300I2k
|
|
|
|---|---|
| Trees | 1 994 |
| Sequence Length | 1e+08 |
| Time Units | generations |
| Sample Nodes | 4 810 |
| Total Size | 51.2 MiB |
| Metadata |
dict |
| Table | Rows | Size | Has Metadata |
|---|---|---|---|
| Edges | 1 288 678 | 39.3 MiB | |
| Individuals | 2 405 | 123.4 KiB | ✅ |
| Migrations | 0 | 8 Bytes | |
| Mutations | 2 069 | 171.5 KiB | ✅ |
| Nodes | 24 964 | 1.7 MiB | ✅ |
| Populations | 9 | 208 Bytes | ✅ |
| Provenances | 4 | 2.4 KiB | |
| Sites | 2 000 | 99.6 KiB | ✅ |
| Provenance Timestamp | Software Name | Version | Command | Full record |
|---|---|---|---|---|
| 14 November, 2024 at 10:43:04 AM | tsdate | 0.2.1 | variational_gamma |
Detailsdictschema_version: 1.0.0
software:
dictname: tsdateversion: 0.2.1
parameters:
dictmutation_rate: 5.87e-09recombination_rate: None time_units: None progress: None population_size: None eps: 1e-06 max_iterations: 10 max_shape: 1000 rescaling_intervals: 1000 rescaling_iterations: 5 match_segregating_sites: False regularise_roots: True singletons_phased: True command: variational_gamma
environment:
dict
os:
dictsystem: Linuxnode: bullseye-laptop release: 5.10.0-28-amd64 version: #1 SMP Debian 5.10.209-2 (2024-01-31) machine: x86_64
python:
dictimplementation: CPythonversion: 3.10.15
libraries:
dict
tskit:
dictversion: 0.6.0 |
| 14 November, 2024 at 10:42:42 AM | tsdate | 0.2.1 | preprocess_ts |
Detailsdictschema_version: 1.0.0
software:
dictname: tsdateversion: 0.2.1
parameters:
dictminimum_gap: 1000000remove_telomeres: True split_disjoint: True filter_populations: False filter_individuals: False filter_sites: False
delete_intervals:
listlist08567.0 list99989827.0100000000.0 command: preprocess_ts
environment:
dict
os:
dictsystem: Linuxnode: bullseye-laptop release: 5.10.0-28-amd64 version: #1 SMP Debian 5.10.209-2 (2024-01-31) machine: x86_64
python:
dictimplementation: CPythonversion: 3.10.15
libraries:
dict
tskit:
dictversion: 0.6.0 |
| 14 November, 2024 at 10:42:38 AM | tskit | 0.6.0 | simplify |
Detailsdictschema_version: 1.0.0
software:
dictname: tskitversion: 0.6.0
parameters:
dictcommand: simplifyTODO: add simplify parameters
environment:
dict
os:
dictsystem: Linuxnode: bullseye-laptop release: 5.10.0-28-amd64 version: #1 SMP Debian 5.10.209-2 (2024-01-31) machine: x86_64
python:
dictimplementation: CPythonversion: 3.10.15
libraries:
dict
kastore:
dictversion: 2.1.1 |
| 14 November, 2024 at 10:42:37 AM | tsinfer | 0.3.3 | infer |
Detailsdictschema_version: 1.0.0
software:
dictname: tsinferversion: 0.3.3
parameters:
dictmismatch_ratio: Nonecommand: infer
environment:
dict
libraries:
dict
zarr:
dictversion: 2.18.3
numcodecs:
dictversion: 0.13.1
lmdb:
dictversion: 1.5.1
tskit:
dictversion: 0.6.0
os:
dictsystem: Linuxnode: bullseye-laptop release: 5.10.0-28-amd64 version: #1 SMP Debian 5.10.209-2 (2024-01-31) machine: x86_64
python:
dictimplementation: CPython
version:
list310 15 |
ts300I2k.diversity()
np.float64(6.2924016481571095e-06)
ts300I2k.diversity(mode="branch") * mutation_rate
np.float64(7.094446757337434e-06)
Simulation on 25K SNPs#
Get sample names (should be equal to previous run):
bcftools query -l ts300I25k.vcf.gz > ts300I25k.sample_names.txt
Now add population information to the sample names, and then write them into a file:
with open(get_data_dir() / "sheepTSsimMilano" / "ts300I25k.sample_names.txt") as f:
sample_names = f.read().splitlines()
pop_names = ["MM", "II", "A", "B", "C", "D", "E", "F", "G"]
# create a column for FID
fids = [pop_names[0]] * 5 + [pop_name for pop_name in pop_names[1:] for _ in range(300)]
sample_names = pd.DataFrame({"FID": fids, "IID": sample_names})
sample_names.to_csv(
get_data_dir() / "sheepTSsimMilano" / "ts300I25k.sample_names_fid.csv",
sep="\t",
index=False,
header=False
)
Generate tree:
create_tstree --vcf ts300I25k.vcf.gz --focal ts300I25k.sample_names_fid.csv --ancestral_as_reference \
--output_samples ts300I25k.inferred.samples --output_trees ts300I25k.inferred.trees --num_threads 16 \
--mutation_rate 5.87e-9 --ne 34500
ts300I25k = tskit.load(get_data_dir() / "sheepTSsimMilano/ts300I25k.inferred.trees")
ts300I25k
|
|
|
|---|---|
| Trees | 24 685 |
| Sequence Length | 1e+08 |
| Time Units | generations |
| Sample Nodes | 4 810 |
| Total Size | 153.1 MiB |
| Metadata |
dict |
| Table | Rows | Size | Has Metadata |
|---|---|---|---|
| Edges | 3 617 318 | 110.4 MiB | |
| Individuals | 2 405 | 123.4 KiB | ✅ |
| Migrations | 0 | 8 Bytes | |
| Mutations | 29 099 | 1.0 MiB | |
| Nodes | 172 744 | 12.8 MiB | ✅ |
| Populations | 9 | 208 Bytes | ✅ |
| Provenances | 4 | 2.4 KiB | |
| Sites | 25 000 | 1.2 MiB | ✅ |
| Provenance Timestamp | Software Name | Version | Command | Full record |
|---|---|---|---|---|
| 13 September, 2024 at 01:36:46 PM | tsdate | 0.1.7 | inside_outside |
Detailsdictschema_version: 1.0.0
software:
dictname: tsdateversion: 0.1.7
parameters:
dictmutation_rate: 5.87e-09recombination_rate: None time_units: None progress: None population_size: 34500.0 eps: 1e-06 outside_standardize: True ignore_oldest_root: False probability_space: logarithmic num_threads: None cache_inside: False command: inside_outside
environment:
dict
os:
dictsystem: Linuxnode: core release: 5.15.0-50-generic version: #56-Ubuntu SMP Tue Sep 20 13:23:26 UTC 2022 machine: x86_64
python:
dictimplementation: CPythonversion: 3.9.16
libraries:
dict
tskit:
dictversion: 0.5.8 |
| 13 September, 2024 at 01:20:17 PM | tsdate | 0.1.7 | preprocess_ts |
Detailsdictschema_version: 1.0.0
software:
dictname: tsdateversion: 0.1.7
parameters:
dictminimum_gap: 1000000remove_telomeres: True filter_populations: False filter_individuals: False filter_sites: False
delete_intervals:
listlist06713.0 list99995468.0100000000.0 command: preprocess_ts
environment:
dict
os:
dictsystem: Linuxnode: core release: 5.15.0-50-generic version: #56-Ubuntu SMP Tue Sep 20 13:23:26 UTC 2022 machine: x86_64
python:
dictimplementation: CPythonversion: 3.9.16
libraries:
dict
tskit:
dictversion: 0.5.8 |
| 13 September, 2024 at 01:19:30 PM | tskit | 0.5.8 | simplify |
Detailsdictschema_version: 1.0.0
software:
dictname: tskitversion: 0.5.8
parameters:
dictcommand: simplifyTODO: add simplify parameters
environment:
dict
os:
dictsystem: Linuxnode: core release: 5.15.0-50-generic version: #56-Ubuntu SMP Tue Sep 20 13:23:26 UTC 2022 machine: x86_64
python:
dictimplementation: CPythonversion: 3.9.16
libraries:
dict
kastore:
dictversion: 2.1.1 |
| 13 September, 2024 at 01:18:45 PM | tsinfer | 0.3.3 | infer |
Detailsdictschema_version: 1.0.0
software:
dictname: tsinferversion: 0.3.3
parameters:
dictmismatch_ratio: Nonecommand: infer
environment:
dict
libraries:
dict
zarr:
dictversion: 2.16.1
numcodecs:
dictversion: 0.12.1
lmdb:
dictversion: 1.4.1
tskit:
dictversion: 0.5.8
os:
dictsystem: Linuxnode: core release: 5.15.0-50-generic version: #56-Ubuntu SMP Tue Sep 20 13:23:26 UTC 2022 machine: x86_64
python:
dictimplementation: CPython
version:
list39 16 |
ts300I25k.diversity()
np.float64(5.04781517762309e-05)
ts300I25k.diversity(mode="branch") * mutation_rate
np.float64(3.753770863863539e-05)
Simulation on entire dataset#
Get samples names (like we did before):
bbcftools query -l tsm100M300I.vcf.gz > tsm100M300I.sample_names.txt
Now add population information to the sample names, and then write them into a file:
with open(get_data_dir() / "sheepTSsimMilano" / "tsm100M300I.sample_names.txt") as f:
sample_names = f.read().splitlines()
pop_names = ["MM", "II", "A", "B", "C", "D", "E", "F", "G"]
# create a column for FID
fids = [pop_names[0]] * 5 + [pop_name for pop_name in pop_names[1:] for _ in range(300)]
sample_names = pd.DataFrame({"FID": fids, "IID": sample_names})
sample_names.to_csv(
get_data_dir() / "sheepTSsimMilano" / "tsm100M300I.sample_names_fid.csv",
sep="\t",
index=False,
header=False
)
This step will require a lot of time: Submit the job to the cluster:
cd ${TSKIT_DIR}
sbatch scripts/simulation-tsm100M300I.sh
tsm100M300I = tskit.load(get_data_dir() / "sheepTSsimMilano/tsm100M300I.inferred.trees")
tsm100M300I
|
|
|
|---|---|
| Trees | 919 607 |
| Sequence Length | 1e+08 |
| Time Units | generations |
| Sample Nodes | 4 810 |
| Total Size | 511.4 MiB |
| Metadata |
dict |
| Table | Rows | Size | Has Metadata |
|---|---|---|---|
| Edges | 7 300 103 | 222.8 MiB | |
| Individuals | 2 405 | 123.4 KiB | ✅ |
| Migrations | 0 | 8 Bytes | |
| Mutations | 1 756 162 | 62.0 MiB | |
| Nodes | 1 141 491 | 85.5 MiB | ✅ |
| Populations | 9 | 208 Bytes | ✅ |
| Provenances | 4 | 2.4 KiB | |
| Sites | 1 712 522 | 85.2 MiB | ✅ |
| Provenance Timestamp | Software Name | Version | Command | Full record |
|---|---|---|---|---|
| 15 September, 2024 at 05:24:07 AM | tsdate | 0.1.7 | inside_outside |
Detailsdictschema_version: 1.0.0
software:
dictname: tsdateversion: 0.1.7
parameters:
dictmutation_rate: 5.87e-09recombination_rate: None time_units: None progress: None population_size: 34500.0 eps: 1e-06 outside_standardize: True ignore_oldest_root: False probability_space: logarithmic num_threads: None cache_inside: False command: inside_outside
environment:
dict
os:
dictsystem: Linuxnode: node2 release: 5.15.0-58-generic version: #64-Ubuntu SMP Thu Jan 5 11:43:13 UTC 2023 machine: x86_64
python:
dictimplementation: CPythonversion: 3.9.18
libraries:
dict
tskit:
dictversion: 0.5.8 |
| 15 September, 2024 at 03:51:46 AM | tsdate | 0.1.7 | preprocess_ts |
Detailsdictschema_version: 1.0.0
software:
dictname: tsdateversion: 0.1.7
parameters:
dictminimum_gap: 1000000remove_telomeres: True filter_populations: False filter_individuals: False filter_sites: False
delete_intervals:
listlist088.0 list99999991.0100000000.0 command: preprocess_ts
environment:
dict
os:
dictsystem: Linuxnode: node2 release: 5.15.0-58-generic version: #64-Ubuntu SMP Thu Jan 5 11:43:13 UTC 2023 machine: x86_64
python:
dictimplementation: CPythonversion: 3.9.18
libraries:
dict
tskit:
dictversion: 0.5.8 |
| 15 September, 2024 at 03:50:34 AM | tskit | 0.5.8 | simplify |
Detailsdictschema_version: 1.0.0
software:
dictname: tskitversion: 0.5.8
parameters:
dictcommand: simplifyTODO: add simplify parameters
environment:
dict
os:
dictsystem: Linuxnode: node2 release: 5.15.0-58-generic version: #64-Ubuntu SMP Thu Jan 5 11:43:13 UTC 2023 machine: x86_64
python:
dictimplementation: CPythonversion: 3.9.18
libraries:
dict
kastore:
dictversion: 2.1.1 |
| 15 September, 2024 at 03:49:39 AM | tsinfer | 0.3.3 | infer |
Detailsdictschema_version: 1.0.0
software:
dictname: tsinferversion: 0.3.3
parameters:
dictmismatch_ratio: Nonecommand: infer
environment:
dict
libraries:
dict
zarr:
dictversion: 2.16.1
numcodecs:
dictversion: 0.12.1
lmdb:
dictversion: 1.4.1
tskit:
dictversion: 0.5.8
os:
dictsystem: Linuxnode: node2 release: 5.15.0-58-generic version: #64-Ubuntu SMP Thu Jan 5 11:43:13 UTC 2023 machine: x86_64
python:
dictimplementation: CPython
version:
list39 18 |
tsm100M300I.diversity()
np.float64(0.0008102636799985429)
tsm100M300I.diversity(mode="branch") * mutation_rate
np.float64(0.0007728152520235786)
Calculate FST#
define individuals list:
indList = [np.arange(10)] + [np.arange(600*i+10, 600*(i+1)+10) for i in range(8)]
[i.Fst([indList[0], indList[1]], mode="branch") for i in [ts300I2k, ts300I25k, tsm100M300I]]
[np.float64(0.004369149530414562),
np.float64(0.006317426248074964),
np.float64(0.011025754267375176)]
And then with site mode:
[i.Fst([indList[0], indList[1]], mode="site") for i in [ts300I2k, ts300I25k, tsm100M300I]]
[np.float64(0.009344736411834753),
np.float64(0.011842725047691682),
np.float64(0.01151736454415031)]
tmp = {
"simulation": ["ts300I2k", "ts300I25k", "tsm100M300I"],
"diversity": [ts300I2k.diversity(), ts300I25k.diversity(), tsm100M300I.diversity()],
"diversity_branch": [
ts300I2k.diversity(mode="branch") * mutation_rate,
ts300I25k.diversity(mode="branch") * mutation_rate,
tsm100M300I.diversity(mode="branch") * mutation_rate
],
"FST_branch": [i.Fst([indList[0], indList[1]], mode="branch") for i in [ts300I2k, ts300I25k, tsm100M300I]],
"FST_site": [i.Fst([indList[0], indList[1]], mode="site") for i in [ts300I2k, ts300I25k, tsm100M300I]]
}
pd.DataFrame(tmp)
| simulation | diversity | diversity_branch | FST_branch | FST_site | |
|---|---|---|---|---|---|
| 0 | ts300I2k | 0.000006 | 0.000007 | 0.004369 | 0.009345 |
| 1 | ts300I25k | 0.000050 | 0.000038 | 0.006317 | 0.011843 |
| 2 | tsm100M300I | 0.000810 | 0.000773 | 0.011026 | 0.011517 |
tree = ts300I2k.at_index(1)
tree.draw_svg(y_axis=True, size=(1000, 200))
tree.root
22777
Print the age of the tree:
tree.time(tree.root)
2052.6908381336916
Iterate over the trees and get time (throw away the 0 time nodes):
for u in tree.nodes():
if tree.time(u) > 0:
print(f"Node {u}: time {tree.time(u)}")
Node 22777: time 2052.6908381336916
Node 8903: time 434.81231081649946
Node 6135: time 106.1892007443155
Node 6129: time 0.8934057337059567
Node 6483: time 176.72200836278202
Node 7592: time 276.96057201724227
Node 6128: time 0.8614562465737404
Node 7561: time 3.9791894052606973
Node 7563: time 3.999468241567902
Node 7564: time 1.188705735207388
Node 7567: time 3.7890351855486446
Node 7569: time 3.975476618490097
Node 7571: time 3.5365565646228947
Node 7572: time 3.6637566443635015
Node 7573: time 3.9929000439321367
Node 7575: time 4.007783930029902
Node 7580: time 4.009007303951234
Node 7581: time 3.521605046679083
Node 7583: time 3.777739324531501
Node 7584: time 4.01605093483796
Node 7589: time 3.947350924477
Node 7590: time 3.9944752918363142
Node 7898: time 229.68181326164057
Node 8881: time 4.09889737639492
Node 8887: time 12.679095449793016
Node 8890: time 12.268408112978774
Node 8899: time 8.139099194175857
Node 8901: time 12.836428736500473
Node 13050: time 4.98963690114448
Node 14931: time 500.932483963765
Node 8898: time 12.68715298661742
Node 10157: time 9.591154540000376
Node 14889: time 18.813183740173912
Node 15797: time 535.2832203029757
Node 6122: time 0.9520054312116241
Node 8896: time 10.189682764936192
Node 14797: time 477.87902741955713
Node 7587: time 3.929325566221141
Node 14793: time 15.732672612986047
Node 14794: time 16.315067071567345
Node 14796: time 4.164545942735638
Node 16675: time 4.957739848486072
Node 16678: time 2.809875076501315
Node 16687: time 3.7692387771415583
Node 16688: time 5.583649433556701
Node 16689: time 5.583801240284319
Node 16690: time 5.584009654135528
Node 16691: time 5.584274853681661
Node 16692: time 5.584597013379693
Node 16693: time 5.584976303373147
Node 16694: time 5.585412889753534
Node 16695: time 5.585906934250183
Node 16696: time 5.586458594273948
Node 16698: time 5.5900115477039085
Node 17304: time 7.986705680529684
Node 17325: time 0.7956004478275346
Node 17329: time 3.986749947975637
Node 18326: time 488.76108704192944
Node 18316: time 11.139555447856276
Node 18317: time 13.13115725549762
Node 18318: time 13.131023460322574
Node 18319: time 13.130885546524349
Node 18320: time 13.130743505803055
Node 18321: time 13.130597329888149
Node 18322: time 13.13044701046754
Node 18323: time 13.130292539212606
Node 18324: time 13.130133907712228
Node 18325: time 13.129971107576223
Node 21650: time 649.7474454048082
Node 13148: time 231.73473746953783
Node 8718: time 0.7454985191610484
Node 13116: time 2.623990817698713
Node 13117: time 2.531713631028989
Node 13118: time 1.3551410734424203
Node 13119: time 2.6873250473496437
Node 13120: time 2.569436240983686
Node 13121: time 2.4120832376890604
Node 13122: time 1.1557660370163834
Node 13123: time 2.5800379597015506
Node 13124: time 2.648095118090795
Node 13125: time 2.714712959046146
Node 13126: time 2.716490449581194
Node 13127: time 2.1499409866387693
Node 13128: time 2.152356956687588
Node 13129: time 2.5766507150077995
Node 13130: time 2.1558634010722812
Node 13131: time 2.6052120619285066
Node 13132: time 2.609168281260556
Node 13133: time 2.6131255767696953
Node 13134: time 2.754943559465906
Node 13135: time 2.6183771913530878
Node 13136: time 2.622337017377116
Node 13137: time 2.690591300147364
Node 13138: time 2.694602569472846
Node 13139: time 2.6342863324229726
Node 13140: time 2.6382501116410633
Node 13141: time 2.6422148297032817
Node 13142: time 2.6461804681038137
Node 13143: time 2.8006679821051215
Node 13144: time 1.1939634220982231
Node 13145: time 2.808125366929877
Node 13146: time 2.703482411964289
Node 13147: time 2.7574448285619275
Node 16630: time 614.3845527455742
Node 9062: time 292.27758837331703
Node 9027: time 3.8730096696583987
Node 9050: time 4.069306052061603
Node 9051: time 3.9423270145585443
Node 16297: time 556.123436267885
Node 9764: time 0.5650181627266119
Node 16265: time 4.672341823585986
Node 16266: time 14.000220960409084
Node 16267: time 9.022100881263809
Node 16268: time 9.022231448427245
Node 16269: time 9.022362034952206
Node 16270: time 9.022492640966325
Node 16271: time 9.02262326654373
Node 16272: time 1.7234690786780857
Node 16273: time 9.026434308163136
Node 16274: time 9.02296033847764
Node 16275: time 9.023091015132989
Node 16276: time 9.023221711766737
Node 16277: time 9.023352428408334
Node 16278: time 9.023483165106466
Node 16279: time 9.02361392184959
Node 16280: time 9.023744698685741
Node 16281: time 9.023875495564969
Node 16282: time 9.024006312540884
Node 16283: time 9.024137149544119
Node 16284: time 9.024268006560899
Node 16285: time 9.024398883585167
Node 16286: time 9.02452978055363
Node 16287: time 9.024660697428127
Node 16288: time 9.024791634180168
Node 16289: time 9.02492259072031
Node 16290: time 9.025053567000027
Node 16606: time 27.512453248013465
Node 16607: time 8.42303725054012
Node 16608: time 36.68937910269257
Node 16609: time 7.140429749708737
Node 16610: time 36.17715260581313
Node 16611: time 17.012553415780133
Node 16612: time 17.013050631465557
Node 16613: time 17.013547994203154
Node 16614: time 17.014045494894695
Node 16615: time 17.014543124499404
Node 16616: time 17.015040873952053
Node 16617: time 17.015538734188567
Node 16618: time 17.01603669611724
Node 16619: time 17.01653475069084
Node 16620: time 17.017032888813965
Node 16622: time 35.87791186724872
Node 16623: time 35.88013333743743
Node 16624: time 9.070737216529594
Node 16625: time 17.01917357736364
Node 16626: time 17.019671698700122
Node 16627: time 17.020169875846566
Node 16628: time 17.020668099752054
Node 16629: time 17.280056148810356
Node 21647: time 27.709908194173906
Node 22612: time 753.3502981415722
Node 22169: time 748.8815811461643
Node 21605: time 711.0370655397833
Node 19424: time 662.9737077126814
Node 16722: time 379.85699826349526
Node 10082: time 0.5704704116237834
Node 10083: time 0.5704739496820593
Node 10084: time 0.5704774919224926
Node 16666: time 9.6923057976201
Node 16667: time 9.692649144056533
Node 16669: time 1.3493225562948932
Node 16676: time 7.76886116693954
Node 16677: time 2.1530548268768497
Node 16680: time 9.798813510484685
Node 16681: time 9.799254393468106
Node 16682: time 9.799695740947872
Node 16685: time 9.801267368028737
Node 16686: time 9.80171008380704
Node 16701: time 9.808802575299746
Node 16702: time 9.809247123949865
Node 16703: time 9.809692126208374
Node 16705: time 8.510792741216186
Node 16706: time 8.94898724352245
Node 16707: time 9.439849752874638
Node 16708: time 8.992486515082533
Node 16709: time 8.951038008433635
Node 16710: time 9.814261931001605
Node 16711: time 8.952158352760092
Node 16712: time 9.443076846292904
Node 16713: time 9.443788707890702
Node 16717: time 9.818684811768044
Node 16718: time 3.184228998791497
Node 17070: time 616.8394386148441
Node 13082: time 470.3342255704131
Node 13037: time 15.647804223839623
Node 13042: time 8.907497532813101
Node 13043: time 9.79379075235168
Node 13044: time 9.986664669809631
Node 13045: time 9.794229495845668
Node 13046: time 9.98710589082205
Node 13047: time 9.987327897175815
Node 13048: time 9.794889385481657
Node 13049: time 13.17740489499901
Node 13051: time 9.988350590020532
Node 13052: time 9.988572833859081
Node 13053: time 15.798890992963667
Node 13054: time 9.796306231810231
Node 13055: time 9.989195737050016
Node 13056: time 9.796745813886153
Node 13057: time 9.796964328525766
Node 13058: time 9.797182848934815
Node 13059: time 9.797401372148396
Node 13060: time 9.990296983618506
Node 13061: time 9.79784101274007
Node 13062: time 9.990739067955863
Node 13063: time 9.990961410602296
Node 13064: time 9.798501745947796
Node 13065: time 9.798720246814476
Node 13066: time 9.798938742968822
Node 13067: time 9.479501595893415
Node 13068: time 13.18741621709565
Node 13069: time 13.18778069900522
Node 13070: time 13.188145678723716
Node 13071: time 9.799952372505052
Node 13072: time 9.99286190919817
Node 13073: time 9.993084151879186
Node 13074: time 9.993306378347857
Node 13075: time 9.993528588373545
Node 13076: time 9.993750781854825
Node 13077: time 9.80127561934983
Node 13078: time 9.482135132261984
Node 13079: time 13.193051295305875
Node 13080: time 1.100209047220454
Node 16292: time 9.226951417896258
Node 17068: time 33.58071222417884
Node 17069: time 17.216947926385018
Node 21644: time 26.52957870869525