@Test public void testGenerate() throws Exception { IAtomContainer m1 = cyclopentylcyclopentane(); IAtomContainer m2 = decahydronaphthalene(); SeedGenerator seeding = new SeedGenerator(BasicAtomEncoder.ATOMIC_NUMBER); Pseudorandom pseudorandom = new Xorshift(); MoleculeHashGenerator basic = new BasicMoleculeHashGenerator(new BasicAtomHashGenerator(seeding, pseudorandom, 8)); MoleculeHashGenerator perturb = new BasicMoleculeHashGenerator( new PerturbedAtomHashGenerator( seeding, new BasicAtomHashGenerator(seeding, pseudorandom, 8), pseudorandom, StereoEncoderFactory.EMPTY, new MinimumEquivalentCyclicSet(), AtomSuppression.unsuppressed())); // basic encoding should say these are the same assertThat(basic.generate(m1), is(basic.generate(m2))); // perturbed encoding should differentiate them assertThat(perturb.generate(m1), is(not(perturb.generate(m2)))); }
@Test public void testCombine() throws Exception { Xorshift prng = new Xorshift(); PerturbedAtomHashGenerator generator = new PerturbedAtomHashGenerator( new SeedGenerator(BasicAtomEncoder.ATOMIC_NUMBER), new BasicAtomHashGenerator(new SeedGenerator(BasicAtomEncoder.ATOMIC_NUMBER), prng, 8), prng, StereoEncoderFactory.EMPTY, new MinimumEquivalentCyclicSet(), AtomSuppression.unsuppressed()); long[][] perturbed = new long[][] { {1, 2, 3, 4}, {1, 1, 1, 1}, {1, 2, 2, 4}, {2, 2, 2, 2}, }; long _0 = 1 ^ 2 ^ 3 ^ 4; long _1 = 1 ^ prng.next(1) ^ prng.next(prng.next(1)) ^ prng.next(prng.next(prng.next(1))); long _2 = 1 ^ 2 ^ prng.next(2) ^ 4; long _3 = 2 ^ prng.next(2) ^ prng.next(prng.next(2)) ^ prng.next(prng.next(prng.next(2))); long[] values = generator.combine(perturbed); Assert.assertArrayEquals(values, new long[] {_0, _1, _2, _3}); }