First things first, you may the Program and the source code here. Now, for the manual.
I am spending a lot of my working hours doing ms-analysis of intact proteins. Having access to a MaxisII (no, Bruker is not paying me to post this), we can do quite interesting experiments. However, intact protein samples containing multiple species (or different proteins) which cannot be separated chromatographically can be quite tedious to analyze. Luckily, there is good software around to do this kind of analysis. Although the Bruker software offers the possibility to use a charge ruler to calculate the protein masses, I prefer to have a file in the end I can pass to the clients and allow them to have a look at the raw data themselves. A good tool for this is mMass. This (free & open source) program allows the analysis of *.xy or *.msd files extracted from the chromatogram, containing a single mass spec file.
To calculate the mass resulting from the individual charge states, two methods can be used which are described in the tutorials for mMass (and can be found in this excellent tutorial). During annotation of isotope-separated spectra, I want to know the masses resulting from multiple charge states of the spectrum to get an idea about the measurements quality. Annotating all these peaks by hand is tedious in mMass. Doing a “related charge deconvolution” can also be a hard, as measuring the exact distances is difficult. To address both problems I wrote the „related ion deconvoluter„, which allows to annotate multiple peaks picked in mMass based on a calculated precursor mass or a known charge state for a single peak.
To annotate all peaks belonging to a mass, annotate the *.xy file using mMass first. Only peak picking and saving the resulting *.msd file is necessary.
Reopen this file using the Related_Ion_Deconvoluter. In the middle tab it will show all detected peaks, not assigned to a specific mass yet. The left tab shows all already assigned charge states, the right window all charge states the program has calculated based on the known protein masses. These and some infos about them (which allow you to judge the quality of the annotation) are shown in the lower tab. On the far right you’ll be able to change the minimal and maximal charge state detected, as well as the variance on which the detection algorithm is based (the variance is oriented on the deconvoluted precursor mass, not the single charge states!) . You can also modify the number of decimals shown by the program, note that this does not affect the calculations (they are done the maximal accuracy).
If a single charge state has already been annotated, press the „Process“ button. The program checks if the unknown peaks may belong to the corresponding precursor (based on the single known charge state and the variance). If a peak belongs to the group it is removed from the “unknown peaks” list and added into the right tab. The resulting protein masses are added to the lower window, together with the mean of all peaks assigned to this group, the RMSD, the number of charge states annotated and a median intensity of all these peaks.
If no charge state has been annotated so far, you can select a peak in the middle tab, enter the corresponding charge into the „Charge“ field and press the „Add charge“ button. The corresponding precursor will be calculated, added to the lower tab and all peaks belonging to this precursor (taking the variance into account) will be added to the right tab.
Another possibility to add a precursor is to enter its mass into the „Protein mass field and click the „search protein“ button.
In case a protein is labeled wrongly or by mistake, you may remove all peaks belonging to a certain precursor by pressing the ”remove protein“ button, which will transfer all peaks from the „known“ and „guessed“ list to the „unknown“ list again.
Once you click the „write“ button you can create a new *.msd file which, once reopened in mMass, allows deconvolution and further analysis of the spectrum. The program does not save unknown peaks right now, I will add this option in a future release.
Feel free to download, change and use the program as you like (on your own risk). Its written in python2.7, the source code is available in the package as well. Obviously, I’ll only providing the program “as is”, without any kind of warranty.