Exemplo n.º 1
0
 def read_package(self, p):
     for attr in ('line_width', 'font_size', 'font_family', 'line_color',
                  'area_color', 'paper_crop_svg', 'paper_orientation',
                  'paper_type', 'paper_crop_margin'):
         if p.getAttribute(attr):
             self.__dict__[attr] = p.getAttribute(attr)
     self.font_size = int(self.font_size)
     self.paper_crop_svg = int(self.paper_crop_svg)
     self.paper_crop_margin = int(self.paper_crop_margin)
     b = dom_extensions.getFirstChildNamed(p, 'bond')
     if b:
         self.bond_length = b.getAttribute('length') or self.bond_length
         self.bond_width = b.getAttribute('width') or self.bond_width
         self.double_length_ratio = b.getAttribute(
             'double-ratio') or self.double_length_ratio
         self.double_length_ratio = float(self.double_length_ratio)
         self.wedge_width = b.getAttribute(
             'wedge-width') or self.wedge_width
     a = dom_extensions.getFirstChildNamed(p, 'arrow')
     if a:
         self.arrow_length = a.getAttribute('length')
     a = dom_extensions.getFirstChildNamed(p, 'atom')
     if a:
         show_hydrogens = a.getAttribute('show_hydrogens')
         if show_hydrogens == "False":
             show_hydrogens = 0
         elif show_hydrogens == "True":
             show_hydrogens = 1
         self.show_hydrogens = int(show_hydrogens)
Exemplo n.º 2
0
 def read_package( self, p):
   for attr in ('line_width', 'font_size', 'font_family', 'line_color','area_color',
                'paper_crop_svg','paper_orientation','paper_type','paper_crop_margin'):
     if p.getAttribute( attr):
       self.__dict__[ attr] = p.getAttribute( attr)
   self.font_size = int( self.font_size)
   self.paper_crop_svg = int( self.paper_crop_svg)
   self.paper_crop_margin = int( self.paper_crop_margin)
   b = dom_extensions.getFirstChildNamed( p, 'bond')
   if b:
     self.bond_length = b.getAttribute( 'length') or self.bond_length
     self.bond_width = b.getAttribute( 'width') or self.bond_width
     self.double_length_ratio = b.getAttribute( 'double-ratio') or self.double_length_ratio
     self.double_length_ratio = float( self.double_length_ratio)
     self.wedge_width = b.getAttribute( 'wedge-width') or self.wedge_width
   a = dom_extensions.getFirstChildNamed( p, 'arrow')
   if a:
     self.arrow_length = a.getAttribute( 'length')
   a = dom_extensions.getFirstChildNamed( p, 'atom')
   if a:
     show_hydrogens = a.getAttribute('show_hydrogens')
     if show_hydrogens == "False":
       show_hydrogens = 0
     elif show_hydrogens == "True":
       show_hydrogens = 1
     self.show_hydrogens = int( show_hydrogens)
Exemplo n.º 3
0
    def read_package(self, doc):
        self.id = doc.getAttribute("id")
        self.type = doc.getAttribute("type") or "explicit"
        name = dom_ext.getFirstChildNamed(doc, "name")
        if name:
            self.name = dom_ext.getAllTextFromElement(name)
        for b in dom_ext.simpleXPathSearch(doc, "bond"):
            try:
                self.edges.add(
                    Store.id_manager.get_object_with_id(b.getAttribute("id")))
            except KeyError:
                raise bkchem_fragment_error("inconsistent", "")

        for v in dom_ext.simpleXPathSearch(doc, "vertex"):
            try:
                self.vertices.add(
                    Store.id_manager.get_object_with_id(v.getAttribute("id")))
            except KeyError:
                raise bkchem_fragment_error("inconsistent", "")

        for p in dom_ext.simpleXPathSearch(doc, "property"):
            k = p.getAttribute("name")
            v = p.getAttribute("value")
            t = p.getAttribute("type")
            typ = types.__dict__[t]
            self.properties[k] = typ(v)
Exemplo n.º 4
0
    def read_data_definition(self, filename):
        doc = dom.parse(filename)
        root = doc.childNodes[0]
        for ecls in dom_ext.simpleXPathSearch(root, "class"):
            cls = ecls.getAttribute('name')
            self.definitions[cls] = {}
            for eobj in dom_ext.simpleXPathSearch(ecls, "object"):
                obj = eobj.getAttribute('type')
                self.definitions[cls][obj] = {}
                for evalue in dom_ext.simpleXPathSearch(eobj, "value"):
                    vname = evalue.getAttribute('name')
                    vtype = evalue.getAttribute('type')
                    # try to decode list style types
                    if vtype.startswith("[") and vtype.endswith("]"):
                        try:
                            vtype = eval(vtype)
                        except ValueError:
                            pass
                    text = dom_ext.getAllTextFromElement(
                        dom_ext.getFirstChildNamed(evalue, "text"))
                    self.definitions[cls][obj][vname] = {
                        'type': vtype,
                        'text': text
                    }

        self.records[cls] = {}
Exemplo n.º 5
0
 def _read_atom(self, at, mol):
     a = atom(self.paper, molecule=mol)
     a.set_name(
         dom_ext.getAllTextFromElement(
             dom_ext.getFirstChildNamed(at, "symbol")))
     coords = dom_ext.getFirstChildNamed(at, "coordinates")
     a.x = float(
         dom_ext.getAllTextFromElement(
             dom_ext.getFirstChildNamed(coords, "x")))
     a.y = float(
         dom_ext.getAllTextFromElement(
             dom_ext.getFirstChildNamed(coords, "y")))
     a.z = float(
         dom_ext.getAllTextFromElement(
             dom_ext.getFirstChildNamed(coords, "z")))
     a.show_hydrogens = int(a.name != 'C')
     # charge
     chel = dom_ext.getFirstChildNamed(at, "charge")
     if chel:
         a.charge = int(dom_ext.getAllTextFromElement(chel))
     # multiplicity
     radical = dom_ext.getFirstChildNamed(at, "radical")
     if radical:
         a.multiplicity = 1 + int(dom_ext.getAllTextFromElement(radical))
     # remap of ids
     self._atom_id_remap[at.getAttribute('id')] = a
     return a
Exemplo n.º 6
0
 def _read_atom(self, at, mol):
     a = atom(self.paper, molecule=mol)
     a.set_name(dom_ext.getAllTextFromElement(dom_ext.getFirstChildNamed(at, "symbol")))
     coords = dom_ext.getFirstChildNamed(at, "coordinates")
     a.x = float(dom_ext.getAllTextFromElement(dom_ext.getFirstChildNamed(coords, "x")))
     a.y = float(dom_ext.getAllTextFromElement(dom_ext.getFirstChildNamed(coords, "y")))
     a.z = float(dom_ext.getAllTextFromElement(dom_ext.getFirstChildNamed(coords, "z")))
     a.show_hydrogens = int(a.name != "C")
     # charge
     chel = dom_ext.getFirstChildNamed(at, "charge")
     if chel:
         a.charge = int(dom_ext.getAllTextFromElement(chel))
     # multiplicity
     radical = dom_ext.getFirstChildNamed(at, "radical")
     if radical:
         a.multiplicity = 1 + int(dom_ext.getAllTextFromElement(radical))
     # remap of ids
     self._atom_id_remap[at.getAttribute("id")] = a
     return a
Exemplo n.º 7
0
  def read_data_definition( self, filename):
    doc = dom.parse( filename)
    root = doc.childNodes[0]
    for ecls in dom_ext.simpleXPathSearch( root, "class"):
      cls = ecls.getAttribute( 'name')
      self.definitions[ cls] = {}
      for eobj in dom_ext.simpleXPathSearch( ecls, "object"):
        obj = eobj.getAttribute( 'type')
        self.definitions[ cls][ obj] = {}
        for evalue in dom_ext.simpleXPathSearch( eobj, "value"):
          vname = evalue.getAttribute( 'name')
          vtype = evalue.getAttribute( 'type')
          # try to decode list style types
          if vtype.startswith( "[") and vtype.endswith( "]"):
            try:
              vtype = eval( vtype)
            except ValueError:
              pass
          text = dom_ext.getAllTextFromElement( dom_ext.getFirstChildNamed( evalue, "text"))
          self.definitions[ cls][ obj][ vname] = {'type': vtype,
                                                  'text': text }

    self.records[ cls] = {}
Exemplo n.º 8
0
  def read_package( self, doc):
    self.id = doc.getAttribute( "id")
    self.type = doc.getAttribute( "type") or "explicit"
    name = dom_ext.getFirstChildNamed( doc, "name")
    if name:
      self.name = dom_ext.getAllTextFromElement( name)
    for b in dom_ext.simpleXPathSearch( doc, "bond"):
      try:
        self.edges.add( Store.id_manager.get_object_with_id( b.getAttribute( "id")))
      except KeyError:
        raise bkchem_fragment_error( "inconsistent", "")

    for v in dom_ext.simpleXPathSearch( doc, "vertex"):
      try:
        self.vertices.add( Store.id_manager.get_object_with_id( v.getAttribute( "id")))
      except KeyError:
        raise bkchem_fragment_error( "inconsistent", "")

    for p in dom_ext.simpleXPathSearch( doc, "property"):
      k = p.getAttribute( "name")
      v = p.getAttribute( "value")
      t = p.getAttribute( "type")
      typ = types.__dict__[ t]
      self.properties[k] = typ( v)