Internal data extraction utilities
Project description
XER Technologies Metadata Extractor
A Python package for extracting comprehensive flight metadata from CSV files generated by XER Technologies' flight controllers. The package processes flight telemetry data and extracts key performance metrics, timing information, and system statistics.
Features
- Flight Data Processing: Extracts metadata from flight telemetry CSV files
- Intelligent Filtering: All statistics calculated only during actual flight time (
droneInFlight == 1) - Unix Timestamp Support: Handles Unix timestamps in milliseconds and standard datetime formats
- Power Calculations: Calculates PMU power, engine power, and system efficiency
- Duration Tracking: Tracks engine runtime, flight time, and total log duration
- Serial Number Detection: Automatically finds 3-digit serial numbers in data
- Robust Validation: Validates data quality and handles missing columns gracefully
Installation
pip install XER_Technologies_metadata_extractor
Quick Start
from XER_Technologies_metadata_extractor import extract_csv_metadata
# Extract metadata from a CSV file
with open("flight_data.csv", "rb") as f:
metadata = extract_csv_metadata(
csv_data=f,
csv_filename="Flight_Test_20240516_084236.csv",
verbose=False
)
print(metadata)
Core Function
extract_csv_metadata()
def extract_csv_metadata(
csv_data: Union[str, BytesIO, Path],
csv_filename: str,
verbose: bool = False
) -> Dict[str, Any]
Parameters:
csv_data: CSV content as string, BytesIO object, or file pathcsv_filename: Original filename for metadata extractionverbose: Enable detailed logging (default: False)
Returns: Dictionary containing comprehensive flight metadata
Metadata Output
The package extracts the following metadata categories:
Timing Information
log_duration: Total log duration (HH:MM:SS)start_time: Flight start time (HH:MM:SS)end_time: Flight end time (HH:MM:SS)flight_date: Flight date (YYYY-MM-DD)
Power Data
max_pmu_power: Maximum PMU power in Wattsavg_pmu_power: Average PMU power in Wattsmax_engine_power: Maximum engine power in Wattsavg_engine_power: Average engine power in Wattsavg_system_efficiency: Average system efficiency in %
Generator Data
max_rpm: Maximum generator RPMavg_rpm: Average generator RPMtotal_engine_hours: Total engine runtime in hourstotal_flight_hours: Total flight time in hours
Flight Summary
num_flights: Number of distinct flightsengine_starts: Number of engine start cyclesserial_number: Device serial number (3-digit format)
Data Processing Features
Flight Data Filtering
All statistical calculations (max, min, avg) are performed only on data points where droneInFlight == 1, ensuring metrics reflect actual flight performance.
Timestamp Handling
- Unix Timestamps: Automatically detects and converts Unix timestamps in milliseconds
- Standard Formats: Supports ISO datetime strings and other standard formats
- Time Formatting: Start and end times formatted as HH:MM:SS for readability
Serial Number Detection
Automatically finds the first 3-digit serial number in the data, skipping over zeros and other values.
Derived Columns
The package automatically creates:
isGeneratorRunning: 1 ifgenerator_rpm > 2000, else 0droneInFlight: 1 ifgenerator_rpm > 5100, else 0
Usage Examples
Basic File Processing
from XER_Technologies_metadata_extractor import extract_csv_metadata
# Process a local CSV file
metadata = extract_csv_metadata(
csv_data="path/to/flight_data.csv",
csv_filename="Flight_Test_20240516_084236.csv"
)
BytesIO Processing (for S3 integration)
from io import BytesIO
csv_buffer = BytesIO(csv_content.encode('utf-8'))
metadata = extract_csv_metadata(
csv_data=csv_buffer,
csv_filename="flight_data.csv"
)
Verbose Processing
metadata = extract_csv_metadata(
csv_data="flight_data.csv",
csv_filename="flight_data.csv",
verbose=True # Enable detailed logging
)
Data Requirements
CSV Format
- Encoding: UTF-8
- Minimum Rows: At least 100 data points required
- Required Columns:
time(Unix timestamp in milliseconds) - Optional Columns: All other columns handled gracefully with warnings
Column Mapping
The package automatically maps legacy column names to standard formats and creates derived columns for analysis.
Development
Setup
git clone <repo-url>
cd XERMetaDataExtractor
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -e ".[dev]"
Testing
# Run tests using pytest
pytest tests/
Quality Checks
pytest
black .
mypy .
ruff check .
Configuration
The package uses a flexible metadata configuration system that defines:
- Field names and categories
- Calculation methods (max, min, avg, duration, etc.)
- Source columns and validation rules
- Conditional calculations based on flight status
Error Handling
The package gracefully handles:
- Missing columns (with warnings)
- Invalid data formats
- Empty or corrupted files
- Insufficient data points
All errors are captured in the metadata output for debugging and monitoring.
Performance
- Memory Efficient: Processes large files without loading entire dataset into memory
- Fast Processing: Optimized pandas operations for quick metadata extraction
- Robust: Handles various data formats and edge cases
License
[Add your license information here]
Contributing
[Add contribution guidelines here]
Project details
Release history Release notifications | RSS feed
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 xer_technologies_metadata_extractor-0.5.3.tar.gz.
File metadata
- Download URL: xer_technologies_metadata_extractor-0.5.3.tar.gz
- Upload date:
- Size: 34.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e05ac3c3489f83b7b0d69ff54bbd412fc3aec7567b25f8ba8892beb3a9a3837a
|
|
| MD5 |
0dbd41715503fd63699d6da45d080a3c
|
|
| BLAKE2b-256 |
940da4c6301c272a5954ce239f3ee76e752057939b0a78e044903e5e2c402296
|
File details
Details for the file xer_technologies_metadata_extractor-0.5.3-py3-none-any.whl.
File metadata
- Download URL: xer_technologies_metadata_extractor-0.5.3-py3-none-any.whl
- Upload date:
- Size: 37.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee64855cf8539e15232ceb5c2caee94e46509961d550b4cbbfb58905abaa0d8e
|
|
| MD5 |
0f0548c311006e3449b1af32c246d570
|
|
| BLAKE2b-256 |
75124810521dc988df644dabf36588cf83539a1d952e81e70d13b083674d87aa
|