Ejemplo n.º 1
0
 def _start(self):
   '''Open the image file, read the image header, copy the key / value
   pairs into an internal dictionary self._header_dictionary along with
   the length of the header in bytes self._header_size.'''
   from iotbx.detectors import EDFWrapper
   self.detectorbase = EDFWrapper(self._image_file)
   self.detectorbase.readHeader()
Ejemplo n.º 2
0
class FormatEDFALS733(Format):
    """EDF is the ESRF data format.
    In present context, ALS 7.3.3 uses this format for its single-tile Pilatus
    """
    @staticmethod
    def understand(image_file):
        try:
            tag = FormatEDFALS733.open_file(image_file, "rb").read(10)
        except IOError:
            return False

        return tag == "{\nHeaderID"

    def __init__(self, image_file, **kwargs):
        """Initialise the image structure from the given file."""

        from dxtbx import IncorrectFormatError

        if not self.understand(image_file):
            raise IncorrectFormatError(self, image_file)

        Format.__init__(self, image_file, **kwargs)

    def detectorbase_start(self):
        pass

    def _start(self):
        """Open the image file, read the image header, copy the key / value
        pairs into an internal dictionary self._header_dictionary along with
        the length of the header in bytes self._header_size."""
        from iotbx.detectors import EDFWrapper

        self.detectorbase = EDFWrapper(self._image_file)
        self.detectorbase.readHeader()

    def _goniometer(self):

        return self._goniometer_factory.single_axis()

    def _detector(self):
        """Return a model for a simple detector"""

        twotheta = 0.0

        return self._detector_factory.simple(
            sensor="PAD",
            distance=self.detectorbase.parameters["DISTANCE"],
            beam_centre=(
                self.detectorbase.parameters["BEAM_CENTER_X"],
                self.detectorbase.parameters["BEAM_CENTER_Y"],
            ),
            fast_direction="+x",
            slow_direction="-y",
            pixel_size=(
                self.detectorbase.parameters["PIXEL_SIZE"],
                self.detectorbase.parameters["PIXEL_SIZE"],
            ),
            image_size=(
                self.detectorbase.parameters["SIZE1"],
                self.detectorbase.parameters["SIZE2"],
            ),
            trusted_range=(0, self.detectorbase.saturation),
            mask=[],
        )  # a list of dead rectangles

    def _beam(self):
        """Return a simple model for the beam."""

        return self._beam_factory.simple(wavelength=1.0)  # dummy argument

    def _scan(self):
        """Return the scan information for this image."""

        return self._scan_factory.single(
            filename=self._image_file,
            format="EDF",
            exposure_times=self.detectorbase.parameters["count_time"],
            osc_start=0.0,
            osc_width=0.0,
            epoch=None,
        )