Repository navigation
v0.3.0-beta
Pre-release
Pre-release
OLAF v0.3.0-beta - Beta Release
Status: Pre-release beta version. Core functionality is stable and suitable for testing. API and output formats may change before v1.0.
Overview
OLAF (OpenSource Library for Automating Freezing) is a Python toolkit for processing Ice Nucleation Spectrometer (INS) data. This beta release provides a complete workflow from raw droplet freezing data to Ice Nucleating Particle (INP) concentrations suitable for scientific analysis.
Beta Phase: This release is provided to enable early citation and testing by the research community. Feedback is welcome via GitHub Issues.
Core Features (Tested and Functional)
Three-Stage Processing Pipeline
Stage 1: Raw Data Processing
- Load tab-delimited .dat files with frozen well counts
- Interactive GUI for manual validation and correction
- Calculate INP concentrations per liter of air
- Agresti-Coull confidence intervals for binomial proportions
- Temperature binning at 0.5°C intervals
- Support for multiple dilution series (up to 6 samples)
Stage 2: Blank Correction
- Automatic blank file detection and averaging
- Background subtraction with error propagation (root mean square)
- Linear extrapolation for missing temperature ranges
- Monotonicity enforcement (INP concentration increases with decreasing temperature)
- Quality control checks with configurable error thresholds
Stage 3: Final Data Products
- Combine multiple treatments (base, heat, peroxide)
- Generate ARM (Atmospheric Radiation Measurement) formatted output
- Preserve metadata across processing stages
- Unix timestamp conversion for integration with ARM data
Interactive GUI Application
- Image-by-image review of 96-well plate microscope images
- Real-time display of current temperature
- Per-sample adjustment controls (+1/-1 buttons)
- Navigation: back/forward, ±10 images for rapid review
- Boundary enforcement (0 to max wells per sample)
- Automatic save on completion
Sample Type Support
- Atmospheric air samples: Standard INP/L calculations
- Liquid samples: Direct suspension analysis
- Soil samples: Dry mass normalization
- TBS (Tethered Balloon System): Altitude metadata tracking
Data Validation
- Configuration sanity checks (samples × wells = 192)
- Treatment/folder name matching verification
- Automatic blank detection for appropriate experiments
- Date parsing from folder names
Technical Specifications
Requirements:
- Python ≥ 3.11.0
- Core dependencies: matplotlib ≥ 3.10.3, pandas ≥ 2.2.3
- Platform support: Windows, macOS, Linux
- GUI requirement: tkinter (typically bundled with Python)
Project Management:
- Package manager:
uv(recommended) orpip - Project structure:
pyproject.tomlbased - Development tools: ruff, pytest, mypy, sphinx
Input Data Format:
.datfiles: Tab-delimited with headers (Time, Avg_Temp, Sample_0-N, Picture)- Images: PNG/JPG microscope images of 96-well plates
- Folder naming: Must include date (MM.DD.YYYY format)
Output Files:
Stage 1:
reviewed_*.dat: GUI-corrected frozen well countsfrozen_at_temp_*.csv: Temperature-binned freezing dataINPs_L_*.csv: INP concentrations with confidence intervalsplot_*.png: Optional INP spectrum visualization
Stage 2:
combined_blank_*.csv: Averaged blank measurementsblank_corrected_*.csv: Background-corrected INP datablank_corrected_comp_plot_*.png: Optional comparison plots
Stage 3:
final_files/*.csv: ARM-formatted combined treatments