3 Performing Taxonomically Informed Metabolite Annotation

Author

Adriano Rutz

Published

July 5, 2026

This vignette describes how Taxonomically Informed Metabolite Annotation is performed. If you followed all previous steps successfully, this should be a piece of cake, you deserve it!

tima::run_tima()
#> + par_def_pre_fea_edg dispatched
#> ✔ par_def_pre_fea_edg completed [6ms, 706 B]
#> + par_def_wei_ann dispatched
#> ✔ par_def_wei_ann completed [1ms, 5.33 kB]
#> + par_def_pre_lib_sop_mer dispatched
#> ✔ par_def_pre_lib_sop_mer completed [1ms, 7.20 kB]
#> + par_def_ann_spe dispatched
#> ✔ par_def_ann_spe completed [1ms, 2.66 kB]
#> + par_def_cre_edg_spe dispatched
#> ✔ par_def_cre_edg_spe completed [1ms, 1.39 kB]
#> + par_def_pre_lib_spe dispatched
#> ✔ par_def_pre_lib_spe completed [0ms, 1.58 kB]
#> + par_def_pre_lib_sop_clo dispatched
#> ✔ par_def_pre_lib_sop_clo completed [1ms, 523 B]
#> + par_def_pre_ann_spe dispatched
#> ✔ par_def_pre_ann_spe completed [0ms, 1.35 kB]
#> + par_def_ann_mas dispatched
#> ✔ par_def_ann_mas completed [1ms, 12.18 kB]
#> + par_def_pre_lib_sop_big dispatched
#> ✔ par_def_pre_lib_sop_big completed [1ms, 314 B]
#> + par_def_cre_com dispatched
#> ✔ par_def_cre_com completed [1ms, 375 B]
#> + par_def_pre_lib_sop_lot dispatched
#> ✔ par_def_pre_lib_sop_lot completed [0ms, 494 B]
#> + par_def_pre_ann_gnp dispatched
#> ✔ par_def_pre_ann_gnp completed [1ms, 1.31 kB]
#> + par_def_pre_lib_sop_pub dispatched
#> ✔ par_def_pre_lib_sop_pub completed [0ms, 527 B]
#> + par_def_pre_lib_sop_hmd dispatched
#> ✔ par_def_pre_lib_sop_hmd completed [1ms, 492 B]
#> + par_def_pre_ann_mzm dispatched
#> ✔ par_def_pre_ann_mzm completed [1ms, 1.32 kB]
#> + par_def_pre_ann_mzt dispatched
#> ✔ par_def_pre_ann_mzt completed [1ms, 1.18 kB]
#> + par_def_pre_fea_tab dispatched
#> ✔ par_def_pre_fea_tab completed [1ms, 857 B]
#> + par_def_pre_ann_sir dispatched
#> ✔ par_def_pre_ann_sir completed [0ms, 1.97 kB]
#> + par_def_pre_tax dispatched
#> ✔ par_def_pre_tax completed [1ms, 1.51 kB]
#> + par_def_pre_fea_com dispatched
#> ✔ par_def_pre_fea_com completed [0ms, 358 B]
#> + par_def_pre_lib_rt dispatched
#> ✔ par_def_pre_lib_rt completed [0ms, 2.19 kB]
#> + yaml_paths dispatched
#> ✔ yaml_paths completed [1ms, 18.84 kB]
#> + par_def_pre_lib_sop_ecm dispatched
#> ✔ par_def_pre_lib_sop_ecm completed [0ms, 492 B]
#> + par_def_fil_ann dispatched
#> ✔ par_def_fil_ann completed [1ms, 1.34 kB]
#> + par_def_exp_mzt dispatched
#> ✔ par_def_exp_mzt completed [1ms, 1.76 kB]
#> + paths dispatched
#> ✔ paths completed [1ms, 3.39 kB]
#> + lib_spe_exp_mer_pre_neg dispatched
#> [2026-07-05 13:41:32.537] [INFO ] > Starting: download_file [url=https://github.com/adafede/SpectRalLibRaRies/raw/main/data/interim/libraries/spectra/exp/merlin_16984129_neg.rds, destination=data/interim/libraries/spectra/exp/merlin_16984129_neg.rds]
#> [2026-07-05 13:41:33.128] [INFO ] [OK] Completed: download_file [size_bytes=53975862] (556ms)
#> ✔ lib_spe_exp_mer_pre_neg completed [622ms, 53.98 MB]
#> + par_pre_par2 dispatched
#> ✔ par_pre_par2 completed [1ms, 34.84 kB]
#> + lib_spe_exp_env_pre_pos dispatched
#> [2026-07-05 13:41:33.327] [INFO ] > Starting: download_file [url=https://github.com/adafede/SpectRalLibRaRies/raw/main/data/interim/libraries/spectra/exp/enveda180_pos.rds, destination=data/interim/libraries/spectra/exp/enveda180_pos.rds]
#> Downloading  30% ■■■■■■■■■■                        2s
#> Downloading  37% ■■■■■■■■■■■■                      2s
#> Downloading 100% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■   0s
#> [2026-07-05 13:41:36.869] [INFO ] [OK] Completed: download_file [size_bytes=1466741248] (3.5s)
#> ✔ lib_spe_exp_env_pre_pos completed [3.5s, 1.47 GB]
#> + lib_spe_exp_mb_pre_neg dispatched
#> [2026-07-05 13:41:37.477] [INFO ] > Starting: download_file [url=https://github.com/adafede/SpectRalLibRaRies/raw/main/data/interim/libraries/spectra/exp/massbank_202510_neg.rds, destination=data/interim/libraries/spectra/exp/massbank_202510_neg.rds]
#> [2026-07-05 13:41:37.622] [INFO ] [OK] Completed: download_file [size_bytes=5972761] (145ms)
#> ✔ lib_spe_exp_mb_pre_neg completed [147ms, 5.97 MB]
#> + lib_spe_is_nor_pre_neg dispatched
#> [2026-07-05 13:41:37.716] [INFO ] > Starting: download_file [url=https://github.com/adafede/SpectRalLibRaRies/raw/main/data/interim/libraries/spectra/exp/isdbnormansusdat_14854025_neg.rds, destination=data/interim/libraries/spectra/is/isdbnormansusdat_14854025_neg.rds]
#> [2026-07-05 13:41:37.934] [INFO ] [OK] Completed: download_file [size_bytes=34220848] (218ms)
#> ✔ lib_spe_is_nor_pre_neg completed [220ms, 34.22 MB]
#> + lib_spe_exp_mul_pre_sop dispatched
#> [2026-07-05 13:41:38.032] [INFO ] > Starting: download_file [url=https://github.com/Adafede/SpectRalLibRaRies/raw/main/data/interim/libraries/sop/multims2_17417089_prepared.tsv.gz, destination=data/interim/libraries/sop/multims2_17417089_prepared.tsv.gz]
#> [2026-07-05 13:41:38.203] [INFO ] [OK] Completed: download_file [size_bytes=49548] (170ms)
#> ✔ lib_spe_exp_mul_pre_sop completed [172ms, 49.55 kB]
#> + lib_spe_exp_mul_pre_pos dispatched
#> [2026-07-05 13:41:38.292] [INFO ] > Starting: download_file [url=https://github.com/adafede/SpectRalLibRaRies/raw/main/data/interim/libraries/spectra/exp/multims2_17417089_pos.rds, destination=data/interim/libraries/spectra/exp/multims2_17417089_pos.rds]
#> [2026-07-05 13:41:38.491] [INFO ] [OK] Completed: download_file [size_bytes=13752263] (198ms)
#> ✔ lib_spe_exp_mul_pre_pos completed [200ms, 13.75 MB]
#> + lib_sop_pub dispatched
#> [2026-07-05 13:41:38.586] [INFO ] > Starting: download_file [url=https://zenodo.org/records/20439802/files/PubChemLite_CCSbase_20260529.csv?download=1, destination=data/source/libraries/sop/pubchemlite.csv]
#> Downloading ⠙
#> Downloading ⠹
#> Downloading ⠸
#> Downloading ⠼
#> Downloading ⠴
#> Downloading ⠦
#> Downloading ⠧
#> Downloading ⠇
#> Downloading ⠏
#> Downloading ⠋
#> [2026-07-05 13:42:10.332] [INFO ] [OK] Completed: download_file [size_bytes=293613581] (31.7s)
#> ✔ lib_sop_pub completed [31.7s, 293.61 MB]
#> Downloading ⠋
+ lib_sop_lot dispatched
#> Downloading ⠋
[2026-07-05 13:42:10.527] [INFO ] Retrieving latest version from Zenodo: 10.5281/zenodo.5794106
#> [2026-07-05 13:42:11.513] [INFO ] Downloading 260413_frozen_metadata.csv.gz from https://doi.org/10.5281/zenodo.5794106
#> [2026-07-05 13:42:11.515] [INFO ] > Starting: download_file [url=https://zenodo.org/api/records/19360665/files/260413_frozen_metadata.csv.gz/content, destination=data/source/libraries/sop/lotus.csv.gz]
#> Downloading ⠋
#> Downloading ⠙
#> Downloading ⠹
#> Downloading ⠸
#> Downloading ⠼
#> [2026-07-05 13:42:25.658] [INFO ] [OK] Completed: download_file [size_bytes=90298678] (14.1s)
#> [2026-07-05 13:42:25.659] [INFO ] Download completed: data/source/libraries/sop/lotus.csv.gz
#> ✔ lib_sop_lot completed [15.1s, 90.30 MB]
#> Downloading ⠼
+ lib_spe_exp_mer_pre_sop dispatched
#> Downloading ⠼
[2026-07-05 13:42:25.782] [INFO ] > Starting: download_file [url=https://github.com/Adafede/SpectRalLibRaRies/raw/main/data/interim/libraries/sop/merlin_16984129_prepared.tsv.gz, destination=data/interim/libraries/sop/merlin_16984129_prepared.tsv.gz]
#> Downloading ⠼
#> [2026-07-05 13:42:26.471] [INFO ] [OK] Completed: download_file [size_bytes=823107] (688ms)
#> ✔ lib_spe_exp_mer_pre_sop completed [690ms, 823.11 kB]
#> + lib_spe_is_wik_pre_neg dispatched
#> [2026-07-05 13:42:26.561] [INFO ] > Starting: download_file [url=https://github.com/taxonomicallyinformedannotation/tima-isdb-neg/raw/main/wikidata_5607185_neg.rds, destination=data/interim/libraries/spectra/is/wikidata_5607185_neg.rds]
#> Downloading   7% ■■■                              21s
#> Downloading  18% ■■■■■■■                          20s
#> Downloading  27% ■■■■■■■■■                        21s
#> Downloading  36% ■■■■■■■■■■■■                     19s
#> Downloading  45% ■■■■■■■■■■■■■■■                  17s
#> Downloading  54% ■■■■■■■■■■■■■■■■■                14s
#> Downloading  64% ■■■■■■■■■■■■■■■■■■■■             11s
#> Downloading  75% ■■■■■■■■■■■■■■■■■■■■■■■           8s
#> Downloading  87% ■■■■■■■■■■■■■■■■■■■■■■■■■■■       4s
#> Downloading  99% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■   0s
#> Downloading 100% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■   0s
#> [2026-07-05 13:42:55.877] [INFO ] [OK] Completed: download_file [size_bytes=874199749] (29.3s)
#> ✔ lib_spe_is_wik_pre_neg completed [29.3s, 874.20 MB]
#> + test_spectra_mini dispatched
#> ✔ test_spectra_mini completed [0ms, 7.77 MB]
#> + lib_sop_ecm dispatched
#> [2026-07-05 13:42:56.378] [INFO ] > Starting: download_file [url=https://ecmdb.ca/download/ecmdb.json.zip, destination=data/source/libraries/sop/ecmdb.json.zip]
#> [2026-07-05 13:42:57.801] [INFO ] [OK] Completed: download_file [size_bytes=1334921] (1.4s)
#> ✔ lib_sop_ecm completed [1.4s, 1.33 MB]
#> + lib_spe_exp_mer_pre_pos dispatched
#> [2026-07-05 13:42:57.893] [INFO ] > Starting: download_file [url=https://github.com/adafede/SpectRalLibRaRies/raw/main/data/interim/libraries/spectra/exp/merlin_16984129_pos.rds, destination=data/interim/libraries/spectra/exp/merlin_16984129_pos.rds]
#> Downloading  29% ■■■■■■■■■■                        2s
#> Downloading  94% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■     0s
#> Downloading 100% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■   0s
#> [2026-07-05 13:43:01.930] [INFO ] [OK] Completed: download_file [size_bytes=158718768] (4s)
#> ✔ lib_spe_exp_mer_pre_pos completed [4s, 158.72 MB]
#> + lib_sop_hmd_fam_raw dispatched
#> [2026-07-05 13:43:02.098] [INFO ] > Starting: download_file [url=https://www.csfmetabolome.ca/system/downloads/current/csf_metabolites_structures.zip, destination=data/source/libraries/sop/csfmetabolome/structures.zip]
#> [2026-07-05 13:43:02.690] [INFO ] [OK] Completed: download_file [size_bytes=251502] (592ms)
#> [2026-07-05 13:43:02.692] [INFO ] > Starting: download_file [url=https://www.fecalmetabolome.ca/system/downloads/current/feces_metabolites_structures.zip, destination=data/source/libraries/sop/fecalmetabolome/structures.zip]
#> [2026-07-05 13:43:03.783] [INFO ] [OK] Completed: download_file [size_bytes=3201305] (1.1s)
#> [2026-07-05 13:43:03.785] [INFO ] > Starting: download_file [url=https://www.salivametabolome.ca/system/downloads/current/saliva_metabolites_structures.zip, destination=data/source/libraries/sop/salivametabolome/structures.zip]
#> [2026-07-05 13:43:04.518] [INFO ] [OK] Completed: download_file [size_bytes=622845] (734ms)
#> [2026-07-05 13:43:04.520] [INFO ] > Starting: download_file [url=https://www.serummetabolome.ca/system/downloads/current/serum_metabolites_structures.zip, destination=data/source/libraries/sop/serummetabolome/structures.zip]
#> [2026-07-05 13:43:05.912] [INFO ] [OK] Completed: download_file [size_bytes=12023792] (1.4s)
#> [2026-07-05 13:43:05.914] [INFO ] > Starting: download_file [url=https://www.sweatmetabolome.ca/system/downloads/current/sweat_metabolites_structures.zip, destination=data/source/libraries/sop/sweatmetabolome/structures.zip]
#> [2026-07-05 13:43:06.323] [INFO ] [OK] Completed: download_file [size_bytes=42618] (409ms)
#> [2026-07-05 13:43:06.325] [INFO ] > Starting: download_file [url=https://www.urinemetabolome.ca/system/downloads/current/urine_metabolites_structures.zip, destination=data/source/libraries/sop/urinemetabolome/structures.zip]
#> [2026-07-05 13:43:07.435] [INFO ] [OK] Completed: download_file [size_bytes=2654043] (1.1s)
#> [2026-07-05 13:43:07.437] [INFO ] > Starting: download_file [url=https://mcdb.ca/system/downloads/current/milk_metabolites_structures.zip, destination=data/source/libraries/sop/mcdb/structures.zip]
#> [2026-07-05 13:43:07.575] [WARN ] file download failed (attempt 1/3), retrying in 1s: HTTP 403 Forbidden.
#> [2026-07-05 13:43:08.624] [WARN ] file download failed (attempt 2/3), retrying in 2s: HTTP 403 Forbidden.
#> [2026-07-05 13:43:10.712] [WARN ] HMDB family download failed: file download failed
#> ✖ x file download failed after retries Expected: Successful operation Received:
#>   HTTP 403 Forbidden. Reason: Tried 3 times with exponential backoff Fix:
#>   Possible solutions: 1. Check network connection 2. Verify server/service is
#>   available 3. Check authentication credentials 4. Try again later if service
#>   is down 5. Increase max_attempts if transient failures are common
#> [2026-07-05 13:43:10.713] [WARN ] HMDB download failed. Creating minimal placeholder SDF file.
#> [2026-07-05 13:43:10.733] [INFO ] > Starting: download_file [url=https://smpdb.ca/downloads/smpdb_structures.zip, destination=data/source/libraries/sop/smpdb/structures.zip]
#> [2026-07-05 13:43:11.266] [INFO ] [OK] Completed: download_file [size_bytes=23382536] (532ms)
#> [2026-07-05 13:43:11.267] [INFO ] > Starting: download_file [url=https://mimedb.org/system/downloads/2.0/mimedb.sdf.zip, destination=data/source/libraries/sop/mimedb/structures.zip]
#> [2026-07-05 13:43:11.393] [WARN ] file download failed (attempt 1/3), retrying in 1s: HTTP 403 Forbidden.
#> [2026-07-05 13:43:12.439] [WARN ] file download failed (attempt 2/3), retrying in 2s: HTTP 403 Forbidden.
#> [2026-07-05 13:43:14.535] [WARN ] HMDB family download failed: file download failed
#> ✖ x file download failed after retries Expected: Successful operation Received:
#>   HTTP 403 Forbidden. Reason: Tried 3 times with exponential backoff Fix:
#>   Possible solutions: 1. Check network connection 2. Verify server/service is
#>   available 3. Check authentication credentials 4. Try again later if service
#>   is down 5. Increase max_attempts if transient failures are common
#> [2026-07-05 13:43:14.536] [WARN ] HMDB download failed. Creating minimal placeholder SDF file.
#> [2026-07-05 13:43:14.540] [INFO ] > Starting: download_file [url=https://t3db.ca/system/downloads/current/structures.zip, destination=data/source/libraries/sop/t3db/structures.zip]
#> [2026-07-05 13:43:14.634] [WARN ] file download failed (attempt 1/3), retrying in 1s: HTTP 403 Forbidden.
#> [2026-07-05 13:43:15.678] [WARN ] file download failed (attempt 2/3), retrying in 2s: HTTP 403 Forbidden.
#> [2026-07-05 13:43:17.775] [WARN ] HMDB family download failed: file download failed
#> ✖ x file download failed after retries Expected: Successful operation Received:
#>   HTTP 403 Forbidden. Reason: Tried 3 times with exponential backoff Fix:
#>   Possible solutions: 1. Check network connection 2. Verify server/service is
#>   available 3. Check authentication credentials 4. Try again later if service
#>   is down 5. Increase max_attempts if transient failures are common
#> [2026-07-05 13:43:17.777] [WARN ] HMDB download failed. Creating minimal placeholder SDF file.
#> [2026-07-05 13:43:17.780] [INFO ] > Starting: download_file [url=https://bovinedb.ca/system/downloads/current/structures.zip, destination=data/source/libraries/sop/bovinedb/structures.zip]
#> Downloading  24% ■■■■■■■■                          3s
#> Downloading 100% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■   0s
#> [2026-07-05 13:43:19.496] [INFO ] [OK] Completed: download_file [size_bytes=19260214] (1.7s)
#> [2026-07-05 13:43:19.498] [INFO ] > Starting: download_file [url=https://www.ymdb.ca/system/downloads/current/ymdb.sdf.zip, destination=data/source/libraries/sop/ymdb/structures.zip]
#> [2026-07-05 13:43:19.847] [INFO ] [OK] Completed: download_file [size_bytes=1200611] (349ms)
#> [2026-07-05 13:43:19.852] [INFO ] > Starting: download_file [url=https://cannabisdatabase.ca/simple/download_compound_as_sdf, destination=data/source/libraries/sop/cannabisdatabase/compounds.sdf]
#> [2026-07-05 13:43:20.076] [WARN ] file download failed (attempt 1/3), retrying in 1s: Failed to perform HTTP request.
#> Caused by error in `curl::curl_fetch_disk()`:
#> ! SSL peer certificate or SSH remote key was not OK [cannabisdatabase.ca]:
#> SSL certificate problem: certificate has expired
#> [2026-07-05 13:43:21.252] [WARN ] file download failed (attempt 2/3), retrying in 2s: Failed to perform HTTP request.
#> Caused by error in `curl::curl_fetch_disk()`:
#> ! SSL peer certificate or SSH remote key was not OK [cannabisdatabase.ca]:
#> SSL certificate problem: certificate has expired
#> [2026-07-05 13:43:23.473] [WARN ] HMDB family download failed: file download failed
#> ✖ x file download failed after retries Expected: Successful operation Received:
#>   Failed to perform HTTP request. Caused by error in `curl::curl_fetch_disk()`:
#>   ! SSL peer certificate or SSH remote key was not OK [cannabisdatabase.ca]:
#>   SSL certificate problem: certificate has expired Reason: Tried 3 times with
#>   exponential backoff Fix: Possible solutions: 1. Check network connection 2.
#>   Verify server/service is available 3. Check authentication credentials 4. Try
#>   again later if service is down 5. Increase max_attempts if transient failures
#>   are common
#> [2026-07-05 13:43:23.474] [WARN ] HMDB download failed. Creating minimal placeholder SDF file.
#> [2026-07-05 13:43:23.477] [WARN ] Failed to create zip file, trying alternative method
#>  zip warning: missing end signature--probably not a zip file (did you
#>  zip warning: remember to use binary mode when you transferred it?)
#>  zip warning: (if you are trying to read a damaged archive try -F)
#> 
#> zip error: Zip file structure invalid (compounds.sdf)
#> ✔ lib_sop_hmd_fam_raw completed [21.4s, 62.64 MB]
#> + par_pre_par dispatched
#> ✔ par_pre_par completed [0ms, 1.69 kB]
#> + lib_spe_is_nor_pre_pos dispatched
#> [2026-07-05 13:43:23.689] [INFO ] > Starting: download_file [url=https://github.com/adafede/SpectRalLibRaRies/raw/main/data/interim/libraries/spectra/exp/isdbnormansusdat_14854025_pos.rds, destination=data/interim/libraries/spectra/is/isdbnormansusdat_14854025_pos.rds]
#> [2026-07-05 13:43:25.084] [INFO ] [OK] Completed: download_file [size_bytes=47223884] (1.4s)
#> ✔ lib_spe_is_nor_pre_pos completed [1.4s, 47.22 MB]
#> + lib_spe_is_nor_pre_sop dispatched
#> [2026-07-05 13:43:25.197] [INFO ] > Starting: download_file [url=https://github.com/Adafede/SpectRalLibRaRies/raw/main/data/interim/libraries/sop/isdbnormansusdat_14854025_prepared.tsv.gz, destination=data/interim/libraries/sop/isdbnormansusdat_14854025_prepared.tsv.gz]
#> [2026-07-05 13:43:25.795] [INFO ] [OK] Completed: download_file [size_bytes=1236540] (598ms)
#> ✔ lib_spe_is_nor_pre_sop completed [600ms, 1.24 MB]
#> + lib_spe_exp_gnp_pre_neg dispatched
#> [2026-07-05 13:43:25.894] [INFO ] > Starting: download_file [url=https://github.com/adafede/SpectRalLibRaRies/raw/main/data/interim/libraries/spectra/exp/gnps_11566051_neg.rds, destination=data/interim/libraries/spectra/exp/gnps_11566051_neg.rds]
#> Downloading  50% ■■■■■■■■■■■■■■■■                  1s
#> Downloading 100% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■   0s
#> [2026-07-05 13:43:28.212] [INFO ] [OK] Completed: download_file [size_bytes=91828026] (2.3s)
#> ✔ lib_spe_exp_gnp_pre_neg completed [2.3s, 91.83 MB]
#> + lib_xrefs dispatched
#> [2026-07-05 13:43:28.343] [INFO ] Fetching compound cross-references from Wikidata / QLever
#> [2026-07-05 13:43:28.344] [INFO ] > Starting: get_compounds_xrefs [(no parameters)]
#> [2026-07-05 13:43:31.184] [WARN ] QLever request failed (possibly transient upstream error). Writing empty xrefs file: compounds.tsv.gz
#> [2026-07-05 13:43:31.201] [INFO ] > Starting: export_output [file=data/interim/xrefs/compounds.tsv.gz, n_rows=0]
#> [2026-07-05 13:43:31.202] [INFO ] [OK] Completed: export_output [size_bytes=35] (1ms)
#> ✔ lib_xrefs completed [2.9s, 35 B]
#> + lib_spe_is_wik_pre_pos dispatched
#> [2026-07-05 13:43:31.319] [INFO ] > Starting: download_file [url=https://github.com/taxonomicallyinformedannotation/tima-isdb-pos/raw/main/wikidata_5607185_pos.rds, destination=data/interim/libraries/spectra/is/wikidata_5607185_pos.rds]
#> Downloading   5% ■■                               21s
#> Downloading  14% ■■■■■                            17s
#> Downloading  30% ■■■■■■■■■■                       13s
#> Downloading  47% ■■■■■■■■■■■■■■■                  10s
#> Downloading  63% ■■■■■■■■■■■■■■■■■■■■              7s
#> Downloading  80% ■■■■■■■■■■■■■■■■■■■■■■■■■         4s
#> Downloading  96% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■    1s
#> Downloading 100% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■   0s
#> [2026-07-05 13:43:50.413] [INFO ] [OK] Completed: download_file [size_bytes=1097022129] (19.1s)
#> ✔ lib_spe_is_wik_pre_pos completed [19.1s, 1.10 GB]
#> + lib_spe_is_wik_pre_sop dispatched
#> [2026-07-05 13:43:50.893] [INFO ] > Starting: download_file [url=https://github.com/taxonomicallyinformedannotation/tima-example-files/raw/main/wikidata_spectral_5607185_prepared.tsv.gz, destination=data/interim/libraries/sop/wikidata_5607185_prepared.tsv.gz]
#> [2026-07-05 13:43:53.420] [INFO ] [OK] Completed: download_file [size_bytes=15074639] (2.5s)
#> ✔ lib_spe_is_wik_pre_sop completed [2.5s, 15.07 MB]
#> + lib_sop_hmd dispatched
#> [2026-07-05 13:43:53.519] [INFO ] > Starting: download_file [url=https://hmdb.ca/system/downloads/current/structures.zip, destination=data/source/libraries/sop/hmdb/structures.zip]
#> [2026-07-05 13:43:53.648] [WARN ] file download failed (attempt 1/3), retrying in 1s: HTTP 403 Forbidden.
#> [2026-07-05 13:43:54.694] [WARN ] file download failed (attempt 2/3), retrying in 2s: HTTP 403 Forbidden.
#> [2026-07-05 13:43:56.786] [WARN ] HMDB download failed: file download failed
#> ✖ x file download failed after retries Expected: Successful operation Received:
#>   HTTP 403 Forbidden. Reason: Tried 3 times with exponential backoff Fix:
#>   Possible solutions: 1. Check network connection 2. Verify server/service is
#>   available 3. Check authentication credentials 4. Try again later if service
#>   is down 5. Increase max_attempts if transient failures are common
#> [2026-07-05 13:43:56.787] [WARN ] HMDB download failed. Creating minimal placeholder SDF file.
#> ✔ lib_sop_hmd completed [3.3s, 340 B]
#> + lib_spe_exp_env_pre_neg dispatched
#> [2026-07-05 13:43:56.886] [INFO ] > Starting: download_file [url=https://github.com/adafede/SpectRalLibRaRies/raw/main/data/interim/libraries/spectra/exp/enveda180_neg.rds, destination=data/interim/libraries/spectra/exp/enveda180_neg.rds]
#> Downloading  23% ■■■■■■■■                          3s
#> Downloading  33% ■■■■■■■■■■■                       3s
#> Downloading 100% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■   0s
#> [2026-07-05 13:44:01.156] [INFO ] [OK] Completed: download_file [size_bytes=215056852] (4.3s)
#> ✔ lib_spe_exp_env_pre_neg completed [4.3s, 215.06 MB]
#> + lib_spe_exp_mul_pre_neg dispatched
#> [2026-07-05 13:44:01.333] [INFO ] > Starting: download_file [url=https://github.com/adafede/SpectRalLibRaRies/raw/main/data/interim/libraries/spectra/exp/multims2_17417089_neg.rds, destination=data/interim/libraries/spectra/exp/multims2_17417089_neg.rds]
#> [2026-07-05 13:44:02.045] [INFO ] [OK] Completed: download_file [size_bytes=2326830] (713ms)
#> ✔ lib_spe_exp_mul_pre_neg completed [715ms, 2.33 MB]
#> + lib_spe_exp_gnp_pre_pos dispatched
#> [2026-07-05 13:44:02.140] [INFO ] > Starting: download_file [url=https://github.com/adafede/SpectRalLibRaRies/raw/main/data/interim/libraries/spectra/exp/gnps_11566051_pos.rds, destination=data/interim/libraries/spectra/exp/gnps_11566051_pos.rds]
#> Downloading  14% ■■■■■                             6s
#> Downloading  33% ■■■■■■■■■■■                       4s
#> Downloading  85% ■■■■■■■■■■■■■■■■■■■■■■■■■■        1s
#> Downloading 100% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■   0s
#> [2026-07-05 13:44:08.602] [INFO ] [OK] Completed: download_file [size_bytes=341237933] (6.5s)
#> ✔ lib_spe_exp_gnp_pre_pos completed [6.5s, 341.24 MB]
#> + lib_spe_exp_mb_pre_pos dispatched
#> [2026-07-05 13:44:08.819] [INFO ] > Starting: download_file [url=https://github.com/adafede/SpectRalLibRaRies/raw/main/data/interim/libraries/spectra/exp/massbank_202510_pos.rds, destination=data/interim/libraries/spectra/exp/massbank_202510_pos.rds]
#> [2026-07-05 13:44:09.534] [INFO ] [OK] Completed: download_file [size_bytes=17559329] (714ms)
#> ✔ lib_spe_exp_mb_pre_pos completed [716ms, 17.56 MB]
#> + lib_spe_exp_gnp_pre_sop dispatched
#> [2026-07-05 13:44:09.636] [INFO ] > Starting: download_file [url=https://github.com/Adafede/SpectRalLibRaRies/raw/main/data/interim/libraries/sop/gnps_11566051_prepared.tsv.gz, destination=data/interim/libraries/sop/gnps_11566051_prepared.tsv.gz]
#> [2026-07-05 13:44:10.419] [INFO ] [OK] Completed: download_file [size_bytes=493387] (782ms)
#> ✔ lib_spe_exp_gnp_pre_sop completed [784ms, 493.39 kB]
#> + lib_spe_exp_env_pre_sop dispatched
#> [2026-07-05 13:44:10.510] [INFO ] > Starting: download_file [url=https://github.com/Adafede/SpectRalLibRaRies/raw/main/data/interim/libraries/sop/enveda180_prepared.tsv.gz, destination=data/interim/libraries/sop/enveda180_prepared.tsv.gz]
#> [2026-07-05 13:44:11.742] [INFO ] [OK] Completed: download_file [size_bytes=2876546] (1.2s)
#> ✔ lib_spe_exp_env_pre_sop completed [1.2s, 2.88 MB]
#> + lib_spe_exp_mb_pre_sop dispatched
#> [2026-07-05 13:44:11.835] [INFO ] > Starting: download_file [url=https://github.com/Adafede/SpectRalLibRaRies/raw/main/data/interim/libraries/sop/massbank_202510_prepared.tsv.gz, destination=data/interim/libraries/sop/massbank_202510_prepared.tsv.gz]
#> [2026-07-05 13:44:12.229] [INFO ] [OK] Completed: download_file [size_bytes=158982] (394ms)
#> ✔ lib_spe_exp_mb_pre_sop completed [396ms, 158.98 kB]
#> + par_fin_par2 dispatched
#> ✔ par_fin_par2 completed [2ms, 4.30 kB]
#> + lib_sop_hmd_fam_pre dispatched
#> [2026-07-05 13:44:12.423] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=CSFMETABOLOME, input=data/source/libraries/sop/csfmetabolome/structures.zip, tag=csf]
#> [2026-07-05 13:44:12.720] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/csfmetabolome_prepared.tsv.gz, n_rows=445]
#> [2026-07-05 13:44:12.724] [INFO ] [OK] Completed: export_output [size_bytes=19485] (4ms)
#> [2026-07-05 13:44:12.725] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=445] (303ms)
#> [2026-07-05 13:44:12.726] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=FECALMETABOLOME, input=data/source/libraries/sop/fecalmetabolome/structures.zip, tag=fecal]
#> [2026-07-05 13:44:14.490] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/fecalmetabolome_prepared.tsv.gz, n_rows=6810]
#> [2026-07-05 13:44:14.520] [INFO ] [OK] Completed: export_output [size_bytes=237060] (30ms)
#> [2026-07-05 13:44:14.521] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=6810] (1.8s)
#> [2026-07-05 13:44:14.522] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=SALIVAMETABOLOME, input=data/source/libraries/sop/salivametabolome/structures.zip, tag=saliva]
#> [2026-07-05 13:44:14.761] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/salivametabolome_prepared.tsv.gz, n_rows=1245]
#> [2026-07-05 13:44:14.768] [INFO ] [OK] Completed: export_output [size_bytes=47303] (7ms)
#> [2026-07-05 13:44:14.770] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=1245] (247ms)
#> [2026-07-05 13:44:14.771] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=SERUMMETABOLOME, input=data/source/libraries/sop/serummetabolome/structures.zip, tag=serum]
#> [2026-07-05 13:44:22.848] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/serummetabolome_prepared.tsv.gz, n_rows=25411]
#> [2026-07-05 13:44:22.916] [INFO ] [OK] Completed: export_output [size_bytes=812712] (68ms)
#> [2026-07-05 13:44:22.917] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=25411] (8.1s)
#> [2026-07-05 13:44:22.919] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=SWEATMETABOLOME, input=data/source/libraries/sop/sweatmetabolome/structures.zip, tag=sweat]
#> [2026-07-05 13:44:22.971] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/sweatmetabolome_prepared.tsv.gz, n_rows=89]
#> [2026-07-05 13:44:22.973] [INFO ] [OK] Completed: export_output [size_bytes=4110] (2ms)
#> [2026-07-05 13:44:22.974] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=89] (56ms)
#> [2026-07-05 13:44:22.976] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=URINEMETABOLOME, input=data/source/libraries/sop/urinemetabolome/structures.zip, tag=urine]
#> [2026-07-05 13:44:23.876] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/urinemetabolome_prepared.tsv.gz, n_rows=4364]
#> [2026-07-05 13:44:23.893] [INFO ] [OK] Completed: export_output [size_bytes=209222] (16ms)
#> [2026-07-05 13:44:23.894] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=4364] (918ms)
#> [2026-07-05 13:44:23.895] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=MCDB, input=data/source/libraries/sop/mcdb/structures.zip, tag=milk]
#> [2026-07-05 13:44:23.922] [WARN ] Empty dataframe in select_sop_columns
#> [2026-07-05 13:44:23.927] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/mcdb_prepared.tsv.gz, n_rows=0]
#> [2026-07-05 13:44:23.929] [INFO ] [OK] Completed: export_output [size_bytes=256] (1ms)
#> [2026-07-05 13:44:23.930] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=0] (35ms)
#> [2026-07-05 13:44:23.931] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=SMPDB, input=data/source/libraries/sop/smpdb/structures.zip, tag=pathway]
#> [2026-07-05 13:44:36.638] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/smpdb_prepared.tsv.gz, n_rows=49817]
#> [2026-07-05 13:44:36.755] [INFO ] [OK] Completed: export_output [size_bytes=1443937] (118ms)
#> [2026-07-05 13:44:36.757] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=49817] (12.8s)
#> [2026-07-05 13:44:36.758] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=MIMEDB, input=data/source/libraries/sop/mimedb/structures.zip, tag=microbiome]
#> [2026-07-05 13:44:36.786] [WARN ] Empty dataframe in select_sop_columns
#> [2026-07-05 13:44:36.791] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/mimedb_prepared.tsv.gz, n_rows=0]
#> [2026-07-05 13:44:36.792] [INFO ] [OK] Completed: export_output [size_bytes=256] (1ms)
#> [2026-07-05 13:44:36.793] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=0] (35ms)
#> [2026-07-05 13:44:36.794] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=T3DB, input=data/source/libraries/sop/t3db/structures.zip, tag=toxin]
#> [2026-07-05 13:44:36.821] [WARN ] Empty dataframe in select_sop_columns
#> [2026-07-05 13:44:36.867] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/t3db_prepared.tsv.gz, n_rows=0]
#> [2026-07-05 13:44:36.868] [INFO ] [OK] Completed: export_output [size_bytes=256] (1ms)
#> [2026-07-05 13:44:36.869] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=0] (75ms)
#> [2026-07-05 13:44:36.870] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=BOVINEDB, input=data/source/libraries/sop/bovinedb/structures.zip, tag=NA]
#> [2026-07-05 13:44:49.840] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/bovinedb_prepared.tsv.gz, n_rows=51684]
#> [2026-07-05 13:44:49.966] [INFO ] [OK] Completed: export_output [size_bytes=1568975] (126ms)
#> [2026-07-05 13:44:49.967] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=51684] (13.1s)
#> [2026-07-05 13:44:49.969] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=YMDB, input=data/source/libraries/sop/ymdb/structures.zip, tag=NA]
#> [2026-07-05 13:44:50.346] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/ymdb_prepared.tsv.gz, n_rows=2024]
#> [2026-07-05 13:44:50.358] [INFO ] [OK] Completed: export_output [size_bytes=83615] (11ms)
#> [2026-07-05 13:44:50.359] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=2024] (390ms)
#> [2026-07-05 13:44:50.360] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=CANNABISDATABASE, input=data/source/libraries/sop/cannabisdatabase/compounds.sdf, tag=NA]
#> [2026-07-05 13:44:50.387] [WARN ] Empty dataframe in select_sop_columns
#> [2026-07-05 13:44:50.392] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/cannabisdatabase_prepared.tsv.gz, n_rows=0]
#> [2026-07-05 13:44:50.394] [INFO ] [OK] Completed: export_output [size_bytes=256] (2ms)
#> [2026-07-05 13:44:50.395] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=0] (35ms)
#> ✔ lib_sop_hmd_fam_pre completed [38s, 4.43 MB]
#> + par_fin_par dispatched
#> ✔ par_fin_par completed [1ms, 341 B]
#> + par_usr_wei_ann dispatched
#> ✔ par_usr_wei_ann completed [1.7s, 1.80 kB]
#> + par_usr_pre_lib_sop_mer dispatched
#> ✔ par_usr_pre_lib_sop_mer completed [1.6s, 3.10 kB]
#> + par_usr_ann_spe dispatched
#> ✔ par_usr_ann_spe completed [1.6s, 1.46 kB]
#> + par_usr_pre_ann_spe dispatched
#> ✔ par_usr_pre_ann_spe completed [1.6s, 656 B]
#> + par_usr_cre_edg_spe dispatched
#> ✔ par_usr_cre_edg_spe completed [1.6s, 425 B]
#> + par_usr_ann_mas dispatched
#> ✔ par_usr_ann_mas completed [1.6s, 4.68 kB]
#> + par_usr_pre_lib_sop_big dispatched
#> ✔ par_usr_pre_lib_sop_big completed [1.6s, 107 B]
#> + par_usr_cre_com dispatched
#> ✔ par_usr_cre_com completed [1.6s, 200 B]
#> + par_usr_pre_lib_rt dispatched
#> ✔ par_usr_pre_lib_rt completed [1.7s, 487 B]
#> + par_usr_pre_ann_gnp dispatched
#> ✔ par_usr_pre_ann_gnp completed [1.6s, 633 B]
#> + par_usr_pre_lib_sop_hmd dispatched
#> ✔ par_usr_pre_lib_sop_hmd completed [1.6s, 178 B]
#> + par_usr_pre_lib_sop_clo dispatched
#> ✔ par_usr_pre_lib_sop_clo completed [1.6s, 267 B]
#> + par_usr_pre_ann_mzm dispatched
#> ✔ par_usr_pre_ann_mzm completed [1.6s, 635 B]
#> + par_usr_pre_fea_com dispatched
#> ✔ par_usr_pre_fea_com completed [1.6s, 200 B]
#> + par_usr_pre_lib_sop_lot dispatched
#> ✔ par_usr_pre_lib_sop_lot completed [1.6s, 174 B]
#> + par_usr_pre_ann_mzt dispatched
#> ✔ par_usr_pre_ann_mzt completed [1.6s, 546 B]
#> + par_usr_pre_lib_spe dispatched
#> ✔ par_usr_pre_lib_spe completed [1.6s, 322 B]
#> + par_usr_pre_ann_sir dispatched
#> ✔ par_usr_pre_ann_sir completed [1.6s, 859 B]
#> + par_usr_pre_tax dispatched
#> ✔ par_usr_pre_tax completed [1.6s, 438 B]
#> + par_usr_pre_lib_sop_pub dispatched
#> ✔ par_usr_pre_lib_sop_pub completed [1.6s, 195 B]
#> + par_usr_pre_fea_edg dispatched
#> ✔ par_usr_pre_fea_edg completed [1.6s, 328 B]
#> + par_usr_pre_fea_tab dispatched
#> ✔ par_usr_pre_fea_tab completed [1.6s, 274 B]
#> + par_usr_pre_lib_sop_ecm dispatched
#> ✔ par_usr_pre_lib_sop_ecm completed [1.6s, 176 B]
#> + par_usr_fil_ann dispatched
#> ✔ par_usr_fil_ann completed [1.6s, 808 B]
#> + par_usr_exp_mzt dispatched
#> ✔ par_usr_exp_mzt completed [1.6s, 425 B]
#> + par_wei_ann dispatched
#> ✔ par_wei_ann completed [3ms, 961 B]
#> + par_pre_lib_sop_mer dispatched
#> ✔ par_pre_lib_sop_mer completed [2ms, 854 B]
#> + par_ann_spe dispatched
#> ✔ par_ann_spe completed [2ms, 583 B]
#> + par_pre_ann_spe dispatched
#> ✔ par_pre_ann_spe completed [1ms, 323 B]
#> + par_cre_edg_spe dispatched
#> ✔ par_cre_edg_spe completed [2ms, 373 B]
#> + par_ann_mas dispatched
#> ✔ par_ann_mas completed [3ms, 1.96 kB]
#> + par_pre_lib_sop_big dispatched
#> ✔ par_pre_lib_sop_big completed [1ms, 155 B]
#> + par_cre_com dispatched
#> ✔ par_cre_com completed [1ms, 191 B]
#> + par_pre_lib_rt dispatched
#> ✔ par_pre_lib_rt completed [1ms, 376 B]
#> + par_pre_ann_gnp dispatched
#> ✔ par_pre_ann_gnp completed [1ms, 325 B]
#> + par_pre_lib_sop_hmd dispatched
#> ✔ par_pre_lib_sop_hmd completed [1ms, 191 B]
#> + par_pre_lib_sop_clo dispatched
#> ✔ par_pre_lib_sop_clo completed [1ms, 232 B]
#> + par_pre_ann_mzm dispatched
#> ✔ par_pre_ann_mzm completed [1ms, 329 B]
#> + par_pre_fea_com dispatched
#> ✔ par_pre_fea_com completed [1ms, 184 B]
#> + par_pre_lib_sop_lot dispatched
#> ✔ par_pre_lib_sop_lot completed [1ms, 186 B]
#> + par_pre_ann_mzt dispatched
#> ✔ par_pre_ann_mzt completed [2ms, 313 B]
#> + par_pre_lib_spe dispatched
#> ✔ par_pre_lib_spe completed [1ms, 406 B]
#> + par_pre_ann_sir dispatched
#> ✔ par_pre_ann_sir completed [2ms, 435 B]
#> + par_pre_tax dispatched
#> ✔ par_pre_tax completed [1ms, 330 B]
#> + par_pre_lib_sop_pub dispatched
#> ✔ par_pre_lib_sop_pub completed [1ms, 193 B]
#> + par_pre_fea_edg dispatched
#> ✔ par_pre_fea_edg completed [2ms, 243 B]
#> + par_pre_fea_tab dispatched
#> ✔ par_pre_fea_tab completed [1ms, 279 B]
#> + par_pre_lib_sop_ecm dispatched
#> ✔ par_pre_lib_sop_ecm completed [1ms, 191 B]
#> + par_fil_ann dispatched
#> ✔ par_fil_ann completed [1ms, 373 B]
#> + par_exp_mzt dispatched
#> ✔ par_exp_mzt completed [1ms, 270 B]
#> + lib_sop_mer_npc_cache dispatched
#> [2026-07-05 13:45:36.233] [INFO ] > Starting: download_file [url=https://github.com/Adafede/marimo/raw/refs/heads/main/apps/public/npclassifier/npclassifier_cache.csv, destination=data/interim/libraries/sop/merged/structures/taxonomies/npc.tsv.gz]
#> Downloading  29% ■■■■■■■■■■                        2s
#> Downloading 100% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■   0s
#> [2026-07-05 13:45:39.984] [INFO ] [OK] Completed: download_file [size_bytes=201875293] (3.8s)
#> ✔ lib_sop_mer_npc_cache completed [3.8s, 201.88 MB]
#> + lib_sop_mer_cla_cache dispatched
#> [2026-07-05 13:45:40.172] [INFO ] > Starting: download_file [url=https://github.com/Adafede/marimo/raw/refs/heads/main/apps/public/classyfire/classyfire_cache.csv, destination=data/interim/libraries/sop/merged/structures/taxonomies/classyfire_cache.csv]
#> Downloading  35% ■■■■■■■■■■■                       2s
#> Downloading 100% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■   0s
#> [2026-07-05 13:45:43.314] [INFO ] [OK] Completed: download_file [size_bytes=143087266] (3.1s)
#> ✔ lib_sop_mer_cla_cache completed [3.1s, 143.09 MB]
#> + lib_sop_mer_str_pro dispatched
#> [2026-07-05 13:45:43.479] [INFO ] > Starting: download_file [url=https://github.com/taxonomicallyinformedannotation/tima-example-files/raw/main/processed.csv.gz, destination=data/interim/libraries/sop/merged/structures/processed.csv.gz]
#> [2026-07-05 13:45:45.534] [INFO ] [OK] Completed: download_file [size_bytes=96419862] (2.1s)
#> ✔ lib_sop_mer_str_pro completed [2.1s, 96.42 MB]
#> + input_spectra dispatched
#> ✔ input_spectra completed [0ms, 7.77 MB]
#> + lib_sop_big_pre dispatched
#> [2026-07-05 13:45:45.802] [INFO ] Preparing BiGG structure-organism pairs
#> [2026-07-05 13:46:02.828] [INFO ] > Starting: process_smiles [n_structures=0]
#> [2026-07-05 13:46:02.852] [ERROR] Something went wrong with BiGG processing: column not found in data frame
#> ✖ SMILES
#> [2026-07-05 13:46:02.854] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/bigg_prepared.tsv.gz, n_rows=1]
#> [2026-07-05 13:46:02.855] [INFO ] [OK] Completed: export_output [size_bytes=277] (1ms)
#> ✔ lib_sop_big_pre completed [17.1s, 277 B]
#> + lib_rt dispatched
#> [2026-07-05 13:46:03.025] [INFO ] Preparing retention time libraries
#> [2026-07-05 13:46:03.037] [WARN ] No retention time library found, returning empty retention time and sop tables.
#> [2026-07-05 13:46:03.082] [INFO ] Exporting parameters to: data/interim/params/260705_134603_prepare_libraries_rt.yaml
#> [2026-07-05 13:46:03.084] [INFO ] > Starting: export_output [file=data/interim/libraries/rt/prepared.tsv.gz, n_rows=1]
#> [2026-07-05 13:46:03.085] [INFO ] [OK] Completed: export_output [size_bytes=86] (2ms)
#> [2026-07-05 13:46:03.089] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/rt_prepared.tsv.gz, n_rows=1]
#> [2026-07-05 13:46:03.090] [INFO ] [OK] Completed: export_output [size_bytes=105] (2ms)
#> ✔ lib_rt completed [68ms, 191 B]
#> + lib_sop_hmd_pre dispatched
#> [2026-07-05 13:46:03.255] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=HMDB, input=data/source/libraries/sop/hmdb/structures.zip, tag=NA]
#> [2026-07-05 13:46:03.283] [WARN ] Empty dataframe in select_sop_columns
#> [2026-07-05 13:46:03.288] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/hmdb_prepared.tsv.gz, n_rows=0]
#> [2026-07-05 13:46:03.289] [INFO ] [OK] Completed: export_output [size_bytes=256] (1ms)
#> [2026-07-05 13:46:03.290] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=0] (35ms)
#> ✔ lib_sop_hmd_pre completed [37ms, 256 B]
#> + lib_sop_clo_pre dispatched
#> [2026-07-05 13:46:03.451] [INFO ] Preparing closed structure-organism pairs library
#> [2026-07-05 13:46:03.452] [WARN ] Closed resource not accessible at: ~/Git/lotus-processor/data/processed/240412_closed_metadata.csv.gz. Returning empty template instead.
#> [2026-07-05 13:46:03.468] [INFO ] Exporting parameters to: data/interim/params/260705_134603_prepare_libraries_sop_closed.yaml
#> [2026-07-05 13:46:03.470] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/closed_prepared.tsv.gz, n_rows=1]
#> [2026-07-05 13:46:03.471] [INFO ] [OK] Completed: export_output [size_bytes=277] (1ms)
#> ✔ lib_sop_clo_pre completed [22ms, 277 B]
#> + lib_sop_lot_pre dispatched
#> [2026-07-05 13:46:03.633] [INFO ] > Starting: prepare_libraries_sop_lotus [input=data/source/libraries/sop/lotus.csv.gz]
#> [2026-07-05 13:46:11.424] [INFO ] [OK] Completed: prepare_libraries_sop_lotus [n_pairs=677545] (7.8s)
#> [2026-07-05 13:46:11.426] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/lotus_prepared.tsv.gz, n_rows=677545]
#> [2026-07-05 13:46:14.901] [INFO ] [OK] Completed: export_output [size_bytes=49541873] (3.5s)
#> ✔ lib_sop_lot_pre completed [11.3s, 49.54 MB]
#> + lib_spe_exp_int_pre dispatched
#> [2026-07-05 13:46:15.207] [INFO ] > Starting: prepare_libraries_spectra [library_name=internal, n_input_files=1]
#> [2026-07-05 13:46:15.213] [WARN ] Input file(s) not found; creating empty library template
#> [2026-07-05 13:46:16.583] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/internal_prepared.tsv.gz, n_rows=1]
#> [2026-07-05 13:46:16.585] [INFO ] [OK] Completed: export_output [size_bytes=79] (2ms)
#> [2026-07-05 13:46:16.660] [INFO ] Exporting parameters to: data/interim/params/260705_134616_prepare_libraries_spectra.yaml
#> [2026-07-05 13:46:16.662] [INFO ] [OK] Completed: prepare_libraries_spectra [n_structures=1, n_spectra_total=2, files_exported=3] (1.5s)
#> ✔ lib_spe_exp_int_pre completed [1.5s, 1.28 kB]
#> + lib_sop_pub_pre dispatched
#> [2026-07-05 13:46:17.001] [INFO ] > Starting: prepare_libraries_sop_pubchemlite [input=data/source/libraries/sop/pubchemlite.csv]
#> [2026-07-05 13:46:23.586] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/pubchemlite_prepared.tsv.gz, n_rows=566689]
#> [2026-07-05 13:46:25.387] [INFO ] [OK] Completed: export_output [size_bytes=29385634] (1.8s)
#> [2026-07-05 13:46:25.389] [INFO ] [OK] Completed: prepare_libraries_sop_pubchemlite [n_pairs=566689] (8.4s)
#> ✔ lib_sop_pub_pre completed [8.4s, 29.39 MB]
#> + input_features dispatched
#> ✔ input_features completed [0ms, 451.55 kB]
#> + lib_sop_ecm_pre dispatched
#> [2026-07-05 13:46:26.636] [INFO ] Preparing ECMDB structure-organism pairs
#> [2026-07-05 13:46:27.346] [INFO ] Exporting parameters to: data/interim/params/260705_134627_prepare_libraries_sop_ecmdb.yaml
#> [2026-07-05 13:46:27.348] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/ecmdb_prepared.tsv.gz, n_rows=3760]
#> [2026-07-05 13:46:27.363] [INFO ] [OK] Completed: export_output [size_bytes=165776] (15ms)
#> ✔ lib_sop_ecm_pre completed [728ms, 165.78 kB]
#> + fea_edg_spe dispatched
#> [2026-07-05 13:46:27.673] [INFO ] > Starting: create_edges_spectra [method=gnps, n_input_files=1]
#> [2026-07-05 13:46:27.706] [INFO ] Creating spectral similarity network edges
#> [2026-07-05 13:46:27.708] [INFO ] Importing spectra from: data/source/example_spectra.mgf
#> [2026-07-05 13:46:27.734] [INFO ] Reading MGF file (7.41 MB) with optimized parser: data/source/example_spectra.mgf
#> [2026-07-05 13:46:29.624] [INFO ] Processed 10000 spectra...
#> [2026-07-05 13:46:30.928] [INFO ] Total spectra read: 16282
#> [2026-07-05 13:46:37.195] [INFO ] Loaded 16282 spectra from file
#> [2026-07-05 13:46:37.218] [INFO ] Combining replicate spectra by FEATURE_ID
#> [2026-07-05 13:46:39.417] [INFO ] Combined replicates: 12195 -> 4087 spectra
#> [2026-07-05 13:46:39.450] [INFO ] Sanitizing 4087 spectra (cutoff: 0)
#> [2026-07-05 13:46:40.514] [INFO ] Sanitization complete: 3660/4087 spectra retained (89.6%, 427 removed)
#> [2026-07-05 13:46:40.515] [INFO ] Import complete: 3660 spectra ready for analysis
#> [2026-07-05 13:46:40.516] [INFO ] ======================================
#> [2026-07-05 13:46:40.518] [INFO ] Take yourself a break, you deserve it.
#> [2026-07-05 13:46:40.519] [INFO ] ======================================
#> [2026-07-05 13:46:40.562] [INFO ] > Starting: create_edges [n_spectra=3660, method=gnps, threshold=NULL, min_peaks=NULL]
#> [2026-07-05 13:46:53.697] [INFO ] Processed 500 / 3659 queries
#> [2026-07-05 13:47:04.658] [INFO ] Processed 1000 / 3659 queries
#> [2026-07-05 13:47:13.664] [INFO ] Processed 1500 / 3659 queries
#> [2026-07-05 13:47:21.060] [INFO ] Processed 2000 / 3659 queries
#> [2026-07-05 13:47:26.415] [INFO ] Processed 2500 / 3659 queries
#> [2026-07-05 13:47:29.864] [INFO ] Processed 3000 / 3659 queries
#> [2026-07-05 13:47:31.433] [INFO ] Processed 3500 / 3659 queries
#> [2026-07-05 13:47:31.530] [INFO ] Here is the distribution of edge similarity scores (0.1 bins):
#> [2026-07-05 13:47:31.532] [INFO ] 
#>        bin       N    Pct
#>    [0,0.1] 4838216 72.26%
#>  (0.1,0.2] 1077987 16.10%
#>  (0.2,0.3]  418929  6.26%
#>  (0.3,0.4]  188260  2.81%
#>  (0.4,0.5]   88549  1.32%
#>  (0.5,0.6]   42889  0.64%
#>  (0.6,0.7]   21379  0.32%
#>  (0.7,0.8]   11100  0.17%
#>  (0.8,0.9]    6098  0.09%
#>    (0.9,1]    2563  0.04%
#> [2026-07-05 13:47:31.644] [INFO ] [OK] Completed: create_edges [n_edges=6695970, n_comparisons=6695970, pass_rate=100.0%] (51.1s)
#> [2026-07-05 13:48:40.533] [INFO ] Selected community partition at resolution 0.025 (modularity 0.167)
#> [2026-07-05 13:48:42.072] [INFO ] Found 415 communities using weighted Louvain/Leiden clustering
#> [2026-07-05 13:48:42.322] [INFO ] > Starting: export_output [file=data/interim/features/example_edgesSpectra.tsv, n_rows=44188]
#> [2026-07-05 13:48:42.332] [INFO ] [OK] Completed: export_output [size_bytes=2234112] (10ms)
#> [2026-07-05 13:48:42.333] [INFO ] Edges written to: data/interim/features/example_edgesSpectra.tsv
#> [2026-07-05 13:48:42.336] [INFO ] [OK] Completed: create_edges_spectra [n_edges=44188, n_features=3660] (2m 15s)
#> ✔ fea_edg_spe completed [2m 14.7s, 2.23 MB]
#> + lib_rt_sop dispatched
#> ✔ lib_rt_sop completed [0ms, 105 B]
#> + lib_rt_rts dispatched
#> ✔ lib_rt_rts completed [0ms, 86 B]
#> + lib_spe_exp_int_pre_neg dispatched
#> ✔ lib_spe_exp_int_pre_neg completed [0ms, 600 B]
#> + lib_spe_exp_int_pre_pos dispatched
#> ✔ lib_spe_exp_int_pre_pos completed [0ms, 600 B]
#> + lib_spe_exp_int_pre_sop dispatched
#> ✔ lib_spe_exp_int_pre_sop completed [1ms, 79 B]
#> + fea_pre dispatched
#> [2026-07-05 13:48:44.429] [INFO ] > Starting: prepare_features_tables [input=data/source/example_features.csv, candidates=1]
#> [2026-07-05 13:48:44.555] [INFO ] Prepared 5328 feature-sample pairs
#> [2026-07-05 13:48:44.557] [INFO ] [OK] Completed: prepare_features_tables [n_features=5328] (128ms)
#> [2026-07-05 13:48:44.583] [INFO ] Exporting parameters to: data/interim/params/260705_134844_prepare_features_tables.yaml
#> [2026-07-05 13:48:44.585] [INFO ] > Starting: export_output [file=data/interim/features/example_features.tsv.gz, n_rows=5328]
#> [2026-07-05 13:48:44.600] [INFO ] [OK] Completed: export_output [size_bytes=95629] (14ms)
#> ✔ fea_pre completed [172ms, 95.63 kB]
#> + lib_sop_mer dispatched
#> [2026-07-05 13:48:44.917] [INFO ] > Starting: prepare_libraries_sop_merged [n_libraries=28, filter_enabled=FALSE, filter_level=none]
#> [2026-07-05 13:48:56.257] [INFO ] Splitting SOP library into standardized components
#> [2026-07-05 13:48:59.074] [INFO ] > Starting: process_smiles [n_structures=2202502]
#> [2026-07-05 13:48:59.075] [INFO ] Processing SMILES with RDKit
#> Downloading uv...Done!
#> Downloading cpython-3.12.13-linux-x86_64-gnu (download) (32.6MiB)
#>  Downloaded cpython-3.12.13-linux-x86_64-gnu (download)
#> Downloading numpy (15.9MiB)
#> Downloading pillow (6.6MiB)
#> Downloading rdkit (35.5MiB)
#>  Downloaded pillow
#>  Downloaded numpy
#>  Downloaded rdkit
#> Installed 5 packages in 24ms
#> [2026-07-05 13:49:19.774] [INFO ] Processing 21 new SMILES with RDKit
#> [2026-07-05 13:49:19.776] [INFO ] Starting SMILES processing pipeline
#> [2026-07-05 13:49:19.776] [INFO ] Input: /tmp/RtmpvOI4Fo/file27accbbbda7.smi
#> [2026-07-05 13:49:19.776] [INFO ] Output: /tmp/RtmpvOI4Fo/file27ac3d254908.csv.gz
#> [2026-07-05 13:49:19.776] [INFO ] Input file validated: /tmp/RtmpvOI4Fo/file27accbbbda7.smi
#> [2026-07-05 13:49:19.776] [INFO ] Output file validated: /tmp/RtmpvOI4Fo/file27ac3d254908.csv.gz
#> [2026-07-05 13:49:19.776] [INFO ] Processing parameters: workers=8, batch_size=1000, progress_interval=10000
#> [2026-07-05 13:49:19.776] [INFO ] SMILES supplier initialized
#> [13:49:19] Explicit valence for atom # 1 N, 3, is greater than permitted
#> [13:49:19] ERROR: Could not sanitize molecule on line 1
#> [13:49:19] ERROR: Explicit valence for atom # 1 N, 3, is greater than permitted
#> [13:49:19] Explicit valence for atom # 1 Cl, 7, is greater than permitted
#> [13:49:19] ERROR: Could not sanitize molecule on line 4
#> [13:49:19] ERROR: Explicit valence for atom # 1 Cl, 7, is greater than permitted
#> [13:49:19] Explicit valence for atom # 1 Br, 3, is greater than permitted
#> [13:49:19] ERROR: Could not sanitize molecule on line 5
#> [13:49:19] ERROR: Explicit valence for atom # 1 Br, 3, is greater than permitted
#> [13:49:19] Explicit valence for atom # 1 Br, 5, is greater than permitted
#> [13:49:19] ERROR: Could not sanitize molecule on line 6
#> [13:49:19] ERROR: Explicit valence for atom # 1 Br, 5, is greater than permitted
#> [13:49:19] Explicit valence for atom # 1 Cl, 3, is greater than permitted
#> [13:49:19] ERROR: Could not sanitize molecule on line 7
#> [13:49:19] ERROR: Explicit valence for atom # 1 Cl, 3, is greater than permitted
#> [13:49:19] Explicit valence for atom # 1 Cl, 5, is greater than permitted
#> [13:49:19] ERROR: Could not sanitize molecule on line 8
#> [13:49:19] ERROR: Explicit valence for atom # 1 Cl, 5, is greater than permitted
#> [13:49:19] Explicit valence for atom # 1 I, 7, is greater than permitted
#> [13:49:19] ERROR: Could not sanitize molecule on line 9
#> [13:49:19] ERROR: Explicit valence for atom # 1 I, 7, is greater than permitted
#> [13:49:19] Explicit valence for atom # 1 Cl, 3, is greater than permitted
#> [13:49:19] ERROR: Could not sanitize molecule on line 10
#> [13:49:19] ERROR: Explicit valence for atom # 1 Cl, 3, is greater than permitted
#> [13:49:19] Explicit valence for atom # 8 Br, 2, is greater than permitted
#> [13:49:19] ERROR: Could not sanitize molecule on line 13
#> [13:49:19] ERROR: Explicit valence for atom # 8 Br, 2, is greater than permitted
#> [13:49:19] Explicit valence for atom # 9 Cl, 2, is greater than permitted
#> [13:49:19] ERROR: Could not sanitize molecule on line 14
#> [13:49:19] ERROR: Explicit valence for atom # 9 Cl, 2, is greater than permitted
#> [13:49:19] Explicit valence for atom # 6 C, 5, is greater than permitted
#> [13:49:19] ERROR: Could not sanitize molecule on line 16
#> [13:49:19] ERROR: Explicit valence for atom # 6 C, 5, is greater than permitted
#> [13:49:19] Explicit valence for atom # 31 O, 3, is greater than permitted
#> [13:49:19] ERROR: Could not sanitize molecule on line 17
#> [13:49:19] ERROR: Explicit valence for atom # 31 O, 3, is greater than permitted
#> [13:49:19] Explicit valence for atom # 4 N, 4, is greater than permitted
#> [13:49:19] ERROR: Could not sanitize molecule on line 18
#> [13:49:19] ERROR: Explicit valence for atom # 4 N, 4, is greater than permitted
#> [13:49:19] Explicit valence for atom # 26 N, 4, is greater than permitted
#> [13:49:19] ERROR: Could not sanitize molecule on line 19
#> [13:49:19] ERROR: Explicit valence for atom # 26 N, 4, is greater than permitted
#> [13:49:19] Explicit valence for atom # 0 P, 11, is greater than permitted
#> [13:49:19] ERROR: Could not sanitize molecule on line 20
#> [13:49:19] ERROR: Explicit valence for atom # 0 P, 11, is greater than permitted
#> [13:49:19] Can't kekulize mol.  Unkekulized atoms: 6 7 8 9 10 11 12 13 14
#> [13:49:19] ERROR: Could not sanitize molecule on line 21
#> [13:49:19] ERROR: Can't kekulize mol.  Unkekulized atoms: 6 7 8 9 10 11 12 13 14
#> [13:49:19] Explicit valence for atom # 56 P, 7, is greater than permitted
#> [2026-07-05 13:49:19.780] [WARNING] Failed to process SMILES 'CC(C)=CCCC(C)=CCCC(C)=CCCC(C)=CCCC(C)=CCCC(C)=CCCC(C)=CCCC(C)=CCCC(C)=CCCC(C)=CCCC(C)=CCO[P-]([O])(=O)=O': Explicit valence for atom # 56 P, 7, is greater than permitted
#> [13:49:19] Explicit valence for atom # 4 P, 7, is greater than permitted
#> [2026-07-05 13:49:19.780] [WARNING] Failed to process SMILES '[H][C@](O)(CO[P-]([O])(=O)=O)C=O': Explicit valence for atom # 4 P, 7, is greater than permitted
#> [13:49:19] Explicit valence for atom # 6 Si, 6, is greater than permitted
#> [2026-07-05 13:49:19.781] [WARNING] Failed to process SMILES 'C1=CC=C(C=C1)[Si-](C2=CC=CC=C2)(C3=CC=CC=C3)(F)F': Explicit valence for atom # 6 Si, 6, is greater than permitted
#> [13:49:19] Explicit valence for atom # 4 P, 7, is greater than permitted
#> [2026-07-05 13:49:19.782] [WARNING] Failed to process SMILES 'C(C(F)(F)[P-](C(C(F)(F)F)(F)F)(C(C(F)(F)F)(F)F)(F)(F)F)(F)(F)F': Explicit valence for atom # 4 P, 7, is greater than permitted
#> [13:49:19] Explicit valence for atom # 7 Si, 6, is greater than permitted
#> [2026-07-05 13:49:19.783] [WARNING] Failed to process SMILES 'C1=CC=C2C(=C1)O[Si-]3(O2)(OC4=CC=CC=C4O3)CI': Explicit valence for atom # 7 Si, 6, is greater than permitted
#> [2026-07-05 13:49:19.783] [WARNING] Batch processing: 5/5 molecules failed
#> [2026-07-05 13:49:19.783] [INFO ] Processing complete. Total molecules processed: 0
#> [2026-07-05 13:49:19.812] [INFO ] Successfully processed 0 SMILES
#> [2026-07-05 13:49:32.565] [INFO ] [OK] Completed: process_smiles [n_processed=2107341] (33.5s)
#> [2026-07-05 13:49:59.352] [INFO ] Referenced structure-organism pairs (1,327,317)
#> [2026-07-05 13:50:10.101] [INFO ] Structures: 430,501 stereoisomers, 1,376,519 without stereochemistry, 1,538,632 constitutional isomers
#> [2026-07-05 13:50:52.912] [INFO ] Unique organisms (37,468)
#> [2026-07-05 13:50:53.062] [INFO ] Processing 813 organism name(s) for OTT taxonomy lookup
#> [2026-07-05 13:50:53.293] [INFO ] Querying OTT API in 9 batches
#> [2026-07-05 13:50:55.577] [INFO ] Retrieving detailed taxonomy for 4 unique OTT IDs
#> [2026-07-05 13:50:55.835] [INFO ] Got OTTaxonomy!
#> [2026-07-05 13:50:56.268] [INFO ] Enriching NPClassifier taxonomy from additional cache: data/interim/libraries/sop/merged/structures/taxonomies/npc.tsv.gz
#> [2026-07-05 13:51:06.086] [INFO ] Enriched NPClassifier taxonomy with 1105907 entries from additional cache (1105907 missing keys matched)
#> [2026-07-05 13:51:12.195] [INFO ] Updated additional NPClassifier cache (1783925 total entries): data/interim/libraries/sop/merged/structures/taxonomies/npc.tsv.gz
#> [2026-07-05 13:51:12.324] [INFO ] Enriching ClassyFire taxonomy from additional cache: data/interim/libraries/sop/merged/structures/taxonomies/classyfire_cache.csv
#> [2026-07-05 13:51:17.322] [INFO ] Enriched ClassyFire taxonomy with 181626 entries from additional cache (181626 missing keys matched)
#> [2026-07-05 13:51:18.992] [INFO ] Updated additional ClassyFire cache (1106056 total entries): data/interim/libraries/sop/merged/structures/taxonomies/classyfire_cache.csv
#> [2026-07-05 13:51:19.019] [INFO ] Exporting parameters to: data/interim/params/260705_135119_prepare_libraries_sop_merged.yaml
#> [2026-07-05 13:51:19.021] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/merged/keys.tsv.gz, n_rows=1327317]
#> [2026-07-05 13:51:21.063] [INFO ] [OK] Completed: export_output [size_bytes=31575320] (2s)
#> [2026-07-05 13:51:21.065] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/merged/organisms/taxonomies/ott.tsv.gz, n_rows=36757]
#> [2026-07-05 13:51:21.158] [INFO ] [OK] Completed: export_output [size_bytes=1013405] (93ms)
#> [2026-07-05 13:51:21.160] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/merged/structures/canonical.tsv.gz, n_rows=2107341]
#> [2026-07-05 13:51:25.882] [INFO ] [OK] Completed: export_output [size_bytes=37372111] (4.7s)
#> [2026-07-05 13:51:25.883] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/merged/structures/stereo.tsv.gz, n_rows=1807020]
#> [2026-07-05 13:51:32.658] [INFO ] [OK] Completed: export_output [size_bytes=91154009] (6.8s)
#> [2026-07-05 13:51:32.660] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/merged/structures/metadata.tsv.gz, n_rows=1541977]
#> [2026-07-05 13:51:34.336] [INFO ] [OK] Completed: export_output [size_bytes=30594849] (1.7s)
#> [2026-07-05 13:51:34.337] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/merged/structures/taxonomies/classyfire.tsv.gz, n_rows=405809]
#> [2026-07-05 13:51:34.781] [INFO ] [OK] Completed: export_output [size_bytes=8389032] (443ms)
#> [2026-07-05 13:51:34.782] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/merged/structures/taxonomies/npc.tsv.gz, n_rows=1326525]
#> [2026-07-05 13:51:36.983] [INFO ] [OK] Completed: export_output [size_bytes=19172760] (2.2s)
#> [2026-07-05 13:51:36.984] [INFO ] [OK] Completed: prepare_libraries_sop_merged [n_pairs=1327317, n_structures=1807020, n_organisms=36757, files_exported=7] (2m 52s)
#> ✔ lib_sop_mer completed [2m 52.1s, 219.27 MB]
#> + lib_mer_org_tax_ott dispatched
#> ✔ lib_mer_org_tax_ott completed [1ms, 1.01 MB]
#> + lib_mer_str_met dispatched
#> ✔ lib_mer_str_met completed [0ms, 30.59 MB]
#> + lib_mer_str_stereo dispatched
#> ✔ lib_mer_str_stereo completed [1ms, 91.15 MB]
#> + lib_mer_str_tax_cla dispatched
#> ✔ lib_mer_str_tax_cla completed [0ms, 8.39 MB]
#> + lib_mer_str_tax_npc dispatched
#> ✔ lib_mer_str_tax_npc completed [0ms, 19.17 MB]
#> + lib_mer_key dispatched
#> ✔ lib_mer_key completed [0ms, 31.58 MB]
#> + tax_pre dispatched
#> [2026-07-05 13:51:41.347] [INFO ] > Starting: prepare_taxa [taxon=NULL]
#> [2026-07-05 13:51:41.512] [INFO ] Processing 2 organism name(s) for OTT taxonomy lookup
#> [2026-07-05 13:51:41.637] [INFO ] Querying OTT API in 1 batches
#> [2026-07-05 13:51:41.741] [INFO ] Retrying failed queries using genus names only
#> [2026-07-05 13:51:41.748] [INFO ] Retrying with 1 genus names: blk 
#> [2026-07-05 13:51:41.848] [INFO ] Retrieving detailed taxonomy for 1 unique OTT IDs
#> [2026-07-05 13:51:41.924] [INFO ] Got OTTaxonomy!
#> [2026-07-05 13:51:42.377] [INFO ] [OK] Completed: prepare_taxa [n_features=5328] (1s)
#> [2026-07-05 13:51:42.410] [INFO ] Exporting parameters to: data/interim/params/260705_135142_prepare_taxa.yaml
#> [2026-07-05 13:51:42.412] [INFO ] > Starting: export_output [file=data/interim/taxa/example_taxed.tsv.gz, n_rows=5328]
#> [2026-07-05 13:51:42.419] [INFO ] [OK] Completed: export_output [size_bytes=19697] (7ms)
#> ✔ tax_pre completed [1.1s, 19.70 kB]
#> + ann_sir_pre dispatched
#> [2026-07-05 13:51:42.844] [INFO ] > Starting: prepare_annotations_sirius [version=6]
#> [2026-07-05 13:51:43.006] [INFO ] > Starting: process_smiles [n_structures=2563]
#> [2026-07-05 13:51:43.008] [INFO ] Processing SMILES with RDKit
#> [2026-07-05 13:51:50.744] [INFO ] Processing 9 new SMILES with RDKit
#> [2026-07-05 13:51:50.745] [INFO ] Starting SMILES processing pipeline
#> [2026-07-05 13:51:50.745] [INFO ] Input: /tmp/RtmpvOI4Fo/file27ac1334b5e8.smi
#> [2026-07-05 13:51:50.746] [INFO ] Output: /tmp/RtmpvOI4Fo/file27ac1cfab4da.csv.gz
#> [2026-07-05 13:51:50.746] [INFO ] Input file validated: /tmp/RtmpvOI4Fo/file27ac1334b5e8.smi
#> [2026-07-05 13:51:50.746] [INFO ] Output file validated: /tmp/RtmpvOI4Fo/file27ac1cfab4da.csv.gz
#> [2026-07-05 13:51:50.746] [INFO ] Processing parameters: workers=8, batch_size=1000, progress_interval=10000
#> [2026-07-05 13:51:50.746] [INFO ] SMILES supplier initialized
#> [13:51:50] Explicit valence for atom # 8 Cl, 3, is greater than permitted
#> [13:51:50] ERROR: Could not sanitize molecule on line 1
#> [13:51:50] ERROR: Explicit valence for atom # 8 Cl, 3, is greater than permitted
#> [13:51:50] Explicit valence for atom # 4 P, 7, is greater than permitted
#> [13:51:50] ERROR: Could not sanitize molecule on line 2
#> [13:51:50] ERROR: Explicit valence for atom # 4 P, 7, is greater than permitted
#> [13:51:50] Explicit valence for atom # 2 P, 7, is greater than permitted
#> [13:51:50] ERROR: Could not sanitize molecule on line 3
#> [13:51:50] ERROR: Explicit valence for atom # 2 P, 7, is greater than permitted
#> [13:51:50] Explicit valence for atom # 4 P, 7, is greater than permitted
#> [13:51:50] ERROR: Could not sanitize molecule on line 4
#> [13:51:50] ERROR: Explicit valence for atom # 4 P, 7, is greater than permitted
#> [13:51:50] Explicit valence for atom # 2 P, 7, is greater than permitted
#> [13:51:50] ERROR: Could not sanitize molecule on line 5
#> [13:51:50] ERROR: Explicit valence for atom # 2 P, 7, is greater than permitted
#> [13:51:50] Explicit valence for atom # 6 P, 7, is greater than permitted
#> [13:51:50] ERROR: Could not sanitize molecule on line 6
#> [13:51:50] ERROR: Explicit valence for atom # 6 P, 7, is greater than permitted
#> [13:51:50] Explicit valence for atom # 6 P, 7, is greater than permitted
#> [13:51:50] ERROR: Could not sanitize molecule on line 7
#> [13:51:50] ERROR: Explicit valence for atom # 6 P, 7, is greater than permitted
#> [13:51:50] Explicit valence for atom # 4 P, 7, is greater than permitted
#> [13:51:50] ERROR: Could not sanitize molecule on line 8
#> [13:51:50] ERROR: Explicit valence for atom # 4 P, 7, is greater than permitted
#> [13:51:50] Explicit valence for atom # 2 P, 7, is greater than permitted
#> [13:51:50] ERROR: Could not sanitize molecule on line 9
#> [13:51:50] ERROR: Explicit valence for atom # 2 P, 7, is greater than permitted
#> [2026-07-05 13:51:50.747] [INFO ] Processing complete. Total molecules processed: 0
#> [2026-07-05 13:51:50.775] [INFO ] Successfully processed 0 SMILES
#> [2026-07-05 13:51:58.193] [INFO ] [OK] Completed: process_smiles [n_processed=2554] (15.2s)
#> [2026-07-05 13:51:58.214] [INFO ] > Starting: complement_metadata [n_input=2571]
#> [2026-07-05 13:52:44.346] [INFO ] [OK] Completed: complement_metadata [n_enriched=2571] (46.1s)
#> [2026-07-05 13:52:44.358] [INFO ] [OK] Completed: prepare_annotations_sirius [n_canopus=15, n_formulas=19, n_structures=2571] (1m 2s)
#> [2026-07-05 13:52:44.384] [INFO ] Exporting parameters to: data/interim/params/260705_135244_prepare_annotations_sirius.yaml
#> [2026-07-05 13:52:44.386] [INFO ] > Starting: export_output [file=data/interim/annotations/example_canopusPrepared.tsv.gz, n_rows=15]
#> [2026-07-05 13:52:44.388] [INFO ] [OK] Completed: export_output [size_bytes=830] (2ms)
#> [2026-07-05 13:52:44.390] [INFO ] > Starting: export_output [file=data/interim/annotations/example_formulaPrepared.tsv.gz, n_rows=19]
#> [2026-07-05 13:52:44.391] [INFO ] [OK] Completed: export_output [size_bytes=521] (1ms)
#> [2026-07-05 13:52:44.392] [INFO ] > Starting: export_output [file=data/interim/annotations/example_siriusPrepared.tsv.gz, n_rows=2571]
#> [2026-07-05 13:52:44.406] [INFO ] [OK] Completed: export_output [size_bytes=97991] (14ms)
#> ✔ ann_sir_pre completed [1m 1.6s, 99.34 kB]
#> + ann_spe_exp_mzt_pre dispatched
#> [2026-07-05 13:52:45.937] [WARN ] No mzTab input provided for prepare_annotations_mztab, exporting empty annotations
#> [2026-07-05 13:52:45.941] [INFO ] > Starting: export_output [file=data/interim/annotations/example_mztabPrepared.tsv.gz, n_rows=1]
#> [2026-07-05 13:52:45.942] [INFO ] [OK] Completed: export_output [size_bytes=308] (1ms)
#> ✔ ann_spe_exp_mzt_pre completed [11ms, 308 B]
#> + ann_spe_exp_mzm_pre dispatched
#> [2026-07-05 13:52:47.517] [INFO ] > Starting: prepare_annotations_mzmine [n_files=1]
#> [2026-07-05 13:52:47.519] [WARN ] No mzmine annotations found, returning an empty file instead
#> [2026-07-05 13:52:47.521] [INFO ] [OK] Completed: prepare_annotations_mzmine [n_annotations=1] (4ms)
#> [2026-07-05 13:52:47.537] [INFO ] Exporting parameters to: data/interim/params/260705_135247_prepare_annotations_mzmine.yaml
#> [2026-07-05 13:52:47.538] [INFO ] > Starting: export_output [file=data/interim/annotations/example_mzminePrepared.tsv.gz, n_rows=1]
#> [2026-07-05 13:52:47.540] [INFO ] [OK] Completed: export_output [size_bytes=308] (1ms)
#> ✔ ann_spe_exp_mzm_pre completed [25ms, 308 B]
#> + ann_spe_exp_gnp_pre dispatched
#> [2026-07-05 13:52:49.093] [INFO ] > Starting: prepare_annotations_gnps [n_files=1]
#> [2026-07-05 13:52:49.095] [WARN ] No GNPS annotations found, returning an empty file instead
#> [2026-07-05 13:52:49.097] [INFO ] [OK] Completed: prepare_annotations_gnps [n_annotations=1] (4ms)
#> [2026-07-05 13:52:49.117] [INFO ] Exporting parameters to: data/interim/params/260705_135249_prepare_annotations_gnps.yaml
#> [2026-07-05 13:52:49.118] [INFO ] > Starting: export_output [file=data/interim/annotations/example_gnpsPrepared.tsv.gz, n_rows=1]
#> [2026-07-05 13:52:49.120] [INFO ] [OK] Completed: export_output [size_bytes=308] (1ms)
#> ✔ ann_spe_exp_gnp_pre completed [29ms, 308 B]
#> + ann_ms1_pre dispatched
#> [2026-07-05 13:52:50.731] [INFO ] > Starting: annotate_masses [ms_mode=pos, tolerance_ppm=10, tolerance_dalton=0.005, tolerance_rt=0.02]
#> [2026-07-05 13:52:50.733] [INFO ] Starting mass-based annotation (streaming network-first path)
#> [2026-07-05 13:52:50.734] [INFO ] ============================================================
#> [2026-07-05 13:52:50.735] [INFO ] Data Sanitizing: Pre-flight Checks
#> [2026-07-05 13:52:50.736] [INFO ] ============================================================
#> [2026-07-05 13:52:50.736] [INFO ] Checking features file...
#> [2026-07-05 13:52:50.775] [INFO ] [OK] Features file: 5328 rows, 5 columns
#> [2026-07-05 13:52:50.776] [INFO ] ============================================================
#> [2026-07-05 13:52:50.777] [INFO ] [OK] All pre-flight checks passed!
#> [2026-07-05 13:52:50.778] [INFO ] Data validation complete. Ready to proceed.
#> [2026-07-05 13:52:50.779] [INFO ] ============================================================
#> [2026-07-05 13:52:50.814] [INFO ] Processing 5328 features for annotation
#> [2026-07-05 13:52:50.816] [INFO ] > Starting: harmonize_adducts [n_rows=5328]
#> [2026-07-05 13:52:50.842] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=13, n_unique_after=13] (26ms)
#> [2026-07-05 13:52:50.860] [INFO ] > Starting: harmonize_adducts [n_rows=2112]
#> [2026-07-05 13:52:50.861] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=13, n_unique_after=13] (2ms)
#> [2026-07-05 13:52:50.862] [INFO ] Pre-assigned adducts kept as hypotheses alongside the [M+H]+ baseline: 2112
#> [2026-07-05 13:53:14.038] [INFO ] Built 22194 RT-window pair(s)
#> [2026-07-05 13:53:14.285] [INFO ] Here are the top 16 observed m/z differences inside the RT windows:
#> [2026-07-05 13:53:14.287] [INFO ] 
#>                 bin   N    Pct
#>   (4.94331,4.96196] 316 18.93%
#>   (21.9716,21.9902] 247 14.80%
#>   (17.0104,17.0291] 174 10.43%
#>   (17.9989,18.0176] 142  8.51%
#>   (38.9998,39.0185] 114  6.83%
#>    (15.966,15.9846] 105  6.29%
#>    (39.9883,40.007]  96  5.75%
#>   (77.9989,78.0175]  84  5.03%
#>   (18.4839,18.5025]  74  4.43%
#>   (35.0272,35.0459]  72  4.31%
#>  (0.989321,1.00797]  61  3.65%
#>    (162.04,162.058]  38  2.28%
#>   (30.0101,30.0288]  38  2.28%
#>   (28.0145,28.0331]  37  2.22%
#>   (2.01512,2.03377]  37  2.22%
#>   (109.948,109.967]  34  2.04%
#> [2026-07-05 13:53:14.506] [INFO ] Evidence engine: 5328 features x 24 adducts (prefilter=on, cap=Inf)
#> [2026-07-05 13:53:14.561] [INFO ] Evidence engine candidate materialization: 88168 rows
#> [2026-07-05 13:53:18.178] [INFO ] Evidence engine complete: 7492 rows, 5710 supported clusters
#> [2026-07-05 13:53:44.201] [INFO ] > Starting: harmonize_adducts [n_rows=5328]
#> [2026-07-05 13:53:44.203] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=6, n_unique_after=6] (2ms)
#> [2026-07-05 13:53:47.895] [INFO ] Pairwise-support filter removed 81 modifier-bearing evidence hypothesis row(s) lacking direct adduct/cluster/loss support.
#> [2026-07-05 13:53:47.918] [INFO ] Evidence-based discovery added 1324 adduct edge(s)
#> [2026-07-05 13:53:47.951] [INFO ] Edge classification complete in 33.55 seconds: 906 adduct edges, 53 cluster edges, 830 loss edges
#> [2026-07-05 13:54:01.555] [INFO ] > Starting: harmonize_adducts [n_rows=23676]
#> [2026-07-05 13:54:01.558] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=25, n_unique_after=25] (3ms)
#> [2026-07-05 13:54:02.934] [INFO ] > Starting: harmonize_adducts [n_rows=1267]
#> [2026-07-05 13:54:03.691] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=268, n_unique_after=262] (757ms)
#> [2026-07-05 13:54:22.907] [INFO ] Constrained multi-adduct expansion kept 1072 hypothesis row(s)
#> [2026-07-05 13:54:23.653] [INFO ] Network-consensus pruning dropped 105 (feature, adduct) candidate(s) with zero adduct-graph support when a supported alternative existed.
#> [2026-07-05 13:54:44.477] [INFO ] Loss/formula filter demoted 12861 structural match row(s) where the actual loss-edge term was not contained in the candidate formula.
#> [2026-07-05 13:54:45.414] [INFO ] Annotation/edge adduct agreement removed 20 unsupported (feature, adduct) assignment(s).
#> [2026-07-05 13:55:33.162] [INFO ] Conflict-resolution filter removed 5696 annotation row(s) with states incompatible with graph-consistent evidence.
#> [2026-07-05 13:55:33.163] [INFO ] Conflict-resolution pruning touched 3184 feature(s) and removed all annotations from 47 feature(s).
#> [2026-07-05 13:55:33.782] [INFO ] Library matching complete in 70.67 seconds: 610734 annotations
#> [2026-07-05 13:56:35.273] [INFO ] Coverage audit: kept 610734/670428 annotation rows across 5281/5328 features; 59694 annotation rows were pruned from 3184 feature(s).
#> [2026-07-05 13:56:35.274] [INFO ] > Starting: decorate_masses [n_annotations=610734]
#> [2026-07-05 13:56:35.432] [INFO ] MS1 annotations: 238971 unique structures across 5195 features
#> [2026-07-05 13:56:35.433] [INFO ] [OK] Completed: decorate_masses [n_structures=238971, n_features=5195] (159ms)
#> [2026-07-05 13:56:35.714] [INFO ] Breakdown of the (top 64) annotated adduct species (library-matched):
#> [2026-07-05 13:56:35.718] [INFO ] 
#>            adduct N_features N_annotations Pct_features Pct_annotations
#>           [M+Na]+       3285        125376       19.88%          20.53%
#>            [M+H]+       3134        165145       18.96%          27.05%
#>          [M+H4N]+       3130        103217       18.94%          16.90%
#>            [M+K]+       2579         75818       15.61%          12.42%
#>          [M+H2]2+       2008         26528       12.15%           4.34%
#>           [2M+H]+       1520         72892        9.20%          11.94%
#>        [M-H2O+H]+        148          6783        0.90%           1.11%
#>        [M+H3N+H]+         48           543        0.29%           0.09%
#>         [2M+H4N]+         46          3425        0.28%           0.56%
#>          [2M+Na]+         43          4789        0.26%           0.78%
#>       [2M-H2O+H]+         37          1352        0.22%           0.22%
#>        [M-H+2Na]+         36          1577        0.22%           0.26%
#>          [M+Ca]2+         36           549        0.22%           0.09%
#>              [M]+         26           614        0.16%           0.10%
#>     [M+C2H4+H4N]+         24          2183        0.15%           0.36%
#>         [2M+Ca]2+         17           904        0.10%           0.15%
#>    [M-C6H12O6+H]+         14           245        0.08%           0.04%
#>    [2M+C2H4+H4N]+         10           742        0.06%           0.12%
#>           [2M+K]+          9           339        0.05%           0.06%
#>       [M-H4O2+H]+          9           293        0.05%           0.05%
#>    [M-C6H10O5+H]+          9           258        0.05%           0.04%
#>          [M+2H]2+          8           219        0.05%           0.04%
#>     [M+C3H4O+Na]+          8           171        0.05%           0.03%
#>           [M+Cu]+          7           150        0.04%           0.02%
#>         [2M+Fe]2+          7           138        0.04%           0.02%
#>     [M+C2H3N+Na]+          5          1109        0.03%           0.18%
#>         [2M+Mg]2+          5           306        0.03%           0.05%
#>    [M-C6H14O7+H]+          5           124        0.03%           0.02%
#>         [M+O+Na]+          4           672        0.02%           0.11%
#>          [M+Fe]2+          4            58        0.02%           0.01%
#>       [M+CHO2+K]+          4            50        0.02%           0.01%
#>    [M+C6H10O4+H]+          3           388        0.02%           0.06%
#>       [M+CH2O+H]+          3           331        0.02%           0.05%
#>      [M+CH2O+Na]+          3           320        0.02%           0.05%
#>      [M+H2O2+Na]+          3           237        0.02%           0.04%
#>    [M-C6H10O4+H]+          3           174        0.02%           0.03%
#>       [M-H2O2+H]+          3           158        0.02%           0.03%
#>    [M+C4H4O+H4N]+          3           132        0.02%           0.02%
#>      [2M+CHO2+K]+          3           125        0.02%           0.02%
#>       [M-H6O3+H]+          3           123        0.02%           0.02%
#>      [2M-H4O2+H]+          3           102        0.02%           0.02%
#>     [M-C4H4O+Na]+          3            88        0.02%           0.01%
#>  [M-C6H10O4+H4N]+          3            48        0.02%           0.01%
#>     [M-C5H8O4+H]+          3            40        0.02%           0.01%
#>        [2M+O+Na]+          2           360        0.01%           0.06%
#>        [2M-CO+H]+          2           284        0.01%           0.05%
#>         [M-CO+H]+          2           203        0.01%           0.03%
#>      [M-C3O3+Na]+          2           188        0.01%           0.03%
#>       [M-CH2O+H]+          2           170        0.01%           0.03%
#>    [2M+C3H6O2+H]+          2           161        0.01%           0.03%
#>    [2M-C2H4+H4N]+          2           145        0.01%           0.02%
#>       [M-C2H4+H]+          2           145        0.01%           0.02%
#>      [M-CH2O+Na]+          2           143        0.01%           0.02%
#>       [M-CHNO+H]+          2           133        0.01%           0.02%
#>    [M+C2H2O3+Na]+          2           120        0.01%           0.02%
#>     [M-C2H2O+Na]+          2           117        0.01%           0.02%
#>        [M-O+H4N]+          2            91        0.01%           0.01%
#>    [M-C6H12O5+H]+          2            84        0.01%           0.01%
#>     [M-C2H4O2+H]+          2            80        0.01%           0.01%
#>    [M-C7H4O4+Na]+          2            75        0.01%           0.01%
#>     [M-CHNO+H4N]+          2            61        0.01%           0.01%
#>    [M-C6H6O3+Na]+          2            60        0.01%           0.01%
#>   [M+C3H4O3+H4N]+          2            49        0.01%           0.01%
#>       [M-H2O+Na]+          2            49        0.01%           0.01%
#> [2026-07-05 13:56:35.726] [INFO ] Adduct hypotheses retained without library match (by source):
#> [2026-07-05 13:56:35.728] [INFO ] 
#>       source N_features N_adduct_types
#>         loss         44              2
#>         pair         34              6
#>  preassigned         21              7
#>     evidence         18              8
#>     baseline         13              1
#> [2026-07-05 13:56:38.570] [INFO ] Exporting parameters to: data/interim/params/260705_135638_annotate_masses.yaml
#> [2026-07-05 13:56:38.573] [INFO ] > Starting: export_output [file=data/interim/features/example_edgesMasses.tsv, n_rows=4723]
#> [2026-07-05 13:56:38.574] [INFO ] [OK] Completed: export_output [size_bytes=81127] (2ms)
#> [2026-07-05 13:56:38.576] [INFO ] Exported edges: example_edgesMasses.tsv (4,723 rows)
#> [2026-07-05 13:56:42.526] [INFO ] > Starting: process_smiles [n_structures=239011]
#> [2026-07-05 13:56:42.528] [INFO ] Processing SMILES with RDKit
#> [2026-07-05 13:56:52.354] [INFO ] Processing 81 new SMILES with RDKit
#> [2026-07-05 13:56:52.355] [INFO ] Starting SMILES processing pipeline
#> [2026-07-05 13:56:52.355] [INFO ] Input: /tmp/RtmpvOI4Fo/file27ac74b79186.smi
#> [2026-07-05 13:56:52.355] [INFO ] Output: /tmp/RtmpvOI4Fo/file27ac57d13ed2.csv.gz
#> [2026-07-05 13:56:52.355] [INFO ] Input file validated: /tmp/RtmpvOI4Fo/file27ac74b79186.smi
#> [2026-07-05 13:56:52.355] [INFO ] Output file validated: /tmp/RtmpvOI4Fo/file27ac57d13ed2.csv.gz
#> [2026-07-05 13:56:52.356] [INFO ] Processing parameters: workers=8, batch_size=1000, progress_interval=10000
#> [2026-07-05 13:56:52.356] [INFO ] SMILES supplier initialized
#> [2026-07-05 13:56:52.485] [INFO ] Processing complete. Total molecules processed: 81
#> [2026-07-05 13:56:52.518] [INFO ] Successfully processed 81 SMILES
#> [2026-07-05 13:56:57.554] [INFO ] [OK] Completed: process_smiles [n_processed=239011] (15s)
#> [2026-07-05 13:57:00.816] [INFO ] > Starting: complement_metadata [n_input=610734]
#> [2026-07-05 13:57:17.691] [INFO ] [OK] Completed: complement_metadata [n_enriched=610734] (16.9s)
#> [2026-07-05 13:57:17.694] [INFO ] > Starting: export_output [file=data/interim/annotations/example_ms1Prepared.tsv.gz, n_rows=610734]
#> [2026-07-05 13:57:20.491] [INFO ] [OK] Completed: export_output [size_bytes=42981552] (2.8s)
#> [2026-07-05 13:57:20.493] [INFO ] Exported annotations: example_ms1Prepared.tsv.gz (610,734 rows)
#> [2026-07-05 13:57:20.494] [INFO ] > Starting: export_output [file=data/interim/annotations/example_ms1Prepared_coverage.tsv.gz, n_rows=11]
#> [2026-07-05 13:57:20.496] [INFO ] [OK] Completed: export_output [size_bytes=283] (2ms)
#> [2026-07-05 13:57:20.497] [INFO ] Exported coverage report: example_ms1Prepared_coverage.tsv.gz
#> [2026-07-05 13:57:20.498] [INFO ] All outputs exported in 44.77 seconds
#> [2026-07-05 13:57:20.500] [INFO ] [OK] Completed: annotate_masses [n_annotations=610734, n_edges=4723] (4m 30s)
#> ✔ ann_ms1_pre completed [4m 29.8s, 43.06 MB]
#> + ann_sir_pre_can dispatched
#> ✔ ann_sir_pre_can completed [0ms, 830 B]
#> + ann_sir_pre_for dispatched
#> ✔ ann_sir_pre_for completed [0ms, 521 B]
#> + ann_sir_pre_str dispatched
#> ✔ ann_sir_pre_str completed [0ms, 97.99 kB]
#> + ann_ms1_pre_ann dispatched
#> ✔ ann_ms1_pre_ann completed [0ms, 42.98 MB]
#> + ann_ms1_pre_edg dispatched
#> ✔ ann_ms1_pre_edg completed [0ms, 81.13 kB]
#> + ann_spe_neg dispatched
#> [2026-07-05 13:57:30.036] [INFO ] ============================================================
#> [2026-07-05 13:57:30.037] [INFO ] Data Sanitizing: Pre-flight Checks
#> [2026-07-05 13:57:30.038] [INFO ] ============================================================
#> [2026-07-05 13:57:30.040] [INFO ] Checking MGF file...
#> [2026-07-05 13:57:30.527] [INFO ] [OK] MGF file: 12195 MS2 spectra found
#> [2026-07-05 13:57:30.529] [INFO ] ============================================================
#> [2026-07-05 13:57:30.530] [INFO ] [OK] All pre-flight checks passed!
#> [2026-07-05 13:57:30.531] [INFO ] Data validation complete. Ready to proceed.
#> [2026-07-05 13:57:30.532] [INFO ] ============================================================
#> [2026-07-05 13:57:30.533] [INFO ] Starting spectral annotation in neg mode
#> [2026-07-05 13:57:30.534] [INFO ] Importing spectra from: data/source/example_spectra.mgf
#> [2026-07-05 13:57:30.536] [INFO ] Reading MGF file (7.41 MB) with optimized parser: data/source/example_spectra.mgf
#> [2026-07-05 13:57:33.145] [INFO ] Processed 10000 spectra...
#> [2026-07-05 13:57:34.719] [INFO ] Total spectra read: 16282
#> [2026-07-05 13:57:43.492] [INFO ] Loaded 16282 spectra from file
#> [2026-07-05 13:57:43.510] [INFO ] Combining replicate spectra by FEATURE_ID
#> [2026-07-05 13:57:43.516] [INFO ] Combined replicates: 0 -> 0 spectra
#> [2026-07-05 13:57:43.554] [WARN ] No spectra to sanitize
#> [2026-07-05 13:57:43.555] [INFO ] Import complete: 0 spectra ready for analysis
#> [2026-07-05 13:57:43.556] [WARN ] No query spectra loaded
#> [2026-07-05 13:57:43.559] [INFO ] Exporting parameters to: data/interim/params/260705_135743_annotate_spectra.yaml
#> [2026-07-05 13:57:43.561] [WARN ] Returning empty annotation template
#> [2026-07-05 13:57:43.564] [INFO ] > Starting: export_output [file=data/interim/annotations/example_spectralMatches_neg.tsv.gz, n_rows=1]
#> [2026-07-05 13:57:43.565] [INFO ] [OK] Completed: export_output [size_bytes=308] (2ms)
#> ✔ ann_spe_neg completed [13.6s, 308 B]
#> + ann_spe_pos dispatched
#> [2026-07-05 13:57:45.285] [INFO ] ============================================================
#> [2026-07-05 13:57:45.286] [INFO ] Data Sanitizing: Pre-flight Checks
#> [2026-07-05 13:57:45.287] [INFO ] ============================================================
#> [2026-07-05 13:57:45.288] [INFO ] Checking MGF file...
#> [2026-07-05 13:57:45.774] [INFO ] [OK] MGF file: 12195 MS2 spectra found
#> [2026-07-05 13:57:45.775] [INFO ] ============================================================
#> [2026-07-05 13:57:45.776] [INFO ] [OK] All pre-flight checks passed!
#> [2026-07-05 13:57:45.777] [INFO ] Data validation complete. Ready to proceed.
#> [2026-07-05 13:57:45.778] [INFO ] ============================================================
#> [2026-07-05 13:57:45.779] [INFO ] Starting spectral annotation in pos mode
#> [2026-07-05 13:57:45.780] [INFO ] Importing spectra from: data/source/example_spectra.mgf
#> [2026-07-05 13:57:45.781] [INFO ] Reading MGF file (7.41 MB) with optimized parser: data/source/example_spectra.mgf
#> [2026-07-05 13:57:48.414] [INFO ] Processed 10000 spectra...
#> [2026-07-05 13:57:50.001] [INFO ] Total spectra read: 16282
#> [2026-07-05 13:57:58.667] [INFO ] Loaded 16282 spectra from file
#> [2026-07-05 13:57:58.685] [INFO ] Combining replicate spectra by FEATURE_ID
#> [2026-07-05 13:57:59.848] [INFO ] Combined replicates: 12195 -> 4087 spectra
#> [2026-07-05 13:57:59.884] [INFO ] Sanitizing 4087 spectra (cutoff: 0)
#> [2026-07-05 13:58:01.778] [INFO ] Sanitization complete: 3660/4087 spectra retained (89.6%, 427 removed)
#> [2026-07-05 13:58:01.779] [INFO ] Import complete: 3660 spectra ready for analysis
#> [2026-07-05 13:58:01.781] [INFO ] > Starting: harmonize_adducts [n_rows=3660]
#> [2026-07-05 13:58:01.783] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=12, n_unique_after=12] (1ms)
#> [2026-07-05 13:58:04.195] [INFO ] > Starting: harmonize_adducts [n_rows=610734]
#> [2026-07-05 13:58:04.252] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=272, n_unique_after=272] (56ms)
#> [2026-07-05 13:58:04.625] [INFO ] Importing spectra from: data/interim/libraries/spectra/is/isdbnormansusdat_14854025_pos.rds
#> [2026-07-05 13:58:06.256] [INFO ] Loaded 210419 spectra from file
#> [2026-07-05 13:58:06.396] [INFO ] Import complete: 210419 spectra ready for analysis
#> [2026-07-05 13:58:06.618] [INFO ] > Starting: harmonize_adducts [n_rows=210419]
#> [2026-07-05 13:58:06.633] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=2, n_unique_after=2] (14ms)
#> [2026-07-05 13:58:06.833] [INFO ] Importing spectra from: data/interim/libraries/spectra/is/wikidata_5607185_pos.rds
#> [2026-07-05 13:58:26.646] [INFO ] Loaded 994408 spectra from file
#> [2026-07-05 13:58:27.438] [INFO ] Import complete: 994408 spectra ready for analysis
#> [2026-07-05 13:58:28.526] [INFO ] > Starting: harmonize_adducts [n_rows=994408]
#> [2026-07-05 13:58:28.587] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=1, n_unique_after=1] (61ms)
#> [2026-07-05 13:58:32.269] [INFO ] Importing spectra from: data/interim/libraries/spectra/exp/enveda180_pos.rds
#> [2026-07-05 13:58:51.580] [INFO ] Loaded 891903 spectra from file
#> [2026-07-05 13:58:52.146] [INFO ] Import complete: 891903 spectra ready for analysis
#> [2026-07-05 13:58:53.651] [INFO ] > Starting: harmonize_adducts [n_rows=891903]
#> [2026-07-05 13:58:53.706] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=6, n_unique_after=6] (56ms)
#> [2026-07-05 13:58:57.049] [INFO ] Importing spectra from: data/interim/libraries/spectra/exp/internal_pos.rds
#> [2026-07-05 13:58:57.050] [INFO ] Loaded 1 spectra from file
#> [2026-07-05 13:58:57.053] [INFO ] Import complete: 0 spectra ready for analysis
#> [2026-07-05 13:58:59.498] [INFO ] Importing spectra from: data/interim/libraries/spectra/exp/gnps_11566051_pos.rds
#> [2026-07-05 13:59:03.509] [INFO ] Loaded 272264 spectra from file
#> [2026-07-05 13:59:03.719] [INFO ] Import complete: 272263 spectra ready for analysis
#> [2026-07-05 13:59:04.026] [INFO ] > Starting: harmonize_adducts [n_rows=272263]
#> [2026-07-05 13:59:04.154] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=83, n_unique_after=80] (128ms)
#> [2026-07-05 13:59:04.628] [INFO ] Importing spectra from: data/interim/libraries/spectra/exp/massbank_202510_pos.rds
#> [2026-07-05 13:59:05.206] [INFO ] Loaded 62855 spectra from file
#> [2026-07-05 13:59:05.259] [INFO ] Import complete: 62855 spectra ready for analysis
#> [2026-07-05 13:59:05.335] [INFO ] > Starting: harmonize_adducts [n_rows=62855]
#> [2026-07-05 13:59:05.392] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=64, n_unique_after=62] (57ms)
#> [2026-07-05 13:59:08.148] [INFO ] Importing spectra from: data/interim/libraries/spectra/exp/merlin_16984129_pos.rds
#> [2026-07-05 13:59:11.549] [INFO ] Loaded 336677 spectra from file
#> [2026-07-05 13:59:11.797] [INFO ] Import complete: 336677 spectra ready for analysis
#> [2026-07-05 13:59:12.174] [INFO ] > Starting: harmonize_adducts [n_rows=336677]
#> [2026-07-05 13:59:12.196] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=7, n_unique_after=7] (22ms)
#> [2026-07-05 13:59:12.578] [INFO ] Importing spectra from: data/interim/libraries/spectra/exp/multims2_17417089_pos.rds
#> [2026-07-05 13:59:12.869] [INFO ] Loaded 32610 spectra from file
#> [2026-07-05 13:59:12.890] [INFO ] Import complete: 32610 spectra ready for analysis
#> [2026-07-05 13:59:12.919] [INFO ] > Starting: harmonize_adducts [n_rows=32610]
#> [2026-07-05 13:59:13.081] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=138, n_unique_after=136] (162ms)
#> [2026-07-05 13:59:20.636] [INFO ] 
#>              library spectra unique_structures Pct_spectra
#>            enveda180  549128            118540      37.85%
#>      ISDB - Wikidata  442973            442972      30.53%
#>               merlin  203675             26333      14.04%
#>                 gnps  124848             11516       8.60%
#>  ISDB - NormanSusDat   81470             33809       5.62%
#>             massbank   29740              3311       2.05%
#>             multims2   19074              1479       1.31%
#> [2026-07-05 13:59:20.638] [INFO ] > Starting: calculate_entropy_similarity [n_library=1450908, n_query=3660, method=gnps]
#> [2026-07-05 13:59:20.639] [INFO ] Calculating entropy and similarity for 3660 spectra
#> [2026-07-05 13:59:39.410] [INFO ] Processed 500 / 3660 queries
#> [2026-07-05 13:59:55.553] [INFO ] Processed 1000 / 3660 queries
#> [2026-07-05 14:00:10.344] [INFO ] Processed 1500 / 3660 queries
#> [2026-07-05 14:00:24.329] [INFO ] Processed 2000 / 3660 queries
#> [2026-07-05 14:00:37.464] [INFO ] Processed 2500 / 3660 queries
#> [2026-07-05 14:00:50.333] [INFO ] Processed 3000 / 3660 queries
#> [2026-07-05 14:01:02.203] [INFO ] Processed 3500 / 3660 queries
#> [2026-07-05 14:01:05.764] [INFO ] Processed 3660 / 3660 queries
#> [2026-07-05 14:01:06.278] [INFO ] [OK] Completed: calculate_entropy_similarity [n_comparisons=1817407] (1m 46s)
#> [2026-07-05 14:01:06.297] [INFO ] > Starting: harmonize_adducts [n_rows=1450908]
#> [2026-07-05 14:01:06.386] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=173, n_unique_after=165] (89ms)
#> [2026-07-05 14:01:11.201] [INFO ] > Starting: calculate_entropy_similarity [n_library=1450627, n_query=3644, method=gnps]
#> [2026-07-05 14:01:11.266] [INFO ] Calculating entropy and similarity for 3644 spectra
#> [2026-07-05 14:01:29.202] [INFO ] Processed 500 / 3644 queries
#> [2026-07-05 14:01:42.530] [INFO ] Processed 1000 / 3644 queries
#> [2026-07-05 14:01:54.912] [INFO ] Processed 1500 / 3644 queries
#> [2026-07-05 14:02:07.597] [INFO ] Processed 2000 / 3644 queries
#> [2026-07-05 14:02:19.073] [INFO ] Processed 2500 / 3644 queries
#> [2026-07-05 14:02:29.640] [INFO ] Processed 3000 / 3644 queries
#> [2026-07-05 14:02:40.203] [INFO ] Processed 3500 / 3644 queries
#> [2026-07-05 14:02:42.937] [INFO ] Processed 3644 / 3644 queries
#> [2026-07-05 14:02:42.980] [INFO ] [OK] Completed: calculate_entropy_similarity [n_comparisons=2140355] (1m 32s)
#> [2026-07-05 14:02:43.052] [INFO ] Similarity computation complete in 202.41 seconds
#> [2026-07-05 14:02:43.060] [INFO ] > Starting: harmonize_adducts [n_rows=1450908]
#> [2026-07-05 14:02:43.149] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=173, n_unique_after=165] (89ms)
#> [2026-07-05 14:03:03.187] [INFO ] Here is the distribution of annotation similarity scores (0.1 bins):
#> [2026-07-05 14:03:03.189] [INFO ] 
#>        bin       N    Pct
#>    [0,0.1] 1345743 88.11%
#>  (0.1,0.2]  109353  7.16%
#>  (0.2,0.3]   38007  2.49%
#>  (0.3,0.4]   16579  1.09%
#>  (0.4,0.5]    8589  0.56%
#>  (0.5,0.6]    4588  0.30%
#>  (0.6,0.7]    1617  0.11%
#>  (0.7,0.8]    1052  0.07%
#>  (0.8,0.9]    1259  0.08%
#>    (0.9,1]     512  0.03%
#> [2026-07-05 14:03:03.264] [INFO ] 592381 Candidates annotated on 3639 features (threshold >= 0).
#> [2026-07-05 14:03:03.267] [INFO ] Exporting parameters to: data/interim/params/260705_140303_annotate_spectra.yaml
#> [2026-07-05 14:03:03.269] [INFO ] > Starting: export_output [file=data/interim/annotations/example_spectralMatches_pos.tsv.gz, n_rows=1527299]
#> [2026-07-05 14:03:08.617] [INFO ] [OK] Completed: export_output [size_bytes=88724926] (5.3s)
#> [2026-07-05 14:03:08.618] [INFO ] Exported annotations: example_spectralMatches_pos.tsv.gz (1,527,299 rows)
#> ✔ ann_spe_pos completed [5m 23.4s, 88.72 MB]
#> + fea_edg_pre dispatched
#> [2026-07-05 14:03:11.223] [INFO ] > Starting: prepare_features_edges [n_edge_types=2]
#> [2026-07-05 14:03:11.306] [INFO ] [OK] Completed: prepare_features_edges [n_edges=48950] (83ms)
#> [2026-07-05 14:03:11.327] [INFO ] Exporting parameters to: data/interim/params/260705_140311_prepare_features_edges.yaml
#> [2026-07-05 14:03:11.329] [INFO ] > Starting: export_output [file=data/interim/features/example_edges.tsv, n_rows=48950]
#> [2026-07-05 14:03:11.336] [INFO ] [OK] Completed: export_output [size_bytes=2431165] (7ms)
#> ✔ fea_edg_pre completed [132ms, 2.43 MB]
#> + ann_spe_pre dispatched
#> [2026-07-05 14:03:12.814] [INFO ] Preparing spectral matching annotations from 2 file(s)
#> [2026-07-05 14:03:27.376] [INFO ] > Starting: process_smiles [n_structures=592381]
#> [2026-07-05 14:03:27.378] [INFO ] Processing SMILES with RDKit
#> [2026-07-05 14:03:39.092] [INFO ] Processing 26 new SMILES with RDKit
#> [2026-07-05 14:03:39.094] [INFO ] Starting SMILES processing pipeline
#> [2026-07-05 14:03:39.094] [INFO ] Input: /tmp/RtmpvOI4Fo/file27acf5f92ad.smi
#> [2026-07-05 14:03:39.094] [INFO ] Output: /tmp/RtmpvOI4Fo/file27ac749d4d1c.csv.gz
#> [2026-07-05 14:03:39.094] [INFO ] Input file validated: /tmp/RtmpvOI4Fo/file27acf5f92ad.smi
#> [2026-07-05 14:03:39.094] [INFO ] Output file validated: /tmp/RtmpvOI4Fo/file27ac749d4d1c.csv.gz
#> [2026-07-05 14:03:39.094] [INFO ] Processing parameters: workers=8, batch_size=1000, progress_interval=10000
#> [2026-07-05 14:03:39.094] [INFO ] SMILES supplier initialized
#> [2026-07-05 14:03:39.132] [INFO ] Processing complete. Total molecules processed: 26
#> [2026-07-05 14:03:39.161] [INFO ] Successfully processed 26 SMILES
#> [2026-07-05 14:03:45.217] [INFO ] [OK] Completed: process_smiles [n_processed=592381] (17.8s)
#> [2026-07-05 14:03:49.905] [INFO ] > Starting: complement_metadata [n_input=1527299]
#> [2026-07-05 14:04:16.473] [INFO ] [OK] Completed: complement_metadata [n_enriched=1527299] (26.6s)
#> [2026-07-05 14:04:16.858] [INFO ] Exporting parameters to: data/interim/params/260705_140416_prepare_annotations_spectra.yaml
#> [2026-07-05 14:04:16.860] [INFO ] > Starting: export_output [file=data/interim/annotations/example_spectralMatchesPrepared.tsv.gz, n_rows=1527299]
#> [2026-07-05 14:04:24.718] [INFO ] [OK] Completed: export_output [size_bytes=154500641] (7.9s)
#> ✔ ann_spe_pre completed [1m 11.9s, 154.50 MB]
#> + fea_com dispatched
#> [2026-07-05 14:04:27.470] [INFO ] > Starting: create_components [n_input_files=1]
#> [2026-07-05 14:04:27.473] [INFO ] Creating components from 1 edge file(s)
#> [2026-07-05 14:04:27.516] [INFO ] Loaded 45581 edges connecting 4524 unique features
#> [2026-07-05 14:04:27.847] [INFO ] Selected community partition at resolution 0.025 (modularity 0.809)
#> [2026-07-05 14:04:27.862] [INFO ] Found 801 communities using weighted Louvain/Leiden clustering
#> [2026-07-05 14:04:27.864] [INFO ] Component sizes - Min: 1, Max: 360, Mean: 5.6
#> [2026-07-05 14:04:27.881] [INFO ] Exporting parameters to: data/interim/params/260705_140427_create_components.yaml
#> [2026-07-05 14:04:27.883] [INFO ] > Starting: export_output [file=data/interim/features/example_components.tsv, n_rows=4524]
#> [2026-07-05 14:04:27.884] [INFO ] [OK] Completed: export_output [size_bytes=39595] (1ms)
#> [2026-07-05 14:04:27.885] [INFO ] Components written to: data/interim/features/example_components.tsv
#> [2026-07-05 14:04:27.886] [INFO ] [OK] Completed: create_components [n_components=801, n_features=4524] (417ms)
#> ✔ fea_com completed [422ms, 39.59 kB]
#> + ann_fil dispatched
#> [2026-07-05 14:04:29.414] [INFO ] > Starting: filter_annotations [n_annotation_files=6, tolerance_rt=Inf]
#> [2026-07-05 14:04:29.415] [INFO ] Filtering annotations
#> [2026-07-05 14:04:29.455] [INFO ] Processing 5328 unique features for annotation filtering
#> [2026-07-05 14:04:39.807] [INFO ] Removing MS1 annotations superseded by quality spectral matches
#> [2026-07-05 14:04:42.646] [INFO ] Removed 16310 redundant MS1 annotations
#> [2026-07-05 14:04:42.647] [INFO ] Total annotations after MS1 deduplication: 2124297
#> [2026-07-05 14:05:03.632] [INFO ] Removed 381092 non-MS1 annotation row(s) incompatible with strong MS1 adduct assignments
#> [2026-07-05 14:05:04.162] [INFO ] Adduct-semantics filter: before=2124322, removed_total=381092, removed_spectral_mismatch=0, after=1743230
#> [2026-07-05 14:05:04.193] [INFO ] Joining RT library and computing RT deltas
#> [2026-07-05 14:05:10.436] [INFO ] Removed 10032 duplicate RT library matches (keeping best match per annotation)
#> [2026-07-05 14:05:10.441] [INFO ] RT deltas computed for 0 annotations (no hard cutoff applied; scoring handles RT penalty)
#> [2026-07-05 14:05:10.444] [INFO ] Removed 10032 duplicate RT library matches during join
#> [2026-07-05 14:05:11.026] [INFO ] Exporting parameters to: data/interim/params/260705_140511_filter_annotations.yaml
#> [2026-07-05 14:05:11.028] [INFO ] > Starting: export_output [file=data/interim/annotations/example_annotationsFiltered.tsv.gz, n_rows=1733198]
#> [2026-07-05 14:05:19.669] [INFO ] [OK] Completed: export_output [size_bytes=158002863] (8.6s)
#> [2026-07-05 14:05:19.670] [INFO ] [OK] Completed: filter_annotations [n_filtered=1733198] (50.3s)
#> ✔ ann_fil completed [50.3s, 158.00 MB]
#> + fea_com_pre dispatched
#> [2026-07-05 14:05:21.817] [INFO ] > Starting: prepare_features_components [n_files=1]
#> [2026-07-05 14:05:21.823] [INFO ] [OK] Completed: prepare_features_components [n_assignments=4524] (6ms)
#> [2026-07-05 14:05:21.841] [INFO ] Exporting parameters to: data/interim/params/260705_140521_prepare_features_components.yaml
#> [2026-07-05 14:05:21.842] [INFO ] > Starting: export_output [file=data/interim/features/example_componentsPrepared.tsv, n_rows=4524]
#> [2026-07-05 14:05:21.844] [INFO ] [OK] Completed: export_output [size_bytes=39590] (1ms)
#> ✔ fea_com_pre completed [31ms, 39.59 kB]
#> + ann_wei dispatched
#> [2026-07-05 14:05:23.317] [INFO ] Starting annotation weighting and scoring
#> [2026-07-05 14:05:23.319] [INFO ] > Starting: weight_annotations [n_candidates_neighbors=16, n_candidates_final=1]
#> [2026-07-05 14:05:45.751] [INFO ] 
#>    candidate_library      n    Pct
#>      ISDB - Wikidata 783785 45.23%
#>             TIMA MS1 584840 33.75%
#>            enveda180 224165 12.93%
#>  ISDB - NormanSusDat  56892  3.28%
#>               merlin  47068  2.72%
#>                 gnps  25106  1.45%
#>             massbank   6157  0.36%
#>               SIRIUS   2561  0.15%
#>             multims2   2464  0.14%
#> [2026-07-05 14:06:04.305] [INFO ] > Starting: weight_bio [n_annotations=1518360, n_sop=1332278]
#> [2026-07-05 14:06:04.307] [INFO ] Weighting 1518360 annotations by biological source
#> [2026-07-05 14:06:14.124] [INFO ] [OK] Completed: weight_bio [n_weighted=1518360] (9.8s)
#> [2026-07-05 14:06:14.126] [INFO ] > Starting: decorate_bio [n_annotations=1518360]
#> [2026-07-05 14:06:17.041] [INFO ] Taxonomically informed metabolite annotation reranked:
#>     Kingdom  level: 223324 candidates (57841 unique)
#>     Phylum   level: 221144 candidates (57137 unique)
#>     Class    level: 175723 candidates (49024 unique)
#>     Order    level: 36765 candidates (12192 unique)
#>     Family   level: 29358 candidates (9589 unique)
#>     Tribe    level: 5132 candidates (1394 unique)
#>     Genus    level: 4191 candidates (1062 unique)
#>     Species  level: 2151 candidates (488 unique)
#>     Variety  level: 0 candidates (0 unique)
#>     Biota    level: 0 candidates (0 unique)
#> [2026-07-05 14:06:17.042] [INFO ] [OK] Completed: decorate_bio [n_processed=1518360] (2.9s)
#> [2026-07-05 14:06:17.044] [INFO ] > Starting: clean_bio [n_annotations=1518360, minimal_consistency=0]
#> [2026-07-05 14:06:43.607] [INFO ] [OK] Completed: clean_bio [n_cleaned=1518360] (26.6s)
#> [2026-07-05 14:06:43.609] [INFO ] > Starting: weight_chemo [n_input=1518360]
#> [2026-07-05 14:06:43.611] [INFO ] Weighting 1518360 annotations by chemical consistency
#> [2026-07-05 14:06:49.564] [INFO ] [OK] Completed: weight_chemo [n_weighted=1518360] (6s)
#> [2026-07-05 14:06:49.566] [INFO ] > Starting: decorate_chemo [n_annotations=1518360]
#> [2026-07-05 14:06:55.526] [INFO ] Chemically informed metabolite annotation reranked:
#>   Classyfire:
#>     Kingdom level:    488178 candidates (257704 unique)
#>     Superclass level: 325727 candidates (166914 unique)
#>     Class level:      218173 candidates (115734 unique)
#>     Parent level:     43964 candidates (26706 unique)
#>   NPClassifier:
#>     Pathway level:    486816 candidates (255511 unique)
#>     Superclass level: 223478 candidates (122657 unique)
#>     Class level:      81869 candidates (49544 unique)
#> [2026-07-05 14:06:55.527] [INFO ] [OK] Completed: decorate_chemo [n_processed=1518360] (6s)
#> [2026-07-05 14:06:55.558] [INFO ] > Starting: clean_chemo [n_annotations=1518360, candidates_final=1, high_evidence=FALSE]
#> [2026-07-05 14:07:20.847] [INFO ] Cluster-consensus mass key used mz/adduct fallback for 132 row(s) with missing exact mass
#> [2026-07-05 14:07:40.141] [INFO ] Enforced cluster entity consensus for 1930 features (anchor InChIKey promoted to rank 1)
#> [2026-07-05 14:08:21.290] [INFO ] Sampling candidates for 2502 features with more than 7 candidates per score
#> [2026-07-05 14:08:21.293] [INFO ] > Starting: filter_high_evidence [n_input=1236032, context=filtered]
#> [2026-07-05 14:08:22.802] [INFO ] [filtered]  Removed 1233239 low-evidence candidates (99.8% of 1236032 total)
#> [2026-07-05 14:08:22.803] [INFO ] [filtered]  2793 high-evidence candidates remaining (0.2%)
#> [2026-07-05 14:08:22.804] [INFO ] [OK] Completed: filter_high_evidence [n_filtered=2793, n_removed=1233239] (1.5s)
#> [2026-07-05 14:08:22.979] [INFO ] Summarizing annotation results
#> [2026-07-05 14:08:27.532] [INFO ] Annotated features: 825/5328 (15.5%)
#> [2026-07-05 14:08:40.943] [INFO ] Summarizing annotation results
#> [2026-07-05 14:09:14.718] [INFO ] Annotated features: 5222/5328 (98.0%)
#> [2026-07-05 14:09:21.104] [INFO ] [OK] Completed: clean_chemo [n_final_full=1236032, n_final_filtered=5449, n_final_mini=5449, n_features=5328] (2m 26s)
#> [2026-07-05 14:09:21.106] [INFO ] [OK] Completed: weight_annotations [n_annotations=NULL] (3m 58s)
#> [2026-07-05 14:09:21.134] [INFO ] Exporting parameters to: data/processed/20260705_140921_example/260705_140921_prepare_params.yaml
#> [2026-07-05 14:09:21.156] [INFO ] Exporting parameters to: data/processed/20260705_140921_example/260705_140921_prepare_params_advanced.yaml
#> [2026-07-05 14:09:21.159] [INFO ] > Starting: export_output [file=data/processed/20260705_140921_example/example_results_mini.tsv, n_rows=5449]
#> [2026-07-05 14:09:21.163] [INFO ] [OK] Completed: export_output [size_bytes=983402] (4ms)
#> [2026-07-05 14:09:21.165] [INFO ] > Starting: export_output [file=data/processed/20260705_140921_example/example_results_filtered.tsv, n_rows=5449]
#> [2026-07-05 14:09:21.171] [INFO ] [OK] Completed: export_output [size_bytes=1653922] (6ms)
#> [2026-07-05 14:09:21.173] [INFO ] > Starting: export_output [file=data/processed/20260705_140921_example/example_results.tsv, n_rows=1236032]
#> [2026-07-05 14:09:23.031] [INFO ] [OK] Completed: export_output [size_bytes=749113049] (1.9s)
#> [2026-07-05 14:09:23.033] [INFO ] Results exported: example_results.tsv
#> ✔ ann_wei completed [3m 59.7s, 750.77 MB]
#> + exp_mzt dispatched
#> [2026-07-05 14:09:25.663] [INFO ] > Starting: write_mztab [input=example_results_filtered.tsv, output=example_results.mztab]
#> [2026-07-05 14:09:28.891] [INFO ] [OK] Completed: write_mztab [n_sml=825, n_smf=5328, n_sme=946] (3.2s)
#> ✔ exp_mzt completed [3.3s, 2.13 MB]
#> ✔ ended pipeline [27m 58.9s, 157 completed, 0 skipped]
#> There were 19 warnings (use warnings() to see them)

The final exported file is formatted in order to be easily imported in Cytoscape to further explore your data!

We hope you enjoyed using TIMA and are pleased to hear from you!

For any remark or suggestion, please fill an issue or feel free to contact us directly.

Reuse

Citation

BibTeX citation:
@online{rutz2026,
  author = {Rutz, Adriano},
  title = {3 {Performing} {Taxonomically} {Informed} {Metabolite}
    {Annotation}},
  date = {2026-07-05},
  url = {https://taxonomicallyinformedannotation.github.io/tima/vignettes/articles/III-processing.html},
  langid = {en}
}
For attribution, please cite this work as:
Rutz, Adriano. 2026. “3 Performing Taxonomically Informed Metabolite Annotation.” July 5. https://taxonomicallyinformedannotation.github.io/tima/vignettes/articles/III-processing.html.