示例#1
0
def exercise():
    from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs
    base = "tst_pick_ca"
    mtz_file, pdb_file = generate_calcium_inputs(file_base=base,
                                                 anonymize=True)
    time.sleep(2)
    args = [
        "\"%s\"" % pdb_file,
        "\"%s\"" % mtz_file, "wavelength=1.1", "nproc=1", "use_phaser=False",
        "fpp_ratio_max=1.2"
    ]
    result = easy_run.fully_buffered("mmtbx.water_screen %s" %
                                     " ".join(args)).raise_if_errors()
    n_ca = 0
    for line in result.stdout_lines:
        if "Probable cation: CA+2" in line:
            n_ca += 1
    if (n_ca != 1):
        print("\n".join(result.stdout_lines))
        raise RuntimeError("Expected 1 Ca2+, found %d" % n_ca)
    os.remove(pdb_file)
    os.remove(mtz_file)
    os.remove(os.path.splitext(pdb_file)[0][:-4] + ".pdb")
    os.remove(os.path.splitext(pdb_file)[0][:-4] + "_fmodel.eff")
    print("OK")
def exercise():
  try :
    import svm      # import dependency
    import svmutil  # import dependency
  except ImportError :
    print "libsvm not available, skipping this test"
    return
  from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs
  base = "tst_pick_ca_svm"
  mtz_file, pdb_file = generate_calcium_inputs(file_base=base, anonymize=True)
  args = ["\"%s\"" % pdb_file, "\"%s\"" % mtz_file, "wavelength=1.1",
    "nproc=1", "use_phaser=False", "use_svm=True", "elements=CA,ZN"]
  result = easy_run.fully_buffered("mmtbx.water_screen %s" % " ".join(args)
    ).raise_if_errors()
  os.remove(pdb_file)
  os.remove(mtz_file)
  # "zn_frag_hoh.pdb" => "zn_frag_fmodel.eff"
  os.remove(os.path.splitext(pdb_file)[0][:-4] + ".pdb")
  os.remove(os.path.splitext(pdb_file)[0][:-4] + "_fmodel.eff")
  n_ca = 0
  for line in result.stdout_lines:
    if ("Final choice: CA" in line):
      n_ca += 1
  if (n_ca != 1):
    print "\n".join(result.stdout_lines)
    raise RuntimeError("Expected 1 Ca2+, found %d" % n_ca)
  print "OK"
def exercise_omit_atom_selection():
    # combine an omit selection with a CCP4 map selection - this used to crash
    from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs
    import mmtbx.command_line.maps
    mtz_file, pdb_file = generate_calcium_inputs(
        file_base="tst_mmtbx_maps_misc2")
    with open("tst_mmtbx_maps_misc2.eff", "w") as f:
        f.write("""\
    maps {
      map {
        map_type = 2mFo-DFc
        format = xplor *ccp4
        file_name = tst_mmtbx_maps_misc2.ccp4
        region = *selection cell
        atom_selection = "resname HOH"
      }
    }""")
    mmtbx.command_line.maps.run(args=[
        mtz_file,
        pdb_file,
        "tst_mmtbx_maps_misc2.eff",
        "omit.selection=\"resname TRP\"",
        "prefix=tst_mmtbx_maps_misc2",
    ],
                                log=null_out())
示例#4
0
def exercise () :
  from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs
  from mmtbx.command_line import find_peaks_holes
  mtz_file, pdb_file = generate_calcium_inputs(
    file_base = "tst_find_peaks_holes", anonymize = True)
  out = StringIO()
  peaks_holes = find_peaks_holes.run(
    args=[pdb_file, mtz_file],
    out=out)
  peaks_holes.save_pdb_file(file_name="tst_fph_peaks.pdb", log=null_out())
  p = easy_pickle.dumps(peaks_holes)
  s = peaks_holes.get_summary()
  sp = easy_pickle.dumps(s)
  out2 = StringIO()
  s.show(out=out2)
  lines = out2.getvalue().splitlines()
  assert ("""  anomalous H2O (anomalous > 3):      1""" in lines)
  assert ("""  anomalous non-water atoms:          0""" in lines)
  assert ("""  mFo-DFc >  9:                       0""" in lines)
  peaks_holes = find_peaks_holes.run(
    args=[pdb_file, mtz_file, "filter_peaks_by_2fofc=1.0"],
    out=null_out())
  out3 = StringIO()
  peaks_holes.get_summary().show(out=out3)
  lines = out3.getvalue().splitlines()
  assert ("""  anomalous > 3:                      0""" in lines)
  out3 = StringIO()
  peaks_holes = find_peaks_holes.run(
    args=[pdb_file, mtz_file, "include_peaks_near_model=True",],
    out=out3)
  lines = out3.getvalue().splitlines()
  assert ("""  mFo-DFc >  9:                       1""" in lines)
  os.remove(mtz_file)
  os.remove(pdb_file)
示例#5
0
def exercise () :
  try :
    import svm      # import dependency
    import svmutil  # import dependency
  except ImportError :
    print "libsvm not available, skipping this test"
    return
  from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs
  base = "tst_pick_ca_svm"
  mtz_file, pdb_file = generate_calcium_inputs(file_base=base, anonymize=True)
  args = ["\"%s\"" % pdb_file, "\"%s\"" % mtz_file, "wavelength=1.1",
    "nproc=1", "use_phaser=False", "use_svm=True", "elements=CA,ZN"]
  result = easy_run.fully_buffered("mmtbx.water_screen %s" % " ".join(args)
    ).raise_if_errors()
  os.remove(pdb_file)
  os.remove(mtz_file)
  # "zn_frag_hoh.pdb" => "zn_frag_fmodel.eff"
  os.remove(os.path.splitext(pdb_file)[0][:-4] + ".pdb")
  os.remove(os.path.splitext(pdb_file)[0][:-4] + "_fmodel.eff")
  n_ca = 0
  for line in result.stdout_lines:
    if ("Final choice: CA" in line) :
      n_ca += 1
  if (n_ca != 1) :
    print "\n".join(result.stdout_lines)
    raise RuntimeError("Expected 1 Ca2+, found %d" % n_ca)
  print "OK"
def exercise_calcium_substitution () :
  from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs
  from iotbx.file_reader import any_file
  anom_mtz_file, pdb_file = generate_calcium_inputs(
    file_base = "tst_isomorphous_difference_misc_anom", anonymize = False)
  hoh_file = generate_calcium_inputs(
    file_base = "tst_isomorphous_difference_misc_hoh", anonymize = True)[1]
  mtz_file = "tst_isomorphous_difference_misc.mtz"
  args = [
    "phenix.fmodel",
    hoh_file,
    "high_resolution=1.5",
    "r_free_flags_fraction=0.1",
    "type=real",
    "output.file_name=" + mtz_file
    ]
  easy_run.fully_buffered(args).raise_if_errors()
  time.sleep(2)
  assert os.path.isfile(mtz_file)
  minus_mtz_file = "tst_isomorphous_difference_misc_anon_minus.mtz"
  args = [
    "phenix.fobs_minus_fobs_map",
    "f_obs_1_file=" + anom_mtz_file,
    "f_obs_2_file=" + mtz_file,
    pdb_file,
    "omit_selection=\"element CA\"",
    "multiscale=True",
    "output_file=" + minus_mtz_file,
  ]
  result = easy_run.fully_buffered(args).raise_if_errors()
  assert os.path.isfile(minus_mtz_file)
  assert ("1 atoms selected for removal" in result.stdout_lines)
  f = any_file(minus_mtz_file)
  coeffs = f.file_server.miller_arrays[0]
  fft_map = coeffs.fft_map(resolution_factor=0.25)
  minus_map = fft_map.apply_sigma_scaling().real_map_unpadded()
  pdb_in = any_file(pdb_file)
  hierarchy = pdb_in.file_object.hierarchy
  xrs = pdb_in.file_object.xray_structure_simple()
  for i_seq, atom in enumerate(hierarchy.atoms()) :
    if (atom.element == "CA") :
      site_frac = xrs.sites_frac()[i_seq]
      val = minus_map.eight_point_interpolation(site_frac)
      assert (val > 40)
def exercise_calcium_substitution():
    from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs
    from iotbx.file_reader import any_file
    anom_mtz_file, pdb_file = generate_calcium_inputs(
        file_base="tst_isomorphous_difference_misc_anom", anonymize=False)
    hoh_file = generate_calcium_inputs(
        file_base="tst_isomorphous_difference_misc_hoh", anonymize=True)[1]
    mtz_file = "tst_isomorphous_difference_misc.mtz"
    args = [
        "phenix.fmodel", hoh_file, "high_resolution=1.5",
        "r_free_flags_fraction=0.1", "type=real",
        "output.file_name=" + mtz_file
    ]
    easy_run.fully_buffered(args).raise_if_errors()
    time.sleep(2)
    assert os.path.isfile(mtz_file)
    minus_mtz_file = "tst_isomorphous_difference_misc_anon_minus.mtz"
    args = [
        "phenix.fobs_minus_fobs_map",
        "f_obs_1_file=" + anom_mtz_file,
        "f_obs_2_file=" + mtz_file,
        pdb_file,
        "omit_selection=\"element CA\"",
        "multiscale=True",
        "output_file=" + minus_mtz_file,
    ]
    result = easy_run.fully_buffered(args).raise_if_errors()
    assert os.path.isfile(minus_mtz_file)
    assert ("1 atoms selected for removal" in result.stdout_lines)
    f = any_file(minus_mtz_file)
    coeffs = f.file_server.miller_arrays[0]
    fft_map = coeffs.fft_map(resolution_factor=0.25)
    minus_map = fft_map.apply_sigma_scaling().real_map_unpadded()
    pdb_in = any_file(pdb_file)
    hierarchy = pdb_in.file_object.hierarchy
    xrs = pdb_in.file_object.xray_structure_simple()
    for i_seq, atom in enumerate(hierarchy.atoms()):
        if (atom.element == "CA"):
            site_frac = xrs.sites_frac()[i_seq]
            val = minus_map.eight_point_interpolation(site_frac)
            assert (val > 40)
示例#8
0
def exercise_1 () :
  from mmtbx.regression import make_fake_anomalous_data
  import mmtbx.maps.utils
  import mmtbx.utils
  from iotbx.file_reader import any_file
  mtz_file, pdb_file = make_fake_anomalous_data.generate_calcium_inputs(
    "tst_map_utils")
  # create_map_from_pdb_and_mtz
  mfn1 = "tst_map_utils_1.mtz"
  mmtbx.maps.utils.create_map_from_pdb_and_mtz(
    pdb_file=pdb_file,
    mtz_file=mtz_file,
    output_file=mfn1,
    fill=False,
    out=null_out())
  assert (os.path.isfile(mfn1))
  maps_in = any_file(mfn1)
  assert (len(maps_in.file_server.miller_arrays) == 3)
  # generate_water_omit_map
  pdb_in = any_file(pdb_file)
  hierarchy = pdb_in.file_object.hierarchy
  xrs = pdb_in.file_object.xray_structure_simple()
  mtz_in = any_file(mtz_file)
  f_obs = mtz_in.file_server.miller_arrays[0]
  flags = mtz_in.file_server.miller_arrays[1]
  flags = flags.customized_copy(data=flags.data()==1)
  fmodel = mmtbx.utils.fmodel_simple(
    f_obs=f_obs,
    r_free_flags=flags,
    scattering_table="n_gaussian",
    xray_structures=[xrs],
    bulk_solvent_correction=False,
    skip_twin_detection=True)
  omit = mmtbx.maps.utils.generate_water_omit_map(
    fmodel=fmodel,
    pdb_hierarchy=hierarchy,
    log=null_out())
  assert (omit.n_waters == 3)
  mfn2 = "tst_map_utils_2.mtz"
  pdbfn2 = "tst_map_utils_2.pdb"
  omit.write_map_coeffs(mfn2)
  omit.write_pdb_file(pdbfn2)
  for fn in [mfn1, mfn2, pdbfn2] :
    os.remove(fn)
示例#9
0
def exercise():
  from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs
  base = "tst_validate_ca"
  mtz_file, pdb_file = generate_calcium_inputs(file_base=base, anonymize=False)
  time.sleep(2)
  args = ["\"%s\"" % pdb_file, "\"%s\"" % mtz_file, "wavelength=1.12",
          "nproc=1"]
  result = easy_run.fully_buffered("mmtbx.validate_ions %s" % " ".join(args)
    ).raise_if_errors()
  n_ca, n_bad = 0, 0
  for line in result.stdout_lines:
    if "| CA" in line:
      n_ca += 1
    if "!!!" in line:
      n_bad += 1
  assert n_ca == 1 and n_bad == 0
  for ext in [".pdb", ".mtz", "_fmodel.eff"]:
    os.remove(base + ext)
  print("OK")
示例#10
0
def exercise () :
  from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs
  base = "tst_validate_ca"
  mtz_file, pdb_file = generate_calcium_inputs(file_base=base, anonymize=False)
  time.sleep(2)
  args = ["\"%s\"" % pdb_file, "\"%s\"" % mtz_file, "wavelength=1.12",
          "nproc=1"]
  result = easy_run.fully_buffered("mmtbx.validate_ions %s" % " ".join(args)
    ).raise_if_errors()
  n_ca, n_bad = 0, 0
  for line in result.stdout_lines:
    if "| CA" in line:
      n_ca += 1
    if "!!!" in line:
      n_bad += 1
  assert n_ca == 1 and n_bad == 0
  for ext in [".pdb", ".mtz", "_fmodel.eff"]:
    os.remove(base + ext)
  print "OK"
示例#11
0
def exercise_1():
    from mmtbx.regression import make_fake_anomalous_data
    import mmtbx.maps.utils
    import mmtbx.utils
    from iotbx.file_reader import any_file
    mtz_file, pdb_file = make_fake_anomalous_data.generate_calcium_inputs(
        "tst_map_utils")
    # create_map_from_pdb_and_mtz
    mfn1 = "tst_map_utils_1.mtz"
    mmtbx.maps.utils.create_map_from_pdb_and_mtz(pdb_file=pdb_file,
                                                 mtz_file=mtz_file,
                                                 output_file=mfn1,
                                                 fill=False,
                                                 out=null_out())
    assert (os.path.isfile(mfn1))
    maps_in = any_file(mfn1)
    assert (len(maps_in.file_server.miller_arrays) == 3)
    # generate_water_omit_map
    pdb_in = any_file(pdb_file)
    hierarchy = pdb_in.file_object.hierarchy
    xrs = pdb_in.file_object.xray_structure_simple()
    mtz_in = any_file(mtz_file)
    f_obs = mtz_in.file_server.miller_arrays[0]
    flags = mtz_in.file_server.miller_arrays[1]
    flags = flags.customized_copy(data=flags.data() == 1)
    fmodel = mmtbx.utils.fmodel_simple(f_obs=f_obs,
                                       r_free_flags=flags,
                                       scattering_table="n_gaussian",
                                       xray_structures=[xrs],
                                       bulk_solvent_correction=False,
                                       skip_twin_detection=True)
    omit = mmtbx.maps.utils.generate_water_omit_map(fmodel=fmodel,
                                                    pdb_hierarchy=hierarchy,
                                                    log=null_out())
    assert (omit.n_waters == 3)
    mfn2 = "tst_map_utils_2.mtz"
    pdbfn2 = "tst_map_utils_2.pdb"
    omit.write_map_coeffs(mfn2)
    omit.write_pdb_file(pdbfn2)
    for fn in [mfn1, mfn2, pdbfn2]:
        os.remove(fn)
示例#12
0
def exercise () :
  from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs
  base = "tst_pick_ca"
  mtz_file, pdb_file = generate_calcium_inputs(file_base=base, anonymize=True)
  time.sleep(2)
  args = ["\"%s\"" % pdb_file, "\"%s\"" % mtz_file, "wavelength=1.1",
    "nproc=1", "use_phaser=False", "fpp_ratio_max=1.2"]
  result = easy_run.fully_buffered("mmtbx.water_screen %s" % " ".join(args)
    ).raise_if_errors()
  n_ca = 0
  for line in result.stdout_lines:
    if "Probable cation: CA+2" in line:
      n_ca += 1
  if (n_ca != 1) :
    print "\n".join(result.stdout_lines)
    raise RuntimeError("Expected 1 Ca2+, found %d" % n_ca)
  os.remove(pdb_file)
  os.remove(mtz_file)
  os.remove(os.path.splitext(pdb_file)[0][:-4] + ".pdb")
  os.remove(os.path.splitext(pdb_file)[0][:-4] + "_fmodel.eff")
  print "OK"
示例#13
0
def exercise_omit_atom_selection () :
  # combine an omit selection with a CCP4 map selection - this used to crash
  from mmtbx.regression.make_fake_anomalous_data import generate_calcium_inputs
  import mmtbx.command_line.maps
  mtz_file, pdb_file = generate_calcium_inputs(
    file_base="tst_mmtbx_maps_misc2")
  open("tst_mmtbx_maps_misc2.eff", "w").write("""\
    maps {
      map {
        map_type = 2mFo-DFc
        format = xplor *ccp4
        file_name = tst_mmtbx_maps_misc2.ccp4
        region = *selection cell
        atom_selection = "resname HOH"
      }
    }""")
  mmtbx.command_line.maps.run(args=[
    mtz_file,
    pdb_file,
    "tst_mmtbx_maps_misc2.eff",
    "omit.selection=\"resname TRP\"",
    "prefix=tst_mmtbx_maps_misc2",
  ], log=null_out())