CyFi changelog

v1.3.0 - 2026-10-28

  • Add an agent skill for running CyFi and opening the CyFi Explorer with AI coding agents (PR #206, PR #213)
  • Error gracefully if every image found is too cloudy (PR #210)
  • Show the date of the Sentinel-2 image used for the estimate and how many days before the sample date it was taken in cyfi predict-point output (PR #207)
  • Close satellite imagery files after reading them (PR #208)
  • Skip downloading most bands for images that are too cloudy to use, which speeds up large runs (PR #205)
  • Retry Planetary Computer requests that fail transiently, and only connect when imagery is needed (PR #203)

v1.2.0 - 2026-10-19

  • Update Mac installation instructions (PR #199)
  • Drop support for Python 3.10 (end of life) and add support for Python 3.12, 3.13, and 3.14 (PR #197)
  • Switch to uv for environment management and ruff for linting (PR #195)

v1.1.5 - 2025-08-20

  • Error gracefully if no imagery is downloaded (PR #165); fix failing CyFi explorer test (PR #164); fix failing tests due to click update (PR #160)

v1.1.4 - 2025-03-10

  • Set minimum versions for gradio and scikit-learn; resolve pandas warnings; docstring fix (PR #152, PR #154, PR #146)

v1.1.3 - 2024-01-19

  • Log error and exit gracefully when there is no valid satellite imagery for any point (PR #136)

v1.1.2 - 2024-01-05

  • Clean up runtime requirements (PR #133)

v1.1.1 - 2023-11-27

  • Use the no-sign-request flag to download the land cover map from s3 (PR #130)

v1.1.0 - 2023-10-13

  • Added support for calling the CLI with python -m cyfi (PR #122)
  • Updated default feature fraction for LightGBM model (PR #120)
  • Added Sentinel-2 tile information to CyFi explorer (PR #116)

v1.0.0 - 2023-10-10

CyFi is a command line tool that uses satellite imagery and machine learning to estimate cyanobacteria levels in small, inland water bodies.

CyFi has its origins in the Tick Tick Bloom machine learning competition, hosted by DrivenData and created on behalf of NASA. The goal in that challenge was to detect and classify the severity of cyanobacteria blooms in small, inland water bodies using publicly available satellite, climate, and elevation data. Labels were based on "in situ" samples that were collected manually by many organizations across the U.S. The model in CyFi is based on the winning solutions from that challenge, and has been optimized for generalizability and efficiency.