Tools and notebooks for preprocessing, analyzing, and visualizing engine hotfire thrust, pressure, temperature, and event data.
filtering.py- Defines anLPFhelper that builds and applies a SciPy FIR low-pass filter to smooth sensor signals.preprocessing.py- Converts raw hotfire data into processeddata.npz/data.csvfiles, parses controller logs intoevents.csv, and imports processed data/events for analysis notebooks.visualization.py- Provides utilities for finding samples by time and plotting sensor data around logged events with optional filtering and multi-curve overlays.
Each analysis-*.ipynb notebook is a hotfire-specific analysis workspace. Most follow the same rough pattern: define the data directory, map raw sensor names to readable labels, map driver IDs to valve/event names, preprocess raw logs/data, import processed data/events, then create ignition-centered plots.
- Install the packages listed in
requirements.txt - If you do not wish to affect existing installations on your system, create and run a Virtual Environment
- Data file pulled from the RPi must be named
raw.csv - Log file must be named
console.log - Place these two files in a
data-rawfolder which is placed in a folder as shown below
<hotfire-dir>/
data-raw/
raw.csv
console.log
TODO: Add preprocessing example.
import preprocessing as prep
DATA_DIR = "TODO"
SENSORS = {
# "raw_sensor_name": "Readable Sensor Name",
}
DRIVERS = {
# driver_id: {"name": "Valve Name", "False": "Close", "True": "Open"},
}
prep.process_events_quonkboard(DATA_DIR, DRIVERS)
prep.process_data(DATA_DIR, SENSORS)TODO: Add analysis/plotting example.
import preprocessing as prep
import visualization as vis
from filtering import LPF
events = prep.import_events(DATA_DIR)
labels, data = prep.import_data(DATA_DIR, events)
plotter = vis.EventPlotter(data, events, dpi=100)
filter = LPF(fs=300, length=101, cutoff=10, window="blackman")
plotter.plot(
sensor_id=1,
event_id=0,
duration=40,
filter=filter,
title="TODO",
ylabel="TODO",
)