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)
def validateHeavySequence(seq, heavySeqMap, ambigEdges): try: if seq != '-': heavySeq = Analytics.preprocessSequence(seq, heavySeqMap, replaceExistingTerminalMods=True, ambigEdges=ambigEdges) AAs = Analytics.getAllAAs(heavySeq, ambigEdges=ambigEdges) return True else: return False except KeyError: return False