rotamer_pdb.py is a script demonstrating the usage of RotamerCalculator and RotamerLibrary. It reads a PDB file and a rotamer library file, and tries to rotate the atoms based on the most probable chi angles from the rotamer library. Then it saves the rotated atoms to a specified output PDB file.
Usage:
python rotamer_pdb.py -i <input>.pdb -l <rotamer_library>.lib -o <output>.pdb
Example (the result will be saved into transformed_1z5s_A.pdb):
python rotamer_pdb.py -i ../../atom/test/input/1z5s_A.pdb \ -l /path/to/ALL.bbdep.rotamers.lib -o transformed_1z5s_A.pdb
   27 def transform(input_pdb, input_lib, output_pdb):
 
   31     mh = IMP.atom.get_by_type(orig_h, IMP.atom.RESIDUE_TYPE)
 
   35     rl.read_library_file(input_lib)
 
   42         rr = rc.get_rotamer(rd, 0.01)
 
   43         rotamers.append((rd, rr))
 
   47     for rd, rr 
in rotamers:
 
   48         for h 
in IMP.atom.get_by_type(rd, IMP.atom.ATOM_TYPE):
 
   50             at_t = at.get_atom_type()
 
   51             if rr.get_atom_exists(at_t):
 
   53                 idx = min(rr.get_number_of_cases(at_t) - 1, 1)
 
   54                 v = rr.get_coordinates(idx, at_t)
 
   56                 xyz.set_coordinates(v)
 
   68 if __name__ == 
'__main__':
 
   73     P.add_argument(
'--input_pdb', 
'-i', action=
'store',
 
   74                    help=
'input PDB file (required)')
 
   75     P.add_argument(
'--input_lib', 
'-l', action=
'store',
 
   76                    help=
'input rotamer library file (required)')
 
   77     P.add_argument(
'--output_pdb', 
'-o', action=
'store',
 
   78                    help=
'output PDB file (required)')
 
   79     P.add_argument(
'--verbose', 
'-v', action=
'store_true',
 
   80                    help=
'show more messages')
 
   83        not (args.input_pdb 
or args.input_lib 
or args.output_pdb):
 
   86     if not args.input_pdb:
 
   87         print(
'--input_pdb is required')
 
   89     if not args.output_pdb:
 
   90         print(
'--output_pdb is required')
 
   92     if not args.input_lib:
 
   93         print(
'--input_lib is required')
 
   99     transform(args.input_pdb, args.input_lib, args.output_pdb)