Exemple #1
0
        public void TestBondProperty()
        {
            string[]       key   = { "customBondProperty1", "customBondProperty2" };
            string[]       value = { "true", "false" };
            IAtomContainer mol   = TestMoleculeFactory.MakeBenzene();

            foreach (var b in mol.Bonds)
            {
                for (int i = 0; i < key.Length; i++)
                {
                    b.SetProperty(key[i], value[i]);
                }
            }

            IAtomContainer roundTrippedMol = CMLRoundTripTool.RoundTripMolecule(convertor, mol);

            //Assert.AreEqual(convertor.CDKMoleculeToCMLMolecule(mol).ToXML(),
            //       convertor.CDKMoleculeToCMLMolecule(roundTrippedMol).ToXML());

            foreach (var b in roundTrippedMol.Bonds)
            {
                for (int i = 0; i < key.Length; i++)
                {
                    var actual = b.GetProperty <object>(key[i]);
                    Assert.IsNotNull(actual);
                    Assert.AreEqual(value[i], actual);
                }
            }
        }
Exemple #2
0
        public void TestBondAromatic_Double()
        {
            var mol = new AtomContainer();
            // surely, this bond is not aromatic... but fortunately, file formats do not care about chemistry
            Atom atom  = new Atom("C");
            Atom atom2 = new Atom("C");

            mol.Atoms.Add(atom);
            mol.Atoms.Add(atom2);
            Bond bond = new Bond(atom, atom2, BondOrder.Double)
            {
                IsAromatic = true
            };

            mol.Bonds.Add(bond);

            IAtomContainer roundTrippedMol = CMLRoundTripTool.RoundTripMolecule(convertor, mol);

            Assert.AreEqual(2, roundTrippedMol.Atoms.Count);
            Assert.AreEqual(1, roundTrippedMol.Bonds.Count);
            IBond roundTrippedBond = roundTrippedMol.Bonds[0];

            Assert.AreEqual(bond.IsAromatic, roundTrippedBond.IsAromatic);
            Assert.AreEqual(bond.Order, roundTrippedBond.Order);
        }
Exemple #3
0
        public void TestIElement_Symbol()
        {
            IAtomContainer mol  = builder.NewAtomContainer();
            IAtom          atom = builder.NewAtom("C");

            atom.Id = "a1";
            mol.Atoms.Add(atom);
            IAtomContainer copy       = CMLRoundTripTool.RoundTripMolecule(convertor, mol);
            string         difference = AtomDiff.Diff(atom, copy.Atoms[0]);

            Assert.AreEqual(0, difference.Length, "Found non-zero diff: " + difference);
        }
Exemple #4
0
        public void TestInChI()
        {
            var    mol   = new AtomContainer();
            string inchi = "InChI=1/CH2O2/c2-1-3/h1H,(H,2,3)";

            mol.SetProperty(CDKPropertyName.InChI, inchi);

            IAtomContainer roundTrippedMol = CMLRoundTripTool.RoundTripMolecule(convertor, mol);

            Assert.IsNotNull(roundTrippedMol);

            Assert.AreEqual(inchi, roundTrippedMol.GetProperty <string>(CDKPropertyName.InChI));
        }
Exemple #5
0
        public void TestIAtom_FractionalPoint3d()
        {
            IAtomContainer mol  = builder.NewAtomContainer();
            IAtom          atom = builder.NewAtom("C");

            atom.Id = "a1";
            atom.FractionalPoint3D = new Vector3(1, 2, 3);
            mol.Atoms.Add(atom);
            IAtomContainer copy       = CMLRoundTripTool.RoundTripMolecule(convertor, mol);
            string         difference = AtomDiff.Diff(atom, copy.Atoms[0]);

            Assert.AreEqual(0, difference.Length, "Found non-zero diff: " + difference);
        }
Exemple #6
0
        public void TestAtom()
        {
            var  mol  = new AtomContainer();
            Atom atom = new Atom("N");

            mol.Atoms.Add(atom);

            IAtomContainer roundTrippedMol = CMLRoundTripTool.RoundTripMolecule(convertor, mol);

            Assert.AreEqual(1, roundTrippedMol.Atoms.Count);
            IAtom roundTrippedAtom = roundTrippedMol.Atoms[0];

            Assert.AreEqual(atom.Symbol, roundTrippedAtom.Symbol);
        }
Exemple #7
0
        public void TestIsotope()
        {
            var  mol  = new AtomContainer();
            Atom atom = new Atom("C")
            {
                MassNumber = 13
            };

            mol.Atoms.Add(atom);
            IAtomContainer roundTrippedMol = CMLRoundTripTool.RoundTripMolecule(convertor, mol);

            Assert.AreEqual(1, roundTrippedMol.Atoms.Count);
            IAtom roundTrippedAtom = roundTrippedMol.Atoms[0];

            Assert.AreEqual(atom.MassNumber, roundTrippedAtom.MassNumber);
        }
Exemple #8
0
        [TestMethod(), Ignore()] // Have to figure out how to store atom parity in CML2
        public void TestAtomStereoParity()
        {
            var  mol    = new AtomContainer();
            Atom atom   = new Atom("C");
            var  stereo = StereoAtomParities.Plus;

            atom.StereoParity = stereo;
            mol.Atoms.Add(atom);

            IAtomContainer roundTrippedMol = CMLRoundTripTool.RoundTripMolecule(convertor, mol);

            Assert.AreEqual(1, roundTrippedMol.Atoms.Count);
            IAtom roundTrippedAtom = roundTrippedMol.Atoms[0];

            Assert.AreEqual(atom.StereoParity, roundTrippedAtom.StereoParity);
        }
Exemple #9
0
        [TestMethod(), Ignore()] // Have to figure out how to store partial charges in CML2
        public void TestAtomPartialCharge()
        {
            var    mol           = new AtomContainer();
            Atom   atom          = new Atom("N");
            double partialCharge = 0.5;

            atom.Charge = partialCharge;
            mol.Atoms.Add(atom);

            IAtomContainer roundTrippedMol = CMLRoundTripTool.RoundTripMolecule(convertor, mol);

            Assert.AreEqual(1, roundTrippedMol.Atoms.Count);
            IAtom roundTrippedAtom = roundTrippedMol.Atoms[0];

            Assert.AreEqual(atom.Charge.Value, roundTrippedAtom.Charge.Value, 0.0001);
        }
Exemple #10
0
        public void TestAtomFormalCharge()
        {
            var  mol          = new AtomContainer();
            Atom atom         = new Atom("N");
            int  formalCharge = +1;

            atom.FormalCharge = formalCharge;
            mol.Atoms.Add(atom);

            IAtomContainer roundTrippedMol = CMLRoundTripTool.RoundTripMolecule(convertor, mol);

            Assert.AreEqual(1, roundTrippedMol.Atoms.Count);
            IAtom roundTrippedAtom = roundTrippedMol.Atoms[0];

            Assert.AreEqual(atom.FormalCharge, roundTrippedAtom.FormalCharge);
        }
Exemple #11
0
        public void TestAtomFract3D()
        {
            var     mol  = new AtomContainer();
            Atom    atom = new Atom("N");
            Vector3 p3d  = new Vector3(0.3, 0.4, 0.9);

            atom.FractionalPoint3D = p3d;
            mol.Atoms.Add(atom);

            IAtomContainer roundTrippedMol = CMLRoundTripTool.RoundTripMolecule(convertor, mol);

            Assert.AreEqual(1, roundTrippedMol.Atoms.Count);
            IAtom roundTrippedAtom = roundTrippedMol.Atoms[0];

            base.AssertAreEqual(atom.Point3D, roundTrippedAtom.Point3D, 0.00001);
        }
Exemple #12
0
        public void TestAtom2D()
        {
            var     mol  = new AtomContainer();
            Atom    atom = new Atom("N");
            Vector2 p2d  = new Vector2(1.3, 1.4);

            atom.Point2D = p2d;
            mol.Atoms.Add(atom);

            IAtomContainer roundTrippedMol = CMLRoundTripTool.RoundTripMolecule(convertor, mol);

            Assert.AreEqual(1, roundTrippedMol.Atoms.Count);
            IAtom roundTrippedAtom = roundTrippedMol.Atoms[0];

            base.AssertAreEqual(atom.Point2D, roundTrippedAtom.Point2D, 0.00001);
        }
Exemple #13
0
        public void TestAtomAromaticity()
        {
            IAtomContainer molecule = TestMoleculeFactory.MakeBenzene();

            foreach (var atom in molecule.Atoms)
            {
                atom.IsAromatic = true;
            }

            IAtomContainer roundTrippedMol = CMLRoundTripTool.RoundTripMolecule(convertor, molecule);

            foreach (var atom in roundTrippedMol.Atoms)
            {
                Assert.IsTrue(atom.IsAromatic);
            }
        }
Exemple #14
0
        public void TestSpinMultiplicity()
        {
            var  mol  = new AtomContainer();
            Atom atom = new Atom("C");

            mol.Atoms.Add(atom);
            mol.SingleElectrons.Add(new SingleElectron(atom));

            IAtomContainer roundTrippedMol = CMLRoundTripTool.RoundTripMolecule(convertor, mol);

            Assert.AreEqual(1, roundTrippedMol.Atoms.Count);
            Assert.AreEqual(1, roundTrippedMol.GetElectronContainers().Count());
            IAtom roundTrippedAtom = roundTrippedMol.Atoms[0];

            Assert.AreEqual(1, roundTrippedMol.GetConnectedSingleElectrons(roundTrippedAtom).Count());
        }
Exemple #15
0
        public void TestHydrogenCount_UNSET()
        {
            var  mol  = new AtomContainer();
            Atom atom = new Atom("N")
            {
                ImplicitHydrogenCount = null
            };

            mol.Atoms.Add(atom);

            IAtomContainer roundTrippedMol = CMLRoundTripTool.RoundTripMolecule(convertor, mol);

            Assert.AreEqual(1, roundTrippedMol.Atoms.Count);
            IAtom roundTrippedAtom = roundTrippedMol.Atoms[0];

            Assert.AreEqual(null, roundTrippedAtom.ImplicitHydrogenCount);
        }
Exemple #16
0
        [TestMethod(), Ignore()] // Functionality not yet implemented - natural abundance can not be written/read
        public void TestIsotope_Abundance()
        {
            var  mol  = new AtomContainer();
            Atom atom = new Atom("C")
            {
                Abundance = 1.0
            };

            mol.Atoms.Add(atom);
            IAtomContainer roundTrippedMol = CMLRoundTripTool.RoundTripMolecule(convertor, mol);

            Assert.AreEqual(1, roundTrippedMol.Atoms.Count);
            IAtom roundTrippedAtom = roundTrippedMol.Atoms[0];

            Assert.IsNotNull(atom.Abundance);
            Assert.IsNotNull(roundTrippedAtom.Abundance);
            Assert.AreEqual(atom.Abundance.Value, roundTrippedAtom.Abundance.Value, 0.01);
        }
Exemple #17
0
        public void TestPseudoAtom()
        {
            var        mol  = new AtomContainer();
            PseudoAtom atom = new PseudoAtom("N")
            {
                Label = "Glu55"
            };

            mol.Atoms.Add(atom);

            IAtomContainer roundTrippedMol = CMLRoundTripTool.RoundTripMolecule(convertor, mol);

            Assert.AreEqual(1, roundTrippedMol.Atoms.Count);
            IAtom roundTrippedAtom = roundTrippedMol.Atoms[0];

            Assert.IsNotNull(roundTrippedAtom);
            Assert.IsTrue(roundTrippedAtom is IPseudoAtom);
            Assert.AreEqual("Glu55", ((IPseudoAtom)roundTrippedAtom).Label);
        }
Exemple #18
0
        public void TestAromaticity()
        {
            IAtomContainer molecule = TestMoleculeFactory.MakeBenzene();

            foreach (var bond in molecule.Bonds)
            {
                bond.IsAromatic = true;
            }

            IAtomContainer roundTrippedMol = CMLRoundTripTool.RoundTripMolecule(convertor, molecule);
            var            bonds           = roundTrippedMol.Bonds;
            double         orderSum        = BondManipulator.GetSingleBondEquivalentSum(bonds);

            foreach (var bond in bonds)
            {
                Assert.IsTrue(bond.IsAromatic);
            }
            Assert.AreEqual(9.0, orderSum, 0.001);
        }
Exemple #19
0
        public void TestDescriptorValue()
        {
            IAtomContainer molecule = TestMoleculeFactory.MakeBenzene();

            string[] propertyName  = { "testKey1", "testKey2" };
            string[] propertyValue = { "testValue1", "testValue2" };

            for (int i = 0; i < propertyName.Length; i++)
            {
                molecule.SetProperty(propertyName[i], propertyValue[i]);
            }
            IAtomContainer roundTrippedMol = CMLRoundTripTool.RoundTripMolecule(convertor, molecule);

            for (int i = 0; i < propertyName.Length; i++)
            {
                Assert.IsNotNull(roundTrippedMol.GetProperty <string>(propertyName[i]));
                Assert.AreEqual(propertyValue[i], roundTrippedMol.GetProperty <string>(propertyName[i]));
            }
        }
Exemple #20
0
        public void TestBondID()
        {
            var  mol   = new AtomContainer();
            Atom atom  = new Atom("C");
            Atom atom2 = new Atom("O");

            mol.Atoms.Add(atom);
            mol.Atoms.Add(atom2);
            Bond bond = new Bond(atom, atom2, BondOrder.Single)
            {
                Id = "b1"
            };

            mol.Bonds.Add(bond);

            IAtomContainer roundTrippedMol  = CMLRoundTripTool.RoundTripMolecule(convertor, mol);
            IBond          roundTrippedBond = roundTrippedMol.Bonds[0];

            Assert.AreEqual(bond.Id, roundTrippedBond.Id);
        }
Exemple #21
0
        public void TestBondStereo()
        {
            var  mol   = new AtomContainer();
            Atom atom  = new Atom("C");
            Atom atom2 = new Atom("O");

            mol.Atoms.Add(atom);
            mol.Atoms.Add(atom2);
            Bond       bond   = new Bond(atom, atom2, BondOrder.Single);
            BondStereo stereo = BondStereo.Down;

            bond.Stereo = stereo;
            mol.Bonds.Add(bond);

            IAtomContainer roundTrippedMol = CMLRoundTripTool.RoundTripMolecule(convertor, mol);

            Assert.AreEqual(2, roundTrippedMol.Atoms.Count);
            Assert.AreEqual(1, roundTrippedMol.Bonds.Count);
            IBond roundTrippedBond = roundTrippedMol.Bonds[0];

            Assert.AreEqual(bond.Stereo, roundTrippedBond.Stereo);
        }
Exemple #22
0
        public void TestBond()
        {
            var  mol   = new AtomContainer();
            Atom atom  = new Atom("C");
            Atom atom2 = new Atom("O");

            mol.Atoms.Add(atom);
            mol.Atoms.Add(atom2);
            Bond bond = new Bond(atom, atom2, BondOrder.Single);

            mol.Bonds.Add(bond);

            IAtomContainer roundTrippedMol = CMLRoundTripTool.RoundTripMolecule(convertor, mol);

            Assert.AreEqual(2, roundTrippedMol.Atoms.Count);
            Assert.AreEqual(1, roundTrippedMol.Bonds.Count);
            IBond roundTrippedBond = roundTrippedMol.Bonds[0];

            Assert.AreEqual(2, roundTrippedBond.Atoms.Count);
            Assert.AreEqual("C", roundTrippedBond.Begin.Symbol); // preserved direction?
            Assert.AreEqual("O", roundTrippedBond.End.Symbol);
            Assert.AreEqual(bond.Order, roundTrippedBond.Order);
        }