From 4004f28c5a38f669b303359765b0bcae1550474b Mon Sep 17 00:00:00 2001
From: Katherine Heal
Date: Wed, 11 Dec 2024 12:15:07 -0800
Subject: [PATCH 01/20] Add draft of lipidomics documentation
---
docs/index_lipid.rst | 114 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 114 insertions(+)
create mode 100644 docs/index_lipid.rst
diff --git a/docs/index_lipid.rst b/docs/index_lipid.rst
new file mode 100644
index 0000000..eece248
--- /dev/null
+++ b/docs/index_lipid.rst
@@ -0,0 +1,114 @@
+Lipidomics Workflow
+==============================
+
+Summary
+-------
+
+The liquid chromatography-mass spectrometry (LC-MS)-based lipidomics workflow ( part of MetaMS)
+is built using PNNL’s CoreMS software framework. The workflow leverages many features of CoreMS as well as PNNL’s MetabRef LC-MS database to process LC-MS/MS data and identify lipids.
+The initial signal processing includes peak picking, integration of mass features, deconvolution of MS1, and calculation of peak shape metrics.
+The workflow associates MS1 spectra with their corresponding MS2 spectra (only for data-dependent acqusition, currently).
+It uses the MS2 spectra to search an in-silico spectra database for lipids and uses the MS1 data to assign a molecular formula.
+Each candidate lipid assignment is given two confidence scores: one for its match to the predicted molecular formula based on the mass accuracy and fine isotopic structure
+and a second for the MS2 spectral matching for filtering and selecting the best match.
+
+
+Workflow Diagram
+------------------
+
+.. image:: metamsworkflow.png
+
+
+Workflow Dependencies
+---------------------
+
+Third party software
+~~~~~~~~~~~~~~~~~~~~
+
+- CoreMS version 3.0 or greater (2-clause BSD)
+- Click (BSD 3-Clause "New" or "Revised" License)
+
+Database
+~~~~~~~~~~~~~~~~
+- PNNL Metabolomics LC-MS in silico Spectral Database (https://metabref.emsl.pnnl.gov/)
+
+Workflow Availability
+---------------------
+
+The workflow is available in GitHub:
+https://github.com/microbiomedata/metaMS
+
+The container is available at Docker Hub (microbiomedata/metaMS):
+https://hub.docker.com/r/microbiomedata/metams
+
+The python package is available on PyPi:
+https://pypi.org/project/metaMS/
+
+The database is available by request.
+Please contact NMDC (support@microbiomedata.org) for access.
+
+Test datasets
+-------------
+#TODO KRH: add test datasets somewhere
+
+Execution Details
+---------------------
+
+This workflow should be executed using the provided wdl file (wdl/metaMS_lipidomics.wdl).
+
+Example command to run the workflow:
+```
+miniwdl run wdl/metaMS_lipidomics.wdl -i wdl/metams_input_lipidomics.json --verbose --no-cache --copy-input-files
+```
+
+Inputs
+~~~~~~~~
+Only data-dependent acquisition is supported at this time, but both HCD and CID fragmentation are supported.
+Data must be collected in profile mode for MS1.
+
+To use the wdl, inputs should be specified in a json file. See example input json file in wdl/metaMS_lipidomics.wdl.
+
+The following inputs are required:
+- Supported file formats for LC-MS data:
+ - ThermoFisher mass spectrometry data files (.raw)
+ - mzML mass spectrometry data files (.mzml)
+- Parameter files:
+ - CoreMS Parameter file (.toml). See example in configuration/lipid_configs/emsl_lipidomics_corems_params.toml.
+ - Scan Translator Parameter file (.toml). See example in configuration/lipid_configs/emsl_lipidomics_scan_translator_params.toml.
+ - MetabRef configuration key (metabref.token). See MetabRef documentation (https://metabref.emsl.pnnl.gov/api) for how to generate a token.
+- Cores (optional):
+ - How many cores to use for processing. Default is 1.
+
+Outputs
+~~~~~~~~
+
+- Metabolites data-table
+ - Peak data table with annotated lipids (.csv)
+ - HDF: CoreMS HDF5 format
+- Workflow Metadata:
+ - TOML : CoreMS TOML format
+
+
+Requirements for Execution
+--------------------------
+
+- Docker Container Runtime
+
+ or
+- Python Environment >= 3.11
+- .NET or appropriate runtime (i.e. pythonnet). Only if processing ThermoFisher raw files.
+- Python Dependencies are listed on requirements.txt
+
+Hardware Requirements
+--------------------------
+- To run this application, we reccomend a processor with at least 2.0 GHz speed, 8GB of RAM, 10GB of free hard disk space
+
+Version History
+---------------
+
+- #TODO KRH: add version history
+
+Point of contact
+----------------
+
+Package maintainer: Katherine R. Heal
From 3b7dbc7c5a9b6f2b8d1962a7153486a964ed107b Mon Sep 17 00:00:00 2001
From: Katherine Heal
Date: Wed, 11 Dec 2024 17:04:15 -0800
Subject: [PATCH 02/20] Edit documentation for lipid workflow
---
docs/index_lipid.rst | 40 ++++++++++++++++++++++------------------
1 file changed, 22 insertions(+), 18 deletions(-)
diff --git a/docs/index_lipid.rst b/docs/index_lipid.rst
index eece248..a8cbcef 100644
--- a/docs/index_lipid.rst
+++ b/docs/index_lipid.rst
@@ -1,22 +1,23 @@
-Lipidomics Workflow
+Lipidomics Workflow (v1.0.0)
==============================
Summary
-------
-The liquid chromatography-mass spectrometry (LC-MS)-based lipidomics workflow ( part of MetaMS)
+The liquid chromatography-mass spectrometry (LC-MS)-based lipidomics workflow (part of MetaMS)
is built using PNNL’s CoreMS software framework. The workflow leverages many features of CoreMS as well as PNNL’s MetabRef LC-MS database to process LC-MS/MS data and identify lipids.
-The initial signal processing includes peak picking, integration of mass features, deconvolution of MS1, and calculation of peak shape metrics.
-The workflow associates MS1 spectra with their corresponding MS2 spectra (only for data-dependent acqusition, currently).
-It uses the MS2 spectra to search an in-silico spectra database for lipids and uses the MS1 data to assign a molecular formula.
+The initial signal processing includes peak picking, integration of mass features, deconvolution of MS1, and calculation of peak shape metrics.
+The workflow associates MS1 spectra with their corresponding MS2 spectra (only for data-dependent acqusition, currently).
+It uses the MS2 spectra to search an in-silico spectra database for lipids and uses the MS1 data to assign a molecular formula.
Each candidate lipid assignment is given two confidence scores: one for its match to the predicted molecular formula based on the mass accuracy and fine isotopic structure
-and a second for the MS2 spectral matching for filtering and selecting the best match.
+and a second for the MS2 spectral matching for filtering and selecting the best match.
Workflow Diagram
------------------
.. image:: metamsworkflow.png
+#TODO KRH: add lipidomics workflow diagram
Workflow Dependencies
@@ -27,6 +28,7 @@ Third party software
- CoreMS version 3.0 or greater (2-clause BSD)
- Click (BSD 3-Clause "New" or "Revised" License)
+- miniwdl (MIT License)
Database
~~~~~~~~~~~~~~~~
@@ -57,25 +59,26 @@ Execution Details
This workflow should be executed using the provided wdl file (wdl/metaMS_lipidomics.wdl).
Example command to run the workflow:
-```
-miniwdl run wdl/metaMS_lipidomics.wdl -i wdl/metams_input_lipidomics.json --verbose --no-cache --copy-input-files
-```
+
+.. code-block:: bash
+
+ miniwdl run wdl/metaMS_lipidomics.wdl -i wdl/metams_input_lipidomics.json --verbose --no-cache --copy-input-files
Inputs
~~~~~~~~
-Only data-dependent acquisition is supported at this time, but both HCD and CID fragmentation are supported.
-Data must be collected in profile mode for MS1.
+Only data collected in profile mode for MS1 and data-dependent acquisition for MS2 is supported at this time.
To use the wdl, inputs should be specified in a json file. See example input json file in wdl/metaMS_lipidomics.wdl.
The following inputs are required:
-- Supported file formats for LC-MS data:
+
+- LC-MS data in one of the following formats:
- ThermoFisher mass spectrometry data files (.raw)
- mzML mass spectrometry data files (.mzml)
-- Parameter files:
- - CoreMS Parameter file (.toml). See example in configuration/lipid_configs/emsl_lipidomics_corems_params.toml.
- - Scan Translator Parameter file (.toml). See example in configuration/lipid_configs/emsl_lipidomics_scan_translator_params.toml.
- - MetabRef configuration key (metabref.token). See MetabRef documentation (https://metabref.emsl.pnnl.gov/api) for how to generate a token.
+- Workflow inputs:
+ - CoreMS Parameter file (.toml). See example in configuration/lipid_configs/emsl_lipidomics_corems_params.toml.
+ - Scan Translator Parameter file (.toml). See example in configuration/lipid_configs/emsl_lipidomics_scan_translator_params.toml.
+ - MetabRef configuration key (metabref.token). See MetabRef documentation (https://metabref.emsl.pnnl.gov/api) for how to generate a token.
- Cores (optional):
- How many cores to use for processing. Default is 1.
@@ -86,13 +89,14 @@ Outputs
- Peak data table with annotated lipids (.csv)
- HDF: CoreMS HDF5 format
- Workflow Metadata:
- - TOML : CoreMS TOML format
+ - CoreMS Parameter file (.toml), the full set of parameters used in the workflow, some of which are set dynamically within the workflow.
Requirements for Execution
--------------------------
- Docker Container Runtime
+- miniwdl (v1, https://pypi.org/project/miniwdl/)
or
- Python Environment >= 3.11
@@ -101,7 +105,7 @@ Requirements for Execution
Hardware Requirements
--------------------------
-- To run this application, we reccomend a processor with at least 2.0 GHz speed, 8GB of RAM, 10GB of free hard disk space
+- To run this application, we recommend a processor with at least 2.0 GHz speed, 8GB of RAM, 10GB of free hard disk space
Version History
---------------
From 710c60f2ddbba6cdffce4f57bfba0b9597b27928 Mon Sep 17 00:00:00 2001
From: Katherine Heal
Date: Wed, 11 Dec 2024 17:13:20 -0800
Subject: [PATCH 03/20] Modify Readme and separate workflow readmes
---
README.md | 137 ++------------------------------
docs/README_GCMS.md | 187 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 192 insertions(+), 132 deletions(-)
create mode 100644 docs/README_GCMS.md
diff --git a/README.md b/README.md
index bfa0625..a37a417 100644
--- a/README.md
+++ b/README.md
@@ -17,145 +17,18 @@
- [Docker Container](#metams-docker-container)
# MetaMS
-**MetaMS** is a workflow for metabolomics data processing and annotation
+**MetaMS** is a repository of workflows for metabolomics data processing and annotation in association with the NMDC ([National Microbiome Data Collaborative](https://microbiomedata.org/))
## Current Version
### `2.2.3`
-### Data input formats
+## Available Workflows
-- ANDI NetCDF for GC-MS (.cdf)
-- CoreMS self-containing Hierarchical Data Format (.hdf5)
-- ChemStation Agilent (Ongoing)
+- [GC/MS metabolomics workflow](docs/README_GCMS.md).
+- LC/MS lipidomics workflow
-### Data output formats
-
-- Pandas data frame (can be saved using pickle, h5, etc)
-- Text Files (.csv, tab separated .txt, etc)
-- Microsoft Excel (xlsx)
-- JSON for workflow metadata
-- Self-containing Hierarchical Data Format (.hdf5) including raw data and ime-series data-point for processed data-sets with all associated metadata stored as json attributes
-
-### Data structure types
-
-- GC-MS
-
-## Available features
-
-### Signal Processing
-
-- Baseline detection, subtraction, smoothing
-- m/z based Chromatogram Peak Deconvolution,
-- Manual and automatic noise threshold calculation
-- First and second derivatives peak picking methods
-- Peak Area Calculation
-
-
-### Calibration
-
-- Retention Index Linear XXX method
-
-### Compound Identification
-
-- Automatic local (SQLite) or external (MongoDB or PostgreSQL) database check, generation, and search
-- Automatic molecular match algorithm with all spectral similarity methods
-
-## MetaMS Installation
-
-Make sure you have python 3.9.13 installed before continue
-
-- PyPi:
-```bash
-pip3 install metams
-```
-
-- From source:
- ```bash
-pip3 install --editable .
-```
-
-To be able to open chemstation files a installation of pythonnet is needed:
-- Windows:
- ```bash
- pip3 install pythonnet
- ```
-
-- Mac and Linux:
- ```bash
- brew install mono
- pip3 install pythonnet
- ```
-
-## Execution
-
-```bash
-metaMS dump-gcms-toml-template gcms_metams.toml
-```
-```bash
-metaMS dump-gcms-corems-toml-template gcms_corems.toml
-```
-
- Modify the gcms_metams.toml and gcms_corems.toml accordingly to your dataset and workflow parameters
-make sure to include gcms_corems.json path inside the gcms_metams.toml: "corems_toml_path": "path_to_corems.toml"
-
-```bash
-metaMS run-gcms-workflow path_to_gcms_metams.toml
-```
-
-## MiniWDL
-
-Make sure you have python 3.9.13 installed before continue
-
-MiniWDL uses the microbiome/metaMS image so there is not need to install metaMS
-
-- Change wdl/gcms_metams_input.json to specify the data location
-
-- Change data/gcms_corems.toml to specify the workflow parameters
-
-Install miniWDL:
-```bash
-pip3 install miniwdl
-```
-
-Call:
-```bash
-miniwdl run wdl/metaMS_gcms.wdl -i wdl/metams_input_gcms.json --verbose --no-cache --copy-input-files
-```
-## MetaMS Docker Container
-
-You will need docker and docker compose:
-
-If you don't have it installed, the easiest way is to [install docker for desktop](https://www.docker.com/products/docker-desktop/)
-
-- Pull from Docker Registry:
-
- ```bash
- docker pull microbiomedata/metams:latest
-
- ```
-- or Build the image from source:
-
- ```bash
- docker build -t microbiomedata/metams:latest .
- ```
-- Run Workflow from Container:
-
- $(data_dir) = full path of directory containing the gcms data
- $(config_dir) = full path of directory containing configuration and parameters metams.toml and corems.toml
- ```bash
- docker run -v $(data_dir):/metaB/data -v $(config_dir):/metaB/configuration microbiomedata/metams:latest metaMS run-gcms-workflow /metaB/configuration/metams.toml
- ```
-
-- Getting the parameters templates:
-
- ```bash
- docker run -v $(config_dir):/metaB/configuration microbiomedata/metams:latest metaMS dump-json-template /metaB/configuration/metams.toml
- ```
-
- ```bash
- docker run -v $(config_dir):/metaB/configuration microbiomedata/metams:latest metaMS dump-corems-json-template /metaB/configuration/corems.toml
- ```
+For information about data input, output, and execution for the individual workflows, see above.
## Disclaimer
diff --git a/docs/README_GCMS.md b/docs/README_GCMS.md
new file mode 100644
index 0000000..7f82d7e
--- /dev/null
+++ b/docs/README_GCMS.md
@@ -0,0 +1,187 @@
+# Table of Contents
+- Introduction
+ - [MetaMS's GC/MS Metabolomics Workflow](#metamss-gcms-metabolomics-workflow)
+ - [Version](#current-version)
+ - [Data Input](#data-input-formats)
+ - [Data Output](#data-output-formats)
+ - [Data Structure](#data-structure-types)
+ - [Features](#available-features)
+ - [Code Documentation](https://emsl-computing.github.io/MetaMS/)
+
+- Installation
+ - [PyPi](#metams-installation)
+
+- Execution:
+ - [CLI](#execution)
+ - [MiniWDL](#MiniWDL)
+ - [Docker Container](#metams-docker-container)
+
+# MetaMS's GC/MS Metabolomics Workflow
+
+## Current Version
+
+### `2.2.3`
+
+## Available Workflows
+
+- GC/MS metabolomics workflow
+- LC/MS lipidomics workflow
+
+### Data input formats
+
+- ANDI NetCDF for GC-MS (.cdf)
+- CoreMS self-containing Hierarchical Data Format (.hdf5)
+- ChemStation Agilent (Ongoing)
+
+### Data output formats
+
+- Pandas data frame (can be saved using pickle, h5, etc)
+- Text Files (.csv, tab separated .txt, etc)
+- Microsoft Excel (xlsx)
+- JSON for workflow metadata
+- Self-containing Hierarchical Data Format (.hdf5) including raw data and ime-series data-point for processed data-sets with all associated metadata stored as json attributes
+
+### Data structure types
+
+- GC-MS
+
+## Available features
+
+### Signal Processing
+
+- Baseline detection, subtraction, smoothing
+- m/z based Chromatogram Peak Deconvolution,
+- Manual and automatic noise threshold calculation
+- First and second derivatives peak picking methods
+- Peak Area Calculation
+
+
+### Calibration
+
+- Retention Index Linear XXX method
+
+### Compound Identification
+
+- Automatic local (SQLite) or external (MongoDB or PostgreSQL) database check, generation, and search
+- Automatic molecular match algorithm with all spectral similarity methods
+
+## MetaMS Installation
+
+Make sure you have python 3.9.13 installed before continue
+
+- PyPi:
+```bash
+pip3 install metams
+```
+
+- From source:
+ ```bash
+pip3 install --editable .
+```
+
+To be able to open chemstation files a installation of pythonnet is needed:
+- Windows:
+ ```bash
+ pip3 install pythonnet
+ ```
+
+- Mac and Linux:
+ ```bash
+ brew install mono
+ pip3 install pythonnet
+ ```
+
+## Execution
+
+```bash
+metaMS dump-gcms-toml-template gcms_metams.toml
+```
+```bash
+metaMS dump-gcms-corems-toml-template gcms_corems.toml
+```
+
+ Modify the gcms_metams.toml and gcms_corems.toml accordingly to your dataset and workflow parameters
+make sure to include gcms_corems.json path inside the gcms_metams.toml: "corems_toml_path": "path_to_corems.toml"
+
+```bash
+metaMS run-gcms-workflow path_to_gcms_metams.toml
+```
+
+## MiniWDL
+
+Make sure you have python 3.9.13 installed before continue
+
+MiniWDL uses the microbiome/metaMS image so there is not need to install metaMS
+
+- Change wdl/gcms_metams_input.json to specify the data location
+
+- Change data/gcms_corems.toml to specify the workflow parameters
+
+Install miniWDL:
+```bash
+pip3 install miniwdl
+```
+
+Call:
+```bash
+miniwdl run wdl/metaMS_gcms.wdl -i wdl/metams_input_gcms.json --verbose --no-cache --copy-input-files
+```
+## MetaMS Docker Container
+
+You will need docker and docker compose:
+
+If you don't have it installed, the easiest way is to [install docker for desktop](https://www.docker.com/products/docker-desktop/)
+
+- Pull from Docker Registry:
+
+ ```bash
+ docker pull microbiomedata/metams:latest
+
+ ```
+- or Build the image from source:
+
+ ```bash
+ docker build -t microbiomedata/metams:latest .
+ ```
+- Run Workflow from Container:
+
+ $(data_dir) = full path of directory containing the gcms data
+ $(config_dir) = full path of directory containing configuration and parameters metams.toml and corems.toml
+ ```bash
+ docker run -v $(data_dir):/metaB/data -v $(config_dir):/metaB/configuration microbiomedata/metams:latest metaMS run-gcms-workflow /metaB/configuration/metams.toml
+ ```
+
+- Getting the parameters templates:
+
+ ```bash
+ docker run -v $(config_dir):/metaB/configuration microbiomedata/metams:latest metaMS dump-json-template /metaB/configuration/metams.toml
+ ```
+
+ ```bash
+ docker run -v $(config_dir):/metaB/configuration microbiomedata/metams:latest metaMS dump-corems-json-template /metaB/configuration/corems.toml
+ ```
+
+## Disclaimer
+
+This material was prepared as an account of work sponsored by an agency of the
+United States Government. Neither the United States Government nor the United
+States Department of Energy, nor Battelle, nor any of their employees, nor any
+jurisdiction or organization that has cooperated in the development of these
+materials, makes any warranty, express or implied, or assumes any legal
+liability or responsibility for the accuracy, completeness, or usefulness or
+any information, apparatus, product, software, or process disclosed, or
+represents that its use would not infringe privately owned rights.
+
+Reference herein to any specific commercial product, process, or service by
+trade name, trademark, manufacturer, or otherwise does not necessarily
+constitute or imply its endorsement, recommendation, or favoring by the United
+States Government or any agency thereof, or Battelle Memorial Institute. The
+views and opinions of authors expressed herein do not necessarily state or
+reflect those of the United States Government or any agency thereof.
+
+ PACIFIC NORTHWEST NATIONAL LABORATORY
+ operated by
+ BATTELLE
+ for the
+ UNITED STATES DEPARTMENT OF ENERGY
+ under Contract DE-AC05-76RL01830
\ No newline at end of file
From d4911257309e1f28e96b75ce529989a9b17cbe94 Mon Sep 17 00:00:00 2001
From: Katherine Heal
Date: Wed, 11 Dec 2024 17:15:40 -0800
Subject: [PATCH 04/20] Fix Readme table of contents
---
README.md | 17 +++--------------
1 file changed, 3 insertions(+), 14 deletions(-)
diff --git a/README.md b/README.md
index a37a417..32072d2 100644
--- a/README.md
+++ b/README.md
@@ -1,20 +1,9 @@
# Table of Contents
-- Introduction
- [MetaMS](#MetaMS)
- [Version](#current-version)
- - [Data Input](#data-input-formats)
- - [Data Output](#data-output-formats)
- - [Data Structure](#data-structure-types)
- - [Features](#available-features)
- - [Code Documentation](https://emsl-computing.github.io/MetaMS/)
-
-- Installation
- - [PyPi](#metams-installation)
-
-- Execution:
- - [CLI](#execution)
- - [MiniWDL](#MiniWDL)
- - [Docker Container](#metams-docker-container)
+ - [Available Workflows](#available-workflows)
+ - [Disclaimer](#disclaimer)
+
# MetaMS
**MetaMS** is a repository of workflows for metabolomics data processing and annotation in association with the NMDC ([National Microbiome Data Collaborative](https://microbiomedata.org/))
From f39cf82ea69214383c32c87d8d10f8be91c5ab86 Mon Sep 17 00:00:00 2001
From: Katherine Heal
Date: Thu, 12 Dec 2024 09:20:22 -0800
Subject: [PATCH 05/20] Add lipid workflow specific documentation and make file
command to generate
---
Makefile | 3 +-
README.md | 8 +--
docs/README_LCMS_LIPID.md | 148 ++++++++++++++++++++++++++++++++++++++
docs/convert_rst_to_md.py | 14 ++++
requirements-dev.txt | 3 +-
5 files changed, 170 insertions(+), 6 deletions(-)
create mode 100644 docs/README_LCMS_LIPID.md
create mode 100644 docs/convert_rst_to_md.py
diff --git a/Makefile b/Makefile
index c0cc5d5..3c54f50 100644
--- a/Makefile
+++ b/Makefile
@@ -67,5 +67,6 @@ wdl-run :
miniwdl run wdl/metaMS.wdl -i wdl/metams_input.json --verbose --no-cache --copy-input-files
-
+convert_lipid_rst_to_md:
+ python docs/convert_rst_to_md.py
\ No newline at end of file
diff --git a/README.md b/README.md
index 32072d2..68b978c 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
- [Version](#current-version)
- [Available Workflows](#available-workflows)
- [Disclaimer](#disclaimer)
-
+
# MetaMS
**MetaMS** is a repository of workflows for metabolomics data processing and annotation in association with the NMDC ([National Microbiome Data Collaborative](https://microbiomedata.org/))
@@ -14,10 +14,10 @@
## Available Workflows
-- [GC/MS metabolomics workflow](docs/README_GCMS.md).
-- LC/MS lipidomics workflow
+- [GC/MS metabolomics workflow](docs/README_GCMS.md)
+- [LC/MS lipidomics workflow](docs/README_LCMS_LIPID.md)
-For information about data input, output, and execution for the individual workflows, see above.
+For information about data input, output, and execution for the individual workflows, follow the linked readmes above.
## Disclaimer
diff --git a/docs/README_LCMS_LIPID.md b/docs/README_LCMS_LIPID.md
new file mode 100644
index 0000000..3fc6816
--- /dev/null
+++ b/docs/README_LCMS_LIPID.md
@@ -0,0 +1,148 @@
+# Lipidomics Workflow (v1.0.0)
+
+## Summary
+
+The liquid chromatography-mass spectrometry (LC-MS)-based lipidomics
+workflow (part of MetaMS) is built using PNNL's CoreMS software
+framework. The workflow leverages many features of CoreMS as well as
+PNNL's MetabRef LC-MS database to process LC-MS/MS data and identify
+lipids. The initial signal processing includes peak picking, integration
+of mass features, deconvolution of MS\1\, and calculation
+of peak shape metrics. The workflow associates MS\1\
+spectra with their corresponding MS\2\ spectra (only for
+data-dependent acqusition, currently). It uses the MS\2\
+spectra to search an in-silico spectra database for lipids and uses the
+MS\1\ data to assign a molecular formula. Each candidate
+lipid assignment is given two confidence scores: one for its match to
+the predicted molecular formula based on the mass accuracy and fine
+isotopic structure and a second for the MS\2\ spectral
+matching for filtering and selecting the best match.
+
+## Workflow Diagram
+
+![image](metamsworkflow.png)
+
+#TODO KRH: add lipidomics workflow diagram
+
+## Workflow Dependencies
+
+### Third party software
+
+- CoreMS version 3.0 or greater (2-clause BSD)
+- Click (BSD 3-Clause \"New\" or \"Revised\" License)
+- miniwdl (MIT License)
+
+### Database
+
+- PNNL Metabolomics LC-MS in silico Spectral Database
+ ()
+
+## Workflow Availability
+
+The workflow is available in GitHub:
+
+
+The container is available at Docker Hub (microbiomedata/metaMS):
+
+
+The python package is available on PyPi:
+
+
+The database is available by request. Please contact NMDC
+() for access.
+
+## Test datasets
+
+#TODO KRH: add test datasets somewhere
+
+## Execution Details
+
+This workflow should be executed using the provided wdl file
+(wdl/metaMS_lipidomics.wdl).
+
+Example command to run the workflow:
+
+``` bash
+miniwdl run wdl/metaMS_lipidomics.wdl -i wdl/metams_input_lipidomics.json --verbose --no-cache --copy-input-files
+```
+
+### Inputs
+
+Only data collected in profile mode for MS\1\ and
+data-dependent acquisition for MS\2\ is supported at this
+time.
+
+To use the wdl, inputs should be specified in a json file. See example
+input json file in wdl/metaMS_lipidomics.wdl.
+
+The following inputs are required:
+
+-
+
+ LC-MS data in one of the following formats:
+
+ : - ThermoFisher mass spectrometry data files (.raw)
+ - mzML mass spectrometry data files (.mzml)
+
+-
+
+ Workflow inputs:
+
+ : - CoreMS Parameter file (.toml). See example in
+ configuration/lipid_configs/emsl_lipidomics_corems_params.toml.
+ - Scan Translator Parameter file (.toml). See example in
+ configuration/lipid_configs/emsl_lipidomics_scan_translator_params.toml.
+ - MetabRef configuration key (metabref.token). See MetabRef
+ documentation () for how
+ to generate a token.
+
+-
+
+ Cores (optional):
+
+ : - How many cores to use for processing. Default is 1.
+
+### Outputs
+
+-
+
+ Metabolites data-table
+
+ : - Peak data table with annotated lipids (.csv)
+ - HDF: CoreMS HDF5 format
+
+-
+
+ Workflow Metadata:
+
+ : - CoreMS Parameter file (.toml), the full set of parameters
+ used in the workflow, some of which are set dynamically
+ within the workflow.
+
+## Requirements for Execution
+
+- Docker Container Runtime
+
+- miniwdl (v1, )
+
+ or
+
+- Python Environment \>= 3.11
+
+- .NET or appropriate runtime (i.e. pythonnet). Only if processing
+ ThermoFisher raw files.
+
+- Python Dependencies are listed on requirements.txt
+
+## Hardware Requirements
+
+- To run this application, we recommend a processor with at least 2.0
+ GHz speed, 8GB of RAM, 10GB of free hard disk space
+
+## Version History
+
+- #TODO KRH: add version history
+
+## Point of contact
+
+Package maintainer: Katherine R. Heal \<\>
diff --git a/docs/convert_rst_to_md.py b/docs/convert_rst_to_md.py
new file mode 100644
index 0000000..3f8cd96
--- /dev/null
+++ b/docs/convert_rst_to_md.py
@@ -0,0 +1,14 @@
+import pypandoc
+
+def convert_rst_to_md(input_file, output_file):
+ # Convert RST to Markdown
+ output = pypandoc.convert_file(input_file, 'md', format='rst')
+
+ # Write the output to the MD file
+ with open(output_file, 'w') as f:
+ f.write(output)
+
+if __name__ == "__main__":
+ input_file = 'docs/index_lipid.rst'
+ output_file = 'docs/README_LCMS_LIPID.md'
+ convert_rst_to_md(input_file, output_file)
\ No newline at end of file
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 6361449..b9705a7 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -4,4 +4,5 @@ pytest-cov
pyprof2calltree
memory_profiler
twine
-bumpversion
\ No newline at end of file
+bumpversion
+pypandoc
\ No newline at end of file
From 33d270ae9231394f7c6a3c72df993d75d5293717 Mon Sep 17 00:00:00 2001
From: Katherine Heal
Date: Thu, 12 Dec 2024 09:55:49 -0800
Subject: [PATCH 06/20] WIP convert from md to rst
---
Makefile | 4 +-
docs/README_LCMS_LIPID.md | 8 ++-
docs/convert_rst_to_md.py | 14 ----
docs/index_lipid.rst | 148 ++++++++++++++++++++++++--------------
4 files changed, 103 insertions(+), 71 deletions(-)
delete mode 100644 docs/convert_rst_to_md.py
diff --git a/Makefile b/Makefile
index 3c54f50..bc6d01b 100644
--- a/Makefile
+++ b/Makefile
@@ -64,9 +64,9 @@ docker-run:
@docker run -v $(data_dir):/metams/data -v $(config_dir):/metams/configuration microbiomedata/metams:latest metaMS run-gcms-workflow /metams/configuration/metams.toml
wdl-run :
-
miniwdl run wdl/metaMS.wdl -i wdl/metams_input.json --verbose --no-cache --copy-input-files
convert_lipid_rst_to_md:
- python docs/convert_rst_to_md.py
+ # convert the lipid documentation from rst to md
+ pandoc -f rst -t markdown -o docs/README_LCMS_LIPID.md docs/index_lipid.rst
\ No newline at end of file
diff --git a/docs/README_LCMS_LIPID.md b/docs/README_LCMS_LIPID.md
index 3fc6816..ef88688 100644
--- a/docs/README_LCMS_LIPID.md
+++ b/docs/README_LCMS_LIPID.md
@@ -1,5 +1,7 @@
# Lipidomics Workflow (v1.0.0)
+MS$^{1}$
+
## Summary
The liquid chromatography-mass spectrometry (LC-MS)-based lipidomics
@@ -8,10 +10,10 @@ framework. The workflow leverages many features of CoreMS as well as
PNNL's MetabRef LC-MS database to process LC-MS/MS data and identify
lipids. The initial signal processing includes peak picking, integration
of mass features, deconvolution of MS\1\, and calculation
-of peak shape metrics. The workflow associates MS\1\
+of peak shape metrics. The workflow associates MS1
spectra with their corresponding MS\2\ spectra (only for
-data-dependent acqusition, currently). It uses the MS\2\
-spectra to search an in-silico spectra database for lipids and uses the
+data-dependent acqusition, currently). It uses the MS^2^ spectra to
+search an in-silico spectra database for lipids and uses the
MS\1\ data to assign a molecular formula. Each candidate
lipid assignment is given two confidence scores: one for its match to
the predicted molecular formula based on the mass accuracy and fine
diff --git a/docs/convert_rst_to_md.py b/docs/convert_rst_to_md.py
deleted file mode 100644
index 3f8cd96..0000000
--- a/docs/convert_rst_to_md.py
+++ /dev/null
@@ -1,14 +0,0 @@
-import pypandoc
-
-def convert_rst_to_md(input_file, output_file):
- # Convert RST to Markdown
- output = pypandoc.convert_file(input_file, 'md', format='rst')
-
- # Write the output to the MD file
- with open(output_file, 'w') as f:
- f.write(output)
-
-if __name__ == "__main__":
- input_file = 'docs/index_lipid.rst'
- output_file = 'docs/README_LCMS_LIPID.md'
- convert_rst_to_md(input_file, output_file)
\ No newline at end of file
diff --git a/docs/index_lipid.rst b/docs/index_lipid.rst
index a8cbcef..713784c 100644
--- a/docs/index_lipid.rst
+++ b/docs/index_lipid.rst
@@ -1,24 +1,36 @@
Lipidomics Workflow (v1.0.0)
-==============================
+============================
+
+MS\ :math:`^{1}`
Summary
-------
-The liquid chromatography-mass spectrometry (LC-MS)-based lipidomics workflow (part of MetaMS)
-is built using PNNL’s CoreMS software framework. The workflow leverages many features of CoreMS as well as PNNL’s MetabRef LC-MS database to process LC-MS/MS data and identify lipids.
-The initial signal processing includes peak picking, integration of mass features, deconvolution of MS1, and calculation of peak shape metrics.
-The workflow associates MS1 spectra with their corresponding MS2 spectra (only for data-dependent acqusition, currently).
-It uses the MS2 spectra to search an in-silico spectra database for lipids and uses the MS1 data to assign a molecular formula.
-Each candidate lipid assignment is given two confidence scores: one for its match to the predicted molecular formula based on the mass accuracy and fine isotopic structure
-and a second for the MS2 spectral matching for filtering and selecting the best match.
-
+The liquid chromatography-mass spectrometry (LC-MS)-based lipidomics
+workflow (part of MetaMS) is built using PNNL’s CoreMS software
+framework. The workflow leverages many features of CoreMS as well as
+PNNL’s MetabRef LC-MS database to process LC-MS/MS data and identify
+lipids. The initial signal processing includes peak picking, integration
+of mass features, deconvolution of MS1, and calculation of
+peak shape metrics. The workflow associates MS1 spectra with their
+corresponding MS2 spectra (only for data-dependent
+acqusition, currently). It uses the MS\ :sup:`2` spectra to search an
+in-silico spectra database for lipids and uses the MS1 data
+to assign a molecular formula. Each candidate lipid assignment is given
+two confidence scores: one for its match to the predicted molecular
+formula based on the mass accuracy and fine isotopic structure and a
+second for the MS2 spectral matching for filtering and
+selecting the best match.
Workflow Diagram
-------------------
+----------------
-.. image:: metamsworkflow.png
-#TODO KRH: add lipidomics workflow diagram
+.. figure:: metamsworkflow.png
+ :alt: image
+ image
+
+#TODO KRH: add lipidomics workflow diagram
Workflow Dependencies
---------------------
@@ -26,13 +38,15 @@ Workflow Dependencies
Third party software
~~~~~~~~~~~~~~~~~~~~
-- CoreMS version 3.0 or greater (2-clause BSD)
-- Click (BSD 3-Clause "New" or "Revised" License)
-- miniwdl (MIT License)
+- CoreMS version 3.0 or greater (2-clause BSD)
+- Click (BSD 3-Clause "New" or "Revised" License)
+- miniwdl (MIT License)
+
+Database
+~~~~~~~~
-Database
-~~~~~~~~~~~~~~~~
-- PNNL Metabolomics LC-MS in silico Spectral Database (https://metabref.emsl.pnnl.gov/)
+- PNNL Metabolomics LC-MS in silico Spectral Database
+ (https://metabref.emsl.pnnl.gov/)
Workflow Availability
---------------------
@@ -46,71 +60,101 @@ https://hub.docker.com/r/microbiomedata/metams
The python package is available on PyPi:
https://pypi.org/project/metaMS/
-The database is available by request.
-Please contact NMDC (support@microbiomedata.org) for access.
+The database is available by request. Please contact NMDC
+(support@microbiomedata.org) for access.
Test datasets
-------------
+
#TODO KRH: add test datasets somewhere
Execution Details
----------------------
+-----------------
-This workflow should be executed using the provided wdl file (wdl/metaMS_lipidomics.wdl).
+This workflow should be executed using the provided wdl file
+(wdl/metaMS_lipidomics.wdl).
Example command to run the workflow:
-.. code-block:: bash
+.. code:: bash
- miniwdl run wdl/metaMS_lipidomics.wdl -i wdl/metams_input_lipidomics.json --verbose --no-cache --copy-input-files
+ miniwdl run wdl/metaMS_lipidomics.wdl -i wdl/metams_input_lipidomics.json --verbose --no-cache --copy-input-files
Inputs
-~~~~~~~~
-Only data collected in profile mode for MS1 and data-dependent acquisition for MS2 is supported at this time.
+~~~~~~
-To use the wdl, inputs should be specified in a json file. See example input json file in wdl/metaMS_lipidomics.wdl.
+Only data collected in profile mode for MS1 and
+data-dependent acquisition for MS2 is supported at this time.
+
+To use the wdl, inputs should be specified in a json file. See example
+input json file in wdl/metaMS_lipidomics.wdl.
The following inputs are required:
-- LC-MS data in one of the following formats:
- - ThermoFisher mass spectrometry data files (.raw)
- - mzML mass spectrometry data files (.mzml)
-- Workflow inputs:
- - CoreMS Parameter file (.toml). See example in configuration/lipid_configs/emsl_lipidomics_corems_params.toml.
- - Scan Translator Parameter file (.toml). See example in configuration/lipid_configs/emsl_lipidomics_scan_translator_params.toml.
- - MetabRef configuration key (metabref.token). See MetabRef documentation (https://metabref.emsl.pnnl.gov/api) for how to generate a token.
-- Cores (optional):
- - How many cores to use for processing. Default is 1.
+-
+
+ LC-MS data in one of the following formats:
+ - ThermoFisher mass spectrometry data files (.raw)
+ - mzML mass spectrometry data files (.mzml)
+
+-
+
+ Workflow inputs:
+ - CoreMS Parameter file (.toml). See example in
+ configuration/lipid_configs/emsl_lipidomics_corems_params.toml.
+ - Scan Translator Parameter file (.toml). See example in
+ configuration/lipid_configs/emsl_lipidomics_scan_translator_params.toml.
+ - MetabRef configuration key (metabref.token). See MetabRef
+ documentation (https://metabref.emsl.pnnl.gov/api) for how to
+ generate a token.
+
+-
+
+ Cores (optional):
+ - How many cores to use for processing. Default is 1.
Outputs
-~~~~~~~~
+~~~~~~~
-- Metabolites data-table
- - Peak data table with annotated lipids (.csv)
- - HDF: CoreMS HDF5 format
-- Workflow Metadata:
- - CoreMS Parameter file (.toml), the full set of parameters used in the workflow, some of which are set dynamically within the workflow.
+-
+ Metabolites data-table
+ - Peak data table with annotated lipids (.csv)
+ - HDF: CoreMS HDF5 format
+
+-
+
+ Workflow Metadata:
+ - CoreMS Parameter file (.toml), the full set of parameters used
+ in the workflow, some of which are set dynamically within the
+ workflow.
Requirements for Execution
--------------------------
-- Docker Container Runtime
-- miniwdl (v1, https://pypi.org/project/miniwdl/)
-
- or
-- Python Environment >= 3.11
-- .NET or appropriate runtime (i.e. pythonnet). Only if processing ThermoFisher raw files.
-- Python Dependencies are listed on requirements.txt
+- Docker Container Runtime
+
+- miniwdl (v1, https://pypi.org/project/miniwdl/)
+
+ or
+
+- Python Environment >= 3.11
+
+- .NET or appropriate runtime (i.e. pythonnet). Only if processing
+ ThermoFisher raw files.
+
+- Python Dependencies are listed on requirements.txt
Hardware Requirements
---------------------------
-- To run this application, we recommend a processor with at least 2.0 GHz speed, 8GB of RAM, 10GB of free hard disk space
+---------------------
+
+- To run this application, we recommend a processor with at least 2.0
+ GHz speed, 8GB of RAM, 10GB of free hard disk space
Version History
---------------
-- #TODO KRH: add version history
+- #TODO KRH: add version history
Point of contact
----------------
From c829356abe1074844acd22570bed2026b3a1705b Mon Sep 17 00:00:00 2001
From: Katherine Heal
Date: Thu, 12 Dec 2024 09:57:17 -0800
Subject: [PATCH 07/20] WIP convert from md to rst
---
docs/README_LCMS_LIPID.md | 2 +-
docs/index_lipid.rst | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/README_LCMS_LIPID.md b/docs/README_LCMS_LIPID.md
index ef88688..7c0d7a7 100644
--- a/docs/README_LCMS_LIPID.md
+++ b/docs/README_LCMS_LIPID.md
@@ -1,6 +1,6 @@
# Lipidomics Workflow (v1.0.0)
-MS$^{1}$
+MS^1^
## Summary
diff --git a/docs/index_lipid.rst b/docs/index_lipid.rst
index 713784c..532b819 100644
--- a/docs/index_lipid.rst
+++ b/docs/index_lipid.rst
@@ -1,7 +1,7 @@
Lipidomics Workflow (v1.0.0)
============================
-MS\ :math:`^{1}`
+MS\ :sup:`1`
Summary
-------
From 876e6691a573ab21580c9bb778be0a32f1866442 Mon Sep 17 00:00:00 2001
From: Katherine Heal
Date: Thu, 12 Dec 2024 14:00:09 -0800
Subject: [PATCH 08/20] Add most of lipid documentation
---
docs/README_LCMS_LIPID.md | 149 ------------------------------------
docs/index_lipid.html | 106 ++++++++++++++++++++++++++
docs/index_lipid.md | 116 ++++++++++++++++++++++++++++
docs/index_lipid.rst | 156 +++++++++++++++-----------------------
4 files changed, 283 insertions(+), 244 deletions(-)
create mode 100644 docs/index_lipid.html
create mode 100644 docs/index_lipid.md
diff --git a/docs/README_LCMS_LIPID.md b/docs/README_LCMS_LIPID.md
index 7c0d7a7..8b13789 100644
--- a/docs/README_LCMS_LIPID.md
+++ b/docs/README_LCMS_LIPID.md
@@ -1,150 +1 @@
-# Lipidomics Workflow (v1.0.0)
-MS^1^
-
-## Summary
-
-The liquid chromatography-mass spectrometry (LC-MS)-based lipidomics
-workflow (part of MetaMS) is built using PNNL's CoreMS software
-framework. The workflow leverages many features of CoreMS as well as
-PNNL's MetabRef LC-MS database to process LC-MS/MS data and identify
-lipids. The initial signal processing includes peak picking, integration
-of mass features, deconvolution of MS\1\, and calculation
-of peak shape metrics. The workflow associates MS1
-spectra with their corresponding MS\2\ spectra (only for
-data-dependent acqusition, currently). It uses the MS^2^ spectra to
-search an in-silico spectra database for lipids and uses the
-MS\1\ data to assign a molecular formula. Each candidate
-lipid assignment is given two confidence scores: one for its match to
-the predicted molecular formula based on the mass accuracy and fine
-isotopic structure and a second for the MS\2\ spectral
-matching for filtering and selecting the best match.
-
-## Workflow Diagram
-
-![image](metamsworkflow.png)
-
-#TODO KRH: add lipidomics workflow diagram
-
-## Workflow Dependencies
-
-### Third party software
-
-- CoreMS version 3.0 or greater (2-clause BSD)
-- Click (BSD 3-Clause \"New\" or \"Revised\" License)
-- miniwdl (MIT License)
-
-### Database
-
-- PNNL Metabolomics LC-MS in silico Spectral Database
- ()
-
-## Workflow Availability
-
-The workflow is available in GitHub:
-
-
-The container is available at Docker Hub (microbiomedata/metaMS):
-
-
-The python package is available on PyPi:
-
-
-The database is available by request. Please contact NMDC
-() for access.
-
-## Test datasets
-
-#TODO KRH: add test datasets somewhere
-
-## Execution Details
-
-This workflow should be executed using the provided wdl file
-(wdl/metaMS_lipidomics.wdl).
-
-Example command to run the workflow:
-
-``` bash
-miniwdl run wdl/metaMS_lipidomics.wdl -i wdl/metams_input_lipidomics.json --verbose --no-cache --copy-input-files
-```
-
-### Inputs
-
-Only data collected in profile mode for MS\1\ and
-data-dependent acquisition for MS\2\ is supported at this
-time.
-
-To use the wdl, inputs should be specified in a json file. See example
-input json file in wdl/metaMS_lipidomics.wdl.
-
-The following inputs are required:
-
--
-
- LC-MS data in one of the following formats:
-
- : - ThermoFisher mass spectrometry data files (.raw)
- - mzML mass spectrometry data files (.mzml)
-
--
-
- Workflow inputs:
-
- : - CoreMS Parameter file (.toml). See example in
- configuration/lipid_configs/emsl_lipidomics_corems_params.toml.
- - Scan Translator Parameter file (.toml). See example in
- configuration/lipid_configs/emsl_lipidomics_scan_translator_params.toml.
- - MetabRef configuration key (metabref.token). See MetabRef
- documentation () for how
- to generate a token.
-
--
-
- Cores (optional):
-
- : - How many cores to use for processing. Default is 1.
-
-### Outputs
-
--
-
- Metabolites data-table
-
- : - Peak data table with annotated lipids (.csv)
- - HDF: CoreMS HDF5 format
-
--
-
- Workflow Metadata:
-
- : - CoreMS Parameter file (.toml), the full set of parameters
- used in the workflow, some of which are set dynamically
- within the workflow.
-
-## Requirements for Execution
-
-- Docker Container Runtime
-
-- miniwdl (v1, )
-
- or
-
-- Python Environment \>= 3.11
-
-- .NET or appropriate runtime (i.e. pythonnet). Only if processing
- ThermoFisher raw files.
-
-- Python Dependencies are listed on requirements.txt
-
-## Hardware Requirements
-
-- To run this application, we recommend a processor with at least 2.0
- GHz speed, 8GB of RAM, 10GB of free hard disk space
-
-## Version History
-
-- #TODO KRH: add version history
-
-## Point of contact
-
-Package maintainer: Katherine R. Heal \<\>
diff --git a/docs/index_lipid.html b/docs/index_lipid.html
new file mode 100644
index 0000000..158f6ab
--- /dev/null
+++ b/docs/index_lipid.html
@@ -0,0 +1,106 @@
+
Lipidomics Workflow (v1.0.0)
+
+
#TODO KRH: replace with lipid diagram when available
+
Overview
+
The liquid chromatography-mass spectrometry (LC-MS)-based lipidomics
+workflow (part of MetaMS) is built using PNNL’s CoreMS software
+framework. The workflow leverages many features of CoreMS as well as
+PNNL’s MetabRef LC-MS database to process LC-MS/MS data and identify
+lipids. The initial signal processing includes peak picking, integration
+of mass features, deconvolution of MS1 spectra, and calculation of peak
+shape metrics. The workflow associates MS1 spectra with their
+corresponding MS2 spectra. It uses the MS2 spectra to search an
+in-silico spectra database for lipids and uses the deconvoluted MS1
+spectra to assign a molecular formula. Each candidate lipid assignment
+is given two confidence scores: one for its match to the predicted
+molecular formula based on the mass accuracy and fine isotopic structure
+and a second for the MS2 spectral matching for filtering and selecting
+the best match.
diff --git a/docs/index_lipid.md b/docs/index_lipid.md
new file mode 100644
index 0000000..0842d62
--- /dev/null
+++ b/docs/index_lipid.md
@@ -0,0 +1,116 @@
+# Lipidomics Workflow (v1.0.0)
+
+
+
+#TODO KRH: replace with lipid diagram when available
+
+## Overview
+
+The liquid chromatography-mass spectrometry (LC-MS)-based lipidomics
+workflow (part of MetaMS) is built using PNNL's CoreMS software
+framework. The workflow leverages many features of CoreMS as well as
+PNNL's MetabRef LC-MS database to process LC-MS/MS data and identify
+lipids. The initial signal processing includes peak picking, integration
+of mass features, deconvolution of MS1 spectra, and calculation of peak
+shape metrics. The workflow associates MS1 spectra with their
+corresponding MS2 spectra. It uses the MS2 spectra to search an
+in-silico spectra database for lipids and uses the deconvoluted MS1
+spectra to assign a molecular formula. Each candidate lipid assignment
+is given two confidence scores: one for its match to the predicted
+molecular formula based on the mass accuracy and fine isotopic structure
+and a second for the MS2 spectral matching for filtering and selecting
+the best match.
+
+## Workflow Availability
+
+The workflow is available in GitHub:
+
+
+The container is available at Docker Hub (microbiomedata/metaMS):
+
+
+The python package is available on PyPi:
+
+
+The database is available by request. Please contact NMDC
+() for access.
+
+## Requirements for Execution
+
+The recommended way to run the workflow is via the provided wdl file and
+the miniwdl package. Using the wdl file requires the following:
+
+### Hardware Requirements
+
+To run this application, we recommend a processor with at least 2.0 GHz
+speed, 8GB of RAM, 10GB of free hard disk space.
+
+### Software Requirements
+
+- Docker Container Runtime
+- miniwdl (v1, )
+
+*Note that the wdl file will automatically pull the necessary docker
+with the required software dependencies.*
+
+### Database
+
+- PNNL Metabolomics LC-MS *in silico* Spectral Database
+ ()
+
+## Test datasets
+
+#TODO KRH: add test datasets here
+
+## Execution Details
+
+This workflow should be executed using the wdl file provided in the
+MetaMS package (wdl/metaMS_lipidomics.wdl).
+
+Example command to run the workflow:
+
+ miniwdl run wdl/metaMS_lipidomics.wdl -i wdl/metams_input_lipidomics.json --verbose --no-cache --copy-input-files
+
+### Inputs
+
+Only data collected in profile mode for MS1 and data-dependent
+acquisition for MS2 is supported at this time.
+
+To use the wdl, inputs should be specified in a json file. See example
+input json file in wdl/metaMS_lipidomics.wdl.
+
+The following inputs are required (declared in the input json file):
+
+- LC-MS/MS data file locations in one of the following formats
+ - ThermoFisher mass spectrometry data files (.raw)
+ - mzML mass spectrometry data files (.mzml)
+- Workflow inputs
+ - CoreMS Parameter file (.toml)
+ - Scan Translator Parameter file (.toml)
+ - MetabRef configuration key (metabref.token). See \[MetabRef
+ documentation\] () for how
+ to generate a token.
+- Cores (optional input)
+ - How many cores to use for processing. Default is 1.
+
+### Outputs
+
+- Lipidomics data
+ - Peak data table with annotated lipids (.csv)
+ - HDF: CoreMS HDF5 format of CoreMS LCMS object for further
+ analysis
+- Workflow Metadata
+ - CoreMS Parameter file (.toml), the full set of parameters used
+ in the workflow, some of which are set dynamically within the
+ workflow.
+
+## Version History
+
+- #TODO KRH: add version history
+
+## Point of contact
+
+Package maintainer: Katherine R. Heal \<\>
diff --git a/docs/index_lipid.rst b/docs/index_lipid.rst
index 532b819..d27f896 100644
--- a/docs/index_lipid.rst
+++ b/docs/index_lipid.rst
@@ -1,53 +1,31 @@
Lipidomics Workflow (v1.0.0)
============================
-MS\ :sup:`1`
+.. figure:: metamsworkflow.png
+ :alt: image
+
+ image
-Summary
--------
+#TODO KRH: replace with lipid diagram when available
+
+Overview
+--------
The liquid chromatography-mass spectrometry (LC-MS)-based lipidomics
workflow (part of MetaMS) is built using PNNL’s CoreMS software
framework. The workflow leverages many features of CoreMS as well as
PNNL’s MetabRef LC-MS database to process LC-MS/MS data and identify
lipids. The initial signal processing includes peak picking, integration
-of mass features, deconvolution of MS1, and calculation of
+of mass features, deconvolution of MS1 spectra, and calculation of
peak shape metrics. The workflow associates MS1 spectra with their
-corresponding MS2 spectra (only for data-dependent
-acqusition, currently). It uses the MS\ :sup:`2` spectra to search an
-in-silico spectra database for lipids and uses the MS1 data
+corresponding MS2 spectra. It uses the MS2 spectra to search an
+in-silico spectra database for lipids and uses the deconvoluted MS1 spectra
to assign a molecular formula. Each candidate lipid assignment is given
two confidence scores: one for its match to the predicted molecular
formula based on the mass accuracy and fine isotopic structure and a
-second for the MS2 spectral matching for filtering and
+second for the MS2 spectral matching for filtering and
selecting the best match.
-Workflow Diagram
-----------------
-
-.. figure:: metamsworkflow.png
- :alt: image
-
- image
-
-#TODO KRH: add lipidomics workflow diagram
-
-Workflow Dependencies
----------------------
-
-Third party software
-~~~~~~~~~~~~~~~~~~~~
-
-- CoreMS version 3.0 or greater (2-clause BSD)
-- Click (BSD 3-Clause "New" or "Revised" License)
-- miniwdl (MIT License)
-
-Database
-~~~~~~~~
-
-- PNNL Metabolomics LC-MS in silico Spectral Database
- (https://metabref.emsl.pnnl.gov/)
-
Workflow Availability
---------------------
@@ -63,98 +41,86 @@ https://pypi.org/project/metaMS/
The database is available by request. Please contact NMDC
(support@microbiomedata.org) for access.
+Requirements for Execution
+--------------------------
+The recommended way to run the workflow is via the provided wdl file and the miniwdl package.
+Using the wdl file requires the following:
+
+Hardware Requirements
+~~~~~~~~~~~~~~~~~~~~~
+To run this application, we recommend a processor with at least 2.0 GHz speed, 8GB of RAM, 10GB of free hard disk space.
+
+Software Requirements
+~~~~~~~~~~~~~~~~~~~~~
+- Docker Container Runtime
+- miniwdl (v1, https://pypi.org/project/miniwdl/)
+
+*Note that the wdl file will automatically pull the necessary docker with the required software dependencies.*
+
+Database
+~~~~~~~~
+
+- PNNL Metabolomics LC-MS *in silico* Spectral Database
+ (https://metabref.emsl.pnnl.gov/)
+
+The in-silico lipid spectra in the database are generated from the LipidBlast database (v68), found at https://systemsomicslab.github.io/compms/msdial/main.html.
+Note that there is no retention time in the PNNL version of the database.
+
Test datasets
-------------
-#TODO KRH: add test datasets somewhere
+- An example dataset can be downloaded from here: https://nmdcdemo.emsl.pnnl.gov/lipidomics/blanchard_11_8ws97026/Blanch_Nat_Lip_H_32_AB_O_19_NEG_25Jan18_Brandi-WCSH5801.raw
+- Example CoreMS Parameter file (applicable to the example dataset)
+- Example Scan Translator file (applicable to the example dataset)
Execution Details
-----------------
-This workflow should be executed using the provided wdl file
+This workflow should be executed using the wdl file provided in the MetaMS package
(wdl/metaMS_lipidomics.wdl).
Example command to run the workflow:
-.. code:: bash
+.. code-block::
- miniwdl run wdl/metaMS_lipidomics.wdl -i wdl/metams_input_lipidomics.json --verbose --no-cache --copy-input-files
+ miniwdl run wdl/metaMS_lipidomics.wdl -i wdl/metams_input_lipidomics.json --verbose --no-cache --copy-input-files
Inputs
~~~~~~
-Only data collected in profile mode for MS1 and
-data-dependent acquisition for MS2 is supported at this time.
+Only data collected in profile mode for MS1 and
+data-dependent acquisition for MS2 is supported at this time.
To use the wdl, inputs should be specified in a json file. See example
input json file in wdl/metaMS_lipidomics.wdl.
-The following inputs are required:
+The following inputs are required (declared in the input json file):
--
-
- LC-MS data in one of the following formats:
- - ThermoFisher mass spectrometry data files (.raw)
- - mzML mass spectrometry data files (.mzml)
-
--
-
- Workflow inputs:
- - CoreMS Parameter file (.toml). See example in
- configuration/lipid_configs/emsl_lipidomics_corems_params.toml.
- - Scan Translator Parameter file (.toml). See example in
- configuration/lipid_configs/emsl_lipidomics_scan_translator_params.toml.
- - MetabRef configuration key (metabref.token). See MetabRef
- documentation (https://metabref.emsl.pnnl.gov/api) for how to
- generate a token.
-
--
-
- Cores (optional):
- - How many cores to use for processing. Default is 1.
+- LC-MS/MS data file locations in one of the following formats
+ - ThermoFisher mass spectrometry data files (.raw)
+ - mzML mass spectrometry data files (.mzml)
+- Workflow inputs
+ - CoreMS Parameter file (.toml)
+ - Scan Translator Parameter file (.toml)
+ - MetabRef configuration key (metabref.token). See [MetabRef documentation] (https://metabref.emsl.pnnl.gov/api) for how to generate a token.
+- Cores (optional input)
+ - How many cores to use for processing. Default is 1.
Outputs
~~~~~~~
--
-
- Metabolites data-table
- - Peak data table with annotated lipids (.csv)
- - HDF: CoreMS HDF5 format
-
--
+- Lipidomics data
+ - Peak data table with annotated lipids (.csv)
+ - HDF: CoreMS HDF5 format of CoreMS LCMS object for further analysis
- Workflow Metadata:
- - CoreMS Parameter file (.toml), the full set of parameters used
- in the workflow, some of which are set dynamically within the
- workflow.
-
-Requirements for Execution
---------------------------
-
-- Docker Container Runtime
-
-- miniwdl (v1, https://pypi.org/project/miniwdl/)
-
- or
-
-- Python Environment >= 3.11
-
-- .NET or appropriate runtime (i.e. pythonnet). Only if processing
- ThermoFisher raw files.
-
-- Python Dependencies are listed on requirements.txt
-
-Hardware Requirements
----------------------
-- To run this application, we recommend a processor with at least 2.0
- GHz speed, 8GB of RAM, 10GB of free hard disk space
+- Workflow Metadata
+ - CoreMS Parameter file (.toml), the full set of parameters used in the workflow, some of which are set dynamically within the workflow.
Version History
---------------
-- #TODO KRH: add version history
+#TODO KRH: add version history
Point of contact
----------------
From ba201d873bb2cb0fb7d6c9533061c59cef3cb4b0 Mon Sep 17 00:00:00 2001
From: Katherine Heal
Date: Thu, 12 Dec 2024 14:06:09 -0800
Subject: [PATCH 09/20] Add example files to rst documentation
---
docs/index_lipid.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/index_lipid.rst b/docs/index_lipid.rst
index d27f896..4d19ebc 100644
--- a/docs/index_lipid.rst
+++ b/docs/index_lipid.rst
@@ -70,8 +70,8 @@ Test datasets
-------------
- An example dataset can be downloaded from here: https://nmdcdemo.emsl.pnnl.gov/lipidomics/blanchard_11_8ws97026/Blanch_Nat_Lip_H_32_AB_O_19_NEG_25Jan18_Brandi-WCSH5801.raw
-- Example CoreMS Parameter file (applicable to the example dataset)
-- Example Scan Translator file (applicable to the example dataset)
+- Example CoreMS Parameter file (applicable to the example dataset): https://nmdcdemo.emsl.pnnl.gov/lipidomics/parameter_files/emsl_lipidomics_corems_params.toml #TODO KRH: still needs to be uploaded
+- Example Scan Translator file (applicable to the example dataset): https://nmdcdemo.emsl.pnnl.gov/lipidomics/parameter_files/emsl_lipidomics_scan_translator.toml
Execution Details
-----------------
From 2bb48671cf14dc31956a8dfb29f3964839ef0532 Mon Sep 17 00:00:00 2001
From: Katherine Heal
Date: Thu, 12 Dec 2024 14:12:48 -0800
Subject: [PATCH 10/20] Add first draft of lipidomics workflow documentation
---
docs/README_LCMS_LIPID.md | 130 ++++++++++++++++++++++++++++++++++++++
docs/index_lipid.html | 23 +++++--
docs/index_lipid.md | 116 ----------------------------------
docs/index_lipid.rst | 10 +--
4 files changed, 154 insertions(+), 125 deletions(-)
delete mode 100644 docs/index_lipid.md
diff --git a/docs/README_LCMS_LIPID.md b/docs/README_LCMS_LIPID.md
index 8b13789..3cf1019 100644
--- a/docs/README_LCMS_LIPID.md
+++ b/docs/README_LCMS_LIPID.md
@@ -1 +1,131 @@
+# Lipidomics Workflow (v1.0.0)
+
+
+#TODO KRH: replace with lipid diagram when available
+
+## Overview
+
+The liquid chromatography-mass spectrometry (LC-MS)-based lipidomics
+workflow (part of MetaMS) is built using PNNL's CoreMS software
+framework. The workflow leverages many features of CoreMS as well as
+PNNL's MetabRef LC-MS database to process LC-MS/MS data and identify
+lipids. The initial signal processing includes peak picking, integration
+of mass features, deconvolution of MS1 spectra, and calculation of peak
+shape metrics. The workflow associates MS1 spectra with their
+corresponding MS2 spectra. It uses the MS2 spectra to search an
+in-silico spectra database for lipids and uses the deconvoluted MS1
+spectra to assign a molecular formula. Each candidate lipid assignment
+is given two confidence scores: one for its match to the predicted
+molecular formula based on the mass accuracy and fine isotopic structure
+and a second for the MS2 spectral matching for filtering and selecting
+the best match.
+
+Note that only data collected in profile mode for MS1 and data-dependent
+acquisition for MS2 is supported at this time.
+
+## Workflow Availability
+
+The workflow is available in GitHub:
+
+
+The container is available at Docker Hub (microbiomedata/metaMS):
+
+
+The python package is available on PyPi:
+
+
+The database is available by request. Please contact NMDC
+() for access.
+
+## Requirements for Execution
+
+The recommended way to run the workflow is via the provided wdl file and
+the miniwdl package. Using the wdl file requires the following:
+
+### Hardware Requirements
+
+To run this application, we recommend a processor with at least 2.0 GHz
+speed, 8GB of RAM, 10GB of free hard disk space.
+
+### Software Requirements
+
+- Docker Container Runtime
+- miniwdl (v1, )
+
+*Note that the wdl file will automatically pull the necessary docker
+with the required software dependencies.*
+
+### Database
+
+- PNNL Metabolomics LC-MS *in silico* Spectral Database
+ ()
+
+The in-silico lipid spectra in the database are generated from the
+LipidBlast database (v68), found at
+. Note that
+there is no retention time in the PNNL version of the database and the
+workflow does not use retention time scoring.
+
+## Test datasets
+
+- An example dataset can be downloaded from here:
+
+- Example CoreMS Parameter file (applicable to the example dataset):
+
+ #TODO KRH: still needs to be uploaded
+- Example Scan Translator file (applicable to the example dataset):
+
+
+## Execution Details
+
+This workflow should be executed using the wdl file provided in the
+MetaMS package (wdl/metaMS_lipidomics.wdl).
+
+Example command to run the workflow:
+
+```
+miniwdl run wdl/metaMS_lipidomics.wdl -i wdl/metams_input_lipidomics.json --verbose --no-cache --copy-input-files
+```
+
+### Inputs
+
+To use the wdl, inputs should be specified in a json file. See example
+input json file in wdl/metaMS_lipidomics.wdl.
+
+The following inputs are required (declared in the input json file):
+
+- LC-MS/MS data file locations in one of the following formats
+ - ThermoFisher mass spectrometry data files (.raw)
+ - mzML mass spectrometry data files (.mzml)
+- Workflow inputs
+ - CoreMS Parameter file (.toml)
+ - Scan Translator Parameter file (.toml)
+ - MetabRef configuration key (metabref.token). See \[MetabRef
+ documentation\] () for how
+ to generate a token.
+- Cores (optional input)
+ - How many cores to use for processing. Default is 1.
+
+### Outputs
+
+- Lipidomics data
+ - Peak data table with annotated lipids (.csv)
+ - HDF: CoreMS HDF5 format of CoreMS LCMS object for further
+ analysis
+- Workflow Metadata
+ - CoreMS Parameter file (.toml), the full set of parameters used
+ in the workflow, some of which are set dynamically within the
+ workflow.
+
+## Version History
+
+- v1.0.0: Initial release of the lipidomics workflow #TODO KRH: update
+ wtih releease date when available
+
+## Point of contact
+
+Package maintainer: Katherine R. Heal \<\>
diff --git a/docs/index_lipid.html b/docs/index_lipid.html
index 158f6ab..950df1a 100644
--- a/docs/index_lipid.html
+++ b/docs/index_lipid.html
@@ -19,6 +19,8 @@
Overview
molecular formula based on the mass accuracy and fine isotopic structure
and a second for the MS2 spectral matching for filtering and selecting
the best match.
+
Note that only data collected in profile mode for MS1 and
+data-dependent acquisition for MS2 is supported at this time.
The in-silico lipid spectra in the database are generated from the
+LipidBlast database (v68), found at https://systemsomicslab.github.io/compms/msdial/main.html.
+Note that there is no retention time in the PNNL version of the database
+and the workflow does not use retention time scoring.
diff --git a/docs/index_lipid.rst b/docs/index_lipid.rst
index 6ad7186..22e97a8 100644
--- a/docs/index_lipid.rst
+++ b/docs/index_lipid.rst
@@ -1,13 +1,11 @@
Lipidomics Workflow (v1.0.0)
============================
-.. figure:: metamsworkflow.png
+.. figure:: lipid_workflow_v1.png
:alt: diagram of lipid workflow
-#TODO KRH: replace with lipid diagram when available
-
-Overview
---------
+Workflow Overview
+-----------------
The liquid chromatography-mass spectrometry (LC-MS)-based lipidomics
workflow (part of MetaMS) is built using PNNL’s CoreMS software
@@ -31,14 +29,11 @@ Workflow Availability
---------------------
The workflow is available in GitHub:
-https://github.com/microbiomedata/metaMS
+https://github.com/microbiomedata/metaMS #TODO KRH: update with direct link to lipidomics wdl
The container is available at Docker Hub (microbiomedata/metaMS):
https://hub.docker.com/r/microbiomedata/metams
-The python package is available on PyPi:
-https://pypi.org/project/metaMS/
-
The database is available by request. Please contact NMDC
(support@microbiomedata.org) for access.
@@ -56,7 +51,7 @@ Software Requirements
- Docker Container Runtime
- miniwdl (v1, https://pypi.org/project/miniwdl/)
-*Note that the wdl file will automatically pull the necessary docker with the required software dependencies.*
+*Note that the wdl file will automatically pull the necessary docker with the required workflow dependencies.*
Database
~~~~~~~~
@@ -67,8 +62,8 @@ Database
The in-silico lipid spectra in the database are generated from the LipidBlast database (v68), found at https://systemsomicslab.github.io/compms/msdial/main.html.
Note that there is no retention time in the PNNL version of the database and the workflow does not use retention time scoring.
-Test datasets
--------------
+Sample datasets
+---------------
- An example dataset can be downloaded from here: https://nmdcdemo.emsl.pnnl.gov/lipidomics/blanchard_11_8ws97026/Blanch_Nat_Lip_H_32_AB_O_19_NEG_25Jan18_Brandi-WCSH5801.raw
- Example CoreMS Parameter file (applicable to the example dataset): https://nmdcdemo.emsl.pnnl.gov/lipidomics/parameter_files/emsl_lipidomics_corems_params.toml
@@ -110,8 +105,6 @@ Outputs
- Lipidomics data
- Peak data table with annotated lipids (.csv)
- HDF: CoreMS HDF5 format of CoreMS LCMS object for further analysis
-
-
- Workflow Metadata
- CoreMS Parameter file (.toml), the full set of parameters used in the workflow, some of which are set dynamically within the workflow.
diff --git a/docs/lipid_workflow_v1.png b/docs/lipid_workflow_v1.png
new file mode 100644
index 0000000000000000000000000000000000000000..e57e7947b17594c7921cff5a2998635df3c9b47c
GIT binary patch
literal 157532
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