Пример #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 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);
        }
Пример #3
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));
        }
Пример #4
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)));
        }
Пример #5
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);
        }
Пример #6
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));
        }
Пример #7
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");
        }
Пример #8
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));
        }
Пример #9
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);
        }
Пример #10
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]);
        }
Пример #11
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"));
        }
Пример #12
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);
            }
        }
Пример #13
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);
            }
        }
Пример #14
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]);
        }
Пример #15
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);
                }
            }
        }
Пример #16
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");
            }
        }
Пример #17
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);
            }
        }
Пример #18
0
        public void TestMDMoleculeCustomizationRoundtripping()
        {
            StringWriter writer = new StringWriter();

            CMLWriter cmlWriter = new CMLWriter(writer);

            cmlWriter.RegisterCustomizer(new MDMoleculeCustomizer());
            MDMolecule molecule = MakeMDBenzene();

            cmlWriter.Write(molecule);
            cmlWriter.Close();

            string serializedMol = writer.ToString();

            Debug.WriteLine("****************************** TestMDMoleculeCustomizationRoundtripping()");
            Debug.WriteLine(serializedMol);
            Debug.WriteLine("******************************");
            Debug.WriteLine("****************************** testMDMoleculeCustomization Write first");
            Debug.WriteLine(serializedMol);
            Debug.WriteLine("******************************");

            CMLReader reader = new CMLReader(new MemoryStream(Encoding.UTF8.GetBytes(serializedMol)));

            reader.RegisterConvention("md:mdMolecule", new MDMoleculeConvention(builder.NewChemFile()));
            IChemFile file = (IChemFile)reader.Read(builder.NewChemFile());

            reader.Close();
            var containers = ChemFileManipulator.GetAllAtomContainers(file).ToReadOnlyList();

            Assert.AreEqual(1, containers.Count);

            var molecule2 = containers[0];

            Assert.IsTrue(molecule2 is MDMolecule);
            MDMolecule mdMol = (MDMolecule)molecule2;

            Assert.AreEqual(6, mdMol.Atoms.Count);
            Assert.AreEqual(6, mdMol.Bonds.Count);

            var residues = mdMol.GetResidues();

            Assert.AreEqual(2, residues.Count);
            Assert.AreEqual(3, ((Residue)residues[0]).Atoms.Count);
            Assert.AreEqual(3, ((Residue)residues[1]).Atoms.Count);
            Assert.AreEqual("myResidue1", ((Residue)residues[0]).Name);
            Assert.AreEqual("myResidue2", ((Residue)residues[1]).Name);
            Assert.AreEqual(0, ((Residue)residues[0]).GetNumber());
            Assert.AreEqual(1, ((Residue)residues[1]).GetNumber());

            var chargeGroup = mdMol.GetChargeGroups();

            Assert.AreEqual(2, chargeGroup.Count);
            Assert.AreEqual(2, ((ChargeGroup)chargeGroup[0]).Atoms.Count);
            Assert.AreEqual(4, ((ChargeGroup)chargeGroup[1]).Atoms.Count);
            Assert.IsNotNull(((ChargeGroup)chargeGroup[0]).GetSwitchingAtom());
            Assert.AreEqual("a2", ((ChargeGroup)chargeGroup[0]).GetSwitchingAtom().Id);
            Assert.IsNotNull(((ChargeGroup)chargeGroup[1]).GetSwitchingAtom());
            Assert.AreEqual("a5", ((ChargeGroup)chargeGroup[1]).GetSwitchingAtom().Id);

            Assert.AreEqual(2, ((ChargeGroup)chargeGroup[0]).GetNumber());
            Assert.AreEqual(3, ((ChargeGroup)chargeGroup[1]).GetNumber());

            writer = new StringWriter();

            cmlWriter = new CMLWriter(writer);
            cmlWriter.RegisterCustomizer(new MDMoleculeCustomizer());
            cmlWriter.Write(mdMol);
            cmlWriter.Close();

            string serializedMDMol = writer.ToString();

            Debug.WriteLine("****************************** TestMDMoleculeCustomizationRoundtripping()");
            Debug.WriteLine(serializedMol);
            Debug.WriteLine("******************************");
            Debug.WriteLine("****************************** testMDMoleculeCustomization Write second");
            Debug.WriteLine(serializedMDMol);
            Debug.WriteLine("******************************");

            Assert.AreEqual(serializedMol, serializedMDMol);
        }