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); }
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."); } }
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); }
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); }
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"); }
/// <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); }
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 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); }
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]); }
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); }
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)); }
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"); } }
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)); }
[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)); }
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))); }
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); }
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); }
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]); }
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 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")); }
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); }
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); } }
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); } }
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]); }
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); }
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); } } }
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); } }
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"); } }
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); } }
/// <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); } }