Skip to main content

Quick Look Content (QLC): An Automated Model–Observation Comparison Suite Optimized for CAMS [BETA]

Project description

QLC - Quick Look Content

An Automated Model-Observation Comparison Suite Optimized for CAMS

BETA RELEASE v1.0.1-beta: Major feature release with GHOST integration, 7,855 accessible variables, and enhanced workflows.

PyPI


Overview

QLC (Quick Look Content) is a powerful command-line suite for automated model-observation comparisons, designed for climate and air quality model evaluation. Optimized for CAMS (Copernicus Atmospheric Monitoring Service) datasets, it streamlines the entire workflow from data retrieval to publication-quality reports.

Key Features:

  • 7,855 accessible variables (IFS parameters + GHOST networks + CSV observations)
  • 16 observation networks (EBAS, AirNow, GHOST harmonized, CSV-based, and more)
  • Automated MARS data retrieval and processing
  • Statistical analysis with comprehensive metrics
  • Publication-quality maps, time series, and reports
  • Native GRIB support with forecast step preservation
  • One-command installation with automatic tool setup

Installation

See qlc/doc/QuickStart.md. For complete installation instructions, see INSTALL.md.

Quick Install:

One-Command Installation (using qlc_install.sh)

The qlc_install.sh script performs four tasks:

  • a) Creates a QLC virtual environment (~/venv/qlc)
  • b) Installs QLC from latest PyPI release (pip install rc-qlc)
  • c) Installs all required tools (cartopy data, evaltools, etc.)
  • d) Sets up QLC runtime environment with links to shared directories ($SCRATCH, $HPCPERM, $PERM)
curl -sSL https://raw.githubusercontent.com/researchConcepts/qlc/main/qlc/bin/tools/qlc_install.sh | bash -s -- --mode test --tools essential

Quick Start:

Activate QLC environment

source ~/venv/qlc/bin/activate

Verify installation

cd ~/qlc/run
pwd -P
qlc --version
qlc --help

Run test analysis (example data from 01-21 December 2018)

  • one or more experiments using workflow 'test' configuration
qlc b2ro b2rn 2018-12-01 2018-12-21 test
  • batch submission (same options as qlc)
sqlc b2ro b2rn 2018-12-01 2018-12-21 test

View results

  • GRIB data downloaded from MARS:
ls -lrth ~/qlc/Results
  • NetCDF data processed (converted from GRIB):
ls -lrth ~/qlc/Analysis
  • Plot results for active workflow:
ls -lrth ~/qlc/Plots/b2ro-b2rn*
  • Reports produced (one PDF per variable, region):
ls -lrth ~/qlc/Presentations

What's New in v1.0.1-beta

Major Enhancements

GHOST Integration & Variable System

  • 7,855 accessible variables (vs ~50 previously)
  • Table-driven variable mapping system
  • 7 GHOST networks integrated (282 harmonized variables)
  • Variable discovery CLI: qlc-vars search, qlc-vars info, qlc-vars list

Simplified Variable Syntax

# Before (v0.4.x):
MARS_RETRIEVALS=("sfc_O3,203.210,Ozone mass mixing ratio")

# Now (v1.0.1):
MARS_RETRIEVALS=("O3,go3")  # Auto-resolves to correct parameter using IFS variable table and model type surface (default)

Native GRIB Support

  • Read GRIB files directly without conversion (in addition to netCDF/csv support)
  • Supports forecast step information (forecats plots currently not yet implemented)
  • Automatic variable mapping (IFS only and model observation variable matching)

Performance Improvements

  • 95% faster regional map rendering
  • Optimized contour processing with region-aware filtering

Enhanced CLI

  • Named arguments, e.g.: --exp_ids, --start_date, --end_date
  • Mode flags, e.g.: --obs-only, --mod-only
  • Flexible configuration overrides (see complete documentation)

Complete Changelog

For detailed release notes, see: docs.researchconcepts.io/qlc/latest/reference/whatsnew


Documentation

Complete documentation available at: docs.researchconcepts.io/qlc/latest

Getting Started

User Guide

Advanced Topics

Developer Guide


Basic Usage

Command Syntax

# Standard workflow
qlc <exp1> <expN> <start_date> <end_date> <workflow>

# Run test analysis (example data from 01-21 December 2018)
qlc b2ro      2018-12-01 2018-12-21 test # one experiment vs observations
qlc b2ro b2rn 2018-12-01 2018-12-21 test # two or more experiments vs observations

# Examples (AIFS data available from June 2025):
qlc 9191 0001 2025-11-01 2025-11-07 mars # only data retrieval (no processing)
qlc 9191 0001 2025-11-01 2025-11-07 aifs # workflows support multi-region processing
qlc 9191 0001 2025-11-01 2025-11-07 aifs --station_selection=~/qlc/config/station_locations/AirNow_stations-test.csv  

Variable Discovery

# Search for variables
qlc-vars search ozone

# List available sources
qlc-vars list --sources

# Get variable details
qlc-vars info O3

# Validate configuration
qlc-vars validate ~/qlc/config/workflows/aifs/qlc_aifs.conf

Processing Modes

# Observation-only (no model data)
qlc None None 2025-11-01 2025-11-07 aifs --obs-only

# Model-only (no observations)
qlc 9191 0001 2025-11-01 2025-11-07 aifs --mod-only

# Collocation (default - both model and observations)
qlc 9191 0001 2025-11-01 2025-11-07 aifs

Help Commands

All QLC tools have built-in help:

qlc -h                     # Main driver help
sqlc -h                    # Batch job help
qlc-py -h                  # Python standalone help
qlc-vars -h                # Variable discovery help
qlc-install -h             # Installation help
qlc-install-tools -h       # Optional tools help

System Requirements

Operating Systems:

  • macOS (Apple Silicon & Intel)
  • Linux (Ubuntu 20.04+, RHEL 8+)
  • Windows (via WSL2)
  • HPC systems (ATOS/ECMWF, SLURM clusters)

Python:

  • Python 3.10 or later (Python 3.10 recommended/tested)

Dependencies:

  • Core dependencies automatically installed via pip
  • Optional tools: evaltools, pyferret, cfgrib (installed automatically / reinstall separately if neeed)

Configuration

QLC uses workflow-based configurations stored in ~/qlc/config/workflows/:

Available Workflows:

  • mars - Generic MARS retrieval and analysis (no data processing)
  • aifs - AI-Integrated Forecasting System (AIFS), e.g., AI vs o-suite analyis
  • eac5 - ECMWF Atmospheric Composition (EAC5), multi-region/species batch processing
  • evaltools - Compute and plot model scores (based on Meteo France software)
  • pyferret - 3D quick look plots (model comparison based on NOAA/PMEL software)
  • test - Testing and development (and template for user specfic workflows)

Example workflow configuration at ~/qlc/config/workflows/aifs/qlc_aifs.conf.

For detailed configuration options, see: docs.researchconcepts.io/qlc/latest/user-guide/workflows/


Examples

Using Auto-Generated JSON Configs

QLC automatically generates JSON configuration files that can be reused with qlc-py for quick parameter adjustments:

# Run initial analysis
qlc 9191 0001 2025-11-01 2025-11-03 aifs

# Reuse the generated config with modifications
qlc-py --config=~/qlc/Plots/9191_20251101-20251103/US_AIRNOW/qlc_D1-ANAL_config.json

The JSON config allows quick experimentation with different qlc-py options (which is used in various workflows):

  • show_stations: Individual station plots
  • use_log_scale: Logarithmic scale for maps/timeseries
  • enable_diff_plots: Difference plots in collocation mode
  • plot_type: Map types (map, burden, zonal, meridional, scatter, taylor)
  • time_average: Time averaging (raw, hourly, 3hourly, daily, monthly)
  • plot_region: Different regions (Globe, US, EU, Asia)
  • map_projection: Global map projections (Robinson, PlateCarree, EqualEarth)
  • publication_style: Higher quality plots (300 DPI)
  • plot_dpi: Explicit DPI control (100=fast, 150=balanced, 300+=publication)
  • map_colormap: Map colormap (turbo, viridis, plasma)
  • And many more options

Troubleshooting

Common Issues

QLC commands not found After Installation

# Activate virtual environment (see [INSTALL.md](INSTALL.md) for details)
source ~/venv/qlc/bin/activate

Import Errors After Installation

# Fix dependency compatibility
qlc-fix-dependencies

Evaltools NumPy 2.x Issues

# Patch evaltools for NumPy 2.x
qlc-fix-evaltools

Missing Natural Earth Data

# Download cartography data
qlc-install-extras --cartopy_downloads

Get Help


License

MIT License - Copyright (c) 2018-2025 ResearchConcepts io GmbH

See LICENSE file for details.

Third-party licenses: THIRD_PARTY_LICENSES.md


Acknowledgments

Developed by ResearchConcepts io GmbH for the atmospheric science community, supported through CAMS2_35_bis_KNMI https://atmosphere.copernicus.eu/developments-reactive-gases-and-aerosol-global-system-0.

Optimized for use with CAMS (Copernicus Atmospheric Monitoring Service) and ECMWF data.


For complete documentation, tutorials, and examples, visit: docs.researchconcepts.io/qlc/latest

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

rc_qlc-1.0.2b0-cp311-cp311-win_amd64.whl (76.6 MB view details)

Uploaded CPython 3.11Windows x86-64

rc_qlc-1.0.2b0-cp311-cp311-win32.whl (76.3 MB view details)

Uploaded CPython 3.11Windows x86

rc_qlc-1.0.2b0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (95.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

rc_qlc-1.0.2b0-cp311-cp311-macosx_11_0_arm64.whl (76.8 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

rc_qlc-1.0.2b0-cp310-cp310-win_amd64.whl (76.6 MB view details)

Uploaded CPython 3.10Windows x86-64

rc_qlc-1.0.2b0-cp310-cp310-win32.whl (76.3 MB view details)

Uploaded CPython 3.10Windows x86

rc_qlc-1.0.2b0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (93.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

rc_qlc-1.0.2b0-cp310-cp310-macosx_11_0_arm64.whl (76.8 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file rc_qlc-1.0.2b0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: rc_qlc-1.0.2b0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 76.6 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rc_qlc-1.0.2b0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 706ec2d043df747233bfd5cc01728ec233f387186a812614e7340892286a04a7
MD5 5ddf06922b7aa12d65c66257e8e80520
BLAKE2b-256 0bbb1d7dbe043d225cc77f304ec2bb669e4a9056ba486a43fed8776300230cb7

See more details on using hashes here.

File details

Details for the file rc_qlc-1.0.2b0-cp311-cp311-win32.whl.

File metadata

  • Download URL: rc_qlc-1.0.2b0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 76.3 MB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rc_qlc-1.0.2b0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 ecfab31a81f81157abd4be49e09c003c70b93fa4a07484cfd73d7cd732b477cc
MD5 3c51c1a4e1d978663d46d28a358c7562
BLAKE2b-256 ca2b07a9b2a852fda99c01bd80b3145a6182402728e352e820ca309a240c6ef5

See more details on using hashes here.

File details

Details for the file rc_qlc-1.0.2b0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rc_qlc-1.0.2b0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2dbe6b68f8755024dfe0f898bb00c5dc1b51461a095482a4e711292d046a5c10
MD5 639b3f42882a60b5656a85a345e88d6b
BLAKE2b-256 fbaadd7d8835355425e4cf8595c30acd8d59d535e04c0224df5bebc130d3b9c3

See more details on using hashes here.

File details

Details for the file rc_qlc-1.0.2b0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rc_qlc-1.0.2b0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 48db5da52b84f1db74de9b32ad3e1361dd9b5169ce2ae43244b0f78196428bd9
MD5 3b9c2de5a75f53027d32c6780ae36b66
BLAKE2b-256 579c8134dc2711d6969d505716f1632f4b0594e94c731773ea33f7ec4ade35a6

See more details on using hashes here.

File details

Details for the file rc_qlc-1.0.2b0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: rc_qlc-1.0.2b0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 76.6 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rc_qlc-1.0.2b0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 dc7e7e83f33dfb4f7de2b85578ff528be95d93b87fac541e2c146a60a5bc76c5
MD5 e161eed070a4d23dbf82d893a9baa5e4
BLAKE2b-256 cee53072835ea173766572f4d60af2b1e885cc818030babf021d344d72656f62

See more details on using hashes here.

File details

Details for the file rc_qlc-1.0.2b0-cp310-cp310-win32.whl.

File metadata

  • Download URL: rc_qlc-1.0.2b0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 76.3 MB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rc_qlc-1.0.2b0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 e7a78d9d844f8122ca243b43df36f2d0a97980ba78cb9d747389e2f639e48fd8
MD5 d9b455087ed389d4b1f397941272b83c
BLAKE2b-256 0361de8a142f3bea5e011ed8d568063b648fd610cccbd507e1c487fbf2949aee

See more details on using hashes here.

File details

Details for the file rc_qlc-1.0.2b0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rc_qlc-1.0.2b0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8cb91adaba8b2a9fdbf7b9ca80db2ab5832a9526ec9f77fe51a4c24c238821c4
MD5 db8972edc8fc8ad4700f40de71b8c681
BLAKE2b-256 4e254deeb03b73067af319b0ca96cad4ecbae1e8320a58a2ff4dbc24bba0344a

See more details on using hashes here.

File details

Details for the file rc_qlc-1.0.2b0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rc_qlc-1.0.2b0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7d78c85fe3cc0cbbcd14af80cb34e08487b17da2c49b644959ef7d4a2c37fe97
MD5 27c695819714badacbeb6e3982362aca
BLAKE2b-256 db2e785400544167b989f3e990496f8f70fe11a98a0a349b553623350212d8fa

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