Пример #1
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)
Пример #2
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)
Пример #3
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)
Пример #4
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)
Пример #5
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")
Пример #6
0
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')
Пример #7
0
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')
Пример #8
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:

            # 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")
Пример #9
0
    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)
Пример #10
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("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")
Пример #11
0
    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)
Пример #12
0
    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()
Пример #13
0
    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()
Пример #14
0
 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)
Пример #15
0
 def newParameters(self, parameters):
     for attr in params.difference(parameters, self.parameters):
         self.parameters.setv(attr, parameters.get(attr))
Пример #16
0
 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)