public static PropertiesListener Join(PropertiesListener listener1, PropertyListener listener2) { return(new PropertiesListener(listener1, listener1.propertyTypes.Concat(new[] { listener2.PropertyType }).ToArray(), listener1.propertyNames.Select(x => x.Key).Concat(new[] { listener2.PropertyName }).ToArray(), listener1.getValues.Concat(new[] { listener2.GetValue }).ToArray())); }
public void TestAromaticBondType4() { IAtomContainer benzene = TestMoleculeFactory.MakeBenzene(); foreach (var atom in benzene.Atoms) { atom.IsAromatic = true; } foreach (var bond in benzene.Bonds) { bond.IsAromatic = true; } StringWriter writer = new StringWriter(); MDLV2000Writer mdlWriter = new MDLV2000Writer(writer); mdlWriter.Write(benzene); mdlWriter.Close(); Assert.IsTrue(writer.ToString().IndexOf("1 2 1 0 0 0 0") != -1); writer = new StringWriter(); mdlWriter = new MDLV2000Writer(writer); var prop = new NameValueCollection { ["WriteAromaticBondTypes"] = "true" }; PropertiesListener listener = new PropertiesListener(prop); mdlWriter.Listeners.Add(listener); mdlWriter.CustomizeJob(); mdlWriter.Write(benzene); mdlWriter.Close(); Assert.IsTrue(writer.ToString().IndexOf("1 2 4 0 0 0 0") != -1); }
public void TestForce2DCoordinates() { StringWriter writer = new StringWriter(); IAtomContainer molecule = builder.NewAtomContainer(); IAtom atom = builder.NewAtom("C"); atom.Point2D = new Vector2(1.0, 2.0); atom.Point3D = new Vector3(3.0, 4.0, 5.0); molecule.Atoms.Add(atom); MDLV2000Writer mdlWriter = new MDLV2000Writer(writer); var prop = new NameValueCollection { ["ForceWriteAs2DCoordinates"] = "true" }; PropertiesListener listener = new PropertiesListener(prop); mdlWriter.Listeners.Add(listener); mdlWriter.CustomizeJob(); mdlWriter.Write(molecule); mdlWriter.Close(); string output = writer.ToString(); // the current behavior is that if both 2D and 3D coordinates // are available, the 3D is outputed, and the 2D not Assert.IsTrue(output.Contains("1.0")); Assert.IsTrue(output.Contains("2.0")); }
public void TestZeroZCoordinates() { var filename = "NCDK.Data.MDL.nozcoord.sdf"; Trace.TraceInformation("Testing: " + filename); var ins = ResourceLoader.GetAsStream(filename); var prop = new NameValueCollection { ["ForceReadAs3DCoordinates"] = "true" }; PropertiesListener listener = new PropertiesListener(prop); EnumerableSDFReader reader = new EnumerableSDFReader(ins, CDK.Builder); reader.Listeners.Add(listener); reader.CustomizeJob(); int molCount = 0; foreach (var obj in reader) { Assert.IsNotNull(obj); Assert.IsTrue(obj is IAtomContainer); molCount++; bool has3d = GeometryUtil.Has3DCoordinates((IAtomContainer)obj); Assert.IsTrue(has3d); } Assert.AreNotSame(0, molCount); reader.Close(); }
public void TestWriteAromatic() { StringWriter stringWriter = new StringWriter(); IAtomContainer benzene = TestMoleculeFactory.MakeBenzene(); AddImplicitHydrogens(benzene); AtomContainerManipulator.PercieveAtomTypesAndConfigureAtoms(benzene); Aromaticity.CDKLegacy.Apply(benzene); SMILESWriter smilesWriter = new SMILESWriter(stringWriter); var prop = new NameValueCollection(); prop["UseAromaticity"] = "true"; PropertiesListener listener = new PropertiesListener(prop); smilesWriter.Listeners.Add(listener); smilesWriter.CustomizeJob(); smilesWriter.Write(benzene); smilesWriter.Close(); Assert.IsFalse(stringWriter.ToString().Contains("C=C")); Assert.IsTrue(stringWriter.ToString().Contains("ccc")); }
static void Main() { { IAtomContainer molecule = null; #region using (var writer = new MDLV2000Writer(new FileStream("output.mol", FileMode.Create))) { writer.Write((IAtomContainer)molecule); } #endregion } { MDLV2000Writer writer = null; #region listener var customSettings = new NameValueCollection { ["ForceWriteAs2DCoordinates"] = "true" }; var listener = new PropertiesListener(customSettings); writer.Listeners.Add(listener); #endregion } }