コード例 #1
0
        private IEnumerable <FlankingMassMatch> GetBackwardMatches(
            MatchedTag matchedTag,
            ShiftedSequenceGraph backwardGraph,
            double?featureMass = null
            )
        {
            for (var j = matchedTag.StartIndex - 1; j >= -1; j--)
            {
                var residue  = j >= 0 ? _proteinSequence[j] : AminoAcid.ProteinNTerm.Residue;
                var location = j > 0 ? SequenceLocation.Everywhere : SequenceLocation.ProteinNTerm;
                if (!backwardGraph.AddAminoAcid(residue, location))
                {
                    yield break;
                }

                if (j == 0)
                {
                    continue;
                }
                var backwardMatch = GetBestMatchInTheGraph(backwardGraph, _spec, featureMass);
                if (backwardMatch != null)
                {
                    backwardMatch.Index = Math.Max(j, 0);
                    yield return(backwardMatch);
                }
            }
        }
コード例 #2
0
//        private readonly int _minProductIonCharge;
//        private readonly int _maxProductIonCharge;

        private IEnumerable <FlankingMassMatch> GetForwardMatches(
            MatchedTag matchedTag,
            ShiftedSequenceGraph forwardGraph,
            double?featureMass = null
            )
        {
            for (var i = matchedTag.EndIndex; i <= _proteinSequence.Length; i++)
            {
                var residue  = i < _proteinSequence.Length ? _proteinSequence[i] : AminoAcid.ProteinCTerm.Residue;
                var location = i < _proteinSequence.Length - 1
                    ? SequenceLocation.Everywhere
                    : SequenceLocation.ProteinCTerm;
                if (!forwardGraph.AddAminoAcid(residue, location))
                {
                    yield break;
                }

                if (i == _proteinSequence.Length - 1)
                {
                    continue;
                }

                var forwardMatch = GetBestMatchInTheGraph(forwardGraph, _spec, featureMass);

                if (forwardMatch != null)
                {
                    forwardMatch.Index = Math.Min(i + 1, _proteinSequence.Length);
                    yield return(forwardMatch);
                }
            }
        }