public IEnumerable <Tuple <Peptide, int> > DigestProteomeOnTheFlyFast(List <Protein> proteins, bool allowSNP, Queries AllQueries) { foreach (Peptide peptide in ProteinSearcher.ProteinDigest(options, proteins, allowSNP)) { //int firstIndex = AllQueries.BinarySearch(MassTolerance.MzFloor(peptide.MonoisotopicMass, options.precursorMassTolerance)); //if (firstIndex >= 0 && firstIndex < AllQueries.Count) // yield return new Tuple<Peptide, int>(peptide, firstIndex); //foreach (Peptide peptide in ProteinSearcher.ProteinDigestNoEnzyme(dbOptions, proteins, AllQueries)) //if (!TargetPeptides.Contains(peptide.BaseSequence)) //{ foreach (Peptide modPeptide in peptide.GetVariablyModifiedPeptides(options.variableModifications, options.maximumVariableModificationIsoforms)) { modPeptide.SetFixedModifications(options.fixedModifications); int firstIndex = AllQueries.BinarySearch(MassTolerance.MzFloor(modPeptide.MonoisotopicMass, options.precursorMassTolerance)); if (firstIndex >= 0 && firstIndex < AllQueries.Count) { yield return(new Tuple <Peptide, int>(modPeptide, firstIndex)); } } //TODO check if this favors targets over decoys since proteins are sorted target->deco // TargetPeptides.Add(peptide.BaseSequence); //} } }
public IEnumerable <Tuple <Peptide, int> > DigestProteomeOnTheFly(List <Protein> proteins, bool allowSNP, Queries AllQueries) { //HashSet<string> TargetPeptides = new HashSet<string>(); //Dictionary<string, int> TargetPeptides = new Dictionary<string, int>(); //Digest proteins and store peptides in a Dictionnary //Does not fit in memory -> 360 Go .... //dicOfPeptideSequences = new Dictionary<string, List<Protein>>(); //double minimumMonoisotopicPeakOffset = dbOptions.precursorMonoisotopicPeakCorrection ? dbOptions.minimumPrecursorMonoisotopicPeakOffset : 0; //double maximumMonoisotopicPeakOffset = dbOptions.precursorMonoisotopicPeakCorrection ? dbOptions.maximumPrecursorMonoisotopicPeakOffset : 0; foreach (Peptide peptide in ProteinSearcher.ProteinDigest(options, proteins, allowSNP)) { //int firstIndex = AllQueries.BinarySearch(MassTolerance.MzFloor(peptide.MonoisotopicMass, options.precursorMassTolerance)); //if (firstIndex >= 0 && firstIndex < AllQueries.Count) // yield return new Tuple<Peptide, int>(peptide, firstIndex); //foreach (Peptide peptide in ProteinSearcher.ProteinDigestNoEnzyme(dbOptions, proteins, AllQueries)) //if (!TargetPeptides.Contains(peptide.BaseSequence)) //{ foreach (Peptide modPeptide in peptide.GetVariablyModifiedPeptides(options.variableModifications, options.maximumVariableModificationIsoforms)) { modPeptide.SetFixedModifications(options.fixedModifications); int firstIndex = AllQueries.BinarySearch(MassTolerance.MzFloor(modPeptide.MonoisotopicMass, options.precursorMassTolerance)); if (firstIndex >= 0 && firstIndex < AllQueries.Count) { yield return(new Tuple <Peptide, int>(modPeptide, firstIndex)); } } //TODO check if this favors targets over decoys since proteins are sorted target->deco // TargetPeptides.Add(peptide.BaseSequence); //} } }