@Test public void NH4OH() throws Exception { SmilesParser smipar = new SmilesParser(SilentChemObjectBuilder.getInstance()); IAtomContainer mol = smipar.parseSmiles("[NH4+].[OH-]"); layout(mol); assertThat(mol.getAtom(1).getPoint2d().x - mol.getAtom(0).getPoint2d().x, is(greaterThan(SDG.getBondLength()))); }
double delta = chlorine.getPoint2d().distance(platinum.getPoint2d()) - 1.5*SDG.getBondLength(); if (Math.abs(delta) < 0.01) ptFound++; int kFound = 0; for (IAtom oxygen : oxygens) { double delta = oxygen.getPoint2d().distance(potassium.getPoint2d()) - 1.5*SDG.getBondLength(); if (Math.abs(delta) < 0.01) kFound++; int clFound = 0; for (IAtom chlorine : chlorines) { double delta = chlorine.getPoint2d().distance(aluminium.getPoint2d()) - 1.5*SDG.getBondLength(); if (Math.abs(delta) < 0.01) clFound++;
/** * These molecules are laid out 'H2N=NH2.H2N=NH2', ensure we give them more space than * usual (bond length) */ @Test public void dihydroazine() throws Exception { SmilesParser smipar = new SmilesParser(SilentChemObjectBuilder.getInstance()); IAtomContainer mol = smipar.parseSmiles("N=N.N=N"); layout(mol); assertThat(mol.getAtom(2).getPoint2d().x - mol.getAtom(1).getPoint2d().x, is(greaterThan(SDG.getBondLength()))); }
@Test public void chembl12276() throws Exception { SmilesParser sp = new SmilesParser(SilentChemObjectBuilder.getInstance()); IAtomContainer mol = sp.parseSmiles("[Cl-].C(C1=CC=CC2=C(C=CC=C12)[N+](=O)[O-])[N+](C)(CCCl)CCCl"); layout(mol); for (IAtom atom : mol.atoms()) assertNotNull(atom.getPoint2d()); assertThat(mol.getAtom(0).getAtomicNumber(), is(17)); assertThat(mol.getAtom(15).getAtomicNumber(), is(7)); assertThat(mol.getAtom(0).getPoint2d().distance(mol.getAtom(15).getPoint2d()), closeTo(1.5*SDG.getBondLength(), 0.001)); }
@Test public void ionicBondsInAlCl3() throws Exception { SmilesParser sp = new SmilesParser(SilentChemObjectBuilder.getInstance()); IAtomContainer mol = sp.parseSmiles("[Al+3].[Cl-].[Cl-].[Cl-]"); layout(mol); for (IAtom atom : mol.atoms()) assertNotNull(atom.getPoint2d()); assertThat(mol.getAtom(0).getPoint2d().distance(mol.getAtom(1).getPoint2d()), closeTo(1.5*SDG.getBondLength(), 0.001)); assertThat(mol.getAtom(0).getPoint2d().distance(mol.getAtom(2).getPoint2d()), closeTo(1.5*SDG.getBondLength(), 0.001)); assertThat(mol.getAtom(0).getPoint2d().distance(mol.getAtom(3).getPoint2d()), closeTo(1.5*SDG.getBondLength(), 0.001)); }
@Test public void ionicBondsInK2CO3() throws Exception { SmilesParser sp = new SmilesParser(SilentChemObjectBuilder.getInstance()); IAtomContainer mol = sp.parseSmiles("[K+].[O-]C(=O)[O-].[K+]"); layout(mol); for (IAtom atom : mol.atoms()) assertNotNull(atom.getPoint2d()); assertThat(mol.getAtom(0).getPoint2d().distance(mol.getAtom(1).getPoint2d()), closeTo(1.5*SDG.getBondLength(), 0.001)); assertThat(mol.getAtom(4).getPoint2d().distance(mol.getAtom(5).getPoint2d()), closeTo(1.5*SDG.getBondLength(), 0.001)); }
@Test public void ionicBondsInLiAlH4() throws Exception { SmilesParser sp = new SmilesParser(SilentChemObjectBuilder.getInstance()); IAtomContainer mol = sp.parseSmiles("[Li+].[Al+3].[Cl-].[Cl-].[Cl-].[Cl-]"); layout(mol); for (IAtom atom : mol.atoms()) assertNotNull(atom.getPoint2d()); for (int i = 2; i < 5; i++) { double distLi = mol.getAtom(0).getPoint2d().distance(mol.getAtom(i).getPoint2d()); double distAl = mol.getAtom(1).getPoint2d().distance(mol.getAtom(i).getPoint2d()); double diffLi = distLi - 1.5*SDG.getBondLength(); double diffAl = distAl - 1.5*SDG.getBondLength(); if (Math.abs(diffLi) > 0.001 && Math.abs(diffAl) > 0.001) fail("Chlorine must be bond length from Al or Li atoms"); } }
@Test public void calciumOxide() throws Exception { SmilesParser sp = new SmilesParser(SilentChemObjectBuilder.getInstance()); IAtomContainer mol = sp.parseSmiles("[Ca+2].[O-2]"); layout(mol); for (IAtom atom : mol.atoms()) assertNotNull(atom.getPoint2d()); assertThat(mol.getAtom(0).getPoint2d().distance(mol.getAtom(1).getPoint2d()), closeTo(1.5*SDG.getBondLength(), 0.001)); }
@Test public void ionicBondsInSodiumBenzoate() throws Exception { SmilesParser sp = new SmilesParser(SilentChemObjectBuilder.getInstance()); IAtomContainer mol = sp.parseSmiles("[Na+].[O-]C(=O)c1ccccc1"); layout(mol); for (IAtom atom : mol.atoms()) assertNotNull(atom.getPoint2d()); assertThat(mol.getAtom(0).getPoint2d().distance(mol.getAtom(1).getPoint2d()), closeTo(1.5*SDG.getBondLength(), 0.001)); }