def main(): """ To be called if module run from command line. """ from helper import cmdline # Parse command line cmdline.initializeParser(__description__, __date__) cmdline.addOption(short_flag="c", long_flag="chains", action="store", default=None, help="File containing chains to take", nargs=1) cmdline.addOption(short_flag="o", long_flag="out_suffix", action="store", default="clean", help="suffix to append to output pdb", nargs=1) cmdline.addOption(short_flag="r", long_flag="renumber_residues", action="store_true", default=False, help="Renumber residues from 1") cmdline.addOption(short_flag="k", long_flag="keep_temp", action="store_true", default=False, help="Keep temporary files") cmdline.addOption(short_flag="s", long_flag="skip", action="store_true", default=True, help="skip messed up pdb files") cmdline.addOption(short_flag="f", long_flag="fix_atoms", action="store_false", default=True, help="fix atoms in original file") cmdline.addOption(short_flag="n", long_flag="num_steps", action="store", default=500, help="number of minimization steps", nargs=1) file_list, options = cmdline.parseCommandLine() # Parse command line options if options.chains == None: chains = "all" else: chains = cmdline.readFile(options.chains) suffix = options.out_suffix renumber_residues = options.renumber_residues keep_temp = options.keep_temp fix_atoms = options.fix_atoms num_steps = options.num_steps for pdb_file in file_list: f = open(pdb_file, 'r') pdb = f.readlines() f.close() print "Loading %s" % pdb_file pdb_id = pdb_file[:-4] try: pdb = pdbClean(pdb, pdb_id, chains, renumber_residues, keep_temp, fix_atoms, num_steps) except PdbCleanError, (strerror): err = "Error cleaning \"%s\"\n%s\n" % (pdb_file, strerror) print err, if options.skip: g = open("error.log", "a") g.write(err) g.close() continue else: sys.exit() out_file = "%s_%s.pdb" % (pdb_id, suffix) g = open(out_file, "w") g.writelines(pdb) g.close() print "Cleaned pdb written to %s" % out_file
def main(): """ To be called if module run from command line. """ from helper import cmdline # Parse command line cmdline.initializeParser(__description__,__date__) cmdline.addOption(short_flag="c", long_flag="chains", action="store", default=None, help="File containing chains to take", nargs=1) cmdline.addOption(short_flag="o", long_flag="out_suffix", action="store", default="clean", help="suffix to append to output pdb", nargs=1) cmdline.addOption(short_flag="r", long_flag="renumber_residues", action="store_true", default=False, help="Renumber residues from 1") cmdline.addOption(short_flag="k", long_flag="keep_temp", action="store_true", default=False, help="Keep temporary files") cmdline.addOption(short_flag="s", long_flag="skip", action="store_true", default=True, help="skip messed up pdb files") cmdline.addOption(short_flag="f", long_flag="fix_atoms", action="store_false", default=True, help="fix atoms in original file") cmdline.addOption(short_flag="n", long_flag="num_steps", action="store", default=500, help="number of minimization steps", nargs=1) file_list, options = cmdline.parseCommandLine() # Parse command line options if options.chains == None: chains = "all" else: chains = cmdline.readFile(options.chains) suffix = options.out_suffix renumber_residues = options.renumber_residues keep_temp = options.keep_temp fix_atoms = options.fix_atoms num_steps = options.num_steps for pdb_file in file_list: f = open(pdb_file,'r') pdb = f.readlines() f.close() print "Loading %s" % pdb_file pdb_id = pdb_file[:-4] try: pdb = pdbClean(pdb,pdb_id,chains,renumber_residues,keep_temp, fix_atoms,num_steps) except PdbCleanError, (strerror): err = "Error cleaning \"%s\"\n%s\n" % (pdb_file,strerror) print err, if options.skip: g = open("error.log","a") g.write(err) g.close() continue else: sys.exit() out_file = "%s_%s.pdb" % (pdb_id,suffix) g = open(out_file,"w") g.writelines(pdb) g.close() print "Cleaned pdb written to %s" % out_file
def main(): """ Call if program called from command line. """ # Parse command line cmdline.initializeParser(__description__,__date__) cmdline.addOption(short_flag="t", long_flag="his_tautomers", action="store", default=None, help="File containing his tautomers to use", nargs=1) cmdline.addOption(short_flag="k", long_flag="keep_temp", action="store_true", default=False, help="Keep temporary files") cmdline.addOption(short_flag="f", long_flag="full", action="store_true", default=False, help="Add hydrogens for UHBD full calculation") cmdline.addOption(short_flag="b", long_flag="hbond", action="store", default=None, help="Write out hbonds to file", nargs=1, type=str) cmdline.addOption(short_flag="u", long_flag="uhbd_style", action="store_true", default=False, help="Write out in non-standard uhbd format") cmdline.addOption(short_flag="s", long_flag="skip", action="store_true", default=True, help="skip messed up pdb files") file_list, options = cmdline.parseCommandLine() # Deal with his_tautomers file if options.his_tautomers != None: # Read in as a standard ascii file. his_types = cmdline.readFile(options.his_tautomers) try: his_types = [int(h) for h in his_types] # Make sure that entries are valid check = [h == 1 or h == 2 for h in his_types] if False in check: raise ValueError except ValueError: err = "His tautomer file can contain only 1's (HISB) and 2's (HISA)" cmdline.parser.error(err) else: his_types = None # Decide whether to keep temp files and how to format output keep_temp = options.keep_temp uhbd_style = options.uhbd_style hbond = options.hbond # Decide whether to add "full" hydrogens. if options.full: calc_type = "full" else: calc_type = "single" # Add hydrogens for every file in file_list file_list.sort() for file in file_list: pdb_id = os.path.split(file)[-1][:-4] out_file = "%sH.pdb" % pdb_id print "%s --> %s" % (file,out_file) # Load in file f = open(file,'r') pdb = f.readlines() f.close() # Add hydrogens try: pdb_out = pdbAddH(pdb,pdb_id,uhbd_style=uhbd_style, his_types=his_types, keep_temp=keep_temp, calc_type=calc_type, hbond=hbond) except PdbAddHError, (strerror): err = "Addition of hydrogens failed for %s\n" % file err += "Problem was with CHARMM\n.%s" % strerror print err if options.skip: print "CHARMM output written to error.log" g = open("error.log","a") g.write(err) g.write("charmm.out copied below\n%s\n" % (79*"-")) h = open("charmm.out",'r') charmm_out = h.readlines() h.close() g.writelines(charmm_out) g.write("\n\n") g.close() continue else: sys.exit() # Dump to output file g = open(out_file,'w') g.writelines(pdb_out) g.close()