class DeltaExtractor(object): def __init__(self, path): self.path = path self.masterSpectrum = MasterSpectrum() def createDeltaMasterSpectrum(self, min_rel_intensity, delta_func=calculate_Delta_by_ppm(20)): up = 0 with mgf.read(self.path) as spectra: for spectrum in spectra: print(up) up += 1 int_dic = spectrum['intensity array'] mz_dic = spectrum['m/z array'] rel_int = calculateRelativeIntensity(int_dic) smallerArea = [(i, j) for i, j in zip(mz_dic, rel_int) if j >= min_rel_intensity] mz_dic = [i for i, j in smallerArea] rel_int = [j for i, j in smallerArea] for i in range(len(mz_dic) - 1, -1, -1): for j in range(i - 1, -1, -1): diff = mz_dic[i] - mz_dic[j] p = Peak(diff, rel_int[j], delta_func) # intensities are from lower peak self.masterSpectrum.add(p, 0) def exportCsv(self, output_path): self.masterSpectrum.export_to_csv(output_path)
class PrecursorDeltaPeaksExtractor(object): def __init__(self, path): self.path = path self.masterSpectrum = MasterSpectrum() def createDeltaPrecursorMasterSpectrum( self, delta_func=calculate_Delta_by_ppm(20)): with mgf.read(self.path) as spectra: for spectrum in spectra: int_dic = spectrum['intensity array'] mz_dic = spectrum['m/z array'] chrg_spec = spectrum['params']['charge'][0] precursor = calculatePrecursor( mz=spectrum['params']['pepmass'][0], charge=chrg_spec) rel_int = calculateRelativeIntensity(int_dic) for m, i in zip(mz_dic, rel_int): p = Peak(precursor - float(m), float(i), delta_func) self.masterSpectrum.add(p, 0) def exportCsv(self, output_path): self.masterSpectrum.export_to_csv(output_path)