Example #1
0
 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()));
 }
Example #2
0
        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);
        }
Example #3
0
        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();
        }
Example #5
0
        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
     }
 }