def getPairedAndUnpairedSpectra(dtaDir, dtaList, Nmod, Cmod, ppm=5, cutOff=0.1, verbose=False): specPairs = [] unpairedSpecs = [] delta = Nmod + Cmod for i in range(len(dtaList)): paired = False precMass1 = DataFile.getPrecMassAndCharge(dtaList[i])[0] spec1 = DataFile.getMassIntPairs(dtaList[i]) for j in range(i + 1, len(dtaList)): precMass2 = DataFile.getPrecMassAndCharge(dtaList[j])[0] epsilon = ppm * 10 ** -6 * max(precMass1, precMass2) if np.abs(np.abs(precMass1 - precMass2) - delta) < epsilon: spec2 = DataFile.getMassIntPairs(dtaList[j]) if precMass1 < precMass2: N, C = SA.getNandCIons(spec1, spec2, Nmod, Cmod, epsilon=epsilon) ratio = SA.getSharedPeaksRatio(spec1, spec2, N, C) else: N, C = SA.getNandCIons(spec2, spec1, Nmod, Cmod, epsilon=epsilon) ratio = SA.getSharedPeaksRatio(spec2, spec1, N, C) if ratio > cutOff: if verbose: print 'Pair found', dtaList[i], dtaList[j] paired = True specs = (dtaList[i], dtaList[j]) lightInd = int(precMass2 < precMass1) specPairs.extend([(ratio, specs[lightInd], specs[1 - lightInd])]) if not paired: unpairedSpecs.extend([dtaList[i]]) if verbose: print 'No pairs for', dtaList[i] return specPairs, unpairedSpecs
def getAlignmentRatios(scanInfoFName, dtaDir, delta, epsilon=0.02): scanInfo = DataFile.getScanInfo(scanInfoFName) dtaNames = DataFile.getDTAFNamesInDir(dtaDir) scansToUse = scanInfo """ for i in range(len(scanInfo) - 1): if (int(scanInfo[i][0]) + 1 == int(scanInfo[i+1][0])): if (scanInfo[i][1] == scanInfo[i+1][1]): scansToUse += [scanInfo[i]] else: scansToUse += [scanInfo[i]] """ ratios = [] goodRatios = [] for i in range(len(scansToUse)): for j in range(i + 1, len(scansToUse)): if j == i + 1: print '%s percent done' % str(float(i) / len(scansToUse)) if np.abs(np.abs(float(scansToUse[i][1]) - float(scansToUse[j][1])) - delta) < epsilon: dta1 = '244.%(scanF)04i.%(scanF)04i.1.dta' % {'scanF': int(scansToUse[i][0])} dta2 = '244.%(scanF)04i.%(scanF)04i.1.dta' % {'scanF': int(scansToUse[j][0])} spec1 = DataFile.getMassIntPairs(dtaDir + dta1) spec2 = DataFile.getMassIntPairs(dtaDir + dta2) ratio = SA.getSharedPeaksRatio(float(scansToUse[i][1]), spec1, float(scansToUse[j][1]), spec2, epsilon) print ratio, scansToUse[i], scansToUse[j] ratios.extend([(ratio, scansToUse[i], scansToUse[j])]) with open('heavylightpairs.txt', 'w') as fout: pickle.dump(ratios, fout) return ratios
def getSharedPeaksRatio(lightPath, heavyPath, epsilon): lightPairs = DataFile.getMassIntPairs(lightPath) heavyPairs = DataFile.getMassIntPairs(heavyPath) N, C = SA.getNandCIons(lightPairs, heavyPairs, pairConfig['NMod'], pairConfig['CMod'], epsilon=epsilon) return SA.getSharedPeaksRatio(lightPairs, heavyPairs, N, C)
def getSharedPeaksRatio(lightPath, heavyPath, epsilon): lightPairs = DataFile.getMassIntPairs(lightPath) heavyPairs = DataFile.getMassIntPairs(heavyPath) N, C = SA.getNandCIons(lightPairs, heavyPairs, 17.0265, -16.0187, epsilon=epsilon) return SA.getSharedPeaksRatio(lightPairs, heavyPairs, N, C)
def getSharedPeaksRatio(lightPairs, heavyPairs, pairConfig, epsilon): N, C = SA.getNandCIons(lightPairs, heavyPairs, pairConfig['NMod'], pairConfig['CMod'], epsilon=epsilon) return SA.getSharedPeaksRatio(lightPairs, heavyPairs, N, C)