///// <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)); }
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) })); }
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()); }
/// <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); }
private static IEntityCardinality <IElement> GetElement(ReadOnlySpan <char> symbol, int?isotope, int count, IElementProvider elementProvider) { return(new EntityCardinality <IElement>(elementProvider.GetElement(symbol, isotope), count)); }
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); }