コード例 #1
0
        public void TestItself()
        {
            var smiles = "C1CCCCCCC1CC";
            var query  = QueryAtomContainerCreator.CreateAnyAtomContainer(CDK.SmilesParser.ParseSmiles(smiles), true);
            var ac     = CDK.SmilesParser.ParseSmiles(smiles);

            if (standAlone)
            {
                Console.Out.WriteLine("AtomCount of query: " + query.Atoms.Count);
                Console.Out.WriteLine("AtomCount of target: " + ac.Atoms.Count);
            }

            bool matched = uiTester.IsSubgraph(ac, query);

            if (standAlone)
            {
                Console.Out.WriteLine("QueryAtomContainer matched: " + matched);
            }
            if (!standAlone)
            {
                Assert.IsTrue(matched);
            }
        }
コード例 #2
0
ファイル: TemplateExtractor.cs プロジェクト: roddickchen/NCDK
        public static IReadOnlyList <IBitFingerprint> MakeFingerprintsFromSdf(bool anyAtom, bool anyAtomAnyBond, Dictionary <string, int> timings, TextReader fin, int limit)
        {
            var fingerPrinter = new HybridizationFingerprinter(HybridizationFingerprinter.DefaultSize, HybridizationFingerprinter.DefaultSearchDepth);

            fingerPrinter.SetHashPseudoAtoms(true);
            IAtomContainer query = null;
            var            data  = new List <IBitFingerprint>();

            try
            {
                Trace.TraceInformation("Read data file in ...");
                using (var imdl = new EnumerableSDFReader(fin, builder))
                {
                    Trace.TraceInformation("ready");

                    int moleculeCounter    = 0;
                    int fingerprintCounter = 0;
                    Trace.TraceInformation($"Generated Fingerprints: {fingerprintCounter}    ");
                    foreach (var m in imdl)
                    {
                        if (!(moleculeCounter < limit || limit == -1))
                        {
                            break;
                        }
                        moleculeCounter++;
                        if (anyAtom && !anyAtomAnyBond)
                        {
                            query = QueryAtomContainerCreator.CreateAnyAtomContainer(m, false);
                        }
                        else
                        {
                            query = AtomContainerManipulator.Anonymise(m);
                        }
                        try
                        {
                            var time = -DateTime.Now.Ticks / 10000;
                            if (anyAtom || anyAtomAnyBond)
                            {
                                data.Add(fingerPrinter.GetBitFingerprint(query));
                                fingerprintCounter = fingerprintCounter + 1;
                            }
                            else
                            {
                                data.Add(fingerPrinter.GetBitFingerprint(query));
                                fingerprintCounter = fingerprintCounter + 1;
                            }
                            time += (DateTime.Now.Ticks / 10000);
                            // store the time
                            var bin = ((int)Math.Floor(time / 10.0)).ToString(NumberFormatInfo.InvariantInfo);
                            if (timings.ContainsKey(bin))
                            {
                                timings[bin] = (timings[bin]) + 1;
                            }
                            else
                            {
                                timings[bin] = 1;
                            }
                        }
                        catch (Exception exc1)
                        {
                            Trace.TraceInformation($"QueryFingerprintError: from molecule:{moleculeCounter} due to:{exc1.Message}");

                            // OK, just adds a fingerprint with all ones, so that any
                            // structure will match this template, and leave it up
                            // to substructure match to figure things out
                            var allOnesFingerprint = new BitSetFingerprint(fingerPrinter.Length);
                            for (int i = 0; i < fingerPrinter.Length; i++)
                            {
                                allOnesFingerprint.Set(i);
                            }
                            data.Add(allOnesFingerprint);
                            fingerprintCounter = fingerprintCounter + 1;
                        }

                        if (fingerprintCounter % 2 == 0)
                        {
                            Trace.TraceInformation("\b" + "/");
                        }
                        else
                        {
                            Trace.TraceInformation("\b" + "\\");
                        }

                        if (fingerprintCounter % 100 == 0)
                        {
                            Trace.TraceInformation("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"
                                                   + "Generated Fingerprints: " + fingerprintCounter + "   \n");
                        }
                    }// while
                    Trace.TraceInformation($"...ready with:{moleculeCounter} molecules\nWrite data...of data vector:{data.Count} fingerprintCounter:{fingerprintCounter}");
                }
            }
            catch (Exception exc)
            {
                Console.Out.WriteLine("Could not read Molecules from file" + " due to: " + exc.Message);
            }
            return(data);
        }