public void TestBug2819557() { IAtomContainer butane = MakeButane(); IAtomContainer propylAmine = MakePropylAmine(); Fingerprinter fp = new Fingerprinter(); BitArray b1 = fp.GetBitFingerprint(butane).AsBitSet(); BitArray b2 = fp.GetBitFingerprint(propylAmine).AsBitSet(); Assert.IsFalse(FingerprinterTool.IsSubset(b2, b1), "butane should not be a substructure of propylamine"); }
public void TestIsSubSet_BitSet_BitSet() { Fingerprinter fingerprinter = new Fingerprinter(); IAtomContainer mol = TestMoleculeFactory.MakeIndole(); BitArray bs = fingerprinter.GetBitFingerprint(mol).AsBitSet(); IAtomContainer frag1 = TestMoleculeFactory.MakePyrrole(); BitArray bs1 = fingerprinter.GetBitFingerprint(frag1).AsBitSet(); Assert.IsTrue(FingerprinterTool.IsSubset(bs, bs1)); }
public void TestAtomPermutation2() { IAtomContainer pamine = TestMoleculeFactory.MakeCyclopentane(); Fingerprinter fp = new Fingerprinter(); IBitFingerprint bs1 = fp.GetBitFingerprint(pamine); AtomContainerAtomPermutor acp = new AtomContainerAtomPermutor(pamine); while (acp.MoveNext()) { IAtomContainer container = acp.Current; IBitFingerprint bs2 = fp.GetBitFingerprint(container); Assert.IsTrue(bs1.Equals(bs2)); } }
public void TestAtomPermutation() { var pamine = MakePropylAmine(); var fp = new Fingerprinter(); var bs1 = fp.GetBitFingerprint(pamine); var acp = new AtomContainerAtomPermutor(pamine); while (acp.MoveNext()) { var container = acp.Current; var bs2 = fp.GetBitFingerprint(container); Assert.IsTrue(bs1.Equals(bs2)); } }
public void Main() { { #region IsSubset var mol = TestMoleculeFactory.MakeIndole(); var fingerprinter = new Fingerprinter(); var bs = fingerprinter.GetBitFingerprint(mol); var frag1 = TestMoleculeFactory.MakePyrrole(); var bs1 = fingerprinter.GetBitFingerprint(frag1); if (FingerprinterTool.IsSubset(bs.AsBitSet(), bs1.AsBitSet())) { Console.Out.WriteLine("Pyrrole is subset of Indole."); } #endregion } }
public void TestRegression() { IAtomContainer mol1 = TestMoleculeFactory.MakeIndole(); IAtomContainer mol2 = TestMoleculeFactory.MakePyrrole(); Fingerprinter fingerprinter = new Fingerprinter(1024, 8); IBitFingerprint bs1 = fingerprinter.GetBitFingerprint(mol1); Assert.AreEqual( 33, bs1.Cardinality, "Seems the fingerprint code has changed. This will cause a number of other tests to fail too!"); IBitFingerprint bs2 = fingerprinter.GetBitFingerprint(mol2); Assert.AreEqual( 13, bs2.Cardinality, "Seems the fingerprint code has changed. This will cause a number of other tests to fail too!"); }
public void TestgetBitFingerprint_IAtomContainer() { Fingerprinter fingerprinter = new Fingerprinter(); var mol = TestMoleculeFactory.MakeIndole(); IBitFingerprint bs = fingerprinter.GetBitFingerprint(mol); Assert.IsNotNull(bs); Assert.AreEqual(fingerprinter.Length, bs.Length); }
public void TestBug1851202() { string filename1 = "NCDK.Data.MDL.0002.stg01.rxn"; Trace.TraceInformation("Testing: " + filename1); var ins1 = ResourceLoader.GetAsStream(filename1); MDLRXNV2000Reader reader = new MDLRXNV2000Reader(ins1, ChemObjectReaderMode.Strict); IReaction reaction = (IReaction)reader.Read(builder.NewReaction()); Assert.IsNotNull(reaction); IAtomContainer reactant = reaction.Reactants[0]; IAtomContainer product = reaction.Products[0]; Fingerprinter fingerprinter = new Fingerprinter(64 * 26, 8); Assert.IsNotNull(fingerprinter.GetBitFingerprint(reactant)); Assert.IsNotNull(fingerprinter.GetBitFingerprint(product)); }
public void Main() { { #region var molecule = new AtomContainer(); var fingerprinter = new Fingerprinter(); var fingerprint = fingerprinter.GetBitFingerprint(molecule); Console.WriteLine(fingerprint.Length); // returns 1024 by default #endregion } }
public void TestFingerprinterBitSetSize() { Fingerprinter fingerprinter = new Fingerprinter(1024, 7); Assert.IsNotNull(fingerprinter); var mol = TestMoleculeFactory.MakeIndole(); BitArray bs = fingerprinter.GetBitFingerprint(mol).AsBitSet(); Assert.AreEqual(994, BitArrays.GetLength(bs)); // highest set bit Assert.AreEqual(1024, bs.Count); // actual bit set size }
public void Testbug2917084() { string filename1 = "NCDK.Data.MDL.boronBuckyBall.mol"; Trace.TraceInformation("Testing: " + filename1); var ins1 = ResourceLoader.GetAsStream(filename1); var reader = new MDLV2000Reader(ins1, ChemObjectReaderMode.Strict); var chemFile = reader.Read(builder.NewChemFile()); Assert.IsNotNull(chemFile); var mol = ChemFileManipulator.GetAllAtomContainers(chemFile).First(); Fingerprinter fingerprinter = new Fingerprinter(1024, 8); Assert.IsNotNull(fingerprinter.GetBitFingerprint(mol)); }
/// <summary> /// Generates a fingerprint of the default size for the given /// AtomContainer, using path and ring metrics. It contains the /// informations from <see cref="Fingerprinter.GetBitFingerprint(IAtomContainer)"/> and bits which tell if the structure /// has 0 rings, 1 or less rings, 2 or less rings ... 10 or less rings and /// bits which tell if there is a fused ring system with 1,2...8 or more /// rings in it. The RingSet used is passed via rs parameter. This must be /// a smallesSetOfSmallestRings. The List must be a list of all ring /// systems in the molecule. /// </summary> /// <param name="atomContainer">The AtomContainer for which a Fingerprint is generated</param> /// <param name="ringSet">An SSSR RingSet of ac (if not available, use <see cref="GetBitFingerprint(IAtomContainer)"/>, which does the calculation)</param> /// <param name="rslist">A list of all ring systems in ac</param> /// <exception cref="CDKException">for example if input can not be cloned.</exception> /// <returns>a BitArray representing the fingerprint</returns> public IBitFingerprint GetBitFingerprint(IAtomContainer atomContainer, IRingSet ringSet, IEnumerable <IRingSet> rslist) { var container = (IAtomContainer)atomContainer.Clone(); var fingerprint = fingerprinter.GetBitFingerprint(container); var size = this.Length; var weight = MolecularFormulaManipulator.GetTotalNaturalAbundance(MolecularFormulaManipulator.GetMolecularFormula(container)); for (int i = 1; i < 11; i++) { if (weight > (100 * i)) { fingerprint.Set(size - 26 + i); // 26 := RESERVED_BITS+1 } } if (ringSet == null) { ringSet = Cycles.FindSSSR(container).ToRingSet(); rslist = RingPartitioner.PartitionRings(ringSet); } for (int i = 0; i < 7; i++) { if (ringSet.Count > i) { fingerprint.Set(size - 15 + i); // 15 := RESERVED_BITS+1+10 mass bits } } int maximumringsystemsize = 0; foreach (var rs in rslist) { if (rs.Count > maximumringsystemsize) { maximumringsystemsize = rs.Count; } } for (int i = 0; i < maximumringsystemsize && i < 9; i++) { fingerprint.Set(size - 8 + i - 3); } return(fingerprint); }