public void ParseAtomElements(XElement parser, IAtomContainer molecule) { if (!Name_EL_ATOMSELEMENT.Equals(parser.Name)) { return; } foreach (var elm in parser.Descendants()) { if (Name_EL_ELEMENT.Equals(elm.Name)) { var atomicNumber = int.Parse(elm.Value, NumberFormatInfo.InvariantInfo); var element = factory.GetElement(atomicNumber); if (element == null) { var atom = molecule.Builder.NewPseudoAtom(); molecule.Atoms.Add(atom); } else { var atom = molecule.Builder.NewAtom(element.Symbol); atom.AtomicNumber = element.AtomicNumber; molecule.Atoms.Add(atom); } } } }
public static void Main(string[] args) { { #region IsotopeFactory f = XMLIsotopeFactory.Instance; ChemicalElement e1 = f.GetElement("C"); ChemicalElement e2 = f.GetElement(12); #endregion } { #region AtomicNumber IAtom element = new Atom("C"); IsotopeFactory f = XMLIsotopeFactory.Instance; f.Configure(element); #endregion } }
/// <summary> /// Gets the paulingElectronegativities attribute of the /// InductivePartialCharges object. /// </summary> /// <param name="ac">AtomContainer</param> /// <param name="modified">if true, some values are modified by following the reference</param> /// <returns>The pauling electronegativities</returns> public double[] GetPaulingElectronegativities(IAtomContainer ac, bool modified) { var paulingElectronegativities = new double[ac.Atoms.Count]; string symbol = null; int atomicNumber = 0; try { ifac = CDK.IsotopeFactory; for (int i = 0; i < ac.Atoms.Count; i++) { var atom = ac.Atoms[i]; symbol = ac.Atoms[i].Symbol; var element = ifac.GetElement(symbol); atomicNumber = element.AtomicNumber; if (modified) { switch (atom.AtomicNumber) { case AtomicNumbers.Cl: paulingElectronegativities[i] = 3.28; break; case AtomicNumbers.Br: paulingElectronegativities[i] = 3.13; break; case AtomicNumbers.I: paulingElectronegativities[i] = 2.93; break; case AtomicNumbers.H: paulingElectronegativities[i] = 2.10; break; case AtomicNumbers.C: if (ac.GetMaximumBondOrder(atom) == BondOrder.Single) { // Csp3 paulingElectronegativities[i] = 2.20; } else if (ac.GetMaximumBondOrder(atom) == BondOrder.Double) { paulingElectronegativities[i] = 2.31; } else { paulingElectronegativities[i] = 3.15; } break; case AtomicNumbers.O: if (ac.GetMaximumBondOrder(atom) == BondOrder.Single) { // Osp3 paulingElectronegativities[i] = 3.20; } else if (ac.GetMaximumBondOrder(atom) != BondOrder.Single) { paulingElectronegativities[i] = 4.34; } break; case AtomicNumbers.Si: paulingElectronegativities[i] = 1.99; break; case AtomicNumbers.S: paulingElectronegativities[i] = 2.74; break; case AtomicNumbers.N: paulingElectronegativities[i] = 2.59; break; default: paulingElectronegativities[i] = pauling[atomicNumber]; break; } } else { paulingElectronegativities[i] = pauling[atomicNumber]; } } return(paulingElectronegativities); } catch (Exception ex1) { Debug.WriteLine(ex1); throw new CDKException($"Problems with IsotopeFactory due to {ex1.Message}", ex1); } }