This repository contains the methods and code used to analyze ion types in https://metabolomics.blog/2024/10/isf/.
An overview of the process is illustrated below.
To replicate our analysis, you will need the following software:
- The custom MZmine version available from the https://github.com/Adafede/mzmine/tree/fragments_analysis fork
- As it is not yet included in the latest MZmine version, building it might be not so simple... for details about installation, refer to https://mzmine.github.io/mzmine_documentation/contribute_intellij.html.
- Python (>=3.10)
- Poetry:
curl -sSL https://install.python-poetry.org | python3 - - to install python dependencies:
poetry install
- Poetry:
- R (>=4.3) (to reproduce the figures)
In case you just want to give a quick try, 6 example files are provided in data/example/*.mzml.
To replicate the full analysis, you will need the following datasets:
- Direct Injection ToF 20ev Positive:
⚠️ TO BE UPLOADED SOON⚠️ - Direct Injection ToF 40ev Positive:
⚠️ TO BE UPLOADED SOON⚠️ - Direct Injection ToF 60ev Positive:
⚠️ TO BE UPLOADED SOON⚠️ - Direct Injection Obitrap Positive: zenodo.13890851
- Direct Injection Obitrap Negative: zenodo.13890851
- Liquid Chromatography Astral Positive: MSV000093526
For the files on MASSIVE, a convenience script using https://github.com/Wang-Bioinformatics-Lab/downloadpublicdata is available:
poetry run python3 ./notebooks/download_massive.py ./data/MSV000093526.txt ./data/source/MSV000093526 ./data/source/MSV000093526/MSV000093526_summary.tsvFor the files on Zenodo, a convenience script is available:
poetry run python3 ./notebooks/download_zenodo.py https://doi.org/10.5281/zenodo.13890851 20231123_mzml_mce_scaffold_positive.zip ./data/source/20231123_mzml_mce_scaffold_positive.zip --unzip
poetry run python3 ./notebooks/download_zenodo.py https://doi.org/10.5281/zenodo.13890851 20231123_mzml_mce_scaffold_negative.zip ./data/source/20231123_mzml_mce_scaffold_negative.zip --unzipTo use the MZmine ion type analysis module:
# NOTE: `mzmine-dev` refers to the MZmine executable built from the above mentioned branch
mzmine-dev -batch ".mzmine/batch/di_tof_example.mzbatch" -i "./data/example/*.mzML" -o "./data/example/di_tof_10_20ev_pos/{}"This will give you the results for the example file.
To reproduce the full results:
mzmine-dev -batch ".mzmine/batch/di_ot_2.5_neg.mzbatch" -i "./data/source/20231123_mzml_mce_scaffold_negative/*.mzML" -o "./data/di_ot_2.5_neg/{}"
mzmine-dev -batch ".mzmine/batch/di_ot_2.5_pos.mzbatch" -i "./data/source/20231123_mzml_mce_scaffold_positive/*.mzML" -o "./data/di_ot_2.5_pos/{}"
mzmine-dev -batch ".mzmine/batch/di_tof_0_pos.mzbatch" -i "/Volumes/biol_imsb_sauer_1/users/Adriano/01_projects/02_library/02_raw_data/inhouse/01_zeno/all_converted/CID/20/*.mzML" -o "./data/di_tof_0_20ev_pos/{}"
mzmine-dev -batch ".mzmine/batch/di_tof_10_pos.mzbatch" -i "/Volumes/biol_imsb_sauer_1/users/Adriano/01_projects/02_library/02_raw_data/inhouse/01_zeno/all_converted/CID/20/*.mzML" -o "./data/di_tof_10_20ev_pos/{}"
mzmine-dev -batch ".mzmine/batch/di_tof_100_pos.mzbatch" -i "/Volumes/biol_imsb_sauer_1/users/Adriano/01_projects/02_library/02_raw_data/inhouse/01_zeno/all_converted/CID/20/*.mzML" -o "./data/di_tof_100_20ev_pos/{}"
mzmine-dev -batch ".mzmine/batch/di_tof_0_pos.mzbatch" -i "/Volumes/biol_imsb_sauer_1/users/Adriano/01_projects/02_library/02_raw_data/inhouse/01_zeno/all_converted/CID/40/*.mzML" -o "./data/di_tof_0_40ev_pos/{}"
mzmine-dev -batch ".mzmine/batch/di_tof_10_pos.mzbatch" -i "/Volumes/biol_imsb_sauer_1/users/Adriano/01_projects/02_library/02_raw_data/inhouse/01_zeno/all_converted/CID/40/*.mzML" -o "./data/di_tof_10_40ev_pos/{}"
mzmine-dev -batch ".mzmine/batch/di_tof_100_pos.mzbatch" -i "/Volumes/biol_imsb_sauer_1/users/Adriano/01_projects/02_library/02_raw_data/inhouse/01_zeno/all_converted/CID/40/*.mzML" -o "./data/di_tof_100_40ev_pos/{}"
mzmine-dev -batch ".mzmine/batch/di_tof_0_pos.mzbatch" -i "/Volumes/biol_imsb_sauer_1/users/Adriano/01_projects/02_library/02_raw_data/inhouse/01_zeno/all_converted/CID/60/*.mzML" -o "./data/di_tof_0_60ev_pos/{}"
mzmine-dev -batch ".mzmine/batch/di_tof_10_pos.mzbatch" -i "/Volumes/biol_imsb_sauer_1/users/Adriano/01_projects/02_library/02_raw_data/inhouse/01_zeno/all_converted/CID/60/*.mzML" -o "./data/di_tof_10_60ev_pos/{}"
mzmine-dev -batch ".mzmine/batch/di_tof_100_pos.mzbatch" -i "/Volumes/biol_imsb_sauer_1/users/Adriano/01_projects/02_library/02_raw_data/inhouse/01_zeno/all_converted/CID/60/*.mzML" -o "./data/di_tof_100_60ev_pos/{}"
mzmine-dev -batch ".mzmine/batch/lc_at_5_pos.mzbatch" -i "./data/source/MSV000093526/*.mzML" -o "./data/lc_at_5_pos/{}"To speed up the process on the large sets, we first detect features corresponding to the injected compounds only (we still link all other ones later on).
For this, you'll need the library files available in TODO
Some of the negative runs in the DI-Orbitrap dataset do not contain any matching scan and would cause issues if not removed:
poetry run python3 ./notebooks/remove_empty.py -d ./data/di_ot_2.5_negYou can reproduce the figures by using the following command:
# NOTE: remove the `--args example=TRUE` if you have all datasets
R < ./inst/scripts/plot_figures.R --no-save --args example=TRUEListed alphabetically below are the individuals whose contributions—whether through sharing ideas, code, or data—have been essential to the current analysis:
To promote transparency and dialogue, we encourage you to share your thoughts and questions in the discussions section (https://github.com/zamboni-lab/ion-type-analysis/discussions). Your contributions are important for improving our shared knowledge.
