3 __doc__ =
'Build initial parameters files.'
7 from IMP
import ArgumentParser
12 Build the parameters files for MultiFit.
14 Notice: If you have negative numbers as input, add -- as the first parameter,
15 so that the numbers are not treated as options."""
17 p = ArgumentParser(description=desc)
18 p.add_argument(
"-i",
"--asmb_input", dest=
"asmb_input",
20 help=
"the name of the MultiFit input file. The default "
21 "filename is asmb.input")
22 p.add_argument(
"-m",
"--model", dest=
"model", default=
"asmb.model",
23 help=
"the base filename of the solutions output by "
24 "MultiFit (.X.pdb, where X is the solution number, "
25 "is suffixed to create each output file name). "
26 "The default filename is asmb.model")
27 p.add_argument(
"-a",
"--anchor_dir", dest=
"anchor_dir", default=
"./",
28 help=
"the name of the directory to store anchor points. "
30 p.add_argument(
"-f",
"--fit_dir", dest=
"fit_dir", default=
"./",
31 help=
"the name of the directory to store fitting "
32 "solutions. The default is ./")
33 p.add_argument(
"asmb_name",
34 help=
"name of the assembly (used as the prefix for "
35 "several MultiFit files)")
36 p.add_argument(
"subunit_file",
37 help=
"file containing a list of subunit PDB file names")
38 p.add_argument(
"coarse_level", type=int,
39 help=
"level of coarse graining (number of residues "
41 p.add_argument(
"density", help=
"density map file name")
42 p.add_argument(
"resolution", type=float,
43 help=
"density map resolution, in angstroms")
44 p.add_argument(
"spacing", type=float,
45 help=
"density map voxel spacing, in angstroms")
46 p.add_argument(
"threshold", type=float,
47 help=
"the threshold of the density map, used for "
49 p.add_argument(
"origin_x", type=float,
50 help=
"density map origin X coordinate")
51 p.add_argument(
"origin_y", type=float,
52 help=
"density map origin Y coordinate")
53 p.add_argument(
"origin_z", type=float,
54 help=
"density map origin Z coordinate")
58 def get_density_data(name, density_fn, resolution, spacing, threshold,
59 origin, anchor_dir_name, fit_dir_name):
62 msg = sd.get_density_header_line()
63 msg += (density_fn +
"|" + str(resolution) +
"|" + str(spacing) +
"|"
64 + str(threshold) +
"|" + str(origin[0]) +
"|" + str(origin[1])
65 +
"|" + 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(
92 mh, 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.