Esempio n. 1
0
        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);
        }