Example #1
0
def rmsd_start_final_plots_annealing(pdb_file,
                                     random_displacements_parameterization,
                                     tst_tardy_pdb_params,
                                     parameter_trial_table, cp_n_trials, rmsds,
                                     write_separate_pages):
    ttd = dict(parameter_trial_table)
    plot_data = {}
    for h in ttd["structure_factors_high_resolution"]:
        plot_data[h] = {}
        for e in ttd["emulate_cartesian"]:
            plot_data[h][e] = {}
            for d in ttd["real_space_gradients_delta_resolution_factor"]:
                plot_data[h][e][d] = {}
                for w in ttd["real_space_target_weight"]:
                    plot_data[h][e][d][w] = {}
                    for t in ttd["start_temperature_kelvin"]:
                        plot_data[h][e][d][w][t] = {}
                        for c in ttd["number_of_cooling_steps"]:
                            plot_data[h][e][d][w][t][c] = group_args(
                                rmsd_start=flex.double(),
                                rmsd_final=flex.double())
    #
    p = tst_tardy_pdb_params
    for cp_i_trial in xrange(cp_n_trials):
        tst_tardy_comprehensive.set_parameters(
            params=p, trial_table=parameter_trial_table, cp_i_trial=cp_i_trial)
        plot = plot_data[p.structure_factors_high_resolution][
            p.emulate_cartesian][
                p.real_space_gradients_delta_resolution_factor][
                    p.real_space_target_weight][p.start_temperature_kelvin][
                        p.number_of_cooling_steps]
        for rmsd in rmsds[cp_i_trial]:
            plot.rmsd_start.append(rmsd[0])
            plot.rmsd_final.append(rmsd[-1])
    #
    extra_type = None
    if (pdb_file == "1yjp_box.pdb"):
        if (random_displacements_parameterization == "constrained"):
            extra_type = 0
    elif (pdb_file == "1yjp_no_water.pdb"):
        if (random_displacements_parameterization == "cartesian"):
            extra_type = 1
    if (extra_type is not None):
        extra_page = plot_grid(grid=(4, 3),
                               top_labels=[],
                               more_narrow_shift=30)
    else:
        extra_page = None
    mpp = multi_page_plots(file_name="plots_h_e.pdf")
    for i_h, h in enumerate(ttd["structure_factors_high_resolution"]):
        for e in ttd["emulate_cartesian"]:
            short_label = "h%.2f_e%d" % (h, int(e))
            print short_label
            top_labels = [
                compose_top_label(pdb_file,
                                  random_displacements_parameterization, e)
            ]
            top_labels.append("high resol: %.2f, algorithm: annealing" % h)
            page = plot_grid(grid=(4, 3), top_labels=top_labels)
            plot_xy_max = iceil(h * 1.3)
            for d in ttd["real_space_gradients_delta_resolution_factor"]:
                for i_w, w in enumerate(ttd["real_space_target_weight"]):
                    for i_t, t in enumerate(ttd["start_temperature_kelvin"]):
                        for i_c, c in enumerate(
                                ttd["number_of_cooling_steps"]):
                            pd = plot_data[h][e][d][w][t][c]
                            rf = flex.mean(pd.rmsd_final)
                            label = "w%04.0f_t%.0f_c%d: %.2f" % (w, t, c, rf)
                            print "  ", label
                            page.process(grid_ij=(i_t * 2 + i_c, i_w),
                                         xy_max=plot_xy_max,
                                         label=label,
                                         data=zip(pd.rmsd_start,
                                                  pd.rmsd_final))
                            if (extra_type == 0 and h == 3.75 and t == 5000
                                    and c == 500):
                                extra_label = "w_rs = %.0f" % w
                                extra_page.process(grid_ij=(i_w + 1, int(e)),
                                                   xy_max=plot_xy_max,
                                                   label=extra_label,
                                                   data=zip(
                                                       pd.rmsd_start,
                                                       pd.rmsd_final),
                                                   label_font_size=14)
                            elif (extra_type == 1 and w == 100
                                  and (h == 3.75 or h == 5.00) and c == 500):
                                extra_label = u"resol. = %.2f \u00C5" % h
                                extra_page.process(grid_ij=(i_h, int(e)),
                                                   xy_max=plot_xy_max,
                                                   label=extra_label,
                                                   data=zip(
                                                       pd.rmsd_start,
                                                       pd.rmsd_final),
                                                   label_font_size=14)
            if (write_separate_pages):
                page.write_to_file(file_name="plot_%s.pdf" % short_label)
            mpp.add_page(page=page)
    mpp.write_to_file()
    if (extra_page is not None):
        from reportlab.graphics.shapes import String
        if (extra_type == 0): ty = 540
        else: ty = 372
        extra_page.top_group.add(
            String(120,
                   ty,
                   "Torsion-Angle SA",
                   fontSize=16,
                   textAnchor="middle"))
        extra_page.top_group.add(
            String(280 + 2 / 3,
                   ty,
                   "Cartesian SA",
                   fontSize=16,
                   textAnchor="middle"))
        extra_page.write_to_file(file_name="plot_extra.pdf")
    #
    mms = min_mean_stats(algorithm="annealing",
                         random_displacements_parameterization=
                         random_displacements_parameterization,
                         pdb_file=pdb_file)
    assert ttd["emulate_cartesian"] == (False, True)
    assert len(ttd["real_space_gradients_delta_resolution_factor"]) == 1
    for h in ttd["structure_factors_high_resolution"]:
        for d in ttd["real_space_gradients_delta_resolution_factor"]:
            for w in ttd["real_space_target_weight"]:
                for t in ttd["start_temperature_kelvin"]:
                    for c in ttd["number_of_cooling_steps"]:
                        mms.collect(rmsd_t_c=[
                            plot_data[h][e][d][w][t][c].rmsd_final
                            for e in (False, True)
                        ],
                                    param_values=(h, w, t, c))
    mms.finalize().show().pickle()
Example #2
0
def rmsd_start_final_plots_annealing(
      pdb_file,
      random_displacements_parameterization,
      tst_tardy_pdb_params,
      parameter_trial_table,
      cp_n_trials,
      rmsds,
      write_separate_pages):
  ttd = dict(parameter_trial_table)
  plot_data = {}
  for h in ttd["structure_factors_high_resolution"]:
    plot_data[h] = {}
    for e in  ttd["emulate_cartesian"]:
      plot_data[h][e] = {}
      for d in ttd["real_space_gradients_delta_resolution_factor"]:
        plot_data[h][e][d] = {}
        for w in ttd["real_space_target_weight"]:
          plot_data[h][e][d][w] = {}
          for t in ttd["start_temperature_kelvin"]:
            plot_data[h][e][d][w][t] = {}
            for c in ttd["number_of_cooling_steps"]:
              plot_data[h][e][d][w][t][c] = group_args(
                rmsd_start=flex.double(),
                rmsd_final=flex.double())
  #
  p = tst_tardy_pdb_params
  for cp_i_trial in xrange(cp_n_trials):
    tst_tardy_comprehensive.set_parameters(
      params=p,
      trial_table=parameter_trial_table,
      cp_i_trial=cp_i_trial)
    plot = plot_data[
      p.structure_factors_high_resolution][
      p.emulate_cartesian][
      p.real_space_gradients_delta_resolution_factor][
      p.real_space_target_weight][
      p.start_temperature_kelvin][
      p.number_of_cooling_steps]
    for rmsd in rmsds[cp_i_trial]:
      plot.rmsd_start.append(rmsd[0])
      plot.rmsd_final.append(rmsd[-1])
  #
  extra_type = None
  if (pdb_file == "1yjp_box.pdb"):
    if (random_displacements_parameterization == "constrained"):
      extra_type = 0
  elif (pdb_file == "1yjp_no_water.pdb"):
    if (random_displacements_parameterization == "cartesian"):
      extra_type = 1
  if (extra_type is not None):
    extra_page = plot_grid(
      grid=(4,3), top_labels=[], more_narrow_shift=30)
  else:
    extra_page = None
  mpp = multi_page_plots(file_name="plots_h_e.pdf")
  for i_h,h in enumerate(ttd["structure_factors_high_resolution"]):
    for e in  ttd["emulate_cartesian"]:
      short_label = "h%.2f_e%d" % (h, int(e))
      print short_label
      top_labels = [compose_top_label(
        pdb_file, random_displacements_parameterization, e)]
      top_labels.append("high resol: %.2f, algorithm: annealing" % h)
      page = plot_grid(grid=(4,3), top_labels=top_labels)
      plot_xy_max = iceil(h * 1.3)
      for d in ttd["real_space_gradients_delta_resolution_factor"]:
        for i_w,w in enumerate(ttd["real_space_target_weight"]):
          for i_t,t in enumerate(ttd["start_temperature_kelvin"]):
            for i_c,c in enumerate(ttd["number_of_cooling_steps"]):
              pd = plot_data[h][e][d][w][t][c]
              rf = flex.mean(pd.rmsd_final)
              label = "w%04.0f_t%.0f_c%d: %.2f" % (w, t, c, rf)
              print "  ", label
              page.process(
                grid_ij=(i_t*2+i_c, i_w),
                xy_max=plot_xy_max,
                label=label,
                data=zip(pd.rmsd_start, pd.rmsd_final))
              if (extra_type == 0
                  and h == 3.75
                  and t == 5000
                  and c == 500):
                extra_label = "w_rs = %.0f" % w
                extra_page.process(
                  grid_ij=(i_w+1, int(e)),
                  xy_max=plot_xy_max,
                  label=extra_label,
                  data=zip(pd.rmsd_start, pd.rmsd_final),
                  label_font_size=14)
              elif (extra_type == 1
                    and w == 100
                    and (h == 3.75 or h == 5.00)
                    and c == 500):
                extra_label = u"resol. = %.2f \u00C5" % h
                extra_page.process(
                  grid_ij=(i_h, int(e)),
                  xy_max=plot_xy_max,
                  label=extra_label,
                  data=zip(pd.rmsd_start, pd.rmsd_final),
                  label_font_size=14)
      if (write_separate_pages):
        page.write_to_file(file_name="plot_%s.pdf" % short_label)
      mpp.add_page(page=page)
  mpp.write_to_file()
  if (extra_page is not None):
    from reportlab.graphics.shapes import String
    if (extra_type == 0): ty = 540
    else:                 ty = 372
    extra_page.top_group.add(String(
      120, ty,
      "Torsion-Angle SA",
      fontSize=16,
      textAnchor="middle"))
    extra_page.top_group.add(String(
      280+2/3, ty,
      "Cartesian SA",
      fontSize=16,
      textAnchor="middle"))
    extra_page.write_to_file(file_name="plot_extra.pdf")
  #
  mms = min_mean_stats(
    algorithm="annealing",
    random_displacements_parameterization=random_displacements_parameterization,
    pdb_file=pdb_file)
  assert ttd["emulate_cartesian"] == (False, True)
  assert len(ttd["real_space_gradients_delta_resolution_factor"]) == 1
  for h in ttd["structure_factors_high_resolution"]:
    for d in ttd["real_space_gradients_delta_resolution_factor"]:
      for w in ttd["real_space_target_weight"]:
        for t in ttd["start_temperature_kelvin"]:
          for c in ttd["number_of_cooling_steps"]:
            mms.collect(
              rmsd_t_c=[plot_data[h][e][d][w][t][c].rmsd_final
                for e in (False, True)],
              param_values=(h,w,t,c))
  mms.finalize().show().pickle()
Example #3
0
def rmsd_start_final_plots_minimization(pdb_file,
                                        random_displacements_parameterization,
                                        tst_tardy_pdb_params,
                                        parameter_trial_table, cp_n_trials,
                                        rmsds, rmsd_n_n, write_separate_pages):
    ttd = dict(parameter_trial_table)
    plot_data = {}
    for h in ttd["structure_factors_high_resolution"]:
        plot_data[h] = {}
        for e in ttd["emulate_cartesian"]:
            plot_data[h][e] = {}
            for d in ttd["real_space_gradients_delta_resolution_factor"]:
                plot_data[h][e][d] = {}
                for w in ttd["real_space_target_weight"]:
                    plot_data[h][e][d][w] = group_args(
                        rmsd_start=flex.double(),
                        rmsd_final=flex.double(),
                        rmsd_n=flex.double())
    #
    p = tst_tardy_pdb_params
    for cp_i_trial in xrange(cp_n_trials):
        tst_tardy_comprehensive.set_parameters(
            params=p, trial_table=parameter_trial_table, cp_i_trial=cp_i_trial)
        plot = plot_data[p.structure_factors_high_resolution][
            p.emulate_cartesian][
                p.real_space_gradients_delta_resolution_factor][
                    p.real_space_target_weight]
        for rmsd in rmsds[cp_i_trial]:
            plot.rmsd_start.append(rmsd[0])
            plot.rmsd_final.append(rmsd[-1])
            plot.rmsd_n.append(rmsd[min(len(rmsd) - 1, rmsd_n_n)])
    #
    mpp = multi_page_plots(file_name="plots_h_e.pdf")
    for e in ttd["emulate_cartesian"]:
        short_label = "e%d" % int(e)
        print short_label
        top_labels = [
            compose_top_label(pdb_file, random_displacements_parameterization,
                              e), "algorithm: minimization"
        ]
        page = plot_grid(grid=(4, 3), top_labels=top_labels)
        w_d_ranks_rn = {}
        w_d_ranks_rf = {}
        for d in ttd["real_space_gradients_delta_resolution_factor"]:
            for w in ttd["real_space_target_weight"]:
                w_d_ranks_rn[(w, d)] = []
                w_d_ranks_rf[(w, d)] = []
        for i_h, h in enumerate(ttd["structure_factors_high_resolution"]):
            plot_xy_max = iceil(h * 1.3)
            page_rn = []
            page_rf = []
            for d in ttd["real_space_gradients_delta_resolution_factor"]:
                for i_w, w in enumerate(ttd["real_space_target_weight"]):
                    pd = plot_data[h][e][d][w]
                    rn = flex.mean(pd.rmsd_n)
                    rf = flex.mean(pd.rmsd_final)
                    page_rn.append((rn, (w, d)))
                    page_rf.append((rf, (w, d)))
                    label = "h%.2f_w%04.0f: %d=%.2f, %.2f" % (h, w, rmsd_n_n,
                                                              rn, rf)
                    print "  ", label
                    page.process(grid_ij=(i_h, i_w),
                                 xy_max=plot_xy_max,
                                 label=label,
                                 data=zip(pd.rmsd_start, pd.rmsd_final))

            def cmp_rx(a, b):
                result = cmp(a[0], b[0])
                if (result == 0):
                    result = cmp(a[1], b[1])
                return result

            page_rn.sort(cmp_rx)
            page_rf.sort(cmp_rx)
            for i, (r, w_d) in enumerate(page_rn):
                w_d_ranks_rn[w_d].append(i)
            for i, (r, w_d) in enumerate(page_rf):
                w_d_ranks_rf[w_d].append(i)
        if (write_separate_pages):
            page.write_to_file(file_name="plot_%s.pdf" % short_label)
        mpp.add_page(page=page)
        w_d_ranks_rn = w_d_ranks_rn.items()
        w_d_ranks_rf = w_d_ranks_rf.items()

        def cmp_w_d_ranks(a, b):
            result = cmp(sum(a[1]), sum(b[1]))
            if (result == 0):
                result = cmp(sorted(a[1]), sorted(b[1]))
                if (result == 0):
                    result = cmp(a[1], b[1])
                    if (result == 0):
                        result = cmp(a[0], b[0])
            return result

        w_d_ranks_rn.sort(cmp_w_d_ranks)
        w_d_ranks_rf.sort(cmp_w_d_ranks)
        print "emulate_cartesian = %s" % str(e)
        for prefix, w_d_ranks in [("rn:", w_d_ranks_rn),
                                  ("rf:", w_d_ranks_rf)]:
            for w_d, ranks in w_d_ranks:
                print prefix, "%4.0f %4.2f" % w_d, "%2d" % sum(ranks), \
                  "[" + ", ".join(["%2d" % r for r in ranks]) + "]"
                prefix = "   "
            print
    mpp.write_to_file()
    #
    mms = min_mean_stats(algorithm="minimization",
                         random_displacements_parameterization=
                         random_displacements_parameterization,
                         pdb_file=pdb_file)
    assert ttd["emulate_cartesian"] == (False, True)
    assert len(ttd["real_space_gradients_delta_resolution_factor"]) == 1
    for h in ttd["structure_factors_high_resolution"]:
        for d in ttd["real_space_gradients_delta_resolution_factor"]:
            for w in ttd["real_space_target_weight"]:
                mms.collect(rmsd_t_c=[
                    plot_data[h][e][d][w].rmsd_final for e in (False, True)
                ],
                            param_values=(h, w))
    mms.finalize().show().pickle()
Example #4
0
def rmsd_start_final_plots_minimization(
      pdb_file,
      random_displacements_parameterization,
      tst_tardy_pdb_params,
      parameter_trial_table,
      cp_n_trials,
      rmsds,
      rmsd_n_n,
      write_separate_pages):
  ttd = dict(parameter_trial_table)
  plot_data = {}
  for h in ttd["structure_factors_high_resolution"]:
    plot_data[h] = {}
    for e in  ttd["emulate_cartesian"]:
      plot_data[h][e] = {}
      for d in ttd["real_space_gradients_delta_resolution_factor"]:
        plot_data[h][e][d] = {}
        for w in ttd["real_space_target_weight"]:
          plot_data[h][e][d][w] = group_args(
            rmsd_start=flex.double(),
            rmsd_final=flex.double(),
            rmsd_n=flex.double())
  #
  p = tst_tardy_pdb_params
  for cp_i_trial in xrange(cp_n_trials):
    tst_tardy_comprehensive.set_parameters(
      params=p,
      trial_table=parameter_trial_table,
      cp_i_trial=cp_i_trial)
    plot = plot_data[
      p.structure_factors_high_resolution][
      p.emulate_cartesian][
      p.real_space_gradients_delta_resolution_factor][
      p.real_space_target_weight]
    for rmsd in rmsds[cp_i_trial]:
      plot.rmsd_start.append(rmsd[0])
      plot.rmsd_final.append(rmsd[-1])
      plot.rmsd_n.append(rmsd[min(len(rmsd)-1, rmsd_n_n)])
  #
  mpp = multi_page_plots(file_name="plots_h_e.pdf")
  for e in  ttd["emulate_cartesian"]:
    short_label = "e%d" % int(e)
    print short_label
    top_labels = [
      compose_top_label(
        pdb_file, random_displacements_parameterization, e),
      "algorithm: minimization"]
    page = plot_grid(grid=(4,3), top_labels=top_labels)
    w_d_ranks_rn = {}
    w_d_ranks_rf = {}
    for d in ttd["real_space_gradients_delta_resolution_factor"]:
      for w in ttd["real_space_target_weight"]:
        w_d_ranks_rn[(w,d)] = []
        w_d_ranks_rf[(w,d)] = []
    for i_h,h in enumerate(ttd["structure_factors_high_resolution"]):
      plot_xy_max = iceil(h * 1.3)
      page_rn = []
      page_rf = []
      for d in ttd["real_space_gradients_delta_resolution_factor"]:
        for i_w,w in enumerate(ttd["real_space_target_weight"]):
          pd = plot_data[h][e][d][w]
          rn = flex.mean(pd.rmsd_n)
          rf = flex.mean(pd.rmsd_final)
          page_rn.append((rn, (w,d)))
          page_rf.append((rf, (w,d)))
          label = "h%.2f_w%04.0f: %d=%.2f, %.2f" % (h, w, rmsd_n_n, rn, rf)
          print "  ", label
          page.process(
            grid_ij=(i_h,i_w),
            xy_max=plot_xy_max,
            label=label,
            data=zip(pd.rmsd_start, pd.rmsd_final))
      def cmp_rx(a, b):
        result = cmp(a[0], b[0])
        if (result == 0):
          result = cmp(a[1], b[1])
        return result
      page_rn.sort(cmp_rx)
      page_rf.sort(cmp_rx)
      for i,(r,w_d) in enumerate(page_rn):
        w_d_ranks_rn[w_d].append(i)
      for i,(r,w_d) in enumerate(page_rf):
        w_d_ranks_rf[w_d].append(i)
    if (write_separate_pages):
      page.write_to_file(file_name="plot_%s.pdf" % short_label)
    mpp.add_page(page=page)
    w_d_ranks_rn = w_d_ranks_rn.items()
    w_d_ranks_rf = w_d_ranks_rf.items()
    def cmp_w_d_ranks(a, b):
      result = cmp(sum(a[1]), sum(b[1]))
      if (result == 0):
        result = cmp(sorted(a[1]), sorted(b[1]))
        if (result == 0):
          result = cmp(a[1], b[1])
          if (result == 0):
            result = cmp(a[0], b[0])
      return result
    w_d_ranks_rn.sort(cmp_w_d_ranks)
    w_d_ranks_rf.sort(cmp_w_d_ranks)
    print "emulate_cartesian = %s" % str(e)
    for prefix,w_d_ranks in [("rn:", w_d_ranks_rn),
                             ("rf:", w_d_ranks_rf)]:
      for w_d,ranks in w_d_ranks:
        print prefix, "%4.0f %4.2f" % w_d, "%2d" % sum(ranks), \
          "[" + ", ".join(["%2d" % r for r in ranks]) + "]"
        prefix = "   "
      print
  mpp.write_to_file()
  #
  mms = min_mean_stats(
    algorithm="minimization",
    random_displacements_parameterization=random_displacements_parameterization,
    pdb_file=pdb_file)
  assert ttd["emulate_cartesian"] == (False, True)
  assert len(ttd["real_space_gradients_delta_resolution_factor"]) == 1
  for h in ttd["structure_factors_high_resolution"]:
    for d in ttd["real_space_gradients_delta_resolution_factor"]:
      for w in ttd["real_space_target_weight"]:
        mms.collect(
          rmsd_t_c=[plot_data[h][e][d][w].rmsd_final for e in (False, True)],
          param_values=(h,w))
  mms.finalize().show().pickle()