#! /usr/bin/python -t # _*_ coding: iso-8859-1 _*_ # Last edited on 2013-02-20 12:40:59 by stolfilocal PROG_NAME = __file__[len(__file__)-3] PROG_DESC = "Outputs a test of SVG 'roadkill' diagram" PROG_VERS = "1.0" PROG_COPYRIGHT = "Copyright © 2009-07-18 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; from mformula import MFormula import mformula_oxocarbon; import mformula_svg; from mformula_svg 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 2009-07-18 by Jorge Stolfi, IC-UNICAMP.\n" \ "\n" \ "MODIFICATION HISTORY\n" \ " 2009-07-18 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(style); b100 = fm.bond_length(1.00); b125 = fm.bond_length(1.25); b150 = fm.bond_length(1.50); b175 = fm.bond_length(1.75); b200 = fm.bond_length(2.00); b300 = fm.bond_length(3.00); a30 = 30*pi/180; c30 = cos(a30); s30 = sin(a30); p0 = [0,0]; k0 = fm.add_atom("C", p0, 0,1); p1 = rn.add(p0, [b100,0]); k1 = fm.add_atom("O", p1, -1,1); fm.add_bond(k0,k1,1.00); p2 = rn.add(p1, [b200,0]); k2 = fm.add_atom("N", p2, +1,1); fm.add_bond(k1,k2,2.00); p3 = rn.add(p0, [0,b300]); k3 = fm.add_atom("S", p3, +1,2); fm.add_bond(k0,k3,3.00); p4 = rn.add(p0, [0,-b150]); k4 = fm.add_atom("H", p4, +2,5); fm.add_bond(k0,k4,1.50); p5 = rn.add(p2, rn.scale(b125, [+c30,-s30])); k5 = fm.add_atom("C", p5, 0,1); fm.add_bond(k2,k5,1.25); p6 = rn.add(p2, rn.scale(b175, [+c30,+s30])); k6 = fm.add_atom("P", p6, +1,1); fm.add_bond(k2,k6,1.75); p7 = rn.add(p2, rn.scale(b100, [-s30,-c30])); k7 = fm.add_atom("H", p7, 0,1); fm.add_bond(k2,k7,1.00); p8 = rn.add(p3, [0,b100]); k8 = fm.add_atom("C", p8, 0,1); fm.add_bond(k3,k8,1.00); p9 = rn.add(p8, [+b100,0]); fCOOH_0 = mformula_oxocarbon.build_formula_COOH(style, 90,45, 0); k9 = fm.add_subformula(fCOOH_0, 0, 0, p9); fm.add_bond(k8,k9,1.00); pa = rn.add(p8, [-b100,0]); fCOOH_1 = mformula_oxocarbon.build_formula_COOH(style, 90,0, 1); ka = fm.add_subformula(fCOOH_1, 1, 0, pa); fm.add_bond(k8,ka,1.00); pb = rn.add(p8, [0,+b100]); fCOO = mformula_oxocarbon.build_formula_COO_1neg(style, 70); kb = fm.add_subformula(fCOO, 0, 90, pb); fm.add_bond(k8,kb,1.00); pc = rn.sub(p5, [0,b100]); kc = fm.add_atom("N", pc, 0,1); fm.add_bond(k5,kc,1); a315 = 315*pi/180; fm.add_free_bond(kc,a315,3); pd = rn.sub(pc, [b100,0]); kd = fm.add_atom("+", pd, +2,3); pe = rn.sub(pd, [b100,0]); ke = fm.add_atom("+", pe, -1,0); return fm; fm = build_formula(); svg = MFormula_SVG(fm,0); svg.standard_elem_style_1(); svg.output_figure();