Directory Structure¶
The general data for POLOCALC campaigns is organized following the scheme
where each flight is is organized as follows:
flight_YYYYMMDD_hhmm/
├── aux
│ ├── YYYYMMDD_hhmmss_config.yml
│ ├── YYYYMMDD_hhmmss_file.log
│ ├── camera
│ │ ├── YYYYMMDD_hhmmss_video.mp4
│ │ └── YYYYMMDD_hhmmss_video.xml
│ └── sensors
│ ├── YYYYMMDD_hhmmss_ACC.bin
│ ├── YYYYMMDD_hhmmss_ADC.bin
│ ├── YYYYMMDD_hhmmss_BAR.bin
│ ├── YYYYMMDD_hhmmss_GPS.bin
│ ├── YYYYMMDD_hhmmss_GYR.bin
│ ├── YYYYMMDD_hhmmss_INC_imu.csv
│ ├── YYYYMMDD_hhmmss_INC_inl2.csv
│ ├── YYYYMMDD_hhmmss_INC_ins.csv
│ ├── YYYYMMDD_hhmmss_INC_log.log
│ ├── YYYYMMDD_hhmmss_MAG.bin
│ ├── YYYYMMDD_hhmmss_TMP.csv
│ └── YYYYMMDD_hhmmss_TMP.log
├── drone
│ ├── YYYYMMDD_hhmmss_drone.csv
│ ├── YYYYMMDD_hhmmss_drone.dat
│ └── YYYYMMDD_hhmmss_litchi.csv
└── proc
├── sync_data.h5
└── analyzed_data
This structure is designed to work with both available loaders in PILS, PathLoader and StoutLoader. The specific structure for the the proc\ folder is given in the following section.
Output Structure¶
HDF5 RAw and Synchronyzed Output¶
The Flightcontainer should be considered immutable at least for the raw_data and metadata. Indeed, those are read from the multiple files and stored for conveninece in a single .h5 file. This file should contain only a single set of processed data. This is the synchronized data which should save all the data in a single dataframe following the recipe given in the Synchronizer section. The resulting dataset should have associated metadata, such as columnnames or synchronizationmethod (or any useful, such as the timing reference).
flight.h5
├── metadata/
│ ├── flight_info/ # Flight identification
│ │ ├── flight_id: "flight-001"
│ │ ├── date: "2023-11-01"
│ │ └── ...
│ └── flight_metadata/ # Processing metadata
│ ├── pils_version: "1.0.0"
│ ├── created_at: "2023-11-01T12:00:00"
│ └── ...
├── raw_data/
│ ├── drone/ # Drone telemetry
│ │ └── [DataFrame columns]
│ ├── litchi/ # Litchi data (if present)
│ │ └── [DataFrame columns]
│ └── sensors/
│ ├── gps/
│ │ └── [DataFrame columns]
│ ├── imu/
│ │ └── [DataFrame columns]
│ └── ...
└── synchronized/ # Versioned sync data
├── rev_20231101_120000/
│ ├── metadata
│ │ ├── sync_method: "correlation"
│ │ └── column_names: []
│ └── GPS
│ ├── metadata
│ │ └── column_names: []
│ └── data (dataset)
│
└── rev_20231101_140000/
└── ...
HDF5 Analysis Output¶
Each product of the analysis should be stored in a .h5 file. Each analysis will have its dedicated folder. Inside the folder, there will be a single .h5file and a series of folders (one per revision) that include the auxilliary results of the data analysis (plots, CSV files etc.).
proc/
└──analysis_name
├── analysis_result.h5
└── rev_YYYYMMDD_hhmmss
├── rev_YYYYMMDD_hhmmss_file.png
└── rev_YYYYMMDD_hhmmss_file.csv
The structure of the .h5 file is the following:
analysis_result.h5
├── rev_YYYYMMDD_hhmmss/
│ ├── metadata
│ └── dataset
└── rev_20231101_140000/
├── metadata
└── Group
├── group_metadata
├── data_1
| ├── metadata
| └── dataset
└── data_2
├── metadata
└── dataset
metadata are assigned using .attrs and are mandatory for each dataset. They should at least include the column names.