Esempio n. 1
0
 def sequenceDTAs(self):
     curPairedScanData = self._indexedPairData[int(self._pairedScanListbox.curselection()[0])]
     t1 = time.time()
     if curPairedScanData['heavy'] != 'N/A':
         heavySeqMap = copy.deepcopy(self._seqMap)
         heavySeqMap['Mods']['N-Term'] = self._paramsDict['Pair Configurations'][curPairedScanData['pair configuration']]['NModSymbol']
         heavySeqMap['Mods']['C-Term'] = self._paramsDict['Pair Configurations'][curPairedScanData['pair configuration']]['CModSymbol']
         sharedInfo, starts, ends, deltas, termModHash, specs, G = DNS.initializeSpectrumGraph(self._pnet, self._paramsDict, self._scanFDict[curPairedScanData['light']]['dta'], heavyPath=self._scanFDict[curPairedScanData['heavy']]['dta'], ppm=self._ppm, usePaired=True, pairConfigName=curPairedScanData['pair configuration'], verbose=False)
         precMass = sharedInfo['lightPrecMass']
     else:
         sharedInfo, starts, ends, deltas, termModHash, specs, G = DNS.initializeSpectrumGraph(self._pnet, self._paramsDict, self._scanFDict[curPairedScanData['light']]['dta'], ppm=self._ppm, verbose=False)
         precMass = sharedInfo['precMass']
     
     epsilon = self._ppm * precMass * 10 ** -6
     paths, subG = DNS.getSpectrumGraphPaths(G, deltas, specs, starts, ends, precMass - Constants.mods['H+'] - Constants.mods['H2O'], termModHash=termModHash, unknownPenalty=self._ambigpenalty, maxEdge=self._maxedge, minEdge=self._minedge, subGraphCut=self._subgraphcut, subAlpha=0.3, alpha=self._alpha, epsilon=epsilon, aas=self._aas, verbose=False)
     seqTime = time.time() - t1
     if paths:
         seqs = []
         for path in paths:
             seqs.extend([DNS.getSequenceFromNodes(subG, path[1], precMass - Constants.mods['H+'] - Constants.mods['H2O'], termModHash)])
 
         scores = list(zip(*paths)[0])
         Ord = np.argsort(-1 * np.array(scores))
         
         ambigEdges = []
         numAmbig = 0
         for j in range(self._numseq):
             try:
                 for i in range(len(seqs[Ord[j]])):
                     if type(seqs[Ord[j]][i]) == tuple:
                         ambigEdges.extend([seqs[Ord[j]][i]])
                         numAmbig += 1
                         seqs[Ord[j]][i] = '-'
             
                 curSeq = ''.join(seqs[Ord[j]])
                 curSeq = An.preprocessSequence(curSeq, self._seqMap, ambigEdges=ambigEdges)
                 if j == 0 and curPairedScanData['heavy'] != 'N/A':
                     try:
                         curHeavySeq = An.preprocessSequence(curSeq, heavySeqMap, replaceExistingTerminalMods=True, ambigEdges=ambigEdges)
                         AAs = An.getAllAAs(curHeavySeq, ambigEdges=ambigEdges)
                         self._seqStatus.set('Paired Sequencing Successful! Heavy Sequence: %s. Time taken: %f seconds' % (curHeavySeq, seqTime))
                     except KeyError:
                         self._seqStatus.set('ERROR: Heavy Sequence %s is not a valid sequence! Time wasted: %f seconds' % (curHeavySeq, seqTime))
                 elif j == 0:
                     self._seqStatus.set('Unpaired Sequencing Successful! Time taken: %f seconds' % (seqTime))
                 
                 for labelInst in self._seqScoreData[j]['seq'].children.values():
                     labelInst.destroy()
                 self.displayConfColoredSequence(subG, self._seqScoreData[j]['seq'], paths[Ord[j]][1], curSeq, ambigEdges=ambigEdges)
                 self._seqScoreData[j]['score'].set(str(scores[Ord[j]]))
             except IndexError:
                 for labelInst in self._seqScoreData[j]['seq'].children.values():
                     labelInst.destroy()
                 self._seqScoreData[j]['score'].set('')
     else:
         self._seqStatus.set('ERROR: No Sequences Found! Time wasted: %f seconds' % seqTime)