Skip to content

Commit e92bec0

Browse files
jonwzhengJacksonBurns
authored andcommitted
add ion test cases to drawTest
Accompanies changes to `draw.py` to use `rdkit` backend, which traditionally was not well-supported for ions (but now might be a better option than the default drawing algorithm).
1 parent 9a2fa83 commit e92bec0

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

test/rmgpy/molecule/drawTest.py

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,3 +315,84 @@ def test_draw_bidentate_with_charge_separation(self):
315315
from cairo import PDFSurface
316316
surface, _cr, (_xoff, _yoff, _width, _height) = self.drawer.draw(molecule, file_format="pdf")
317317
assert isinstance(surface, PDFSurface)
318+
319+
def test_draw_cation(self):
320+
try:
321+
from cairocffi import PDFSurface
322+
except ImportError:
323+
from cairo import PDFSurface
324+
path = "test_molecule.pdf"
325+
if os.path.exists(path):
326+
os.unlink(path)
327+
polycycle = Molecule(smiles="C1=NC2=C(N1)C(=O)[NH2+]C(=N2)N")
328+
surface, _cr, (_xoff, _yoff, width, height) = self.drawer.draw(polycycle, file_format="pdf", target=path)
329+
assert isinstance(surface, PDFSurface)
330+
assert width > height
331+
os.unlink(path)
332+
333+
def test_draw_anion(self):
334+
try:
335+
from cairocffi import PDFSurface
336+
except ImportError:
337+
from cairo import PDFSurface
338+
path = "test_molecule.pdf"
339+
if os.path.exists(path):
340+
os.unlink(path)
341+
polycycle = Molecule(smiles="c1ccc2c3ccccc3[CH-]c2c1")
342+
surface, _cr, (_xoff, _yoff, width, height) = self.drawer.draw(polycycle, file_format="pdf", target=path)
343+
assert isinstance(surface, PDFSurface)
344+
assert width > height
345+
os.unlink(path)
346+
347+
def test_draw_zwitterion(self):
348+
try:
349+
from cairocffi import PDFSurface
350+
except ImportError:
351+
from cairo import PDFSurface
352+
path = "test_molecule.pdf"
353+
if os.path.exists(path):
354+
os.unlink(path)
355+
polycycle = Molecule(smiles="[NH3+]CC(=O)[O-]")
356+
surface, _cr, (_xoff, _yoff, width, height) = self.drawer.draw(polycycle, file_format="pdf", target=path)
357+
assert isinstance(surface, PDFSurface)
358+
assert width > height
359+
os.unlink(path)
360+
361+
def test_draw_cation_on_surface(self):
362+
molecule = Molecule().from_adjacency_list(
363+
"""
364+
1 X u0 p0 c0 {3,S}
365+
2 X u0 p0 c0 {3,S}
366+
3 O u0 p1 c+1 {1,S} {2,S} {4,S}
367+
4 H u0 p0 c0 {3,S}
368+
"""
369+
)
370+
try:
371+
from cairocffi import PDFSurface
372+
except ImportError:
373+
from cairo import PDFSurface
374+
path = "test_molecule.pdf"
375+
if os.path.exists(path):
376+
os.unlink(path)
377+
surface, _cr, (_xoff, _yoff, _width, _height) = self.drawer.draw(molecule, file_format="pdf", target=path)
378+
assert isinstance(surface, PDFSurface)
379+
os.unlink(path)
380+
381+
382+
def test_draw_anion_on_surface(self):
383+
molecule = Molecule().from_adjacency_list(
384+
"""
385+
1 X u0 p0 c0 {2,S}
386+
2 O u0 p3 c-1 {1,S}
387+
"""
388+
)
389+
try:
390+
from cairocffi import PDFSurface
391+
except ImportError:
392+
from cairo import PDFSurface
393+
path = "test_molecule.pdf"
394+
if os.path.exists(path):
395+
os.unlink(path)
396+
surface, _cr, (_xoff, _yoff, _width, _height) = self.drawer.draw(molecule, file_format="pdf", target=path)
397+
assert isinstance(surface, PDFSurface)
398+
os.unlink(path)

0 commit comments

Comments
 (0)