Example #1
0
    def initialize_camera(self):
        p = self.parameters.IonsOnCamera
        from lmfit import Parameters as lmfit_Parameters
        self.fitter = ion_state_detector(int(p.ion_number))
        self.image_region = [
            int(p.horizontal_bin),
            int(p.vertical_bin),
            int(p.horizontal_min),
            int(p.horizontal_max),
            int(p.vertical_min),
            int(p.vertical_max),
        ]

        self.fit_parameters = lmfit_Parameters()
        self.fit_parameters.add('ion_number', value=int(p.ion_number))
        self.fit_parameters.add('background_level',
                                value=p.fit_background_level)
        self.fit_parameters.add('amplitude', value=p.fit_amplitude)
        self.fit_parameters.add('rotation_angle', p.fit_rotation_angle)
        self.fit_parameters.add('center_x', value=p.fit_center_horizontal)
        self.fit_parameters.add('center_y', value=p.fit_center_vertical)
        self.fit_parameters.add('spacing', value=p.fit_spacing)
        self.fit_parameters.add('sigma', value=p.fit_sigma)
        x_axis = np.arange(self.image_region[2], self.image_region[3] + 1,
                           self.image_region[0])
        y_axis = np.arange(self.image_region[4], self.image_region[5] + 1,
                           self.image_region[1])
        xx, yy = np.meshgrid(x_axis, y_axis)
        self.fitter.set_fitted_parameters(self.fit_parameters, xx, yy)
Example #2
0
 def initialize_camera(self):
     p = self.parameters.IonsOnCamera
     from lmfit import Parameters as lmfit_Parameters
     self.fitter = ion_state_detector(int(p.ion_number))
     self.image_region = [
                          int(p.horizontal_bin),
                          int(p.vertical_bin),
                          int(p.horizontal_min),
                          int(p.horizontal_max),
                          int(p.vertical_min),
                          int(p.vertical_max),
                          ]
     
     self.fit_parameters = lmfit_Parameters()
     self.fit_parameters.add('ion_number', value = int(p.ion_number))
     self.fit_parameters.add('background_level', value = p.fit_background_level)
     self.fit_parameters.add('amplitude', value = p.fit_amplitude)
     self.fit_parameters.add('rotation_angle', p.fit_rotation_angle)
     self.fit_parameters.add('center_x', value = p.fit_center_horizontal)
     self.fit_parameters.add('center_y', value = p.fit_center_vertical)
     self.fit_parameters.add('spacing', value = p.fit_spacing)
     self.fit_parameters.add('sigma', value = p.fit_sigma)
     x_axis = np.arange(self.image_region[2], self.image_region[3] + 1, self.image_region[0])
     y_axis = np.arange(self.image_region[4], self.image_region[5] + 1, self.image_region[1])
     xx,yy = np.meshgrid(x_axis, y_axis)
     self.fitter.set_fitted_parameters(self.fit_parameters, xx, yy)
Example #3
0
 def initialize_camera(self, cxn):
     self.total_camera_confidences = []
     p = self.parameters.IonsOnCamera
     from lmfit import Parameters as lmfit_Parameters
     self.camera = cxn.andor_server
     self.fitter = ion_state_detector(int(p.ion_number))
     self.camera_initially_live_display = self.camera.is_live_display_running(
     )
     self.camera.abort_acquisition()
     self.initial_exposure = self.camera.get_exposure_time()
     exposure = self.parameters.StateReadout.state_readout_duration
     self.camera.set_exposure_time(exposure)
     self.initial_region = self.camera.get_image_region()
     self.image_region = [
         int(p.horizontal_bin),
         int(p.vertical_bin),
         int(p.horizontal_min),
         int(p.horizontal_max),
         int(p.vertical_min),
         int(p.vertical_max),
     ]
     self.fit_parameters = lmfit_Parameters()
     self.fit_parameters.add('ion_number', value=int(p.ion_number))
     self.fit_parameters.add('background_level',
                             value=p.fit_background_level)
     self.fit_parameters.add('amplitude', value=p.fit_amplitude)
     self.fit_parameters.add('rotation_angle', p.fit_rotation_angle)
     self.fit_parameters.add('center_x', value=p.fit_center_horizontal)
     self.fit_parameters.add('center_y', value=p.fit_center_vertical)
     self.fit_parameters.add('spacing', value=p.fit_spacing)
     self.fit_parameters.add('sigma', value=p.fit_sigma)
     x_axis = numpy.arange(self.image_region[2], self.image_region[3] + 1,
                           self.image_region[0])
     y_axis = numpy.arange(self.image_region[4], self.image_region[5] + 1,
                           self.image_region[1])
     xx, yy = numpy.meshgrid(x_axis, y_axis)
     self.fitter.set_fitted_parameters(self.fit_parameters, xx, yy)
     self.camera.set_image_region(*self.image_region)
     self.camera.set_acquisition_mode('Kinetics')
     self.initial_trigger_mode = self.camera.get_trigger_mode()
     self.camera.set_trigger_mode('External')
Example #4
0
 def initialize_camera(self, cxn):
     self.total_camera_confidences = []
     p = self.parameters.IonsOnCamera
     from lmfit import Parameters as lmfit_Parameters
     self.camera = cxn.andor_server
     self.fitter = ion_state_detector(int(p.ion_number))
     self.camera_initially_live_display = self.camera.is_live_display_running()
     self.camera.abort_acquisition()
     self.initial_exposure = self.camera.get_exposure_time()
     exposure = self.parameters.StateReadout.state_readout_duration
     self.camera.set_exposure_time(exposure)
     self.initial_region = self.camera.get_image_region()
     self.image_region = [
                          int(p.horizontal_bin),
                          int(p.vertical_bin),
                          int(p.horizontal_min),
                          int(p.horizontal_max),
                          int(p.vertical_min),
                          int(p.vertical_max),
                          ]
     self.fit_parameters = lmfit_Parameters()
     self.fit_parameters.add('ion_number', value = int(p.ion_number))
     self.fit_parameters.add('background_level', value = p.fit_background_level)
     self.fit_parameters.add('amplitude', value = p.fit_amplitude)
     self.fit_parameters.add('rotation_angle', p.fit_rotation_angle)
     self.fit_parameters.add('center_x', value = p.fit_center_horizontal)
     self.fit_parameters.add('center_y', value = p.fit_center_vertical)
     self.fit_parameters.add('spacing', value = p.fit_spacing)
     self.fit_parameters.add('sigma', value = p.fit_sigma)
     #self.fit_parameters.add('sigma', value = 3.5, vary=False)
     x_axis = numpy.arange(self.image_region[2], self.image_region[3] + 1, self.image_region[0])
     y_axis = numpy.arange(self.image_region[4], self.image_region[5] + 1, self.image_region[1])
     xx,yy = numpy.meshgrid(x_axis, y_axis)
     self.fitter.set_fitted_parameters(self.fit_parameters, xx, yy)
     self.camera.set_image_region(*self.image_region)
     self.camera.set_acquisition_mode('Kinetics')
     self.initial_trigger_mode = self.camera.get_trigger_mode()
     self.camera.set_trigger_mode('External')
Example #5
0
def camera_ion_probabilities(images, repetitions, p, readout_mode = 'camera'):
    """
    Method for analyzing camera images. For an
    N-ion chain, returns an N element list
    indicating the probability that each
    ion is excited.
    """
    from lmfit import Parameters as lmfit_Parameters

    fitter = ion_state_detector(int(p.ion_number))

    image_region = [
                             int(p.horizontal_bin),
                             int(p.vertical_bin),
                             int(p.horizontal_min),
                             int(p.horizontal_max),
                             int(p.vertical_min),
                             int(p.vertical_max),
                             ]

    fit_parameters = lmfit_Parameters()
    fit_parameters.add('ion_number', value = int(p.ion_number))
    fit_parameters.add('background_level', value = p.fit_background_level)
    fit_parameters.add('amplitude', value = p.fit_amplitude)
    fit_parameters.add('rotation_angle', p.fit_rotation_angle)
    fit_parameters.add('center_x', value = p.fit_center_horizontal)
    fit_parameters.add('center_y', value = p.fit_center_vertical)
    fit_parameters.add('spacing', value = p.fit_spacing)
    fit_parameters.add('sigma', value = p.fit_sigma)
    x_axis = np.arange(image_region[2], image_region[3] + 1, image_region[0])
    y_axis = np.arange(image_region[4], image_region[5] + 1, image_region[1])
    xx,yy = np.meshgrid(x_axis, y_axis)
    fitter.set_fitted_parameters(fit_parameters, xx, yy)

    x_pixels = int( (image_region[3] - image_region[2] + 1.) / (image_region[0]) )
    y_pixels = int( (image_region[5] - image_region[4] + 1.) / (image_region[1]) )
    #print "inside the camera readout"
    #print "x_pixels {}".format(x_pixels)
    #print "y_pixels {}".format(y_pixels)
    #print images
    #np.save('37ions_global', images)
    #print "repetitions{}".format(repetitions)

    images = np.reshape(images, (repetitions, y_pixels, x_pixels))
    readouts, confidences = fitter.state_detection(images)

    ion_state = 1 - readouts.mean(axis = 0)
    #np.save('temp_camera_ion_state', ion_state)
    #np.save('temp_camera_readout', readouts)


    if readout_mode == 'camera_states':
        ion_state=get_states_camera(readouts,int(p.ion_number))

    if readout_mode == 'camera_parity':
        ion_state=get_states_camera(readouts,int(p.ion_number))
        parity= Calc_parity(ion_state)
        ion_state=np.append(ion_state,[parity])

#     print "555"
#     print "readout_mode", readout_mode
#     print "ion_stste", ion_state
#
    return ion_state, readouts, confidences
def camera_ion_probabilities(images, repetitions, p, readout_mode = 'camera'):
    """
    Method for analyzing camera images. For an
    N-ion chain, returns an N element list
    indicating the probability that each
    ion is excited.
    """
    from lmfit import Parameters as lmfit_Parameters
    
    fitter = ion_state_detector(int(p.ion_number))

    image_region = [
                             int(p.horizontal_bin),
                             int(p.vertical_bin),
                             int(p.horizontal_min),
                             int(p.horizontal_max),
                             int(p.vertical_min),
                             int(p.vertical_max),
                             ]
    
    fit_parameters = lmfit_Parameters()
    fit_parameters.add('ion_number', value = int(p.ion_number))
    fit_parameters.add('background_level', value = p.fit_background_level)
    fit_parameters.add('amplitude', value = p.fit_amplitude)
    fit_parameters.add('rotation_angle', p.fit_rotation_angle)
    fit_parameters.add('center_x', value = p.fit_center_horizontal)
    fit_parameters.add('center_y', value = p.fit_center_vertical)
    fit_parameters.add('spacing', value = p.fit_spacing)
    fit_parameters.add('sigma', value = p.fit_sigma)
    x_axis = np.arange(image_region[2], image_region[3] + 1, image_region[0])
    y_axis = np.arange(image_region[4], image_region[5] + 1, image_region[1])
    xx,yy = np.meshgrid(x_axis, y_axis)
    fitter.set_fitted_parameters(fit_parameters, xx, yy)
   
    x_pixels = int( (image_region[3] - image_region[2] + 1.) / (image_region[0]) )
    y_pixels = int( (image_region[5] - image_region[4] + 1.) / (image_region[1]) )
    #print "inside the camera readout"
    #print "x_pixels {}".format(x_pixels)
    #print "y_pixels {}".format(y_pixels)
    #print images
    #np.save('37ions_global', images)
    #print "repetitions{}".format(repetitions)
    
    images = np.reshape(images, (repetitions, y_pixels, x_pixels))
    readouts, confidences = fitter.state_detection(images)
    
    ion_state = 1 - readouts.mean(axis = 0)
    #np.save('temp_camera_ion_state', ion_state)
    #np.save('temp_camera_readout', readouts)
    
    
    if readout_mode == 'camera_states':
        ion_state=get_states_camera(readouts,int(p.ion_number))
        
    if readout_mode == 'camera_parity':
        ion_state=get_states_camera(readouts,int(p.ion_number))
        parity= Calc_parity(ion_state)
        ion_state=np.append(ion_state,[parity])
    
#     print "555"
#     print "readout_mode", readout_mode
#     print "ion_stste", ion_state
#         
    return ion_state, readouts, confidences