Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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