예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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