Skip to main content

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

Project description

QLC - Quick Look Content

An Automated Model-Observation Comparison Suite Optimized for CAMS

v1.0.2: Major feature release — 25 observation networks (incl. Brazilian networks), 7,855 variables, AERONET AOD mapping, 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)
  • 25 observation networks (EBAS, AirNow, AERONET, Brazil networks, 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 exp1 exp2 2018-12-01 2018-12-21 test
  • batch submission (same options as qlc)
sqlc exp1 exp2 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/exp1-exp2*
  • Reports produced (one PDF per variable, region):
ls -lrth ~/qlc/Presentations

What's New in v1.0.2

Major Enhancements

Observation Network Expansion (25 networks)

  • Three new Brazilian networks: INMET meteorological (620 stations), State AQ (483 stations), São Paulo CETESB (72 stations)
  • AERONET AOD mapping: od550aero → aod550 for AERONET Level 1.5 and Level 2.0
  • Central network registry (obs_networks.conf) defines all 25 networks in one place
  • All region definitions centralised in qlc.conf — no per-workflow repetition

CLI Overhaul

  • Named arguments: --myvar=, --network=, --region=, --station_file=, --exp_labels=, --param=, --user=
  • --network= (station collection) and --region= (map extent) are now separate options
  • Per-experiment MARS class: -class=nl,nl maps one class to each experiment
  • --obs-only and --mod-only produce distinct output directories

Variable Mapping System

  • Finalized pipe-format spec: userVAR|modVAR[,op,val]|obsVAR[,op,val]|targetUNIT[,unitFAC]
  • Arithmetic transforms (*, /, +, -) applied independently on model or obs side at load time
  • unitFAC field as an alternative to automatic unit conversion — useful for variables not in qlc's built-in unit table, custom model diagnostics, or quick scaling tests
  • A single --myvar= CLI override applies the chosen spec across all active regions in one run, with no workflow file changes required
  • qlc-vars --exact flag for precise IFS variable lookup

Plot and Analysis Fixes

  • K-guard for log scale: temperature in °C automatically converted to K before log computation
  • PyFerret percentage difference plots (DIFF_MODE=percent) with configurable white zone
  • Degenerate zero-range diff plot guard; additive K↔°C differences handled correctly
  • South America map projection corrected (Lambert Conformal center and standard parallels)

Complete Changelog

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


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 exp1      2018-12-01 2018-12-21 test # one experiment vs observations
qlc exp1 exp2 2018-12-01 2018-12-21 test # two or more experiments vs observations

# Examples (AIFS data available from June 2025):
qlc aifs1 aifs2 2025-11-01 2025-11-07 mars # only data retrieval (no processing)
qlc aifs1 aifs2 2025-11-01 2025-11-07 aifs # workflows support multi-region processing
qlc aifs1 aifs2 2025-11-01 2025-11-07 aifs --station_file=~/qlc/config/station_locations/ver0d_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 aifs1 aifs2 2025-11-01 2025-11-07 aifs --mod-only

# Collocation (default - both model and observations)
qlc aifs1 aifs2 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 3.11 (Python 3.10 recommended; Python 3.12+ is not yet supported)

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 - MARS retrieval only (no conversion or analysis)
  • qpy - Station collocation and analysis via qlc-py (QPY chain)
  • aifs - AI-Integrated Forecasting System (AIFS), e.g., AI vs o-suite analysis
  • eac5 - ECMWF Atmospheric Composition (EAC5), multi-region/species batch processing
  • evaltools - Compute and plot model scores (based on Météo-France software)
  • pyferret - 3D quick-look plots (model comparison based on NOAA/PMEL software)
  • test - Testing and development (and template for user-specific 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 aifs1 aifs2 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-2026 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.2-cp311-cp311-win_amd64.whl (78.4 MB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11Windows x86

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

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

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10Windows x86

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

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

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

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: rc_qlc-1.0.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 78.4 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.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5ca1ed8b8a678ada567bd4308c05045c26debb79cfecb4391fdad3c29ddf637f
MD5 7de221cbeb2755ff21d02a9278259d00
BLAKE2b-256 81d17c44cdedd2c960e5294d8e113c2b50c8e6d285754be6127172e9a267903d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rc_qlc-1.0.2-cp311-cp311-win32.whl
  • Upload date:
  • Size: 78.1 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.2-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 b0341ec867003f9070a32044561df65b3ba45b1976b19a58d939b64827bbbd61
MD5 1b0a343e091613c77225caa9ed2e045e
BLAKE2b-256 b7f2449d9be38979259d5c7a69d633397dc139d24dd1ef2b3aad7f2444d126a4

See more details on using hashes here.

File details

Details for the file rc_qlc-1.0.2-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.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 125dbb6855cacf38ec5d3b0af1826da93baee76a6e59660bbe7c750ea7a31bab
MD5 8cccca8bb2aa54b0716f698b063ce46e
BLAKE2b-256 3cd2b14de64ed931f3d23a30d5be8112b9cbfb0bf17b8fed9ef720520985510c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rc_qlc-1.0.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f486e2ed84645209f237ea44dfda9a4431887934d45aeeee0cdcc6668bfbf10f
MD5 4b85e5a130852733faa8df88aae81454
BLAKE2b-256 27dd70ca2ef6a10049e763ea3c41f7ea4150f6b4d489854a45b7a955a568210a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rc_qlc-1.0.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 78.4 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.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 fca64d2201e701f2fbf18a81221c0d5da54b2be540cd9b485367ab7d11c46b43
MD5 c9bb9078d5123354ef83bdca7735bf59
BLAKE2b-256 9d0bdb6f32fe41275bda090b2b18276f2a3239b847dfb7a9295749d0d7cd033d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rc_qlc-1.0.2-cp310-cp310-win32.whl
  • Upload date:
  • Size: 78.1 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.2-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 ed7fa9eec85a1c21e22b002eed92ed7dfead0b0d7c92a0bb8ed4587b47eed88e
MD5 8d8dcd4a3c624dc546585d159c2fc269
BLAKE2b-256 a8ce7e19483b1d99b25963590ca18eb994bab57f77724b48c319fed56bd2f7fc

See more details on using hashes here.

File details

Details for the file rc_qlc-1.0.2-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.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ec360288a6fd4f33d1796d273e46fc72989ebf4f00fc4c641b6fb5c445d18a0e
MD5 1c0a5c6d3026d5648f69a358848acc62
BLAKE2b-256 86806714d92d54b2e219ee494245f85a2f50793d06f5ad844f6d8bce80b88671

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rc_qlc-1.0.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9988c0b14d4928ef25f05f27e045d5017f53dc20e5528c4b06868873b6a3dd47
MD5 d4df30fed5310e86dc7d70b8afed0fa9
BLAKE2b-256 68dd04529cffae3e19e46ff740363c8541d73cea8c683b9a2607e2f12fddf5f7

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