public void Filter(MassTagDatabaseOptions options) { var massTags = MassTags.Where(t => t.Net >= options.MinimumNet) .Where(t => t.Net <= options.MaximumNet) .Where(t => t.MassMonoisotopic >= options.MinimumMass) .Where(t => t.MassMonoisotopic <= options.MaximumMass).ToList(); this.MassTags.Clear(); this.AddMassTagsAndProteins(massTags, this.Proteins); }
/// <summary> /// Loads the mass tags and populates the protein information. /// </summary> /// <param name="massTags"></param> /// <param name="massTagToProteinMap"></param> public void AddMassTagsAndProteins(List <MassTagLight> massTags, Dictionary <int, List <Protein> > massTagToProteinMap) { MassTags.AddRange(massTags); var massTagMap = new Dictionary <int, MassTagLight>(); foreach (var tag in massTags) { if (massTagMap.ContainsKey(tag.Id) == false) { massTagMap.Add(tag.Id, tag); } } ProteinsToMassTags = new Dictionary <int, List <MassTagLight> >(); var proteinMap = new Dictionary <int, Protein>(); AllProteins = new List <Protein>(); foreach (var key in massTagToProteinMap.Keys) { var proteins = massTagToProteinMap[key]; if (massTagMap.ContainsKey(key) == false) { continue; } var tag = massTagMap[key]; foreach (var p in proteins) { if (!proteinMap.ContainsKey(p.RefId)) { AllProteins.Add(p); proteinMap.Add(p.RefId, p); } if (!ProteinsToMassTags.ContainsKey(p.ProteinId)) { ProteinsToMassTags.Add(p.ProteinId, new List <MassTagLight>()); } ProteinsToMassTags[p.ProteinId].Add(tag); } } Proteins = massTagToProteinMap; DetermineIfContainsDriftTime(massTags); }
/// <summary> /// Handles converting the rows to factor objects. /// </summary> /// <param name="sender"></param> /// <param name="args"></param> public void HandleDataRow(object sender, MageDataEventArgs args) { if (args == null) { throw new NullReferenceException("The mass tags are invalid."); } if (args.Fields == null) { return; throw new NullReferenceException("The mass tag database rows are invalid."); } if (args.Fields.Length < 11) { return; throw new ArgumentException("The number of columns for the mass tags are invalid."); } var tag = new MassTagLight(); if (m_columnMapping.ContainsKey("Mass")) { tag.MassMonoisotopic = Convert.ToDouble(args.Fields[m_columnMapping["Mass"]]); } else { return; } if (m_columnMapping.ContainsKey("NET")) { tag.NetAverage = Convert.ToDouble(args.Fields[m_columnMapping["NET"]]); tag.Net = tag.NetAverage; } else { return; } if (m_columnMapping.ContainsKey("Dataset_Member_Count")) { tag.ObservationCount = Convert.ToInt32(args.Fields[m_columnMapping["Dataset_Member_Count"]]); } else { return; } if (m_columnMapping.ContainsKey("Cluster_ID")) { tag.Id = Convert.ToInt32(args.Fields[m_columnMapping["Cluster_ID"]]); } else { return; } if (m_columnMapping.ContainsKey("Drift_Time")) { tag.DriftTime = Convert.ToDouble(args.Fields[m_columnMapping["Drift_Time"]]); } else { return; } if (m_columnMapping.ContainsKey("Charge")) { tag.ChargeState = Convert.ToInt32(args.Fields[m_columnMapping["Charge"]]); } else { return; } if (m_columnMapping.ContainsKey("Score")) { tag.Score = Convert.ToDouble(args.Fields[m_columnMapping["Score"]]); } else { return; } MassTags.Add(tag); }