def read(file_name):
        file = open(file_name, 'r')
        with file:
            data = yaml.safe_load(file)

            if LighthouseConfigFileManager.TYPE_ID not in data:
                raise Exception('Type field missing')

            if data[LighthouseConfigFileManager.TYPE_ID] != LighthouseConfigFileManager.TYPE:
                raise Exception('Unsupported file type')

            if LighthouseConfigFileManager.VERSION_ID not in data:
                raise Exception('Version field missing')

            if data[LighthouseConfigFileManager.VERSION_ID] != LighthouseConfigFileManager.VERSION:
                raise Exception('Unsupported file version')

            result_geos = {}
            result_calibs = {}

            if LighthouseConfigFileManager.GEOS_ID in data:
                for id, geo in data[LighthouseConfigFileManager.GEOS_ID].items():
                    result_geos[id] = LighthouseBsGeometry.from_file_object(geo)

            if LighthouseConfigFileManager.CALIBS_ID in data:
                for id, calib in data[LighthouseConfigFileManager.CALIBS_ID].items():
                    result_calibs[id] = LighthouseBsCalibration.from_file_object(calib)

            return result_geos, result_calibs
Exemple #2
0
    def test_bs_calibration_file_write_read(self):
        # Fixture
        calib = LighthouseBsCalibration()
        calib.uid = 1234

        calib.sweeps[0].curve = 1.0
        calib.sweeps[0].phase = 2.0
        calib.sweeps[0].tilt = 3.0
        calib.sweeps[0].gibmag = 4.0
        calib.sweeps[0].gibphase = 5.0
        calib.sweeps[0].ogeemag = 6.0
        calib.sweeps[0].ogeephase = 7.0

        calib.sweeps[1].curve = 8.0

        file_object = calib.as_file_object()

        # Test
        actual = LighthouseBsCalibration.from_file_object(file_object)

        # Assert
        actual_file_object = actual.as_file_object()
        self.assertEqual(file_object, actual_file_object)
        self.assertTrue(actual.valid)