Skip to main content

Python-based command line interface for TIMESAT

Project description

TIMESAT CLI

TIMESAT CLI is a command line interface and workflow manager for the TIMESAT package. It provides a convenient way to configure and execute TIMESAT processing pipelines directly from the command line or automated scripts.


Requirements

Before you begin, make sure you have:


Installation

timesat-cli is available on PyPI and can be installed using pip or uv.
Although it is not published on Conda, you can safely install it inside a Conda environment.

Option 1 — Install inside a Conda environment

conda create -n timesat-cli python=3.12
conda activate timesat-cli
pip install timesat-cli

This approach uses Conda only for environment isolation.
The installation itself is handled by pip, which will automatically install timesat and all required dependencies.


Option 2 — Install via uv (recommended for pure Python environments)

uv is a modern, high-performance alternative to pip and venv.

  1. Install uv:

    pip install uv
    # or
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  2. Create a virtual environment and install the package:

    uv venv .venv
    source .venv/bin/activate
    uv pip install timesat-cli
    

uv provides faster dependency resolution and caching.
It will automatically install timesat and related dependencies.


Option 3 — Direct installation with pip

If you already have Python 3.10+ installed:

pip install timesat-cli

Running the Application

After installation, start the CLI with:

timesat-cli path/to/settings.json

or equivalently:

python -m timesat_cli path/to/settings.json

To migrate a legacy config (settings + class1/class2/...) to the new grouped schema:

timesat-cli migrate-config old_settings.json new_settings.json

Advanced Usage

If you wish to customize or extend the workflow, you can also run or modify the main script directly:

python timesat_run.py

The file 'timesat_run.py' contains the full example pipeline that invokes core modules from the 'timesat_cli' package, including configuration loading, file management, TIMESAT processing, and output writing.


Configuration Format

timesat-cli only supports grouped JSON:

  • input: s3env, tv_list, image_file_list, quality_file_list, lc_file
  • output: outputfolder, outputvariables, p_st_timestep, p_nodata, p_hrvppformat, vpp_variables
  • general: imwindow, p_band_id, p_ignoreday, p_ylu, p_a, p_davailwin, p_outlier, p_printflag, max_memory_gb, scale, offset, classes (and optional p_nclasses)

vpp_variables controls which VPP layers are written and how they are named. Each entry supports:

  • source (required): source TIMESAT variable name, e.g. SOSD, TPROD
  • name (optional): output layer name; defaults to source
  • enabled (optional): defaults to true

general.classes is required and must be a non-empty list. general.p_nclasses is optional; when provided, it must equal len(general.classes).

Example:

{
  "input": {
    "s3env": "",
    "tv_list": "filelists/time_list.txt",
    "image_file_list": "filelists/image_files.txt",
    "quality_file_list": "filelists/qa_files.txt",
    "lc_file": "landcover.tif"
  },
  "output": {
    "outputfolder": "outputs/",
    "outputvariables": 1,
    "p_st_timestep": 1,
    "p_nodata": -9999,
    "p_hrvppformat": 1,
    "vpp_variables": [
      { "source": "SOSD" },
      { "source": "TPROD", "name": "TI_PPI" }
    ]
  },
  "general": {
    "imwindow": [0, 0, 0, 0],
    "p_band_id": 1,
    "p_ignoreday": 366,
    "p_ylu": [0.00001, 2],
    "p_a": [],
    "p_davailwin": 45,
    "p_outlier": 0,
    "p_printflag": 0,
    "max_memory_gb": 10,
    "scale": 1,
    "offset": 0,
    "p_nclasses": 1,
    "classes": [
      {
        "landuse": 1,
        "p_fitmethod": 2,
        "p_smooth": 1000,
        "p_nenvi": 1,
        "p_wfactnum": 1,
        "p_startmethod": 1,
        "p_startcutoff": [0.25, 0.15],
        "p_low_percentile": 0.0,
        "p_fillbase": 0,
        "p_seasonmethod": 1,
        "p_seapar": 1
      }
    ]
  }
}

HRVPP Notes — QFLAG2 weights

If you work with HRVPP quality flags (QFLAG2), the following weights w are commonly applied:

QFLAG2 value Weight w
1 1.0
4097 1.0
8193 1.0
12289 1.0
1025 0.5
9217 0.5
2049 0.5
6145 0.5
3073 0.5

Grouped-schema example:

"general": {
  "p_a": [
    [1, 1.0],
    [4097, 1.0],
    [8193, 1.0],
    [12289, 1.0],
    [1025, 0.5],
    [9217, 0.5],
    [2049, 0.5],
    [6145, 0.5],
    [3073, 0.5]
  ],
  "classes": [ ... ]
}

License

TIMESAT-CLI is released under the MIT License.

You are free to use, modify, and distribute this software under the terms of the MIT License.

The MIT License applies only to the source code and assets provided in this repository.

📦 Dependency and Usage Notice

TIMESAT-CLI is an open-source command-line interface that depends on the TIMESAT core, which is proprietary software and licensed separately.

Use of TIMESAT-CLI does not grant any rights to use the TIMESAT core beyond the terms of the TIMESAT license.

  • The TIMESAT core is freely available for non-commercial scientific research, academic teaching, and personal use.
  • Commercial use of the TIMESAT core requires a separate written agreement with the authors.

Each dependency installed with this software retains its own license (MIT, BSD, Apache, etc.). Users are responsible for complying with the license terms of all installed components.

⚖️ License Summary

Component License Type Notes
TIMESAT-CLI MIT License Open-source CLI and workflow manager.
TIMESAT core Proprietary Licensed separately; commercial use requires agreement.
Other dependencies Various (MIT/BSD/Apache) See individual package licenses.

For full license texts, see the LICENSE and NOTICE files included with this repository and installed packages.


Citation

If you use TIMESAT, TIMESAT-CLI or TIMESAT-GUI in your research, please cite the corresponding release on Zenodo:

Cai, Z., Eklundh, L., & Jönsson, P. (2025). TIMESAT4: is a software package for analysing time-series of satellite sensor data (Version 4.1.x) [Computer software]. Zenodo.
https://doi.org/10.5281/zenodo.17369757


Acknowledgments

  • This project acknowledges the Swedish National Space Agency (SNSA), the European Environment Agency (EEA), and the European Space Agency (ESA) for their support and for providing access to satellite data and related resources that made this software possible.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

timesat_cli-1.6.3.tar.gz (27.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

timesat_cli-1.6.3-py3-none-any.whl (32.4 kB view details)

Uploaded Python 3

File details

Details for the file timesat_cli-1.6.3.tar.gz.

File metadata

  • Download URL: timesat_cli-1.6.3.tar.gz
  • Upload date:
  • Size: 27.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for timesat_cli-1.6.3.tar.gz
Algorithm Hash digest
SHA256 be4f31d7de0a4c1357fa50b735f384d8d22efaf7943674f73b826367053d3ba1
MD5 cd69529d2b548c15c268d66654d6d60a
BLAKE2b-256 52915228ad677727aeda8a677a8bc66f8a2408a06a88f04d8ea72c9437b2cbc0

See more details on using hashes here.

File details

Details for the file timesat_cli-1.6.3-py3-none-any.whl.

File metadata

  • Download URL: timesat_cli-1.6.3-py3-none-any.whl
  • Upload date:
  • Size: 32.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for timesat_cli-1.6.3-py3-none-any.whl
Algorithm Hash digest
SHA256 83a2b1dc4d0e9624616801f6f5c1f6b661d9afad369bf45a15ee18776c0613e6
MD5 6ed5e5c27417212863590332b8b5c621
BLAKE2b-256 949bc31005a67edaa55a127c6f09bbc6b487b7c6f23c9428ef0b6473cc5fed35

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page