def test_single_panel(): from dials.array_family import flex nrefl = 1000 # Generate bboxes bbox = flex.int6(nrefl) for i in range(nrefl): x0 = random.randint(0, 500) y0 = random.randint(0, 500) z0 = random.randint(0, 10) x1 = x0 + random.randint(2, 10) y1 = y0 + random.randint(2, 10) z1 = z0 + random.randint(2, 10) bbox[i] = (x0, x1, y0, y1, z0, z1) # Find the overlaps overlaps = find_overlapping(bbox) assert overlaps.num_vertices() == nrefl overlaps2 = brute_force(bbox) assert overlaps.num_edges() == len(overlaps2) edges = {} for edge in overlaps2: edge = (min(edge), max(edge)) edges[edge] = None for edge in overlaps.edges(): edge = overlaps.source(edge), overlaps.target(edge) edge = (min(edge), max(edge)) assert edge in edges
def predict_reflections(self): from dials.algorithms import shoebox from dials.array_family import flex from dxtbx.model.experiment_list import ExperimentList from dxtbx.model.experiment_list import Experiment from dials.algorithms.profile_model.gaussian_rs import Model # Get models from the sweep self.beam = self.sweep.get_beam() self.detector = self.sweep.get_detector() self.gonio = self.sweep.get_goniometer() self.scan = self.sweep.get_scan() sigma_b = self.beam.get_sigma_divergence(deg=True) sigma_m = self.crystal.get_mosaicity(deg=True) exlist = ExperimentList() exlist.append( Experiment(imageset=self.sweep, beam=self.beam, detector=self.detector, goniometer=self.gonio, scan=self.scan, crystal=self.crystal, profile=Model(None, 3, sigma_b, sigma_m, deg=True))) predicted = flex.reflection_table.from_predictions(exlist[0]) predicted['id'] = flex.int(len(predicted), 0) predicted.compute_bbox(exlist) # Find overlapping reflections overlaps = shoebox.find_overlapping(predicted['bbox']) # Return the reflections and overlaps return predicted, overlaps
def tst_multiple_panels(self): from dials.array_family import flex from random import randint nrefl = 1000 # Generate bboxes bbox = flex.int6(nrefl) panel = flex.size_t(nrefl) for i in range(nrefl): x0 = randint(0, 500) y0 = randint(0, 500) z0 = randint(0, 10) x1 = x0 + randint(2, 10) y1 = y0 + randint(2, 10) z1 = z0 + randint(2, 10) bbox[i] = (x0, x1, y0, y1, z0, z1) panel[i] = randint(0,2) # Find the overlaps overlaps = find_overlapping(bbox, panel) assert(overlaps.num_vertices() == nrefl) overlaps2 = self.brute_force(bbox, panel) assert(overlaps.num_edges() == len(overlaps2)) edges = {} for edge in overlaps2: edge = (min(edge), max(edge)) edges[edge] = None for edge in overlaps.edges(): edge = (overlaps.source(edge), overlaps.target(edge)) edge = (min(edge), max(edge)) assert(edge in edges) print 'OK'
def predict_reflections(self): from dials.algorithms import shoebox from dials.array_family import flex from dxtbx.model.experiment.experiment_list import ExperimentList from dxtbx.model.experiment.experiment_list import Experiment from dials.algorithms.profile_model.gaussian_rs import Model # Get models from the sweep self.beam = self.sweep.get_beam() self.detector = self.sweep.get_detector() self.gonio = self.sweep.get_goniometer() self.scan = self.sweep.get_scan() sigma_b = self.beam.get_sigma_divergence(deg=True) sigma_m = self.crystal.get_mosaicity(deg=True) exlist = ExperimentList() exlist.append(Experiment( imageset=self.sweep, beam=self.beam, detector=self.detector, goniometer=self.gonio, scan=self.scan, crystal=self.crystal, profile=Model( None, 3, sigma_b, sigma_m, deg=True))) predicted = flex.reflection_table.from_predictions(exlist[0]) predicted['id'] = flex.int(len(predicted), 0) predicted.compute_bbox(exlist) # Find overlapping reflections overlaps = shoebox.find_overlapping(predicted['bbox']) # Return the reflections and overlaps return predicted, overlaps
from __future__ import division from __future__ import print_function from scitbx.array_family import flex from dials.model.data import Reflection, ReflectionList from dials.algorithms import shoebox rl = ReflectionList() r1 = Reflection() r1.shoebox = (10, 20, 10, 20, 10, 20) r2 = Reflection() r2.shoebox = (15, 25, 15, 25, 15, 25) r3 = Reflection() r3.shoebox = (20, 30, 20, 30, 20, 30) rl.append(r1) rl.append(r2) rl.append(r3) overlapping = shoebox.find_overlapping(rl) for e in overlapping.edges(): print("Edge: ", overlapping.edge_vertices(e)) for v in overlapping.vertices(): print("Vertex: ", v, " => ", [a for a in overlapping.adjacent_vertices(v)])
from __future__ import division from scitbx.array_family import flex from dials.model.data import Reflection, ReflectionList from dials.algorithms import shoebox rl = ReflectionList() r1 = Reflection() r1.shoebox = (10, 20, 10, 20, 10, 20) r2 = Reflection() r2.shoebox = (15, 25, 15, 25, 15, 25) r3 = Reflection() r3.shoebox = (20, 30, 20, 30, 20, 30) rl.append(r1) rl.append(r2) rl.append(r3) overlapping = shoebox.find_overlapping(rl) for e in overlapping.edges(): print "Edge: ", overlapping.edge_vertices(e) for v in overlapping.vertices(): print "Vertex: ", v, " => ", [a for a in overlapping.adjacent_vertices(v)]