# 7. Example scripts

In this section, example scripts for the usage of pymzML can be found.

## 7.1. Finding a peak

hasPeak.py

Testscript to demonstrate functionality of function `spec.Spectrum.hasPeak()` or `spec.Spectrum.hasDeconvolutedPeak()`

Example:

    >>> import pymzml, get_example_file
    >>> example_file = get_example_file.open_example('deconvolution.mzML.gz')
    >>> run = pymzml.run.Reader(example_file, MS1_Precision = 5e-6, MSn_Precision = 20e-6)
    >>> for spectrum in run:
    ...     if spectrum["ms level"] == 2:
    ...             peak_to_find = spectrum.hasPeak(1016.5404)
    ...             print(peak_to_find)
    [(1016.5402567492666, 19141.735187697403)]

## 7.2. Plotting a spectrum

plotAspec.py

This function shows how to plot a simple spectrum. It can be directly plotted via this script or using the python console

Example of plotting a spectrum:

    >>> import pymzml, get_example_file
    >>> mzMLFile = 'profile-mass-spectrum.mzml'
    >>> get_example_file.open_example(mzMLFile)
    >>> run = pymzml.run.Reader("mzML_example_files/"+mzMLFile, MSn_Precision = 25e-6)
    >>> p = pymzml.plot.Factory()
    >>> for spec in run:
    >>>     p.newPlot()
    >>>     p.add(spec.peaks, color=(200,0,0), style='circles')
    >>>     p.add(spec.centroidedPeaks, color=(0,0,0), style='sticks')
    >>>     p.add(spec.reprofiledPeaks, color=(0,255,0), style='circles')
    >>>     p.save( filename="output/plotAspect.xhtml" , mzRange = [744.7,747] )

output as xhtml :)

## 7.3. Abundant precursor

find_abundant_precursors.py

Testscript to demonstrate an easy isoloation of the most abundant, isolated precusors for MSn spectra.Thus exclusion list for further MS runs can be generated. In this example all precursors which were isolated more than 5 times are found and printed.

Example:

    >>> import pymzml, get_example_file, operator.item
    >>> import collections import defaultdict as ddict
    >>> from operator import itemgetter
    >>> example_file = get_example_file.open_example('dta_example.mzML')
    >>> run = pymzml.run.Reader(example_file , MS1_Precision = 5e-6 , MSn_Precision = 20e-6 )
    >>> precursor_count_dict = ddict(int)
    >>> for spectrum in run:
    >>>    if spectrum["ms level"] == 2:
    >>>        if "precursors" in spectrum.keys():
    >>>            precursor_count_dict[round(float(spectrum["precursors"][0]["mz"]),3)] += 1
    >>> for precursor, frequency in sorted(precursor_count_dict.items()):
    >>>     print("{0}\t{1}".format(precursor, frequency))

## 7.4. Compare Spectra

compareSpectra.py

Compare two spectra and return the cosine distance between them. The returned value is between 0 and 1, a returned value of 1 represents highest similarity.

Example

    >>> spec1 = pymzml.spec.Spectrum(measuredPrecision = 20e-5)
    >>> spec2 = pymzml.spec.Spectrum(measuredPrecision = 20e-5)
    >>> spec1.peaks = [ ( 1500,1 ), ( 1502,2.0 ), (1300,1 )]
    >>> spec2.peaks = [ ( 1500,1 ), ( 1502,1.3 ), (1400,2 )]
    >>> spec1.similarityTo( spec2 )
    0.5682164685724541
    >>> spec1.similarityTo( spec1 )
    1.0000000000000002

## 7.5. Query Obo files

queryOBO.py

%(prog)s [-h] [-v VERSION] query

Use this script to interrogate the OBO database files.

example

$ %(prog)s ‘scan time’ MS:1000016 scan time ‘The time taken for an acquisition by scanning analyzers.’ [PSI:MS] Is a: MS:1000503 ! scan attribute

## 7.6. Highest peaks

highestPeaks.py

Testscript to isolate the n-highest peaks from an example file.

Example:

    >>> example_file = get_example_file.open_example('deconvolution.mzML.gz')
    >>> run = pymzml.run.Reader(example_file, MS1_Precision = 5e-6, MSn_Precision = 20e-6)
    >>> for spectrum in run:
    ...     if spectrum["ms level"] == 2:
    ...         if spectrum["id"] == 1770:
    ...             for mz,i  in spectrum.highestPeaks(5):
    ...                 print(mz,i)

## 7.7. extract a specific Ion Chromatogram (EIC, XIC)

extractIonChromatogram.py

Demonstration of the extraction of a specific ion chromatogram, i.e. XIC or EIC

Example:

    >>> import pymzml, get_example_file
    >>> example_file = get_example_file.open_example('small.pwiz.1.1.mzML')
    >>> run = pymzml.run.Reader(example_file, MS1_Precision = 20e-6, MSn_Precision = 20e-6)
    >>> timeDependentIntensities = []
    >>> for spectrum in run:
    ...     if spectrum['ms level'] == 1:
    ...         matchList = spectrum.hasPeak(MASS_2_FOLLOW)
    ...         if matchList != []:
    ...             for mz,I in matchList:
    ...                 timeDependentIntensities.append( [ spectrum['scan time'], I , mz ])
    >>> for rt, i, mz in timeDependentIntensities:
    ...     print('{0:5.3f} {1:13.4f}       {2:10}'.format( rt, i, mz ))

## 7.8. Accessing the original XML Tree of a spectrum

accessAllData.py

accessAllData.py

Demos the usage of the spectrum.xmlTree iterator that can be used to extract all MS:tag for a given spectrum.

Example:

    >>> example_file = get_example_file.open_example('small.pwiz.1.1.mzML')
    >>> run = pymzml.run.Reader(example_file, MSn_Precision = 250e-6)
    >>> spectrum = run[1]
    >>> for element in spectrum.xmlTree:
    ...     print('-'*40)
    ...     print(element)
    ...     print(element.get('accession') )
    ...     print(element.tag)
    ...     print(element.items())

## 7.9. Write mzML

writeExample.py

This is part is still in development.

Simple test of the mzML writing functionality.

This is very preliminary. The ‘header’ is copied into the new file with some addition in the softwareList XML tag, hence a pymzml.run.Reader Object needs to be passed over to the write function.

Writing of indexed mzML files is not possible at the moment

Example:

    >>> example_file = get_example_file.open_example('small.pwiz.1.1.mzML')
    >>> run  = pymzml.run.Reader(example_file, MS1_Precision = 5e-6)
    >>> run2 = pymzml.run.Writer(filename = 'write_test.mzML', run= run , overwrite = True)
    >>> specOfIntrest = run[2]
    >>> run2.addSpec(spec)
    >>> run2.save()