Example #1
0
 def parse(self):
     """
     DOCME
     """
     super(RTFFile, self).parse()
     self._parse_mass()
     self._parse_decl()
     self._parse_defa()
     self._parse_auto()
     iterator = ( line for line in self.body if not line.startswith('!') )
     iterator = paragraphs(logicalLines(iterator), self._sections)
     self.resi = {}
     self.pres = {}
     self._wtf = []
     for taco in iterator:
         if taco[0][:4] == 'resi':
             tmp = taco[0].split()[1]
             self.resi[tmp] = TopRes(taco)
         elif taco[0][:4] == 'pres':
             tmp = taco[0].split()[1]
             self.pres[tmp] = TopRes(taco)
         else:
             self._wtf.append(taco)
     self.chemResiDict = dict(( (k, v.chemDict) for k, v in self.resi.iteritems() ))
     self.chemPresDict = dict(( (k, v.chemDict) for k, v in self.pres.iteritems() ))
     self.chargeResiDict = dict(( (k, v.chargeDict) for k, v in self.resi.iteritems() ))
     self.chargePresDict = dict(( (k, v.chargeDict) for k, v in self.pres.iteritems() ))
Example #2
0
    def parse(self):
        super(PRMFile, self).parse()
        iterator = ( line for line in self.body if not line.startswith('!') )
        iterator = paragraphs(logicalLines(iterator), self._sections)
        for taco in iterator:
            try:
                if taco[0][:4] in self._sections:
                    self.cmd[taco[0][:4]] = taco[0]
                    self.prm[taco[0][:4]] = taco[1:]
                else:
                    self.comments.append(taco)
            except IndexError:
                pass

        # discard empties
        tmp = []
        for key, value in self.prm.iteritems():
            if not value:
                tmp.append(key)
        for key in tmp:
            try:
                del self.cmd[key]
            except KeyError:
                pass
            try:
                del self.prm[key]
            except KeyError:
                pass

        # rename sections
        def rename(old, new):
            if old in self.cmd.keys():
                self.cmd[new] = self.cmd[old]
                del self.cmd[old]
                self.prm[new] = self.prm[old]
                del self.prm[old]
        rename('thet', 'angl')
        rename('phi', 'dihe')
        rename('imph', 'impr')
        rename('nonb', 'nbon')

        # parse sections
        self._parse('atom', MassPRM)
        self._parse('bond', BondPRM)
        self._parse('angl', AnglePRM)
        self._parse('dihe', DihedralPRM)
        self._parse('impr', ImproperPRM)
        self._parse('nbon', NonBondPRM)
        self._parse('nbfi', NBFixPRM)
        # self._parse('hbon', HBondPRM) TODO -- implement HBondPRM objects in lib.toppar
        self._parse_cmap()