public override IEnumerable <DocNode> GetChoices(bool useFilter) { SrmSettings settings = DocSettings; List <DocNode> listPeptides = new List <DocNode>(); foreach (var nodePep in DocNode.GetPeptideNodes(settings, useFilter)) { var nodePepMaterialized = nodePep.ChangeSettings(settings, SrmSettingsDiff.ALL); if (!useFilter || settings.TransitionSettings.Libraries.MinIonCount == 0 || nodePepMaterialized.Children.Count != 0) { listPeptides.Add(nodePepMaterialized); } } PeptideRankId rankId = DocSettings.PeptideSettings.Libraries.RankId; if (rankId != null && !DocNode.IsPeptideList) { listPeptides = PeptideGroup.RankPeptides(listPeptides, settings, useFilter).ToList(); } MergeChosen(listPeptides, useFilter, node => ((PeptideDocNode)node).Key); return(listPeptides); }
void GroupProteinsOrPeptides( IDictionary <string, Node> entities, IReadOnlyList <string> entityNames, Type entityType, GlobalIDContainer globalIDTracker) { for (var count = 0; count != entityNames.Count; count++) { // Is the key there? if (!entities.ContainsKey(entityNames[count])) { continue; } // Get the protein or peptide var entity = entities[entityNames[count]]; // Only proceed if the correct type if (entity.GetType() != entityType) { continue; } var duplicates = new NodeChildren <Node>(); // Look for duplicates and add to a duplicate list duplicates.AddRange(FindDuplicates(entity)); if (duplicates.Count <= 1) { continue; } // Create a protein or peptide group from the duplicates Group newGroup; if (entityType == typeof(Protein)) { newGroup = new ProteinGroup(duplicates, globalIDTracker); } else if (entityType == typeof(Peptide)) { newGroup = new PeptideGroup(duplicates, globalIDTracker); } else { throw new Exception("Invalid type: must be Protein or Peptide"); } foreach (var duplicateItem in duplicates) { // Remove entities from the library, add the new group entities.Remove(duplicateItem.NodeName); } entities.Add(newGroup.NodeName, newGroup); } }
public override IEnumerable <DocNode> GetChoices(bool useFilter) { SrmSettings settings = DocSettings; List <DocNode> listPeptides = new List <DocNode>(); foreach (var nodePep in DocNode.GetPeptideNodes(settings, useFilter)) { listPeptides.Add(nodePep.ChangeSettings(settings, SrmSettingsDiff.ALL)); } PeptideRankId rankId = DocSettings.PeptideSettings.Libraries.RankId; if (rankId != null && !DocNode.IsPeptideList) { listPeptides = PeptideGroup.RankPeptides(listPeptides, settings, useFilter).ToList(); } MergeChosen(listPeptides, useFilter, node => ((PeptideDocNode)node).Key); return(listPeptides); }