Skip to content

v0.3.0-beta

Pre-release
Pre-release

Choose a tag to compare

@SiGran SiGran released this 03 Nov 04:05
· 50 commits to main since this release
970896f

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) or pip
  • Project structure: pyproject.toml based
  • Development tools: ruff, pytest, mypy, sphinx

Input Data Format:

  • .dat files: 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 counts
  • frozen_at_temp_*.csv: Temperature-binned freezing data
  • INPs_L_*.csv: INP concentrations with confidence intervals
  • plot_*.png: Optional INP spectrum visualization

Stage 2:

  • combined_blank_*.csv: Averaged blank measurements
  • blank_corrected_*.csv: Background-corrected INP data
  • blank_corrected_comp_plot_*.png: Optional comparison plots

Stage 3:

  • final_files/*.csv: ARM-formatted combined treatments