Пример #1
0
        public void TestInvalidPcoreXML()
        {
            var filename = "NCDK.Data.PCore.invalid1.xml";
            var ins      = ResourceLoader.GetAsStream(filename);

            PharmacophoreUtils.ReadPharmacophoreDefinitions(ins);
        }
Пример #2
0
 void Main()
 {
     #region ReadPharmacophoreDefinitions
     using (var srm = new FileStream("mydefs.xml", FileMode.Open))
     {
         IList <PharmacophoreQuery> defs = PharmacophoreUtils.ReadPharmacophoreDefinitions(srm);
         Console.Out.WriteLine("Number of definitions = " + defs.Count);
         for (int i = 0; i < defs.Count; i++)
         {
             Console.Out.WriteLine($"Desc: {defs[i].GetProperty<string>("description")}");
         }
     }
     #endregion
 }
Пример #3
0
        public void TestPCoreWrite()
        {
            var filename = "NCDK.Data.PCore.pcore.xml";
            var ins      = ResourceLoader.GetAsStream(filename);
            var defs     = PharmacophoreUtils.ReadPharmacophoreDefinitions(ins);

            PharmacophoreQuery[] defarray = defs.ToArray();
            var baos = new MemoryStream();

            PharmacophoreUtils.WritePharmacophoreDefinition(defarray, baos);
            Assert.IsTrue(baos.ToArray().Length > 0);

            string[] lines;
            using (var sr = new StreamReader(new MemoryStream(baos.ToArray()), true))
            {
                var    list = new List <string>();
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    list.Add(line);
                }
                lines = list.ToArray();
            }
            Assert.AreEqual("<?xml version=\"1.0\" encoding=\"utf-8\"?>", lines[0].Trim());

            int ndef   = 0;
            int ndist  = 0;
            int nangle = 0;

            foreach (var line in lines)
            {
                if (line.IndexOf("</pharmacophore>") != -1)
                {
                    ndef++;
                }
                if (line.IndexOf("</distanceConstraint>") != -1)
                {
                    ndist++;
                }
                if (line.IndexOf("</angleConstraint>") != -1)
                {
                    nangle++;
                }
            }
            Assert.AreEqual(2, ndef);
            Assert.AreEqual(5, ndist);
            Assert.AreEqual(0, nangle);
        }
Пример #4
0
        public void TestReadPcoreAngleDef()
        {
            var filename = "NCDK.Data.PCore.pcoreangle.xml";
            var ins      = ResourceLoader.GetAsStream(filename);
            var defs     = PharmacophoreUtils.ReadPharmacophoreDefinitions(ins);

            Assert.AreEqual(1, defs.Count);

            var def1 = defs[0];

            Assert.AreEqual(3, def1.Atoms.Count);
            Assert.AreEqual(2, def1.Bonds.Count);
            Assert.AreEqual("A modified definition for the D1 receptor", def1.GetProperty <string>("description"));

            string[] ids = { "Aromatic", "Hydroxyl", "BasicAmine" };
            foreach (var atom in def1.Atoms)
            {
                string sym   = atom.Symbol;
                bool   found = false;
                foreach (var s in ids)
                {
                    if (sym.Equals(s))
                    {
                        found = true;
                        break;
                    }
                }
                Assert.IsTrue(found, "'" + sym + "' in pcore.xml is invalid");
            }

            foreach (var bond in def1.Bonds)
            {
                IAtom[] a;
                switch (bond)
                {
                case PharmacophoreQueryBond cons:
                    a = GetAtoms(cons);
                    Assert.AreEqual(2, a.Length);
                    break;

                case PharmacophoreQueryAngleBond cons:
                    a = GetAtoms(cons);
                    Assert.AreEqual(3, a.Length);
                    break;
                }
            }
        }
Пример #5
0
        public void TestReadPcoreDef()
        {
            var filename = "NCDK.Data.PCore.pcore.xml";
            var ins      = ResourceLoader.GetAsStream(filename);
            var defs     = PharmacophoreUtils.ReadPharmacophoreDefinitions(ins);

            Assert.AreEqual(2, defs.Count);

            var def1 = defs[0];

            Assert.AreEqual(4, def1.Atoms.Count);
            Assert.AreEqual(2, def1.Bonds.Count);
            Assert.AreEqual("An imaginary pharmacophore definition", def1.GetProperty <string>("description"));
            Assert.AreEqual("Imaginary", def1.Title);

            var def2 = defs[1];

            Assert.AreEqual(3, def2.Atoms.Count);
            Assert.AreEqual(3, def2.Bonds.Count);
            Assert.IsNull(def2.Title);

            string[] ids = { "Aromatic", "Hydroxyl", "BasicAmine" };
            foreach (var atom in def2.Atoms)
            {
                string sym   = atom.Symbol;
                bool   found = false;
                foreach (var s in ids)
                {
                    if (sym.Equals(s))
                    {
                        found = true;
                        break;
                    }
                }
                Assert.IsTrue(found, "'" + sym + "' in pcore.xml is invalid");
            }
        }