Code modules
This is a lightweight overview. For full API signatures and docstrings, see the auto-generated API reference.
Pipeline overview
Section titled “Pipeline overview”StudyConfig → PipelineRunner → Analysis → Comparison → Reportsrc/study.py — Study configuration
Section titled “src/study.py — Study configuration”Loads and validates study JSON configs from config/studies/.
StudyConfig— dataclass with study metadata plus analysis/comparison settings and crop-impact optionsEncoderConfig— per-format settings: quality, chroma_subsampling, speed, effort, method, resolution, crop
src/dataset.py — Dataset fetching
Section titled “src/dataset.py — Dataset fetching”Downloads and manages image datasets using config/datasets.json.
DatasetFetcher— main class:fetch_dataset(),list_available_datasets(),get_dataset_config()DatasetConfig— dataclass with id, name, url, storage_type, folder_id, post_process, etc.- Supports direct HTTP, Google Drive, and Dropbox downloads
src/preprocessing.py — Image preprocessing
Section titled “src/preprocessing.py — Image preprocessing”Resizes and crops images for preprocessing-driven studies.
ImagePreprocessor—resize_image()andcrop_image_around_fragment()CropResult— cropped image path plus the crop rectangle in original-image coordinates
src/encoder.py — Image encoding
Section titled “src/encoder.py — Image encoding”Encodes images using external CLI tools (cjpeg, cwebp, avifenc, cjxl).
ImageEncoder—encode_jpeg(),encode_webp(),encode_avif(),encode_jxl()EncodeResult— dataclass: success, output_path, file_size, error_messageget_encoder_version()— query version of installed encoders- All encoders forced to single-threaded mode for consistent benchmarking
src/quality.py — Quality measurement
Section titled “src/quality.py — Quality measurement”Measures perceptual and traditional quality metrics.
QualityMeasurer—measure_ssimulacra2(),measure_psnr(),measure_ssim(),measure_butteraugli(),measure_butteraugli_with_distmap(),measure_all()QualityMetrics— dataclass: ssimulacra2, psnr, ssim, butteraugliQualityRecord,QualityResults— structured containers for pipeline output, including crop metadata, withsave()to JSONto_png()— converts AVIF/JXL/WebP to PNG for measurement toolsread_pfm()— reads Butteraugli PFM distortion mapsfind_worst_region_in_array()— sliding-window worst-region detection using integral images
src/pipeline.py — Unified pipeline
Section titled “src/pipeline.py — Unified pipeline”Runs encode + measure for each image with time-budget control.
PipelineRunner— main class:run(config, time_budget, save_artifacts, save_worst_image, num_workers)parse_time_budget()— parses “30m”, “1h”, ”90s” format strings- Worker-per-image architecture using
ProcessPoolExecutor - Supports resolution sweeps and crop-impact studies with fragment-only metric measurement
src/analysis.py — Statistical analysis
Section titled “src/analysis.py — Statistical analysis”Computes statistics and generates static matplotlib plots.
load_quality_results()— load quality.jsoncreate_analysis_dataframe()— build DataFrame with derived metrics (bits_per_pixel, compression_ratio, efficiency)compute_statistics()— mean, min, max, percentiles (5/25/50/75/95)determine_sweep_parameter(),determine_secondary_sweep_parameter()— auto-detect what variesplot_quality_metrics(),plot_rate_distortion()— SVG output with mean + worst-case linesanalyze_study()— full analysis pipeline entry point
src/interactive.py — Interactive visualizations
Section titled “src/interactive.py — Interactive visualizations”Generates interactive Plotly figures for the HTML report.
generate_study_figures()— creates all Plotly figures for a studyplot_quality_vs_param(),plot_rate_distortion()— Plotly equivalents of analysis plotsfigure_to_html_fragment()— convert Plotly figure to embeddable HTML div
src/interpolation.py — Quality interpolation
Section titled “src/interpolation.py — Quality interpolation”Estimates encoder quality settings that produce a desired output metric value, and selects the most representative source image for comparison figures.
interpolate_quality_for_metric()— find encoder quality for a target metric value (linear or cubic-spline)interpolate_metric_at_quality()— predict output metric at a given quality settingcompute_cross_format_cv()— coefficient of variation (std / mean) of an output metric across tile-parameter values for one imageselect_best_image()— pick the source image with the highest mean CV across target values_collect_quality_metric_pairs()— filter and sort (quality, metric) pairs from measurement data
src/comparison.py — Visual comparisons
Section titled “src/comparison.py — Visual comparisons”Generates side-by-side comparison figures via interpolation-based quality matching.
Fully decoupled from the pipeline: re-encodes images on the fly using quality
settings interpolated from quality.json.
ComparisonConfig— crop_size, zoom_factor, max_columns, distmap_vmax, tile_parameter, source_image, study_config_pathgenerate_comparison()— main entry point: select image by CV, interpolate quality, re-encode, build aggregate std map, crop fragment, assemble gridsgenerate_distortion_map()— create raw Butteraugli PFM distortion mapsfind_worst_region()— sliding-window worst-region search on a PFM mapcrop_and_zoom()— crop a fragment and scale with nearest-neighbour interpolationassemble_comparison_grid()— assemble labeled tiles with ImageMagick 7montage, including fixed-position placeholders for missing variantsencode_image()— re-encode a source image using measurement-record parameters_anisotropic_std_map()— compute aggregate per-pixel std map across distortion maps
src/report_images.py — Report image optimization
Section titled “src/report_images.py — Report image optimization”Optimizes comparison images for the HTML report with responsive formats.
optimise_lossless()— single lossless WebP variantoptimise_lossy()— multi-format (AVIF + WebP) at multiple widthsdiscover_and_optimise()— find and optimize all comparison images for a studypicture_html(),img_srcset_html()— generate<picture>and<img srcset>HTML