Skip to main content

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 path
  • csv_filename: Original filename for metadata extraction
  • verbose: 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 Watts
  • avg_pmu_power: Average PMU power in Watts
  • max_engine_power: Maximum engine power in Watts
  • avg_engine_power: Average engine power in Watts
  • avg_system_efficiency: Average system efficiency in %

Generator Data

  • max_rpm: Maximum generator RPM
  • avg_rpm: Average generator RPM
  • total_engine_hours: Total engine runtime in hours
  • total_flight_hours: Total flight time in hours

Flight Summary

  • num_flights: Number of distinct flights
  • engine_starts: Number of engine start cycles
  • serial_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 if generator_rpm > 2000, else 0
  • droneInFlight: 1 if generator_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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xer_technologies_metadata_extractor-0.5.1.tar.gz (34.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file xer_technologies_metadata_extractor-0.5.1.tar.gz.

File metadata

File hashes

Hashes for xer_technologies_metadata_extractor-0.5.1.tar.gz
Algorithm Hash digest
SHA256 f6488ca3ae32d69d559af43f539c83803e656d3e99e0152efe2b9395089e0f16
MD5 6ea5b4e0bfda8b3f803f00037a41b563
BLAKE2b-256 2749d62d6a7a3dfcf7d0c6887f7cc7358a352cc6ab69bbc4a3e69c89e6ef2a4d

See more details on using hashes here.

File details

Details for the file xer_technologies_metadata_extractor-0.5.1-py3-none-any.whl.

File metadata

File hashes

Hashes for xer_technologies_metadata_extractor-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7592d466055740dcb9e93ae725b4d483f9d8c640f37f2e57b9d76c069a9bc665
MD5 b81d9c9a3870cbdfca9b037cf5c4f48e
BLAKE2b-256 55c2f77a39dfe684c6f2c3a923f3abef36799cc266371c327a0982b51d27b60c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page