Example #1
0
    def __init__(self):
        # Create the LightField Application (true for visible)
        # The 2nd parameter forces LF to load with no experiment
        auto = Automation(True, List[String]())

        # Get experiment object
        self.experiment = auto.LightFieldApplication.Experiment
Example #2
0
    def on_activate(self):
        """ Activate module.

            This method needs to set ip the CLR to Python binding and start Lightfield.
        """

        lfpath = os.environ['LIGHTFIELD_ROOT']
        lfaddinpath = os.path.join(os.environ['LIGHTFIELD_ROOT'], 'AddInViews')

        sys.path.append(lfpath)
        sys.path.append(lfaddinpath)
        ref1 = clr.AddReference('PrincetonInstruments.LightFieldViewV4')
        ref2 = clr.AddReference('PrincetonInstruments.LightField.AutomationV4')
        #print(dir(ref), '\n\n')
        #ref.LoadFrom(ref.Location)

        verbose = list(clr.ListAssemblies(True))
        short = list(clr.ListAssemblies(False))
        #for i in short:
        #        print('ASSEMBLY:', i)
        #for i in verbose:
        #    print('ASS:', i)

        #for i in ref2.Modules:
        #    print('ASS Module:', i)
        #for i in ref2.ExportedTypes:
        #    print('ASS Exported type:', i)
        try:
            for i in ref2.DefinedTypes:
                print('ASS Defined type:', i)
        except System.Reflection.ReflectionTypeLoadException as e:
            for i in e.LoaderExceptions:
                print('EXC:', i.Message)

        print('ASS Entry point:', ref2.EntryPoint)
        print('ASS is Dynamic:', ref2.IsDynamic)

        from PrincetonInstruments.LightField.Automation import Automation
        import PrincetonInstruments.LightField.AddIns as ai

        lst = col.List[System.String]()
        self.au = Automation(True, lst)
        self.app = self.au.LightFieldApplication
        self.exp = self.app.Experiment

        self.exp.ExperimentCompleted += EventHandler(
            self.setAcquisitionComplete)
        self.exp.ImageDataSetReceived += EventHandler(self.frameCallback)
        self.exp.SettingChanged += EventHandler(self.settingChangedCallback)

        self.app.UserInteractionManager.SuppressUserInteraction = True

        self.prevExperimentName = self.exp.Name
        print('Prev Exp', self.prevExperimentName)
        #self.getExperimentList()
        #self.openExperiment(name)
        self.lastframe = list()
Example #3
0
 def __init__(self):
     logger.debug('Here we go')
     self.auto = Automation(True, List[String]())
     self.application = self.auto.LightFieldApplication
     self.experiment = self.application.Experiment
     self.file_manager = self.application.FileManager
     self.acquireCompleted = AutoResetEvent(False)
     self.dataset = Dataset()
     time.sleep(3)
     logger.debug('Loaded')
Example #4
0
 def init_device(self):
     Device.init_device(self)
     self.set_change_event('image', True, False)
     self.set_state(DevState.INIT)
     self.lf = Automation(True, List[String]())  # starts LF instance
     self.exp = self.lf.LightFieldApplication.Experiment
     self.device = self.get_camera_device()
     if self.device is not None:
         self.set_state(DevState.ON)
         name, model, sn, shape = self.get_sensor_info()
         print('Connected:', model, name, sn, file=self.log_info)
         self._image = np.zeros(shape)
         self._accum = 0
         self.register_events()
         self.setup_file_save()
     else:
         print('No camera found.', file=self.log_error)
         self.set_state(DevState.FAULT)
Example #5
0
def capture_photo(begin,exp_no):
    global device_found
    global experiment
    global save_file
    global file_manager
    
    if begin=="start":
        def save_file(filename):    
        # Set the base file name
            experiment.SetValue(
                ExperimentSettings.FileNameGenerationBaseFileName,
                Path.GetFileName(filename))

            # Option to Increment, set to false will not increment
            experiment.SetValue(
                ExperimentSettings.FileNameGenerationAttachIncrement,
                True)

            # Option to add date
            experiment.SetValue(
                ExperimentSettings.FileNameGenerationAttachDate,
                True)

            # Option to add time
            experiment.SetValue(
                ExperimentSettings.FileNameGenerationAttachTime,
                True)
       
        def device_found():
            # Find connected device
            for device in experiment.ExperimentDevices:
                if (device.Type == DeviceType.Camera):
                    return True

            # If connected device is not a camera inform the user
            print("Camera not found. Please add a camera and try again.")
            return False  



        # Create the LightField Application (true for visible)
        # The 2nd parameter forces LF to load with no experiment 
        auto = Automation(True, List[String]())
        application= auto.LightFieldApplication
        experiment = auto.LightFieldApplication.Experiment
        file_manager=application.FileManager
        
    if begin=='adjust':
        def set_value(setting, value):    
        # Check for existence before setting
        # gain, adc rate, or adc quality
            if experiment.Exists(setting):
                experiment.SetValue(setting, value)

        def experiment_completed(sender, event_args):    
#             print("Experiment Completed")    
            # Sets the state of the event to signaled,
            # allowing one or more waiting threads to proceed.
            acquireCompleted.Set()
       
        from flipper import mirror
        mirror('on')
        # Check for device and inform user if one is needed
        if (device_found()==True): 
            experiment.ExperimentCompleted += experiment_completed 
            # Check this location for saved spe after running
            #print("Please Enter the Exposure Time:\n")
            #x=int(input())
            set_value(CameraSettings.ShutterTimingExposureTime,1000)
            #print("Please Enter the Number of Frames")
            #y=int(input())
            n=3
            experiment.SetValue(ExperimentSettings.AcquisitionFramesToStore,n)
            for k in range(1,2):
                if k==1:
                    experiment.SetValue(SpectrometerSettings.GratingCenterWavelength,578.1351880026082)
                elif k==2:
                    experiment.SetValue(SpectrometerSettings.GratingCenterWavelength,621.2340604418703)
               
                _file_name = "case"

                # Pass location of saved file
                save_file(_file_name)

                # Acquire image
                experiment.Acquire()
                time.sleep(5)
                #directory="C:\\Users\\labuser\\Desktop\\data\\Raman\\Vivek\\2019-10-08"
                directory="C:\\Users\\UWAdmin\\Desktop\\AIM-Lab-Automation-master\\AIM-Lab-Automation-master\\spes"
                if( os.path.exists(directory)):        
#                         print("\nFound the .spe file...")        
                        print(" ")
                        # Returns all .spe files
                        files = glob.glob(directory +'/*.spe')

                        # Returns recently acquired .spe file
                        last_image_acquired = max(files, key=os.path.getctime)

                        try:
                            # Open file
                            file_name = file_manager.OpenFile(last_image_acquired, FileAccess.Read)

                            # Access image
                            file=file_name
                            imageData = file.GetFrame(0,0)
                            #here is a problem 11-18-2019
                            
                            intensity_frame=np.zeros((n,1340))
                            # Get image data
                            buffer = imageData.GetData()
                            #buffer=imageData.GetDataBuffer()
                            # Print first 10 pixel intensities
                            for i in range(0,n):
                                imageData=file.GetFrame(0,i)
                                buffer=imageData.GetData()
                                for pixel in range(0,1340):
                                    intensity_frame[i][pixel]=buffer[pixel]

                            file_name.Dispose()


                        except IOError:
                            print ("Error: can not find file or read data")

                else:
#                     print(".spe file not found...")
                    print(" ")

#                 print(String.Format("{0} {1}",
#                                     "Image saved to",
#                                     experiment.GetValue(
#                                         ExperimentSettings.
#                                         FileNameGenerationDirectory)))  

                mirror('off')
                wl= experiment.SystemColumnCalibration
                wavelength=np.zeros((1,1340))
                for i in range(1340):wavelength[0,i]=wl[i]
                #print(intensity_frame)
                intensity=np.zeros((1,1340))
                for i in range(1340):
                    x=0
                    for j in range(n):
                        x=x+intensity_frame[j][i]
                    x=x/n
                    intensity[0,i]=x
                    check_intensity=x

                w=[]
                inten=[]

                for x in range(1340):
                    wavelength[0,x]=1e7*(1/532 - 1/wavelength[0,x])
                    w.append(wavelength[0,x])
                    inten.append(intensity[0,x])
                import csv

                ix=np.max(inten)
                return ix
    if begin=="bg":
        def set_value(setting, value):    
        # Check for existence before setting
        # gain, adc rate, or adc quality
            if experiment.Exists(setting):
                experiment.SetValue(setting, value)

        def experiment_completed(sender, event_args):    
#             print("Experiment Completed")    
            # Sets the state of the event to signaled,
            # allowing one or more waiting threads to proceed.
            acquireCompleted.Set()
       

        
        # Check for device and inform user if one is needed
        if (device_found()==True): 
            experiment.ExperimentCompleted += experiment_completed 
            # Check this location for saved spe after running
            #print("Please Enter the Exposure Time:\n")
            #x=int(input())
            set_value(CameraSettings.ShutterTimingExposureTime,3000)
            #print("Please Enter the Number of Frames")
            #y=int(input())
            experiment.SetValue(ExperimentSettings.AcquisitionFramesToStore,10)
            for k in range(1,3):
                if k==1:
                    experiment.SetValue(SpectrometerSettings.GratingCenterWavelength,578.1351880026082)
                elif k==2:
                    experiment.SetValue(SpectrometerSettings.GratingCenterWavelength,621.2340604418703)
               
                _file_name = "case"

                # Pass location of saved file
                save_file(_file_name)

                # Acquire image
                experiment.Acquire()
                time.sleep(35)
                #directory="C:\\Users\\labuser\\Desktop\\data\\Raman\\Vivek\\2019-10-08"
                directory="C:\\Users\\UWAdmin\\Desktop\\AIM-Lab-Automation-master\\AIM-Lab-Automation-master\\spes"
                if( os.path.exists(directory)):        
#                         print("\nFound the .spe file...")        
                        print(" ")
                        # Returns all .spe files
                        files = glob.glob(directory +'/*.spe')

                        # Returns recently acquired .spe file
                        last_image_acquired = max(files, key=os.path.getctime)

                        try:
                            # Open file
                            file_name = file_manager.OpenFile(
                                last_image_acquired, FileAccess.Read)

                            # Access image
                            file=file_name
                            imageData = file.GetFrame(0,0)
                            #here is a problem 11-18-2019
                            n=5
                            intensity_frame=np.zeros((n,1340))
                            # Get image data
                            buffer = imageData.GetData()
                            #buffer=imageData.GetDataBuffer()
                            # Print first 10 pixel intensities
                            for i in range(0,n):
                                imageData=file.GetFrame(0,i)
                                buffer=imageData.GetData()
                                for pixel in range(0,1340):
                                    intensity_frame[i][pixel]=buffer[pixel]

                            file_name.Dispose()


                        except IOError:
                            print ("Error: can not find file or read data")

                else:
#                     print(".spe file not found...")
                  print(" ")

#                 print(String.Format("{0} {1}",
#                                     "Image saved to",
#                                     experiment.GetValue(
#                                         ExperimentSettings.
#                                         FileNameGenerationDirectory)))  


                wl= experiment.SystemColumnCalibration
                wavelength=np.zeros((1,1340))
                for i in range(1340):wavelength[0,i]=wl[i]
                #print(intensity_frame)
                intensity=np.zeros((1,1340))
                for i in range(1340):
                    x=0
                    for j in range(n):
                        x=x+intensity_frame[j][i]
                    x=x/n
                    intensity[0,i]=x
                    check_intensity=x

                w=[]
                inten=[]

                for x in range(1340):
                    wavelength[0,x]=1e7*(1/532 - 1/wavelength[0,x])
                    w.append(wavelength[0,x])
                    inten.append(intensity[0,x])
                import csv
          
                m="background"+str(k)+"D.csv"
                with open(m, 'w', newline='') as f:
                    writer = csv.writer(f)
                    writer.writerow(["W", "I"])
                    writer.writerows(zip(w,inten))

        
    if begin=="on":
        def set_value(setting, value):    
        # Check for existence before setting
        # gain, adc rate, or adc quality
            if experiment.Exists(setting):
                experiment.SetValue(setting, value)

        def experiment_completed(sender, event_args):    
#             print("Experiment Completed")    
            # Sets the state of the event to signaled,
            # allowing one or more waiting threads to proceed.
            acquireCompleted.Set()
       

        
        # Check for device and inform user if one is needed
        if (device_found()==True): 
            experiment.ExperimentCompleted += experiment_completed 
            # Check this location for saved spe after running
            #print("Please Enter the Exposure Time:\n")
            #x=int(input())
            set_value(CameraSettings.ShutterTimingExposureTime,3000)
            #print("Please Enter the Number of Frames")
            #y=int(input())
            experiment.SetValue(ExperimentSettings.AcquisitionFramesToStore,10)
            for k in range(1,3):
                if k==1:
                    experiment.SetValue(SpectrometerSettings.GratingCenterWavelength,578.1351880026082)
                elif k==2:
                    experiment.SetValue(SpectrometerSettings.GratingCenterWavelength,621.2340604418703)
               
                _file_name = "case"

                # Pass location of saved file
                save_file(_file_name)

                # Acquire image
                experiment.Acquire()
                time.sleep(35)
                #directory="C:\\Users\\labuser\\Desktop\\data\\Raman\\Vivek\\2019-10-08"
                directory="C:\\Users\\UWAdmin\\Desktop\\AIM-Lab-Automation-master\\AIM-Lab-Automation-master\\spes"
                if( os.path.exists(directory)): 
#                         print("\nFound the .spe file...")        
                        print(" ")
                        # Returns all .spe files
                        files = glob.glob(directory +'/*.spe')

                        # Returns recently acquired .spe file
                        last_image_acquired = max(files, key=os.path.getctime)

                        try:
                            # Open file
                            file_name = file_manager.OpenFile(
                                last_image_acquired, FileAccess.Read)

                            # Access image
                            file=file_name
                            imageData = file.GetFrame(0,0)
                            #here is a problem 11-18-2019
                            n=10
                            intensity_frame=np.zeros((n,1340))
                            # Get image data
                            buffer = imageData.GetData()
                            #buffer=imageData.GetDataBuffer()
                            # Print first 10 pixel intensities
                            for i in range(0,n):
                                imageData=file.GetFrame(0,i)
                                buffer=imageData.GetData()
                                for pixel in range(0,1340):
                                    intensity_frame[i][pixel]=buffer[pixel]

                            file_name.Dispose()


                        except IOError:
                            print ("Error: can not find file or read data")

                else:
#                     print(".spe file not found...")
                  print(" ")

#                 print(String.Format("{0} {1}",
#                                     "Image saved to",
#                                     experiment.GetValue(
#                                         ExperimentSettings.
#                                         FileNameGenerationDirectory)))  


                wl= experiment.SystemColumnCalibration
                wavelength=np.zeros((1,1340))
                for i in range(1340):wavelength[0,i]=wl[i]
                #print(intensity_frame)
                intensity=np.zeros((1,1340))
                for i in range(1340):
                    x=0
                    for j in range(n):
                        x=x+intensity_frame[j][i]
                    x=x/n
                    intensity[0,i]=x
                    check_intensity=x

                w=[]
                inten=[]

                for x in range(1340):
                    wavelength[0,x]=1e7*(1/532 - 1/wavelength[0,x])
                    w.append(wavelength[0,x])
                    inten.append(intensity[0,x])
                import csv
          
                m="Point "+str(exp_no)+" foreground"+str(k)+"D.csv"
                with open(m, 'w', newline='') as f:
                    writer = csv.writer(f)
                    writer.writerow(["W", "I"])
                    writer.writerows(zip(w,inten))

                 
        if check_intensity>=40e3:
            print("experiment: ",exp_no, ":Patterning not done")
        #,twoGD,twoD,G,WD,WG
        elif check_intensity<40e3:
            gdr=ration(1,2,exp_no)
            return gdr
    if begin=="first":
        def set_value(setting, value):    
        # Check for existence before setting
        # gain, adc rate, or adc quality
            if experiment.Exists(setting):
                experiment.SetValue(setting, value)

        def experiment_completed(sender, event_args):    
#             print("Experiment Completed")    
            # Sets the state of the event to signaled,
            # allowing one or more waiting threads to proceed.
            acquireCompleted.Set()
       

        
        # Check for device and inform user if one is needed
        if (device_found()==True): 
            experiment.ExperimentCompleted += experiment_completed 
            # Check this location for saved spe after running
            #print("Please Enter the Exposure Time:\n")
            #x=int(input())
            set_value(CameraSettings.ShutterTimingExposureTime,3000)
            #print("Please Enter the Number of Frames")
            #y=int(input())
            experiment.SetValue(ExperimentSettings.AcquisitionFramesToStore,5)
            for k in range(1,3):
                if k==1:
                    experiment.SetValue(SpectrometerSettings.GratingCenterWavelength,578.1351880026082)
                elif k==2:
                    experiment.SetValue(SpectrometerSettings.GratingCenterWavelength,621.2340604418703)
                
                _file_name = "case"

                # Pass location of saved file
                save_file(_file_name)

                # Acquire image
                experiment.Acquire()
                time.sleep(25)
                #directory="C:\\Users\\labuser\\Desktop\\data\\Raman\\Vivek\\2019-10-08"
                directory="C:\\Users\\UWAdmin\\Desktop\\AIM-Lab-Automation-master\\AIM-Lab-Automation-master\\spes"
                if( os.path.exists(directory)):        
#                         print("\nFound the .spe file...")        
                        print(" ")
                        # Returns all .spe files
                        files = glob.glob(directory +'/*.spe')

                        # Returns recently acquired .spe file
                        last_image_acquired = max(files, key=os.path.getctime)

                        try:
                            # Open file
                            file_name = file_manager.OpenFile(
                                last_image_acquired, FileAccess.Read)

                            # Access image
                            file=file_name
                            imageData = file.GetFrame(0,0)
                            #here is a problem 11-18-2019
                            n=5
                            intensity_frame=np.zeros((n,1340))
                            # Get image data
                            buffer = imageData.GetData()
                            #buffer=imageData.GetDataBuffer()
                            # Print first 10 pixel intensities
                            for i in range(0,n):
                                imageData=file.GetFrame(0,i)
                                buffer=imageData.GetData()
                                for pixel in range(0,1340):
                                    intensity_frame[i][pixel]=buffer[pixel]

                            file_name.Dispose()


                        except IOError:
                            print ("Error: can not find file or read data")

                else:
#                     print(".spe file not found...")
                  print(" ")

#                 print(String.Format("{0} {1}",
#                                     "Image saved to",
#                                     experiment.GetValue(
#                                         ExperimentSettings.
#                                         FileNameGeneDirectory)))  


                wl= experiment.SystemColumnCalibration
                wavelength=np.zeros((1,1340))
                for i in range(1340):wavelength[0,i]=wl[i]
                #print(intensity_frame)
                intensity=np.zeros((1,1340))
                for i in range(1340):
                    x=0
                    for j in range(n):
                        x=x+intensity_frame[j][i]
                    x=x/n
                    intensity[0,i]=x
                    check_intensity=x

                w=[]
                inten=[]

                for x in range(1340):
                    wavelength[0,x]=1e7*(1/532 - 1/wavelength[0,x])
                    w.append(wavelength[0,x])
                    inten.append(intensity[0,x])
                import csv
          
                m="Before Point "+str(exp_no)+" foreground"+str(k)+"D.csv"
                with open(m, 'w', newline='') as f:
                    writer = csv.writer(f)
                    writer.writerow(["W", "I"])
                    writer.writerows(zip(w,inten))
        
                 
        gd=ration2(1,2,exp_no)
   
        return gd
Example #6
0
def get_spectrometer_info():
    print(
        String.Format(
            "{0} {1}", "Center Wave Length:",
            str(
                experiment.GetValue(
                    SpectrometerSettings.GratingCenterWavelength))))

    print(
        String.Format("{0} {1}", "Grating:",
                      str(experiment.GetValue(SpectrometerSettings.Grating))))


# Create the LightField Application (true for visible)
# The 2nd parameter forces LF to load with no experiment
auto = Automation(True, List[String]())

# Get experiment object
experiment = auto.LightFieldApplication.Experiment

# Find connected device
for device in experiment.ExperimentDevices:

    if (device.IsConnected == True):

        if (experiment.Exists(SpectrometerSettings.GratingCenterWavelength)):

            # Set the spectrometer center wavelength
            set_center_wavelength(5)

            # Get spectrometer settings information
Example #7
0
 def __init__(self, expname):
     self.auto = Automation(True, List[String]())
     self.exp = self.auto.LightFieldApplication.Experiment
     self.exp.Load(expname)
     self.name = expname
Example #8
0
def add_available_devices():
    # Add first available device and return
    for device in experiment.AvailableDevices:
        print("\n\tAdding Device...")
        experiment.Add(device)
        return device

# create a C# compatible List of type String object
list1 = List[String]()

# add the command line option for an empty experiment
list1.Add("/empty")

# Create the LightField Application (true for visible)
auto = Automation(True, List[String](list1))

# Get experiment object
experiment = auto.LightFieldApplication.Experiment


# Check for device and inform user if one is needed
if (experiment.AvailableDevices.Count == 0):
    print("Device not found. Please add a device and try again.")
else:
    device = add_available_devices()
    
    print("\n\tRemoving Device...")
    
    # Removes the current device
    experiment.Remove(device)