3 Performing Taxonomically Informed Metabolite Annotation

Author

Adriano Rutz

Published

May 6, 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_lib_sop_clo dispatched
#> ✔ par_def_pre_lib_sop_clo completed [6ms, 523 B]
#> + par_def_ann_spe dispatched
#> ✔ par_def_ann_spe completed [1ms, 2.39 kB]
#> + par_def_pre_lib_sop_lot dispatched
#> ✔ par_def_pre_lib_sop_lot completed [0ms, 494 B]
#> + par_def_pre_lib_spe dispatched
#> ✔ par_def_pre_lib_spe completed [0ms, 1.58 kB]
#> + par_def_pre_lib_sop_mer dispatched
#> ✔ par_def_pre_lib_sop_mer completed [1ms, 6.75 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_pre_tax dispatched
#> ✔ par_def_pre_tax completed [1ms, 1.51 kB]
#> + par_def_pre_lib_sop_big dispatched
#> ✔ par_def_pre_lib_sop_big completed [0ms, 314 B]
#> + par_def_pre_fea_tab dispatched
#> ✔ par_def_pre_fea_tab completed [1ms, 860 B]
#> + par_def_pre_lib_rt dispatched
#> ✔ par_def_pre_lib_rt completed [1ms, 2.20 kB]
#> + par_def_cre_com dispatched
#> ✔ par_def_cre_com completed [1ms, 375 B]
#> + yaml_paths dispatched
#> ✔ yaml_paths completed [0ms, 17.34 kB]
#> + par_def_pre_ann_gnp dispatched
#> ✔ par_def_pre_ann_gnp completed [1ms, 1.31 kB]
#> + par_def_pre_ann_mzm dispatched
#> ✔ par_def_pre_ann_mzm completed [0ms, 1.32 kB]
#> + par_def_wei_ann dispatched
#> ✔ par_def_wei_ann completed [1ms, 5.34 kB]
#> + par_def_pre_ann_spe dispatched
#> ✔ par_def_pre_ann_spe completed [1ms, 1.35 kB]
#> + par_def_pre_lib_sop_hmd dispatched
#> ✔ par_def_pre_lib_sop_hmd completed [0ms, 492 B]
#> + par_def_pre_fea_edg dispatched
#> ✔ par_def_pre_fea_edg completed [1ms, 706 B]
#> + par_def_pre_fea_com dispatched
#> ✔ par_def_pre_fea_com completed [1ms, 358 B]
#> + par_def_ann_mas dispatched
#> ✔ par_def_ann_mas completed [1ms, 5.98 kB]
#> + par_def_pre_ann_sir dispatched
#> ✔ par_def_pre_ann_sir completed [1ms, 1.97 kB]
#> + par_def_cre_edg_spe dispatched
#> ✔ par_def_cre_edg_spe completed [1ms, 1.52 kB]
#> + paths dispatched
#> ✔ paths completed [2ms, 3.22 kB]
#> + lib_spe_is_nor_pre_pos dispatched
#> [2026-05-06 10:59:14.616] [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-05-06 10:59:15.946] [INFO ] [OK] Completed: download_file [size_bytes=47223884] (1.3s)
#> ✔ lib_spe_is_nor_pre_pos completed [1.4s, 47.22 MB]
#> + test_spectra_mini dispatched
#> ✔ test_spectra_mini completed [0ms, 7.77 MB]
#> + lib_spe_exp_gnp_pre_sop dispatched
#> [2026-05-06 10:59:16.154] [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-05-06 10:59:16.474] [INFO ] [OK] Completed: download_file [size_bytes=493387] (320ms)
#> ✔ lib_spe_exp_gnp_pre_sop completed [322ms, 493.39 kB]
#> + lib_sop_lot dispatched
#> [2026-05-06 10:59:16.559] [INFO ] Retrieving latest version from Zenodo: 10.5281/zenodo.5794106
#> [2026-05-06 10:59:26.662] [INFO ] Downloading 260413_frozen_metadata.csv.gz from https://doi.org/10.5281/zenodo.5794106
#> [2026-05-06 10:59:26.664] [INFO ] > Starting: download_file [url=https://zenodo.org/records/19360665/files/260413_frozen_metadata.csv.gz, destination=data/source/libraries/sop/lotus.csv.gz]
#> [2026-05-06 11:01:00.160] [INFO ] [OK] Completed: download_file [size_bytes=90298678] (1m 33s)
#> [2026-05-06 11:01:00.162] [INFO ] Download completed: data/source/libraries/sop/lotus.csv.gz
#> ✔ lib_sop_lot completed [1m 43.6s, 90.30 MB]
#> + lib_spe_exp_gnp_pre_neg dispatched
#> [2026-05-06 11:01:00.294] [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  27% ■■■■■■■■■                         3s
#> Downloading  63% ■■■■■■■■■■■■■■■■■■■■              1s
#> Downloading 100% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■   0s
#> [2026-05-06 11:01:03.504] [INFO ] [OK] Completed: download_file [size_bytes=91828026] (3.2s)
#> ✔ lib_spe_exp_gnp_pre_neg completed [3.2s, 91.83 MB]
#> + lib_spe_exp_mb_pre_neg dispatched
#> [2026-05-06 11:01:03.635] [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-05-06 11:01:04.263] [INFO ] [OK] Completed: download_file [size_bytes=5972761] (629ms)
#> ✔ lib_spe_exp_mb_pre_neg completed [631ms, 5.97 MB]
#> + lib_spe_exp_mer_pre_neg dispatched
#> [2026-05-06 11:01:04.359] [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-05-06 11:01:05.518] [INFO ] [OK] Completed: download_file [size_bytes=52926499] (1.2s)
#> ✔ lib_spe_exp_mer_pre_neg completed [1.2s, 52.93 MB]
#> + lib_spe_is_nor_pre_neg dispatched
#> [2026-05-06 11:01:05.633] [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-05-06 11:01:06.590] [INFO ] [OK] Completed: download_file [size_bytes=34220848] (957ms)
#> ✔ lib_spe_is_nor_pre_neg completed [959ms, 34.22 MB]
#> + lib_spe_is_wik_pre_neg dispatched
#> [2026-05-06 11:01:06.694] [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% ■■■                              14s
#> Downloading   9% ■■■■                             15s
#> Downloading  29% ■■■■■■■■■■                       12s
#> Downloading  47% ■■■■■■■■■■■■■■■                   8s
#> Downloading  69% ■■■■■■■■■■■■■■■■■■■■■■            5s
#> Downloading  88% ■■■■■■■■■■■■■■■■■■■■■■■■■■■       2s
#> Downloading 100% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■   0s
#> [2026-05-06 11:01:23.748] [INFO ] [OK] Completed: download_file [size_bytes=874199749] (17.1s)
#> ✔ lib_spe_is_wik_pre_neg completed [17.1s, 874.20 MB]
#> + lib_sop_ecm dispatched
#> [2026-05-06 11:01:24.146] [INFO ] > Starting: download_file [url=https://ecmdb.ca/download/ecmdb.json.zip, destination=data/source/libraries/sop/ecmdb.json.zip]
#> [2026-05-06 11:01:25.123] [INFO ] [OK] Completed: download_file [size_bytes=1334921] (977ms)
#> ✔ lib_sop_ecm completed [979ms, 1.33 MB]
#> + lib_spe_exp_mer_pre_sop dispatched
#> [2026-05-06 11:01:25.214] [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]
#> [2026-05-06 11:01:25.683] [INFO ] [OK] Completed: download_file [size_bytes=823107] (469ms)
#> ✔ lib_spe_exp_mer_pre_sop completed [472ms, 823.11 kB]
#> + lib_spe_is_wik_pre_sop dispatched
#> [2026-05-06 11:01:25.773] [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-05-06 11:01:26.211] [INFO ] [OK] Completed: download_file [size_bytes=15074639] (438ms)
#> ✔ lib_spe_is_wik_pre_sop completed [440ms, 15.07 MB]
#> + lib_sop_hmd_fam_raw dispatched
#> [2026-05-06 11:01:26.320] [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-05-06 11:01:26.495] [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 [www.csfmetabolome.ca]:
#> SSL certificate problem: certificate has expired
#> [2026-05-06 11:01:27.605] [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 [www.csfmetabolome.ca]:
#> SSL certificate problem: certificate has expired
#> [2026-05-06 11:01:29.770] [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 [www.csfmetabolome.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-05-06 11:01:29.771] [WARN ] HMDB download failed. Creating minimal placeholder SDF file.
#> [2026-05-06 11:01:29.797] [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-05-06 11:01:29.989] [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 [www.fecalmetabolome.ca]:
#> SSL certificate problem: certificate has expired
#> [2026-05-06 11:01:31.118] [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 [www.fecalmetabolome.ca]:
#> SSL certificate problem: certificate has expired
#> [2026-05-06 11:01:33.275] [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 [www.fecalmetabolome.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-05-06 11:01:33.276] [WARN ] HMDB download failed. Creating minimal placeholder SDF file.
#> [2026-05-06 11:01:33.280] [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-05-06 11:01:33.430] [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 [www.salivametabolome.ca]:
#> SSL certificate problem: certificate has expired
#> [2026-05-06 11:01:34.560] [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 [www.salivametabolome.ca]:
#> SSL certificate problem: certificate has expired
#> [2026-05-06 11:01:36.720] [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
#>   [www.salivametabolome.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-05-06 11:01:36.721] [WARN ] HMDB download failed. Creating minimal placeholder SDF file.
#> [2026-05-06 11:01:36.725] [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-05-06 11:01:36.879] [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 [www.serummetabolome.ca]:
#> SSL certificate problem: certificate has expired
#> [2026-05-06 11:01:38.013] [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 [www.serummetabolome.ca]:
#> SSL certificate problem: certificate has expired
#> [2026-05-06 11:01:40.190] [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 [www.serummetabolome.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-05-06 11:01:40.191] [WARN ] HMDB download failed. Creating minimal placeholder SDF file.
#> [2026-05-06 11:01:40.194] [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-05-06 11:01:40.350] [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 [www.sweatmetabolome.ca]:
#> SSL certificate problem: certificate has expired
#> [2026-05-06 11:01:41.456] [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 [www.sweatmetabolome.ca]:
#> SSL certificate problem: certificate has expired
#> [2026-05-06 11:01:43.614] [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 [www.sweatmetabolome.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-05-06 11:01:43.615] [WARN ] HMDB download failed. Creating minimal placeholder SDF file.
#> [2026-05-06 11:01:43.618] [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-05-06 11:01:43.786] [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 [www.urinemetabolome.ca]:
#> SSL certificate problem: certificate has expired
#> [2026-05-06 11:01:44.925] [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 [www.urinemetabolome.ca]:
#> SSL certificate problem: certificate has expired
#> [2026-05-06 11:01:47.084] [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 [www.urinemetabolome.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-05-06 11:01:47.086] [WARN ] HMDB download failed. Creating minimal placeholder SDF file.
#> [2026-05-06 11:01:47.090] [INFO ] > Starting: download_file [url=https://mcdb.ca/system/downloads/current/milk_metabolites_structures.zip, destination=data/source/libraries/sop/mcdb/structures.zip]
#> [2026-05-06 11:01:47.689] [INFO ] [OK] Completed: download_file [size_bytes=1375818] (600ms)
#> [2026-05-06 11:01:47.691] [INFO ] > Starting: download_file [url=https://smpdb.ca/downloads/smpdb_structures.zip, destination=data/source/libraries/sop/smpdb/structures.zip]
#> Downloading   8% ■■■                              12s
#> Downloading 100% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■   0s
#> [2026-05-06 11:01:50.337] [INFO ] [OK] Completed: download_file [size_bytes=23382536] (2.6s)
#> [2026-05-06 11:01:50.339] [INFO ] > Starting: download_file [url=https://mimedb.org/system/downloads/2.0/mimedb.sdf.zip, destination=data/source/libraries/sop/mimedb/structures.zip]
#> [2026-05-06 11:01:50.470] [WARN ] file download failed (attempt 1/3), retrying in 1s: HTTP 403 Forbidden.
#> [2026-05-06 11:01:51.518] [WARN ] file download failed (attempt 2/3), retrying in 2s: HTTP 403 Forbidden.
#> [2026-05-06 11:01:53.612] [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-05-06 11:01:53.613] [WARN ] HMDB download failed. Creating minimal placeholder SDF file.
#> [2026-05-06 11:01:53.617] [INFO ] > Starting: download_file [url=https://t3db.ca/system/downloads/current/structures.zip, destination=data/source/libraries/sop/t3db/structures.zip]
#> [2026-05-06 11:01:54.317] [INFO ] [OK] Completed: download_file [size_bytes=1676995] (700ms)
#> [2026-05-06 11:01:54.318] [INFO ] > Starting: download_file [url=https://bovinedb.ca/system/downloads/current/structures.zip, destination=data/source/libraries/sop/bovinedb/structures.zip]
#> [2026-05-06 11:01:55.543] [INFO ] [OK] Completed: download_file [size_bytes=19260214] (1.2s)
#> [2026-05-06 11:01:55.545] [INFO ] > Starting: download_file [url=https://www.ymdb.ca/system/downloads/current/ymdb.sdf.zip, destination=data/source/libraries/sop/ymdb/structures.zip]
#> [2026-05-06 11:01:55.802] [INFO ] [OK] Completed: download_file [size_bytes=1200611] (257ms)
#> [2026-05-06 11:01:55.803] [INFO ] > Starting: download_file [url=https://cannabisdatabase.ca/simple/download_compound_as_sdf, destination=data/source/libraries/sop/cannabisdatabase/compounds.sdf]
#> [2026-05-06 11:01:57.618] [INFO ] [OK] Completed: download_file [size_bytes=42496276] (1.8s)
#> ✔ lib_sop_hmd_fam_raw completed [31.3s, 89.39 MB]
#> + par_pre_par2 dispatched
#> ✔ par_pre_par2 completed [1ms, 27.69 kB]
#> + lib_spe_exp_mer_pre_pos dispatched
#> [2026-05-06 11:01:57.836] [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  26% ■■■■■■■■■                         3s
#> Downloading  34% ■■■■■■■■■■■                       3s
#> Downloading  84% ■■■■■■■■■■■■■■■■■■■■■■■■■■        1s
#> Downloading 100% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■   0s
#> [2026-05-06 11:02:03.476] [INFO ] [OK] Completed: download_file [size_bytes=158380143] (5.6s)
#> ✔ lib_spe_exp_mer_pre_pos completed [5.6s, 158.38 MB]
#> + lib_xrefs dispatched
#> [2026-05-06 11:02:03.626] [INFO ] Fetching compound cross-references from Wikidata / QLever
#> [2026-05-06 11:02:03.628] [INFO ] > Starting: get_compounds_xrefs [(no parameters)]
#> [2026-05-06 11:02:05.658] [WARN ] QLever request failed (possibly transient upstream error). Writing empty xrefs file: compounds.tsv.gz
#> [2026-05-06 11:02:05.684] [INFO ] > Starting: export_output [file=data/interim/xrefs/compounds.tsv.gz, n_rows=0]
#> [2026-05-06 11:02:05.686] [INFO ] [OK] Completed: export_output [size_bytes=35] (1ms)
#> ✔ lib_xrefs completed [2.1s, 35 B]
#> + lib_spe_exp_mb_pre_sop dispatched
#> [2026-05-06 11:02:05.798] [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-05-06 11:02:06.083] [INFO ] [OK] Completed: download_file [size_bytes=158982] (285ms)
#> ✔ lib_spe_exp_mb_pre_sop completed [287ms, 158.98 kB]
#> + lib_spe_is_nor_pre_sop dispatched
#> [2026-05-06 11:02:06.188] [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-05-06 11:02:06.624] [INFO ] [OK] Completed: download_file [size_bytes=1236540] (436ms)
#> ✔ lib_spe_is_nor_pre_sop completed [438ms, 1.24 MB]
#> + lib_sop_hmd dispatched
#> [2026-05-06 11:02:06.717] [INFO ] > Starting: download_file [url=https://hmdb.ca/system/downloads/current/structures.zip, destination=data/source/libraries/sop/hmdb/structures.zip]
#> [2026-05-06 11:02:06.858] [WARN ] file download failed (attempt 1/3), retrying in 1s: HTTP 403 Forbidden.
#> [2026-05-06 11:02:07.907] [WARN ] file download failed (attempt 2/3), retrying in 2s: HTTP 403 Forbidden.
#> [2026-05-06 11:02:10.006] [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-05-06 11:02:10.007] [WARN ] HMDB download failed. Creating minimal placeholder SDF file.
#> ✔ lib_sop_hmd completed [3.3s, 340 B]
#> + lib_spe_exp_gnp_pre_pos dispatched
#> [2026-05-06 11:02:10.109] [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  19% ■■■■■■■                           4s
#> Downloading  24% ■■■■■■■■                          4s
#> Downloading  69% ■■■■■■■■■■■■■■■■■■■■■■            2s
#> Downloading 100% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■   0s
#> [2026-05-06 11:02:16.796] [INFO ] [OK] Completed: download_file [size_bytes=341237933] (6.7s)
#> ✔ lib_spe_exp_gnp_pre_pos completed [6.7s, 341.24 MB]
#> + par_pre_par dispatched
#> ✔ par_pre_par completed [0ms, 1.54 kB]
#> + lib_spe_is_wik_pre_pos dispatched
#> [2026-05-06 11:02:17.117] [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   6% ■■■                              16s
#> Downloading  18% ■■■■■■                           14s
#> Downloading  36% ■■■■■■■■■■■■                     11s
#> Downloading  51% ■■■■■■■■■■■■■■■■                  9s
#> Downloading  67% ■■■■■■■■■■■■■■■■■■■■■             6s
#> Downloading  80% ■■■■■■■■■■■■■■■■■■■■■■■■■         4s
#> Downloading  94% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■     1s
#> Downloading 100% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■   0s
#> [2026-05-06 11:02:36.779] [INFO ] [OK] Completed: download_file [size_bytes=1097022129] (19.7s)
#> ✔ lib_spe_is_wik_pre_pos completed [19.7s, 1.10 GB]
#> + lib_spe_exp_mb_pre_pos dispatched
#> [2026-05-06 11:02:37.257] [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-05-06 11:02:38.072] [INFO ] [OK] Completed: download_file [size_bytes=17559329] (815ms)
#> ✔ lib_spe_exp_mb_pre_pos completed [817ms, 17.56 MB]
#> + lib_sop_hmd_fam_pre dispatched
#> [2026-05-06 11:02:38.184] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=CSFMETABOLOME, input=data/source/libraries/sop/csfmetabolome/structures.zip, tag=csf]
#> [2026-05-06 11:02:38.224] [WARN ] Empty dataframe in select_sop_columns
#> [2026-05-06 11:02:38.229] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/csfmetabolome_prepared.tsv.gz, n_rows=0]
#> [2026-05-06 11:02:38.231] [INFO ] [OK] Completed: export_output [size_bytes=256] (2ms)
#> [2026-05-06 11:02:38.232] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=0] (48ms)
#> [2026-05-06 11:02:38.233] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=FECALMETABOLOME, input=data/source/libraries/sop/fecalmetabolome/structures.zip, tag=fecal]
#> [2026-05-06 11:02:38.261] [WARN ] Empty dataframe in select_sop_columns
#> [2026-05-06 11:02:38.266] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/fecalmetabolome_prepared.tsv.gz, n_rows=0]
#> [2026-05-06 11:02:38.268] [INFO ] [OK] Completed: export_output [size_bytes=256] (2ms)
#> [2026-05-06 11:02:38.269] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=0] (36ms)
#> [2026-05-06 11:02:38.270] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=SALIVAMETABOLOME, input=data/source/libraries/sop/salivametabolome/structures.zip, tag=saliva]
#> [2026-05-06 11:02:38.297] [WARN ] Empty dataframe in select_sop_columns
#> [2026-05-06 11:02:38.302] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/salivametabolome_prepared.tsv.gz, n_rows=0]
#> [2026-05-06 11:02:38.304] [INFO ] [OK] Completed: export_output [size_bytes=256] (2ms)
#> [2026-05-06 11:02:38.305] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=0] (35ms)
#> [2026-05-06 11:02:38.306] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=SERUMMETABOLOME, input=data/source/libraries/sop/serummetabolome/structures.zip, tag=serum]
#> [2026-05-06 11:02:38.333] [WARN ] Empty dataframe in select_sop_columns
#> [2026-05-06 11:02:38.338] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/serummetabolome_prepared.tsv.gz, n_rows=0]
#> [2026-05-06 11:02:38.339] [INFO ] [OK] Completed: export_output [size_bytes=256] (2ms)
#> [2026-05-06 11:02:38.340] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=0] (34ms)
#> [2026-05-06 11:02:38.341] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=SWEATMETABOLOME, input=data/source/libraries/sop/sweatmetabolome/structures.zip, tag=sweat]
#> [2026-05-06 11:02:38.368] [WARN ] Empty dataframe in select_sop_columns
#> [2026-05-06 11:02:38.373] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/sweatmetabolome_prepared.tsv.gz, n_rows=0]
#> [2026-05-06 11:02:38.375] [INFO ] [OK] Completed: export_output [size_bytes=256] (2ms)
#> [2026-05-06 11:02:38.376] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=0] (34ms)
#> [2026-05-06 11:02:38.377] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=URINEMETABOLOME, input=data/source/libraries/sop/urinemetabolome/structures.zip, tag=urine]
#> [2026-05-06 11:02:38.409] [WARN ] Empty dataframe in select_sop_columns
#> [2026-05-06 11:02:38.414] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/urinemetabolome_prepared.tsv.gz, n_rows=0]
#> [2026-05-06 11:02:38.416] [INFO ] [OK] Completed: export_output [size_bytes=256] (1ms)
#> [2026-05-06 11:02:38.417] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=0] (40ms)
#> [2026-05-06 11:02:38.418] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=MCDB, input=data/source/libraries/sop/mcdb/structures.zip, tag=milk]
#> [2026-05-06 11:02:38.922] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/mcdb_prepared.tsv.gz, n_rows=2360]
#> [2026-05-06 11:02:38.935] [INFO ] [OK] Completed: export_output [size_bytes=86342] (12ms)
#> [2026-05-06 11:02:38.936] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=2360] (518ms)
#> [2026-05-06 11:02:38.937] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=SMPDB, input=data/source/libraries/sop/smpdb/structures.zip, tag=pathway]
#> [2026-05-06 11:02:52.622] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/smpdb_prepared.tsv.gz, n_rows=49817]
#> [2026-05-06 11:02:52.736] [INFO ] [OK] Completed: export_output [size_bytes=1443937] (114ms)
#> [2026-05-06 11:02:52.738] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=49817] (13.8s)
#> [2026-05-06 11:02:52.739] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=MIMEDB, input=data/source/libraries/sop/mimedb/structures.zip, tag=microbiome]
#> [2026-05-06 11:02:52.767] [WARN ] Empty dataframe in select_sop_columns
#> [2026-05-06 11:02:52.772] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/mimedb_prepared.tsv.gz, n_rows=0]
#> [2026-05-06 11:02:52.773] [INFO ] [OK] Completed: export_output [size_bytes=256] (1ms)
#> [2026-05-06 11:02:52.774] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=0] (36ms)
#> [2026-05-06 11:02:52.776] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=T3DB, input=data/source/libraries/sop/t3db/structures.zip, tag=toxin]
#> [2026-05-06 11:02:53.437] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/t3db_prepared.tsv.gz, n_rows=3525]
#> [2026-05-06 11:02:53.451] [INFO ] [OK] Completed: export_output [size_bytes=119896] (13ms)
#> [2026-05-06 11:02:53.452] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=3525] (676ms)
#> [2026-05-06 11:02:53.453] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=BOVINEDB, input=data/source/libraries/sop/bovinedb/structures.zip, tag=NA]
#> [2026-05-06 11:03:06.516] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/bovinedb_prepared.tsv.gz, n_rows=51684]
#> [2026-05-06 11:03:06.642] [INFO ] [OK] Completed: export_output [size_bytes=1568975] (126ms)
#> [2026-05-06 11:03:06.643] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=51684] (13.2s)
#> [2026-05-06 11:03:06.644] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=YMDB, input=data/source/libraries/sop/ymdb/structures.zip, tag=NA]
#> [2026-05-06 11:03:07.025] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/ymdb_prepared.tsv.gz, n_rows=2024]
#> [2026-05-06 11:03:07.037] [INFO ] [OK] Completed: export_output [size_bytes=83615] (12ms)
#> [2026-05-06 11:03:07.039] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=2024] (394ms)
#> [2026-05-06 11:03:07.040] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=CANNABISDATABASE, input=data/source/libraries/sop/cannabisdatabase/compounds.sdf, tag=NA]
#> [2026-05-06 11:03:08.204] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/cannabisdatabase_prepared.tsv.gz, n_rows=6220]
#> [2026-05-06 11:03:08.227] [INFO ] [OK] Completed: export_output [size_bytes=217494] (22ms)
#> [2026-05-06 11:03:08.228] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=6220] (1.2s)
#> ✔ lib_sop_hmd_fam_pre completed [30s, 3.52 MB]
#> + par_fin_par2 dispatched
#> ✔ par_fin_par2 completed [2ms, 3.37 kB]
#> + par_fin_par dispatched
#> ✔ par_fin_par completed [0ms, 332 B]
#> + par_usr_pre_lib_sop_clo dispatched
#> ✔ par_usr_pre_lib_sop_clo completed [1.6s, 267 B]
#> + par_usr_pre_lib_sop_lot dispatched
#> ✔ par_usr_pre_lib_sop_lot completed [1.5s, 174 B]
#> + par_usr_ann_spe dispatched
#> ✔ par_usr_ann_spe completed [1.5s, 1.20 kB]
#> + par_usr_pre_ann_gnp dispatched
#> ✔ par_usr_pre_ann_gnp completed [1.5s, 633 B]
#> + par_usr_ann_mas dispatched
#> ✔ par_usr_ann_mas completed [1.5s, 2.68 kB]
#> + par_usr_pre_fea_com dispatched
#> ✔ par_usr_pre_fea_com completed [1.5s, 200 B]
#> + par_usr_pre_fea_edg dispatched
#> ✔ par_usr_pre_fea_edg completed [1.5s, 328 B]
#> + par_usr_wei_ann dispatched
#> ✔ par_usr_wei_ann completed [1.5s, 1.80 kB]
#> + par_usr_pre_lib_sop_mer dispatched
#> ✔ par_usr_pre_lib_sop_mer completed [1.5s, 2.87 kB]
#> + par_usr_pre_tax dispatched
#> ✔ par_usr_pre_tax completed [1.5s, 438 B]
#> + par_usr_pre_lib_spe dispatched
#> ✔ par_usr_pre_lib_spe completed [1.5s, 322 B]
#> + par_usr_pre_lib_rt dispatched
#> ✔ par_usr_pre_lib_rt completed [1.5s, 487 B]
#> + par_usr_pre_ann_mzm dispatched
#> ✔ par_usr_pre_ann_mzm completed [1.5s, 635 B]
#> + par_usr_pre_lib_sop_ecm dispatched
#> ✔ par_usr_pre_lib_sop_ecm completed [1.5s, 176 B]
#> + par_usr_pre_ann_spe dispatched
#> ✔ par_usr_pre_ann_spe completed [1.5s, 656 B]
#> + par_usr_pre_lib_sop_hmd dispatched
#> ✔ par_usr_pre_lib_sop_hmd completed [1.5s, 178 B]
#> + par_usr_cre_com dispatched
#> ✔ par_usr_cre_com completed [1.5s, 200 B]
#> + par_usr_fil_ann dispatched
#> ✔ par_usr_fil_ann completed [1.5s, 739 B]
#> + par_usr_cre_edg_spe dispatched
#> ✔ par_usr_cre_edg_spe completed [1.5s, 475 B]
#> + par_usr_pre_fea_tab dispatched
#> ✔ par_usr_pre_fea_tab completed [1.6s, 274 B]
#> + par_usr_pre_ann_sir dispatched
#> ✔ par_usr_pre_ann_sir completed [1.5s, 859 B]
#> + par_usr_pre_lib_sop_big dispatched
#> ✔ par_usr_pre_lib_sop_big completed [1.5s, 107 B]
#> + par_pre_lib_sop_clo dispatched
#> ✔ par_pre_lib_sop_clo completed [1ms, 233 B]
#> + par_pre_lib_sop_lot dispatched
#> ✔ par_pre_lib_sop_lot completed [1ms, 185 B]
#> + par_ann_spe dispatched
#> ✔ par_ann_spe completed [2ms, 543 B]
#> + par_pre_ann_gnp dispatched
#> ✔ par_pre_ann_gnp completed [2ms, 324 B]
#> + par_ann_mas dispatched
#> ✔ par_ann_mas completed [3ms, 1.13 kB]
#> + par_pre_fea_com dispatched
#> ✔ par_pre_fea_com completed [1ms, 183 B]
#> + par_pre_fea_edg dispatched
#> ✔ par_pre_fea_edg completed [1ms, 243 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, 797 B]
#> + par_pre_tax dispatched
#> ✔ par_pre_tax completed [1ms, 330 B]
#> + par_pre_lib_spe dispatched
#> ✔ par_pre_lib_spe completed [2ms, 407 B]
#> + par_pre_lib_rt dispatched
#> ✔ par_pre_lib_rt completed [1ms, 375 B]
#> + par_pre_ann_mzm dispatched
#> ✔ par_pre_ann_mzm completed [1ms, 329 B]
#> + par_pre_lib_sop_ecm dispatched
#> ✔ par_pre_lib_sop_ecm completed [1ms, 190 B]
#> + par_pre_ann_spe dispatched
#> ✔ par_pre_ann_spe completed [1ms, 322 B]
#> + par_pre_lib_sop_hmd dispatched
#> ✔ par_pre_lib_sop_hmd completed [1ms, 192 B]
#> + par_cre_com dispatched
#> ✔ par_cre_com completed [1ms, 191 B]
#> + par_fil_ann dispatched
#> ✔ par_fil_ann completed [1ms, 360 B]
#> + par_cre_edg_spe dispatched
#> ✔ par_cre_edg_spe completed [2ms, 404 B]
#> + par_pre_fea_tab dispatched
#> ✔ par_pre_fea_tab completed [2ms, 278 B]
#> + par_pre_ann_sir dispatched
#> ✔ par_pre_ann_sir completed [1ms, 435 B]
#> + par_pre_lib_sop_big dispatched
#> ✔ par_pre_lib_sop_big completed [1ms, 153 B]
#> + lib_sop_clo_pre dispatched
#> [2026-05-06 11:03:46.248] [INFO ] Preparing closed structure-organism pairs library
#> [2026-05-06 11:03:46.249] [WARN ] Closed resource not accessible at: ~/Git/lotus-processor/data/processed/240412_closed_metadata.csv.gz. Returning empty template instead.
#> [2026-05-06 11:03:46.265] [INFO ] Exporting parameters to: data/interim/params/260506_110346_prepare_libraries_sop_closed.yaml
#> [2026-05-06 11:03:46.267] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/closed_prepared.tsv.gz, n_rows=1]
#> [2026-05-06 11:03:46.268] [INFO ] [OK] Completed: export_output [size_bytes=277] (1ms)
#> ✔ lib_sop_clo_pre completed [21ms, 277 B]
#> + lib_sop_lot_pre dispatched
#> [2026-05-06 11:03:46.372] [INFO ] > Starting: prepare_libraries_sop_lotus [input=data/source/libraries/sop/lotus.csv.gz]
#> [2026-05-06 11:03:55.936] [INFO ] [OK] Completed: prepare_libraries_sop_lotus [n_pairs=677545] (9.6s)
#> [2026-05-06 11:03:55.938] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/lotus_prepared.tsv.gz, n_rows=677545]
#> [2026-05-06 11:03:59.632] [INFO ] [OK] Completed: export_output [size_bytes=49541873] (3.7s)
#> ✔ lib_sop_lot_pre completed [13.3s, 49.54 MB]
#> + input_spectra dispatched
#> ✔ input_spectra completed [0ms, 7.77 MB]
#> + lib_sop_mer_cla_cache dispatched
#> [2026-05-06 11:04:00.062] [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  47% ■■■■■■■■■■■■■■■                   1s
#> Downloading 100% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■   0s
#> [2026-05-06 11:04:02.609] [INFO ] [OK] Completed: download_file [size_bytes=143087266] (2.5s)
#> ✔ lib_sop_mer_cla_cache completed [2.5s, 143.09 MB]
#> + lib_sop_mer_str_pro dispatched
#> [2026-05-06 11:04:02.790] [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-05-06 11:04:03.846] [INFO ] [OK] Completed: download_file [size_bytes=68730181] (1.1s)
#> ✔ lib_sop_mer_str_pro completed [1.1s, 68.73 MB]
#> + lib_sop_mer_npc_cache dispatched
#> [2026-05-06 11:04:03.986] [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  35% ■■■■■■■■■■■                       2s
#> Downloading  42% ■■■■■■■■■■■■■■                    2s
#> Downloading 100% ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■   0s
#> [2026-05-06 11:04:07.611] [INFO ] [OK] Completed: download_file [size_bytes=201875293] (3.6s)
#> ✔ lib_sop_mer_npc_cache completed [3.6s, 201.88 MB]
#> + lib_spe_exp_int_pre dispatched
#> [2026-05-06 11:04:07.810] [INFO ] > Starting: prepare_libraries_spectra [library_name=internal, n_input_files=1]
#> [2026-05-06 11:04:07.816] [WARN ] Input file(s) not found; creating empty library template
#> [2026-05-06 11:04:09.135] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/internal_prepared.tsv.gz, n_rows=1]
#> [2026-05-06 11:04:09.136] [INFO ] [OK] Completed: export_output [size_bytes=79] (1ms)
#> [2026-05-06 11:04:09.205] [INFO ] Exporting parameters to: data/interim/params/260506_110409_prepare_libraries_spectra.yaml
#> [2026-05-06 11:04:09.207] [INFO ] [OK] Completed: prepare_libraries_spectra [n_structures=1, n_spectra_total=2, files_exported=3] (1.4s)
#> ✔ lib_spe_exp_int_pre completed [1.4s, 1.28 kB]
#> + lib_rt dispatched
#> [2026-05-06 11:04:09.487] [INFO ] Preparing retention time libraries
#> [2026-05-06 11:04:09.500] [WARN ] No retention time library found, returning empty retention time and sop tables.
#> [2026-05-06 11:04:09.543] [INFO ] Exporting parameters to: data/interim/params/260506_110409_prepare_libraries_rt.yaml
#> [2026-05-06 11:04:09.545] [INFO ] > Starting: export_output [file=data/interim/libraries/rt/prepared.tsv.gz, n_rows=1]
#> [2026-05-06 11:04:09.546] [INFO ] [OK] Completed: export_output [size_bytes=86] (1ms)
#> [2026-05-06 11:04:09.549] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/rt_prepared.tsv.gz, n_rows=1]
#> [2026-05-06 11:04:09.550] [INFO ] [OK] Completed: export_output [size_bytes=105] (1ms)
#> ✔ lib_rt completed [65ms, 191 B]
#> + lib_sop_ecm_pre dispatched
#> [2026-05-06 11:04:09.774] [INFO ] Preparing ECMDB structure-organism pairs
#> [2026-05-06 11:04:10.423] [INFO ] Exporting parameters to: data/interim/params/260506_110410_prepare_libraries_sop_ecmdb.yaml
#> [2026-05-06 11:04:10.425] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/ecmdb_prepared.tsv.gz, n_rows=3760]
#> [2026-05-06 11:04:10.439] [INFO ] [OK] Completed: export_output [size_bytes=165776] (14ms)
#> ✔ lib_sop_ecm_pre completed [666ms, 165.78 kB]
#> + lib_sop_hmd_pre dispatched
#> [2026-05-06 11:04:10.678] [INFO ] > Starting: prepare_libraries_sop_hmdb_like [source=HMDB, input=data/source/libraries/sop/hmdb/structures.zip, tag=NA]
#> [2026-05-06 11:04:10.706] [WARN ] Empty dataframe in select_sop_columns
#> [2026-05-06 11:04:10.711] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/hmdb_prepared.tsv.gz, n_rows=0]
#> [2026-05-06 11:04:10.713] [INFO ] [OK] Completed: export_output [size_bytes=256] (1ms)
#> [2026-05-06 11:04:10.714] [INFO ] [OK] Completed: prepare_libraries_sop_hmdb_like [n_pairs=0] (36ms)
#> ✔ lib_sop_hmd_pre completed [38ms, 256 B]
#> + input_features dispatched
#> ✔ input_features completed [0ms, 451.55 kB]
#> + lib_sop_big_pre dispatched
#> [2026-05-06 11:04:11.155] [INFO ] Preparing BiGG structure-organism pairs
#> [2026-05-06 11:04:38.029] [INFO ] > Starting: process_smiles [n_structures=1420]
#> [2026-05-06 11:04:38.031] [INFO ] Processing SMILES with RDKit
#> Downloading uv...Done!
#> Downloading cpython-3.12.13-linux-x86_64-gnu (download) (32.5MiB)
#>  Downloaded cpython-3.12.13-linux-x86_64-gnu (download)
#> Downloading rdkit (35.3MiB)
#> Downloading numpy (15.9MiB)
#> Downloading pillow (6.8MiB)
#>  Downloaded pillow
#>  Downloaded numpy
#>  Downloaded rdkit
#> Installed 5 packages in 31ms
#> [2026-05-06 11:04:43.127] [INFO ] Processing 1419 new SMILES with RDKit
#> [2026-05-06 11:04:43.129] [INFO ] Starting SMILES processing pipeline
#> [2026-05-06 11:04:43.129] [INFO ] Input: /tmp/RtmpU6xg1k/file253a54fb949e.smi
#> [2026-05-06 11:04:43.129] [INFO ] Output: /tmp/RtmpU6xg1k/file253a1b726521.csv.gz
#> [2026-05-06 11:04:43.129] [INFO ] Input file validated: /tmp/RtmpU6xg1k/file253a54fb949e.smi
#> [2026-05-06 11:04:43.129] [INFO ] Output file validated: /tmp/RtmpU6xg1k/file253a1b726521.csv.gz
#> [2026-05-06 11:04:43.129] [INFO ] Processing parameters: workers=8, batch_size=1000, progress_interval=10000
#> [2026-05-06 11:04:43.129] [INFO ] SMILES supplier initialized
#> [2026-05-06 11:04:45.140] [INFO ] Processing complete. Total molecules processed: 1419
#> [2026-05-06 11:04:45.213] [INFO ] Successfully processed 1419 SMILES
#> [2026-05-06 11:04:45.223] [INFO ] [OK] Completed: process_smiles [n_processed=1419] (7.2s)
#> [2026-05-06 11:04:53.391] [INFO ] > Starting: process_smiles [n_structures=2085]
#> [2026-05-06 11:04:53.393] [INFO ] Processing SMILES with RDKit
#> [2026-05-06 11:04:53.403] [INFO ] Processing 1242 new SMILES with RDKit
#> [2026-05-06 11:04:53.405] [INFO ] Starting SMILES processing pipeline
#> [2026-05-06 11:04:53.405] [INFO ] Input: /tmp/RtmpU6xg1k/file253a1e8fd1f8.smi
#> [2026-05-06 11:04:53.405] [INFO ] Output: /tmp/RtmpU6xg1k/file253a4aed0ad7.csv.gz
#> [2026-05-06 11:04:53.405] [INFO ] Input file validated: /tmp/RtmpU6xg1k/file253a1e8fd1f8.smi
#> [2026-05-06 11:04:53.405] [INFO ] Output file validated: /tmp/RtmpU6xg1k/file253a4aed0ad7.csv.gz
#> [2026-05-06 11:04:53.405] [INFO ] Processing parameters: workers=8, batch_size=1000, progress_interval=10000
#> [2026-05-06 11:04:53.405] [INFO ] SMILES supplier initialized
#> [2026-05-06 11:04:55.204] [INFO ] Processing complete. Total molecules processed: 1242
#> [2026-05-06 11:04:55.241] [INFO ] Successfully processed 1242 SMILES
#> [2026-05-06 11:04:55.250] [INFO ] [OK] Completed: process_smiles [n_processed=1242] (1.9s)
#> [2026-05-06 11:04:55.348] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/bigg_prepared.tsv.gz, n_rows=2355]
#> [2026-05-06 11:04:55.361] [INFO ] [OK] Completed: export_output [size_bytes=81981] (13ms)
#> ✔ lib_sop_big_pre completed [44.2s, 81.98 kB]
#> + fea_edg_spe dispatched
#> [2026-05-06 11:04:55.743] [INFO ] > Starting: create_edges_spectra [method=gnps, threshold=0.7, n_input_files=1]
#> [2026-05-06 11:04:55.744] [INFO ] Creating spectral similarity network edges
#> [2026-05-06 11:04:55.745] [INFO ] Importing spectra from: data/source/example_spectra.mgf
#> [2026-05-06 11:04:55.771] [INFO ] Reading MGF file (7.41 MB) with optimized parser: data/source/example_spectra.mgf
#> [2026-05-06 11:04:57.752] [INFO ] Processed 10000 spectra...
#> [2026-05-06 11:04:59.226] [INFO ] Total spectra read: 16282
#> [2026-05-06 11:05:05.626] [INFO ] Loaded 16282 spectra from file
#> [2026-05-06 11:05:05.637] [INFO ] Combining replicate spectra by FEATURE_ID
#> [2026-05-06 11:05:07.935] [INFO ] Combined replicates: 12195 -> 4087 spectra
#> [2026-05-06 11:05:07.970] [INFO ] Sanitizing 4087 spectra (cutoff: 0)
#> [2026-05-06 11:05:09.060] [INFO ] Sanitization complete: 3999/4087 spectra retained (97.8%, 88 removed)
#> [2026-05-06 11:05:09.061] [INFO ] Import complete: 3999 spectra ready for analysis
#> [2026-05-06 11:05:09.062] [INFO ] ======================================
#> [2026-05-06 11:05:09.063] [INFO ] Take yourself a break, you deserve it.
#> [2026-05-06 11:05:09.064] [INFO ] ======================================
#> [2026-05-06 11:05:09.065] [INFO ] > Starting: create_edges [n_spectra=3999, method=gnps, threshold=0.7, min_peaks=6]
#> [2026-05-06 11:05:23.174] [INFO ] Processed 500 / 3998 queries
#> [2026-05-06 11:05:35.253] [INFO ] Processed 1000 / 3998 queries
#> [2026-05-06 11:05:45.379] [INFO ] Processed 1500 / 3998 queries
#> [2026-05-06 11:05:53.738] [INFO ] Processed 2000 / 3998 queries
#> [2026-05-06 11:06:00.036] [INFO ] Processed 2500 / 3998 queries
#> [2026-05-06 11:06:04.566] [INFO ] Processed 3000 / 3998 queries
#> [2026-05-06 11:06:07.307] [INFO ] Processed 3500 / 3998 queries
#> [2026-05-06 11:06:08.265] [INFO ] Here is the distribution of edge similarity scores (0.1 bins) BEFORE filtering:
#> [2026-05-06 11:06:08.267] [INFO ] 
#>        bin       N
#>    [0,0.1] 5759390
#>  (0.1,0.2] 1201848
#>  (0.2,0.3]  509850
#>  (0.3,0.4]  239674
#>  (0.4,0.5]  126023
#>  (0.5,0.6]   68810
#>  (0.6,0.7]   39955
#>  (0.7,0.8]   23824
#>  (0.8,0.9]   10727
#>    (0.9,1]   13900
#> [2026-05-06 11:06:08.270] [INFO ] [OK] Completed: create_edges [n_edges=7265, n_comparisons=7994001, pass_rate=0.1%] (59.2s)
#> [2026-05-06 11:06:08.345] [INFO ] Exporting parameters to: data/interim/params/260506_110608_create_edges_spectra.yaml
#> [2026-05-06 11:06:08.347] [INFO ] > Starting: export_output [file=data/interim/features/example_edgesSpectra.tsv, n_rows=9905]
#> [2026-05-06 11:06:08.350] [INFO ] [OK] Completed: export_output [size_bytes=454521] (3ms)
#> [2026-05-06 11:06:08.351] [INFO ] [OK] Completed: create_edges_spectra [n_edges=9905] (1m 13s)
#> ✔ fea_edg_spe completed [1m 12.6s, 454.52 kB]
#> + lib_spe_exp_int_pre_neg dispatched
#> ✔ lib_spe_exp_int_pre_neg completed [0ms, 600 B]
#> + lib_spe_exp_int_pre_sop dispatched
#> ✔ lib_spe_exp_int_pre_sop completed [0ms, 79 B]
#> + lib_spe_exp_int_pre_pos dispatched
#> ✔ lib_spe_exp_int_pre_pos completed [0ms, 600 B]
#> + lib_rt_rts dispatched
#> ✔ lib_rt_rts completed [1ms, 86 B]
#> + lib_rt_sop dispatched
#> ✔ lib_rt_sop completed [0ms, 105 B]
#> + fea_pre dispatched
#> [2026-05-06 11:06:10.568] [INFO ] > Starting: prepare_features_tables [input=data/source/example_features.csv, candidates=1]
#> [2026-05-06 11:06:10.683] [INFO ] Prepared 5328 feature-sample pairs
#> [2026-05-06 11:06:10.684] [INFO ] [OK] Completed: prepare_features_tables [n_features=5328] (116ms)
#> [2026-05-06 11:06:10.708] [INFO ] Exporting parameters to: data/interim/params/260506_110610_prepare_features_tables.yaml
#> [2026-05-06 11:06:10.710] [INFO ] > Starting: export_output [file=data/interim/features/example_features.tsv.gz, n_rows=5328]
#> [2026-05-06 11:06:10.723] [INFO ] [OK] Completed: export_output [size_bytes=95629] (13ms)
#> ✔ fea_pre completed [157ms, 95.63 kB]
#> + ann_spe_neg dispatched
#> [2026-05-06 11:06:11.131] [INFO ] ============================================================
#> [2026-05-06 11:06:11.132] [INFO ] Data Sanitizing: Pre-flight Checks
#> [2026-05-06 11:06:11.133] [INFO ] ============================================================
#> [2026-05-06 11:06:11.134] [INFO ] Checking MGF file...
#> [2026-05-06 11:06:11.593] [INFO ] [OK] MGF file: 12195 MS2 spectra found
#> [2026-05-06 11:06:11.594] [INFO ] ============================================================
#> [2026-05-06 11:06:11.595] [INFO ] [OK] All pre-flight checks passed!
#> [2026-05-06 11:06:11.596] [INFO ] Data validation complete. Ready to proceed.
#> [2026-05-06 11:06:11.597] [INFO ] ============================================================
#> [2026-05-06 11:06:11.598] [INFO ] Starting spectral annotation in neg mode
#> [2026-05-06 11:06:11.599] [INFO ] Importing spectra from: data/source/example_spectra.mgf
#> [2026-05-06 11:06:11.600] [INFO ] Reading MGF file (7.41 MB) with optimized parser: data/source/example_spectra.mgf
#> [2026-05-06 11:06:13.537] [INFO ] Processed 10000 spectra...
#> [2026-05-06 11:06:14.946] [INFO ] Total spectra read: 16282
#> [2026-05-06 11:06:21.328] [INFO ] Loaded 16282 spectra from file
#> [2026-05-06 11:06:21.346] [INFO ] Combining replicate spectra by FEATURE_ID
#> [2026-05-06 11:06:21.350] [INFO ] Combined replicates: 0 -> 0 spectra
#> [2026-05-06 11:06:21.387] [WARN ] No spectra to sanitize
#> [2026-05-06 11:06:21.388] [INFO ] Import complete: 0 spectra ready for analysis
#> [2026-05-06 11:06:21.389] [WARN ] No query spectra loaded
#> [2026-05-06 11:06:21.392] [INFO ] Exporting parameters to: data/interim/params/260506_110621_annotate_spectra.yaml
#> [2026-05-06 11:06:21.393] [WARN ] Returning empty annotation template
#> [2026-05-06 11:06:21.395] [INFO ] > Starting: export_output [file=data/interim/annotations/example_spectralMatches_neg.tsv.gz, n_rows=1]
#> [2026-05-06 11:06:21.397] [INFO ] [OK] Completed: export_output [size_bytes=254] (1ms)
#> ✔ ann_spe_neg completed [10.3s, 254 B]
#> + ann_spe_pos dispatched
#> [2026-05-06 11:06:21.935] [INFO ] ============================================================
#> [2026-05-06 11:06:21.936] [INFO ] Data Sanitizing: Pre-flight Checks
#> [2026-05-06 11:06:21.937] [INFO ] ============================================================
#> [2026-05-06 11:06:21.938] [INFO ] Checking MGF file...
#> [2026-05-06 11:06:22.398] [INFO ] [OK] MGF file: 12195 MS2 spectra found
#> [2026-05-06 11:06:22.399] [INFO ] ============================================================
#> [2026-05-06 11:06:22.400] [INFO ] [OK] All pre-flight checks passed!
#> [2026-05-06 11:06:22.401] [INFO ] Data validation complete. Ready to proceed.
#> [2026-05-06 11:06:22.401] [INFO ] ============================================================
#> [2026-05-06 11:06:22.402] [INFO ] Starting spectral annotation in pos mode
#> [2026-05-06 11:06:22.403] [INFO ] Importing spectra from: data/source/example_spectra.mgf
#> [2026-05-06 11:06:22.404] [INFO ] Reading MGF file (7.41 MB) with optimized parser: data/source/example_spectra.mgf
#> [2026-05-06 11:06:24.313] [INFO ] Processed 10000 spectra...
#> [2026-05-06 11:06:25.581] [INFO ] Total spectra read: 16282
#> [2026-05-06 11:06:32.004] [INFO ] Loaded 16282 spectra from file
#> [2026-05-06 11:06:32.025] [INFO ] Combining replicate spectra by FEATURE_ID
#> [2026-05-06 11:06:32.927] [INFO ] Combined replicates: 12195 -> 4087 spectra
#> [2026-05-06 11:06:32.964] [INFO ] Sanitizing 4087 spectra (cutoff: 0)
#> [2026-05-06 11:06:34.227] [INFO ] Sanitization complete: 3999/4087 spectra retained (97.8%, 88 removed)
#> [2026-05-06 11:06:34.229] [INFO ] Import complete: 3999 spectra ready for analysis
#> [2026-05-06 11:06:34.230] [INFO ] Importing spectra from: data/interim/libraries/spectra/is/isdbnormansusdat_14854025_pos.rds
#> [2026-05-06 11:06:35.946] [INFO ] Loaded 210419 spectra from file
#> [2026-05-06 11:06:36.089] [INFO ] Import complete: 210419 spectra ready for analysis
#> [2026-05-06 11:06:36.091] [INFO ] Importing spectra from: data/interim/libraries/spectra/is/wikidata_5607185_pos.rds
#> [2026-05-06 11:07:03.518] [INFO ] Loaded 994408 spectra from file
#> [2026-05-06 11:07:04.209] [INFO ] Import complete: 994408 spectra ready for analysis
#> [2026-05-06 11:07:04.210] [INFO ] Importing spectra from: data/interim/libraries/spectra/exp/internal_pos.rds
#> [2026-05-06 11:07:04.211] [INFO ] Loaded 1 spectra from file
#> [2026-05-06 11:07:04.214] [INFO ] Import complete: 0 spectra ready for analysis
#> [2026-05-06 11:07:04.216] [INFO ] Importing spectra from: data/interim/libraries/spectra/exp/gnps_11566051_pos.rds
#> [2026-05-06 11:07:10.699] [INFO ] Loaded 272264 spectra from file
#> [2026-05-06 11:07:10.872] [INFO ] Import complete: 272263 spectra ready for analysis
#> [2026-05-06 11:07:10.873] [INFO ] Importing spectra from: data/interim/libraries/spectra/exp/massbank_202510_pos.rds
#> [2026-05-06 11:07:11.485] [INFO ] Loaded 62855 spectra from file
#> [2026-05-06 11:07:11.530] [INFO ] Import complete: 62855 spectra ready for analysis
#> [2026-05-06 11:07:11.531] [INFO ] Importing spectra from: data/interim/libraries/spectra/exp/merlin_16984129_pos.rds
#> [2026-05-06 11:07:17.832] [INFO ] Loaded 328190 spectra from file
#> [2026-05-06 11:07:18.055] [INFO ] Import complete: 328190 spectra ready for analysis
#> [2026-05-06 11:07:28.198] [INFO ] 
#>              library spectra unique_structures
#>      ISDB - Wikidata  994408            994393
#>               merlin  328190             42486
#>                 gnps  272263             22882
#>  ISDB - NormanSusDat  210419             87502
#>             massbank   62855              7140
#> [2026-05-06 11:07:30.987] [INFO ] > Starting: calculate_entropy_similarity [n_library=617491, n_query=3999, method=gnps]
#> [2026-05-06 11:07:30.989] [INFO ] Calculating entropy and similarity for 3999 spectra
#> [2026-05-06 11:07:39.520] [INFO ] Processed 500 / 3999 queries
#> [2026-05-06 11:07:46.679] [INFO ] Processed 1000 / 3999 queries
#> [2026-05-06 11:07:52.834] [INFO ] Processed 1500 / 3999 queries
#> [2026-05-06 11:07:58.318] [INFO ] Processed 2000 / 3999 queries
#> [2026-05-06 11:08:03.613] [INFO ] Processed 2500 / 3999 queries
#> [2026-05-06 11:08:09.801] [INFO ] Processed 3000 / 3999 queries
#> [2026-05-06 11:08:14.308] [INFO ] Processed 3500 / 3999 queries
#> [2026-05-06 11:08:17.847] [INFO ] Processed 3999 / 3999 queries
#> [2026-05-06 11:08:17.881] [INFO ] [OK] Completed: calculate_entropy_similarity [n_comparisons=1213608] (46.9s)
#> [2026-05-06 11:08:17.892] [INFO ] > Starting: harmonize_adducts [n_rows=617491]
#> [2026-05-06 11:22:14.019] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=70, n_unique_after=66] (13m 56s)
#> [2026-05-06 11:22:14.600] [INFO ] Here is the distribution of annotation similarity scores (0.1 bins):
#> [2026-05-06 11:22:14.601] [INFO ] 
#>        bin      N
#>    [0,0.1] 585700
#>  (0.1,0.2]  64784
#>  (0.2,0.3]  25877
#>  (0.3,0.4]  12055
#>  (0.4,0.5]   5991
#>  (0.5,0.6]   2803
#>  (0.6,0.7]   1178
#>  (0.7,0.8]    744
#>  (0.8,0.9]    545
#>    (0.9,1]    274
#> [2026-05-06 11:22:14.642] [INFO ] 327617 Candidates annotated on 3827 features (threshold >= 0).
#> [2026-05-06 11:22:14.645] [INFO ] Exporting parameters to: data/interim/params/260506_112214_annotate_spectra.yaml
#> [2026-05-06 11:22:14.647] [INFO ] > Starting: export_output [file=data/interim/annotations/example_spectralMatches_pos.tsv.gz, n_rows=699951]
#> [2026-05-06 11:22:17.050] [INFO ] [OK] Completed: export_output [size_bytes=41615142] (2.4s)
#> ✔ ann_spe_pos completed [15m 55.2s, 41.62 MB]
#> + lib_sop_mer dispatched
#> [2026-05-06 11:22:18.168] [INFO ] > Starting: prepare_libraries_sop_merged [n_libraries=25, filter_enabled=FALSE, filter_level=none]
#> [2026-05-06 11:22:22.946] [INFO ] Splitting SOP library into standardized components
#> [2026-05-06 11:22:23.761] [INFO ] > Starting: process_smiles [n_structures=1427573]
#> [2026-05-06 11:22:23.762] [INFO ] Processing SMILES with RDKit
#> [2026-05-06 11:22:32.535] [INFO ] Processing 24 new SMILES with RDKit
#> [2026-05-06 11:22:32.537] [INFO ] Starting SMILES processing pipeline
#> [2026-05-06 11:22:32.537] [INFO ] Input: /tmp/RtmpU6xg1k/file253a7e0571b2.smi
#> [2026-05-06 11:22:32.537] [INFO ] Output: /tmp/RtmpU6xg1k/file253a76506a31.csv.gz
#> [2026-05-06 11:22:32.537] [INFO ] Input file validated: /tmp/RtmpU6xg1k/file253a7e0571b2.smi
#> [2026-05-06 11:22:32.537] [INFO ] Output file validated: /tmp/RtmpU6xg1k/file253a76506a31.csv.gz
#> [2026-05-06 11:22:32.537] [INFO ] Processing parameters: workers=8, batch_size=1000, progress_interval=10000
#> [2026-05-06 11:22:32.538] [INFO ] SMILES supplier initialized
#> [11:22:32] Explicit valence for atom # 1 N, 3, is greater than permitted
#> [11:22:32] ERROR: Could not sanitize molecule on line 5
#> [11:22:32] ERROR: Explicit valence for atom # 1 N, 3, is greater than permitted
#> [11:22:32] Explicit valence for atom # 31 O, 3, is greater than permitted
#> [11:22:32] ERROR: Could not sanitize molecule on line 8
#> [11:22:32] ERROR: Explicit valence for atom # 31 O, 3, is greater than permitted
#> [11:22:32] Explicit valence for atom # 4 N, 4, is greater than permitted
#> [11:22:32] ERROR: Could not sanitize molecule on line 9
#> [11:22:32] ERROR: Explicit valence for atom # 4 N, 4, is greater than permitted
#> [11:22:32] Explicit valence for atom # 26 N, 4, is greater than permitted
#> [11:22:32] ERROR: Could not sanitize molecule on line 10
#> [11:22:32] ERROR: Explicit valence for atom # 26 N, 4, is greater than permitted
#> [11:22:32] Explicit valence for atom # 0 Ar, 1, is greater than permitted
#> [11:22:32] ERROR: Could not sanitize molecule on line 11
#> [11:22:32] ERROR: Explicit valence for atom # 0 Ar, 1, is greater than permitted
#> [11:22:32] Explicit valence for atom # 0 O, 3, is greater than permitted
#> [11:22:32] ERROR: Could not sanitize molecule on line 12
#> [11:22:32] ERROR: Explicit valence for atom # 0 O, 3, is greater than permitted
#> [11:22:32] Explicit valence for atom # 7 O, 3, is greater than permitted
#> [11:22:32] ERROR: Could not sanitize molecule on line 13
#> [11:22:32] ERROR: Explicit valence for atom # 7 O, 3, is greater than permitted
#> [11:22:32] Explicit valence for atom # 6 Al, 6, is greater than permitted
#> [11:22:32] ERROR: Could not sanitize molecule on line 14
#> [11:22:32] ERROR: Explicit valence for atom # 6 Al, 6, is greater than permitted
#> [11:22:32] Explicit valence for atom # 2 Al, 4, is greater than permitted
#> [11:22:32] ERROR: Could not sanitize molecule on line 15
#> [11:22:32] ERROR: Explicit valence for atom # 2 Al, 4, is greater than permitted
#> [11:22:32] Explicit valence for atom # 3 Al, 5, is greater than permitted
#> [11:22:32] ERROR: Could not sanitize molecule on line 16
#> [11:22:32] ERROR: Explicit valence for atom # 3 Al, 5, is greater than permitted
#> [11:22:32] Explicit valence for atom # 9 C, 5, is greater than permitted
#> [11:22:32] ERROR: Could not sanitize molecule on line 17
#> [11:22:32] ERROR: Explicit valence for atom # 9 C, 5, is greater than permitted
#> [11:22:32] Explicit valence for atom # 1 F, 2, is greater than permitted
#> [11:22:32] ERROR: Could not sanitize molecule on line 18
#> [11:22:32] ERROR: Explicit valence for atom # 1 F, 2, is greater than permitted
#> [11:22:32] Explicit valence for atom # 0 Br, 1, is greater than permitted
#> [11:22:32] ERROR: Could not sanitize molecule on line 19
#> [11:22:32] ERROR: Explicit valence for atom # 0 Br, 1, is greater than permitted
#> [11:22:32] Explicit valence for atom # 1 Br, 5, is greater than permitted
#> [11:22:32] ERROR: Could not sanitize molecule on line 20
#> [11:22:32] ERROR: Explicit valence for atom # 1 Br, 5, is greater than permitted
#> [11:22:32] Explicit valence for atom # 1 Br, 3, is greater than permitted
#> [11:22:32] ERROR: Could not sanitize molecule on line 21
#> [11:22:32] ERROR: Explicit valence for atom # 1 Br, 3, is greater than permitted
#> [11:22:32] Explicit valence for atom # 4 Sb, 8, is greater than permitted
#> [11:22:32] ERROR: Could not sanitize molecule on line 22
#> [11:22:32] ERROR: Explicit valence for atom # 4 Sb, 8, is greater than permitted
#> [11:22:32] Explicit valence for atom # 0 P, 11, is greater than permitted
#> [11:22:32] ERROR: Could not sanitize molecule on line 23
#> [11:22:32] ERROR: Explicit valence for atom # 0 P, 11, is greater than permitted
#> [11:22:32] Can't kekulize mol.  Unkekulized atoms: 6 7 8 9 10 11 12 13 14
#> [11:22:32] ERROR: Could not sanitize molecule on line 24
#> [11:22:32] ERROR: Can't kekulize mol.  Unkekulized atoms: 6 7 8 9 10 11 12 13 14
#> [11:22:32] Explicit valence for atom # 56 P, 7, is greater than permitted
#> [2026-05-06 11:22:32.547] [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
#> [11:22:32] Explicit valence for atom # 4 P, 7, is greater than permitted
#> [2026-05-06 11:22:32.548] [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
#> [2026-05-06 11:22:32.549] [WARNING] Batch processing: 2/6 molecules failed
#> [2026-05-06 11:22:32.550] [INFO ] Processing complete. Total molecules processed: 4
#> [2026-05-06 11:22:32.586] [INFO ] Successfully processed 4 SMILES
#> [2026-05-06 11:22:38.549] [INFO ] [OK] Completed: process_smiles [n_processed=1393144] (14.8s)
#> [2026-05-06 11:22:52.411] [INFO ] Referenced structure-organism pairs (739,318)
#> [2026-05-06 11:22:57.233] [INFO ] Structures: 302,973 stereoisomers, 1,020,435 without stereochemistry, 1,096,839 constitutional isomers
#> [2026-05-06 11:23:11.289] [INFO ] Unique organisms (37,468)
#> [2026-05-06 11:23:11.400] [INFO ] Processing 813 organism name(s) for OTT taxonomy lookup
#> [2026-05-06 11:23:11.684] [INFO ] Querying OTT API in 9 batches
#> [2026-05-06 11:23:13.815] [INFO ] Retrieving detailed taxonomy for 4 unique OTT IDs
#> [2026-05-06 11:23:14.193] [INFO ] Got OTTaxonomy!
#> [2026-05-06 11:23:14.482] [INFO ] Enriching NPClassifier taxonomy from additional cache: data/interim/libraries/sop/merged/structures/taxonomies/npc.tsv.gz
#> [2026-05-06 11:23:24.036] [INFO ] Enriched NPClassifier taxonomy with 1102881 entries from additional cache (1102881 missing keys matched)
#> [2026-05-06 11:23:30.863] [INFO ] Updated additional NPClassifier cache (1783925 total entries): data/interim/libraries/sop/merged/structures/taxonomies/npc.tsv.gz
#> [2026-05-06 11:23:31.293] [INFO ] Enriching ClassyFire taxonomy from additional cache: data/interim/libraries/sop/merged/structures/taxonomies/classyfire_cache.csv
#> [2026-05-06 11:23:35.203] [INFO ] Enriched ClassyFire taxonomy with 54149 entries from additional cache (54149 missing keys matched)
#> [2026-05-06 11:23:37.421] [INFO ] Updated additional ClassyFire cache (1106056 total entries): data/interim/libraries/sop/merged/structures/taxonomies/classyfire_cache.csv
#> [2026-05-06 11:23:37.446] [INFO ] Exporting parameters to: data/interim/params/260506_112337_prepare_libraries_sop_merged.yaml
#> [2026-05-06 11:23:37.447] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/merged/keys.tsv.gz, n_rows=739318]
#> [2026-05-06 11:23:38.664] [INFO ] [OK] Completed: export_output [size_bytes=18733247] (1.2s)
#> [2026-05-06 11:23:38.666] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/merged/organisms/taxonomies/ott.tsv.gz, n_rows=36757]
#> [2026-05-06 11:23:38.758] [INFO ] [OK] Completed: export_output [size_bytes=1013363] (92ms)
#> [2026-05-06 11:23:38.760] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/merged/structures/canonical.tsv.gz, n_rows=1392481]
#> [2026-05-06 11:23:42.002] [INFO ] [OK] Completed: export_output [size_bytes=25360889] (3.2s)
#> [2026-05-06 11:23:42.004] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/merged/structures/stereo.tsv.gz, n_rows=1323408]
#> [2026-05-06 11:23:46.727] [INFO ] [OK] Completed: export_output [size_bytes=59751807] (4.7s)
#> [2026-05-06 11:23:46.729] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/merged/structures/metadata.tsv.gz, n_rows=1097254]
#> [2026-05-06 11:23:47.909] [INFO ] [OK] Completed: export_output [size_bytes=21853916] (1.2s)
#> [2026-05-06 11:23:47.911] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/merged/structures/taxonomies/classyfire.tsv.gz, n_rows=278332]
#> [2026-05-06 11:23:48.177] [INFO ] [OK] Completed: export_output [size_bytes=5570992] (266ms)
#> [2026-05-06 11:23:48.179] [INFO ] > Starting: export_output [file=data/interim/libraries/sop/merged/structures/taxonomies/npc.tsv.gz, n_rows=1323499]
#> [2026-05-06 11:23:50.437] [INFO ] [OK] Completed: export_output [size_bytes=19165118] (2.3s)
#> [2026-05-06 11:23:50.439] [INFO ] [OK] Completed: prepare_libraries_sop_merged [n_pairs=739318, n_structures=1323408, n_organisms=36757, files_exported=7] (1m 32s)
#> ✔ lib_sop_mer completed [1m 32.3s, 151.45 MB]
#> + lib_mer_str_met dispatched
#> ✔ lib_mer_str_met completed [0ms, 21.85 MB]
#> + lib_mer_str_stereo dispatched
#> ✔ lib_mer_str_stereo completed [1ms, 59.75 MB]
#> + lib_mer_str_tax_cla dispatched
#> ✔ lib_mer_str_tax_cla completed [0ms, 5.57 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, 18.73 MB]
#> + lib_mer_org_tax_ott dispatched
#> ✔ lib_mer_org_tax_ott completed [0ms, 1.01 MB]
#> + ann_spe_exp_gnp_pre dispatched
#> [2026-05-06 11:23:53.894] [INFO ] > Starting: prepare_annotations_gnps [n_files=1]
#> [2026-05-06 11:23:53.895] [WARN ] No GNPS annotations found, returning an empty file instead
#> [2026-05-06 11:23:53.898] [INFO ] [OK] Completed: prepare_annotations_gnps [n_annotations=1] (4ms)
#> [2026-05-06 11:23:53.916] [INFO ] Exporting parameters to: data/interim/params/260506_112353_prepare_annotations_gnps.yaml
#> [2026-05-06 11:23:53.918] [INFO ] > Starting: export_output [file=data/interim/annotations/example_gnpsPrepared.tsv.gz, n_rows=1]
#> [2026-05-06 11:23:53.919] [INFO ] [OK] Completed: export_output [size_bytes=254] (2ms)
#> ✔ ann_spe_exp_gnp_pre completed [27ms, 254 B]
#> + ann_sir_pre dispatched
#> [2026-05-06 11:23:54.236] [INFO ] > Starting: prepare_annotations_sirius [version=6]
#> [2026-05-06 11:23:54.376] [INFO ] > Starting: process_smiles [n_structures=2563]
#> [2026-05-06 11:23:54.377] [INFO ] Processing SMILES with RDKit
#> [2026-05-06 11:23:59.904] [INFO ] Processing 9 new SMILES with RDKit
#> [2026-05-06 11:23:59.906] [INFO ] Starting SMILES processing pipeline
#> [2026-05-06 11:23:59.906] [INFO ] Input: /tmp/RtmpU6xg1k/file253a3df479e0.smi
#> [2026-05-06 11:23:59.906] [INFO ] Output: /tmp/RtmpU6xg1k/file253a5d9ab5cc.csv.gz
#> [2026-05-06 11:23:59.906] [INFO ] Input file validated: /tmp/RtmpU6xg1k/file253a3df479e0.smi
#> [2026-05-06 11:23:59.906] [INFO ] Output file validated: /tmp/RtmpU6xg1k/file253a5d9ab5cc.csv.gz
#> [2026-05-06 11:23:59.906] [INFO ] Processing parameters: workers=8, batch_size=1000, progress_interval=10000
#> [2026-05-06 11:23:59.906] [INFO ] SMILES supplier initialized
#> [11:23:59] Explicit valence for atom # 8 Cl, 3, is greater than permitted
#> [11:23:59] ERROR: Could not sanitize molecule on line 1
#> [11:23:59] ERROR: Explicit valence for atom # 8 Cl, 3, is greater than permitted
#> [11:23:59] Explicit valence for atom # 4 P, 7, is greater than permitted
#> [11:23:59] ERROR: Could not sanitize molecule on line 2
#> [11:23:59] ERROR: Explicit valence for atom # 4 P, 7, is greater than permitted
#> [11:23:59] Explicit valence for atom # 2 P, 7, is greater than permitted
#> [11:23:59] ERROR: Could not sanitize molecule on line 3
#> [11:23:59] ERROR: Explicit valence for atom # 2 P, 7, is greater than permitted
#> [11:23:59] Explicit valence for atom # 4 P, 7, is greater than permitted
#> [11:23:59] ERROR: Could not sanitize molecule on line 4
#> [11:23:59] ERROR: Explicit valence for atom # 4 P, 7, is greater than permitted
#> [11:23:59] Explicit valence for atom # 2 P, 7, is greater than permitted
#> [11:23:59] ERROR: Could not sanitize molecule on line 5
#> [11:23:59] ERROR: Explicit valence for atom # 2 P, 7, is greater than permitted
#> [11:23:59] Explicit valence for atom # 6 P, 7, is greater than permitted
#> [11:23:59] ERROR: Could not sanitize molecule on line 6
#> [11:23:59] ERROR: Explicit valence for atom # 6 P, 7, is greater than permitted
#> [11:23:59] Explicit valence for atom # 6 P, 7, is greater than permitted
#> [11:23:59] ERROR: Could not sanitize molecule on line 7
#> [11:23:59] ERROR: Explicit valence for atom # 6 P, 7, is greater than permitted
#> [11:23:59] Explicit valence for atom # 4 P, 7, is greater than permitted
#> [11:23:59] ERROR: Could not sanitize molecule on line 8
#> [11:23:59] ERROR: Explicit valence for atom # 4 P, 7, is greater than permitted
#> [11:23:59] Explicit valence for atom # 2 P, 7, is greater than permitted
#> [11:23:59] ERROR: Could not sanitize molecule on line 9
#> [11:23:59] ERROR: Explicit valence for atom # 2 P, 7, is greater than permitted
#> [2026-05-06 11:23:59.907] [INFO ] Processing complete. Total molecules processed: 0
#> [2026-05-06 11:23:59.935] [INFO ] Successfully processed 0 SMILES
#> [2026-05-06 11:24:06.551] [INFO ] [OK] Completed: process_smiles [n_processed=2555] (12.2s)
#> [2026-05-06 11:24:06.579] [INFO ] > Starting: complement_metadata [n_input=2571]
#> [2026-05-06 11:24:18.965] [INFO ] [OK] Completed: complement_metadata [n_enriched=2571] (12.4s)
#> [2026-05-06 11:24:18.976] [INFO ] [OK] Completed: prepare_annotations_sirius [n_canopus=15, n_formulas=18, n_structures=2571] (24.7s)
#> [2026-05-06 11:24:19.000] [INFO ] Exporting parameters to: data/interim/params/260506_112419_prepare_annotations_sirius.yaml
#> [2026-05-06 11:24:19.002] [INFO ] > Starting: export_output [file=data/interim/annotations/example_canopusPrepared.tsv.gz, n_rows=15]
#> [2026-05-06 11:24:19.004] [INFO ] [OK] Completed: export_output [size_bytes=830] (2ms)
#> [2026-05-06 11:24:19.005] [INFO ] > Starting: export_output [file=data/interim/annotations/example_formulaPrepared.tsv.gz, n_rows=18]
#> [2026-05-06 11:24:19.006] [INFO ] [OK] Completed: export_output [size_bytes=514] (1ms)
#> [2026-05-06 11:24:19.008] [INFO ] > Starting: export_output [file=data/interim/annotations/example_siriusPrepared.tsv.gz, n_rows=2571]
#> [2026-05-06 11:24:19.022] [INFO ] [OK] Completed: export_output [size_bytes=97178] (14ms)
#> ✔ ann_sir_pre completed [24.8s, 98.52 kB]
#> + ann_spe_exp_mzm_pre dispatched
#> [2026-05-06 11:24:20.083] [INFO ] > Starting: prepare_annotations_mzmine [n_files=1]
#> [2026-05-06 11:24:20.084] [WARN ] No mzmine annotations found, returning an empty file instead
#> [2026-05-06 11:24:20.086] [INFO ] [OK] Completed: prepare_annotations_mzmine [n_annotations=1] (3ms)
#> [2026-05-06 11:24:20.100] [INFO ] Exporting parameters to: data/interim/params/260506_112420_prepare_annotations_mzmine.yaml
#> [2026-05-06 11:24:20.101] [INFO ] > Starting: export_output [file=data/interim/annotations/example_mzminePrepared.tsv.gz, n_rows=1]
#> [2026-05-06 11:24:20.103] [INFO ] [OK] Completed: export_output [size_bytes=254] (1ms)
#> ✔ ann_spe_exp_mzm_pre completed [24ms, 254 B]
#> + ann_spe_pre dispatched
#> [2026-05-06 11:24:20.466] [INFO ] Preparing spectral matching annotations from 2 file(s)
#> [2026-05-06 11:24:28.026] [INFO ] > Starting: process_smiles [n_structures=327617]
#> [2026-05-06 11:24:28.027] [INFO ] Processing SMILES with RDKit
#> [2026-05-06 11:24:37.552] [INFO ] All SMILES already in cache, no processing needed
#> [2026-05-06 11:24:50.871] [INFO ] > Starting: complement_metadata [n_input=699951]
#> [2026-05-06 11:25:26.586] [INFO ] [OK] Completed: complement_metadata [n_enriched=699951] (35.7s)
#> [2026-05-06 11:25:26.603] [INFO ] Exporting parameters to: data/interim/params/260506_112526_prepare_annotations_spectra.yaml
#> [2026-05-06 11:25:26.605] [INFO ] > Starting: export_output [file=data/interim/annotations/example_spectralMatchesPrepared.tsv.gz, n_rows=699951]
#> [2026-05-06 11:25:30.279] [INFO ] [OK] Completed: export_output [size_bytes=76471841] (3.7s)
#> ✔ ann_spe_pre completed [1m 9.8s, 76.47 MB]
#> + ann_ms1_pre dispatched
#> [2026-05-06 11:25:31.118] [INFO ] > Starting: annotate_masses [ms_mode=pos, tolerance_ppm=10, tolerance_rt=0.02]
#> [2026-05-06 11:25:31.119] [INFO ] Starting mass-based annotation
#> [2026-05-06 11:25:31.120] [INFO ] ============================================================
#> [2026-05-06 11:25:31.120] [INFO ] Data Sanitizing: Pre-flight Checks
#> [2026-05-06 11:25:31.121] [INFO ] ============================================================
#> [2026-05-06 11:25:31.122] [INFO ] Checking features file...
#> [2026-05-06 11:25:31.156] [INFO ] [OK] Features file: 5328 rows, 5 columns
#> [2026-05-06 11:25:31.157] [INFO ] ============================================================
#> [2026-05-06 11:25:31.158] [INFO ] [OK] All pre-flight checks passed!
#> [2026-05-06 11:25:31.159] [INFO ] Data validation complete. Ready to proceed.
#> [2026-05-06 11:25:31.160] [INFO ] ============================================================
#> [2026-05-06 11:25:31.194] [INFO ] Processing 5328 features for annotation
#> [2026-05-06 11:25:42.949] [INFO ] Already 2112 adducts previously detected. These will be kept as explicit annotation hypotheses alongside the [M+H]+/[M-H]- baseline (non-strict precedence): a wrong pre-assignment can never fully block annotation.
#> [2026-05-06 11:25:42.951] [INFO ] > Starting: harmonize_adducts [n_rows=5328]
#> [2026-05-06 11:25:46.618] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=13, n_unique_after=13] (3.7s)
#> [2026-05-06 11:25:46.678] [INFO ] Here are the top 10 observed m/z differences inside the RT windows:
#> [2026-05-06 11:25:46.680] [INFO ] 
#>              bin   N
#>  (4.8501,5.0366] 352
#>  (21.822,22.009] 283
#>   (16.973,17.16] 208
#>  (17.906,18.092] 192
#>  (15.854,16.041] 172
#>    (39.914,40.1] 143
#>  (38.981,39.168] 137
#>  (34.878,35.065] 115
#>  (77.962,78.148] 114
#>  (1.8659,2.0524] 108
#> [2026-05-06 11:25:46.681] [INFO ] These differences may help identify potential preprocessing issues
#> [2026-05-06 11:25:46.937] [INFO ] > Starting: harmonize_adducts [n_rows=10005]
#> [2026-05-06 11:26:06.232] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=42, n_unique_after=41] (19.3s)
#> [2026-05-06 11:26:06.258] [INFO ] > Starting: harmonize_adducts [n_rows=10659]
#> [2026-05-06 11:26:26.837] [INFO ] [OK] Completed: harmonize_adducts [n_unique_before=234, n_unique_after=228] (20.6s)
#> [2026-05-06 11:27:24.739] [INFO ] Breakdown of the annotated adduct species:
#> [2026-05-06 11:27:24.742] [INFO ] 
#>                  adduct      N
#>                  [M+H]+ 113496
#>                 [M+Na]+  20465
#>                [2M+Na]+  16348
#>                [M+H4N]+  15015
#>               [2M+H4N]+  12549
#>              [M-H2O+H]+  12180
#>                 [2M+H]+   9204
#>             [M+H2O+Na]+   3971
#>                  [M+K]+   3440
#>             [M-H4O2+H]+   2715
#>            [M+H2O+H4N]+   2037
#>               [2M+Ca]2+   1712
#>                [M-O+H]+   1580
#>                [M+Ca]2+   1573
#>                [M+H2]2+   1528
#>           [M+C2H3N+Na]+   1451
#>               [M+Fe-H]+   1450
#>             [M-C2O2+H]+   1303
#>                 [2M+K]+   1242
#>              [M+H2O+K]+   1024
#>             [M-2H2O+H]+    891
#>              [M-H+2Na]+    814
#>            [M+C2H3N+H]+    792
#>               [M-CO+H]+    752
#>                [M+HK]2+    657
#>               [M+NaCl]+    654
#>             [2M-H2O+H]+    632
#>                [M+H2O]+    628
#>          [M-C6H10O5+H]+    602
#>                    [M]+    599
#>              [M+H+H2O]+    588
#>         [M-H+C2H3N+Fe]+    567
#>                [M+Fe]2+    552
#>          [M-C6H10O4+H]+    550
#>              [M+Fe-H2]+    545
#>          [M-C6H12O6+H]+    542
#>              [M+C2H3N]+    541
#>             [M-H6O3+H]+    510
#>           [M-H+Fe+H2O]+    425
#>             [M+H+NaCl]+    422
#>               [M+Na2]2+    409
#>               [M-H+Fe]+    406
#>               [M+HNa]2+    398
#>           [M+C2H3N+Cu]+    396
#>           [M-C5H8O4+H]+    392
#>                 [M+Cu]+    385
#>             [M+Cu+H2O]+    383
#>              [M-CO2+H]+    337
#>           [M+H4N+NaCl]+    337
#>               [2M+Fe]2+    334
#>        [M-H2+C2H3N+Fe]+    320
#>           [M-CO-H2O+H]+    315
#>               [M-O+Na]+    306
#>                [M+Mg]2+    282
#>             [M+K+NaCl]+    280
#>                [M-H2O]+    275
#>               [2M+Mg]2+    255
#>          [M-H2+Fe+H2O]+    233
#>            [M+Cu+NaCl]+    225
#>            [M+Na+NaCl]+    209
#>            [M-H2O-O+H]+    204
#>           [M-C6H6O3+H]+    174
#>              [M-H2+Fe]+    173
#>          [M-H2O+C2H3N]+    169
#>           [M-C8H8O3+H]+    160
#>                [M+2H]2+    146
#>          [M+C2H3N+H4N]+    125
#>          [M-H+Fe+NaCl]+    120
#>           [M-C8H8O4+H]+    115
#>            [M-H2O4S+H]+     98
#>        [M-H4O2+H2O+Na]+     85
#>        [M-C6H10O5+H4N]+     82
#>         [M-C6H10O4+Na]+     78
#>         [M-C12H20O8+H]+     71
#>            [M+C2H3N+K]+     70
#>           [M-C3H6O3+H]+     66
#>        [M-C12H20O10+H]+     65
#>          [M-H2O4S+H4N]+     64
#>         [M-C6H10O5+Na]+     54
#>        [M-C6H10O4+H4N]+     54
#>            [M-H3N+H2O]+     50
#>              [M-H3N+H]+     41
#>          [M-C6H6O3+Na]+     37
#>      [M-C8H10O4+H2O+K]+     33
#>             [M-H2O+Na]+     28
#>          [M-C8H8O3+Cu]+     28
#>              [M-CO2+K]+     27
#>               [M-H4O2]+     23
#>          [M-CO2+C2H3N]+     23
#>             [M-H2O+Cu]+     22
#>   [M-C6H12O6-H+Fe+H2O]+     22
#>          [M-O+C2H3N+H]+     19
#>         [M-C3H6O3+H4N]+     19
#>                [M-H3N]+     18
#>            [M-H4O2+Na]+     17
#>         [M-C6H12O6+Na]+     17
#>         [M-H2+Fe+NaCl]+     17
#>              [M-O+H4N]+     16
#>         [M-C2O2-H2O+H]+     15
#>      [M-C6H10O4-H2O+H]+     15
#>               [M+Na3]3+     14
#>      [M-C12H20O10+H2O]+     13
#>    [M-H2-H2O+C2H3N+Fe]+     13
#>                [M-O+K]+     12
#>            [M-C6H12O6]+     12
#>           [M-C6H8O4+H]+     12
#>          [M-CO+Cu+H2O]+     12
#>       [M-H2O+H4N+NaCl]+     12
#>              [M-O+H2O]+     11
#>             [2M-H+2Na]+     11
#>             [M-H3N+Na]+     11
#>          [M-C8H10O4+H]+     11
#>       [M-H6O3+Na+NaCl]+     11
#>      [M-C6H10O4+H2O+K]+     11
#>     [M-H-H2O+C2H3N+Fe]+     11
#>    [M-C12H20O10-H2O+H]+     11
#>                [M+H3]3+     11
#>          [M-H2O-H3N+H]+     10
#>        [M-C6H12O6+H4N]+     10
#>        [M-C6H12O6+H2O]+     10
#>            [M-CH6O3+H]+      9
#>             [2M-O+H4N]+      8
#>         [M-H3N+H+NaCl]+      8
#>     [M-C3H6O3+H2O+H4N]+      8
#>            [M-H6O3+Na]+      7
#>            [M-C2O2+Na]+      7
#>            [M-H2O+H4N]+      7
#>            [2M-2H2O+H]+      7
#>           [M-C2O2+H4N]+      7
#>         [M-O+H4N+NaCl]+      7
#>       [M-H6O3+H2O+H4N]+      7
#>     [M-C6H10O5+K+NaCl]+      7
#>               [M-O+Cu]+      6
#>              [M-H2O+K]+      6
#>             [M-CHO2+H]+      6
#>           [M-O+H2O+Na]+      6
#>       [M-C5H8O4-H2O+H]+      6
#>      [M-CH6O3+H2O+H4N]+      6
#>   [M-C6H10O4+H4N+NaCl]+      6
#>             [M-C5H8O4]+      5
#>            [M-C6H10O5]+      5
#>         [M-C8H10O4+Na]+      5
#>         [M-H2O-H6O3+H]+      5
#>         [M-C11H10O4+H]+      5
#>        [M-C8H10O4+H4N]+      5
#>        [M-C12H20O8+Na]+      5
#>           [M-C5H8O4+K]+      4
#>           [M-H4O2+H2O]+      4
#>           [M-H2O4S+Na]+      4
#>          [M-C6H10O5+K]+      4
#>          [M-H2-H3N+Fe]+      4
#>      [M-C5H8O4+H2O+Na]+      4
#>          [M-C8H8O4+Cu]+      3
#>          [M-C6H12O6+K]+      3
#>          [M-H4O2+NaCl]+      3
#>          [M-C5H8O4+Na]+      3
#>        [M-C6H10O5+H2O]+      3
#>        [M-H2O+C2H3N+H]+      3
#>       [M-C3H6O3-H2+Fe]+      3
#>               [M-CO+K]+      2
#>              [M-CO+Na]+      2
#>             [M-CO+H2O]+      2
#>             [M-CO+H4N]+      2
#>          [M-C12H20O10]+      2
#>         [M-C3H6O3+H2O]+      2
#>         [M-C8H8O4+H2O]+      2
#>        [M-CO+H4N+NaCl]+      2
#>      [M-C5H8O4+H+NaCl]+      2
#>      [M-C5H8O4+Cu+H2O]+      2
#>      [M-H-H2O+Fe+NaCl]+      2
#>     [M-C6H12O6+Cu+H2O]+      2
#>  [M-C12H20O10+Na+NaCl]+      2
#>                  [M-O]+      1
#>                 [M-CO]+      1
#>              [M-CH3+K]+      1
#>             [M-C2O2+K]+      1
#>           [M-CHO2+H4N]+      1
#>           [M-C8H8O4+K]+      1
#>         [M-H3N+Cu+H2O]+      1
#>         [M-H2O+H+NaCl]+      1
#>         [M-H3N+H2O+Na]+      1
#>        [M-C3H6O3-H+Fe]+      1
#>        [M-H3N+Na+NaCl]+      1
#>        [M-CH6O3+H2O+K]+      1
#>        [M-C6H10O4+H2O]+      1
#>       [M-C6H10O5+NaCl]+      1
#>       [M-C5H8O4+H2O+K]+      1
#>       [M-H2O+C2H3N+Na]+      1
#>      [M-C6H10O5+H2O+K]+      1
#>      [M-C6H10O5+H+H2O]+      1
#>      [M-C8H8O4+H+NaCl]+      1
#>     [M-C6H10O5+Cu+H2O]+      1
#>     [M-C6H10O4+Cu+H2O]+      1
#>   [M-C8H10O4+H4N+NaCl]+      1
#>   [M-C6H10O4+C2H3N+Na]+      1
#> [2026-05-06 11:27:24.743] [INFO ] > Starting: decorate_masses [n_annotations=246172]
#> [2026-05-06 11:27:24.785] [INFO ] MS1 annotations: 53029 unique structures across 4540 features
#> [2026-05-06 11:27:24.787] [INFO ] [OK] Completed: decorate_masses [n_structures=53029, n_features=4540] (44ms)
#> [2026-05-06 11:27:24.851] [INFO ] Exporting parameters to: data/interim/params/260506_112724_annotate_masses.yaml
#> [2026-05-06 11:27:24.852] [INFO ] > Starting: export_output [file=data/interim/features/example_edgesMasses.tsv, n_rows=5481]
#> [2026-05-06 11:27:24.854] [INFO ] [OK] Completed: export_output [size_bytes=120015] (2ms)
#> [2026-05-06 11:27:26.163] [INFO ] > Starting: process_smiles [n_structures=53041]
#> [2026-05-06 11:27:26.164] [INFO ] Processing SMILES with RDKit
#> [2026-05-06 11:27:33.187] [INFO ] Processing 194 new SMILES with RDKit
#> [2026-05-06 11:27:33.188] [INFO ] Starting SMILES processing pipeline
#> [2026-05-06 11:27:33.188] [INFO ] Input: /tmp/RtmpU6xg1k/file253a62d13e1.smi
#> [2026-05-06 11:27:33.188] [INFO ] Output: /tmp/RtmpU6xg1k/file253a2ab316f4.csv.gz
#> [2026-05-06 11:27:33.189] [INFO ] Input file validated: /tmp/RtmpU6xg1k/file253a62d13e1.smi
#> [2026-05-06 11:27:33.189] [INFO ] Output file validated: /tmp/RtmpU6xg1k/file253a2ab316f4.csv.gz
#> [2026-05-06 11:27:33.189] [INFO ] Processing parameters: workers=8, batch_size=1000, progress_interval=10000
#> [2026-05-06 11:27:33.189] [INFO ] SMILES supplier initialized
#> [2026-05-06 11:27:33.589] [INFO ] Processing complete. Total molecules processed: 194
#> [2026-05-06 11:27:33.630] [INFO ] Successfully processed 194 SMILES
#> [2026-05-06 11:27:40.321] [INFO ] [OK] Completed: process_smiles [n_processed=53043] (14.2s)
#> [2026-05-06 11:27:41.007] [INFO ] > Starting: complement_metadata [n_input=246172]
#> [2026-05-06 11:28:04.458] [INFO ] [OK] Completed: complement_metadata [n_enriched=246172] (23.5s)
#> [2026-05-06 11:28:04.460] [INFO ] > Starting: export_output [file=data/interim/annotations/example_ms1Prepared.tsv.gz, n_rows=246172]
#> [2026-05-06 11:28:05.691] [INFO ] [OK] Completed: export_output [size_bytes=18633219] (1.2s)
#> [2026-05-06 11:28:05.692] [INFO ] [OK] Completed: annotate_masses [n_annotations=246172, n_edges=2728] (2m 35s)
#> ✔ ann_ms1_pre completed [2m 34.6s, 18.75 MB]
#> + tax_pre dispatched
#> [2026-05-06 11:28:06.770] [INFO ] > Starting: prepare_taxa [taxon=NULL]
#> [2026-05-06 11:28:06.927] [INFO ] Processing 2 organism name(s) for OTT taxonomy lookup
#> [2026-05-06 11:28:07.119] [INFO ] Querying OTT API in 1 batches
#> [2026-05-06 11:28:07.285] [INFO ] Retrying failed queries using genus names only
#> [2026-05-06 11:28:07.291] [INFO ] Retrying with 1 genus names: blk 
#> [2026-05-06 11:28:07.453] [INFO ] Retrieving detailed taxonomy for 1 unique OTT IDs
#> [2026-05-06 11:28:07.557] [INFO ] Got OTTaxonomy!
#> [2026-05-06 11:28:07.998] [INFO ] [OK] Completed: prepare_taxa [n_features=5328] (1.2s)
#> [2026-05-06 11:28:08.029] [INFO ] Exporting parameters to: data/interim/params/260506_112808_prepare_taxa.yaml
#> [2026-05-06 11:28:08.031] [INFO ] > Starting: export_output [file=data/interim/taxa/example_taxed.tsv.gz, n_rows=5328]
#> [2026-05-06 11:28:08.038] [INFO ] [OK] Completed: export_output [size_bytes=19697] (7ms)
#> ✔ tax_pre completed [1.3s, 19.70 kB]
#> + ann_sir_pre_str dispatched
#> ✔ ann_sir_pre_str completed [0ms, 97.18 kB]
#> + ann_sir_pre_for dispatched
#> ✔ ann_sir_pre_for completed [0ms, 514 B]
#> + ann_sir_pre_can dispatched
#> ✔ ann_sir_pre_can completed [1ms, 830 B]
#> + ann_ms1_pre_edg dispatched
#> ✔ ann_ms1_pre_edg completed [0ms, 120.02 kB]
#> + ann_ms1_pre_ann dispatched
#> ✔ ann_ms1_pre_ann completed [0ms, 18.63 MB]
#> + fea_edg_pre dispatched
#> [2026-05-06 11:28:10.097] [INFO ] > Starting: prepare_features_edges [n_edge_types=2]
#> [2026-05-06 11:28:10.142] [INFO ] [OK] Completed: prepare_features_edges [n_edges=13763] (45ms)
#> [2026-05-06 11:28:10.163] [INFO ] Exporting parameters to: data/interim/params/260506_112810_prepare_features_edges.yaml
#> [2026-05-06 11:28:10.165] [INFO ] > Starting: export_output [file=data/interim/features/example_edges.tsv, n_rows=13763]
#> [2026-05-06 11:28:10.169] [INFO ] [OK] Completed: export_output [size_bytes=622860] (3ms)
#> ✔ fea_edg_pre completed [74ms, 622.86 kB]
#> + ann_fil dispatched
#> [2026-05-06 11:28:10.506] [INFO ] > Starting: filter_annotations [n_annotation_files=5, tolerance_rt=Inf]
#> [2026-05-06 11:28:10.508] [INFO ] Filtering annotations
#> [2026-05-06 11:28:10.544] [INFO ] Processing 5328 unique features for annotation filtering
#> [2026-05-06 11:28:17.683] [INFO ] Removing MS1 annotations superseded by quality spectral matches
#> [2026-05-06 11:28:20.743] [INFO ] Removed 10524 redundant MS1 annotations
#> [2026-05-06 11:28:20.744] [INFO ] Total annotations after MS1 deduplication: 938172
#> [2026-05-06 11:28:22.382] [INFO ] Joining RT library and computing RT errors
#> [2026-05-06 11:28:25.011] [INFO ] Removed 36448 duplicate RT library matches (keeping best match per annotation)
#> [2026-05-06 11:28:25.014] [INFO ] RT errors computed for 0 annotations (no hard cutoff applied; scoring handles RT penalty)
#> [2026-05-06 11:28:25.016] [INFO ] Removed 36448 duplicate RT library matches during join
#> [2026-05-06 11:28:26.930] [INFO ] Exporting parameters to: data/interim/params/260506_112826_filter_annotations.yaml
#> [2026-05-06 11:28:26.931] [INFO ] > Starting: export_output [file=data/interim/annotations/example_annotationsFiltered.tsv.gz, n_rows=901939]
#> [2026-05-06 11:28:31.274] [INFO ] [OK] Completed: export_output [size_bytes=80175278] (4.3s)
#> [2026-05-06 11:28:31.276] [INFO ] [OK] Completed: filter_annotations [n_filtered=901939] (20.8s)
#> ✔ ann_fil completed [20.8s, 80.18 MB]
#> + fea_com dispatched
#> [2026-05-06 11:28:32.166] [INFO ] > Starting: create_components [n_input_files=1]
#> [2026-05-06 11:28:32.167] [INFO ] Creating components from 1 edge file(s)
#> [2026-05-06 11:28:32.179] [INFO ] Loaded 13494 edges connecting 5328 unique features
#> [2026-05-06 11:28:32.190] [INFO ] Found 2249 components
#> [2026-05-06 11:28:32.203] [INFO ] Component sizes - Min: 1, Max: 2083, Mean: 2.4
#> [2026-05-06 11:28:32.219] [INFO ] Exporting parameters to: data/interim/params/260506_112832_create_components.yaml
#> [2026-05-06 11:28:32.220] [INFO ] > Starting: export_output [file=data/interim/features/example_components.tsv, n_rows=5328]
#> [2026-05-06 11:28:32.222] [INFO ] [OK] Completed: export_output [size_bytes=46996] (2ms)
#> [2026-05-06 11:28:32.223] [INFO ] Components written to: data/interim/features/example_components.tsv
#> [2026-05-06 11:28:32.224] [INFO ] [OK] Completed: create_components [n_components=2249, n_features=5328] (58ms)
#> ✔ fea_com completed [62ms, 47.00 kB]
#> + fea_com_pre dispatched
#> [2026-05-06 11:28:32.582] [INFO ] > Starting: prepare_features_components [n_files=1]
#> [2026-05-06 11:28:32.587] [INFO ] [OK] Completed: prepare_features_components [n_assignments=5328] (5ms)
#> [2026-05-06 11:28:32.603] [INFO ] Exporting parameters to: data/interim/params/260506_112832_prepare_features_components.yaml
#> [2026-05-06 11:28:32.604] [INFO ] > Starting: export_output [file=data/interim/features/example_componentsPrepared.tsv, n_rows=5328]
#> [2026-05-06 11:28:32.606] [INFO ] [OK] Completed: export_output [size_bytes=46991] (2ms)
#> ✔ fea_com_pre completed [28ms, 46.99 kB]
#> + ann_wei dispatched
#> [2026-05-06 11:28:32.942] [INFO ] Starting annotation weighting and scoring
#> [2026-05-06 11:28:32.943] [INFO ] > Starting: weight_annotations [n_candidates_neighbors=16, n_candidates_final=1]
#> [2026-05-06 11:28:52.986] [INFO ] 
#>    candidate_library      n
#>      ISDB - Wikidata 586738
#>             TIMA MS1 199657
#>               merlin  41565
#>  ISDB - NormanSusDat  40926
#>                 gnps  25234
#>             massbank   5039
#>               SIRIUS   2561
#> [2026-05-06 11:29:01.475] [INFO ] > Starting: weight_bio [n_annotations=762406, n_sop=744385]
#> [2026-05-06 11:29:01.476] [INFO ] Weighting 762406 annotations by biological source
#> [2026-05-06 11:29:07.822] [INFO ] [OK] Completed: weight_bio [n_weighted=762406] (6.3s)
#> [2026-05-06 11:29:07.824] [INFO ] > Starting: decorate_bio [n_annotations=762406]
#> [2026-05-06 11:29:08.188] [INFO ] Taxonomically informed metabolite annotation reranked:
#>     Kingdom  level: 186692 candidates (45130 unique)
#>     Phylum   level: 185449 candidates (44642 unique)
#>     Class    level: 152648 candidates (38676 unique)
#>     Order    level: 36126 candidates (10381 unique)
#>     Family   level: 29587 candidates (8304 unique)
#>     Tribe    level: 6048 candidates (1356 unique)
#>     Genus    level: 5001 candidates (1057 unique)
#>     Species  level: 2763 candidates (528 unique)
#>     Variety  level: 404 candidates (101 unique)
#>     Biota    level: 404 candidates (101 unique)
#> [2026-05-06 11:29:08.189] [INFO ] [OK] Completed: decorate_bio [n_processed=762406] (365ms)
#> [2026-05-06 11:29:08.191] [INFO ] > Starting: clean_bio [n_annotations=762406, minimal_consistency=0]
#> [2026-05-06 11:29:33.386] [INFO ] [OK] Completed: clean_bio [n_cleaned=762406] (25.2s)
#> [2026-05-06 11:29:33.388] [INFO ] > Starting: weight_chemo [n_input=762406]
#> [2026-05-06 11:29:33.389] [INFO ] Weighting 762406 annotations by chemical consistency
#> [2026-05-06 11:29:37.869] [INFO ] [OK] Completed: weight_chemo [n_weighted=762406] (4.5s)
#> [2026-05-06 11:29:37.871] [INFO ] > Starting: decorate_chemo [n_annotations=762406]
#> [2026-05-06 11:29:39.287] [INFO ] Chemically informed metabolite annotation reranked:
#>   Classyfire:
#>     Kingdom level:    131144 candidates (80899 unique)
#>     Superclass level: 93134 candidates (52725 unique)
#>     Class level:      70628 candidates (37872 unique)
#>     Parent level:     47915 candidates (25928 unique)
#>   NPClassifier:
#>     Pathway level:    178924 candidates (104430 unique)
#>     Superclass level: 107113 candidates (59337 unique)
#>     Class level:      67970 candidates (35532 unique)
#> [2026-05-06 11:29:39.288] [INFO ] [OK] Completed: decorate_chemo [n_processed=762406] (1.4s)
#> [2026-05-06 11:29:39.318] [INFO ] > Starting: clean_chemo [n_annotations=762406, candidates_final=1, high_confidence=FALSE]
#> [2026-05-06 11:30:02.958] [INFO ] Sampling candidates for 3337 features with more than 7 candidates per score
#> [2026-05-06 11:30:02.959] [INFO ] > Starting: filter_high_confidence [n_input=530901, context=filtered]
#> [2026-05-06 11:30:02.995] [INFO ] [filtered]  Removed 528398 low-confidence candidates (99.5% of 530901 total)
#> [2026-05-06 11:30:02.996] [INFO ] [filtered]  2503 high-confidence candidates remaining (0.5%)
#> [2026-05-06 11:30:02.997] [INFO ] [OK] Completed: filter_high_confidence [n_filtered=2503, n_removed=528398] (37ms)
#> [2026-05-06 11:30:03.000] [INFO ] Summarizing annotation results
#> [2026-05-06 11:30:03.132] [INFO ] Annotated features: 901/5328 (16.9%)
#> [2026-05-06 11:30:06.135] [INFO ] Summarizing annotation results
#> [2026-05-06 11:30:13.987] [INFO ] Annotated features: 5111/5328 (95.9%)
#> [2026-05-06 11:30:15.700] [INFO ] [OK] Completed: clean_chemo [n_final_full=530901, n_final_filtered=5636, n_final_mini=5636, n_features=5328] (36.4s)
#> [2026-05-06 11:30:15.702] [INFO ] [OK] Completed: weight_annotations [n_annotations=NULL] (1m 43s)
#> [2026-05-06 11:30:15.724] [INFO ] Exporting parameters to: data/processed/20260506_113015_example/260506_113015_prepare_params.yaml
#> [2026-05-06 11:30:15.746] [INFO ] Exporting parameters to: data/processed/20260506_113015_example/260506_113015_prepare_params_advanced.yaml
#> [2026-05-06 11:30:15.748] [INFO ] > Starting: export_output [file=data/processed/20260506_113015_example/example_results_mini.tsv, n_rows=5636]
#> [2026-05-06 11:30:15.751] [INFO ] [OK] Completed: export_output [size_bytes=1191124] (3ms)
#> [2026-05-06 11:30:15.753] [INFO ] > Starting: export_output [file=data/processed/20260506_113015_example/example_results_filtered.tsv, n_rows=5636]
#> [2026-05-06 11:30:15.758] [INFO ] [OK] Completed: export_output [size_bytes=1443441] (6ms)
#> [2026-05-06 11:30:15.760] [INFO ] > Starting: export_output [file=data/processed/20260506_113015_example/example_results.tsv, n_rows=530901]
#> [2026-05-06 11:30:16.461] [INFO ] [OK] Completed: export_output [size_bytes=282945913] (701ms)
#> [2026-05-06 11:30:16.462] [INFO ] Results exported: example_results.tsv
#> ✔ ann_wei completed [1m 43.5s, 284.39 MB]
#> ✔ ended pipeline [31m 3.9s, 138 completed, 0 skipped]
#> There were 17 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-05-06},
  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.” May 6. https://taxonomicallyinformedannotation.github.io/tima/vignettes/articles/III-processing.html.