def run(args=None,params=None, map_data=None,crystal_symmetry=None, write_output_files=True, pdb_inp=None, ncs_obj=None, return_map_data_only=False, return_unshifted_map=False, half_map_data_list=None, ncs_copies=None, n_residues=None, out=sys.stdout): # Get the parameters if not params: params=get_params(args,out=out) if not ncs_copies: ncs_copies=params.crystal_info.ncs_copies # get map_data and crystal_symmetry pdb_inp,map_data,half_map_data_list,ncs_obj,crystal_symmetry,acc,\ original_crystal_symmetry,original_unit_cell_grid,map_labels=\ get_map_and_model( map_data=map_data, half_map_data_list=half_map_data_list, pdb_inp=pdb_inp, ncs_obj=ncs_obj, map_coords_inside_cell=False, crystal_symmetry=crystal_symmetry, get_map_labels=True, params=params,out=out) # NOTE: map_data is now relative to origin at (0,0,0). # Use map_data.reshape(acc) to put it back where it was if acc is not None # auto-sharpen the map from cctbx.maptbx.segment_and_split_map import auto_sharpen_map_or_map_coeffs si=auto_sharpen_map_or_map_coeffs( resolution=params.crystal_info.resolution, # required crystal_symmetry=crystal_symmetry, is_crystal=params.crystal_info.is_crystal, verbose=params.control.verbose, resolve_size=params.control.resolve_size, multiprocessing=params.control.multiprocessing, nproc=params.control.nproc, queue_run_command=params.control.queue_run_command, map=map_data, half_map_data_list=half_map_data_list, solvent_content=params.crystal_info.solvent_content, molecular_mass=params.crystal_info.molecular_mass, input_weight_map_pickle_file=\ params.input_files.input_weight_map_pickle_file, output_weight_map_pickle_file=\ params.output_files.output_weight_map_pickle_file, read_sharpened_maps=params.map_modification.read_sharpened_maps, write_sharpened_maps=params.map_modification.write_sharpened_maps, select_sharpened_map=params.map_modification.select_sharpened_map, auto_sharpen=params.map_modification.auto_sharpen, local_sharpening=params.map_modification.local_sharpening, output_directory=params.output_files.output_directory, smoothing_radius=params.map_modification.smoothing_radius, local_aniso_in_local_sharpening=\ params.map_modification.local_aniso_in_local_sharpening, overall_before_local=\ params.map_modification.overall_before_local, box_in_auto_sharpen=params.map_modification.box_in_auto_sharpen, density_select_in_auto_sharpen=params.map_modification.density_select_in_auto_sharpen, density_select_threshold_in_auto_sharpen=params.map_modification.density_select_threshold_in_auto_sharpen, use_weak_density=params.map_modification.use_weak_density, discard_if_worse=params.map_modification.discard_if_worse, box_center=params.map_modification.box_center, box_size=params.map_modification.box_size, target_n_overlap=params.map_modification.target_n_overlap, restrict_map_size=params.map_modification.restrict_map_size, remove_aniso=params.map_modification.remove_aniso, auto_sharpen_methods=params.map_modification.auto_sharpen_methods, residual_target=params.map_modification.residual_target, region_weight=params.map_modification.region_weight, sa_percent=params.map_modification.sa_percent, eps=params.map_modification.eps, n_bins=params.map_modification.n_bins, max_regions_to_test=params.map_modification.max_regions_to_test, regions_to_keep=params.map_modification.regions_to_keep, fraction_occupied=params.map_modification.fraction_occupied, sharpening_target=params.map_modification.sharpening_target, d_min_ratio=params.map_modification.d_min_ratio, scale_max=params.map_modification.scale_max, input_d_cut=params.map_modification.input_d_cut, b_blur_hires=params.map_modification.b_blur_hires, max_box_fraction=params.map_modification.max_box_fraction, cc_cut=params.map_modification.cc_cut, max_cc_for_rescale=params.map_modification.max_cc_for_rescale, scale_using_last=params.map_modification.scale_using_last, density_select_max_box_fraction=params.map_modification.density_select_max_box_fraction, mask_atoms=params.map_modification.mask_atoms, mask_atoms_atom_radius=params.map_modification.mask_atoms_atom_radius, value_outside_atoms=params.map_modification.value_outside_atoms, k_sharpen=params.map_modification.k_sharpen, optimize_b_blur_hires=params.map_modification.optimize_b_blur_hires, iterate=params.map_modification.iterate, optimize_d_cut=params.map_modification.optimize_d_cut, soft_mask=params.map_modification.soft_mask, allow_box_if_b_iso_set=params.map_modification.allow_box_if_b_iso_set, search_b_min=params.map_modification.search_b_min, search_b_max=params.map_modification.search_b_max, search_b_n=params.map_modification.search_b_n, adjust_region_weight=params.map_modification.adjust_region_weight, region_weight_method=params.map_modification.region_weight_method, region_weight_factor=params.map_modification.region_weight_factor, region_weight_buffer=\ params.map_modification.region_weight_buffer, target_b_iso_ratio=params.map_modification.target_b_iso_ratio, signal_min=params.map_modification.signal_min, buffer_radius=params.crystal_info.buffer_radius, wang_radius=params.crystal_info.wang_radius, pseudo_likelihood=params.crystal_info.pseudo_likelihood, target_b_iso_model_scale=params.map_modification.target_b_iso_model_scale, b_iso=params.map_modification.b_iso, b_sharpen=params.map_modification.b_sharpen, resolution_dependent_b=\ params.map_modification.resolution_dependent_b, normalize_amplitudes_in_resdep=\ params.map_modification.normalize_amplitudes_in_resdep, pdb_inp=pdb_inp, ncs_obj=ncs_obj, rmsd=params.map_modification.rmsd, rmsd_resolution_factor=params.map_modification.rmsd_resolution_factor, b_sol=params.map_modification.b_sol, k_sol=params.map_modification.k_sol, fraction_complete=params.map_modification.fraction_complete, seq_file=params.input_files.seq_file, ncs_copies=ncs_copies, n_residues=n_residues, out=out) # get map_data and map_coeffs of final map new_map_data=si.as_map_data() new_map_coeffs=si.as_map_coeffs() from cctbx.maptbx.segment_and_split_map import get_b_iso,map_coeffs_as_fp_phi f,phi=map_coeffs_as_fp_phi(new_map_coeffs) temp_b_iso=get_b_iso(f,d_min=params.crystal_info.resolution) if not si.is_model_sharpening(): print >>out print >>out,80*"=","\n",80*"=" print >>out,"\n Summary of sharpening information\n " si.show_summary(verbose=params.control.verbose,out=out) print >>out,80*"=","\n",80*"=" # write out the new map_coeffs and map if requested: offset_map_data=new_map_data.deep_copy() if acc is not None: # offset the map to match original if possible offset_map_data.reshape(acc) if write_output_files and params.output_files.sharpened_map_file and \ offset_map_data: output_map_file=os.path.join(params.output_files.output_directory, params.output_files.sharpened_map_file) from cctbx.maptbx.segment_and_split_map import write_ccp4_map if acc is not None: # we offset the map to match original print >>out,\ "\nWrote sharpened map in original location with origin at %s\nto %s" %( str(offset_map_data.origin()),output_map_file) write_ccp4_map(original_crystal_symmetry, output_map_file, offset_map_data, output_unit_cell_grid=original_unit_cell_grid) else: print >>out,"\nWrote sharpened map with origin at 0,0,0 "+\ "(NOTE: may be boxed map and may not be "+\ "\nsame as original location) to %s\n" %( output_map_file) from iotbx.mrcfile import create_output_labels program_name='auto_sharpen' limitations=["map_is_sharpened"] labels=create_output_labels(program_name=program_name, input_file_name=params.input_files.map_file, input_labels=map_labels, limitations=limitations, output_labels=None) write_ccp4_map(crystal_symmetry, output_map_file, offset_map_data, labels=labels) if write_output_files and params.output_files.shifted_sharpened_map_file: output_map_file=os.path.join(params.output_files.output_directory, params.output_files.shifted_sharpened_map_file) from cctbx.maptbx.segment_and_split_map import write_ccp4_map write_ccp4_map(crystal_symmetry, output_map_file, new_map_data) print >>out,"\nWrote sharpened map (origin at %s)\nto %s" %( str(new_map_data.origin()),output_map_file) if write_output_files and params.output_files.sharpened_map_coeffs_file and \ new_map_coeffs: output_map_coeffs_file=os.path.join(params.output_files.output_directory, params.output_files.sharpened_map_coeffs_file) new_map_coeffs.as_mtz_dataset(column_root_label='FWT').mtz_object().write( file_name=output_map_coeffs_file) print >>out,"\nWrote sharpened map_coeffs (origin at 0,0,0)\n to %s\n" %( output_map_coeffs_file) if return_unshifted_map: map_to_return=offset_map_data else: map_to_return=new_map_data if return_map_data_only: return map_to_return else: #usual return map_to_return,new_map_coeffs,crystal_symmetry,si
def run(args=None, params=None, map_data=None, crystal_symmetry=None, write_output_files=True, pdb_inp=None, ncs_obj=None, return_map_data_only=False, half_map_data_list=None, ncs_copies=None, n_residues=None, out=sys.stdout): # Get the parameters if not params: params = get_params(args, out=out) if not ncs_copies: ncs_copies = params.crystal_info.ncs_copies # get map_data and crystal_symmetry pdb_inp,map_data,half_map_data_list,ncs_obj,\ crystal_symmetry,acc=get_map_and_model( map_data=map_data, half_map_data_list=half_map_data_list, pdb_inp=pdb_inp, ncs_obj=ncs_obj, crystal_symmetry=crystal_symmetry, params=params,out=out) # NOTE: map_data is now relative to origin at (0,0,0). # Use map_data.reshape(acc) to put it back where it was if acc is not None # auto-sharpen the map from cctbx.maptbx.segment_and_split_map import auto_sharpen_map_or_map_coeffs si=auto_sharpen_map_or_map_coeffs( resolution=params.crystal_info.resolution, # required crystal_symmetry=crystal_symmetry, is_crystal=params.crystal_info.is_crystal, verbose=params.control.verbose, map=map_data, half_map_data_list=half_map_data_list, solvent_content=params.crystal_info.solvent_content, input_weight_map_pickle_file=\ params.input_files.input_weight_map_pickle_file, output_weight_map_pickle_file=\ params.output_files.output_weight_map_pickle_file, read_sharpened_maps=params.map_modification.read_sharpened_maps, write_sharpened_maps=params.map_modification.write_sharpened_maps, select_sharpened_map=params.map_modification.select_sharpened_map, auto_sharpen=params.map_modification.auto_sharpen, local_sharpening=params.map_modification.local_sharpening, output_directory=params.output_files.output_directory, smoothing_radius=params.map_modification.smoothing_radius, local_aniso_in_local_sharpening=\ params.map_modification.local_aniso_in_local_sharpening, box_in_auto_sharpen=params.map_modification.box_in_auto_sharpen, use_weak_density=params.map_modification.use_weak_density, discard_if_worse=params.map_modification.discard_if_worse, box_center=params.map_modification.box_center, box_size=params.map_modification.box_size, remove_aniso=params.map_modification.remove_aniso, auto_sharpen_methods=params.map_modification.auto_sharpen_methods, residual_target=params.map_modification.residual_target, region_weight=params.map_modification.region_weight, sa_percent=params.map_modification.sa_percent, eps=params.map_modification.eps, n_bins=params.map_modification.n_bins, max_regions_to_test=params.map_modification.max_regions_to_test, fraction_occupied=params.map_modification.fraction_occupied, sharpening_target=params.map_modification.sharpening_target, d_min_ratio=params.map_modification.d_min_ratio, max_box_fraction=params.map_modification.max_box_fraction, mask_atoms=params.map_modification.mask_atoms, mask_atoms_atom_radius=params.map_modification.mask_atoms_atom_radius, value_outside_atoms=params.map_modification.value_outside_atoms, k_sharpen=params.map_modification.k_sharpen, soft_mask=params.map_modification.soft_mask, search_b_min=params.map_modification.search_b_min, search_b_max=params.map_modification.search_b_max, search_b_n=params.map_modification.search_b_n, maximum_low_b_adjusted_sa=\ params.map_modification.maximum_low_b_adjusted_sa, b_iso=params.map_modification.b_iso, b_sharpen=params.map_modification.b_sharpen, resolution_dependent_b=\ params.map_modification.resolution_dependent_b, pdb_inp=pdb_inp, ncs_obj=ncs_obj, rmsd=params.map_modification.rmsd, b_sol=params.map_modification.b_sol, k_sol=params.map_modification.k_sol, fraction_complete=params.map_modification.fraction_complete, seq_file=params.input_files.seq_file, ncs_copies=ncs_copies, n_residues=n_residues, out=out) # get map_data and map_coeffs of final map new_map_data = si.as_map_data() new_map_coeffs = si.as_map_coeffs() from cctbx.maptbx.segment_and_split_map import get_b_iso, map_coeffs_as_fp_phi f, phi = map_coeffs_as_fp_phi(new_map_coeffs) temp_b_iso = get_b_iso(f, d_min=params.crystal_info.resolution) if not si.is_model_sharpening(): print >> out print >> out, 80 * "=", "\n", 80 * "=" print >> out, "\n Summary of sharpening information\n " si.show_summary(verbose=params.control.verbose, out=out) print >> out, 80 * "=", "\n", 80 * "=" # write out the new map_coeffs and map if requested: if write_output_files and params.output_files.sharpened_map_file and \ new_map_data: output_map_file = os.path.join(params.output_files.output_directory, params.output_files.sharpened_map_file) from cctbx.maptbx.segment_and_split_map import write_ccp4_map offset_map_data = new_map_data.deep_copy() if acc is not None: # offset the map to match original if possible offset_map_data.reshape(acc) print >>out,\ "\nWrote sharpened map in original location with origin at %s\nto %s" %( str(offset_map_data.origin()),output_map_file) else: print >>out,"\nWrote sharpened map with origin at 0,0,0 "+\ "(NOTE: may not be \nsame as original location) to %s\n" %( output_map_file) write_ccp4_map(crystal_symmetry, output_map_file, offset_map_data) if write_output_files and params.output_files.shifted_sharpened_map_file: output_map_file = os.path.join( params.output_files.output_directory, params.output_files.shifted_sharpened_map_file) from cctbx.maptbx.segment_and_split_map import write_ccp4_map write_ccp4_map(crystal_symmetry, output_map_file, new_map_data) print >> out, "\nWrote sharpened map (origin at %s)\nto %s" % (str( new_map_data.origin()), output_map_file) if write_output_files and params.output_files.sharpened_map_coeffs_file and \ new_map_coeffs: output_map_coeffs_file = os.path.join( params.output_files.output_directory, params.output_files.sharpened_map_coeffs_file) from cctbx.maptbx.segment_and_split_map import write_ccp4_map new_map_coeffs.as_mtz_dataset( column_root_label='FWT').mtz_object().write( file_name=output_map_coeffs_file) print >> out, "\nWrote sharpened map_coeffs (origin at 0,0,0)\n to %s\n" % ( output_map_coeffs_file) if return_map_data_only: return new_map_data else: #usual return new_map_data, new_map_coeffs, crystal_symmetry, si
def run(args, out=sys.stdout): # Get the parameters params = get_params(args, out=out) # get map_data and crystal_symmetry map_data, crystal_symmetry = get_map(params=params, out=out) # auto-sharpen the map from cctbx.maptbx.segment_and_split_map import auto_sharpen_map_or_map_coeffs new_map_data=auto_sharpen_map_or_map_coeffs( resolution=params.crystal_info.resolution, # required crystal_symmetry=crystal_symmetry, map=map_data, solvent_content=params.crystal_info.solvent_content, box_in_auto_sharpen=params.map_modification.box_in_auto_sharpen, auto_sharpen_methods=params.map_modification.auto_sharpen_methods, residual_target=params.map_modification.residual_target, region_weight=params.map_modification.region_weight, sa_percent=params.map_modification.sa_percent, eps=params.map_modification.eps, n_bins=params.map_modification.n_bins, max_regions_to_test=params.map_modification.max_regions_to_test, fraction_occupied=params.map_modification.fraction_occupied, sharpening_target=params.map_modification.sharpening_target, d_min_ratio=params.map_modification.d_min_ratio, max_box_fraction=params.map_modification.max_box_fraction, k_sharpen=params.map_modification.max_box_fraction, search_b_min=params.map_modification.search_b_min, search_b_max=params.map_modification.search_b_max, search_b_n=params.map_modification.search_b_n, b_iso=params.map_modification.b_iso, b_sharpen=params.map_modification.b_sharpen, resolution_dependent_b=\ params.map_modification.resolution_dependent_b, out=out) # convert to map_coeffs also from cctbx.maptbx.segment_and_split_map import get_f_phases_from_map new_map_coeffs = get_f_phases_from_map( map_data=new_map_data, crystal_symmetry=crystal_symmetry, d_min=params.crystal_info.resolution, d_min_ratio=params.map_modification.d_min_ratio, return_as_map_coeffs=True, out=out) # write out the new map_coeffs and map if requested: if params.output_files.shifted_sharpened_map_file: output_map_file = os.path.join( params.output_files.output_directory, params.output_files.shifted_sharpened_map_file) from cctbx.maptbx.segment_and_split_map import write_ccp4_map write_ccp4_map(crystal_symmetry, output_map_file, new_map_data) print >> out, "\nWrote sharpened map to %s" % (output_map_file) if params.output_files.shifted_sharpened_map_coeffs_file: output_map_coeffs_file = os.path.join( params.output_files.output_directory, params.output_files.shifted_sharpened_map_coeffs_file) from cctbx.maptbx.segment_and_split_map import write_ccp4_map new_map_coeffs.as_mtz_dataset( column_root_label='FWT').mtz_object().write( file_name=output_map_coeffs_file) print >> out, "\nWrote sharpened map_coeffs to %s" % ( output_map_coeffs_file) return new_map_data, new_map_coeffs, crystal_symmetry
def run(args,out=sys.stdout): # Get the parameters params=get_params(args,out=out) # get map_data and crystal_symmetry map_data,crystal_symmetry=get_map(params=params,out=out) # auto-sharpen the map from cctbx.maptbx.segment_and_split_map import auto_sharpen_map_or_map_coeffs new_map_data=auto_sharpen_map_or_map_coeffs( resolution=params.crystal_info.resolution, # required crystal_symmetry=crystal_symmetry, map=map_data, solvent_content=params.crystal_info.solvent_content, box_in_auto_sharpen=params.map_modification.box_in_auto_sharpen, auto_sharpen_methods=params.map_modification.auto_sharpen_methods, residual_target=params.map_modification.residual_target, region_weight=params.map_modification.region_weight, sa_percent=params.map_modification.sa_percent, eps=params.map_modification.eps, n_bins=params.map_modification.n_bins, max_regions_to_test=params.map_modification.max_regions_to_test, fraction_occupied=params.map_modification.fraction_occupied, sharpening_target=params.map_modification.sharpening_target, d_min_ratio=params.map_modification.d_min_ratio, max_box_fraction=params.map_modification.max_box_fraction, k_sharpen=params.map_modification.max_box_fraction, search_b_min=params.map_modification.search_b_min, search_b_max=params.map_modification.search_b_max, search_b_n=params.map_modification.search_b_n, b_iso=params.map_modification.b_iso, b_sharpen=params.map_modification.b_sharpen, resolution_dependent_b=\ params.map_modification.resolution_dependent_b, out=out) # convert to map_coeffs also from cctbx.maptbx.segment_and_split_map import get_f_phases_from_map new_map_coeffs=get_f_phases_from_map(map_data=new_map_data, crystal_symmetry=crystal_symmetry, d_min=params.crystal_info.resolution, d_min_ratio=params.map_modification.d_min_ratio, return_as_map_coeffs=True, out=out) # write out the new map_coeffs and map if requested: if params.output_files.shifted_sharpened_map_file: output_map_file=os.path.join(params.output_files.output_directory, params.output_files.shifted_sharpened_map_file) from cctbx.maptbx.segment_and_split_map import write_ccp4_map write_ccp4_map(crystal_symmetry, output_map_file, new_map_data) print >>out,"\nWrote sharpened map to %s" %(output_map_file) if params.output_files.shifted_sharpened_map_coeffs_file: output_map_coeffs_file=os.path.join(params.output_files.output_directory, params.output_files.shifted_sharpened_map_coeffs_file) from cctbx.maptbx.segment_and_split_map import write_ccp4_map new_map_coeffs.as_mtz_dataset(column_root_label='FWT').mtz_object().write( file_name=output_map_coeffs_file) print >>out,"\nWrote sharpened map_coeffs to %s" %(output_map_coeffs_file) return new_map_data,new_map_coeffs,crystal_symmetry