Exemple #1
0
        ///// <summary>
        ///// Adds the element.
        ///// </summary>
        ///// <param name="element">The element.</param>
        ///// <param name="count">The count.</param>
        //public void AddElement(IElement element, int count)
        //{
        //    _elements.Add(new EntityCardinality<IElement>(element, count));
        //}

        /// <summary>
        /// Waters the specified element provider.
        /// </summary>
        /// <param name="elementProvider">The element provider.</param>
        /// <returns></returns>
        public static ChemicalFormula Water(IElementProvider elementProvider)
        {
            return(new ChemicalFormula(new[]
            {
                new EntityCardinality <IElement>(elementProvider.GetElement(1), 2),
                new EntityCardinality <IElement>(elementProvider.GetElement(8), 1)
            }));
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ProteoformGroupFactory"/> class.
 /// </summary>
 /// <param name="elementProvider">The element provider.</param>
 /// <param name="residueProvider">The residue provider.</param>
 public ProteoformGroupFactory(IElementProvider elementProvider, IResidueProvider residueProvider)
 {
     _elementProvider = elementProvider;
     _residueProvider = residueProvider;
     _water           = new ChemicalFormula(new[]
     {
         new EntityCardinality <IElement>(_elementProvider.GetElement(1), 2),
         new EntityCardinality <IElement>(_elementProvider.GetElement(8), 1),
     });
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="MockUnimodCompositionAtomProvider"/> class.
 /// </summary>
 /// <param name="elementProvider">The element provider.</param>
 public MockUnimodCompositionAtomProvider(IElementProvider elementProvider)
 {
     _elementProvider = elementProvider;
     _hydrogen        = new UnimodCompositionAtom("H", "Hydrogen", new[]
     {
         new EntityCardinality <IElement>(_elementProvider.GetElement(1), 1)
     });
     _carbon = new UnimodCompositionAtom("C", "Carbon", new[]
     {
         new EntityCardinality <IElement>(_elementProvider.GetElement(6), 1)
     });
 }
        /// <summary>
        /// Gets the chemical formula.
        /// </summary>
        /// <param name="modification">The modification.</param>
        /// <returns></returns>
        protected override IChemicalFormula?GetChemicalFormula(UniprotModification modification)
        {
            string?formula = modification.CorrectionFormula;

            if (string.IsNullOrEmpty(formula))
            {
                return(null);
            }

            string[] cells = formula.Split(' ');

            var elements = new List <IEntityCardinality <IElement> >();

            for (int i = 0; i < cells.Length; i++)
            {
                // Find last index for element name
                int j = cells[i].Length - 1;
                while (char.IsDigit(cells[i][j]) || cells[i][j] == '-')
                {
                    j--;
                }

                string elementSymbol = cells[i].Substring(0, j + 1);
                int    count         = Convert.ToInt32(cells[i].Substring(j + 1));

                if (count != 0)
                {
                    elements.Add(new EntityCardinality <IElement>(_elementProvider.GetElement(elementSymbol), count));
                }
            }

            return(new ChemicalFormula(elements));
        }
 /// <summary>
 /// Gets the unimod composition atom.
 /// </summary>
 /// <param name="symbol">The symbol.</param>
 /// <returns></returns>
 public UnimodCompositionAtom GetUnimodCompositionAtom(string symbol)
 {
     if (symbol == "H")
     {
         return(_hydrogen);
     }
     else if (symbol == "C")
     {
         return(_carbon);
     }
     else
     {
         try
         {
             IElement element = _elementProvider.GetElement(symbol);
             if (element == null)
             {
                 return(null);
             }
             else
             {
                 return(new UnimodCompositionAtom(symbol, element.Symbol, new[]
                 {
                     new EntityCardinality <IElement>(element, 1)
                 }));
             }
         }
         catch
         {
             return(null);
         }
     }
 }
        /// <summary>
        /// Gets the chemical formula.
        /// </summary>
        /// <param name="modification">The modification.</param>
        /// <returns></returns>
        protected override IChemicalFormula?GetChemicalFormula(PsiModTerm modification)
        {
            string?formula = modification.DiffFormula;

            if (string.IsNullOrEmpty(formula) || formula == "none")
            {
                return(null);
            }

            string[] cells = formula.Split(' ');

            var elements = new List <IEntityCardinality <IElement> >();

            for (int i = 0; i < cells.Length; i += 2)
            {
                if (cells[i] == "+")
                {
                    continue;
                }

                int count = Convert.ToInt32(cells[i + 1]);

                if (count != 0)
                {
                    // Handle formal charge by adding or removing hydrogen atoms
                    if (modification.FormalCharge != 0 && cells[i] == "H")
                    {
                        count -= modification.FormalCharge;
                    }

                    if (cells[i][0] == '(') // Fixed isotope.
                    {
                        int    endIsotopeIndex = cells[i].IndexOf(')');
                        string isotopeStr      = cells[i].Substring(1, endIsotopeIndex - 1);
                        int    fixedIsotope    = Convert.ToInt32(isotopeStr);
                        elements.Add(new EntityCardinality <IElement>(_elementProvider.GetElement(cells[i].Substring(endIsotopeIndex + 1), fixedIsotope), count));
                    }
                    else
                    {
                        elements.Add(new EntityCardinality <IElement>(_elementProvider.GetElement(cells[i]), count));
                    }
                }
            }

            return(new ChemicalFormula(elements));
        }
Exemple #7
0
        private BrnoModification[] CreateModificationArray(IElementProvider elementProvider)
        {
            var mods = new BrnoModification[7];

            var h = elementProvider.GetElement(1);
            var c = elementProvider.GetElement(6);
            var o = elementProvider.GetElement(8);
            var p = elementProvider.GetElement(15);

            mods[0] = new BrnoModification("B:ac", new[]
            {
                new EntityCardinality <IElement>(c, 2),
                new EntityCardinality <IElement>(h, 2),
                new EntityCardinality <IElement>(o, 1)
            });
            mods[1] = new BrnoModification("B:me1", new[]
            {
                new EntityCardinality <IElement>(c, 1),
                new EntityCardinality <IElement>(h, 2)
            });

            var me2 = new[]
            {
                new EntityCardinality <IElement>(c, 2),
                new EntityCardinality <IElement>(h, 4)
            };

            mods[2] = new BrnoModification("B:me2s", me2);
            mods[3] = new BrnoModification("B:me2a", me2);
            mods[4] = new BrnoModification("B:me2", me2);

            mods[5] = new BrnoModification("B:me3", new[]
            {
                new EntityCardinality <IElement>(c, 3),
                new EntityCardinality <IElement>(h, 6)
            });
            mods[6] = new BrnoModification("B:ph", new[]
            {
                new EntityCardinality <IElement>(h, 1),
                new EntityCardinality <IElement>(o, 3),
                new EntityCardinality <IElement>(p, 1),
            });

            return(mods);
        }
        private void AddElement(Dictionary <string, UnimodCompositionAtom> atoms, IElementProvider elementProvider,
                                string symbol, string name, string elementSymbol, int?fixedIsotopeNumber = null)
        {
            IElement element = elementProvider.GetElement(elementSymbol, fixedIsotopeNumber);

            atoms.Add(symbol, new UnimodCompositionAtom(symbol, name, new[]
            {
                new EntityCardinality <IElement>(element, 1)
            }));
        }
        private void AddElement(Dictionary <string, UnimodCompositionAtom> atoms, IElementProvider elementProvider,
                                string symbol, string name)
        {
            IElement element = elementProvider.GetElement(symbol);

            atoms.Add(symbol, new UnimodCompositionAtom(symbol, name, new[]
            {
                new EntityCardinality <IElement>(element, 1)
            }));
        }
Exemple #10
0
        public void FormulaLookup()
        {
            string             formulaString      = "C2H2O";
            ProFormaDescriptor proFormaDescriptor = new ProFormaDescriptor(ProFormaKey.Formula, formulaString);
            ChemicalFormula    chemicalFormula    = new ChemicalFormula(new IEntityCardinality <IElement>[]
            {
                new EntityCardinality <IElement>(_elementProvider.GetElement("C"), 2),
                new EntityCardinality <IElement>(_elementProvider.GetElement("H"), 2),
                new EntityCardinality <IElement>(_elementProvider.GetElement("O"), 1),
            });

            var proteoformModification = _formulaLookup.GetModification(proFormaDescriptor);

            Assert.IsInstanceOf(typeof(IHasChemicalFormula), proteoformModification);
            var formulaMod = (IHasChemicalFormula)proteoformModification;

            Assert.AreEqual(chemicalFormula, formulaMod.GetChemicalFormula());
        }
Exemple #11
0
        /// <summary>
        /// Gets the chemical formula.
        /// </summary>
        /// <param name="modification">The modification.</param>
        /// <returns></returns>
        protected override IChemicalFormula?GetChemicalFormula(ResidModification modification)
        {
            string?formula = modification.DiffFormula;

            if (string.IsNullOrEmpty(formula))
            {
                return(null);
            }

            string[] cells = formula.Split(' ');

            var elements = new List <IEntityCardinality <IElement> >();

            for (int i = 0; i < cells.Length; i += 2)
            {
                if (cells[i] == "+")
                {
                    continue;
                }

                int count = Convert.ToInt32(cells[i + 1]);

                if (count != 0)
                {
                    // Handle formal charge by adding or removing hydrogen atoms
                    if (modification.FormalCharge != 0 && cells[i] == "H")
                    {
                        count -= modification.FormalCharge;
                    }

                    elements.Add(new EntityCardinality <IElement>(_elementProvider.GetElement(cells[i]), count));
                }
            }

            return(new ChemicalFormula(elements));
        }
        private Dictionary <string, UnimodCompositionAtom> CreateDictionary(IElementProvider elementProvider)
        {
            var atoms = new Dictionary <string, UnimodCompositionAtom>();

            var h = elementProvider.GetElement(1);
            var c = elementProvider.GetElement(6);
            var n = elementProvider.GetElement(7);
            var o = elementProvider.GetElement(8);
            var s = elementProvider.GetElement(16);

            this.AddElement(atoms, elementProvider, "13C", "Carbon 13", "C", 13);
            this.AddElement(atoms, elementProvider, "15N", "Nitrogen 15", "N", 15);
            this.AddElement(atoms, elementProvider, "18O", "Oxygen 18", "O", 18);
            this.AddElement(atoms, elementProvider, "2H", "Deuterium", "H", 2);

            atoms.Add("Ac", new UnimodCompositionAtom("Ac", "Acetate", new[]
            {
                new EntityCardinality <IElement>(c, 2),
                new EntityCardinality <IElement>(h, 3),
                new EntityCardinality <IElement>(o, 2),
            }));

            this.AddElement(atoms, elementProvider, "Ag", "Silver");
            this.AddElement(atoms, elementProvider, "Al", "Aluminium");
            this.AddElement(atoms, elementProvider, "As", "Arsenic");
            this.AddElement(atoms, elementProvider, "Au", "Gold");
            this.AddElement(atoms, elementProvider, "B", "Boron");
            this.AddElement(atoms, elementProvider, "Br", "Bromine");
            this.AddElement(atoms, elementProvider, "C", "Carbon");
            this.AddElement(atoms, elementProvider, "Ca", "Calcium");
            this.AddElement(atoms, elementProvider, "Cd", "Cadmium");
            this.AddElement(atoms, elementProvider, "Cl", "Chlorine");
            this.AddElement(atoms, elementProvider, "Co", "Cobalt");
            this.AddElement(atoms, elementProvider, "Cr", "Chromium");
            this.AddElement(atoms, elementProvider, "Cu", "Copper");

            atoms.Add("dHex", new UnimodCompositionAtom("dHex", "Deoxy-hexose", new[]
            {
                new EntityCardinality <IElement>(c, 6),
                new EntityCardinality <IElement>(h, 10),
                new EntityCardinality <IElement>(o, 4),
            }));

            this.AddElement(atoms, elementProvider, "F", "Fluorine");
            this.AddElement(atoms, elementProvider, "Fe", "Iron");
            this.AddElement(atoms, elementProvider, "H", "Hydrogen");

            atoms.Add("Hep", new UnimodCompositionAtom("Hep", "Heptose", new[]
            {
                new EntityCardinality <IElement>(c, 7),
                new EntityCardinality <IElement>(h, 12),
                new EntityCardinality <IElement>(o, 6),
            }));
            atoms.Add("Hex", new UnimodCompositionAtom("Hex", "Hexose", new[]
            {
                new EntityCardinality <IElement>(c, 6),
                new EntityCardinality <IElement>(h, 10),
                new EntityCardinality <IElement>(o, 5),
            }));

            // Not sure about C6H8O6
            atoms.Add("HexA", new UnimodCompositionAtom("HexA", "Hexuronic acid", new[]
            {
                new EntityCardinality <IElement>(c, 6),
                new EntityCardinality <IElement>(h, 8),
                new EntityCardinality <IElement>(o, 6),
            }));

            // Not sure about C6H11O4N
            atoms.Add("HexN", new UnimodCompositionAtom("HexN", "Hexosamine", new[]
            {
                new EntityCardinality <IElement>(c, 6),
                new EntityCardinality <IElement>(h, 11),
                new EntityCardinality <IElement>(o, 4),
                new EntityCardinality <IElement>(n, 1),
            }));

            atoms.Add("HexNAc", new UnimodCompositionAtom("HexNAc", "N-Acetyl Hexosamine", new[]
            {
                new EntityCardinality <IElement>(c, 8),
                new EntityCardinality <IElement>(h, 13),
                new EntityCardinality <IElement>(o, 5),
                new EntityCardinality <IElement>(n, 1),
            }));

            this.AddElement(atoms, elementProvider, "Hg", "Mercury");
            this.AddElement(atoms, elementProvider, "I", "Iodine");
            this.AddElement(atoms, elementProvider, "K", "Potassium");

            // Should be Hex(2) + HexA
            atoms.Add("Kdn", new UnimodCompositionAtom("Kdn", "3-deoxy-d-glycero-D-galacto-nonulosonic acid", new[]
            {
                new EntityCardinality <IElement>(c, 18),
                new EntityCardinality <IElement>(h, 28),
                new EntityCardinality <IElement>(o, 16),
            }));

            // Never used
            //atoms.Add("Kdo", new UnimodCompositionAtom("13C", "2-keto-3-deoxyoctulosonic acid", new[]
            //{
            //    new EntityCardinality<IElement>(c, 0),
            //    new EntityCardinality<IElement>(h, 0),
            //    new EntityCardinality<IElement>(o, 0),
            //}));

            this.AddElement(atoms, elementProvider, "Li", "Lithium");

            atoms.Add("Me", new UnimodCompositionAtom("Me", "Methyl", new[]
            {
                new EntityCardinality <IElement>(c, 1),
                new EntityCardinality <IElement>(h, 2),
            }));

            this.AddElement(atoms, elementProvider, "Mg", "Magnesium");
            this.AddElement(atoms, elementProvider, "Mn", "Manganese");
            this.AddElement(atoms, elementProvider, "Mo", "Molybdenum");
            this.AddElement(atoms, elementProvider, "N", "Nitrogen");
            this.AddElement(atoms, elementProvider, "Na", "Sodium");

            atoms.Add("NeuAc", new UnimodCompositionAtom("NeuAc", "N-acetyl neuraminic acid", new[]
            {
                new EntityCardinality <IElement>(c, 11),
                new EntityCardinality <IElement>(h, 17),
                new EntityCardinality <IElement>(o, 8),
                new EntityCardinality <IElement>(n, 1),
            }));
            atoms.Add("NeuGc", new UnimodCompositionAtom("NeuGc", "N-glycoyl neuraminic acid", new[]
            {
                new EntityCardinality <IElement>(c, 11),
                new EntityCardinality <IElement>(h, 17),
                new EntityCardinality <IElement>(o, 9),
                new EntityCardinality <IElement>(n, 1),
            }));

            this.AddElement(atoms, elementProvider, "Ni", "Nickel");
            this.AddElement(atoms, elementProvider, "O", "Oxygen");
            this.AddElement(atoms, elementProvider, "P", "Phosphorous");
            this.AddElement(atoms, elementProvider, "Pd", "Palladium");

            atoms.Add("Pent", new UnimodCompositionAtom("Pent", "Pentose", new[]
            {
                new EntityCardinality <IElement>(c, 5),
                new EntityCardinality <IElement>(h, 8),
                new EntityCardinality <IElement>(o, 4),
            }));

            // Never used
            //atoms.Add("Phos", new UnimodCompositionAtom("13C", "Phosphate", new[]
            //{
            //    new EntityCardinality<IElement>(c, 0),
            //    new EntityCardinality<IElement>(h, 0),
            //    new EntityCardinality<IElement>(o, 0),
            //    new EntityCardinality<IElement>(n, 0),
            //}));

            this.AddElement(atoms, elementProvider, "Pt", "Platinum");
            this.AddElement(atoms, elementProvider, "Ru", "Ruthenium");
            this.AddElement(atoms, elementProvider, "S", "Sulphur");
            this.AddElement(atoms, elementProvider, "Se", "Selenium");

            atoms.Add("Sulf", new UnimodCompositionAtom("Sulf", "Sulphate", new[]
            {
                new EntityCardinality <IElement>(s, 1),
                new EntityCardinality <IElement>(o, 3),
            }));
            atoms.Add("Water", new UnimodCompositionAtom("Water", "Water", new[]
            {
                new EntityCardinality <IElement>(h, 2),
                new EntityCardinality <IElement>(o, 1),
            }));
            this.AddElement(atoms, elementProvider, "Zn", "Zinc");

            return(atoms);
        }
Exemple #13
0
 private static IEntityCardinality <IElement> GetElement(ReadOnlySpan <char> symbol, int?isotope, int count, IElementProvider elementProvider)
 {
     return(new EntityCardinality <IElement>(elementProvider.GetElement(symbol, isotope), count));
 }
Exemple #14
0
        private IResidue[] CreateResideArray(IElementProvider elementProvider)
        {
            var aaMass = new AminoAcid[26];

            var h = elementProvider.GetElement(1);
            var c = elementProvider.GetElement(6);
            var n = elementProvider.GetElement(7);
            var o = elementProvider.GetElement(8);
            var s = elementProvider.GetElement(16);

            aaMass[0] = new AminoAcid('A', "Alanine", new[]
            {
                new EntityCardinality <IElement>(c, 3),
                new EntityCardinality <IElement>(h, 5),
                new EntityCardinality <IElement>(n, 1),
                new EntityCardinality <IElement>(o, 1),
            });
            aaMass[17] = new AminoAcid('R', "Arginine", new[]
            {
                new EntityCardinality <IElement>(c, 6),
                new EntityCardinality <IElement>(h, 12),
                new EntityCardinality <IElement>(n, 4),
                new EntityCardinality <IElement>(o, 1),
            });
            aaMass[13] = new AminoAcid('N', "Asparagine", new[]
            {
                new EntityCardinality <IElement>(c, 4),
                new EntityCardinality <IElement>(h, 6),
                new EntityCardinality <IElement>(n, 2),
                new EntityCardinality <IElement>(o, 2),
            });
            aaMass[3] = new AminoAcid('D', "Aspartic Acid", new[]
            {
                new EntityCardinality <IElement>(c, 4),
                new EntityCardinality <IElement>(h, 5),
                new EntityCardinality <IElement>(n, 1),
                new EntityCardinality <IElement>(o, 3),
            });
            aaMass[2] = new AminoAcid('C', "Cysteine", new[]
            {
                new EntityCardinality <IElement>(c, 3),
                new EntityCardinality <IElement>(h, 5),
                new EntityCardinality <IElement>(n, 1),
                new EntityCardinality <IElement>(o, 1),
                new EntityCardinality <IElement>(s, 1),
            });
            aaMass[4] = new AminoAcid('E', "Glutamic acid", new[]
            {
                new EntityCardinality <IElement>(c, 5),
                new EntityCardinality <IElement>(h, 7),
                new EntityCardinality <IElement>(n, 1),
                new EntityCardinality <IElement>(o, 3),
            });
            aaMass[16] = new AminoAcid('Q', "Glutamine", new[]
            {
                new EntityCardinality <IElement>(c, 5),
                new EntityCardinality <IElement>(h, 8),
                new EntityCardinality <IElement>(n, 2),
                new EntityCardinality <IElement>(o, 2),
            });
            aaMass[6] = new AminoAcid('G', "Glycine", new[]
            {
                new EntityCardinality <IElement>(c, 2),
                new EntityCardinality <IElement>(h, 3),
                new EntityCardinality <IElement>(n, 1),
                new EntityCardinality <IElement>(o, 1),
            });
            aaMass[7] = new AminoAcid('H', "Histidine", new[]
            {
                new EntityCardinality <IElement>(c, 6),
                new EntityCardinality <IElement>(h, 7),
                new EntityCardinality <IElement>(n, 3),
                new EntityCardinality <IElement>(o, 1),
            });
            aaMass[8] = new AminoAcid('I', "Isoleucine", new[]
            {
                new EntityCardinality <IElement>(c, 6),
                new EntityCardinality <IElement>(h, 11),
                new EntityCardinality <IElement>(n, 1),
                new EntityCardinality <IElement>(o, 1),
            });
            aaMass[11] = new AminoAcid('L', "Leucine", new[]
            {
                new EntityCardinality <IElement>(c, 6),
                new EntityCardinality <IElement>(h, 11),
                new EntityCardinality <IElement>(n, 1),
                new EntityCardinality <IElement>(o, 1),
            });
            aaMass[10] = new AminoAcid('K', "Lysine", new[]
            {
                new EntityCardinality <IElement>(c, 6),
                new EntityCardinality <IElement>(h, 12),
                new EntityCardinality <IElement>(n, 2),
                new EntityCardinality <IElement>(o, 1),
            });
            aaMass[12] = new AminoAcid('M', "Methionine", new[]
            {
                new EntityCardinality <IElement>(c, 5),
                new EntityCardinality <IElement>(h, 9),
                new EntityCardinality <IElement>(n, 1),
                new EntityCardinality <IElement>(o, 1),
                new EntityCardinality <IElement>(s, 1),
            });
            aaMass[5] = new AminoAcid('F', "Phenylalanine", new[]
            {
                new EntityCardinality <IElement>(c, 9),
                new EntityCardinality <IElement>(h, 9),
                new EntityCardinality <IElement>(n, 1),
                new EntityCardinality <IElement>(o, 1),
            });
            aaMass[15] = new AminoAcid('P', "Proline", new[]
            {
                new EntityCardinality <IElement>(c, 5),
                new EntityCardinality <IElement>(h, 7),
                new EntityCardinality <IElement>(n, 1),
                new EntityCardinality <IElement>(o, 1),
            });
            aaMass[14] = new AminoAcid('O', "Pyrrolysine", new[]
            {
                new EntityCardinality <IElement>(c, 12),
                new EntityCardinality <IElement>(h, 19),
                new EntityCardinality <IElement>(n, 3),
                new EntityCardinality <IElement>(o, 2),
            });
            aaMass[20] = new AminoAcid('U', "Selenocysteine", new[]
            {
                new EntityCardinality <IElement>(c, 3),
                new EntityCardinality <IElement>(h, 5),
                new EntityCardinality <IElement>(n, 1),
                new EntityCardinality <IElement>(o, 1),
                new EntityCardinality <IElement>(elementProvider.GetElement("Se"), 1),
            });
            aaMass[18] = new AminoAcid('S', "Serine", new[]
            {
                new EntityCardinality <IElement>(c, 3),
                new EntityCardinality <IElement>(h, 5),
                new EntityCardinality <IElement>(n, 1),
                new EntityCardinality <IElement>(o, 2),
            });
            aaMass[19] = new AminoAcid('T', "Threonine", new[]
            {
                new EntityCardinality <IElement>(c, 4),
                new EntityCardinality <IElement>(h, 7),
                new EntityCardinality <IElement>(n, 1),
                new EntityCardinality <IElement>(o, 2),
            });
            aaMass[22] = new AminoAcid('W', "Tryptophan", new[]
            {
                new EntityCardinality <IElement>(c, 11),
                new EntityCardinality <IElement>(h, 10),
                new EntityCardinality <IElement>(n, 2),
                new EntityCardinality <IElement>(o, 1),
            });
            aaMass[24] = new AminoAcid('Y', "Tyrosine", new[]
            {
                new EntityCardinality <IElement>(c, 9),
                new EntityCardinality <IElement>(h, 9),
                new EntityCardinality <IElement>(n, 1),
                new EntityCardinality <IElement>(o, 2),
            });
            aaMass[21] = new AminoAcid('V', "Valine", new[]
            {
                new EntityCardinality <IElement>(c, 5),
                new EntityCardinality <IElement>(h, 9),
                new EntityCardinality <IElement>(n, 1),
                new EntityCardinality <IElement>(o, 1),
            });

            return(aaMass);
        }