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); } }
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); }