Example #1
0
        private void Parse(string tagFilePath)
        {
            var tagParser    = new TsvFileParser(tagFilePath);
            var scan         = tagParser.GetData("ScanNum").Select(s => Convert.ToInt32(s)).ToArray();
            var sequence     = tagParser.GetData("SequenceTag").ToArray();
            var isPrefix     = tagParser.GetData("IsPrefix").Select(s => s.Equals("1")).ToArray();
            var flankingMass = tagParser.GetData("FlankingMass").Select(Convert.ToDouble).ToArray();

            for (var i = 0; i < tagParser.NumData; i++)
            {
                if (sequence[i].Length < _minTagLength)
                {
                    continue;
                }
                var tag = new SequenceTag(scan[i], sequence[i], isPrefix[i], flankingMass[i]);

                IList <SequenceTag> tagList;
                if (_scanToTags.TryGetValue(scan[i], out tagList))
                {
                    if (tagList.Count < _numTagsPerScan)
                    {
                        tagList.Add(tag);
                    }
                }
                else
                {
                    _scanToTags.Add(scan[i], new List <SequenceTag> {
                        tag
                    });
                }
            }
        }
Example #2
0
        public MatchedTag(SequenceTag tag, int startIndex, double?featureMass)
        {
            StartIndex            = startIndex;
            EndIndex              = startIndex + tag.Sequence.Length;
            NumMergedSequenceTags = 1;
            NTermFlankingMass     = tag.GetNTermFlankingMass(featureMass - Composition.H2O.Mass);
            CTermFlankingMass     = tag.GetCTermFlankingMass(featureMass - Composition.H2O.Mass);

            NumReliableNTermFlankingMasses = tag.IsPrefix ? 1 : 0;
            NumReliableCTermFlankingMasses = tag.IsPrefix ? 0 : 1;
        }
Example #3
0
        private void Parse(string tagFilePath)
        {
            var tagParser = new TsvFileParser(tagFilePath);
            var scan = tagParser.GetData("ScanNum").Select(s => Convert.ToInt32(s)).ToArray();
            var sequence = tagParser.GetData("SequenceTag").ToArray();
            var isPrefix = tagParser.GetData("IsPrefix").Select(s => s.Equals("1")).ToArray();
            var flankingMass = tagParser.GetData("FlankingMass").Select(Convert.ToDouble).ToArray();
            for (var i = 0; i < tagParser.NumData; i++)
            {
                if (sequence[i].Length < _minTagLength) continue;
                var tag = new SequenceTag(scan[i], sequence[i], isPrefix[i], flankingMass[i]);

                IList<SequenceTag> tagList;
                if (_scanToTags.TryGetValue(scan[i], out tagList))
                {
                    if (tagList.Count < _numTagsPerScan) tagList.Add(tag);
                }
                else
                {
                    _scanToTags.Add(scan[i], new List<SequenceTag> { tag });
                }
            }
        }
        //public static List<InitialAA> RemoveModifications(List<InitialAA> values, bool direction, List<double> modifications)
        //{
        //    List<InitialAA> newvalues = new List<InitialAA>();

        //    List<InitialAA> vals = new List<InitialAA>();
        //    vals.AddRange(values.OrderBy(a => a.Start).ToList());

        //    foreach (var va in vals)
        //    {
        //        //modifications.Where(a => a == vals.Select(b => b.Start - va.))
        //    }

        //    return newvalues;
        //}

        public static void findprlltags(List <InitialAA> values, List <SequenceTag> sequences)
        {
            try
            {
                int                h         = 0;
                List <double>      start     = new List <double>();
                List <SequenceTag> startse   = new List <SequenceTag>();
                List <double>      end       = new List <double>();
                double             singleend = new double();

                foreach (InitialAA val in values)
                {
                    var m = from SequenceTag sq in sequences
                            where sq.Index.Contains("-" + val.Index + "-")
                            select sq;
                    if (m.Any())
                    {
                        h++; continue;
                    }

                    List <SequenceTag> seq = new List <SequenceTag>();
                    List <AminoAcids>  aas = new List <AminoAcids>();

                    aas.Add(new AminoAcids
                    {
                        End        = val.End,
                        Name       = val.Name,
                        Start      = val.Start,
                        Score      = val.Delta + 50 / ((val.StartDelta + val.EndDelta) / 2),
                        StartScore = val.StartDelta,
                        EndScore   = val.EndDelta,
                        AverageMonoMassIntensities = val.AverageMonoMassIntensity,
                        SumofMonoMassIntensities   = val.SumofMonoMassIntensities
                    });

                    seq.Add(new SequenceTag
                    {
                        End           = val.End,
                        Start         = val.Start,
                        totalScore    = val.Delta,
                        RawSequence   = val.Name,
                        MaxScore      = val.Delta,
                        NumberofAA    = 1,
                        Index         = "-" + val.Index + "-",
                        IndividualAAs = aas
                    });
                    end.Add(val.End);
                    singleend = val.End;
                    foreach (InitialAA v in values.GetRange(h, values.Count - h))
                    {
                        if (v.Index == val.Index)
                        {
                            continue;
                        }
                        if (end.Where(a => a == v.Start).Any())
                        {
                            if (!(start.Where(a => a == v.Start).Any()))
                            {
                                var xx = (seq.Where(a => a.End == v.Start).ToList());
                                foreach (var z in xx)
                                {
                                    int x = seq.IndexOf(z);
                                    end.Add(v.End);
                                    start.Add(v.Start);
                                    AminoAcids aa = new AminoAcids();
                                    aa.End        = v.End;
                                    aa.Start      = v.Start;
                                    aa.EndScore   = v.EndDelta;
                                    aa.Name       = v.Name;
                                    aa.StartScore = v.StartDelta;
                                    aa.AverageMonoMassIntensities = v.AverageMonoMassIntensity;
                                    aa.SumofMonoMassIntensities   = v.SumofMonoMassIntensities;
                                    if (v.StartDelta == 0 && v.EndDelta == 0)
                                    {
                                        aa.Score = v.Delta;
                                    }
                                    else
                                    {
                                        aa.Score = v.Delta + 50 / ((v.StartDelta + v.EndDelta) / 2);
                                    }
                                    List <AminoAcids> aaa = new List <AminoAcids>();
                                    aaa.AddRange(seq[x].IndividualAAs);
                                    startse.Add(new SequenceTag
                                    {
                                        RawSequence   = seq[x].Sequence,
                                        Start         = v.Start,
                                        Index         = seq[x].Index,
                                        IndividualAAs = aaa,
                                        totalScore    = seq[x].Score + (float)aa.Score,
                                        Score         = seq[x].Score + (float)aa.Score,
                                        End           = v.End
                                    });
                                    seq[x].Start        = v.Start;
                                    seq[x].End          = v.End;
                                    seq[x].RawSequence += v.Name;
                                    seq[x].totalScore   = (float)aa.Score + startse[startse.Count - 1].totalScore;
                                    seq[x].Index       += "-" + v.Index + "-";
                                    seq[x].IndividualAAs.Add(aa);
                                }
                            }
                            else
                            {
                                var ses = startse.Where(b => b.Start == v.Start).ToList();
                                foreach (var se in ses)
                                {
                                    if (se.realEnd != v.Start)
                                    {
                                        continue;
                                    }
                                    SequenceTag sequence = new SequenceTag();
                                    AminoAcids  aa       = new AminoAcids();
                                    aa.End      = v.End;
                                    aa.Start    = v.Start;
                                    aa.EndScore = v.EndDelta;
                                    aa.Name     = v.Name;
                                    if (v.StartDelta == 0 && v.EndDelta == 0)
                                    {
                                        aa.Score = v.Delta;
                                    }
                                    else
                                    {
                                        aa.Score = v.Delta + 50 / ((v.StartDelta + v.EndDelta) / 2);
                                    }
                                    aa.StartScore = v.StartDelta;
                                    aa.AverageMonoMassIntensities = v.AverageMonoMassIntensity;
                                    aa.SumofMonoMassIntensities   = v.SumofMonoMassIntensities;
                                    seq.Add(new SequenceTag
                                    {
                                        Index       = se.Index + "-" + v.Index + "-",
                                        Start       = se.Start,
                                        RawSequence = se.Sequence + v.Name,
                                        End         = v.End,
                                        totalScore  = se.totalScore + (float)aa.Score,
                                        Score       = se.totalScore + (float)aa.Score
                                    });

                                    int count = seq.Count - 1;

                                    end.Add(v.End);
                                    start.Add(v.Start);
                                    List <AminoAcids> aaa = new List <AminoAcids>();
                                    aaa.AddRange(se.IndividualAAs);
                                    startse.Add(new SequenceTag
                                    {
                                        RawSequence   = se.Sequence + v.Name,
                                        Start         = se.Start,
                                        Index         = v.Index,
                                        IndividualAAs = aaa,
                                        End           = v.End
                                    });
                                    int cnt = startse.Count - 1;
                                    startse[cnt].IndividualAAs.Add(aa);
                                    seq[count].IndividualAAs = new List <AminoAcids>();
                                    seq[count].IndividualAAs = startse[cnt].IndividualAAs;
                                    seq[count].totalScore    = v.Delta + seq[count].totalScore;
                                }
                            }
                        }
                    }
                    sequences.AddRange(seq);
                    end.Clear();
                    start.Clear();
                    startse.Clear();
                    h++;
                }
            }
            catch (Exception ex)
            {
                Debug.Print("Exception in findprlltags(): " + ex.Message);
            }
        }
Example #5
0
 public MatchedTag(SequenceTag tag, int startIndex) : this(tag, startIndex, null)
 {
 }
Example #6
0
        public MatchedTag(SequenceTag tag, int startIndex, double? featureMass)
        {
            StartIndex = startIndex;
            EndIndex = startIndex + tag.Sequence.Length;
            NumMergedSequenceTags = 1;
            NTermFlankingMass = tag.GetNTermFlankingMass(featureMass - Composition.H2O.Mass);
            CTermFlankingMass = tag.GetCTermFlankingMass(featureMass - Composition.H2O.Mass);

            NumReliableNTermFlankingMasses = tag.IsPrefix ? 1 : 0;
            NumReliableCTermFlankingMasses = tag.IsPrefix ? 0 : 1;
        }
Example #7
0
 public MatchedTag(SequenceTag tag, int startIndex): this(tag, startIndex, null)
 {
 }