Package: h5-info-pkg-inra-phenome
H5Info PackageThis Python package contains the necessary tools to extract data and metadata from HDF5 files generated by Phenomobile or PhenoMan (LITERAL) acquisition in the context of the Phenome project by INRAE, France.The API of the H5Info package exposes 3 methods:load_data(): to extract data from a HDF5 file and store it into aH5InfoPython structuresave_metadata(): to save aH5Infometadata structure into a JSON  fileload_metadata(): to load aH5Infometadata structure from a JSON fileIf an error occurs because of invalid data, aDataErrorexception is raised. A good practice consists in catching this error in a separateexceptblock than the other exceptions.Please refer to themain.pyscript for an example about how to use these three methods.Install H5Info moduleThe H5Info module is deployed on PyPi (Python Package Index) under the nameh5-info-pkg-inra-phenome.To install the H5Info module on your local environment, run the following command by indicating the specific version needed (here 1.3.0):pip install h5-info-pkg-inra-phenome==1.3.0H5Info Structure Exampleh5_info = H5Info()Sessionh5_info.session.date = 2020-02-03_09:45:23h5_info.session.experiment_id = "2019_SunRise"h5_info.session.experiment_uri = "http://www.phenome-fppn.fr/diaphen/2019/v1901"h5_info.session.local_infra = "Diaphen"h5_info.session.national_infra = "PHENOME"Ploth5_info.plot.id = "20LP4_129_8_1039"h5_info.plot.uri = "http://www.phenome-fppn.fr/diaphen/2018/v1801"h5_info.plot.coordinates = [[1.5015271931087, 43.532682695713], [1.5015062032854, 43.532676540606], [1.5014877113578, 43.532709920144], [1.5015087011914, 43.532716075254]]h5_info.plot.orientation = 158.04785481961858Vectorh5_info.vector.id = "Phenomobile V2"h5_info.vector.uri = "http://www.phenome-fppn.fr/diaphen/2018/v1801"h5_info.vector.serial_nb = "PHENOMOBILE_V2_02"h5_info.vector.acquisition_version = "2.0"h5_info.vector.format_version = "1.8"Sensorsfor sensor in h5_info.sensors:sensor.id = "4"sensor.type = "camera"sensor.description = "camera_1"sensor.manufacturer = "Baumer"sensor.firmware = "1.2.0"sensor.model = "VLG 40C"sensor.serial_nb = "00_06_be_01_62_f0"sensor.uri = "http://www.phenome-fppn.fr/agrophen/2019/s19003"if sensor.type == TYPE_CAMERA:sensor.bayer_grid = "Bayer_RG12"sensor.focal_length = 25.0sensor.lens_angular_aperture = 28.0Notice that if these optional fields are not available they are initialized to 0.0 or empty string. Therefore, it is possible to determine whether to use a default value by doing the following, for example:ifnotsensor.focal_length:sensor.focal_length=25.0Imagefor image in sensor.images:image.name = "camera_1_1"image.date = 2019-06-04_12:11:52.316072Camera, Multispectral and Lidar images have also their own specific attributes.CameraImageattributes:image.shutter_time = 500image.width = 2040image.height = 2044image.size = 8339520LidarImageattributes:image.frequency = 300.0image.angle_increment = 0.003490658476948738MultispectralCameraImageattributes:image.size = 2461422image.channel = 450PositionEach sensor also has its own set of positions :sensor.position.pitch = "0.0"sensor.position.roll = "-180.0"sensor.position.yaw = "-90.0"sensor.position.x = "0.02"sensor.position.y = "0.23"sensor.position.z = "0.0"Others fieldsTheH5Infostructure contains other fields not detailed here, such asstatic transformsfactors describing the positions (x, y, z, pitch, rool and yaw) of each element composing the acquisition system.In addition, a geolocalisation file containing positions of the head is saved in a separate file named `*-geo.csv``