Your Python3 module for investigating the Electron Transfer Dissociation in Mass Spectrometry, and more generally finding stuff in the mass spectrum.
Python3
The package can be installed directly from the Python Package Index:
pip install masstodon
Otherwise, download this github repo, use the default branch, and install the software with:
pip install .
from the folder containing setup.py.
This will let you import masstodon
simply by
import masstodon
It is possible to run masstodon
from command line after installing it from PIP.
Given that it would be not comfortable to input multiple compounds with their possible modifications and charges from the terminal, we have restricted (for now) the possibility to run masstodon
in the traditional case of studying precisely one protein and its c/z fragmentation patterns.
To see a detailed description of the possible arguments, open the terminal (or the Anaconda prompt on Windows, but seriously, Windows? You should feel guilty...) and write
masstodon -h
To run masstodon
, you do need to supply at least:
- the file with the spectrum
- the tolerance for the search in the m/z axis
- the amino acid sequence (fasta)
- the charge of the substance
All other parameters can be skipped, but it might be silly.
For instance, if you know that there is a particular PTM on a given amino acid,
you should supply the -m
parameter, and so on.
Importing data. You can analyze individual mass spectra with masstodon
.
This might very well be individual scans of an Orbitrap, or a general mass spectrum.
The easiest way to import the mass spectrum is to present a plain ASCII file with m/z and intensity values in each row, separated by tab or some other whitespace sign.
Running masstodon.
To call masstodon
with a single compound, use the masstodon_single
function.
For instance:
from masstodon.data.substanceP_wh15_wv400 import mz, intensity, fasta, modifications, z # input data
from masstodon.masstodon import masstodon_single # masstodon-proper
from pprint import pprint # nicer output in the terminal
print(mz)
# array([ 61.01 , 64.152, 66.515, ..., 1403.9 , 1485.578, 1497.226])
print(intensity)
# array([844.4 , 25.35, 190.1 , ..., 15.38, 55.62, 21. ])
print(fasta)
# 'RPKPQQFFGLM'
print(modifications)
# {'11': {'C_carbo': {'H': 1, 'N': 1, 'O': -1}}}
# (modify 11th amino-acid [starting from 1 for user-friendliness],
# by adding the chemical diff unto the group of atoms that include the C_carbo.)
print(z)
# 3
m = masstodon_single(mz, intensity, fasta, z,
min_mz_diff = 1.1, # this is actually the default
modifications = modifications,
orbitrap = False, # this ain't an orbitrap profile spectrum
threshold = "0.05 Da", # how far away to search for
isotopic_coverage = .999, # IsoSpec isotopic envelope coverage
min_prob = .8, # minimal acceptance probability of a candidate theoretical envelope.
std_cnt = 3 # m/z standard deviation count filter)
# for min_prob and std_cnt check out the publication under the filtering procedures.
print("Save spectrum to where you started your python from.")
m.plotly("spectrum.html", shape='rectangles', show=True)
print("Getting stats on inintial and final number of nodes and edges in the deconvolution graph.")
pprint(m.ome.G_stats)
print("Errors: absolute deviations and relative distance between spectra.")
pprint(m.imperator.errors())
print("Estimates of intensities of reactions and fragmentations.")
pprint(m.cz_simple.intensities)
pprint(m.cz_simple.probabilities)
print("Save all things under the given path.")
m.write(".")