Exemple #1
0
def MZMLtoSpectrum(filename, rtOnly=False):
    spectra = []
    import pyopenms

    # need to use OnDiscMSExperiment to sequentially read
    # spectra without loading whole file into memory
    experiment = pyopenms.OnDiscMSExperiment()
    pyopenms.IndexedMzMLFileLoader().load(filename, experiment)

    for i in range(experiment.getNrSpectra()):
        spectrum = experiment.getSpectrum(i)
        try:
            time = spectrum.getRT()
        except KeyError, e:
            time_prev = time
            if delta_time > 0:
                time += delta_time
            else:
                time += 1.0

        if rtOnly:
            mzData, intData, spectrum = None, None, None

        else:
            (mzData, intData) = spectrum.get_peaks()
            if mzData.shape[0] == 0:
                mzData = np.empty(0, dtype='float32')
                intData = np.empty(0, dtype='float32')

        yield Spectrum(time, mzData, intData, spectrum)
Exemple #2
0
def reader(path: str, on_disc: bool = True):
    """
    Load `path` file into an OnDiskExperiment. If the file is not indexed, load
    the file.

    Parameters
    ----------
    path : str
        path to read mzML file from.
    on_disc : bool
        if True doesn't load the whole file on memory.

    Returns
    -------
    pyopenms.OnDiskMSExperiment or pyopenms.MSExperiment
    """
    if on_disc:
        try:
            exp_reader = pyopenms.OnDiscMSExperiment()
            exp_reader.openFile(path)
        except RuntimeError:
            msg = "{} is not an indexed mzML file, switching to MSExperiment"
            print(msg.format(path))
            exp_reader = pyopenms.MSExperiment()
            pyopenms.MzMLFile().load(path, exp_reader)
    else:
        exp_reader = pyopenms.MSExperiment()
        pyopenms.MzMLFile().load(path, exp_reader)
    return exp_reader
    def test_readfile_content(self):
        e = pyopenms.OnDiscMSExperiment()
        pyopenms.IndexedMzMLFileLoader().load(self.filename, e)

        self.assertEqual(e.getNrSpectra(), 2)
        self.assertEqual(e.getNrChromatograms(), 1)

        s = e.getSpectrum(0)
        data_mz, data_int = s.get_peaks()
        self.assertEqual(len(data_mz), 19914)
        self.assertEqual(len(data_int), 19914)

        self.assertEqual(len(e.getSpectrum(1).get_peaks()[0]), 19800)
        self.assertEqual(len(e.getSpectrum(1).get_peaks()[1]), 19800)
        self.assertEqual(len(e.getChromatogram(0).get_peaks()[0]), 48)
        self.assertEqual(len(e.getChromatogram(0).get_peaks()[1]), 48)

        if False:
            # Currently we don't deal with exceptions properly
            raised = False
            try:
                e.getChromatogram(2).get_peaks()
            except Exception as e:
                raised = True

            self.assertTrue(raised)
    def test_readfile_content(self):
        e = pyopenms.OnDiscMSExperiment()
        pyopenms.IndexedMzMLFileLoader().load(self.filename, e)

        self.assertEqual(e.getNrSpectra(), 2)
        self.assertEqual(e.getNrChromatograms(), 1)

        s = e.getSpectrum(0)
        data = s.get_peaks()
        self.assertEqual(len(data), 19914)

        self.assertEqual(len(e.getSpectrum(1).get_peaks()), 19800)
        self.assertEqual(len(e.getChromatogram(0).get_peaks()), 48)

        raised = False
        try:
            e.getChromatogram(2).get_peaks()
        except Exception, e:
            raised = True
Exemple #5
0
    def test_readfile(self):
        e = pyopenms.OnDiscMSExperiment()
        success = pyopenms.IndexedMzMLFileLoader().load(self.filename, e)

        self.assertTrue(success)
Exemple #6
0
    if not os.path.isfile(args.in_):
        print('Error:', args.in_, 'is not a file')
        exit(1)
    if not os.path.isdir(args.dir):
        print('Error:', args.dir, 'is not an existing directory')
        exit(1)
    if not args.out.endswith('.featureXML') or args.out.endswith(
            '.mzML'):  # TODO: implement mzML support
        print('Error:', args.out, 'must be a featureXML or mzML file')
        exit(1)

    if args.bench:
        time_out = open(args.dir + '/benchmark.txt', 'w')
        start_t = time.time()

    exp = ms.OnDiscMSExperiment()
    print('Loading mzML input file.', end=' ', flush=True)
    if not exp.openFile(args.in_):
        print('Error:', args.in_, 'is not an indexed mzML file')
        exit(1)
    print('Done', flush=True)

    if args.bench:
        total_t = time.time() - start_t
        time_out.write(f'mzml load: {total_t}s\n')
        time_out.close()

    ff = FeatureFinderIonMobility()
    features = ff.run(exp, args.num_bins, args.pp_type, args.peak_radius,
                      args.window_radius, args.pp_mode, args.ff_type, args.dir,
                      args.filter, args.debug, args.bench)
 def readMS(self, file_path):
     # Later: process other types of file
     exp = pyopenms.OnDiscMSExperiment()
     exp.openFile(file_path)
     return exp