2 from __future__
import division
4 __doc__ =
'Build initial parameters files.'
8 from IMP
import ArgumentParser
13 Build the parameters files for MultiFit.
15 Notice: If you have negative numbers as input, add -- as the first parameter,
16 so that the numbers are not treated as options."""
18 p = ArgumentParser(description=desc)
19 p.add_argument(
"-i",
"--asmb_input", dest=
"asmb_input",
21 help=
"the name of the MultiFit input file. The default "
22 "filename is asmb.input")
23 p.add_argument(
"-m",
"--model", dest=
"model", default=
"asmb.model",
24 help=
"the base filename of the solutions output by "
25 "MultiFit (.X.pdb, where X is the solution number, "
26 "is suffixed to create each output file name). "
27 "The default filename is asmb.model")
28 p.add_argument(
"-a",
"--anchor_dir", dest=
"anchor_dir", default=
"./",
29 help=
"the name of the directory to store anchor points. "
31 p.add_argument(
"-f",
"--fit_dir", dest=
"fit_dir", default=
"./",
32 help=
"the name of the directory to store fitting "
33 "solutions. The default is ./")
34 p.add_argument(
"asmb_name",
35 help=
"name of the assembly (used as the prefix for "
36 "several MultiFit files)")
37 p.add_argument(
"subunit_file",
38 help=
"file containing a list of subunit PDB file names")
39 p.add_argument(
"coarse_level", type=int,
40 help=
"level of coarse graining (number of residues "
42 p.add_argument(
"density", help=
"density map file name")
43 p.add_argument(
"resolution", type=float,
44 help=
"density map resolution, in angstroms")
45 p.add_argument(
"spacing", type=float,
46 help=
"density map voxel spacing, in angstroms")
47 p.add_argument(
"threshold", type=float,
48 help=
"the threshold of the density map, used for "
50 p.add_argument(
"origin_x", type=float,
51 help=
"density map origin X coordinate")
52 p.add_argument(
"origin_y", type=float,
53 help=
"density map origin Y coordinate")
54 p.add_argument(
"origin_z", type=float,
55 help=
"density map origin Z coordinate")
59 def get_density_data(name, density_fn, resolution, spacing, threshold,
60 origin, anchor_dir_name, fit_dir_name):
63 msg = sd.get_density_header_line()
64 msg += density_fn +
"|" + str(resolution) +
"|" + str(spacing) +
"|" + str(
65 threshold) +
"|" + str(origin[0]) +
"|" + str(origin[1]) +
"|" + str(origin[2])
66 msg +=
"|" + anchor_dir_name + name +
"_em_coarse_anchors.txt|" + \
67 anchor_dir_name + name +
"_em_coarse_anchors_FINE.txt|"
68 msg += anchor_dir_name + name +
"_em_fine_anchors.txt|" + \
69 anchor_dir_name + name +
"_em_fine_anchors_FINE.txt|\n"
82 msg = sd.get_component_header_line()
84 with open(pdb_list)
as fh:
85 for i, fnn
in enumerate(fh):
86 name = fnn[:-1].split()[0]
87 fn = fnn[:-1].split()[1]
88 surface_fn = fnn[:-1].split()[1] +
".ms"
91 num_anchors = len(IMP.atom.get_by_type(mh,
92 IMP.atom.RESIDUE_TYPE)) // coarse_level
93 msg += name +
"|" + fn +
"|" + surface_fn +
"|" + \
94 anchor_dir_name + name +
"_anchors.txt|" + \
95 str(num_anchors) +
"|"
96 msg += anchor_dir_name + name +
"_fine_anchors.txt|" + \
97 str(len(IMP.atom.get_by_type(mh, IMP.atom.RESIDUE_TYPE)))
98 msg +=
"|" + fit_dir_name + name + fit_fn_header +
"|"
100 msg = msg + fn +
"|\n"
106 def create_alignment_param_file(asmb_name, coarse_level):
109 asmb_name +
".alignment.param")
111 asmb_name +
".alignment.param.refined")
114 def create_assembly_input_file(
115 pdb_list, coarse_level, anchor_dir, fit_dir, asmb_name,
116 density_map_fn, resolution, spacing, threshold,
119 fit_fn_header=
"_fitting.txt",
120 add_reference_fn=
False):
123 msg = msg + get_protein_data(
130 msg = msg + get_density_data(
131 asmb_name, density_map_fn, resolution, spacing,
132 threshold, origin, anchor_dir, fit_dir)
133 f = open(asmb_input_fn,
"w")
138 msg = msg + get_protein_data(
143 fit_fn_header +
".refined",
145 msg = msg + get_density_data(
146 asmb_name, density_map_fn, resolution, spacing,
147 threshold, origin, anchor_dir, fit_dir)
148 f = open(asmb_input_fn +
".refined",
"w")
155 asmb_name = args.asmb_name
156 pdb_list = args.subunit_file
157 coarse_level = args.coarse_level
158 anchor_dir = args.anchor_dir
159 fit_dir = args.fit_dir
160 if not anchor_dir[-1] ==
"/":
162 if not fit_dir[-1] ==
"/":
165 density_map_fn = args.density
166 resolution = args.resolution
167 spacing = args.spacing
168 threshold = args.threshold
169 origin = [args.origin_x, args.origin_y, args.origin_z]
170 create_assembly_input_file(
171 pdb_list, coarse_level, anchor_dir, fit_dir, asmb_name,
172 density_map_fn, resolution, spacing, threshold,
173 origin, args.asmb_input)
175 create_alignment_param_file(asmb_name, coarse_level)
178 if __name__ ==
"__main__":
void read_pdb(TextInput input, int model, Hierarchy h)
Class for storing model, its restraints, constraints, and particles.
Fitting atomic structures into a cryo-electron microscopy density map.
Holds header data for optimization.
std::string get_data_path(std::string file_name)
Return the full path to one of this module's data files.