def pilatus_slice_from_file_url(url): from six.moves import urllib parsed = urllib.parse.urlparse(url) assert parsed.scheme == "file" file = parsed.path.split("?")[0] if file == parsed.path: return PilatusImage(file) qs = urllib.parse.parse_qs(parsed.path.split("?")[1]) sliceindex = int(qs["slice"][0]) object = PilatusImage(file) object.readHeader() return pilatus_slice_from_object_and_slicenumber(object, sliceindex)
def detectorbase_start(self): self.detectorbase = PilatusImage(self._image_file) self.detectorbase.readHeader() self.detectorbase.parameters["SIZE1"] = 2167 self.detectorbase.parameters["SIZE2"] = 2070
def test_all(dirpath, timer=False): for file in generate_paths(dirpath): from iotbx.detectors.pilatus_minicbf import PilatusImage if timer: print(os.path.basename(file)) P = PilatusImage(file) if timer: G = Profiler("cbflib no-opt read") P.read(algorithm="cbflib") read1 = P.linearintdata if timer: G = Profiler("cbflib optimized read") P.linearintdata = None #won't read again without resetting first P.read(algorithm="cbflib_optimized") read2 = P.linearintdata if timer: G = Profiler("buffer-based read") P.linearintdata = None #won't read again without resetting first P.read(algorithm="buffer_based") read3 = P.linearintdata if timer: del G expected_image_size = { "Pilatus-6M": (2527, 2463), "Pilatus-2M": (1679, 1475), "Pilatus-300K": (619, 487) }[P.vendortype] assert read1.accessor().focus() == read2.accessor().focus( ) == expected_image_size from cbflib_adaptbx import assert_equal #print "Equality of arrays from two decompress methods", assert_equal(read1,read2), "\n" assert assert_equal(read1, read2) assert assert_equal(read1, read3)
def pilatus_slice_from_file_url(url): #backward compatibility with Python 2.5 try: from urlparse import parse_qs except Exception: from cgi import parse_qs from urlparse import urlparse parsed = urlparse(url) assert parsed.scheme == "file" file = parsed.path.split("?")[0] if file == parsed.path: return PilatusImage(file) qs = parse_qs(parsed.path.split("?")[1]) sliceindex = int(qs["slice"][0]) object = PilatusImage(file) object.readHeader() return pilatus_slice_from_object_and_slicenumber(object,sliceindex)
def detectorbase_start(self): from iotbx.detectors.pilatus_minicbf import PilatusImage self.detectorbase = PilatusImage(self._image_file) self.detectorbase.readHeader() self.detectorbase.parameters['SIZE1'] = 2167 self.detectorbase.parameters['SIZE2'] = 2070
def detectorbase_start(self): from iotbx.detectors.pilatus_minicbf import PilatusImage self.detectorbase = PilatusImage(self._image_file) self.detectorbase.readHeader() # necessary for LABELIT
linearintdata = flex.int( self.object.linearintdata[start_index:stop_index]) linearintdata.reshape(flex.grid((195, 2463))) del self.object #once the data are copied, no need to keep the original return linearintdata def read(self): if self.already_read_data: return self.bin_safe_set_data(self.slice_callback()) self.already_read_data = True if __name__ == '__main__': import sys full_path_to_file = sys.argv[1] a = PilatusImage(testing_file) a.read() print a print a.parameters print a.rawdata, len(a.rawdata), a.size1 * a.size2 for dataitem in [ 'bin', 'filename', 'header', 'headerlines', 'linearintdata', 'parameters', 'vendortype' ]: print dataitem, exec("print a.%s" % dataitem) print pilatus_slice_from_object_and_slicenumber(a, 5) P = pilatus_slice_from_file_url(url="file://%s?slice=5" % full_path_to_file)
def detectorbase_start(self): self.detectorbase = PilatusImage(self._image_file) self.detectorbase.readHeader() # necessary for LABELIT