Library to generate quicklooks and data quality checks on Helikite campaigns
Project description
EASE (hElikite dAta proceSsing codE)
This library supports Helikite campaigns by unifying field-collected data, generating quicklooks, and performing quality control on instrument recordings. It is available on PyPI and is designed to be used as a Python package within Jupyter notebooks.
Table of Contents
Installation
Installation for standard users
Helikite is published on PyPI. To install it with pip, run:
pip install helikite-data-processing
Installation for contributors
For an isolated development environment, or if you prefer Poetry for dependency management:
Clone the repository
git clone https://github.com/EERL-EPFL/helikite-data-processing.git
cd helikite-data-processing
Install dependencies with Poetry
poetry install
Using the Library
Helikite is intended to be used as an importable Python package. The standard workflow is organized into multiple processing levels, typically executed through Jupyter notebooks. These notebooks allow interactive control during processing, such as selecting flight takeoff and landing times or marking outliers and flags (for example, hovering periods).
The library also supports automatic detection of outliers and flags, enabling fully non-interactive processing. Automatic runs may produce results that differ from manual review, so they should be used with caution.
An example script that processes all flights from a campaign in non-interactive mode is available here.
If the library is installed from source, run the following from the project root to view usage instructions:
poetry run python ./notebooks/execute_all.py --help
Level 0 (Cleaner)
Level 0 synchronizes timestamps across instruments and merges their data into a unified structure.
See the Level 0 notebook for a detailed example, or the execute_level0
function in the script.
Level 1
Level 1 performs quality control, averages humidity and temperature measurements, calculates flight altitude using the barometric equation, and applies instrument-specific processing.
See the Level 1 notebook for a detailed example, or the execute_level1
function in the script.
Level 1.5
Level 1.5 detects flags that indicate environmental or flight conditions, such as hovering, pollution exposure, or cloud immersion.
See the Level 1.5 notebook for a detailed example, or the execute_level1_5
function in the script.
Level 2
Level 2 averages data to 10-second intervals and can merge flights into a final campaign dataset.
See the Level 2 notebook for a detailed example, or the execute_level2
function in the script.
Configuration
Each notebook uses a configuration file, and the same file is applied to all processing levels for a given flight. An example configuration:
flight: "1"
flight_date: 2025-11-26
flight_suffix: "A"
output_schema: "ORACLES_25_26"
campaign_data_dirpath: /home/EERL/data/ORACLES/Helikite/2025-2026/Data/
processing_dir: "./outputs/2025-2026"
Where:
campaign_data_dirpathcontains folder2025-11-26_Acorresponding to an individual campaign flightoutput_schemadefines plot and output formatting (see available schemas here)
Custom schemas can be registered using OutputSchemas.register(name, SCHEMA)
if default configurations do not match campaign needs.
A complete list of available modules and functions is documented on the auto-published documentation site.
Documentation & Examples
Full API documentation is available on the Helikite Data Processing Documentation site.
Development
The Instrument class
All instruments implement a shared interface that allows instrument-specific behavior to override default processing. Data processing components call these methods during workflow execution.
Adding more instruments
New instrument classes should inherit from Instrument and define a unique name. Example:
def __init__(self, *args, **kwargs) -> None:
super().__init__(*args, **kwargs)
self.name = 'mcpc'
Required methods include:
file_identifier()
Determines whether a CSV file belongs to the instrument by inspecting header lines.
def file_identifier(self, first_lines_of_csv) -> bool:
if ("win0Fit0,win0Fit1,win0Fit2,win0Fit3,win0Fit4,win0Fit5,win0Fit6,"
"win0Fit7,win0Fit8,win0Fit9,win1Fit0,win1Fit1,win1Fit2") in first_lines_of_csv[0]:
return True
return False
read_data()
Parses raw instrument data.
data_corrections()
Applies instrument-specific corrections.
set_time_as_index()
Converts the instrument's timestamp information into a common pandas DateTimeIndex.
def set_time_as_index(self, df: pd.DataFrame) -> pd.DataFrame:
df['DateTime'] = pd.to_datetime(
df['#YY/MM/DD'].str.strip() + ' ' + df['HR:MN:SC'].str.strip(),
format='%y/%m/%d %H:%M:%S'
)
df.drop(columns=["#YY/MM/DD", "HR:MN:SC"], inplace=True)
df.set_index('DateTime', inplace=True)
return df
__repr__()
Returns a short instrument label used in certain plots (for example, "FC" for the flight computer).
Additional implementation details and examples are available in the auto-published documentation.
Command-line Interface (Outdated)
The CLI is not up to date with the main processing workflow.
If CLI usage is still required, refer to the legacy documentation: ./cli.md.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file helikite_data_processing-1.1.4.tar.gz.
File metadata
- Download URL: helikite_data_processing-1.1.4.tar.gz
- Upload date:
- Size: 7.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.12 Linux/6.14.0-1017-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e6753279b93e1d8e36e871a73b79d28dcdc5515f302cfeb70b5c2be4d4858e8
|
|
| MD5 |
b1467b1a7eeb86b49d67a746839c4b57
|
|
| BLAKE2b-256 |
ee703153e5a4a1262d141eaae9da6a9414ab53c84cff54509108a14eb3648dde
|
File details
Details for the file helikite_data_processing-1.1.4-py3-none-any.whl.
File metadata
- Download URL: helikite_data_processing-1.1.4-py3-none-any.whl
- Upload date:
- Size: 8.2 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.12 Linux/6.14.0-1017-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eaaaa0863d929a2b668e1d56767d4e6bd188d43015689f9324b68e615d026bd3
|
|
| MD5 |
94495de15922bd0d5604c4fabdc25322
|
|
| BLAKE2b-256 |
b325beed9795e8f8607100f1e8db4f292dd4c4f897b511ecde21caa5b96857e3
|