def findDeltaPairs(dtaList, delta, ppm=5, intEp=20): precMassArr = np.zeros((len(dtaList), 2)) pairs = [] for i in range(len(dtaList)): precMassArr[i] = [DataFile.getPrecMassAndCharge(dtaList[i])[0], DataFile.getScanNum(dtaList[i])] maxPrecMass = np.max(precMassArr, 0)[0] epsilon = ppm * 10**-6 * maxPrecMass resolution = epsilon/intEp hPrecMassArr = copy.copy(precMassArr) hPrecMassArr[:,0] = np.round(hPrecMassArr[:,0]/resolution) hashedDict = {} for elem in hPrecMassArr: hInd = int(elem[0]) for hMass in range(hInd-intEp, hInd+intEp+1): try: hashedDict[hMass] += [(hMass-hInd, elem[1])] except KeyError: hashedDict[hMass] = [(hMass-hInd, elem[1])] shiftHashDict = copy.copy(precMassArr) shiftHashDict[:,0] = np.round((shiftHashDict[:,0] - delta)/resolution) for i, elem in enumerate(shiftHashDict): hInd = int(elem[0]) if hInd in hashedDict: for possiblePair in hashedDict[hInd]: if abs(possiblePair[0]) * resolution * 10**6/precMassArr[i][0] < ppm: pairs += [(int(possiblePair[1]), int(elem[1]))] return pairs
def findSamePrecMassClusters(dtaList, ppm=5): precMassArr = np.zeros((len(dtaList), 2)) for i in range(len(dtaList)): precMassArr[i] = [DataFile.getPrecMassAndCharge(dtaList[i])[0], DataFile.getScanNum(dtaList[i])] precMassArr = precMassArr[np.argsort(precMassArr[:,0])] clusters = [[i] for i in range(precMassArr.shape[0])] i = 0 while i < len(clusters): mergeClusters = False epsilon = ppm * 10**-6 * precMassArr[clusters[i][0]][0] for precMassInd1 in clusters[i]: for precMassInd2 in clusters[i - 1]: if (np.abs(precMassArr[precMassInd1][0] - precMassArr[precMassInd2][0]) < epsilon): mergeClusters = True break if mergeClusters: clusters[i - 1].extend(clusters[i]) del clusters[i] else: i = i + 1 scanFClusters = [] for cluster in clusters: scanFClusters += [[precMassArr[i][1] for i in cluster]] return scanFClusters
def getScanFDict(dtaList): scanFDict = {} for dta in dtaList: scanF = DataFile.getScanNum(dta) precMass = DataFile.getPrecMassAndCharge(dta)[0] scanFDict[scanF] = {'dta': dta, 'precMass': precMass, 'sequenced': False} return scanFDict
def getScanFDict(dtaList): scanFDict = {} for dta in dtaList: scanF = DataFile.getScanNum(dta) precMass = DataFile.getPrecMassAndCharge(dta)[0] scanFDict[scanF] = {"dta": dta, "precMass": precMass, "sequenced": False} return scanFDict