def test_parameters_5(): # Load parameters. p1 = params.parameters(test.xmlFilePathAndName("test_parameters.xml"), recurse=True, add_filename_param=False) # Save. p1.saveToFile("temp.xml") # Re-load. p2 = params.parameters("temp.xml", recurse=True, add_filename_param=False) # Check that they are the same. assert (len(params.difference(p1, p2)) == 0) and (len( params.difference(p2, p1)) == 0)
def test_parameters_3(): # Load parameters. p1 = params.parameters(test.xmlFilePathAndName("test_parameters.xml"), recurse = True) # Test sub-section creation. p2 = params.StormXMLObject() p2s = p2.addSubSection("camera1", p1.get("camera1").copy()) p2s.add(params.ParameterInt(name = "test", value = 5)) # p2 is different then p1 because it has 'test'. assert (params.difference(p2.get("camera1"), p1.get("camera1"))[0] == "test") # But p1 is not different from p2 because difference() only # checks p1 properties that exist in p1. assert (len(params.difference(p1.get("camera1"), p2.get("camera1"))) == 0)
def test_parameters_5(): # Load parameters. p1 = params.parameters(test.xmlFilePathAndName("test_parameters.xml"), recurse = True, add_filename_param = False) # Save. p1.saveToFile("temp.xml") # Re-load. p2 = params.parameters("temp.xml", recurse = True, add_filename_param = False) # Check that they are the same. assert (len(params.difference(p1, p2)) == 0) and (len(params.difference(p2, p1)) == 0)
def test_parameters_3(): # Load parameters. p1 = params.parameters(test.xmlFilePathAndName("test_parameters.xml"), recurse=True) # Test sub-section creation. p2 = params.StormXMLObject() p2s = p2.addSubSection("camera1", p1.get("camera1").copy()) p2s.add(params.ParameterInt(name="test", value=5)) # p2 is different then p1 because it has 'test'. assert (params.difference(p2.get("camera1"), p1.get("camera1"))[0] == "test") # But p1 is not different from p2 because difference() only # checks p1 properties that exist in p1. assert (len(params.difference(p1.get("camera1"), p2.get("camera1"))) == 0)
def newParameters(self, parameters, initialization = False): if initialization: changed_p_names = parameters.getAttrs() else: changed_p_names = params.difference(parameters, self.parameters) p = parameters for pname in changed_p_names: print(pname) # Update our current parameters. self.parameters.setv(pname, p.get(pname)) # Configure the W1. if (pname == "bright_field_bypass"): if p.get("bright_field_bypass"): self.w1.commandResponse("BF_ON", 1) else: self.w1.commandResponse("BF_OFF", 1) elif (pname == "spin_disk"): if p.get("spin_disk"): self.w1.commandResponse("MS_RUN", 3) else: self.w1.commandResponse("MS_STOP", 1) elif (pname == "disk"): if (p.get("disk") == "50-micron pinholes"): r = self.w1.commandResponse("DC_SLCT,1", 3) elif (p.get("disk") == "25-micron pinholes"): r = self.w1.commandResponse("DC_SLCT,2", 3) print("disk") print(r) elif (pname == "disk_speed"): self.w1.commandResponse("MS,"+str(p.get("disk_speed")), 1) elif (pname == "dichroic_mirror"): dichroic_num = self.dichroic_mirror_config[p.get("dichroic_mirror")] r = self.w1.commandResponse("DMM_POS,1,"+str(dichroic_num), 1) print(r) a = self.w1.commandResponse("DMM_POS,1,?", 1) print(a) elif (pname == "filter_wheel_pos1"): filter1_num = self.filter_wheel_1_config[p.get("filter_wheel_pos1")] print("filter wheel position") c = self.w1.commandResponse("FW_POS,1," + str(filter1_num) , 1) print(c) a = self.w1.commandResponse("FW_POS,1,?", 1) print(a) else: print(">> Warning", str(pname), " is not a valid parameter for the W1")
def test_parameters_2(): # Load parameters. p1 = params.parameters(test.xmlFilePathAndName("test_parameters.xml"), recurse = True) # Copy. p2 = p1.copy() # Check that p1 and p2 store the same values and have # the same structure. assert (len(params.difference(p1, p2)) == 0) # Change a value in p2. p2.set("camera1.flip_horizontal", True) # Check that p1 is still the same. assert (p1.get("camera1.flip_horizontal") == False) # Get the difference between p1 and p2. assert (params.difference(p1, p2)[0] == 'camera1.flip_horizontal')
def test_parameters_2(): # Load parameters. p1 = params.parameters(test.xmlFilePathAndName("test_parameters.xml"), recurse=True) # Copy. p2 = p1.copy() # Check that p1 and p2 store the same values and have # the same structure. assert (len(params.difference(p1, p2)) == 0) # Change a value in p2. p2.set("camera1.flip_horizontal", True) # Check that p1 is still the same. assert (p1.get("camera1.flip_horizontal") == False) # Get the difference between p1 and p2. assert (params.difference(p1, p2)[0] == 'camera1.flip_horizontal')
def newParameters(self, parameters, initialization = False): if initialization: changed_p_names = parameters.getAttrs() else: changed_p_names = params.difference(parameters, self.parameters) p = parameters for pname in changed_p_names: # Update our current parameters. self.parameters.setv(pname, p.get(pname)) # Configure the W1. if (pname == "bright_field_bypass"): if p.get("bright_field_bypass"): self.w1.commandResponse("BF_ON", 1) else: self.w1.commandResponse("BF_OFF", 1) elif (pname == "spin_disk"): if p.get("spin_disk"): self.w1.commandResponse("MS_RUN", 3) else: self.w1.commandResponse("MS_STOP", 1) elif (pname == "disk"): if (p.get("disk") == "50-micron pinholes"): self.w1.commandResponse("DC_SLCT,1", 3) elif (p.get("disk") == "25-micron pinholes"): self.w1.commandResponse("DC_SLCT,2", 3) elif (pname == "disk_speed"): self.w1.commandResponse("MS,"+str(p.get("disk_speed")), 1) elif (pname == "dichroic_mirror"): dichroic_num = self.dichroic_mirror_config[p.get("dichroic_mirror")] self.w1.commandResponse("DMM_POS,1,"+str(dichroic_num), 1) elif (pname == "filter_wheel_pos1") or (pname == "filter_wheel_pos2"): filter1_num = self.filter_wheel_1_config[p.get("filter_wheel_pos1")] filter2_num = self.filter_wheel_2_config[p.get("filter_wheel_pos2")] self.w1.commandResponse("FW_POS,0," + str(filter1_num) + "," + str(filter2_num), 0.1) elif (pname == "camera_dichroic_mirror"): camera_dichroic_num = self.camera_dichroic_config[p.get("camera_dichroic_mirror")] self.w1.commandResponse("PT_POS,1," + str(camera_dichroic_num), 1) elif (pname == "aperture"): self.w1.commandResponse("AP_WIDTH,1,"+str(p.get("aperture")), 0.5) else: print(">> Warning", str(pname), " is not a valid parameter for the W1")
def __init__(self, configuration=None, **kwds): super().__init__(**kwds) self.current_mode = None self.modes = [] self.parameters = params.StormXMLObject() self.ui = focuslockUi.Ui_Dialog() self.ui.setupUi(self) # Add parameters self.parameters.add( params.ParameterFloat(description="Z stage jump size", name="jump_size", value=0.1)) # Set up lock display. self.lock_display = lockDisplay.LockDisplay( configuration=configuration, jump_signal=self.jump, parent=self) layout = QtWidgets.QGridLayout(self.ui.lockDisplayWidget) layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.lock_display) # Configure modes. lockModes.FindSumMixin.addParameters(self.parameters) lockModes.LockedMixin.addParameters(self.parameters) lockModes.ScanMixin.addParameters(self.parameters) for mode_class_name in configuration.get("lock_modes").split(","): a_class = getattr(lockModes, mode_class_name.strip()) a_object = a_class(parameters=self.parameters, parent=self) self.ui.modeComboBox.addItem(a_object.getName()) self.modes.append(a_object) # Set parameters values based on the config file parameters. c_params = configuration.get("parameters") for attr in params.difference(c_params, self.parameters): print(attr, c_params.get(attr)) self.parameters.setv(attr, c_params.get(attr)) self.newParameters(self.parameters) # Connect signals. self.ui.jumpNButton.clicked.connect(self.handleJumpNButton) self.ui.jumpPButton.clicked.connect(self.handleJumpPButton) self.ui.lockButton.clicked.connect(self.handleLockButton) self.ui.lockTargetSpinBox.valueChanged.connect(self.handleLockTarget) self.ui.modeComboBox.currentIndexChanged.connect( self.handleModeComboBox) self.setEnabled(False)
def newParameters(self, parameters, initialization=False): if initialization: changed_p_names = parameters.getAttrs() else: changed_p_names = params.difference(parameters, self.parameters) p = parameters for pname in changed_p_names: print(pname) # Update our current parameters. self.parameters.setv(pname, p.get(pname)) # Configure the W1. if (pname == "bright_field_bypass"): if p.get("bright_field_bypass"): self.w1.commandResponse("D0", 3) else: self.w1.commandResponse("D1", 3) elif (pname == "spin_disk"): if p.get("spin_disk"): self.w1.commandResponse("N1", 1) else: self.w1.commandResponse("N0", 1) elif (pname == "disk"): if (p.get("disk") == "70-micron pinholes"): r = self.w1.commandResponse("D1", 3) elif (p.get("disk") == "40-micron pinholes"): r = self.w1.commandResponse("D2", 3) print("changing disk") print(r) elif (pname == "dichroic_mirror"): dichroic_num = self.dichroic_mirror_config[p.get( "dichroic_mirror")] self.w1.commandResponse("D" + str(dichroic_num), 1) elif (pname == "filter_wheel_pos1"): filter1_num = self.filter_wheel_1_config[p.get( "filter_wheel_pos1")] print("updating filter wheel position") self.w1.commandResponse("B" + str(filter1_num), 1) else: print(">> Warning", str(pname), " is not a valid parameter for the Confocal")
def __init__(self, configuration = None, **kwds): super().__init__(**kwds) self.current_mode = None self.modes = [] self.parameters = params.StormXMLObject() self.ui = focuslockUi.Ui_Dialog() self.ui.setupUi(self) # Add parameters self.parameters.add(params.ParameterFloat(description = "Z stage jump size", name = "jump_size", value = 0.1)) # Set up lock display. self.lock_display = lockDisplay.LockDisplay(configuration = configuration, jump_signal = self.jump, parent = self) layout = QtWidgets.QGridLayout(self.ui.lockDisplayWidget) layout.setContentsMargins(0,0,0,0) layout.addWidget(self.lock_display) # Configure modes. lockModes.FindSumMixin.addParameters(self.parameters) lockModes.LockedMixin.addParameters(self.parameters) lockModes.ScanMixin.addParameters(self.parameters) for mode_class_name in configuration.get("lock_modes").split(","): a_class = getattr(lockModes, mode_class_name.strip()) a_object = a_class(parameters = self.parameters, parent = self) self.ui.modeComboBox.addItem(a_object.getName()) self.modes.append(a_object) # Set parameters values based on the config file parameters. c_params = configuration.get("parameters") for attr in params.difference(c_params, self.parameters): print(attr, c_params.get(attr)) self.parameters.setv(attr, c_params.get(attr)) self.newParameters(self.parameters) # Connect signals. self.ui.jumpNButton.clicked.connect(self.handleJumpNButton) self.ui.jumpPButton.clicked.connect(self.handleJumpPButton) self.ui.lockButton.clicked.connect(self.handleLockButton) self.ui.lockTargetSpinBox.valueChanged.connect(self.handleLockTarget) self.ui.modeComboBox.currentIndexChanged.connect(self.handleModeComboBox) self.setEnabled(False)
def newParameters(self, parameters, initialization = False): size_x = parameters.get("x_end") - parameters.get("x_start") + 1 size_y = parameters.get("y_end") - parameters.get("y_start") + 1 parameters.setv("x_pixels", size_x) parameters.setv("y_pixels", size_y) parameters.setv("bytes_per_frame", 2 * size_x * size_y) super().newParameters(parameters) # Figure out which parameters have changed. if initialization: changed_p_names = parameters.getAttrs() else: changed_p_names = params.difference(parameters, self.parameters) # Check if we actually need to do anything. if (len(changed_p_names) > 0): if not initialization: time.sleep(0.5) running = self.running if running: self.stopCamera() p = self.parameters # Update parameters. for pname in changed_p_names: p.set(pname, parameters.get(pname)) # Configure camera. p = self.parameters if (p.get("exposure_time") < 0.010): p.set("exposure_time", 0.010) p.set("fps", 1.0/p.get("exposure_time")) self.fake_frame_size = [size_x, size_y] self.fake_frame = numpy.zeros(size_x * size_y, dtype = numpy.uint16) for i in range(size_x): for j in range(size_y): self.fake_frame[j*size_x+i] = i % 128 + j % 128 if running: self.startCamera() self.camera_functionality.parametersChanged.emit()
def newParameters(self, parameters, initialization=False): size_x = parameters.get("x_end") - parameters.get("x_start") + 1 size_y = parameters.get("y_end") - parameters.get("y_start") + 1 parameters.setv("x_pixels", size_x) parameters.setv("y_pixels", size_y) parameters.setv("bytes_per_frame", 2 * size_x * size_y) super().newParameters(parameters) # Figure out which parameters have changed. if initialization: changed_p_names = parameters.getAttrs() else: changed_p_names = params.difference(parameters, self.parameters) # Check if we actually need to do anything. if (len(changed_p_names) > 0): if not initialization: time.sleep(0.5) running = self.running if running: self.stopCamera() p = self.parameters # Update parameters. for pname in changed_p_names: p.set(pname, parameters.get(pname)) # Configure camera. p = self.parameters if (p.get("exposure_time") < 0.010): p.set("exposure_time", 0.010) p.set("fps", 1.0 / p.get("exposure_time")) self.fake_frame_size = [size_x, size_y] self.fake_frame = numpy.zeros(size_x * size_y, dtype=numpy.uint16) for i in range(size_x): for j in range(size_y): self.fake_frame[j * size_x + i] = i % 128 + j % 128 if running: self.startCamera() self.camera_functionality.parametersChanged.emit()
def newParameters(self, parameters): for attr in params.difference(parameters, self.parameters): self.parameters.setv(attr, parameters.get(attr)) self.lock_display.newParameters(parameters) for mode in self.modes: mode.newParameters(self.parameters)
def newParameters(self, parameters): for attr in params.difference(parameters, self.parameters): self.parameters.setv(attr, parameters.get(attr))