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
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()
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')
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)
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
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
def __init__(self, expname): self.auto = Automation(True, List[String]()) self.exp = self.auto.LightFieldApplication.Experiment self.exp.Load(expname) self.name = expname
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)