#! /usr/bin/python3 -t # _*_ coding: iso-8859-1 _*_ PROG_NAME = __file__[len(__file__)-3] PROG_DESC = "Outputs an SVG 'roadkill' diagram for said molecule" PROG_VERS = "1.0" PROG_COPYRIGHT = "Copyright © 2013-02-19 by the State University of Campinas (UNICAMP)" import sys import os import re import math; from math import sqrt,sin,cos,pi sys.path[1:0] = [ '.', '..', sys.path[0] + '/../lib', os.path.expandvars('${STOLFIHOME}/lib') ] # sys.stderr.write(re.sub('[,]', ',\n', "%s: path = %r\n" % (PROG_NAME, sys.path))); import rn import mformula import mformula_oxocarbon; from mformula_oxocarbon import build_formula_COOH; import mformula_svg import mformula_args; import argparser PROG_HELP = \ PROG_NAME + " \\\n" \ + argparser.help_info_HELP + " \\\n" \ " > {FIGURE}.svg" PROG_INFO = \ "NAME\n" \ " " + PROG_NAME + " - " + PROG_DESC + ".\n" \ "\n" \ "DESCRIPTION\n" \ " " + PROG_HELP + ".\n" \ "\n" \ "DOCUMENTATION OPTIONS\n" \ + argparser.help_info_INFO + "\n" \ "\n" \ "AUTHOR\n" \ " Created 2010-02-19 by Jorge Stolfi, IC-UNICAMP.\n" \ "\n" \ "MODIFICATION HISTORY\n" \ " 2010-02-19 by J. Stolfi, IC-UNICAMP: created.\n" \ "\n" \ "WARRANTY\n" \ " " + argparser.help_info_NO_WARRANTY + "\n" \ "\n" \ "RIGHTS\n" \ " " + PROG_COPYRIGHT + ".\n" \ "\n" \ " " + argparser.help_info_STANDARD_RIGHTS style = mformula_args.parse(None); def build_formula() : fm = mformula.obj(style); a90 = 90*pi/180; a60 = 60*pi/180; c60 = cos(a60); s60 = sin(a60); a120 = 120*pi/180; c120 = cos(a120); s120 = sin(a120); ob = fm.bond_length(1.0); # Relative length of C-H bond. p0 = [0,0]; k0 = fm.add_atom("C", [0,0], 1,1); p1 = rn.add(p0, rn.scale(ob, [00, +1])); p3 = rn.add(p0, rn.scale(ob, [+s120, +c120])); p4 = rn.add(p0, rn.scale(ob, [-s120, +c120])); k1 = fm.add_atom("H", p1, 0,0); k3 = fm.add_atom("H", p3, 0,0); k4 = fm.add_atom("H", p4, 0,0); if (style == 'S') : # Add the "+" symbols next to the carbon: p0q = rn.add(p0, rn.scale(0.65*ob, [00, -1])); k0q = fm.add_atom("+", p0q, +1,1); fm.add_bond(k0,k1,1.0); fm.add_bond(k0,k3,1.0); fm.add_bond(k0,k4,1.0); fm.add_free_bond(k0,a90+a60,2); # fm.add_free_bond(k0,a90-a60,1); return fm; fm = build_formula(); svg = mformula_svg.obj(fm,0); svg.standard_elem_style_1(); svg.output_figure();