Пример #1
0
    def setUp(self):

        dataShare = DataShare()
        configDir = os.path.join(getModulePath(), "configData")
        dataShare.config(configDir, instName=InstName.LSST)

        optStateEstiData = OptStateEstiDataDecorator(dataShare)
        optStateEstiData.configOptStateEstiData()
        self.mixedData = OptCtrlDataDecorator(optStateEstiData)
        self.mixedData.configOptCtrlData(configFileName="optiPSSN_x00.ctrl")

        optStateEsti = OptStateEsti()
        wfsFilePath = os.path.join(getModulePath(), "tests", "testData",
                                   "lsst_wfs_error_iter0.z4c")
        sensorNameList = ["R44_S00", "R04_S20", "R00_S22", "R40_S02"]
        wfErr, fieldIdx = optStateEstiData.getWfAndFieldIdFromFile(
            wfsFilePath, sensorNameList)

        self.filterType = FilterType.REF
        self.optSt = optStateEsti.estiOptState(optStateEstiData,
                                               self.filterType, wfErr,
                                               fieldIdx)

        self.optCtrl = OptCtrl()

        state0InDof = self.mixedData.getState0FromFile()
        testState0InDof = np.ones(len(state0InDof))
        self.optCtrl.setState0(testState0InDof)
        self.optCtrl.initStateToState0()
Пример #2
0
    def testEstiUkWithGainOfComCam(self):

        dataShare = DataShare()
        configDir = os.path.join(getModulePath(), "configData")
        dataShare.config(configDir, instName=InstName.COMCAM)

        optStateEstiData = OptStateEstiDataDecorator(dataShare)
        optStateEstiData.configOptStateEstiData()

        mixedData = OptCtrlDataDecorator(optStateEstiData)
        mixedData.configOptCtrlData(configFileName="optiPSSN_x00.ctrl")

        optStateEsti = OptStateEsti()
        optCtrl = OptCtrl()

        self.ztaac = ZTAAC(optStateEsti, optCtrl, mixedData)
        self.ztaac.config(filterType=FilterType.REF,
                          defaultGain=0.7,
                          fwhmThresholdInArcsec=0.2)

        self._setStateAndState0FromFile()

        gainToUse = 1
        self.ztaac.setGain(gainToUse)

        wfErr, sensorNameList = self._getWfErrAndSensorNameListFromComCamFile()
        uk = self.ztaac.estiUkWithGain(wfErr, sensorNameList)

        ansFilePath = os.path.join(getModulePath(), "tests", "testData",
                                   "comcam_pert_iter1.txt")
        ukAns = gainToUse * np.loadtxt(ansFilePath, usecols=1)

        delta = np.sum(np.abs(uk - ukAns))
        self.assertLess(delta, 0.0012)
Пример #3
0
    def setUp(self):

        dataShare = DataShare()
        configDir = os.path.join(getModulePath(), "configData")
        dataShare.config(configDir, instName=InstName.LSST)

        optStateEstiData = OptStateEstiDataDecorator(dataShare)
        optStateEstiData.configOptStateEstiData()

        mixedData = OptCtrlDataDecorator(optStateEstiData)
        mixedData.configOptCtrlData(configFileName="optiPSSN_x00.ctrl")

        optStateEsti = OptStateEsti()
        optCtrl = OptCtrl()

        self.ztaac = ZTAAC(optStateEsti, optCtrl, mixedData)
        self.ztaac.config(filterType=FilterType.REF,
                          defaultGain=0.7,
                          fwhmThresholdInArcsec=0.2)

        self.ztaac.setState0FromFile(state0InDofFileName="state0inDof.txt")
        self.ztaac.setStateToState0()

        self.camRot = CamRot()
        self.camRot.setRotAng(0)

        iterDataDir = os.path.join(getModulePath(), "tests", "testData",
                                   "iteration")
        self.iterDataReader = IterDataReader(iterDataDir)
Пример #4
0
def setup():

    # Set up the object of data share class. This contains the
    # information of indexes of zk and degree of freedom (DOF)
    # to use.
    dataShare = DataShare()
    configDir = os.path.join(getModulePath(), "configData")
    dataShare.config(configDir, instName=InstName.LSST)

    # Decorate the DataShare object to get the data needed
    # for the OptStateEsti object.
    optStateEstiData = OptStateEstiDataDecorator(dataShare)
    optStateEstiData.configOptStateEstiData()

    # Decorate the DataShare object to get the data needed
    # for the OptCtrl object.
    mixedData = OptCtrlDataDecorator(optStateEstiData)
    mixedData.configOptCtrlData(configFileName="optiPSSN_x00.ctrl")

    # Instantiate the objects of OptStateEsti and OptCtrl classes.
    optStateEsti = OptStateEsti()
    optCtrl = OptCtrl()

    # Instantiate the ZTAAC object with the configured objects.
    ztaac = ZTAAC(optStateEsti, optCtrl, mixedData)

    # Do the configuration of ZTAAC object.
    ztaac.config(filterType=FilterType.REF,
                 defaultGain=0.7,
                 fwhmThresholdInArcsec=0.2)

    # Set the state 0 from file. This is only used in the simulation.
    # In the real control, the state 0 should come from the subsystem
    # by SAL (software abstracion layer). But the algorithm for this
    # needs to be developed.
    ztaac.setState0FromFile(state0InDofFileName="state0inDof.txt")

    # Initialize the state to state 0.
    ztaac.setStateToState0()

    # Instantiate the camera rotation object.
    camRot = CamRot()

    # Set up the rotation angle.
    # The angle is zero degree in the test data.
    camRot.setRotAng(0)

    # Read the test iteration data by the IM closed-loop simulation.
    iterDataDir = os.path.join(getModulePath(), "tests", "testData",
                               "iteration")
    iterDataReader = IterDataReader(iterDataDir)

    return ztaac, camRot, iterDataReader
    def setUp(self):

        dataShare = DataShare()
        configDir = os.path.join(getModulePath(), "configData")
        dataShare.config(configDir, instName=InstName.LSST)
        self.optCtrlData = OptCtrlDataDecorator(dataShare)
        self.optCtrlData.configOptCtrlData()
Пример #6
0
    def setUp(self):

        self.configDir = os.path.join(getModulePath(), "tests", "testData")
        self.fileName = "zkAndDofIdxArraySet.txt"

        filePath = os.path.join(self.configDir, self.fileName)
        self.paramReader = ParamReader(filePath=filePath)
Пример #7
0
    def testGetWfFromShwfsFile(self):

        wfFilePath = os.path.join(getModulePath(), "tests", "testData",
                                  "shwfs_wfs_error.txt")
        wfErr, sensorName = self.ztaac.getWfFromShwfsFile(wfFilePath)

        self.assertEqual(len(wfErr), 19)
        self.assertEqual(sensorName, "R22_S11")
Пример #8
0
    def _getWfErrAndSensorNameListFromLsstFile(self):

        wfFilePath = os.path.join(getModulePath(), "tests", "testData",
                                  "lsst_wfs_error_iter0.z4c")
        sensorNameList = ["R44_S00", "R04_S20", "R00_S22", "R40_S02"]
        wfErr = self.ztaac.getWfFromFile(wfFilePath, sensorNameList)

        return wfErr, sensorNameList
Пример #9
0
    def setUp(self):

        dataShare = DataShare()
        configDir = os.path.join(getModulePath(), "configData")
        dataShare.config(configDir, instName=InstName.LSST)

        self.optStateEstiData = OptStateEstiDataDecorator(dataShare)
        self.optStateEstiData.configOptStateEstiData()

        self.optStateEsti = OptStateEsti()

        wfsFilePath = os.path.join(getModulePath(), "tests", "testData",
                                   "lsst_wfs_error_iter0.z4c")
        sensorNameList = ["R44_S00", "R04_S20", "R00_S22", "R40_S02"]
        wfErr, fieldIdx = self.optStateEstiData.getWfAndFieldIdFromFile(
            wfsFilePath, sensorNameList)
        self.wfErr = wfErr
        self.fieldIdx = fieldIdx
    def testGetQwgtOfComcam(self):

        dataShare = DataShare()
        configDir = os.path.join(getModulePath(), "configData")
        dataShare.config(configDir, instName=InstName.COMCAM)
        optCtrlData = OptCtrlDataDecorator(dataShare)
        optCtrlData.configOptCtrlData()

        qWgt = optCtrlData.getQwgt()
        self.assertEqual(len(qWgt), 9)
        self.assertAlmostEqual(np.sum(qWgt), 1)
Пример #11
0
    def _getWfErrAndSensorNameListFromComCamFile(self):

        wfFilePath = os.path.join(getModulePath(), "tests", "testData",
                                  "comcam_wfs_error_iter0.z4c")
        sensorNameList = [
            "R22_S00", "R22_S01", "R22_S02", "R22_S10", "R22_S11", "R22_S12",
            "R22_S20", "R22_S21", "R22_S22"
        ]
        wfErr = self.ztaac.getWfFromFile(wfFilePath, sensorNameList)

        return wfErr, sensorNameList
Пример #12
0
    def _getConfigDataPath(self):
        """Get the configuration data path.

        Returns
        -------
        str
            Configuration data path
        """

        configDataPath = os.path.join(getModulePath(), "configData")

        return configDataPath
Пример #13
0
    def testEstiUkWithGainOfLsst(self):

        gainToUse = 0.9

        self._setStateAndState0FromFile()
        self.ztaac.setGain(gainToUse)

        wfErr, sensorNameList = self._getWfErrAndSensorNameListFromLsstFile()
        uk = self.ztaac.estiUkWithGain(wfErr, sensorNameList)

        ansFilePath = os.path.join(getModulePath(), "tests", "testData",
                                   "lsst_pert_iter1.txt")
        ukAns = gainToUse * np.loadtxt(ansFilePath, usecols=1)

        delta = np.sum(np.abs(uk - ukAns))
        self.assertLess(delta, 0.0012)
Пример #14
0
    def setUp(self):

        dataShare = DataShare()
        configDir = os.path.join(getModulePath(), "configData")
        dataShare.config(configDir, instName=InstName.LSST)

        optStateEstiData = OptStateEstiDataDecorator(dataShare)
        optStateEstiData.configOptStateEstiData()

        mixedData = OptCtrlDataDecorator(optStateEstiData)
        mixedData.configOptCtrlData(configFileName="optiPSSN_x00.ctrl")

        optStateEsti = OptStateEsti()
        optCtrl = OptCtrl()

        self.ztaac = ZTAAC(optStateEsti, optCtrl, mixedData)
        self.ztaac.config(filterType=FilterType.REF,
                          defaultGain=0.7,
                          fwhmThresholdInArcsec=0.2)
Пример #15
0
    def setUp(self):

        self.configDir = os.path.join(getModulePath(), "tests", "testData")