Пример #1
0
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
Пример #2
0
    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
Пример #3
0
  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'
Пример #4
0
  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'
Пример #5
0
  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
Пример #6
0
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)])
Пример #7
0
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)]