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.
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 analyiseac5- ECMWF Atmospheric Composition (EAC5), multi-region/species batch processingevaltools- 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 plotsuse_log_scale: Logarithmic scale for maps/timeseriesenable_diff_plots: Difference plots in collocation modeplot_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
- Documentation: docs.researchconcepts.io/qlc/latest
- GitHub Issues: github.com/researchConcepts/qlc/issues
- Contact: qlc Team @ ResearchConcepts io GmbH qlc@researchconcepts.io
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
706ec2d043df747233bfd5cc01728ec233f387186a812614e7340892286a04a7
|
|
| MD5 |
5ddf06922b7aa12d65c66257e8e80520
|
|
| BLAKE2b-256 |
0bbb1d7dbe043d225cc77f304ec2bb669e4a9056ba486a43fed8776300230cb7
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ecfab31a81f81157abd4be49e09c003c70b93fa4a07484cfd73d7cd732b477cc
|
|
| MD5 |
3c51c1a4e1d978663d46d28a358c7562
|
|
| BLAKE2b-256 |
ca2b07a9b2a852fda99c01bd80b3145a6182402728e352e820ca309a240c6ef5
|
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
- Download URL: rc_qlc-1.0.2b0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 95.4 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2dbe6b68f8755024dfe0f898bb00c5dc1b51461a095482a4e711292d046a5c10
|
|
| MD5 |
639b3f42882a60b5656a85a345e88d6b
|
|
| BLAKE2b-256 |
fbaadd7d8835355425e4cf8595c30acd8d59d535e04c0224df5bebc130d3b9c3
|
File details
Details for the file rc_qlc-1.0.2b0-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: rc_qlc-1.0.2b0-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 76.8 MB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48db5da52b84f1db74de9b32ad3e1361dd9b5169ce2ae43244b0f78196428bd9
|
|
| MD5 |
3b9c2de5a75f53027d32c6780ae36b66
|
|
| BLAKE2b-256 |
579c8134dc2711d6969d505716f1632f4b0594e94c731773ea33f7ec4ade35a6
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc7e7e83f33dfb4f7de2b85578ff528be95d93b87fac541e2c146a60a5bc76c5
|
|
| MD5 |
e161eed070a4d23dbf82d893a9baa5e4
|
|
| BLAKE2b-256 |
cee53072835ea173766572f4d60af2b1e885cc818030babf021d344d72656f62
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7a78d9d844f8122ca243b43df36f2d0a97980ba78cb9d747389e2f639e48fd8
|
|
| MD5 |
d9b455087ed389d4b1f397941272b83c
|
|
| BLAKE2b-256 |
0361de8a142f3bea5e011ed8d568063b648fd610cccbd507e1c487fbf2949aee
|
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
- Download URL: rc_qlc-1.0.2b0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 93.8 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8cb91adaba8b2a9fdbf7b9ca80db2ab5832a9526ec9f77fe51a4c24c238821c4
|
|
| MD5 |
db8972edc8fc8ad4700f40de71b8c681
|
|
| BLAKE2b-256 |
4e254deeb03b73067af319b0ca96cad4ecbae1e8320a58a2ff4dbc24bba0344a
|
File details
Details for the file rc_qlc-1.0.2b0-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: rc_qlc-1.0.2b0-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 76.8 MB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d78c85fe3cc0cbbcd14af80cb34e08487b17da2c49b644959ef7d4a2c37fe97
|
|
| MD5 |
27c695819714badacbeb6e3982362aca
|
|
| BLAKE2b-256 |
db2e785400544167b989f3e990496f8f70fe11a98a0a349b553623350212d8fa
|