A library for mass spectrometry projects.
Releases are here: https://www.nuget.org/packages/mzLib/
To read Thermo or mzML files, use
ThermoStaticData staticThermo = ThermoStaticData.LoadAllStaticData(@"spectra.raw");
ThermoDynamicData dynamicThermo = ThermoDynamicData.InitiateDynamicConnection(@"spectra.raw")
Mzml mzmlFile = Mzml.LoadAllStaticData(@"spectra.mzML");
Both filetypes implement the same interface that has all of the necessary functionality to interact with spectra files:
IMsDataFile<IMsDataScan<IMzSpectrum<IMzPeak>>> thermoFile = new ThermoRawFile(@"spectra.RAW");
IMsDataFile<IMsDataScan<IMzSpectrum<IMzPeak>>> mzmlFile = new Mzml(@"spectra.mzML");
Loaders.LoadElements("elements.dat"); // void, loads elements into static PeriodicTable class
IEnumerable<ModificationWithLocation> unimodMods = Loaders.LoadUnimod("unimod.dat");
IEnumerable<ModificationWithLocation> uniprotMods = Loaders.LoadUniprot("uniprot.dat");
To read .fasta, .xml, or .xml.gz files, use
List<Protein> proteins = ProteinDbLoader.LoadProteinDb("proteins.xml", generateDecoys, allKnownModifications, IsContaminant, out unknownModifications);
The parameters are:
bool generateDecoys
True if wish to generate decoy proteins.IDictionary<string, IList<Modification>> allKnownModifications
Dictionary of modifications with keys that correspond to modifications in the xml file.bool IsContaminant
True if it is a contaminant databaseout Dictionary<string, Modification> unknownModifications
An auxiliary output of modifications that were in the xml file but are not known.
To load modifications from ptmlist formatted files, use
IEnumerable<ModificationWithLocation> ptms = PtmListLoader.ReadMods("ptms.txt")
Code heavily borrowed from https://github.com/dbaileychess/CSMSL and distrubuted under the appropriate license, LGPL.