IMP  2.0.1
The Integrative Modeling Platform
indexes.py
1 #!/usr/bin/env python
2 
3 __doc__ = "Generate indexes of fitting solutions."
4 
5 import IMP.multifit
6 from optparse import OptionParser
7 
8 def parse_args():
9  usage = """%prog [options] <assembly name> <assembly input> <number of fits> <indexes filename>
10 
11 Generate indexes of fitting solutions.
12 """
13  parser = OptionParser(usage)
14  options, args = parser.parse_args()
15  if len(args) != 4:
16  parser.error("incorrect number of arguments")
17  return options,args
18 
19 def run(assembly_name,asmb_fn,num_fits,mapping_fn=""):
20  IMP.base.set_log_level(IMP.WARNING)
21  asmb_input=IMP.multifit.read_settings(asmb_fn)
22  asmb_input.set_was_used(True)
23  ap_em_fn=asmb_input.get_assembly_header().get_coarse_over_sampled_ap_fn()
24  if mapping_fn=="":
25  mapping_fn=assembly_name+".indexes.mapping.input"
26  mapping_data=open(mapping_fn,"w")
27  mapping_data.write("|anchors|"+ap_em_fn+"|\n")
28  for i in range(asmb_input.get_number_of_component_headers()):
29  name=asmb_input.get_component_header(i).get_name()
30  trans_fn = asmb_input.get_component_header(i).get_transformations_fn()
32  print "number of fits for component",i,"is",len(fits),trans_fn
33  index_fn=assembly_name+"."+name+".fit.indexes.txt"
34  indexes=[]
35  for i in range(min(num_fits,len(fits))):
36  indexes.append([i])
37  IMP.multifit.write_paths(indexes,index_fn)
38  mapping_data.write("|protein|"+name+
39  "|"+index_fn+"|\n")
40  mapping_data.close()
41 
42 def main():
43  options,args = parse_args()
44  asmb_name = args[0]
45  asmb_input = args[1]
46  max_fits = int(args[2])
47  mapping_fn=args[3]
48  run(asmb_name,asmb_input,max_fits,mapping_fn)
49 
50 if __name__=="__main__":
51  main()