/** * Create a new empty atom container instance. * @return a new atom container instance */ private IAtomContainer emptyContainer() { return builder.newAtomContainer(); }
private static IAtomContainer newAtomContainer() { return DefaultChemObjectBuilder.getInstance().newAtomContainer(); }
private void parse(String smarts, int flav) throws Exception { IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance(); if (!Smarts.parse(builder.newAtomContainer(), smarts, flav)) throw new Exception(Smarts.getLastErrorMesg()); }
@Test public void z_bute_2_ene() throws Exception { InChIToStructure parser = new InChIToStructure("InChI=1/C4H8/c1-3-4-2/h3-4H,1-2H3/b4-3-", DefaultChemObjectBuilder.getInstance()); parser.generateAtomContainerFromInchi(SilentChemObjectBuilder.getInstance()); IAtomContainer container = parser.getAtomContainer(); Iterator<IStereoElement> ses = container.stereoElements().iterator(); Assert.assertThat(container, is(instanceOf(SilentChemObjectBuilder.getInstance().newAtomContainer().getClass()))); assertTrue(ses.hasNext()); IStereoElement se = ses.next(); assertThat(se, is(instanceOf(IDoubleBondStereochemistry.class))); assertThat(((IDoubleBondStereochemistry) se).getStereo(), is(IDoubleBondStereochemistry.Conformation.TOGETHER)); }
@Test public void e_bute_2_ene() throws Exception { InChIToStructure parser = new InChIToStructure("InChI=1/C4H8/c1-3-4-2/h3-4H,1-2H3/b4-3+", DefaultChemObjectBuilder.getInstance()); parser.generateAtomContainerFromInchi(SilentChemObjectBuilder.getInstance()); IAtomContainer container = parser.getAtomContainer(); Iterator<IStereoElement> ses = container.stereoElements().iterator(); Assert.assertThat(container, is(instanceOf(SilentChemObjectBuilder.getInstance().newAtomContainer().getClass()))); assertTrue(ses.hasNext()); IStereoElement se = ses.next(); assertThat(se, is(instanceOf(IDoubleBondStereochemistry.class))); assertThat(((IDoubleBondStereochemistry) se).getStereo(), is(IDoubleBondStereochemistry.Conformation.OPPOSITE)); }
@Test public void errorHandling() { IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance(); if (!Smarts.parse(builder.newAtomContainer(), "CCCJCCC")) { assertThat(Smarts.getLastErrorMesg(), CoreMatchers.is("Unexpected character")); assertThat(Smarts.getLastErrorLocation(), CoreMatchers.is("CCCJCCC\n ^\n")); } }
@Test public void testGetAtomContainer_IChemObjectBuilder() throws CDKException { InChIToStructure parser = new InChIToStructure("InChI=1S/CH5/h1H4", DefaultChemObjectBuilder.getInstance()); parser.generateAtomContainerFromInchi(SilentChemObjectBuilder.getInstance()); IAtomContainer container = parser.getAtomContainer(); // test if the created IAtomContainer is done with the Silent module... // OK, this is not typical use, but maybe the above generate method should be private Assert.assertThat(container, is(instanceOf(SilentChemObjectBuilder.getInstance().newAtomContainer().getClass()))); }
@Test public void writeCarbon13AtomProps() throws Exception { IAtomContainer mol = builder.newAtomContainer(); IAtom atom = builder.newAtom(); atom.setSymbol("C"); atom.setMassNumber(13); mol.addAtom(atom); StringWriter sw = new StringWriter(); try (MDLV2000Writer mdlw = new MDLV2000Writer(sw)) { mdlw.write(mol); } assertThat(sw.toString(), containsString("C 1")); }
@Test public void atomicOxygen() throws CDKException { InChIToStructure parser = new InChIToStructure("InChI=1S/O", DefaultChemObjectBuilder.getInstance()); parser.generateAtomContainerFromInchi(SilentChemObjectBuilder.getInstance()); IAtomContainer container = parser.getAtomContainer(); Assert.assertThat(container, is(instanceOf(SilentChemObjectBuilder.getInstance().newAtomContainer().getClass()))); Assert.assertThat(container.getAtom(0).getImplicitHydrogenCount(), is(notNullValue())); Assert.assertThat(container.getAtom(0).getImplicitHydrogenCount(), is(0)); }
@Test public void writeCarbon12() throws Exception { IAtomContainer mol = builder.newAtomContainer(); IAtom atom = builder.newAtom(); atom.setSymbol("C"); atom.setMassNumber(12); mol.addAtom(atom); StringWriter sw = new StringWriter(); try (MDLV2000Writer mdlw = new MDLV2000Writer(sw)) { mdlw.write(mol); } assertThat(sw.toString(), containsString("M ISO 1 1 12")); }
@Test public void writeChargeAtomProps() throws Exception { IAtomContainer mol = builder.newAtomContainer(); IAtom atom = builder.newAtom(); atom.setSymbol("C"); atom.setFormalCharge(+1); mol.addAtom(atom); StringWriter sw = new StringWriter(); try (MDLV2000Writer mdlw = new MDLV2000Writer(sw)) { mdlw.write(mol); } assertThat(sw.toString(), containsString("C 0 3")); }
@Test public void heavyOxygenWater() throws CDKException { InChIToStructure parser = new InChIToStructure("InChI=1S/H2O/h1H2/i1+2", DefaultChemObjectBuilder.getInstance()); parser.generateAtomContainerFromInchi(SilentChemObjectBuilder.getInstance()); IAtomContainer container = parser.getAtomContainer(); Assert.assertThat(container.getAtom(0).getImplicitHydrogenCount(), is(notNullValue())); Assert.assertThat(container, is(instanceOf(SilentChemObjectBuilder.getInstance().newAtomContainer().getClass()))); Assert.assertThat(container.getAtom(0).getImplicitHydrogenCount(), is(notNullValue())); Assert.assertThat(container.getAtom(0).getImplicitHydrogenCount(), is(2)); Assert.assertThat(container.getAtom(0).getMassNumber(), is(18)); }
@Test public void ignoreCarbon12() throws Exception { IAtomContainer mol = builder.newAtomContainer(); IAtom atom = builder.newAtom(); atom.setSymbol("C"); atom.setMassNumber(12); mol.addAtom(atom); StringWriter sw = new StringWriter(); try (MDLV2000Writer mdlw = new MDLV2000Writer(sw)) { mdlw.getSetting(MDLV2000Writer.OptWriteMajorIsotopes) .setSetting("false"); mdlw.write(mol); } assertThat(sw.toString(), not(containsString("M ISO 1 1 12"))); }
@Test public void writeDimensionField() throws Exception { IAtomContainer mol = builder.newAtomContainer(); IAtom atom = builder.newAtom(); atom.setSymbol("C"); atom.setImplicitHydrogenCount(4); atom.setPoint2d(new Point2d(0.5, 0.5)); mol.addAtom(atom); StringWriter sw = new StringWriter(); try (MDLV2000Writer mdlw = new MDLV2000Writer(sw)) { mdlw.write(mol); } assertThat(sw.toString(), containsString("2D")); }
@Test public void writeDimensionField3D() throws Exception { IAtomContainer mol = builder.newAtomContainer(); IAtom atom = builder.newAtom(); atom.setSymbol("C"); atom.setImplicitHydrogenCount(4); atom.setPoint3d(new Point3d(0.5, 0.5, 0.1)); mol.addAtom(atom); StringWriter sw = new StringWriter(); try (MDLV2000Writer mdlw = new MDLV2000Writer(sw)) { mdlw.write(mol); } assertThat(sw.toString(), containsString("3D")); }
@Test public void writeMoreThan8Radicals() throws Exception { IAtomContainer mol = builder.newAtomContainer(); for (int i = 0; i < 20; i++) { IAtom atom = builder.newAtom(); atom.setSymbol("C"); mol.addAtom(atom); mol.addSingleElectron(builder.newInstance(ISingleElectron.class, atom)); } StringWriter sw = new StringWriter(); try (MDLV2000Writer mdlw = new MDLV2000Writer(sw)) { mdlw.write(mol); } assertThat(sw.toString(), containsString("M RAD 8 9 2 10 2 11 2 12 2 13 2 14 2 15 2 16 2")); }
@Test public void writeDimensionField() throws Exception { IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance(); IAtomContainer mol = builder.newAtomContainer(); IAtom atom = builder.newAtom(); atom.setSymbol("C"); atom.setImplicitHydrogenCount(4); atom.setPoint2d(new Point2d(0.5, 0.5)); mol.addAtom(atom); StringWriter sw = new StringWriter(); try (MDLV3000Writer mdlw = new MDLV3000Writer(sw)) { mdlw.write(mol); } assertThat(sw.toString(), containsString("2D")); }
@Test public void writeDimensionField3D() throws Exception { IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance(); IAtomContainer mol = builder.newAtomContainer(); IAtom atom = builder.newAtom(); atom.setSymbol("C"); atom.setImplicitHydrogenCount(4); atom.setPoint3d(new Point3d(0.5, 0.5, 0.1)); mol.addAtom(atom); StringWriter sw = new StringWriter(); try (MDLV3000Writer mdlw = new MDLV3000Writer(sw)) { mdlw.write(mol); } assertThat(sw.toString(), containsString("3D")); }
@Test public void testAtomContainerHandling() throws Exception { IAtomContainer water1 = someoneBringMeSomeWater(DefaultChemObjectBuilder.getInstance()); // creates an AtomContainer with the atoms / bonds from water1 IAtomContainer water2 = SilentChemObjectBuilder.getInstance().newAtomContainer(); water2.add(water1); IDescriptorResult v1 = descriptor.calculate(water1).getValue(); IDescriptorResult v2 = descriptor.calculate(water2).getValue(); String errorMessage = "(" + descriptor.getClass().toString() + ") The descriptor does not give the same results depending on " + "it being passed an IAtomContainer or an IAtomContainer."; assertEqualOutput(v1, v2, errorMessage); }
public static IAtomContainer makeBenzene() { IAtomContainer mol = DefaultChemObjectBuilder.getInstance().newAtomContainer(); mol.addAtom(new Atom("C")); // 0 mol.addAtom(new Atom("C")); // 1 mol.addAtom(new Atom("C")); // 2 mol.addAtom(new Atom("C")); // 3 mol.addAtom(new Atom("C")); // 4 mol.addAtom(new Atom("C")); // 5 mol.addBond(0, 1, IBond.Order.SINGLE); // 1 mol.addBond(1, 2, IBond.Order.DOUBLE); // 2 mol.addBond(2, 3, IBond.Order.SINGLE); // 3 mol.addBond(3, 4, IBond.Order.DOUBLE); // 4 mol.addBond(4, 5, IBond.Order.SINGLE); // 5 mol.addBond(5, 0, IBond.Order.DOUBLE); // 6 return mol; }