Skip to content

Slugger70/SauerEnrichmentAnalysis

 
 

Repository files navigation

SauerEnrichmentAnalysis

  • Python implementation of metabolic flux ratios. Python implementation originally written by Sean O'Callaghan, a previous bioinformatician at MA, an unknown number of years ago, then maintained by Michael Leeming (bioinformatician at Vic Node MA from 2017 - 2018).
  • Considered to be superceded by SUMOFLUX, a Matlab package, recommended instead by ETH Zurich.
  • This is a refactor of the original Sauer enrichment analysis tool, migrated to Python3.
  • Implementation of the metabolic flux analysis procedures described by Annik Nanchen et. al. (https://www.ncbi.nlm.nih.gov/pubmed/17035687).

Usage

Two different input files are required. These are entered manually into proc.py, as inputs in lines 8 and 9.

  1. file1: A file defining the name and chemical formula of the analyte molecule(s) as well as the number of atoms that can possibly be exchanged.
  2. file2: A file providing the intensities for each isotopic peak for each analyte defined in file 1 in each sample.

Sample input and output files are provided in the 'sample_files' directory.

python3 proc.py

Note the following points:

  1. The number of possible enrichment sites for an analyte defined in file 1 must match the number of isotope data series' provided in file 2. Note that the M0 isotope is not included in this number.
    • For example, if M0, M+1 and M+2 are defined for a molecule, the number of enrichment sites specified in file 1 must be 2.
  2. The names of metabolites defined in file 1 must exactly match those in file 2.
  3. In file 2, the headers for the isotope data series must be given exactly as follows:
deoxyribose M0 Results, deoxyribose M+1 Results, deoxyribose M+2 Results etc...

Where 'M0' represents the monoisotopic peak, 'M+1' is the first isotope peak, 'M+2' is the second isotope peak and so on. The current script is very sensitive to the formatting of these headers, so be sure to change the example files carefully.

  1. When specifying chemical formulae in file 1:
    • Place spaces between entries for different elements. Eg. C6 H12 O6 rather than C6H12O6.
    • If there is only one atom of a given element X, it must be entered as X1. Eg. C2 O2 H5 N1 rather than C2 O2 H5 N.
    • An internal atom type dictionary seems to go looking for Si atoms. The script crashes if Si0 is not added for a compound with no silicione. Fix this in a future update.
  2. No cells in the file 2 input can be blank. Must replace with 0.

To-do

  1. Add command-line arg parsing
  2. Try to increase flexibility of input file type definitions
  3. Sort out bug for Si0 compound formulae definitions (pt. 4 above)
  4. Add Python Dash front end?

Dev Notes

  • In test runs with the py3 version, the output generally has more decimal places (0 to 5 more) than the py2 version, so the outputs will differ during testing by error on the order of 10E11 or smaller.

About

Functions for implementation of Sauer isotope labeling calculation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 96.6%
  • C 1.6%
  • HTML 0.5%
  • C++ 0.4%
  • XSLT 0.3%
  • Common Workflow Language 0.2%
  • Other 0.4%