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) +
"|"
65 + str(threshold) +
"|" + str(origin[0]) +
"|" + str(origin[1])
66 +
"|" + str(origin[2]))
67 msg +=
"|" + anchor_dir_name + name +
"_em_coarse_anchors.txt|" + \
68 anchor_dir_name + name +
"_em_coarse_anchors_FINE.txt|"
69 msg += anchor_dir_name + name +
"_em_fine_anchors.txt|" + \
70 anchor_dir_name + name +
"_em_fine_anchors_FINE.txt|\n"
83 msg = sd.get_component_header_line()
85 with open(pdb_list)
as fh:
86 for i, fnn
in enumerate(fh):
87 name = fnn[:-1].split()[0]
88 fn = fnn[:-1].split()[1]
89 surface_fn = fnn[:-1].split()[1] +
".ms"
92 num_anchors = len(IMP.atom.get_by_type(
93 mh, IMP.atom.RESIDUE_TYPE)) // coarse_level
94 msg += name +
"|" + fn +
"|" + surface_fn +
"|" + \
95 anchor_dir_name + name +
"_anchors.txt|" + \
96 str(num_anchors) +
"|"
97 msg += anchor_dir_name + name +
"_fine_anchors.txt|" + \
98 str(len(IMP.atom.get_by_type(mh, IMP.atom.RESIDUE_TYPE)))
99 msg +=
"|" + fit_dir_name + name + fit_fn_header +
"|"
101 msg = msg + fn +
"|\n"
107 def create_alignment_param_file(asmb_name, coarse_level):
110 asmb_name +
".alignment.param")
112 asmb_name +
".alignment.param.refined")
115 def create_assembly_input_file(
116 pdb_list, coarse_level, anchor_dir, fit_dir, asmb_name,
117 density_map_fn, resolution, spacing, threshold,
120 fit_fn_header=
"_fitting.txt",
121 add_reference_fn=
False):
124 msg = msg + get_protein_data(
131 msg = msg + get_density_data(
132 asmb_name, density_map_fn, resolution, spacing,
133 threshold, origin, anchor_dir, fit_dir)
134 f = open(asmb_input_fn,
"w")
139 msg = msg + get_protein_data(
144 fit_fn_header +
".refined",
146 msg = msg + get_density_data(
147 asmb_name, density_map_fn, resolution, spacing,
148 threshold, origin, anchor_dir, fit_dir)
149 f = open(asmb_input_fn +
".refined",
"w")
156 asmb_name = args.asmb_name
157 pdb_list = args.subunit_file
158 coarse_level = args.coarse_level
159 anchor_dir = args.anchor_dir
160 fit_dir = args.fit_dir
161 if not anchor_dir[-1] ==
"/":
163 if not fit_dir[-1] ==
"/":
166 density_map_fn = args.density
167 resolution = args.resolution
168 spacing = args.spacing
169 threshold = args.threshold
170 origin = [args.origin_x, args.origin_y, args.origin_z]
171 create_assembly_input_file(
172 pdb_list, coarse_level, anchor_dir, fit_dir, asmb_name,
173 density_map_fn, resolution, spacing, threshold,
174 origin, args.asmb_input)
176 create_alignment_param_file(asmb_name, coarse_level)
179 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.