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)
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
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)
def _beam(self): ''' Create the beam model ''' from dxtbx.model.beam import BeamFactory configuration = self.header['configuration'] return BeamFactory.simple(configuration['wavelength'])
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
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
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)
def dummy_beam(): return BeamFactory.simple(1.0)