Ejemplo n.º 1
0
 def __init__(self,params):
   correction_vectors.__init__(self)
   self.read_data(params)
   self.x = flex.double([0.]*128) # x & y displacements for each of 64 tiles
   lbfgs_with_curvatures_mix_in.__init__(self,
     min_iterations=0,
     max_iterations=1000,
     use_curvatures=True)
Ejemplo n.º 2
0
 def __init__(self,xcoord,ycoord,rij_matrix,wij_matrix,verbose):
   self.verbose = verbose
   self.x = xcoord.concatenate(ycoord)
   self.NN = len(xcoord)
   self.rij_matrix = rij_matrix
   self.wij_matrix = wij_matrix
   if self.verbose:print len(self.x)
   lbfgs_with_curvatures_mix_in.__init__(self,
     min_iterations=0,
     max_iterations=1000,
     traditional_convergence_test_eps=1.0,
     use_curvatures=True)
Ejemplo n.º 3
0
 def __init__(self,xcoord,ycoord,rij_matrix,wij_matrix,verbose):
   self.verbose = verbose
   self.x = xcoord.concatenate(ycoord)
   self.NN = len(xcoord)
   self.rij_matrix = rij_matrix
   self.wij_matrix = wij_matrix
   if self.verbose:print(len(self.x))
   lbfgs_with_curvatures_mix_in.__init__(self,
     min_iterations=0,
     max_iterations=1000,
     traditional_convergence_test_eps=1.0,
     use_curvatures=True)
Ejemplo n.º 4
0
  def __init__(self,params):
    self.bandpass_models = {}
    correction_vectors.__init__(self)
    #self.nominal_tile_centers(params.effective_tile_boundaries)
    self.read_data(params)
    self.params = params


    self.x = flex.double([0.]*(len(self.tiles) // 2)+[0.]*(len(self.tiles) // 4)) # x & y displacements for each of 64 tiles

    lbfgs_with_curvatures_mix_in.__init__(self,
      min_iterations=0,
      max_iterations=1000,
      use_curvatures=True)
Ejemplo n.º 5
0
Archivo: mark3.py Proyecto: dials/cctbx
    def __init__(self, params):
        self.bandpass_models = {}
        correction_vectors.__init__(self)
        #self.nominal_tile_centers(params.effective_tile_boundaries)
        self.read_data(params)
        self.params = params

        self.x = flex.double(
            [0.] * (len(self.tiles) // 2) + [0.] *
            (len(self.tiles) // 4))  # x & y displacements for each of 64 tiles

        lbfgs_with_curvatures_mix_in.__init__(self,
                                              min_iterations=0,
                                              max_iterations=1000,
                                              use_curvatures=True)
Ejemplo n.º 6
0
  def __init__(self,xcoord,ycoord):
    self.xcoord = xcoord
    self.ycoord = ycoord
    self.x = flex.double([0])
    from scitbx.matrix import col
    self.center_of_mass = col((flex.mean(self.xcoord), flex.mean(self.ycoord)))

    grid = [ self.functional_only(t*math.pi/180.) for t in xrange(0,180,5) ]

    minvalue = min(grid)
    self.x = flex.double([5*grid.index(minvalue)*math.pi/180.])
    #print "grid_minimum",list(self.x)
    # XXX Looks like LBFGS is not performing minimization; investigate later
    # XXX can probably return here; 5-degree granularity enough; no need for LBFGS

    lbfgs_with_curvatures_mix_in.__init__(self,
      min_iterations=0,
      max_iterations=1000,
      use_curvatures=False)
Ejemplo n.º 7
0
  def __init__(self,xcoord,ycoord):
    self.xcoord = xcoord
    self.ycoord = ycoord
    self.x = flex.double([0])
    from scitbx.matrix import col
    self.center_of_mass = col((flex.mean(self.xcoord), flex.mean(self.ycoord)))

    grid = [ self.functional_only(t*math.pi/180.) for t in range(0,180,5) ]

    minvalue = min(grid)
    self.x = flex.double([5*grid.index(minvalue)*math.pi/180.])
    #print "grid_minimum",list(self.x)
    # XXX Looks like LBFGS is not performing minimization; investigate later
    # XXX can probably return here; 5-degree granularity enough; no need for LBFGS

    lbfgs_with_curvatures_mix_in.__init__(self,
      min_iterations=0,
      max_iterations=1000,
      use_curvatures=False)
    def __init__(self, x_obs, y_obs, w_obs, initial, use_curvatures=False):
        assert x_obs.size() == y_obs.size()
        self.x_obs = x_obs
        self.y_obs = y_obs
        self.w_obs = w_obs  #flex.double([1.0]*(w_obs.size()))
        self.n = len(initial)
        self.x = initial.deep_copy()
        #    self.minimizer = scitbx.lbfgs.run(target_evaluator=self,
        #                     termination_params = scitbx.lbfgs.termination_parameters
        #                     (traditional_convergence_test_eps=1.e-10, min_iterations=0), core_params =
        #                     scitbx.lbfgs.core_parameters(gtol=0.00011), log=sys.stdout)

        lbfgs_with_curvatures_mix_in.__init__(
            self,
            min_iterations=0,
            max_iterations=1000,
            traditional_convergence_test_eps=1e-10,
            use_curvatures=use_curvatures)

        self.a = self.x
Ejemplo n.º 9
0
    def __init__(self, use_curvatures=True, *args, **kwargs):
        LBFGSsolver.__init__(self, *args, **kwargs)
        if self.IAprm_truth is not None:
            self.IAprm_truth = flex.log(self.IAprm_truth)
            self.IBprm_truth = flex.log(self.IBprm_truth)
            #self.Gprm_truth = flex.log(self.Gprm_truth)

        IAx = flex.log(self.x[:self.Nhkl])
        IBx = flex.log(self.x[self.Nhkl:2 * self.Nhkl])
        Gx = self.x[2 * self.Nhkl:]
        #Gx = flex.log(self.x[2*self.Nhkl:])
        self.x = IAx.concatenate(IBx)
        self.x = self.x.concatenate(Gx)

        if use_curvatures:
            self.minimizer = lbfgs_with_curvatures_mix_in.__init__(
                self,
                min_iterations=0,
                max_iterations=None,
                use_curvatures=True)
Ejemplo n.º 10
0
  def run_cycle_a(self):
    self.bandpass_models = {}


    #print "HATTNE MARKER #0"
    lbfgs_with_curvatures_mix_in.__init__(self,
      min_iterations=0,
      max_iterations=1000,
      traditional_convergence_test_eps=1.0, # new for LD91; to shorten the run time
      use_curvatures=True)
    #print "HATTNE MARKER #1"

    C = self
    C.post_min_recalc()

    #import sys
    #sys.exit(0) # HATTNE

    C.print_table()
    unit_translations = C.print_table_2()
    self.print_unit_translations(unit_translations, self.params, self.optional_params)

    #import sys
    #sys.exit(0) # HATTNE

    sum_sq = 0.
    for key in C.frame_delx.keys():
      param_no = C.frame_id_to_param_no[key]
      if param_no >= C.n_refined_frames:continue
      mn_x = flex.mean(C.frame_delx[key])
      mn_y = flex.mean(C.frame_dely[key])
      print "frame %4d count %4d delx %7.2f  dely %7.2f"%(key,
        len(C.frame_delx[key]),
        mn_x,
        mn_y ),
      sum_sq += mn_x*mn_x + mn_y*mn_y
      if param_no<C.n_refined_frames:
        print "%7.2f %7.2f"%(C.frame_translations.x[2*param_no],C.frame_translations.x[1+2*param_no])
      else:  print "N/A"
    displacement = math.sqrt(sum_sq / len(C.frame_delx.keys()))
    print "rms displacement of frames %7.2f"%displacement

    C.detector_origin_analysis()
    C.radial_transverse_analysis()
    sum_sq_r = 0.
    sum_sq_a = 0.
    for key in C.frame_del_radial.keys():
      mn_r = flex.mean(C.frame_del_radial[key])
      mn_a = flex.mean(C.frame_del_azimuthal[key])
      print "frame %4d count %4d delrad %7.2f  delazi %7.2f"%(key,
        len(C.frame_del_radial[key]),
        mn_r,
        mn_a ),
      sum_sq_r += mn_r*mn_r
      sum_sq_a += mn_a*mn_a
      param_no = C.frame_id_to_param_no[key]
      print "deldist %7.3f mm"%C.frame_distances.x[param_no],

      print "distance %7.3f mm"%(
        C.frame_distances.x[param_no] +
        C.FRAMES["distance"][param_no]),

      print "rotz_deg=%6.2f"%( (180./math.pi)*C.frame_rotz.x[param_no] )
    print "rms radial displacement %7.2f"%(math.sqrt(sum_sq_r/len(C.frame_del_radial.keys())))
    print "rms azimut displacement %7.2f"%(math.sqrt(sum_sq_a/len(C.frame_del_radial.keys())))
    C.same_sensor_table()

    print "Cycle A translations & rotations"
    print {"translations": list(self.tile_translations.x),
           "rotations": list(self.tile_rotations.x)}
    print "integration {"
    print "  subpixel_joint_model{"
    print "rotations= \\"
    for irot in xrange(len(self.tile_rotations.x)):
      print " %11.8f "%self.tile_rotations.x[irot],
      if irot%4==3 and irot!=len(self.tile_rotations.x)-1: print "\\"
    print
    print "translations= \\"
    for irot in xrange(len(self.tile_translations.x)):
      print " %11.8f"%self.tile_translations.x[irot],
      if irot%4==3 and irot!=len(self.tile_translations.x)-1: print "\\"
    print
    print "  }"
    print "}"
    print
Ejemplo n.º 11
0
 def __init__(self, params):
     correction_vectors.__init__(self)
     self.read_data(params)
     self.x = flex.double([0.0] * 128)  # x & y displacements for each of 64 tiles
     lbfgs_with_curvatures_mix_in.__init__(self, min_iterations=0, max_iterations=1000, use_curvatures=True)