.. _example_scripts: Example Scripts ================ Parsing a mzML file (new syntax) -------------------------------- .. autofunction:: simple_parser.main .. include:: code_inc/simple_parser.inc Parsing a mzML file (old syntax) -------------------------------- .. autofunction:: simple_parser_v2.main .. include:: code_inc/simple_parser_v2.inc Query the obo files ------------------- .. autofunction:: queryOBO.main .. include:: code_inc/queryOBO.inc Plotting a chromatogram ----------------------- .. autofunction:: plot_chromatogram.main .. include:: code_inc/plot_chromatogram.inc Plotting a spectrum ------------------- .. autofunction:: plot_spectrum.main .. include:: code_inc/plot_spectrum.inc Plotting a spectrum with annotation ----------------------------------- .. autofunction:: plot_spectrum_with_annotation.main .. include:: code_inc/plot_spectrum_with_annotation.inc Extracting highest peaks ------------------------ .. autofunction:: highest_peaks.main .. include:: code_inc/highest_peaks.inc Compare spectra --------------- .. autofunction:: compare_spectra.main .. include:: code_inc/compare_spectra.inc Find m/z values --------------- .. autofunction:: has_peak.main .. include:: code_inc/has_peak.inc Extract ion chromatogram ------------------------ .. autofunction:: extract_ion_chromatogram.main .. include:: code_inc/extract_ion_chromatogram.inc Find abundant precursors ------------------------ .. autofunction:: get_precursors.main .. include:: code_inc/get_precursors.inc Access polarity of spectra -------------------------- .. autofunction:: polarity.main .. include:: code_inc/polarity.inc Check old to new function name mapping -------------------------------------- .. autofunction:: deprecation_check.main .. include:: code_inc/deprecation_check.inc Convert mzML(.gz) to mzML.gz (igzip) ------------------------------------ .. autofunction:: gzip_mzml.main .. include:: code_inc/gzip_mzml.inc Multi threading conversion of mzML(.gz) to mzML.gz (igzip) ---------------------------------------------------------- .. autofunction:: multi_threading_file_compression.main .. include:: code_inc/multi_threading_file_compression.inc Acces run infos --------------- .. autofunction:: access_run_info.main .. include:: code_inc/access_run_info.inc Creating a custom Filehandler ----------------------------- Introduction ++++++++++++ It is also possible to create an own API for different forms of mzML files. For this, a new class needs to be written, which implements a `read` and a `__getitem__` function. Implementation of the API Class +++++++++++++++++++++++++++++++ Example:: class SQLiteDatabase(object): """ Example implementation of a database Conncetor, which can be used to make run accept paths to sqlite db files. We initialize with a path to a database and implement a custom __getitem__ function to retrieve the spectra """ def __init__(self, path): """ """ connection = sqlite3.connect(path) self.cursor = connection.cursor() def __getitem__(self, key): """ Execute a SQL request, process the data and return a spectrum object. Args: key (str or int): unique identifier for the given spectrum in the database """ self.cursor.execute('SELECT * FROM spectra WHERE id=?', key) ID, element = self.cursor.fetchone() element = et.XML(element) if 'spectrum' in element.tag: spectrum = spec.Spectrum(element) elif 'chromatogram' in element.tag: spectrum = spec.Chromatogram(element) return spectrum def get_spectrum_count(self): self.cursor.execute("SELECT COUNT(*) from spectra") num = self.cursor.fetchone()[0] return num def read(self, size=-1): # implement read so it starts reading in first ID, # if end reached switches to next id and so on ... return '\n' Enabling the new API Class in File Interface +++++++++++++++++++++++++++++++++++++++++++++ In order to make the run class accept the new file class, one need to edit the :py:func:`_open` function in file_interface.py Example:: def _open(self, path): if path.endswith('.gz'): if self._indexed_gzip(path): self.file_handler = indexedGzip.IndexedGzip(path, self.encoding) else: self.file_handler = standardGzip.StandardGzip(path, self.encoding) # Insert a new condition to enable your new fileclass elif path.endswith('.db'): self.file_handler = utils.SQLiteConnector.SQLiteDatabase(path, self.encoding) else: self.file_handler = standardMzml.StandardMzml(path, self.encoding) return self.file_handler Moby Dick as indexed Gzip ------------------------- Example of how to use the GSGW and GSGR class to create and access indexed Gzip files .. code-block:: bash python3 index_moby_dick.py python3 read_moby_dick.py 10 .. Scripts .. -------- .. pymzML ships with some usefull scripts, which are described in the following .. Create indexed gziped conveniently .. +++++++++++++++++++++++++++++++++++ .. blub .. Find optimal read size .. +++++++++++++++++++++++ .. Hard drives have different sector sizes, .... .. utils -- A collection of useful functions .. ++++++++++++++++++++++++++++++++++++++++++ .. blub