示例#1
0
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
示例#2
0
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
示例#3
0
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()