Welcome to Uptrop’s documentation!

Here you will find all the relevant details of the functionality of the code used to generate results described and discussed Marais et al. (2020).

The python code was developed for the ERC Starting Grant project UpTrop (https://maraisresearchgroup.co.uk/uptrop.html) led by Eloise Marais. Substantive code edits and improvements and documentation preparation are by software engineer John Roberts.

Indices and tables

Introduction

A library for applying the cloud-slicing technique to TROPOMI total columns to obtain upper tropospheric (450-180 hPa) mixing ratios of NO2. This includes a feasibility test of the technique using synthetic observations from GEOS-Chem, validation and quantification of bias corrections by comparing TROPOMI and Pandora total columns at high-altitide sites, application of cloud-slicing using either the FRESCO-S or ROCINN-CAL cloud products, and comparison of effective cloud fractions and cloud top pressures from the two cloud products.

In the modules, the FRESCO-S product is referred to as FRESCO and the ROCINN-CAL product as DLR.

A description of the data used, the sources of the data, the details of the GEOS-Chem model simulations, and other relevant information for developing the codes can be found in Marais et al. (2020).

The easiest way to use the library is to call the scripts from a terminal; see the rest of this page for examples. You can also import the components into your own scripts - see the individual module descriptions linked in the sidebar.

Requirements

  • Python >= 3.6

  • Numpy

  • NetCDF4

  • Dateutil

  • Matplotlib

  • Basemap

If you are using Conda, an environment.yml file is provided.

Examples of use

Cloud-slice synthetic partial columns from GEOS-Chem over North America at 4x5 in Spring:

python ut_no2_gc_test.py --gc_dir "path/to/geoschem/data"  --out_path "/path/to/output/file" --resolution 4x5 --season mam --region NA

Co-sample daily Pandora and TROPOMI total NO2 columns at Izana in the first week of May:

python compare_tropomi_pandora.py --trop_dir "/path/to/tropomi/data" --pan_dir "/path/to/pandora/data" --out_dir "/path/to/output/dir" --start_date 01-05-2019 --end_date 07-05-2019 --apply_bias_correction True --no2_col Trop --pandora_site izana

Cloud-slice Jun-Aug TROPOMI partial NO2 columns using the FRESCO-S cloud product in Summer:

python tropomi_ut_no2.py --trop_dir "/path/to/tropomi/data/folder/" --out_dir "/path/to/output/folder/" --cloud_product fresco --season jja

Obtain January mean FRESCO-S and ROCINN-CAL cloud top pressures and fractions at 1x1:

python fresco_cld_err.py  --trop_dir "/path/to/tropomi/data/folder/" --out_dir "/path/to/output/folder/" --start_date 01-01-2019 --end_date 31-01-2019 --out_res 1x1 --dlr_cld_top height

For a more advanced example bash script that runs each script over a given date range, see tests/integration_test.sh in your Uptrop folder.

Conventions

  • All scripts take a path to a directory containing the relevant data (--trop_dir, --pan_dir and --gc_dir)

  • All scripts need either a --season or a --start_date and --end_date provided. If all are given, --season will override start_date/end_date

  • If --season is given, then this script runs for that season 2019-2020:

    djf; dececmber-januarary-februray 2019-2020

    mam; march-april-may 2020

    jja; june-july-august 2020

    son; september-october-november 2020

  • --start_date and --end_date are given as dd-mm-yyyy; for example, 20th Januarary 2019 is 20-01-2019

Scripts

ut_no2_gc_test

cloud_slice_ut_no2

compare_tropomi_pandora

fresco_cld_err

tropomi_ut_no2