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 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; }
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); } }
public MatchedTag(SequenceTag tag, int startIndex) : this(tag, startIndex, null) { }
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; }
public MatchedTag(SequenceTag tag, int startIndex): this(tag, startIndex, null) { }