def setup(self, printargs=False): super(AaCgTrajectoryProcessor, self).setup(printargs) self.ff = elbalib.Elba() self.ff.load(self.args.xml) self.refuniverse = md.Universe(self.args.ref) # Check if we need to translate the atom names self.namtrans = None if self.args.naming is not None: namref = [ line.strip() for line in open(self.args.naming[0], 'r').readlines() ] nammob = [ line.strip() for line in open(self.args.naming[1], 'r').readlines() ] self.namtrans = {} for nr, nm in zip(namref, nammob): if nm != "*": self.namtrans[nm] = nr # Setup of a list of residues defined in the force field that can be processed self.residues = [] for r in self.refuniverse.selectAtoms("all").residues: if self.args.mol is not None and r.name.lower( ) != self.args.mol.lower(): continue ffmol = self.ff.find_molecule(r.name) if ffmol is None or not ffmol.beadnames: continue self.residues.append(_Residue(r.id, ffmol, self.universe)) if not self.iscgtraj: self.residues[-1].make_transmat(self.namtrans) for action in self.actions: action.setup_residues()
bond.contype = elbalib.BondType() bond.contype.set(id=di+1,kf=2,k=data[di,0],r0=data[di,1]) ff.bondtypes[di+1]=bond.contype di += 1 ai = 0 prev = len(ff.angletypes) ff.angletypes = {} for angle in ffmol.angles : angle.contype = elbalib.AngleType() angle.contype.set(id=ai+1,kf=2,k=data[di,0],theta0=data[di,1]) ff.angletypes[ai+1]=angle.contype di += 1 ai += 1 if __name__ == '__main__': print " ".join(sys.argv) argparser = argparse.ArgumentParser(description="Program the generate LAMMPS input files") argparser.add_argument('-x', '--xml', help="an XML file with force field definitions") argparser.add_argument('-b','--bonded',nargs=2,help="replace bonded parameters") args = argparser.parse_args() ff = elbalib.Elba() ff.load(args.xml) modify_bonded(ff,args.bonded[0],args.bonded[1]) generate_gmxinput(ff.molecules[args.bonded[0]])