static IAtomContainer sma(String smarts) { IQueryAtomContainer query = new QueryAtomContainer(null); Smarts.parse(query, smarts); return query; } }
public Object visit(ASTRecursiveSmartsExpression node, Object data) { SmartsQueryVisitor recursiveVisitor = new SmartsQueryVisitor(builder); recursiveVisitor.query = new QueryAtomContainer(builder); recursiveVisitor.ringAtoms = new RingIdentifierAtom[10]; return new RecursiveSmartsAtom((IQueryAtomContainer) node.jjtGetChild(0).jjtAccept(recursiveVisitor, null)); }
@Test public void testRecursive() { assertTrue(Smarts.parse(new QueryAtomContainer(null), "[$(*OC)]")); assertFalse(Smarts.parse(new QueryAtomContainer(null), "[$*OC)]")); assertFalse(Smarts.parse(new QueryAtomContainer(null), "[$(*OC]")); assertTrue(Smarts.parse(new QueryAtomContainer(null), "[$((*[O-].[Na+]))]")); assertFalse(Smarts.parse(new QueryAtomContainer(null), "[$([J])]")); }
@Test public void bondInRing() { QueryAtomContainer mol = new QueryAtomContainer(null); assertTrue(Smarts.parse(mol, "C@C")); assertThat(Smarts.generate(mol), is("C@C")); }
@Test public void reaction() { QueryAtomContainer mol = new QueryAtomContainer(null); assertTrue(Smarts.parse(mol, "c1ccccc1[NH2]>>c1ccccc1N(~O)~O")); assertThat(Smarts.generate(mol), is("c1c(cccc1)[NH2]>>c1c(cccc1)N(~O)~O")); }
@Test public void reactionWithMaps() { QueryAtomContainer mol = new QueryAtomContainer(null); assertTrue(Smarts.parse(mol, "c1cccc[c:1]1[NH2:2]>>c1cccc[c:1]1[N:2](~O)~O")); assertThat(Smarts.generate(mol), is("c1[c:1](cccc1)[NH2:2]>>c1[c:1](cccc1)[N:2](~O)~O")); }
@Test public void compGroupingOnAgent() { QueryAtomContainer mol = new QueryAtomContainer(null); assertTrue(Smarts.parse(mol, ">(c1ccccc1[O-].[Na+])>")); assertThat(Smarts.generate(mol), is(">(c1c(cccc1)[O-].[Na+])>")); }
@Test public void bondStereoCisTrans() { QueryAtomContainer mol = new QueryAtomContainer(null); assertTrue(Smarts.parse(mol, "C/C=C/,\\C")); assertThat(Smarts.generate(mol), is("C/C=C/,\\C")); }
@Test public void bondStereoUnspec() { QueryAtomContainer mol = new QueryAtomContainer(null); assertTrue(Smarts.parse(mol, "C/C=C/?\\?C")); assertThat(Smarts.generate(mol), is("C/C=C!/!\\C")); }
@Test public void bondInChain() { QueryAtomContainer mol = new QueryAtomContainer(null); assertTrue(Smarts.parse(mol, "C!@C")); assertThat(Smarts.generate(mol), is("C!@C")); }
@Test public void indoleRoundTrip() { QueryAtomContainer mol = new QueryAtomContainer(null); assertTrue(Smarts.parse(mol, "n1ccc2c1cccc2")); // CDK choice of data structures lose local arrangement but // output is still indole assertThat(Smarts.generate(mol), is("n1c2c(cc1)cccc2")); }
@Test public void bondTrue() { QueryAtomContainer mol = new QueryAtomContainer(null); assertTrue(Smarts.parse(mol, "C~C~N(~O)~O")); assertThat(Smarts.generate(mol), is("C~C~N(~O)~O")); }
@Test public void ringClosureExprs() { QueryAtomContainer mol = new QueryAtomContainer(null); assertTrue(Smarts.parse(mol, "C1CCCC-,=1")); assertThat(Smarts.generate(mol), is("C1-,=CCCC1")); }
@Test public void bondStereoCisThenTrans() { QueryAtomContainer mol = new QueryAtomContainer(null); assertTrue(Smarts.parse(mol, "C/C=C\\C=C\\C")); assertThat(Smarts.generate(mol), is("C/C=C\\C=C\\C")); }
@Test public void notTripleBond() { QueryAtomContainer mol = new QueryAtomContainer(null); assertTrue(Smarts.parse(mol, "C!#C")); assertThat(Smarts.generate(mol), is("C!#C")); }
IAtomContainer sma(String sma) throws Exception { IAtomContainer query = new QueryAtomContainer(SilentChemObjectBuilder.getInstance()); if (!Smarts.parse(query, sma)) { throw new IOException(Smarts.getLastErrorMesg()); } query.setTitle(sma); return query; } }
@Test public void hybridisationNumberDaylight() { assertFalse(Smarts.parse(new QueryAtomContainer(null), "[^2]", Smarts.FLAVOR_DAYLIGHT)); }
@Test public void atomStereoReordered2() { QueryAtomContainer mol = new QueryAtomContainer(null); assertTrue(Smarts.parse(mol, "C[C@H](O)CC")); IAtom[] atoms = AtomContainerManipulator.getAtomArray(mol); swap(atoms, 0, 1); mol.setAtoms(atoms); assertThat(Smarts.generate(mol), is("[C@@H1](C)(O)CC")); }
@Test public void bondStereoCisThenTransUnspecWithNbr() { QueryAtomContainer mol = new QueryAtomContainer(null); assertTrue(Smarts.parse(mol, "C/C=C(C)\\C=C\\?O")); assertThat(Smarts.generate(mol), is("C/C=C(C)\\C=C\\?O")); IAtom[] atoms = AtomContainerManipulator.getAtomArray(mol); swap(atoms, 0, atoms.length-1); mol.setAtoms(atoms); assertThat(Smarts.generate(mol), is("O/?C=C/C(=C\\C)C")); }
@Test public void atomMaps() { IAtomContainer mol = new QueryAtomContainer(null); assertFalse(Smarts.parse(mol, "[:10]")); assertTrue(Smarts.parse(mol, "[*:10]")); assertThat(mol.getAtom(0).getProperty(CDKConstants.ATOM_ATOM_MAPPING, Integer.class), is(10)); }