Smiles to PNG batch conversion

OASA version 0.12.1 and higher
Category file conversion
Run as smi2png.png [filenames]

This simple script takes all files given as arguments and converts them to the corresponding PNG bitmap files. It also generates an overview.html with all the results

To run the script you just need to enter the following on the command line:

python [filenames]

Each smiles file is suposed to contain a single smiles code in the first line. This script has been tested with smiles files generated with OpenBabel.

import sys, os
from oasa.cairo_out import cairo_out
from oasa.smiles import text_to_mol
from oasa.coords_generator import coords_generator
filenames = sys.argv[1:]
all_pngs = []
for smi_filename in filenames:
    if not smi_filename.endswith(".smi"):
        print "Skipping %s. Has not .smi extension." % smi_filename
    f = file(smi_filename)
    text = f.readline().split()[0]
    print text
    mol = text_to_mol(text)
    cg = coords_generator(35)
    cg.calculate_coords(mol, force=1)
    png_filename = smi_filename.replace(".smi", ".png")
    co = cairo_out()
    co.mol_to_cairo(mol, png_filename)
# write some html
f = file("overview.html", "w")
print >> f, """<html><head></head><body><style>
div.figure {
  border: thin silver solid;
  margin: 0.5em;
  padding: 0.5em;
  display: inline-block;
div.figure p {
  text-align: center;
  font-style: italic;
  font-size: smaller;
  text-indent: 0;
for png_filename in all_pngs:
    print >> f, "<div class='figure'><p><img src='%(file)s' /></p><p>%(label)s</p></div>" % {
        'file': png_filename,
        'label': png_filename[2:].split("/")[-2],
print >> f, "</body>"

Personal Tools