Ejemplo n.º 1
0
    def __init__(self, image_number, *args):
        ScanVaryingCrystalOrientationParameterisation.__init__(self, *args)

        # set overloads now, after construction of the base class
        self.compose = self._compose
        self.get_state = self._get_state

        self.set_time_point(image_number)
  def __init__(self, image_number, *args):

    ScanVaryingCrystalOrientationParameterisation.__init__(self, *args)

    # set overloads now, after construction of the base class
    self.compose = self._compose
    self.get_state = self._get_state

    self.set_time_point(image_number)
Ejemplo n.º 3
0
    def create_models(self, cmdline_overrides=None):
        from dxtbx.model import ScanFactory
        from libtbx.phil import parse

        from dials.test.algorithms.refinement.setup_geometry import Extract

        if cmdline_overrides is None:
            cmdline_overrides = []
        overrides = """geometry.parameters.crystal.a.length.range = 10 50
geometry.parameters.crystal.b.length.range = 10 50
geometry.parameters.crystal.c.length.range = 10 50"""

        master_phil = parse(
            """
    include scope dials.test.algorithms.refinement.geometry_phil
    """,
            process_includes=True,
        )

        # Extract models
        models = Extract(master_phil,
                         overrides,
                         cmdline_args=cmdline_overrides)
        self.detector = models.detector
        self.goniometer = models.goniometer
        self.crystal = models.crystal
        self.beam = models.beam

        # Make a scan of 1-20 * 0.5 deg images
        sf = ScanFactory()
        self.scan = sf.make_scan((1, 20), 0.5, (0, 0.5), list(range(20)))

        # Generate an ExperimentList
        self.experiments = ExperimentList()
        self.experiments.append(
            Experiment(
                beam=self.beam,
                detector=self.detector,
                goniometer=self.goniometer,
                scan=self.scan,
                crystal=self.crystal,
                imageset=None,
            ))

        # Create a reflection predictor for the experiments
        self.ref_predictor = ScansExperimentsPredictor(self.experiments)

        # Create scan-varying parameterisations of these models, with 3 samples
        self.det_param = ScanVaryingDetectorParameterisationSinglePanel(
            self.detector, self.scan.get_array_range(), 3)
        self.s0_param = ScanVaryingBeamParameterisation(
            self.beam, self.scan.get_array_range(), 3, self.goniometer)
        self.xlo_param = ScanVaryingCrystalOrientationParameterisation(
            self.crystal, self.scan.get_array_range(), 3)
        self.xluc_param = ScanVaryingCrystalUnitCellParameterisation(
            self.crystal, self.scan.get_array_range(), 3)
        self.gon_param = ScanVaryingGoniometerParameterisation(
            self.goniometer, self.scan.get_array_range(), 3, self.beam)
  def _get_state(self):
    """override for get_state to do so only at the requested t"""

    # ensure the state is updated by re-composing
    self.compose()
    return ScanVaryingCrystalOrientationParameterisation.get_state(self)
  def _compose(self):
    """override for compose to pass in the requested t"""

    ScanVaryingCrystalOrientationParameterisation.compose(self,
            self.image_number)
Ejemplo n.º 6
0
    def _get_state(self):
        """override for get_state to do so only at the requested t"""

        # ensure the state is updated by re-composing
        self.compose()
        return ScanVaryingCrystalOrientationParameterisation.get_state(self)
Ejemplo n.º 7
0
    def _compose(self):
        """override for compose to pass in the requested t"""

        ScanVaryingCrystalOrientationParameterisation.compose(
            self, self.image_number)
  def __init__(self, image_number, *args):

    ScanVaryingCrystalOrientationParameterisation.__init__(self, *args)
    self.set_time_point(image_number)
mydetector = models.detector
mygonio = models.goniometer
mycrystal = models.crystal
mybeam = models.beam

# Make a scan of 1-360 * 0.5 deg images
sf = scan_factory()
myscan = sf.make_scan((1,360), 0.5, (0, 0.5), range(360))

# Create parameterisations of these models, with 5 samples for the
# scan-varying crystal parameterisations

det_param = DetectorParameterisationSinglePanel(mydetector)
s0_param = BeamParameterisation(mybeam, mygonio)
xlo_param = ScanVaryingCrystalOrientationParameterisation(
        mycrystal, myscan.get_array_range(), 5)
xluc_param = ScanVaryingCrystalUnitCellParameterisation(
        mycrystal, myscan.get_array_range(), 5)

#### Cause the crystal U and B to vary over the scan

# Vary orientation angles by ~1.0 mrad each checkpoint
p_vals = xlo_param.get_param_vals()
sigmas = [1.0] * len(p_vals)
new_vals = random_param_shift(p_vals, sigmas)
xlo_param.set_param_vals(new_vals)

# Vary unit cell parameters, on order of 1% of the initial metrical
# matrix parameters
p_vals = xluc_param.get_param_vals()
sigmas = [0.01 * p for p in p_vals]