Example #1
0
    def CC(self, beam_center, rotmat=None):
        detector = self.image.get_detector()
        angle = [0, 3, 2, 1][self.i_quad]  #

        asic = self.image.get_raw_data()[list(detector.get_names()).index(
            self.panel.get_name())].matrix_rot90(angle)

        p_w, p_h = self.panel.get_image_size()
        b = [
            self.panel.get_pixel_lab_coord((0, 0)),
            self.panel.get_pixel_lab_coord((p_w - 1, 0)),
            self.panel.get_pixel_lab_coord((p_w - 1, p_h - 1)),
            self.panel.get_pixel_lab_coord((0, p_h - 1))
        ]
        asic_origin = col(
            self.panel.millimeter_to_pixel(
                (min([p[0] for p in b]), min([p[1] for p in b]))))

        if rotmat is None:
            rot45 = sqr(
                (sin(pi / 3.), -cos(pi / 3.), cos(pi / 3.), sin(pi / 3.)))
        else:
            rot45 = rotmat

        from xfel.metrology.legacy_scale import quadrant_self_correlation
        min_value = self.image.get_detector()[0].get_trusted_range()[0]
        REF, ROT = quadrant_self_correlation(asic.as_double(), asic_origin,
                                             beam_center, rot45, min_value)
        CCRR = flex.linear_correlation(REF, ROT)

        return CCRR.coefficient()
Example #2
0
  def CC(self, beam_center):
    quad = self.tiling[4*self.sensor[0]:4+4*self.sensor[0]]

    asic = self.image.linearintdata.matrix_copy_block(quad[0],quad[1],
                                    quad[2]-quad[0],quad[3]-quad[1])

    #npy = asic.as_numpy_array()
    #from matplotlib import pyplot as plt
    #plt.imshow(npy, cmap="hot")
    #plt.show()

    asci_origin = col((float(quad[0]),float(quad[1])))

    rot45 = sqr((sin(pi/4.),-cos(pi/4.),cos(pi/4.),sin(pi/4.)))

    from xfel.metrology.legacy_scale import quadrant_self_correlation
    min_value = self.image.get_detector()[0].get_trusted_range()[0]
    REF,ROT = quadrant_self_correlation(asic,asci_origin,beam_center,rot45,min_value)
    CCRR = flex.linear_correlation(REF,ROT)

    """initial python implementation
    #rot_asic = flex.double(asic.accessor())
    F0,F1 = asic.focus()

    ref_data = flex.double()
    rot_data = flex.double()
    constant = rot45*(asci_origin - beam_center) +beam_center - asci_origin
    for xcoord in range(quad[2]-quad[0]):
      for ycoord in range(quad[3]-quad[1]):

        acoord = col((float(xcoord),float(ycoord)))
        #prime = rot45*(acoord + asci_origin - beam_center) + beam_center - asci_origin
        prime = rot45*acoord + constant
        prime = (int(round(prime[0],0)),int(round(prime[1],0)))
        if 0<=prime[0]<F0 and 0<=prime[1]<F1:
          #rot_asic[(xcoord,ycoord)]=asic[prime]

          ref_data.append(asic[(xcoord,ycoord)])
          rot_data.append(asic[prime])
    CC = flex.linear_correlation(ref_data,rot_data)

    print "Correlation_coefficient %7.4f %7.4f"%(CC.coefficient(),CCRR.coefficient())
    """

    return CCRR.coefficient()
Example #3
0
  def CC(self, beam_center):
    quad = self.tiling[4*self.sensor[0]:4+4*self.sensor[0]]

    asic = self.image.linearintdata.matrix_copy_block(quad[0],quad[1],
                                    quad[2]-quad[0],quad[3]-quad[1])

    #npy = asic.as_numpy_array()
    #from matplotlib import pyplot as plt
    #plt.imshow(npy, cmap="hot")
    #plt.show()

    asci_origin = col((float(quad[0]),float(quad[1])))

    rot45 = sqr((sin(pi/4.),-cos(pi/4.),cos(pi/4.),sin(pi/4.)))

    from xfel.metrology.legacy_scale import quadrant_self_correlation
    min_value = self.image.get_detector()[0].get_trusted_range()[0]
    REF,ROT = quadrant_self_correlation(asic,asci_origin,beam_center,rot45,min_value)
    CCRR = flex.linear_correlation(REF,ROT)

    """initial python implementation
    #rot_asic = flex.double(asic.accessor())
    F0,F1 = asic.focus()

    ref_data = flex.double()
    rot_data = flex.double()
    constant = rot45*(asci_origin - beam_center) +beam_center - asci_origin
    for xcoord in xrange(quad[2]-quad[0]):
      for ycoord in xrange(quad[3]-quad[1]):

        acoord = col((float(xcoord),float(ycoord)))
        #prime = rot45*(acoord + asci_origin - beam_center) + beam_center - asci_origin
        prime = rot45*acoord + constant
        prime = (int(round(prime[0],0)),int(round(prime[1],0)))
        if 0<=prime[0]<F0 and 0<=prime[1]<F1:
          #rot_asic[(xcoord,ycoord)]=asic[prime]

          ref_data.append(asic[(xcoord,ycoord)])
          rot_data.append(asic[prime])
    CC = flex.linear_correlation(ref_data,rot_data)

    print "Correlation_coefficient %7.4f %7.4f"%(CC.coefficient(),CCRR.coefficient())
    """

    return CCRR.coefficient()
Example #4
0
  def CC(self, beam_center):
    detector = self.image.get_detector()
    angle = [0,3,2,1][self.i_quad] #

    asic = self.image.get_raw_data()[list(detector.get_names()).index(self.panel.get_name())].matrix_rot90(angle)

    p_w, p_h = self.panel.get_image_size()
    b = [self.panel.get_pixel_lab_coord((0    ,0    )),
         self.panel.get_pixel_lab_coord((p_w-1,0    )),
         self.panel.get_pixel_lab_coord((p_w-1,p_h-1)),
         self.panel.get_pixel_lab_coord((0    ,p_h-1))]
    asic_origin = col(self.panel.millimeter_to_pixel((min([p[0] for p in b]),
                                                      min([p[1] for p in b]))))


    rot45 = sqr((sin(pi/4.),-cos(pi/4.),cos(pi/4.),sin(pi/4.)))

    from xfel.metrology.legacy_scale import quadrant_self_correlation
    min_value = self.image.get_detector()[0].get_trusted_range()[0]
    REF,ROT = quadrant_self_correlation(asic.as_double(),asic_origin,beam_center,rot45,min_value)
    CCRR = flex.linear_correlation(REF,ROT)

    return CCRR.coefficient()
Example #5
0
      if params.show_plots:
        from matplotlib import pyplot as plt
        plt.imshow(data.as_numpy_array())
        plt.show()

      grid_radius = 20
      mapp = flex.double(flex.grid(2*grid_radius+1, 2*grid_radius+1))
      print mapp.focus()

      gmax = 0.0
      coordmax = (0,0)
      for xi in range(-grid_radius, grid_radius+1):
        for yi in range(-grid_radius, grid_radius+1):
          test_bc = beam_center + col((xi,yi))
          print "Testing beam center", test_bc.elems,
          REF,ROT = quadrant_self_correlation(data,panel_origin,test_bc,rot45,trusted_min)
          CCRR = flex.linear_correlation(REF,ROT)
          VV = CCRR.coefficient()
          if VV>gmax:
            gmax = VV
            coordmax = col((xi,yi))
          mapp[(xi+grid_radius,yi+grid_radius)]=VV
          print VV

      print "max cc %7.4F is at "%gmax, (beam_center + coordmax).elems, "(slow, fast). Delta:", coordmax.elems
      if params.show_plots:
        npy = mapp.as_numpy_array()
        from matplotlib import pyplot as plt
        plt.imshow(npy, cmap="hot")
        plt.plot([coordmax[1]+grid_radius],[coordmax[0]+grid_radius],"k.")
        plt.show()