Пример #1
0
def test_integrator_3d(dials_data, nproc):
    from math import pi

    from dxtbx.model.experiment_list import ExperimentListFactory

    from dials.algorithms.profile_model.gaussian_rs import Model
    from dials.array_family import flex

    path = dials_data("centroid_test_data").join("experiments.json").strpath

    exlist = ExperimentListFactory.from_json_file(path)
    exlist[0].profile = Model(None,
                              n_sigma=3,
                              sigma_b=0.024 * pi / 180.0,
                              sigma_m=0.044 * pi / 180.0)

    rlist = flex.reflection_table.from_predictions(exlist[0])
    rlist["id"] = flex.int(len(rlist), 0)
    rlist.compute_bbox(exlist)
    rlist.compute_zeta_multi(exlist)
    rlist.compute_d(exlist)

    from libtbx.phil import parse

    from dials.algorithms.integration.integrator import Integrator3D, phil_scope

    params = phil_scope.fetch(
        parse("""
    integration.block.size=%d
    integration.mp.nproc=%d
    integration.profile_fitting=False
  """ % (5, nproc))).extract()

    integrator = Integrator3D(exlist, rlist, params)
    integrator.integrate()
Пример #2
0
    def run(self):
        from dials.algorithms.integration.integrator import Integrator3D
        from dials.algorithms.integration.integrator import phil_scope
        from dials.algorithms.integration.integrator import Parameters
        import StringIO
        import sys
        from libtbx.phil import parse

        params = phil_scope.fetch(
            parse('''
      integration.block.size=%d
      integration.mp.nproc=%d
      integration.profile_fitting=False
    ''' % (5, self.nproc))).extract()

        output = StringIO.StringIO()
        stdout = sys.stdout
        sys.stdout = output
        try:
            integrator = Integrator3D(self.exlist, self.rlist,
                                      Parameters.from_phil(params.integration))
            result = integrator.integrate()
        except Exception:
            print output
            raise

        sys.stdout = stdout

        print 'OK'