Пример #1
0
        public static IReaction RoundTripReaction(Convertor convertor, IReaction reaction)
        {
            string cmlString = "<!-- failed -->";
            var    cmlDOM    = convertor.CDKReactionToCMLReaction(reaction);

            cmlString = cmlDOM.ToString();

            IReaction roundTrippedReaction = null;

            Debug.WriteLine("CML string: ", cmlString);
            CMLReader reader = new CMLReader(new MemoryStream(Encoding.UTF8.GetBytes(cmlString)));

            IChemFile file = (IChemFile)reader.Read(builder.NewChemFile());

            reader.Close();
            Assert.IsNotNull(file);
            Assert.AreEqual(1, file.Count);
            IChemSequence sequence = file[0];

            Assert.IsNotNull(sequence);
            Assert.AreEqual(1, sequence.Count);
            IChemModel chemModel = sequence[0];

            Assert.IsNotNull(chemModel);
            IReactionSet reactionSet = chemModel.ReactionSet;

            Assert.IsNotNull(reactionSet);
            Assert.AreEqual(1, reactionSet.Count);
            roundTrippedReaction = reactionSet[0];
            Assert.IsNotNull(roundTrippedReaction);

            return(roundTrippedReaction);
        }
Пример #2
0
        public virtual void TestInitiate_IAtomContainerSet_IAtomContainerSet()
        {
            EntryReact entry   = (EntryReact)dictionary[entryString.ToLowerInvariant()];
            var        xmlList = entry.ExampleReactions;

            Assert.IsTrue(xmlList.Count != 0, "The representation entry for [" + entryString
                          + "]  must contain at least one example of reaction.");
            Assert.IsTrue(xmlList.Count > 0, "The representation entry for [" + entryString
                          + "]  must contain at least one example of reaction.");
            foreach (var xml in xmlList)
            {
                CMLReader reader       = new CMLReader(new MemoryStream(Encoding.UTF8.GetBytes(xml)));
                var       chemFile     = (IChemFile)reader.Read(builder.NewChemFile());
                IReaction reactionDict = chemFile[0][0].ReactionSet[0];

                var reactants = reactionDict.Reactants;
                var agents    = reactionDict.Agents;
                var products  = reactionDict.Products;
                if (agents.Count == 0)
                {
                    agents = null;
                }

                IReactionSet reactions = reaction.Initiate(reactants, agents);

                Assert.IsTrue(reactions.Count > 0, "The products for [" + entryString + "] reaction is at least one reaction expected.");

                Assert.AreEqual(products[0].Atoms.Count,
                                reactions[0].Products[0].Atoms.Count,
                                "The products for [" + entryString + "] reaction is not the expected.");
            }
        }
Пример #3
0
        public void TestCMLReactionList()
        {
            var filename = "NCDK.Data.CML.reactionList.1.cml";

            Trace.TraceInformation("Testing: " + filename);
            var ins      = ResourceLoader.GetAsStream(filename);
            var reader   = new CMLReader(ins);
            var chemFile = reader.Read(builder.NewChemFile());

            reader.Close();

            // test the resulting ChemFile content
            Assert.IsNotNull(chemFile);
            Assert.AreEqual(chemFile.Count, 1);
            var seq = chemFile[0];

            Assert.IsNotNull(seq);
            Assert.AreEqual(1, seq.Count);
            var model = seq[0];

            Assert.IsNotNull(model);
            Assert.AreEqual(2, model.ReactionSet.Count);
            Assert.AreEqual("1.3.2", model.ReactionSet[0].Id);

            // test the reaction
            IReaction reaction = model.ReactionSet[0];

            Assert.IsNotNull(reaction);
            Assert.AreEqual("actey", reaction.Reactants[0].Id);
            Assert.AreEqual("a14293164", reaction.Reactants[0].Atoms[0].Id);
            Assert.AreEqual(6, reaction.Products[0].Atoms.Count);
            Assert.AreEqual(6, reaction.Reactants[0].Atoms.Count);
        }
Пример #4
0
        public void TestBug777488()
        {
            //var filename = "data/Bug646.cml";
            var filename = "NCDK.Data.CML.testBug777488-1-AllRingsFinder.cml";
            //var filename = "data/NCI_diversity_528.mol.cml";
            //var filename = "data/NCI_diversity_978.mol.cml";
            var            ins      = ResourceLoader.GetAsStream(filename);
            var            reader   = new CMLReader(ins);
            var            chemFile = reader.Read(builder.NewChemFile());
            var            seq      = chemFile[0];
            var            model    = seq[0];
            IAtomContainer mol      = model.MoleculeSet[0];

            if (standAlone)
            {
                Console.Out.WriteLine("Constructed Molecule");
            }
            if (standAlone)
            {
                Console.Out.WriteLine("Starting AllRingsFinder");
            }
            IRingSet ringSet = new AllRingsFinder().FindAllRings(mol);

            if (standAlone)
            {
                Console.Out.WriteLine("Finished AllRingsFinder");
            }
            if (standAlone)
            {
                Console.Out.WriteLine("Found " + ringSet.Count + " rings.");
            }

            //Display(mol);
        }
Пример #5
0
        public void TestNucleustest()
        {
            var filename = "NCDK.Data.CML.nucleustest.xml";

            Trace.TraceInformation("Testing: " + filename);
            var ins      = ResourceLoader.GetAsStream(filename);
            var reader   = new CMLReader(ins);
            var chemFile = reader.Read(builder.NewChemFile());

            reader.Close();

            // test the resulting ChemFile content
            Assert.IsNotNull(chemFile);
            Assert.AreEqual(chemFile.Count, 1);
            var seq = chemFile[0];

            Assert.IsNotNull(seq);
            Assert.AreEqual(seq.Count, 1);
            var model = seq[0];

            Assert.IsNotNull(model);
            Assert.AreEqual(model.MoleculeSet.Count, 1);

            // test the molecule
            IAtomContainer mol = model.MoleculeSet[0];

            Assert.IsNotNull(mol);
            Assert.AreEqual(11, mol.Atoms.Count, "Incorrect number of atoms");
            Assert.AreEqual(12, mol.Bonds.Count, "Incorrect number of bonds");
            Assert.IsFalse(GeometryUtil.Has3DCoordinates(mol), "File does not have 3D coordinates");
            Assert.IsFalse(GeometryUtil.Has2DCoordinates(mol), "File does not have 2D coordinates");
        }
Пример #6
0
        /// <summary>
        /// Convert a Molecule to CML and back to a Molecule again.
        /// Given that CML reading is working, the problem is with the CMLWriter.
        /// </summary>
        /// <param name="convertor"></param>
        /// <param name="mol"></param>
        /// <returns></returns>
        /// <seealso cref="CMLFragmentsTest"/>
        public static IAtomContainer RoundTripMolecule(Convertor convertor, IAtomContainer mol)
        {
            string cmlString = "<!-- failed -->";
            var    cmlDOM    = convertor.CDKAtomContainerToCMLMolecule(mol);

            cmlString = cmlDOM.ToString();

            Debug.WriteLine("CML string: ", cmlString);
            IChemFile file;

            using (var reader = new CMLReader(new MemoryStream(Encoding.UTF8.GetBytes(cmlString))))
            {
                file = (IChemFile)reader.Read(builder.NewChemFile());
            }
            Assert.IsNotNull(file);
            Assert.AreEqual(1, file.Count);
            IChemSequence sequence = file[0];

            Assert.IsNotNull(sequence);
            Assert.AreEqual(1, sequence.Count);
            IChemModel chemModel = sequence[0];

            Assert.IsNotNull(chemModel);
            var moleculeSet = chemModel.MoleculeSet;

            Assert.IsNotNull(moleculeSet);
            Assert.AreEqual(1, moleculeSet.Count);
            var roundTrippedMol = moleculeSet[0];

            Assert.IsNotNull(roundTrippedMol);

            return(roundTrippedMol);
        }
Пример #7
0
        public void TestStabilityAfterRoundtrip()
        {
            var filename = "NCDK.Data.MDL.bug1014344-1.mol";
            var ins      = ResourceLoader.GetAsStream(filename);
            var reader   = new MDLReader(ins, ChemObjectReaderMode.Strict);
            var mol1     = reader.Read(builder.NewAtomContainer());

            AddImplicitHydrogens(mol1);
            var output    = new StringWriter();
            var cmlWriter = new CMLWriter(output);

            cmlWriter.Write(mol1);
            var cmlreader = new CMLReader(new MemoryStream(Encoding.UTF8.GetBytes(output.ToString())));
            var mol2      = ((IChemFile)cmlreader.Read(builder.NewChemFile()))[0][0].MoleculeSet[0];

            AddImplicitHydrogens(mol2);

            labeler.CanonLabel(mol1);
            labeler.CanonLabel(mol2);
            var atoms1 = mol1.Atoms.GetEnumerator();
            var atoms2 = mol2.Atoms.GetEnumerator();

            while (atoms1.MoveNext())
            {
                atoms2.MoveNext();
                var atom1 = atoms1.Current;
                var atom2 = atoms2.Current;
                Assert.AreEqual(atom1.GetProperty <long>(InvPair.CanonicalLabelPropertyKey), atom2.GetProperty <long>(InvPair.CanonicalLabelPropertyKey));
            }
        }
Пример #8
0
        public static IChemModel RoundTripChemModel(Convertor convertor, IChemModel model)
        {
            string cmlString = "<!-- failed -->";
            var    cmlDOM    = convertor.CDKChemModelToCMLList(model);

            cmlString = cmlDOM.ToString();

            Debug.WriteLine("CML string: ", cmlString);
            IChemFile file;

            using (var reader = new CMLReader(new MemoryStream(Encoding.UTF8.GetBytes(cmlString))))
            {
                file = (IChemFile)reader.Read(model.Builder.NewChemFile());
            }
            Assert.IsNotNull(file);
            Assert.AreEqual(1, file.Count);
            IChemSequence sequence = file[0];

            Assert.IsNotNull(sequence);
            Assert.AreEqual(1, sequence.Count);
            IChemModel chemModel = sequence[0];

            Assert.IsNotNull(chemModel);

            return(chemModel);
        }
Пример #9
0
        public void TestBigMoleculeWithIsolatedRings()
        {
            IRingSet       ringSet = null;
            AllRingsFinder arf     = new AllRingsFinder();

            var filename = "NCDK.Data.CML.isolated_ringsystems.cml";
            var ins      = ResourceLoader.GetAsStream(filename);

            var            reader   = new CMLReader(ins);
            var            chemFile = reader.Read(builder.NewChemFile());
            var            seq      = chemFile[0];
            var            model    = seq[0];
            IAtomContainer mol      = model.MoleculeSet[0];

            //Debug.WriteLine("Constructed Molecule");
            //Debug.WriteLine("Starting AllRingsFinder");
            ringSet = new AllRingsFinder().FindAllRings(mol);
            //Debug.WriteLine("Finished AllRingsFinder");
            Assert.AreEqual(24, ringSet.Count);
            //Display(mol);

            // check sizes of rings
            int[] ringSize = new int[mol.Atoms.Count];
            foreach (var ring in ringSet)
            {
                ringSize[ring.Atoms.Count]++;
            }

            Assert.AreEqual(18, ringSize[6]);
            Assert.AreEqual(6, ringSize[10]);
        }
Пример #10
0
        private IAtomContainer ReadCMLMolecule(string filename)
        {
            IAtomContainer mol = null;

            Debug.WriteLine($"Filename: {filename}");
            var ins    = ResourceLoader.GetAsStream(filename);
            var reader = new CMLReader(ins);

            IChemFile file = (IChemFile)reader.Read(builder.NewChemFile());

            Assert.IsNotNull(file);
            Assert.AreEqual(1, file.Count);
            IChemSequence sequence = file[0];

            Assert.IsNotNull(sequence);
            Assert.AreEqual(1, sequence.Count);
            IChemModel chemModel = sequence[0];

            Assert.IsNotNull(chemModel);
            var moleculeSet = chemModel.MoleculeSet;

            Assert.IsNotNull(moleculeSet);
            Assert.AreEqual(1, moleculeSet.Count);
            mol = moleculeSet[0];
            Assert.IsNotNull(mol);

            return(mol);
        }
Пример #11
0
        public void TestCephNS()
        {
            var filename = "NCDK.Data.CML.ceph-ns.xml";

            Trace.TraceInformation("Testing: " + filename);
            var ins      = ResourceLoader.GetAsStream(filename);
            var reader   = new CMLReader(ins);
            var chemFile = reader.Read(builder.NewChemFile());

            reader.Close();

            // test the resulting ChemFile content
            Assert.IsNotNull(chemFile);
            Assert.AreEqual(chemFile.Count, 1);
            var seq = chemFile[0];

            Assert.IsNotNull(seq);
            Assert.AreEqual(seq.Count, 1);
            var model = seq[0];

            Assert.IsNotNull(model);
            Assert.AreEqual(model.MoleculeSet.Count, 1);

            // test the molecule
            IAtomContainer mol = model.MoleculeSet[0];

            Assert.IsNotNull(mol);
            Assert.AreEqual(mol.Atoms.Count, 15);
            Assert.AreEqual(mol.Bonds.Count, 16);
            Assert.IsFalse(GeometryUtil.Has3DCoordinates(mol));
            Assert.IsTrue(GeometryUtil.Has2DCoordinates(mol));
        }
Пример #12
0
        public void TestSmilesFiles()
        {
            var atomTypeMatcher = CDK.AtomTypeMatcher;

            // Read the first file
            var filename = "NCDK.Data.CML.smiles1.cml";
            var ins      = ResourceLoader.GetAsStream(filename);
            var reader   = new CMLReader(ins);
            var chemFile = reader.Read(builder.NewChemFile());

            Assert.IsNotNull(chemFile);
            IAtomContainer mol1 = ChemFileManipulator.GetAllAtomContainers(chemFile).First();

            // Read the second file
            filename = "NCDK.Data.CML.smiles2.cml";
            ins      = ResourceLoader.GetAsStream(filename);
            reader   = new CMLReader(ins);
            chemFile = reader.Read(builder.NewChemFile());
            Assert.IsNotNull(chemFile);
            IAtomContainer mol2 = ChemFileManipulator.GetAllAtomContainers(chemFile).First();

            var types1 = atomTypeMatcher.FindMatchingAtomTypes(mol1).ToReadOnlyList();
            var types2 = atomTypeMatcher.FindMatchingAtomTypes(mol2).ToReadOnlyList();

            for (int i = 0; i < mol1.Atoms.Count; i++)
            {
                Assert.IsNotNull(types1[i], "Atom typing in mol1 failed for atom " + (i + 1));
                Assert.IsNotNull(types2[i], "Atom typing in mol2 failed for atom " + (i + 1));
                Assert.AreEqual(types1[i].AtomTypeName, types2[i].AtomTypeName,
                                "Atom type mismatch for the " + (i + 1) + " atom");
            }
        }
Пример #13
0
        public void TestMethanolOne()
        {
            var filename = "NCDK.Data.CML.methanol1.cml";

            Trace.TraceInformation("Testing: " + filename);
            var ins      = ResourceLoader.GetAsStream(filename);
            var reader   = new CMLReader(ins);
            var chemFile = reader.Read(builder.NewChemFile());

            reader.Close();

            // test the resulting ChemFile content
            Assert.IsNotNull(chemFile);
            Assert.AreEqual(1, chemFile.Count);
            //Debug.WriteLine($"NO sequences: {chemFile.Count}");
            var seq = chemFile[0];

            Assert.IsNotNull(seq);
            Assert.AreEqual(1, seq.Count);
            //Debug.WriteLine($"NO models: {seq.Count}");
            var model = seq[0];

            Assert.IsNotNull(model);
            var som = model.MoleculeSet;

            Assert.AreEqual(1, som.Count);

            // test the molecule
            IAtomContainer mol = som[0];

            Assert.IsNotNull(mol);
            Assert.AreEqual(mol.Atoms.Count, 6);
            Assert.IsTrue(GeometryUtil.Has3DCoordinates(mol));
        }
Пример #14
0
        [TestMethod(), Ignore()] // It is broken, but not used, AFAIK
        public void TestAnimation()
        {
            var filename = "NCDK.Data.CML.SN1_reaction.cml";

            Trace.TraceInformation("Testing: " + filename);
            var ins      = ResourceLoader.GetAsStream(filename);
            var reader   = new CMLReader(ins);
            var chemFile = reader.Read(builder.NewChemFile());

            reader.Close();

            // test the resulting ChemFile content
            Assert.IsNotNull(chemFile);
            Assert.AreEqual(1, chemFile.Count);
            var seq = chemFile[0];

            Assert.IsNotNull(seq);
            Assert.AreEqual(34, seq.Count);
            var model = seq[0];

            Assert.IsNotNull(model);
            var som = model.MoleculeSet;

            Assert.IsNotNull(som);
            Assert.AreEqual(1, som.Count);

            // test the molecule
            IAtomContainer mol = som[0];

            Assert.IsNotNull(mol);
            Assert.AreEqual(mol.Atoms.Count, 25);
            Assert.IsTrue(GeometryUtil.Has3DCoordinates(mol));
        }
Пример #15
0
        public void TestCMLConciseFormula2()
        {
            var filename = "NCDK.Data.CML.cmlConciseFormula2.cml";

            Trace.TraceInformation("Testing: " + filename);
            var ins      = ResourceLoader.GetAsStream(filename);
            var reader   = new CMLReader(ins);
            var chemFile = reader.Read(builder.NewChemFile());

            reader.Close();

            // test the resulting ChemFile content
            Assert.IsNotNull(chemFile);
            Assert.AreEqual(chemFile.Count, 1);
            var seq = chemFile[0];

            Assert.IsNotNull(seq);
            Assert.AreEqual(seq.Count, 1);
            var model = seq[0];

            Assert.IsNotNull(model);

            var mol = model.MoleculeSet[0];

            Assert.IsNotNull(mol);

            // FIXME: REACT: It should return two different formulas
            Assert.AreEqual("[C 18 H 21 Cl 2 Mn 1 N 5 O 1, C 4 H 10]",
                            Strings.ToJavaString(mol.GetProperty <IList <string> >(CDKPropertyName.Formula)));
        }
Пример #16
0
        public void TestCMLWithFormula()
        {
            var filename = "NCDK.Data.CML.cmlWithFormula.cml";

            Trace.TraceInformation("Testing: " + filename);
            var ins      = ResourceLoader.GetAsStream(filename);
            var reader   = new CMLReader(ins);
            var chemFile = reader.Read(builder.NewChemFile());

            reader.Close();

            // test the resulting ChemFile content
            Assert.IsNotNull(chemFile);
            Assert.AreEqual(chemFile.Count, 1);
            var seq = chemFile[0];

            Assert.IsNotNull(seq);
            Assert.AreEqual(seq.Count, 1);
            var model = seq[0];

            Assert.IsNotNull(model);

            var mol = model.MoleculeSet[0];

            Assert.IsNotNull(mol);
            Assert.AreEqual("a", mol.Id);
            Assert.AreEqual("a1", mol.Atoms[0].Id);
            Assert.AreEqual(27, mol.Atoms.Count);
            Assert.AreEqual(32, mol.Bonds.Count);
        }
Пример #17
0
        private IChemFile ParseCMLString(string cmlString)
        {
            IChemFile chemFile = null;

            using (var reader = new CMLReader(new MemoryStream(Encoding.UTF8.GetBytes(cmlString))))
            {
                chemFile = reader.Read(builder.NewChemFile());
            }
            return(chemFile);
        }
Пример #18
0
        public void TestBug2697568()
        {
            var filename = "NCDK.Data.CML.AlanineTreeReverse.cml";
            var ins      = ResourceLoader.GetAsStream(filename);
            var reader   = new CMLReader(ins);
            var chemFile = builder.NewChemFile();

            chemFile = (IChemFile)reader.Read(chemFile);
            reader.Close();
            Assert.AreSame(chemFile[0][0].MoleculeSet[0], chemFile
                           [0][0].ReactionSet[0].Reactants[0]);
        }
Пример #19
0
        public void TestSFBug1085912_1()
        {
            string filename_pdb = "NCDK.Data.PDB.1CKV.pdb";
            var    ins1         = ResourceLoader.GetAsStream(this.GetType(), filename_pdb);

            ISimpleChemObjectReader reader = new PDBReader(ins1);
            IChemFile chemFile1            = (IChemFile)reader.Read(builder.NewChemFile());

            reader.Close();
            IChemSequence  seq1           = chemFile1[0];
            IChemModel     model1         = seq1[0];
            IAtomContainer container      = model1.MoleculeSet[0];
            IBioPolymer    polymer1       = (IBioPolymer)container;
            int            countchemFile1 = chemFile1.Count;
            int            countmodel1    = model1.MoleculeSet.Count;
            int            countpolymer1  = polymer1.Atoms.Count;

            StringWriter writer    = new StringWriter();
            CMLWriter    cmlWriter = new CMLWriter(writer);

            cmlWriter.RegisterCustomizer(new PDBAtomCustomizer());
            cmlWriter.Write(polymer1);
            cmlWriter.Close();
            string cmlContent1 = writer.ToString();

            CMLReader reader2  = new CMLReader(new MemoryStream(Encoding.UTF8.GetBytes(cmlContent1)));
            var       chemFil2 = reader2.Read(builder.NewChemFile());

            reader2.Close();
            IChemSequence seq2     = chemFil2[0];
            IChemModel    model2   = seq2[0];
            var           polymer2 = (IPDBPolymer)model2.MoleculeSet[0];

            int countchemFile2 = chemFil2.Count;
            int countmodel2    = model2.MoleculeSet.Count;
            int countpolymer2  = polymer2.Atoms.Count;

            Assert.AreEqual(countchemFile1, countchemFile2);
            Assert.AreEqual(countmodel1, countmodel2);
            Assert.AreEqual(countpolymer1, countpolymer2);

            writer    = new StringWriter();
            cmlWriter = new CMLWriter(writer);
            cmlWriter.RegisterCustomizer(new PDBAtomCustomizer());
            cmlWriter.Write(polymer2);
            cmlWriter.Close();
            string cmlContent2 = writer.ToString();

            string conte1 = cmlContent1.Substring(0, 1000);
            string conte2 = cmlContent2.Substring(0, 1000);

            Assert.AreEqual(conte1, conte2);
        }
Пример #20
0
        public void TestReactionProperties()
        {
            var filename = "NCDK.Data.CML.reaction.2.cml";
            var ins      = ResourceLoader.GetAsStream(filename);
            var reader   = new CMLReader(ins);
            var chemFile = builder.NewChemFile();

            chemFile = (IChemFile)reader.Read(chemFile);
            reader.Close();
            IReaction reaction = chemFile[0][0].ReactionSet[0];

            Assert.AreEqual("3", reaction.GetProperty <string>("Ka"));
        }
Пример #21
0
        public void TestFile3()
        {
            var filename = "NCDK.Data.CML.3.cml";
            var ins      = ResourceLoader.GetAsStream(filename);
            var reader   = new CMLReader(ins);
            var chemFile = reader.Read(builder.NewChemFile());

            // test the resulting ChemFile content
            Assert.IsNotNull(chemFile);
            IAtomContainer mol = ChemFileManipulator.GetAllAtomContainers(chemFile).First();

            string[] expectedTypes = { "C.sp2", "N.sp2", "C.sp2", "N.sp3", "C.sp2", "N.sp2", "O.sp3", "C.sp2", "C.sp2",
                                       "C.sp2" };
            AssertAtomTypes(testedAtomTypes, expectedTypes, mol);
        }
Пример #22
0
        public void TestCMLTestCase()
        {
            var filename = "NCDK.Data.CML.olaCmlAtomType.cml";
            var ins      = ResourceLoader.GetAsStream(filename);
            var reader   = new CMLReader(ins);
            var chemFile = builder.NewChemFile();

            chemFile = (IChemFile)reader.Read(chemFile);
            reader.Close();
            var container = ChemFileManipulator.GetAllAtomContainers(chemFile).First();

            foreach (var atom in container.Atoms)
            {
                Assert.AreEqual(null, atom.ImplicitHydrogenCount);
            }
        }
Пример #23
0
        public void TestAtomProperties()
        {
            var      filename = "NCDK.Data.CML.custompropertiestest.cml";
            var      ins      = ResourceLoader.GetAsStream(filename);
            var      reader   = new CMLReader(ins);
            ChemFile chemFile = (ChemFile)reader.Read((ChemFile) new ChemFile());

            reader.Close();
            Assert.IsNotNull(chemFile);
            IAtomContainer container = ChemFileManipulator.GetAllAtomContainers(chemFile).First();

            for (int i = 0; i < container.Atoms.Count; i++)
            {
                Assert.AreEqual(2, container.Atoms[i].GetProperties().Count);
            }
        }
Пример #24
0
        public void TestCMLSchemeMoleculeSet()
        {
            var filename = "NCDK.Data.CML.reactionSchemeMoleculeSet.cml";

            Trace.TraceInformation("Testing: " + filename);
            var ins      = ResourceLoader.GetAsStream(filename);
            var reader   = new CMLReader(ins);
            var chemFile = reader.Read(builder.NewChemFile());

            reader.Close();

            // test the resulting ChemFile content
            Assert.IsNotNull(chemFile);
            Assert.AreEqual(chemFile.Count, 1);
            var seq = chemFile[0];

            Assert.IsNotNull(seq);
            Assert.AreEqual(1, seq.Count);
            var model = seq[0];

            Assert.IsNotNull(model);

            // test reaction
            Assert.AreEqual(1, model.ReactionSet.Count);
            string[] idReaction  = { "react_1" };
            string[] idReactants = { "A" };
            string[] idProducts  = { "B", "C" };

            IReaction reaction = model.ReactionSet[0];

            Assert.AreEqual(idReaction[0], reaction.Id);
            // test molecule
            Assert.AreEqual(2, reaction.Products.Count());
            Assert.AreEqual(idProducts[0], reaction.Products[0].Id);
            Assert.AreEqual("C 9 H 20 N 1",
                            reaction.Products[0].GetProperty <IList <string> >(CDKPropertyName.Formula)[0]);
            Assert.AreEqual(idProducts[1], reaction.Products[1].Id);

            Assert.AreEqual(1, reaction.Reactants.Count());
            Assert.AreEqual(idReactants[0], reaction.Reactants[0].Id);
            Assert.AreEqual("C 28 H 60 N 1",
                            reaction.Reactants[0].GetProperty <IList <string> >(CDKPropertyName.Formula)[0]);
        }
Пример #25
0
        public void TestEstron()
        {
            var filename = "NCDK.Data.CML.estron.cml";

            Trace.TraceInformation("Testing: " + filename);
            IChemFile chemFile;

            using (var ins = ResourceLoader.GetAsStream(filename))
                using (var reader = new CMLReader(ins))
                {
                    chemFile = reader.Read(builder.NewChemFile());
                }

            // test the resulting ChemFile content
            Assert.IsNotNull(chemFile);
            Assert.AreEqual(1, chemFile.Count);
            var seq = chemFile[0];

            Assert.IsNotNull(seq);
            Assert.AreEqual(1, seq.Count);
            var model = seq[0];

            Assert.IsNotNull(model);

            // test the molecule
            ICrystal crystal = model.Crystal;

            Assert.IsNotNull(crystal);
            Assert.AreEqual(4 * 42, crystal.Atoms.Count);
            Assert.IsTrue(GeometryUtil.Has3DCoordinates(crystal));
            // test the cell axes
            Vector3 a = crystal.A;

            Assert.IsTrue(a.X != 0.0);
            Vector3 b = crystal.B;

            Assert.IsTrue(b.Y != 0.0);
            Vector3 c = crystal.C;

            Assert.IsTrue(c.Z != 0.0);
        }
Пример #26
0
        public void TestCOONa()
        {
            var filename = "NCDK.Data.CML.COONa.cml";

            Trace.TraceInformation("Testing: " + filename);
            var ins      = ResourceLoader.GetAsStream(filename);
            var reader   = new CMLReader(ins);
            var chemFile = reader.Read(builder.NewChemFile());

            reader.Close();

            // test the resulting ChemFile content
            Assert.IsNotNull(chemFile);
            Assert.AreEqual(chemFile.Count, 1);
            var seq = chemFile[0];

            Assert.IsNotNull(seq);
            Assert.AreEqual(seq.Count, 1);
            var model = seq[0];

            Assert.IsNotNull(model);
            Assert.AreEqual(model.MoleculeSet.Count(), 1);

            // test the molecule
            var mol = model.MoleculeSet[0];

            Assert.IsNotNull(mol);
            Assert.AreEqual(4, mol.Atoms.Count);
            Assert.AreEqual(2, mol.Bonds.Count);
            Assert.IsTrue(GeometryUtil.Has3DCoordinates(mol));
            Assert.IsTrue(!GeometryUtil.Has2DCoordinates(mol));

            foreach (var atom in mol.Atoms)
            {
                if (atom.Symbol.Equals("Na"))
                {
                    Assert.AreEqual(+1, atom.FormalCharge.Value);
                }
            }
        }
Пример #27
0
        public void TestCMLStepList()
        {
            var filename = "NCDK.Data.CML.reactionStepList.1.cml";

            Trace.TraceInformation("Testing: " + filename);
            var ins      = ResourceLoader.GetAsStream(filename);
            var reader   = new CMLReader(ins);
            var chemFile = reader.Read(builder.NewChemFile());

            reader.Close();

            // test the resulting ChemFile content
            Assert.IsNotNull(chemFile);
            Assert.AreEqual(chemFile.Count, 1);
            var seq = chemFile[0];

            Assert.IsNotNull(seq);
            Assert.AreEqual(1, seq.Count);
            var model = seq[0];

            Assert.IsNotNull(model);

            // test reaction
            Assert.AreEqual(3, model.ReactionSet.Count);
            string[] idReaction  = { "r1", "r2", "r3" };
            string[] idReactants = { "A", "B", "C" };
            string[] idProducts  = { "B", "C", "D" };
            for (int i = 0; i < idReaction.Length; i++)
            {
                IReaction reaction = model.ReactionSet[i];
                Assert.AreEqual(idReaction[i], reaction.Id);
                // test molecule
                Assert.AreEqual(1, reaction.Products.Count());
                Assert.AreEqual(idProducts[i], reaction.Products[0].Id);

                Assert.AreEqual(1, reaction.Reactants.Count());
                Assert.AreEqual(idReactants[i], reaction.Reactants[0].Id);
            }
        }
Пример #28
0
        public void TestFile3()
        {
            var filename = "NCDK.Data.CML.3.cml";
            var ins      = ResourceLoader.GetAsStream(filename);
            var reader   = new CMLReader(ins);
            var chemFile = reader.Read(builder.NewChemFile());

            reader.Close();

            // test the resulting ChemFile content
            Assert.IsNotNull(chemFile);
            var mol = ChemFileManipulator.GetAllAtomContainers(chemFile).First();

            for (int i = 0; i <= 3; i++)
            {
                Assert.IsFalse(mol.Bonds[i].IsAromatic, "Bond " + (i + 1) + " is not aromatic in the file");
            }
            for (int i = 4; i <= 9; i++)
            {
                Assert.IsTrue(mol.Bonds[i].IsAromatic, "Bond " + (i + 1) + " is aromatic in the file");
            }
        }
Пример #29
0
        static void Main(string[] args)
        {
            var container = Builder.NewAtomContainer();

            container.Add(Builder.NewAtom("C"));
            container.Add(Builder.NewAtom("C"));
            container.Add(Builder.NewBond(container.Atoms[0], container.Atoms[1], BondOrder.Unset));

            using (var file = new FileStream("./cml.cml", FileMode.Create, FileAccess.Write))
            {
                using (var writer = new CMLWriter(file))
                {
                    writer.Write(container);
                }
            }

            using (var cmlFile = new FileStream("./cml.cml", FileMode.Open, FileAccess.Read))
            {
                var reader   = new CMLReader(cmlFile);
                var chemFile = reader.Read(Builder.NewChemFile());
                Console.WriteLine(chemFile[0][0].MoleculeSet[0].Bonds[0].Order);
            }
        }
Пример #30
0
 /// <summary>
 /// Loads all existing templates into memory. To add templates to be used in
 /// SDG, place a drawing with the new template in org/openscience/cdk/layout/templates and add the
 /// template filename to org/openscience/cdk/layout/templates/template.list
 /// </summary>
 public void LoadTemplates()
 {
     try
     {
         using (var reader = new StreamReader(ResourceLoader.GetAsStream("NCDK.Layout.Templates.templates.list")))
         {
             string line;
             while ((line = reader.ReadLine()) != null)
             {
                 line = "NCDK.Layout.Templates." + line;
                 Debug.WriteLine($"Attempting to read template {line}");
                 try
                 {
                     CMLReader structureReader = new CMLReader(ResourceLoader.GetAsStream(line));
                     IChemFile file            = structureReader.Read(builder.NewChemFile());
                     var       files           = ChemFileManipulator.GetAllAtomContainers(file);
                     foreach (var f in files)
                     {
                         AddMolecule(f);
                     }
                     Debug.WriteLine($"Successfully read template {line}");
                 }
                 catch (CDKException e)
                 {
                     Trace.TraceWarning($"Could not read template {line}, reason: {e.Message}");
                     Debug.WriteLine(e.Message);
                 }
             }
         }
     }
     catch (IOException e)
     {
         Trace.TraceWarning($"Could not read (all of the) templates, reason: {e.Message}");
         Debug.WriteLine(e.Message);
     }
 }