/// <summary>
 /// Remove a Protein-Spectrum-Match identification from the tree.
 /// </summary>
 /// <param name="id">Protein-Spectrum-Match to remove.</param>
 public void Remove(PrSm id)
 {
     if (Proteins.ContainsKey(id.ProteinName))
     {
         Proteins[id.ProteinName].Remove(id);
     }
 }
        /// <summary>
        /// Get a protein associated with a certain ID.
        /// </summary>
        /// <param name="id">ID to search for.</param>
        /// <returns>The protein ID found.</returns>
        public ProteinId GetProtein(PrSm id)
        {
            ProteinId protein = null;

            if (Proteins.ContainsKey(id.ProteinName))
            {
                protein = Proteins[id.ProteinName];
            }

            return(protein);
        }
        /// <summary>
        /// Add a Protein-Spectrum-Match identification.
        /// </summary>
        /// <param name="id">Protein-Spectrum-Math to add</param>
        public void Add(PrSm id)
        {
            RemoveUnidentifiedScan(id);

            if (!allProteins.ContainsKey(id.ProteinName))
            {
                return;
                ////this.allProteins.Add(id.ProteinName, new ProteinId(id.Sequence, id.ProteinName));
            }

            if (!Proteins.ContainsKey(id.ProteinName))
            {
                Proteins.Add(id.ProteinName, allProteins[id.ProteinName]);
            }

            var protein = Proteins[id.ProteinName];

            protein.Add(id);
        }