Exemplo n.º 1
0
 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);
             }
         }
     }
 }
Exemplo n.º 2
0
 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
     }
 }
Exemplo n.º 3
0
        /// <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);
            }
        }