public void TestReactionCustomization() { var writer = new StringWriter(); var reaction = builder.NewReaction(); reaction.Id = "reaction1"; IAtomContainer reactant = reaction.Builder.NewAtomContainer(); reactant.Id = "react"; IAtomContainer product = reaction.Builder.NewAtomContainer(); product.Id = "product"; IAtomContainer agent = reaction.Builder.NewAtomContainer(); agent.Id = "agent"; reaction.Reactants.Add(reactant); reaction.Products.Add(product); reaction.Agents.Add(agent); var cmlWriter = new CMLWriter(writer); cmlWriter.Write(reaction); cmlWriter.Close(); string cmlContent = writer.ToString(); Debug.WriteLine("****************************** TestReactionCustomization()"); Debug.WriteLine(cmlContent); Debug.WriteLine("******************************"); Assert.IsTrue(cmlContent.IndexOf("<reaction id=\"reaction1") != -1); Assert.IsTrue(cmlContent.IndexOf("<molecule id=\"react") != -1); Assert.IsTrue(cmlContent.IndexOf("<molecule id=\"product") != -1); Assert.IsTrue(cmlContent.IndexOf("<molecule id=\"agent") != -1); }
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)); } }
public void TestReactionSchemeWithFormula() { var writer = new StringWriter(); var scheme1 = builder.NewReactionScheme(); scheme1.Id = "rs0"; var reaction = builder.NewReaction(); reaction.Id = "r1"; var moleculeA = reaction.Builder.NewAtomContainer(); moleculeA.Id = "A"; var formula = new MolecularFormula(); formula.Add(reaction.Builder.NewIsotope("C"), 10); formula.Add(reaction.Builder.NewIsotope("H"), 15); formula.Add(reaction.Builder.NewIsotope("N"), 2); formula.Add(reaction.Builder.NewIsotope("O"), 1); moleculeA.SetProperty(CDKPropertyName.Formula, formula); var moleculeB = reaction.Builder.NewAtomContainer(); moleculeB.Id = "B"; reaction.Reactants.Add(moleculeA); reaction.Products.Add(moleculeB); scheme1.Add(reaction); var reaction2 = reaction.Builder.NewReaction(); reaction2.Id = "r2"; var moleculeC = reaction.Builder.NewAtomContainer(); moleculeC.Id = "C"; reaction2.Reactants.Add(moleculeB); reaction2.Products.Add(moleculeC); scheme1.Add(reaction2); using (var cmlWriter = new CMLWriter(writer)) { cmlWriter.Write(scheme1); } var cmlContent = writer.ToString(); Debug.WriteLine("****************************** TestReactionCustomization()"); Debug.WriteLine(cmlContent); Debug.WriteLine("******************************"); Assert.IsTrue(cmlContent.IndexOf("<reactionScheme id=\"rs0") != -1); Assert.IsTrue(cmlContent.IndexOf("<reaction id=\"r1") != -1); Assert.IsTrue(cmlContent.IndexOf("<reaction id=\"r2") != -1); Assert.IsTrue(cmlContent.IndexOf("<molecule id=\"A") != -1); Assert.IsTrue(cmlContent.IndexOf("<formula concise=") != -1); Assert.IsTrue(cmlContent.IndexOf("<molecule id=\"B") != -1); Assert.IsTrue(cmlContent.IndexOf("<molecule id=\"C") != -1); }
public void TestReactionScheme1() { var writer = new StringWriter(); var scheme1 = builder.NewReactionScheme(); scheme1.Id = "rs0"; var scheme2 = scheme1.Builder.NewReactionScheme(); scheme2.Id = "rs1"; scheme1.Add(scheme2); var reaction = scheme1.Builder.NewReaction(); reaction.Id = "r1"; var moleculeA = reaction.Builder.NewAtomContainer(); moleculeA.Id = "A"; var moleculeB = reaction.Builder.NewAtomContainer(); moleculeB.Id = "B"; reaction.Reactants.Add(moleculeA); reaction.Products.Add(moleculeB); scheme2.Add(reaction); var reaction2 = reaction.Builder.NewReaction(); reaction2.Id = "r2"; var moleculeC = reaction.Builder.NewAtomContainer(); moleculeC.Id = "C"; reaction2.Reactants.Add(moleculeB); reaction2.Products.Add(moleculeC); scheme1.Add(reaction2); using (var cmlWriter = new CMLWriter(writer)) { cmlWriter.Write(scheme1); } var cmlContent = writer.ToString(); Debug.WriteLine("****************************** TestReactionCustomization()"); Debug.WriteLine(cmlContent); Debug.WriteLine("******************************"); Assert.IsTrue(cmlContent.IndexOf("<reactionScheme id=\"rs0") != -1); Assert.IsTrue(cmlContent.IndexOf("<reactionScheme id=\"rs1") != -1); Assert.IsTrue(cmlContent.IndexOf("<reaction id=\"r1") != -1); Assert.IsTrue(cmlContent.IndexOf("<reaction id=\"r2") != -1); Assert.IsTrue(cmlContent.IndexOf("<molecule id=\"A") != -1); Assert.IsTrue(cmlContent.IndexOf("<molecule id=\"B") != -1); Assert.IsTrue(cmlContent.IndexOf("<molecule id=\"C") != -1); }
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); }
public void TestReactionSchemeWithFormula2() { var writer = new StringWriter(); var scheme1 = builder.NewReactionScheme(); scheme1.Id = "rs0"; var reaction = builder.NewReaction(); reaction.Id = "r1"; var moleculeA = reaction.Builder.NewAtomContainer(); moleculeA.Id = "A"; moleculeA.SetProperty(CDKPropertyName.Formula, "C 10 H 15 N 2 O 1"); var moleculeB = reaction.Builder.NewAtomContainer(); moleculeB.Id = "B"; reaction.Reactants.Add(moleculeA); reaction.Products.Add(moleculeB); scheme1.Add(reaction); var reaction2 = reaction.Builder.NewReaction(); reaction2.Id = "r2"; var moleculeC = reaction.Builder.NewAtomContainer(); moleculeC.Id = "C"; reaction2.Reactants.Add(moleculeB); reaction2.Products.Add(moleculeC); scheme1.Add(reaction2); using (var cmlWriter = new CMLWriter(writer)) { cmlWriter.Write(scheme1); } var cmlContent = writer.ToString(); Debug.WriteLine("****************************** TestReactionCustomization()"); Debug.WriteLine(cmlContent); Debug.WriteLine("******************************"); Assert.IsTrue(cmlContent.IndexOf("<reactionScheme id=\"rs0") != -1); Assert.IsTrue(cmlContent.IndexOf("<reaction id=\"r1") != -1); Assert.IsTrue(cmlContent.IndexOf("<reaction id=\"r2") != -1); Assert.IsTrue(cmlContent.IndexOf("<molecule id=\"A") != -1); Assert.IsTrue(cmlContent.IndexOf("<scalar dictRef=\"cdk:molecularProperty") != -1); Assert.IsTrue(cmlContent.IndexOf("<molecule id=\"B") != -1); Assert.IsTrue(cmlContent.IndexOf("<molecule id=\"C") != -1); }
public void TestNullFormalCharge() { var writer = new StringWriter(); IAtomContainer molecule = builder.NewAtomContainer(); // methane molecule.Atoms.Add(molecule.Builder.NewAtom(ChemicalElement.C)); molecule.Atoms[0].FormalCharge = null; var cmlWriter = new CMLWriter(writer); cmlWriter.Write(molecule); cmlWriter.Close(); Debug.WriteLine("****************************** TestNullFormalCharge()"); Debug.WriteLine(writer.ToString()); Debug.WriteLine("******************************"); Assert.IsFalse(writer.ToString().Contains("formalCharge")); }
public void TestHydrogenCount() { var writer = new StringWriter(); IAtomContainer molecule = builder.NewAtomContainer(); // methane molecule.Atoms.Add(molecule.Builder.NewAtom(ChemicalElement.C)); molecule.Atoms[0].ImplicitHydrogenCount = 4; var cmlWriter = new CMLWriter(writer); cmlWriter.Write(molecule); cmlWriter.Close(); Debug.WriteLine("****************************** TestHydrogenCount()"); Debug.WriteLine(writer.ToString()); Debug.WriteLine("******************************"); Assert.IsTrue(writer.ToString().IndexOf("hydrogenCount=\"4\"") != -1); }
public void TestCMLWriterBenzene() { var writer = new StringWriter(); IAtomContainer molecule = TestMoleculeFactory.MakeBenzene(); AtomContainerManipulator.PercieveAtomTypesAndConfigureAtoms(molecule); Aromaticity.CDKLegacy.Apply(molecule); var cmlWriter = new CMLWriter(writer); cmlWriter.Write(molecule); cmlWriter.Close(); Debug.WriteLine("****************************** TestCMLWriterBenzene()"); Debug.WriteLine(writer.ToString()); Debug.WriteLine("******************************"); Assert.IsTrue(writer.ToString().IndexOf("</molecule>") != -1); }
public void TestMassNumber() { var writer = new StringWriter(); var mol = builder.NewAtomContainer(); var atom = builder.NewAtom("C"); atom.MassNumber = 12; mol.Atoms.Add(atom); var cmlWriter = new CMLWriter(writer); cmlWriter.Write(mol); cmlWriter.Close(); Debug.WriteLine("****************************** TestMAssNumber()"); Debug.WriteLine(writer.ToString()); Debug.WriteLine("******************************"); Assert.IsTrue(writer.ToString().IndexOf("isotopeNumber=\"12\"") != -1); }
public void TestReactionProperty() { var writer = new StringWriter(); var reaction = builder.NewReaction(); reaction.Id = "r1"; reaction.SetProperty("blabla", "blabla2"); var cmlWriter = new CMLWriter(writer); cmlWriter.Write(reaction); cmlWriter.Close(); string cmlContent = writer.ToString(); Debug.WriteLine("****************************** TestReactionCustomization()"); Debug.WriteLine(cmlContent); Debug.WriteLine("******************************"); Assert.IsTrue(cmlContent.IndexOf("<scalar dictRef=\"cdk:reactionProperty") != -1); }
public void TestMoleculeSetID() { var writer = new StringWriter(); var moleculeSet = builder.NewChemObjectSet <IAtomContainer>(); moleculeSet.Id = "ms0"; var cmlWriter = new CMLWriter(writer); cmlWriter.Write(moleculeSet); cmlWriter.Close(); string cmlContent = writer.ToString(); Debug.WriteLine("****************************** TestReactionCustomization()"); Debug.WriteLine(cmlContent); Debug.WriteLine("******************************"); Assert.IsTrue(cmlContent.IndexOf("<moleculeList convention=\"cdk:moleculeSet\" id=\"ms0") != -1); }
public void TestChemModeID() { var writer = new StringWriter(); var chemModel = builder.NewChemModel(); chemModel.Id = "cm0"; var cmlWriter = new CMLWriter(writer); cmlWriter.Write(chemModel); cmlWriter.Close(); string cmlContent = writer.ToString(); Debug.WriteLine("****************************** TestReactionCustomization()"); Debug.WriteLine(cmlContent); Debug.WriteLine("******************************"); Assert.IsTrue(cmlContent.IndexOf("<list convention=\"cdk:model\" id=\"cm0") != -1); }
public void TestHydrogenCount_2() { var writer = new StringWriter(); var molecule = builder.NewAtomContainer(); // methane molecule.Atoms.Add(molecule.Builder.NewAtom(ChemicalElement.C)); molecule.Atoms.Add(molecule.Builder.NewAtom(ChemicalElement.H)); molecule.Atoms[0].ImplicitHydrogenCount = 3; molecule.AddBond(molecule.Atoms[0], molecule.Atoms[1], BondOrder.Single); using (var cmlWriter = new CMLWriter(writer)) { cmlWriter.Write(molecule); } Debug.WriteLine("****************************** TestHydrogenCount_2()"); Debug.WriteLine(writer.ToString()); Debug.WriteLine("******************************"); Assert.IsTrue(writer.ToString().IndexOf("hydrogenCount=\"4\"") != -1); }
public void TestMDMoleculeCustomization() { StringWriter writer = new StringWriter(); CMLWriter cmlWriter = new CMLWriter(writer); cmlWriter.RegisterCustomizer(new MDMoleculeCustomizer()); try { IAtomContainer molecule = MakeMDBenzene(); cmlWriter.Write(molecule); cmlWriter.Close(); } catch (Exception exception) { if (!(exception is CDKException || exception is IOException)) { throw; } { Trace.TraceError($"Error while creating an CML2 file: {exception.Message}"); Debug.WriteLine(exception); Assert.Fail(exception.Message); } } string cmlContent = writer.ToString(); Debug.WriteLine("****************************** TestMDMoleculeCustomization()"); Debug.WriteLine(cmlContent); Debug.WriteLine("******************************"); // Console.Out.WriteLine("****************************** TestMDMoleculeCustomization()"); // Console.Out.WriteLine(cmlContent); // Console.Out.WriteLine("******************************"); Assert.IsTrue(cmlContent.IndexOf("xmlns:md") != -1); Assert.IsTrue(cmlContent.IndexOf("md:residue\"") != -1); Assert.IsTrue(cmlContent.IndexOf("md:resNumber\"") != -1); Assert.IsTrue(cmlContent.IndexOf("md:chargeGroup\"") != -1); Assert.IsTrue(cmlContent.IndexOf("md:cgNumber\"") != -1); Assert.IsTrue(cmlContent.IndexOf("md:switchingAtom\"") != -1); }
public void TestPDBAtomCustomization() { StringWriter writer = new StringWriter(); var molecule = builder.NewAtomContainer(); IPDBAtom atom = builder.NewPDBAtom("C"); atom.Name = "CA"; atom.ResName = "PHE"; molecule.Atoms.Add(atom); CMLWriter cmlWriter = new CMLWriter(writer); cmlWriter.RegisterCustomizer(new PDBAtomCustomizer()); cmlWriter.Write(molecule); cmlWriter.Close(); string cmlContent = writer.ToString(); Debug.WriteLine("****************************** TestPDBAtomCustomization()"); Debug.WriteLine(cmlContent); Debug.WriteLine("******************************"); Assert.IsTrue(cmlContent.IndexOf("<scalar dictRef=\"pdb:resName") != -1); }
public void TestCMLCrystal() { var writer = new StringWriter(); var crystal = builder.NewCrystal(); var silicon = builder.NewAtom("Si"); silicon.FractionalPoint3D = new Vector3(0, 0, 0); crystal.Atoms.Add(silicon); crystal.A = (new Vector3(1.5, 0.0, 0.0)); crystal.B = (new Vector3(0.0, 2.0, 0.0)); crystal.C = (new Vector3(0.0, 0.0, 1.5)); using (var cmlWriter = new CMLWriter(writer)) { cmlWriter.Write(crystal); } var cmlContent = writer.ToString(); Debug.WriteLine("****************************** TestCMLCrystal()"); Debug.WriteLine(cmlContent); Debug.WriteLine("******************************"); Assert.IsTrue(cmlContent.IndexOf("</crystal>") != -1); // the cystal info has to be present Assert.IsTrue(cmlContent.IndexOf("<atom") != -1); // an Atom has to be present }
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); } }
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); }