Пример #1
0
def make_images(data, tag):
    pixel_size = 0.1  # mm/pixel
    detector = DetectorFactory.simple(
        'PAD', 100,
        (pixel_size * data.focus()[1] / 2, pixel_size * data.focus()[2] / 2),
        '+x', '-y', (pixel_size, pixel_size),
        (data.focus()[2], data.focus()[1]), (-1, 1e6 - 1), [], None)
    beam = BeamFactory.simple(1.0)
    sf = ScanFactory()
    scan = sf.make_scan(image_range=(1, 180),
                        exposure_times=0.1,
                        oscillation=(0, 1.0),
                        epochs=range(180),
                        deg=True)

    # write images in each of three directions
    for slice_id in [0, 1, 2]:
        for idx in xrange(data.focus()[slice_id]):
            if slice_id == 0:  # slow
                data_slice = data[idx:idx + 1, :, :]
                data_slice.reshape(flex.grid(data.focus()[1], data.focus()[2]))
                filename = "fft_frame_%s_mf_%04d.cbf" % (tag, idx)
            elif slice_id == 1:  # med
                data_slice = data[:, idx:idx + 1, :]
                data_slice.reshape(flex.grid(data.focus()[0], data.focus()[2]))
                filename = "fft_frame_%s_sf_%04d.cbf" % (tag, idx)
            elif slice_id == 2:  # fast
                data_slice = data[:, :, idx:idx + 1]
                data_slice.reshape(flex.grid(data.focus()[0], data.focus()[1]))
                filename = "fft_frame_%s_sm_%04d.cbf" % (tag, idx)
            print['slow', 'med', 'fast'][slice_id], idx
            FormatCBFMini.as_file(detector, beam, None, scan, data_slice,
                                  filename)
Пример #2
0
    def get_values(invert_y):
        beam = BeamFactory.simple(wavelength=1)

        if invert_y:
            y_direction = "-y"
        else:
            y_direction = "+y"

        detector = DetectorFactory.simple(
            sensor=DetectorFactory.sensor("PAD"),
            distance=100,
            beam_centre=[50, 50],
            fast_direction="+x",
            slow_direction=y_direction,
            pixel_size=[0.1, 0.1],
            image_size=[1000, 1000],
        )[0]

        wavelength = beam.get_wavelength()
        thickness = 0.5
        table = attenuation_coefficient.get_table("Si")
        mu = table.mu_at_angstrom(wavelength) / 10.0
        t0 = thickness

        for panel in detector:
            panel.set_px_mm_strategy(ParallaxCorrectedPxMmStrategy(mu, t0))
        v1 = detector.pixel_to_millimeter((0, 0))
        v2 = detector.pixel_to_millimeter((1000, 1000))

        return v1, v2
Пример #3
0
def make_images(data, tag):
    pixel_size = 0.1
    detector = DetectorFactory.simple(
        'PAD', 100,
        (pixel_size * data.focus()[1] / 2, pixel_size * data.focus()[2] / 2),
        '+x', '-y', (pixel_size, pixel_size),
        (data.focus()[2], data.focus()[1]), (-1, 1e6 - 1), [], None)
    beam = BeamFactory.simple(1.0)

    for slice_id in [0, 1, 2]:
        for idx in xrange(data.focus()[slice_id]):
            if slice_id == 0:  # slow
                data_slice = data[idx:idx + 1, :, :]
                data_slice.reshape(flex.grid(data.focus()[1], data.focus()[2]))
                filename = "fft_frame_%s_mf_%04d.cbf" % (tag, idx)
            elif slice_id == 1:  # med
                data_slice = data[:, idx:idx + 1, :]
                data_slice.reshape(flex.grid(data.focus()[0], data.focus()[2]))
                filename = "fft_frame_%s_sf_%04d.cbf" % (tag, idx)
            elif slice_id == 2:  # fast
                data_slice = data[:, :, idx:idx + 1]
                data_slice.reshape(flex.grid(data.focus()[0], data.focus()[1]))
                filename = "fft_frame_%s_sm_%04d.cbf" % (tag, idx)
            print['slow', 'med', 'fast'][slice_id], idx
            FormatCBFMini.as_file(detector, beam, None, None, data_slice,
                                  filename)
Пример #4
0
    def _beam(self):
        '''
    Create the beam model

    '''
        from dxtbx.model.beam import BeamFactory
        configuration = self.header['configuration']
        return BeamFactory.simple(configuration['wavelength'])
Пример #5
0
    def _beam(self):
        """
        Create the beam model
        """
        from dxtbx.model.beam import BeamFactory

        configuration = self.header["configuration"]
        return BeamFactory.simple(configuration["wavelength"])
  def xray_beams(self):
    self._xray_beams = flex_Beam()
    for wavelen, flux in self.spectrum:
      beam = BeamFactory.simple(wavelen * 1e-10)
      beam.set_flux(flux)
      beam.set_unit_s0(self.unit_s0)
      beam.set_polarization_fraction(self.polarization_fraction)
      beam.set_divergence(self.divergence)
      self._xray_beams.append(beam)

    return self._xray_beams
Пример #7
0
    def xray_beams(self):
        self._xray_beams = flex_Beam()
        norm = 1
        if self._undo_nanoBragg_norm_by_nbeams:
            norm = float(len(self.spectrum))

        for wavelen, flux in self.spectrum:
            beam = BeamFactory.simple(wavelen * 1e-10)
            beam.set_flux(flux / norm)
            beam.set_unit_s0(self.unit_s0)
            beam.set_polarization_fraction(self.polarization_fraction)
            beam.set_divergence(self.divergence)
            self._xray_beams.append(beam)

        return self._xray_beams
Пример #8
0
from __future__ import division
import numpy as np

import simtbx.nanoBragg
from dxtbx.model.beam import BeamFactory
from dxtbx.model.detector import DetectorFactory

import dxtbx_cspad

# flat CSPAD
cspad = DetectorFactory.from_dict(
    dxtbx_cspad.cspad)  # loads a 64 panel dxtbx cspad
# beam along Z
beam = BeamFactory.simple(1.3)  #  make a simple beam along z

print "# --- beam centers comparison for canonical setup -- #"
net_error_flat = 0
for pid in range(64):
    print "canonical: ", pid
    SIM = simtbx.nanoBragg.nanoBragg(detector=cspad,
                                     beam=beam,
                                     verbose=0,
                                     panel_id=pid)
    b1 = SIM.beam_center_mm
    b2 = cspad[pid].get_beam_centre(beam.get_s0())
    print "beam_XY simtbx:  %f, %f" % b1
    print "beam_XY python:  %f, %f" % b2
    print

    net_error_flat += np.sum(np.subtract(b1, b2)**2)
Пример #9
0
 def dummy_beam():
     return BeamFactory.simple(1.0)