{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Run Synsat on ERA5 Data for SEVIRI" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here, we will \n", "- load ERA5 test data \n", "- run Synsat on ERA5 for SEVIRI and\n", "- finally store the Synsats into a netcdf file" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setup Env and Load Libraries " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [] }, "outputs": [], "source": [ "import os, sys\n", "os.environ['RTTOV_PYTHON_WRAPPER'] = '/work/bb1262/tools/rttov/rttov-v13.2/wrapper'" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "tags": [] }, "outputs": [], "source": [ "import synsatipy\n", "\n", "from synsatipy.synsat import SynSat\n", "\n", "import synsatipy.synsat_example_data as synsat_example_data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Steps towards Synsat " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Step I: Initialize Synsat class" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "... [synsat] set cloud / aerosol file to /work/bb1262/tools/rttov/rttov-v13.2/rtcoef_rttov13/cldaer_visir/sccldcoef_msg_3_seviri.dat\n", "... [synsat] load coefficient file /work/bb1262/tools/rttov/rttov-v13.2/rtcoef_rttov13/rttov13pred54L/rtcoef_msg_3_seviri_o3.dat\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Load successful >>>>> inst_id : 1, nchannels : 6.\n", " 2025/05/07 07:59:50 Load coefficients:\n", " 2025/05/07 07:59:50 /work/bb1262/tools/rttov/rttov-v13.2/rtcoef_rttov13/rttov13pred54L/rtcoef_msg_3_seviri_o3.dat\n", " 2025/05/07 07:59:50 /work/bb1262/tools/rttov/rttov-v13.2/rtcoef_rttov13/cldaer_visir/sccldcoef_msg_3_seviri.dat\n" ] } ], "source": [ "s = SynSat( synsat_instrument = 'SEVIRI')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Step II: Load Example Data " ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "... [synsat] read data from file /work/bb1262/data/era5/medi/2020/era5-3d-medi-2020-09-15.nc\n" ] } ], "source": [ "eraname = synsat_example_data.get_example_data( 'era01' )\n", "s.load( eraname, isel = {'time':[23,]} )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The ERA5 data have been loaded into a data handler. You can inspect the data as follows:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "tags": [] }, "outputs": [], "source": [ "era5 = s.synsat.data_handler.input_data" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Size: 94MB\n", "Dimensions: (time: 1, lon: 213, lat: 61, lev: 137, nhyi: 138, nhym: 137,\n", " lev_2: 1)\n", "Coordinates:\n", " * time (time) datetime64[ns] 8B 2020-09-15T23:00:00\n", " * lon (lon) float64 2kB -8.0 -7.75 -7.5 -7.25 ... 44.25 44.5 44.75 45.0\n", " * lat (lat) float64 488B 30.0 30.25 30.5 30.75 ... 44.25 44.5 44.75 45.0\n", " * lev (lev) float64 1kB 1.0 2.0 3.0 4.0 5.0 ... 134.0 135.0 136.0 137.0\n", " * lev_2 (lev_2) float64 8B 1.0\n", "Dimensions without coordinates: nhyi, nhym\n", "Data variables: (12/37)\n", " SSTK (time, lat, lon) float32 52kB dask.array\n", " SLT (time, lat, lon) float32 52kB dask.array\n", " Z (time, lat, lon) float32 52kB dask.array\n", " SP (time, lat, lon) float32 52kB dask.array\n", " TCW (time, lat, lon) float32 52kB dask.array\n", " TCWV (time, lat, lon) float32 52kB dask.array\n", " ... ...\n", " lnsp (time, lev_2, lat, lon) float32 52kB 11.39 11.39 ... 11.52 11.53\n", " o3 (time, lev, lat, lon) float32 7MB 1.501e-07 1.502e-07 ... 6.895e-08\n", " clwc (time, lev, lat, lon) float32 7MB 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0\n", " ciwc (time, lev, lat, lon) float32 7MB 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0\n", " cc (time, lev, lat, lon) float32 7MB 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0\n", " p (lev, time, lat, lon) float64 14MB dask.array\n", "Attributes:\n", " CDI: Climate Data Interface version 2.0.5 (https://...\n", " Conventions: CF-1.6\n", " institution: European Centre for Medium-Range Weather Forec...\n", " history: Thu Jun 23 17:15:12 2022: cdo -z zip_3 merge E...\n", " cdo_openmp_thread_number: 8\n", " CDO: Climate Data Operators version 2.0.5 (https://...\n" ] } ], "source": [ "print( era5 )" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'time' (time: 1)> Size: 8B\n",
       "array(['2020-09-15T23:00:00.000000000'], dtype='datetime64[ns]')\n",
       "Coordinates:\n",
       "  * time     (time) datetime64[ns] 8B 2020-09-15T23:00:00\n",
       "Attributes:\n",
       "    standard_name:  time\n",
       "    axis:           T
" ], "text/plain": [ " Size: 8B\n", "array(['2020-09-15T23:00:00.000000000'], dtype='datetime64[ns]')\n", "Coordinates:\n", " * time (time) datetime64[ns] 8B 2020-09-15T23:00:00\n", "Attributes:\n", " standard_name: time\n", " axis: T" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "era5.time" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Step III: Setup Run Options and Start Execution " ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "tags": [] }, "outputs": [], "source": [ "s._options.Nthreads=4\n", "s._options.NprofsPerCall = 1000" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/b/b380352/proj/2022-01_RTTOV-Synsat/synsatipy-devel/synsatipy/data_handler.py:263: FutureWarning: The return type of `Dataset.dims` will be changed to return a set of dimension names in future, in order to be more consistent with `DataArray.dims`. To access a mapping from dimension names to lengths, please use `Dataset.sizes`.\n", " nlevels = profs.dims[\"lev\"]\n", "/home/b/b380352/proj/2022-01_RTTOV-Synsat/synsatipy-devel/synsatipy/data_handler.py:264: FutureWarning: The return type of `Dataset.dims` will be changed to return a set of dimension names in future, in order to be more consistent with `DataArray.dims`. To access a mapping from dimension names to lengths, please use `Dataset.sizes`.\n", " nprofiles = profs.dims[\"profile\"]\n", "/home/b/b380352/proj/2022-01_RTTOV-Synsat/synsatipy-devel/synsatipy/utils/spacetools.py:46: RuntimeWarning: invalid value encountered in arccos\n", " azi = np.arccos( np.sin(phi) / np.sin(delta))\n", "IR emissivity atlas loaded successfully\n", "Atlas deallocated.\n", " 2025/05/07 07:59:54 Running RTTOV using nthreads = 4 and nprofs_per_call = 1000\n" ] } ], "source": [ "s.run()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Step IV: Extract the Output" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "tags": [] }, "outputs": [], "source": [ "era_synsat = s.extract_output()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Size: 626kB\n", "Dimensions: (time: 1, lon: 213, lat: 61)\n", "Coordinates:\n", " * time (time) datetime64[ns] 8B 2020-09-15T23:00:00\n", " * lon (lon) float64 2kB -8.0 -7.75 -7.5 -7.25 ... 44.25 44.5 44.75 45.0\n", " * lat (lat) float64 488B 30.0 30.25 30.5 30.75 ... 44.25 44.5 44.75 45.0\n", "Data variables:\n", " bt062 (time, lon, lat) float64 104kB 229.8 229.4 230.6 ... 233.9 233.6\n", " bt073 (time, lon, lat) float64 104kB 242.0 239.3 246.3 ... 252.5 251.9\n", " bt087 (time, lon, lat) float64 104kB 260.2 251.0 268.9 ... 282.4 282.6\n", " bt108 (time, lon, lat) float64 104kB 257.5 249.2 268.0 ... 285.2 285.5\n", " bt120 (time, lon, lat) float64 104kB 255.1 247.6 265.6 ... 284.4 284.6\n", " bt134 (time, lon, lat) float64 104kB 244.6 240.1 252.0 ... 259.3 259.1\n", "Attributes:\n", " author: Fabian Senf\n", " contact: senf@tropos.de\n", " institution: Leibniz Institute for Tropospheric Research\n", " creation_time: 2025-05-07 07:59:59.231863\n", " synsat_version: 0.1\n", " synsat_githash: 4f8b856c0aceda7924506f3c05b728f26ad0190a\n", " license: CC-BY SA 3.0\n", " _local_software_path: /home/b/b380352/proj/2022-01_RTTOV-Synsat/synsatip...\n", " input_filename: /work/bb1262/data/era5/medi/2020/era5-3d-medi-2020...\n" ] } ], "source": [ "print( era_synsat )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Step V: Store Data " ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "... store synsat at ./Data/seviri_synsat_era5_example_data.nc\n" ] } ], "source": [ "outdir = './Data'\n", "\n", "if not os.path.isdir( outdir ):\n", " os.makedirs( outdir )\n", "outfile = f'{outdir}/seviri_synsat_era5_example_data.nc'\n", "\n", "print(f'... store synsat at {outfile}')\n", "era_synsat.to_netcdf(outfile)\n" ] } ], "metadata": { "kernelspec": { "display_name": "SynSatiPy (Python 3.10)", "language": "python", "name": "python3-synsatipy" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.10" } }, "nbformat": 4, "nbformat_minor": 4 }