0% found this document useful (0 votes)
27 views908 pages

Satpy Readthedocs Io en Stable

Satpy is a Python library designed for reading, manipulating, and writing data from remote-sensing earth-observing satellites, providing users with a high-level interface for various operations. It supports multiple input formats, allows for data resampling, and offers functionalities for creating composite images and applying atmospheric corrections. The library is maintained by the open-source Pytroll group and is designed to be extendable for additional satellite support.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views908 pages

Satpy Readthedocs Io en Stable

Satpy is a Python library designed for reading, manipulating, and writing data from remote-sensing earth-observing satellites, providing users with a high-level interface for various operations. It supports multiple input formats, allows for data resampling, and offers functionalities for creating composite images and applying atmospheric corrections. The library is maintained by the open-source Pytroll group and is designed to be extendable for additional satellite support.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 908

Satpy Documentation

Release 0.54.1.dev0+g6fc15fe66.d20250120

Satpy Developers

Jan 20, 2025


CONTENTS

1 Getting Help 3

2 Documentation 5
2.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Installation Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4 Downloading Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.6 Quickstart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.7 Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.8 Reading remote files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.9 Composites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.10 Resampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.11 Enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.12 Writing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
2.13 MultiScene (Experimental) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
2.14 Developer’s Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
2.15 satpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
2.16 FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723

3 Indices and tables 727

Python Module Index 729

Index 735

i
ii
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Satpy is a python library for reading, manipulating, and writing data from remote-sensing earth-observing satellite
instruments. Satpy provides users with readers that convert geophysical parameters from various file formats to the
common Xarray DataArray and Dataset classes for easier interoperability with other scientific python libraries.
For a full list of available readers see Reader Table. Satpy also provides interfaces for creating RGB (Red/Green/Blue)
images and other composite types by combining data from multiple instrument bands or products. Various atmospheric
corrections and visual enhancements are provided for improving the usefulness and quality of output images. Output
data can be written to multiple output file formats such as PNG, GeoTIFF, and CF standard NetCDF files. Satpy also
allows users to resample data to geographic projected grids (areas). Satpy is maintained by the open source Pytroll
group.
The Satpy library acts as a high-level abstraction layer on top of other libraries maintained by the Pytroll group includ-
ing:
• pyresample
• pyspectral
• trollimage
• pycoast
• pydecorate
• python-geotiepoints
• pyninjotiff
Go to the Satpy project page for source code and downloads.
Satpy is designed to be easily extendable to support any earth observation satellite by the creation of plugins (readers,
compositors, writers, etc). The table at the bottom of this page shows the input formats supported by the base Satpy
installation.

á Note

Satpy’s interfaces are not guaranteed stable and may change until version 1.0 when backwards compatibility will
be a main focus.

CONTENTS 1
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

2 CONTENTS
CHAPTER

ONE

GETTING HELP

Having trouble installing or using Satpy? Feel free to ask questions at any of the contact methods for the PyTroll group
here or file an issue on Satpy’s GitHub page.

3
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

4 Chapter 1. Getting Help


CHAPTER

TWO

DOCUMENTATION

2.1 Overview
Satpy is designed to provide easy access to common operations for processing meteorological remote sensing data.
Any details needed to perform these operations are configured internally to Satpy meaning users should not have to
worry about how something is done, only ask for what they want. Most of the features provided by Satpy can be
configured by keyword arguments (see the API Documentation or other specific section for more details). For more
complex customizations or added features Satpy uses a set of configuration files that can be modified by the user. The
various components and concepts of Satpy are described below. The Quickstart guide also provides simple example
code for the available features of Satpy.

2.1.1 Scene
Satpy provides most of its functionality through the Scene class. This acts as a container for the datasets being operated
on and provides methods for acting on those datasets. It attempts to reduce the amount of low-level knowledge needed
by the user while still providing a pythonic interface to the functionality underneath.
A Scene object represents a single geographic region of data, typically at a single continuous time range. It is possible
to combine Scenes to form a Scene with multiple regions or multiple time observations, but it is not guaranteed that all
functionality works in these situations.

2.1.2 DataArrays
Satpy’s lower-level container for data is the xarray.DataArray. For historical reasons DataArrays are often referred
to as “Datasets” in Satpy. These objects act similar to normal numpy arrays, but add additional metadata and attributes
for describing the data. Metadata is stored in a .attrs dictionary and named dimensions can be accessed in a .dims
attribute, along with other attributes. In most use cases these objects can be operated on like normal NumPy arrays
with special care taken to make sure the metadata dictionary contains expected values. See the XArray documentation
for more info on handling xarray.DataArray objects.
Additionally, Satpy uses a special form of DataArrays where data is stored in dask.array.Array objects which
allows Satpy to perform multi-threaded lazy operations vastly improving the performance of processing. For help on
developing with dask and xarray see Migrating to xarray and dask or the documentation for the specific project.
To uniquely identify DataArray objects Satpy uses DataID. A DataID consists of various pieces of available meta-
data. This usually includes name and wavelength as identifying metadata, but can also include resolution, calibration,
polarization, and additional modifiers to further distinguish one dataset from another. For more information on DataID
objects, have a look a Satpy internal workings: having a look under the hood.

* Warning

XArray includes other object types called “Datasets”. These are different from the “Datasets” mentioned in Satpy.

5
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Data chunks
The usage of dask as the foundation for Satpy’s operation means that the underlying data is chunked, that is, cut
in smaller pieces that can then be processed in parallel. Information on dask’s chunking can be found in the dask
documentation here: https://docs.dask.org/en/stable/array-chunks.html The size of these chunks can have a significant
impact on the performance of satpy, so to achieve best performance it can be necessary to adjust it.
Default chunk size used by Satpy can be configured by using the following around your code:

with dask.config.set({"array.chunk-size": "32MiB"}):


# your code here

Or by using:

dask.config.set({"array.chunk-size": "32MiB"})

at the top of your code.


There are other ways to set dask configuration items, including configuration files or environment variables, see here:
https://docs.dask.org/en/stable/configuration.html
The value of the chunk-size can be given in different ways, see here: https://docs.dask.org/en/stable/api.html#dask.
utils.parse_bytes
The default value for this parameter is 128MiB, which can translate to chunk sizes of 4096x4096 for 64-bit float arrays.
Note however that some reader might choose to use a liberal interpretation of the chunk size which will not necessarily
result in a square chunk, or even to a chunk size of the exact requested size. The motivation behind this is that data
stored as stripes may load much faster if the horizontal striping is kept as much as possible instead of cutting the data
in square chunks. However, the Satpy readers should respect the overall chunk size when it makes sense.

á Note

The legacy way of providing the chunks size in Satpy is the PYTROLL_CHUNK_SIZE environment vari-
able. This is now pending deprecation, so an equivalent way to achieve the same result is by using the
DASK_ARRAY__CHUNK_SIZE environment variable. The value to assign to the variable is the square of the legacy
variable, multiplied by the size of array data type at hand, so for example, for 64-bits floats:
export DASK_ARRAY__CHUNK_SIZE=134217728

which is the same as:


export DASK_ARRAY__CHUNK_SIZE="128MiB"

is equivalent to the deprecated:


export PYTROLL_CHUNK_SIZE=4096

2.1.3 Reading
One of the biggest advantages of using Satpy is the large number of input file formats that it can read. It encapsulates
this functionality into individual Reading. Satpy Readers handle all of the complexity of reading whatever format they
represent. Meteorological Satellite file formats can be extremely complex and formats are rarely reused across satellites
or instruments. No matter the format, Satpy’s Reader interface is meant to provide a consistent data loading interface
while still providing flexibility to add new complex file formats.

6 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

2.1.4 Compositing
Many users of satellite imagery combine multiple sensor channels to bring out certain features of the data. This includes
using one dataset to enhance another, combining 3 or more datasets in to an RGB image, or any other combination of
datasets. Satpy comes with a lot of common composite combinations built-in and allows the user to request them like
any other dataset. Satpy also makes it possible to create your own custom composites and have Satpy treat them like
any other dataset. See Composites for more information.

2.1.5 Resampling
Satellite imagery data comes in two forms when it comes to geolocation, native satellite swath coordinates and uniform
gridded projection coordinates. It is also common to see the channels from a single sensor in multiple resolutions,
making it complicated to combine or compare the datasets. Many use cases of satellite data require the data to be
in a certain projection other than the native projection or to have output imagery cover a specific area of interest.
Satpy makes it easy to resample datasets to allow for users to combine them or grid them to these projections or areas
of interest. Satpy uses the PyTroll pyresample package to provide nearest neighbor, bilinear, or elliptical weighted
averaging resampling methods. See Resampling for more information.

2.1.6 Enhancements
When making images from satellite data the data has to be manipulated to be compatible with the output image format
and still look good to the human eye. Satpy calls this functionality “enhancing” the data, also commonly called scaling
or stretching the data. This process can become complicated not just because of how subjective the quality of an image
can be, but also because of historical expectations of forecasters and other users for how the data should look. Satpy
tries to hide the complexity of all the possible enhancement methods from the user and just provide the best looking
image by default. Satpy still makes it possible to customize these procedures, but in most cases it shouldn’t be necessary.
See the documentation on Writing for more information on what’s possible for output formats and enhancing images.

2.1.7 Writing
Satpy is designed to make data loading, manipulating, and analysis easy. However, the best way to get satellite imagery
data out to as many users as possible is to make it easy to save it in multiple formats. Satpy allows users to save data
in image formats like PNG or GeoTIFF as well as data file formats like NetCDF. Each format’s complexity is hidden
behind the interface of individual Writer objects and includes keyword arguments for accessing specific format features
like compression and output data type. See the Writing documentation for the available writers and how to use them.

2.2 Installation Instructions


Satpy is available from conda-forge (via conda), PyPI (via pip), or from source (via pip+git). The below instructions
show how to install stable versions of Satpy. For a development/unstable version see Development installation.

2.2.1 Conda-based Installation


Satpy can be installed into a conda environment by installing the package from the conda-forge channel. If you do not
already have access to a conda installation, we recommend installing miniconda for the smallest and easiest installation.
The commands below will use -c conda-forge to make sure packages are downloaded from the conda-forge channel.
Alternatively, you can tell conda to always use conda-forge by running:

$ conda config --add channels conda-forge

2.2. Installation Instructions 7


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

In a new conda environment


We recommend creating a separate environment for your work with Satpy. To create a new environment and install
Satpy all in one command you can run:

$ conda create -c conda-forge -n my_satpy_env python satpy

You must then activate the environment so any future python or conda commands will use this environment.

$ conda activate my_satpy_env

This method of creating an environment with Satpy (and optionally other packages) installed can generally be created
faster than creating an environment and then later installing Satpy and other packages (see the section below).

In an existing environment

á Note

It is recommended that when first exploring Satpy, you create a new environment specifically for this rather than
modifying one used for other work.

If you already have a conda environment, it is activated, and would like to install Satpy into it, run the following:

$ conda install -c conda-forge satpy

á Note

Satpy only automatically installs the dependencies needed to process the most common use cases. Additional
dependencies may need to be installed with conda or pip if import errors are encountered. To check your installation
use the check_satpy function discussed here.

2.2.2 Pip-based Installation


Satpy is available from the Python Packaging Index (PyPI). A sandbox environment for satpy can be created using
Virtualenv.
To install the satpy package and the minimum amount of python dependencies:

$ pip install satpy

Additional dependencies can be installed as “extras” and are grouped by reader, writer, or feature added. Extras avail-
able can be found in the pyproject.toml file. They can be installed individually:

$ pip install "satpy[viirs_sdr]"

Or all at once, although this isn’t recommended due to the large number of dependencies:

$ pip install "satpy[all]"

8 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

2.2.3 Ubuntu System Python Installation


To install Satpy on an Ubuntu system we recommend using virtual environments to separate Satpy and its dependencies
from the rest of the system. Note that these instructions require using “sudo” privileges which may not be available to
all users and can be very dangerous. The following instructions attempt to install some Satpy dependencies using the
Ubuntu apt package manager to ease installation. Replace /path/to/pytroll-env with the environment to be created.

$ sudo apt-get install python-pip python-gdal


$ sudo pip install virtualenv
$ virtualenv /path/to/pytroll-env
$ source /path/to/pytroll-env/bin/activate
$ pip install satpy

2.3 Configuration
Satpy has two levels of configuration that allow to control how Satpy and its various components behave. There are a
series of “settings” that change the global Satpy behavior. There are also a series of “component configuration” YAML
files for controlling the complex functionality in readers, compositors, writers, and other Satpy components that can’t
be controlled with traditional keyword arguments.

2.3.1 Settings
There are configuration parameters in Satpy that are not specific to one component and control more global behavior
of Satpy. These parameters can be set in one of three ways:
1. Environment variable
2. YAML file
3. At runtime with satpy.config
This functionality is provided by the donfig library. The currently available settings are described below. Each option
is available from all three methods. If specified as an environment variable or specified in the YAML file on disk, it
must be set before Satpy is imported.
YAML Configuration
YAML files that include these parameters can be in any of the following locations:
1. <python environment prefix>/etc/satpy/satpy.yaml
2. <user_config_dir>/satpy.yaml (see below)
3. ~/.satpy/satpy.yaml
4. <SATPY_CONFIG_PATH>/satpy.yaml (see Component Configuration Path below)
The above user_config_dir is provided by the platformdirs package and differs by operating system. Typical
user config directories are:
• Mac OSX: ~/Library/Preferences/satpy
• Unix/Linux: ~/.config/satpy
• Windows: C:\\Users\\<username>\\AppData\\Local\\pytroll\\satpy
All YAML files found from the above paths will be merged into one configuration object (accessed via satpy.config).
The YAML contents should be a simple mapping of configuration key to its value. For example:

cache_dir: "/tmp"
data_dir: "/tmp"

2.3. Configuration 9
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Lastly, it is possible to specify an additional config path to the above options by setting the environment variable
SATPY_CONFIG. The file specified with this environment variable will be added last after all of the above paths have
been merged together.
At runtime
After import, the values can be customized at runtime by doing:

import satpy
satpy.config.set(cache_dir="/my/new/cache/path")
# ... normal satpy code ...

Or for specific blocks of code:

import satpy
with satpy.config.set(cache_dir="/my/new/cache/path"):
# ... some satpy code ...
# ... code using the original cache_dir

Similarly, if you need to access one of the values you can use the satpy.config.get method.

Cache Directory
• Environment variable: SATPY_CACHE_DIR
• YAML/Config Key: cache_dir
• Default: See below
Directory where any files cached by Satpy will be stored. This directory is not necessarily cleared out by Satpy, but is
rarely used without explicitly being enabled by the user. This defaults to a different path depending on your operating
system following the platformdirs “user cache dir”.

Cache Longitudes and Latitudes


• Environment variable: SATPY_CACHE_LONLATS
• YAML/Config Key: cache_lonlats
• Default: False
Whether or not generated longitude and latitude coordinates should be cached to on-disk zarr arrays. Currently this
only works in very specific cases. Mainly the lon/lats that are generated when computing sensor and solar zenith and
azimuth angles used in various modifiers and compositors. This caching is only done for AreaDefinition-based
geolocation, not SwathDefinition. Arrays are stored in cache_dir (see above).
When setting this as an environment variable, this should be set with the string equivalent of the Python boolean values
="True" or ="False".
See also cache_sensor_angles below.

* Warning

This caching does not limit the number of entries nor does it expire old entries. It is up to the user to manage the
contents of the cache directory.

10 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Cache Sensor Angles


• Environment variable: SATPY_CACHE_SENSOR_ANGLES
• YAML/Config Key: cache_sensor_angles
• Default: False
Whether or not generated sensor azimuth and sensor zenith angles should be cached to on-disk zarr arrays. These
angles are primarily used in certain modifiers and compositors. This caching is only done for AreaDefinition-based
geolocation, not SwathDefinition. Arrays are stored in cache_dir (see above).
This caching requires producing an estimate of the angles to avoid needing to generate new angles for every new data
case. This happens because the angle generation depends on the observation time of the data and the position of
the satellite (longitude, latitude, altitude). The angles are estimated by using a constant observation time for all cases
(maximum ~1e-10 error) and by rounding satellite position coordinates to the nearest tenth of a degree for longitude and
latitude and nearest tenth meter (maximum ~0.058 error). Note these estimations are only done if caching is enabled
(this parameter is True).
When setting this as an environment variable, this should be set with the string equivalent of the Python boolean values
="True" or ="False".
See also cache_lonlats above.

* Warning

This caching does not limit the number of entries nor does it expire old entries. It is up to the user to manage the
contents of the cache directory.

Component Configuration Path


• Environment variable: SATPY_CONFIG_PATH
• YAML/Config Key: config_path
• Default: []
Base directory, or directories, where Satpy component YAML configuration files are stored. Satpy expects configu-
ration files for specific component types to be in appropriate subdirectories (ex. readers, writers, etc), but these
subdirectories should not be included in the config_path. For example, if you have custom composites configured in
/my/config/dir/etc/composites/visir.yaml, then config_path should include /my/config/dir/etc for
Satpy to find this configuration file when searching for composites. This option replaces the legacy PPP_CONFIG_DIR
environment variable.
Note that this value must be a list. In Python, this could be set by doing:

satpy.config.set(config_path=['/path/custom1', '/path/custom2'])

If setting an environment variable then it must be a colon-separated (:) string on Linux/OSX or semicolon-separate
(;) separated string and must be set before calling/importing Satpy. If the environment variable is a single path it will
be converted to a list when Satpy is imported.

export SATPY_CONFIG_PATH="/path/custom1:/path/custom2"

On Windows, with paths on the C: drive, these paths would be:

set SATPY_CONFIG_PATH="C:/path/custom1;C:/path/custom2"

2.3. Configuration 11
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Satpy will always include the builtin configuration files that it is distributed with regardless of this setting. When a
component supports merging of configuration files, they are merged in reverse order. This means “base” configuration
paths should be at the end of the list and custom/user paths should be at the beginning of the list.

Data Directory
• Environment variable: SATPY_DATA_DIR
• YAML/Config Key: data_dir
• Default: See below
Directory where any data Satpy needs to perform certain operations will be stored. This replaces the legacy
SATPY_ANCPATH environment variable. This defaults to a different path depending on your operating system following
the platformdirs “user data dir”.

Demo Data Directory


• Environment variable: SATPY_DEMO_DATA_DIR
• YAML/Config Key: demo_data_dir
• Default: <current working directory>
Directory where demo data functions will download data files to. Available demo data functions can be found in
satpy.demo subpackage.

Download Auxiliary Data


• Environment variable: SATPY_DOWNLOAD_AUX
• YAML/Config Key: download_aux
• Default: True
Whether to allow downloading of auxiliary files for certain Satpy operations. See Auxiliary Data Download for more
information. If True then Satpy will download and cache any necessary data files to Data Directory when needed. If
False then pre-downloaded files will be used, but any other files will not be downloaded or checked for validity.

Sensor Angles Position Preference


• Environment variable: SATPY_SENSOR_ANGLES_POSITION_PREFERENCE
• YAML/Config Key: sensor_angles_position_preference
• Default: “actual”
Control which satellite position should be preferred when generating sensor azimuth and sensor zenith angles. This
value is passed directly to the get_satpos() function. See the documentation for that function for more information
on how the value will be used. This is used as part of the get_angles() and get_satellite_zenith_angle()
functions which is used by multiple modifiers and composites including the default rayleigh correction.

Clipping Negative Infrared Radiances


• Environment variable: SATPY_READERS__CLIP_NEGATIVE_RADIANCES
• YAML/Config Key: readers.clip_negative_radiances
• Default: False
Whether to clip negative infrared radiances to the minimum allowable value before computing the brightness temper-
ature. If clip_negative_radiances=False, pixels with negative radiances will have np.nan brightness tempera-
tures.

12 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Clipping of negative radiances is currently implemented for the following readers:


• abi_l1b, ami_l1b, fci_l1c_nc

Temporary Directory
• Environment variable: SATPY_TMP_DIR
• YAML/Config Key: tmp_dir
• Default: tempfile.gettempdir()
Directory where Satpy creates temporary files, for example decompressed input files. Default depends on the operating
system.

2.3.2 Component Configuration


Much of the functionality of Satpy comes from the various components it uses, like readers, writers, compositors, and
enhancements. These components are configured for reuse from YAML files stored inside Satpy or in custom user
configuration files. Custom directories can be provided by specifying the config_path setting mentioned above.
To create and use your own custom component configuration you should:
1. Create a directory to store your new custom YAML configuration files. The files for each component will go in
a subdirectory specific to that component (ex. composites, enhancements, readers, writers).
2. Set the Satpy config_path to point to your new directory. This could be done by setting the environment variable
SATPY_CONFIG_PATH to your custom directory (don’t include the component sub-directory) or one of the other
methods for setting this path.
3. Create YAML configuration files with your custom YAML files. In most cases there is no need to copy config-
uration from the builtin Satpy files as these will be merged with your custom files.
4. If your custom configuration uses custom Python code, this code must be importable by Python. This means
your code must either be installed in your Python environment or you must set your PYTHONPATH to the location
of the modules.
5. Run your Satpy code and access your custom components like any of the builtin components.

2.4 Downloading Data


One of the main features of Satpy is its ability to read various satellite data formats. However, it currently only provides
limited methods for downloading data from remote sources and these methods are limited to demo data for Pytroll
examples. See the examples and the demo API documentation for details. Otherwise, Satpy assumes all data is available
through the local system, either as a local directory or network mounted file systems. Certain readers that use xarray
to open data files may be able to load files from remote systems by using OpenDAP or similar protocols.
As a user there are two options for getting access to data:
1. Download data to your local machine.
2. Connect to a remote system that already has access to data.
The most common case of a remote system having access to data is with a cloud computing service like Google Cloud
Platform (GCP) or Amazon Web Services (AWS). Another possible case is an organization having direct broadcast
antennas where they receive data directly from the satellite or satellite mission organization (NOAA, NASA, EUMET-
SAT, etc). In these cases data is usually available as a mounted network file system and can be accessed like a normal
local path (with the added latency of network communications).
Below are some data sources that provide data that can be read by Satpy. If you know of others please let us know by
either creating a GitHub issue or pull request.

2.4. Downloading Data 13


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

2.4.1 NOAA GOES on Amazon Web Services


• Resource Description
• Data Browser
• Associated Readers: abi_l1b
In addition to the pages above, Brian Blaylock’s GOES-2-Go python package is useful for downloading GOES data to
your local machine. Brian also prepared some instructions for using the rclone tool for downloading AWS data to a
local machine. The instructions can be found here.

2.4.2 NOAA GOES on Google Cloud Platform


GOES-16
• Resource Description
• Data Browser
• Associated Readers: abi_l1b

GOES-17
• Resource Description
• Data Browser
• Associated Readers: abi_l1b

2.4.3 NOAA CLASS


• Data Ordering
• Associated Readers: viirs_sdr

2.4.4 NASA VIIRS Atmosphere SIPS


• Resource Description
• Associated Readers: viirs_l1b

2.4.5 EUMETSAT Data Store and Data Center


• EUMETSAT’s primary source for data is the Data Store
• Some products remain available on the Earth Observation Portal

2.5 Examples
Satpy examples are available as Jupyter Notebooks on the pytroll-examples git repository. Some examples are described
in further detail as separate pages in this documentation. They include python code, PNG images, and descriptions of
what the example is doing. Below is a list of some of the examples and a brief summary. Additional examples can be
found at the repository mentioned above or as explanations in the various sections of this documentation.

14 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

2.5.1 MTG FCI - Natural Color Example


Satpy includes a reader for the Meteosat Third Generation (MTG) FCI Level 1c data. The following Python code
snippet shows an example on how to use Satpy to generate a Natural Color RGB composite over the European area.

* Warning

This example is currently a work in progress. Some of the below code may not work with the currently released
version of Satpy. Additional updates to this example will be coming soon.

á Note

For reading compressed data, a decompression library is needed. Either install the FCIDECOMP library (see the
FCI L1 Product User Guide, or the hdf5plugin package with:
pip install hdf5plugin
or:
conda install hdf5plugin -c conda-forge

If you use hdf5plugin, make sure to add the line import hdf5plugin at the top of your script.

from satpy.scene import Scene


from satpy import find_files_and_readers

# define path to FCI test data folder


path_to_data = 'your/path/to/FCI/data/folder/'

# find files and assign the FCI reader


files = find_files_and_readers(base_dir=path_to_data, reader='fci_l1c_nc')

# create an FCI scene from the selected files


scn = Scene(filenames=files)

# print available dataset names for this scene (e.g. 'vis_04', 'vis_05','ir_38',...)
print(scn.available_dataset_names())

# print available composite names for this scene (e.g. 'natural_color', 'airmass',
˓→'convection',...)

print(scn.available_composite_names())

# load the datasets/composites of interest


scn.load(['natural_color','vis_04'], upper_right_corner='NE')
# note: the data inside the FCI files is stored upside down. The upper_right_corner='NE'␣
˓→argument

# flips it automatically in upright position.

# you can access the values of a dataset as a Numpy array with


vis_04_values = scn['vis_04'].values

# resample the scene to a specified area (e.g. "eurol1" for Europe in 1km resolution)
scn_resampled = scn.resample("eurol", resampler='nearest', radius_of_influence=5000)
(continues on next page)

2.5. Examples 15
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)

# save the resampled dataset/composite to disk


scn_resampled.save_dataset("natural_color", filename='./fci_natural_color_resampled.png')

2.5.2 EPS-SG VII netCDF Example


Satpy includes a reader for the EPS-SG Visible and Infrared Imager (VII) Level 1b data. The following Python code
snippet shows an example on how to use Satpy to read a channel and resample and save the image over the European
area.

* Warning

This example is currently a work in progress. Some of the below code may not work with the currently released
version of Satpy. Additional updates to this example will be coming soon.

import glob
from satpy.scene import Scene

# find the file/files to be read


filenames = glob.glob('/path/to/VII/data/W_xx-eumetsat-darmstadt,SAT,SGA1-VII-1B-RAD_C_
˓→EUMT_20191007055100*')

# create a VII scene from the selected granule(s)


scn = Scene(filenames=filenames, reader='vii_l1b_nc')

# print available dataset names for this scene


print(scn.available_dataset_names())

# load the datasets of interest


# NOTE: only radiances are supported for test data
scn.load(["vii_668"], calibration="radiance")

# resample the scene to a specified area (e.g. "eurol1" for Europe in 1km resolution)
eur = scn.resample("eurol", resampler='nearest', radius_of_influence=5000)

# save the resampled data to disk


eur.save_dataset("vii_668", filename='./vii_668_eur.png')

16 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Name Description
Quickstart with MSG data Satpy quickstart for loading and processing satellite data, with
MSG data in this examples
Cartopy Plot Plot a single VIIRS SDR granule using Cartopy and matplotlib
Himawari-8 AHI True Color Generate and resample a rayleigh corrected true color RGB from
Himawari-8 AHI data
Sentinel-3 OLCI True Color Reading OLCI data from Sentinel 3 with Pytroll/Satpy
Sentinel 2 MSI true color Reading MSI data from Sentinel 2 with Pytroll/Satpy
Suomi-NPP VIIRS SDR True Color Generate a rayleigh corrected true color RGB from VIIRS I- and
M-bands
Aqua/Terra MODIS True Color Generate and resample a rayleigh corrected true color RGB from
MODIS
Sentinel 1 SAR-C False Color Generate a false color composite RGB from SAR-C polarized
datasets
Level 2 EARS-NWC cloud products Reading Level 2 EARS-NWC cloud products
Level 2 MAIA cloud products Reading Level 2 MAIA cloud products
Meteosat Third Generation FCI Natural Color Generate Natural Color RGB from Meteosat Third Generation
RGB (MTG) FCI Level 1c data
Reading EPS-SG Visible and Infrared Imager Read and visualize EPS-SG VII L1B test data and save it to an
(VII) with Pytroll image

2.6 Quickstart
2.6.1 Loading and accessing data
To work with weather satellite data you must create a Scene object. Satpy does not currently provide an interface to
download satellite data, it assumes that the data is on a local hard disk already. In order for Satpy to get access to the
data the Scene must be told what files to read and what Satpy Reader should read them:

>>> from satpy import Scene


>>> from glob import glob
>>> filenames = glob("/home/a001673/data/satellite/Meteosat-10/seviri/lvl1.5/2015/04/20/
˓→HRIT/*201504201000*")

>>> global_scene = Scene(reader="seviri_l1b_hrit", filenames=filenames)

To load data from the files use the Scene.load method. Printing the Scene object will list each of the xarray.
DataArray objects currently loaded:

>>> global_scene.load(['0.8', '1.6', '10.8'])


>>> print(global_scene)
<xarray.DataArray 'reshape-d66223a8e05819b890c4535bc7e74356' (y: 3712, x: 3712)>
dask.array<shape=(3712, 3712), dtype=float32, chunksize=(464, 3712)>
Coordinates:
* x (x) float64 5.567e+06 5.564e+06 5.561e+06 5.558e+06 5.555e+06 ...
* y (y) float64 -5.567e+06 -5.564e+06 -5.561e+06 -5.558e+06 ...
Attributes:
orbital_parameters: {'projection_longitude': 0.0, 'pr...
sensor: seviri
platform_name: Meteosat-11
standard_name: brightness_temperature
units: K
(continues on next page)

2.6. Quickstart 17
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


wavelength: (9.8, 10.8, 11.8)
start_time: 2018-02-28 15:00:10.814000
end_time: 2018-02-28 15:12:43.956000
area: Area ID: some_area_name\nDescription: On-the-fly ar...
name: IR_108
resolution: 3000.40316582
calibration: brightness_temperature
polarization: None
level: None
modifiers: ()
ancillary_variables: []
<xarray.DataArray 'reshape-1982d32298aca15acb42c481fd74a629' (y: 3712, x: 3712)>
dask.array<shape=(3712, 3712), dtype=float32, chunksize=(464, 3712)>
Coordinates:
* x (x) float64 5.567e+06 5.564e+06 5.561e+06 5.558e+06 5.555e+06 ...
* y (y) float64 -5.567e+06 -5.564e+06 -5.561e+06 -5.558e+06 ...
Attributes:
orbital_parameters: {'projection_longitude': 0.0, 'pr...
sensor: seviri
platform_name: Meteosat-11
standard_name: toa_bidirectional_reflectance
units: %
wavelength: (0.74, 0.81, 0.88)
start_time: 2018-02-28 15:00:10.814000
end_time: 2018-02-28 15:12:43.956000
area: Area ID: some_area_name\nDescription: On-the-fly ar...
name: VIS008
resolution: 3000.40316582
calibration: reflectance
polarization: None
level: None
modifiers: ()
ancillary_variables: []
<xarray.DataArray 'reshape-e86d03c30ce754995ff9da484c0dc338' (y: 3712, x: 3712)>
dask.array<shape=(3712, 3712), dtype=float32, chunksize=(464, 3712)>
Coordinates:
* x (x) float64 5.567e+06 5.564e+06 5.561e+06 5.558e+06 5.555e+06 ...
* y (y) float64 -5.567e+06 -5.564e+06 -5.561e+06 -5.558e+06 ...
Attributes:
orbital_parameters: {'projection_longitude': 0.0, 'pr...
sensor: seviri
platform_name: Meteosat-11
standard_name: toa_bidirectional_reflectance
units: %
wavelength: (1.5, 1.64, 1.78)
start_time: 2018-02-28 15:00:10.814000
end_time: 2018-02-28 15:12:43.956000
area: Area ID: some_area_name\nDescription: On-the-fly ar...
name: VIS006
resolution: 3000.40316582
calibration: reflectance
polarization: None
(continues on next page)

18 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


level: None
modifiers: ()
ancillary_variables: []

Satpy allows loading file data by wavelengths in micrometers (shown above) or by channel name:

>>> global_scene.load(["VIS008", "IR_016", "IR_108"])

To have a look at the available channels for loading from your Scene object use the available_dataset_names()
method:

>>> global_scene.available_dataset_names()
['HRV',
'IR_108',
'IR_120',
'VIS006',
'WV_062',
'IR_039',
'IR_134',
'IR_097',
'IR_087',
'VIS008',
'IR_016',
'WV_073']

To access the loaded data use the wavelength or name:

>>> print(global_scene[0.8])

For more information on loading datasets by resolution, calibration, or other advanced loading methods see the Reading
documentation.

2.6.2 Calculating measurement values and navigation coordinates


Once loaded, measurement values can be calculated from a DataArray within a scene, using .values to get a fully
calculated numpy array:

>>> vis008 = global_scene["VIS008"]


>>> vis008_meas = vis008.values

Note that for very large images, such as half-kilometer geostationary imagery, calculated measurement arrays may
require multiple gigabytes of memory; using deferred computation and/or subsetting of datasets may be preferred in
such cases.
The ‘area’ attribute of the DataArray, if present, can be converted to latitude and longitude arrays. For some instruments
(typically polar-orbiters), the get_lonlats() may result in arrays needing an additional .compute() or .values extraction.

>>> vis008_lon, vis008_lat = vis008.attrs['area'].get_lonlats()

2.6.3 Visualizing data


To visualize loaded data in a pop-up window:

2.6. Quickstart 19
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

>>> global_scene.show(0.8)

Alternatively if working in a Jupyter notebook the scene can be converted to a geoviews object using the
to_geoviews() method. The geoviews package is not a requirement of the base satpy install so in order to use this
feature the user needs to install the geoviews package himself.

>>> import holoviews as hv


>>> import geoviews as gv
>>> import geoviews.feature as gf
>>> gv.extension("bokeh", "matplotlib")
>>> %opts QuadMesh Image [width=600 height=400 colorbar=True] Feature [apply_
˓→ranges=False]

>>> %opts Image QuadMesh (cmap='RdBu_r')


>>> gview = global_scene.to_geoviews(vdims=[0.6])
>>> gview[::5,::5] * gf.coastline * gf.borders

2.6.4 Creating new datasets


Calculations based on loaded datasets/channels can easily be assigned to a new dataset:

>>> global_scene.load(['VIS006', 'VIS008'])


>>> global_scene["ndvi"] = (global_scene['VIS008'] - global_scene['VIS006']) / (global_
˓→scene['VIS008'] + global_scene['VIS006'])

>>> global_scene.show("ndvi")

When doing calculations Xarray, by default, will drop all attributes so attributes need to be copied over by hand. The
combine_metadata() function can assist with this task. Assigning additional custom metadata is also possible.

>>> from satpy.dataset import combine_metadata


>>> scene['new_band'] = scene['VIS008'] / scene['VIS006']
>>> scene['new_band'].attrs = combine_metadata(scene['VIS008'], scene['VIS006'])
>>> scene['new_band'].attrs['some_other_key'] = 'whatever_value_you_want'

2.6.5 Generating composites


Satpy comes with many composite recipes built-in and makes them loadable like any other dataset:

>>> global_scene.load(['overview'])

To get a list of all available composites for the current scene:

>>> global_scene.available_composite_names()
['overview_sun',
'airmass',
'natural_color',
'night_fog',
'overview',
'green_snow',
'dust',
'fog',
'natural_color_raw',
'cloudtop',
(continues on next page)

20 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


'convection',
'ash']

Loading composites will load all necessary dependencies to make that composite and unload them after the composite
has been generated.

á Note

Some composite require datasets to be at the same resolution or shape. When this is the case the Scene object must
be resampled before the composite can be generated (see below).

2.6.6 Resampling
In certain cases it may be necessary to resample datasets whether they come from a file or are generated composites.
Resampling is useful for mapping data to a uniform grid, limiting input data to an area of interest, changing from
one projection to another, or for preparing datasets to be combined in a composite (see above). For more details on
resampling, different resampling algorithms, and creating your own area of interest see the Resampling documentation.
To resample a Satpy Scene:

>>> local_scene = global_scene.resample("eurol")

This creates a copy of the original global_scene with all loaded datasets resampled to the built-in “eurol” area. Any
composites that were requested, but could not be generated are automatically generated after resampling. The new
local_scene can now be used like the original global_scene for working with datasets, saving them to disk or
showing them on screen:

>>> local_scene.show('overview')
>>> local_scene.save_dataset('overview', './local_overview.tif')

2.6.7 Saving to disk


To save all loaded datasets to disk as geotiff images:

>>> global_scene.save_datasets()

To save all loaded datasets to disk as PNG images:

>>> global_scene.save_datasets(writer='simple_image')

Or to save an individual dataset:

>>> global_scene.save_dataset('VIS006', 'my_nice_image.png')

Datasets are automatically scaled or “enhanced” to be compatible with the output format and to provide the best looking
image. For more information on saving datasets and customizing enhancements see the documentation on Writing.

2.6.8 Slicing and subsetting scenes


Array slicing can be done at the scene level in order to get subsets with consistent navigation throughout. Note that this
does not take into account scenes that may include channels at multiple resolutions, i.e. index slicing does not account
for dataset spatial resolution.

2.6. Quickstart 21
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

>>> scene_slice = global_scene[2000:2004, 2000:2004]


>>> vis006_slice = scene_slice['VIS006']
>>> vis006_slice_meas = vis006_slice.values
>>> vis006_slice_lon, vis006_slice_lat = vis006_slice.attrs['area'].get_lonlats()

To subset multi-resolution data consistently, use the crop() method.

>>> scene_llbox = global_scene.crop(ll_bbox=(-4.0, -3.9, 3.9, 4.0))


>>> vis006_llbox = scene_llbox['VIS006']
>>> vis006_llbox_meas = vis006_llbox.values
>>> vis006_llbox_lon, vis006_llbox_lat = vis006_llbox.attrs['area'].get_lonlats()

2.6.9 Troubleshooting
When something goes wrong, a first step to take is check that the latest Version of satpy and its dependencies are in-
stalled. Satpy drags in a few packages as dependencies per default, but each reader and writer has it’s own dependencies
which can be unfortunately easy to miss when just doing a regular pip install. To check the missing dependencies for
the readers and writers, a utility function called check_satpy() can be used:

>>> from satpy.utils import check_satpy


>>> check_satpy()

Due to the way Satpy works, producing as many datasets as possible, there are times that behavior can be unexpected
but with no exceptions raised. To help troubleshoot these situations log messages can be turned on. To do this run the
following code before running any other Satpy code:

>>> from satpy.utils import debug_on


>>> debug_on()

2.7 Reading
Satpy supports reading and loading data from many input file formats and schemes through the concept of readers. Each
reader supports a specific type of input data. The Scene object provides a simple interface around all the complexity of
these various formats through its load method. The following sections describe the different way data can be loaded,
requested, or added to a Scene object.

2.7.1 Available Readers


For readers currently available in Satpy see Reader Table. Additionally to get a list of available readers you can use
the available_readers function. By default, it returns the names of available readers. To return additional reader
information use available_readers(as_dict=True):

>>> from satpy import available_readers


>>> available_readers()

Reader Table

Description
GOES-R ABI imager Level 1b data in netcdf format

22 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Description
SCMI ABI L1B in netCDF4 format
GOES-R ABI Level 2 products in netCDF4 format
NOAA Level 2 ACSPO SST data in netCDF4 format
FY-4A AGRI Level 1 HDF5 format
FY-4B AGRI Level 1 data HDF5 format
Himawari (8 + 9) AHI Level 1 (HRIT)
Himawari (8 + 9) AHI Level 1b (HSD)
Himawari (8 + 9) AHI Level 1b (gridded)
Himawari-8/9 AHI Level 2 products in netCDF4 format from NOAA enterprise
GEO-KOMPSAT-2 AMI Level 1b
GCOM-W1 AMSR2 data in HDF5 format
GCOM-W1 AMSR2 Level 2 (HDF5)
GCOM-W1 AMSR2 Level 2 GAASP (NetCDF4)
AAPP L1C AMSU-B format
METOP ASCAT Level 2 SOILMOISTURE BUFR
S-NPP and JPSS-1 ATMS L1B (NetCDF4)
S-NPP and JPSS ATMS SDR (hdf5)
NOAA 15 to 19, Metop A to C AVHRR data in AAPP format
Metop A to C AVHRR in native level 1 format
Tiros-N, NOAA 7 to 19 AVHRR data in GAC and LAC format
NOAA 15 to 19 AVHRR data in raw HRPT format
EUMETCSAT GAC FDR NetCDF4
AWS1 MWR L1B Radiance (NetCDF4)
AWS1 MWR L1C Radiance (NetCDF4)
Callipso Caliop Level 2 Cloud Layer data (v3) in EOS-hdf4 format
The Clouds from AVHRR Extended (CLAVR-x)
CMSAF CLAAS-2 data for SEVIRI-derived cloud products
Electro-L N2 MSU-GS data in HRIT format
DSCOVR EPIC L1b hdf5
EPS-Sterna MWR L1B Radiance (NetCDF4)
MTG FCI Level-1c NetCDF
MTGi Level 2 products in BUFR format
MTG FCI L2 data in GRIB2 format
MTG FCI L2 data in netCDF4 format
FY-3A MERSI-1 L1B data in HDF5 format
FY-3B MERSI-1 L1B data in HDF5 format
FY-3C MERSI-1 L1B data in HDF5 format
Generic Images e.g. GeoTIFF
GEOstationary Cloud Algorithm Test-bed
Meteosat Second Generation Geostationary Earth Radiation Budget L2 High-Resolution
FY-4A GHI Level 1 HDF5 format
Sentinel-3 SLSTR SST data in netCDF4 format
Vaisala GLD360 UALF2
GOES-R GLM Level 2
GMS-5 VISSR Level 1b
GK-2B GOCI-II Level 2 products in netCDF4 format from NOSC
GOES Imager Level 1 (HRIT)
GOES Imager Level 1 (netCDF)
GPM IMERG level 3 precipitation data in HDF5 format
GRIB2 format

2.7. Reading 23
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Description
Hydrology SAF products in GRIB format
Hydrology SAF products in HDF5 format
HY-2B Scatterometer level 2b data in HDF5 format from both EUMETSAT and NSOAS
IASI Level 2 data in HDF5 format
IASI All Sky Temperature and Humidity Profiles - Climate Data Record Release 1.1 - Metop-A and -B
METOP IASI Level 2 SO2 in BUFR format
EPS-SG ICI L1B Radiance (NetCDF4)
Insat 3d IMG L1B HDF5
MTSAT-1R JAMI Level 1 data in JMA HRIT format
LI Level-2 NetCDF Reader
AAPP MAIA VIIRS and AVHRR products in HDF5 format
MODIS Level 3 (mcd12Q1) data in HDF-EOS format
Sentinel 3 MERIS NetCDF format
MERSI-2 L1B data in HDF5 format
MERSI-3 L1B data in HDF5 format
FY-3E MERSI Low Light Level 1B
MERSI-RM L1B data in HDF5 format
AAPP L1C in MHS format
MIMIC Total Precipitable Water Product Reader in netCDF format
MiRS Level 2 Precipitation and Surface Swath Product Reader in netCDF4 format
Terra and Aqua MODIS data in EOS-hdf4 level-1 format as produced by IMAPP and IPOPP or downloaded from LAADS
MODIS Level 2 (mod35) data in HDF-EOS format
MODIS Level 3 (mcd43) data in HDF-EOS format
Sentinel-2 A and B MSI L1C data in SAFE format
Sentinel-2 A and B MSI L2A data in SAFE format
Arctica-M (N1) MSU-GS/A data in HDF5 format
MTSAT-2 Imager Level 1 data in JMA HRIT format
MFG (Meteosat 2 to 7) MVIRI data in netCDF format (FIDUCEO FCDR)
EPS-SG MWI L1B Radiance (NetCDF4)
EPS-SG MWS L1B Radiance (NetCDF4)
NUCAPS EDR Retrieval data in NetCDF4 format
NWCSAF GEO 2016 products in netCDF4 format (limited to SEVIRI)
NWCSAF GEO 2013 products in HDF5 format (limited to SEVIRI)
NWCSAF PPS 2014, 2018 products in netCDF4 format
Ocean color CCI Level 3S data reader
PACE OCI L2 Biogeochemical in NetCDF format
Sentinel-3 A and B OLCI Level 1B data in netCDF4 format
Sentinel-3 A and B OLCI Level 2 data in netCDF4 format
Landsat-8/9 OLI/TIRS L1 data in GeoTIFF format.
OMPS EDR data in HDF5 format
OSI-SAF data in netCDF4 format
SAR Level 2 OCN data in SAFE format
Sentinel-1 A and B SAR-C data in SAFE format
Reader for CF conform netCDF files written with Satpy
Scatsat-1 Level 2b Wind field data in HDF5 format
SEADAS L2 Chlorphyll A product in HDF4 format
MSG SEVIRI Level 1b (HRIT)
MSG SEVIRI Level 1b in HDF format from ICARE (Lille)
MSG (Meteosat 8 to 11) SEVIRI data in native format
MSG SEVIRI Level 1b NetCDF4

24 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Description
MSG (Meteosat 8 to 11) Level 2 products in BUFR format
MSG (Meteosat 8 to 11) SEVIRI Level 2 products in GRIB2 format
GCOM-C SGLI Level 1B HDF5 format
Sentinel-3 A and B SLSTR data in netCDF4 format
SMOS level 2 wind data in NetCDF4 format
TROPOMI Level 2 data in NetCDF4 format
EPS-SG Visual Infrafred Imager (VII) Level 1B Radiance data in netCDF4 format
EPS-SG Visual Infrared Imager (VII) Level 2 data in netCDF4 format
JPSS VIIRS SDR data in HDF5 Compact format
JPSS VIIRS EDR NetCDF format
VIIRS EDR Active Fires data in netCDF4 & CSV .txt format
VIIRS EDR Flood data in HDF4 format
JPSS VIIRS Level 1b data in netCDF4 format
SNPP VIIRS Level 2 data in netCDF4 format
JPSS VIIRS data in HDF5 SDR format
VIIRS Global Area Coverage from VIIRS Reflected Solar Band and Thermal Emission Band data for both Moserate resolution and Im
VIRR data in HDF5 format

á Note

Status description:
Defunct
Most likely the reader is not functional. If it is there is a good chance of bugs and/or performance problems
(e.g. not ported to dask/xarray yet). Future development is unclear. Users are encouraged to contribute (see
section How to contribute and/or get help on Slack or by opening a Github issue).
Alpha
This denotes early development status. Reader is functional and implements some or all of the nominal
features. There might be bugs. Exactness of results is not be guaranteed. Use at your own risk.
Beta
This denotes final developement status. Reader is functional and implements all nominal features. Results
should be dependable but there might be bugs. Users are actively encouraged to test and report bugs.
Nominal
This denotes a finished status. Reader is functional and most likely no new features will be introduced. It has
been tested and there are no known bugs.

Documentation for specific readers


SEVIRI L1.5 data readers

Common functionality for SEVIRI L1.5 data readers.

Introduction

The Spinning Enhanced Visible and InfraRed Imager (SEVIRI) is the primary instrument on Meteosat Second Gener-
ation (MSG) and has the capacity to observe the Earth in 12 spectral channels.
Level 1.5 corresponds to image data that has been corrected for all unwanted radiometric and geometric effects, has
been geolocated using a standardised projection, and has been calibrated and radiance-linearised. (From the EU-

2.7. Reading 25
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

METSAT documentation)
Satpy provides the following readers for SEVIRI L1.5 data in different formats:
• Native: satpy.readers.seviri_l1b_native
• HRIT: satpy.readers.seviri_l1b_hrit
• netCDF: satpy.readers.seviri_l1b_nc

Calibration

This section describes how to control the calibration of SEVIRI L1.5 data.

Calibration to radiance

The SEVIRI L1.5 data readers allow for choosing between two file-internal calibration coefficients to convert counts
to radiances:
• Nominal for all channels (default)
• GSICS where available (IR currently) and nominal for the remaining channels (VIS & HRV currently)
In order to change the default behaviour, use the reader_kwargs keyword argument upon Scene creation:

import satpy
scene = satpy.Scene(filenames=filenames,
reader='seviri_l1b_...',
reader_kwargs={'calib_mode': 'GSICS'})
scene.load(['VIS006', 'IR_108'])

In addition, two other calibration methods are available:


1. It is possible to specify external calibration coefficients for the conversion from counts to radiances. External
coefficients take precedence over internal coefficients and over the Meirink coefficients, but you can also mix
internal and external coefficients: If external calibration coefficients are specified for only a subset of channels, the
remaining channels will be calibrated using the chosen file-internal coefficients (nominal or GSICS). Calibration
coefficients must be specified in [mW m-2 sr-1 (cm-1)-1].
2. The calibration mode meirink-2023 uses coefficients based on an intercalibration with Aqua-MODIS for the
visible channels, as found in Inter-calibration of polar imager solar channels using SEVIRI (2013) by J. F.
Meirink, R. A. Roebeling, and P. Stammes.
In the following example we use external calibration coefficients for the VIS006 & IR_108 channels, and nominal
coefficients for the remaining channels:

coefs = {'VIS006': {'gain': 0.0236, 'offset': -1.20},


'IR_108': {'gain': 0.2156, 'offset': -10.4}}
scene = satpy.Scene(filenames,
reader='seviri_l1b_...',
reader_kwargs={'ext_calib_coefs': coefs})
scene.load(['VIS006', 'VIS008', 'IR_108', 'IR_120'])

In the next example we use external calibration coefficients for the VIS006 & IR_108 channels, GSICS coefficients
where available (other IR channels) and nominal coefficients for the rest:

coefs = {'VIS006': {'gain': 0.0236, 'offset': -1.20},


'IR_108': {'gain': 0.2156, 'offset': -10.4}}
scene = satpy.Scene(filenames,
(continues on next page)

26 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


reader='seviri_l1b_...',
reader_kwargs={'calib_mode': 'GSICS',
'ext_calib_coefs': coefs})
scene.load(['VIS006', 'VIS008', 'IR_108', 'IR_120'])

In the next example we use the mode meirink-2023 calibration coefficients for all visible channels and nominal
coefficients for the rest:

scene = satpy.Scene(filenames,
reader='seviri_l1b_...',
reader_kwargs={'calib_mode': 'meirink-2023'})
scene.load(['VIS006', 'VIS008', 'IR_016'])

Calibration to reflectance

When loading solar channels, the SEVIRI L1.5 data readers apply a correction for the Sun-Earth distance variation
throughout the year - as recommended by the EUMETSAT document Conversion from radiances to reflectances for
SEVIRI warm channels. In the unlikely situation that this correction is not required, it can be removed on a per-channel
basis using satpy.readers.utils.remove_earthsun_distance_correction().

Masking of bad quality scan lines

By default bad quality scan lines are masked and replaced with np.nan for radiance, reflectance and brightness temper-
ature calibrations based on the quality flags provided by the data (for details on quality flags see MSG Level 1.5 Image
Data Format Description page 109). To disable masking reader_kwargs={'mask_bad_quality_scan_lines':
False} can be passed to the Scene.

Metadata

The SEVIRI L1.5 readers provide the following metadata:


• The orbital_parameters attribute provides the nominal and actual satellite position, as well as the projection
centre. See the Metadata section in the Reading chapter for more information.
• The acq_time coordinate provides the mean acquisition time for each scanline. Use a MultiIndex to enable
selection by acquisition time:

import pandas as pd
mi = pd.MultiIndex.from_arrays([scn['IR_108']['y'].data, scn['IR_108']['acq_time'].
˓→data],

names=('y_coord', 'time'))
scn['IR_108']['y'] = mi
scn['IR_108'].sel(time=np.datetime64('2019-03-01T12:06:13.052000000'))

• HRIT and Native readers can add raw metadata from the file header, such as calibration coefficients, to dataset
attributes. Use the reader keyword argument include_raw_metadata. Here’s an example for extracting cali-
bration coefficients from Native files.

scene = satpy.Scene(filenames,
reader='seviri_l1b_native',
reader_kwargs={'include_raw_metadata': True})
scene.load(["IR_108"])
mda = scene["IR_108"].attrs["raw_metadata"]
coefs = mda["15_DATA_HEADER"]["RadiometricProcessing"]["Level15ImageCalibration"]

2.7. Reading 27
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Note that this comes with a performance penalty of up to 10% if raw metadata from multiple segments or scans
need to be combined. By default, arrays with more than 100 elements are excluded to limit the performance
penalty. This threshold can be adjusted using the mda_max_array_size reader keyword argument:

scene = satpy.Scene(filenames,
reader='seviri_l1b_native',
reader_kwargs={'include_raw_metadata': True,
'mda_max_array_size': 1000})

References
• MSG Level 1.5 Image Data Format Description
• Radiometric Calibration of MSG SEVIRI Level 1.5 Image Data in Equivalent Spectral Blackbody Radiance

SEVIRI HRIT format reader

SEVIRI Level 1.5 HRIT format reader.

Introduction

The seviri_l1b_hrit reader reads and calibrates MSG-SEVIRI L1.5 image data in HRIT format. The format is
explained in the MSG Level 1.5 Image Data Format Description. The files are usually named as follows:

H-000-MSG4__-MSG4________-_________-PRO______-201903011200-__
H-000-MSG4__-MSG4________-IR_108___-000001___-201903011200-__
H-000-MSG4__-MSG4________-IR_108___-000002___-201903011200-__
H-000-MSG4__-MSG4________-IR_108___-000003___-201903011200-__
H-000-MSG4__-MSG4________-IR_108___-000004___-201903011200-__
H-000-MSG4__-MSG4________-IR_108___-000005___-201903011200-__
H-000-MSG4__-MSG4________-IR_108___-000006___-201903011200-__
H-000-MSG4__-MSG4________-IR_108___-000007___-201903011200-__
H-000-MSG4__-MSG4________-IR_108___-000008___-201903011200-__
H-000-MSG4__-MSG4________-_________-EPI______-201903011200-__

Each image is decomposed into 24 segments (files) for the high-resolution-visible (HRV) channel and 8 segments for
other visible (VIS) and infrared (IR) channels. Additionally, there is one prologue and one epilogue file for the entire
scan which contain global metadata valid for all channels.

Reader Arguments

Some arguments can be provided to the reader to change its behaviour. These are provided through the Scene instanti-
ation, eg:

scn = Scene(filenames=filenames, reader="seviri_l1b_hrit", reader_kwargs={'fill_hrv':␣


˓→False})

To see the full list of arguments that can be provided, look into the documentation of HRITMSGFileHandler.

Compression

This reader accepts compressed HRIT files, ending in C_ as other HRIT readers, see satpy.readers.hrit_base.
HRITFileHandler.
This reader also accepts bzipped file with the extension .bz2 for the prologue, epilogue, and segment files.

28 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Nominal start/end time

* Warning

attribute access change

nominal_start_time and nominal_end_time should be accessed using the time_parameters attribute.


nominal_start_time and nominal_end_time are also available directly via start_time and end_time respec-
tively.
Here is an exmaple of the content of the start/end time and time_parameters attibutes

Start time: 2019-08-29 12:00:00


End time: 2019-08-29 12:15:00
time_parameters:
{'nominal_start_time': datetime.datetime(2019, 8, 29, 12, 0),
'nominal_end_time': datetime.datetime(2019, 8, 29, 12, 15),
'observation_start_time': datetime.datetime(2019, 8, 29, 12, 0, 9,␣
˓→338000),

'observation_end_time': datetime.datetime(2019, 8, 29, 12, 15, 9,␣


˓→203000)

Example:

Here is an example how to read the data in satpy:

from satpy import Scene


import glob

filenames = glob.glob('data/H-000-MSG4__-MSG4________-*201903011200*')
scn = Scene(filenames=filenames, reader='seviri_l1b_hrit')
scn.load(['VIS006', 'IR_108'])
print(scn['IR_108'])

Output:

<xarray.DataArray (y: 3712, x: 3712)>


dask.array<shape=(3712, 3712), dtype=float32, chunksize=(464, 3712)>
Coordinates:
acq_time (y) datetime64[ns] NaT NaT NaT NaT NaT NaT ... NaT NaT NaT NaT NaT
* x (x) float64 5.566e+06 5.563e+06 5.56e+06 ... -5.566e+06 -5.569e+06
* y (y) float64 -5.566e+06 -5.563e+06 ... 5.566e+06 5.569e+06
Attributes:
orbital_parameters: {'projection_longitude': 0.0, 'projection_latit...
platform_name: Meteosat-11
georef_offset_corrected: True
standard_name: brightness_temperature
raw_metadata: {'file_type': 0, 'total_header_length': 6198, '...
wavelength: (9.8, 10.8, 11.8)
units: K
sensor: seviri
(continues on next page)

2.7. Reading 29
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


platform_name: Meteosat-11
start_time: 2019-03-01 12:00:09.716000
end_time: 2019-03-01 12:12:42.946000
area: Area ID: some_area_name\\nDescription: On-the-fl...
name: IR_108
resolution: 3000.403165817
calibration: brightness_temperature
polarization: None
level: None
modifiers: ()
ancillary_variables: []

The filenames argument can either be a list of strings, see the example above, or a list of satpy.readers.FSFile
objects. FSFiles can be used in conjunction with fsspec, e.g. to handle in-memory data:

import glob

from fsspec.implementations.memory import MemoryFile, MemoryFileSystem


from satpy import Scene
from satpy.readers import FSFile

# In this example, we will make use of `MemoryFile`s in a `MemoryFileSystem`.


memory_fs = MemoryFileSystem()

# Usually, the data already resides in memory.


# For explanatory reasons, we will load the files found with glob in memory,
# and load the scene with FSFiles.
filenames = glob.glob('data/H-000-MSG4__-MSG4________-*201903011200*')
fs_files = []
for fn in filenames:
with open(fn, 'rb') as fh:
fs_files.append(MemoryFile(
fs=memory_fs,
path="{}{}".format(memory_fs.root_marker, fn),
data=fh.read()
))
fs_files[-1].commit() # commit the file to the filesystem
fs_files = [FSFile(open_file) for open_file in filenames] # wrap MemoryFiles as FSFiles
# similar to the example above, we pass a list of FSFiles to the `Scene`
scn = Scene(filenames=fs_files, reader='seviri_l1b_hrit')
scn.load(['VIS006', 'IR_108'])
print(scn['IR_108'])

Output:

<xarray.DataArray (y: 3712, x: 3712)>


dask.array<shape=(3712, 3712), dtype=float32, chunksize=(464, 3712)>
Coordinates:
acq_time (y) datetime64[ns] NaT NaT NaT NaT NaT NaT ... NaT NaT NaT NaT NaT
* x (x) float64 5.566e+06 5.563e+06 5.56e+06 ... -5.566e+06 -5.569e+06
* y (y) float64 -5.566e+06 -5.563e+06 ... 5.566e+06 5.569e+06
Attributes:
(continues on next page)

30 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


orbital_parameters: {'projection_longitude': 0.0, 'projection_latit...
platform_name: Meteosat-11
georef_offset_corrected: True
standard_name: brightness_temperature
raw_metadata: {'file_type': 0, 'total_header_length': 6198, '...
wavelength: (9.8, 10.8, 11.8)
units: K
sensor: seviri
platform_name: Meteosat-11
start_time: 2019-03-01 12:00:09.716000
end_time: 2019-03-01 12:12:42.946000
area: Area ID: some_area_name\\nDescription: On-the-fl...
name: IR_108
resolution: 3000.403165817
calibration: brightness_temperature
polarization: None
level: None
modifiers: ()
ancillary_variables: []

References
• EUMETSAT Product Navigator
• MSG Level 1.5 Image Data Format Description
• fsspec

SEVIRI Native format reader

SEVIRI Level 1.5 native format reader.

Introduction

The seviri_l1b_native reader reads and calibrates MSG-SEVIRI L1.5 image data in binary format. The format is
explained in the MSG Level 1.5 Native Format File Definition. The files are usually named as follows:

MSG4-SEVI-MSG15-0100-NA-20210302124244.185000000Z-NA.nat

Reader Arguments

Some arguments can be provided to the reader to change its behaviour. These are provided through the Scene instanti-
ation, eg:

scn = Scene(filenames=filenames, reader="seviri_l1b_native", reader_kwargs={'fill_disk':␣


˓→True})

To see the full list of arguments that can be provided, look into the documentation of NativeMSGFileHandler.

2.7. Reading 31
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Example:

Here is an example how to read the data in satpy.


NOTE: When loading the data, the orientation of the image can be set with upper_right_corner-keyword. Possible
options are NW, NE, SW, SE, or native.

from satpy import Scene

filenames = ['MSG4-SEVI-MSG15-0100-NA-20210302124244.185000000Z-NA.nat']
scn = Scene(filenames=filenames, reader='seviri_l1b_native')
scn.load(['VIS006', 'IR_108'], upper_right_corner='NE')
print(scn['IR_108'])

Output:

<xarray.DataArray 'reshape-969ef97d34b7b0c70ca19f53c6abcb68' (y: 3712, x: 3712)>


dask.array<truediv, shape=(3712, 3712), dtype=float32, chunksize=(928, 3712),␣
˓→chunktype=numpy.ndarray>

Coordinates:
acq_time (y) datetime64[ns] NaT NaT NaT NaT NaT NaT ... NaT NaT NaT NaT NaT
crs object PROJCRS["unknown",BASEGEOGCRS["unknown",DATUM["unknown",...
* y (y) float64 -5.566e+06 -5.563e+06 ... 5.566e+06 5.569e+06
* x (x) float64 5.566e+06 5.563e+06 5.56e+06 ... -5.566e+06 -5.569e+06
Attributes:
orbital_parameters: {'projection_longitude': 0.0, 'projection_latit...
time_parameters: {'nominal_start_time': datetime.datetime(2021, ...
units: K
wavelength: 10.8 µm (9.8-11.8 µm)
standard_name: toa_brightness_temperature
platform_name: Meteosat-11
sensor: seviri
georef_offset_corrected: True
start_time: 2021-03-02 12:30:11.584603
end_time: 2021-03-02 12:45:09.949762
reader: seviri_l1b_native
area: Area ID: msg_seviri_fes_3km\\nDescription: MSG S...
name: IR_108
resolution: 3000.403165817
calibration: brightness_temperature
modifiers: ()
_satpy_id: DataID(name='IR_108', wavelength=WavelengthRang...
ancillary_variables: []

References
• EUMETSAT Product Navigator
• MSG Level 1.5 Native Format File Definition

SEVIRI netCDF format reader

SEVIRI netcdf format reader.

32 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Other xRIT-based readers

HRIT/LRIT format reader.


This module is the base module for all HRIT-based formats. Here, you will find the common building blocks for hrit
reading.
One of the features here is the on-the-fly decompression of hrit files when compressed hrit files are encountered (files
finishing with .C_).

JMA HRIT format reader

HRIT format reader for JMA data.

Introduction

The JMA HRIT format is described in the JMA HRIT - Mission Specific Implementation. There are three readers for
this format in Satpy:
• jami_hrit: For data from the JAMI instrument on MTSAT-1R
• mtsat2-imager_hrit: For data from the Imager instrument on MTSAT-2
• ahi_hrit: For data from the AHI instrument on Himawari-8/9
Although the data format is identical, the instruments have different characteristics, which is why there is a dedicated
reader for each of them. Sample data is available here:
• JAMI/Imager sample data
• AHI sample data

Example:

Here is an example how to read Himwari-8 HRIT data with Satpy:

from satpy import Scene


import glob

filenames = glob.glob('data/IMG_DK01B14_2018011109*')
scn = Scene(filenames=filenames, reader='ahi_hrit')
scn.load(['B14'])
print(scn['B14'])

Output:

<xarray.DataArray (y: 5500, x: 5500)>


dask.array<concatenate, shape=(5500, 5500), dtype=float64, chunksize=(550, 4096), ...
Coordinates:
acq_time (y) datetime64[ns] 2018-01-11T09:00:20.995200 ... 2018-01-11T09:09:40.
˓→348800

crs object +proj=geos +lon_0=140.7 +h=35785831 +x_0=0 +y_0=0 +a=6378169 ...


* y (y) float64 5.5e+06 5.498e+06 5.496e+06 ... -5.496e+06 -5.498e+06
* x (x) float64 -5.498e+06 -5.496e+06 -5.494e+06 ... 5.498e+06 5.5e+06
Attributes:
orbital_parameters: {'projection_longitude': 140.7, 'projection_latitud...
standard_name: toa_brightness_temperature
level: None
(continues on next page)

2.7. Reading 33
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


wavelength: (11.0, 11.2, 11.4)
units: K
calibration: brightness_temperature
file_type: ['hrit_b14_seg', 'hrit_b14_fd']
modifiers: ()
polarization: None
sensor: ahi
name: B14
platform_name: Himawari-8
resolution: 4000
start_time: 2018-01-11 09:00:20.995200
end_time: 2018-01-11 09:09:40.348800
area: Area ID: FLDK, Description: Full Disk, Projection I...
ancillary_variables: []

JMA HRIT data contain the scanline acquisition time for only a subset of scanlines. Timestamps of the remaining
scanlines are computed using linear interpolation. This is what you’ll find in the acq_time coordinate of the dataset.

Compression

Gzip-compressed MTSAT files can be decompressed on the fly using FSFile:

import fsspec
from satpy import Scene
from satpy.readers import FSFile

filename = "/data/HRIT_MTSAT1_20090101_0630_DK01IR1.gz"
open_file = fsspec.open(filename, compression="gzip")
fs_file = FSFile(open_file)
scn = Scene([fs_file], reader="jami_hrit")
scn.load(["IR1"])

GOES HRIT format reader

GOES HRIT format reader.

References
LRIT/HRIT Mission Specific Implementation, February 2012 GVARRDL98.pdf 05057_SPE_MSG_LRIT_HRI

Electro-L HRIT format reader

HRIT format reader.

References
ELECTRO-L GROUND SEGMENT MSU-GS INSTRUMENT,
LRIT/HRIT Mission Specific Implementation, February 2012

34 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

hdf-eos based readers

Modis level 1b hdf-eos format reader.

Introduction

The modis_l1b reader reads and calibrates Modis L1 image data in hdf-eos format. Files often have a pattern similar
to the following one:

M[O/Y]D02[1/H/Q]KM.A[date].[time].[collection].[processing_time].hdf

Other patterns where “collection” and/or “proccessing_time” are missing might also work (see the readers yaml file for
details). Geolocation files (MOD03) are also supported. The IMAPP direct broadcast naming format is also supported
with names like: a1.12226.1846.1000m.hdf.

Saturation Handling

Band 2 of the MODIS sensor is available in 250m, 500m, and 1km resolutions. The band data may include a special
fill value to indicate when the detector was saturated in the 250m version of the data. When the data is aggregated to
coarser resolutions this saturation fill value is converted to a “can’t aggregate” fill value. By default, Satpy will replace
these fill values with NaN to indicate they are invalid. This is typically undesired when generating images for the data
as they appear as “holes” in bright clouds. To control this the keyword argument mask_saturated can be passed and
set to False to set these two fill values to the maximum valid value.

scene = satpy.Scene(filenames=filenames,
reader='modis_l1b',
reader_kwargs={'mask_saturated': False})
scene.load(['2'])

Note that the saturation fill value can appear in other bands (ex. bands 7-19) in addition to band 2. Also, the “can’t
aggregate” fill value is a generic “catch all” for any problems encountered when aggregating high resolution bands to
lower resolutions. Filling this with the max valid value could replace non-saturated invalid pixels with valid values.

Geolocation files

For the 1km data (mod021km) geolocation files (mod03) are optional. If not given to the reader 1km geolocations will
be interpolated from the 5km geolocation contained within the file.
For the 500m and 250m data geolocation files are needed.

References
• Modis gelocation description: http://www.icare.univ-lille1.fr/wiki/index.php/MODIS_geolocation
Modis level 2 hdf-eos format reader.

Introduction

The modis_l2 reader reads and calibrates Modis L2 image data in hdf-eos format. Since there are a multitude of
different level 2 datasets not all of theses are implemented (yet).
Currently the reader supports:
• m[o/y]d35_l2: cloud_mask dataset
• some datasets in m[o/y]d06 files
To get a list of the available datasets for a given file refer to the “Load data” section in Reading.

2.7. Reading 35
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Geolocation files

Similar to the modis_l1b reader the geolocation files (mod03) for the 1km data are optional and if not given 1km
geolocations will be interpolated from the 5km geolocation contained within the file.
For the 500m and 250m data geolocation files are needed.

References
• Documentation about the format: https://modis-atmos.gsfc.nasa.gov/products

satpy cf nc readers

Reader for files produced with the cf netcdf writer in satpy.

Introduction

The satpy_cf_nc reader reads data written by the satpy cf_writer. Filenames for cf_writer are optional. There are
several readers using the same satpy_cf_nc.py reader.
• Generic reader satpy_cf_nc
• EUMETSAT GAC FDR reader avhrr_l1c_eum_gac_fdr_nc

Generic reader

The generic satpy_cf_nc reader reads files of type:

'{platform_name}-{sensor}-{start_time:%Y%m%d%H%M%S}-{end_time:%Y%m%d%H%M%S}.nc'

Example:

Here is an example how to read the data in satpy:

from satpy import Scene

filenames = ['data/npp-viirs-mband-20201007075915-20201007080744.nc']
scn = Scene(reader='satpy_cf_nc', filenames=filenames)
scn.load(['M05'])
scn['M05']

Output:

<xarray.DataArray 'M05' (y: 4592, x: 3200)>


dask.array<open_dataset-d91cfbf1bf4f14710d27446d91cdc6e4M05, shape=(4592, 3200),
dtype=float32, chunksize=(4096, 3200), chunktype=numpy.ndarray>
Coordinates:
longitude (y, x) float32 dask.array<chunksize=(4096, 3200), meta=np.ndarray>
latitude (y, x) float32 dask.array<chunksize=(4096, 3200), meta=np.ndarray>
Dimensions without coordinates: y, x
Attributes:
start_time: 2020-10-07 07:59:15
start_orbit: 46350
end_time: 2020-10-07 08:07:44
end_orbit: 46350
(continues on next page)

36 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


calibration: reflectance
long_name: M05
modifiers: ('sunz_corrected',)
platform_name: Suomi-NPP
resolution: 742
sensor: viirs
standard_name: toa_bidirectional_reflectance
units: %
wavelength: 0.672µm (0.662-0.682µm)
date_created: 2020-10-07T08:20:02Z
instrument: VIIRS

Notes
Available datasets and attributes will depend on the data saved with the cf_writer.

EUMETSAT AVHRR GAC FDR L1C reader

The avhrr_l1c_eum_gac_fdr_nc reader reads files of type:

''AVHRR-GAC_FDR_1C_{platform}_{start_time:%Y%m%dT%H%M%SZ}_{end_time:%Y%m%dT%H%M%SZ}_
˓→{processing_mode}_{disposition_mode}_{creation_time}_{version_int:04d}.nc'

Example:

Here is an example how to read the data in satpy:

from satpy import Scene

filenames = ['data/AVHRR-GAC_FDR_1C_N06_19810330T042358Z_19810330T060903Z_R_O_
˓→20200101T000000Z_0100.nc']

scn = Scene(reader='avhrr_l1c_eum_gac_fdr_nc', filenames=filenames)


scn.load(['brightness_temperature_channel_4'])
scn['brightness_temperature_channel_4']

Output:

<xarray.DataArray 'brightness_temperature_channel_4' (y: 11, x: 409)>


dask.array<open_dataset-55ffbf3623b32077c67897f4283640a5brightness_temperature_channel_4,
˓→ shape=(11, 409),

dtype=float32, chunksize=(11, 409), chunktype=numpy.ndarray>


Coordinates:
* x (x) int16 0 1 2 3 4 5 6 7 8 ... 401 402 403 404 405 406 407 408
* y (y) int64 0 1 2 3 4 5 6 7 8 9 10
acq_time (y) datetime64[ns] dask.array<chunksize=(11,), meta=np.ndarray>
longitude (y, x) float64 dask.array<chunksize=(11, 409), meta=np.ndarray>
latitude (y, x) float64 dask.array<chunksize=(11, 409), meta=np.ndarray>
Attributes:
start_time: 1981-03-30 04:23:58
end_time: 1981-03-30 06:09:03
calibration: brightness_temperature
modifiers: ()
(continues on next page)

2.7. Reading 37
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


resolution: 1050
standard_name: toa_brightness_temperature
units: K
wavelength: 10.8µm (10.3-11.3µm)
Conventions: CF-1.8 ACDD-1.3
comment: Developed in cooperation with EUME...
creator_email: [email protected]
creator_name: EUMETSAT
creator_url: https://www.eumetsat.int/
date_created: 2020-09-14T10:50:51.073707
disposition_mode: O
gac_filename: NSS.GHRR.NA.D81089.S0423.E0609.B09...
geospatial_lat_max: 89.95386902434623
geospatial_lat_min: -89.97581969005503
geospatial_lat_resolution: 1050 meters
geospatial_lat_units: degrees_north
geospatial_lon_max: 179.99952992568998
geospatial_lon_min: -180.0
geospatial_lon_resolution: 1050 meters
geospatial_lon_units: degrees_east
ground_station: GC
id: DOI:10.5676/EUM/AVHRR_GAC_L1C_FDR/...
institution: EUMETSAT
instrument: Earth Remote Sensing Instruments >...
keywords: ATMOSPHERE > ATMOSPHERIC RADIATION...
keywords_vocabulary: GCMD Science Keywords, Version 9.1
licence: EUMETSAT data policy https://www.e...
naming_authority: int.eumetsat
orbit_number_end: 9123
orbit_number_start: 9122
orbital_parameters_tle: ['1 11416U 79057A 81090.16350942...
platform: Earth Observation Satellites > NOA...
processing_level: 1C
processing_mode: R
product_version: 1.0.0
references: Devasthale, A., M. Raspaud, C. Sch...
source: AVHRR GAC Level 1 Data
standard_name_vocabulary: CF Standard Name Table v73
summary: Fundamental Data Record (FDR) of m...
sun_earth_distance_correction_factor: 0.9975244779999585
time_coverage_end: 19820803T003900Z
time_coverage_start: 19800101T000000Z
title: AVHRR GAC L1C FDR
version_calib_coeffs: PATMOS-x, v2017r1
version_pygac: 1.4.0
version_pygac_fdr: 0.1.dev107+gceb7b26.d20200910
version_satpy: 0.21.1.dev894+g5cf76e6
history: Created by pytroll/satpy on 2020-0...
name: brightness_temperature_channel_4
_satpy_id: DataID(name='brightness_temperatur...
ancillary_variables: []

38 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

hdf5 based readers

Advanced Geostationary Radiation Imager reader for the Level_1 HDF format.
The files read by this reader are described in the official Real Time Data Service:
http://fy4.nsmc.org.cn/data/en/data/realtime.html
Geostationary High-speed Imager reader for the Level_1 HDF format.
This instrument is aboard the Fengyun-4B satellite. No document is available to describe this format is available, but
it’s broadly similar to the co-flying AGRI instrument.

Arctica-M N1 HDF5 format reader

Reader for the Arctica-M1 MSU-GS/A data.


The files for this reader are HDF5 and contain channel data at 1km resolution for the VIS channels and 4km resolution
for the IR channels. Geolocation data is available at both resolutions, as is sun and satellite geometry.
This reader was tested on sample data provided by EUMETSAT.

2.7.2 Filter loaded files


Coming soon. . .

2.7.3 Load data


Datasets in Satpy are identified by certain pieces of metadata set during data loading. These include name, wavelength,
calibration, resolution, polarization, and modifiers. Normally, once a Scene is created requesting datasets by name or
wavelength is all that is needed:

>>> from satpy import Scene


>>> scn = Scene(reader="seviri_l1b_hrit", filenames=filenames)
>>> scn.load([0.6, 0.8, 10.8])
>>> scn.load(['IR_120', 'IR_134'])

However, in many cases datasets are available in multiple spatial resolutions, multiple calibrations
(brightness_temperature, reflectance, radiance, etc), multiple polarizations, or have corrections or
other modifiers already applied to them. By default Satpy will provide the version of the dataset with the highest
resolution and the highest level of calibration (brightness temperature or reflectance over radiance). It is also possible
to request one of these exact versions of a dataset by using the DataQuery class:

>>> from satpy import DataQuery


>>> my_channel_id = DataQuery(name='IR_016', calibration='radiance')
>>> scn.load([my_channel_id])
>>> print(scn['IR_016'])

Or request multiple datasets at a specific calibration, resolution, or polarization:

>>> scn.load([0.6, 0.8], resolution=1000)

Or multiple calibrations:

>>> scn.load([0.6, 10.8], calibration=['brightness_temperature', 'radiance'])

2.7. Reading 39
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

In the above case Satpy will load whatever dataset is available and matches the specified parameters. So the above
load call would load the 0.6 (a visible/reflectance band) radiance data and 10.8 (an IR band) brightness temperature
data.
For geostationary satellites that have the individual channel data separated to several files (segments) the missing seg-
ments are padded by default to full disk area. This is made to simplify caching of resampling look-up tables (see
Resampling for more information). To disable this, the user can pass pad_data keyword argument when loading
datasets:

>>> scn.load([0.6, 10.8], pad_data=False)

For geostationary products, where the imagery is stored in the files in an unconventional orientation (e.g. MSG SE-
VIRI L1.5 data are stored with the southwest corner in the upper right), the keyword argument upper_right_corner
can be passed into the load call to automatically flip the datasets to the wished orientation. Accepted argu-
ment values are 'NE', 'NW', 'SE', 'SW', and 'native'. By default, no flipping is applied (corresponding to
upper_right_corner='native') and the data are delivered in the original format. To get the data in the common
upright orientation, load the datasets using e.g.:

>>> scn.load(['VIS008'], upper_right_corner='NE')

á Note

If a dataset could not be loaded there is no exception raised. You must check the scn.missing_datasets property
for any DataID that could not be loaded.

To find out what datasets are available from a reader from the files that were provided to the Scene use
available_dataset_ids():

>>> scn.available_dataset_ids()

Or available_dataset_names() for just the string names of Datasets:

>>> scn.available_dataset_names()

2.7.4 Load remote data


Starting with Satpy version 0.25.1 with supported readers it is possible to load data from remote file systems like s3fs
or fsspec. For example:

>>> from satpy import Scene


>>> from satpy.readers import FSFile
>>> import fsspec

>>> filename = 'noaa-goes16/ABI-L1b-RadC/2019/001/17/*_G16_s20190011702186*'

>>> the_files = fsspec.open_files("simplecache::s3://" + filename, s3={'anon': True})

>>> fs_files = [FSFile(open_file) for open_file in the_files]

>>> scn = Scene(filenames=fs_files, reader='abi_l1b')


>>> scn.load(['true_color_raw'])

Check the list of Reader Table to see which reader supports remote files. For the usage of fsspec and advanced
features like caching files locally see the fsspec Documentation .

40 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

2.7.5 Search for local/remote files


Satpy provides a utility find_files_and_readers() for searching for files in a base directory matching various
search parameters. This function discovers files based on filename patterns. It returns a dictionary mapping reader
name to a list of filenames supported. This dictionary can be passed directly to the Scene initialization.

>>> from satpy import find_files_and_readers, Scene


>>> from datetime import datetime
>>> my_files = find_files_and_readers(base_dir='/data/viirs_sdrs',
... reader='viirs_sdr',
... start_time=datetime(2017, 5, 1, 18, 1, 0),
... end_time=datetime(2017, 5, 1, 18, 30, 0))
>>> scn = Scene(filenames=my_files)

See the find_files_and_readers() documentation for more information on the possible parameters as well as for
searching on remote file systems.

2.7.6 Metadata
The datasets held by a scene also provide vital metadata such as dataset name, units, observation time etc. The following
attributes are standardized across all readers:
• name, and other identifying metadata keys: See Satpy internal workings: having a look under the hood.
• start_time: Left boundary of the time interval covered by the dataset. For more information see the Time
Metadata section below.
• end_time: Right boundary of the time interval covered by the dataset. For more information see the Time
Metadata section below.
• area: AreaDefinition or SwathDefinition if data is geolocated. Areas are used for gridded projected
data and Swaths when data must be described by individual longitude/latitude coordinates. See the Coordinates
section below.
• reader: The name of the Satpy reader that produced the dataset.
• orbital_parameters: Dictionary of orbital parameters describing the satellite’s position. See the Orbital
Parameters section below for more information.
• time_parameters: Dictionary of additional time parameters describing the time ranges related to the requests
or schedules for when observations should happen and when they actually do. See Time Metadata below for
details.
• raw_metadata: Raw, unprocessed metadata from the reader.
• rows_per_scan: Optional integer indicating how many rows of data represent a single scan of the instrument.
This is primarily used by some resampling algorithms (ex. EWA) to produce better results and only makes sense
for swath-based (usually polar-orbiting) instruments. For example, MODIS 1km data has 10 rows of data per
scan. If an instrument does not have multiple rows per scan this should usually be set to 0 rather than 1 to indicate
that the entire swath should be treated as a whole.
Note that the above attributes are not necessarily available for each dataset.

Time Metadata
In addition to the generic start_time and end_time pieces of metadata there are other time fields that may be
provided if the reader supports them. These items are stored in a time_parameters sub-dictionary and they include
values like:
• observation_start_time: The point in time when a sensor began recording for the current data.

2.7. Reading 41
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• observation_end_time: Same as observation_start_time, but when data has stopped being recorded.
• nominal_start_time: The “human friendly” time describing the start of the data observation interval or repeat
cycle. This time is often on a round minute (seconds=0). Along with the nominal end time, these times define
the regular interval of the data collection. For example, GOES-16 ABI full disk images are collected every 10
minutes (in the common configuration) so nominal_start_time and nominal_end_time would be 10 minutes
apart regardless of when the instrument recorded data inside that interval. This time may also be referred to as
the repeat cycle, repeat slot, or time slot.
• nominal_end_time: Same as nominal_start_time, but the end of the interval.
In general, start_time and end_time will be set to the “nominal” time by the reader. This ensures that other Satpy
components get a consistent time for calculations (ex. generation of solar zenith angles) and can be reused between
bands.
See the Coordinates section below for more information on time information that may show up as a per-element/row
“coordinate” on the DataArray (ex. acquisition time) instead of as metadata.

Orbital Parameters
Orbital parameters describe the position of the satellite. As such they typically come in a few “flavors” for the common
types of orbits a satellite may have.
For geostationary satellites it is described using the following scalar attributes:
• satellite_actual_longitude/latitude/altitude: Current position of the satellite at the time of obser-
vation in geodetic coordinates (i.e. altitude is relative and normal to the surface of the ellipsoid). The longitude
and latitude are given in degrees, the altitude in meters.
• satellite_nominal_longitude/latitude/altitude: Center of the station keeping box (a confined area
in which the satellite is actively maintained in using maneuvers). Inbetween major maneuvers, when the satellite
is permanently moved, the nominal position is constant. The longitude and latitude are given in degrees, the
altitude in meters.
• nadir_longitude/latitude: Intersection of the instrument’s Nadir with the surface of the earth. May differ
from the actual satellite position, if the instrument is pointing slightly off the axis (satellite, earth-center). If
available, this should be used to compute viewing angles etc. Otherwise, use the actual satellite position. The
values are given in degrees.
• projection_longitude/latitude/altitude: Projection center of the re-projected data. This should be
used to compute lat/lon coordinates. Note that the projection center can differ considerably from the actual
satellite position. For example MSG-1 was at times positioned at 3.4 degrees west, while the image data was
re-projected to 0 degrees. The longitude and latitude are given in degrees, the altitude in meters.

á Note

For use in pyorbital, the altitude has to be converted to kilometers, see for example pyorbital.orbital.
get_observer_look().

For polar orbiting satellites the readers usually provide coordinates and viewing angles of the swath as ancillary
datasets. Additional metadata related to the satellite position includes:
• tle: Two-Line Element (TLE) set used to compute the satellite’s orbit

42 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

2.7.7 Coordinates
Each DataArray produced by Satpy has several Xarray coordinate variables added to them.
• x and y: Projection coordinates for gridded and projected data. By default y and x are the preferred dimensions
for all 2D data, but these coordinates are only added for gridded (non-swath) data. For 1D data only the y
dimension may be specified.
• crs: A CRS object defined the Coordinate Reference System for the data. Requires pyproj 2.0 or later to be
installed. This is stored as a scalar array by Xarray so it must be accessed by doing crs = my_data_arr.
attrs['crs'].item(). For swath data this defaults to a longlat CRS using the WGS84 datum.
• longitude: Array of longitude coordinates for swath data.
• latitude: Array of latitude coordinates for swath data.
Readers are free to define any coordinates in addition to the ones above that are automatically added. Other possible
coordinates you may see:
• acq_time: Instrument data acquisition time per scan or row of data.

2.7.8 Adding a Reader to Satpy


This is described in the developer guide, see Adding a Custom Reader to Satpy.

2.8 Reading remote files


2.8.1 Using a single reader
Some of the readers in Satpy can read data directly over various transfer protocols. This is done using fsspec and
various packages it is using underneath.
As an example, reading ABI data from public AWS S3 storage can be done in the following way:

from satpy import Scene

storage_options = {'anon': True}


filenames = ['s3://noaa-goes16/ABI-L1b-RadC/2019/001/17/*_G16_s20190011702186*']
scn = Scene(reader='abi_l1b', filenames=filenames, reader_kwargs={'storage_options':␣
˓→storage_options})

scn.load(['true_color_raw'])

Reading from S3 as above requires the s3fs library to be installed in addition to fsspec.
As an alternative, the storage options can be given using fsspec configuration. For the above example, the configuration
could be saved to s3.json in the fsspec configuration directory (by default placed in ~/.config/fsspec/ directory in Linux):

{
"s3": {
"anon": "true"
}
}

á Note

Options given in reader_kwargs override only the matching options given in configuration file and everythin else
is left as-is. In case of problems in data access, remove the configuration file to see if that solves the issue.

2.8. Reading remote files 43


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

For reference, reading SEVIRI HRIT data from a local S3 storage works the same way:

filenames = [
's3://satellite-data-eumetcast-seviri-rss/H-000-MSG3*202204260855*',
]
storage_options = {
"client_kwargs": {"endpoint_url": "https://PLACE-YOUR-SERVER-URL-HERE"},
"secret": "VERYBIGSECRET",
"key": "ACCESSKEY"
}
scn = Scene(reader='seviri_l1b_hrit', filenames=filenames, reader_kwargs={'storage_
˓→options': storage_options})

scn.load(['WV_073'])

Using the fsspec configuration in s3.json the configuration would look like this:

{
"s3": {
"client_kwargs": {"endpoint_url": "https://PLACE-YOUR-SERVER-URL-HERE"},
"secret": "VERYBIGSECRET",
"key": "ACCESSKEY"
}
}

2.8.2 Using multiple readers


If multiple readers are used and the required credentials differ, the storage options are passed per reader like this:

reader1_filenames = [...]
reader2_filenames = [...]
filenames = {
'reader1': reader1_filenames,
'reader2': reader2_filenames,
}
reader1_storage_options = {...}
reader2_storage_options = {...}
reader_kwargs = {
'reader1': {
'option1': 'foo',
'storage_options': reader1_storage_options,
},
'reader2': {
'option1': 'foo',
'storage_options': reader1_storage_options,
}
}
scn = Scene(filenames=filenames, reader_kwargs=reader_kwargs)

2.8.3 Caching the remote files


Caching the remote file locally can speedup the overall processing time significantly, especially if the data are re-used
for example when testing. The caching can be done by taking advantage of the fsspec caching mechanism:

44 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

reader_kwargs = {
'storage_options': {
's3': {'anon': True},
'simple': {
'cache_storage': '/tmp/s3_cache',
}
}
}

filenames = ['simplecache::s3://noaa-goes16/ABI-L1b-RadC/2019/001/17/*_G16_
˓→s20190011702186*']

scn = Scene(reader='abi_l1b', filenames=filenames, reader_kwargs=reader_kwargs)


scn.load(['true_color_raw'])
scn2 = scn.resample(scn.coarsest_area(), resampler='native')
scn2.save_datasets(base_dir='/tmp/', tiled=True, blockxsize=512, blockysize=512, driver=
˓→'COG', overviews=[])

The following table shows the timings for running the above code with different cache statuses:

.. _cache_timing_table:

Table 2: Processing times without and with caching


Caching Elapsed time Notes
No caching 650 s remove reader_kwargs and sim-
plecache:: from the code
File cache 66 s Initial run
File cache 13 s Second run

á Note

The cache is not cleaned by Satpy nor fsspec so the user should handle cleaning excess files from cache_storage.

á Note

Only simplecache is considered thread-safe, so using the other caching mechanisms may or may not work depending
on the reader, Dask scheduler or the phase of the moon.

2.8.4 Resources
See FSFile for direct usage of fsspec with Satpy, and fsspec documentation for more details on connection options
and detailes.

2.9 Composites
Composites are defined as arrays of data that are created by processing and/or combining one or multiple data arrays
(prerequisites) together.
Composites are generated in satpy using Compositor classes. The attributes of the resulting composites are usually a
combination of the prerequisites’ attributes and the key/values of the DataID used to identify it.

2.9. Composites 45
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

2.9.1 Built-in Compositors


There are many built-in compositors available in Satpy. The majority use the GenericCompositor base class which
handles various image modes (L, LA, RGB, and RGBA at the moment) and updates attributes.
The below sections summarize the composites that come with Satpy and show basic examples of creating and using
them with an existing Scene object. It is recommended that any composites that are used repeatedly be configured in
YAML configuration files. General-use compositor code dealing with visible or infrared satellite data can be put in a
configuration file called visir.yaml. Composites that are specific to an instrument can be placed in YAML config
files named accordingly (e.g., seviri.yaml or viirs.yaml). See the satpy repository for more examples.

GenericCompositor
GenericCompositor class can be used to create basic single channel and RGB composites. For example, building an
overview composite can be done manually within Python code with:

>>> from satpy.composites import GenericCompositor


>>> compositor = GenericCompositor("overview")
>>> composite = compositor([local_scene[0.6],
... local_scene[0.8],
... local_scene[10.8]])

One important thing to notice is that there is an internal difference between a composite and an image. A composite is
defined as a special dataset which may have several bands (like R, G and B bands). However, the data isn’t stretched,
or clipped or gamma filtered until an image is generated. To get an image out of the above composite:

>>> from satpy.writers import to_image


>>> img = to_image(composite)
>>> img.invert([False, False, True])
>>> img.stretch("linear")
>>> img.gamma(1.7)
>>> img.show()

This part is called enhancement, and is covered in more detail in Enhancements.


Single channel composites can also be generated with the GenericCompositor, but in some cases, the
SingleBandCompositor may be more appropriate. For example, the GenericCompositor removes attributes
such as units because they are typically not meaningful for an RGB image. Such attributes are retained in the
SingleBandCompositor.

DifferenceCompositor
DifferenceCompositor calculates a difference of two datasets:

>>> from satpy.composites import DifferenceCompositor


>>> compositor = DifferenceCompositor("diffcomp")
>>> composite = compositor([local_scene[10.8], local_scene[12.0]])

FillingCompositor
FillingCompositor:: fills the missing values in three datasets with the values of another dataset::

>>> from satpy.composites import FillingCompositor


>>> compositor = FillingCompositor("fillcomp")
>>> filler = local_scene[0.6]
>>> data_with_holes_1 = local_scene['ch_a']
(continues on next page)

46 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


>>> data_with_holes_2 = local_scene['ch_b']
>>> data_with_holes_3 = local_scene['ch_c']
>>> composite = compositor([filler, data_with_holes_1, data_with_holes_2,
... data_with_holes_3])

PaletteCompositor
PaletteCompositor creates a color version of a single channel categorical dataset using a colormap:

>>> from satpy.composites import PaletteCompositor


>>> compositor = PaletteCompositor("palcomp")
>>> composite = compositor([local_scene['cma'], local_scene['cma_pal']])

The palette should have a single entry for all the (possible) values in the dataset mapping the value to an RGB triplet.
Typically the palette comes with the categorical (e.g. cloud mask) product that is being visualized.
Deprecated since version 0.40: Composites produced with PaletteCompositor will result in an image with mode
RGB when enhanced. To produce an image with mode P, use the SingleBandCompositor with an associated
palettize() enhancement and pass keep_palette=True to save_datasets(). If the colormap is sourced from
the same dataset as the dataset to be palettized, it must be contained in the auxiliary datasets.
Since Satpy 0.40, all built-in composites that used PaletteCompositor have been migrated to use
SingleBandCompositor instead. This has no impact on resulting images unless keep_palette=True is passed
to save_datasets(), but the loaded composite now has only one band (previously three).

DayNightCompositor
DayNightCompositor merges two different composites. The first composite will be placed on the day-side of the
scene, and the second one on the night side. The transition from day to night is done by calculating solar zenith angle
(SZA) weighed average of the two composites. The SZA can optionally be given as third dataset, and if not given, the
angles will be calculated. Four arguments are used to generate the image (default values shown in the example below).
They can be defined when initializing the compositor:

- lim_low (float): lower limit of Sun zenith angle for the


blending of the given channels
- lim_high (float): upper limit of Sun zenith angle for the
blending of the given channels
Together with `lim_low` they define the width
of the blending zone
- day_night (string): "day_night" means both day and night portions will be kept
"day_only" means only day portion will be kept
"night_only" means only night portion will be kept
- include_alpha (bool): This only affects the "day only" or "night only" result.
True means an alpha band will be added to the output image for␣
˓→transparency.

False means the output is a single-band image with undesired␣


˓→pixels being masked out

(replaced with NaNs).

Usage (with default values):

>>> from satpy.composites import DayNightCompositor


>>> compositor = DayNightCompositor("dnc", lim_low=85., lim_high=88., day_night="day_
˓→night")

(continues on next page)

2.9. Composites 47
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


>>> composite = compositor([local_scene['true_color'],
... local_scene['night_fog']])

As above, with day_night flag it is also available to use only a day product or only a night product and mask out (make
transparent) the opposite portion of the image (night or day). The example below provides only a day product with
night portion masked-out:

>>> from satpy.composites import DayNightCompositor


>>> compositor = DayNightCompositor("dnc", lim_low=85., lim_high=88., day_night="day_only
˓→")

>>> composite = compositor([local_scene['true_color'])

By default, the image under day_only or night_only flag will come out with an alpha band to display its transparency.
It could be changed by setting include_alpha to False if there’s no need for that alpha band. In such cases, it is recom-
mended to use it together with fill_value=0 when saving to geotiff to get a single-band image with black background.
In the case below, the image shows its day portion and day/night transition with night portion blacked-out instead of
transparent:

>>> from satpy.composites import DayNightCompositor


>>> compositor = DayNightCompositor("dnc", lim_low=85., lim_high=88., day_night="day_only
˓→", include_alpha=False)

>>> composite = compositor([local_scene['true_color'])

RealisticColors
RealisticColors compositor is a special compositor that is used to create realistic near-true-color composite from
MSG/SEVIRI data:

>>> from satpy.composites import RealisticColors


>>> compositor = RealisticColors("realcols", lim_low=85., lim_high=95.)
>>> composite = compositor([local_scene['VIS006'],
... local_scene['VIS008'],
... local_scene['HRV']])

CloudCompositor
CloudCompositor can be used to threshold the data so that “only” clouds are visible. These composites can be used
as an overlay on top of e.g. static terrain images to show a rough idea where there are clouds. The data are thresholded
using three variables:

- `transition_min`: values below or equal to this are clouds -> opaque white
- `transition_max`: values above this are cloud free -> transparent
- `transition_gamma`: gamma correction applied to clarify the clouds

Usage (with default values):

>>> from satpy.composites import CloudCompositor


>>> compositor = CloudCompositor("clouds", transition_min=258.15,
... transition_max=298.15,
... transition_gamma=3.0)
>>> composite = compositor([local_scene[10.8]])

Support for using this compositor for VIS data, where the values for high/thick clouds tend to be in reverse order to
brightness temperatures, is to be added.

48 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

RatioSharpenedRGB
RatioSharpenedRGB

SelfSharpenedRGB
SelfSharpenedRGB sharpens the RGB with ratio of a band with a strided version of itself.

LuminanceSharpeningCompositor
LuminanceSharpeningCompositor replaces the luminance from an RGB composite with luminance created from
reflectance data. If the resolutions of the reflectance data _and_ of the target area definition are higher than the base
RGB, more details can be retrieved. This compositor can be useful also with matching resolutions, e.g. to highlight
shadowing at cloudtops in colorized infrared composite.

>>> from satpy.composites import LuminanceSharpeningCompositor


>>> compositor = LuminanceSharpeningCompositor("vis_sharpened_ir")
>>> vis_data = local_scene['HRV']
>>> colorized_ir_clouds = local_scene['colorized_ir_clouds']
>>> composite = compositor([vis_data, colorized_ir_clouds])

SandwichCompositor
Similar to LuminanceSharpeningCompositor, SandwichCompositor uses reflectance data to bring out more de-
tails out of infrared or low-resolution composites. SandwichCompositor multiplies the RGB channels with (scaled)
reflectance.

>>> from satpy.composites import SandwichCompositor


>>> compositor = SandwichCompositor("ir_sandwich")
>>> vis_data = local_scene['HRV']
>>> colorized_ir_clouds = local_scene['colorized_ir_clouds']
>>> composite = compositor([vis_data, colorized_ir_clouds])

StaticImageCompositor
StaticImageCompositor can be used to read an image from disk and used just like satellite data, in-
cluding resampling and using as a part of other composites.

>>> from satpy.composites import StaticImageCompositor


>>> compositor = StaticImageCompositor("static_image", filename="image.tif")
>>> composite = compositor()

BackgroundCompositor
BackgroundCompositor can be used to stack two composites together. If the composites don’t have
alpha channels, the background is used where foreground has no data. If foreground has alpha channel,
the alpha values are used to weight when blending the two composites.

>>> from satpy import Scene


>>> from satpy.composites import BackgroundCompositor
>>> compositor = BackgroundCompositor()
>>> clouds = local_scene['ir_cloud_day']
>>> background = local_scene['overview']
>>> composite = compositor([clouds, background])

2.9. Composites 49
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

CategoricalDataCompositor
CategoricalDataCompositor can be used to recategorize categorical data. This is for example useful to combine
comparable categories into a common category. The category remapping from data to composite is done using a
look-up-table (lut):

composite = [[lut[data[0,0]], lut[data[0,1]], lut[data[0,Nj]]],


[[lut[data[1,0]], lut[data[1,1]], lut[data[1,Nj]],
[[lut[data[Ni,0]], lut[data[Ni,1]], lut[data[Ni,Nj]]]

Hence, lut must have a length that is greater than the maximum value in data in orer to avoid an IndexError. Below
is an example on how to create a binary clear-sky/cloud mask from a pseodu cloud type product with six categories
representing clear sky (cat1/cat5), cloudy features (cat2-cat4) and missing/undefined data (cat0):

>>> cloud_type = local_scene['cloud_type'] # 0 - cat0, 1 - cat1, 2 - cat2, 3 - cat3, 4 -


˓→ cat4, 5 - cat5,

# categories: 0 1 2 3 4 5
>>> lut = [np.nan, 0, 1, 1, 1, 0]
>>> compositor = CategoricalDataCompositor('binary_cloud_mask', lut=lut)
>>> composite = compositor([cloud_type]) # 0 - cat1/cat5, 1 - cat2/cat3/cat4, nan - cat0

2.9.2 Creating composite configuration files


To save the custom composite, follow the Component Configuration documentation. Once your component configura-
tion directory is created you can create your custom composite YAML configuration files. Compositors that can be used
for multiple instruments can be placed in the generic $SATPY_CONFIG_PATH/composites/visir.yaml file. Com-
posites that are specific to one sensor should be placed in $SATPY_CONFIG_PATH/composites/<sensor>.yaml.
Custom enhancements for your new composites can be stored in $SATPY_CONFIG_PATH/enhancements/generic.
yaml or $SATPY_CONFIG_PATH/enhancements/<sensor>.yaml.
With that, you should be able to load your new composite directly. Example configuration files can be found in the
satpy repository as well as a few simple examples below.

Simple RGB composite


This is the overview composite shown in the first code example above using GenericCompositor:

sensor_name: visir

composites:
overview:
compositor: !!python/name:satpy.composites.GenericCompositor
prerequisites:
- 0.6
- 0.8
- 10.8
standard_name: overview

For an instrument specific version (here MSG/SEVIRI), we should use the channel _names_ instead of wavelengths.
Note also that the sensor_name is now combination of visir and seviri, which means that it extends the generic visir
composites:

sensor_name: visir/seviri

composites:
(continues on next page)

50 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)

overview:
compositor: !!python/name:satpy.composites.GenericCompositor
prerequisites:
- VIS006
- VIS008
- IR_108
standard_name: overview

In the following examples only the composite receipes are shown, and the header information (sensor_name, compos-
ites) and intendation needs to be added.

Using modifiers
In many cases the basic datasets that go into the composite need to be adjusted, e.g. for Solar zenith angle normalization.
These modifiers can be applied in the following way:

overview:
compositor: !!python/name:satpy.composites.GenericCompositor
prerequisites:
- name: VIS006
modifiers: [sunz_corrected]
- name: VIS008
modifiers: [sunz_corrected]
- IR_108
standard_name: overview

Here we see two changes:


1. channels with modifiers need to have either name or wavelength added in front of the channel name or wavelength,
respectively
2. a list of modifiers attached to the dictionary defining the channel
The modifier above is a built-in that normalizes the Solar zenith angle to Sun being directly at the zenith.
More examples can be found in Satpy source code directory satpy/etc/composites.
See the modifiers documentation for more information on available built-in modifiers.

Using other composites


Often it is handy to use other composites as a part of the composite. In this example we have one composite that relies
on solar channels on the day side, and another for the night side:

natural_with_night_fog:
compositor: !!python/name:satpy.composites.DayNightCompositor
prerequisites:
- natural_color
- night_fog
standard_name: natural_with_night_fog

This compositor has three additional keyword arguments that can be defined (shown with the default values, thus
identical result as above):

2.9. Composites 51
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

natural_with_night_fog:
compositor: !!python/name:satpy.composites.DayNightCompositor
prerequisites:
- natural_color
- night_fog
lim_low: 85.0
lim_high: 88.0
day_night: "day_night"
standard_name: natural_with_night_fog

Defining other composites in-line


It is also possible to define sub-composites in-line. This example is the built-in airmass composite:

airmass:
compositor: !!python/name:satpy.composites.GenericCompositor
prerequisites:
- compositor: !!python/name:satpy.composites.DifferenceCompositor
prerequisites:
- wavelength: 6.2
- wavelength: 7.3
- compositor: !!python/name:satpy.composites.DifferenceCompositor
prerequisites:
- wavelength: 9.7
- wavelength: 10.8
- wavelength: 6.2
standard_name: airmass

Using a pre-made image as a background


Below is an example composite config using StaticImageCompositor, DayNightCompositor, CloudCompositor
and BackgroundCompositor to show how to create a composite with a blended day/night imagery as background for
clouds. As the images are in PNG format, and thus not georeferenced, the name of the area definition for the background
images are given. When using GeoTIFF images the area parameter can be left out.

á Note

The background blending uses the current time if there is no timestamps in the image filenames.

clouds_with_background:
compositor: !!python/name:satpy.composites.BackgroundCompositor
standard_name: clouds_with_background
prerequisites:
- ir_cloud_day
- compositor: !!python/name:satpy.composites.DayNightCompositor
prerequisites:
- static_day
- static_night

static_day:
compositor: !!python/name:satpy.composites.StaticImageCompositor
(continues on next page)

52 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


standard_name: static_day
filename: /path/to/day_image.png
area: euro4

static_night:
compositor: !!python/name:satpy.composites.StaticImageCompositor
standard_name: static_night
filename: /path/to/night_image.png
area: euro4

To ensure that the images aren’t auto-stretched and possibly altered, the following should be added to enhancement
config (assuming 8-bit image) for both of the static images:

static_day:
standard_name: static_day
operations:
- name: stretch
method: !!python/name:satpy.enhancements.stretch
kwargs:
stretch: crude
min_stretch: [0, 0, 0]
max_stretch: [255, 255, 255]

2.9.3 Enhancing the images


After the composite is defined and created, it needs to be converted to an image. To do this, it is necessary to describe
how the data values are mapped to values stored in the image format. This procedure is called stretching, and in
Satpy it is implemented by enhancements.
The first step is to convert the composite to an XRImage object:

>>> from satpy.writers import to_image


>>> img = to_image(composite)

Now it is possible to apply enhancements available in the class:

>>> img.invert([False, False, True])


>>> img.stretch("linear")
>>> img.gamma(1.7)

And finally either show or save the image:

>>> img.show()
>>> img.save('image.tif')

As pointed out in the composite section, it is better to define frequently used enhancements in configuration files under
$SATPY_CONFIG_PATH/enhancements/. The enhancements can either be in generic.yaml or instrument-specific
file (e.g., seviri.yaml).
The above enhancement can be written (with the headers necessary for the file) as:

enhancements:
overview:
standard_name: overview
(continues on next page)

2.9. Composites 53
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


operations:
- name: inverse
method: !!python/name:satpy.enhancements.invert
args: [False, False, True]
- name: stretch
method: !!python/name:satpy.enhancements.stretch
kwargs:
stretch: linear
- name: gamma
method: !!python/name:satpy.enhancements.gamma
kwargs:
gamma: [1.7, 1.7, 1.7]

* Warning

If you define a composite with no matching enhancement, Satpy will by default apply the stretch_linear()
enhancement with cutoffs of 0.5% and 99.5%. If you want no enhancement at all (maybe you are enhancing a
composite based on DayNightCompositor where the components have their own enhancements defined), you can
use the image_ready standard name. If this is not a suitable standard name, you can also define an enhancement
that does nothing:
enhancements:
day_x:
standard_name: day_x operations: []
It is recommended to define an enhancement even if you intend to use the default, in case the default should change
in future versions of Satpy.

More examples can be found in Satpy source code directory satpy/etc/enhancements/generic.yaml.


See the Enhancements documentation for more information on available built-in enhancements.

2.9.4 Modifiers
Modifiers are filters applied to datasets prior to computing composites. They take at least one input (a dataset) and have
exactly one output (the same dataset, modified). They can take additional input datasets or parameters.
Modifiers are defined in composites files in etc/composites within $SATPY_CONFIG_PATH.
The instruction to use a certain modifier can be contained in a composite definition or in a reader definition. If it is
defined in a composite definition, it is applied upon constructing the composite.
When using built-in composites, Satpy users do not need to understand the mechanics of modifiers, as they are applied
automatically. The Composites documentation contains information on how to apply modifiers when creating new
composites.
Some readers read data where certain modifiers are already applied. Here, the reader definition will refer to the Satpy
modifier. This marking adds the modifier to the metadata to prevent it from being applied again upon composite
calculation.
Commonly used modifiers are listed in the table below. Further details on those modifiers can be found in the linked
API documentation.

54 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Table 3: Commonly used modifiers


Label Class Description
sunz_corrected Modifies solar channels for the solar zenith angle to pro-
SunZenithCorrector
vide smoother images.
effective_solar_pathlength_corrected Modifies solar channels for atmospheric path length of so-
EffectiveSolarPathLengthCorrector
lar radiation.
nir_reflectance NIRReflectance Calculates reflective part of channels at the edge of solar
and terrestrial radiation (3.7 µm or 3.9 µm).
nir_emissive Calculates emissive part of channels at the edge of solar
NIREmissivePartFromReflectance
and terrestrial radiation (3.7 µm or 3.9 µm)
rayleigh_corrected Modifies solar channels to filter out the visual impact of
PSPRayleighReflectance
rayleigh scattering.

A complete list can be found in the etc/composites source code and in the modifiers module documentation.

Parallax correction

* Warning

The Satpy parallax correction is experimental and subject to change.

Since version 0.37 (mid 2022), Satpy has included a modifier for parallax correction, implemented in the
ParallaxCorrectionModifier class. This modifier is important for some applications, but not applied by default to
any Satpy datasets or composites, because it can be applied to any input dataset and used with any source of (cloud top)
height. Therefore, users wishing to apply the parallax correction semi-automagically have to define their own modifier
and then apply that modifier for their datasets. An example is included with the ParallaxCorrectionModifier API
documentation. Note that Satpy cannot apply modifiers to composites, so users wishing to apply parallax correction to
a composite will have to use a lower level API or duplicate an existing composite recipe to use modified inputs.
The parallax correction is directly calculated from the cloud top height. Information on satellite position is obtained
from cloud top height metadata. If no orbital parameters are present in the cloud top height metadata, Satpy will attempt
to calculate orbital parameters from the platform name and start time. The backup calculation requires skyfield and
astropy to be installed. If the metadata include neither orbital parameters nor platform name and start time, parallax
calculation will fail. Because the cloud top height metadata are used, it is essential that the cloud top height data are
derived from the same platform as the measurements to be corrected are taken by.
The parallax error moves clouds away from the observer. Therefore, the parallax correction shifts clouds in the direction
of the observer. The space left behind by the cloud will be filled with fill values. As the cloud is shifted toward the
observer, it may occupy less pixels than before, because pixels closer to the observer have a smaller surface area. It can
also be deformed (a “rectangular” cloud may get the shape of a parallelogram).
The utility function get_surface_parallax_displacement() allows to calculate the magnitude of the parallax
error. For a cloud with a cloud top height of 10 km:
The parallax correction is currently experimental and subject to change. Although it is covered by tests, there may be
cases that yield unexpected or incorrect results. It does not yet perform any checks that the provided (cloud top) height
covers the area of the dataset for which the parallax correction shall be applied.
For more general background information and web routines related to the parallax effect, see also this collection at the
CIMSS website <https://cimss.ssec.wisc.edu/goes/webapps/parallax/>_.
Added in version 0.37.

2.9. Composites 55
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Fig. 1: SEVIRI view of southern Sweden, 2021-11-30 12:15Z, without parallax correction. This is the natural_color
composite as built into Satpy.

56 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Fig. 2: The same satellite view with parallax correction. The most obvious change are the gaps left behind by the
parallax correction, shown as black pixels. Otherwise it shows that clouds have “moved” south-south-west in the
direction of the satellite. To view the images side-by-side or alternating, look at the figshare page

2.9. Composites 57
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Fig. 3: Magnitude of the parallax error for a fictitious cloud with a cloud top height of 10 km for the GOES-East
(GOES-16) full disc.

58 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

2.10 Resampling
Resampling in Satpy.
Satpy provides multiple resampling algorithms for resampling geolocated data to uniform projected grids. The easiest
way to perform resampling in Satpy is through the Scene object’s resample() method. Additional utility functions
are also available to assist in resampling data. Below is more information on resampling with Satpy as well as links to
the relevant API documentation for available keyword arguments.

2.10.1 Resampling algorithms

Table 4: Available Resampling Algorithms


Resampler Description Related
nearest Nearest Neighbor KDTreeResampler
ewa Elliptical Weighted Averaging DaskEWAResampler
ewa_legacy Elliptical Weighted Averaging (Legacy) LegacyDaskEWAResampler
native Native NativeResampler
bilinear Bilinear BilinearResampler
bucket_avg Average Bucket Resampling BucketAvg
bucket_sum Sum Bucket Resampling BucketSum
bucket_count Count Bucket Resampling BucketCount
bucket_fraction Fraction Bucket Resampling BucketFraction
gradient_search Gradient Search Resampling create_gradient_search_resampler()

The resampling algorithm used can be specified with the resampler keyword argument and defaults to nearest:

>>> scn = Scene(...)


>>> euro_scn = scn.resample('euro4', resampler='nearest')

* Warning

Some resampling algorithms expect certain forms of data. For example, the EWA resampling expects polar-orbiting
swath data and prefers if the data can be broken in to “scan lines”. See the API documentation for a specific
algorithm for more information.

2.10.2 Resampling for comparison and composites


While all the resamplers can be used to put datasets of different resolutions on to a common area, the ‘native’ resampler
is designed to match datasets to one resolution in the dataset’s original projection. This is extremely useful when
generating composites between bands of different resolutions.

>>> new_scn = scn.resample(resampler='native')

By default this resamples to the highest resolution area (smallest footprint per pixel) shared between the loaded
datasets. You can easily specify the lowest resolution area:

>>> new_scn = scn.resample(scn.coarsest_area(), resampler='native')

Providing an area that is neither the minimum or maximum resolution area may work, but behavior is currently unde-
fined.

2.10. Resampling 59
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

2.10.3 Caching for geostationary data


Satpy will do its best to reuse calculations performed to resample datasets, but it can only do this for the current
processing and will lose this information when the process/script ends. Some resampling algorithms, like nearest
and bilinear, can benefit by caching intermediate data on disk in the directory specified by cache_dir and using it
next time. This is most beneficial with geostationary satellite data where the locations of the source data and the target
pixels don’t change over time.

>>> new_scn = scn.resample('euro4', cache_dir='/path/to/cache_dir')

See the documentation for specific algorithms to see availability and limitations of caching for that algorithm.

2.10.4 Create custom area definition


See pyresample.geometry.AreaDefinition for information on creating areas that can be passed to the resample
method:

>>> from pyresample.geometry import AreaDefinition


>>> my_area = AreaDefinition(...)
>>> local_scene = scn.resample(my_area)

2.10.5 Resize area definition in pixels


Sometimes you may want to create a small image with fixed size in pixels. For example, to create an image of (y, x)
pixels :

>>> small_scn = scn.resample(scn.finest_area().copy(height=y, width=x), resampler=


˓→"nearest")

* Warning

Be aware that resizing with native resampling (resampler="native") only works if the new size is an integer
factor of the original input size. For example, multiplying the size by 2 or dividing the size by 2. Multiplying by
1.5 would not be allowed.

2.10.6 Create dynamic area definition


See pyresample.geometry.DynamicAreaDefinition for more information.
Examples coming soon. . .

2.10.7 Store area definitions


Area definitions can be saved to a custom YAML file (see pyresample’s writing to disk) and loaded using pyresample’s
utility methods (pyresample’s loading from disk):

>>> from pyresample import load_area


>>> my_area = load_area('my_areas.yaml', 'my_area')

Or using satpy.resample.get_area_def(), which will search through all areas.yaml files in your
SATPY_CONFIG_PATH:

>>> from satpy.resample import get_area_def


>>> area_eurol = get_area_def("eurol")

60 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

For examples of area definitions, see the file etc/areas.yaml that is included with Satpy and where all the area
definitions shipped with Satpy are defined. The section below gives an overview of these area definitions.

2.10.8 Area definitions included in Satpy

Table 5: Area Definitions


Name Description
msg_seviri_fes_3km MSG SEVIRI Full Earth Scanning service area definition with 3 km resolution
msg_seviri_fes_1km MSG SEVIRI Full Earth Scanning service area definition with 1 km resolution
msg_seviri_rss_3km MSG SEVIRI Rapid Scanning Service area definition with 3 km resolution
msg_seviri_rss_1km MSG SEVIRI Rapid Scanning Service area definition with 1 km resolution
msg_seviri_iodc_3km MSG SEVIRI Indian Ocean Data Coverage service area definition with 3 km resolution
msg_seviri_iodc_1km MSG SEVIRI Indian Ocean Data Coverage service area definition with 1 km resolution
msg_seviri_fes_9km MSG SEVIRI Full Earth Scanning service area definition with 9 km resolution
msg_seviri_rss_9km MSG SEVIRI Rapid Scanning Service area definition with 9 km resolution
msg_seviri_iodc_9km MSG SEVIRI Indian Ocean Data Coverage service area definition with 9 km resolution
msg_seviri_fes_9km_ext MSG SEVIRI Full Earth Scanning service area definition with 9 km resolution (extended outside origin
msg_seviri_rss_9km_ext MSG SEVIRI Rapid Scanning Service area definition with 9 km resolution (extended outside original 3
msg_seviri_iodc_9km_ext MSG SEVIRI Indian Ocean Data Coverage service area definition with 9 km resolution (extended outsid
msg_seviri_fes_48km MSG SEVIRI Full Earth Scanning service area definition with 48 km resolution
msg_seviri_rss_48km MSG SEVIRI Rapid Scanning Service area definition with 48 km resolution
msg_seviri_iodc_48km MSG SEVIRI Indian Ocean Data Coverage service area definition with 48 km resolution
himawari_ahi_fes_500m Himawari-8/9 full disk area definition at 500m resolution
himawari_ahi_fes_1km Himawari-8/9 full disk area definition at 1km resolution
himawari_ahi_fes_2km Himawari-8/9 full disk area definition at 2km resolution
EuropeCanary Northern disk MSG image 0 degrees
EastEurope Eastern part of Northern disk MSG image 0 degrees
AfHorn_geos Eastern disk MSG image 0 degrees
SouthAmerica_geos Lower West part of Southern disk MSG image 0 degrees
mtg_fci_fdss_500m MTG FCI Full Disk Scanning Service area definition with 500 m SSP resolution
mtg_fci_fdss_1km MTG FCI Full Disk Scanning Service area definition with 1 km SSP resolution
mtg_fci_fdss_2km MTG FCI Full Disk Scanning Service area definition with 2 km SSP resolution
mtg_fci_fdss_4km MTG FCI Full Disk Scanning Service area definition with 4 km SSP resolution
mtg_fci_fdss_6km MTG FCI Full Disk Scanning Service area definition with 6 km SSP resolution
mtg_fci_fdss_32km MTG FCI Full Disk Scanning Service area definition with 32 km SSP resolution
goes_east_abi_f_500m GOES East ABI Full Disk at 500 m SSP resolution
goes_east_abi_f_1km GOES East ABI Full Disk at 1 km SSP resolution
goes_east_abi_f_2km GOES East ABI Full Disk at 2 km SSP resolution
goes_west_abi_f_500m GOES West ABI Full Disk at 500 m SSP resolution
goes_west_abi_f_1km GOES West ABI Full Disk at 1 km SSP resolution
goes_west_abi_f_2km GOES West ABI Full Disk at 2 km SSP resolution
goes_east_abi_c_500m GOES East ABI CONUS at 500 m SSP resolution
goes_east_abi_c_1km GOES East ABI CONUS at 1 km SSP resolution
goes_east_abi_c_2km GOES East ABI CONUS at 2 km SSP resolution
goes_west_abi_p_500m GOES West ABI PACUS at 500 m resolution
goes_west_abi_p_1km GOES West ABI PACUS at 1 km SSP resolution
goes_west_abi_p_2km GOES West ABI PACUS at 2 km resolution
australia australia
mali mali
mali_eqc mali
sve Sweden and baltic sea
brazil2 brazil, platecarree

2.10. Resampling 61
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Table 5 – continued from previous page


Name Description
sudeste sudeste, platecarree
SouthAmerica_flat South America flat
south_america south_america, platecarree
brazil brazil, platecarree
worldeqc3km70 World in 3km, platecarree
worldeqc30km70 World in 3km, platecarree
worldeqc3km73 World in 3km, platecarree
worldeqc3km World in 3km, platecarree
worldeqc30km World in 3km, platecarree
libya libya area
phil kuwait area
phil_small kuwait area
kuwait kuwait area
afghanistan Afghanistan
maspalomas Western Africa and Canary Islands
afhorn_merc Africa horn 3km resolution
spain Spain
germ Germany
germ2 Germany
euro4 Euro 4km area - Europe
euro1 Euro 4km area - Europe
scan Scandinavia
scan2 Scandinavia - 2km area
scan1 Scandinavia - 1km area
scan500m Scandinavia - 500m area
mesanX Mesan-X rotated lon/lat 1.8km
mesanE Europe Mesan rotated lon/lat 1.8km
baws BAWS
eurotv Europe TV - 6.2x5.0km
eurotv4n Europe TV4 - 4.1x4.1km
eurol Euro 3.0km area - Europe
eurol1 Euro 3.0km area - Europe
scanl Scandinavia - Large
euron1 Northern Europe - 1km
euron0250 Northern Europe - 1km
nsea North Baltic Sea
ssea South Baltic Sea
nsea250 North Baltic Sea
ssea250 South Baltic Sea
bsea250 South Baltic Sea
test250 South Baltic Sea
bsea1000 South Baltic Sea
euro Euro area - Europe
baltrad_lambert Baltrad Lambert
eport eport
eport1 eport
eport10 eport reduced resolution
eport4 eport reduced resolution
eport2 eport reduced resolution
npp_sample_m North America - NPP sample data - M-bands

62 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Table 5 – continued from previous page


Name Description
arctic_europe_1km Arctic and Europe
arctic_europe_9km Arctic and Europe
sswe Southern Sweden
nswe Northern Sweden
sval Svalbard
ease_sh Antarctic EASE grid
ease_nh Arctic EASE grid
barents_sea Barents and Greenland seas
antarctica Antarctica - 1km
arctica arctica - 1km
euroasia Euroasia - Global 1km USGS Landuse database
euroasia_10km Euroasia - Global 1km USGS Landuse database
euroasia_asia Euroasia - optimised for Asia - Global 1km USGS Landuse database
euroasia_asia_10km Euroasia - optimised for Asia - Global 1km USGS Landuse database
australia_pacific Austalia/Pacific - Global 1km USGS Landuse database
australia_pacific_10km Austalia/Pacific - Global 1km USGS Landuse database
africa Africa - Global 1km USGS Landuse database
africa_10km Africa - Global 1km USGS Landuse database
southamerica_laea South America - Global 1km USGS Landuse database
southamerica_10km South America - Global 1km USGS Landuse database
northamerica North America - Global 1km USGS Landuse database
northamerica_10km North America - Global 1km USGS Landuse database
romania Romania - 3km
stere_asia_test stere
bocheng_test stere
nsper_swe nsper_swe
new_bsea250 new_bsea250
scanice Scandinavia and Iceland
baws250 BAWS, 250m resolution
moll moll
robinson robinson
met07globe Full disk IODC image 57 degrees
met09globe Cropped disk MSG image 0 degrees
met09globeFull Full disk MSG image 0 degrees
seviri_0deg Full disk MSG image 0 degrees
seviri_iodc Full disk MSG image 41.5 degrees
msg_resample_area Full disk MSG image 20.75 degrees
EPSG_4326_36000x18000 Global equal latitude/longitude grid at 0.01 degree resolution
EPSG_4326_7200x3600 Global equal latitude/longitude grid at 0.05 degree resolution
EPSG_4326_3600x1800 Global equal latitude/longitude grid at 0.1 degree resolution
EPSG_4326_1440x720 Global equal latitude/longitude grid at 0.25 degree resolution
EPSG_4326_720x360 Global equal latitude/longitude grid at 0.5 degree resolution
EPSG_4326_360x180 Global equal latitude/longitude grid at 1 degree resolution

msg_seviri_fes_3km
msg_seviri_fes_1km
msg_seviri_rss_3km
msg_seviri_rss_1km

2.10. Resampling 63
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

msg_seviri_iodc_3km
msg_seviri_iodc_1km
msg_seviri_fes_9km
msg_seviri_rss_9km
msg_seviri_iodc_9km
msg_seviri_fes_9km_ext
msg_seviri_rss_9km_ext
msg_seviri_iodc_9km_ext
msg_seviri_fes_48km
msg_seviri_rss_48km
msg_seviri_iodc_48km
himawari_ahi_fes_500m
himawari_ahi_fes_1km
himawari_ahi_fes_2km
EuropeCanary
EastEurope
AfHorn_geos
SouthAmerica_geos
mtg_fci_fdss_500m
mtg_fci_fdss_1km
mtg_fci_fdss_2km
mtg_fci_fdss_4km
mtg_fci_fdss_6km
mtg_fci_fdss_32km
goes_east_abi_f_500m
goes_east_abi_f_1km
goes_east_abi_f_2km
goes_west_abi_f_500m
goes_west_abi_f_1km
goes_west_abi_f_2km
goes_east_abi_c_500m
goes_east_abi_c_1km
goes_east_abi_c_2km
goes_west_abi_p_500m
goes_west_abi_p_1km

64 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

goes_west_abi_p_2km
australia
mali
mali_eqc
sve
brazil2
sudeste
SouthAmerica_flat
south_america
brazil
worldeqc3km70
worldeqc30km70
worldeqc3km73
worldeqc3km
worldeqc30km
libya
phil
phil_small
kuwait
afghanistan
maspalomas
afhorn_merc
spain
germ
germ2
euro4
euro1
scan
scan2
scan1
scan500m
mesanX
mesanE
baws
eurotv

2.10. Resampling 65
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

eurotv4n
eurol
eurol1
scanl
euron1
euron0250
nsea
ssea
nsea250
ssea250
bsea250
test250
bsea1000
euro
baltrad_lambert
eport
eport1
eport10
eport4
eport2
npp_sample_m
arctic_europe_1km
arctic_europe_9km
sswe
nswe
sval
ease_sh
ease_nh
barents_sea
antarctica
arctica
euroasia
euroasia_10km
euroasia_asia
euroasia_asia_10km

66 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

australia_pacific
australia_pacific_10km
africa
africa_10km
southamerica_laea
southamerica_10km
northamerica
northamerica_10km
romania
stere_asia_test
bocheng_test
nsper_swe
new_bsea250
scanice
baws250
moll
robinson
met07globe
met09globe
met09globeFull
seviri_0deg
seviri_iodc
msg_resample_area
EPSG_4326_36000x18000
EPSG_4326_7200x3600
EPSG_4326_3600x1800
EPSG_4326_1440x720
EPSG_4326_720x360
EPSG_4326_360x180

2.11 Enhancements
2.11.1 Built-in enhancement methods
stretch
The most basic operation is to stretch the image so that the data fits to the output format. There are many different ways
to stretch the data, which are configured by giving them in kwargs dictionary, like in the example above. The default,
if nothing else is defined, is to apply a linear stretch. For more details, see enhancing the images.

2.11. Enhancements 67
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

linear

As the name suggests, linear stretch converts the input values to output values in a linear fashion. By default, 5% of
the data is cut on both ends of the scale, but these can be overridden with cutoffs=(0.005, 0.005) argument:

- name: stretch
method: !!python/name:satpy.enhancements.stretch
kwargs:
stretch: linear
cutoffs: [0.003, 0.005]

á Note

This enhancement is currently not optimized for dask because it requires getting minimum/maximum information
for the entire data array.

crude

The crude stretching is used to limit the input values to a certain range by clipping the data. This is followed by a linear
stretch with no cutoffs specified (see above). Example:

- name: stretch
method: !!python/name:satpy.enhancements.stretch
kwargs:
stretch: crude
min_stretch: [0, 0, 0]
max_stretch: [100, 100, 100]

It is worth noting that this stretch can also be used to _invert_ the data by giving larger values to the min_stretch than
to max_stretch.

histogram

gamma
invert
piecewise_linear_stretch
Use numpy.interp() to linearly interpolate data to a new range. See satpy.enhancements.
piecewise_linear_stretch() for more information and examples.

cira_stretch
Logarithmic stretch based on a cira recipe.

reinhard_to_srgb
Stretch method based on the Reinhard algorithm, using luminance.
The function includes conversion to sRGB colorspace.
Reinhard, Erik & Stark, Michael & Shirley, Peter & Ferwerda, James. (2002). Photographic Tone Repro-
duction For Digital Images. ACM Transactions on Graphics. :doi: 21. 10.1145/566654.566575

68 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

lookup
colorize
The colorize enhancement can be used to map scaled/calibrated physical values to colors. One or several standard
Trollimage color maps may be used as in the example here:

- name: colorize
method: !!python/name:satpy.enhancements.colorize
kwargs:
palettes:
- {colors: spectral, min_value: 193.15, max_value: 253.149999}
- {colors: greys, min_value: 253.15, max_value: 303.15}

In addition, it is also possible to add a linear alpha channel to the colormap, as in the following example:
- name: colorize
method: !!python/name:satpy.enhancements.colorize
kwargs:
palettes:
- {colors: ylorrd, min_alpha: 100, max_alpha: 255}

It is also possible to provide your own custom defined color mapping by specifying a list of RGB values and the
corresponding min and max values between which to apply the colors. This is for instance a common use case for
Sea Surface Temperature (SST) imagery, as in this example with the EUMETSAT Ocean and Sea Ice SAF (OSISAF)
GHRSST product:
- name: osisaf_sst
method: !!python/name:satpy.enhancements.colorize
kwargs:
palettes:
- colors: [
[255, 0, 255],
[195, 0, 129],
[129, 0, 47],
[195, 0, 0],
[255, 0, 0],
[236, 43, 0],
[217, 86, 0],
[200, 128, 0],
[211, 154, 13],
[222, 180, 26],
[233, 206, 39],
[244, 232, 52],
[255.99609375, 255.99609375, 63.22265625],
[203.125, 255.99609375, 52.734375],
[136.71875, 255.99609375, 27.34375],
[0, 255.99609375, 0],
[0, 207.47265625, 0],
[0, 158.94921875, 0],
[0, 110.42578125, 0],
[0, 82.8203125, 63.99609375],
[0, 55.21484375, 127.9921875],
[0, 27.609375, 191.98828125],
[0, 0, 255.99609375],
(continues on next page)

2.11. Enhancements 69
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


[100.390625, 100.390625, 255.99609375],
[150.5859375, 150.5859375, 255.99609375]]
min_value: 296.55
max_value: 273.55

The RGB color values will be interpolated to give a smooth result. This is contrary to using the palettize enhancement.
If the source dataset already defines a palette, this can be applied directly. This requires that the palette is listed as an
auxiliary variable and loaded as such by the reader. To apply such a palette directly, pass the dataset keyword. For
example:

- name: colorize
method: !!python/name:satpy.enhancements.colorize
kwargs:
palettes:
- dataset: ctth_alti_pal
color_scale: 255

* Warning

If the source data have a valid range defined, one should not define min_value and max_value in the enhancement
configuration! If those are defined and differ from the values in the valid range, the colors will be wrong.

The above examples are just three different ways to apply colors to images with Satpy. There is a wealth of other options
for how to declare a colormap, please see create_colormap() for more inspiration.

palettize
three_d_effect
The three_d_effect enhancement adds an 3D look to an image by convolving with a 3x3 kernel. User can adjust the
strength of the effect by determining the weight (default: 1.0). Example:

- name: 3d_effect
method: !!python/name:satpy.enhancements.three_d_effect
kwargs:
weight: 1.0

btemp_threshold

2.12 Writing
Satpy makes it possible to save datasets in multiple formats, with writers designed to save in a given format. For details
on additional arguments and features available for a specific Writer see the table below. Most use cases will want to
save datasets using the save_datasets() method:

>>> scn.save_datasets(writer="simple_image")

The writer parameter defaults to using the geotiff writer. One common parameter across almost all Writers is
filename and base_dir to help automate saving files with custom filenames:

70 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

>>> scn.save_datasets(
... filename="{name}_{start_time:%Y%m%d_%H%M%S}.tif",
... base_dir="/tmp/my_ouput_dir")

Changed in version 0.10: The file_pattern keyword argument was renamed to filename to match the save_dataset
method”s keyword argument.

Table 6: Satpy Writers


Description Writer name Status Examples
GeoTIFF geotiff Nominal
Simple Image (PNG, JPEG, etc) simple_image Nominal
NinJo TIFF (using pyninjotiff ninjotiff Deprecated from NinJo 7 (use ninjo-
package) geotiff)
NetCDF (Standard CF) cf Beta Usage
example
AWIPS II Tiled NetCDF4 awips_tiled Beta
GeoTIFF with NinJo tags (from NinJo ninjogeotiff Beta
7)

2.12.1 Available Writers


To get a list of available writers use the available_writers function:

>>> from satpy import available_writers


>>> available_writers()

2.12.2 Colorizing and Palettizing using user-supplied colormaps

á Note

In the future this functionality will be added to the Scene object.

It is possible to create single channel “composites” that are then colorized using users’ own colormaps. The colormaps
are Numpy arrays with shape (num, 3), see the example below how to create the mapping file(s).
This example creates a 2-color colormap, and we interpolate the colors between the defined temperature ranges. Beyond
those limits the image clipped to the specified colors.

>>> import numpy as np


>>> from satpy.composites import BWCompositor
>>> from satpy.enhancements import colorize
>>> from satpy.writers import to_image
>>> arr = np.array([[0, 0, 0], [255, 255, 255]])
>>> np.save("/tmp/binary_colormap.npy", arr)
>>> compositor = BWCompositor("test", standard_name="colorized_ir_clouds")
>>> composite = compositor((local_scene[10.8], ))
>>> img = to_image(composite)
>>> kwargs = {"palettes": [{"filename": "/tmp/binary_colormap.npy",
... "min_value": 223.15, "max_value": 303.15}]}
>>> colorize(img, **kwargs)
>>> img.show()

2.12. Writing 71
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Similarly it is possible to use discrete values without color interpolation using palettize() instead of colorize().
You can define several colormaps and ranges in the palettes list and they are merged together. See trollimage docu-
mentation for more information how colormaps and color ranges are merged.
The above example can be used in enhancements YAML config like this:

hot_or_cold:
standard_name: hot_or_cold
operations:
- name: colorize
method: &colorizefun !!python/name:satpy.enhancements.colorize ''
kwargs:
palettes:
- {filename: /tmp/binary_colormap.npy, min_value: 223.15, max_value: 303.15}

2.12.3 Saving multiple Scenes in one go


As mentioned earlier, it is possible to save Scene datasets directly using save_datasets() method. However, some-
times it is beneficial to collect more Scenes together and process and save them all at once.

>>> from satpy.writers import compute_writer_results


>>> res1 = scn.save_datasets(filename="/tmp/{name}.png",
... writer="simple_image",
... compute=False)
>>> res2 = scn.save_datasets(filename="/tmp/{name}.tif",
... writer="geotiff",
... compute=False)
>>> results = [res1, res2]
>>> compute_writer_results(results)

2.12.4 Adding text to images


Satpy, via pydecorate, can add text to images when they’re being saved. To use this functionality, you must create a
dictionary describing the text to be added.

>>> decodict = {"decorate": [{"text": {"txt": "my_text",


... "align": {"top_bottom": "top", "left_right": "left
˓→"},

... "font": <path_to_font>,


... "font_size": 48,
... "line": "white",
... "bg_opacity": 255,
... "bg": "black",
... "height": 30,
... }}]}

Where my_text is the text you wish to add and <path_to_font> is the location of the font file you wish to use, often in
/usr/share/fonts/
This dictionary can then be passed to the save_dataset() or save_datasets() command.

>>> scene.save_dataset(my_dataset, writer="simple_image", fill_value=False,


... decorate=decodict)

72 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

2.13 MultiScene (Experimental)


Scene objects in Satpy are meant to represent a single geographic region at a specific single instant in time or range of
time. This means they are not suited for handling multiple orbits of polar-orbiting satellite data, multiple time steps of
geostationary satellite data, or other special data cases. To handle these cases Satpy provides the MultiScene class. The
below examples will walk through some basic use cases of the MultiScene.

* Warning

These features are still early in development and may change overtime as more user feedback is received and more
features added.

2.13.1 MultiScene Creation


There are two ways to create a MultiScene. Either by manually creating and providing the scene objects,

>>> from satpy import Scene, MultiScene


>>> from glob import glob
>>> scenes = [
... Scene(reader='viirs_sdr', filenames=glob('/data/viirs/day_1/*t180*.h5')),
... Scene(reader='viirs_sdr', filenames=glob('/data/viirs/day_2/*t180*.h5'))
... ]
>>> mscn = MultiScene(scenes)
>>> mscn.load(['I04'])

or by using the MultiScene.from_files class method to create a MultiScene from a series of files. This uses the
group_files() utility function to group files by start time or other filenames parameters.

>>> from satpy import MultiScene


>>> from glob import glob
>>> mscn = MultiScene.from_files(glob('/data/abi/day_1/*C0[12]*.nc'), reader='abi_l1b')
>>> mscn.load(['C01', 'C02'])

Added in version 0.12: The from_files and group_files functions were added in Satpy 0.12. See below for an
alternative solution.
For older versions of Satpy we can manually create the Scene objects used. The glob() function and for loops are used
to group files into Scene objects that, if used individually, could load the data we want. The code below is equivalent
to the from_files code above:

>>> from satpy import Scene, MultiScene


>>> from glob import glob
>>> scene_files = []
>>> for time_step in ['1800', '1810', '1820', '1830']:
... scene_files.append(glob('/data/abi/day_1/*C0[12]*s???????{}*.nc'.format(time_
˓→step)))

>>> scenes = [
... Scene(reader='abi_l1b', filenames=files) for files in sorted(scene_files)
... ]
>>> mscn = MultiScene(scenes)
>>> mscn.load(['C01', 'C02'])

2.13. MultiScene (Experimental) 73


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

2.13.2 Blending Scenes in MultiScene


Scenes contained in a MultiScene can be combined in different ways.

Stacking scenes
The code below uses the blend() method of the MultiScene object to stack two separate orbits from a VIIRS sensor.
By default the blend method will use the stack() function which uses the first dataset as the base of the image and
then iteratively overlays the remaining datasets on top.

>>> from satpy import Scene, MultiScene


>>> from glob import glob
>>> from pyresample.geometry import AreaDefinition
>>> my_area = AreaDefinition(...)
>>> scenes = [
... Scene(reader='viirs_sdr', filenames=glob('/data/viirs/day_1/*t180*.h5')),
... Scene(reader='viirs_sdr', filenames=glob('/data/viirs/day_2/*t180*.h5'))
... ]
>>> mscn = MultiScene(scenes)
>>> mscn.load(['I04'])
>>> new_mscn = mscn.resample(my_area)
>>> blended_scene = new_mscn.blend()
>>> blended_scene.save_datasets()

Stacking scenes using weights

It is also possible to blend scenes together in a bit more sophisticated manner using pixel based weighting instead of just
stacking the scenes on top of each other as described above. This can for instance be useful to make a cloud parameter
(cover, height, etc) composite combining cloud parameters derived from both geostationary and polar orbiting satellite
data close in time and over a given area. This is useful for instance at high latitudes where geostationary data degrade
quickly with latitude and polar data are more frequent.
This weighted blending can be accomplished via the use of the builtin partial() function (see Partial) and the default
stack() function. The stack() function can take the optional argument weights (None on default) which should be
a sequence (of length equal to the number of scenes being blended) of arrays with pixel weights.
The code below gives an example of how two cloud scenes can be blended using the satellite zenith angles to weight
which pixels to take from each of the two scenes. The idea being that the reliability of the cloud parameter is higher
when the satellite zenith angle is small.

>>> from satpy import Scene, MultiScene, DataQuery


>>> from functools import partial
>>> from satpy.resample import get_area_def
>>> areaid = get_area_def("myarea")
>>> geo_scene = Scene(filenames=glob('/data/to/nwcsaf/geo/files/*nc'), reader='nwcsaf-geo
˓→')

>>> geo_scene.load(['ct'])
>>> polar_scene = Scene(filenames=glob('/data/to/nwcsaf/pps/noaa18/files/*nc'), reader=
˓→'nwcsaf-pps_nc')

>>> polar_scene.load(['cma', 'ct'])


>>> mscn = MultiScene([geo_scene, polar_scene])
>>> groups = {DataQuery(name='CTY_group'): ['ct']}
>>> mscn.group(groups)
>>> resampled = mscn.resample(areaid, reduce_data=False)
>>> weights = [1./geo_satz, 1./n18_satz]
(continues on next page)

74 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


>>> stack_with_weights = partial(stack, weights=weights)
>>> blended = resampled.blend(blend_function=stack_with_weights)
>>> blended_scene.save_dataset('CTY_group', filename='./blended_stack_weighted_geo_polar.
˓→nc')

Grouping Similar Datasets

By default, MultiScene only operates on datasets shared by all scenes. Use the group() method to specify groups of
datasets that shall be treated equally by MultiScene, even if their names or wavelengths are different.
Example: Stacking scenes from multiple geostationary satellites acquired at roughly the same time. First, create scenes
and load datasets individually:

>>> from satpy import Scene


>>> from glob import glob
>>> h8_scene = satpy.Scene(filenames=glob('/data/HS_H08_20200101_1200*'),
... reader='ahi_hsd')
>>> h8_scene.load(['B13'])
>>> g16_scene = satpy.Scene(filenames=glob('/data/OR_ABI*s20200011200*.nc'),
... reader='abi_l1b')
>>> g16_scene.load(['C13'])
>>> met10_scene = satpy.Scene(filenames=glob('/data/H-000-MSG4*-202001011200-__'),
... reader='seviri_l1b_hrit')
>>> met10_scene.load(['IR_108'])

Now create a MultiScene and group the three similar IR channels together:

>>> from satpy import MultiScene, DataQuery


>>> mscn = MultiScene([h8_scene, g16_scene, met10_scene])
>>> groups = {DataQuery('IR_group', wavelength=(10, 11, 12)): ['B13', 'C13', 'IR_108']}
>>> mscn.group(groups)

Finally, resample the datasets to a common grid and blend them together:

>>> from pyresample.geometry import AreaDefinition


>>> my_area = AreaDefinition(...)
>>> resampled = mscn.resample(my_area, reduce_data=False)
>>> blended = resampled.blend() # you can also use a custom blend function

You can access the results via blended['IR_group'].

Timeseries
Using the blend() method with the timeseries() function will combine multiple scenes from different time slots
by time. A single Scene with each dataset/channel extended by the time dimension will be returned. If used together
with the to_geoviews() method, creation of interactive timeseries Bokeh plots is possible.

>>> from satpy import Scene, MultiScene


>>> from satpy.multiscene import timeseries
>>> from glob import glob
>>> from pyresample.geometry import AreaDefinition
>>> my_area = AreaDefinition(...)
>>> scenes = [
(continues on next page)

2.13. MultiScene (Experimental) 75


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


... Scene(reader='viirs_sdr', filenames=glob('/data/viirs/day_1/*t180*.h5')),
... Scene(reader='viirs_sdr', filenames=glob('/data/viirs/day_2/*t180*.h5'))
... ]
>>> mscn = MultiScene(scenes)
>>> mscn.load(['I04'])
>>> new_mscn = mscn.resample(my_area)
>>> blended_scene = new_mscn.blend(blend_function=timeseries)
>>> blended_scene['I04']
<xarray.DataArray (time: 2, y: 1536, x: 6400)>
dask.array<shape=(2, 1536, 6400), dtype=float64, chunksize=(1, 1536, 4096)>
Coordinates:
* time (time) datetime64[ns] 2012-02-25T18:01:24.570942 2012-02-25T18:02:49.975797
Dimensions without coordinates: y, x

2.13.3 Saving frames of an animation


The MultiScene can take “frames” of data and join them together in a single animation movie file. Saving animations
requires the imageio python library and for most available formats the ffmpeg command line tool suite should also be
installed. The below example saves a series of GOES-EAST ABI channel 1 and channel 2 frames to MP4 movie files.

>>> from satpy import Scene, MultiScene


>>> from glob import glob
>>> mscn = MultiScene.from_files(glob('/data/abi/day_1/*C0[12]*.nc'), reader='abi_l1b')
>>> mscn.load(['C01', 'C02'])
>>> mscn.save_animation('{name}_{start_time:%Y%m%d_%H%M%S}.mp4', fps=2)

This will compute one video frame (image) at a time and write it to the MPEG-4 video file. For users with more
powerful systems it is possible to use the client and batch_size keyword arguments to compute multiple frames
in parallel using the dask distributed library (if installed). See the dask distributed documentation for information
on creating a Client object. If working on a cluster you may want to use dask jobqueue to take advantage of multiple
nodes at a time.
It is possible to add an overlay or decoration to each frame of an animation. For text added as a decoration, string
substitution will be applied based on the attributes of the dataset, for example:

>>> mscn.save_animation(
... "{name:s}_{start_time:%Y%m%d_%H%M}.mp4",
... enh_args={
... "decorate": {
... "decorate": [
... {"text": {
... "txt": "time {start_time:%Y-%m-%d %H:%M}",
... "align": {
... "top_bottom": "bottom",
... "left_right": "right"},
... "font": '/usr/share/fonts/truetype/arial.ttf',
... "font_size": 20,
... "height": 30,
... "bg": "black",
... "bg_opacity": 255,
... "line": "white"}}]}})

If your file covers ABI MESO data for an hour for channel 2 lasting from 2020-04-12 01:00-01:59, then the output file

76 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

will be called C02_20200412_0100.mp4 (because the first dataset/frame corresponds to an image that started to be
taken at 01:00), consist of sixty frames (one per minute for MESO data), and each frame will have the start time for
that frame floored to the minute blended into the frame. Note that this text is “burned” into the video and cannot be
switched on or off later.

* Warning

GIF images, although supported, are not recommended due to the large file sizes that can be produced from only a
few frames.

2.13.4 Saving multiple scenes


The MultiScene object includes a save_datasets() method for saving the data from multiple Scenes to disk. By
default this will operate on one Scene at a time, but similar to the save_animation method above this method can
accept a dask distributed Client object via the client keyword argument to compute scenes in parallel (see docu-
mentation above). Note however that some writers, like the geotiff writer, do not support multi-process operations
at this time and will fail when used with dask distributed. To save multiple Scenes use:

>>> from satpy import Scene, MultiScene


>>> from glob import glob
>>> mscn = MultiScene.from_files(glob('/data/abi/day_1/*C0[12]*.nc'), reader='abi_l1b')
>>> mscn.load(['C01', 'C02'])
>>> mscn.save_datasets(base_dir='/path/for/output')

2.13.5 Combining multiple readers


Added in version 0.23.
The from_files() constructor allows to automatically combine multiple readers into a single MultiScene. It is no
longer necessary for the user to create the Scene objects themselves. For example, you can combine Advanced Baseline
Imager (ABI) and Global Lightning Mapper (GLM) measurements. Constructing a multi-reader MultiScene requires
more parameters than a single-reader MultiScene, because Satpy can poorly guess how to group files belonging to
different instruments. For an example creating a video with lightning superimposed on ABI channel 14 (11.2 µm) using
the built-in composite C14_flash_extent_density, which superimposes flash extent density from GLM (read with
the NCGriddedGLML2 or glm_l2 reader) on ABI channel 14 data (read with the NC_ABI_L1B or abi_l1b reader), and
therefore needs Scene objects that combine both readers:

>>> glm_dir = "/path/to/GLMC/"


>>> abi_dir = "/path/to/ABI/"
>>> ms = satpy.MultiScene.from_files(
... glob.glob(glm_dir + "OR_GLM-L2-GLMC-M3_G16_s202010418*.nc") +
... glob.glob(abi_dir + "C*/OR_ABI-L1b-RadC-M6C*_G16_s202010418*_e*_c*.nc"),
... reader=["glm_l2", "abi_l1b"],
... ensure_all_readers=True,
... group_keys=["start_time"],
... time_threshold=30)
>>> ms.load(["C14_flash_extent_density"])
>>> ms = ms.resample(ms.first_scene["C14"].attrs["area"])
>>> ms.save_animation("/path/for/output/{name:s}_{start_time:%Y%m%d_%H%M}.mp4")

In this example, we pass to from_files() the additional parameters ensure_all_readers=True,


group_keys=["start_time"], time_threshold=30 so we only get scenes at times that both ABI and
GLM have a file starting within 30 seconds from each other, and ignore all other differences for the purposes of
grouping the two. For this example, the ABI files occur every 5 minutes but the GLM files (processed with glmtools)

2.13. MultiScene (Experimental) 77


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

every minute. Scenes where there is a GLM file without an ABI file starting within at most ±30 seconds are skipped.
The group_keys and time_threshold keyword arguments are processed by the group_files() function. The
heavy work of blending the two instruments together is performed by the BackgroundCompositor class through the
“C14_flash_extent_density” composite.

2.14 Developer’s Guide


The below sections will walk through how to set up a development environment, make changes to the code, and test
that they work. See the How to contribute section for more information on getting started and contributor expectations.
Additional information for developer’s can be found at the pages listed below.

2.14.1 How to contribute


Thank you for considering contributing to Satpy! Satpy’s development team is made up of volunteers so any help we
can get is very appreciated.
Contributions from users are what keep this community going. We welcome any contributions including bug reports,
documentation fixes or updates, bug fixes, and feature requests. By contributing to Satpy you are providing code that
everyone can use and benefit from.
The following guidelines will describe how the Satpy project structures its code contributions from discussion to code
to package release.
For more information on contributing to open source projects see GitHub’s Guide.

What can I do?


• Make sure you have a GitHub account.
• Submit a ticket for your issue, assuming one does not already exist.
• If you’re uncomfortable using Git/GitHub, see Learn Git Branching or other online tutorials.
• If you are uncomfortable contributing to an open source project see:
– How to Contribute to an Open Source Project on GitHub video series
– Aaron Meurer’s Git Workflow
– How to Contribute to Open Source
• See what issues already exist. Issues marked good first issue or help wanted can be good issues to start with.
• Read the Developer’s Guide for more details on contributing code.
• Fork the repository on GitHub and install the package in development mode.
• Update the Satpy documentation to make it clearer and more detailed.
• Contribute code to either fix a bug or add functionality and submit a Pull Request.
• Make an example Jupyter Notebook and add it to the available examples.

What if I break something?


Not possible. If something breaks because of your contribution it was our fault. When you submit your changes to be
merged as a GitHub Pull Request they will be automatically tested and checked against coding style rules. Before they
are merged they are reviewed by at least one maintainer of the Satpy project. If anything needs updating, we’ll let you
know.

78 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

What is expected?
You can expect the Satpy maintainers to help you. We are all volunteers, have jobs, and occasionally go on vacations.
We will try our best to answer your questions as soon as possible. We will try our best to understand your use case and
add the features you need. Although we strive to make Satpy useful for everyone there may be some feature requests
that we can’t allow if they would require breaking existing features. Other features may be best for a different package,
PyTroll or otherwise. Regardless, we will help you find the best place for your feature and to make it possible to do
what you want.
We, the Satpy maintainers, expect you to be patient, understanding, and respectful of both developers and users. Satpy
can only be successful if everyone in the community feels welcome. We also expect you to put in as much work as you
expect out of us. There is no dedicated PyTroll or Satpy support team, so there may be times when you need to do most
of the work to solve your problem (trying different test cases, environments, etc).
Being respectful includes following the style of the existing code for any code submissions. Please follow PEP8 style
guidelines and limit lines of code to 80 characters whenever possible and when it doesn’t hurt readability. Satpy follows
Google Style Docstrings for all code API documentation. When in doubt use the existing code as a guide for how coding
should be done.

How do I get help?


The Satpy developers (and all other PyTroll package developers) monitor the:
• Mailing List
• Slack chat (get an invitation)
• GitHub issues

How do I submit my changes?


Any contributions should start with some form of communication (see above) to let the Satpy maintainers know how you
plan to help. The larger the contribution the more important direct communication is so everyone can avoid duplicate
code and wasted time. After talking to the Satpy developers any additional work like code or documentation changes
can be provided as a GitHub Pull Request.
To make sure that your code complies with the pytroll python standard, you can run the flake8 linter on your changes
before you submit them, or even better install a pre-commit hook that runs the style check for you. To this aim, we
provide a configuration file for the pre-commit tool, that you can install with eg:

pip install pre-commit


pre-commit install

running from your base satpy directory. This will automatically check code style for every commit.

Code of Conduct
Satpy follows the same code of conduct as the PyTroll project. For reference it is copied to this repository in
CODE_OF_CONDUCT.md.
As stated in the PyTroll home page, this code of conduct applies to the project space (GitHub) as well as the public
space online and offline when an individual is representing the project or the community. Online examples of this
include the PyTroll Slack team, mailing list, and the PyTroll twitter account. This code of conduct also applies to
in-person situations like PyTroll Contributor Weeks (PCW), conference meet-ups, or any other time when the project
is being represented.
Any violations of this code of conduct will be handled by the core maintainers of the project including David Hoese,
Martin Raspaud, and Adam Dybbroe. If you wish to report one of the maintainers for a violation and are not comfortable
with them seeing it, please contact one or more of the other maintainers to report the violation. Responses to violations
will be determined by the maintainers and may include one or more of the following:

2.14. Developer’s Guide 79


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• Verbal warning
• Ask for public apology
• Temporary or permanent ban from in-person events
• Temporary or permanent ban from online communication (Slack, mailing list, etc)
For details see the official code of conduct document.

2.14.2 Migrating to xarray and dask


Many python developers dealing with meteorologic satellite data begin with using NumPy arrays directly. This work
usually involves masked arrays, boolean masks, index arrays, and reshaping. Due to the libraries used by Satpy these
operations can’t always be done in the same way. This guide acts as a starting point for new Satpy developers in
transitioning from NumPy’s array operations to Satpy’s operations, although they are very similar.
To provide the most functionality for users, Satpy uses the xarray library’s DataArray object as the main representation
for its data. DataArray objects can also benefit from the dask library. The combination of these libraries allow Satpy
to easily distribute operations over multiple workers, lazy evaluate operations, and keep track additional metadata and
coordinate information.

XArray

import xarray as xr

XArray's DataArray is now the standard data structure for arrays in satpy. They allow the array to define dimensions,
coordinates, and attributes (that we use for metadata).
To create such an array, you can do for example

my_dataarray = xr.DataArray(my_data, dims=['y', 'x'],


coords={'x': np.arange(...)},
attrs={'sensor': 'olci'})

where my_data can be a regular numpy array, a numpy memmap, or, if you want to keep things lazy, a dask array
(more on dask later). Satpy uses dask arrays with all of its DataArrays.

Dimensions

In satpy, the dimensions of the arrays should include:


• x for the x or column or pixel dimension
• y for the y or row or line dimension
• bands for composites
• time can also be provided, but we have limited support for it at the moment. Use metadata for common cases
(start_time, end_time)
Dimensions are accessible through my_dataarray.dims. To get the size of a given dimension, use sizes:

my_dataarray.sizes['x']

80 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Coordinates

Coordinates can be defined for those dimensions when it makes sense:


• x and y: Usually defined when the data’s area is an AreaDefinition, and they contain the projection coordinates
in x and y.
• bands: Contain the letter of the color they represent, eg ['R', 'G', 'B'] for an RGB composite.
This allows then to select for example a single band like this:

red = my_composite.sel(bands='R')

or even multiple bands:

red_and_blue = my_composite.sel(bands=['R', 'B'])

To access the coordinates of the data array, use the following syntax:

x_coords = my_dataarray['x']
my_dataarray['y'] = np.arange(...)

Most of the time, satpy will fill the coordinates for you, so you just need to provide the dimension names.

Attributes

To save metadata, we use the attrs dictionary.

my_dataarray.attrs['platform_name'] = 'Sentinel-3A'

Some metadata that should always be present in our dataarrays:


• area the area of the dataset. This should be handled in the reader.
• start_time, end_time
• sensor

Operations on DataArrays

DataArrays work with regular arithmetic operation as one would expect of eg numpy arrays, with the exception that
using an operator on two DataArrays requires both arrays to share the same dimensions, and coordinates if those are
defined.
For mathematical functions like cos or log, you can use numpy functions directly and they will return a DataArray
object:

import numpy as np
cos_zen = np.cos(zen_xarray)

Masking data

In DataArrays, masked data is represented with NaN values. Hence the default type is float64, but float32 works
also in this case. XArray can’t handle masked data for integer data, but in satpy we try to use the special _FillValue
attribute (in .attrs) to handle this case. If you come across a case where this isn’t handled properly, contact us.
Masking data from a condition can be done with:

2.14. Developer’s Guide 81


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

result = my_dataarray.where(my_dataarray > 5)

Result is then analogous to my_dataarray, with values lower or equal to 5 replaced by NaNs.

Further reading

http://xarray.pydata.org/en/stable/generated/xarray.DataArray.html#xarray.DataArray

Dask

import dask.array as da

The data part of the DataArrays we use in satpy are mostly dask Arrays. That allows lazy and chunked operations for
efficient processing.

Creation

From a numpy array

To create a dask array from a numpy array, one can call the from_array() function:

darr = da.from_array(my_numpy_array, chunks=4096)

The chunks keyword tells dask the size of a chunk of data. If the numpy array is 3-dimensional, the chunk size provide
above means that one chunk will be 4096x4096x4096 elements. To prevent this, one can provide a tuple:

darr = da.from_array(my_numpy_array, chunks=(4096, 1024, 2))

meaning a chunk will be 4096x1024x2 elements in size.


Even more detailed sizes for the chunks can be provided if needed, see the dask documentation.

From memmaps or other lazy objects

To avoid loading the data into memory when creating a dask array, other kinds of arrays can be passed to
from_array(). For example, a numpy memmap allows dask to know where the data is, and will only be loaded
when the actual values need to be computed. Another example is a hdf5 variable read with h5py.

Procedural generation of data

Some procedural generation function are available in dask, eg meshgrid(), arange(), or random.random.

From XArray to Dask and back

Certain operations are easiest to perform on dask arrays by themselves, especially when certain functions are only
available from the dask library. In these cases you can operate on the dask array beneath the DataArray and create
a new DataArray when done. Note dask arrays do not support in-place operations. In-place operations on xarray
DataArrays will reassign the dask array automatically.

dask_arr = my_dataarray.data
dask_arr = dask_arr + 1
# ... other non-xarray operations ...
new_dataarr = xr.DataArray(dask_arr, dims=my_dataarray.dims, attrs=my_dataarray.attrs.
˓→copy())

82 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Or if the operation should be assigned back to the original DataArray (if and only if the data is the same size):

my_dataarray.data = dask_arr

Operations and how to get actual results

Regular arithmetic operations are provided, and generate another dask array.

>>> arr1 = da.random.uniform(0, 1000, size=(1000, 1000), chunks=100)


>>> arr2 = da.random.uniform(0, 1000, size=(1000, 1000), chunks=100)
>>> arr1 + arr2
dask.array<add, shape=(1000, 1000), dtype=float64, chunksize=(100, 100)>

In order to compute the actual data during testing, use the compute() method. In normal Satpy operations you will
want the data to be evaluated as late as possible to improve performance so compute should only be used when needed.

>>> (arr1 + arr2).compute()


array([[ 898.08811639, 1236.96107629, 1154.40255292, ...,
1537.50752674, 1563.89278664, 433.92598566],
[ 1657.43843608, 1063.82390257, 1265.08687916, ...,
1103.90421234, 1721.73564104, 1276.5424228 ],
[ 1620.11393216, 212.45816261, 771.99348555, ...,
1675.6561068 , 585.89123159, 935.04366354],
...,
[ 1533.93265862, 1103.33725432, 191.30794159, ...,
520.00434673, 426.49238283, 1090.61323471],
[ 816.6108554 , 1526.36292498, 412.91953023, ...,
982.71285721, 699.087645 , 1511.67447362],
[ 1354.6127365 , 1671.24591983, 1144.64848757, ...,
1247.37586051, 1656.50487092, 978.28184726]])

Dask also provides cos, log and other mathematical function, that you can use with da.cos and da.log. However,
since satpy uses xarrays as standard data structure, prefer the xarray functions when possible (they call in turn the dask
counterparts when possible).

Wrapping non-dask friendly functions

Some operations are not supported by dask yet or are difficult to convert to take full advantage of dask’s multithreaded
operations. In these cases you can wrap a function to run on an entire dask array when it is being computed and pass
on the result. Note that this requires fully computing all of the dask inputs to the function and are passed as a numpy
array or in the case of an XArray DataArray they will be a DataArray with a numpy array underneath. You should NOT
use dask functions inside the delayed function.

import dask
import dask.array as da

def _complex_operation(my_arr1, my_arr2):


return my_arr1 + my_arr2

delayed_result = dask.delayed(_complex_operation)(my_dask_arr1, my_dask_arr2)


# to create a dask array to use in the future
my_new_arr = da.from_delayed(delayed_result, dtype=my_dask_arr1.dtype, shape=my_dask_
˓→arr1.shape)

2.14. Developer’s Guide 83


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Dask Delayed objects can also be computed delayed_result.compute() if the array is not needed or if the function
doesn’t return an array.
http://dask.pydata.org/en/latest/array-api.html#dask.array.from_delayed

Map dask blocks to non-dask friendly functions

If the complicated operation you need to perform can be vectorized and does not need the entire data array to do its
operations you can use da.map_blocks to get better performance than creating a delayed function. Similar to delayed
functions the inputs to the function are fully computed DataArrays or numpy arrays, but only the individual chunks of
the dask array at a time. Note that map_blocks must be provided dask arrays and won’t function properly on XArray
DataArrays. It is recommended that the function object passed to map_blocks not be an internal function (a function
defined inside another function) or it may be unserializable and can cause issues in some environments.

my_new_arr = da.map_blocks(_complex_operation, my_dask_arr1, my_dask_arr2, dtype=my_dask_


˓→arr1.dtype)

Helpful functions

• map_blocks()
• map_overlap()
• atop()
• store()
• tokenize()
• compute()
• Dask Delayed
• rechunk()
• vindex

2.14.3 Adding a Custom Reader to Satpy


In order to add a reader to satpy, you will need to create two files:
• a YAML file for describing the files to read and the datasets that are available
• a python file implementing the actual reading of the datasets and metadata
Satpy implements readers by defining a single “reader” object that pulls information from one or more file handler
objects. The base reader class provided by Satpy is enough for most cases and does not need to be modified. The
individual file handler classes do need to be created due to the small differences between file formats.
The below documentation will walk through each part of making a reader in detail. To do this we will implement a
reader for the EUMETSAT NetCDF format for SEVIRI data.

Naming your reader


Satpy tries to follow a standard scheme for naming its readers. These names are used in filenames, but are also used by
users so it is important that the name be recognizable and clear. Although some special cases exist, most fit in to the
following naming scheme:

<sensor>[_<processing level>[_<level detail>]][_<file format>]

84 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

All components of the name should be lowercase and use underscores as the main separator between fields. Hyphens
should be used as an intra-field separator if needed (ex. goes-imager).
sensor
The first component of the name represents the sensor or instrument that observed the data stored
in the files being read. If the files are the output of a specific processing software or a certain al-
gorithm implementation that supports multiple sensors then a lowercase version of that software’s
name should be used (e.g. clavrx for CLAVR-x, nucaps for NUCAPS). The sensor field is the only
required field of the naming scheme. If it is actually an instrument name then the reader name should
include one of the other optional fields. If sensor is a software package then that may be enough
without any additional information to uniquely identify the reader.
processing level
This field marks the specific level of processing or calibration that has been performed to produce
the data in the files being read. Common values of this field include: sdr for Sensor Data Record
(SDR), edr for Environmental Data Record (EDR), l1b for Level 1B, and l2 for Level 2.
level detail
In cases where the processing level is not enough to completely define the reader this field can be
used to provide a little more context. For example, some VIIRS EDR products are specific to a
particular field of study or type of scientific event, like a flood or cloud product. In these cases the
detail field can be added to produce a name like viirs_edr_flood. This field shouldn’t be used
unless processing level is also specified.
file format
If the file format of the files is informative to the user or can distinguish one reader from another
then this field should be specified. Common format names should be abbreviated following existing
abbreviations like nc for NetCDF3 or NetCDF4, hdf for HDF4, h5 for HDF5.
The existing reader’s table can be used for reference. When in doubt, reader names can be discussed in the GitHub
pull request when this reader is added to Satpy, or in a GitHub issue.

The YAML file


If your reader is going to be part of Satpy, the YAML file should be located in the satpy/etc/readers directory, along
with the YAML files for all other readers. If you are developing a reader for internal purposes (such as for unpublished
data), the YAML file should be located in any directory in $SATPY_CONFIG_PATH within the subdirectory readers/
(see Configuration).
The YAML file is composed of three sections:
• the reader section, that provides basic parameters for the reader
• the file_types section, that gives the patterns of the files this reader can handle
• the datasets section, that describes the datasets available from this reader

The reader section

The reader section provides basic parameters for the overall reader.
The parameters to provide in this section are:
name
This is the name of the reader, it should be the same as the filename (without the .yaml extension). The
naming convention for this is described above in the Naming your reader section above. short_name
(optional): Human-readable version of the reader ‘name’. If not provided, applications using this can
default to taking the ‘name’, replacing _ with spaces and uppercasing every letter.

2.14. Developer’s Guide 85


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

long_name
Human-readable title for the reader. This may be used as a section title on a website or in GUI appli-
cations using Satpy. Default naming scheme is <space program> <sensor> Level <level>
[<format>]. For example, for the abi_l1b reader this is "GOES-R ABI Level 1b" where
“GOES-R” is the name of the program and not the name of the platform/satellite. This scheme may
not work for all readers, but in general should be followed. See existing readers for more examples.
description
General description of the reader. This may include any restructuredtext formatted text like links to
PDFs or sites with more information on the file format. This can be multiline if formatted properly
in YAML (see example below).
status
The status of the reader (one of: Nominal, Beta, Alpha, Defunct; see Status Description for more
details).
supports_fsspec
If the reader supports reading data via fsspec (either true or false).
sensors
The list of sensors this reader will support. This must be all lowercase letters for full support through-
out in Satpy.
reader
The main python reader class to use, in most cases the FileYAMLReader is a good choice.
reader:
name: seviri_l1b_nc
short_name: SEVIRI L1b NetCDF4
long_name: MSG SEVIRI Level 1b (NetCDF4)
description: >
NetCDF4 reader for EUMETSAT MSG SEVIRI Level 1b files.
sensors: [seviri]
reader: !!python/name:satpy.readers.yaml_reader.FileYAMLReader

Optionally, if you need to customize the DataID for this reader, you can provide the relevant keys with a
data_identification_keys item here. See the Satpy internal workings: having a look under the hood section
for more information.

The file_types section

Each file type needs to provide:


• file_reader, the class that will handle the files for this reader, that you will implement in the corresponding
python file. See the The python file section below.
• file_patterns, the patterns to match to find files this reader can handle. The syntax to use is basically the
same as format with the addition of time. See the trollsift package documentation for more details.
• Optionally, a file type can have a requires field: it is a list of file types that the current file types needs to
function. For example, the HRIT MSG format segment files each need a prologue and epilogue file to be read
properly, hence in this case we have added requires: [HRIT_PRO, HRIT_EPI] to the file type definition.
file_types:
nc_seviri_l1b:
file_reader: !!python/name:satpy.readers.nc_seviri_l1b.NCSEVIRIFileHandler
file_patterns: ['W_XX-EUMETSAT-Darmstadt,VIS+IR+IMAGERY,{satid:4s}+SEVIRI_C_EUMG_
˓→{processing_time:%Y%m%d%H%M%S}.nc']

(continues on next page)

86 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


nc_seviri_l1b_hrv:
file_reader: !!python/name:satpy.readers.nc_seviri_l1b.NCSEVIRIHRVFileHandler
file_patterns: ['W_XX-EUMETSAT-Darmstadt,HRV+IMAGERY,{satid:4s}+SEVIRI_C_EUMG_
˓→{processing_time:%Y%m%d%H%M%S}.nc']

The datasets section

The datasets section describes each dataset available in the files. The parameters provided are made available to the
methods of the implemented python class.
If your input files contain all the necessary metadata or you have a lot of datasets to configure look at the Dynamic
Dataset Configuration section below. Implementing this will save you from having to write a lot of configuration in
the YAML files.
Parameters you can define for example are:
• name
• sensor
• resolution
• wavelength
• polarization
• standard_name: The CF standard name for the dataset that will be used to determine the type of data. See existing
readers for common standard names in Satpy or the CF standard name documentation for other available names
or how to define your own. Satpy does not currently have a hard requirement on these names being completely
CF compliant, but consistency across readers is important.
• units: The units of the data when returned by the file handler. Although not technically a requirement, it is
common for Satpy datasets to use “%” for reflectance fields and “K” for brightness temperature fields.
• modifiers: The modification(s) that have already been applied to the data when it is returned by the file handler.
Only a few of these have been standardized across Satpy, but are based on the names of the modifiers config-
ured in the “composites” YAML files. Examples include sunz_corrected or rayleigh_corrected. See the
metadata wiki for more information.
• file_type: Name of file type (see above).
• coordinates: An optional two-element list with the names of the longitude and latitude datasets describing the
location of this dataset. This is optional if the data being read is gridded already. Swath data, from example data
from some polar-orbiting satellites, should have these defined or no geolocation information will be available
when the data are loaded. For gridded datasets a get_area_def function will be implemented in python (see
below) to define geolocation information.
• Any other field that is relevant for the reader or could be useful metadata provided to the user.
This section can be copied and adapted simply from existing seviri readers, like for example the msg_native reader.
datasets:
HRV:
name: HRV
resolution: 1000.134348869
wavelength: [0.5, 0.7, 0.9]
calibration:
reflectance:
standard_name: toa_bidirectional_reflectance
(continues on next page)

2.14. Developer’s Guide 87


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


units: "%"
radiance:
standard_name: toa_outgoing_radiance_per_unit_wavelength
units: W m-2 um-1 sr-1
counts:
standard_name: counts
units: count
file_type: nc_seviri_l1b_hrv

IR_016:
name: IR_016
resolution: 3000.403165817
wavelength: [1.5, 1.64, 1.78]
calibration:
reflectance:
standard_name: toa_bidirectional_reflectance
units: "%"
radiance:
standard_name: toa_outgoing_radiance_per_unit_wavelength
units: W m-2 um-1 sr-1
counts:
standard_name: counts
units: count
file_type: nc_seviri_l1b
nc_key: 'ch3'

IR_039:
name: IR_039
resolution: 3000.403165817
wavelength: [3.48, 3.92, 4.36]
calibration:
brightness_temperature:
standard_name: toa_brightness_temperature
units: K
radiance:
standard_name: toa_outgoing_radiance_per_unit_wavelength
units: W m-2 um-1 sr-1
counts:
standard_name: counts
units: count
file_type: nc_seviri_l1b
nc_key: 'ch4'

IR_087:
name: IR_087
resolution: 3000.403165817
wavelength: [8.3, 8.7, 9.1]
calibration:
brightness_temperature:
standard_name: toa_brightness_temperature
units: K
radiance:
(continues on next page)

88 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


standard_name: toa_outgoing_radiance_per_unit_wavelength
units: W m-2 um-1 sr-1
counts:
standard_name: counts
units: count
file_type: nc_seviri_l1b

IR_097:
name: IR_097
resolution: 3000.403165817
wavelength: [9.38, 9.66, 9.94]
calibration:
brightness_temperature:
standard_name: toa_brightness_temperature
units: K
radiance:
standard_name: toa_outgoing_radiance_per_unit_wavelength
units: W m-2 um-1 sr-1
counts:
standard_name: counts
units: count
file_type: nc_seviri_l1b

IR_108:
name: IR_108
resolution: 3000.403165817
wavelength: [9.8, 10.8, 11.8]
calibration:
brightness_temperature:
standard_name: toa_brightness_temperature
units: K
radiance:
standard_name: toa_outgoing_radiance_per_unit_wavelength
units: W m-2 um-1 sr-1
counts:
standard_name: counts
units: count
file_type: nc_seviri_l1b

IR_120:
name: IR_120
resolution: 3000.403165817
wavelength: [11.0, 12.0, 13.0]
calibration:
brightness_temperature:
standard_name: toa_brightness_temperature
units: K
radiance:
standard_name: toa_outgoing_radiance_per_unit_wavelength
units: W m-2 um-1 sr-1
counts:
standard_name: counts
(continues on next page)

2.14. Developer’s Guide 89


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


units: count
file_type: nc_seviri_l1b

IR_134:
name: IR_134
resolution: 3000.403165817
wavelength: [12.4, 13.4, 14.4]
calibration:
brightness_temperature:
standard_name: toa_brightness_temperature
units: K
radiance:
standard_name: toa_outgoing_radiance_per_unit_wavelength
units: W m-2 um-1 sr-1
counts:
standard_name: counts
units: count
file_type: nc_seviri_l1b

VIS006:
name: VIS006
resolution: 3000.403165817
wavelength: [0.56, 0.635, 0.71]
calibration:
reflectance:
standard_name: toa_bidirectional_reflectance
units: "%"
radiance:
standard_name: toa_outgoing_radiance_per_unit_wavelength
units: W m-2 um-1 sr-1
counts:
standard_name: counts
units: count
file_type: nc_seviri_l1b

VIS008:
name: VIS008
resolution: 3000.403165817
wavelength: [0.74, 0.81, 0.88]
calibration:
reflectance:
standard_name: toa_bidirectional_reflectance
units: "%"
radiance:
standard_name: toa_outgoing_radiance_per_unit_wavelength
units: W m-2 um-1 sr-1
counts:
standard_name: counts
units: count
file_type: nc_seviri_l1b

WV_062:
(continues on next page)

90 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


name: WV_062
resolution: 3000.403165817
wavelength: [5.35, 6.25, 7.15]
calibration:
brightness_temperature:
standard_name: toa_brightness_temperature
units: "K"
radiance:
standard_name: toa_outgoing_radiance_per_unit_wavelength
units: W m-2 um-1 sr-1
counts:
standard_name: counts
units: count
file_type: nc_seviri_l1b

WV_073:
name: WV_073
resolution: 3000.403165817
wavelength: [6.85, 7.35, 7.85]
calibration:
brightness_temperature:
standard_name: toa_brightness_temperature
units: "K"
radiance:
standard_name: toa_outgoing_radiance_per_unit_wavelength
units: W m-2 um-1 sr-1
counts:
standard_name: counts
units: count
file_type: nc_seviri_l1b

The YAML file is now ready and you can move on to writing your python code.

Dynamic Dataset Configuration


The above “datasets” section for reader configuration is the most explicit method for specifying metadata about possible
data that can be loaded from input files. It is also the easiest way for people with little python experience to customize
or add new datasets to a reader. However, some file formats may have 10s or even 100s of datasets or variations of
datasets. Writing the metadata and access information for every one of these datasets can easily become a problem. To
help in these cases the available_datasets() file handler interface can be used.
This method, if needed, should be implemented in your reader’s file handler classes. The best information for what this
method does and how to use it is available in the API documentation. This method is good when you want to:
1. Define datasets dynamically without needing to define them in the YAML.
2. Supplement metadata from the YAML file with information from the file content (ex. resolution).
3. Determine if a dataset is available by the file contents. This differs from the default behavior of a dataset being
considered loadable if its “file_type” is loaded.
Note that this is considered an advanced interface and involves more advanced Python concepts like generators. If you
need help with anything feel free to ask questions in your pull request or on the Pytroll Slack.

2.14. Developer’s Guide 91


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

The python file


The python files needs to implement a file handler class for each file type that we want to read. Such a class needs to
implement a few methods:
• the __init__ method, that takes as arguments
– the filename (string)
– the filename info (dict) that we get by parsing the filename using the pattern defined in the yaml file
– the filetype info that we get from the filetype definition in the yaml file
This method can also receive other file handler instances as parameter if the filetype at hand has requirements.
(See the explanation in the YAML file filetype section above)
• the get_dataset method, which takes as arguments
– the dataset ID of the dataset to load
– the dataset info that is the description of the channel in the YAML file
This method has to return an xarray.DataArray instance if the loading is successful, containing the data and
metadata of the loaded dataset, or return None if the loading was unsuccessful.
The DataArray should at least have a y dimension. For data covering a 2D region on the Earth, their should be at
least a y and x dimension. This applies to non-gridded data like that of a polar-orbiting satellite instrument. The
latitude dimension is typically named y and longitude named x. This may require renaming dimensions from the
file, see for the xarray.DataArray.rename() method for more information and its use in the example below.
If the reader should be compatible with opening remote files see Adding remote file support to a reader.
• the get_area_def method, that takes as single argument the DataID for which we want the area. It should return
a AreaDefinition object. For data that cannot be geolocated with an area definition, the pixel coordinates will
be loaded using the get_dataset method for the resulting scene to be navigated. The names of the datasets to
be loaded should be specified as a special coordinates attribute in the YAML file. For example, by specifying
coordinates: [longitude_dataset, latitude_dataset] in the YAML, Satpy will call get_dataset
twice, once to load the dataset named longitude_dataset and once to load latitude_dataset. Satpy will
then create a SwathDefinition with this coordinate information and assign it to the dataset’s .attrs['area']
attribute.
• Optionally, the get_bounding_box method can be implemented if filtering files by area is desirable for this data
type
On top of that, two attributes need to be defined: start_time and end_time, that define the start and end times of
the sensing. See the Time Metadata section for a description of the different times that Satpy readers typically use
and what times should be used for the start_time and end_time. Note that these properties will be assigned to
the start_time and end_time metadata of any DataArrays returned by get_dataset, any existing values will be
overwritten.
If you are writing a file handler for more common formats like HDF4, HDF5, or NetCDF4 you may want
to consider using the utility base classes for each: satpy.readers.hdf4_utils.HDF4FileHandler, satpy.
readers.hdf5_utils.HDF5FileHandler, and satpy.readers.netcdf_utils.NetCDF4FileHandler. These
were added as a convenience and are not required to read these formats. In many cases using the xarray.
open_dataset() function in a custom file handler is a much better idea.

á Note

Be careful about the data types of the DataArray attributes (.attrs) your reader is returning. Satpy or other tools
may attempt to serialize these attributes (ex. hashing for cache keys). For example, Numpy types don’t serialize
into JSON and should therefore be cast to basic Python types (float, int, etc) before being assigned to the attributes.

92 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

á Note

Be careful about the types of the data your reader is returning. It is easy to let the data be coerced into double
precision floats (np.float64). At the moment, satellite instruments are rarely measuring in a resolution greater than
what can be encoded in 16 bits. As such, to preserve processing power, please consider carefully what data type
you should scale or calibrate your data to.
Single precision floats (np.float32) is a good compromise, as it has 23 significant bits (mantissa) and can thus
represent 16 bit integers exactly, as well as keeping the memory footprint half of a double precision float.
One commonly used method in readers is xarray.DataArray.where() (to mask invalid data) which can be
coercing the data to np.float64. To ensure for example that integer data is coerced to np.float32 when xarray.
DataArray.where() is used, you can do:
my_float_dataarray = my_int_dataarray.where(some_condition, np.float32(np.nan))

One way of implementing a file handler is shown below:

# this is seviri_l1b_nc.py
from satpy.readers.file_handlers import BaseFileHandler
from pyresample.geometry import AreaDefinition

class NCSEVIRIFileHandler(BaseFileHandler):
def __init__(self, filename, filename_info, filetype_info):
super(NCSEVIRIFileHandler, self).__init__(filename, filename_info, filetype_info)
self.nc = None

def get_dataset(self, dataset_id, dataset_info):


if dataset_id['calibration'] != 'radiance':
# TODO: implement calibration to reflectance or brightness temperature
return
if self.nc is None:
self.nc = xr.open_dataset(self.filename,
decode_cf=True,
mask_and_scale=True,
chunks={'num_columns_vis_ir': "auto",
'num_rows_vis_ir': "auto"})
self.nc = self.nc.rename({'num_columns_vir_ir': 'x', 'num_rows_vir_ir': 'y'})
dataset = self.nc[dataset_info['nc_key']]
dataset.attrs.update(dataset_info)
return dataset

def get_area_def(self, dataset_id):


return pyresample.geometry.AreaDefinition(
"some_area_name",
"on-the-fly area",
"geos",
"+a=6378169.0 +h=35785831.0 +b=6356583.8 +lon_0=0 +proj=geos",
3636,
3636,
[-5456233.41938636, -5453233.01608472, 5453233.01608472, 5456233.41938636])

class NCSEVIRIHRVFileHandler():
# left as an exercise to the reader :)

2.14. Developer’s Guide 93


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

If you have any questions, please contact the Satpy developers.

Auxiliary File Download


If your reader needs additional data files to do calibrations, corrections, or anything else see the Auxiliary Data Down-
load document for more information on how to download and cache these files without including them in the Satpy
python package.

2.14.4 Adding remote file support to a reader

* Warning

This feature is currently very new and might improve and change in the future.

As of Satpy version 0.25.1 the possibility to search for files on remote file systems (see Search for local/remote files)
as well as the possibility for supported readers to read from remote filesystems has been added.
To add this feature to a reader the call to xarray.open_dataset() has to be replaced by the function
open_dataset() included in Satpy which handles passing on the filename to be opened regardless if it is a local
file path or a FSFile object which can wrap fsspec.open() objects.
To be able to cache the open_dataset call which is favourable for remote files it should be separated from the
get_dataset method which needs to be implemented in every reader. This could look like:

from satpy._compat importe cached_property


from satpy.readers.file_handlers import BaseFileHandler, open_dataset

class Reader(BaseFileHandler):

def __init__(self, filename, filename_info, filetype_info):


super(Reader).__init__(filename, filename_info, filetype_info):

@cached_property
def nc(self):
return open_dataset(self.filename, chunks="auto")

def get_dataset(self):
# Access the opened dataset
data = self.nc["key"]

Any parameters allowed for xarray.open_dataset() can be passed as keywords to open_dataset() if needed.

á Note

It is important to know that for remote files xarray might use a different backend to open the file than for local files
(e.g. h5netcdf instead of netcdf4), which might result in some attributes being returned as arrays instead of scalars.
This has to be accounted for when accessing attributes in the reader.

94 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

2.14.5 Extending Satpy via plugins

* Warning

This feature is experimental and being modified without warnings. For now, it should not be used for anything else
than toy examples and should not be relied on.

Satpy is able to load additional functionality outside of the builtin features in the library. It does this by searching a
series of configured paths for additional configuration files for:
• readers
• composites and modifiers
• enhancements
• writers
For basic testing and temporary configuration changes, you can follow the instructions in Component Configuration.
This will tell Satpy where to look for your custom YAML configuration files and import any Python code you’d like
it to use for these components. However, this requires telling Satpy of these paths on every execution (either as an
environment variable or by using satpy.config).
Satpy also supports being told this information via setuptools “entry points”. Once your custom Python package with
entry points is installed Satpy will automatically discover it when searching for composites without the user needing
to explicitly import your package. This has the added benefit of organizing your YAML configuration files and any
custom python code into a single python package. How to structure a package in this way is described below.
An example project showing the usage of these entry points is available at this github repository where a custom
compositor is created. This repository also includes common configuration files and tools for writing clean code and
automatically testing your python code.

Plugin package structure


The below sections will use the example package name satpy-myplugin. This is only an example and naming a
plugin package with a satpy- prefix is not required.
A plugin package should consist of three main parts:
1. pyproject.toml or setup.py: These files define the metadata and entry points for your package. Only one of
them is needed. With only a few exceptions it is recommended to use a pyproject.toml as this is the new and
future way Python package configuration will be supported by the pip package manager. See below for examples
of the contents of this file.
2. mypkg/etc/: A directory of Satpy-compatible component YAML files. These YAML files should be in
readers/, composites/, enhancements/, and writers/ directories. These YAML files must follow the
Satpy naming conventions for each component. For example, composites and enhancements allow for sensor-
specific configuration files. Other directories can be added in this etc directory and will be ignored by Satpy.
Satpy will collect all available YAML files from all installed plugins and merge them with those builtin to Satpy.
The Satpy builtins will be used as a “base” configuration with all external YAML files applied after.
3. mypkg/: The python package with any custom python code. This code should be based on or at least compatible
with Satpy’s base classes for each component or use utilities available from Satpy whenever possible.
• readers: FileYAMLReader for any reader subclasses and BaseFileHandler for any custom file handlers.
See Adding a Custom Reader to Satpy for more information.
• composites and modifiers: CompositeBase for any generic compositor and GenericCompositor for any
composite that represents an image (RGB, L, etc). For modifiers, use ModifierBase.

2.14. Developer’s Guide 95


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• enhancements: Although not required, consider using satpy.enhancements.apply_enhancement().


• writers: Writer
Lastly, this directory should be structured like a standard python package. This primarily means a mypkg/
__init__.py file should exist.

pyproject.toml

We recommend using a pyproject.toml file can be used to define the metadata and configuration for a python package.
With this file it is possible to use package building tools to make an installable package. By using a special feature
called “entry points” we can configure our package to its satpy features are automatically discovered by Satpy.
A pyproject.toml file is typically placed in the root of a project repository and at the same level as the package (ex.
satpy_myplugin/ directory). An example for a package called satpy-myplugin with custom composites is shown
below.

[project]
name = "satpy-myplugin"
description = "Example Satpy plugin package definition."
version = "1.0.0"
readme = "README.md"
license = {text = "GPL-3.0-or-later"}
requires-python = ">=3.8"
dependencies = [
"satpy",
]

[tool.setuptools]
packages = ["satpy_myplugin"]

[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"

[project.entry-points."satpy.composites"]
example_composites = "satpy_myplugin"

This definition uses setuptools to build the resulting package (under build-system). There are other alternative tools
(like poetry) that can be used.
Other custom components like readers and writers can be defined in the same package by using additional entry points
named satpy.readers for readers, satpy.writers for writers, and satpy.enhancements for enhancements.
Note the difference between the usage of the package name (satpy-myplugin) which includes a hyphen and the
package directory (satpy_myplugin) which uses an underscore. Your package name does not need to have a separator
(hyphen) in it, but is used here due to the common practice of naming plugins this way. Package directories can’t use
hyphens as this would be a syntax error when trying to import the package. Underscores can’t be used in package
names as this is not allowed by PyPI.
The first project section in this TOML file specifies metadata about the package. This is most important if you plan
on distributing your package on PyPI or similar package repository. We specify that our package depends on satpy so
if someone installs it Satpy will automatically be installed. The second tools.setuptools section tells the package
building (via setuptools) what directory the Python code is in. The third section, build-system, says what tool(s)
should be used for building the package and what extra requirements are needed during this build process.
The last section, project.entry-points."satpy.composites" is the only section specific to this package being a
Satpy plugin. At the time of writing the example_composites = "satpy_myplugin" portion is not actually used by

96 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Satpy but is required to properly define the entry point in the plugin package. Instead Satpy will assume that a package
that defines the satpy.composites (or any of the other component types) entry point will have a etc/ directory in
the root of the package structure. Even so, for future compatibility, it is best to use the name of the package directory
on the right-hand side of the =.
Alternative: setup.py
If you are more comfortable creating a setup.py-based python package you can use setup.py instead of pyproject.
toml. When used for custom composites, in a package called satpy-myplugin it would look something like this:

from setuptools import setup


import os

setup(
name='satpy-myplugin',
entry_points={
'satpy.composites': [
'example_composites = satpy_myplugin',
],
},
package_data={'satpy_myplugin': [os.path.join('etc', 'composites/*.yaml')]},
install_requires=["satpy"],
)

Note the difference between the usage of the package name (satpy-plugin) which includes a hyphen and the package
directory (satpy_plugin) which uses an underscore. Your package name does not need to have a separator (hyphen)
in it, but is used here due to the common practice of naming plugins this way. See the pyproject.toml information
above for more information on what each of these values means.

Licenses

Disclaimer: We are not lawyers.


Satpy source code is under the GPLv3 license. This license requires any derivative works to also be GPLv3 or GPLv3
compatible. It is our understanding that importing a Python module could be considered “linking” that source code to
your own (thus being a derivative work) and would therefore require your code to be licensed with a GPLv3-compatible
license. It is currently only possible to make a Satpy-compatible plugin without importing Satpy if it contains only
enhancements. Writers and compositors are possible without subclassing, but are likely difficult to implement. Readers
are even more difficult to implement without using Satpy’s base classes and utilities. It is also our understanding that
if your custom Satpy plugin code is not publicly released then it does not need to be GPLv3.

2.14.6 Satpy internal workings: having a look under the hood


Querying and identifying data arrays
DataQuery

The loading of data in Satpy is usually done through giving the name or the wavelength of the data arrays we are
interested in. This way, the highest, most calibrated data arrays is often returned.
However, in some cases, we need more control over the loading of the data arrays. The way to accomplish this is to
load data arrays using queries, eg:

scn.load([DataQuery(name='channel1', resolution=400)]

Here a data array with name channel1 and of resolution 400 will be loaded if available.
Note that None is not a valid value, and keys having a value set to None will simply be ignored.

2.14. Developer’s Guide 97


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

If one wants to use wildcards to query data, just provide ‘*’, eg:

scn.load([DataQuery(name='channel1', resolution=400, calibration='*')]

Alternatively, one can provide a list as parameter to query data, like this:

scn.load([DataQuery(name='channel1', resolution=[400, 800])]

DataID

Satpy stores loaded data arrays in a special dictionary (DatasetDict) inside scene objects. In order to identify each data
array uniquely, Satpy is assigning an ID to each data array, which is then used as the key in the scene object. These IDs
are of type DataID and are immutable. They are not supposed to be used by regular users and should only be created
in special circumstances. Satpy should take care of creating and assigning these automatically. They are also stored in
the attrs of each data array as _satpy_id.

Default and custom metadata keys

One thing however that the user has control over is which metadata keys are relevant to which datasets. Satpy provides
two default sets of metadata key (or ID keys), one for regular imager bands, and the other for composites. The first one
contains: name, wavelength, resolution, calibration, modifiers. The second one contains: name, resolution.
As an example here is the definition of the first one in yaml:

data_identification_keys:
name:
required: true
wavelength:
type: !!python/name:satpy.dataset.WavelengthRange
resolution:
calibration:
enum:
- reflectance
- brightness_temperature
- radiance
- counts
transitive: true
modifiers:
required: true
default: []
type: !!python/name:satpy.dataset.ModifierTuple

To create a new set, the user can provide indications in the relevant yaml file. It has to be provided in header of the
reader configuration file, under the reader section, as data_identification_keys. Each key under this is the name of
relevant metadata key that will used to find relevant information in the attributes of the data arrays. Under each of this,
a few options are available:
• required: if the item is required, False by default
• type: the type to use. More on this further down.
• enum: if the item has to be limited to a finite number of options, an enum can be used. Be sure to place the
options in the order of preference, with the most desirable option on top.
• default: the default value to assign to the item if nothing (or None) is provided. If this option isn’t provided, the
key will simply be omitted if it is not present in the attrs or if it is None. It will be passed to the type’s convert
method if available.

98 Chapter 2. Documentation
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• transitive: whether the key is to be passed when looking for dependencies of composites/modifiers. Here for
example, a composite that has in a given calibration type will pass this calibration type requirement to its depen-
dencies.
If the definition of the metadata keys need to be done in python rather than in a yaml file, it will be a dictionary very
similar to the yaml code. Here is the same example as above in python:

from satpy.dataset import WavelengthRange, ModifierTuple

id_keys_config = {'name': {
'required': True,
},
'wavelength': {
'type': WavelengthRange,
},
'resolution': None,
'calibration': {
'enum': [
'reflectance',
'brightness_temperature',
'radiance',
'counts'
],
'transitive': True,
},
'modifiers': {
'required': True,
'default': ModifierTuple(),
'type': ModifierTuple,
},
}

Types

Types are classes that implement a type to be used as value for metadata in the DataID. They have to implement a few
methods:
• a convert class method that returns it’s argument as an instance of the class
• __hash__, __eq__ and __ne__ methods
• a distance method the tells how “far” an instance of this class is from it’s argument.
An example of such a class is the WavelengthRange class. Through its implementation, it allows us to use the wave-
length in a query to find out which of the DataID in a list which has its central wavelength closest to that query for
example.

DataID and DataQuery interactions


Different DataIDs and DataQuerys can have different metadata items defined. As such we define equality between
different instances of these classes, and across the classes as equality between the sorted key/value pairs shared between
the instances. If a DataQuery has one or more values set to ‘*’, the corresponding key/value pair will be omitted from
the comparison. Instances sharing no keys will no be equal.

2.14. Developer’s Guide 99


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Breaking changes from DatasetIDs


• The way to access values from the DataID and DataQuery is through getitem: my_dataid[‘resolution’]
• For checking if a dataset is loaded, use ‘mydataset’ in scene, as ‘mydataset’ in scene.keys() will always return
False: the DatasetDict instance only supports DataID as key type.

Creating DataID for tests


Sometimes, it is useful to create DataID instances for testing purposes. For these cases, the satpy.tests.utils module
now has a make_dsid function that can be used just for this:

from satpy.tests.utils import make_dataid


did = make_dataid(name='camembert', modifiers=('runny',))

2.14.7 Auxiliary Data Download


Sometimes Satpy components need some extra data files to get their work done properly. These include files like Look
Up Tables (LUTs), coefficients, or Earth model data (ex. elevations). This includes any file that would be too large to be
included in the Satpy python package; anything bigger than a small text file. To help with this, Satpy includes utilities
for downloading and caching these files only when your component is used. This saves the user from wasting time and
disk space downloading files they may never use. This functionality is made possible thanks to the Pooch library.
Downloaded files are stored in the directory configured by Data Directory.

Adding download functionality


The utility functions for data downloading include a two step process:
1. Registering: Tell Satpy what files might need to be downloaded and used later.
2. Retrieving: Ask Satpy to download and store the files locally.

Registering

Registering a file for downloading tells Satpy the remote URL for the file, and an optional hash. The hash is used to
verify a successful download. Registering can also include a filename to tell Satpy what to name the file when it is
downloaded. If not provided it will be determined from the URL. Once registered, Satpy can be told to retrieve the file
(see below) by using a “cache key”. Cache keys follow the general scheme of <component_type>/<filename> (ex.
readers/README.rst).
Satpy includes a low-level function and a high-level Mixin class for registering files. The higher level class is recom-
mended for any Satpy component like readers, writers, and compositors. The lower-level register_file() function
can be used for any other use case.
The DataMixIn class is automatically included in the FileYAMLReader and Writer base classes. For any other
component (like a compositor) you should include it as another parent class:

from satpy.aux_download import DataDownloadMixin


from satpy.composites import GenericCompositor

class MyCompositor(GenericCompositor, DataDownloadMixin):


"""Compositor that uses downloaded files."""

def __init__(self, name, url=None, known_hash=None, **kwargs):


super().__init__(name, **kwargs)
data_files = [{'url': url, 'known_hash': known_hash}]
self.register_data_files(data_files)

100 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

However your code registers files, to be consistent it must do it during initialization so that the
find_registerable_files(). If your component isn’t a reader, writer, or compositor then this function will
need to be updated to find and load your registered files. See Offline Downloads below for more information.
As mentioned, the mixin class is included in the base reader and writer class. To register files in these cases, include
a data_files section in your YAML configuration file. For readers this would go under the reader section and
for writers the writer section. This parameter is a list of dictionaries including a url, known_hash, and optional
filename. For example:

reader:
name: abi_l1b
short_name: ABI L1b
long_name: GOES-R ABI Level 1b
... other metadata ...
data_files:
- url: "https://example.com/my_data_file.dat"
- url: "https://raw.githubusercontent.com/pytroll/satpy/main/README.rst"
known_hash:
˓→"sha256:5891286b63e7745de08c4b0ac204ad44cfdb9ab770309debaba90308305fa759"

- url: "https://raw.githubusercontent.com/pytroll/satpy/main/RELEASING.md"
filename: "satpy_releasing.md"
known_hash: null

See the DataDownloadMixin for more information.

Retrieving

Files that have been registered (see above) can be retrieved by calling the retrieve() function. This function expects
a single argument: the cache key. Cache keys are returned by registering functions, but can also be pre-determined by
following the scheme <component_type>/<filename> (ex. readers/README.rst). Retrieving a file will down-
load it to local disk if needed and then return the local pathname. Data is stored locally in the Data Directory. It is up
to the caller to then open the file.

Offline Downloads
To assist with operational environments, Satpy includes a retrieve_all() function that will try to find all files that
Satpy components may need to download in the future and download them to the current directory specified by Data
Directory. This function allows you to specify a list of readers, writers, or composite_sensors to limit what
components are checked for files to download.
The retrieve_all function is also available through a command line script called
satpy_retrieve_all_aux_data. Run the following for usage information.

satpy_retrieve_all_aux_data --help

To make sure that no additional files are downloaded when running Satpy see Demo Data Directory.

2.14.8 Writing unit tests


Satpy tests are written using the third-party pytest package.

2.14. Developer’s Guide 101


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Fixtures
The usage of Pytest fixtures is encouraged for code re-usability.
As the builtin fixtures (and those defined in conftest.py file) are injected by Pytest without them being imported
explicitly, their usage can be very confusing for new developers. To lessen the confusion, it is encouraged to add a note
at the top of the test modules listing all the automatically injected external fixtures that are used in the module:

# NOTE:
# The following fixtures are not defined in this file, but are used and injected by␣
˓→Pytest:

# - tmp_path
# - fixture_defined_in_conftest.py

2.14.9 Testing Satpy-based applications


The satpy.testing modules provides tools for writing tests of applications that use Satpy.
• To allow Scene creation and loading fake datasets without reading any data files: fake_satpy_reading()

2.14.10 Coding guidelines


Satpy is part of Pytroll, and all code should follow the Pytroll coding guidelines and best practices.
Satpy is now Python 3 only and it is no longer needed to support Python 2. Check pyproject.toml for the current
Python versions any new code needs to support.

2.14.11 Development installation


See the Installation Instructions section for basic installation instructions. When it comes time to install Satpy it should
be installed from a clone of the git repository and in development mode so that local file changes are automatically
reflected in the python environment. We highly recommend making a separate conda environment or virtualenv for
development. For example, you can do this using conda:

conda create -n satpy-dev python=3.11


conda activate satpy-dev

This will create a new environment called “satpy-dev” with Python 3.11 installed. The second command will activate
the environment so any future conda, python, or pip commands will use this new environment.
If you plan on contributing back to the project you should first fork the repository and clone your fork. The package
can then be installed in development mode by doing:

conda install --only-deps satpy


pip install -e .

The first command will install all dependencies needed by the Satpy conda-forge package, but won’t actually install
Satpy. The second command should be run from the root of the cloned Satpy repository (where the pyproject.toml
is) and will install the actual package.
You can now edit the python files in your cloned repository and have them immediately reflected in your conda envi-
ronment.
All the required dependencies for a full development environment, i.e. running the tests and building the documentation,
can be installed with:

conda install eccodes


pip install -e ".[dev]"

102 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

2.14.12 Running tests


Satpy tests are written using the third-party pytest package. There is usually no need to run all Satpy tests, but instead
only run the tests related to the component you are working on. All tests are automatically run from the GitHub Pull
Request using multiple versions of Python, multiple operating systems, and multiple versions of dependency libraries.
If you want to run all Satpy tests you will need to install additional dependencies that aren’t needed for regular Satpy
usage. To install them run:

conda install eccodes


pip install -e ".[tests]"

Satpy tests can be executed by running:

pytest satpy/tests

You can also run a specific tests by specifying a sub-directory or module:

pytest satpy/tests/reader_tests/test_abi_l1b.py

2.14.13 Running benchmarks


Satpy benchmarks are written using the Airspeed Velocity package (asv). The benchmarks can be run using:

asv run

These are pretty computation intensive, and shouldn’t be run unless you want to diagnose some performance issue for
example.
Once the benchmarks have run, you can use:

asv publish
asv preview

to have a look at the results. Again, have a look at the asv documentation for more information.

2.14.14 Documentation
Satpy’s documentation is built using Sphinx. All documentation lives in the doc/ directory of the project repository.
For building the documentation, additional packages are needed. These can be installed with

pip install -e ".[doc]"

Generating the documentation requires a one-time script to generate a list of previews of all of the AreaDefinition
objects used by the documentation. This script can take 2+ minutes to execute so it is run separately from the normal
documentation build process. To run it:

cd doc/source/
python generate_area_def_list.py
cd ../../

After editing the source files there the documentation can be generated locally:

cd doc
make html

The output of the make command should be checked for warnings and errors.

2.14. Developer’s Guide 103


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

2.15 satpy
2.15.1 satpy package
Subpackages
satpy.cf package

Submodules

satpy.cf.area module

CF processing of pyresample area information.


satpy.cf.area._add_grid_mapping(data_arr: DataArray) → tuple[DataArray, DataArray]
Convert an area to at CF grid mapping.
satpy.cf.area._add_lonlat_coords(data_arr: DataArray) → DataArray
Add ‘longitude’ and ‘latitude’ coordinates to DataArray.
satpy.cf.area._create_grid_mapping(area)
Create the grid mapping instance for area.
satpy.cf.area.area2cf(data_arr: DataArray, include_lonlats: bool = False, got_lonlats: bool = False) →
list[DataArray]
Convert an area to at CF grid mapping or lon and lats.

satpy.cf.attrs module

CF processing of attributes.
class satpy.cf.attrs.AttributeEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True,
allow_nan=True, sort_keys=False, indent=None,
separators=None, default=None)
Bases: JSONEncoder
JSON encoder for dataset attributes.
Constructor for JSONEncoder, with sensible defaults.
If skipkeys is false, then it is a TypeError to attempt encoding of keys that are not str, int, float or None. If skipkeys
is True, such items are simply skipped.
If ensure_ascii is true, the output is guaranteed to be str objects with all incoming non-ASCII characters escaped.
If ensure_ascii is false, the output can contain non-ASCII characters.
If check_circular is true, then lists, dicts, and custom encoded objects will be checked for circular references
during encoding to prevent an infinite recursion (which would cause an RecursionError). Otherwise, no such
check takes place.
If allow_nan is true, then NaN, Infinity, and -Infinity will be encoded as such. This behavior is not JSON spec-
ification compliant, but is consistent with most JavaScript based encoders and decoders. Otherwise, it will be a
ValueError to encode such floats.
If sort_keys is true, then the output of dictionaries will be sorted by key; this is useful for regression tests to
ensure that JSON serializations can be compared on a day-to-day basis.
If indent is a non-negative integer, then JSON array elements and object members will be pretty-printed with
that indent level. An indent level of 0 will only insert newlines. None is the most compact representation.

104 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

If specified, separators should be an (item_separator, key_separator) tuple. The default is (’, ‘, ‘: ‘) if indent
is None and (‘,’, ‘: ‘) otherwise. To get the most compact JSON representation, you should specify (‘,’, ‘:’) to
eliminate whitespace.
If specified, default is a function that gets called for objects that can’t otherwise be serialized. It should return a
JSON encodable version of the object or raise a TypeError.
_encode(obj)
Encode the given object as a json-serializable datatype.
default(obj)
Return a json-serializable object for obj.
In order to facilitate decoding, elements in dictionaries, lists/tuples and multi-dimensional arrays are en-
coded recursively.
satpy.cf.attrs._add_ancillary_variables_attrs(data_arr: DataArray) → None
Replace ancillary_variables DataArray with a list of their name.
satpy.cf.attrs._add_history(attrs)
Add ‘history’ attribute to dictionary.
satpy.cf.attrs._drop_attrs(data_arr: DataArray, user_excluded_attrs: list[str] | None) → None
Remove undesirable attributes.
satpy.cf.attrs._encode_numpy_array(obj)
Encode numpy array as a netCDF4 serializable datatype.
satpy.cf.attrs._encode_object(obj)
Try to encode obj as a netCDF/Zarr compatible datatype which most closely resembles the object’s nature.
Raises
ValueError if no such datatype could be found –
satpy.cf.attrs._encode_python_objects(obj)
Try to find the datatype which most closely resembles the object’s nature.
If on failure, encode as a string. Plain lists are encoded recursively.
satpy.cf.attrs._encode_to_cf(obj)
Encode the given object as a netcdf compatible datatype.
satpy.cf.attrs._format_prerequisites_attrs(data_arr: DataArray) → None
Reformat prerequisites attribute value to string.
satpy.cf.attrs._get_none_attrs(data_arr: DataArray) → list[str]
Remove attribute keys with None value.
satpy.cf.attrs._get_satpy_attrs(data_arr: DataArray) → list[str]
Remove _satpy attribute.
satpy.cf.attrs._try_decode_object(obj)
Try to decode byte string.
satpy.cf.attrs.encode_attrs_to_cf(attrs)
Encode dataset attributes as a netcdf compatible datatype.
Parameters
attrs (dict) – Attributes to be encoded

2.15. satpy 105


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Returns
Encoded (and sorted) attributes
Return type
dict
satpy.cf.attrs.preprocess_attrs(data_arr: DataArray, flatten_attrs: bool, exclude_attrs: list[str] | None)
→ DataArray
Preprocess DataArray attributes to be written into CF-compliant netCDF/Zarr.
satpy.cf.attrs.preprocess_header_attrs(header_attrs, flatten_attrs=False)
Prepare file header attributes.

satpy.cf.coords module

Set CF-compliant spatial and temporal coordinates.


satpy.cf.coords._add_declared_coordinates(data_arrays: dict[str, DataArray], dataarray_name: str) →
dict[str, DataArray]
Add declared coordinates to the dataarray if they exist.
satpy.cf.coords._add_xy_geographic_coords_attrs(data_arr: DataArray, x: str = 'x', y: str = 'y') →
DataArray
Add relevant attributes to x, y coordinates of a geographic CRS.
satpy.cf.coords._add_xy_projected_coords_attrs(data_arr: DataArray, x: str = 'x', y: str = 'y') →
DataArray
Add relevant attributes to x, y coordinates of a projected CRS.
satpy.cf.coords._get_coordinates_list(data_arr: DataArray) → list[str]
Return a list with the coordinates names specified in the ‘coordinates’ attribute.
satpy.cf.coords._get_is_nondimensional_coords_dict(data_arrays: dict[str, DataArray]) → dict[str,
bool]

satpy.cf.coords._is_area(data_arr: DataArray) → bool

satpy.cf.coords._is_lon_or_lat_dataarray(data_arr: DataArray) → bool


Check if the DataArray represents the latitude or longitude coordinate.
satpy.cf.coords._is_projected(data_arr: DataArray) → bool
Guess whether data are projected or not.
satpy.cf.coords._is_swath(data_arr: DataArray) → bool

satpy.cf.coords._rename_coords(data_arrays: dict[str, DataArray], coord_name: str) → dict[str, DataArray]


Rename coordinates in the datasets.
satpy.cf.coords._try_add_coordinate(data_arrays: dict[str, DataArray], dataarray_name: str, coord: str)
→ dict[str, DataArray]
Try to add a coordinate to the dataarray, warn if not possible.
satpy.cf.coords._try_get_units_from_coords(data_arr: DataArray) → str | None
Try to retrieve coordinate x/y units.
satpy.cf.coords._try_to_get_crs(data_arr: DataArray) → CRS
Try to get a CRS from attributes.

106 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.cf.coords._warn_if_pretty_but_not_unique(pretty, coord_name)
Warn if coordinates cannot be pretty-formatted due to non-uniqueness.
satpy.cf.coords.add_coordinates_attrs_coords(data_arrays: dict[str, DataArray]) → dict[str,
DataArray]
Add to DataArrays the coordinates specified in the ‘coordinates’ attribute.
It deal with the ‘coordinates’ attributes indicating lat/lon coords The ‘coordinates’ attribute is dropped from each
DataArray
If the coordinates attribute of a data array links to other dataarrays in the scene, for example coordinates=’lon
lat’, add them as coordinates to the data array and drop that attribute.
In the final call to xr.Dataset.to_netcdf() all coordinate relations will be resolved and the coordinates attributes
be set automatically.
satpy.cf.coords.add_time_bounds_dimension(ds: Dataset, time: str = 'time') → Dataset
Add time bound dimension to xr.Dataset.
satpy.cf.coords.add_xy_coords_attrs(data_arr: DataArray) → DataArray
Add relevant attributes to x, y coordinates.
satpy.cf.coords.check_unique_projection_coords(data_arrays: dict[str, DataArray]) → None
Check that all datasets share the same projection coordinates x/y.
satpy.cf.coords.ensure_unique_nondimensional_coords(data_arrays: dict[str, DataArray], pretty: bool
= False) → dict[str, DataArray]
Make non-dimensional coordinates unique among all datasets.
Non-dimensional coordinates, such as scanline timestamps, may occur in multiple datasets with the same name
and dimension but different values.
In order to avoid conflicts, prepend the dataset name to the coordinate name. If a non-dimensional coordinate is
unique among all datasets and pretty=True, its name will not be modified.
Since all datasets must have the same projection coordinates, this is not applied to latitude and longitude.
Parameters
• data_arrays – Dictionary of (dataset name, dataset)
• pretty – Don’t modify coordinate names, if possible. Makes the file prettier, but possibly
less consistent.
Returns
Dictionary holding the updated datasets
satpy.cf.coords.has_projection_coords(data_arrays: dict[str, DataArray]) → bool
Check if DataArray collection has a “longitude” or “latitude” DataArray.
satpy.cf.coords.set_cf_time_info(data_arr: DataArray, epoch: str | None) → DataArray
Set CF time attributes and encoding.
It expand the DataArray with a time dimension if does not yet exists.
The function assumes
• that x and y dimensions have at least shape > 1
• the time coordinate has size 1

2.15. satpy 107


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.cf.data_array module

Utility to generate a CF-compliant DataArray.


satpy.cf.data_array._handle_data_array_name(original_name, numeric_name_prefix)

satpy.cf.data_array._preprocess_data_array_name(dataarray, numeric_name_prefix,
include_orig_name)
Change the DataArray name by prepending numeric_name_prefix if the name is a digit.
satpy.cf.data_array.make_cf_data_array(dataarray, epoch=None, flatten_attrs=False,
exclude_attrs=None, include_orig_name=True,
numeric_name_prefix='CHANNEL_')
Make the xr.DataArray CF-compliant.
Parameters
• dataarray (xr.DataArray) – The data array to be made CF-compliant.
• epoch (str, optional) – Reference time for encoding of time coordinates. If None, the
default reference time is defined using from satpy.cf.coords import EPOCH.
• flatten_attrs (bool, optional) – If True, flatten dict-type attributes. Defaults to
False.
• exclude_attrs (list, optional) – List of dataset attributes to be excluded. Defaults to
None.
• include_orig_name (bool, optional) – Include the original dataset name in the netcdf
variable attributes. Defaults to True.
• numeric_name_prefix (str, optional) – Prepend dataset name with this if starting
with a digit. Defaults to "CHANNEL_".
Returns
A CF-compliant xr.DataArray.
Return type
xr.DataArray

satpy.cf.datasets module

Utility to generate a CF-compliant Datasets.


satpy.cf.datasets._collect_cf_dataset(list_dataarrays, epoch=None, flatten_attrs=False,
exclude_attrs=None, include_lonlats=True, pretty=False,
include_orig_name=True, numeric_name_prefix='CHANNEL_')
Process a list of xr.DataArray and return a dictionary with CF-compliant xr.Dataset.
Parameters
• list_dataarrays (list) – List of DataArrays to make CF compliant and merge into an
xr.Dataset.
• epoch (str, optional) – Reference time for encoding the time coordinates. Example
format: “seconds since 1970-01-01 00:00:00”. If None, the default reference time is defined
using from satpy.cf.coords import EPOCH.
• flatten_attrs (bool, optional) – If True, flatten dict-type attributes.
• exclude_attrs (list, optional) – List of xr.DataArray attribute names to be excluded.

108 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• include_lonlats (bool, optional) – If True, includes ‘latitude’ and ‘longitude’ co-


ordinates also for a satpy.Scene defined on an AreaDefinition. If the ‘area’ attribute is a
SwathDefinition, it always includes latitude and longitude coordinates.
• pretty (bool, optional) – Don’t modify coordinate names, if possible. Makes the file
prettier, but possibly less consistent.
• include_orig_name (bool, optional) – Include the original dataset name as a variable
attribute in the xr.Dataset.
• numeric_name_prefix (str, optional) – Prefix to add to each variable with a name
starting with a digit. Use ‘’ or None to leave this out.
Returns
A partially CF-compliant xr.Dataset.
Return type
xr.Dataset
satpy.cf.datasets._get_extra_ds(dataarray, keys=None)
Get the ancillary_variables DataArrays associated to a dataset.
satpy.cf.datasets._get_group_dataarrays(group_members, list_dataarrays)
Yield DataArrays that are part of a specific group.
satpy.cf.datasets._get_groups(groups, list_datarrays)
Return a dictionary with the list of xr.DataArray associated to each group.
If no groups (groups=None), return all DataArray attached to a single None key. Else, collect the DataArrays
associated to each group.
satpy.cf.datasets.collect_cf_datasets(list_dataarrays, header_attrs=None, exclude_attrs=None,
flatten_attrs=False, pretty=True, include_lonlats=True,
epoch=None, include_orig_name=True,
numeric_name_prefix='CHANNEL_', groups=None)
Process a list of xr.DataArray and return a dictionary with CF-compliant xr.Datasets.
If the xr.DataArrays does not share the same dimensions, it creates a collection of xr.Datasets sharing the same
dimensions.
Parameters
• list_dataarrays (list) – List of DataArrays to make CF compliant and merge into
groups of xr.Datasets.
• header_attrs (dict) – Global attributes of the output xr.Dataset.
• epoch (str, optional) – Reference time for encoding the time coordinates. Example
format: “seconds since 1970-01-01 00:00:00”. If None, the default reference time is retrieved
using from satpy.cf.coords import EPOCH.
• flatten_attrs (bool, optional) – If True, flatten dict-type attributes.
• exclude_attrs (list, optional) – List of xr.DataArray attribute names to be excluded.
• include_lonlats (bool, optional) – If True, includes ‘latitude’ and ‘longitude’ co-
ordinates also for a satpy.Scene defined on an AreaDefinition. If the ‘area’ attribute is a
SwathDefinition, it always includes latitude and longitude coordinates.
• pretty (bool, optional) – Don’t modify coordinate names, if possible. Makes the file
prettier, but possibly less consistent.

2.15. satpy 109


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• include_orig_name (bool, optional) – Include the original dataset name as a variable


attribute in the xr.Dataset.
• numeric_name_prefix (str, optional) – Prefix to add to each variable with a name
starting with a digit. Use ‘’ or None to leave this out.
• groups (dict, optional) – Group datasets according to the given assignment:
{‘<group_name>’: [‘dataset_name1’, ‘dataset_name2’, . . . ]}. Used to create grouped
netCDFs using the CF_Writer. If None, no groups will be created.
Returns
A tuple containing:
• grouped_datasets (dict): A dictionary of CF-compliant xr.Dataset: {group_name:
xr.Dataset}.
• header_attrs (dict): Global attributes to be attached to the xr.Dataset / netCDF4.
Return type
tuple

satpy.cf.decoding module

CF decoding.
satpy.cf.decoding._datetime_parser_json(json_dict)
Traverse JSON dictionary and parse timestamps.
satpy.cf.decoding._decode_dict_type_attrs(attrs)

satpy.cf.decoding._decode_timestamps(attrs)

satpy.cf.decoding._str2datetime(string)
Convert string to datetime object.
satpy.cf.decoding._str2dict(val)
Convert string to dictionary.
satpy.cf.decoding.decode_attrs(attrs)
Decode CF-encoded attributes to Python object.
Converts timestamps to datetime and strings starting with “{” to dictionary.
Parameters
attrs (dict) – Attributes to be decoded
Returns (dict): Decoded attributes

satpy.cf.encoding module

CF encoding.
satpy.cf.encoding._set_default_chunks(encoding, dataset)
Update encoding to preserve current dask chunks.
Existing user-defined chunks take precedence.
satpy.cf.encoding._set_default_fill_value(encoding, dataset)
Set default fill values.
Avoid _FillValue attribute being added to coordinate variables (https://github.com/pydata/xarray/issues/1865).

110 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.cf.encoding._set_default_time_encoding(encoding, dataset)
Set default time encoding.
Make sure time coordinates and bounds have the same units. Default is xarray’s CF datetime encoding, which
can be overridden by user-defined encoding.
satpy.cf.encoding._update_encoding_dataset_names(encoding, dataset, numeric_name_prefix)
Ensure variable names of the encoding dictionary account for numeric_name_prefix.
A lot of channel names in satpy starts with a digit. When preparing CF-compliant datasets, these channels are
prefixed with numeric_name_prefix.
If variables names in the encoding dictionary are numeric digits, their name is prefixed with nu-
meric_name_prefix
satpy.cf.encoding.update_encoding(dataset, to_engine_kwargs, numeric_name_prefix='CHANNEL_')
Update encoding.
Preserve dask chunks, avoid fill values in coordinate variables and make sure that time & time bounds have the
same units.

Module contents

Code for generation of CF-compliant datasets.

satpy.composites package

Submodules

satpy.composites.abi module

Composite classes for the ABI instrument.


class satpy.composites.abi.SimulatedGreen(name, fractions=(0.465, 0.465, 0.07), **kwargs)
Bases: GenericCompositor
A single-band dataset resembling a Green (0.55 µm) band.
This compositor creates a single band product by combining three other bands in various amounts. The general
formula with dependencies (d) and fractions (f) is:

result = d1 * f1 + d2 * f2 + d3 * f3

See the fractions keyword argument for more information. Common used fractions for ABI data with C01, C02,
and C03 inputs include:
• SatPy default (historical): (0.465, 0.465, 0.07)
• CIMSS (Kaba): (0.45, 0.45, 0.10)
• EDC: (0.45706946, 0.48358168, 0.06038137)
Initialize fractions for input channels.
Parameters
• name (str) – Name of this composite
• fractions (iterable) – Fractions of each input band to include in the result.

2.15. satpy 111


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.composites.agri module

Composite classes for the AGRI instrument.


class satpy.composites.agri.SimulatedRed(name, fractions=(1.0, 0.13, 0.87), **kwargs)
Bases: GenericCompositor
A single-band dataset resembling a Red (0.64 µm) band.
This compositor creates a single band product by combining two other bands by preset amounts. The general
formula with dependencies (d) and fractions (f) is:

result = (f1 * d1 - f2 * d2) / f3

See the fractions keyword argument for more information. The default setup is to use:
• f1 = 1.0
• f2 = 0.13
• f3 = 0.87
Initialize fractions for input channels.
Parameters
• name (str) – Name of this composite
• fractions (iterable) – Fractions of each input band to include in the result.

satpy.composites.ahi module

Composite classes for AHI.

satpy.composites.cloud_products module

Compositors for cloud products.


class satpy.composites.cloud_products.CloudCompositorCommonMask(name, prerequisites=None,
optional_prerequisites=None,
**kwargs)
Bases: SingleBandCompositor
Put cloud-free pixels as fill_value_color in palette.
Initialise the compositor.
class satpy.composites.cloud_products.CloudCompositorWithoutCloudfree(name,
prerequisites=None, op-
tional_prerequisites=None,
**kwargs)
Bases: SingleBandCompositor
Put cloud-free pixels as fill_value_color in palette.
Initialise the compositor.
class satpy.composites.cloud_products.PrecipCloudsRGB(name, common_channel_mask=True,
**kwargs)
Bases: GenericCompositor
Precipitation clouds compositor.

112 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Collect custom configuration values.


Parameters
common_channel_mask (bool) – If True, mask all the channels with a mask that combines all
the invalid areas of the given data.

satpy.composites.config_loader module

Classes for loading compositor and modifier configuration files.


class satpy.composites.config_loader._CompositeConfigHelper(loaded_compositors, sensor_id_keys)
Bases: object
Helper class for parsing composite configurations.
The provided loaded_compositors dictionary is updated inplace.
_create_comp_from_info(composite_info, loader)

static _get_compositor_loader_from_config(composite_name, composite_info)

_handle_inline_comp_dep(dep_info, dep_num, parent_name)

_load_config_composite(composite_info)

_load_config_composites(configured_composites)

_process_composite_deps(composite_info)

parse_config(configured_composites, composite_configs)
Parse composite configuration dictionary.
class satpy.composites.config_loader._ModifierConfigHelper(loaded_modifiers, sensor_id_keys)
Bases: object
Helper class for parsing modifier configurations.
The provided loaded_modifiers dictionary is updated inplace.
static _get_modifier_loader_from_config(modifier_name, modifier_info)

_load_config_modifier(modifier_info)

_load_config_modifiers(configured_modifiers)

_process_modifier_deps(modifier_info)

parse_config(configured_modifiers, composite_configs)
Parse modifier configuration dictionary.
satpy.composites.config_loader._convert_dep_info_to_data_query(dep_info)

satpy.composites.config_loader._get_sensor_id_keys(conf , parent_id_keys)

satpy.composites.config_loader._load_config(composite_configs)

satpy.composites.config_loader._lru_cache_with_config_path(func: Callable)
Use lru_cache but include satpy’s current config_path.
satpy.composites.config_loader._update_cached_wrapper(wrapper, cached_func)

2.15. satpy 113


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.composites.config_loader.all_composite_sensors()
Get all sensor names from available composite configs.
satpy.composites.config_loader.load_compositor_configs_for_sensor(sensor_name: str) →
tuple[dict[str, dict], dict[str,
dict], dict]
Load compositor, modifier, and DataID key information from configuration files for the specified sensor.
Parameters
sensor_name – Sensor name that has matching sensor_name.yaml config files.
Returns
Where comps is a dictionary:
composite ID -> compositor object
And mods is a dictionary:
modifier name -> (modifier class, modifiers options)
Add data_id_keys is a dictionary:
DataID key -> key properties
Return type
(comps, mods, data_id_keys)
satpy.composites.config_loader.load_compositor_configs_for_sensors(sensor_names:
Iterable[str]) →
tuple[dict[str, dict], dict[str,
dict]]
Load compositor and modifier configuration files for the specified sensors.
Parameters
sensor_names (list of strings) – Sensor names that have matching sensor_name.yaml
config files.
Returns
Where comps is a dictionary:
sensor_name -> composite ID -> compositor object
And mods is a dictionary:
sensor_name -> modifier name -> (modifier class, modifiers options)
Return type
(comps, mods)

satpy.composites.glm module

Composite classes for the GLM instrument.


class satpy.composites.glm.HighlightCompositor(name, min_highlight=0.0, max_highlight=10.0,
max_factor=(0.8, 0.8, -0.8, 0), **kwargs)
Bases: GenericCompositor
Highlight pixels of a layer by an amount determined by a secondary layer.
The highlighting is applied per channel to either add or subtract an intensity from the primary image. In the
addition case, the code is essentially doing:

114 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

highlight_factor = (highlight_data - min_highlight) / (max_highlight - min_


˓→highlight)

channel_result = primary_data + highlight_factor * max_factor

The max_factor is defined per channel and can be positive for an additive effect, negative for a subtractive
effect, or zero for no effect.
Initialize composite with highlight factor options.
Parameters
• min_highlight (float) – Minimum raw value of the “highlight” data that will be used for
linearly scaling the data along with max_highlight.
• max_highlight (float) – Maximum raw value of the “highlight” data that will be used
for linearly scaling the data along with min_highlight.
• max_factor (tuple) – Maximum effect that the highlight data can have on each channel of
the primary image data. This will be multiplied by the linearly scaled highlight data and then
added or subtracted from the highlight channels. See class docstring for more information.
By default this is set to (0.8, 0.8, -0.8, 0) meaning the Red and Green channel will
be added to by at most 0.8, the Blue channel will be subtracted from by at most 0.8 (resulting
in yellow highlights), and the Alpha channel will not be affected.
_apply_highlight_effect(background_data, factor)

static _get_enhanced_background_data(background_layer)

_get_highlight_factor(highlight_data)

_update_attrs(new_data, background_layer, highlight_layer)

satpy.composites.sar module

Composite classes for the VIIRS instrument.


class satpy.composites.sar.SARIce(name, common_channel_mask=True, **kwargs)
Bases: GenericCompositor
The SAR Ice composite.
Collect custom configuration values.
Parameters
common_channel_mask (bool) – If True, mask all the channels with a mask that combines all
the invalid areas of the given data.
class satpy.composites.sar.SARIceLegacy(name, common_channel_mask=True, **kwargs)
Bases: GenericCompositor
The SAR Ice composite, legacy version with dynamic stretching.
Collect custom configuration values.
Parameters
common_channel_mask (bool) – If True, mask all the channels with a mask that combines all
the invalid areas of the given data.

2.15. satpy 115


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.composites.sar.SARIceLog(name, common_channel_mask=True, **kwargs)


Bases: GenericCompositor
The SAR Ice composite, using log-scale data.
Collect custom configuration values.
Parameters
common_channel_mask (bool) – If True, mask all the channels with a mask that combines all
the invalid areas of the given data.
class satpy.composites.sar.SARQuickLook(name, common_channel_mask=True, **kwargs)
Bases: GenericCompositor
The SAR QuickLook composite.
Collect custom configuration values.
Parameters
common_channel_mask (bool) – If True, mask all the channels with a mask that combines all
the invalid areas of the given data.
class satpy.composites.sar.SARRGB(name, common_channel_mask=True, **kwargs)
Bases: GenericCompositor
The SAR RGB composite.
Collect custom configuration values.
Parameters
common_channel_mask (bool) – If True, mask all the channels with a mask that combines all
the invalid areas of the given data.
satpy.composites.sar._square_root_channels(*projectables)
Return the square root of the channels, preserving the attributes.
satpy.composites.sar.overlay(top, bottom, maxval=None)
Blending two layers.
from: https://docs.gimp.org/en/gimp-concepts-layer-modes.html
satpy.composites.sar.soft_light(top, bottom, maxval)
Apply soft light.
http://www.pegtop.net/delphi/articles/blendmodes/softlight.htm

satpy.composites.spectral module

Composite classes for spectral adjustments.


class satpy.composites.spectral.HybridGreen(*args, fraction=0.15, **kwargs)
Bases: SpectralBlender
Corrector of the FCI or AHI green band.
The green band in FCI and AHI (and other bands centered at 0.51 microns) deliberately misses the chlorophyll
spectral reflectance local maximum at 0.55 microns in order to focus on aerosol and ash rather than on vegeta-
tion. This affects true colour RGBs, because vegetation looks brown rather than green and barren surface types
typically gets a reddish hue.
To correct for this the hybrid green approach proposed by Miller et al. (2016, DOI:10.1175/BAMS-D-15-
00154.2) is used. The basic idea is to include some contribution also from the 0.86 micron channel, which
is known for its sensitivity to vegetation. The formula used for this is:

116 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

hybrid_green = (1 - F) * R(0.51) + F * R(0.86)

where F is a constant value, that is set to 0.15 by default in Satpy.


For example, the HybridGreen compositor can be used as follows to construct a hybrid green channel for AHI,
with 15% contibution from the near-infrared 0.85 µm band (B04) and the remaining 85% from the native green
0.51 µm band (B02):

hybrid_green:
compositor: !!python/name:satpy.composites.spectral.HybridGreen
fraction: 0.15
prerequisites:
- name: B02
modifiers: [sunz_corrected, rayleigh_corrected]
- name: B04
modifiers: [sunz_corrected, rayleigh_corrected]
standard_name: toa_bidirectional_reflectance

Other examples can be found in the ahi.yaml and ami.yaml composite files in the satpy distribution.
Set default keyword argument values.
class satpy.composites.spectral.NDVIHybridGreen(*args, ndvi_min=0.0, ndvi_max=1.0, limits=(0.15,
0.05), strength=1.0, **kwargs)
Bases: SpectralBlender
Construct a NDVI-weighted hybrid green channel.
This green band correction follows the same approach as the HybridGreen compositor, but with a dynamic blend
factor f that depends on the pixel-level Normalized Differece Vegetation Index (NDVI). The higher the NDVI,
the smaller the contribution from the nir channel will be, following a liner (default) or non-linear relationship
between the two ranges [ndvi_min, ndvi_max] and limits.
As an example, a new green channel using e.g. FCI data and the NDVIHybridGreen compositor can be defined
like:

ndvi_hybrid_green:
compositor: !!python/name:satpy.composites.spectral.NDVIHybridGreen
ndvi_min: 0.0
ndvi_max: 1.0
limits: [0.15, 0.05]
strength: 1.0
prerequisites:
- name: vis_05
modifiers: [sunz_corrected, rayleigh_corrected]
- name: vis_06
modifiers: [sunz_corrected, rayleigh_corrected]
- name: vis_08
modifiers: [sunz_corrected ]
standard_name: toa_bidirectional_reflectance

In this example, pixels with NDVI=0.0 will be a weighted average with 15% contribution from the near-infrared
vis_08 channel and the remaining 85% from the native green vis_05 channel, whereas pixels with NDVI=1.0
will be a weighted average with 5% contribution from the near-infrared vis_08 channel and the remaining 95%
from the native green vis_05 channel. For other values of NDVI a linear interpolation between these values will
be performed.

2.15. satpy 117


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

A strength larger or smaller than 1.0 will introduce a non-linear relationship between the two ranges [ndvi_min,
ndvi_max] and limits. Hence, a higher strength (> 1.0) will result in a slower transition to higher/lower fractions
at the NDVI extremes. Similarly, a lower strength (< 1.0) will result in a faster transition to higher/lower fractions
at the NDVI extremes.
Initialize class and set the NDVI limits, blending fraction limits and strength.
_apply_strength(ndvi)
Introduce non-linearity by applying strength factor.
The method introduces non-linearity to the ndvi for a non-linear scaling from ndvi to blend fraction in
_compute_blend_fraction. This can be used for a slower or faster transision to higher/lower fractions at the
ndvi extremes. If strength equals 1.0, this operation has no effect on the ndvi.
_compute_blend_fraction(ndvi)
Compute pixel-level fraction of NIR signal to blend with native green signal.
This method linearly scales the input ndvi values to pixel-level blend fractions within the range [limits[0],
limits[1]] following this implementation <https://stats.stackexchange.com/a/281164>.
class satpy.composites.spectral.SpectralBlender(*args, fractions=(), **kwargs)
Bases: GenericCompositor
Construct new channel by blending contributions from a set of channels.
This class can be used to compute weighted average of different channels. Primarily it’s used to correct the green
band of AHI and FCI in order to allow for proper true color imagery.
Below is an example used to generate a corrected green channel for AHI using a weighted average from three
channels, with 63% contribution from the native green channel (B02), 29% from the red channel (B03) and 8%
from the near-infrared channel (B04):

corrected_green:
compositor: !!python/name:satpy.composites.spectral.SpectralBlender
fractions: [0.63, 0.29, 0.08]
prerequisites:
- name: B02
modifiers: [sunz_corrected, rayleigh_corrected]
- name: B03
modifiers: [sunz_corrected, rayleigh_corrected]
- name: B04
modifiers: [sunz_corrected, rayleigh_corrected]
standard_name: toa_bidirectional_reflectance

Other examples can be found in the``ahi.yaml`` composite file in the satpy distribution.
Set default keyword argument values.

satpy.composites.viirs module

Composite classes for the VIIRS instrument.


class satpy.composites.viirs.AdaptiveDNB(*args, **kwargs)
Bases: HistogramDNB
Adaptive histogram equalized DNB composite.
The logic for this code was taken from Polar2Grid and was originally developed by Eva Schiffer (SSEC).

118 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

This composite separates the DNB data in to 3 main regions: Day, Night, and Mixed. Each region is equalized
separately to bring out the most information from the region due to the high dynamic range of the DNB data.
Optionally, the mixed region can be separated in to multiple smaller regions by using the mixed_degree_step
keyword.
Initialize the compositor with values from the user or from the configuration file.
Adaptive histogram equalization and regular histogram equalization can be configured independently for each
region: day, night, or mixed. A region can be set to use adaptive equalization “always”, or “never”, or only when
there are multiple regions in a single scene “multiple” via the adaptive_X keyword arguments (see below).
Parameters
• adaptive_day – one of (“always”, “multiple”, “never”) meaning when adaptive equaliza-
tion is used.
• adaptive_mixed – one of (“always”, “multiple”, “never”) meaning when adaptive equal-
ization is used.
• adaptive_night – one of (“always”, “multiple”, “never”) meaning when adaptive equal-
ization is used.
_normalize_dnb_for_mask(dnb_data, sza_data, good_mask, output_dataset)

class satpy.composites.viirs.ERFDNB(*args, **kwargs)


Bases: CompositeBase
Equalized DNB composite using the error function (erf).
The logic for this code was taken from Polar2Grid and was originally developed by Curtis Seaman and Steve
Miller. The original code was written in IDL and is included as comments in the code below.
Initialize ERFDNB specific keyword arguments.
_saturation_correction(dnb_data, unit_factor, min_val, max_val)

class satpy.composites.viirs.HistogramDNB(*args, **kwargs)


Bases: CompositeBase
Histogram equalized DNB composite.
The logic for this code was taken from Polar2Grid and was originally developed by Eva Schiffer (SSEC).
This composite separates the DNB data in to 3 main regions: Day, Night, and Mixed. Each region is equalized
separately to bring out the most information from the region due to the high dynamic range of the DNB data.
Optionally, the mixed region can be separated in to multiple smaller regions by using the mixed_degree_step
keyword.
Initialize the compositor with values from the user or from the configuration file.
Parameters
• high_angle_cutoff – solar zenith angle threshold in degrees, values above this are con-
sidered “night”
• low_angle_cutoff – solar zenith angle threshold in degrees, values below this are consid-
ered “day”
• mixed_degree_step – Step interval to separate “mixed” region in to multiple parts by
default does whole mixed region
_normalize_dnb_for_mask(dnb_data, sza_data, good_mask, output_dataset)

2.15. satpy 119


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_normalize_dnb_with_day_night_masks(dnb_data, day_mask, mixed_mask, night_mask,


output_dataset)

_run_dnb_normalization(dnb_data, sza_data)
Scale the DNB data using a histogram equalization method.
Parameters
• dnb_data (ndarray) – Day/Night Band data array
• sza_data (ndarray) – Solar Zenith Angle data array
class satpy.composites.viirs.NCCZinke(name, prerequisites=None, optional_prerequisites=None,
**kwargs)
Bases: CompositeBase
Equalized DNB composite using the Zinke algorithm1 .

References
Initialise the compositor.
static _gain_factor(theta)

gain_factor(theta)
Compute gain factor in a dask-friendly manner.
class satpy.composites.viirs.SnowAge(name, common_channel_mask=True, **kwargs)
Bases: GenericCompositor
Create RGB snow product.
Product is based on method presented at the second CSPP/IMAPP users’ meeting at Eumetsat in Darmstadt on
14-16 April 2015
Bernard Bellec snow Look-Up Tables V 1.0 (c) Meteo-France These Look-up Tables allow you to create the RGB
snow product for SUOMI-NPP VIIRS Imager according to the algorithm presented at the second CSPP/IMAPP
users’ meeting at Eumetsat in Darmstadt on 14-16 April 2015 The algorithm and the product are described in
this presentation : http://www.ssec.wisc.edu/meetings/cspp/2015/Agenda%20PDF/Wednesday/Roquet_snow_
product_cspp2015.pdf as well as in the paper http://dx.doi.org/10.1016/j.rse.2017.04.028 For further informa-
tion you may contact Bernard Bellec at [email protected] or Pascale Roquet at [email protected]
Collect custom configuration values.
Parameters
common_channel_mask (bool) – If True, mask all the channels with a mask that combines all
the invalid areas of the given data.
satpy.composites.viirs._calculate_weights(tile_size)
Calculate a weight array for bilinear interpolation of histogram tiles.
The weight array will be used to quickly bilinearly-interpolate the histogram equalizations tile size should be the
width and height of a tile in pixels.
Returns: 4D weight array where the first 2 dimensions correspond to the
grid of where the tiles are relative to the tile being interpolated.

1 Stephan Zinke (2017),

A simplified high and near-constant contrast approach for the display of VIIRS day/night band imagery DOI:10.1080/01431161.2017.1338838

120 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.composites.viirs._check_moon_phase(moon_datasets: list[DataArray], start_time: datetime) → float


Check if we have Moon phase as an input dataset and, if not, calculate it.
satpy.composites.viirs._compute_tile_dist_and_bin_info(data: ndarray, valid_data_mask: ndarray,
std_mult_cutoff: float, do_log_scale: bool,
log_offset: float, clip_limit: float,
slope_limit: float, number_of_bins: int,
row_tiles: int, col_tiles: int, tile_size: int)

satpy.composites.viirs._get_cumul_bin_info_for_tile(num_row_tile, weight_row, num_col_tile,


weight_col, all_cumulative_dist_functions,
all_bin_information)

satpy.composites.viirs._histogram_equalization_helper(valid_data, number_of_bins, clip_limit=None,


slope_limit=None)
Calculate the simplest possible histogram equalization, using only valid data.
Returns
cumulative distribution function and bin information
satpy.composites.viirs._histogram_equalize_one_tile(data, valid_data_mask, std_mult_cutoff ,
do_log_scale, log_offset, clip_limit, slope_limit,
number_of_bins, num_row_tile, num_col_tile,
tile_size)

satpy.composites.viirs._interpolate_local_equalized_tiles(data, out, mask_to_equalize,


valid_data_mask, do_log_scale,
log_offset, tile_weights,
all_bin_information,
all_cumulative_dist_functions, row_idx,
col_idx, tile_size)

satpy.composites.viirs._linear_normalization_from_0to1(data, mask, theoretical_max,


theoretical_min=0, message='normalizing
equalized data to fit in 0 to 1 range')
Do a linear normalization so all data is in the 0 to 1 range.
This is a sloppy but fast calculation that relies on parameters giving it the correct theoretical current max and
min so it can scale the data accordingly.
satpy.composites.viirs.histogram_equalization(data, mask_to_equalize, number_of_bins=1000,
std_mult_cutoff=4.0,
do_zerotoone_normalization=True, out=None)
Perform a histogram equalization on the data.
Data is selected by the mask_to_equalize mask. The data will be separated into number_of_bins levels for
equalization and outliers beyond +/- std_mult_cutoff*std will be ignored.
If do_zerotoone_normalization is True the data selected by mask_to_equalize will be returned in the 0 to 1 range.
Otherwise the data selected by mask_to_equalize will be returned in the 0 to number_of_bins range.
Note: the data will be changed in place.

2.15. satpy 121


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.composites.viirs.local_histogram_equalization(data, mask_to_equalize,
valid_data_mask=None, number_of_bins=1000,
std_mult_cutoff=3.0,
do_zerotoone_normalization=True,
local_radius_px: int = 300, clip_limit=60.0,
slope_limit=3.0, do_log_scale=True,
log_offset=1e-05, out=None)
Equalize the provided data (in the mask_to_equalize) using adaptive histogram equalization.
Tiles of width/height (2 * local_radius_px + 1) will be calculated and results for each pixel will be bilinearly
interpolated from the nearest 4 tiles when pixels fall near the edge of the image (there is no adjacent tile) the
resultant interpolated sum from the available tiles will be multiplied to account for the weight of any missing
tiles:

pixel total interpolated value = pixel available interpolated value / (1 - missing␣


˓→interpolation weight)

If do_zerotoone_normalization is True the data will be scaled so that all data in the mask_to_equalize falls
between 0 and 1; otherwise the data in mask_to_equalize will all fall between 0 and number_of_bins.
Returns: The equalized data
satpy.composites.viirs.make_day_night_masks(solarZenithAngle, good_mask, highAngleCutoff ,
lowAngleCutoff , stepsDegrees=None)
Generate masks for day, night, and twilight regions.
Masks are created from the provided solar zenith angle data.
Optionally provide the highAngleCutoff and lowAngleCutoff that define the limits of the terminator region (if
no cutoffs are given the DEFAULT_HIGH_ANGLE and DEFAULT_LOW_ANGLE will be used).
Optionally provide the stepsDegrees that define how many degrees each “mixed” mask in the terminator region
should be (if no stepsDegrees is given, the whole terminator region will be one mask).

Module contents

Base classes for composite objects.


class satpy.composites.BackgroundCompositor(name, common_channel_mask=True, **kwargs)
Bases: GenericCompositor
A compositor that overlays one composite on top of another.
The output image mode will be determined by both foreground and background. Generally, when the background
has an alpha band, the output image will also have one.

122 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Foreground Background Result


L L L
L LA LA
L RGB RGB
L RGBA RGBA
LA L L
LA LA LA
LA RGB RGB
LA RGBA RGBA
RGB L RGB
RGB LA RGBA
RGB RGB RGB
RGB RGBA RGBA
RGBA L RGB
RGBA LA RGBA
RGBA RGB RGB
RGBA RGBA RGBA

Collect custom configuration values.


Parameters
common_channel_mask (bool) – If True, mask all the channels with a mask that combines all
the invalid areas of the given data.
_combine_metadata_with_mode_and_sensor(foreground: DataArray, background: DataArray) → dict

static _get_merged_image_data(foreground: DataArray, background: DataArray, initial_bg_alpha:


bool) → list[DataArray]

static _simple_overlay(foreground: DataArray, background: DataArray) → list[DataArray]

class satpy.composites.CategoricalDataCompositor(name, lut=None, **kwargs)


Bases: CompositeBase
Compositor used to recategorize categorical data using a look-up-table.
Each value in the data array will be recategorized to a new category defined in the look-up-table using the original
value as an index for that look-up-table.

Example
data = [[1, 3, 2], [4, 2, 0]] lut = [10, 20, 30, 40, 50] res = [[20, 40, 30], [50, 30, 10]]
Get look-up-table used to recategorize data.
Parameters
lut (list) – a list of new categories. The lenght must be greater than the maximum value in the
data array that should be recategorized.
static _getitem(block, lut)

_update_attrs(new_attrs)
Modify name and add LUT.
class satpy.composites.CloudCompositor(name, transition_min=258.15, transition_max=298.15,
transition_gamma=3.0, invert_alpha=False, **kwargs)

2.15. satpy 123


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Bases: GenericCompositor
Detect clouds based on thresholding and use it as a mask for compositing.
Collect custom configuration values.
Parameters
• transition_min (float) – Values below or equal to this are clouds -> opaque white
• transition_max (float) – Values above this are cloud free -> transparent
• transition_gamma (float) – Gamma correction to apply at the end
• invert_alpha (bool) – Invert the alpha channel to make low data values transparent and
high data values opaque.
class satpy.composites.ColorizeCompositor(name, common_channel_mask=True, **kwargs)
Bases: ColormapCompositor
A compositor colorizing the data, interpolating the palette colors when needed.

* Warning

Deprecated since Satpy 0.39. See the ColormapCompositor docstring for documentation on the alternative.

Collect custom configuration values.


Parameters
common_channel_mask (bool) – If True, mask all the channels with a mask that combines all
the invalid areas of the given data.
static _apply_colormap(colormap, data, palette)

class satpy.composites.ColormapCompositor(name, common_channel_mask=True, **kwargs)


Bases: GenericCompositor
A compositor that uses colormaps.

* Warning

Deprecated since Satpy 0.39.

This compositor is deprecated. To apply a colormap, use a SingleBandCompositor composite with a


colorize() or palettize() enhancement instead. For example, to make a cloud_top_height composite
based on a dataset ctth_alti palettized by ctth_alti_pal, the composite would be:

cloud_top_height:
compositor: !!python/name:satpy.composites.SingleBandCompositor
prerequisites:
- ctth_alti
tandard_name: cloud_top_height

and the enhancement:

124 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

cloud_top_height:
standard_name: cloud_top_height
operations:
- name: palettize
method: !!python/name:satpy.enhancements.palettize
kwargs:
palettes:
- dataset: ctth_alti_pal
color_scale: 255
min_value: 0
max_value: 255

Collect custom configuration values.


Parameters
common_channel_mask (bool) – If True, mask all the channels with a mask that combines all
the invalid areas of the given data.
_create_composite_from_channels(channels, template)

static _create_masked_dataarray_like(array, template, mask)

static _get_mask_from_data(data)

static build_colormap(palette, dtype, info)


Create the colormap from the raw_palette and the valid_range.
Colormaps come in different forms, but they are all supposed to have color values between 0 and 255. The
following cases are considered:
• Palettes comprised of only a list of colors. If dtype is uint8, the values of the colormap are the enu-
meration of the colors. Otherwise, the colormap values will be spread evenly from the min to the max
of the valid_range provided in info.
• Palettes that have a palette_meanings attribute. The palette meanings will be used as values of the
colormap.
class satpy.composites.CompositeBase(name, prerequisites=None, optional_prerequisites=None,
**kwargs)
Bases: object
Base class for all compositors and modifiers.
A compositor in Satpy is a class that takes in zero or more input DataArrays and produces a new DataArray with
its own identifier (name). The result of a compositor is typically a brand new “product” that represents something
different than the inputs that went into the operation.
See the ModifierBase class for information on the similar concept of “modifiers”.
Initialise the compositor.
static align_geo_coordinates(data_arrays: Sequence[DataArray]) → list[DataArray]
Align DataArrays along geolocation coordinates.
See align() for more information. This function uses the “override” join method to essentially ignore
differences between coordinates. The check_geolocation() should be called before this to ensure that
geolocation coordinates and “area” are compatible. The drop_coordinates() method should be called
before this to ensure that coordinates that are considered “negligible” when computing composites do not
affect alignment.

2.15. satpy 125


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

apply_modifier_info(origin, destination)
Apply the modifier info from origin to destination.
check_geolocation(data_arrays: Sequence[DataArray]) → None
Check that the geolocations of the data_arrays are compatible.
For the purpose of this method, “compatible” means:
• All arrays should have the same dimensions.
• Either all arrays should have an area, or none should.
• If all have an area, the areas should be all the same.

Parameters
data_arrays – Arrays to be checked
Raises
• IncompatibleAreas – If dimension or areas do not match.
• ValueError – If some, but not all data arrays lack an area attribute.

static drop_coordinates(data_arrays: Sequence[DataArray]) → list[DataArray]


Drop negligible non-dimensional coordinates.
Drops negligible coordinates if they do not correspond to any dimension. Negligible coordinates are defined
in the NEGLIGIBLE_COORDS module attribute.
Parameters
data_arrays (List[arrays]) – Arrays to be checked
property id
Return the DataID of the object.
match_data_arrays(data_arrays: Sequence[DataArray]) → list[DataArray]
Match data arrays so that they can be used together in a composite.
For the purpose of this method, “can be used together” means:
• All arrays should have the same dimensions.
• Either all arrays should have an area, or none should.
• If all have an area, the areas should be all the same.
In addition, negligible non-dimensional coordinates are dropped (see drop_coordinates()) and dask
chunks are unified (see satpy.utils.unify_chunks()).
Parameters
data_arrays (List[arrays]) – Arrays to be checked
Returns
Arrays with negligible non-dimensional coordinates removed.
Return type
data_arrays (List[arrays])
Raises
• IncompatibleAreas – If dimension or areas do not match.
• ValueError – If some, but not all data arrays lack an area attribute.

126 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.composites.DayNightCompositor(name, lim_low=85.0, lim_high=88.0, day_night='day_night',


include_alpha=True, **kwargs)
Bases: GenericCompositor
A compositor that blends day data with night data.
Using the day_night flag it is also possible to provide only a day product or only a night product and mask out
(make transparent) the opposite portion of the image (night or day). See the documentation below for more
details.
Collect custom configuration values.
Parameters
• lim_low (float) – lower limit of Sun zenith angle for the blending of the given channels
• lim_high (float) – upper limit of Sun zenith angle for the blending of the given channels
• day_night (string) – “day_night” means both day and night portions will be kept
“day_only” means only day portion will be kept “night_only” means only night portion will
be kept
• include_alpha (bool) – This only affects the “day only” or “night only” result. True means
an alpha band will be added to the output image for transparency. False means the output is
a single-band image with undesired pixels being masked out (replaced with NaNs).
_get_coszen_blending_weights(projectables: Sequence[DataArray]) → DataArray

_get_data_for_combined_product(day_data, night_data)

_get_data_for_single_side_product(foreground_data: DataArray, weights: DataArray) →


tuple[DataArray, DataArray, DataArray]

_get_day_night_data_for_single_side_product(foreground_data)

_mask_weights(weights)

_mask_weights_with_data(weights: DataArray, day_data: DataArray, night_data: DataArray) →


DataArray

_weight_data(day_data: DataArray, night_data: DataArray, weights: DataArray, attrs: dict) →


list[DataArray]

class satpy.composites.DifferenceCompositor(name, prerequisites=None, optional_prerequisites=None,


**kwargs)
Bases: CompositeBase
Make the difference of two data arrays.
Initialise the compositor.
class satpy.composites.Filler(name, common_channel_mask=True, **kwargs)
Bases: GenericCompositor
Fix holes in projectable 1 with data from projectable 2.
Collect custom configuration values.
Parameters
common_channel_mask (bool) – If True, mask all the channels with a mask that combines all
the invalid areas of the given data.

2.15. satpy 127


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.composites.FillingCompositor(name, common_channel_mask=True, **kwargs)


Bases: GenericCompositor
Make a regular RGB, filling the RGB bands with the first provided dataset’s values.
Collect custom configuration values.
Parameters
common_channel_mask (bool) – If True, mask all the channels with a mask that combines all
the invalid areas of the given data.
class satpy.composites.GenericCompositor(name, common_channel_mask=True, **kwargs)
Bases: CompositeBase
Basic colored composite builder.
Collect custom configuration values.
Parameters
common_channel_mask (bool) – If True, mask all the channels with a mask that combines all
the invalid areas of the given data.
_concat_datasets(projectables, mode)

_get_sensors(projectables)

classmethod infer_mode(data_arr)
Guess at the mode for a particular DataArray.
modes = {1: 'L', 2: 'LA', 3: 'RGB', 4: 'RGBA'}

class satpy.composites.HighCloudCompositor(name, transition_min_limits=(210.0, 230.0),


latitude_min_limits=(30.0, 60.0), transition_max=300,
transition_gamma=1.0, **kwargs)
Bases: CloudCompositor
Detect high clouds based on latitude-dependent thresholding and use it as a mask for compositing.
This compositor aims at identifying high clouds and assigning them a transparency based on the brightness
temperature (cloud opacity). In contrast to the CloudCompositor, the brightness temperature threshold at the
lower end, used to identify high opaque clouds, is made a function of the latitude in order to have tropopause
level clouds appear opaque at both high and low latitudes. This follows the Geocolor implementation of high
clouds in Miller et al. (2020, DOI:10.1175/JTECH-D-19-0134.1), but with some adjustments to the thresholds
based on recent developments and feedback from CIRA.
The two brightness temperature thresholds in transition_min are used together with the corresponding latitude
limits in latitude_min to compute a modified version of transition_min that is later used when calling CloudCom-
positor. The modified version of transition_min will be an array with the same shape as the input projectable
dataset, where the actual values of threshold_min are a function of the dataset latitude:
• transition_min = transition_min[0] where abs(latitude) < latitude_min(0)
• transition_min = transition_min[1] where abs(latitude) > latitude_min(0)
• transition_min = linear interpolation between transition_min[0] and transition_min[1] as a function
of where abs(latitude).
Collect custom configuration values.
Parameters
• transition_min_limits (tuple) – Brightness temperature values used to identify
opaque white clouds at different latitudes

128 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• transition_max (float) – Brightness temperatures above this value are not considered to
be high clouds -> transparent
• latitude_min_limits (tuple) – Latitude values defining the intervals for computing
latitude-dependent transition_min values from transition_min_limits.
• transition_gamma (float) – Gamma correction to apply to the alpha channel within the
brightness temperature range (transition_min to transition_max).
exception satpy.composites.IncompatibleAreas
Bases: Exception
Error raised upon compositing things of different shapes.
exception satpy.composites.IncompatibleTimes
Bases: Exception
Error raised upon compositing things from different times.
class satpy.composites.LongitudeMaskingCompositor(name, lon_min=None, lon_max=None, **kwargs)
Bases: SingleBandCompositor
Masks areas outside defined longitudes.
Collect custom configuration values.
Parameters
• lon_min (float) – lower longitude limit
• lon_max (float) – upper longitude limit
class satpy.composites.LowCloudCompositor(name, values_land=(1,), values_water=(0,),
range_land=(0.0, 4.0), range_water=(0.0, 4.0),
transition_gamma=1.0, invert_alpha=True, **kwargs)
Bases: CloudCompositor
Detect low-level clouds based on thresholding and use it as a mask for compositing during night-time.
This compositor computes the brightness temperature difference between a window channel (e.g. 10.5 micron)
and the near-infrared channel e.g. (3.8 micron) and uses this brightness temperature difference, BTD, to create a
partially transparent mask for compositing.
Pixels with BTD values below a given threshold will be transparent, whereas pixels with BTD values above
another threshold will be opaque. The transparency of all other BTD values will be a linear function of the
BTD value itself. Two sets of thresholds are used, one set for land surface types (range_land) and another
one for water surface types (range_water), respectively. Hence, this compositor requires a land-water-mask
as a prerequisite input. This follows the GeoColor implementation of night-time low-level clouds in Miller et
al. (2020, DOI:10.1175/JTECH-D-19-0134.1), but with some adjustments to the thresholds based on recent
developments and feedback from CIRA.
Please note that the spectral test and thus the output of the compositor (using the expected input data) is only
applicable during night-time.
Init info.
Collect custom configuration values.
Parameters
• values_land (list) – List of values used to identify land surface pixels in the land-water-
mask.

2.15. satpy 129


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• values_water (list) – List of values used to identify water surface pixels in the land-
water-mask.
• range_land (tuple) – Threshold values used for masking low-level clouds from the bright-
ness temperature difference over land surface types.
• range_water (tuple) – Threshold values used for masking low-level clouds from the
brightness temperature difference over water.
• transition_gamma (float) – Gamma correction to apply to the alpha channel within the
brightness temperature difference range.
• invert_alpha (bool) – Invert the alpha channel to make low data values transparent and
high data values opaque.
class satpy.composites.LuminanceSharpeningCompositor(name, common_channel_mask=True,
**kwargs)
Bases: GenericCompositor
Create a high resolution composite by sharpening a low resolution using high resolution luminance.
This is done by converting to YCbCr colorspace, replacing Y, and convertin back to RGB.
Collect custom configuration values.
Parameters
common_channel_mask (bool) – If True, mask all the channels with a mask that combines all
the invalid areas of the given data.
class satpy.composites.MaskingCompositor(name, transparency=None, conditions=None, mode='LA',
**kwargs)
Bases: GenericCompositor
A compositor that masks e.g. IR 10.8 channel data using cloud products from NWC SAF.
Collect custom configuration values.
Kwargs:
transparency (dict): transparency for each cloud type as
key-value pairs in a dictionary. Will be converted to conditions. DEPRECATED.
conditions (list): list of three items determining the masking
settings.
mode (str, optional): Image mode to return. For single-band input,
this shall be “LA” (default) or “RGBA”. For multi-band input, this argument is ignored as the result is
always RGBA.
Each condition in conditions consists of three items:
• method: Numpy method name. The following are supported
operations: less, less_equal, equal, greater_equal, greater, not_equal, isnan, isfinite, isinf, isneginf, or
isposinf.
• value: threshold value of the mask applied with the
operator. Can be a string, in which case the corresponding value will be determined from
flag_meanings and flag_values attributes of the mask. NOTE: the value should not be given to ‘is*`
methods.
• transparency: transparency from interval [0 . . . 100] used
for the method/threshold. Value of 100 is fully transparent.
Example:

130 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

>>> conditions = [{'method': 'greater_equal', 'value': 0,


'transparency': 100},
{'method': 'greater_equal', 'value': 1,
'transparency': 80},
{'method': 'greater_equal', 'value': 2,
'transparency': 0},
{'method': 'isnan',
'transparency': 100}]
>>> compositor = MaskingCompositor("masking compositor",
transparency=transparency)
>>> result = compositor([data, mask])

This will set transparency of data based on the values in the mask dataset. Locations where mask has values of
0 will be fully transparent, locations with 1 will be semi-transparent and locations with 2 will be fully visible in
the resulting image. In the end all NaN areas in the mask are set to full transparency. All the unlisted locations
will be visible.
The transparency is implemented by adding an alpha layer to the composite. The locations with transparency of
100 will be set to NaN in the data. If the input data contains an alpha channel, it will be discarded.
_get_alpha_bands(data, mask_in, alpha_attrs)
Get alpha bands.
From input data, masks, and attributes, get alpha band.
_get_mask(method, value, mask_data)
Get mask array from mask_data using method and threshold value.
The method is the name of a numpy function.
_select_data_bands(data_in)
Select data to be composited from input data.
From input data, select the bands that need to have masking applied.
_set_data_nans(data, mask, attrs)
Set data to nans where mask is True.
The attributes attrs* will be written to each band in data.
_supported_modes = {'LA', 'RGBA'}

class satpy.composites.MultiFiller(name, prerequisites=None, optional_prerequisites=None, **kwargs)


Bases: SingleBandCompositor
Fix holes in projectable 1 with data from the next projectables.
Initialise the compositor.
satpy.composites.NEGLIGIBLE_COORDS = ['time']
Keywords identifying non-dimensional coordinates to be ignored during composite generation.
class satpy.composites.NaturalEnh(name, ch16_w=1.3, ch08_w=2.5, ch06_w=2.2, *args, **kwargs)
Bases: GenericCompositor
Enhanced version of natural color composite by Simon Proud.
Parameters
• ch16_w (float) – weight for red channel (1.6 um). Default: 1.3

2.15. satpy 131


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• ch08_w (float) – weight for green channel (0.8 um). Default: 2.5
• ch06_w (float) – weight for blue channel (0.6 um). Default: 2.2
Initialize the class.
class satpy.composites.PaletteCompositor(name, common_channel_mask=True, **kwargs)
Bases: ColormapCompositor
A compositor colorizing the data, not interpolating the palette colors.

* Warning

Deprecated since Satpy 0.39. See the ColormapCompositor docstring for documentation on the alternative.

Collect custom configuration values.


Parameters
common_channel_mask (bool) – If True, mask all the channels with a mask that combines all
the invalid areas of the given data.
static _apply_colormap(colormap, data, palette)

class satpy.composites.RGBCompositor(name, common_channel_mask=True, **kwargs)


Bases: GenericCompositor
Make a composite from three color bands (deprecated).
Collect custom configuration values.
Parameters
common_channel_mask (bool) – If True, mask all the channels with a mask that combines all
the invalid areas of the given data.
class satpy.composites.RatioCompositor(name, prerequisites=None, optional_prerequisites=None,
**kwargs)
Bases: CompositeBase
Make the ratio of two data arrays.
Initialise the compositor.
class satpy.composites.RatioSharpenedRGB(*args, **kwargs)
Bases: GenericCompositor
Sharpen RGB bands with ratio of a high resolution band to a lower resolution version.
Any pixels where the ratio is computed to be negative or infinity, it is reset to 1. Additionally, the ratio is limited
to 1.5 on the high end to avoid high changes due to small discrepancies in instrument detector footprint. Note
that the input data to this compositor must already be resampled so all data arrays are the same shape.
Example:

R_lo - 1000m resolution - shape=(2000, 2000)


G - 1000m resolution - shape=(2000, 2000)
B - 1000m resolution - shape=(2000, 2000)
R_hi - 500m resolution - shape=(4000, 4000)

ratio = R_hi / R_lo


(continues on next page)

132 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


new_R = R_hi
new_G = G * ratio
new_B = B * ratio

In some cases, there could be multiple high resolution bands:

R_lo - 1000m resolution - shape=(2000, 2000)


G_hi - 500m resolution - shape=(4000, 4000)
B - 1000m resolution - shape=(2000, 2000)
R_hi - 500m resolution - shape=(4000, 4000)

To avoid the green band getting involved in calculating ratio or sharpening, add “neutral_resolution_band: green”
in the YAML config file. This way only the blue band will get sharpened:

ratio = R_hi / R_lo


new_R = R_hi
new_G = G_hi
new_B = B * ratio

Instanciate the ration sharpener.


_combined_sharpened_info(info, new_attrs)

_get_and_sharpen_rgb_data_arrays_and_meta(datasets, optional_datasets)

_sharpen_bands_with_high_res(bands, high_res)

class satpy.composites.RealisticColors(name, common_channel_mask=True, **kwargs)


Bases: GenericCompositor
Create a realistic colours composite for SEVIRI.
Collect custom configuration values.
Parameters
common_channel_mask (bool) – If True, mask all the channels with a mask that combines all
the invalid areas of the given data.
class satpy.composites.SandwichCompositor(name, common_channel_mask=True, **kwargs)
Bases: GenericCompositor
Make a sandwich product.
Collect custom configuration values.
Parameters
common_channel_mask (bool) – If True, mask all the channels with a mask that combines all
the invalid areas of the given data.
class satpy.composites.SelfSharpenedRGB(*args, **kwargs)
Bases: RatioSharpenedRGB
Sharpen RGB with ratio of a band with a strided-version of itself.
Example:

2.15. satpy 133


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

R - 500m resolution - shape=(4000, 4000)


G - 1000m resolution - shape=(2000, 2000)
B - 1000m resolution - shape=(2000, 2000)

ratio = R / four_element_average(R)
new_R = R
new_G = G * ratio
new_B = B * ratio

Instanciate the ration sharpener.


static four_element_average_dask(d)
Average every 4 elements (2x2) in a 2D array.
class satpy.composites.SingleBandCompositor(name, prerequisites=None, optional_prerequisites=None,
**kwargs)
Bases: CompositeBase
Basic single-band composite builder.
This preserves all the attributes of the dataset it is derived from.
Initialise the compositor.
static _update_missing_metadata(existing_attrs, new_attrs)

class satpy.composites.StaticImageCompositor(name, filename=None, url=None, known_hash=None,


area=None, **kwargs)
Bases: GenericCompositor, DataDownloadMixin
A compositor that loads a static image from disk.
Environment variables in the filename are automatically expanded.
Collect custom configuration values.
Parameters
• filename (str) – Name to use when storing and referring to the file in the data_dir cache.
If url is provided (preferred), then this is used as the filename in the cache and will be ap-
pended to <data_dir>/composites/<class_name>/. If url is provided and filename
is not then the filename will be guessed from the url. If url is not provided, then it is
assumed filename refers to a local file. If the filename does not come with an absolute
path, data_dir will be used as the directory path. Environment variables are expanded.
• url (str) – URL to remote file. When the composite is created the file will be downloaded
and cached in Satpy’s data_dir. Environment variables are expanded.
• known_hash (str or None) – Hash of the remote file used to verify a successful down-
load. If not provided then the download will not be verified. See satpy.aux_download.
register_file() for more information.
• area (str) – Name of area definition for the image. Optional for images with built-in area
definitions (geotiff).

Use cases:
1. url + no filename: Satpy determines the filename based on the filename in the URL, then downloads
the URL, and saves it to <data_dir>/<filename>. If the file already exists and known_hash is also

134 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

provided, then the pooch library compares the hash of the file to the known_hash. If it does not match,
then the URL is re-downloaded. If it matches then no download.
2. url + relative filename: Same as case 1 but filename is already provided so download goes to
<data_dir>/<filename>. Same hashing behavior. This does not check for an absolute path.
3. No url + absolute filename: No download, filename is passed directly to generic_image reader. No
hashing is done.
4. No url + relative filename: Check if <data_dir>/<filename> exists. If it does then make filename an
absolute path. If it doesn’t, then keep it as is and let the exception at the bottom of the method get
raised.

static _check_relative_filename(filename)

_get_cache_filename_and_url(filename, url)

_retrieve_data_file()

register_data_files(data_files)
Tell Satpy about files we may want to download.
class satpy.composites.SumCompositor(name, prerequisites=None, optional_prerequisites=None,
**kwargs)
Bases: CompositeBase
Make the sum of two data arrays.
Initialise the compositor.
satpy.composites._apply_palette_to_image(img)

satpy.composites._get_alpha(dataset: DataArray)

satpy.composites._get_band_names(day_data, night_data)

satpy.composites._get_data_from_enhanced_image(dset, convert_p)

satpy.composites._get_flag_value(mask, val)
Get a numerical value of the named flag.
This function assumes the naming used in product generated with NWC SAF GEO/PPS softwares.
satpy.composites._get_sharpening_ratio(high_res, low_res)

satpy.composites._get_single_band_data(data, band)

satpy.composites._get_single_channel(data: DataArray) → DataArray

satpy.composites._get_weight_mask_for_daynight_product(weights, data_a, data_b)

satpy.composites._get_weight_mask_for_single_side_product(data_a, data_b)

satpy.composites._insert_palette_colors(channels, palette)

satpy.composites._mean4(data, offset=(0, 0), block_id=None)

satpy.composites.add_alpha_bands(data)
Only used for DayNightCompositor.
Add an alpha band to L or RGB composite as prerequisites for the following band matching to make the masked-
out area transparent.

2.15. satpy 135


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.composites.add_bands(data, bands)
Add bands so that they match bands.
satpy.composites.check_times(projectables)
Check that projectables have compatible times.
satpy.composites.enhance2dataset(dset, convert_p=False)
Return the enhancement dataset dset as an array.
If convert_p is True, enhancements generating a P mode will be converted to RGB or RGBA.
satpy.composites.sub_arrays(proj1, proj2)
Substract two DataArrays and combine their attrs.
satpy.composites.zero_missing_data(data1, data2)
Replace NaN values with zeros in data1 if the data is valid in data2.

satpy.dataset package

Submodules

satpy.dataset.anc_vars module

Utilities for dealing with ancillary variables.


satpy.dataset.anc_vars.dataset_walker(datasets)
Walk through datasets and their ancillary data.
Yields datasets and their parent.
satpy.dataset.anc_vars.replace_anc(dataset, parent_dataset)
Replace dataset the parent_dataset’s ancillary_variables field.

satpy.dataset.data_dict module

Classes and functions related to a dictionary with DataID keys.


class satpy.dataset.data_dict.DatasetDict
Bases: dict
Special dictionary object that can handle dict operations based on dataset name, wavelength, or DataID.
Note: Internal dictionary keys are DataID objects.
_create_dataid_key(key, value_info)
Create a DataID key from dictionary.
_create_id_keys_from_dict(value_info_dict)
Create id_keys from dict.
contains(item)
Check contains when we know the exact DataID.
get(key, default=None)
Get value with optional default.
get_key(match_key, num_results=1, best=True, **dfilter)
Get multiple fully-specified keys that match the provided query.
Parameters

136 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• key (DataID) – DataID of query parameters to use for searching. Any parameter that is
None is considered a wild card and any match is accepted. Can also be a string representing
the dataset name or a number representing the dataset wavelength.
• num_results (int) – Number of results to return. If 0 return all, if 1 return only that
element, otherwise return a list of matching keys.
• **dfilter (dict) – See get_key function for more information.
getitem(item)
Get Node when we know the exact DataID.
keys(names=False, wavelengths=False)
Give currently contained keys.
exception satpy.dataset.data_dict.TooManyResults
Bases: KeyError
Special exception when one key maps to multiple items in the container.
satpy.dataset.data_dict.get_best_dataset_key(key, choices)
Choose the “best” DataID from choices based on key.
To see how the keys are sorted, refer to :meth:satpy.datasets.DataQuery.sort_dataids.
This function assumes choices has already been filtered to only include datasets that match the provided key.
Parameters
• key (DataQuery) – Query parameters to sort choices by.
• choices (iterable) – DataID objects to sort through to determine the best dataset.

Returns: List of best DataID`s from `choices. If there is more


than one element this function could not choose between the available datasets.

satpy.dataset.data_dict.get_key(key, key_container, num_results=1, best=True, query=None, **kwargs)


Get the fully-specified key best matching the provided key.
Only the best match is returned if best is True (default). See get_best_dataset_key for more information on how
this is determined.
query is provided as a convenience to filter by multiple parameters at once without having to filter by multiple
key inputs.
Parameters
• key (DataID) – DataID of query parameters to use for searching. Any parameter that is
None is considered a wild card and any match is accepted.
• key_container (dict or set) – Container of DataID objects that uses hashing to quickly
access items.
• num_results (int) – Number of results to return. Use 0 for all matching results. If 1 then
the single matching key is returned instead of a list of length 1. (default: 1)
• best (bool) – Sort results to get “best” result first (default: True). See get_best_dataset_key
for details.
• query (DataQuery) – filter for the key which can contain for example:
resolution (float, int, or list): Resolution of the dataset in
dataset units (typically meters). This can also be a list of these numbers.

2.15. satpy 137


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

calibration (str or list): Dataset calibration


(ex.’reflectance’). This can also be a list of these strings.
polarization (str or list): Dataset polarization
(ex.’V’). This can also be a list of these strings.
level (number or list): Dataset level (ex. 100). This can also be a
list of these numbers.
modifiers (list): Modifiers applied to the dataset. Unlike
resolution and calibration this is the exact desired list of modifiers for one dataset, not a
list of possible modifiers.
Returns
Matching key(s)
Return type
list or DataID

Raises: KeyError if no matching results or if more than one result is


found when num_results is 1.

satpy.dataset.dataid module

Dataset identifying objects.


class satpy.dataset.dataid.DataID(id_keys, **keyval_dict)
Bases: dict
Identifier for all DataArray objects.
DataID is a dict that holds identifying and classifying information about a DataArray.
Init the DataID.
The id_keys dictionary has to be formed as described in Satpy internal workings: having a look under the hood.
The other keyword arguments are values to be assigned to the keys. Note that None isn’t a valid value and will
simply be ignored.
_asdict()

_find_modifiers_key()

_immutable(*args, **kws) → NoReturn


Raise and error.
_replace(**kwargs)
Make a new instance with replaced items.
classmethod _unpickle(id_keys, keyval)
Create a new instance of the DataID after pickling.
clear(*args, **kws) → NoReturn
Raise and error.
convert_dict(keyvals)
Convert a dictionary’s values to the types defined in this object’s id_keys.
create_filter_query_without_required_fields(query)
Remove the required fields from query.

138 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

create_less_modified_query()
Create a query with one less modifier.
static fix_id_keys(id_keys)
Flesh out enums in the id keys as gotten from a config.
classmethod from_dataarray(array, default_keys={'name': {'required': True}, 'resolution': {'transitive':
True}})
Get the DataID using the dataarray attributes.
from_dict(keyvals)
Create a DataID from a dictionary.
property id_keys
Get the id_keys.
is_modified()
Check if this is modified.
classmethod new_id_from_dataarray(array, default_keys={'name': {'required': True}, 'resolution':
{'transitive': True}})
Create a new DataID from a dataarray’s attributes.
pop(*args, **kws) → NoReturn
Raise and error.
popitem(*args, **kws) → NoReturn
Raise and error.
setdefault(*args, **kws) → NoReturn
Raise and error.
to_dict()
Convert the ID to a dict.
update(*args, **kws) → NoReturn
Raise and error.
class satpy.dataset.dataid.DataQuery(**kwargs)
Bases: object
The data query object.
A DataQuery can be used in Satpy to query for a Dataset. This way a fully qualified DataID can be found even
if some DataID elements are unknown. In this case a * signifies something that is unknown or not applicable to
the requested Dataset.
Initialize the query.
static _add_absolute_distance(dataid, key, distance)

static _add_distance_from_query(dataid_val, requested_val, distance)

_asdict()

_match_dataid(dataid)
Match the dataid with the current query.
_match_query_value(key, id_val)

2.15. satpy 139


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_shares_required_keys(dataid)
Check if dataid shares required keys with the current query.
_to_trimmed_dict()

create_less_modified_query()
Create a query with one less modifier.
filter_dataids(dataid_container)
Filter DataIDs based on this query.
classmethod from_dict(the_dict)
Convert a dict to an ID.
get(key, default=None)
Get an item.
is_modified()
Check if this is modified.
items()
Get the items of this query.
sort_dataids(dataids)
Sort the DataIDs based on this query.
Returns the sorted dataids and the list of distances.
The sorting is performed based on the types of the keys to search on (as they are defined in the DataIDs
from dataids). If that type defines a distance method, then it is used to find how ‘far’ the DataID is from
the current query. If the type is a number, a simple subtraction is performed. For other types, the distance
is 0 if the values are identical, np.inf otherwise.
For example, with the default DataID, we use the following criteria:
1. Central wavelength is nearest to the key wavelength if specified.
2. Least modified dataset if modifiers is None in key. Otherwise, the modifiers are ignored.
3. Highest calibration if calibration is None in key. Calibration priority is the order of the calibration list
defined as reflectance, brightness temperature, radiance counts if not overridden in the reader config-
uration.
4. Best resolution (smallest number) if resolution is None in key. Otherwise, the resolution is ignored.
sort_dataids_with_preference(all_ids, preference)
Sort all_ids given a sorting preference (DataQuery or None).
to_dict(trim=True)
Convert the ID to a dict.
class satpy.dataset.dataid.ModifierTuple(iterable=(), / )
Bases: tuple
A tuple holder for modifiers.
classmethod convert(modifiers)
Convert modifiers to this type if possible.

140 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.dataset.dataid.ValueList(value, names=None, *, module=None, qualname=None, type=None,


start=1, boundary=None)
Bases: IntEnum
A static value list.
This class is meant to be used for dynamically created Enums. Due to this it should not be used as a normal
Enum class or there may be some unexpected behavior. For example, this class contains custom pickling and
unpickling handling that may break in subclasses.
classmethod _unpickle(enum_name, enum_members, enum_member)
Create dynamic class that was previously pickled.
See __reduce_ex__() for implementation details.
classmethod convert(value)
Convert value to an instance of this class.
class satpy.dataset.dataid.WavelengthRange(min, central, max, unit='µm')
Bases: WavelengthRange
A named tuple for wavelength ranges.
The elements of the range are min, central and max values, and optionally a unit (defaults to µm). No clever unit
conversion is done here, it’s just used for checking that two ranges are comparable.
Create new instance of WavelengthRange(min, central, max, unit)
classmethod _read_cf_from_string_export(blob)
Read blob as a string created by to_cf.
classmethod _read_cf_from_string_list(blob)
Read blob as a list of strings (legacy formatting).
classmethod convert(wl)
Convert wl to this type if possible.
distance(value)
Get the distance from value.
classmethod from_cf(blob)
Return a WavelengthRange from a cf blob.
to_cf()
Serialize for cf export.
satpy.dataset.dataid._create_id_dict_from_any_key(dataset_key)

satpy.dataset.dataid._generalize_value_for_comparison(val)
Get a generalize value for comparisons.
satpy.dataset.dataid._update_dict_with_filter_query(ds_dict, filter_query)

satpy.dataset.dataid.create_filtered_query(dataset_key, filter_query)
Create a DataQuery matching dataset_key and filter_query.
If a property is specified in both dataset_key and filter_query, the former has priority.
satpy.dataset.dataid.default_co_keys_config = {'name': {'required': True},
'resolution': {'transitive': True}}
Default ID keys for coordinate DataArrays.

2.15. satpy 141


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.dataset.dataid.default_id_keys_config = {'calibration': {'enum': ['reflectance',


'brightness_temperature', 'radiance', 'radiance_wavenumber', 'counts'], 'transitive':
True}, 'modifiers': {'default': (), 'type': <class
'satpy.dataset.dataid.ModifierTuple'>}, 'name': {'required': True}, 'resolution':
{'transitive': False}, 'wavelength': {'type': <class
'satpy.dataset.dataid.WavelengthRange'>}}
Default ID keys DataArrays.
satpy.dataset.dataid.get_keys_from_config(common_id_keys, config)
Gather keys for a new DataID from the ones available in configured dataset.
satpy.dataset.dataid.minimal_default_keys_config = {'name': {'required': True},
'resolution': {'transitive': True}}
Minimal ID keys for DataArrays, for example composites.
satpy.dataset.dataid.wlklass
alias of WavelengthRange

satpy.dataset.metadata module

Utilities for merging metadata from various sources.


satpy.dataset.metadata._all_arrays_equal(arrays)
Check if the arrays are equal.
If the arrays are lazy, just check if they have the same identity.
satpy.dataset.metadata._all_close(values)

satpy.dataset.metadata._all_dicts_equal(dicts)

satpy.dataset.metadata._all_equal(values)

satpy.dataset.metadata._all_identical(values)
Check that the identities of all values are the same.
satpy.dataset.metadata._all_list_of_arrays_equal(array_lists)
Check that the lists of arrays are equal.
satpy.dataset.metadata._all_non_dicts_equal(values)

satpy.dataset.metadata._all_values_equal(values)

satpy.dataset.metadata._are_values_combinable(values)
Check if the values can be combined.
satpy.dataset.metadata._combine_shared_info(shared_keys, info_dicts)

satpy.dataset.metadata._combine_time_parameters(values)

satpy.dataset.metadata._combine_times(key, values)

satpy.dataset.metadata._combine_values(key, values, shared_info)

satpy.dataset.metadata._contain_arrays(values)

satpy.dataset.metadata._contain_collections_of_arrays(values)

142 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.dataset.metadata._contain_dicts(values)

satpy.dataset.metadata._dict_equal(d1, d2)
Check that two dictionaries are equal.
Nested dictionaries are flattened to facilitate comparison.
satpy.dataset.metadata._dict_keys_equal(d1, d2)

satpy.dataset.metadata._filter_time_values(values)
Remove values that are not datetime objects.
satpy.dataset.metadata._get_valid_dicts(metadata_objects)
Get the valid dictionaries matching the metadata_objects.
satpy.dataset.metadata._is_all_arrays(value)

satpy.dataset.metadata._is_array(val)
Check if val is an array.
satpy.dataset.metadata._is_equal(a, b, comp_func)

satpy.dataset.metadata._is_non_empty_collection(value)

satpy.dataset.metadata._pairwise_all(func, values)

satpy.dataset.metadata._shared_keys(info_dicts)

satpy.dataset.metadata.average_datetimes(datetime_list)
Average a series of datetime objects.

á Note

This function assumes all datetime objects are naive and in the same time zone (UTC).

Parameters
datetime_list (iterable) – Datetime objects to average

Returns: Average datetime as a datetime object


satpy.dataset.metadata.combine_metadata(*metadata_objects, average_times=None)
Combine the metadata of two or more Datasets.
If the values corresponding to any keys are not equal or do not exist in all provided dictionaries then they are not
included in the returned dictionary.
All values of the keys containing the substring ‘start_time’ will be set to the earliest value and similarly for
‘end_time’ to latest time. All other keys containing the word ‘time’ are averaged. Before these adjustments,
None values resulting from data that don’t have times associated to them are removed. These rules are applied
also to values in the ‘time_parameters’ dictionary.
Changed in version 0.47: Before Satpy 0.47, all times, including start_time and end_time, were averaged.
In the interest of processing time, lazy arrays are compared by object identity rather than by their contents.
Parameters
*metadata_objects – MetadataObject or dict objects to combine

2.15. satpy 143


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Kwargs:
average_times (bool): Removed option to average all time attributes.

Returns
the combined metadata
Return type
dict

Module contents

Classes and functions related to data identification and querying.

satpy.demo package

Submodules

satpy.demo._google_cloud_platform module

satpy.demo._google_cloud_platform._download_gcs_files(globbed_files, fs, base_dir, force)

satpy.demo._google_cloud_platform.get_bucket_files(glob_pattern, base_dir, force=False,


pattern_slice=None)
Download files from Google Cloud Storage.
Parameters
• glob_pattern (str or list) – Glob pattern string or series of patterns used to search
for on Google Cloud Storage. The pattern should include the “gs://” protocol prefix. If a list
of lists, then the results of each sublist pattern are concatenated and the result is treated as
one pattern result. This is important for things like pattern_slice and complicated glob
patterns not supported by GCP.
• base_dir (str) – Root directory to place downloaded files on the local system.
• force (bool) – Force re-download of data regardless of its existence on the local system.
Warning: May delete non-demo files stored in download directory.
• pattern_slice (slice) – Slice object to limit the number of files returned by each glob
pattern.
satpy.demo._google_cloud_platform.is_google_cloud_instance()
Check if we are on a GCP virtual machine.

satpy.demo.abi_l1b module

Demo data download helper functions for ABI L1b data.


satpy.demo.abi_l1b.get_hurricane_florence_abi(base_dir=None, method=None, force=False,
channels=None, num_frames=10)
Get GOES-16 ABI (Meso sector) data from 2018-09-11 13:00Z to 17:00Z.
Parameters
• base_dir (str) – Base directory for downloaded files.
• method (str) – Force download method for the data if not already cached. Allowed options
are: ‘gcsfs’. Default of None will choose the best method based on environment settings.

144 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• force (bool) – Force re-download of data regardless of its existence on the local system.
Warning: May delete non-demo files stored in download directory.
• channels (list) – Channels to include in download. Defaults to all 16 channels.
• num_frames (int or slice) – Number of frames to download. Maximum 240 frames.
Default 10 frames.
Size per frame (all channels): ~15MB
Total size (default 10 frames, all channels): ~124MB
Total size (240 frames, all channels): ~3.5GB
satpy.demo.abi_l1b.get_us_midlatitude_cyclone_abi(base_dir=None, method=None, force=False)
Get GOES-16 ABI (CONUS sector) data from 2019-03-14 00:00Z.
Parameters
• base_dir (str) – Base directory for downloaded files.
• method (str) – Force download method for the data if not already cached. Allowed options
are: ‘gcsfs’. Default of None will choose the best method based on environment settings.
• force (bool) – Force re-download of data regardless of its existence on the local system.
Warning: May delete non-demo files stored in download directory.
Total size: ~110MB

satpy.demo.ahi_hsd module

Demo data download helper functions for AHI HSD data.


satpy.demo.ahi_hsd.download_typhoon_surigae_ahi(base_dir=None, channels=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16), segments=(1, 2, 3, 4, 5, 6, 7, 8,
9, 10))
Download Himawari 8 data.
This scene shows the Typhoon Surigae.

satpy.demo.fci module

Demo FCI data download.


satpy.demo.fci._unpack_tarfile_to(filename, subdir)
Unpack content of tarfile in filename to subdir.
satpy.demo.fci.download_fci_test_data(base_dir=None)
Download FCI test data.
Download the nominal FCI test data from July 2020.
satpy.demo.fci.get_fci_test_data_dir(base_dir=None)
Get directory for FCI test data.

satpy.demo.seviri_hrit module

Demo data download for SEVIRI HRIT files.


satpy.demo.seviri_hrit._create_full_set()
Create the full set dictionary.

2.15. satpy 145


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.demo.seviri_hrit._generate_filenames(pattern, channel, segments)


Generate the filenames for channel and segments.
satpy.demo.seviri_hrit.download_seviri_hrit_20180228_1500(base_dir=None, subset=None)
Download the SEVIRI HRIT files for 2018-02-28T15:00.
subset is a dictionary with the channels as keys and granules to download as values, eg:

{"HRV": [1, 2, 3], "IR_108": [1, 2], "EPI": None}

satpy.demo.seviri_hrit.generate_subset_of_filenames(subset=None, base_dir='')
Generate SEVIRI HRIT filenames.

satpy.demo.utils module

Utilities for demo data download.


satpy.demo.utils.download_url(source, target)
Download a url in stream mode.

satpy.demo.viirs_sdr module

Demo data download for VIIRS SDR HDF5 files.


satpy.demo.viirs_sdr._get_filenames_to_download(channels, granules)

satpy.demo.viirs_sdr._yield_specific_granules(filenames, granules)

satpy.demo.viirs_sdr.get_viirs_sdr_20170128_1229(base_dir=None, channels=('I01', 'I02', 'I03', 'I04',


'I05', 'M01', 'M02', 'M03', 'M04', 'M05', 'M06',
'M07', 'M08', 'M09', 'M10', 'M11', 'M12', 'M13',
'M14', 'M15', 'M16', 'DNB'), granules=(1, 2, 3, 4, 5,
6, 7, 8, 9, 10))
Get VIIRS SDR files for 2017-01-28 12:29 to 12:43.
These files are downloaded from Zenodo. You can see the full file listing here: https://zenodo.org/record/263296
Specific channels can be specified with the channels keyword argument. By default, all channels (all I bands, M
bands, and DNB bands) will be downloaded. Channels are referred to by their band type and channel number (ex.
“I01” or “M16” or “DNB”). Terrain-corrected geolocation files are always downloaded when the corresponding
band data is specified.
The granules argument will control which granules (“time steps”) are downloaded. There are 10 available and
the keyword argument can be specified as a tuple of integers from 1 to 10.
This full dataset is ~10.1GB.

Notes
File list was retrieved using the zenodo API.

import requests
viirs_listing = requests.get("https://zenodo.org/api/records/263296")
viirs_dict = json.loads(viirs_listing.content)
print("\n".join(sorted(x['links']['self'] for x in viirs_dict['files'])))

146 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Module contents

Demo data download helper functions.


Each get_* function below downloads files to a local directory and returns a list of paths to those files. Some (not all)
functions have multiple options for how the data is downloaded (via the method keyword argument) including:
• gcsfs:
Download data from a public google cloud storage bucket using the gcsfs package.
• unidata_thredds:
Access data using OpenDAP or similar method from Unidata’s public THREDDS server (https://thredds.
unidata.ucar.edu/thredds/catalog.html).
• uwaos_thredds:
Access data using OpenDAP or similar method from the University of Wisconsin - Madison’s AOS depart-
ment’s THREDDS server.
• http:
A last resort download method when nothing else is available of a tarball or zip file from one or more
servers available to the Satpy project.
• uw_arcdata:
A network mount available on many servers at the Space Science and Engineering Center (SSEC) at the
University of Wisconsin - Madison. This is method is mainly meant when tutorials are taught at the SSEC
using a Jupyter Hub server.
To use these functions, do:

>>> from satpy import Scene, demo


>>> filenames = demo.get_us_midlatitude_cyclone_abi()
>>> scn = Scene(reader='abi_l1b', filenames=filenames)

satpy.enhancements package

Submodules

satpy.enhancements.abi module

Enhancement functions specific to the ABI sensor.


satpy.enhancements.abi._cimss_true_color_contrast(img_data)
Perform per-chunk enhancement.
Code ported from Kaba Bah’s AWIPS python plugin for creating the CIMSS Natural (True) Color image in
AWIPS. AWIPS provides that python code the image data on a 0-255 scale. Satpy gives this function the data on
a 0-1.0 scale (assuming linear stretching and sqrt enhancements have already been applied).
satpy.enhancements.abi.cimss_true_color_contrast(img, **kwargs)
Scale data based on CIMSS True Color recipe for AWIPS.

satpy.enhancements.mimic module

Mimic TPW Color enhancements.


satpy.enhancements.mimic.nrl_colors(img, **kwargs)
TPW color table based on NRL Color table (0-76 mm).

2.15. satpy 147


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.enhancements.mimic.total_precipitable_water(img, **kwargs)
Palettizes images from MIMIC TPW data.
This modifies the image’s data so the correct colors can be applied to it, and then palettizes the image.

satpy.enhancements.viirs module

Enhancements specific to the VIIRS instrument.


satpy.enhancements.viirs._water_detection(img_data)

satpy.enhancements.viirs.water_detection(img, **kwargs)
Palettizes images from VIIRS flood data.
This modifies the image’s data so the correct colors can be applied to it, and then palettizes the image.

Module contents

Enhancements.
satpy.enhancements._bt_threshold(band_data, threshold, high_coeffs, low_coeffs)

satpy.enhancements._cira_stretch(band_data)

satpy.enhancements._compute_luminance_from_rgb(r, g, b)
Compute the luminance of the image.
satpy.enhancements._create_colormap_from_dataset(img, dataset, color_scale)
Create a colormap from an auxiliary variable in a source file.
satpy.enhancements._get_cmap_from_palette_info(palette, img, color_scale)

satpy.enhancements._jma_true_color_reproduction(img_data, platform=None)
Convert from AHI RGB space to sRGB space.
The conversion matrices for this are supplied per-platform. The matrices are computed using the method de-
scribed in the paper: ‘True Color Imagery Rendering for Himawari-8 with a Color Reproduction Approach
Based on the CIE XYZ Color System’ (DOI:10.2151/jmsj.2018-049).
satpy.enhancements._lookup_table(band_data, luts=None, index=-1)

satpy.enhancements._merge_colormaps(kwargs, img=None)
Merge colormaps listed in kwargs.
satpy.enhancements._piecewise_linear(band_data, xp, fp)

satpy.enhancements._srgb_gamma(arr)
Apply the srgb gamma.
satpy.enhancements._three_d_effect(band_data, kernel=None, mode=None, index=None)

satpy.enhancements._three_d_effect_delayed(band_data, kernel, mode)


Kernel for running delayed 3D effect creation.
satpy.enhancements.btemp_threshold(img, min_in, max_in, threshold, threshold_out=None, **kwargs)
Scale data linearly in two separate regions.
This enhancement scales the input data linearly by splitting the data into two regions; min_in to threshold and
threshold to max_in. These regions are mapped to 1 to threshold_out and threshold_out to 0 respectively, result-
ing in the data being “flipped” around the threshold. A default threshold_out is set to 176.0 / 255.0 to match the
behavior of the US National Weather Service’s forecasting tool called AWIPS.

148 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Parameters
• img (XRImage) – Image object to be scaled
• min_in (float) – Minimum input value to scale
• max_in (float) – Maximum input value to scale
• threshold (float) – Input value where to split data in to two regions
• threshold_out (float) – Output value to map the input threshold to. Optional, defaults
to 176.0 / 255.0.
satpy.enhancements.cira_stretch(img, **kwargs)
Logarithmic stretch adapted to human vision.
Applicable only for visible channels.
satpy.enhancements.colorize(img, **kwargs)
Colorize the given image.
Parameters
img – image to be colorized

Kwargs:
palettes: colormap(s) to use
The palettes kwarg can be one of the following:
• a trollimage.colormap.Colormap object
• list of dictionaries with each of one of the following forms:
– {‘filename’: ‘/path/to/colors.npy’,
‘min_value’: <float, min value to match colors to>, ‘max_value’: <float, min value to match
colors to>, ‘reverse’: <bool, reverse the colormap if True (default: False)}
– {‘colors’: <trollimage.colormap.Colormap instance>,
‘min_value’: <float, min value to match colors to>, ‘max_value’: <float, min value to match
colors to>, ‘reverse’: <bool, reverse the colormap if True (default: False)}
– {‘colors’: <tuple of RGB(A) tuples>,
‘min_value’: <float, min value to match colors to>, ‘max_value’: <float, min value to match
colors to>, ‘reverse’: <bool, reverse the colormap if True (default: False)}
– {‘colors’: <tuple of RGB(A) tuples>,
‘values’: <tuple of values to match colors to>, ‘min_value’: <float, min value to match col-
ors to>, ‘max_value’: <float, min value to match colors to>, ‘reverse’: <bool, reverse the
colormap if True (default: False)}
– {‘dataset’: <str, referring to dataset containing palette>,
‘color_scale’: <int, value to be interpreted as white>, ‘min_value’: <float, see above>,
‘max_value’: <float, see above>}

If multiple palettes are supplied, they are concatenated before applied.


satpy.enhancements.create_colormap(palette, img=None)
Create colormap of the given numpy file, color vector, or colormap.
Parameters
palette (dict) – Information describing how to create a colormap object. See below for more
details.

2.15. satpy 149


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

From a file
Colormaps can be loaded from .npy, .npz, or comma-separated text files. Numpy (npy/npz) files should be
2D arrays with rows for each color. Comma-separated files should have a row for each color with each column
representing a single value/channel. The filename to load can be provided with the filename key in the provided
palette information. A filename ending with .npy or .npz is read as a numpy file with numpy.load(). All other
extensions are read as a comma-separated file. For .npz files the data must be stored as a positional list where
the first element represents the colormap to use. See numpy.savez() for more information. The path to the
colormap can be relative if it is stored in a directory specified by Component Configuration Path. Otherwise it
should be an absolute path.
The colormap is interpreted as 1 of 4 different “colormap modes”: RGB, RGBA, VRGB, or VRGBA. The colormap
mode can be forced with the colormap_mode key in the provided palette information. If it is not provided then
a default will be chosen based on the number of columns in the array (3: RGB, 4: VRGB, 5: VRGBA).
The “V” in the possible colormap modes represents the control value of where that color should be applied. If
“V” is not provided in the colormap data it defaults to the row index in the colormap array (0, 1, 2, . . . ) divided
by the total number of colors to produce a number between 0 and 1. See the “Set Range” section below for more
information. The remaining elements in the colormap array represent the Red (R), Green (G), and Blue (B) color
to be mapped to.
See the “Color Scale” section below for more information on the value range of provided numbers.
From a list
Colormaps can be loaded from lists of colors provided by the colors key in the provided dictionary. Each
element in the list represents a single color to be mapped to and can be 3 (RGB) or 4 (RGBA) elements long. By
default, the value or control point for a color is determined by the index in the list (0, 1, 2, . . . ) divided by the
total number of colors to produce a number between 0 and 1. This can be overridden by providing a values key
in the provided dictionary. See the “Set Range” section below for more information.
See the “Color Scale” section below for more information on the value range of provided numbers.
From a builtin colormap
Colormaps can be loaded by name from the builtin colormaps in the trollimage` package. Specify the name
with the colors key in the provided dictionary (ex. {'colors': 'blues'}). See Colormap for the full list
of available colormaps.
From an auxiliary variable
If the colormap is defined in the same dataset as the data to which the colormap shall be applied, this can be indi-
cated with {'dataset': 'palette_variable'}, where 'palette_variable' is the name of the variable
containing the palette. This variable must be an auxiliary variable to the dataset to which the colours are applied.
When using this, it is important that one should not set min_value and max_value as those will be taken from
the valid_range attribute on the dataset and if those differ from min_value and max_value, the resulting
colors will not match the ones in the palette.
Color Scale
By default colors are expected to be in a 0-255 range. This can be overridden by specifying color_scale in the
provided colormap information. A common alternative to 255 is 1 to specify floating point numbers between 0
and 1. The resulting Colormap uses the normalized color values (0-1).
Set Range
By default the control points or values of the Colormap are between 0 and 1. This means that data values being
mapped to a color must also be between 0 and 1. When this is not the case, the expected input range of the
data can be used to configure the Colormap and change the control point values. To do this specify the input
data range with min_value and max_value. See trollimage.colormap.Colormap.set_range() for more
information.

150 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Set Alpha Range


The alpha channel of a created colormap can be added and/or modified by specifying min_alpha and
max_alpha. See trollimage.colormap.Colormap.set_alpha_range() for more info.
satpy.enhancements.exclude_alpha(func)
Exclude the alpha channel from the DataArray before further processing.
satpy.enhancements.gamma(img, **kwargs)
Perform gamma correction.
satpy.enhancements.invert(img, *args)
Perform inversion.
satpy.enhancements.jma_true_color_reproduction(img)
Apply CIE XYZ matrix and return True Color Reproduction data.
Himawari-8 True Color Reproduction Approach Based on the CIE XYZ Color System Hidehiko MURATA,
Kotaro SAITOH, and Yasuhiko SUMIDA Meteorological Satellite Center, Japan Meteorological Agency NOAA
National Environmental Satellite, Data, and Information Service Colorado State University—CIRA https://www.
jma.go.jp/jma/jma-eng/satellite/introduction/TCR.html
satpy.enhancements.lookup(img, **kwargs)
Assign values to channels based on a table.
satpy.enhancements.on_dask_array(func)
Pass the underlying dask array to func instead of the xarray.DataArray.
satpy.enhancements.on_separate_bands(func)
Apply func one band of the DataArray at a time.
If this decorator is to be applied along with on_dask_array, this decorator has to be applied first, eg:

@on_separate_bands
@on_dask_array
def my_enhancement_function(data):
...

satpy.enhancements.palettize(img, **kwargs)
Palettize the given image (no color interpolation).
Arguments as for colorize().
NB: to retain the palette when saving the resulting image, pass keep_palette=True to the save method (either
via the Scene class or directly in trollimage).
satpy.enhancements.piecewise_linear_stretch(img: XRImage, xp: _SupportsArray[dtype[Any]] |
_NestedSequence[_SupportsArray[dtype[Any]]] | bool | int
| float | complex | str | bytes | _NestedSequence[bool | int |
float | complex | str | bytes], fp:
_SupportsArray[dtype[Any]] |
_NestedSequence[_SupportsArray[dtype[Any]]] | bool | int
| float | complex | str | bytes | _NestedSequence[bool | int |
float | complex | str | bytes], reference_scale_factor:
Number | None = None, **kwargs) → DataArray
Apply 1D linear interpolation.
This uses numpy.interp() mapped over the provided dask array chunks.
Parameters

2.15. satpy 151


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• img – Image data to be scaled. It is assumed the data is already normalized between 0 and 1.
• xp – Input reference values of the image data points used for interpolation. This is passed
directly to numpy.interp().
• fp – Target reference values of the output image data points used for interpolation. This is
passed directly to numpy.interp().
• reference_scale_factor – Divide xp and fp by this value before using them for interpo-
lation. This is a convenience to make matching normalized image data to interp coordinates
or to avoid floating point precision errors in YAML configuration files. If not provided, xp
and fp will not be modified.

Examples
This example YAML uses a ‘crude’ stretch to pre-scale the RGB data and then uses reference points in a 0-255
range.

true_color_linear_interpolation:
sensor: abi
standard_name: true_color
operations:
- name: reflectance_range
method: !!python/name:satpy.enhancements.stretch
kwargs: {stretch: 'crude', min_stretch: 0., max_stretch: 100.}
- name: Linear interpolation
method: !!python/name:satpy.enhancements.piecewise_linear_stretch
kwargs:
xp: [0., 25., 55., 100., 255.]
fp: [0., 90., 140., 175., 255.]
reference_scale_factor: 255

This example YAML does the same as the above on the C02 channel, but the interpolation reference points are
already adjusted for the input reflectance (%) data and the output range (0 to 1).

c02_linear_interpolation:
sensor: abi
standard_name: C02
operations:
- name: Linear interpolation
method: !!python/name:satpy.enhancements.piecewise_linear_stretch
kwargs:
xp: [0., 9.8039, 21.5686, 39.2157, 100.]
fp: [0., 0.3529, 0.5490, 0.6863, 1.0]

satpy.enhancements.reinhard_to_srgb(img, saturation=1.25, white=100, **kwargs)


Stretch method based on the Reinhard algorithm, using luminance.
Parameters
• saturation – Saturation enhancement factor. Less is grayer. Neutral is 1.
• white – the reflectance luminance to set to white (in %).
Reinhard, Erik & Stark, Michael & Shirley, Peter & Ferwerda, James. (2002). Photographic Tone Reproduction
For Digital Images. ACM Transactions on Graphics. :doi: 21. 10.1145/566654.566575

152 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.enhancements.stretch(img, **kwargs)
Perform stretch.
satpy.enhancements.three_d_effect(img, **kwargs)
Create 3D effect using convolution.
satpy.enhancements.using_map_blocks(func)
Run the provided function using dask.array.core.map_blocks().
This means dask will call the provided function with a single chunk as a numpy array.

satpy.modifiers package

Submodules

satpy.modifiers._crefl module

Classes related to the CREFL (corrected reflectance) modifier.


class satpy.modifiers._crefl.ReflectanceCorrector(*args, dem_filename=None, dem_sds='averaged
elevation', url=None, known_hash=None,
**kwargs)
Bases: ModifierBase, DataDownloadMixin
Corrected Reflectance (crefl) modifier.
Uses a python rewrite of the C CREFL code written for VIIRS and MODIS.
Initialize the compositor with values from the user or from the configuration file.
If dem_filename can’t be found or opened then correction is done assuming TOA or sealevel options.
Parameters
• dem_filename (str) – DEPRECATED
• url (str) – URL or local path to the Digital Elevation Model (DEM) HDF4 file. If unset
(None or empty string), then elevation is assumed to be 0 everywhere.
• known_hash (str) – Optional SHA256 checksum to verify the download of url.
• dem_sds (str) – Name of the variable in the elevation file to load.
_call_crefl(refl_data, angles)

_extract_angle_data_arrays(datasets, optional_datasets)

_get_average_elevation()

_get_registered_dem_cache_key()

static _read_fill_value_from_hdf4(var, dtype)

static _read_var_from_hdf4_file(local_filename, var_name)

static _read_var_from_hdf4_file_netcdf4(local_filename, var_name)

static _read_var_from_hdf4_file_pyhdf(local_filename, var_name)

2.15. satpy 153


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.modifiers._crefl_utils module

Shared utilities for correcting reflectance data using the ‘crefl’ algorithm.
The CREFL algorithm in this module is based on the NASA CREFL SPA software, the NASA CVIIRS SPA, and
customizations of these algorithms for ABI/AHI by Ralph Kuehn and Min Oo at the Space Science and Engineering
Center (SSEC).
The CREFL SPA documentation page describes the algorithm by saying:
The CREFL_SPA processes MODIS Aqua and Terra Level 1B DB data to create the MODIS Level 2
Corrected Reflectance product. The algorithm performs a simple atmospheric correction with MODIS
visible, near-infrared, and short-wave infrared bands (bands 1 through 16).
It corrects for molecular (Rayleigh) scattering and gaseous absorption (water vapor and ozone) using clima-
tological values for gas contents. It requires no real-time input of ancillary data. The algorithm performs
no aerosol correction. The Corrected Reflectance products created by CREFL_SPA are very similar to
the MODIS Land Surface Reflectance product (MOD09) in clear atmospheric conditions, since the algo-
rithms used to derive both are based on the 6S Radiative Transfer Model. The products show differences
in the presence of aerosols, however, because the MODIS Land Surface Reflectance product uses a more
complex atmospheric correction algorithm that includes a correction for aerosols.
The additional logic to support ABI (AHI support not included) was originally written by Ralph Kuehn and Min Oo at
SSEC. Additional modifications were performed by Martin Raspaud, David Hoese, and Will Roberts to make the code
work together and be more dask compatible.
The AHI/ABI implementation is based on the MODIS collection 6 algorithm, where a spherical-shell atmosphere was
assumed rather than a plane-parallel. See Appendix A in: “The Collection 6 MODIS aerosol products over land and
ocean” Atmos. Meas. Tech., 6, 2989–3034, 2013 www.atmos-meas-tech.net/6/2989/2013/ DOI:10.5194/amt-6-2989-
2013.
The original CREFL code is similar to what is described in appendix A1 (page 74) of the ATBD for the MODIS
MOD04/MYD04 data product.
class satpy.modifiers._crefl_utils._ABIAtmosphereVariables(G_O3, G_H2O, G_O2, *args)
Bases: _AtmosphereVariables
_get_th2o()

_get_to2()

_get_to3()

class satpy.modifiers._crefl_utils._ABICREFLRunner(refl_data_arr)
Bases: _CREFLRunner
_run_crefl(mus, muv, phi, solar_zenith, sensor_zenith, height, coeffs)

property coeffs_cls: Type[_Coefficients]

class satpy.modifiers._crefl_utils._ABICoefficients(wavelength_range, resolution=0)


Bases: _Coefficients
COEFF_INDEX_MAP: dict[int, dict[tuple | str, int]] = {2000: {'C01': 0, 'C02': 1,
'C03': 2, 'C05': 3, 'C06': 4, (0.45, 0.47, 0.49, 'µm'): 0, (0.59, 0.64, 0.69,
'µm'): 1, (0.8455, 0.865, 0.8845, 'µm'): 2, (1.58, 1.61, 1.64, 'µm'): 3, (2.225,
2.25, 2.275, 'µm'): 4}}

154 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

LUTS: list[ndarray] = [array([0.0024111 , 0.00431497, 0.0079258 , 0.0093392 , 0.0253


]), array([0.001236 , 0.0037296 , 0.00017772, 0.0104899 , 0.0163 ]),
array([4.2869000e-03, 1.4107995e-02, 8.0243190e-04, 0.0000000e+00, 2.0000000e-05]),
array([0.18472 , 0.052349 , 0.015845 , 0.0013074 , 0.00031129])]

RG_FUDGE = 0.55

class satpy.modifiers._crefl_utils._AtmosphereVariables(mus, muv, phi, height, ah2o, bh2o, ao3,


tau)
Bases: object
_get_th2o()

_get_to2()

_get_to3()

class satpy.modifiers._crefl_utils._CREFLRunner(refl_data_arr)
Bases: object
_height_from_avg_elevation(avg_elevation: ndarray | None) → Array | float
Get digital elevation map data for our granule with ocean fill value set to 0.
_run_crefl(mus, muv, phi, solar_zenith, sensor_zenith, height, coeffs)

property coeffs_cls: Type[_Coefficients]

class satpy.modifiers._crefl_utils._Coefficients(wavelength_range, resolution=0)


Bases: object
COEFF_INDEX_MAP: dict[int, dict[tuple | str, int]] = {}

LUTS: list[ndarray] = []

_find_coefficient_index(wavelength_range, resolution=0)
Return index in to coefficient arrays for this band’s wavelength.
This function search through the COEFF_INDEX_MAP dictionary and finds the first key where the nominal
wavelength of wavelength_range falls between the minimum wavelength and maximum wavelength of the
key. wavelength_range can also be the standard name of the band. For example, “M05” for VIIRS or “1”
for MODIS.
Parameters
• wavelength_range – 3-element tuple of (min wavelength, nominal wavelength, max
wavelength) or the string name of the band.
• resolution – resolution of the band to be corrected
Returns
index in to coefficient arrays like aH2O, aO3, etc. None is returned if no matching wavelength
is found
satpy.modifiers._crefl_utils._G_calc(zenith, a_coeff )

class satpy.modifiers._crefl_utils._MODISAtmosphereVariables(*args)
Bases: _VIIRSAtmosphereVariables
_get_th2o()

2.15. satpy 155


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_to3()

class satpy.modifiers._crefl_utils._MODISCREFLRunner(refl_data_arr)
Bases: _VIIRSMODISCREFLRunner
_run_crefl(mus, muv, phi, solar_zenith, sensor_zenith, height, coeffs)

property coeffs_cls: Type[_Coefficients]

class satpy.modifiers._crefl_utils._MODISCoefficients(wavelength_range, resolution=0)


Bases: _Coefficients
COEFF_INDEX_MAP: dict[int, dict[tuple | str, int]] = {250: {'1': 0, '2': 1, '3':
2, '4': 3, '5': 4, '6': 5, '7': 6, (0.459, 0.469, 0.479, 'µm'): 2, (0.545,
0.555, 0.565, 'µm'): 3, (0.62, 0.645, 0.67, 'µm'): 0, (0.841, 0.8585, 0.876,
'µm'): 1, (1.23, 1.24, 1.25, 'µm'): 4, (1.628, 1.64, 1.652, 'µm'): 5, (2.105,
2.13, 2.155, 'µm'): 6}, 500: {'1': 0, '2': 1, '3': 2, '4': 3, '5': 4, '6':
5, '7': 6, (0.459, 0.469, 0.479, 'µm'): 2, (0.545, 0.555, 0.565, 'µm'): 3, (0.62,
0.645, 0.67, 'µm'): 0, (0.841, 0.8585, 0.876, 'µm'): 1, (1.23, 1.24, 1.25, 'µm'):
4, (1.628, 1.64, 1.652, 'µm'): 5, (2.105, 2.13, 2.155, 'µm'): 6}, 1000: {'1': 0,
'2': 1, '3': 2, '4': 3, '5': 4, '6': 5, '7': 6, (0.459, 0.469, 0.479, 'µm'):
2, (0.545, 0.555, 0.565, 'µm'): 3, (0.62, 0.645, 0.67, 'µm'): 0, (0.841, 0.8585,
0.876, 'µm'): 1, (1.23, 1.24, 1.25, 'µm'): 4, (1.628, 1.64, 1.652, 'µm'): 5,
(2.105, 2.13, 2.155, 'µm'): 6}}

LUTS: list[ndarray] = [array([-5.60723, -5.25251, 0. , 0. , -6.29824, -7.70944,


-3.91877, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ]), array([0.820175, 0.725159,
0. , 0. , 0.865732, 0.966947, 0.745342, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.
]), array([0.0715289 , 0. , 0.00743232, 0.089691 , 0. , 0. , 0. , 0.001 , 0.00383 ,
0.0225 , 0.0663 , 0.0836 , 0.0485 , 0.0395 , 0.0119 , 0.00263 ]), array([0.051 ,
0.01631, 0.19325, 0.09536, 0.00366, 0.00123, 0.00043, 0.3139 , 0.2375 , 0.1596 ,
0.1131 , 0.0994 , 0.0446 , 0.0416 , 0.0286 , 0.0155 ])]

class satpy.modifiers._crefl_utils._VIIRSAtmosphereVariables(*args)
Bases: _AtmosphereVariables
_compute_airmass()

_get_th2o()

_get_to3()

class satpy.modifiers._crefl_utils._VIIRSCREFLRunner(refl_data_arr)
Bases: _VIIRSMODISCREFLRunner
_run_crefl(mus, muv, phi, solar_zenith, sensor_zenith, height, coeffs)

property coeffs_cls: Type[_Coefficients]

class satpy.modifiers._crefl_utils._VIIRSCoefficients(wavelength_range, resolution=0)


Bases: _Coefficients
COEFF_INDEX_MAP: dict[int, dict[tuple | str, int]] = {500: {'I01': 7, 'I02': 8,
'I03': 9, (0.6, 0.64, 0.68, 'µm'): 7, (0.845, 0.865, 0.884, 'µm'): 8, (1.58,
1.61, 1.64, 'µm'): 9}, 1000: {'M03': 2, 'M04': 3, 'M05': 0, 'M07': 1, 'M08':
4, 'M10': 5, 'M11': 6, (0.478, 0.488, 0.498, 'µm'): 2, (0.545, 0.555, 0.565,
'µm'): 3, (0.662, 0.672, 0.682, 'µm'): 0, (0.846, 0.865, 0.885, 'µm'): 1, (1.23,
1.24, 1.25, 'µm'): 4, (1.58, 1.61, 1.64, 'µm'): 5, (2.225, 2.25, 2.275, 'µm'):
6}}

156 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

LUTS: list[ndarray] = [array([4.06601e-04, 1.59330e-03, 0.00000e+00, 1.78644e-05,


2.96457e-03, 6.17252e-04, 9.96563e-04, 2.22253e-03, 9.40050e-04, 5.63288e-04,
0.00000e+00, 0.00000e+00, 0.00000e+00, 0.00000e+00, 0.00000e+00, 0.00000e+00]),
array([0.812659, 0.832931, 1. , 0.867785, 0.806816, 0.944958, 0.78812 , 0.791204,
0.900564, 0.942907, 0. , 0. , 0. , 0. , 0. , 0. ]), array([0.0433461, 0. ,
0.0178299, 0.0853012, 0. , 0. , 0. , 0.0813531, 0. , 0. , 0.0663 , 0.0836 , 0.0485 ,
0.0395 , 0.0119 , 0.00263 ]), array([0.0435 , 0.01582, 0.16176, 0.0974 , 0.00369,
0.00132, 0.00033, 0.05373, 0.01561, 0.00129, 0.1131 , 0.0994 , 0.0446 , 0.0416 ,
0.0286 , 0.0155 ])]

class satpy.modifiers._crefl_utils._VIIRSMODISCREFLRunner(refl_data_arr)
Bases: _CREFLRunner
_run_crefl(mus, muv, phi, solar_zenith, sensor_zenith, height, coeffs)

satpy.modifiers._crefl_utils._chand(phi, muv, mus, taur)

satpy.modifiers._crefl_utils._correct_refl(refl, tOG, rhoray, TtotraytH2O, sphalb)

satpy.modifiers._crefl_utils._csalbr(tau)

satpy.modifiers._crefl_utils._run_crefl(refl, mus, muv, phi, height, sensor_name, *coeffs)

satpy.modifiers._crefl_utils._run_crefl_abi(refl, mus, muv, phi, solar_zenith, sensor_zenith, height,


*coeffs)

satpy.modifiers._crefl_utils._runner_class_for_sensor(sensor_name: str) → Type[_CREFLRunner]

satpy.modifiers._crefl_utils._space_mask_height(lon, lat, avg_elevation)

satpy.modifiers._crefl_utils.run_crefl(refl, sensor_azimuth, sensor_zenith, solar_azimuth, solar_zenith,


avg_elevation=None)
Run main crefl algorithm.
All input parameters are per-pixel values meaning they are the same size and shape as the input reflectance data,
unless otherwise stated.
Parameters
• refl – tuple of reflectance band arrays
• sensor_azimuth – input swath sensor azimuth angle array
• sensor_zenith – input swath sensor zenith angle array
• solar_azimuth – input swath solar azimuth angle array
• solar_zenith – input swath solar zenith angle array
• avg_elevation – average elevation (usually pre-calculated and stored in CMGDEM.hdf)

satpy.modifiers.angles module

Utilties for getting various angles for a dataset..

2.15. satpy 157


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.modifiers.angles.ZarrCacheHelper(func: ~typing.Callable, cache_config_key: str,


uncacheable_arg_types=(<class
'pyresample.geometry.SwathDefinition'>, <class
'xarray.core.dataarray.DataArray'>, <class
'dask.array.core.Array'>), sanitize_args_func:
~typing.Callable | None = None, cache_version: int = 1)
Bases: object
Helper for caching function results to on-disk zarr arrays.
It is recommended to use this class through the cache_to_zarr_if() decorator rather than using it directly.
Currently the cache does not perform any limiting or removal of cache content. That is left up to the user to
manage. Caching is based on arguments passed to the decorated function but will only be performed if the
arguments are of a certain type (see uncacheable_arg_types). The cache value to use is purely based on the
hash value of all of the provided arguments along with the “cache version” (see below).
Note that the zarr format requires regular chunking of data. That is, chunks must be all the same size per dimen-
sion except for the last chunk. To work around this limitation, this class will determine a good regular chunking
based on the existing chunking scheme, rechunk the input arguments, and then rechunk the results before return-
ing them to the user. This rechunking is only done if caching is enabled.
Parameters
• func – Function that will be called to generate the value to cache.
• cache_config_key – Name of the boolean satpy.config parameter to use to determine
if caching should be done.
• uncacheable_arg_types – Types that if present in the passed arguments should trigger
caching to not happen. By default this includes SwathDefinition, xr.DataArray, and
da.Array objects.
• sanitize_args_func – Optional function to call to sanitize provided arguments before
they are considered for caching. This can be used to make arguments more “cacheable” by
replacing them with similar values that will result in more cache hits. Note that the sanitized
arguments are only passed to the underlying function if caching will be performed, otherwise
the original arguments are passed.
• cache_version – Version number used to distinguish one version of a decorated function
from future versions.

Notes
• Caching only supports dask array values.
• This helper allows for an additional cache_dir parameter to override the use of the satpy.config
cache_dir parameter.

Examples
To use through the cache_to_zarr_if() decorator:

@cache_to_zarr_if("cache_my_stuff")
def generate_my_stuff(area_def: AreaDefinition, some_factor: int) -> da.Array:
# Generate
return my_dask_arr

To use the decorated function:

158 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

with satpy.config.set(cache_my_stuff=True):
my_stuff = generate_my_stuff(area_def, 5)

Hold on to provided arguments for future use.


_cache_and_read(args, cache_dir)

_cache_results(res, zarr_file_pattern)

static _get_cache_dir_from_config(cache_dir: str | None) → str

_get_zarr_file_pattern(sanitized_args, cache_dir)

static _warn_if_irregular_input_chunks(args, modified_args)

_zarr_pattern(arg_hash, cache_version: None | int | str = None) → str

cache_clear(cache_dir: str | None = None)


Remove all on-disk files associated with this function.
Intended to mimic the functools.cache() behavior.
satpy.modifiers.angles._chunks_are_irregular(chunks_tuple: tuple) → bool
Determine if an array is irregularly chunked.
Zarr does not support saving data in irregular chunks. Regular chunking is when all chunks are the same size
(except for the last one).
satpy.modifiers.angles._cos_zen_ndarray(lons, lats, utc_time)

satpy.modifiers.angles._dim_index_with_default(dims: tuple, dim_name: str, default: int) → int

satpy.modifiers.angles._geo_chunks_from_data_arr(data_arr: DataArray) → tuple

satpy.modifiers.angles._geo_dask_to_data_array(arr: Array) → DataArray

satpy.modifiers.angles._get_cos_sza(utc_time, lons, lats)

satpy.modifiers.angles._get_output_chunks_from_func_arguments(args)
Determine what the desired output chunks are.
It is assumed a tuple of tuples of integers is defining chunk sizes. If a tuple like this is not found then arguments
are checked for array-like objects with a .chunks attribute.
satpy.modifiers.angles._get_sensor_angles(data_arr: DataArray) → tuple[DataArray, DataArray]

satpy.modifiers.angles._get_sensor_angles_ndarray(lons, lats, start_time, sat_lon, sat_lat, sat_alt) →


ndarray

satpy.modifiers.angles._get_sun_angles(data_arr: DataArray) → tuple[DataArray, DataArray]

satpy.modifiers.angles._get_sun_azimuth_ndarray(lons: ndarray, lats: ndarray, start_time: datetime) →


ndarray

satpy.modifiers.angles._hash_args(*args, unhashable_types=(<class
'pyresample.geometry.SwathDefinition'>, <class
'xarray.core.dataarray.DataArray'>, <class 'dask.array.core.Array'>))

satpy.modifiers.angles._is_chunk_tuple(some_obj: Any) → bool

2.15. satpy 159


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.modifiers.angles._regular_chunks_from_irregular_chunks(old_chunks: tuple[tuple[int, ...], ...])


→ tuple[tuple[int, ...], ...]

satpy.modifiers.angles._sanitize_args_with_chunks(*args)

satpy.modifiers.angles._sanitize_observer_look_args(*args)

satpy.modifiers.angles._sunzen_corr_cos_ndarray(data: ndarray, cos_zen: ndarray, limit: float,


max_sza: float | None) → ndarray

satpy.modifiers.angles._sunzen_reduction_ndarray(data: ndarray, sunz: ndarray, limit: float, max_sza:


float, strength: float) → ndarray

satpy.modifiers.angles.cache_to_zarr_if(cache_config_key: str, uncacheable_arg_types=(<class


'pyresample.geometry.SwathDefinition'>, <class
'xarray.core.dataarray.DataArray'>, <class
'dask.array.core.Array'>), sanitize_args_func: ~typing.Callable
| None = None) → Callable
Decorate a function and cache the results as a zarr array on disk.
This only happens if the satpy.config boolean value for the provided key is True as well as some other
conditions. See ZarrCacheHelper for more information. Most importantly, this decorator does not limit how
many items can be cached and does not clear out old entries. It is up to the user to manage the size of the cache.
satpy.modifiers.angles.compute_relative_azimuth(sat_azi: DataArray, sun_azi: DataArray) →
DataArray
Compute the relative azimuth angle.
Parameters
• sat_azi – DataArray for the satellite azimuth angles, typically in 0-360 degree range.
• sun_azi – DataArray for the solar azimuth angles, should be in same range as sat_azi.
Returns
A DataArray containing the relative azimuth angle in the 0-180 degree range.
NOTE: Relative azimuth is defined such that: Relative azimuth is 0 when sun and satellite are aligned on one
side of a pixel (back scatter). Relative azimuth is 180 when sun and satellite are directly opposite each other
(forward scatter).
satpy.modifiers.angles.get_angles(data_arr: DataArray) → tuple[DataArray, DataArray, DataArray,
DataArray]
Get sun and satellite azimuth and zenith angles.
Note that this function can benefit from the satpy.config parameters cache_lonlats and cache_sensor_angles
being set to True.
Parameters
data_arr – DataArray to get angles for. Information extracted from this object are .
attrs["area"],``.attrs[“start_time”]``, and .attrs["orbital_parameters"]. See satpy.
utils.get_satpos() and Metadata for more information. Additionally, the dask array chunk
size is used when generating new arrays. The actual data of the object is not used.
Returns
Four DataArrays representing sensor azimuth angle, sensor zenith angle, solar azimuth angle,
and solar zenith angle. All values are in degrees. Sensor angles are provided in the [0, 360]
degree range. Solar angles are provided in the [-180, 180] degree range.

160 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.modifiers.angles.get_cos_sza(data_arr: DataArray) → DataArray


Generate the cosine of the solar zenith angle for the provided data.
Returns
DataArray with the same shape as data_arr.
satpy.modifiers.angles.get_satellite_zenith_angle(data_arr: DataArray) → DataArray
Generate satellite zenith angle for the provided data.
Note that this function can benefit from the satpy.config parameters cache_lonlats and cache_sensor_angles
being set to True. Values are in degrees.
satpy.modifiers.angles.sunzen_corr_cos(data: Array, cos_zen: Array, limit: float = 88.0, max_sza: float |
None = 95.0) → Array
Perform Sun zenith angle correction.
The correction is based on the provided cosine of the zenith angle (cos_zen). The correction is limited to limit
degrees (default: 88.0 degrees). For larger zenith angles, the correction is the same as at the limit if max_sza
is None. The default behavior is to gradually reduce the correction past limit degrees up to max_sza where the
correction becomes 0. Both data and cos_zen should be 2D arrays of the same shape.
satpy.modifiers.angles.sunzen_reduction(data: Array, sunz: Array, limit: float = 55.0, max_sza: float =
90.0, strength: float = 1.5) → Array
Reduced strength of signal at high sun zenith angles.

satpy.modifiers.atmosphere module

Modifiers related to atmospheric corrections or adjustments.


class satpy.modifiers.atmosphere.CO2Corrector(name, prerequisites=None,
optional_prerequisites=None, **kwargs)
Bases: ModifierBase
CO2 correction of the brightness temperature of the MSG 3.9um channel.

𝑇 4𝐶 𝑂2𝑐𝑜𝑟𝑟 = (𝐵𝑇 (𝐼𝑅3.9)4 + 𝑅𝑐𝑜𝑟𝑟)0 .25𝑅𝑐𝑜𝑟𝑟 = 𝐵𝑇 (𝐼𝑅10.8)4 − (𝐵𝑇 (𝐼𝑅10.8) − 𝑑𝑡𝐶 𝑂2)4 𝑑𝑡𝐶 𝑂2 = (𝐵𝑇 (𝐼𝑅10.8) − 𝐵

Derived from D. Rosenfeld, “CO2 Correction of Brightness Temperature of Channel IR3.9” .. rubric:: Refer-
ences
• https://resources.eumetrain.org/IntGuide/PowerPoints/Channels/conversion.ppt
Initialise the compositor.
class satpy.modifiers.atmosphere.PSPAtmosphericalCorrection(name, prerequisites=None,
optional_prerequisites=None,
**kwargs)
Bases: ModifierBase
Correct for atmospheric effects.
Initialise the compositor.
class satpy.modifiers.atmosphere.PSPRayleighReflectance(name, prerequisites=None,
optional_prerequisites=None, **kwargs)
Bases: ModifierBase
Pyspectral-based rayleigh corrector for visible channels.

2.15. satpy 161


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

It is possible to use reduce_lim_low, reduce_lim_high and reduce_strength together to reduce rayleigh


correction at high solar zenith angle and make the image transition from rayleigh-corrected to partially/none
rayleigh-corrected at day/night edge, therefore producing a more natural look, which could be especially help-
ful for geostationary satellites. This reduction starts at solar zenith angle of reduce_lim_low, and ends in
reduce_lim_high. It’s linearly scaled between these two angles. The reduce_strength controls the amount
of the reduction. When the solar zenith angle reaches reduce_lim_high, the rayleigh correction will remain
(1 - reduce_strength) of its initial reduce_strength at reduce_lim_high.
To use this function in a YAML configuration file:

rayleigh_corrected_reduced:
modifier: !!python/name:satpy.modifiers.PSPRayleighReflectance
atmosphere: us-standard
aerosol_type: rayleigh_only
reduce_lim_low: 70
reduce_lim_high: 95
reduce_strength: 0.6
prerequisites:
- name: B03
modifiers: [sunz_corrected]
optional_prerequisites:
- satellite_azimuth_angle
- satellite_zenith_angle
- solar_azimuth_angle
- solar_zenith_angle

In the case above, rayleigh correction is reduced gradually starting at solar zenith angle 70°. When reaching 95°,
the correction will only remain 40% its initial strength at 95°.
Initialise the compositor.
satpy.modifiers.atmosphere._call_mapped_correction(satz, band_data, corrector, band_name)

satpy.modifiers.base module

Base modifier classes and utilities.


class satpy.modifiers.base.ModifierBase(name, prerequisites=None, optional_prerequisites=None,
**kwargs)
Bases: CompositeBase
Base class for all modifiers.
A modifier in Satpy is a class that takes one input DataArray to be changed along with zero or more other input
DataArrays used to perform these changes. The result of a modifier typically has a lot of the same metadata
(name, units, etc) as the original DataArray, but the data is different. A modified DataArray can be differentiated
from the original DataArray by the modifiers property of its DataID.
See the CompositeBase class for information on the similar concept of “compositors”.
Initialise the compositor.

satpy.modifiers.filters module

Tests for image filters.

162 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.modifiers.filters.Median(median_filter_params, **kwargs)


Bases: ModifierBase
Apply a median filter to the band.
Create the instance.
Parameters
median_filter_params – The arguments to pass to dask-image’s median_filter function. For
example, {size: 3} makes give the median filter a kernel of size 3.

satpy.modifiers.geometry module

Modifier classes for corrections based on sun and other angles.


class satpy.modifiers.geometry.EffectiveSolarPathLengthCorrector(correction_limit=88.0,
**kwargs)
Bases: SunZenithCorrectorBase
Special sun zenith correction with the method proposed by Li and Shibata.
(2006): https://doi.org/10.1175/JAS3682.1
In addition to adjusting the provided reflectances by the cosine of the solar zenith angle, this modifier forces all
reflectances beyond a solar zenith angle of max_sza to 0 to reduce noise in the final data. It also gradually reduces
the amount of correction done between correction_limit and max_sza. If max_sza is None then a constant
correction is applied to zenith angles beyond correction_limit.
To set max_sza to None in a YAML configuration file use:

effective_solar_pathlength_corrected:
modifier: !!python/name:satpy.modifiers.EffectiveSolarPathLengthCorrector
max_sza: !!null
optional_prerequisites:
- solar_zenith_angle

Collect custom configuration values.


Parameters
• correction_limit (float) – Maximum solar zenith angle to apply the correction in de-
grees. Pixels beyond this limit have a constant correction applied. Default 88.
• max_sza (float) – Maximum solar zenith angle in degrees that is considered valid and
correctable. Default 95.0.
_apply_correction(proj, coszen)

class satpy.modifiers.geometry.SunZenithCorrector(correction_limit=88.0, **kwargs)


Bases: SunZenithCorrectorBase
Standard sun zenith correction using 1 / cos(sunz).
In addition to adjusting the provided reflectances by the cosine of the solar zenith angle, this modifier forces all
reflectances beyond a solar zenith angle of max_sza to 0. It also gradually reduces the amount of correction
done between correction_limit and max_sza. If max_sza is None then a constant correction is applied to
zenith angles beyond correction_limit.
To set max_sza to None in a YAML configuration file use:

2.15. satpy 163


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

sunz_corrected:
modifier: !!python/name:satpy.modifiers.SunZenithCorrector
max_sza: !!null
optional_prerequisites:
- solar_zenith_angle

Collect custom configuration values.


Parameters
• correction_limit (float) – Maximum solar zenith angle to apply the correction in de-
grees. Pixels beyond this limit have a constant correction applied. Default 88.
• max_sza (float) – Maximum solar zenith angle in degrees that is considered valid and
correctable. Default 95.0.
_apply_correction(proj, coszen)

class satpy.modifiers.geometry.SunZenithCorrectorBase(max_sza=95.0, **kwargs)


Bases: ModifierBase
Base class for sun zenith correction modifiers.
Collect custom configuration values.
Parameters
max_sza (float) – Maximum solar zenith angle in degrees that is considered valid and cor-
rectable. Default 95.0.
_apply_correction(proj, coszen)

class satpy.modifiers.geometry.SunZenithReducer(correction_limit=80.0, max_sza=90, strength=1.3,


**kwargs)
Bases: SunZenithCorrectorBase
Reduce signal strength at large sun zenith angles.
Within a given sunz interval [correction_limit, max_sza] the strength of the signal is reduced following the
formula:
res = signal * reduction_factor
where reduction_factor is a pixel-level value ranging from 0 to 1 within the sunz interval.
The strength parameter can be used for a non-linear reduction within the sunz interval. A strength larger than
1.0 will decelerate the signal reduction towards the sunz interval extremes, whereas a strength smaller than 1.0
will accelerate the signal reduction towards the sunz interval extremes.
Collect custom configuration values.
Parameters
• correction_limit (float) – Solar zenith angle in degrees where to start the signal re-
duction.
• max_sza (float) – Maximum solar zenith angle in degrees where to apply the signal re-
duction. Beyond this solar zenith angle the signal will become zero.
• strength (float) – The strength of the non-linear signal reduction.
_apply_correction(proj, coszen)

164 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.modifiers.parallax module

Parallax correction.
Routines related to parallax correction using datasets involving height, such as cloud top height.
The geolocation of (geostationary) satellite imagery is calculated by agencies or in satpy readers with the assumption
of a clear view from the satellite to the geoid. When a cloud blocks the view of the Earth surface or the surface is
above sea level, the geolocation is not accurate for the cloud or mountain top. This module contains routines to correct
imagery such that pixels are shifted or interpolated to correct for this parallax effect.
Parallax correction is currently only supported for (cloud top) height that arrives on an AreaDefinition, such as
is standard for geostationary satellites. Parallax correction with data described by a SwathDefinition, such as is
common for polar satellites, is not (yet) supported.
See also the ../modifiers page in the documentation for an introduction to parallax correction as a modifier in Satpy.
exception satpy.modifiers.parallax.IncompleteHeightWarning
Bases: UserWarning
Raised when heights only partially overlap with area to be corrected.
exception satpy.modifiers.parallax.MissingHeightError
Bases: ValueError
Raised when heights do not overlap with area to be corrected.
class satpy.modifiers.parallax.ParallaxCorrection(base_area, debug_mode=False)
Bases: object
Parallax correction calculations.
This class contains higher-level functionality to wrap the parallax correction calculations in
get_parallax_corrected_lonlats(). The class is initialised using a base area, which is the area for
which a corrected geolocation will be calculated. The resulting object is a callable. Calling the object with an
array of (cloud top) heights returns a SwathDefinition describing the new , corrected geolocation. The cloud
top height should cover at least the area for which the corrected geolocation will be calculated.
Note that the ctth dataset must contain satellite location metadata, such as set in the orbital_parameters
dataset attribute that is set by many Satpy readers. It is essential that the datasets to be corrected are coming from
the same platform as the provided cloud top height.
A note on the algorithm and the implementation. Parallax correction is inherently an inverse problem. The
reported geolocation in satellite data files is the true location plus the parallax error. Therefore, this class first
calculates the true geolocation (using get_parallax_corrected_lonlats()), which gives a shifted longitude
and shifted latitude on an irregular grid. The difference between the original and the shifted grid is the parallax
error or shift. The magnitude of this error can be estimated with get_surface_parallax_displacement().
With this difference, we need to invert the parallax correction to calculate the corrected geolocation. Due to
parallax correction, high clouds shift a lot, low clouds shift a little, and cloud-free pixels shift not at all. The shift
may result in zero, one, two, or more source pixel onto a destination pixel. Physically, this corresponds to the
situation where a narrow but high cloud is viewed at a large angle. The cloud may occupy two or more pixels when
viewed at a large angle, but only one when viewed straight from above. To accurately reproduce this perspective,
the parallax correction uses the BucketResampler class, specifically the get_abs_max() method, to retain only
the largest absolute shift (corresponding to the highest cloud) within each pixel. Any other resampling method at
this step would yield incorrect results. When cloud moves over clear-sky, the clear-sky pixel is unshifted and the
shift is located exactly in the centre of the grid box, so nearest-neighbour resampling would lead to such shifts
being deselected. Other resampling methods would average large shifts with small shifts, leading to unpredictable
results. Now the reprojected shifts can be applied to the original lat/lon, returning a new SwathDefinition.
This is is the object returned by corrected_area().

2.15. satpy 165


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

This procedure can be configured as a modifier using the ParallaxCorrectionModifier class. However, the
modifier can only be applied to one dataset at the time, which may not provide optimal performance, although
dask should reuse identical calculations between multiple channels.
Initialise parallax correction class.
Parameters
• base_area (AreaDefinition) – Area for which calculated geolocation will be calculated.
• debug_mode (bool) – Store diagnostic information in self.diagnostics. This attribute always
apply to the most recently applied operation only.
_check_overlap(cth_dataset)
Ensure cth_dataset is usable for parallax correction.
Checks the coverage of cth_dataset compared to the base_area. If the entirety of base_area is covered
by cth_dataset, do nothing. If only part of base_area is covered by cth_dataset, raise a Incomplete-
HeightWarning. If none of base_area is covered by cth_dataset, raise a MissingHeightError.
_get_corrected_lon_lat(base_lon, base_lat, shifted_area)
Calculate the corrected lon/lat based from the shifted area.
After calculating the shifted area based on get_parallax_corrected_lonlats(), we invert the parallax
error and estimate where those pixels came from. For details on the algorithm, see the class docstring.
static _get_swathdef_from_lon_lat(lon, lat)
Return a SwathDefinition from lon/lat.
Turn ndarrays describing lon/lat into xarray with dimensions y, x, then use these to create a
SwathDefinition.
_prepare_cth_dataset(cth_dataset, resampler='nearest', radius_of_influence=50000,
lonlat_chunks=1024)
Prepare CTH dataset.
Set cloud top height to zero wherever lat/lon are valid but CTH is undefined. Then resample onto the base
area.
corrected_area(cth_dataset, cth_resampler='nearest', cth_radius_of_influence=50000,
lonlat_chunks=1024)
Return the parallax corrected SwathDefinition.
Using the cloud top heights provided in cth_dataset, calculate the pyresample.geometry.
SwathDefinition that estimates the geolocation for each pixel if it had been viewed from straight above
(without parallax error). The cloud top height will first be resampled onto the area passed upon class initiali-
sation in __init__(). Pixels that are invisible after parallax correction are not retained but get geolocation
NaN.
Parameters
• cth_dataset (DataArray) – Cloud top height in meters. The variable attributes must
contain an area attribute describing the geolocation in a pyresample-aware way, and they
must contain satellite orbital parameters. The dimensions must be (y, x). For best per-
formance, this should be a dask-based DataArray.
• cth_resampler (string, optional) – Resampler to use when resampling the (cloud
top) height to the base area. Defaults to “nearest”.
• cth_radius_of_influence (number, optional) – Radius of influence to use when
resampling the (cloud top) height to the base area. Defaults to 50000.

166 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• lonlat_chunks (int, optional) – Chunking to use when calculating lon/lats. Proba-


bly the default (1024) should be fine.
Returns
SwathDefinition describing parallax corrected geolocation.
class satpy.modifiers.parallax.ParallaxCorrectionModifier(name, prerequisites=None,
optional_prerequisites=None,
**kwargs)
Bases: ModifierBase
Modifier for parallax correction.
Apply parallax correction as a modifier. Uses the ParallaxCorrection class, which in turn uses the
get_parallax_corrected_lonlats() function. See the documentation there for details on the behaviour.
To use this, add to composites/visir.yaml within SATPY_CONFIG_PATH something like:

sensor_name: visir

modifiers:
parallax_corrected:
modifier: !!python/name:satpy.modifiers.parallax.ParallaxCorrectionModifier
prerequisites:
- "ctth_alti"
dataset_radius_of_influence: 50000

composites:

parallax_corrected_VIS006:
compositor: !!python/name:satpy.composites.SingleBandCompositor
prerequisites:
- name: VIS006
modifiers: [parallax_corrected]

Here, ctth_alti is CTH provided by the nwcsaf-geo reader, so to use it one would have to pass both on scene
creation:

sc = Scene({"seviri_l1b_hrit": files_l1b, "nwcsaf-geo": files_l2})


sc.load(["parallax_corrected_VIS006"])

The modifier takes optional global parameters, all of which are optional. They affect various steps in the algo-
rithm. Setting them may impact performance:
cth_resampler
Resampler to use when resampling (cloud top) height to the base area. Defaults to “nearest”.
cth_radius_of_influence
Radius of influence to use when resampling the (cloud top) height to the base area. Defaults to 50000.
lonlat_chunks
Chunk size to use when obtaining longitudes and latitudes from the area definition. Defaults to 1024. If
you set this to None, then parallax correction will involve premature calculation. Changing this may or may
not make parallax correction slower or faster.
dataset_radius_of_influence
Radius of influence to use when resampling the dataset onto the swathdefinition describing the parallax-
corrected area. Defaults to 50000. This always uses nearest neighbour resampling.

2.15. satpy 167


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Alternately, you can use the lower-level API directly with the ParallaxCorrection class, which may be more
efficient if multiple datasets need to be corrected. RGB Composites cannot be modified in this way (i.e. you
can’t replace “VIS006” by “natural_color”). To get a parallax corrected RGB composite, create a new composite
where each input has the modifier applied. The parallax calculation should only occur once, because calculations
are happening via dask and dask should reuse the calculation.
Initialise the compositor.
_get_corrector(base_area)

satpy.modifiers.parallax._calculate_slant_cloud_distance(height, elevation)
Calculate slant cloud to ground distance.
From (cloud top) height and satellite elevation, calculate the slant cloud-to-ground distance along the line of
sight of the satellite.
satpy.modifiers.parallax._get_parallax_shift_xyz(sat_lon, sat_lat, sat_alt, lon, lat, parallax_distance)
Calculate the parallax shift in cartesian coordinates.
From satellite position and cloud position, get the parallax shift in cartesian coordinates:
Parameters
• sat_lon (number) – Satellite longitude in geodetic coordinates [degrees]
• sat_lat (number) – Satellite latitude in geodetic coordinates [degrees]
• sat_alt (number) – Satellite altitude above the Earth surface [m]
• lon (array or number) – Longitudes of pixel or pixels to be corrected, in geodetic coor-
dinates [degrees]
• lat (array or number) – Latitudes of pixel/pixels to be corrected, in geodetic coordinates
[degrees]
• parallax_distance (array or number) – Cloud to ground distance with parallax effect
[m].
Returns
Parallax shift in cartesian coordinates in meter.
satpy.modifiers.parallax._get_satellite_elevation(sat_lon, sat_lat, sat_alt, lon, lat)
Get satellite elevation.
Get the satellite elevation from satellite lon/lat/alt for positions lon/lat.
satpy.modifiers.parallax._get_satpos_from_cth(cth_dataset)
Obtain satellite position from CTH dataset, height in meter.
From a CTH dataset, obtain the satellite position lon, lat, altitude/m, either directly from orbital parameters, or,
when missing, from the platform name using pyorbital and skyfield.
satpy.modifiers.parallax.get_parallax_corrected_lonlats(sat_lon, sat_lat, sat_alt, lon, lat, height)
Calculate parallax corrected lon/lats.
Satellite geolocation generally assumes an unobstructed view of a smooth Earth surface. In reality, this view
may be obstructed by clouds or mountains.
If the view of a pixel at location (lat, lon) is blocked by a cloud at height h, this function calculates the (lat, lon)
coordinates of the cloud above/in front of the invisible surface.
For scenes that are only partly cloudy, the user might set the cloud top height for clear-sky pixels to NaN. This
function will return a corrected lat/lon as NaN as well. The user can use the original lat/lon for those pixels or
use the higher level ParallaxCorrection class.

168 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

This function assumes a spherical Earth.

á Note

Be careful with units! This code expects sat_alt and height to be in meter above the Earth’s surface. You
may have to convert your input correspondingly. Cloud Top Height is usually reported in meters above the
Earth’s surface, rarely in km. Satellite altitude may be reported in either m or km, but orbital parameters are
usually in relation to the Earth’s centre. The Earth radius from pyresample is reported in km.

Parameters
• sat_lon (number) – Satellite longitude in geodetic coordinates [degrees]
• sat_lat (number) – Satellite latitude in geodetic coordinates [degrees]
• sat_alt (number) – Satellite altitude above the Earth surface [m]
• lon (array or number) – Longitudes of pixel or pixels to be corrected, in geodetic coor-
dinates [degrees]
• lat (array or number) – Latitudes of pixel/pixels to be corrected, in geodetic coordinates
[degrees]
• height (array or number) – Heights of pixels on which the correction will be based.
Typically this is the cloud top height. [m]
Returns
Corrected geolocation
Corrected geolocation (lon, lat) in geodetic coordinates for the pixel(s) to be corrected.
[degrees]
Return type
tuple[float, float]

satpy.modifiers.parallax.get_surface_parallax_displacement(sat_lon, sat_lat, sat_alt, lon, lat,


height)
Calculate surface parallax displacement.
Calculate the displacement due to parallax error. Input parameters are identical to
get_parallax_corrected_lonlats().
Returns
parallax displacement in meter
Return type
number or array

satpy.modifiers.spectral module

Modifier classes dealing with spectral domain changes or corrections.


class satpy.modifiers.spectral.NIREmissivePartFromReflectance(sunz_threshold=None, **kwargs)
Bases: NIRReflectance
Get the emissive part of NIR bands.
Collect custom configuration values.

2.15. satpy 169


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Parameters
sunz_threshold – The threshold sun zenith angle used when deriving the near infrared re-
flectance. Above this angle the derivation will assume this sun-zenith everywhere. Default None,
in which case the default threshold defined in Pyspectral will be used.
_get_emissivity_as_dask(da_nir, da_tb11, da_tb13_4, da_sun_zenith, metadata)
Get the emissivity from pyspectral.
_get_emissivity_as_dataarray(nir, da_tb11, da_tb13_4, da_sun_zenith)
Get the emissivity as a dataarray.
class satpy.modifiers.spectral.NIRReflectance(sunz_threshold=85.0, masking_limit=88.0, **kwargs)
Bases: ModifierBase
Get the reflective part of NIR bands.
Collect custom configuration values.
Parameters
• sunz_threshold – The threshold sun zenith angle used when deriving the near infrared
reflectance. Above this angle the derivation will assume this sun-zenith everywhere. Unless
overridden, the default threshold of 85.0 degrees will be used.
• masking_limit – Mask the data (set to NaN) above this Sun zenith angle. By default the
limit is at 88.0 degrees. If set to None, no masking is done.
MASKING_LIMIT = 88.0

TERMINATOR_LIMIT = 85.0

_create_modified_dataarray(reflectance, base_dataarray)

_get_nir_inputs(projectables, optional_datasets)

_get_reflectance_as_dask(da_nir, da_tb11, da_tb13_4, da_sun_zenith, metadata)


Calculate 3.x reflectance in % with pyspectral from dask arrays.
_get_reflectance_as_dataarray(nir, da_tb11, da_tb13_4, da_sun_zenith)
Get the reflectance as a dataarray.
static _get_sun_zenith_from_provided_data(nir, optional_datasets, dtype)
Get the sunz from available data or compute it if unavailable.
static _get_tb13_4_from_optionals(optional_datasets)

_init_reflectance_calculator(metadata)
Initialize the 3.x reflectance derivations.

Module contents

Modifier classes and other related utilities.

satpy.multiscene package

Submodules

satpy.multiscene._blend_funcs module

170 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.multiscene._blend_funcs._combine_stacked_attrs(collected_attrs: Sequence[Mapping]) → dict

satpy.multiscene._blend_funcs._fill_weights_for_invalid_dataset_pixels(datasets:
Sequence[DataArray],
weights:
Sequence[DataArray])
→ Iterable[DataArray]
Replace weight valus with 0 where data values are invalid/null.
satpy.multiscene._blend_funcs._get_weighted_blending_func(blend_type: str) → Callable

satpy.multiscene._blend_funcs._stack_blend_by_weights(datasets: Sequence[DataArray], weights:


Sequence[DataArray]) → DataArray
Stack datasets blending overlap using weights.
satpy.multiscene._blend_funcs._stack_no_weights(datasets: Sequence[DataArray]) → DataArray

satpy.multiscene._blend_funcs._stack_select_by_weights(datasets: Sequence[DataArray], weights:


Sequence[DataArray]) → DataArray
Stack datasets selecting pixels using weights.
satpy.multiscene._blend_funcs._stack_with_weights(datasets: Sequence[DataArray], weights:
Sequence[DataArray], blend_type: str) →
DataArray

satpy.multiscene._blend_funcs.stack(data_arrays: Sequence[DataArray], weights: Sequence[DataArray] |


None = None, blend_type: str = 'select_with_weights') → DataArray
Combine a series of datasets in different ways.
By default, DataArrays are stacked on top of each other, so the last one applied is on top. Each DataArray is
assumed to represent the same geographic region, meaning they have the same area. If a sequence of weights
is provided then they must have the same shape as the area. Weights with greater than 2 dimensions are not
currently supported.
When weights are provided, the DataArrays will be combined according to those weights. Data can be integer
category products (ex. cloud type), single channels (ex. radiance), or a multi-band composite (ex. an RGB or
RGBA true_color). In the latter case, the weight array is applied to each band (R, G, B, A) in the same way. The
result will be a composite DataArray where each pixel is constructed in a way depending on blend_type.
Blend type can be one of the following:
• select_with_weights: The input pixel with the maximum weight is chosen.
• blend_with_weights: The final pixel is a weighted average of all valid input pixels.
satpy.multiscene._blend_funcs.temporal_rgb(data_arrays: Sequence[DataArray]) → DataArray
Combine a series of datasets as a temporal RGB.
The first dataset is used as the Red component of the new composite, the second as Green and the third as Blue.
All the other datasets are discarded.
satpy.multiscene._blend_funcs.timeseries(datasets)
Expand dataset with and concatenate by time dimension.

satpy.multiscene._multiscene module

MultiScene object to work with multiple timesteps of satellite data.

2.15. satpy 171


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.multiscene._multiscene.MultiScene(scenes=None)
Bases: object
Container for multiple Scene objects.
Initialize MultiScene and validate sub-scenes.
Parameters
scenes (iterable) – Scene objects to operate on (optional)

á Note

If the scenes passed to this object are a generator then certain operations performed will try to preserve that
generator state. This may limit what properties or methods are available to the user. To avoid this behavior
compute the passed generator by converting the passed scenes to a list first: MultiScene(list(scenes)).

_all_same_area(dataset_ids)
Return True if all areas for the provided IDs are equal.
static _call_scene_func(gen, func_name, create_new_scene, *args, **kwargs)
Abstract method for running a Scene method on each Scene.
_distribute_frame_compute(writers, frame_keys, frames_to_write, client, batch_size=1)
Use dask.distributed to compute multiple frames at a time.
_distribute_save_datasets(scenes_iter, client, batch_size=1, **kwargs)
Distribute save_datasets across a cluster.
static _format_decoration(ds, decorate)
Maybe format decoration.
If the nested dictionary in decorate (argument to save_animation) contains a text to be added, format
those based on dataset parameters.
_generate_scene_func(gen, func_name, create_new_scene, *args, **kwargs)
Abstract method for running a Scene method on each Scene.
Additionally, modifies current MultiScene or creates a new one if needed.
_get_animation_frames(all_datasets, shape, fill_value=None, ignore_missing=False, enh_args=None)
Create enhanced image frames to save to a file.
_get_animation_info(all_datasets, filename, fill_value=None)
Determine filename and shape of animation to be created.
_get_client(client=True)
Determine what dask distributed client to use.
_get_single_frame(ds, enh_args, fill_value)
Get single frame from dataset.
Yet a single image frame from a dataset.
_get_writers_and_frames(filename, datasets, fill_value, ignore_missing, enh_args, imio_args)
Get writers and frames.
Helper function for save_animation.

172 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

static _simple_frame_compute(writers, frame_keys, frames_to_write)


Compute frames the plain dask way.
_simple_save_datasets(scenes_iter, **kwargs)
Run save_datasets on each Scene.
property all_same_area
Determine if all contained Scenes have the same ‘area’.
blend(blend_function: Callable[[...], DataArray] | None = None) → Scene
Blend the datasets into one scene.
Reduce the MultiScene to a single Scene. Datasets occurring in each scene will be passed to a blending
function, which shall take as input a list of datasets (xarray.DataArray objects) and shall return a single
dataset (xarray.DataArray object). The blend method then assigns those datasets to the blended scene.
Blending functions provided in this module are stack() (the default), timeseries(), and
temporal_rgb(), but the Python built-in function sum() also works and may be appropriate for some
types of data.

á Note

Blending is not currently optimized for generator-based MultiScene.

crop(*args, **kwargs)
Crop the multiscene and return a new cropped multiscene.
property first_scene
First Scene of this MultiScene object.
classmethod from_files(files_to_sort: Collection[str], reader: str | Collection[str] | None = None,
ensure_all_readers: bool = False, scene_kwargs: Mapping | None = None,
**kwargs)
Create multiple Scene objects from multiple files.
Parameters
• files_to_sort – files to read
• reader – reader or readers to use
• ensure_all_readers – If True, limit to scenes where all readers have at least one file. If
False (default), include all scenes where at least one reader has at least one file.
• scene_kwargs – additional arguments to pass on to Scene.__init__() for each created
scene.
This uses the satpy.readers.group_files() function to group files. See this function for more details
on additional possible keyword arguments. In particular, it is strongly recommended to pass “group_keys”
when using multiple instruments.
Added in version 0.12.
group(groups)
Group datasets from the multiple scenes.
By default, MultiScene only operates on dataset IDs shared by all scenes. Using this method you can specify
groups of datasets that shall be treated equally by MultiScene. Even if their dataset IDs differ (for example

2.15. satpy 173


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

because the names or wavelengths are slightly different). Groups can be specified as a dictionary {group_id:
dataset_names} where the keys must be of type DataQuery, for example:

groups={
DataQuery('my_group', wavelength=(10, 11, 12)): ['IR_108', 'B13', 'C13']
}

property is_generator
Contained Scenes are stored as a generator.
load(*args, **kwargs)
Load the required datasets from the multiple scenes.
property loaded_dataset_ids
Union of all Dataset IDs loaded by all children.
resample(destination=None, **kwargs)
Resample the multiscene.
save_animation(filename, datasets=None, fps=10, fill_value=None, batch_size=1, ignore_missing=False,
client=True, enh_args=None, **kwargs)
Save series of Scenes to movie (MP4) or GIF formats.
Supported formats are dependent on the imageio library and are determined by filename extension by de-
fault.

á Note

Starting with imageio 2.5.0, the use of FFMPEG depends on a separate imageio-ffmpeg package.

By default all datasets available will be saved to individual files using the first Scene’s datasets metadata to
format the filename provided. If a dataset is not available from a Scene then a black array is used instead
(np.zeros(shape)).
This function can use the dask.distributed library for improved performance by computing multiple
frames at a time (see batch_size option below). If the distributed library is not available then frames will
be generated one at a time, one product at a time.
Parameters
• filename (str) – Filename to save to. Can include python string formatting keys from
dataset .attrs (ex. “{name}_{start_time:%Y%m%d_%H%M%S.gif”)
• datasets (list) – DataIDs to save (default: all datasets)
• fps (int) – Frames per second for produced animation
• fill_value (int) – Value to use instead creating an alpha band.
• batch_size (int) – Number of frames to compute at the same time. This only has effect
if the dask.distributed package is installed. This will default to 1. Setting this to 0 or less
will attempt to process all frames at once. This option should be used with care to avoid
memory issues when trying to improve performance. Note that this is the total number of
frames for all datasets, so when saving 2 datasets this will compute (batch_size / 2)
frames for the first dataset and (batch_size / 2) frames for the second dataset.
• ignore_missing (bool) – Don’t include a black frame when a dataset is missing from a
child scene.

174 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• client (bool or dask.distributed.Client) – Dask distributed client to use for


computation. If this is True (default) then any existing clients will be used. If this is
False or None then a client will not be created and dask.distributed will not be used.
If this is a dask Client object then it will be used for distributed computation.
• enh_args (Mapping) – Optional, arguments passed to satpy.writers.
get_enhanced_image(). If this includes a keyword “decorate”, in any text added
to the image, string formatting will be applied based on dataset attributes. For exam-
ple, passing enh_args={"decorate": {"decorate": [{"text": {"txt":
"{start_time:%H:%M}"}}]} will replace the decorated text accordingly.
• kwargs – Additional keyword arguments to pass to imageio.get_writer.
save_datasets(client=True, batch_size=1, **kwargs)
Run save_datasets on each Scene.
Note that some writers may not be multi-process friendly and may produce unexpected results or fail by
raising an exception. In these cases client should be set to False. This is currently a known issue for
basic ‘geotiff’ writer work loads.
Parameters
• batch_size (int) – Number of scenes to compute at the same time. This only has effect
if the dask.distributed package is installed. This will default to 1. Setting this to 0 or less
will attempt to process all scenes at once. This option should be used with care to avoid
memory issues when trying to improve performance.
• client (bool or dask.distributed.Client) – Dask distributed client to use for
computation. If this is True (default) then any existing clients will be used. If this is
False or None then a client will not be created and dask.distributed will not be used.
If this is a dask Client object then it will be used for distributed computation.
• kwargs – Additional keyword arguments to pass to save_datasets(). Note compute
can not be provided.
property scenes
Get list of Scene objects contained in this MultiScene.

á Note

If the Scenes contained in this object are stored in a generator (not list or tuple) then accessing this
property will load/iterate through the generator possibly

property shared_dataset_ids
Dataset IDs shared by all children.
class satpy.multiscene._multiscene._GroupAliasGenerator(scene, groups)
Bases: object
Add group aliases to a scene.
Initialize the alias generator.
_drop_id_attrs(dataset)

_duplicate_dataset_with_different_id(dataset_id, alias_id)

_duplicate_dataset_with_group_alias(group_id, group_members)

2.15. satpy 175


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_dataset_id_of_group_members_in_scene(group_members)

_get_id_attrs(dataset)

_prepare_dataset_for_duplication(dataset, alias_id)

duplicate_datasets_with_group_alias()
Duplicate datasets to be grouped with a group alias.
class satpy.multiscene._multiscene._SceneGenerator(scene_gen)
Bases: object
Fancy way of caching Scenes from a generator.
_create_cached_iter()
Iterate over the provided scenes, caching them for later.
property first
First element in the generator.
satpy.multiscene._multiscene._group_datasets_in_scenes(scenes, groups)
Group different datasets in multiple scenes by adding aliases.
Parameters
• scenes (iterable) – Scenes to be processed.
• groups (dict) – Groups of datasets that shall be treated equally by MultiScene. Keys spec-
ify the groups, values specify the dataset names to be grouped. For example:

from satpy import DataQuery


groups = {DataQuery(name='odd'): ['ds1', 'ds3'],
DataQuery(name='even'): ['ds2', 'ds4']}

Module contents

Functions and classes related to MultiScene functionality.

satpy.readers package

Subpackages

satpy.readers.gms package

Submodules

satpy.readers.gms.gms5_vissr_format module

GMS-5 VISSR archive data format.


Reference: VISSR Format Description

satpy.readers.gms.gms5_vissr_l1b module

Reader for GMS-5 VISSR Level 1B data.

176 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Introduction

The gms5_vissr_l1b reader can decode, navigate and calibrate Level 1B data from the Visible and Infrared Spin
Scan Radiometer (VISSR) in VISSR archive format. Corresponding platforms are GMS-5 (Japanese Geostationary
Meteorological Satellite) and GOES-09 (2003-2006 backup after MTSAT-1 launch failure).
VISSR has four channels, each stored in a separate file:

VISSR_20020101_0031_IR1.A.IMG
VISSR_20020101_0031_IR2.A.IMG
VISSR_20020101_0031_IR3.A.IMG
VISSR_20020101_0031_VIS.A.IMG

This is how to read them with Satpy:

from satpy import Scene


import glob

filenames = glob.glob(""/data/VISSR*")
scene = Scene(filenames, reader="gms5-vissr_l1b")
scene.load(["VIS", "IR1"])

References:

Details about platform, instrument and data format can be found in the following references:
• VISSR Format Description
• GMS User Guide

Compression

Gzip-compressed VISSR files can be decompressed on the fly using FSFile:

import fsspec
from satpy import Scene
from satpy.readers import FSFile

filename = "VISSR_19960217_2331_IR1.A.IMG.gz"
open_file = fsspec.open(filename, compression="gzip")
fs_file = FSFile(open_file)
scene = Scene([fs_file], reader="gms5-vissr_l1b")
scene.load(["IR1"])

Calibration

Sensor counts are calibrated by looking up reflectance/temperature values in the calibration tables included in each file.
See section 2.2 in the VISSR user guide.

Navigation

VISSR images are oversampled and not rectified.

2.15. satpy 177


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Oversampling

VISSR oversamples the viewed scene in E-W direction by a factor of ~1.46: IR/VIS pixels are 14/3.5 urad on a side,
but the instrument samples every 9.57/2.39 urad in E-W direction. That means pixels are actually overlapping on the
ground.
This cannot be represented by a pyresample area definition, so each dataset is accompanied by 2-dimensional longitude
and latitude coordinates. For resampling purpose a full disc area definition with uniform sampling is provided via

scene[dataset].attrs["area_def_uniform_sampling"]

Rectification

VISSR images are not rectified. That means lon/lat coordinates are different
1) for all channels of the same repeat cycle, even if their spatial resolution is identical (IR channels)
2) for different repeat cycles, even if the channel is identical
However, the above area definition is using the nominal subsatellite point as projection center. As this rarely changes,
the area definition is pretty constant.

Performance

Navigation of VISSR images is computationally expensive, because for each pixel the view vector of the (rotating)
instrument needs to be intersected with the earth, including interpolation of attitude and orbit prediction. For IR
channels this takes about 10 seconds, for VIS channels about 160 seconds.

Space Pixels

VISSR produces data for pixels outside the Earth disk (i.e. atmospheric limb or deep space pixels). By default, these
pixels are masked out as they contain data of limited or no value, but some applications do require these pixels. To turn
off masking, set mask_space=False upon scene creation:

import satpy
import glob

filenames = glob.glob("VISSR*.IMG")
scene = satpy.Scene(filenames,
reader="gms5-vissr_l1b",
reader_kwargs={"mask_space": False})
scene.load(["VIS", "IR1])

Metadata

Dataset attributes include metadata such as time and orbital parameters, see Metadata.

Partial Scans

Between 2001 and 2003 VISSR also recorded partial scans of the northern hemisphere. On demand a special Typhoon
schedule would be activated between 03:00 and 05:00 UTC.
class satpy.readers.gms.gms5_vissr_l1b.AreaDefEstimator(coord_conv_params, metadata)
Bases: object
Estimate area definition for VISSR images.

178 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Initialize the area definition estimator.


Parameters
• coord_conv_params – Coordinate conversion parameters
• metadata – VISSR file metadata
_get_name_dict(dataset_id)

_get_proj4_dict()

_get_proj_dict(dataset_id)

_get_shape_dict(dataset_id)

full_disk_size = {'IR': 2366, 'VIS': 9464}

get_area_def_uniform_sampling(dataset_id)
Get full disk area definition with uniform sampling.
Parameters
dataset_id – ID of the corresponding dataset.
class satpy.readers.gms.gms5_vissr_l1b.Calibrator(calib_table)
Bases: object
Calibrate VISSR data to reflectance or brightness temperature.
Reference: Section 2.2 in the VISSR User Guide.
Initialize the calibrator.
Parameters
calib_table – Calibration table
_calibrate(counts)

_convert_to_percent(res)

_lookup_calib_table(counts, calib_table)

_make_data_array(interp, counts)

_postproc(res, calibration)

calibrate(counts, calibration)
Transform counts to given calibration level.
class satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler(filename, filename_info, filetype_info,
mask_space=True)
Bases: BaseFileHandler
File handler for GMS-5 VISSR data in VISSR archive format.
Initialize the file handler.
Parameters
• filename – Name of file to be read
• filename_info – Information obtained from filename
• filetype_info – Information about file type

2.15. satpy 179


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• mask_space – Mask space pixels.


_attach_lons_lats(dataset, dataset_id)

_calibrate(counts, dataset_id)

static _concat_orbit_prediction(orb_pred_1, orb_pred_2)


Concatenate orbit prediction data.
It is split over two image parameter blocks in the header.
property _coord_conv

_get_acq_time(dask_array)

_get_actual_shape()

_get_area_def_uniform_sampling(dataset_id)

_get_attitude_prediction()

_get_calibration_table(dataset_id)

static _get_channel_type(parameter_block_size)

_get_counts(image_data)

_get_earth_ellipsoid()

_get_frame_parameters_key()

_get_image_coords(data)

_get_image_data()

_get_image_data_type_specs()

_get_image_offset(dataset_id)

_get_line_number(dask_array)

_get_lons_lats(dataset, dataset_id)

_get_mda()

_get_navigation_parameters(dataset_id)

_get_nominal_shape()

_get_orbit_prediction()

_get_orbital_parameters()

_get_predicted_navigation_params()
Get predictions of time-dependent navigation parameters.
_get_proj_params(dataset_id)

_get_scanning_angles(dataset_id)

_get_start_time()

180 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_static_navigation_params(dataset_id)
Get static navigation parameters.
Note that, “central_line_number_of_vissr_frame” is different for each channel, even if their spatial resolu-
tion is identical. For example:
VIS: 5513.0 IR1: 1378.5 IR2: 1378.7 IR3: 1379.1001
_get_time_parameters()

_make_counts_data_array(image_data)

_make_lons_lats_data_array(lons, lats)

_mask_space_pixels(dataset, space_masker)

property _mode_block

_read_control_block(file_obj)

_read_header(filename)

_read_image_data()

static _read_image_param(file_obj, param, channel_type)


Read a single image parameter block from the header.
_read_image_params(file_obj, channel_type)
Read image parameters from the header.
_update_attrs(dataset, dataset_id, ds_info)

property end_time
Nominal end time of the dataset.
get_dataset(dataset_id, ds_info)
Get dataset from file.
property start_time
Nominal start time of the dataset.
class satpy.readers.gms.gms5_vissr_l1b.SpaceMasker(image_data, channel)
Bases: object
Mask pixels outside the earth disk.
Initialize the space masker.
Parameters
• image_data – Image data
• channel – Channel name
_correct_vis_edges(edges)
Correct VIS edges.
VIS data contains earth edges of IR channel. Compensate for that by scaling with a factor of 4 (1 IR pixel
~ 4 VIS pixels).
_fill_value = -1

2.15. satpy 181


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_earth_edges()

_get_earth_edges_per_scan_line(cardinal)

_get_earth_mask()

mask_space(dataset)
Mask space pixels in the given dataset.
satpy.readers.gms.gms5_vissr_l1b._get_alternative_channel_name(dataset_id)

satpy.readers.gms.gms5_vissr_l1b._recarr2dict(arr, preserve=None)

satpy.readers.gms.gms5_vissr_l1b.get_earth_mask(shape, earth_edges, fill_value=-1)


Get binary mask where 1/0 indicates earth/space.
Parameters
• shape – Image shape
• earth_edges – First and last earth pixel in each scanline
• fill_value – Fill value for scanlines not intersecting the earth.
satpy.readers.gms.gms5_vissr_l1b.is_vis_channel(channel_name)
Check if it’s the visible channel.
satpy.readers.gms.gms5_vissr_l1b.read_from_file_obj(file_obj, dtype, count, offset=0)
Read data from file object.
Parameters
• file_obj – An open file object.
• dtype – Data type to be read.
• count – Number of elements to be read.
• offset – Byte offset where to start reading.

satpy.readers.gms.gms5_vissr_navigation module

GMS-5 VISSR Navigation.


Reference: GMS User Guide, Appendix E, S-VISSR Mapping.
class satpy.readers.gms.gms5_vissr_navigation.Attitude(angle_between_earth_and_sun,
angle_between_sat_spin_and_z_axis,
angle_between_sat_spin_and_yz_plane)
Bases: tuple
Attitude parameters.
Units: radians
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {}

_fields = ('angle_between_earth_and_sun', 'angle_between_sat_spin_and_z_axis',


'angle_between_sat_spin_and_yz_plane')

182 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

classmethod _make(iterable)
Make a new Attitude object from a sequence or iterable
_replace(**kwds)
Return a new Attitude object replacing specified fields with new values
angle_between_earth_and_sun
Alias for field number 0
angle_between_sat_spin_and_yz_plane
Alias for field number 2
angle_between_sat_spin_and_z_axis
Alias for field number 1
class satpy.readers.gms.gms5_vissr_navigation.AttitudePrediction(prediction_times, attitude)
Bases: object
Attitude prediction.
Use .to_numba() to pass this object to jitted methods. This extra layer avoids usage of jitclasses and having to
re-implement np.unwrap in numba.
Initialize attitude prediction.
In order to accelerate interpolation, the 2-pi periodicity of angles is unwrapped here already (that means phase
jumps greater than pi are wrapped to their 2*pi complement).
Parameters
• prediction_times – Timestamps of predicted attitudes
• attitude (Attitude) – Attitudes at prediction times
_unwrap_angles(attitude)

to_numba()
Convert to numba-compatible type.
satpy.readers.gms.gms5_vissr_navigation.EARTH_POLAR_RADIUS = 6356751.301568781
Constants taken from JMA’s Msial library.
class satpy.readers.gms.gms5_vissr_navigation.EarthEllipsoid(flattening, equatorial_radius)
Bases: tuple
Earth ellipsoid.
Parameters
• flattening – Ellipsoid flattening
• equatorial_radius – Equatorial radius (meters)
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {}

_fields = ('flattening', 'equatorial_radius')

classmethod _make(iterable)
Make a new EarthEllipsoid object from a sequence or iterable

2.15. satpy 183


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_replace(**kwds)
Return a new EarthEllipsoid object replacing specified fields with new values
equatorial_radius
Alias for field number 1
flattening
Alias for field number 0
class satpy.readers.gms.gms5_vissr_navigation.ImageNavigationParameters(static, predicted)
Bases: tuple
Navigation parameters for the entire image.
Parameters
• static (StaticNavigationParameters) – Static parameters.
• predicted (PredictedNavigationParameters) – Predicted time-dependent parame-
ters.
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {}

_fields = ('static', 'predicted')

classmethod _make(iterable)
Make a new ImageNavigationParameters object from a sequence or iterable
_replace(**kwds)
Return a new ImageNavigationParameters object replacing specified fields with new values
predicted
Alias for field number 1
static
Alias for field number 0
class satpy.readers.gms.gms5_vissr_navigation.ImageOffset(line_offset, pixel_offset)
Bases: tuple
Image offset
Parameters
• line_offset – Line offset from image center
• pixel_offset – Pixel offset from image center
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {}

_fields = ('line_offset', 'pixel_offset')

classmethod _make(iterable)
Make a new ImageOffset object from a sequence or iterable

184 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_replace(**kwds)
Return a new ImageOffset object replacing specified fields with new values
line_offset
Alias for field number 0
pixel_offset
Alias for field number 1
class satpy.readers.gms.gms5_vissr_navigation.Orbit(angles, sat_position, nutation_precession)
Bases: tuple
Orbital Parameters
Parameters
• angles (OrbitAngles) – Orbit angles
• sat_position (Vector3D) – Satellite position
• nutation_precession – Nutation and precession matrix (3x3)
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {}

_fields = ('angles', 'sat_position', 'nutation_precession')

classmethod _make(iterable)
Make a new Orbit object from a sequence or iterable
_replace(**kwds)
Return a new Orbit object replacing specified fields with new values
angles
Alias for field number 0
nutation_precession
Alias for field number 2
sat_position
Alias for field number 1
class satpy.readers.gms.gms5_vissr_navigation.OrbitAngles(greenwich_sidereal_time,
declination_from_sat_to_sun,
right_ascension_from_sat_to_sun)
Bases: tuple
Orbit angles.
Units: radians
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {}

_fields = ('greenwich_sidereal_time', 'declination_from_sat_to_sun',


'right_ascension_from_sat_to_sun')

2.15. satpy 185


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

classmethod _make(iterable)
Make a new OrbitAngles object from a sequence or iterable
_replace(**kwds)
Return a new OrbitAngles object replacing specified fields with new values
declination_from_sat_to_sun
Alias for field number 1
greenwich_sidereal_time
Alias for field number 0
right_ascension_from_sat_to_sun
Alias for field number 2
class satpy.readers.gms.gms5_vissr_navigation.OrbitPrediction(prediction_times, angles,
sat_position, nutation_precession)
Bases: object
Orbit prediction.
Use .to_numba() to pass this object to jitted methods. This extra layer avoids usage of jitclasses and having to
re-implement np.unwrap in numba.
Initialize orbit prediction.
In order to accelerate interpolation, the 2-pi periodicity of angles is unwrapped here already (that means phase
jumps greater than pi are wrapped to their 2*pi complement).
Parameters
• prediction_times – Timestamps of orbit prediction.
• angles (OrbitAngles) – Orbit angles
• sat_position (Vector3D) – Satellite position
• nutation_precession – Nutation and precession matrix.
_unwrap_angles(angles)

to_numba()
Convert to numba-compatible type.
class satpy.readers.gms.gms5_vissr_navigation.Pixel(line, pixel)
Bases: tuple
A VISSR pixel.
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {}

_fields = ('line', 'pixel')

classmethod _make(iterable)
Make a new Pixel object from a sequence or iterable
_replace(**kwds)
Return a new Pixel object replacing specified fields with new values

186 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

line
Alias for field number 0
pixel
Alias for field number 1
class satpy.readers.gms.gms5_vissr_navigation.PixelNavigationParameters(attitude, orbit,
proj_params)
Bases: tuple
Navigation parameters for a single pixel.
Parameters
• attitude (Attitude) – Attitude parameters
• orbit (Orbit) – Orbit parameters
• proj_params (ProjectionParameters) – Projection parameters
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {}

_fields = ('attitude', 'orbit', 'proj_params')

classmethod _make(iterable)
Make a new PixelNavigationParameters object from a sequence or iterable
_replace(**kwds)
Return a new PixelNavigationParameters object replacing specified fields with new values
attitude
Alias for field number 0
orbit
Alias for field number 1
proj_params
Alias for field number 2
class satpy.readers.gms.gms5_vissr_navigation.PredictedNavigationParameters(attitude, orbit)
Bases: tuple
Predictions of time-dependent navigation parameters.
They need to be evaluated for each pixel.
Parameters
• attitude (AttitudePrediction) – Attitude prediction
• orbit (OrbitPrediction) – Orbit prediction
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {}

_fields = ('attitude', 'orbit')

2.15. satpy 187


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

classmethod _make(iterable)
Make a new PredictedNavigationParameters object from a sequence or iterable
_replace(**kwds)
Return a new PredictedNavigationParameters object replacing specified fields with new values
attitude
Alias for field number 0
orbit
Alias for field number 1
class satpy.readers.gms.gms5_vissr_navigation.ProjectionParameters(image_offset,
scanning_angles,
earth_ellipsoid)
Bases: tuple
Projection parameters.
Parameters
• image_offset (ImageOffset) – Image offset
• scanning_angles (ScanningAngles) – Scanning angles
• earth_ellipsoid (EarthEllipsoid) – Earth ellipsoid
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {}

_fields = ('image_offset', 'scanning_angles', 'earth_ellipsoid')

classmethod _make(iterable)
Make a new ProjectionParameters object from a sequence or iterable
_replace(**kwds)
Return a new ProjectionParameters object replacing specified fields with new values
earth_ellipsoid
Alias for field number 2
image_offset
Alias for field number 0
scanning_angles
Alias for field number 1
class satpy.readers.gms.gms5_vissr_navigation.Satpos(x, y, z)
Bases: tuple
A 3D vector.
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {}

_fields = ('x', 'y', 'z')

188 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

classmethod _make(iterable)
Make a new Satpos object from a sequence or iterable
_replace(**kwds)
Return a new Satpos object replacing specified fields with new values
x
Alias for field number 0
y
Alias for field number 1
z
Alias for field number 2
class satpy.readers.gms.gms5_vissr_navigation.ScanningAngles(stepping_angle, sampling_angle,
misalignment)
Bases: tuple
Scanning angles
Parameters
• stepping_angle – Scanning angle along line (rad)
• sampling_angle – Scanning angle along pixel (rad)
• misalignment – Misalignment matrix (3x3)
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {}

_fields = ('stepping_angle', 'sampling_angle', 'misalignment')

classmethod _make(iterable)
Make a new ScanningAngles object from a sequence or iterable
_replace(**kwds)
Return a new ScanningAngles object replacing specified fields with new values
misalignment
Alias for field number 2
sampling_angle
Alias for field number 1
stepping_angle
Alias for field number 0
class satpy.readers.gms.gms5_vissr_navigation.ScanningParameters(start_time_of_scan,
spinning_rate, num_sensors,
sampling_angle)
Bases: tuple
Create new instance of ScanningParameters(start_time_of_scan, spinning_rate, num_sensors, sampling_angle)
_asdict()
Return a new dict which maps field names to their values.

2.15. satpy 189


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_field_defaults = {}

_fields = ('start_time_of_scan', 'spinning_rate', 'num_sensors', 'sampling_angle')

classmethod _make(iterable)
Make a new ScanningParameters object from a sequence or iterable
_replace(**kwds)
Return a new ScanningParameters object replacing specified fields with new values
num_sensors
Alias for field number 2
sampling_angle
Alias for field number 3
spinning_rate
Alias for field number 1
start_time_of_scan
Alias for field number 0
class satpy.readers.gms.gms5_vissr_navigation.StaticNavigationParameters(proj_params,
scan_params)
Bases: tuple
Navigation parameters which are constant for the entire scan.
Parameters
• proj_params (ProjectionParameters) – Projection parameters
• scan_params (ScanningParameters) – Scanning parameters
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {}

_fields = ('proj_params', 'scan_params')

classmethod _make(iterable)
Make a new StaticNavigationParameters object from a sequence or iterable
_replace(**kwds)
Return a new StaticNavigationParameters object replacing specified fields with new values
proj_params
Alias for field number 0
scan_params
Alias for field number 1
class satpy.readers.gms.gms5_vissr_navigation.Vector2D(x, y)
Bases: tuple
A 2D vector.
_asdict()
Return a new dict which maps field names to their values.

190 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_field_defaults = {}

_fields = ('x', 'y')

classmethod _make(iterable)
Make a new Vector2D object from a sequence or iterable
_replace(**kwds)
Return a new Vector2D object replacing specified fields with new values
x
Alias for field number 0
y
Alias for field number 1
class satpy.readers.gms.gms5_vissr_navigation.Vector3D(x, y, z)
Bases: tuple
A 3D vector.
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {}

_fields = ('x', 'y', 'z')

classmethod _make(iterable)
Make a new Vector3D object from a sequence or iterable
_replace(**kwds)
Return a new Vector3D object replacing specified fields with new values
x
Alias for field number 0
y
Alias for field number 1
z
Alias for field number 2
class satpy.readers.gms.gms5_vissr_navigation._AttitudePrediction(prediction_times, attitude)
Bases: tuple
Create new instance of _AttitudePrediction(prediction_times, attitude)
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {}

_fields = ('prediction_times', 'attitude')

classmethod _make(iterable)
Make a new _AttitudePrediction object from a sequence or iterable
_replace(**kwds)
Return a new _AttitudePrediction object replacing specified fields with new values

2.15. satpy 191


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

attitude
Alias for field number 1
prediction_times
Alias for field number 0
class satpy.readers.gms.gms5_vissr_navigation._OrbitPrediction(prediction_times, angles,
sat_position,
nutation_precession)
Bases: tuple
Create new instance of _OrbitPrediction(prediction_times, angles, sat_position, nutation_precession)
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {}

_fields = ('prediction_times', 'angles', 'sat_position', 'nutation_precession')

classmethod _make(iterable)
Make a new _OrbitPrediction object from a sequence or iterable
_replace(**kwds)
Return a new _OrbitPrediction object replacing specified fields with new values
angles
Alias for field number 1
nutation_precession
Alias for field number 3
prediction_times
Alias for field number 0
sat_position
Alias for field number 2
satpy.readers.gms.gms5_vissr_navigation._correct_nutation_precession(vector,
nutation_precession)

satpy.readers.gms.gms5_vissr_navigation._find_enclosing_index(x, x_sample)
Find where x_sample encloses x.
satpy.readers.gms.gms5_vissr_navigation._get_abc_helper(view_vector, sat_pos, ellipsoid)
Get a,b,c helper variables.
Reference: Appendix E, Equation (26) in the GMS user guide.
satpy.readers.gms.gms5_vissr_navigation._get_distance_to_intersection(view_vector, sat_pos,
ellipsoid)
Get distance to intersection with the earth.
If the instrument is pointing towards the earth, there will be two intersections with the surface. Choose the one
on the instrument-facing side of the earth.

192 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.gms.gms5_vissr_navigation._get_distances_to_intersections(view_vector, sat_pos,
ellipsoid)
Get distances to intersections with the earth’s surface.
Returns
Distances to two intersections with the surface.
satpy.readers.gms.gms5_vissr_navigation._get_earth_fixed_coords(point, unit_vector_x,
unit_vector_y, unit_vector_z)

satpy.readers.gms.gms5_vissr_navigation._get_lons_lats_numba(lines_2d, pixels_2d, nav_params)

satpy.readers.gms.gms5_vissr_navigation._get_map_blocks_kwargs(chunks)

satpy.readers.gms.gms5_vissr_navigation._get_pixel_navigation_parameters(point,
im_nav_params)

satpy.readers.gms.gms5_vissr_navigation._get_relative_observation_time(point, scan_params)

satpy.readers.gms.gms5_vissr_navigation._get_satellite_unit_vector_x(unit_vector_z, attitude,
orbit)

satpy.readers.gms.gms5_vissr_navigation._get_satellite_unit_vector_y(unit_vector_x,
unit_vector_z)

satpy.readers.gms.gms5_vissr_navigation._get_satellite_unit_vector_z(attitude, orbit)

satpy.readers.gms.gms5_vissr_navigation._get_satellite_z_axis_1950(angle_between_sat_spin_and_z_axis,
an-
gle_between_sat_spin_and_yz_plane)
Get satellite z-axis (spin) in mean of 1950 coordinates.
satpy.readers.gms.gms5_vissr_navigation._get_unit_vector_x(sat_sun_vec, unit_vector_z,
angle_between_earth_and_sun)

satpy.readers.gms.gms5_vissr_navigation._get_uz_cross_satsun(unit_vector_z, sat_sun_vec)

satpy.readers.gms.gms5_vissr_navigation._get_vector_from_satellite_to_sun(declination_from_sat_to_sun,
right_ascension_from_sat_to_sun)

satpy.readers.gms.gms5_vissr_navigation._interpolate(x, x_sample, y_sample)

satpy.readers.gms.gms5_vissr_navigation._interpolate_nearest(x, x_sample, y_sample)

satpy.readers.gms.gms5_vissr_navigation._interpolate_orbit_angles(observation_time,
orbit_prediction)

satpy.readers.gms.gms5_vissr_navigation._interpolate_sat_position(observation_time,
orbit_prediction)

satpy.readers.gms.gms5_vissr_navigation._make_nav_params_numba_compatible(nav_params)

satpy.readers.gms.gms5_vissr_navigation._rotate_to_greenwich(vector, greenwich_sidereal_time)

satpy.readers.gms.gms5_vissr_navigation._wrap_2pi(values)
Wrap values to interval [-pi, pi].
Source: https://stackoverflow.com/a/15927914/5703449

2.15. satpy 193


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.gms.gms5_vissr_navigation.cross_product(a, b)
Compute vector product a x b.
satpy.readers.gms.gms5_vissr_navigation.get_lon_lat(pixel, nav_params)
Get longitude and latitude coordinates for a given image pixel.
Parameters
• pixel (Pixel) – Point in image coordinates.
• nav_params (PixelNavigationParameters) – Navigation parameters for a single pixel.
Returns
Longitude and latitude in degrees.
satpy.readers.gms.gms5_vissr_navigation.get_lons_lats(lines, pixels, nav_params)
Compute lon/lat coordinates given VISSR image coordinates.
Parameters
• lines – VISSR image lines
• pixels – VISSR image pixels
• nav_params – Image navigation parameters
satpy.readers.gms.gms5_vissr_navigation.get_observation_time(point, scan_params)
Calculate observation time of a VISSR pixel.
satpy.readers.gms.gms5_vissr_navigation.interpolate_angles(x, x_sample, y_sample)
Linear interpolation of angles.
Requires 2-pi periodicity to be unwrapped before (for performance reasons). Interpolated angles are wrapped
back to [-pi, pi] to restore periodicity.
satpy.readers.gms.gms5_vissr_navigation.interpolate_attitude_prediction(attitude_prediction,
observation_time)
Interpolate attitude prediction at given observation time.
satpy.readers.gms.gms5_vissr_navigation.interpolate_continuous(x, x_sample, y_sample)
Linear interpolation of continuous quantities.
Numpy equivalent would be np.interp(. . . , left=np.nan, right=np.nan), but numba currently doesn’t support those
keyword arguments.
satpy.readers.gms.gms5_vissr_navigation.interpolate_navigation_prediction(attitude_prediction,
orbit_prediction,
observation_time)
Interpolate predicted navigation parameters.
satpy.readers.gms.gms5_vissr_navigation.interpolate_nearest(x, x_sample, y_sample)
Nearest neighbour interpolation.
satpy.readers.gms.gms5_vissr_navigation.interpolate_orbit_prediction(orbit_prediction,
observation_time)
Interpolate orbit prediction at the given observation time.
satpy.readers.gms.gms5_vissr_navigation.intersect_with_earth(view_vector, sat_pos, ellipsoid)
Intersect instrument viewing vector with the earth’s surface.
Reference: Appendix E, section 2.11 in the GMS user guide.

194 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Parameters
• view_vector (Vector3D) – Instrument viewing vector in earth-fixed coordinates.
• sat_pos (Vector3D) – Satellite position in earth-fixed coordinates.
• ellipsoid (EarthEllipsoid) – Earth ellipsoid.
Returns
Intersection (Vector3D) with the earth’s surface.
satpy.readers.gms.gms5_vissr_navigation.matrix_vector(m, v)
Multiply (3,3)-matrix and Vector3D.
satpy.readers.gms.gms5_vissr_navigation.normalize_vector(v)
Normalize a Vector3D.
satpy.readers.gms.gms5_vissr_navigation.transform_earth_fixed_to_geodetic_coords(point,
earth_flattening)
Transform from earth-fixed to geodetic coordinates.
Parameters
• point (Vector3D) – Point in earth-fixed coordinates.
• earth_flattening – Flattening of the earth.
Returns
Geodetic longitude and latitude (degrees).
satpy.readers.gms.gms5_vissr_navigation.transform_image_coords_to_scanning_angles(point, im-
age_offset,
scan-
ning_angles)
Transform image coordinates to scanning angles.
Parameters
• point (Pixel) – Point in image coordinates.
• image_offset (ImageOffset) – Image offset.
• scanning_angles (ScanningAngles) – Scanning angles.
Returns
Scanning angles (x, y) at the pixel center (rad).
satpy.readers.gms.gms5_vissr_navigation.transform_satellite_to_earth_fixed_coords(point,
orbit,
attitude)
Transform from earth-fixed to satellite angular momentum coordinates.
Parameters
• point (Vector3D) – Point in satellite angular momentum coordinates.
• orbit (Orbit) – Orbital parameters
• attitude (Attitude) – Attitude parameters
Returns
Point (Vector3D) in earth-fixed coordinates.

2.15. satpy 195


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.gms.gms5_vissr_navigation.transform_scanning_angles_to_satellite_coords(angles,
mis-
align-
ment)
Transform scanning angles to satellite angular momentum coordinates.
Parameters
• angles (Vector2D) – Scanning angles in radians.
• misalignment – Misalignment matrix (3x3)
Returns
View vector (Vector3D) in satellite angular momentum coordinates.

Module contents

GMS reader module.

Submodules

satpy.readers._geos_area module

Geostationary Projection / Area computations.


This module computes properties and area definitions for geostationary satellites. It is designed to be a common module
that can be called by all geostationary satellite readers and uses commonly-included parameters such as the CFAC/LFAC
values, satellite position, etc, to compute the correct area definition.
satpy.readers._geos_area.get_area_definition(pdict, a_ext)
Get the area definition for a geo-sat.
Parameters
• pdict – A dictionary containing common parameters: nlines: Number of lines in image
ncols: Number of columns in image ssp_lon: Subsatellite point longitude (deg) a: Earth
equatorial radius (m) b: Earth polar radius (m) h: Platform height (m) a_name: Area name
a_desc: Area description p_id: Projection id
• a_ext – A four element tuple containing the area extent (scan angle) for the scene in radians
Returns
An area definition for the scene
Return type
a_def

á Note

The AreaDefinition proj_id attribute is being deprecated.

satpy.readers._geos_area.get_area_extent(pdict)
Get the area extent seen by a geostationary satellite.
Parameters
pdict – A dictionary containing common parameters: nlines: Number of lines in image ncols:
Number of columns in image cfac: Column scaling factor lfac: Line scaling factor coff: Column
offset factor loff: Line offset factor scandir: ‘N2S’ for standard (N->S), ‘S2N’ for inverse (S->N)
h: Altitude of satellite above the Earth’s surface (m)

196 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Returns
An area extent for the scene
Return type
aex
satpy.readers._geos_area.get_geos_area_naming(input_dict)
Get a dictionary containing formatted AreaDefinition naming.
Parameters
input_dict – dict Dictionary with keys platform_name, instrument_name, service_name, ser-
vice_desc, resolution . The resolution is expected in meters.
Returns
area_naming_dict with area_id, description keys, values are strings.

á Note

The AreaDefinition proj_id attribute is being deprecated and is therefore not formatted here. An empty string
is to be used until the attribute is fully removed.

satpy.readers._geos_area.get_resolution_and_unit_strings(resolution)
Get the resolution value and unit as strings.
If the resolution is larger than 1000 m, use kilometer as unit. If lower, use meter.
Parameters
resolution – scalar Resolution in meters.
Returns
Dictionary with value and unit keys, values are strings.
satpy.readers._geos_area.get_xy_from_linecol(line, col, offsets, factors)
Get the intermediate coordinates from line & col.
Intermediate coordinates are actually the instruments scanning angles.
satpy.readers._geos_area.make_ext(ll_x, ur_x, ll_y, ur_y, h)
Create the area extent from computed ll and ur.
Parameters
• ll_x – The lower left x coordinate (m)
• ur_x – The upper right x coordinate (m)
• ll_y – The lower left y coordinate (m)
• ur_y – The upper right y coordinate (m)
• h – The satellite altitude above the Earth’s surface
Returns
An area extent for the scene
Return type
aex
satpy.readers._geos_area.sampling_to_lfac_cfac(sampling)
Convert angular sampling to line/column scaling factor (aka LFAC/CFAC).
Reference: MSG Ground Segment LRIT HRIT Mission Specific Implementation, Appendix E.2.

2.15. satpy 197


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Parameters
sampling – float Angular sampling (rad)
Returns
Line/column scaling factor (deg-1)

satpy.readers.aapp_l1b module

Reader for aapp level 1b data.


Options for loading:
• pre_launch_coeffs (False): use pre-launch coefficients if True, operational otherwise (if available).
https://nwp-saf.eumetsat.int/site/download/documentation/aapp/NWPSAF-MF-UD-003_Formats_v8.0.pdf
class satpy.readers.aapp_l1b.AAPPL1BaseFileHandler(filename, filename_info, filetype_info)
Bases: BaseFileHandler
A base file handler for the AAPP level-1 formats.
Initialize AAPP level-1 file handler object.
_calibrate_active_channel_data(key)
Calibrate active channel data only.
_get_platform_name(platform_names_lookup)
Get the platform name from the file header.
_set_filedata_layout()
Set the file data type/layout.
_update_dataset_attributes(dataset, key, info)

property end_time
Get the time of the final observation.
get_dataset(key, info)
Get a dataset from the file.
read()
Read the data.
property start_time
Get the time of the first observation.
class satpy.readers.aapp_l1b.AVHRRAAPPL1BFile(filename, filename_info, filetype_info)
Bases: AAPPL1BaseFileHandler
Reader for AVHRR L1B files created from the AAPP software.
Initialize object information by reading the input file.
_calibrate_active_channel_data(key)
Calibrate active channel data only.
static _convert_binary_channel_status_to_activation_dict(status)

static _create_40km_interpolator(lines, *arrays_40km, geolocation=False)

_get_active_channels()

198 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_all_interpolated_angles_uncached()

_get_all_interpolated_coordinates_uncached()

_get_channel_binary_status_from_header()

_get_coordinates_in_degrees()

_get_tiepoint_angles_in_degrees()

_interpolate_arrays(*input_arrays, geolocation=False)

_set_filedata_layout()
Set the file data type/layout.
available_datasets(configured_datasets=None)
Get the available datasets.
calibrate(dataset_id, pre_launch_coeffs=False, calib_coeffs=None)
Calibrate the data.
get_angles(angle_id)
Get sun-satellite viewing angles.
navigate(coordinate_id)
Get the longitudes and latitudes of the scene.
satpy.readers.aapp_l1b._ir_calibrate(header, data, irchn, calib_type, mask=True)
Calibrate for IR bands.
calib_type in brightness_temperature, radiance, count
satpy.readers.aapp_l1b._vis_calibrate(data, chn, calib_type, pre_launch_coeffs=False,
calib_coeffs=None, mask=True)
Calibrate visible channel data.
calib_type in count, reflectance, radiance.
satpy.readers.aapp_l1b.create_xarray(arr)
Create an xarray.DataArray.
satpy.readers.aapp_l1b.get_aapp_chunks(shape)
Get chunks from a given shape adapted for AAPP data.
satpy.readers.aapp_l1b.get_avhrr_lac_chunks(shape, dtype)
Get chunks from a given shape adapted for full-resolution AVHRR data.

satpy.readers.aapp_mhs_amsub_l1c module

Reader for the AAPP AMSU-B/MHS level-1c data.


https://nwp-saf.eumetsat.int/site/download/documentation/aapp/NWPSAF-MF-UD-003_Formats_v8.0.pdf
class satpy.readers.aapp_mhs_amsub_l1c.MHS_AMSUB_AAPPL1CFile(filename, filename_info,
filetype_info)
Bases: AAPPL1BaseFileHandler
Reader for AMSU-B/MHS L1C files created from the AAPP software.
Initialize object information by reading the input file.

2.15. satpy 199


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_calibrate_active_channel_data(key)
Calibrate active channel data only.
_get_coordinates_in_degrees()

_get_sensorname()
Get the sensor name from the header.
_set_filedata_layout()
Set the file data type/layout.
calibrate(dataset_id)
Calibrate the data.
get_angles(angle_id)
Get sun-satellite viewing angles.
navigate(coordinate_id)
Get the longitudes and latitudes of the scene.
satpy.readers.aapp_mhs_amsub_l1c._calibrate(data, chn, calib_type, mask=True)
Calibrate channel data.
calib_type in brightness_temperature.

satpy.readers.abi_base module

Advance Baseline Imager reader base class for the Level 1b and l2+ reader.
class satpy.readers.abi_base.NC_ABI_BASE(filename, filename_info, filetype_info)
Bases: BaseFileHandler
Base reader for ABI L1B L2+ NetCDF4 files.
Open the NetCDF file with xarray and prepare the Dataset for reading.
_adjust_coords(data, item)
Handle coordinates (and recursive fun).
_adjust_data(data, item)
Adjust data with typing, scaling and filling.
_chunk_bytes_for_resolution() → int
Get a best-guess optimal chunk size for resolution-based chunking.
First a chunk size is chosen for the provided Dask setting array.chunk-size and then aligned with a hardcoded
on-disk chunk size of 226. This is then adjusted to match the current resolution.
This should result in 500 meter data having 4 times as many pixels per dask array chunk (2 in each dimen-
sion) as 1km data and 8 times as many as 2km data. As data is combined or upsampled geographically
the arrays should not need to be rechunked. Care is taken to make sure that array chunks are aligned with
on-disk file chunks at all resolutions, but at the cost of flexibility due to a hardcoded on-disk chunk size of
226 elements per dimension.
_get_areadef_fixedgrid(key)
Get the area definition of the data at hand.
Note this method takes special care to round and cast numbers to new data types so that the area definitions
for different resolutions (different bands) should be equal. Without the special rounding in __getitem__ and
this method the area extents can be 0 to 1.0 meters off depending on how the calculations are done.

200 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_areadef_latlon(key)
Get the area definition of the data at hand.
static _rename_dims(nc)

property end_time
End time of the current file’s observations.
get_area_def(key)
Get the area definition of the data at hand.
get_dataset(key, info)
Load a dataset.
property nc
Get the xarray dataset for this file.
property sensor
Get sensor name for current file handler.
spatial_resolution_to_number()
Convert the ‘spatial_resolution’ global attribute to meters.
property start_time
Start time of the current file’s observations.

satpy.readers.abi_l1b module

Advance Baseline Imager reader for the Level 1b format.


The files read by this reader are described in the official PUG document:
https://www.goes-r.gov/users/docs/PUG-L1b-vol3.pdf
class satpy.readers.abi_l1b.NC_ABI_L1B(filename, filename_info, filetype_info,
clip_negative_radiances=None)
Bases: NC_ABI_BASE
File reader for individual ABI L1B NetCDF4 files.
Open the NetCDF file with xarray and prepare the Dataset for reading.
_adjust_attrs(data, key)

_get_minimum_radiance(data)
Estimate minimum radiance from Rad DataArray.
_ir_calibrate(data)
Calibrate IR channels to BT.
_rad_calibrate(data)
Calibrate any channel to radiances.
This no-op method is just to keep the flow consistent - each valid cal type results in a calibration method
call
_raw_calibrate(data)
Calibrate any channel to raw counts.
Useful for cases where a copy requires no calibration.

2.15. satpy 201


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_vis_calibrate(data)
Calibrate visible channels to reflectance.
get_dataset(key, info)
Load a dataset.

satpy.readers.abi_l2_nc module

Advance Baseline Imager NOAA Level 2+ products reader.


The files read by this reader are described in the official PUG document:
https://www.goes-r.gov/products/docs/PUG-L2+-vol5.pdf
class satpy.readers.abi_l2_nc.NC_ABI_L2(filename, filename_info, filetype_info)
Bases: NC_ABI_BASE
Reader class for NOAA ABI l2+ products in netCDF format.
Open the NetCDF file with xarray and prepare the Dataset for reading.
static _remove_problem_attrs(variable)

_update_data_arr_with_filename_attrs(variable)

available_datasets(configured_datasets=None)
Add resolution to configured datasets.
get_dataset(key, info)
Load a dataset.

satpy.readers.acspo module

ACSPO SST Reader.


See the following page for more information:
https://podaac.jpl.nasa.gov/dataset/VIIRS_NPP-OSPO-L2P-v2.3
class satpy.readers.acspo.ACSPOFileHandler(filename, filename_info, filetype_info,
auto_maskandscale=False, xarray_kwargs=None,
cache_var_size=0, cache_handle=False)
Bases: NetCDF4FileHandler
ACSPO L2P SST File Reader.
Initialize object.
static _parse_datetime(datestr)

property end_time
Get final observation time of data.
get_dataset(dataset_id, ds_info)
Load data array and metadata from file on disk.
get_metadata(dataset_id, ds_info)
Collect various metadata about the specified dataset.

202 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_shape(ds_id, ds_info)
Get numpy array shape for the specified dataset.
Parameters
• ds_id (DataID) – ID of dataset that will be loaded
• ds_info (dict) – Dictionary of dataset information from config file
Returns
(rows, cols)
Return type
tuple
property platform_name
Get satellite name for this file’s data.
property sensor_name
Get instrument name for this file’s data.
property start_time
Get first observation time of data.

satpy.readers.agri_l1 module

Advanced Geostationary Radiation Imager reader for the Level_1 HDF format.
The files read by this reader are described in the official Real Time Data Service:
http://fy4.nsmc.org.cn/data/en/data/realtime.html
class satpy.readers.agri_l1.HDF_AGRI_L1(filename, filename_info, filetype_info)
Bases: FY4Base
AGRI l1 file handler.
Init filehandler.
adjust_attrs(data, ds_info)
Adjust the attrs of the data.
get_dataset(dataset_id, ds_info)
Load a dataset.

satpy.readers.ahi_hsd module

Advanced Himawari Imager (AHI) standard format data reader.

References
• Himawari-8/9 Himawari Standard Data User’s Guide
• http://www.data.jma.go.jp/mscweb/en/himawari89/space_segment/spsg_ahi.html

Time Information

AHI observations use the idea of a “nominal” time and an “observation” time. The “nominal” time or re-
peat cycle is the overall window when the instrument can record data, usually at a specific and consistent in-
terval. The “observation” time is when the data was actually observed inside the nominal window. These

2.15. satpy 203


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

two times are stored in a sub-dictionary in the metadata calls time_parameters. Nominal time can be ac-
cessed from the nominal_start_time and nominal_end_time metadata keys and observation time from the
observation_start_time and observation_end_time keys. Observation time can also be accessed from the
parent (.attrs) dictionary as the start_time and end_time keys.

Satellite Position

As discussed in the Orbital Parameters documentation, a satellite position can be described by a specific “actual”
position, a “nominal” position, a “projection” position, or sometimes a “nadir” position. Not all readers are able to
produce all of these positions. In the case of AHI HSD data we have an “actual” and “projection” position. For a lot of
sensors/readers though, the “actual” position values do not change between bands or segments of the same time step
(repeat cycle). AHI HSD files contain varying values for the actual position.
Other components in Satpy use this actual satellite position to generate other values (ex. sensor zenith angles). If these
values are not consistent between bands then Satpy (dask) will not be able to share these calculations (generate one
sensor zenith angle for band 1, another for band 2, etc) even though there is rarely a noticeable difference. To deal with
this this reader has an option round_actual_position that defaults to True and will round the “actual” position
(longitude, latitude, altitude) in a way to produce as consistent a position between bands as possible.
class satpy.readers.ahi_hsd.AHIHSDFileHandler(filename, filename_info, filetype_info, mask_space=True,
calib_mode='update', user_calibration=None,
round_actual_position=True)
Bases: BaseFileHandler
AHI standard format reader.
The AHI sensor produces data for some pixels outside the Earth disk (i,e: atmospheric limb or deep space
pixels). By default, these pixels are masked out as they contain data of limited or no value, but some applications
do require these pixels. It is therefore possible to override the default behaviour and perform no masking of
non-Earth pixels.
In order to change the default behaviour, use the ‘mask_space’ variable as part of reader_kwargs upon Scene
creation:

import satpy
import glob

filenames = glob.glob('*FLDK*.dat')
scene = satpy.Scene(filenames,
reader='ahi_hsd',
reader_kwargs={'mask_space': False})
scene.load([0.6])

The AHI HSD data files contain multiple VIS channel calibration coefficients. By default, the updated coeffi-
cients in header block 6 are used. If the user prefers the default calibration coefficients from block 5 then they
can pass calib_mode=’nominal’ when creating a scene:

import satpy
import glob

filenames = glob.glob('*FLDK*.dat')
scene = satpy.Scene(filenames,
reader='ahi_hsd',
reader_kwargs={'calib_mode': 'update'})
scene.load([0.6])

204 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Alternative AHI calibrations are also available, such as GSICS coefficients. As such, you can supply custom
per-channel correction by setting calib_mode=’custom’ and passing correction factors via:

user_calibration={'chan': ['slope': slope, 'offset': offset]}

Where slo and off are per-channel slope and offset coefficients defined by:

rad_leo = (rad_geo - off) / slo

If you do not have coefficients for a particular band, then by default the slope will be set to 1 .and the offset to 0.:

import satpy
import glob

# Load bands 7, 14 and 15, but we only have coefs for 7+14
calib_dict = {'B07': {'slope': 0.99, 'offset': 0.002},
'B14': {'slope': 1.02, 'offset': -0.18}}

filenames = glob.glob('*FLDK*.dat')
scene = satpy.Scene(filenames,
reader='ahi_hsd',
reader_kwargs={'user_calibration': calib_dict)
# B15 will not have custom radiance correction applied.
scene.load(['B07', 'B14', 'B15'])

By default, user-supplied calibrations / corrections are applied to the radiance data in accordance with the GSICS
standard defined in the equation above. However, user-supplied gain and offset values for converting digital
number into radiance via Rad = DN * gain + offset are also possible. To supply your own factors, supply a user
calibration dict using type: ‘DN’ as follows:

calib_dict = {'B07': {'slope': 0.0037, 'offset': 18.5},


'B14': {'slope': -0.002, 'offset': 22.8},
'type': 'DN'}

You can also explicitly select radiance correction with ‘type’: ‘RAD’ but this is not necessary as it is the default
option if you supply your own correction coefficients.
Initialize the reader.
_check_fpos(fp_, fpos, offset, block)
Check file position matches blocksize.
_get_area_def()

_get_metadata(key, ds_info)

_get_user_calibration_correction_type()

_ir_calibrate(data)
IR calibration.
_mask_invalid(data, header)
Mask invalid data.
_mask_space(data)
Mask space pixels.

2.15. satpy 205


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_read_data(fp_, header, resolution)


Read data block.
_read_header(fp_)
Read header.
property _timeline

_vis_calibrate(data)
Visible channel calibration only.
property area
Get AreaDefinition representing this file’s data.
calibrate(data, calibration)
Calibrate the data.
convert_to_radiance(data)
Calibrate to radiance.
property end_time
Get the nominal end time.
get_area_def(dsid)
Get the area definition.
get_dataset(key, info)
Get the dataset.
property nominal_end_time
Get the nominal end time.
property nominal_start_time
Time this band was nominally to be recorded.
property observation_end_time
Get the observation end time.
property observation_start_time
Get the observation start time.
read_band(key, ds_info)
Read the data.
property start_time
Get the nominal start time.
class satpy.readers.ahi_hsd._NominalTimeCalculator(timeline, area)
Bases: object
Get time when a scan was nominally to be recorded.
Initialize the nominal timestamp calculator.
Parameters
• timeline (str) – Observation timeline (four characters HHMM)
• area (str) – Observation area (four characters, e.g. FLDK)

206 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_closest_timeline(observation_time)
Find the closest timeline for the given observation time.
Needs to check surrounding days because the observation might start a little bit before the planned time.
Observation start time: 2022-12-31 23:59 Timeline: 0000 => Nominal start time: 2023-01-01 00:00
_get_offset_relative_to_timeline()

_modify_observation_time_for_nominal(observation_time)
Round observation time to a nominal time based on known observation frequency.
AHI observations are split into different sectors including Full Disk (FLDK), Japan (JP) sectors, and smaller
regional (R) sectors. Each sector is observed at different frequencies (ex. every 10 minutes, every 2.5
minutes, and every 30 seconds). This method will take the actual observation time and round it to the
nearest interval for this sector. So if the observation time is 13:32:48 for the “JP02” sector which is the
second Japan observation where every Japan observation is 2.5 minutes apart, then the result should be
13:32:30.
property _observation_frequency

_parse_timeline(timeline)

get_nominal_end_time(nominal_start_time)
Get nominal end time of the scan.
get_nominal_start_time(observation_start_time)
Get nominal start time of the scan.

satpy.readers.ahi_l1b_gridded_bin module

Advanced Himawari Imager (AHI) gridded format data reader.


This data comes in a flat binary format on a fixed grid, and needs to have calibration coefficients applied to it in order
to retrieve reflectance or BT. LUTs can be downloaded at: ftp://hmwr829gr.cr.chiba-u.ac.jp/gridded/FD/support/
This data is gridded from the original Himawari geometry. To our knowledge, only full disk grids are available, not for
the Meso or Japan rapid scans.

References
• AHI gridded data website:
http://www.cr.chiba-u.jp/databases/GEO/H8_9/FD/index_jp.html
class satpy.readers.ahi_l1b_gridded_bin.AHIGriddedFileHandler(filename, filename_info,
filetype_info)
Bases: BaseFileHandler
AHI gridded format reader.
This data is flat binary, big endian unsigned short. It covers the region 85E -> 205E, 60N -> 60S at variable
resolution: - 0.005 degrees for Band 3 - 0.01 degrees for Bands 1, 2 and 4 - 0.02 degrees for all other bands.
These are approximately equivalent to 0.5, 1 and 2km.
Files can either be zipped with bz2 compression (like the HSD format data), or can be uncompressed flat binary.
Initialize the reader.
_calibrate(data)
Load calibration from LUT and apply.

2.15. satpy 207


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

static _download_luts(file_name)
Download LUTs from remote server.
_get_luts()
Download the LUTs needed for count->Refl/BT conversion.
_load_lut()
Determine if LUT is available and, if not, download it.
_read_data(fp_)
Read raw binary data from file.
static _untar_luts(tarred_file, outdir)
Uncompress downloaded LUTs, which are a tarball.
calibrate(data, calib)
Calibrate the data.
get_area_def(dsid)
Get the area definition.
This is fixed, but not defined in the file. So we must generate it ourselves with some assumptions.
get_dataset(key, info)
Get the dataset.
read_band(key, info)
Read the data.

satpy.readers.ahi_l2_nc module

Reader for Himawari L2 cloud products from NOAA’s big data programme.
For more information about the data, see: <https://registry.opendata.aws/noaa-himawari/>.
These products are generated by the NOAA enterprise cloud suite and have filenames like: AHI-
CMSK_v1r1_h09_s202308240540213_e202308240549407_c202308240557548.nc
The second letter grouping (CMSK above) indicates the product type:
CMSK - Cloud mask
CHGT - Cloud height
CPHS - Cloud type and phase
These products are generated from the AHI sensor on Himawari-8 and Himawari-9, and are produced at the native
instrument resolution for the IR channels (2km at nadir).
NOTE: This reader is currently only compatible with full disk scenes. Unlike level 1 himawari data, the netCDF files
do not contain the required metadata to produce an appropriate area definition for the data contents, and hence the area
definition is hardcoded into the reader.
A warning is displayed to the user highlighting this. The assumed area definition is a full disk image at the nominal
subsatellite longitude of 140.7 degrees East.
All the simple data products are supported here, but multidimensional products are not yet supported. These include
the CldHgtFlag and the CloudMaskPacked variables.

208 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.ahi_l2_nc.HIML2NCFileHandler(filename, filename_info, filetype_info)


Bases: BaseFileHandler
File handler for Himawari L2 NOAA enterprise data in netCDF format.
Initialize the reader.
_get_area_def()

property area
Get AreaDefinition representing this file’s data.
property end_time
End timestamp of the dataset.
get_area_def(dsid)
Get the area definition.
get_dataset(key, info)
Load a dataset.
property start_time
Start timestamp of the dataset.

satpy.readers.ami_l1b module

Advanced Meteorological Imager reader for the Level 1b NetCDF4 format.


class satpy.readers.ami_l1b.AMIL1bNetCDF(filename, filename_info, filetype_info,
calib_mode='PYSPECTRAL', allow_conditional_pixels=False,
user_calibration=None, clip_negative_radiances=None)
Bases: BaseFileHandler
Base reader for AMI L1B NetCDF4 files.
AMI data contains GSICS adjustment factors for the IR bands. By default, these are not applied. If you wish to
apply them then you must set the calibration mode appropriately:

import satpy
import glob

filenames = glob.glob('*FLDK*.dat')
scene = satpy.Scene(filenames,
reader='ahi_hsd',
reader_kwargs={'calib_mode': 'gsics'})
scene.load(['B13'])

In addition, the GSICS website (and other sources) also supply radiance correction coefficients like so:

radiance_corr = (radiance_orig - corr_offset) / corr_slope

If you wish to supply such coefficients, pass ‘user_calibration’ and a dictionary containing per-channel slopes
and offsets as a reader_kwarg:

user_calibration={'chan': {'slope': slope, 'offset': offset}}

If you do not have coefficients for a particular band, then by default the slope will be set to 1 .and the offset to 0.:

2.15. satpy 209


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

import satpy
import glob

# Load bands 7, 14 and 15, but we only have coefs for 7+14
calib_dict = {'WV063': {'slope': 0.99, 'offset': 0.002},
'IR087': {'slope': 1.02, 'offset': -0.18}}

filenames = glob.glob('*.nc')
scene = satpy.Scene(filenames,
reader='ami_l1b',
reader_kwargs={'user_calibration': calib_dict,
'calib_mode': 'file')
# IR133 will not have radiance correction applied.
scene.load(['WV063', 'IR087', 'IR133'])

By default these updated coefficients are not used. In most cases, setting calib_mode to file is required in order
to use external coefficients.
Open the NetCDF file with xarray and prepare the Dataset for reading.
_apply_gsics_rad_correction(data)
Retrieve GSICS factors from L1 file and apply to radiance.
_apply_user_rad_correction(data)
Retrieve user-supplied radiance correction and apply.
_calibrate_ir(dataset_id, data)
Calibrate radiance data to BTs using either pyspectral or in-file coefficients.
_clip_negative_radiance(data, gain, offset)
If requested, clip negative radiance from Rad DataArray.
property end_time
Get observation end time.
get_area_def(dsid)
Get area definition for this file.
get_dataset(dataset_id, ds_info)
Load a dataset as a xarray DataArray.
get_orbital_parameters()
Collect orbital parameters for this file.
property start_time
Get observation start time.

satpy.readers.amsr2_l1b module

Reader for AMSR2 L1B files in HDF5 format.


class satpy.readers.amsr2_l1b.AMSR2L1BFileHandler(filename, filename_info, filetype_info)
Bases: HDF5FileHandler
File handler for AMSR2 l1b.
Initialize file handler.

210 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_dataset(ds_id, ds_info)
Get output data and metadata of specified dataset.
get_metadata(ds_id, ds_info)
Get the metadata.
get_shape(ds_id, ds_info)
Get output shape of specified dataset.

satpy.readers.amsr2_l2 module

Reader for AMSR2 L2 files in HDF5 format.


class satpy.readers.amsr2_l2.AMSR2L2FileHandler(filename, filename_info, filetype_info)
Bases: AMSR2L1BFileHandler
AMSR2 level 2 file handler.
Initialize file handler.
get_dataset(ds_id, ds_info)
Get output data and metadata of specified dataset.
mask_dataset(ds_info, data)
Mask data with the fill value.
scale_dataset(var_path, data)
Scale data with the scale factor attribute.

satpy.readers.amsr2_l2_gaasp module

GCOM-W1 AMSR2 Level 2 files from the GAASP software.


GAASP output files are in the NetCDF4 format. Software is provided by NOAA and is also distributed by the CSPP
group. More information on the products supported by this reader can be found here: https://www.star.nesdis.noaa.
gov/jpss/gcom.php for more information.
GAASP includes both swath/granule products and gridded products. Swath products are provided in files with “MBT”,
“OCEAN”, “SNOW”, or “SOIL” in the filename. Gridded products are in files with “SEAICE-SH” or “SEAICE-NH”
in the filename where SH stands for South Hemisphere and NH stands for North Hemisphere. These gridded products
are on the EASE2 North pole and South pole grids. See https://nsidc.org/ease/ease-grid-projection-gt for more details.
Note that since SEAICE products can be on both the northern or southern hemisphere or both depending on what files
are provided to Satpy, this reader appends a _NH and _SH suffix to all variable names that are dynamically discovered
from the provided files.
class satpy.readers.amsr2_l2_gaasp.GAASPFileHandler(filename, filename_info, filetype_info)
Bases: BaseFileHandler
Generic file handler for GAASP output files.
Initialize file handler.
_add_lonlat_coords(data_arr, ds_info)

_available_if_this_file_type(configured_datasets)

_available_new_datasets()

2.15. satpy 211


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_fill_data(data_arr, attrs)

_get_ds_info_for_data_arr(var_name, data_arr)

_get_var_name_without_suffix(var_name)

_is_2d_yx_data_array(data_arr)

static _nan_for_dtype(data_arr_dtype)

_scale_data(data_arr, attrs)

available_datasets(configured_datasets=None)
Dynamically discover what variables can be loaded from this file.
See satpy.readers.file_handlers.BaseHandler.available_datasets() for more information.
dim_resolutions = {'Number_of_hi_rez_FOVs': 5000, 'Number_of_low_rez_FOVs': 10000}

property end_time
Get end time of observation.
get_dataset(dataid, ds_info)
Load, scale, and collect metadata for the specified DataID.
is_gridded = False

property nc
Get the xarray dataset for this file.
property platform_name
Name of the platform whose data is stored in this file.
property sensor_names
Sensors who have data in this file.
property start_time
Get start time of observation.
time_dims = ('Time_Dimension',)

x_dims: Tuple[str, ...] = ('Number_of_hi_rez_FOVs', 'Number_of_low_rez_FOVs')

y_dims: Tuple[str, ...] = ('Number_of_Scans',)

class satpy.readers.amsr2_l2_gaasp.GAASPGriddedFileHandler(filename, filename_info, filetype_info)


Bases: GAASPFileHandler
GAASP file handler for gridded products like SEAICE.
Initialize file handler.
static _get_extents(data_shape, res)

dim_resolutions = {'Number_of_X_Dimension': 10000}

get_area_def(dataid)
Create area definition for equirectangular projected data.
is_gridded = True

212 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

x_dims: Tuple[str, ...] = ('Number_of_X_Dimension',)

y_dims: Tuple[str, ...] = ('Number_of_Y_Dimension',)

class satpy.readers.amsr2_l2_gaasp.GAASPLowResFileHandler(filename, filename_info, filetype_info)


Bases: GAASPFileHandler
GAASP file handler for files that only have low resolution products.
Initialize file handler.
dim_resolutions = {'Number_of_low_rez_FOVs': 10000}

x_dims: Tuple[str, ...] = ('Number_of_low_rez_FOVs',)

satpy.readers.ascat_l2_soilmoisture_bufr module

ASCAT Soil moisture product reader for BUFR messages.


Based on the IASI L2 SO2 BUFR reader.
class satpy.readers.ascat_l2_soilmoisture_bufr.AscatSoilMoistureBufr(filename, filename_info,
filetype_info, **kwargs)
Bases: BaseFileHandler
File handler for the ASCAT Soil Moisture BUFR product.
Initialise the file handler for the ASCAT Soil Moisture BUFR data.
property end_time
Return the end time of data acquisition.
extract_msg_date_extremes(bufr, date_min=None, date_max=None)
Extract the minimum and maximum dates from a single bufr message.
get_bufr_data(key)
Get BUFR data by key.
get_dataset(dataset_id, dataset_info)
Get dataset using the BUFR key in dataset_info.
get_start_end_date()
Get the first and last date from the bufr file.
property platform_name
Return spacecraft name.
property start_time
Return the start time of data acqusition.

satpy.readers.atms_l1b_nc module

Advanced Technology Microwave Sounder (ATMS) Level 1B product reader.


The format is explained in the ATMS L1B Product User Guide

2.15. satpy 213


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.atms_l1b_nc.AtmsL1bNCFileHandler(filename, filename_info, filetype_info,


**kwargs)
Bases: NetCDF4FileHandler
Reader class for ATMS L1B products in netCDF format.
Initialize file handler.
static _drop_coords(dataset)
Drop coords that are not in dims.
_merge_attributes(dataset, dataset_info)
Merge attributes of the dataset.
_select_dataset(name)
Select dataset.
static _standardize_dims(dataset)
Standardize dims to y, x.
property antenna_temperature
Get antenna temperature.
property attrs
Return attributes.
property end_time
Get observation end time.
get_dataset(dataset_id, ds_info)
Get dataset.
property platform_name
Get platform name.
property sensor
Get sensor.
property start_time
Get observation start time.

satpy.readers.atms_sdr_hdf5 module

Reader for the ATMS SDR format.


A reader for Advanced Technology Microwave Sounder (ATMS) SDR data as it e.g. comes out of the CSPP package
for processing Direct Readout data.
The format is described in the JPSS COMMON DATA FORMAT CONTROL BOOK (CDFCB):
Joint Polar Satellite System (JPSS) Common Data Format Control Book - External (CDFCB-X) Volume III - SDR/TDR
Formats
(474-00001-03_JPSS-CDFCB-X-Vol-III_0124C.pdf)
https://www.nesdis.noaa.gov/about/documents-reports/jpss-technical-documents/jpss-science-documents

214 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.atms_sdr_hdf5.ATMS_SDR_FileHandler(filename, filename_info, filetype_info,


**kwargs)
Bases: JPSS_SDR_FileHandler
ATMS SDR HDF5 File Reader.
Initialize file handler.
_get_atms_channel_index(ch_name)
Get the channels array index from name.
_get_scans_per_granule(dataset_group)

_get_variable(var_path, channel_index=None)

get_dataset(dataset_id, ds_info)
Get the dataset corresponding to dataset_id.
The size of the return DataArray will be dependent on the number of scans actually sensed of course.

satpy.readers.avhrr_l1b_gaclac module

Reading and calibrating GAC and LAC AVHRR data.


Uses Pygac under the hood. See the Pygac Documentation for supported data formats as well as calibration and navi-
gation methods.
class satpy.readers.avhrr_l1b_gaclac.GACLACFile(filename, filename_info, filetype_info,
start_line=None, end_line=None,
strip_invalid_coords=True, interpolate_coords=True,
**reader_kwargs)
Bases: BaseFileHandler
Reader for GAC and LAC data.
Init the file handler.
Parameters
• start_line – User defined start scanline
• end_line – User defined end scanline
• strip_invalid_coords – Strip scanlines with invalid coordinates in the beginning/end of
the orbit
• interpolate_coords – Interpolate coordinates from every eighth pixel to all pixels.
• reader_kwargs – More keyword arguments to be passed to pygac.Reader. See the pygac
documentation for available options.
_get_angle(key)
Get angles and buffer results.
_get_channel(key)
Get channel and buffer results.
_get_qual_flags()
Get quality flags and buffer results.
_is_avhrr2()

2.15. satpy 215


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_is_avhrr3()

_slice(data)
Select user-defined scanlines and/or strip invalid coordinates.
Returns
Sliced data
_strip_invalid_lat()
Strip scanlines with invalid coordinates in the beginning/end of the orbit.
Returns
First and last scanline with valid latitudes.
_update_attrs(res)
Update dataset attributes.
property end_time
Get the end time.
get_dataset(key, info)
Get the dataset.
read_raw_data()
Create a pygac reader and read raw data from the file.
slice(data, times)
Select user-defined scanlines and/or strip invalid coordinates.
Furthermore, update scanline timestamps.
Parameters
• data – Data to be sliced
• times – Scanline timestamps
Returns
Sliced data and timestamps
property start_time
Get the start time.

satpy.readers.clavrx module

Interface to CLAVR-X HDF4 products.


class satpy.readers.clavrx.CLAVRXHDF4FileHandler(filename, filename_info, filetype_info)
Bases: HDF4FileHandler, _CLAVRxHelper
A file handler for CLAVRx files.
Init method.
_available_aliases(ds_info, current_var)
Add alias if there is a match.
_dynamic_datasets()
Get data from file and build aliases.
_is_polar()

216 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

available_datasets(configured_datasets=None)
Add more information if this reader can provide it.
property end_time
Get the end time.
get_area_def(key)
Get the area definition of the data at hand.
get_dataset(dataset_id, ds_info)
Get a dataset for Polar Sensors.
get_shape(dataset_id, ds_info)
Get the shape.
property start_time
Get the start time.
class satpy.readers.clavrx.CLAVRXNetCDFFileHandler(filename, filename_info, filetype_info)
Bases: _CLAVRxHelper, BaseFileHandler
File Handler for CLAVRX netcdf files.
Init method.
_available_file_datasets(handled_vars)
Metadata for available variables other than BT.
_dynamic_dataset_info(var_name)
Set data name and, if applicable, aliases.
static _is_2d_yx_data_array(data_arr)

_is_polar()

available_datasets(configured_datasets=None)
Dynamically discover what variables can be loaded from this file.
See satpy.readers.file_handlers.BaseHandler.available_datasets() for more information.
get_area_def(key)
Get the area definition of the data at hand.
get_dataset(dataset_id, ds_info)
Get a dataset for supported geostationary sensors.
class satpy.readers.clavrx._CLAVRxHelper
Bases: object
A base class for the CLAVRx File Handlers.
static _area_extent(x, y, h: float)

static _find_input_nc(filename: str, sensor: str, l1b_base: str) → str

static _get_data(data, dataset_id: dict) → DataArray


Get a dataset.
static _get_nadir_resolution(sensor, filename_info_resolution)
Get nadir resolution.

2.15. satpy 217


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

static _read_axi_fixed_grid(filename: str, sensor: str, l1b_attr) → AreaDefinition


Read a fixed grid.
CLAVR-x does not transcribe fixed grid parameters to its output We have to recover that information from
the original input file, which is partially named as L1B attribute
example attributes found in L2 CLAVR-x files: sensor = “AHI” ; platform = “HIM8” ; FILENAME =
“clavrx_H08_20180719_1300.level2.hdf” ; L1B = “clavrx_H08_20180719_1300” ;
static _read_pug_fixed_grid(projection_coordinates: netCDF4.Variable, distance_multiplier=1.0) →
dict
Read from recent PUG format, where axes are in meters.
static _remove_attributes(attrs: dict) → dict
Remove attributes that described data before scaling.
static get_metadata(sensor: str, platform: str, attrs: dict, ds_info: dict) → dict
Get metadata.
satpy.readers.clavrx._get_platform(platform: str) → str
Get the platform.
satpy.readers.clavrx._get_rows_per_scan(sensor: str) → int | None
Get number of rows per scan.
satpy.readers.clavrx._get_sensor(sensor: str) → str
Get the sensor.
satpy.readers.clavrx._scale_data(data_arr: DataArray | int, scale_factor: float, add_offset: float) →
DataArray
Scale data, if needed.

satpy.readers.cmsaf_claas2 module

Module containing CMSAF CLAAS v2 FileHandler.


class satpy.readers.cmsaf_claas2.CLAAS2(*args, **kwargs)
Bases: NetCDF4FileHandler
Handle CMSAF CLAAS-2 files.
Initialise class.
_get_dsinfo(var)
Get metadata for variable.
Return metadata dictionary for variable var.
_get_full_disk()

_get_subset_of_full_disk()
Get subset of the full disk.
CLAAS products are provided on a grid that is slightly smaller than the full disk (excludes most of the
space pixels).
available_datasets(configured_datasets=None)
Yield a collection of available datasets.
Return a generator that will yield the datasets available in the loaded files. See docstring in parent class for
specification details.

218 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property end_time
Get end time from file.
get_area_def(dataset_id)
Get the area definition.
get_dataset(dataset_id, info)
Get the dataset.
grid_size = 3636

property start_time
Get start time from file.
satpy.readers.cmsaf_claas2._adjust_area_to_match_shifted_data(area)

satpy.readers.cmsaf_claas2._is_georef_offset_present(date)

satpy.readers.electrol_hrit module

HRIT format reader.

References
ELECTRO-L GROUND SEGMENT MSU-GS INSTRUMENT,
LRIT/HRIT Mission Specific Implementation, February 2012
class satpy.readers.electrol_hrit.HRITGOMSEpilogueFileHandler(filename, filename_info,
filetype_info)
Bases: HRITFileHandler
GOMS HRIT format reader.
Initialize the reader.
read_epilogue()
Read the prologue metadata.
class satpy.readers.electrol_hrit.HRITGOMSFileHandler(filename, filename_info, filetype_info,
prologue, epilogue)
Bases: HRITFileHandler
GOMS HRIT format reader.
Initialize the reader.
_calibrate(data)
Visible/IR channel calibration.
static _getitem(block, lut)

calibrate(data, calibration)
Calibrate the data.
get_area_def(dsid)
Get the area definition of the band.
get_dataset(key, info)
Get the data from the files.

2.15. satpy 219


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.electrol_hrit.HRITGOMSPrologueFileHandler(filename, filename_info,


filetype_info)
Bases: HRITFileHandler
GOMS HRIT format reader.
Initialize the reader.
process_prologue()
Reprocess prologue to correct types.
read_prologue()
Read the prologue metadata.
satpy.readers.electrol_hrit.recarray2dict(arr)
Change record array to a dictionary.

satpy.readers.epic_l1b_h5 module

File handler for DSCOVR EPIC L1B data in hdf5 format.


The epic_l1b_h5 reader reads and calibrates EPIC L1B image data in hdf5 format.
This reader supports all image and most ancillary datasets. Once the reader is initialised:
`` scn = Scene([epic_filename], reader=’epic_l1b_h5’)``
Channels can be loaded with the ‘B’ prefix and their wavelength in nanometers:
scn.load(['B317', 'B688'])
while ancillary data can be loaded by its name:
scn.load(['solar_zenith_angle'])
Note that ancillary dataset names use common standards and not the dataset names in the file. By default, channel data
is loaded as calibrated reflectances, but counts data is also available.
class satpy.readers.epic_l1b_h5.DscovrEpicL1BH5FileHandler(filename, filename_info, filetype_info)
Bases: HDF5FileHandler
File handler for DSCOVR EPIC L1b data.
Init filehandler.
static _mask_infinite(band)

_update_metadata(band)

static calibrate(data, ds_name, calibration=None)


Convert counts input reflectance.
property end_time
Get the end time.
get_dataset(dataset_id, ds_info)
Load a dataset.
property start_time
Get the start time.

220 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.eps_l1b module

Reader for eps level 1b data. Uses xml files as a format description.
class satpy.readers.eps_l1b.EPSAVHRRFile(filename, filename_info, filetype_info)
Bases: BaseFileHandler
Eps level 1b reader for AVHRR data.
Initialize FileHandler.
_get_angle_dataarray(key)
Get an angle dataarray.
_get_calibrated_dataarray(key)
Get a calibrated dataarray.
_get_data_array(key)

_get_full_angles(solar_zenith, sat_zenith, solar_azimuth, sat_azimuth)

_get_full_angles_uncached()
Get the interpolated angles.
_get_full_lonlats_uncached()
Get the interpolated longitudes and latitudes.
_interpolate(lons_like, lats_like)

_read_all()

property end_time
Get end time.
get_bounding_box()
Get bounding box.
get_dataset(key, info)
Get calibrated channel data.
get_lonlats()
Get lonlats.
keys()
List of reader’s keys.
property platform_name
Get platform name.
property sensor_name
Get sensor name.
sensors = {'AVHR': 'avhrr-3'}

spacecrafts = {'M01': 'Metop-B', 'M02': 'Metop-A', 'M03': 'Metop-C'}

property start_time
Get start time.

2.15. satpy 221


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property three_a_mask
Mask for 3A.
property three_b_mask
Mask for 3B.
units = {'brightness_temperature': 'K', 'radiance': 'W m^-2 sr^-1', 'reflectance':
'%'}

satpy.readers.eps_l1b.create_xarray(arr)
Create xarray with correct dimensions.
satpy.readers.eps_l1b.radiance_to_bt(arr, wc_, a__, b__)
Convert to BT in K.
satpy.readers.eps_l1b.radiance_to_refl(arr, solar_flux)
Convert to reflectances in %.
satpy.readers.eps_l1b.read_records(filename)
Read filename without scaling it afterwards.

satpy.readers.eum_base module

Utilities for EUMETSAT satellite data.


satpy.readers.eum_base.get_service_mode(instrument_name, ssp_lon)
Get information about service mode for a given instrument and subsatellite longitude.
satpy.readers.eum_base.recarray2dict(arr)
Convert numpy record array to a dictionary.
satpy.readers.eum_base.timecds2datetime(tcds)
Convert time_cds-variables to datetime-object.
Works both with a dictionary and a numpy record_array.

satpy.readers.eum_l2_bufr module

SEVIRI L2 BUFR format reader.

References
EUMETSAT Product Navigator https://navigator.eumetsat.int/
class satpy.readers.eum_l2_bufr.EumetsatL2BufrFileHandler(filename, filename_info, filetype_info,
with_area_definition=False,
rectification_longitude='default',
**kwargs)
Bases: BaseFileHandler
File handler for EUMETSAT Central Facility SEVIRI and FCI L2 BUFR products.
Loading data with AreaDefinition
By providing the with_area_definition as True in the reader_kwargs, the dataset is loaded with an AreaDefinition
using a standardized AreaDefinition in areas.yaml. By default, the dataset will be loaded with a SwathDefinition,
i.e. similar to how the data are stored in the BUFR file:

222 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

scene = satpy.Scene(filenames,
reader=”seviri_l2_bufr”, reader_kwargs={“with_area_definition”: False})
Defining dataset recticifation longitude
The BUFR data were originally extracted from a rectified two-dimensional grid with a given central longitude
(typically the sub-satellite point). This information is not available in the file itself nor the filename (for files
from the EUMETSAT archive). Also, it cannot be reliably derived from all datasets themselves. Hence, the
rectification longitude can be defined by the user by providing rectification_longitude in the reader_kwargs:
scene = satpy.Scene(filenames,
reader=”seviri_l2_bufr”, reader_kwargs={“rectification_longitude”: 0.0})
If not done, default values applicable to the operational grids of the respective SEVIRI instruments will be used.
Initialise the file handler for EUMETSAT SEVIRI and FCI L2 BUFR data.
_add_attributes(xarr, dataset_info)
Add dataset attributes to xarray.
_construct_area_def(dataset_id)
Construct a standardized AreaDefinition based on satellite, instrument, resolution and sub-satellite point.
Returns
A pyresample AreaDefinition object containing the area definition.
Return type
AreaDefinition
_read_mpef_header()
Read MPEF header.
get_area_def(key)
Return the area definition.
get_array(key)
Get all data from file for the given BUFR key.
get_attributes(keys)
Get BUFR attributes.
get_dataset(dataset_id, dataset_info)
Create dataset.
Load data from BUFR file using the BUFR key in dataset_info and create the dataset with or without an
AreaDefinition.
get_dataset_with_area_def(arr, dataset_id)
Get dataset with an AreaDefinition.
property platform_name
Return spacecraft name.
property sensor_name
Return instrument name.
property ssp_lon
Return subsatellite point longitude.
property start_time
Return the repeat cycle start time.

2.15. satpy 223


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.eum_l2_grib module

Reader for both SEVIRI and FCI L2 products in GRIB2 format.

References
FM 92 GRIB Edition 2 https://www.wmo.int/pages/prog/www/WMOCodes/Guides/GRIB/GRIB2_062006.pdf EU-
METSAT Product Navigator https://navigator.eumetsat.int/
class satpy.readers.eum_l2_grib.EUML2GribFileHandler(filename, filename_info, filetype_info)
Bases: BaseFileHandler
Reader class for EUM L2 products in GRIB format.
Read the global attributes and prepare for dataset reading.
_get_attributes()
Create a dictionary of attributes to be added to the dataset.
Returns
A dictionary of parameter attributes.
ssp_lon: longitude of subsatellite point sensor: name of sensor platform_name: name of
the platform
Return type
dict
static _get_from_msg(gid, key)
Get a value from the GRIB message based on the key, return None if missing.
Parameters
• gid – The ID of the GRIB message.
• key – The key of the required attribute.
Returns
The retrieved attribute or None if the key is missing.
_get_proj_area(gid)
Compute the dictionary with the projection and area definition from a GRIB message.
Parameters
gid – The ID of the GRIB message.
Returns
A tuple of two dictionaries for the projection and the area definition.
pdict:
a: Earth major axis [m] b: Earth minor axis [m] h: Height over surface [m] ssp_lon:
longitude of subsatellite point [deg] nlines: number of lines ncols: number of columns
a_name: name of the area a_desc: description of the area p_id: id of the projection
area_dict:
center_point: coordinate of the center point north: coodinate of the north limit east:
coodinate of the east limit west: coodinate of the west limit south: coodinate of the
south limit
Return type
tuple

224 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_xarray_from_msg(gid)
Read the values from the GRIB message and return a DataArray object.
Parameters
gid – The ID of the GRIB message.
Returns
The array containing the retrieved values.
Return type
DataArray
_read_attributes(gid)
Read the parameter attributes from the message and create the projection and area dictionaries.
static _scale_earth_axis(data)
Scale Earth axis data to make sure the value matched the expected unit [m].
The earthMinorAxis value stored in the MPEF aerosol over sea product prior to December 12, 2022 has
the wrong unit and this method provides a flexible work-around by making sure that all earth axis values
are scaled such that they are on the order of millions of meters as expected by the reader.
calculate_area_extent = None

property end_time
Return the sensing end time.
get_area_def(dataset_id)
Return the area definition for a dataset.
get_dataset(dataset_id, dataset_info)
Get dataset using the parameter_number key in dataset_info.
In a previous version of the reader, the attributes (nrows, ncols, ssp_lon) and projection information (pdict
and area_dict) were computed while initializing the file handler. Also the code would break out from the
While-loop below as soon as the correct parameter_number was found. This has now been revised becasue
the reader would sometimes give corrupt information about the number of messages in the file and the
dataset dimensions within a given message if the file was only partly read (not looping over all messages)
in an earlier instance.
property start_time
Return the sensing start time.

satpy.readers.fci_base module

Common functionality for FCI data readers.


satpy.readers.fci_base.calculate_area_extent(area_dict)
Calculate the area extent seen by MTG FCI instrument.
Since the center of the FCI grids is located at the interface between the pixels, there are equally many pixels
(e.g. 5568/2 = 2784 for 2km grid) in each direction from the center points. Hence, the area extent can be easily
computed by simply adding and subtracting half the width and height from teh centre point (=0).
Parameters
area_dict – A dictionary containing the required parameters ncols: number of pixels in east-
west direction nlines: number of pixels in south-north direction column_step: Pixel resulution in
meters in east-west direction line_step: Pixel resulution in meters in south-north direction
Returns

2.15. satpy 225


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

An area extent for the scene defined by the lower left and
upper right corners
Return type
tuple

satpy.readers.fci_l1c_nc module

Interface to MTG-FCI L1c NetCDF files.


This module defines the FCIL1cNCFileHandler file handler, to be used for reading Meteosat Third Generation (MTG)
Flexible Combined Imager (FCI) Level-1c data. FCI flies on the MTG Imager (MTG-I) series of satellites, with the
first satellite (MTG-I1) launched on the 13th of December 2022. For more information about FCI, see EUMETSAT.
For simulated test data to be used with this reader, see test data releases. For the Product User Guide (PUG) of the FCI
L1c data, see PUG.

á Note

This reader supports data from both IDPF-I and IQT-I processing facilities. This reader currently supports Full
Disk High Spectral Resolution Imagery (FDHSI), High Spatial Resolution Fast Imagery (HRFI) data in full-disc
(“FD”) or in RSS (“Q4”) scanning mode. In addition it also supports the L1C format for the African dissemination
(“AF”), where each file contains the masked full-dic of a single channel see AF PUG. If the user provides a list
of both FDHSI and HRFI files from the same repeat cycle to the Satpy Scene, Satpy will automatically read the
channels from the source with the finest resolution, i.e. from the HRFI files for the vis_06, nir_22, ir_38, and
ir_105 channels. If needed, the desired resolution can be explicitly requested using e.g.: scn.load(['vis_06'],
resolution=1000).
Note that RSS data is not supported yet.

Geolocation is based on information from the data files. It uses:


• From the shape of the data variable data/<channel>/measured/effective_radiance, start and end line
columns of current swath.
• From the data variable data/<channel>/measured/x, the x-coordinates for the grid, in radians (azimuth angle
positive towards West).
• From the data variable data/<channel>/measured/y, the y-coordinates for the grid, in radians (elevation
angle positive towards North).
• From the attribute semi_major_axis on the data variable data/mtg_geos_projection, the Earth equatorial
radius
• From the attribute inverse_flattening on the same data variable, the (inverse) flattening of the ellipsoid
• From the attribute perspective_point_height on the same data variable, the geostationary altitude in the
normalised geostationary projection
• From the attribute longitude_of_projection_origin on the same data variable, the longitude of the pro-
jection origin
• From the attribute sweep_angle_axis on the same, the sweep angle axis, see https://proj.org/operations/
projections/geos.html
From the pixel centre angles in radians and the geostationary altitude, the extremities of the lower left and upper right
corners are calculated in units of arc length in m. This extent along with the number of columns and rows, the sweep
angle axis, and a dictionary with equatorial radius, polar radius, geostationary altitude, and longitude of projection

226 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

origin, are passed on to pyresample.geometry.AreaDefinition, which then uses proj4 for the actual geolocation
calculations.
The reading routine supports channel data in counts, radiances, and (depending on channel) brightness tempera-
tures or reflectances. The brightness temperature and reflectance calculation is based on the formulas indicated in
PUG. Radiance datasets are returned in units of radiance per unit wavenumber (mW m-2 sr-1 (cm-1)-1). Radi-
ances can be converted to units of radiance per unit wavelength (W m-2 um-1 sr-1) by multiplying with the radi-
ance_unit_conversion_coefficient dataset attribute.
For each channel, it also supports a number of auxiliary datasets, such as the pixel quality, the index map and the related
geometric and acquisition parameters: time, subsatellite latitude, subsatellite longitude, platform altitude, subsolar
latitude, subsolar longitude, earth-sun distance, sun-satellite distance, swath number, and swath direction.
All auxiliary data can be obtained by prepending the channel name such as "vis_04_pixel_quality".

* Warning

The API for the direct reading of pixel quality is temporary and likely to change. Currently, for each channel, the
pixel quality is available by <chan>_pixel_quality. In the future, they will likely all be called pixel_quality
and disambiguated by a to-be-decided property in the DataID.

á Note

For reading compressed data, a decompression library is needed. Either install the FCIDECOMP library (see PUG),
or the hdf5plugin package with:
pip install hdf5plugin
or:
conda install hdf5plugin -c conda-forge

If you use hdf5plugin, make sure to add the line import hdf5plugin at the top of your script.

class satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler(filename, filename_info, filetype_info,


clip_negative_radiances=None, **kwargs)
Bases: NetCDF4FsspecFileHandler
Class implementing the MTG FCI L1c Filehandler.
This class implements the Meteosat Third Generation (MTG) Flexible Combined Imager (FCI) Level-1c NetCDF
reader. It is designed to be used through the Scene class using the load method with the reader "fci_l1c_nc".
Initialize file handler.
static _clipneg(data)
Clip counts to avoid negative radiances.
property _compute_sun_earth_distance: float
Compute the sun_earth_distance.
_get_aux_data_lut_vector(aux_data_name)
Load the lut vector of an auxiliary variable.
_get_dataset_aux_data(dsname)
Get the auxiliary data arrays using the index map.

2.15. satpy 227


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_dataset_index_map(dsname)
Load the index map for an FCI channel.
_get_dataset_measurand(key, info=None)
Load dataset corresponding to channel measurement.
Load a dataset when the key refers to a measurand, whether uncalibrated (counts) or calibrated in terms of
brightness temperature, radiance, or reflectance.
_get_dataset_quality(dsname)
Load a quality field for an FCI channel.
static _getitem(block, lut)

_platform_name_translate = {'MTI1': 'MTG-I1', 'MTI2': 'MTG-I2', 'MTI3': 'MTG-I3',


'MTI4': 'MTG-I4'}

calc_area_extent(key)
Calculate area extent for a dataset.
calibrate(data, key)
Calibrate data.
calibrate_counts_to_physical_quantity(data, key)
Calibrate counts to radiances, brightness temperatures, or reflectances.
calibrate_counts_to_rad(data, key)
Calibrate counts to radiances.
calibrate_rad_to_bt(radiance, key)
IR channel calibration.
calibrate_rad_to_refl(radiance, key)
VIS channel calibration.
property end_time
Get end time.
get_area_def(key)
Calculate on-fly area definition for a dataset in geos-projection.
get_channel_measured_group_path(channel)
Get the channel’s measured group path.
get_dataset(key, info=None)
Load a dataset.
get_iqt_parameters_lon_lat_alt()
Compute the orbital parameters for IQT data.
Compute satellite_actual_longitude, satellite_actual_latitude, satellite_actual_altitude.
get_parameters_lon_lat_alt()
Compute the orbital parameters.
Compute satellite_actual_longitude, satellite_actual_latitude, satellite_actual_altitude.

228 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_segment_position_info()
Get information about the size and the position of the segment inside the final image array.
As the final array is composed by stacking segments vertically, the position of a segment inside the array is
defined by the numbers of the start (lowest) and end (highest) row of the segment. The row numbering is
assumed to start with 1. This info is used in the GEOVariableSegmentYAMLReader to compute optimal
segment sizes for missing segments.
Note: in the FCI terminology, a segment is actually called “chunk”. To avoid confusion with the dask
concept of chunk, and to be consistent with SEVIRI, we opt to use the word segment.
Note: This function is not used for the African data as it contains only one segment.
property nominal_end_time
Get nominal end time.
property nominal_start_time
Get nominal start time.
property observation_end_time
Get observation end time.
property observation_start_time
Get observation start time.
property orbital_param
Compute the orbital parameters for the current segment.
property rc_period_min
Get nominal repeat cycle duration.
property start_time
Get start time.
satpy.readers.fci_l1c_nc._ensure_dataarray(arr)

satpy.readers.fci_l1c_nc._get_aux_data_name_from_dsname(dsname)

satpy.readers.fci_l1c_nc._get_channel_name_from_dsname(dsname)

satpy.readers.fci_l2_nc module

Reader for the FCI L2 products in NetCDF4 format.


class satpy.readers.fci_l2_nc.FciL2CommonFunctions
Bases: object
Shared operations for file handlers.
static _add_flag_values_and_meanings(filename, key, variable)
Build flag values and meaning from enum datatype.
_get_global_attributes()
Create a dictionary of global attributes to be added to all datasets.
Returns
A dictionary of global attributes.
filename: name of the product file spacecraft_name: name of the spacecraft ssp_lon: lon-
gitude of subsatellite point sensor: name of sensor platform_name: name of the platform

2.15. satpy 229


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Return type
dict
static _mask_data(variable, fill_value)
Set fill_values, as defined in yaml-file, to NaN.
Set data points in variable to NaN if they are equal to fill_value or any of the values in fill_value if fill_value
is a list.
_set_attributes(variable, dataset_info, segmented=False)
Set dataset attributes.
_slice_dataset(variable, dataset_info, dimensions)
Slice data if dimension layers have been provided in yaml-file.
property sensor_name
Return instrument name.
property spacecraft_name
Return spacecraft name.
property ssp_lon
Return longitude at subsatellite point.
class satpy.readers.fci_l2_nc.FciL2NCAMVFileHandler(filename, filename_info, filetype_info)
Bases: FciL2CommonFunctions, BaseFileHandler
Reader class for FCI L2 AMV products in NetCDF4 format.
Open the NetCDF file with xarray and prepare for dataset reading.
_get_global_attributes()
Create a dictionary of global attributes to be added to all datasets.
Returns
A dictionary of global attributes.
filename: name of the product file spacecraft_name: name of the spacecraft sensor: name
of sensor platform_name: name of the platform
Return type
dict
get_dataset(dataset_id, dataset_info)
Get dataset using the nc_key in dataset_info.
property nc
Read the file.
class satpy.readers.fci_l2_nc.FciL2NCFileHandler(filename, filename_info, filetype_info,
with_area_definition=True)
Bases: FciL2CommonFunctions, BaseFileHandler
Reader class for FCI L2 products in NetCDF4 format.
Open the NetCDF file with xarray and prepare for dataset reading.
_compute_area_def(dataset_id)
Compute the area definition.
Returns
A pyresample AreaDefinition object containing the area definition.

230 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Return type
AreaDefinition
static _decode_clm_test_data(variable, dataset_info)

_get_area_extent()
Calculate area extent of dataset.
_get_proj_area(dataset_id)
Extract projection and area information.
get_area_def(key)
Return the area definition.
get_dataset(dataset_id, dataset_info)
Get dataset using the nc_key in dataset_info.
static get_total_cot(variable)
Sum the cloud optical thickness from the two OCA layers.
The optical thickness has to be transformed to linear space before adding the values from the two layers.
The combined/total optical thickness is then transformed back to logarithmic space.
class satpy.readers.fci_l2_nc.FciL2NCSegmentFileHandler(filename, filename_info, filetype_info,
with_area_definition=False)
Bases: FciL2CommonFunctions, BaseFileHandler
Reader class for FCI L2 Segmented products in NetCDF4 format.
Open the NetCDF file with xarray and prepare for dataset reading.
_construct_area_def(dataset_id)
Construct the area definition.
Returns
A pyresample AreaDefinition object containing the area definition.
Return type
AreaDefinition
static _modify_area_extent(stand_area_extent)
Modify area extent to macth satellite projection.
Area extent has to be modified since the L2 products are stored with the south-east in the upper-right corner
(as opposed to north-east in the standardized area definitions).
get_area_def(key)
Return the area definition.
get_dataset(dataset_id, dataset_info)
Get dataset using the nc_key in dataset_info.

satpy.readers.file_handlers module

Interface for BaseFileHandlers.


class satpy.readers.file_handlers.BaseFileHandler(filename, filename_info, filetype_info)
Bases: object
Base file handler.
Initialize file handler.

2.15. satpy 231


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

static _combine(infos, func, *keys)

_combine_orbital_parameters(all_infos)

available_datasets(configured_datasets=None)
Get information of available datasets in this file.
This is used for dynamically specifying what datasets are available from a file in addition to what’s config-
ured in a YAML configuration file. Note that this method is called for each file handler for each file type;
care should be taken when possible to reduce the amount of redundant datasets produced.
This method should not update values of the dataset information dictionary unless this file handler has
a matching file type (the data could be loaded from this object in the future) and at least one satpy.
dataset.DataID key is also modified. Otherwise, this file type may override the information provided by
a more preferred file type (as specified in the YAML file). It is recommended that any non-ID metadata be
updated during the BaseFileHandler.get_dataset() part of loading. This method is not guaranteed
that it will be called before any other file type’s handler. The availability “boolean” not being None does not
mean that a file handler called later can’t provide an additional dataset, but it must provide more identifying
(DataID) information to do so and should yield its new dataset in addition to the previous one.
Parameters
configured_datasets (list) – Series of (bool or None, dict) in the same way as is returned
by this method (see below). The bool is whether the dataset is available from at least one
of the current file handlers. It can also be None if no file handler before us knows how to
handle it. The dictionary is existing dataset metadata. The dictionaries are typically provided
from a YAML configuration file and may be modified, updated, or used as a “template” for
additional available datasets. This argument could be the result of a previous file handler’s
implementation of this method.
Returns
Iterator of (bool or None, dict) pairs where dict is the dataset’s metadata. If the dataset is
available in the current file type then the boolean value should be True, False if we know
about the dataset but it is unavailable, or None if this file object is not responsible for it.
Example 1 - Supplement existing configured information:

def available_datasets(self, configured_datasets=None):


"Add information to configured datasets."
# we know the actual resolution
res = self.resolution

# update previously configured datasets


for is_avail, ds_info in (configured_datasets or []):
# some other file handler knows how to load this
# don't override what they've done
if is_avail is not None:
yield is_avail, ds_info

matches = self.file_type_matches(ds_info['file_type'])
if matches and ds_info.get('resolution') != res:
# we are meant to handle this dataset (file type matches)
# and the information we can provide isn't available yet
new_info = ds_info.copy()
new_info['resolution'] = res
yield True, new_info
elif is_avail is None:
(continues on next page)

232 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


# we don't know what to do with this
# see if another future file handler does
yield is_avail, ds_info

Example 2 - Add dynamic datasets from the file:

def available_datasets(self, configured_datasets=None):


"Add information to configured datasets."
# pass along existing datasets
for is_avail, ds_info in (configured_datasets or []):
yield is_avail, ds_info

# get dynamic variables known to this file (that we created)


for var_name, val in self.dynamic_variables.items():
ds_info = {
'file_type': self.filetype_info['file_type'],
'resolution': 1000,
'name': var_name,
}
yield True, ds_info

combine_info(all_infos)
Combine metadata for multiple datasets.
When loading data from multiple files it can be non-trivial to combine things like start_time, end_time,
start_orbit, end_orbit, etc.
By default this method will produce a dictionary containing all values that were equal across all provided
info dictionaries.
Additionally it performs the logical comparisons to produce the following if they exist:
• start_time
• end_time
• start_orbit
• end_orbit
• orbital_parameters
• time_parameters
Also, concatenate the areas.
property end_time
Get end time.
file_type_matches(ds_ftype)
Match file handler’s type to this dataset’s file type.
Parameters
ds_ftype (str or list) – File type or list of file types that a dataset is configured to be
loaded from.
Returns
True if this file handler object’s type matches the dataset’s file type(s), None otherwise.

2.15. satpy 233


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

None is returned instead of False to follow the convention of the available_datasets()


method.
get_area_def(dsid)
Get area definition.
get_bounding_box()
Get the bounding box of the files, as a (lons, lats) tuple.
The tuple return should a lons and lats list of coordinates traveling clockwise around the points available
in the file.
get_dataset(dataset_id, ds_info)
Get dataset.
property sensor_names
List of sensors represented in this file.
property start_time
Get start time.
satpy.readers.file_handlers.open_dataset(filename, *args, **kwargs)
Open a file with xarray.
Parameters
filename (Union[str, FSFile]) – The path to the file to open. Can be a string or FSFile
object which allows using fsspec or s3fs like files.
Return type
xarray.Dataset

Notes
This can be used to enable readers to open remote files.

satpy.readers.fy4_base module

Base reader for the L1 HDF data from the AGRI and GHI instruments aboard the FengYun-4A/B satellites.
The files read by this reader are described in the official Real Time Data Service:
http://fy4.nsmc.org.cn/data/en/data/realtime.html
class satpy.readers.fy4_base.FY4Base(filename, filename_info, filetype_info)
Bases: HDF5FileHandler
The base class for the FengYun4 AGRI and GHI readers.
Init filehandler.
_apply_lut(data: DataArray, lut: ndarray[Any, dtype[float32]]) → DataArray
Calibrate digital number (DN) by applying a LUT.
Parameters
• data – Raw detector digital number
• lut – the look up table
Returns
Calibrated quantity

234 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

static _getitem(block, lut)

calibrate(data, ds_info, ds_name, file_key)


Calibrate the data.
calibrate_to_bt(data, ds_info, ds_name)
Calibrate to Brightness Temperatures [K].
calibrate_to_reflectance(data, channel_index, ds_info)
Calibrate to reflectance [%].
property end_time
Get the end time.
get_area_def(key)
Get the area definition.
property reflectance_coeffs
Retrieve the reflectance calibration coefficients from the HDF file.
static scale(dn, slope, offset)
Convert digital number (DN) to calibrated quantity through scaling.
Parameters
• dn – Raw detector digital number
• slope – Slope
• offset – Offset
Returns
Scaled data
property start_time
Get the start time.

satpy.readers.generic_image module

Reader for generic image (e.g. gif, png, jpg, tif, geotiff, . . . ).
Returns a dataset without calibration. Includes coordinates if available in the file (eg. geotiff). If nodata values are
present (and rasterio is able to read them), it will be preserved as attribute _FillValue in the returned dataset. In case
that nodata values should be used to mask pixels (that have equal values) with np.nan, it has to be enabled in the reader
yaml file (key nodata_handling per dataset with value "nan_mask").
class satpy.readers.generic_image.GenericImageFileHandler(filename, filename_info, filetype_info)
Bases: BaseFileHandler
Handle reading of generic image files.
Initialize filehandler.
property end_time
Return end time.
get_area_def(dsid)
Get area definition of the image.
get_dataset(key, info)
Get a dataset from the file.

2.15. satpy 235


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

read()
Read the image.
property start_time
Return start time.
satpy.readers.generic_image._handle_nodatavals(data, nodata_handling)
Mask data with np.nan or only set ‘attr_FillValue’.
satpy.readers.generic_image._mask_image_data(data, info)
Mask image data if necessary.
Masking is done if alpha channel is present or dataset ‘nodata_handling’ is set to ‘nan_mask’. In the latter case
even integer data is converted to float32 and masked with np.nan.

satpy.readers.geocat module

Interface to GEOCAT HDF4 or NetCDF4 products.


Note: GEOCAT files do not currently have projection information or precise pixel resolution information. Additionally
the longitude and latitude arrays are stored as 16-bit integers which causes loss of precision. For this reason the lon/lats
can’t be used as a reliable coordinate system to calculate the projection X/Y coordinates.
Until GEOCAT adds projection information and X/Y coordinate arrays, this reader will estimate the geostationary
area the best it can. It currently takes a single lon/lat point as reference and uses hardcoded resolution and projection
information to calculate the area extents.
class satpy.readers.geocat.GEOCATFileHandler(filename, filename_info, filetype_info, **kwargs)
Bases: NetCDF4FileHandler
GEOCAT netCDF4 file handler.
Loading data with decode_times=True
By default, this reader will use xarray_kwargs={"engine": "netcdf4", "decode_times": False}.
to match behavior of xarray when the geocat reader was first written. To use different options use reader_kwargs
when loading the Scene:

scene = satpy.Scene(filenames,
reader='geocat',
reader_kwargs={'xarray_kwargs': {'engine': 'netcdf4', 'decode_
˓→times': True}})

Open and perform initial investigation of NetCDF file.


_calc_area_resolution(ds_res)

_first_good_nav(lon_arr, lat_arr)

_get_extents(proj, res, lon_arr, lat_arr)

_get_proj(platform, ref_lon)

_load_nav(name)

available_datasets(configured_datasets=None)
Update information for or add datasets provided by this file.
If this file handler can load a dataset then it will supplement the dataset info with the resolution and possibly
coordinate datasets needed to load it. Otherwise it will continue passing the dataset information down the
chain.

236 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

See satpy.readers.file_handlers.BaseFileHandler.available_datasets() for details.


property end_time
Get end time.
get_area_def(dsid)
Get area definition.
get_dataset(dataset_id, ds_info)
Get dataset.
get_metadata(dataset_id, ds_info)
Get metadata.
get_platform(platform)
Get platform.
get_sensor(sensor)
Get sensor.
get_shape(dataset_id, ds_info)
Get shape.
property is_geo
Check platform.
platforms: dict[str, str] = {}

property resolution
Get resolution.
resolutions = {'abi': {1: 1002.0086577437705, 2: 2004.017315487541}, 'ahi': {1:
999.9999820317674, 2: 1999.999964063535, 4: 3999.99992812707}}

property sensor_names
Get sensor names.
sensors = {'goes': 'goes_imager', 'goes16': 'abi', 'goesr': 'abi', 'himawari8':
'ahi'}

property start_time
Get start time.

satpy.readers.gerb_l2_hr_h5 module

GERB L2 HR HDF5 reader.


A reader for the Top of Atmosphere outgoing fluxes from the Geostationary Earth Radiation Budget instrument aboard
the Meteosat Second Generation satellites.
class satpy.readers.gerb_l2_hr_h5.GERB_HR_FileHandler(filename, filename_info, filetype_info)
Bases: HDF5FileHandler
File handler for GERB L2 High Resolution H5 files.
Initialize file handler.
property end_time
Get end time.

2.15. satpy 237


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_area_def(dsid)
Area definition for the GERB product.
get_dataset(ds_id, ds_info)
Read a HDF5 file into an xarray DataArray.
property start_time
Get start time.
satpy.readers.gerb_l2_hr_h5.gerb_get_dataset(ds, ds_info)
Load a GERB dataset in memory from a HDF5 file or HDF5FileHandler.
The routine takes into account the quantisation factor and fill values.

satpy.readers.ghi_l1 module

Geostationary High-speed Imager reader for the Level_1 HDF format.


This instrument is aboard the Fengyun-4B satellite. No document is available to describe this format is available, but
it’s broadly similar to the co-flying AGRI instrument.
class satpy.readers.ghi_l1.HDF_GHI_L1(filename, filename_info, filetype_info)
Bases: FY4Base
GHI l1 file handler.
Init filehandler.
adjust_attrs(data, ds_info)
Adjust the attrs of the data.
get_area_def(key)
Get the area definition.
get_dataset(dataset_id, ds_info)
Load a dataset.

satpy.readers.ghrsst_l2 module

Reader for the GHRSST level-2 formatted data.


class satpy.readers.ghrsst_l2.GHRSSTL2FileHandler(filename, filename_info, filetype_info,
engine=None)
Bases: BaseFileHandler
File handler for GHRSST L2 netCDF files.
Initialize the file handler for GHRSST L2 netCDF data.
static _is_sst_file(name)
Check if file in the tar archive is a valid SST file.
_open_tarfile()

property end_time
Get end time.
get_dataset(key, info)
Get any available dataset.

238 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property nc
Get the xarray Dataset for the filename.
property sensor
Get the sensor name.
property start_time
Get start time.

satpy.readers.gld360_ualf2 module

Vaisala Global Lightning Dataset 360 reader for Universal ASCII Lightning Format 2 (UALF2).
Vaisala Global Lightning Dataset GLD360 is data as a service that provides real-time lightning data for accurate and
early detection and tracking of severe weather. The data provided is generated by a Vaisala owned and operated world-
wide lightning detection sensor network.
References: - [GLD360] https://www.vaisala.com/en/products/data-subscriptions-and-reports/data-sets/gld360 -
[SMHI] https://opendata.smhi.se/apidocs/lightning/parameters.html
class satpy.readers.gld360_ualf2.VaisalaGld360Ualf2FileHandler(filename, filename_info,
filetype_info)
Bases: BaseFileHandler
FileHandler for Vaisala GLD360 data in UALF2-format.
Initialize FileHandler.
property end_time
Return end time.
get_dataset(dataset_id, dataset_info)
Return the dataset.
static pad_nanoseconds(nanoseconds)
Read ns values for less than 0.1s correctly (these are not zero-padded in the input files).
property start_time
Return start time.
satpy.readers.gld360_ualf2._create_column_names()
Insert nanoseconds in the column names to a correct index.

satpy.readers.glm_l2 module

Geostationary Lightning Mapper reader for the Level 2 format from glmtools.
More information about glmtools and the files it produces can be found on the project’s GitHub repository:
https://github.com/deeplycloudy/glmtools
class satpy.readers.glm_l2.NCGriddedGLML2(filename, filename_info, filetype_info)
Bases: NC_ABI_BASE
File reader for individual GLM L2 NetCDF4 files.
Open the NetCDF file with xarray and prepare the Dataset for reading.
_is_2d_xy_var(data_arr)

2.15. satpy 239


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_is_category_product(data_arr)

available_datasets(configured_datasets=None)
Discover new datasets and add information from file.
property end_time
End time of the current file’s observations.
get_dataset(key, info)
Load a dataset.
property sensor
Get sensor name for current file handler.
property start_time
Start time of the current file’s observations.

satpy.readers.goci2_l2_nc module

Reader for GK-2B GOCI-II L2 products from NOSC.


For more information about the data, see: <https://www.nosc.go.kr/eng/boardContents/
actionBoardContentsCons0028.do>
class satpy.readers.goci2_l2_nc.GOCI2L2NCFileHandler(filename, filename_info, filetype_info)
Bases: NetCDF4FileHandler
File handler for GOCI-II L2 official data in netCDF format.
Initialize the reader.
_merge_navigation_data(filetype)
Merge navigation data and geophysical data.
property end_time
End timestamp of the dataset.
get_dataset(key, info)
Load a dataset.
property start_time
Start timestamp of the dataset.

satpy.readers.goes_imager_hrit module

GOES HRIT format reader.

References
LRIT/HRIT Mission Specific Implementation, February 2012 GVARRDL98.pdf 05057_SPE_MSG_LRIT_HRI
exception satpy.readers.goes_imager_hrit.CalibrationError
Bases: Exception
Dummy error-class.

240 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.goes_imager_hrit.HRITGOESFileHandler(filename, filename_info, filetype_info,


prologue)
Bases: HRITFileHandler
GOES HRIT format reader.
Initialize the reader.
_calibrate(data)
Calibrate data.
_get_calibration_params()
Get the calibration parameters from the metadata.
_get_proj_dict(dataset_id)

calibrate(data, calibration)
Calibrate the data.
get_area_def(dataset_id)
Get the area definition of the band.
get_dataset(key, info)
Get the data from the files.
class satpy.readers.goes_imager_hrit.HRITGOESPrologueFileHandler(filename, filename_info,
filetype_info)
Bases: HRITFileHandler
GOES HRIT format reader.
Initialize the reader.
process_prologue()
Reprocess prologue to correct types.
read_prologue()
Read the prologue metadata.
satpy.readers.goes_imager_hrit._epoch_doy_offset_from_sgs_time(sgs_time_array:
_SupportsArray[dtype[Any]] |
_NestedSe-
quence[_SupportsArray[dtype[Any]]]
| bool | int | float | complex | str |
bytes | _NestedSequence[bool | int
| float | complex | str | bytes]) →
timedelta

satpy.readers.goes_imager_hrit._epoch_year_from_sgs_time(sgs_time_array:
_SupportsArray[dtype[Any]] | _NestedSe-
quence[_SupportsArray[dtype[Any]]] |
bool | int | float | complex | str | bytes |
_NestedSequence[bool | int | float |
complex | str | bytes]) → datetime

satpy.readers.goes_imager_hrit.make_gvar_float(float_val)
Make gvar float.

2.15. satpy 241


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.goes_imager_hrit.make_sgs_time(sgs_time_array: _SupportsArray[dtype[Any]] |
_NestedSequence[_SupportsArray[dtype[Any]]] | bool |
int | float | complex | str | bytes | _NestedSequence[bool |
int | float | complex | str | bytes]) → datetime
Make sgs time.

satpy.readers.goes_imager_nc module

Reader for GOES 8-15 imager data in netCDF format.


Supports netCDF files from both NOAA-CLASS and EUMETSAT.

NOAA-CLASS

GOES-Imager netCDF files from NOAA-CLASS contain detector counts alongside latitude and longitude coordinates.

á Note

If ordering files via NOAA CLASS, select 16 bits/pixel.

á Note

Some essential information are missing in the netCDF files:


1. Subsatellite point
2. Calibration coefficients
3. Detector-scanline assignment, i.e. information about which scanline was recorded by which detector
Items 1. and 2. are not critical because the images are geo-located and NOAA provides static calibration coeffi-
cients ([VIS], [IR]). The detector-scanline assignment however cannot be reconstructed properly. This is where an
approximation has to be applied (see below).

Oversampling

GOES-Imager oversamples the viewed scene in E-W direction by a factor of 1.75: IR/VIS pixels are 112/28 urad on a
side, but the instrument samples every 64/16 urad in E-W direction (see [BOOK-I] and [BOOK-N]). That means pixels
are actually overlapping on the ground. This cannot be represented by a pyresample area definition.
For full disk images it is possible to estimate an area definition with uniform sampling where pixels don’t overlap.
This can be used for resampling and is available via scene[dataset].attrs["area_def_uni"]. The pixel size is
derived from altitude and N-S sampling angle. The area extent is based on the maximum scanning angles at the earth’s
limb.

Calibration

Calibration is performed according to [VIS] and [IR], but with an average calibration coefficient applied to all detectors
in a certain channel. The reason for and impact of this approximation is described below.
The GOES imager simultaneously records multiple scanlines per sweep using multiple detectors per channel. The VIS
channel has 8 detectors, the IR channels have 1-2 detectors (see e.g. Figures 3-5a/b, 3-6a/b and 3-7/a-b in [BOOK-N]).
Each detector has its own calibration coefficients, so in order to perform an accurate calibration, the detector-scanline
assignment is needed.

242 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

In theory it is known which scanline was recorded by which detector (VIS: 5,6,7,8,1,2,3,4; IR: 1,2). However, the plate
on which the detectors are mounted flexes due to thermal gradients in the instrument which leads to a N-S shift of +/-
8 visible or +/- 2 IR pixels. This shift is compensated in the GVAR scan formation process, but in a way which is hard
to reconstruct properly afterwards. See [GVAR], section 3.2.1. for details.
Since the calibration coefficients of the detectors in a certain channel only differ slightly, a workaround is to calibrate
each scanline with the average calibration coefficients. A worst case estimate of the introduced error can be obtained
by calibrating all possible counts with both the minimum and the maximum calibration coefficients and computing the
difference. The maximum differences are:

GOES-8
Channel Diff Unit
00_7 0.0 % # Counts are normalized
03_9 0.187 K
06_8 0.0 K # only one detector
10_7 0.106 K
12_0 0.036 K

GOES-9
Channel Diff Unit
00_7 0.0 % # Counts are normalized
03_9 0.0 K # coefs identical
06_8 0.0 K # only one detector
10_7 0.021 K
12_0 0.006 K

GOES-10
Channel Diff Unit
00_7 1.05 %
03_9 0.0 K # coefs identical
06_8 0.0 K # only one detector
10_7 0.013 K
12_0 0.004 K

GOES-11
Channel Diff Unit
00_7 1.25 %
03_9 0.0 K # coefs identical
06_8 0.0 K # only one detector
10_7 0.0 K # coefs identical
12_0 0.065 K

2.15. satpy 243


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

GOES-12
Channel Diff Unit
00_7 0.8 %
03_9 0.0 K # coefs identical
06_5 0.044 K
10_7 0.0 K # coefs identical
13_3 0.0 K # only one detector

GOES-13
Channel Diff Unit
00_7 1.31 %
03_9 0.0 K # coefs identical
06_5 0.085 K
10_7 0.008 K
13_3 0.0 K # only one detector

GOES-14
Channel Diff Unit
00_7 0.66 %
03_9 0.0 K # coefs identical
06_5 0.043 K
10_7 0.006 K
13_3 0.003 K

GOES-15
Channel Diff Unit
00_7 0.86 %
03_9 0.0 K # coefs identical
06_5 0.02 K
10_7 0.009 K
13_3 0.008 K

EUMETSAT

During tandem operations of GOES-15 and GOES-17, EUMETSAT distributed a variant of this dataset with the fol-
lowing differences:
1. The geolocation is in a separate file, used for all bands
2. VIS data is calibrated to Albedo (or reflectance)
3. IR data is calibrated to radiance.
4. VIS data is downsampled to IR resolution (4km)
5. File name differs also slightly
6. Data is received via EumetCast

244 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

References:

• [GVAR] GVAR transmission format


• [BOOK-N] GOES-N databook
• [BOOK-I] GOES-I databook (broken)
• [IR] Conversion of GVAR Infrared Data to Scene Radiance or Temperature
• [VIS] Calibration of the Visible Channels of the GOES Imagers and Sounders
• [GLOSSARY] GVAR_IMG Glossary
• [SCHED-W] GOES-15 Routine Imager Schedule
• [SCHED-E] Optimized GOES-East Routine Imager Schedule
class satpy.readers.goes_imager_nc.AreaDefEstimator(platform_name, channel)
Bases: object
Estimate area definition for GOES-Imager.
Create the instance.
_create_area_def(projection, area_extent, shape)

_get_area_description()

_get_area_extent_at_max_scan_angle(proj_dict)

_get_max_scan_angle(proj_dict)

_get_projection(projection_longitude)

_get_shape_with_uniform_pixel_size(area_extent)

_get_uniform_pixel_size()

get_area_def_with_uniform_sampling(projection_longitude)
Get area definition with uniform sampling.
The area definition is based on geometry and instrument properties: Pixel size is derived from altitude and
N-S sampling angle. Area extent is based on the maximum scanning angles at the limb of the earth.
class satpy.readers.goes_imager_nc.GOESCoefficientReader(ir_url, vis_url)
Bases: object
Read GOES Imager calibration coefficients from NOAA reference HTMLs.
Init the coef reader.
_denoise(string)

_float(string)
Convert string to float.
Take care of numbers in exponential format
_get_ir_coefs(platform, channel)

_get_table(root, heading, heading_type)

_get_vis_coefs(platform)

2.15. satpy 245


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_load_url_or_file(url)

get_coefs(platform, channel)
Get the coefs.
gvar_channels = {'GOES-10': {'00_7': 1, '03_9': 2, '06_8': 3, '10_7': 4,
'12_0': 5}, 'GOES-11': {'00_7': 1, '03_9': 2, '06_8': 3, '10_7': 4, '12_0':
5}, 'GOES-12': {'00_7': 1, '03_9': 2, '06_5': 3, '10_7': 4, '13_3': 6},
'GOES-13': {'00_7': 1, '03_9': 2, '06_5': 3, '10_7': 4, '13_3': 6}, 'GOES-14':
{'00_7': 1, '03_9': 2, '06_5': 3, '10_7': 4, '13_3': 6}, 'GOES-15': {'00_7':
1, '03_9': 2, '06_5': 3, '10_7': 4, '13_3': 6}, 'GOES-8': {'00_7': 1, '03_9':
2, '06_8': 3, '10_7': 4, '12_0': 5}, 'GOES-9': {'00_7': 1, '03_9': 2, '06_8':
3, '10_7': 4, '12_0': 5}}

ir_tables = {'GOES-10': '2-3', 'GOES-11': '2-4', 'GOES-12': '2-5a', 'GOES-13':


'2-6', 'GOES-14': '2-7c', 'GOES-15': '2-8b', 'GOES-8': '2-1', 'GOES-9': '2-2'}

vis_tables = {'GOES-10': 'Table 2.', 'GOES-11': 'Table 3.', 'GOES-12': 'Table


4.', 'GOES-13': 'Table 5.', 'GOES-14': 'Table 6.', 'GOES-15': 'Table 7.',
'GOES-8': 'Table 1.', 'GOES-9': 'Table 1.'}

class satpy.readers.goes_imager_nc.GOESEUMGEONCFileHandler(filename, filename_info, filetype_info)


Bases: BaseFileHandler
File handler for GOES Geolocation data in EUM netCDF format.
Initialize the reader.
get_dataset(key, info)
Load dataset designated by the given key from file.
property resolution
Specify the spatial resolution of the dataset.
In the EUMETSAT format VIS data is downsampled to IR resolution (4km).
class satpy.readers.goes_imager_nc.GOESEUMNCFileHandler(filename, filename_info, filetype_info,
geo_data)
Bases: GOESNCBaseFileHandler
File handler for GOES Imager data in EUM netCDF format.
TODO: Remove datasets which are not available in the file (counts, VIS radiance) via available_datasets() ->
See #434
Initialize the reader.
calibrate(data, calibration, channel)
Perform calibration.
get_dataset(key, info)
Load dataset designated by the given key from file.
ir_sectors = {(566, 3464): 'Southern Hemisphere (GOES-East)', (1062, 2760):
'Southern Hemisphere (GOES-West)', (1354, 3312): 'Northern Hemisphere (GOES-West)',
(1826, 3464): 'Northern Hemisphere (GOES-East)', (2704, 5208): 'Full Disc'}

246 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

vis_sectors = {(566, 3464): 'Southern Hemisphere (GOES-East)', (1062, 2760):


'Southern Hemisphere (GOES-West)', (1354, 3312): 'Northern Hemisphere (GOES-West)',
(1826, 3464): 'Northern Hemisphere (GOES-East)', (2704, 5208): 'Full Disc'}

class satpy.readers.goes_imager_nc.GOESNCBaseFileHandler(filename, filename_info, filetype_info,


geo_data=None)
Bases: BaseFileHandler
File handler for GOES Imager data in netCDF format.
Initialize the reader.
_calibrate(radiance, coefs, channel, calibration)
Convert radiance to reflectance or brightness temperature.
static _calibrate_ir(radiance, coefs)
Convert IR radiance to brightness temperature.
Reference: [IR]
Parameters
• radiance – Radiance [mW m-2 cm-1 sr-1]
• coefs – Dictionary of calibration coefficients. Keys: n: The channel’s central wavenumber
[cm-1] a: Offset [K] b: Slope [1] btmin: Minimum brightness temperature threshold [K]
btmax: Maximum brightness temperature threshold [K]
Returns
Brightness temperature [K]
static _calibrate_vis(radiance, k)
Convert VIS radiance to reflectance.
Note: Angle of incident radiation and annual variation of the earth-sun distance is not taken into account.
A value of 100% corresponds to the radiance of a perfectly reflecting diffuse surface illuminated at normal
incidence when the sun is at its annual-average distance from the Earth.
TODO: Take angle of incident radiation (cos sza) and annual variation of the earth-sun distance into ac-
count.
Reference: [VIS]
Parameters
• radiance – Radiance [mW m-2 cm-1 sr-1]
• k – pi / H, where H is the solar spectral irradiance at annual-average sun-earth distance,
averaged over the spectral response function of the detector). Units of k: [m2 um sr W-1]
Returns
Reflectance [%]
_counts2radiance(counts, coefs, channel)
Convert raw detector counts to radiance.
_get_area_def_uniform_sampling(lon0, channel)
Get area definition with uniform sampling.
static _get_earth_mask(lat)
Identify earth/space pixels.

2.15. satpy 247


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Returns
Mask (1=earth, 0=space)
static _get_nadir_pixel(earth_mask, sector)
Find the nadir pixel.
Parameters
• earth_mask – Mask identifying earth and space pixels
• sector – Specifies the scanned sector
Returns
nadir row, nadir column
static _get_platform_name(ncattr)
Determine name of the platform.
_get_sector(channel, nlines, ncols)
Determine which sector was scanned.
static _ircounts2radiance(counts, scale, offset)
Convert IR counts to radiance.
Reference: [IR].
Parameters
• counts – Raw detector counts
• scale – Scale [mW-1 m2 cm sr]
• offset – Offset [1]
Returns
Radiance [mW m-2 cm-1 sr-1]
_is_yaw_flip(lat)
Determine whether the satellite is yaw-flipped (‘upside down’).
_update_metadata(data, ds_info)
Update metadata of the given DataArray.
static _viscounts2radiance(counts, slope, offset)
Convert VIS counts to radiance.
References: [VIS]
Parameters
• counts – Raw detector counts
• slope – Slope [W m-2 um-1 sr-1]
• offset – Offset [W m-2 um-1 sr-1]
Returns
Radiance [W m-2 um-1 sr-1]
available_datasets(configured_datasets=None)
Update information for or add datasets provided by this file.
If this file handler can load a dataset then it will supplement the dataset info with the resolution and possibly
coordinate datasets needed to load it. Otherwise it will continue passing the dataset information down the
chain.

248 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

See satpy.readers.file_handlers.BaseFileHandler.available_datasets() for details.


abstract calibrate(data, calibration, channel)
Perform calibration.
property end_time
End timestamp of the dataset.
abstract get_dataset(key, info)
Load dataset designated by the given key from file.
get_shape(key, info)
Get the shape of the data.
Returns
Number of lines, number of columns
abstract property ir_sectors
Get the ir sectors.
property meta
Derive metadata from the coordinates.
property resolution
Specify the spatial resolution of the dataset.
Channel 13_3’s spatial resolution changes from one platform to another while the wavelength and file
format remain the same. In order to avoid multiple YAML reader definitions for the same file format, read
the channel’s resolution from the file instead of defining it in the YAML dataset. This information will then
be used by the YAML reader to complement the YAML definition of the dataset.
Returns
Spatial resolution in kilometers
property start_time
Start timestamp of the dataset.
abstract property vis_sectors
Get the vis sectors.
yaw_flip_sampling_distance = 10

class satpy.readers.goes_imager_nc.GOESNCFileHandler(filename, filename_info, filetype_info)


Bases: GOESNCBaseFileHandler
File handler for GOES Imager data in netCDF format.
Initialize the reader.
calibrate(counts, calibration, channel)
Perform calibration.
get_dataset(key, info)
Load dataset designated by the given key from file.
ir_sectors = {(566, 3464): 'Southern Hemisphere (GOES-East)', (1062, 2760):
'Southern Hemisphere (GOES-West)', (1354, 3312): 'Northern Hemisphere (GOES-West)',
(1826, 3464): 'Northern Hemisphere (GOES-East)', (2704, 5208): 'Full Disc'}

2.15. satpy 249


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

vis_sectors = {(2267, 13852): 'Southern Hemisphere (GOES-East)', (4251, 11044):


'Southern Hemisphere (GOES-West)', (5419, 13244): 'Northern Hemisphere
(GOES-West)', (7307, 13852): 'Northern Hemisphere (GOES-East)', (10819, 20800):
'Full Disc'}

satpy.readers.goes_imager_nc.is_vis_channel(channel)
Determine whether the given channel is a visible channel.
satpy.readers.goes_imager_nc.test_coefs(ir_url, vis_url)
Test calibration coefficients against NOAA reference pages.
Currently the reference pages are:
ir_url = https://www.ospo.noaa.gov/Operations/GOES/calibration/gvar-conversion.html vis_url = https://www.
ospo.noaa.gov/Operations/GOES/calibration/goes-vis-ch-calibration.html
Parameters
• ir_url – Path or URL to HTML page with IR coefficients
• vis_url – Path or URL to HTML page with VIS coefficients
Raises
ValueError if coefficients don't match the reference –

satpy.readers.gpm_imerg module

Reader for GPM imerg data on half-hourly timesteps.

References
• The NASA IMERG ATBD: https://pmm.nasa.gov/sites/default/files/document_files/IMERG_ATBD_V06.pdf
class satpy.readers.gpm_imerg.Hdf5IMERG(filename, filename_info, filetype_info)
Bases: HDF5FileHandler
IMERG hdf5 reader.
Init method.
property end_time
Find the end time from filename info.
get_area_def(dsid)
Create area definition from the gridded lat/lon values.
get_dataset(dataset_id, ds_info)
Load a dataset.
property start_time
Find the start time from filename info.

satpy.readers.grib module

Generic Reader for GRIB2 files.


Currently this reader depends on the pygrib python package. The eccodes package from ECMWF is preferred, but does
not support python 3 at the time of writing.

250 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.grib.GRIBFileHandler(filename, filename_info, filetype_info)


Bases: BaseFileHandler
Generic GRIB file handler.
Open grib file and do initial message parsing.
_analyze_messages(grib_file)

_area_def_from_msg(msg)

static _convert_datetime(msg, date_key, time_key, date_format='%Y%m%d%H%M')

static _correct_cyl_minmax_xy(proj_params, min_lon, min_lat, max_lon, max_lat)

static _correct_proj_params_over_prime_meridian(proj_params)

_create_dataset_ids(keys)

_get_area_info(msg, proj_params)

static _get_corner_lonlat(proj_params, lons, lats)

static _get_corner_xy(proj_params, lons, lats, scans_positively)

_get_cyl_area_info(msg, proj_params)

static _get_cyl_minmax_lonlat(lons, lats)

static _get_extents(min_x, min_y, max_x, max_y, shape)

_get_message(ds_info)

available_datasets(configured_datasets=None)
Automatically determine datasets provided by this file.
property end_time
Get end time of this entire file.
Assumes the last message is the latest message.
get_area_def(dsid)
Get area definition for message.
If latlong grid then convert to valid eqc grid.
get_dataset(dataset_id, ds_info)
Read a GRIB message into an xarray DataArray.
get_metadata(msg, ds_info)
Get metadata.
property start_time
Get start time of this entire file.
Assumes the first message is the earliest message.

2.15. satpy 251


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.hdf4_utils module

Helpers for reading hdf4-based files.


class satpy.readers.hdf4_utils.HDF4FileHandler(filename, filename_info, filetype_info)
Bases: BaseFileHandler
Base class for common HDF4 operations.
Open file and collect information.
_collect_attrs(name, attrs)

_open_xarray_dataset(val, chunks=4096)
Read the band in blocks.
collect_metadata(name, obj)
Collect all metadata about file content.
get(item, default=None)
Get variable as DataArray or return the default.
satpy.readers.hdf4_utils.from_sds(var, src_path, **kwargs)
Create a dask array from a SD dataset.

satpy.readers.hdf5_utils module

Helpers for reading hdf5-based files.


class satpy.readers.hdf5_utils.HDF5FileHandler(filename, filename_info, filetype_info)
Bases: BaseFileHandler
Small class for inspecting a HDF5 file and retrieve its metadata/header data.
Initialize file handler.
_collect_attrs(name, attrs)

_get_reference(hf , ref )

collect_metadata(name, obj)
Collect metadata.
get(item, default=None)
Get item.
get_reference(name, key)
Get reference.
satpy.readers.hdf5_utils.from_h5_array(h5dset)
Create a dask array from an h5py dataset, ensuring uniqueness of the dask array name.

satpy.readers.hdfeos_base module

Base HDF-EOS reader.

252 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.hdfeos_base.HDFEOSBaseFileReader(filename, filename_info, filetype_info,


**kwargs)
Bases: BaseFileHandler
Base file handler for HDF EOS data for both L1b and L2 products.
Initialize the base reader.
_add_satpy_metadata(data_id: DataID, data_arr: DataArray)
Add metadata that is specific to Satpy.
_chunks_for_variable(hdf_dataset)

_get_good_data_mask(data_arr, is_category=False)

static _get_res_multiplier(var_shape)

_load_all_metadata_attributes()

_platform_name_from_filename()

_read_dataset_in_file(dataset_name)

classmethod _read_mda(lines, element=None)

_resolution_to_rows_per_scan(resolution: int) → int

_scale_and_mask_data_array(data, is_category=False)
Unscale byte data and mask invalid/fill values.
MODIS requires unscaling the in-file bytes in an unexpected way:

data = (byte_value - add_offset) * scale_factor

See the below L1B User’s Guide Appendix C for more information:
https://mcst.gsfc.nasa.gov/sites/default/files/file_attachments/M1054E_PUG_2017_0901_V6.2.2_Terra_
V6.2.1_Aqua.pdf
classmethod _split_line(line, lines)

_start_time_from_filename()

property end_time
Get the end time of the dataset.
load_dataset(dataset_name, is_category=False)
Load the dataset from HDF EOS file.
property metadata_platform_name
Platform name from the internal file metadata.
classmethod read_mda(attribute)
Read the EOS metadata.
property start_time
Get the start time of the dataset.

2.15. satpy 253


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.hdfeos_base.HDFEOSGeoReader(filename, filename_info, filetype_info, **kwargs)


Bases: HDFEOSBaseFileReader
Handler for the geographical datasets.
Initialize the geographical reader.
DATASET_NAMES = {'height': 'Height', 'landsea_mask': 'Land/SeaMask', 'latitude':
'Latitude', 'longitude': 'Longitude', 'range': 'Range', 'satellite_azimuth_angle':
('SensorAzimuth', 'Sensor_Azimuth'), 'satellite_zenith_angle': ('SensorZenith',
'Sensor_Zenith'), 'solar_azimuth_angle': ('SolarAzimuth', 'SolarAzimuth'),
'solar_zenith_angle': ('SolarZenith', 'Solar_Zenith'), 'water_present':
'WaterPresent'}

static _geo_resolution_for_l1b(metadata)

static _geo_resolution_for_l2_l1b(metadata)

_load_ds_by_name(ds_name)
Attempt loading using multiple common names.
property geo_resolution
Resolution of the geographical data retrieved in the metadata.
get_dataset(dataset_id: DataID, dataset_info: dict) → DataArray
Get the geolocation dataset.
get_interpolated_dataset(name1, name2, resolution, offset=0)
Load and interpolate datasets.
static is_geo_loadable_dataset(dataset_name: str) → bool
Determine if this dataset should be loaded as a Geo dataset.
static read_geo_resolution(metadata)
Parse metadata to find the geolocation resolution.
satpy.readers.hdfeos_base._find_and_run_interpolation(interpolation_functions, src_resolution,
dst_resolution, args)

satpy.readers.hdfeos_base._interpolate_no_angles(clons, clats, src_resolution, dst_resolution)

satpy.readers.hdfeos_base._interpolate_with_angles(clons, clats, csatz, src_resolution, dst_resolution)

satpy.readers.hdfeos_base._modis_date(date)
Transform a date and time string into a datetime object.
satpy.readers.hdfeos_base.interpolate(clons, clats, csatz, src_resolution, dst_resolution)
Interpolate two parallel datasets jointly.

satpy.readers.hrit_base module

HRIT/LRIT format reader.


This module is the base module for all HRIT-based formats. Here, you will find the common building blocks for hrit
reading.
One of the features here is the on-the-fly decompression of hrit files when compressed hrit files are encountered (files
finishing with .C_).

254 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.hrit_base.HRITFileHandler(filename, filename_info, filetype_info, hdr_info)


Bases: BaseFileHandler
HRIT standard format reader.
Initialize the reader.
_get_hd(hdr_info)
Open the file, read and get the basic file header info and set the mda dictionary.
_get_output_info()

property end_time
Get end time.
get_area_def(dsid)
Get the area definition of the band.
get_area_extent(size, offsets, factors, platform_height)
Get the area extent of the file.
get_dataset(key, info)
Load a dataset.
get_xy_from_linecol(line, col, offsets, factors)
Get the intermediate coordinates from line & col.
Intermediate coordinates are actually the instruments scanning angles.
property observation_end_time
Get observation end time.
property observation_start_time
Get observation start time.
read_band(key, info)
Read the data.
property start_time
Get start time.
class satpy.readers.hrit_base.HRITSegment(filename, mda)
Bases: object
An HRIT segment with data.
Set up the segment.
_get_input_info()

_is_file_like()

_read_data_from_disk()

_read_data_from_file()

_read_file_like()

read_data()
Read the data.

2.15. satpy 255


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.hrit_base.decompress(infile)
Decompress an XRIT data file and return the decompressed buffer.
satpy.readers.hrit_base.get_header_content(fp, header_dtype, count=1)
Return the content of the HRIT header.
satpy.readers.hrit_base.get_header_id(fp)
Return the HRIT header common data.

satpy.readers.hrit_jma module

HRIT format reader for JMA data.

Introduction

The JMA HRIT format is described in the JMA HRIT - Mission Specific Implementation. There are three readers for
this format in Satpy:
• jami_hrit: For data from the JAMI instrument on MTSAT-1R
• mtsat2-imager_hrit: For data from the Imager instrument on MTSAT-2
• ahi_hrit: For data from the AHI instrument on Himawari-8/9
Although the data format is identical, the instruments have different characteristics, which is why there is a dedicated
reader for each of them. Sample data is available here:
• JAMI/Imager sample data
• AHI sample data

Example:

Here is an example how to read Himwari-8 HRIT data with Satpy:

from satpy import Scene


import glob

filenames = glob.glob('data/IMG_DK01B14_2018011109*')
scn = Scene(filenames=filenames, reader='ahi_hrit')
scn.load(['B14'])
print(scn['B14'])

Output:

<xarray.DataArray (y: 5500, x: 5500)>


dask.array<concatenate, shape=(5500, 5500), dtype=float64, chunksize=(550, 4096), ...
Coordinates:
acq_time (y) datetime64[ns] 2018-01-11T09:00:20.995200 ... 2018-01-11T09:09:40.
˓→348800

crs object +proj=geos +lon_0=140.7 +h=35785831 +x_0=0 +y_0=0 +a=6378169 ...


* y (y) float64 5.5e+06 5.498e+06 5.496e+06 ... -5.496e+06 -5.498e+06
* x (x) float64 -5.498e+06 -5.496e+06 -5.494e+06 ... 5.498e+06 5.5e+06
Attributes:
orbital_parameters: {'projection_longitude': 140.7, 'projection_latitud...
standard_name: toa_brightness_temperature
level: None
(continues on next page)

256 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


wavelength: (11.0, 11.2, 11.4)
units: K
calibration: brightness_temperature
file_type: ['hrit_b14_seg', 'hrit_b14_fd']
modifiers: ()
polarization: None
sensor: ahi
name: B14
platform_name: Himawari-8
resolution: 4000
start_time: 2018-01-11 09:00:20.995200
end_time: 2018-01-11 09:09:40.348800
area: Area ID: FLDK, Description: Full Disk, Projection I...
ancillary_variables: []

JMA HRIT data contain the scanline acquisition time for only a subset of scanlines. Timestamps of the remaining
scanlines are computed using linear interpolation. This is what you’ll find in the acq_time coordinate of the dataset.

Compression

Gzip-compressed MTSAT files can be decompressed on the fly using FSFile:

import fsspec
from satpy import Scene
from satpy.readers import FSFile

filename = "/data/HRIT_MTSAT1_20090101_0630_DK01IR1.gz"
open_file = fsspec.open(filename, compression="gzip")
fs_file = FSFile(open_file)
scn = Scene([fs_file], reader="jami_hrit")
scn.load(["IR1"])

class satpy.readers.hrit_jma.HRITJMAFileHandler(filename, filename_info, filetype_info,


use_acquisition_time_as_start_time=False)
Bases: HRITFileHandler
JMA HRIT format reader.
By default, the reader uses the start time parsed from the filename. To use exact time, computed from the
metadata, the user can define a keyword argument:

scene = Scene(filenames=filenames,
reader='ahi_hrit',
reader_kwargs={'use_acquisition_time_as_start_time': True})

As this time is different for every channel, time-dependent calculations like SZA correction can be pretty slow
when multiple channels are used.
The exact scanline times are always available as coordinates of an individual channels:

scene.load(["B03"])
print(scene["B03].coords["acq_time"].data)

would print something similar to:

2.15. satpy 257


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

array(['2021-12-08T06:00:20.131200000', '2021-12-08T06:00:20.191948000',
'2021-12-08T06:00:20.252695000', ...,
'2021-12-08T06:09:39.449390000', '2021-12-08T06:09:39.510295000',
'2021-12-08T06:09:39.571200000'], dtype='datetime64[ns]')

The first value represents the exact start time, and the last one the exact end time of the data acquisition.
Initialize the reader.
_check_sensor_platform_consistency(sensor)
Make sure sensor and platform are consistent.
Parameters
sensor (str) – Sensor name from YAML dataset definition
Raises
ValueError if they don't match –
_get_acq_time()
Get the acquisition times from the file.
Acquisition times for a subset of scanlines are stored in the header as follows:
b’LINE:=1rTIME:=54365.022558rLINE:=21rTIME:=54365.022664r. . . ’
Missing timestamps in between are computed using linear interpolation.
_get_area_def()
Get the area definition of the band.
_get_line_offset()
Get line offset for the current segment.
Read line offset from the file and adapt it to the current segment or half disk scan so that
y(l) ~ l - loff
because this is what get_geostationary_area_extent() expects.
_get_platform()
Get the platform name.
The platform is not specified explicitly in JMA HRIT files. For segmented data it is not even specified in
the filename. But it can be derived indirectly from the projection name:
GEOS(140.00): MTSAT-1R GEOS(140.25): MTSAT-1R # TODO: Check if there is more. . .
GEOS(140.70): Himawari-8 GEOS(145.00): MTSAT-2
See [MTSAT], section 3.1. Unfortunately Himawari-8 and 9 are not distinguishable using that method at
the moment. From [HIMAWARI]:
“HRIT/LRIT files have the same file naming convention in the same format in Himawari-8 and Himawari-9,
so there is no particular difference.”
TODO: Find another way to distinguish Himawari-8 and 9.
References: [MTSAT] http://www.data.jma.go.jp/mscweb/notice/Himawari7_e.html [HIMAWARI] http:
//www.data.jma.go.jp/mscweb/en/himawari89/space_segment/sample_hrit.html
static _interp(arr, cal)

258 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_mask_space(data)
Mask space pixels.
calibrate(data, calibration)
Calibrate the data.
property end_time
Get end time of the scan.
get_area_def(dsid)
Get the area definition of the band.
get_dataset(key, info)
Get the dataset designated by key.
property start_time
Get start time of the scan.
satpy.readers.hrit_jma.mjd2datetime64(mjd)
Convert Modified Julian Day (MJD) to datetime64.

satpy.readers.hrpt module

Reading and calibrating hrpt avhrr data.


Todo: - AMSU - Compare output with AAPP
Reading: http://www.ncdc.noaa.gov/oa/pod-guide/ncdc/docs/klm/html/c4/sec4-1.htm#t413-1
Calibration: http://www.ncdc.noaa.gov/oa/pod-guide/ncdc/docs/klm/html/c7/sec7-1.htm
class satpy.readers.hrpt.HRPTFile(filename, filename_info, filetype_info)
Bases: BaseFileHandler
Reader for HRPT Minor Frame, 10 bits data expanded to 16 bits.
Init the file handler.
property _chunks
Get the best chunks for this data.
property _data
Get the data.
_get_avhrr_tiepoints(scan_points, scanline_nb)

_get_ch3_mask_or_true(key)

_get_channel_data(key)
Get channel data.
_get_navigation_data(key)
Get navigation data.
property _is3b

calibrate_solar_channel(data, key)
Calibrate a solar channel.

2.15. satpy 259


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

calibrate_thermal_channel(data, key)
Calibrate a thermal channel.
property calibrator
Create a calibrator for the data.
property end_time
Get the end time.
get_dataset(key, info)
Get the dataset.
property lons_lats
Get the lons and lats.
property platform_name
Get the platform name.
read()
Read the file.
property start_time
Get the start time.
property telemetry
Get the telemetry.
property times
Get the timestamps for each line.
satpy.readers.hrpt._get_channel_index(key)
Get the avhrr channel index.
satpy.readers.hrpt.bfield(array, bit)
Return the bit array.
satpy.readers.hrpt.geo_interpolate(lons32km, lats32km)
Interpolate geo data.
satpy.readers.hrpt.time_seconds(tc_array, year)
Return the time object from the timecodes.

satpy.readers.hsaf_grib module

A reader for files produced by the Hydrology SAF.


Currently this reader depends on the pygrib python package. The eccodes package from ECMWF is preferred, but does
not support python 3 at the time of writing.
class satpy.readers.hsaf_grib.HSAFFileHandler(filename, filename_info, filetype_info)
Bases: BaseFileHandler
File handler for HSAF grib files.
Init the file handler.
_get_area_def(msg)
Get the area definition of the datasets in the file.

260 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

static _get_datetime(msg)

_get_message(idx)

property analysis_time
Get validity time of this file.
get_area_def(dsid)
Get area definition for message.
get_dataset(ds_id, ds_info)
Read a GRIB message into an xarray DataArray.
get_metadata(msg)
Get the metadata.

satpy.readers.hsaf_h5 module

A reader for HDF5 Snow Cover (SC) file produced by the Hydrology SAF.
class satpy.readers.hsaf_h5.HSAFFileHandler(filename, filename_info, filetype_info)
Bases: BaseFileHandler
File handler for HSAF H5 files.
Init the file handler.
_get_area_def()
Area definition for h10 - hardcoded.
Area definition not available in the HDF5 message, so using hardcoded one (it’s known).

hsaf_h10:
description: H SAF H10 area definition
projection:
proj: geos
lon_0: 0
h: 35785831
x_0: 0
y_0: 0
a: 6378169
rf: 295.488065897001
no_defs: null
type: crs
shape:
height: 916
width: 1902
area_extent:
lower_left_xy: [-1936760.3163240477, 2635854.280233425]
upper_right_xy: [3770006.7195370505, 5384223.683413638]
units: m

_get_dataset(ds_name)

_prepare_variable_for_palette(dset, ds_info)

2.15. satpy 261


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property end_time
Get end time.
get_area_def(dsid)
Area definition for h10 SC dataset.
Since it is not available in the HDF5 message, using hardcoded one (it’s known).
get_dataset(ds_id, ds_info)
Read a HDF5 file into an xarray DataArray.
get_metadata(dset, name)
Get the metadata.
property start_time
Get start time.

satpy.readers.hy2_scat_l2b_h5 module

HY-2B L2B Reader.


Distributed by Eumetsat in HDF5 format. Also handle the HDF5 files from NSOAS, based on a file example.
class satpy.readers.hy2_scat_l2b_h5.HY2SCATL2BH5FileHandler(filename, filename_info, filetype_info)
Bases: HDF5FileHandler
File handler for HY2 scat.
Initialize file handler.
_mask_data(data)

_scale_data(data)

property end_time
Time for final observation.
get_dataset(key, info)
Get the dataset.
get_metadata()
Get the metadata.
get_variable_metadata()
Get the variable metadata.
property platform_name
Get the Platform ShortName.
property start_time
Time for first observation.

satpy.readers.iasi_l2 module

IASI L2 files.

262 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.iasi_l2.IASIL2CDRNC(filename, filename_info, filetype_info,


auto_maskandscale=False, xarray_kwargs=None,
cache_var_size=0, cache_handle=False)
Bases: NetCDF4FsspecFileHandler
Reader for IASI L2 CDR in NetCDF format.
Reader for IASI All Sky Temperature and Humidity Profiles - Climate Data Record Release 1.1 - Metop-A and
-B. Data and documentation are available from http://doi.org/10.15770/EUM_SEC_CLM_0063. Data are also
available from the EUMETSAT Data Store under ID EO:EUM:DAT:0576.
Initialize object.
available_datasets(configured_datasets=None)
Get available datasets based on what’s in the file.
Returns all datasets in the root group.
get_dataset(data_id, ds_info)
Obtain dataset.
class satpy.readers.iasi_l2.IASIL2HDF5(filename, filename_info, filetype_info)
Bases: BaseFileHandler
File handler for IASI L2 HDF5 files.
Init the file handler.
property end_time
Get the end time.
get_dataset(key, info)
Load a dataset.
property start_time
Get the start time.
satpy.readers.iasi_l2._form_datetimes(days, msecs)
Calculate seconds since EPOCH from days and milliseconds for each of IASI scan.
satpy.readers.iasi_l2.read_dataset(fid, key)
Read dataset.
satpy.readers.iasi_l2.read_geo(fid, key)
Read geolocation and related datasets.

satpy.readers.iasi_l2_so2_bufr module

IASI L2 SO2 BUFR format reader.

Introduction

The iasi_l2_so2_bufr reader reads IASI level2 SO2 data in BUFR format. The algorithm is described in the The-
oretical Basis Document, linked below.
Each BUFR file consists of a number of messages, one for each scan, each of which contains SO2 column amounts in
Dobson units for retrievals performed with plume heights of 7, 10, 13, 16 and 25 km.

2.15. satpy 263


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Reader Arguments

A list of retrieval files, fnames, can be opened as follows:

Scene(reader="iasi_l2_so2_bufr", filenames=fnames)

Example:

Here is an example how to read the data in satpy:

from satpy import Scene


import glob

filenames = glob.glob(
'/test_data/W_XX-EUMETSAT-Darmstadt,SOUNDING+SATELLITE,METOPA+IASI_C_EUMC_
˓→20200204091455_68984_eps_o_so2_l2.bin')

scn = Scene(filenames=filenames, reader='iasi_l2_so2_bufr')


scn.load(['so2_height_3', 'so2_height_4'])
print(scn['so2_height_3'])

Output:

<xarray.DataArray 'so2_height_3' (y: 23, x: 120)>


dask.array<where, shape=(23, 120), dtype=float64, chunksize=(1, 120), chunktype=numpy.
˓→ndarray>

Coordinates:
crs object +proj=latlong +datum=WGS84 +ellps=WGS84 +type=crs
Dimensions without coordinates: y, x
Attributes:
sensor: IASI
units: dobson
file_type: iasi_l2_so2_bufr
wavelength: None
modifiers: ()
platform_name: METOP-2
resolution: 12000
fill_value: -1e+100
level: None
polarization: None
coordinates: ('longitude', 'latitude')
calibration: None
key: #3#sulphurDioxide
name: so2_height_3
start_time: 2020-02-04 09:14:55
end_time: 2020-02-04 09:17:51
area: Shape: (23, 120)\nLons: <xarray.DataArray 'longitud...
ancillary_variables: []

References: Algorithm Theoretical Basis Document: https://acsaf.org/docs/atbd/Algorithm_Theoretical_Basis_


Document_IASI_SO2_Jul_2016.pdf
class satpy.readers.iasi_l2_so2_bufr.IASIL2SO2BUFR(filename, filename_info, filetype_info, **kwargs)
Bases: BaseFileHandler
File handler for the IASI L2 SO2 BUFR product.

264 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Initialise the file handler for the IASI L2 SO2 BUFR data.
property end_time
Return the end time of data acquisition.
get_array(key)
Get all data from file for the given BUFR key.
get_attribute(key)
Get BUFR attributes.
get_dataset(dataset_id, dataset_info)
Get dataset using the BUFR key in dataset_info.
get_start_end_date()
Get the first and last date from the bufr file.
property platform_name
Return spacecraft name.
property start_time
Return the start time of data acqusition.

satpy.readers.ici_l1b_nc module

EUMETSAT EPS-SG Ice Cloud Imager (ICI) Level 1B products reader.


The format is explained in the EPS-SG ICI Level 1B Product Format Specification V3A.
This version is applicable for the ici test data released in Jan 2021.
class satpy.readers.ici_l1b_nc.IciL1bNCFileHandler(filename, filename_info, filetype_info, **kwargs)
Bases: NetCDF4FileHandler
Reader class for ICI L1B products in netCDF format.
Read the calibration data and prepare the class for dataset reading.
_calibrate(variable, dataset_info)
Perform the calibration.
Parameters
• variable – xarray DataArray containing the dataset to calibrate.
• dataset_info – dictionary of information about the dataset.
Returns
array containing the calibrated values and all the
original metadata.
Return type
DataArray
static _calibrate_bt(radiance, cw, a, b)
Perform the calibration to brightness temperature.
Parameters
• radiance – xarray DataArray or numpy ndarray containing the radiance values.
• cw – center wavenumber [cm-1].

2.15. satpy 265


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• a – temperature coefficient [-].


• b – temperature coefficient [K].
Returns
array containing the calibrated brightness
temperature values.
Return type
DataArray
static _drop_coords(variable)
Drop coords that are not in dims.
_fetch_variable(var_key)
Fetch variable.
_filter_variable(variable, dataset_info)
Filter variable in the third dimension.
_get_global_attributes()
Create a dictionary of global attributes.
_get_quality_attributes()
Get quality attributes.
static _get_third_dimension_name(variable)
Get name of the third dimension of the variable.
_interpolate(interpolation_type)
Interpolate from tie points to pixel points.
static _interpolate_geo(longitude, latitude, n_samples)
Perform the interpolation of geographic coordinates from tie points to pixel points.
Parameters
• longitude – xarray DataArray containing the longitude dataset to interpolate.
• latitude – xarray DataArray containing the longitude dataset to interpolate.
• n_samples – int describing number of samples per scan to interpolate onto.
Returns
tuple of arrays containing the interpolate values, all the original
metadata and the updated dimension names.
_interpolate_viewing_angle(azimuth, zenith, n_samples)
Perform the interpolation of angular coordinates from tie points to pixel points.
Parameters
• azimuth – xarray DataArray containing the azimuth angle dataset to interpolate.
• zenith – xarray DataArray containing the zenith angle dataset to interpolate.
• n_samples – int describing number of samples per scan to interpolate onto.
Returns
tuple of arrays containing the interpolate values, all the original
metadata and the updated dimension names.

266 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_manage_attributes(variable, dataset_info)
Manage attributes of the dataset.
_orthorectify(variable, orthorect_data_name)
Perform the orthorectification.
Parameters
• variable – xarray DataArray containing the dataset to correct for orthorectification.
• orthorect_data_name – name of the orthorectification correction data in the product.
Returns
array containing the corrected values and all the
original metadata.
Return type
DataArray
static _standardize_dims(variable)
Standardize dims to y, x.
property end_time
Get observation end time.
get_dataset(dataset_id, dataset_info)
Get dataset using file_key in dataset_info.
property latitude
Get latitude coordinates.
property longitude
Get longitude coordinates.
property longitude_and_latitude
Get longitude and latitude coordinates.
property observation_azimuth
Get observation azimuth angles.
property observation_azimuth_and_zenith
Get observation azimuth and zenith angles.
property observation_zenith
Get observation zenith angles.
property platform_name
Return platform name.
property sensor
Return sensor.
property solar_azimuth
Get solar azimuth angles.
property solar_azimuth_and_zenith
Get solar azimuth and zenith angles.

2.15. satpy 267


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property solar_zenith
Get solar zenith angles.
property ssp_lon
Return subsatellite point longitude.
property start_time
Get observation start time.
class satpy.readers.ici_l1b_nc.InterpolationType(value, names=None, *, module=None,
qualname=None, type=None, start=1,
boundary=None)
Bases: Enum
Enum for interpolation types.
LONLAT = 0

OBSERVATION_ANGLES = 2

SOLAR_ANGLES = 1

satpy.readers.insat3d_img_l1b_h5 module

File handler for Insat 3D L1B data in hdf5 format.


class satpy.readers.insat3d_img_l1b_h5.Insat3DIMGL1BH5FileHandler(filename, filename_info,
filetype_info)
Bases: BaseFileHandler
File handler for insat 3d imager data.
Initialize file handler.
property datatree
Create the datatree.
property end_time
Get the end time.
get_area_def(ds_id)
Get the area definition.
get_dataset(ds_id, ds_info)
Get a data array.
property start_time
Get the start time.
satpy.readers.insat3d_img_l1b_h5._rename_dims(ds)
Rename dimensions to satpy standards.
satpy.readers.insat3d_img_l1b_h5.apply_lut(data, lut)
Apply a lookup table.
satpy.readers.insat3d_img_l1b_h5.decode_lut_arr(arr, lut)
Decode an array using a lookup table.

268 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.insat3d_img_l1b_h5.get_lonlat_suffix(resolution)
Get the lonlat variable suffix from the resolution.
satpy.readers.insat3d_img_l1b_h5.open_dataset(filename, resolution=1000)
Open a dataset for a given resolution.
satpy.readers.insat3d_img_l1b_h5.open_datatree(filename)
Open a datatree.

satpy.readers.li_base_nc module

Base class used for the MTG Lighting Imager netCDF4 readers.
The base LI reader class supports generating the available datasets programmatically: to achieve this, each LI product
type should provide a "file description" which is itself retrieved directly from the YAML configuration file for the reader
of interest, as a custom file_desc entry inside the 'file_type' section corresponding to that product type.
Each of the file_desc entry describes what are the variables that are available into that product that should be used
to register the available satpy datasets.
Each of those description entries may contain the following elements:
• product_type [required]:
Indicate the processing_level / product_type name to use internally for that type of product file. This should
correspond to the {processing_level}-{product_type} part of the full file_pattern.
• search_paths [optional]:
A list of the possible paths that should be prefixed to a given variable name when searching for that variable in
the NetCDF file to register a dataset on it. The list is given in priority order. If no search path is provided (or
an empty array is provided) then the variables will only be searched directly in the root group of the NetCDF
structure.
• swath_coordinates [required]:
The LI reader will use a SwathDefinition object to define the area/coordinates of each of the provided datasets
depending on the content of this entry. The user can either:
– Specify a swath_coordinates entry directly with latitude and longitude entries, in which case, the
datasets that will match one of the 'variable_patterns' provided will use those lat/lon variables as
coordinate providers.
– Specify a swath_coordinates entry directly with projection, azimuth and elevation entries in-
stead, in which case, the reader will first use the variables pointed by those 3 entries compute the corre-
sponding latitude/longitude data from the scan angles contained in the product file. And then, continue with
assigned those lat/lon datasets as coordinates for datasets that will match one of the variable_patterns
provided.
Note: It is acceptable to specify an empty array for the list of variable_patterns, in this case, the swath
coordinates will not be assigned to any dataset.
• sectors [optional]:
The custom dataset description mechanism makes a distinction between "ordinary" variables which should be
used to create a "single dataset" and "sectored variables" which will be found per sector and will thus be used
to generate as many datasets as there are sectors (see below). So this entry is used to specify the list of sector
names there should be available in the NetCDF structure.
• sector_variables [optional]:

2.15. satpy 269


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

This entry is used to provide a list of the variables that are available per sector in the NetCDF file. Thus, assuming
the sectors entry is set to the standard list ['north', 'east', 'south', 'west'], 4 separated datasets
will be registered for each variable listed here (using the conventional suffix "{sector_name}_sector")
• variables [optional]:
This entry is used to provide a list of "ordinary variables" (ie. variables that are not available per sector). Each
of those variables will be used to register one dataset.
Note: A single product may provide both the "variables" and the "sector_variables" at the same time (as this is
the case for LI LEF for instance)
• variable_transforms [optional]:
This entry is may be used to provide specific additional entries per variable name (ie. will apply to both in
sector or out of sector variables) that should be added to the dataset infos when registering a dataset with that
variable. While any kind of info could be added this way to the final dataset infos, we are currently using the
entry mainly to provide our LI reader with the following traits which will then be used to "transform" the data of
the dataset as requested on loading:
– broadcast_to: if this extra info is found in a dataset_info on dataset loading, then the initial data array
will be broadcast to the shape of the variable found under the variable path specified as value for that entry.
Note that, if the pattern {sector_name} if found in this entry value, then the reader will assume that we
are writing a dataset from an in sector variable, and use the current sector name to find the appropriate
alternate variable that will be used as reference to broadcast the current variable data.
– seconds_to_datetime: This transformation is used to internally convert variables provided as float val-
ues to the np.datetime64 data type. The value specified for this entry should be the reference epoch time
used as offsets for the elapsed seconds when converting the data.
– seconds_to_timedelta: This transformation is used to internally convert variables (assumed to use a
"second" unit) provided as float values to the np.timedelta64 data type. This entry should be set to true
to activate this transform. During the conversion, we internally use a nanosecond resolution on the input
floating point second values.
– milliseconds_to_timedelta: Same kind of transformation as seconds_to_timedelta except that
the source data is assumed to contain millisecond float values.
– accumulate_index_offset: if this extra info is found in a dataset_info on dataset loading, then we
will consider that the dataset currently being generated is an array of indices inside the variable pointed by
the path provided as value for that entry. Note that the same usage of the pattern {sector_name} mentioned
for the entry "broadcast_to" will also apply here. This behavior is useful when multiple input files are loaded
together in a single satpy scene, in which case, the variables from each files will be concatenated to produce
a single dataset for each variable, and thus the need to correct the reported indices accordingly.
An example of usage of this entry is as follows:

variable_transforms:
integration_frame_index:
accumulate_index_offset: "{sector_name}/exposure_time"

In the example above the integration_frame_index from each sector (i.e. optical channel) provides a list
of indices in the corresponding exposure_time array from that same sector. The final indices will thus
correctly take into account that the final exposure_time array contains all the values concatenated from all
the input files in the scene.
– use_rescaling: By default, we currently apply variable rescaling as soon as we find one (or more) of the
attributes named 'scale_factor', 'scaling_factor' or 'add_offset' in the source netcdf variable.
This automatic transformation can be disabled for a given variable specifying a value of false for this extra
info element, for instance:

270 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

variable_transforms:
latitude:
use_rescaling: false

Note: We are currently not disabling rescaling for any dataset, so that entry is not used in the current version
of the YAML config files for the LI readers.
class satpy.readers.li_base_nc.LINCFileHandler(filename, filename_info, filetype_info,
cache_handle=True)
Bases: NetCDF4FsspecFileHandler
Base class used as parent for the concrete LI reader classes.
Initialize LINCFileHandler.
add_provided_dataset(ds_infos)
Add a provided dataset to our internal list.
apply_accumulate_index_offset(data_array, ds_info)
Apply the accumulate_index_offset transform on a given array.
apply_broadcast_to(data_array, ds_info)
Apply the broadcast_to transform on a given array.
apply_fill_value(arr, fill_value)
Apply fill values, unless it is None.
apply_milliseconds_to_timedelta(data_array, _ds_info)
Apply the milliseconds_to_timedelta transform on a given array.
apply_seconds_to_datetime(data_array, ds_info)
Apply the seconds_to_datetime transform on a given array.
apply_seconds_to_timedelta(data_array, _ds_info)
Apply the seconds_to_timedelta transform on a given array.
apply_transforms(data_array, ds_info)
Apply all transformations requested in the ds_info on the provided data array.
apply_use_rescaling(data_array, ds_info=None)
Apply the use_rescaling transform on a given array.
available_datasets(configured_datasets=None)
Determine automatically the datasets provided by this file.
Uses a per product type dataset registration mechanism using the dataset descriptions declared in the reader
construction above.
check_variable_extra_info(ds_infos, vname)
Check if we have extra infos for that variable.
combine_info(all_infos)
Re-implement combine_info.
This is to be able to reset our __index_offset attribute in the shared ds_info currently being updated.
property end_time
Get the end time.

2.15. satpy 271


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

generate_coords_from_scan_angles()
Generate the latitude/longitude coordinates from the scan azimuth and elevation angles.
get_coordinate_names(ds_infos)
Get the target coordinate names, applying the sector name as needed.
get_daskified_lon_lat(proj_dict)
Get daskified lon and lat array using map_blocks.
get_dataset(dataset_id, ds_info=None)
Get a dataset.
get_dataset_infos(dname)
Retrieve the dataset infos corresponding to one of the registered datasets.
get_first_valid_variable(var_paths)
Select the first valid path for a variable from the given input list and returns the data.
get_latlon_names()
Retrieve the user specified names for latitude/longitude coordinates.
Use default ‘latitude’ / ‘longitude’ if not specified.
get_measured_variable(var_paths, fill_value=nan)
Retrieve a measured variable path taking into account the potential old data formatting schema.
And also replace the missing values with the provided fill_value (except if this is explicitly set to None).
Also, if a slice index is provided, only that slice of the array (on the axis=0) is retrieved (before filling the
missing values).
get_projection_config()
Retrieve the projection configuration details.
get_transform_reference(transform_name, ds_info)
Retrieve a variable that should be used as reference during a transform.
get_transformed_dataset(ds_info)
Retrieve a dataset with all transformations applied on it.
get_variable_search_paths(var_paths)
Get the search paths from the dataset descriptions.
inverse_projection(azimuth, elevation, proj_dict)
Compute inverse projection.
is_prod_in_accumulation_grid()
Check if the current product is an accumulated product in geos grid.
register_available_datasets()
Register all the available dataset that should be made available from this file handler.
register_coords_from_scan_angles()
Register lat lon datasets in this reader.
register_dataset(var_name, oc_name=None)
Register a simple dataset given name elements.
register_sector_datasets()
Register all the available sector datasets.

272 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

register_variable_datasets()
Register all the available raw (i.e. not in sectors).
property sensor_names
List of sensors represented in this file.
property start_time
Get the start time.
update_array_attributes(data_array, ds_info)
Inject the attributes from the ds_info structure into the final data array, ignoring the internal entries.
validate_array_dimensions(data_array, ds_info=None)
Ensure that the dimensions of the provided data_array are valid.
variable_path_exists(var_path)
Check if a given variable path is available in the underlying netCDF file.
All we really need to do here is to access the file_content dictionary and check if we have a variable under
that var_path key.

satpy.readers.li_l2_nc module

MTG Lightning Imager (LI) Level-2 (L2) unified reader.


This reader supports reading all the products from the LI L2 processing level:
Point products:
• L2-LE Lightning Events
• L2-LEF Lightning Events Filtered
• L2-LFL Lightning Flashes
• L2-LGR Lightning Groups
Accumulated products:
• L2-AF Accumulated Flashes
• L2-AFA Accumulated Flash Area
• L2-AFR Accumulated Flash Radiance
Per default, the unified LI L2 reader returns the data either as an 1-D array or as a 2-D array depending on the product
type.
Point-based products (LE, LEF, LFL, LGR) are “classic” lightning products consisting of values with attached latitude
and longitude coordinates. Hence, these products are provided by the reader as 1-D arrays, with a pyresample.
geometry.SwathDefinition area attribute containing the points lat-lon coordinates.
Accumulated products (AF, AFA, AFR) are the result of temporal accumulation of events (e.g. over 30 seconds), and
are gridded in the FCI 2km geostationary projection grid, in order to facilitate the synergistic usage together with FCI.
Compared to the point products, the gridded products also give information about the spatial extent of the lightning
activity. Hence, these products are provided by the reader as 2-D arrays in the FCI 2km grid as per intended usage,
with a pyresample.geometry.AreaDefinition area attribute containing the grid geolocation information. In this
way, the products can directly be overlaid to FCI data.

2.15. satpy 273


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

á Note

L2 accumulated products retrieved from the archive (that have “ARC” in the filename) contain data for 20 re-
peat cycles (timesteps) covering 10 minutes of sensing time. For these files, when loading the main variables
(accumulated_flash_area, flash_accumulation, flash_radiance), the reader will cumulate (sum up) the
data for the entire sensing period of the file. A solution to access easily each timestep is being worked on. See
https://github.com/pytroll/satpy/issues/2878 for possible workarounds in the meanwhile.

If needed, the accumulated products can also be accessed as 1-d array by setting the reader kwarg
with_area_definition=False, e.g.:

scn = Scene(filenames=filenames, reader="li_l2_nc", reader_kwargs={'with_area_definition


˓→': False})

For both 1-d and 2-d products, the lat-lon coordinates of the points/grid pixels can be accessed using e.g.
scn['dataset_name'].attrs['area'].get_lonlats().
See the LI L2 Product User Guide PUG for more information.
class satpy.readers.li_l2_nc.LIL2NCFileHandler(filename, filename_info, filetype_info,
with_area_definition=True)
Bases: LINCFileHandler
Implementation class for the unified LI L2 satpy reader.
Initialize LIL2NCFileHandler.
get_area_def(dsid)
Compute area definition for a dataset, only supported for accumulated products.
get_array_on_fci_grid(data_array: DataArray)
Obtain the accumulated products as a (sparse) 2-d array.
The array has the shape of the FCI 2 km grid (5568x5568px), and will have an AreaDefinition attached.
get_dataset(dataset_id, ds_info=None)
Get the dataset and apply gridding if requested.
is_var_with_swath_coord(dsid)
Check if the variable corresponding to this dataset is listed as variable with swath coordinates.
satpy.readers.li_l2_nc._np_add_at_wrapper(target_array, indices, data)

satpy.readers.maia module

Reader for NWPSAF AAPP MAIA Cloud product.


https://nwpsaf.eu/site/software/aapp/
Documentation reference:
[NWPSAF-MF-UD-003] DATA Formats [NWPSAF-MF-UD-009] MAIA version 4 Scientific User Man-
ual
class satpy.readers.maia.MAIAFileHandler(filename, filename_info, filetype_info)
Bases: BaseFileHandler
File handler for Maia files.

274 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Init the file handler.


property end_time
Get the end time.
get_dataset(key, info, out=None)
Get a dataset from the file.
get_platform(platform)
Get the platform.
read(filename)
Read the file.
property start_time
Get the start time.

satpy.readers.mcd12q1 module

MCD12Q1 hdf-eos format reader.

Introduction

The mcd12q1 reader reads MCD12Q1 products in HDF-EOS format.


The 500m product is provided on a sinusoidal grid.
Reference documents and links:
• MODIS land products grid: https://modis-land.gsfc.nasa.gov/MODLAND_grid.html
• User guide: https://lpdaac.usgs.gov/documents/101/MCD12_User_Guide_V6.pdf
• MCD12Q1 v061: MODIS/Terra+Aqua Land Cover Type Yearly L3 Global 500 m SIN Grid
The reader has been tested with:
• MCD12Q1: Land cover data.
To get a list of the available datasets for a given file refer to the “Load data” section in Reading.
class satpy.readers.mcd12q1.MCD12Q1HDFFileHandler(filename, filename_info, filetype_info, **kwargs)
Bases: HDFEOSBaseFileReader
File handler for MCD12Q1 HDF-EOS 500m granules.
Initialize the base reader.
_dynamic_variables_from_file(handled_var_names: set) → Iterable[tuple[bool, dict]]

_get_area_extent()
Get the grid properties.
_get_res()
Compute the resolution from the file metadata.
available_datasets(configured_datasets=None)
Automatically determine datasets provided by this file.

2.15. satpy 275


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_area_def(dsid)
Get the area definition.
This is fixed, but not defined in the file. So we must generate it ourselves with some assumptions.
The proj_param string comes from https://lpdaac.usgs.gov/documents/101/MCD12_User_Guide_V6.pdf
get_dataset(dataset_id, dataset_info)
Get DataArray for specified dataset.

satpy.readers.meris_nc_sen3 module

ENVISAT MERIS reader.


Sentinel 3 like format: https://earth.esa.int/eogateway/documents/20142/37627/
MERIS-Sentinel-3-Like-L1-andL2-PFS.pdf
Default:
scn = Scene(filenames=my_files, reader=’meris_nc_sen3’)

References
• xarray.open_dataset()
class satpy.readers.meris_nc_sen3.NCMERIS2(filename, filename_info, filetype_info)
Bases: NCOLCI2
File handler for MERIS l2.
Init the file handler.
getbitmask(wqsf , items=None)
Get the bitmask. Experimental default mask.
class satpy.readers.meris_nc_sen3.NCMERISAngles(filename, filename_info, filetype_info)
Bases: NCOLCIAngles
File handler for the MERIS angles.
Init the file handler.
class satpy.readers.meris_nc_sen3.NCMERISCal(filename, filename_info, filetype_info)
Bases: NCOLCIBase
Dummy class for calibration.
Init the meris reader base.
class satpy.readers.meris_nc_sen3.NCMERISGeo(filename, filename_info, filetype_info)
Bases: NCOLCIBase
Dummy class for navigation.
Init the meris reader base.
class satpy.readers.meris_nc_sen3.NCMERISMeteo(filename, filename_info, filetype_info)
Bases: NCOLCIMeteo
File handler for the MERIS meteo data.
Init the file handler.

276 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.mersi_l1b module

Reader for the FY-3D MERSI-2 L1B file format.


The files for this reader are HDF5 and come in four varieties; band data and geolocation data, both at 250m and 1000m
resolution.
This reader was tested on FY-3A/B/C MERSI-1, FY-3D MERSI-2, FY-3E MERSI-LL and FY-3G MERSI-RM data,
but should work on future platforms as well assuming no file format changes.
class satpy.readers.mersi_l1b.MERSIL1B(filename, filename_info, filetype_info)
Bases: HDF5FileHandler
MERSI-1/MERSI-2/MERSI-LL/MERSI-RM L1B file reader.
Initialize file handler.
_get_bt_dataset(data, calibration_index, wave_number)
Get the dataset as brightness temperature.
Apparently we don’t use these calibration factors for Rad -> BT:

coeffs = self._get_coefficients(ds_info['calibration_key'], calibration_index)


# coefficients are per-scan, we need to repeat the values for a
# clean alignment
coeffs = np.repeat(coeffs, data.shape[0] // coeffs.shape[1], axis=1)
coeffs = coeffs.rename({
coeffs.dims[0]: 'coefficients', coeffs.dims[1]: 'y'
}) # match data dims
data = coeffs[0] + coeffs[1] * data + coeffs[2] * data**2 + coeffs[3] * data**3

_get_coefficients(cal_key, cal_index)
Get VIS calibration coeffs from calibration datasets.
_get_coefficients_mersi1(cal_index)
Get VIS calibration coeffs from attributes. Only for MERSI-1 on FY-3A/B.
_get_dn_corrections(data, band_index, dataset_id, attrs)
Use slope and intercept to get DN corrections.
_get_rad_dataset(data, ds_info, datset_id)
Get the dataset as radiance.
For MERSI-2/RM VIS bands, this could be calculated by:

Rad = Reflectance / 100 * E0 / pi

For MERSI-2, E0 is in the attribute “Solar_Irradiance”. For MERSI-RM, E0 is in the calibration dataset
“Solar_Irradiance”. However we can’t find the way to retrieve this value from MERSI-1.
For MERSI-LL VIS band, it has already been stored in DN values. After applying slope and intercept, we
just get it. And Same way for IR bands, no matter which sensor it is.
_get_ref_dataset(data, ds_info)
Get the dataset as reflectance.
For MERSI-1/2/RM, coefficients will be as:

Reflectance = coeffs_1 + coeffs_2 * DN + coeffs_3 * DN ** 2

2.15. satpy 277


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

For MERSI-LL, the DN value is in radiance and the reflectance could be calculated by:

Reflectance = Rad * pi / E0 * 100

Here E0 represents the solar irradiance of the specific band and is the coefficient.
_get_single_slope_intercept(slope, intercept, cal_index)

_mask_data(data, dataset_id, attrs)


Mask the data using fill_value and valid_range attributes.
_strptime(date_attr, time_attr)
Parse date/time strings.
property end_time
Time for final observation.
get_dataset(dataset_id, ds_info)
Load data variable and metadata and calibrate if needed.
get_refl_mult()
Get reflectance multiplier.
property platform_name
Platform name.
property sensor_name
Map sensor name to Satpy ‘standard’ sensor names.
property start_time
Time for first observation.

satpy.readers.mimic_TPW2_nc module

Reader for Mimic TPW data in netCDF format from SSEC.


This module implements reader for MIMIC_TPW2 netcdf files. MIMIC-TPW2 is an experimental global product of
total precipitable water (TPW), using morphological compositing of the MIRS retrieval from several available opera-
tional microwave-frequency sensors. Originally described in a 2010 paper by Wimmers and Velden. This Version 2 is
developed from an older method that uses simpler, but more limited TPW retrievals and advection calculations.
More information, data and credits at http://tropic.ssec.wisc.edu/real-time/mtpw2/credits.html
class satpy.readers.mimic_TPW2_nc.MimicTPW2FileHandler(filename, filename_info, filetype_info)
Bases: NetCDF4FileHandler
NetCDF4 reader for MIMC TPW.
Initialize the reader.
available_datasets(configured_datasets=None)
Get datasets in file matching gelocation shape (lat/lon).
property end_time
End timestamp of the dataset same as start_time.
get_area_def(dsid)
Flip data up/down and define equirectangular AreaDefintion.

278 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_dataset(ds_id, info)
Load dataset designated by the given key from file.
get_metadata(data, info)
Get general metadata for file.
property sensor_name
Sensor name.
property start_time
Start timestamp of the dataset determined from yaml.

satpy.readers.mirs module

Interface to MiRS product.


class satpy.readers.mirs.MiRSL2ncHandler(filename, filename_info, filetype_info, limb_correction=True)
Bases: BaseFileHandler
MiRS handler for NetCDF4 files using xarray.
The MiRS retrieval algorithm runs on multiple sensors. For the ATMS sensors, a limb correction is applied by
default. In order to change that behavior, use the keyword argument limb_correction=False:

from satpy import Scene, find_files_and_readers

filenames = find_files_and_readers(base_dir, reader="mirs")


scene = Scene(filenames, reader_kwargs={'limb_correction': False})

Init method.
_apply_valid_range(data_arr, valid_range, scale_factor, add_offset)
Get and apply valid_range.
_available_btemp_datasets(yaml_info)
Create metadata for channel BTs.
_available_new_datasets(handled_vars)
Metadata for available variables other than BT.
_count_channel_repeat_number()
Count channel/polarization pair repetition.
_fill_data(data_arr, fill_value, scale_factor, add_offset)
Fill missing data with NaN.
property _get_coeff_filenames
Retrieve necessary files for coefficients if needed.
_get_ds_info_for_data_arr(var_name)

property _get_platform_name
Get platform name.
property _get_sensor
Get sensor.
_is_2d_yx_data_array(data_arr)

2.15. satpy 279


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

static _nan_for_dtype(data_arr_dtype)

static _scale_data(data_arr, scale_factor, add_offset)


Scale data, if needed.
apply_attributes(data, ds_info)
Combine attributes from file and yaml and apply.
File attributes should take precedence over yaml if both are present
available_datasets(configured_datasets=None)
Dynamically discover what variables can be loaded from this file.
See satpy.readers.file_handlers.BaseHandler.available_datasets() for more information.
property end_time
Get end time.
force_date(key)
Force datetime.date for combine.
force_time(key)
Force datetime.time for combine.
get_dataset(ds_id, ds_info)
Get datasets.
property platform_shortname
Get platform shortname.
property sensor_names
Return standard sensor names for the file’s data.
property start_time
Get start time.
update_metadata(ds_info)
Get metadata.
satpy.readers.mirs.apply_atms_limb_correction(datasets, channel_idx, dmean, coeffs, amean, nchx,
nchanx)
Calculate the correction for each channel.
satpy.readers.mirs.get_coeff_by_sfc(coeff_fn, bt_data, idx)
Read coefficients for specific filename (land or sea).
satpy.readers.mirs.get_resource_string(mod_part, file_part)
Read resource string.
satpy.readers.mirs.limb_correct_atms_bt(bt_data, surf_type_mask, coeff_fns, ds_info)
Gather data needed for limb correction.
satpy.readers.mirs.read_atms_coeff_to_string(fn)
Read the coefficients into a string.
satpy.readers.mirs.read_atms_limb_correction_coefficients(fn)
Read the limb correction files.

280 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.modis_l1b module

Modis level 1b hdf-eos format reader.

Introduction

The modis_l1b reader reads and calibrates Modis L1 image data in hdf-eos format. Files often have a pattern similar
to the following one:

M[O/Y]D02[1/H/Q]KM.A[date].[time].[collection].[processing_time].hdf

Other patterns where “collection” and/or “proccessing_time” are missing might also work (see the readers yaml file for
details). Geolocation files (MOD03) are also supported. The IMAPP direct broadcast naming format is also supported
with names like: a1.12226.1846.1000m.hdf.

Saturation Handling

Band 2 of the MODIS sensor is available in 250m, 500m, and 1km resolutions. The band data may include a special
fill value to indicate when the detector was saturated in the 250m version of the data. When the data is aggregated to
coarser resolutions this saturation fill value is converted to a “can’t aggregate” fill value. By default, Satpy will replace
these fill values with NaN to indicate they are invalid. This is typically undesired when generating images for the data
as they appear as “holes” in bright clouds. To control this the keyword argument mask_saturated can be passed and
set to False to set these two fill values to the maximum valid value.

scene = satpy.Scene(filenames=filenames,
reader='modis_l1b',
reader_kwargs={'mask_saturated': False})
scene.load(['2'])

Note that the saturation fill value can appear in other bands (ex. bands 7-19) in addition to band 2. Also, the “can’t
aggregate” fill value is a generic “catch all” for any problems encountered when aggregating high resolution bands to
lower resolutions. Filling this with the max valid value could replace non-saturated invalid pixels with valid values.

Geolocation files

For the 1km data (mod021km) geolocation files (mod03) are optional. If not given to the reader 1km geolocations will
be interpolated from the 5km geolocation contained within the file.
For the 500m and 250m data geolocation files are needed.

References
• Modis gelocation description: http://www.icare.univ-lille1.fr/wiki/index.php/MODIS_geolocation
class satpy.readers.modis_l1b.HDFEOSBandReader(filename, filename_info, filetype_info,
mask_saturated=True, **kwargs)
Bases: HDFEOSBaseFileReader
Handler for the regular band channels.
Init the file handler.
_calibrate_data(key, info, array, var_attrs, index)

_fill_saturated(array, valid_max)
Replace saturation-related values with max reflectance.

2.15. satpy 281


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

If the file handler was created with mask_saturated set to True then all invalid/fill values are set to NaN.
If False then the fill values 65528 and 65533 are set to the maximum valid value. These values correspond
to “can’t aggregate” and “saturation”.
Fill values:
• 65535 Fill Value (includes reflective band data at night mode and completely missing L1A scans)
• 65534 L1A DN is missing within a scan
• 65533 Detector is saturated
• 65532 Cannot compute zero point DN, e.g., SV is saturated
• 65531 Detector is dead (see comments below)
• 65530 RSB dn** below the minimum of the scaling range
• 65529 TEB radiance or RSB dn exceeds the maximum of the scaling range
• 65528 Aggregation algorithm failure
• 65527 Rotation of Earth view Sector from nominal science collection position
• 65526 Calibration coefficient b1 could not be computed
• 65525 Subframe is dead
• 65524 Both sides of the PCLW electronics on simultaneously
• 65501 - 65523 (reserved for future use)
• 65500 NAD closed upper limit
_get_band_index(var_attrs, band_name)
Get the relative indices of the desired channel.
_get_band_variable_name_and_index(band_name)

_mask_invalid(array, valid_min, valid_max)


Replace fill values with NaN.
_mask_uncertain_pixels(array, uncertainty, band_index)

get_dataset(key, info)
Read data from file and return the corresponding projectables.
res = {'1': 1000, 'H': 500, 'Q': 250}

res_to_possible_variable_names = {250: ['EV_250_RefSB'], 500:


['EV_250_Aggr500_RefSB', 'EV_500_RefSB'], 1000: ['EV_250_Aggr1km_RefSB',
'EV_500_Aggr1km_RefSB', 'EV_1KM_RefSB', 'EV_1KM_Emissive']}

class satpy.readers.modis_l1b.MixedHDFEOSReader(filename, filename_info, filetype_info, **kwargs)


Bases: HDFEOSGeoReader, HDFEOSBandReader
A file handler for the files that have both regular bands and geographical information in them.
Init the file handler.
get_dataset(key, info)
Get the dataset.
satpy.readers.modis_l1b.calibrate_bt(array, attributes, index, band_name)
Calibration for the emissive channels.

282 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.modis_l1b.calibrate_counts(array, attributes, index)


Calibration for counts channels.
satpy.readers.modis_l1b.calibrate_radiance(array, attributes, index)
Calibration for radiance channels.
satpy.readers.modis_l1b.calibrate_refl(array, attributes, index)
Calibration for reflective channels.

satpy.readers.modis_l2 module

Modis level 2 hdf-eos format reader.

Introduction

The modis_l2 reader reads and calibrates Modis L2 image data in hdf-eos format. Since there are a multitude of
different level 2 datasets not all of theses are implemented (yet).
Currently the reader supports:
• m[o/y]d35_l2: cloud_mask dataset
• some datasets in m[o/y]d06 files
To get a list of the available datasets for a given file refer to the “Load data” section in Reading.

Geolocation files

Similar to the modis_l1b reader the geolocation files (mod03) for the 1km data are optional and if not given 1km
geolocations will be interpolated from the 5km geolocation contained within the file.
For the 500m and 250m data geolocation files are needed.

References
• Documentation about the format: https://modis-atmos.gsfc.nasa.gov/products
class satpy.readers.modis_l2.ModisL2HDFFileHandler(filename, filename_info, filetype_info, **kwargs)
Bases: HDFEOSGeoReader
File handler for MODIS HDF-EOS Level 2 files.
Includes error handling for files produced by IMAPP produced files.
Initialize the geographical reader.
_extract_and_mask_category_dataset(dataset_id, dataset_info, var_name)

_load_all_metadata_attributes()

_mask_with_quality_assurance_if_needed(dataset, dataset_info, dataset_id)

_select_hdf_dataset(hdf_dataset_name, byte_dimension)
Load a dataset from HDF-EOS level 2 file.
property end_time
Get the end time of the dataset.
get_dataset(dataset_id, dataset_info)
Get DataArray for specified dataset.

2.15. satpy 283


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property is_imapp_mask_byte1
Get if this file is the IMAPP ‘mask_byte1’ file type.
static read_geo_resolution(metadata)
Parse metadata to find the geolocation resolution.
It is implemented as a staticmethod to match read_mda pattern.
property start_time
Get the start time of the dataset.
satpy.readers.modis_l2._bits_strip(bit_start, bit_count, value)
Extract specified bit from bit representation of integer value.
Parameters
• bit_start (int) – Starting index of the bits to extract (first bit has index 0)
• bit_count (int) – Number of bits starting from bit_start to extract
• value (int) – Number from which to extract the bits
• Returns
• ------- – int Value of the extracted bits
satpy.readers.modis_l2._extract_byte_mask(dataset, byte_information, bit_start, bit_count)

satpy.readers.modis_l2._extract_two_byte_mask(data_a: ndarray, data_b: ndarray, bit_start: int,


bit_count: int) → ndarray

satpy.readers.modis_l3 module

Modis level 3 hdf-eos format reader.

Introduction

The modis_l3 reader reads MODIS L3 products in HDF-EOS format.


There are multiple level 3 products, including some on sinusoidal grids and some on the climate modeling grid (CMG).
This reader supports the CMG products at present, and the sinusoidal products will be added if there is demand.
The reader has been tested with:
• MCD43c*: BRDF/Albedo data, such as parameters, albedo and nbar
• MOD09CMG: Surface Reflectance on climate monitoring grid.
To get a list of the available datasets for a given file refer to the “Load data” section in Reading.
class satpy.readers.modis_l3.ModisL3GriddedHDFFileHandler(filename, filename_info, filetype_info,
**kwargs)
Bases: HDFEOSGeoReader
File handler for MODIS HDF-EOS Level 3 CMG gridded files.
Initialize the geographical reader.
_dynamic_variables_from_file(handled_var_names: set) → Iterable[tuple[bool, dict]]

_get_area_extent()
Get the grid properties.

284 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_res()
Compute the resolution from the file metadata.
available_datasets(configured_datasets=None)
Automatically determine datasets provided by this file.
get_area_def(dsid)
Get the area definition.
This is fixed, but not defined in the file. So we must generate it ourselves with some assumptions.
get_dataset(dataset_id, dataset_info)
Get DataArray for specified dataset.

satpy.readers.msi_safe module

SAFE MSI L1C/L2A reader.


The MSI data has a special value for saturated pixels. By default, these pixels are set to np.inf, but for some applications
it might be desirable to have these pixels left untouched. For this case, the mask_saturated flag is available in the reader,
and can be toggled with reader_kwargs upon Scene creation:

scene = satpy.Scene(filenames,
reader='msi_safe',
reader_kwargs={'mask_saturated': False})
scene.load(['B01'])

L1C/L2A format description for the files read here:


https://sentinels.copernicus.eu/documents/247904/685211/S2-PDGS-TAS-DI-PSD-V14.9.pdf/
3d3b6c9c-4334-dcc4-3aa7-f7c0deffbaf7?t=1643013091529
NOTE: At present, L1B data is not supported. If the user needs radiance data instead of counts or reflectances, these
are retrieved by first calculating the reflectance and then working back to the radiance. L1B radiance data support will
be added once the data is published onto the Copernicus data ecosystem.
class satpy.readers.msi_safe.SAFEMSIL1C(filename, filename_info, filetype_info, mda, tile_mda,
mask_saturated=True)
Bases: BaseFileHandler
File handler for SAFE MSI files (jp2).
Initialize the reader.
_read_from_file(key)

property end_time
Get the end time.
get_area_def(dsid)
Get the area def.
get_dataset(key, info)
Load a dataset.
property start_time
Get the start time.

2.15. satpy 285


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.msi_safe.SAFEMSIMDXML(filename, filename_info, filetype_info, mask_saturated=True)


Bases: SAFEMSIXMLMetadata
File handle for sentinel 2 safe XML generic metadata.
Init the reader.
_band_index(band)

_sanitize_data(data)

property band_indices
Get the band indices from the metadata.
band_offset(band)
Get the band offset for band.
property band_offsets
Get the band offsets from the metadata.
calibrate_to_atmospheric(data, band_name)
Calibrate L2A AOT/WVP product.
calibrate_to_radiances(data, solar_zenith, band_name)
Calibrate data to radiance using the radiometric information for the metadata.
calibrate_to_radiances_l1b(data, band_name)
Calibrate data to radiance using the radiometric information for the metadata.
calibrate_to_reflectances(data, band_name)
Calibrate data using the radiometric information for the metadata.
property no_data
Get the nodata value from the metadata.
physical_gain(band_name)
Get the physical gain for a given band_name.
property physical_gains
Get the physical gains dictionary.
property saturated
Get the saturated value from the metadata.
solar_irradiance(band_name)
Get the solar irradiance for a given band_name.
property solar_irradiances
Get the TOA solar irradiance values from the metadata.
property special_values
Get the special values from the metadata.
property sun_earth_dist
Get the sun-earth distance from the metadata.

286 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.msi_safe.SAFEMSITileMDXML(filename, filename_info, filetype_info,


mask_saturated=True)
Bases: SAFEMSIXMLMetadata
File handle for sentinel 2 safe XML tile metadata.
Init the reader.
_area_extent(resolution)

static _do_interp(minterp, xcoord, ycoord)

_get_coarse_dataset(key, info)
Get the coarse dataset refered to by key from the XML data.
_get_satellite_angles(angles, info)

_get_solar_angles(angles, info)

static _get_values_from_tag(xml_tree, xml_tag)

_shape(resolution)

get_area_def(dsid)
Get the area definition of the dataset.
get_dataset(key, info)
Get the dataset referred to by key.
interpolate_angles(angles, resolution)
Interpolate the angles.
property projection
Get the geographic projection.
start_time()
Get the observation time from the tile metadata.
class satpy.readers.msi_safe.SAFEMSIXMLMetadata(filename, filename_info, filetype_info,
mask_saturated=True)
Bases: BaseFileHandler
Base class for SAFE MSI XML metadata filehandlers.
Init the reader.
property end_time
Get end time.
property start_time
Get start time.
satpy.readers.msi_safe._fill_swath_edges(angles)
Fill gaps at edges of swath.

2.15. satpy 287


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.msu_gsa_l1b module

Reader for the Arctica-M1 MSU-GS/A data.


The files for this reader are HDF5 and contain channel data at 1km resolution for the VIS channels and 4km resolution
for the IR channels. Geolocation data is available at both resolutions, as is sun and satellite geometry.
This reader was tested on sample data provided by EUMETSAT.
class satpy.readers.msu_gsa_l1b.MSUGSAFileHandler(filename, filename_info, filetype_info)
Bases: HDF5FileHandler
MSU-GS/A L1B file reader.
Initialize file handler.
static _apply_scale_offset(in_data)
Apply the scale and offset to data.
get_dataset(dataset_id, ds_info)
Load data variable and metadata and calibrate if needed.
property platform_name
Platform name is also hardcoded.
property satellite_altitude
Satellite altitude at time of scan.
There is no documentation but this appears to be height above surface in meters.
property satellite_latitude
Satellite latitude at time of scan.
property satellite_longitude
Satellite longitude at time of scan.
property sensor_name
Sensor name is hardcoded.
property start_time
Time for timeslot scan start.

satpy.readers.mviri_l1b_fiduceo_nc module

FIDUCEO MVIRI FCDR Reader.

Introduction

The FIDUCEO MVIRI FCDR is a Fundamental Climate Data Record (FCDR) of re-calibrated Level 1.5 Infrared,
Water Vapour, and Visible radiances from the Meteosat Visible Infra-Red Imager (MVIRI) instrument onboard the
Meteosat First Generation satellites. There are two variants of the dataset: The full FCDR and a simplified version
called easy FCDR. Some datasets are only available in one of the two variants, see the corresponding YAML definition
in satpy/etc/readers/.

Dataset Names

The FIDUCEO MVIRI readers use names VIS, WV and IR for the visible, water vapor and infrared channels, respec-
tively. These are different from the original netCDF variable names for the following reasons:

288 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• VIS channel is named differently in full FCDR (counts_vis) and easy FCDR
(toa_bidirectional_reflectance_vis)
• netCDF variable names contain the calibration level (e.g. counts_...), which might be confusing for satpy
users if a different calibration level is chosen.
Remaining datasets (such as quality flags and uncertainties) have the same name in the reader as in the netCDF file.

Example:

This is how to read FIDUCEO MVIRI FCDR data in satpy:

from satpy import Scene

scn = Scene(filenames=['FIDUCEO_FCDR_L15_MVIRI_MET7-57.0...'],
reader='mviri_l1b_fiduceo_nc')
scn.load(['VIS', 'WV', 'IR'])

Global netCDF attributes are available in the raw_metadata attribute of each loaded dataset.

Image Orientation

The images are stored in MVIRI scanning direction, that means South is up and East is right. This can be changed as
follows:

scn.load(['VIS'], upper_right_corner='NE')

Geolocation

In addition to the image data, FIDUCEO also provides so called static FCDRs containing latitude and longitude coor-
dinates. In order to simplify their usage, the FIDUCEO MVIRI readers do not make use of these static files, but instead
provide an area definition that can be used to compute longitude and latitude coordinates on demand.

area = scn['VIS'].attrs['area']
lons, lats = area.get_lonlats()

Those were compared to the static FCDR and they agree very well, however there are small differences. The mean
difference is < 1E3 degrees for all channels and projection longitudes.

Huge VIS Reflectances

You might encounter huge VIS reflectances (10^8 percent and greater) in situations where both radiance and solar zenith
angle are small. The reader certainly needs some improvement in this regard. Maybe the corresponding uncertainties
can be used to filter these cases before calculating reflectances.

VIS Channel Quality Flags

Quality flags are available for the VIS channel only. A simple approach for masking bad quality pixels is to set the
mask_bad_quality keyword argument to True:

scn = Scene(filenames=['FIDUCEO_FCDR_L15_MVIRI_MET7-57.0...'],
reader='mviri_l1b_fiduceo_nc',
reader_kwargs={'mask_bad_quality': True})

2.15. satpy 289


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

See FiduceoMviriBase for an argument description. In some situations however the entire image can be flagged
(look out for warnings). In that case check out the quality_pixel_bitmask and data_quality_bitmask datasets
to find out why.

Angles

The FIDUCEO MVIRI FCDR provides satellite and solar angles on a coarse tiepoint grid. By default these datasets
will be interpolated to the higher VIS resolution. This can be changed as follows:

scn.load(['solar_zenith_angle'], resolution=4500)

If you need the angles in both resolutions, use data queries:

from satpy import DataQuery

query_vis = DataQuery(
name='solar_zenith_angle',
resolution=2250
)
query_ir = DataQuery(
name='solar_zenith_angle',
resolution=4500
)
scn.load([query_vis, query_ir])

# Use the query objects to access the datasets as follows


sza_vis = scn[query_vis]

References:

• [Handbook] MFG User Handbook


• [PUG] FIDUCEO MVIRI FCDR Product User Guide
satpy.readers.mviri_l1b_fiduceo_nc.ALTITUDE = 35785860.0
[Handbook] section 5.2.1.
class satpy.readers.mviri_l1b_fiduceo_nc.DatasetAccessor(ds)
Bases: object
Helper class for accessing the dataset.
Performs steps that need to be done each time a variable is accessed, such as renaming “y_*” coordinates to “y”.
Wrap the given dataset.
_rename_dims(data_array)
Rename dataset dimensions to match satpy’s expectations.
_should_dims_be_renamed(data_array)
Determine whether dataset dimensions need to be renamed.
property attrs
Exposes dataset attributes.
get_image_size(resolution)
Get image size for the given resolution.

290 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_xy_coords(resolution)
Get x and y coordinates for the given resolution.
class satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriBase(filename, filename_info, filetype_info,
mask_bad_quality=False)
Bases: BaseFileHandler
Baseclass for FIDUCEO MVIRI file handlers.
Initialize the file handler.
Parameters
mask_bad_quality – Mask VIS pixels with bad quality, that means any quality flag except “ok”.
If you need more control, use the quality_pixel_bitmask and data_quality_bitmask
datasets.
_calibrate(ds, channel, calibration)
Calibrate the given dataset.
abstract _calibrate_vis(ds, channel, calibration)
Calibrate VIS channel. To be implemented by subclasses.
_cleanup_coords(ds)
Cleanup dataset coordinates.
Y/x coordinates have been useful for interpolation so far, but they only contain row/column numbers. Drop
these coordinates so that Satpy can assign projection coordinates upstream (based on the area definition).
_get_acq_time_uncached(resolution)
Get scanline acquisition time for the given resolution.
Note that the acquisition time does not increase monotonically with the scanline number due to the scan
pattern and rectification.
_get_angles_uncached(name, resolution)
Get angle dataset.
Files provide angles (solar/satellite zenith & azimuth) at a coarser resolution. Interpolate them to the desired
resolution.
_get_calib_coefs()
Get calibration coefficients for all channels.
Note: Only coefficients present in both file types.
_get_channel(name, resolution, calibration)
Get and calibrate channel data.
_get_orbital_parameters()
Get the orbital parameters.
_get_other_dataset(name)
Get other datasets such as uncertainties.
_get_projection_longitude(filename_info)
Read projection longitude from filename as it is not provided in the file.
_get_ssp(coord)

2.15. satpy 291


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_ssp_lonlat()
Get longitude and latitude at the subsatellite point.
Easy FCDR files provide satellite position at the beginning and end of the scan. This method computes the
mean of those two values. In the full FCDR the information seems to be missing.
Returns
Subsatellite longitude and latitude
_update_attrs(ds, info)
Update dataset attributes.
get_area_def(dataset_id)
Get area definition of the given dataset.
get_dataset(dataset_id, dataset_info)
Get the dataset.
nc_keys = {'IR': 'count_ir', 'WV': 'count_wv'}

class satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriEasyFcdrFileHandler(filename,
filename_info,
filetype_info,
mask_bad_quality=False)
Bases: FiduceoMviriBase
File handler for FIDUCEO MVIRI Easy FCDR.
Initialize the file handler.
Parameters
mask_bad_quality – Mask VIS pixels with bad quality, that means any quality flag except “ok”.
If you need more control, use the quality_pixel_bitmask and data_quality_bitmask
datasets.
_calibrate_vis(ds, channel, calibration)
Calibrate VIS channel.
Easy FCDR provides reflectance only, no counts or radiance.
nc_keys = {'IR': 'count_ir', 'VIS': 'toa_bidirectional_reflectance_vis', 'WV':
'count_wv'}

class satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriFullFcdrFileHandler(filename,
filename_info,
filetype_info,
mask_bad_quality=False)
Bases: FiduceoMviriBase
File handler for FIDUCEO MVIRI Full FCDR.
Initialize the file handler.
Parameters
mask_bad_quality – Mask VIS pixels with bad quality, that means any quality flag except “ok”.
If you need more control, use the quality_pixel_bitmask and data_quality_bitmask
datasets.
_calibrate_vis(ds, channel, calibration)
Calibrate VIS channel.

292 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_calib_coefs()
Add additional VIS coefficients only present in full FCDR.
nc_keys = {'IR': 'count_ir', 'VIS': 'count_vis', 'WV': 'count_wv'}

class satpy.readers.mviri_l1b_fiduceo_nc.IRWVCalibrator(coefs)
Bases: object
Calibrate IR & WV channels.
Initialize the calibrator.
Parameters
coefs – Calibration coefficients.
_calibrate_rad_bt(counts, calibration)
Calibrate counts to radiance or brightness temperature.
_counts_to_radiance(counts)
Convert IR/WV counts to radiance.
Reference: [PUG], equations (4.1) and (4.2).
_radiance_to_brightness_temperature(rad)
Convert IR/WV radiance to brightness temperature.
Reference: [PUG], equations (5.1) and (5.2).
calibrate(counts, calibration)
Calibrate IR/WV counts to the given calibration.
class satpy.readers.mviri_l1b_fiduceo_nc.Interpolator
Bases: object
Interpolate datasets to another resolution.
static interp_acq_time(time2d, target_y)
Interpolate scanline acquisition time to the given coordinates.
The files provide timestamps per pixel for the low resolution channels (IR/WV) only.
1) Average values in each line to obtain one timestamp per line.
2) For the VIS channel duplicate values in y-direction (as advised by [PUG]).
Note that the timestamps do not increase monotonically with the line number in some cases.
Returns
Mean scanline acquisition timestamps
static interp_tiepoints(ds, target_x, target_y)
Interpolate dataset between tiepoints.
Uses linear interpolation.
FUTURE: [PUG] recommends cubic spline interpolation.
Parameters
• ds – Dataset to be interpolated
• target_x – Target x coordinates
• target_y – Target y coordinates

2.15. satpy 293


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.mviri_l1b_fiduceo_nc.MVIRI_FIELD_OF_VIEW = 18.0
[Handbook] section 5.3.2.1.
class satpy.readers.mviri_l1b_fiduceo_nc.Navigator
Bases: object
Navigate MVIRI images.
_get_factors_offsets(im_size)
Determine line/column offsets and scaling factors.
_get_proj_params(im_size, projection_longitude)
Get projection parameters for the given settings.
get_area_def(im_size, projection_longitude)
Create MVIRI area definition.
class satpy.readers.mviri_l1b_fiduceo_nc.VISCalibrator(coefs, solar_zenith_angle=None)
Bases: object
Calibrate VIS channel.
Initialize the calibrator.
Parameters
• coefs – Calibration coefficients.
• solar_zenith_angle (optional) – Solar zenith angle. Only required for calibration to
reflectance.
_calibrate_rad_refl(counts, calibration)
Calibrate counts to radiance or reflectance.
_counts_to_radiance(counts)
Convert VIS counts to radiance.
Reference: [PUG], equations (7) and (8).
_radiance_to_reflectance(rad)
Convert VIS radiance to reflectance factor.
Note: Produces huge reflectances in situations where both radiance and solar zenith angle are small. Maybe
the corresponding uncertainties can be used to filter these cases before calculating reflectances.
Reference: [PUG], equation (6).
calibrate(counts, calibration)
Calibrate VIS counts.
static refl_factor_to_percent(refl)
Convert reflectance factor to percent.
update_refl_attrs(refl)
Update attributes of reflectance datasets.
class satpy.readers.mviri_l1b_fiduceo_nc.VisQualityControl(mask)
Bases: object
Simple quality control for VIS channel.
Initialize the quality control.

294 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

check()
Check VIS channel quality and issue a warning if it’s bad.
mask(ds)
Mask VIS pixels with bad quality.
Pixels are considered bad quality if the “quality_pixel_bitmask” is everything else than 0 (no flag set).
class satpy.readers.mviri_l1b_fiduceo_nc._DatasetPreprocessor
Bases: object
Helper class for preprocessing the dataset.
_cleanup_attrs(ds)
Cleanup dataset attributes.
_coordinates_not_assigned(data_array)

_decode_cf(ds)
Decode data according to CF conventions.
_decode_time(ds)
Decode time using fill value and offset.
Replace fill values with NaT.
_fix_duplicate_dimensions(ds)
Rename dimensions as duplicate dimensions names are not supported by xarray.
_reassign_coords(ds)
Re-assign coordinates.
For some reason xarray doesn’t assign coordinates to all high resolution data variables. In that case
ds[“varname”] doesn’t have coords, but they’re still in ds.coords.
_rename_vars(ds)
Rename variables to match satpy’s expectations.
preprocess(ds)
Preprocess the given dataset.
satpy.readers.mviri_l1b_fiduceo_nc.is_high_resol(resolution)
Identify high resolution channel.
satpy.readers.mviri_l1b_fiduceo_nc.open_dataset(filename)
Load dataset from the given file.
satpy.readers.mviri_l1b_fiduceo_nc.preprocess_dataset(ds)
Preprocess the given dataset.
Performs steps that can be done once, such as decoding according to CF conventions.

satpy.readers.mwr_l1b module

Reader for the level-1b data from the MWR sounder onboard AWS and EPS-STerna.
AWS = Arctic Weather Satellite. MWR = Microwave Radiometer.
AWS test data provided by ESA August 23, 2023.

2.15. satpy 295


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Sample data for five orbits in September 2024 provided by ESA to the Science Advisory Group for MWS and AWS,
November 26, 2024.
Sample EPS-Sterna l1b format AWS data from 16 orbits the 9th of November 2024.
Continous feed (though restricted to the SAG members and selected European users/evaluators) in the EUMETSAT
Data Store of global AWS data from January 9th, 2025.

Example:

Here is an example how to read the data in satpy:

from satpy import Scene


from glob import glob

filenames = glob("data/W_NO-KSAT-Tromso,SAT,AWS1-MWR-1B-RAD_C_OHB__*_G_O_20250110114708*.
˓→nc"

scn = Scene(filenames=filenames, reader='aws1_mwr_l1b_nc')

composites = ['mw183_humidity']
dataset_names = composites + ['1']

scn.load(dataset_names)
print(scn['1'])
scn.show('mw183_humidity')

As the file format for the EPS Sterna Level-1b is slightly different from the ESA format, reading the EPS Sterna level-1b
data uses a different reader, named eps_sterna_mwr_l1b_nc. So, if specifying the reader name as in the above code
example, please provide the actual name for that data: eps_sterna_mwr_l1b_nc.
class satpy.readers.mwr_l1b.AWS_EPS_Sterna_BaseFileHandler(filename, filename_info, filetype_info,
auto_maskandscale=True)
Bases: NetCDF4FileHandler
Base class implementing the AWS/EPS-Sterna MWR Level-1b&c Filehandlers.
Initialize the handler.
_get_channel_data(dataset_id, dataset_info)

property end_time
Get the end time.
get_dataset(dataset_id, dataset_info)
Get the data.
property orbit_end
Get the orbit number for the end of data.
property orbit_start
Get the orbit number for the start of data.
property platform_name
Get the platform name.
property sensor
Get the sensor name.

296 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property start_time
Get the start time.
class satpy.readers.mwr_l1b.AWS_EPS_Sterna_MWR_L1BFile(filename, filename_info, filetype_info,
auto_maskandscale=True)
Bases: AWS_EPS_Sterna_BaseFileHandler
Class implementing the AWS/EPS-Sterna MWR L1b Filehandler.
Initialize the handler.
_get_navigation_data(dataset_id, dataset_info)
Get the navigation (geolocation) data for one feed horn.
get_dataset(dataset_id, dataset_info)
Get the data.
property sub_satellite_latitude_end
Get the latitude of sub-satellite point at end of the product.
property sub_satellite_latitude_start
Get the latitude of sub-satellite point at start of the product.
property sub_satellite_longitude_end
Get the longitude of sub-satellite point at end of the product.
property sub_satellite_longitude_start
Get the longitude of sub-satellite point at start of the product.
satpy.readers.mwr_l1b.mask_and_scale(data_array)
Mask then scale the data array.

satpy.readers.mwr_l1c module

Reader for the Arctic Weather Satellite (AWS) MWR level-1c data.
MWR = Microwave Radiometer, onboard AWS and EPS-Sterna
Sample data provided by ESA September 27, 2024.

Example:

Here is an example how to read the data in satpy:

from satpy import Scene


from glob import glob

filenames = glob("data/W_XX-OHB-Stockholm,SAT,AWS1-MWR-1C-RAD_C_OHB_*20240913204851_*.nc
˓→")

scn = Scene(filenames=filenames, reader='aws1_mwr_l1c_nc')

composites = ['mw183_humidity']
dataset_names = composites + ['1']

scn.load(dataset_names)
print(scn['1'])
scn.show('mw183_humidity')

2.15. satpy 297


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.mwr_l1c.AWS_MWR_L1CFile(filename, filename_info, filetype_info,


auto_maskandscale=True)
Bases: AWS_EPS_Sterna_BaseFileHandler
Class implementing the AWS L1c Filehandler.
This class implements the ESA Arctic Weather Satellite (AWS) Level-1b NetCDF reader. It is designed to be
used through the Scene class using the load method with the reader "aws_l1c_nc".
Initialize the handler.
_get_navigation_data(dataset_id, dataset_info)
Get the navigation (geolocation) data.
get_dataset(dataset_id, dataset_info)
Get the data.
property sensor
Get the sensor name.

satpy.readers.mws_l1b module

Reader for the EPS-SG Microwave Sounder (MWS) level-1b data.


Documentation: https://www.eumetsat.int/media/44139
class satpy.readers.mws_l1b.MWSL1BFile(filename, filename_info, filetype_info)
Bases: NetCDF4FileHandler
Class implementing the EPS-SG-A1 MWS L1b Filehandler.
This class implements the European Polar System Second Generation (EPS-SG) Microwave Sounder (MWS)
Level-1b NetCDF reader. It is designed to be used through the Scene class using the load method with the
reader "mws_l1b_nc".
Initialize file handler.
static _drop_coords(variable)
Drop coords that are not in dims.
_get_dataset_aux_data(dsname)
Get the auxiliary data arrays using the index map.
_get_dataset_channel(key, dataset_info)
Load dataset corresponding to channel measurement.
Load a dataset when the key refers to a measurand, whether uncalibrated (counts) or calibrated in terms of
brightness temperature or radiance.
_get_global_attributes()
Create a dictionary of global attributes.
_get_quality_attributes()
Get quality attributes.
_manage_attributes(variable, dataset_info)
Manage attributes of the dataset.
_platform_name_translate = {'SGA1': 'Metop-SG-A1', 'SGA2': 'Metop-SG-A2', 'SGA3':
'Metop-SG-A3'}

298 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

static _standardize_dims(variable)
Standardize dims to y, x.
property end_time
Get end time.
get_dataset(dataset_id, dataset_info)
Get dataset using file_key in dataset_info.
property platform_name
Get the platform name.
property sensor
Get the sensor name.
property start_time
Get start time.
property sub_satellite_latitude_end
Get the latitude of sub-satellite point at end of the product.
property sub_satellite_latitude_start
Get the latitude of sub-satellite point at start of the product.
property sub_satellite_longitude_end
Get the longitude of sub-satellite point at end of the product.
property sub_satellite_longitude_start
Get the longitude of sub-satellite point at start of the product.
satpy.readers.mws_l1b._get_aux_data_name_from_dsname(dsname)

satpy.readers.mws_l1b.get_channel_index_from_name(chname)
Get the MWS channel index from the channel name.

satpy.readers.netcdf_utils module

Helpers for reading netcdf-based files.


class satpy.readers.netcdf_utils.NetCDF4FileHandler(filename, filename_info, filetype_info,
auto_maskandscale=False,
xarray_kwargs=None, cache_var_size=0,
cache_handle=False)
Bases: BaseFileHandler
Small class for inspecting a NetCDF4 file and retrieving its metadata/header data.
File information can be accessed using bracket notation. Variables are accessed by using:
wrapper[“var_name”]
Or:
wrapper[“group/subgroup/var_name”]
Attributes can be accessed by appending “/attr/attr_name” to the item string:
wrapper[“group/subgroup/var_name/attr/units”]
Or for global attributes:

2.15. satpy 299


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

wrapper[“/attr/platform_short_name”]
Or for all of global attributes:
wrapper[“/attrs”]
Note that loading datasets requires reopening the original file (unless those datasets are cached, see below), but
to get just the shape of the dataset append “/shape” to the item string:
wrapper[“group/subgroup/var_name/shape”]
If your file has many small data variables that are frequently accessed, you may choose to cache some of them.
You can do this by passing a number, any variable smaller than this number in bytes will be read into RAM.
Warning, this part of the API is provisional and subject to change.
You may get an additional speedup by passing cache_handle=True. This will keep the netCDF4 dataset handles
open throughout the lifetime of the object, and instead of using xarray.open_dataset to open every data variable,
a dask array will be created “manually”. This may be useful if you have a dataset distributed over many files,
such as for FCI. Note that the coordinates will be missing in this case. If you use this option, xarray_kwargs
will have no effect.
Parameters
• filename (str) – File to read
• filename_info (dict) – Dictionary with filename information
• filetype_info (dict) – Dictionary with filetype information
• auto_maskandscale (bool) – Apply mask and scale factors
• xarray_kwargs (dict) – Addition arguments to xarray.open_dataset
• cache_var_size (int) – Cache variables smaller than this size.
• cache_handle (bool) – Keep files open for lifetime of filehandler.
Initialize object.
_collect_attrs(name, obj)
Collect all the attributes for the provided file object.
_collect_cache_var_names(cache_var_size)

_collect_global_attrs(obj)
Collect all the global attributes for the provided file object.
_collect_groups_info(base_name, obj)

_collect_listed_variables(file_handle, listed_variables)

_collect_variable_info(var_name, var_obj)

_collect_variables_info(base_name, obj)

_get_attr(obj, key)

_get_attr_value(obj, key)

_get_file_handle()

_get_group(key, val)
Get a group from the netcdf file.

300 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_object_attrs(obj)

static _get_required_variable_names(listed_variables, variable_name_replacements)

_get_var_from_filehandle(group, key)

_get_var_from_xr(group, key)

_get_variable(key, val)
Get a variable from the netcdf file.
static _set_file_handle_auto_maskandscale(file_handle, auto_maskandscale)

_set_xarray_kwargs(xarray_kwargs, auto_maskandscale)

collect_cache_vars(cache_var_size)
Collect data variables for caching.
This method will collect some data variables and store them in RAM. This may be useful if some small
variables are frequently accessed, to prevent needlessly frequently opening and closing the file, which in
case of xarray is associated with some overhead.
Should be called later than collect_metadata.
Parameters
cache_var_size (int) – Maximum size of the collected variables in bytes
collect_dimensions(name, obj)
Collect dimensions.
collect_metadata(name, obj)
Collect all file variables and attributes for the provided file object.
This method also iterates through subgroups of the provided object.
file_handle = None

get(item, default=None)
Get item.
get_and_cache_npxr(var_name)
Get and cache variable as DataArray[numpy].
class satpy.readers.netcdf_utils.NetCDF4FsspecFileHandler(filename, filename_info, filetype_info,
auto_maskandscale=False,
xarray_kwargs=None,
cache_var_size=0,
cache_handle=False)
Bases: NetCDF4FileHandler
NetCDF4 file handler using fsspec to read files remotely.
Initialize object.
_collect_cache_var_names(cache_var_size)

_collect_cache_var_names_h5netcdf(cache_var_size)

_get_attr(obj, key)

2.15. satpy 301


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_file_handle()

_get_object_attrs(obj)

_getitem_h5netcdf(key)

satpy.readers.netcdf_utils._compose_replacement_names(variable_name_replacements, var,
variable_names)

satpy.readers.netcdf_utils.get_data_as_xarray(variable)
Get data in variable as xr.DataArray.

satpy.readers.nucaps module

Interface to NUCAPS Retrieval NetCDF files.


NUCAPS stands for NOAA Unique Combined Atmospheric Processing System. NUCAPS retrievals include temper-
ature, moisture, trace gas, and cloud-cleared radiance profiles. Product details can be found at:
https://www.ospo.noaa.gov/Products/atmosphere/soundings/nucaps/
This reader supports both standard NOAA NUCAPS EDRs, and Science EDRs, which are essentially a subset of the
standard EDRs with some additional parameters such as relative humidity and boundary layer temperature.
NUCAPS data is derived from Cross-track Infrared Sounder (CrIS) data, and from Advanced Technology Microwave
Sounder (ATMS) data, instruments onboard Joint Polar Satellite System spacecraft.
class satpy.readers.nucaps.NUCAPSFileHandler(*args, **kwargs)
Bases: NetCDF4FileHandler
File handler for NUCAPS netCDF4 format.
Initialize file handler.
_parse_datetime(datestr)
Parse NUCAPS datetime string.
property end_orbit_number
Return orbit number for the end of the swath.
property end_time
Get end time.
get_dataset(dataset_id, ds_info)
Load data array and metadata for specified dataset.
get_metadata(dataset_id, ds_info)
Get metadata.
get_shape(ds_id, ds_info)
Return data array shape for item specified.
property platform_name
Return standard platform name for the file’s data.
property sensor_names
Return standard sensor or instrument name for the file’s data.
property start_orbit_number
Return orbit number for the beginning of the swath.

302 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property start_time
Get start time.
class satpy.readers.nucaps.NUCAPSReader(config_files, mask_surface=True, mask_quality=True,
**kwargs)
Bases: FileYAMLReader
Reader for NUCAPS NetCDF4 files.
Configure reader behavior.
Parameters
• mask_surface (boolean) – mask anything below the surface pressure
• mask_quality (boolean) – mask anything where the Quality_Flag metadata is != 1.
_abc_impl = <_abc._abc_data object>

_filter_dataset_keys_outside_pressure_levels(dataset_keys, pressure_levels)

load(dataset_keys, previous_datasets=None, pressure_levels=None)


Load data from one or more set of files.
Parameters
pressure_levels – mask out certain pressure levels: True for all levels (min, max) for a
range of pressure levels [. . . ] list of levels to include
load_ds_ids_from_config()
Convert config dataset entries to DataIDs.
Special handling is done to provide level specific datasets for any pressured based datasets. For example,
a dataset is added for each pressure level of ‘Temperature’ with each new dataset being named ‘Tempera-
ture_Xmb’ where X is the pressure level.
satpy.readers.nucaps._get_pressure_level_condition(plevels_ds, pressure_levels)

satpy.readers.nucaps._mask_data_below_surface_pressure(datasets_loaded, dataset_keys)

satpy.readers.nucaps._mask_data_with_quality_flag(datasets_loaded, dataset_keys)

satpy.readers.nucaps._remove_data_at_pressure_levels(datasets_loaded, plevels_ds, pressure_levels)

satpy.readers.nwcsaf_msg2013_hdf5 module

Reader for the old NWCSAF/Geo (v2013 and earlier) cloud product format.

References
• The NWCSAF GEO 2013 products documentation: http://www.nwcsaf.org/web/guest/archive - Search for Code
“ICD/3”; Type “MSG” and the box to the right should say ‘Status’ (which means any status). Version 7.0 seems
to be for v2013
http://www.nwcsaf.org/aemetRest/downloadAttachment/2623
class satpy.readers.nwcsaf_msg2013_hdf5.Hdf5NWCSAF(filename, filename_info, filetype_info)
Bases: HDF5FileHandler
NWCSAF MSG hdf5 reader.
Init method.

2.15. satpy 303


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_area_def(dsid)
Get the area definition of the datasets in the file.
get_dataset(dataset_id, ds_info)
Load a dataset.
property start_time
Return the start time of the object.
satpy.readers.nwcsaf_msg2013_hdf5.get_area_extent(cfac, lfac, coff , loff , numcols, numlines)
Get the area extent from msg parameters.

satpy.readers.nwcsaf_nc module

Nowcasting SAF common PPS&MSG NetCDF/CF format reader.

References
• The NWCSAF GEO 2018 products documentation: http://www.nwcsaf.org/web/guest/archive
class satpy.readers.nwcsaf_nc.NcNWCSAF(filename, filename_info, filetype_info)
Bases: BaseFileHandler
NWCSAF PPS&MSG NetCDF reader.
Init method.
_adjust_variable_for_legacy_software(variable)

static _ensure_crs_extents_in_meters(crs, area_extent)


Fix units in Earth shape, satellite altitude and ‘units’ attribute.
_get_filekeys(dsid_name, info)

_get_projection()
Get projection from the NetCDF4 attributes.
_get_varname_in_file(info, info_type='file_key')

static _mask_variable(variable)

_prepare_variable_for_palette(variable, info)

_upsample_geolocation_uncached()
Upsample the geolocation (lon,lat) from the tiepoint grid.
drop_xycoords(variable)
Drop x, y coords when y is scan line number.
property end_time
Return the end time of the object.
get_area_def(dsid)
Get the area definition of the datasets in the file.
Only applicable for MSG products!
get_dataset(dsid, info)
Load a dataset.

304 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_orbital_parameters(variable)
Get the orbital parameters from the file if possible (geo).
remove_timedim(var)
Remove time dimension from dataset.
scale_dataset(variable, info)
Scale the data set, applying the attributes from the netCDF file.
The scale and offset attributes will then be removed from the resulting variable.
property sensor_names
List of sensors represented in this file.
set_platform_and_sensor(**kwargs)
Set some metadata: platform_name, sensors, and pps (identifying PPS or Geo).
property start_time
Return the start time of the object.
satpy.readers.nwcsaf_nc.read_nwcsaf_time(time_value)
Read the time, nwcsaf-style.
satpy.readers.nwcsaf_nc.remove_empties(variable)
Remove empty objects from the variable’s attrs.

satpy.readers.oceancolorcci_l3_nc module

Reader for files produced by ESA’s Ocean Color CCI project.


This reader currently supports the lat/lon gridded products and does not yet support the products on a sinusoidal grid.
The products on each of the composite periods (1, 5 and 8 day plus monthly) are supported and both the merged product
files (OC_PRODUCTS) and single product (RRS, CHLOR_A, IOP, K_490) are supported.
class satpy.readers.oceancolorcci_l3_nc.OCCCIFileHandler(filename, filename_info, filetype_info,
auto_maskandscale=False,
xarray_kwargs=None, cache_var_size=0,
cache_handle=False)
Bases: NetCDF4FileHandler
File handler for Ocean Color CCI netCDF files.
Initialize object.
static _parse_datetime(datestr)
Parse datetime.
_update_attrs(dataset, dataset_info)
Update dataset attributes.
property composite_period
Determine composite period from filename information.
property end_time
Get the end time.

2.15. satpy 305


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_area_def(dsid)
Get the area definition based on information in file.
There is no area definition in the file itself, so we have to compute it from the metadata, which specifies the
area extent and pixel resolution.
get_dataset(dataset_id, ds_info)
Get dataset.
property start_time
Get the start time.

satpy.readers.olci_nc module

Sentinel-3 OLCI reader.


This reader supports an optional argument to choose the ‘engine’ for reading OLCI netCDF4 files. By default, this
reader uses the default xarray choice of engine, as defined in the xarray.open_dataset() documentation`.
As an alternative, the user may wish to use the ‘h5netcdf’ engine, but that is not default as it typically prints many
non-fatal but confusing error messages to the terminal. To choose between engines the user can do as follows for the
default:

scn = Scene(filenames=my_files, reader='olci_l1b')

or as follows for the h5netcdf engine:

scn = Scene(filenames=my_files,
reader='olci_l1b', reader_kwargs={'engine': 'h5netcdf'})

References
• xarray.open_dataset()
class satpy.readers.olci_nc.BitFlags(value, flag_list=None)
Bases: object
Manipulate flags stored bitwise.
Init the flags.
class satpy.readers.olci_nc.NCOLCI1B(filename, filename_info, filetype_info, cal=None, engine=None,
mask_items=None)
Bases: NCOLCIChannelBase
File handler for OLCI l1b.
Init the file handler.
static _get_items(idx, solar_flux)
Get items.
_get_solar_flux(band)
Get the solar flux for the band.
get_dataset(key, info)
Load a dataset.

306 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

getbitmask(quality_flags, items=None)
Get the quality flags bitmask.
class satpy.readers.olci_nc.NCOLCI2(filename, filename_info, filetype_info, engine=None, unlog=False,
mask_items=None)
Bases: NCOLCIChannelBase
File handler for OLCI l2.
Init the file handler.
delog(data_array)
Remove log10 from the units and values.
get_dataset(key, info)
Load a dataset.
getbitmask(wqsf , items=None)
Get the bitmask.
class satpy.readers.olci_nc.NCOLCIAngles(filename, filename_info, filetype_info, engine=None, **kwargs)
Bases: NCOLCILowResData
File handler for the OLCI angles.
Init the file handler.
_interpolate_angles(azi, zen)

datasets = {'satellite_azimuth_angle': 'OAA', 'satellite_zenith_angle': 'OZA',


'solar_azimuth_angle': 'SAA', 'solar_zenith_angle': 'SZA'}

get_dataset(key, info)
Load a dataset.
property satellite_angles
Return the satellite angles.
property sun_angles
Return the sun angles.
class satpy.readers.olci_nc.NCOLCIBase(filename, filename_info, filetype_info, engine=None, **kwargs)
Bases: BaseFileHandler
The OLCI reader base.
Init the olci reader base.
cols_name = 'columns'

property end_time
End time property.
get_dataset(key, info)
Load a dataset.
property nc
Get the nc xr dataset.
rows_name = 'rows'

2.15. satpy 307


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property start_time
Start time property.
class satpy.readers.olci_nc.NCOLCICal(filename, filename_info, filetype_info, engine=None, **kwargs)
Bases: NCOLCIBase
Dummy class for calibration.
Init the olci reader base.
class satpy.readers.olci_nc.NCOLCIChannelBase(filename, filename_info, filetype_info, engine=None)
Bases: NCOLCIBase
Base class for channel reading.
Init the file handler.
class satpy.readers.olci_nc.NCOLCIGeo(filename, filename_info, filetype_info, engine=None, **kwargs)
Bases: NCOLCIBase
Dummy class for navigation.
Init the olci reader base.
class satpy.readers.olci_nc.NCOLCILowResData(filename, filename_info, filetype_info, engine=None,
**kwargs)
Bases: NCOLCIBase
Handler for low resolution data.
Init the file handler.
_do_interpolate(data)

property _need_interpolation

property c_step
Get the column step.
cols_name = 'tie_columns'

property l_step
Get the line step.
rows_name = 'tie_rows'

class satpy.readers.olci_nc.NCOLCIMeteo(filename, filename_info, filetype_info, engine=None)


Bases: NCOLCILowResData
File handler for the OLCI meteo data.
Init the file handler.
datasets = ['humidity', 'sea_level_pressure', 'total_columnar_water_vapour',
'total_ozone']

get_dataset(key, info)
Load a dataset.

308 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.oli_tirs_l1_tif module

Landsat OLI/TIRS Level 1 reader.


Details of the data format can be found here:
https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/
LSDS-1822_Landsat8-9-OLI-TIRS-C2-L1-DFCB-v6.pdf https://www.usgs.gov/landsat-missions/
using-usgs-landsat-level-1-data-product
NOTE: The scene geometry data (SZA, VZA, SAA, VAA) is retrieved from the L1 TIFF files, which are derived from
Band 04. The geometry differs between bands, so if you need precise geometry you should calculate this from the
metadata instead.
class satpy.readers.oli_tirs_l1_tif.OLITIRSCHReader(filename, filename_info, filetype_info, mda,
**kwargs)
Bases: BaseFileHandler
File handler for Landsat L1 files (tif).
Initialize the reader.
calibrate(data, calibration)
Calibrate the data from counts into the desired units.
property end_time
Return end time.
get_area_def(dsid)
Get area definition of the image from the metadata.
static get_btype(file_type)
Return the band type from the file type.
get_dataset(key, info)
Load a dataset.
property start_time
Return start time.
class satpy.readers.oli_tirs_l1_tif.OLITIRSMDReader(filename, filename_info, filetype_info)
Bases: BaseFileHandler
File handler for Landsat L1 files (tif).
Init the reader.
_get_band_radcal(band)
Get the radiance scale and offset values.
_get_band_tircal(band)
Return thermal channel calibration info.
_get_band_viscal(band)
Return visible channel calibration info.
_get_satflag(band)
Return saturation flag for a band.
property band_calibration
Return per-band saturation flag.

2.15. satpy 309


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property band_saturation
Return per-band saturation flag.
build_area_def(bname)
Build area definition from metadata.
property center_time
Return center time.
property cloud_cover
Return estimated granule cloud cover percentage.
earth_sun_distance()
Return Earth-Sun distance.
property end_time
Return end time.
This is actually the scene center time, as we don’t have the end time. It is constructed from the observation
date (from the filename) and the center time (from the metadata).
property start_time
Return start time.
This is actually the scene center time, as we don’t have the start time. It is constructed from the observation
date (from the filename) and the center time (from the metadata).

satpy.readers.omps_edr module

Interface to OMPS EDR format.


class satpy.readers.omps_edr.EDREOSFileHandler(filename, filename_info, filetype_info)
Bases: EDRFileHandler
EDR EOS file handler.
Initialize file handler.
_fill_name = 'MissingValue'

class satpy.readers.omps_edr.EDRFileHandler(filename, filename_info, filetype_info)


Bases: HDF5FileHandler
EDR file handler.
Initialize file handler.
_fill_name = '_FillValue'

adjust_scaling_factors(factors, file_units, output_units)


Adjust scaling factors.
property end_orbit_number
Get the end orbit number.
get_dataset(dataset_id, ds_info)
Get the dataset.
get_metadata(dataset_id, ds_info)
Get the metadata.

310 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_shape(ds_id, ds_info)
Get the shape.
property platform_name
Get the platform name.
property sensor_name
Get the sensor name.
property start_orbit_number
Get the start orbit number.

satpy.readers.osisaf_l3_nc module

A reader for OSI-SAF level 3 products in netCDF format.


class satpy.readers.osisaf_l3_nc.OSISAFL3NCFileHandler(filename, filename_info, filetype_info,
auto_maskandscale=False,
xarray_kwargs=None, cache_var_size=0,
cache_handle=False)
Bases: NetCDF4FileHandler
Reader for the OSISAF l3 netCDF format.
Initialize object.
_get_ds_units(ds_info, var_path)
Find the units of the datasets.
_get_ease_grid()
Set up the EASE grid.
_get_finfo_grid()
Get grid in case of filename info being used.
_get_ftype_grid()
Get grid in case of filetype info being used.
_get_geographic_grid()
Set up the EASE grid.
_get_instname()
Get instrument name.
_get_platname()
Get platform name.
_get_polar_stereographic_grid()
Set up the polar stereographic grid.
static _parse_datetime(datestr)

property end_time
Get the end time.
get_area_def(area_id)
Get the area definition, which varies depending on file type and structure.

2.15. satpy 311


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_dataset(dataset_id, ds_info)
Load a dataset.
property start_time
Get the start time.

satpy.readers.pmw_channels_definitions module

Passive Microwave instrument and channel specific features.


class satpy.readers.pmw_channels_definitions.FrequencyBandBaseArithmetics
Bases: object
Mixin class with basic frequency comparison operations.
classmethod convert(frq)
Convert frq to this type if possible.
class satpy.readers.pmw_channels_definitions.FrequencyDoubleSideBand(central: float, side: float,
bandwidth: float, unit: str
= 'GHz')
Bases: FrequencyBandBaseArithmetics, FrequencyDoubleSideBandBase
The frequency double side band class.
The elements of the double-side-band type frequency band are the central frquency, the relative side band fre-
quency (relative to the center - left and right) and their bandwidths, and optionally a unit (defaults to GHz). No
clever unit conversion is done here, it’s just used for checking that two ranges are comparable.
Frequency Double Side Band is supposed to describe the special type of bands commonly used in humidty
sounding from Passive Microwave Sensors. When the absorption band being observed is symmetrical it is ad-
vantageous (giving better NeDT) to sense in a band both right and left of the central absorption frequency.
Create new instance of FrequencyDoubleSideBandBase(central, side, bandwidth, unit)
static _check_band_contains_other(band, other_band)
Check that a band contains another band.
A band is here defined as a tuple of a central frequency and a bandwidth.
distance(value)
Get the distance to the double side band.
Determining the distance in frequency space between two double side bands can be quite ambiguous, as
such bands are in effect a set of 2 narrow bands, one on each side of the absorption line. To keep it as simple
as possible we have until further decided to set the distance between such two bands to infitiy if neither of
them are contained in the other.
If the frequency entered is a single value and this frequency falls inside one of the side bands, the distance
will be the minimum of the distances to the two outermost sides of the double side band. However, is such
a single frequency value falls outside one of the two side bands, the distance will be set to infitiy.
If the frequency entered is a tuple the distance will either be 0 (if one is containde in the other) or infinity.
class satpy.readers.pmw_channels_definitions.FrequencyDoubleSideBandBase(central: float, side:
float, bandwidth:
float, unit: str =
'GHz')
Bases: NamedTuple

312 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Base class for a frequency double side band.


Frequency Double Side Band is supposed to describe the special type of bands commonly used in humidty
sounding from Passive Microwave Sensors. When the absorption band being observed is symmetrical it is ad-
vantageous (giving better NeDT) to sense in a band both right and left of the central absorption frequency.
This is needed because of this bug: https://bugs.python.org/issue41629
Create new instance of FrequencyDoubleSideBandBase(central, side, bandwidth, unit)
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {'unit': 'GHz'}

_fields = ('central', 'side', 'bandwidth', 'unit')

classmethod _make(iterable)
Make a new FrequencyDoubleSideBandBase object from a sequence or iterable
_replace(**kwds)
Return a new FrequencyDoubleSideBandBase object replacing specified fields with new values
bandwidth: float
Alias for field number 2
central: float
Alias for field number 0
side: float
Alias for field number 1
unit: str
Alias for field number 3
class satpy.readers.pmw_channels_definitions.FrequencyQuadrupleSideBand(central: float, side:
float, sideside: float,
bandwidth: float, unit:
str = 'GHz')
Bases: FrequencyBandBaseArithmetics, FrequencyQuadrupleSideBandBase
The frequency quadruple side band class.
The elements of the quadruple-side-band type frequency band are the central frquency, the relative (main) side
band frequency (relative to the center - left and right), the sub-side band frequency (relative to the offset side-
band(s)) and their bandwidths. Optionally a unit (defaults to GHz) may be specified. No clever unit conversion
is done here, it’s just used for checking that two ranges are comparable.
Frequency Quadruple Side Band is supposed to describe the special type of bands commonly used in tempera-
ture sounding from Passive Microwave Sensors. When the absorption band being observed is symmetrical it is
advantageous (giving better NeDT) to sense in a band both right and left of the central absorption frequency. But
to avoid (CO2) absorption lines symmetrically positioned on each side of the main absorption band it is common
to split the side bands in two ‘side-side’ bands.
Create new instance of FrequencyQuadrupleSideBandBase(central, side, sideside, bandwidth, unit)
distance(value)
Get the distance to the quadruple side band.
Determining the distance in frequency space between two quadruple side bands can be quite ambiguous,
as such bands are in effect a set of 4 narrow bands, two on each side of the main absorption band, and on

2.15. satpy 313


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

each side, one on each side of the secondary absorption lines. To keep it as simple as possible we have until
further decided to define the distance between such two bands to infinity if they are determined to be equal.
If the frequency entered is a single value, the distance will be the minimum of the distances to the two
outermost sides of the quadruple side band.
If the frequency entered is a tuple or list and the two quadruple frequency bands are contained in each other
(equal) the distance will always be zero.
class satpy.readers.pmw_channels_definitions.FrequencyQuadrupleSideBandBase(central: float,
side: float,
sideside: float,
bandwidth: float,
unit: str =
'GHz')
Bases: NamedTuple
Base class for a frequency quadruple side band.
Frequency Quadruple Side Band is supposed to describe the special type of bands commonly used in tempera-
ture sounding from Passive Microwave Sensors. When the absorption band being observed is symmetrical it is
advantageous (giving better NeDT) to sense in a band both right and left of the central absorption frequency. But
to avoid (CO2) absorption lines symmetrically positioned on each side of the main absorption band it is common
to split the side bands in two ‘side-side’ bands.
This is needed because of this bug: https://bugs.python.org/issue41629
Create new instance of FrequencyQuadrupleSideBandBase(central, side, sideside, bandwidth, unit)
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {'unit': 'GHz'}

_fields = ('central', 'side', 'sideside', 'bandwidth', 'unit')

classmethod _make(iterable)
Make a new FrequencyQuadrupleSideBandBase object from a sequence or iterable
_replace(**kwds)
Return a new FrequencyQuadrupleSideBandBase object replacing specified fields with new values
bandwidth: float
Alias for field number 3
central: float
Alias for field number 0
side: float
Alias for field number 1
sideside: float
Alias for field number 2
unit: str
Alias for field number 4
class satpy.readers.pmw_channels_definitions.FrequencyRange(central: float, bandwidth: float, unit:
str = 'GHz')

314 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Bases: FrequencyBandBaseArithmetics, FrequencyRangeBase


The Frequency range class.
The elements of the range are central and bandwidth values, and optionally a unit (defaults to GHz). No clever
unit conversion is done here, it’s just used for checking that two ranges are comparable.
This type is used for passive microwave sensors.
Create new instance of FrequencyRangeBase(central, bandwidth, unit)
distance(value)
Get the distance from value.
class satpy.readers.pmw_channels_definitions.FrequencyRangeBase(central: float, bandwidth: float,
unit: str = 'GHz')
Bases: NamedTuple
Base class for frequency ranges.
This is needed because of this bug: https://bugs.python.org/issue41629
Create new instance of FrequencyRangeBase(central, bandwidth, unit)
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {'unit': 'GHz'}

_fields = ('central', 'bandwidth', 'unit')

classmethod _make(iterable)
Make a new FrequencyRangeBase object from a sequence or iterable
_replace(**kwds)
Return a new FrequencyRangeBase object replacing specified fields with new values
bandwidth: float
Alias for field number 1
central: float
Alias for field number 0
unit: str
Alias for field number 2
satpy.readers.pmw_channels_definitions._is_inside_interval(value, central, width)

satpy.readers.safe_sar_l2_ocn module

SAFE SAR L2 OCN format reader.


The OCN data contains various parameters, but mainly the wind speed and direction calculated from SAR data and
input model data from ECMWF
Implemented in this reader is the OWI, Ocean Wind field.
See more at ESA webpage https://sentinel.esa.int/web/sentinel/ocean-wind-field-component

2.15. satpy 315


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.safe_sar_l2_ocn.SAFENC(filename, filename_info, filetype_info)


Bases: BaseFileHandler
Measurement file reader.
Init the file reader.
_get_data_channels(key, info)

property end_time
Product end_time, parsed from the measurement file name.
property fend_time
Product fend_time meaning the end time parsed from the SAFE directory.
property fstart_time
Product fstart_time meaning the start time parsed from the SAFE directory.
get_dataset(key, info)
Load a dataset.
property start_time
Product start_time, parsed from the measurement file name.

satpy.readers.sar_c_safe module

SAFE SAR-C reader.


This module implements a reader for Sentinel 1 SAR-C GRD (level1) SAFE format as provided by ESA. The format
is comprised of a directory containing multiple files, most notably two measurement files in geotiff and a few xml files
for calibration, noise and metadata.

References
• Level 1 Product Formatting https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-1-sar/
products-algorithms/level-1-product-formatting
• J. Park, A. A. Korosov, M. Babiker, S. Sandven and J. Won, “Efficient Thermal Noise Removal for Sentinel-1
TOPSAR Cross-Polarization Channel,” in IEEE Transactions on Geoscience and Remote Sensing, vol. 56, no.
3, pp. 1555-1565, March 2018. doi: 10.1109/TGRS.2017.2765248
class satpy.readers.sar_c_safe.AzimuthNoiseReader(root, shape)
Bases: object
Class to parse and read azimuth-noise data.
The azimuth noise vector is provided as a series of blocks, each comprised of a column of data to fill the block
and a start and finish column number, and a start and finish line. For example, we can see here a (fake) azimuth
noise array:

[[ 1. 1. 1. nan nan nan nan nan nan nan]


[ 1. 1. 1. nan nan nan nan nan nan nan]
[ 2. 2. 3. 3. 3. 4. 4. 4. 4. nan]
[ 2. 2. 3. 3. 3. 4. 4. 4. 4. nan]
[ 2. 2. 3. 3. 3. 4. 4. 4. 4. nan]
[ 2. 2. 5. 5. 5. 5. 6. 6. 6. 6.]
[ 2. 2. 5. 5. 5. 5. 6. 6. 6. 6.]
[ 2. 2. 5. 5. 5. 5. 6. 6. 6. 6.]
(continues on next page)

316 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


[ 2. 2. 7. 7. 7. 7. 7. 8. 8. 8.]
[ 2. 2. 7. 7. 7. 7. 7. 8. 8. 8.]]

As is shown here, the blocks may not cover the full array, and hence it has to be gap-filled with NaNs.
Set up the azimuth noise reader.
_assemble_azimuth_noise_blocks(chunks)
Assemble the azimuth noise blocks into one single array.
_create_dask_slice_from_block_line(current_line, chunks)
Create a dask slice from the blocks at the current line.
_create_dask_slices_from_blocks(chunks)
Create full-width slices from azimuth noise blocks.
static _fill_dask_pieces(dask_pieces, shape, chunks)

_find_blocks_covering_line(current_line)
Find the blocks covering a given line.
_get_array_pieces_for_current_line(current_line)
Get the array pieces that cover the current line.
_get_next_start_line(current_blocks, current_line)

_get_padded_dask_pieces(pieces, chunks)
Get the padded pieces of a slice.
_read_azimuth_noise_blocks(chunks)
Read the azimuth noise blocks.
read_azimuth_noise_array(chunks=4096)
Read the azimuth noise vectors.
class satpy.readers.sar_c_safe.Calibrator(filename, filename_info, filetype_info, header_file=None,
image_shape=None)
Bases: SAFEXML
XML file reader for the SAFE format, Calibration file.
Init the XML calibration reader.
_get_calibration_uncached(calibration, chunks=None)
Get the calibration array.
_get_calibration_vector(calibration_name, chunks)
Get the calibration vector.
get_calibration_constant()
Load the calibration constant.
get_dataset(key, info, chunks=None)
Load a dataset.

2.15. satpy 317


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.sar_c_safe.Denoiser(filename, filename_info, filetype_info, header_file=None,


image_shape=None)
Bases: SAFEXML
XML file reader for the SAFE format, Noise file.
Init the xml filehandler.
_get_noise_correction_uncached(chunks=None)
Get the noise correction array.
get_dataset(key, info, chunks=None)
Load a dataset.
read_legacy_noise(chunks)
Read noise for legacy GRD data.
read_range_noise_array(chunks)
Read the range-noise array.
class satpy.readers.sar_c_safe.SAFEGRD(filename, filename_info, filetype_info, calibrator, denoiser)
Bases: BaseFileHandler
Measurement file reader.
The measurement files are in geotiff format and read using rasterio. For performance reasons, the reading adapts
the chunk size to match the file’s block size.
Init the grd filehandler.
_calibrate_and_denoise(data, key)
Calibrate and denoise the data.
static _change_quantity(data, quantity)
Change quantity to dB if needed.
property _data

_get_digital_number(data)
Get the digital numbers (uncalibrated data).
_get_lonlatalts_uncached()
Obtain GCPs and construct latitude and longitude arrays.
Parameters
• band (gdal band) – Measurement band which comes with GCP’s
• array_shape (tuple) – The size of the data array
Returns
A tuple with longitude and latitude arrays
Return type
coordinates (tuple)
property end_time
Get the end time.
get_bounding_box()
Get the bounding box for the data coverage.

318 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_dataset(key, info)
Load a dataset.
get_gcps()
Read GCP from the GDAL band.
Parameters
• band (gdal band) – Measurement band which comes with GCP’s
• coordinates (tuple) – A tuple with longitude and latitude arrays
Returns
Pixel and Line indices 1d arrays gcp_coords (tuple): longitude and latitude 1d arrays
Return type
points (tuple)
property start_time
Get the start time.
class satpy.readers.sar_c_safe.SAFESARReader(config, filter_parameters=None)
Bases: GenericYAMLReader
A reader for SAFE SAR-C data for Sentinel 1 satellites.
Set up the SAR reader.
_abc_impl = <_abc._abc_data object>

_create_calibrators(image_shapes)

_create_denoisers(image_shapes)

_create_measurement_handlers(calibrators, denoisers)

_get_files_by_type(files)

_get_image_shapes()

create_storage_items(files, **kwargs)
Create the storage items.
property end_time
Get the end time.
load(dataset_keys, **kwargs)
Load some data.
property start_time
Get the start time.
class satpy.readers.sar_c_safe.SAFEXML(filename, filename_info, filetype_info, header_file=None,
image_shape=None)
Bases: BaseFileHandler
XML file reader for the SAFE format.
Init the xml filehandler.
property end_time
Get the end time.

2.15. satpy 319


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_metadata()
Convert the xml metadata to dict.
property start_time
Get the start time.
class satpy.readers.sar_c_safe.SAFEXMLAnnotation(filename, filename_info, filetype_info,
header_file=None)
Bases: SAFEXML
XML file reader for the SAFE format, Annotation file.
Init the XML annotation reader.
_get_incidence_angle_uncached(chunks)
Get the incidence angle array.
get_dataset(key, info, chunks=None)
Load a dataset.
property image_shape
Return the image shape of this dataset.
class satpy.readers.sar_c_safe.XMLArray(root, list_tag, element_tag)
Bases: object
A proxy for getting xml data as an array.
Set up the XML array.
_read_xml_array()
Read an array from xml.
expand(shape, chunks=None)
Generate the full-blown array.
get_data_items()
Get the data items for this array.
interpolate_xml_array(shape, chunks)
Interpolate arbitrary size dataset to a full sized grid.
class satpy.readers.sar_c_safe._AzimuthBlock(xml_element)
Bases: object
Implementation of an single azimuth-noise block.
Set up the block from an XML element.
expand(chunks)
Build an azimuth block from xml data.
property first_line

property first_pixel

property last_line

property last_pixel

320 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property lines

property lut

satpy.readers.sar_c_safe._dictify(r)
Convert an xml element to dict.
satpy.readers.sar_c_safe._get_calibration_name(calibration)
Get the proper calibration name.
satpy.readers.sar_c_safe.dictify(r)
Convert an ElementTree into a dict.
satpy.readers.sar_c_safe.get_gcps_from_array(val)
Get the gcps from the spatial_ref coordinate as a geojson dict.
satpy.readers.sar_c_safe.interpolate_xarray_linear(xpoints, ypoints, values, shape, chunks=4096)
Interpolate linearly, generating a dask array.
satpy.readers.sar_c_safe.intp(grid_x, grid_y, interpolator)
Interpolate.

satpy.readers.satpy_cf_nc module

Reader for files produced with the cf netcdf writer in satpy.

Introduction

The satpy_cf_nc reader reads data written by the satpy cf_writer. Filenames for cf_writer are optional. There are
several readers using the same satpy_cf_nc.py reader.
• Generic reader satpy_cf_nc
• EUMETSAT GAC FDR reader avhrr_l1c_eum_gac_fdr_nc

Generic reader

The generic satpy_cf_nc reader reads files of type:

'{platform_name}-{sensor}-{start_time:%Y%m%d%H%M%S}-{end_time:%Y%m%d%H%M%S}.nc'

Example:

Here is an example how to read the data in satpy:

from satpy import Scene

filenames = ['data/npp-viirs-mband-20201007075915-20201007080744.nc']
scn = Scene(reader='satpy_cf_nc', filenames=filenames)
scn.load(['M05'])
scn['M05']

Output:

2.15. satpy 321


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

<xarray.DataArray 'M05' (y: 4592, x: 3200)>


dask.array<open_dataset-d91cfbf1bf4f14710d27446d91cdc6e4M05, shape=(4592, 3200),
dtype=float32, chunksize=(4096, 3200), chunktype=numpy.ndarray>
Coordinates:
longitude (y, x) float32 dask.array<chunksize=(4096, 3200), meta=np.ndarray>
latitude (y, x) float32 dask.array<chunksize=(4096, 3200), meta=np.ndarray>
Dimensions without coordinates: y, x
Attributes:
start_time: 2020-10-07 07:59:15
start_orbit: 46350
end_time: 2020-10-07 08:07:44
end_orbit: 46350
calibration: reflectance
long_name: M05
modifiers: ('sunz_corrected',)
platform_name: Suomi-NPP
resolution: 742
sensor: viirs
standard_name: toa_bidirectional_reflectance
units: %
wavelength: 0.672µm (0.662-0.682µm)
date_created: 2020-10-07T08:20:02Z
instrument: VIIRS

Notes
Available datasets and attributes will depend on the data saved with the cf_writer.

EUMETSAT AVHRR GAC FDR L1C reader

The avhrr_l1c_eum_gac_fdr_nc reader reads files of type:


''AVHRR-GAC_FDR_1C_{platform}_{start_time:%Y%m%dT%H%M%SZ}_{end_time:%Y%m%dT%H%M%SZ}_
˓→{processing_mode}_{disposition_mode}_{creation_time}_{version_int:04d}.nc'

Example:

Here is an example how to read the data in satpy:


from satpy import Scene

filenames = ['data/AVHRR-GAC_FDR_1C_N06_19810330T042358Z_19810330T060903Z_R_O_
˓→20200101T000000Z_0100.nc']

scn = Scene(reader='avhrr_l1c_eum_gac_fdr_nc', filenames=filenames)


scn.load(['brightness_temperature_channel_4'])
scn['brightness_temperature_channel_4']

Output:

<xarray.DataArray 'brightness_temperature_channel_4' (y: 11, x: 409)>


dask.array<open_dataset-55ffbf3623b32077c67897f4283640a5brightness_temperature_channel_4,
˓→ shape=(11, 409),

dtype=float32, chunksize=(11, 409), chunktype=numpy.ndarray>


(continues on next page)

322 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


Coordinates:
* x (x) int16 0 1 2 3 4 5 6 7 8 ... 401 402 403 404 405 406 407 408
* y (y) int64 0 1 2 3 4 5 6 7 8 9 10
acq_time (y) datetime64[ns] dask.array<chunksize=(11,), meta=np.ndarray>
longitude (y, x) float64 dask.array<chunksize=(11, 409), meta=np.ndarray>
latitude (y, x) float64 dask.array<chunksize=(11, 409), meta=np.ndarray>
Attributes:
start_time: 1981-03-30 04:23:58
end_time: 1981-03-30 06:09:03
calibration: brightness_temperature
modifiers: ()
resolution: 1050
standard_name: toa_brightness_temperature
units: K
wavelength: 10.8µm (10.3-11.3µm)
Conventions: CF-1.8 ACDD-1.3
comment: Developed in cooperation with EUME...
creator_email: [email protected]
creator_name: EUMETSAT
creator_url: https://www.eumetsat.int/
date_created: 2020-09-14T10:50:51.073707
disposition_mode: O
gac_filename: NSS.GHRR.NA.D81089.S0423.E0609.B09...
geospatial_lat_max: 89.95386902434623
geospatial_lat_min: -89.97581969005503
geospatial_lat_resolution: 1050 meters
geospatial_lat_units: degrees_north
geospatial_lon_max: 179.99952992568998
geospatial_lon_min: -180.0
geospatial_lon_resolution: 1050 meters
geospatial_lon_units: degrees_east
ground_station: GC
id: DOI:10.5676/EUM/AVHRR_GAC_L1C_FDR/...
institution: EUMETSAT
instrument: Earth Remote Sensing Instruments >...
keywords: ATMOSPHERE > ATMOSPHERIC RADIATION...
keywords_vocabulary: GCMD Science Keywords, Version 9.1
licence: EUMETSAT data policy https://www.e...
naming_authority: int.eumetsat
orbit_number_end: 9123
orbit_number_start: 9122
orbital_parameters_tle: ['1 11416U 79057A 81090.16350942...
platform: Earth Observation Satellites > NOA...
processing_level: 1C
processing_mode: R
product_version: 1.0.0
references: Devasthale, A., M. Raspaud, C. Sch...
source: AVHRR GAC Level 1 Data
standard_name_vocabulary: CF Standard Name Table v73
summary: Fundamental Data Record (FDR) of m...
sun_earth_distance_correction_factor: 0.9975244779999585
time_coverage_end: 19820803T003900Z
(continues on next page)

2.15. satpy 323


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


time_coverage_start: 19800101T000000Z
title: AVHRR GAC L1C FDR
version_calib_coeffs: PATMOS-x, v2017r1
version_pygac: 1.4.0
version_pygac_fdr: 0.1.dev107+gceb7b26.d20200910
version_satpy: 0.21.1.dev894+g5cf76e6
history: Created by pytroll/satpy on 2020-0...
name: brightness_temperature_channel_4
_satpy_id: DataID(name='brightness_temperatur...
ancillary_variables: []

class satpy.readers.satpy_cf_nc.SatpyCFFileHandler(filename, filename_info, filetype_info,


numeric_name_prefix='CHANNEL_')
Bases: BaseFileHandler
File handler for Satpy’s CF netCDF files.
Initialize file handler.
_assign_ds_info(var_name, val)
Assign ds_info.
_compare_attr(_ds_id_dict, key, data)

_coordinate_datasets(configured_datasets=None)
Add information of coordinate datasets.
_dataid_attrs_equal(ds_id, data)

_dynamic_datasets()
Add information of dynamic datasets.
_existing_datasets(configured_datasets=None)
Add information of existing datasets.
available_datasets(configured_datasets=None)
Add information of available datasets.
property end_time
Get end time.
fix_modifier_attr(ds_info)
Fix modifiers attribute.
get_area_def(dataset_id)
Get area definition from CF complient netcdf.
get_dataset(ds_id, ds_info)
Get dataset.
property sensor_names
Get sensor set.
property start_time
Get start time.

324 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.scmi module

SCMI NetCDF4 Reader.


SCMI files are typically used for data for the ABI instrument onboard the GOES-16/17 satellites. It is the primary format
used for providing ABI data to the AWIPS visualization clients used by the US National Weather Service forecasters.
The python code for this reader may be reused by other readers as NetCDF schemes/metadata change for different
products. The initial reader using this code is the “scmi_abi” reader (see abi_l1b_scmi.yaml for more information).
There are two forms of these files that this reader supports:
1. Official SCMI format: NetCDF4 files where the main data variable is stored
in a variable called “Sectorized_CMI”. This variable name can be configured in the YAML configuration
file.
2. Satpy/Polar2Grid SCMI format: NetCDF4 files based on the official SCMI
format created for the Polar2Grid project. This format was migrated to Satpy as part of Polar2Grid’s adop-
tion of Satpy for the majority of its features. This format is what is produced by Satpy’s scmi writer. This
format can be identified by a single variable named “data” and a global attribute named "awips_id" that
is set to a string starting with "AWIPS_".
class satpy.readers.scmi.SCMIFileHandler(filename, filename_info, filetype_info)
Bases: BaseFileHandler
Handle a single SCMI NetCDF4 file.
Set up the SCMI file handler.
_calc_extents(proj_dict)
Calculate area extents from x/y variables.
_get_cf_grid_mapping_var()
Figure out which grid mapping should be used.
_get_proj4_name(projection)
Map CF projection name to PROJ.4 name.
_get_proj_specific_params(projection)
Convert CF projection parameters to PROJ.4 dict.
_get_sensor()
Determine the sensor for this file.
property end_time
Get the end time.
get_area_def(key)
Get the area definition of the data at hand.
get_dataset(key, info)
Load a dataset.
get_shape(key, info)
Get the shape of the data.
property sensor_names
Get the sensor names.
property start_time
Get the start time.

2.15. satpy 325


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.seadas_l2 module

Reader for SEADAS L2 products.


This reader currently only supports MODIS and VIIRS Chlorophyll A from SEADAS.
The reader includes an additional keyword argument apply_quality_flags which can be used to mask out low-
quality pixels based on quality flags contained in the file (l2_flags). This option defaults to False, but when set
to True the “CHLWARN” pixels of the l2_flags variable are masked out. These pixels represent data where the
chlorophyll algorithm warned about the quality of the result.
class satpy.readers.seadas_l2.SEADASL2HDFFileHandler(filename, filename_info, filetype_info,
apply_quality_flags=False)
Bases: _SEADASL2Base, HDF4FileHandler
Simple handler of SEADAS L2 HDF4 files.
Initialize file handler and determine if data quality flags should be applied.
end_time_attr_name = '/attr/End Time'

l2_flags_var_name = 'l2_flags'

platform_attr_name = '/attr/Mission'

sensor_attr_name = '/attr/Sensor Name'

start_time_attr_name = '/attr/Start Time'

time_format = '%Y%j%H%M%S'

class satpy.readers.seadas_l2.SEADASL2NetCDFFileHandler(filename, filename_info, filetype_info,


apply_quality_flags=False)
Bases: _SEADASL2Base, NetCDF4FileHandler
Simple handler of SEADAS L2 NetCDF4 files.
Initialize file handler and determine if data quality flags should be applied.
end_time_attr_name = '/attr/time_coverage_end'

l2_flags_var_name = 'geophysical_data/l2_flags'

platform_attr_name = '/attr/platform'

sensor_attr_name = '/attr/instrument'

start_time_attr_name = '/attr/time_coverage_start'

time_format = '%Y-%m-%dT%H:%M:%S.%f'

class satpy.readers.seadas_l2._SEADASL2Base(filename, filename_info, filetype_info,


apply_quality_flags=False)
Bases: object
Simple handler of SEADAS L2 files.
Initialize file handler and determine if data quality flags should be applied.
_add_satpy_metadata(data)

_filter_by_valid_min_max(data_arr)

326 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_file_key_and_variable(data_id, dataset_info)

_mask_based_on_l2_flags(data_arr)

_platform_name()

_rename_2d_dims_if_necessary(data_arr)

_rows_per_scan()

_valid_min_max(data_arr)

property end_time
Get the ending observation time of this file’s data.
get_dataset(data_id, dataset_info)
Get DataArray for the specified DataID.
property sensor_names
Get sensor for the current file’s data.
property start_time
Get the starting observation time of this file’s data.

satpy.readers.seviri_base module

Common functionality for SEVIRI L1.5 data readers.

Introduction

The Spinning Enhanced Visible and InfraRed Imager (SEVIRI) is the primary instrument on Meteosat Second Gener-
ation (MSG) and has the capacity to observe the Earth in 12 spectral channels.
Level 1.5 corresponds to image data that has been corrected for all unwanted radiometric and geometric effects, has
been geolocated using a standardised projection, and has been calibrated and radiance-linearised. (From the EU-
METSAT documentation)
Satpy provides the following readers for SEVIRI L1.5 data in different formats:
• Native: satpy.readers.seviri_l1b_native
• HRIT: satpy.readers.seviri_l1b_hrit
• netCDF: satpy.readers.seviri_l1b_nc

Calibration

This section describes how to control the calibration of SEVIRI L1.5 data.

Calibration to radiance

The SEVIRI L1.5 data readers allow for choosing between two file-internal calibration coefficients to convert counts
to radiances:
• Nominal for all channels (default)
• GSICS where available (IR currently) and nominal for the remaining channels (VIS & HRV currently)
In order to change the default behaviour, use the reader_kwargs keyword argument upon Scene creation:

2.15. satpy 327


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

import satpy
scene = satpy.Scene(filenames=filenames,
reader='seviri_l1b_...',
reader_kwargs={'calib_mode': 'GSICS'})
scene.load(['VIS006', 'IR_108'])

In addition, two other calibration methods are available:


1. It is possible to specify external calibration coefficients for the conversion from counts to radiances. External
coefficients take precedence over internal coefficients and over the Meirink coefficients, but you can also mix
internal and external coefficients: If external calibration coefficients are specified for only a subset of channels, the
remaining channels will be calibrated using the chosen file-internal coefficients (nominal or GSICS). Calibration
coefficients must be specified in [mW m-2 sr-1 (cm-1)-1].
2. The calibration mode meirink-2023 uses coefficients based on an intercalibration with Aqua-MODIS for the
visible channels, as found in Inter-calibration of polar imager solar channels using SEVIRI (2013) by J. F.
Meirink, R. A. Roebeling, and P. Stammes.
In the following example we use external calibration coefficients for the VIS006 & IR_108 channels, and nominal
coefficients for the remaining channels:

coefs = {'VIS006': {'gain': 0.0236, 'offset': -1.20},


'IR_108': {'gain': 0.2156, 'offset': -10.4}}
scene = satpy.Scene(filenames,
reader='seviri_l1b_...',
reader_kwargs={'ext_calib_coefs': coefs})
scene.load(['VIS006', 'VIS008', 'IR_108', 'IR_120'])

In the next example we use external calibration coefficients for the VIS006 & IR_108 channels, GSICS coefficients
where available (other IR channels) and nominal coefficients for the rest:

coefs = {'VIS006': {'gain': 0.0236, 'offset': -1.20},


'IR_108': {'gain': 0.2156, 'offset': -10.4}}
scene = satpy.Scene(filenames,
reader='seviri_l1b_...',
reader_kwargs={'calib_mode': 'GSICS',
'ext_calib_coefs': coefs})
scene.load(['VIS006', 'VIS008', 'IR_108', 'IR_120'])

In the next example we use the mode meirink-2023 calibration coefficients for all visible channels and nominal
coefficients for the rest:

scene = satpy.Scene(filenames,
reader='seviri_l1b_...',
reader_kwargs={'calib_mode': 'meirink-2023'})
scene.load(['VIS006', 'VIS008', 'IR_016'])

Calibration to reflectance

When loading solar channels, the SEVIRI L1.5 data readers apply a correction for the Sun-Earth distance variation
throughout the year - as recommended by the EUMETSAT document Conversion from radiances to reflectances for
SEVIRI warm channels. In the unlikely situation that this correction is not required, it can be removed on a per-channel
basis using satpy.readers.utils.remove_earthsun_distance_correction().

328 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Masking of bad quality scan lines

By default bad quality scan lines are masked and replaced with np.nan for radiance, reflectance and brightness temper-
ature calibrations based on the quality flags provided by the data (for details on quality flags see MSG Level 1.5 Image
Data Format Description page 109). To disable masking reader_kwargs={'mask_bad_quality_scan_lines':
False} can be passed to the Scene.

Metadata

The SEVIRI L1.5 readers provide the following metadata:


• The orbital_parameters attribute provides the nominal and actual satellite position, as well as the projection
centre. See the Metadata section in the Reading chapter for more information.
• The acq_time coordinate provides the mean acquisition time for each scanline. Use a MultiIndex to enable
selection by acquisition time:

import pandas as pd
mi = pd.MultiIndex.from_arrays([scn['IR_108']['y'].data, scn['IR_108']['acq_time'].
˓→data],

names=('y_coord', 'time'))
scn['IR_108']['y'] = mi
scn['IR_108'].sel(time=np.datetime64('2019-03-01T12:06:13.052000000'))

• HRIT and Native readers can add raw metadata from the file header, such as calibration coefficients, to dataset
attributes. Use the reader keyword argument include_raw_metadata. Here’s an example for extracting cali-
bration coefficients from Native files.

scene = satpy.Scene(filenames,
reader='seviri_l1b_native',
reader_kwargs={'include_raw_metadata': True})
scene.load(["IR_108"])
mda = scene["IR_108"].attrs["raw_metadata"]
coefs = mda["15_DATA_HEADER"]["RadiometricProcessing"]["Level15ImageCalibration"]

Note that this comes with a performance penalty of up to 10% if raw metadata from multiple segments or scans
need to be combined. By default, arrays with more than 100 elements are excluded to limit the performance
penalty. This threshold can be adjusted using the mda_max_array_size reader keyword argument:

scene = satpy.Scene(filenames,
reader='seviri_l1b_native',
reader_kwargs={'include_raw_metadata': True,
'mda_max_array_size': 1000})

References
• MSG Level 1.5 Image Data Format Description
• Radiometric Calibration of MSG SEVIRI Level 1.5 Image Data in Equivalent Spectral Blackbody Radiance
class satpy.readers.seviri_base.MeirinkCalibrationHandler(calib_mode)
Bases: object
Re-calibration of the SEVIRI visible channels slope (see Meirink 2013).
Initialize the calibration handler.

2.15. satpy 329


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_slope(platform, channel, time)


Return the slope using the provided calibration coefficients.
class satpy.readers.seviri_base.MpefProductHeader
Bases: object
MPEF product header class.
get()
Return numpy record_array for MPEF product header.
property images_used
Return structure for images_used.
exception satpy.readers.seviri_base.NoValidOrbitParams
Bases: Exception
Exception when validOrbitParameters are missing.
class satpy.readers.seviri_base.OrbitPolynomial(coefs, start_time, end_time)
Bases: object
Polynomial encoding the satellite position.
Satellite position as a function of time is encoded in the coefficients of an 8th-order Chebyshev polynomial.
Initialize the polynomial.
evaluate(time)
Get satellite position in earth-centered cartesian coordinates.
Parameters
time – Timestamp where to evaluate the polynomial
Returns
Earth-centered cartesian coordinates (x, y, z) in meters
class satpy.readers.seviri_base.OrbitPolynomialFinder(orbit_polynomials)
Bases: object
Find orbit polynomial for a given timestamp.
Initialize with the given candidates.
Parameters
orbit_polynomials – Dictionary of orbit polynomials as found in SEVIRI L1B files:

{'X': x_polynomials,
'Y': y_polynomials,
'Z': z_polynomials,
'StartTime': polynomials_valid_from,
'EndTime': polynomials_valid_to}

_get_closest_interval(time)
Find interval closest to the given timestamp.
Returns
Index of closest interval, distance from its center

330 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_closest_interval_within(time, threshold)
Find interval closest to the given timestamp within a given distance.
Parameters
• time – Timestamp of interest
• threshold – Maximum distance between timestamp and interval center
Returns
Index of closest interval
_get_enclosing_interval(time)
Find interval enclosing the given timestamp.
get_orbit_polynomial(time, max_delta=6)
Get orbit polynomial valid for the given time.
Orbit polynomials are only valid for certain time intervals. Find the polynomial, whose corresponding
interval encloses the given timestamp. If there are multiple enclosing intervals, use the most recent one. If
there is no enclosing interval, find the interval whose centre is closest to the given timestamp (but not more
than max_delta hours apart).
Why are there gaps between those intervals? Response from EUM:
A manoeuvre is a discontinuity in the orbit parameters. The flight dynamic algorithms are not made to
interpolate over the time-span of the manoeuvre; hence we have elements describing the orbit before a
manoeuvre and a new set of elements describing the orbit after the manoeuvre. The flight dynamic products
are created so that there is an intentional gap at the time of the manoeuvre. Also the two pre-manoeuvre
elements may overlap. But the overlap is not of an issue as both sets of elements describe the same pre-
manoeuvre orbit (with negligible variations).
class satpy.readers.seviri_base.SEVIRICalibrationAlgorithm(platform_id, scan_time)
Bases: object
SEVIRI calibration algorithms.
Initialize the calibration algorithm.
_erads2bt(data, channel_name)
Convert effective radiance to brightness temperature.
_srads2bt(data, channel_name)
Convert spectral radiance to brightness temperature.
_tl15(data, wavenumber)
Compute the L15 temperature.
convert_to_radiance(data, gain, offset)
Calibrate to radiance.
ir_calibrate(data, channel_name, cal_type)
Calibrate to brightness temperature.
vis_calibrate(data, solar_irradiance)
Calibrate to reflectance.
This uses the method described in Conversion from radiances to reflectances for SEVIRI warm channels:
https://www-cdn.eumetsat.int/files/2020-04/pdf_msg_seviri_rad2refl.pdf

2.15. satpy 331


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.seviri_base.SEVIRICalibrationHandler(platform_id, channel_name, coefs,


calib_mode, scan_time)
Bases: object
Calibration handler for SEVIRI HRIT-, native- and netCDF-formats.
Handles selection of calibration coefficients and calls the appropriate calibration algorithm.
Initialize the calibration handler.
calibrate(data, calibration)
Calibrate the given data.
get_gain_offset()
Get gain & offset for calibration from counts to radiance.
Choices for internal coefficients are nominal or GSICS. If no GSICS coefficients are available for a certain
channel, fall back to nominal coefficients. External coefficients take precedence over internal coefficients.
satpy.readers.seviri_base._create_bad_quality_lines_mask(line_validity, line_geometric_quality,
line_radiometric_quality)
Create bad quality scan lines mask.
For details on quality flags see MSG Level 1.5 Image Data Format Description page 109.
Parameters
• line_validity (numpy.ndarray) – Quality flags with shape (nlines,).
• line_geometric_quality (numpy.ndarray) – Quality flags with shape (nlines,).
• line_radiometric_quality (numpy.ndarray) – Quality flags with shape (nlines,).
Returns
Indicating if the scan line is bad.
Return type
numpy.ndarray
satpy.readers.seviri_base.add_scanline_acq_time(dataset, acq_time)
Add scanline acquisition time to the given dataset.
satpy.readers.seviri_base.calculate_area_extent(area_dict)
Calculate the area extent seen by a geostationary satellite.
Parameters
area_dict – A dictionary containing the required parameters center_point: Center point for the
projection north: Northmost row number east: Eastmost column number west: Westmost col-
umn number south: Southmost row number column_step: Pixel resolution in meters in east-west
direction line_step: Pixel resolution in meters in south-north direction [column_offset: Column
offset, defaults to 0 if not given] [line_offset: Line offset, defaults to 0 if not given]
Returns
An area extent for the scene defined by the lower left and
upper right corners
Return type
tuple
# For Earth model 2 and full disk VISIR, (center_point - west - 0.5 + we_offset) must be -1856.5 . # See MSG
Level 1.5 Image Data Format Description Figure 7 - Alignment and numbering of the non-HRV pixels.

332 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.seviri_base.chebyshev(coefs, time, domain)


Evaluate a Chebyshev Polynomial.
Parameters
• coefs (list, np.array) – Coefficients defining the polynomial
• time (int, float) – Time where to evaluate the polynomial
• domain (list, tuple) – Domain (or time interval) for which the polynomial is defined:
[left, right]
Reference: Appendix A in the MSG Level 1.5 Image Data Format Description.
satpy.readers.seviri_base.chebyshev_3d(coefs, time, domain)
Evaluate Chebyshev Polynomials for three dimensions (x, y, z).
Expects the three coefficient sets to be defined in the same domain.
Parameters
• coefs – (x, y, z) coefficient sets.
• time – See chebyshev()
• domain – See chebyshev()
Returns
Polynomials evaluated in (x, y, z) dimension.
satpy.readers.seviri_base.create_coef_dict(coefs_nominal, coefs_gsics, radiance_type, ext_coefs)
Create coefficient dictionary expected by calibration class.
satpy.readers.seviri_base.dec10216(inbuf )
Decode 10 bits data into 16 bits words.

/*
* pack 4 10-bit words in 5 bytes into 4 16-bit words
*
* 0 1 2 3 4 5
* 01234567890123456789012345678901234567890
* 0 1 2 3 4
*/
ip = &in_buffer[i];
op = &out_buffer[j];
op[0] = ip[0]*4 + ip[1]/64;
op[1] = (ip[1] & 0x3F)*16 + ip[2]/16;
op[2] = (ip[2] & 0x0F)*64 + ip[3]/4;
op[3] = (ip[3] & 0x03)*256 +ip[4];

satpy.readers.seviri_base.get_cds_time(days, msecs)
Compute timestamp given the days since epoch and milliseconds of the day.
1958-01-01 00:00 is interpreted as fill value and will be replaced by NaT (Not a Time).
Parameters
• days (int, either scalar or numpy.ndarray) – Days since 1958-01-01
• msecs (int, either scalar or numpy.ndarray) – Milliseconds of the day
Returns
Timestamp(s)

2.15. satpy 333


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Return type
numpy.datetime64
satpy.readers.seviri_base.get_meirink_slope(meirink_coefs, acquisition_time)
Compute the slope for the visible channel calibration according to Meirink 2013.
S = A + B * 1.e-3* Day
S is here in µW m-2 sr-1 (cm-1)-1
EUMETSAT calibration is given in mW m-2 sr-1 (cm-1)-1, so an extra factor of 1/1000 must be applied.
satpy.readers.seviri_base.get_padding_area(shape, dtype)
Create a padding area filled with no data.
satpy.readers.seviri_base.get_satpos(orbit_polynomial, time, semi_major_axis, semi_minor_axis)
Get satellite position in geodetic coordinates.
Parameters
• orbit_polynomial – OrbitPolynomial instance
• time – Timestamp where to evaluate the polynomial
• semi_major_axis – Semi-major axis of the ellipsoid
• semi_minor_axis – Semi-minor axis of the ellipsoid
Returns
Longitude [deg east], Latitude [deg north] and Altitude [m]
satpy.readers.seviri_base.mask_bad_quality(data, line_validity, line_geometric_quality,
line_radiometric_quality)
Mask scan lines with bad quality.
Parameters
• data (xarray.DataArray) – Channel data
• line_validity (numpy.ndarray) – Quality flags with shape (nlines,).
• line_geometric_quality (numpy.ndarray) – Quality flags with shape (nlines,).
• line_radiometric_quality (numpy.ndarray) – Quality flags with shape (nlines,).
Returns
data with lines flagged as bad converted to np.nan.
Return type
xarray.DataArray
satpy.readers.seviri_base.pad_data_horizontally(data, final_size, east_bound, west_bound)
Pad the data given east and west bounds and the desired size.
satpy.readers.seviri_base.pad_data_vertically(data, final_size, south_bound, north_bound)
Pad the data given south and north bounds and the desired size.
satpy.readers.seviri_base.round_nom_time(date, time_delta)
Round a datetime object to a multiple of a timedelta.
date : datetime.datetime object, default now. time_delta : timedelta object, we round to a multi-
ple of this, default 1 minute. adapted for SEVIRI from: https://stackoverflow.com/questions/3463930/
how-to-round-the-minute-of-a-datetime-object-python

334 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.seviri_base.should_apply_meirink(calib_mode, channel_name)
Decide whether to use the Meirink calibration coefficients.

satpy.readers.seviri_l1b_hrit module

SEVIRI Level 1.5 HRIT format reader.

Introduction

The seviri_l1b_hrit reader reads and calibrates MSG-SEVIRI L1.5 image data in HRIT format. The format is
explained in the MSG Level 1.5 Image Data Format Description. The files are usually named as follows:

H-000-MSG4__-MSG4________-_________-PRO______-201903011200-__
H-000-MSG4__-MSG4________-IR_108___-000001___-201903011200-__
H-000-MSG4__-MSG4________-IR_108___-000002___-201903011200-__
H-000-MSG4__-MSG4________-IR_108___-000003___-201903011200-__
H-000-MSG4__-MSG4________-IR_108___-000004___-201903011200-__
H-000-MSG4__-MSG4________-IR_108___-000005___-201903011200-__
H-000-MSG4__-MSG4________-IR_108___-000006___-201903011200-__
H-000-MSG4__-MSG4________-IR_108___-000007___-201903011200-__
H-000-MSG4__-MSG4________-IR_108___-000008___-201903011200-__
H-000-MSG4__-MSG4________-_________-EPI______-201903011200-__

Each image is decomposed into 24 segments (files) for the high-resolution-visible (HRV) channel and 8 segments for
other visible (VIS) and infrared (IR) channels. Additionally, there is one prologue and one epilogue file for the entire
scan which contain global metadata valid for all channels.

Reader Arguments

Some arguments can be provided to the reader to change its behaviour. These are provided through the Scene instanti-
ation, eg:

scn = Scene(filenames=filenames, reader="seviri_l1b_hrit", reader_kwargs={'fill_hrv':␣


˓→False})

To see the full list of arguments that can be provided, look into the documentation of HRITMSGFileHandler.

Compression

This reader accepts compressed HRIT files, ending in C_ as other HRIT readers, see satpy.readers.hrit_base.
HRITFileHandler.
This reader also accepts bzipped file with the extension .bz2 for the prologue, epilogue, and segment files.

Nominal start/end time

* Warning

attribute access change

nominal_start_time and nominal_end_time should be accessed using the time_parameters attribute.


nominal_start_time and nominal_end_time are also available directly via start_time and end_time respec-
tively.

2.15. satpy 335


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Here is an exmaple of the content of the start/end time and time_parameters attibutes

Start time: 2019-08-29 12:00:00


End time: 2019-08-29 12:15:00
time_parameters:
{'nominal_start_time': datetime.datetime(2019, 8, 29, 12, 0),
'nominal_end_time': datetime.datetime(2019, 8, 29, 12, 15),
'observation_start_time': datetime.datetime(2019, 8, 29, 12, 0, 9,␣
˓→338000),

'observation_end_time': datetime.datetime(2019, 8, 29, 12, 15, 9,␣


˓→203000)

Example:

Here is an example how to read the data in satpy:

from satpy import Scene


import glob

filenames = glob.glob('data/H-000-MSG4__-MSG4________-*201903011200*')
scn = Scene(filenames=filenames, reader='seviri_l1b_hrit')
scn.load(['VIS006', 'IR_108'])
print(scn['IR_108'])

Output:

<xarray.DataArray (y: 3712, x: 3712)>


dask.array<shape=(3712, 3712), dtype=float32, chunksize=(464, 3712)>
Coordinates:
acq_time (y) datetime64[ns] NaT NaT NaT NaT NaT NaT ... NaT NaT NaT NaT NaT
* x (x) float64 5.566e+06 5.563e+06 5.56e+06 ... -5.566e+06 -5.569e+06
* y (y) float64 -5.566e+06 -5.563e+06 ... 5.566e+06 5.569e+06
Attributes:
orbital_parameters: {'projection_longitude': 0.0, 'projection_latit...
platform_name: Meteosat-11
georef_offset_corrected: True
standard_name: brightness_temperature
raw_metadata: {'file_type': 0, 'total_header_length': 6198, '...
wavelength: (9.8, 10.8, 11.8)
units: K
sensor: seviri
platform_name: Meteosat-11
start_time: 2019-03-01 12:00:09.716000
end_time: 2019-03-01 12:12:42.946000
area: Area ID: some_area_name\\nDescription: On-the-fl...
name: IR_108
resolution: 3000.403165817
calibration: brightness_temperature
polarization: None
level: None
modifiers: ()
ancillary_variables: []

336 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

The filenames argument can either be a list of strings, see the example above, or a list of satpy.readers.FSFile
objects. FSFiles can be used in conjunction with fsspec, e.g. to handle in-memory data:
import glob

from fsspec.implementations.memory import MemoryFile, MemoryFileSystem


from satpy import Scene
from satpy.readers import FSFile

# In this example, we will make use of `MemoryFile`s in a `MemoryFileSystem`.


memory_fs = MemoryFileSystem()

# Usually, the data already resides in memory.


# For explanatory reasons, we will load the files found with glob in memory,
# and load the scene with FSFiles.
filenames = glob.glob('data/H-000-MSG4__-MSG4________-*201903011200*')
fs_files = []
for fn in filenames:
with open(fn, 'rb') as fh:
fs_files.append(MemoryFile(
fs=memory_fs,
path="{}{}".format(memory_fs.root_marker, fn),
data=fh.read()
))
fs_files[-1].commit() # commit the file to the filesystem
fs_files = [FSFile(open_file) for open_file in filenames] # wrap MemoryFiles as FSFiles
# similar to the example above, we pass a list of FSFiles to the `Scene`
scn = Scene(filenames=fs_files, reader='seviri_l1b_hrit')
scn.load(['VIS006', 'IR_108'])
print(scn['IR_108'])

Output:
<xarray.DataArray (y: 3712, x: 3712)>
dask.array<shape=(3712, 3712), dtype=float32, chunksize=(464, 3712)>
Coordinates:
acq_time (y) datetime64[ns] NaT NaT NaT NaT NaT NaT ... NaT NaT NaT NaT NaT
* x (x) float64 5.566e+06 5.563e+06 5.56e+06 ... -5.566e+06 -5.569e+06
* y (y) float64 -5.566e+06 -5.563e+06 ... 5.566e+06 5.569e+06
Attributes:
orbital_parameters: {'projection_longitude': 0.0, 'projection_latit...
platform_name: Meteosat-11
georef_offset_corrected: True
standard_name: brightness_temperature
raw_metadata: {'file_type': 0, 'total_header_length': 6198, '...
wavelength: (9.8, 10.8, 11.8)
units: K
sensor: seviri
platform_name: Meteosat-11
start_time: 2019-03-01 12:00:09.716000
end_time: 2019-03-01 12:12:42.946000
area: Area ID: some_area_name\\nDescription: On-the-fl...
name: IR_108
resolution: 3000.403165817
(continues on next page)

2.15. satpy 337


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


calibration: brightness_temperature
polarization: None
level: None
modifiers: ()
ancillary_variables: []

References
• EUMETSAT Product Navigator
• MSG Level 1.5 Image Data Format Description
• fsspec
class satpy.readers.seviri_l1b_hrit.HRITMSGEpilogueFileHandler(filename, filename_info,
filetype_info,
calib_mode='nominal',
ext_calib_coefs=None,
include_raw_metadata=False,
mda_max_array_size=None,
fill_hrv=None,
mask_bad_quality_scan_lines=None)
Bases: HRITMSGPrologueEpilogueBase
SEVIRI HRIT epilogue reader.
Initialize the reader.
read_epilogue()
Read the epilogue metadata.
reduce(max_size)
Reduce the epilogue metadata.
class satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler(filename, filename_info, filetype_info,
prologue, epilogue, calib_mode='nominal',
ext_calib_coefs=None,
include_raw_metadata=False,
mda_max_array_size=100, fill_hrv=True,
mask_bad_quality_scan_lines=True)
Bases: HRITFileHandler
SEVIRI HRIT format reader.
Calibration
See satpy.readers.seviri_base.
Padding of the HRV channel
By default, the HRV channel is loaded padded with no-data, returning a full-disk dataset. If you want the original,
unpadded data, just provide the fill_hrv as False in the reader_kwargs:

scene = satpy.Scene(filenames,
reader='seviri_l1b_hrit',
reader_kwargs={'fill_hrv': False})

338 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Metadata
See satpy.readers.seviri_base.
Initialize the reader.
_add_scanline_acq_time(dataset)
Add scanline acquisition time to the given dataset.
_get_area_extent(pdict)
Get the area extent of the file.
Until December 2017, the data is shifted by 1.5km SSP North and West against the nominal GEOS projec-
tion. Since December 2017 this offset has been corrected. A flag in the data indicates if the correction has
been applied. If no correction was applied, adjust the area extent to match the shifted data.
For more information see Section 3.1.4.2 in the MSG Level 1.5 Image Data Format Description. The
correction of the area extent is documented in a developer’s memo.
_get_calib_coefs(channel_name)
Get coefficients for calibration from counts to radiance.
_get_header()
Read the header info, and fill the metadata dictionary.
_get_raw_mda()
Compile raw metadata to be included in the dataset attributes.
_mask_bad_quality(data)
Mask scanlines with bad quality.
property _repeat_cycle_duration
Get repeat cycle duration from epilogue.
_update_attrs(res, info)
Update dataset attributes.
calibrate(data, calibration)
Calibrate the data.
property end_time
Get the general end time for this file.
get_area_def(dsid)
Get the area definition of the band.
get_dataset(key, info)
Get the dataset.
property nominal_end_time
Get the end time and round it according to scan law.
property nominal_start_time
Get the start time and round it according to scan law.
property observation_end_time
Get the observation end time.
property observation_start_time
Get the observation start time.

2.15. satpy 339


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

pad_hrv_data(res)
Add empty pixels around the HRV.
property start_time
Get general start time for this file.
class satpy.readers.seviri_l1b_hrit.HRITMSGPrologueEpilogueBase(filename, filename_info,
filetype_info, hdr_info)
Bases: HRITFileHandler
Base reader for prologue and epilogue files.
Initialize the file handler for prologue and epilogue files.
_reduce(mda, max_size)
Reduce the metadata.
reduce(max_size)
Reduce the metadata (placeholder).
class satpy.readers.seviri_l1b_hrit.HRITMSGPrologueFileHandler(filename, filename_info,
filetype_info,
calib_mode='nominal',
ext_calib_coefs=None,
include_raw_metadata=False,
mda_max_array_size=None,
fill_hrv=None,
mask_bad_quality_scan_lines=None)
Bases: HRITMSGPrologueEpilogueBase
SEVIRI HRIT prologue reader.
Initialize the reader.
get_earth_radii()
Get earth radii from prologue.
Returns
Equatorial radius, polar radius [m]
read_prologue()
Read the prologue metadata.
reduce(max_size)
Reduce the prologue metadata.
property satpos
Get actual satellite position in geodetic coordinates (WGS-84).
Evaluate orbit polynomials at the start time of the scan.
Returns: Longitude [deg east], Latitude [deg north] and Altitude [m]
satpy.readers.seviri_l1b_hrit.pad_data(data, final_size, east_bound, west_bound)
Pad the data given east and west bounds and the desired size.

340 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.seviri_l1b_icare module

Interface to SEVIRI L1B data from ICARE (Lille).

Introduction

The seviri_l1b_icare reader reads MSG-SEVIRI L1.5 image data in HDF format that has been produced by the
ICARE Data and Services Center Data can be accessed via: http://www.icare.univ-lille1.fr
Each SEVIRI timeslot comes as 12 HDF files, one per band. Only those bands that are of interest need to be passed
to the reader. Others can be ignored. Filenames follow the format: GEO_L1B-MSG1_YYYY-MM-DDTHH-MM-
SS_G_CHANN_VX-XX.hdf Where: YYYY, MM, DD, HH, MM, SS specify the timeslot starting time. CHANN is
the channel (i.e: HRV, IR016, WV073, etc) VX-XX is the processing version number

Example:

Here is an example how to read the data in satpy:

from satpy import Scene


import glob

filenames = glob.glob('data/*2019-03-01T12-00-00*.hdf')
scn = Scene(filenames=filenames, reader='seviri_l1b_icare')
scn.load(['VIS006', 'IR_108'])
print(scn['IR_108'])

Output:

<xarray.DataArray 'array-a1d52b7e19ec5a875e2f038df5b60d7e' (y: 3712, x: 3712)>


dask.array<add, shape=(3712, 3712), dtype=float32, chunksize=(1024, 1024),␣
˓→chunktype=numpy.ndarray>

Coordinates:
crs object +proj=geos +a=6378169.0 +b=6356583.8 +lon_0=0.0 +h=35785831.0␣
˓→+units=m +type=crs

* y (y) float64 5.566e+06 5.563e+06 5.56e+06 ... -5.566e+06 -5.569e+06


* x (x) float64 -5.566e+06 -5.563e+06 -5.56e+06 ... 5.566e+06 5.569e+06
Attributes:
start_time: 2004-12-29 12:15:00
end_time: 2004-12-29 12:27:44
area: Area ID: geosmsg\nDescription: MSG/SEVIRI low resol...
name: IR_108
resolution: 3000.403165817
calibration: brightness_temperature
polarization: None
level: None
modifiers: ()
ancillary_variables: []

class satpy.readers.seviri_l1b_icare.SEVIRI_ICARE(filename, filename_info, filetype_info)


Bases: HDF4FileHandler
SEVIRI L1B handler for HDF4 files.
Init the file handler.

2.15. satpy 341


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_dsname(ds_id)
Return the correct dataset name based on requested band.
property alt
Get the altitude.
property end_time
Get the end time.
property geoloc
Get the geolocation.
get_area_def(ds_id)
Get the area def.
get_dataset(ds_id, ds_info)
Get the dataset.
get_metadata(data, ds_info)
Get the metadata.
property projection
Get the projection.
property projlon
Get the projection longitude.
property res
Get the resolution.
property satlon
Get the satellite longitude.
property sensor_name
Get the sensor name.
property start_time
Get the start time.
property zone
Get the zone.

satpy.readers.seviri_l1b_native module

SEVIRI Level 1.5 native format reader.

Introduction

The seviri_l1b_native reader reads and calibrates MSG-SEVIRI L1.5 image data in binary format. The format is
explained in the MSG Level 1.5 Native Format File Definition. The files are usually named as follows:

MSG4-SEVI-MSG15-0100-NA-20210302124244.185000000Z-NA.nat

342 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Reader Arguments

Some arguments can be provided to the reader to change its behaviour. These are provided through the Scene instanti-
ation, eg:

scn = Scene(filenames=filenames, reader="seviri_l1b_native", reader_kwargs={'fill_disk':␣


˓→True})

To see the full list of arguments that can be provided, look into the documentation of NativeMSGFileHandler.

Example:

Here is an example how to read the data in satpy.


NOTE: When loading the data, the orientation of the image can be set with upper_right_corner-keyword. Possible
options are NW, NE, SW, SE, or native.

from satpy import Scene

filenames = ['MSG4-SEVI-MSG15-0100-NA-20210302124244.185000000Z-NA.nat']
scn = Scene(filenames=filenames, reader='seviri_l1b_native')
scn.load(['VIS006', 'IR_108'], upper_right_corner='NE')
print(scn['IR_108'])

Output:

<xarray.DataArray 'reshape-969ef97d34b7b0c70ca19f53c6abcb68' (y: 3712, x: 3712)>


dask.array<truediv, shape=(3712, 3712), dtype=float32, chunksize=(928, 3712),␣
˓→chunktype=numpy.ndarray>

Coordinates:
acq_time (y) datetime64[ns] NaT NaT NaT NaT NaT NaT ... NaT NaT NaT NaT NaT
crs object PROJCRS["unknown",BASEGEOGCRS["unknown",DATUM["unknown",...
* y (y) float64 -5.566e+06 -5.563e+06 ... 5.566e+06 5.569e+06
* x (x) float64 5.566e+06 5.563e+06 5.56e+06 ... -5.566e+06 -5.569e+06
Attributes:
orbital_parameters: {'projection_longitude': 0.0, 'projection_latit...
time_parameters: {'nominal_start_time': datetime.datetime(2021, ...
units: K
wavelength: 10.8 µm (9.8-11.8 µm)
standard_name: toa_brightness_temperature
platform_name: Meteosat-11
sensor: seviri
georef_offset_corrected: True
start_time: 2021-03-02 12:30:11.584603
end_time: 2021-03-02 12:45:09.949762
reader: seviri_l1b_native
area: Area ID: msg_seviri_fes_3km\\nDescription: MSG S...
name: IR_108
resolution: 3000.403165817
calibration: brightness_temperature
modifiers: ()
_satpy_id: DataID(name='IR_108', wavelength=WavelengthRang...
ancillary_variables: []

2.15. satpy 343


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

References
• EUMETSAT Product Navigator
• MSG Level 1.5 Native Format File Definition
class satpy.readers.seviri_l1b_native.ImageBoundaries(header, trailer, mda)
Bases: object
Collect image boundary information.
Initialize the class.
static _check_for_valid_bounds(img_bounds)

static _convert_visir_bound_to_hrv(bound)

_get_hrv_actual_img_bounds()
Get HRV (if not ROI) image boundaries from the ActualL15CoverageHRV information stored in the trailer.
_get_hrv_img_shape()

_get_selected_img_bounds(dataset_id)
Get VISIR and HRV (if ROI) image boundaries from the SelectedRectangle information stored in the
header.
_get_visir_img_shape()

get_img_bounds(dataset_id, is_roi)
Get image line and column boundaries.
Returns
Dictionary with the four keys ‘south_bound’, ‘north_bound’, ‘east_bound’ and ‘west_bound’,
each containing a list of the respective line/column numbers of the image boundaries.
Lists (rather than scalars) are returned since the HRV data in FES mode contain data from two win-
dows/areas.
class satpy.readers.seviri_l1b_native.NativeMSGFileHandler(filename, filename_info, filetype_info,
calib_mode='nominal', fill_disk=False,
ext_calib_coefs=None,
include_raw_metadata=False,
mda_max_array_size=100)
Bases: BaseFileHandler
SEVIRI native format reader.
Calibration
See satpy.readers.seviri_base.
Padding channel data to full disk
By providing the fill_disk as True in the reader_kwargs, the channel is loaded as full disk, padded with no-data
where necessary. This is especially useful for the HRV channel, but can also be used for RSS and ROI data. By
default, the original, unpadded, data are loaded:

scene = satpy.Scene(filenames,
reader='seviri_l1b_native',
reader_kwargs={'fill_disk': False})

344 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Metadata
See satpy.readers.seviri_base.
Initialize the reader.
_add_scanline_acq_time(dataset, dataset_id)
Add scanline acquisition time to the given dataset.
_get_acq_time_hrv()
Get raw acquisition time for HRV channel.
_get_acq_time_visir(dataset_id)
Get raw acquisition time for VIS/IR channels.
_get_calib_coefs(channel_name)
Get coefficients for calibration from counts to radiance.
_get_data_dtype()
Get the dtype of the file based on the actual available channels.
_get_hrv_channel()

_get_orbital_parameters()

_get_visir_channel(dataset_id)

_make_dask_array_with_map_blocks()
Make the dask array using the da.map_blocks() functionality.
_number_of_visir_channels()
Return the number of visir channels, i.e. all channels excluding HRV.
_read_header()
Read the header info.
_read_trailer()

property _repeat_cycle_duration
Get repeat cycle duration from the trailer.
_update_attrs(dataset, dataset_info)
Update dataset attributes.
calibrate(data, dataset_id)
Calibrate the data.
property end_time
Get the general end time for this file.
get_area_def(dataset_id)
Get the area definition of the band.
In general, image data from one window/area is available. For the HRV channel in FES mode, however,
data from two windows (‘Lower’ and ‘Upper’) are available. Hence, we collect lists of area-extents and
corresponding number of image lines/columns. In case of FES HRV data, two area definitions are com-
puted, stacked and squeezed. For other cases, the lists will only have one entry each, from which a single
area definition is computed.

2.15. satpy 345


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Note that the AreaDefinition area extents returned by this function for Native data will be slightly different
compared to the area extents returned by the SEVIRI HRIT reader. This is due to slightly different pixel
size values when calculated using the data available in the files. E.g. for the 3 km grid:
Native: data15hd['ImageDescription']['ReferenceGridVIS_IR']['ColumnDirGridStep']
== 3000.4031658172607 HRIT: np.deg2rad(2.**16 / pdict['lfac']) * pdict['h'] ==
3000.4032785810186
This results in the Native 3 km full-disk area extents being approx. 20 cm shorter in each direction.
The method for calculating the area extents used by the HRIT reader (CFAC/LFAC mechanism) keeps the
highest level of numeric precision and is used as reference by EUM. For this reason, the standard area
definitions defined in the areas.yaml file correspond to the HRIT ones.
get_area_extent(dataset_id)
Get the area extent of the file.
Until December 2017, the data is shifted by 1.5km SSP North and West against the nominal GEOS projec-
tion. Since December 2017 this offset has been corrected. A flag in the data indicates if the correction has
been applied. If no correction was applied, adjust the area extent to match the shifted data.
For more information see Section 3.1.4.2 in the MSG Level 1.5 Image Data Format Description. The
correction of the area extent is documented in a developer’s memo.
get_dataset(dataset_id, dataset_info)
Get the dataset.
is_roi()
Check if data covers a selected region of interest (ROI).
Standard RSS data consists of 3712 columns and 1392 lines, covering the three northmost segments of the
SEVIRI disk. Hence, if the data does not cover the full disk, nor the standard RSS region in RSS mode, it’s
assumed to be ROI data.
property nominal_end_time
Get the repeat cycle nominal end time from file header and round it to expected nominal time slot.
property nominal_start_time
Get the repeat cycle nominal start time from file header and round it to expected nominal time slot.
property observation_end_time
Get observation end time from trailer.
property observation_start_time
Get observation start time from trailer.
property satpos
Get actual satellite position in geodetic coordinates (WGS-84).
Evaluate orbit polynomials at the start time of the scan.
Returns: Longitude [deg east], Latitude [deg north] and Altitude [m]
property start_time
Get general start time for this file.
class satpy.readers.seviri_l1b_native.Padder(dataset_id, img_bounds, is_full_disk)
Bases: object
Padding of HRV, RSS and ROI data to full disk.
Initialize the padder.

346 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_extract_data_to_pad(dataset, south_bound, north_bound)


Extract the data that shall be padded.
In case of FES (HRV) data, ‘dataset’ contains data from two separate windows that are padded separately.
Hence, we extract a subset of data.
pad_data(dataset)
Pad data to full disk with empty pixels.
satpy.readers.seviri_l1b_native._get_array(filename=None, hdr_size=None, block_info=None)
Get the numpy array for the SEVIRI data.
satpy.readers.seviri_l1b_native.get_available_channels(header)
Get the available channels from the header information.
satpy.readers.seviri_l1b_native.has_archive_header(filename)
Check whether the file includes an ASCII archive header.
satpy.readers.seviri_l1b_native.read_header(filename)
Read SEVIRI L1.5 native header.

satpy.readers.seviri_l1b_native_hdr module

Header and trailer records of SEVIRI native format.


satpy.readers.seviri_l1b_native_hdr.DEFAULT_15_SECONDARY_PRODUCT_HEADER =
{'EastColumnSelectedRectangle': {'Value': 1}, 'NorthLineSelectedRectangle': {'Value':
3712}, 'NumberColumnsHRV': {'Value': 11136}, 'NumberColumnsVISIR': {'Value': 3712},
'NumberLinesHRV': {'Value': 11136}, 'NumberLinesVISIR': {'Value': 3712},
'SelectedBandIDs': {'Value': 'XXXXXXXXXXXX'}, 'SouthLineSelectedRectangle': {'Value':
1}, 'WestColumnSelectedRectangle': {'Value': 3712}}
Default secondary product header for files containing all channels.
class satpy.readers.seviri_l1b_native_hdr.GSDTRecords
Bases: object
MSG Ground Segment Data Type records.
Reference Document (EUM/MSG/SPE/055): MSG Ground Segment Design Specification (GSDS)
gp_cpu_address = [('Qualifier_1', <class 'numpy.uint8'>), ('Qualifier_2', <class
'numpy.uint8'>), ('Qualifier_3', <class 'numpy.uint8'>), ('Qualifier_4', <class
'numpy.uint8'>)]

gp_fac_env
alias of uint8
gp_fac_id
alias of uint8
gp_pk_header = [('HeaderVersionNo', <class 'numpy.uint8'>), ('PacketType', <class
'numpy.uint8'>), ('SubHeaderType', <class 'numpy.uint8'>), ('SourceFacilityId',
<class 'numpy.uint8'>), ('SourceEnvId', <class 'numpy.uint8'>), ('SourceInstanceId',
<class 'numpy.uint8'>), ('SourceSUId', <class 'numpy.uint32'>), ('SourceCPUId',
[('Qualifier_1', <class 'numpy.uint8'>), ('Qualifier_2', <class 'numpy.uint8'>),
('Qualifier_3', <class 'numpy.uint8'>), ('Qualifier_4', <class 'numpy.uint8'>)]),
('DestFacilityId', <class 'numpy.uint8'>), ('DestEnvId', <class 'numpy.uint8'>),
('SequenceCount', <class 'numpy.uint16'>), ('PacketLength', <class 'numpy.int32'>)]

2.15. satpy 347


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

gp_pk_sh1 = [('SubHeaderVersionNo', <class 'numpy.uint8'>), ('ChecksumFlag', <class


'bool'>), ('Acknowledgement', (<class 'numpy.uint8'>, 4)), ('ServiceType', <class
'numpy.uint8'>), ('ServiceSubtype', <class 'numpy.uint8'>), ('PacketTime', [('Days',
'>u2'), ('Milliseconds', '>u4')]), ('SpacecraftId', <class 'numpy.uint16'>)]

gp_sc_id
alias of uint16
gp_su_id
alias of uint32
gp_svce_type
alias of uint8
class satpy.readers.seviri_l1b_native_hdr.HritPrologue
Bases: L15DataHeaderRecord
HRIT Prologue handler.
get()
Get record data array.
class satpy.readers.seviri_l1b_native_hdr.L15DataHeaderRecord
Bases: object
L15 Data Header handler.
Reference Document (EUM/MSG/ICD/105): MSG Level 1.5 Image Data Format Description
property celestial_events
Get celestial events data.
property geometric_processing
Get geometric processing data.
get()
Get header record data.
property image_acquisition
Get image acquisition data.
property image_description
Get image description data.
property impf_configuration
Get impf configuration information.
property radiometric_processing
Get radiometric processing data.
property satellite_status
Get satellite status data.
class satpy.readers.seviri_l1b_native_hdr.L15MainProductHeaderRecord
Bases: object
L15 Main Product header handler.
Reference Document: MSG Level 1.5 Native Format File Definition

348 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get()
Get header data.
class satpy.readers.seviri_l1b_native_hdr.L15PhData
Bases: object
L15 Ph handler.
l15_ph_data = [('Name', 'S30'), ('Value', 'S50')]

class satpy.readers.seviri_l1b_native_hdr.L15SecondaryProductHeaderRecord
Bases: object
L15 Secondary Product header handler.
Reference Document: MSG Level 1.5 Native Format File Definition
get()
Get header data.
class satpy.readers.seviri_l1b_native_hdr.Msg15NativeHeaderRecord
Bases: object
SEVIRI Level 1.5 header for native-format.
get(with_archive_header)
Get the header type.
class satpy.readers.seviri_l1b_native_hdr.Msg15NativeTrailerRecord
Bases: object
SEVIRI Level 1.5 trailer for native-format.
Reference Document (EUM/MSG/ICD/105): MSG Level 1.5 Image Data Format Description
property geometric_quality
Get geometric quality record data.
get()
Get header record data.
property image_production_stats
Get image production statistics.
property navigation_extraction_results
Get navigation extraction data.
property radiometric_quality
Get radiometric quality record data.
property seviri_l15_trailer
Get file trailer data.
property timeliness_and_completeness
Get time and completeness record data.
satpy.readers.seviri_l1b_native_hdr.get_native_header(with_archive_header=True)
Get Native format header type.
There are two variants, one including an ASCII archive header and one without that header. The header is
prepended if the data are ordered through the EUMETSAT data center.

2.15. satpy 349


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.seviri_l1b_nc module

SEVIRI netcdf format reader.


class satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler(filename, filename_info, filetype_info,
ext_calib_coefs=None,
mask_bad_quality_scan_lines=True)
Bases: BaseFileHandler
File handler for NC seviri files.
Calibration
See satpy.readers.seviri_base. Note that there is only one set of calibration coefficients available in the
netCDF files and therefore there is no calib_mode argument.
Metadata
See satpy.readers.seviri_base.
Init the file handler.
_add_scanline_acq_time(dataset, dataset_id)

_get_acq_time_hrv()

_get_acq_time_visir(dataset_id)

_get_calib_coefs(dataset, channel)
Get coefficients for calibration from counts to radiance.
_get_earth_model()

_mask_bad_quality(dataset, dataset_info)
Mask scanlines with bad quality.
property _repeat_cycle_duration
Get repeat cycle duration from the metadata.
_update_attrs(dataset, dataset_info)
Update dataset attributes.
calibrate(dataset, dataset_id)
Calibrate the data.
property end_time
Get the general end time for this file.
get_area_def(dataset_id)
Get the area def.
Note that the AreaDefinition area extents returned by this function for NetCDF data will be slightly different
compared to the area extents returned by the SEVIRI HRIT reader. This is due to slightly different pixel
size values when calculated using the data available in the files. E.g. for the 3 km grid:
NetCDF: self.nc.attrs['vis_ir_column_dir_grid_step'] == 3000.4031658172607 HRIT:
np.deg2rad(2.**16 / pdict['lfac']) * pdict['h'] == 3000.4032785810186
This results in the Native 3 km full-disk area extents being approx. 20 cm shorter in each direction.
The method for calculating the area extents used by the HRIT reader (CFAC/LFAC mechanism) keeps the
highest level of numeric precision and is used as reference by EUM. For this reason, the standard area
definitions defined in the areas.yaml file correspond to the HRIT ones.

350 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_area_extent(dsid)
Get the area extent.
get_dataset(dataset_id, dataset_info)
Get the dataset.
get_metadata()
Get metadata.
property nc
Read the file.
property nominal_end_time
Read the repeat cycle nominal end time from metadata and round it to expected nominal time slot.
property nominal_start_time
Read the repeat cycle nominal start time from metadata and round it to expected nominal time slot.
property observation_end_time
Get the repeat cycle observation end time from metadata.
property observation_start_time
Get the repeat cycle observation start time from metadata.
property satpos
Get actual satellite position in geodetic coordinates (WGS-84).
Evaluate orbit polynomials at the start time of the scan.
Returns: Longitude [deg east], Latitude [deg north] and Altitude [m]
property start_time
Get general start time for this file.
class satpy.readers.seviri_l1b_nc.NCSEVIRIHRVFileHandler(filename, filename_info, filetype_info,
ext_calib_coefs=None,
mask_bad_quality_scan_lines=True)
Bases: NCSEVIRIFileHandler, SEVIRICalibrationHandler
HRV filehandler.
Init the file handler.
get_area_extent(dsid)
Get HRV area extent.
get_dataset(dataset_id, dataset_info)
Get dataset from file.

satpy.readers.sgli_l1b module

GCOM-C SGLI L1b reader.


GCOM-C has an imager instrument: SGLI https://www.wmo-sat.info/oscar/instruments/view/505
Test data is available here: https://suzaku.eorc.jaxa.jp/GCOM_C/data/product_std.html The live data is available from
here: https://gportal.jaxa.jp/gpr/search?tab=1 And the format description is here: https://gportal.jaxa.jp/gpr/assets/
mng_upload/GCOM-C/SGLI_Level1_Product_Format_Description_en.pdf

2.15. satpy 351


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.sgli_l1b.HDF5SGLI(filename, filename_info, filetype_info)


Bases: BaseFileHandler
File handler for the SGLI l1b data.
Initialize the filehandler.
calibrate_ir(dataset, calibration)
Calibrate IR channel.
calibrate_vis(dataset, calibration)
Calibrate visible data.
property end_time
Get the end time.
get_angles(key)
Get angles from the file.
get_dataset(key, info)
Get the dataset from the file.
get_full_angles(azi, zen, attrs)
Interpolate angle arrays.
get_ir_dataset(key, dataset)
Produce a DataArray with an IR channel data in it.
get_lon_lats(key)
Get lon/lats from the file.
get_missing_and_saturated(attrs)
Get the missing and saturation values.
get_sensor_angles()
Get the solar angles.
get_solar_angles()
Get the solar angles.
get_visible_dataset(key, dataset)
Produce a DataArray with a visible channel data in it.
interpolate_spherical(azimuthal_angle, polar_angle, resampling_interval)
Interpolate spherical coordinates.
mask_to_14_bits(dataset)
Mask data to 14 bits.
prepare_dataset(key, dataset)
Prepare the dataset according to key.
scale_array(array)
Scale an array with its attributes Slope and Offset if available.
property start_time
Get the start time.

352 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.slstr_l1b module

SLSTR L1b reader.


class satpy.readers.slstr_l1b.NCSLSTR1B(filename, filename_info, filetype_info, user_calibration=None)
Bases: BaseFileHandler
Filehandler for l1 SLSTR data.
By default, the calibration factors recommended by EUMETSAT are applied. This is required as the SLSTR VIS
channels are producing slightly incorrect radiances that require adjustment. Satpy uses the radiance corrections
in S3.PN-SLSTR-L1.08, checked 11/03/2022. User-supplied coefficients can be passed via the user_calibration
kwarg This should be a dict of channel names (such as S1_nadir, S8_oblique).
For example:

calib_dict = {'S1_nadir': 1.12}


scene = satpy.Scene(filenames,
reader='slstr-l1b',
reader_kwargs={'user_calib': calib_dict})

Will multiply S1 nadir radiances by 1.12.


Initialize the SLSTR l1 data filehandler.
_apply_radiance_adjustment(radiances)
Adjust SLSTR radiances with default or user supplied values.
static _cal_rad(rad, didx, solar_flux=None)
Calibrate.
property end_time
Get the end time.
get_dataset(key, info)
Load a dataset.
property start_time
Get the start time.
class satpy.readers.slstr_l1b.NCSLSTRAngles(filename, filename_info, filetype_info)
Bases: BaseFileHandler
Filehandler for angles.
Initialize the angles reader.
_loadcart(fname)
Load a cartesian file of appropriate type.
property end_time
Get the end time.
get_dataset(key, info)
Load a dataset.
property start_time
Get the start time.

2.15. satpy 353


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.slstr_l1b.NCSLSTRFlag(filename, filename_info, filetype_info)


Bases: BaseFileHandler
File handler for flags.
Initialize the flag reader.
property end_time
Get the end time.
get_dataset(key, info)
Load a dataset.
property start_time
Get the start time.
class satpy.readers.slstr_l1b.NCSLSTRGeo(filename, filename_info, filetype_info)
Bases: BaseFileHandler
Filehandler for geo info.
Initialize the geo filehandler.
property end_time
Get the end time.
get_dataset(key, info)
Load a dataset.
property start_time
Get the start time.

satpy.readers.smos_l2_wind module

SMOS L2 wind Reader.


Data can be found here after register: https://www.smosstorm.org/Data2/SMOS-NRT-wind-Products-access Format
documentation at the same site after register: SMOS_WIND_DS_PDD_20191107_signed.pdf
class satpy.readers.smos_l2_wind.SMOSL2WINDFileHandler(filename, filename_info, filetype_info,
auto_maskandscale=False,
xarray_kwargs=None, cache_var_size=0,
cache_handle=False)
Bases: NetCDF4FileHandler
File handler for SMOS L2 wind netCDF files.
Initialize object.
_adjust_lon_coord(data)
Adjust lon coordinate to -180 .. 180 ( not 0 .. 360).
_create_area_extent(width, height)
Create area extent.
_mask_dataset(data)
Mask out fill values.
_remove_time_coordinate(data)
Remove time coordinate.

354 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_rename_coords(data)
Rename coords.
_roll_dataset_lon_coord(data)
Roll dataset along the lon coordinate.
available_datasets(configured_datasets=None)
Automatically determine datasets provided by this file.
property end_time
Get end time.
get_area_def(dsid)
Define AreaDefintion.
get_dataset(ds_id, ds_info)
Get dataset.
get_metadata(data, ds_info)
Get metadata.
property platform_name
Get platform.
property platform_shortname
Get platform shortname.
property start_time
Get start time.

satpy.readers.tropomi_l2 module

Interface to TROPOMI L2 Reader.


The TROPOspheric Monitoring Instrument (TROPOMI) is the satellite instrument on board the Copernicus Sentinel-5
Precursor satellite. It measures key atmospheric trace gasses, such as ozone, nitrogen oxides, sulfur dioxide, carbon
monoxide, methane, and formaldehyde.
Level 2 data products are available via the Copernicus Open Access Hub. For more information visit the following
URL: http://www.tropomi.eu/data-products/level-2-products
class satpy.readers.tropomi_l2.TROPOMIL2FileHandler(filename, filename_info, filetype_info,
auto_maskandscale=False,
xarray_kwargs=None, cache_var_size=0,
cache_handle=False)
Bases: NetCDF4FileHandler
File handler for TROPOMI L2 netCDF files.
Initialize object.
_iterate_over_dataset_contents(handled_variables, shape)
Iterate over dataset contents.
This is where we dynamically add new datasets We will sift through all groups and variables, looking for
data matching the geolocation bounds
_rename_dims(data_arr)
Normalize dimension names with the rest of Satpy.

2.15. satpy 355


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

available_datasets(configured_datasets=None)
Automatically determine datasets provided by this file.
property end_time
Get end time.
get_dataset(ds_id, ds_info)
Get dataset.
get_metadata(data, ds_info)
Get metadata.
property platform_shortname
Get platform shortname.
prepare_geo(bounds_data)
Prepare lat/lon bounds for pcolormesh.
lat/lon bounds are ordered in the following way:

3----2
| |
0----1

Extend longitudes and latitudes with one element to support “pcolormesh”:

(X[i+1, j], Y[i+1, j]) (X[i+1, j+1], Y[i+1, j+1])


+--------+
| C[i,j] |
+--------+
(X[i, j], Y[i, j]) (X[i, j+1], Y[i, j+1])

property sensor
Get sensor.
property sensor_names
Get sensor set.
property start_time
Get start time.
property time_coverage_end
Get time_coverage_end.
property time_coverage_start
Get time_coverage_start.

satpy.readers.utils module

Helper functions for satpy readers.


class satpy.readers.utils.CalibrationCoefficientPicker(coefs, calib_wishlist, default='nominal',
fallback=None)
Bases: object
Helper for choosing coefficients out of multiple options.
Example: Three sets of coefficients are available (nominal, meirink, gsics). A user wants to calibrate

356 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• channel 1 with “meirink”


• channels 2/3 with “gsics”
• channel 4 with custom coefficients
• remaining channels with nominal coefficients

1. Users provide a wishlist via reader_kwargs

calib_wishlist = {
"ch1": "meirink",
("ch2", "ch3"): "gsics"
"ch4": {"mygain": 123},
}
# Also possible: Same mode for all channels via
# calib_wishlist = "gsics"

2. Readers provide a dictionary with all available coefficients

coefs = {
"nominal": {
"ch1": 1.0,
"ch2": 2.0,
"ch3": 3.0,
"ch4": 4.0,
"ch5": 5.0,
},
"meirink": {
"ch1": 1.1,
},
"gsics": {
"ch2": 2.2,
# ch3 coefficients are missing
}
}

3. Raders make queries to get the desired coefficients:

>>> from satpy.readers.utils import CalibrationCoefficientPicker


>>> picker = CalibrationCoefficientPicker(coefs, calib_wishlist)
>>> picker.get_coefs("ch1")
{"coefs": 1.0, "mode": "meirink"}
>>> picker.get_coefs("ch2")
{"coefs": 2.2, "mode": "gsics"}
>>> picker.get_coefs("ch3")
KeyError: 'No gsics calibration coefficients for ch3'
>>> picker.get_coefs("ch4")
{"coefs": {"mygain": 123}, "mode": "external"}
>>> picker.get_coefs("ch5")
{"coefs": 5.0, "mode": "nominal"}

4. Fallback to nominal coefficients for ch3:

2.15. satpy 357


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

>>> picker = CalibrationCoefficientPicker(coefs, calib_wishlist, fallback="nominal")


>>> picker.get_coefs("ch3")
WARNING No gsics calibration coefficients for ch3. Falling back to nominal.
{"coefs": 3.0, "mode": "nominal"}

Initialize the coefficient picker.


Parameters
• coefs (dict) – One set of calibration coefficients for each calibration mode. The actual
coefficients can be of any type (reader-specific).
• calib_wishlist (str or dict) – Desired calibration coefficients. Use a dictionary to
specify channel-specific coefficients. Use a string to specify one mode for all channels.
• default (str) – Default coefficients to be used if nothing was specified in the calib_wishlist.
Default: “nominal”.
• fallback (str) – Fallback coefficients if the desired coefficients are not available for some
channel. By default, an exception is raised if coefficients are missing.
get_coefs(channel)
Get calibration coefficients for the given channel.
Parameters
channel (str) – Channel name
Returns
Calibration coefficients and mode (for transparency, in case
the picked coefficients differ from the wishlist).
Return type
dict
class satpy.readers.utils._CalibrationCoefficientParser(coefs, default='nominal')
Bases: object
Parse user-defined calibration coefficients.
Initialize the parser.
_flatten_multi_channel_keys(calib_wishlist)

_get_coefs(mode_or_coefs, channel)

_get_coefs_by_mode(mode, channel)

_get_coefs_set(mode)

_is_mode(mode_or_coefs)

_is_multi_channel(key)

_parse_dict(calib_wishlist)

_replace_calib_mode_with_actual_coefs(calib_wishlist)

get_calib_mode(calib_wishlist, channel)
Get desired calibration mode for the given channel.

358 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

parse(calib_wishlist)
Parse user’s calibration wishlist.
satpy.readers.utils._get_geostationary_height(geos_area)

satpy.readers.utils._get_geostationary_reference_longitude(geos_area)

satpy.readers.utils._get_geostationary_semi_axes(geos_area)

satpy.readers.utils._lonlat_from_geos_angle(x, y, geos_area)
Get lons and lats from x, y in projection coordinates.
satpy.readers.utils._make_coefs(coefs, mode)

satpy.readers.utils._unzip_FSFile(filename: FSFile, prefix=None)


Open and Unzip remote FSFile ending with ‘bz2’.
Parameters
• filename – The FSFile to unzip.
• prefix (str, optional) – If file is one of many segments of data, prefix random filename
• number. (for correct sorting. This is normally the segment)
Returns
Temporary filename path for decompressed file or None.
satpy.readers.utils._unzip_local_file(filename: str, prefix=None)
Unzip the file ending with ‘bz2’. Initially with pbzip2 if installed or bz2.
Parameters
• filename – The file to unzip.
• prefix (str, optional) – If file is one of many segments of data, prefix random filename
• number. (for correct sorting. This is normally the segment)
Returns
Temporary filename path for decompressed file or None.
satpy.readers.utils._unzip_with_bz2(filename, tmpfilepath)

satpy.readers.utils._unzip_with_pbzip(filename, tmpfilepath, fdn)

satpy.readers.utils._write_uncompressed_file(content, fdn, filename, tmpfilepath)

satpy.readers.utils.apply_earthsun_distance_correction(reflectance, utc_date=None)
Correct reflectance data to account for changing Earth-Sun distance.
satpy.readers.utils.apply_rad_correction(data, slope, offset)
Apply GSICS-like correction factors to radiance data.
satpy.readers.utils.bbox(img)
Find the bounding box around nonzero elements in the given array.
Copied from https://stackoverflow.com/a/31402351/5703449 .
Returns
rowmin, rowmax, colmin, colmax

2.15. satpy 359


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.utils.fromfile(filename, dtype, count=1, offset=0)


Read the numpy array from a (remote or local) file using a buffer.

á Note

This function relies on the generic_open() context manager to read a file remotely.

Parameters
• filename – Either the name of the file to read or a satpy.readers.FSFile object.
• dtype – The data type of the numpy array
• count (Optional, default 1) – Number of items to read
• offset (Optional, default 0) – Starting point for reading the buffer from
Returns
The content of the filename as a numpy array with the given data type.

satpy.readers.utils.generic_open(filename, *args, **kwargs)


Context manager for opening either a regular file or a bzip2 file.
Returns a file-like object.
satpy.readers.utils.get_array_date(scn_data, utc_date=None)
Get start time from a channel data array.
satpy.readers.utils.get_earth_radius(lon, lat, a, b)
Compute radius of the earth ellipsoid at the given longitude and latitude.
Parameters
• lon – Geodetic longitude (degrees)
• lat – Geodetic latitude (degrees)
• a – Semi-major axis of the ellipsoid (meters)
• b – Semi-minor axis of the ellipsoid (meters)
Returns
Earth Radius (meters)
satpy.readers.utils.get_geostationary_angle_extent(geos_area)
Get the max earth (vs space) viewing angles in x and y.
satpy.readers.utils.get_geostationary_bounding_box(geos_area, nb_points=50)
Get the bbox in lon/lats of the valid pixels inside geos_area.
Parameters
• geos_area – The geostationary area to analyse.
• nb_points – Number of points on the polygon
satpy.readers.utils.get_geostationary_mask(area, chunks=None)
Compute a mask of the earth’s shape as seen by a geostationary satellite.
Parameters
• area (pyresample.geometry.AreaDefinition) – Corresponding area definition

360 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• chunks (int or tuple) – Chunk size for the 2D array that is generated.
Returns
Boolean mask, True inside the earth’s shape, False outside.
satpy.readers.utils.get_sub_area(area, xslice, yslice)
Apply slices to the area_extent and size of the area.
satpy.readers.utils.get_user_calibration_factors(band_name, correction_dict)
Retrieve radiance correction factors from user-supplied dict.
satpy.readers.utils.np2str(value)
Convert an numpy.string_ to str.
Parameters
value (ndarray) – scalar or 1-element numpy array to convert
Raises
ValueError – if value is array larger than 1-element, or it is not of type numpy.string_ or it is
not a numpy array
satpy.readers.utils.reduce_mda(mda, max_size=100)
Recursively remove arrays with more than max_size elements from the given metadata dictionary.
satpy.readers.utils.remove_earthsun_distance_correction(reflectance, utc_date=None)
Remove the sun-earth distance correction.
satpy.readers.utils.unzip_context(filename)
Context manager for decompressing a .bz2 file on the fly.
Uses unzip_file. Removes the uncompressed file on exit of the context manager.
Returns: the filename of the uncompressed file or of the original file if it was not compressed.
satpy.readers.utils.unzip_file(filename: str | FSFile, prefix=None)
Unzip the local/remote file ending with ‘bz2’.
Parameters
• filename – The local/remote file to unzip.
• prefix (str, optional) – If file is one of many segments of data, prefix random filename
• number. (for correct sorting. This is normally the segment)
Returns
Temporary filename path for decompressed file or None.

satpy.readers.vaisala_gld360 module

Vaisala Global Lightning Dataset 360 reader.


Vaisala Global Lightning Dataset GLD360 is data as a service that provides real-time lightning data for accurate and
early detection and tracking of severe weather. The data provided is generated by a Vaisala owned and operated world-
wide lightning detection sensor network.
References: - [GLD360] https://www.vaisala.com/en/products/data-subscriptions-and-reports/data-sets/gld360
class satpy.readers.vaisala_gld360.VaisalaGLD360TextFileHandler(filename, filename_info,
filetype_info)

2.15. satpy 361


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Bases: BaseFileHandler
ASCII reader for Vaisala GDL360 data.
Initialize VaisalaGLD360TextFileHandler.
property end_time
Get end time.
get_dataset(dataset_id, dataset_info)
Load a dataset.
property start_time
Get start time.

satpy.readers.vii_base_nc module

EUMETSAT EPS-SG Visible/Infrared Imager (VII) readers base class.


class satpy.readers.vii_base_nc.ViiNCBaseFileHandler(filename, filename_info, filetype_info,
orthorect=False)
Bases: NetCDF4FileHandler
Base reader class for VII products in netCDF format.
Parameters
• filename (str) – File to read
• filename_info (dict) – Dictionary with filename information
• filetype_info (dict) – Dictionary with filetype information
• orthorect (bool) – activates the orthorectification correction where available
Prepare the class for dataset reading.
_get_global_attributes()
Create a dictionary of global attributes to be added to all datasets.
_perform_calibration(variable, dataset_info)
Perform the calibration.
static _perform_geo_interpolation(longitude, latitude)
Perform the interpolation of geographic coodinates from tie points to pixel points.
Parameters
• longitude – xarray DataArray containing the longitude dataset to interpolate.
• latitude – xarray DataArray containing the longitude dataset to interpolate.
Returns
tuple of arrays containing the interpolate values, all the original metadata
and the updated dimension names.
static _perform_interpolation(variable)
Perform the interpolation from tie points to pixel points.
Parameters
variable – xarray DataArray containing the dataset to interpolate.

362 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Returns
array containing the interpolate values, all the original metadata
and the updated dimension names.
Return type
DataArray
_perform_orthorectification(variable, orthorect_data_name)
Perform the orthorectification.
_standardize_dims(variable)
Standardize dims to y, x.
property end_time
Get observation end time.
get_dataset(dataset_id, dataset_info)
Get dataset using file_key in dataset_info.
property sensor
Return sensor.
property spacecraft_name
Return spacecraft name.
property ssp_lon
Return subsatellite point longitude.
property start_time
Get observation start time.

satpy.readers.vii_l1b_nc module

EUMETSAT EPS-SG Visible/Infrared Imager (VII) Level 1B products reader.


The vii_l1b_nc reader reads and calibrates EPS-SG VII L1b image data in netCDF format. The format is explained
in the EPS-SG VII Level 1B Product Format Specification V4A.
This version is applicable for the vii test data V2 to be released in Jan 2022.
class satpy.readers.vii_l1b_nc.ViiL1bNCFileHandler(filename, filename_info, filetype_info, **kwargs)
Bases: ViiNCBaseFileHandler
Reader class for VII L1B products in netCDF format.
Read the calibration data and prepare the class for dataset reading.
static _calibrate_bt(radiance, cw, a, b)
Perform the calibration to brightness temperature.
Parameters
• radiance – numpy ndarray containing the radiance values.
• cw – center wavelength [m].
• a – temperature coefficient [-].
• b – temperature coefficient [K].
Returns
array containing the calibrated brightness temperature values.

2.15. satpy 363


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Return type
numpy ndarray
static _calibrate_refl(radiance, angle_factor, isi)
Perform the calibration to reflectance.
Parameters
• radiance – numpy ndarray containing the radiance values.
• angle_factor – numpy ndarray containing the inverse of cosine of solar zenith angle [-].
• isi – integrated solar irradiance [W/(m2 * m)].
Returns
array containing the calibrated reflectance values.
Return type
numpy ndarray
_perform_calibration(variable, dataset_info)
Perform the calibration.
Parameters
• variable – xarray DataArray containing the dataset to calibrate.
• dataset_info – dictionary of information about the dataset.
Returns
array containing the calibrated values and all the original metadata.
Return type
DataArray
_perform_orthorectification(variable, orthorect_data_name)
Perform the orthorectification.
Parameters
• variable – xarray DataArray containing the dataset to correct for orthorectification.
• orthorect_data_name – name of the orthorectification correction data in the product.
Returns
array containing the corrected values and all the original metadata.
Return type
DataArray

satpy.readers.vii_l2_nc module

EUMETSAT EPS-SG Visible/Infrared Imager (VII) Level 2 products reader.


class satpy.readers.vii_l2_nc.ViiL2NCFileHandler(filename, filename_info, filetype_info,
orthorect=False)
Bases: ViiNCBaseFileHandler
Reader class for VII L2 products in netCDF format.
Prepare the class for dataset reading.

364 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_perform_orthorectification(variable, orthorect_data_name)
Perform the orthorectification.
Parameters
• variable – xarray DataArray containing the dataset to correct for orthorectification.
• orthorect_data_name – name of the orthorectification correction data in the product.
Returns
array containing the corrected values and all the original metadata.
Return type
DataArray

satpy.readers.vii_utils module

Utilities for the management of VII products.

satpy.readers.viirs_atms_sdr_base module

Common utilities for reading VIIRS and ATMS SDR data.


class satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandler(filename, filename_info, filetype_info,
**kwargs)
Bases: HDF5FileHandler
Base class for reading JPSS VIIRS & ATMS SDR HDF5 Files.
Initialize file handler.
_adjust_scaling_factors(factors, file_units, output_units)
Adjust scaling factors .
_generate_file_key(ds_id, ds_info, factors=False)

_get_aggr_path(fileinfo_key, aggr_default)

_get_rows_per_granule(dataset_group)

_get_scans_per_granule(dataset_group)

static _get_valid_scaling_factors(factors)

_get_variable(var_path, **kwargs)

static _map_and_apply_factors(data, factors, rows_per_gran)

static _mask_and_reshape_factors(factors)

_parse_datetime(datestr, timestr)

static _scale_factors_for_units(factors, file_units, output_units)

_scan_size(dataset_group_name)
Get how many rows of data constitute one scanline.
_update_data_attributes(data, dataset_id, ds_info)

2.15. satpy 365


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

available_datasets(configured_datasets=None)
Generate dataset info and their availablity.
See satpy.readers.file_handlers.BaseFileHandler.available_datasets() for details.
concatenate_dataset(dataset_group, var_path, **kwargs)
Concatenate dataset.
property end_orbit_number
Get end orbit number.
property end_time
Get end time.
static expand_single_values(var, scans)
Expand single valued variable to full scan lengths.
mask_fill_values(data, ds_info)
Mask fill values.
property platform_name
Get platform name.
scale_data_to_specified_unit(data, dataset_id, ds_info)
Get sscale and offset factors and convert/scale data to given physical unit.
scale_swath_data(data, scaling_factors, dataset_group)
Scale swath data using scaling factors and offsets.
Multi-granule (a.k.a. aggregated) files will have more than the usual two values.
property sensor_name
Get sensor name.
property start_orbit_number
Get start orbit number.
property start_time
Get start time.
satpy.readers.viirs_atms_sdr_base._apply_factors(data, factor_set)

satpy.readers.viirs_atms_sdr_base._get_file_units(dataset_id, ds_info)
Get file units from metadata.
satpy.readers.viirs_atms_sdr_base._get_scale_factors_for_units(factors, file_units, output_units)

satpy.readers.viirs_compact module

Compact viirs format.


This is a reader for the Compact VIIRS format shipped on Eumetcast for the VIIRS SDR. The format is compressed in
multiple ways, notably by shipping only tie-points for geographical data. The interpolation of this data is done using
dask operations, so it should be relatively performant.
For more information on this format, the reader can refer to the Compact VIIRS SDR Product Format User Guide that
can be found on this EARS page.

366 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.viirs_compact.VIIRSCompactFileHandler(filename, filename_info, filetype_info)


Bases: BaseFileHandler
A file handler class for VIIRS compact format.
Initialize the reader.
_get_geographical_chunks()

angles(azi_name, zen_name)
Generate the angle datasets.
property end_time
Get the end time.
expand_angle_and_nav(arrays)
Expand angle and navigation datasets.
property expansion_coefs
Compute the expansion coefficients.
get_bounding_box()
Get the bounding box of the data.
get_dataset(key, info)
Load a dataset.
navigate()
Generate the navigation datasets.
read_dataset(dataset_key, info)
Read a dataset.
read_geo(key, info)
Read angles.
property start_time
Get the start time.
satpy.readers.viirs_compact._interpolate_data(data, corner_coefficients, scans)
Interpolate the data using the provided coefficients.
satpy.readers.viirs_compact.convert_from_angles(azi, zen)
Convert the angles to cartesian coordinates.
satpy.readers.viirs_compact.convert_to_angles(x, y, z)
Convert the cartesian coordinates to angles.
satpy.readers.viirs_compact.expand(data, coefs, scans, scan_size)
Perform the expansion in numpy domain.
satpy.readers.viirs_compact.expand_arrays(arrays, scans, c_align, c_exp, scan_size=16, tpz_size=16,
nties=200, track_offset=0.5, scan_offset=0.5)
Expand data according to alignment and expansion.
satpy.readers.viirs_compact.get_coefs(c_align, c_exp, tpz_size, nb_tpz, v_track, scans, scan_size,
scan_offset)
Compute the coeffs in numpy domain.

2.15. satpy 367


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.viirs_edr module

VIIRS NOAA enterprise EDR product reader.


This module defines the VIIRSJRRFileHandler file handler, to be used for reading VIIRS EDR products generated
by the NOAA enterprise suite, which are downloadable via NOAA CLASS or on NOAA’s AWS buckets.
A wide variety of such products exist and, at present, only a subset are supported.
• Cloud mask: JRR-CloudMask_v2r3_j01_s202112250807275_e202112250808520_c202112250837300.nc
• Cloud products: JRR-CloudHeight_v2r3_j01_s202112250807275_e202112250808520_c202112250837300.nc
• Aerosol detection: JRR-ADP_v2r3_j01_s202112250807275_e202112250808520_c202112250839550.nc
• Aerosol optical depth: JRR-AOD_v2r3_j01_s202112250807275_e202112250808520_c202112250839550.nc
• Surface reflectance: SurfRefl_v1r1_j01_s202112250807275_e202112250808520_c202112250845080.nc
• Land Surface Temperature: LST_v2r0_npp_s202307241724558_e202307241726200_c202307241854058.nc
All products use the same base reader viirs_edr and can be read through satpy with:

import satpy
import glob

filenames = glob.glob('JRR-ADP*.nc')
scene = satpy.Scene(filenames, reader='viirs_edr')
scene.load(['smoke_concentration'])

á Note

Multiple products contain datasets with the same name! For example, both the cloud mask and aerosol detec-
tion files contain a cloud mask, but these are not identical. For clarity, the aerosol file cloudmask is named
cloud_mask_adp in this reader.

Vegetation Indexes

The NDVI and EVI products can be loaded from CSPP-produced Surface Reflectance files. By default, these products
are filtered based on the Surface Reflectance Quality Flags. This is used to remove/mask pixels in certain cloud or
water regions. This behavior can be disabled by providing the reader keyword argument filter_veg and setting it to
False. For example:

scene = satpy.Scene(filenames, reader='viirs_edr', reader_kwargs={"filter_veg": False})

AOD Filtering

The AOD (Aerosol Optical Depth) product can be optionally filtered based on Quality Control (QC) values in the
file. By default no filtering is performed. By providing the aod_qc_filter keyword argument and specifying the
maximum value of the QCAll variable to include (not mask). For example:

scene = satpy.Scene(filenames, reader='viirs_edr', reader_kwargs={"aod_qc_filter": 1})

will only preserve AOD550 values where the quality is 0 (“high”) or 1 (“medium”). At the time of writing the QCAll
variable has 1 (“medium”), 2 (“low”), and 3 (“no retrieval”).

368 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.viirs_edr.VIIRSAODHandler(*args, aod_qc_filter: int | None = None, **kwargs)


Bases: VIIRSJRRFileHandler
File handler for AOD data files.
Initialize file handler and keep track of QC filtering.
_mask_invalid(data_arr: DataArray, ds_info: dict) → DataArray

class satpy.readers.viirs_edr.VIIRSJRRFileHandler(filename, filename_info, filetype_info, **kwargs)


Bases: BaseFileHandler
NetCDF4 reader for VIIRS Active Fires.
Initialize the geo filehandler.
_coord_names_for_resolution(res: int)

static _decode_flag_meanings(data_arr: DataArray)

_dynamic_variables_from_file(handled_var_names: set) → Iterable[tuple[bool, dict]]

_generate_dynamic_metadata(variable_names: Iterable[str], coords: dict) → Iterable[tuple[bool, dict]]

_mask_invalid(data_arr: DataArray, ds_info: dict) → DataArray

static _rename_dims(data_arr: DataArray) → DataArray

_sanitize_metadata(data_arr: DataArray, info: dict) → DataArray

available_datasets(configured_datasets=None)
Get information of available datasets in this file.
Parameters
configured_datasets (list) – Series of (bool or None, dict) in the same way as is returned
by this method (see below). The bool is whether the dataset is available from at least one
of the current file handlers. It can also be None if no file handler before us knows how to
handle it. The dictionary is existing dataset metadata. The dictionaries are typically provided
from a YAML configuration file and may be modified, updated, or used as a “template” for
additional available datasets. This argument could be the result of a previous file handler’s
implementation of this method.
Returns
Iterator of (bool or None, dict) pairs where dict is the dataset’s metadata. If the dataset is
available in the current file type then the boolean value should be True, False if we know
about the dataset but it is unavailable, or None if this file object is not responsible for it.
property end_time
Get last date/time when observations were recorded.
get_dataset(dataset_id: DataID, info: dict) → DataArray
Get the dataset.
property platform_name
Get platform name.
rows_per_scans(data_arr: DataArray) → int
Get number of array rows per instrument scan based on data resolution.

2.15. satpy 369


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property start_time
Get first date/time when observations were recorded.
class satpy.readers.viirs_edr.VIIRSLSTHandler(*args, **kwargs)
Bases: VIIRSJRRFileHandler
File handler to handle LST file scale factor and offset weirdness.
Initialize the file handler and unscale necessary variables.
_manual_scalings = {'Satellite_Azimuth_Angle': ('AZI_ScaleFact', 'AZI_Offset'),
'VLST': ('LST_ScaleFact', 'LST_Offset'), 'emis_bbe': ('LSE_ScaleFact',
'LSE_Offset'), 'emis_m15': ('LSE_ScaleFact', 'LSE_Offset'), 'emis_m16':
('LSE_ScaleFact', 'LSE_Offset')}

_scale_data()

class satpy.readers.viirs_edr.VIIRSSurfaceReflectanceWithVIHandler(*args, filter_veg: bool =


True, **kwargs)
Bases: VIIRSJRRFileHandler
File handler for surface reflectance files with optional vegetation indexes.
Initialize file handler and keep track of vegetation index filtering.
_get_veg_index_good_mask() → Array

_mask_invalid(data_arr: DataArray, ds_info: dict) → DataArray

satpy.readers.viirs_edr_active_fires module

VIIRS Active Fires reader.


This module implements readers for VIIRS Active Fires NetCDF and ASCII files.
class satpy.readers.viirs_edr_active_fires.VIIRSActiveFiresFileHandler(filename, filename_info,
filetype_info,
auto_maskandscale=False,
xarray_kwargs=None)
Bases: NetCDF4FileHandler
NetCDF4 reader for VIIRS Active Fires.
Open and perform initial investigation of NetCDF file.
property end_time
Get last date/time when observations were recorded.
get_dataset(dsid, dsinfo)
Get requested data as DataArray.
Parameters
• dsid – Dataset ID
• param2 – Dataset Information
Returns
Data
Return type
Dask DataArray

370 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property platform_name
Name of platform/satellite for this file.
property sensor_name
Name of sensor for this file.
property start_time
Get first date/time when observations were recorded.
class satpy.readers.viirs_edr_active_fires.VIIRSActiveFiresTextFileHandler(filename,
filename_info,
filetype_info)
Bases: BaseFileHandler
ASCII reader for VIIRS Active Fires.
Make sure filepath is valid and then reads data into a Dask DataFrame.
Parameters
• filename – Filename
• filename_info – Filename information
• filetype_info – Filetype information
property end_time
Get last date/time when observations were recorded.
get_dataset(dsid, dsinfo)
Get requested data as DataArray.
property start_time
Get first date/time when observations were recorded.

satpy.readers.viirs_edr_flood module

Interface to VIIRS flood product.


class satpy.readers.viirs_edr_flood.VIIRSEDRFlood(filename, filename_info, filetype_info)
Bases: HDF4FileHandler
VIIRS EDR Flood-product handler for HDF4 files.
Open file and collect information.
property end_time
Get end time.
get_area_def(ds_id)
Get area definition.
get_dataset(ds_id, ds_info)
Get dataset.
get_metadata(data, ds_info)
Get metadata.
property platform_name
Get platform name.

2.15. satpy 371


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property sensor_name
Get sensor name.
property start_time
Get start time.

satpy.readers.viirs_l1b module

Interface to VIIRS L1B format.


class satpy.readers.viirs_l1b.VIIRSL1BFileHandler(filename, filename_info, filetype_info,
auto_maskandscale=False, xarray_kwargs=None,
cache_var_size=0, cache_handle=False)
Bases: NetCDF4FileHandler
VIIRS L1B File Reader.
Initialize object.
static _dataset_name_to_var_path(dataset_name: str, ds_info: dict) → str

_get_dataset_file_units(dataset_id, ds_info, var_path)

_get_dataset_valid_range(dataset_id, ds_info, var_path)

_is_scan_based_array(shape)

_parse_datetime(datestr)
Parse datetime.
adjust_scaling_factors(factors, file_units, output_units)
Adjust scaling factors.
available_datasets(configured_datasets=None)
Generate dataset info and their availablity.
See satpy.readers.file_handlers.BaseFileHandler.available_datasets() for details.
property end_orbit_number
Get end orbit number.
property end_time
Get end time.
get_dataset(dataset_id, ds_info)
Get dataset.
get_metadata(dataset_id, ds_info)
Get metadata.
get_shape(ds_id, ds_info)
Get shape.
property platform_name
Get platform name.
property sensor_name
Get sensor name.

372 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property start_orbit_number
Get start orbit number.
property start_time
Get start time.

satpy.readers.viirs_l2 module

Interface to VIIRS L2 format.


This reader implements the support of L2 files generated using the VIIRS instrument on SNPP and NOAA satellite
files. The intent of this reader is to be able to reproduce images from L2 layers in NASA worldview with identical
colormaps.
Currently a subset of four of these layers are supported 1. Deep Blue Aerosol Angstrom Exponent (Land and Ocean)
2. Clear Sky Confidence 3. Cloud Top Height 4. Deep Blue Aerosol Optical Thickness (Land and Ocean)
class satpy.readers.viirs_l2.VIIRSL2FileHandler(filename, filename_info, filetype_info,
auto_maskandscale=False, xarray_kwargs=None,
cache_var_size=0, cache_handle=False)
Bases: NetCDF4FileHandler
NetCDF File Handler for VIIRS L2 Products.
Initialize object.
_get_dataset_file_units(ds_info, var_path)

_get_dataset_valid_range(ds_info, var_path)

_parse_datetime(datestr)
Parse datetime.
adjust_scaling_factors(factors, file_units, output_units)
Adjust scaling factors.
available_datasets(configured_datasets=None)
Generate dataset info and their availablity.
See satpy.readers.file_handlers.BaseFileHandler.available_datasets() for details.
property end_orbit_number
Get end orbit number.
property end_time
Get end time.
get_dataset(ds_id, ds_info)
Get DataArray for specified dataset.
get_metadata(dataset_id, ds_info)
Get metadata.
property platform_name
Get platform name.
property sensor_name
Get sensor name.

2.15. satpy 373


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property start_orbit_number
Get start orbit number.
property start_time
Get start time.

satpy.readers.viirs_sdr module

Interface to VIIRS SDR format.


This reader implements the support of VIIRS SDR files as produced by CSPP and CLASS. It is comprised of two parts:
• A subclass of the YAMLFileReader class to allow handling all the files
• A filehandler class to implement the actual reading
Format documentation:
• http://npp.gsfc.nasa.gov/science/sciencedocuments/082012/474-00001-03_CDFCBVolIII_RevC.pdf
class satpy.readers.viirs_sdr.VIIRSSDRFileHandler(filename, filename_info, filetype_info,
use_tc=None, **kwargs)
Bases: JPSS_SDR_FileHandler
VIIRS SDR HDF5 File Reader.
Initialize file handler.
get_bounding_box()
Get the bounding box of this file.
get_dataset(dataset_id, ds_info)
Get the dataset corresponding to dataset_id.
The size of the return DataArray will be dependent on the number of scans actually sensed, and not neces-
sarily the regular 768 scanlines that the file contains for each granule. To that end, the number of scans for
each granule is read from: Data_Products/...Gran_x/N_Number_Of_Scans.
class satpy.readers.viirs_sdr.VIIRSSDRReader(config_files, use_tc=None, **kwargs)
Bases: FileYAMLReader
Custom file reader for finding VIIRS SDR geolocation at runtime.
Initialize file reader and adjust geolocation preferences.
Parameters
• config_files (iterable) – yaml config files passed to base class
• use_tc (boolean) – If True use the terrain corrected files. If False, switch to non-TC files.
If None (default), use TC if available, non-TC otherwise.
_abc_impl = <_abc._abc_data object>

_create_new_geo_file_handlers(geo_filenames)

_geo_dataset_groups(c_info)

_get_coordinates_for_dataset_key(dsid)
Get the coordinate dataset keys for dsid.
Wraps the base class method in order to load geolocation files from the geo reference attribute in the datasets
file.

374 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_file_handlers(dsid)
Get the file handler to load this dataset.
_get_primary_secondary_geo_groups(ds_info)
Find out which geolocation files are needed.
_is_viirs_dataset(datasets)

_load_filenames_from_geo_ref(dsid)
Load filenames from the N_GEO_Ref attribute of a dataset’s file.
_remove_datasets_from_files(filename_items, files_to_edit, considered_datasets)

_remove_geo_datasets_from_files(filename_items, files_to_edit)

_remove_non_viirs_datasets_from_files(filename_items, files_to_edit)

_remove_not_loaded_geo_dataset_group(c_dataset_groups, prime_geo, second_geo)

filter_filenames_by_info(filename_items)
Filter out file using metadata from the filenames.
This sorts out the different lon and lat datasets depending on TC is desired or not.
get_right_geo_fhs(dsid, fhs)
Find the right geographical file handlers for given dataset ID dsid.
satpy.readers.viirs_sdr._get_invalid_info(granule_data)
Get a detailed report of the missing data.
N/A: not applicable MISS: required value missing at time of processing OBPT: onboard pixel trim
(overlapping/bow-tie pixel removed during SDR processing) OGPT: on-ground pixel trim (overlapping/bow-
tie pixel removed during EDR processing) ERR: error occurred during processing / non-convergence ELINT:
ellipsoid intersect failed / instrument line-of-sight does not intersect the Earth’s surface VDNE: value does not
exist / processing algorithm did not execute SOUB: scaled out-of-bounds / solution not within allowed range
satpy.readers.viirs_sdr.split_desired_other(fhs, prime_geo, second_geo)
Split the provided filehandlers fhs into desired filehandlers and others.

satpy.readers.viirs_vgac_l1c_nc module

Reading VIIRS VGAC data.


class satpy.readers.viirs_vgac_l1c_nc.VGACFileHandler(filename, filename_info, filetype_info)
Bases: BaseFileHandler
Reader VGAC data.
Init the file handler.
calibrate(data, yaml_info, file_key, nc)
Calibrate data.
convert_to_bt(data, data_lut, scale_factor)
Convert radances to brightness temperatures.
decode_time_variable(data, file_key, nc)
Decide if time data should be decoded.

2.15. satpy 375


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property end_time
Get the end time.
extract_time_data(data, nc)
Decode time data.
fix_radiances_not_in_percent(data)
Scale radiances to percent. This was not done in first version of data.
get_dataset(key, yaml_info)
Get dataset.
set_time_attrs(data)
Set time from attributes.
property start_time
Get the start time.

satpy.readers.virr_l1b module

Interface to VIRR (Visible and Infra-Red Radiometer) level 1b format.


The file format is HDF5. Important attributes:
• Latitude
• Longitude
• SolarZenith
• EV_Emissive
• EV_RefSB
• Emissive_Radiance_Offsets
• Emissive_Radiance_Scales
• RefSB_Cal_Coefficients
• RefSB_Effective_Wavelength
• Emmisive_Centroid_Wave_Number
Supported satellites:
• FY-3B and FY-3C.
For more information:
• https://www.wmo-sat.info/oscar/instruments/view/607.
class satpy.readers.virr_l1b.VIRR_L1B(filename, filename_info, filetype_info)
Bases: HDF5FileHandler
VIRR Level 1b reader.
Open file and perform initial setup.
_calibrate_emissive(data, band_index)

_calibrate_reflective(data, band_index)

_correct_slope(slope)

376 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property end_time
Get ending observation time.
get_dataset(dataset_id, ds_info)
Create DataArray from file content for dataset_id.
property start_time
Get starting observation time.

satpy.readers.xmlformat module

Reads a format from an xml file to create dtypes and scaling factor arrays.
class satpy.readers.xmlformat.XMLFormat(filename)
Bases: object
XMLFormat object.
Init the format reader.
apply_scales(array)
Apply scales to array.
dtype(key)
Get the dtype for the format object.
satpy.readers.xmlformat._apply_scales(array, scales, dtype)
Apply scales to the array.
satpy.readers.xmlformat.parse_format(xml_file)
Parse the xml file to create types, scaling factor types, and scales.
satpy.readers.xmlformat.process_array(elt, text=False)
Process an ‘array’ tag.
satpy.readers.xmlformat.process_delimiter(elt, text=False)
Process a ‘delimiter’ tag.
satpy.readers.xmlformat.process_field(elt, text=False)
Process a ‘field’ tag.
satpy.readers.xmlformat.to_dtype(val)
Parse val to return a dtype.
satpy.readers.xmlformat.to_scaled_dtype(val)
Parse val to return a dtype.
satpy.readers.xmlformat.to_scales(val)
Parse val to return an array of scale factors.

satpy.readers.yaml_reader module

Base classes and utilities for all readers configured by YAML files.
class satpy.readers.yaml_reader.AbstractYAMLReader(config_dict)
Bases: object
Base class for all readers that use YAML configuration files.

2.15. satpy 377


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

This class should only be used in rare cases. Its child class FileYAMLReader should be used in most cases.
Load information from YAML configuration file about how to read data files.
_abc_impl = <_abc._abc_data object>

_build_id_permutations(dataset, id_keys)
Build each permutation/product of the dataset.
property all_dataset_ids
Get DataIDs of all datasets known to this reader.
property all_dataset_names
Get names of all datasets known to this reader.
property available_dataset_ids
Get DataIDs that are loadable by this reader.
property available_dataset_names
Get names of datasets that are loadable by this reader.
abstract property end_time
End time of the reader.
abstract filter_selected_filenames(filenames)
Filter provided filenames by parameters in reader configuration.
Returns: iterable of usable files
classmethod from_config_files(*config_files, **reader_kwargs)
Create a reader instance from one or more YAML configuration files.
get_dataset_key(key, **kwargs)
Get the fully qualified DataID matching key.
See satpy.readers.get_key for more information about kwargs.
abstract load(dataset_keys)
Load dataset_keys.
load_ds_ids_from_config()
Get the dataset ids from the config.
select_files_from_directory(directory=None, fs=None)
Find files for this reader in directory.
If directory is None or ‘’, look in the current directory.
Searches the local file system by default. Can search on a remote filesystem by passing an instance of a
suitable implementation of fsspec.spec.AbstractFileSystem.
Parameters
• directory (Optional[str]) – Path to search.
• fs (Optional[FileSystem]) – fsspec FileSystem implementation to use. Defaults to
None, using local file system.
Returns
list of strings describing matching files

378 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

select_files_from_pathnames(filenames)
Select the files from filenames this reader can handle.
property sensor_names
Names of sensors whose data is being loaded by this reader.
abstract property start_time
Start time of the reader.
supports_sensor(sensor)
Check if sensor is supported.
Returns True is sensor is None.
class satpy.readers.yaml_reader.FileYAMLReader(config_dict, filter_parameters=None,
filter_filenames=True, **kwargs)
Bases: GenericYAMLReader, DataDownloadMixin
Primary reader base class that is configured by a YAML file.
This class uses the idea of per-file “file handler” objects to read file contents and determine what is available
in the file. This differs from the base AbstractYAMLReader which does not depend on individual file handler
objects. In almost all cases this class should be used over its base class and can be used as a reader by itself and
requires no subclassing.
Set up initial internal storage for loading file data.
_abc_impl = <_abc._abc_data object>

static _assign_coords_from_dataarray(coords, ds)


Assign coords from the ds dataarray if needed.
_coords_cache: WeakValueDictionary = <WeakValueDictionary>

_file_handlers_available_datasets()
Generate a series of available dataset information.
This is done by chaining file handler’s satpy.readers.file_handlers.BaseFileHandler.
available_datasets() together. See that method’s documentation for more information.
Returns
Generator of (bool, dict) where the boolean tells whether the current dataset is available from
any of the file handlers. The boolean can also be None in the case where no loaded file handler
is configured to load the dataset. The dictionary is the metadata provided either by the YAML
configuration files or by the file handler itself if it is a new dataset. The file handler may have
also supplemented or modified the information.
_gather_ancillary_variables_ids(datasets)
Gather ancillary variables’ ids.
This adds/modifies the dataset’s ancillary_variables attr.
_get_coordinates_for_dataset_key(dsid)
Get the coordinate dataset keys for dsid.
_get_coordinates_for_dataset_keys(dsids)
Get all coordinates.
_get_file_handlers(dsid)
Get the file handler to load this dataset.

2.15. satpy 379


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_lons_lats_from_coords(coords)
Get lons and lats from the coords list.
_load_ancillary_variables(datasets, **kwargs)
Load the ancillary variables of datasets.
_load_area_def(dsid, file_handlers, **kwargs)
Load the area definition of dsid.
static _load_dataset(dsid, ds_info, file_handlers, dim='y', **kwargs)
Load only a piece of the dataset.
_load_dataset_area(dsid, file_handlers, coords, **kwargs)
Get the area for dsid.
_load_dataset_data(file_handlers, dsid, **kwargs)

_load_dataset_with_area(dsid, coords, **kwargs)


Load dsid and its area if available.
_make_area_from_coords(coords)
Create an appropriate area with the given coords.
_make_swath_definition_from_lons_lats(lons, lats)
Make a swath definition instance from lons and lats.
_new_filehandler_instances(filetype_info, filename_items, fh_kwargs=None)
Generate new filehandler instances.
_new_filehandlers_for_filetype(filetype_info, filenames, fh_kwargs=None)
Create filehandlers for a given filetype.
_preferred_filetype(filetypes)
Get the preferred filetype out of the filetypes list.
At the moment, it just returns the first filetype that has been loaded.
property available_dataset_ids
Get DataIDs that are loadable by this reader.
static check_file_covers_area(file_handler, check_area)
Check if the file covers the current area.
If the file doesn’t provide any bounding box information or ‘area’ was not provided in filter_parameters,
the check returns True.
create_filehandlers(filenames, fh_kwargs=None)
Organize the filenames into file types and create file handlers.
create_storage_items(files, **kwargs)
Create the storage items.
property end_time
End time of the latest file used by this reader.
filter_fh_by_metadata(filehandlers)
Filter out filehandlers using provide filter parameters.

380 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

find_required_filehandlers(requirements, filename_info)
Find the necessary file handlers for the given requirements.
We assume here requirements are available.
Raises
• KeyError, if no handler for the given requirements is available. –
• RuntimeError, if there is a handler for the given requirements, –
• but it doesn't match the filename info. –
get_dataset_key(key, available_only=False, **kwargs)
Get the fully qualified DataID matching key.
This will first search through available DataIDs, datasets that should be possible to load, and fallback
to “known” datasets, those that are configured but aren’t loadable from the provided files. Providing
available_only=True will stop this fallback behavior and raise a KeyError exception if no available
dataset is found.
Parameters
• key (str, float, DataID, DataQuery) – Key to search for in this reader.
• available_only (bool) – Search only loadable datasets for the provided key. Loadable
datasets are always searched first, but if available_only=False (default) then all known
datasets will be searched.
• kwargs – See satpy.readers.get_key() for more information about kwargs.
Returns
Best matching DataID to the provided key.
Raises
KeyError – if no key match is found.
load(dataset_keys, previous_datasets=None, **kwargs)
Load dataset_keys.
If previous_datasets is provided, do not reload those.
property sensor_names
Names of sensors whose data is being loaded by this reader.
property start_time
Start time of the earlier file used by this reader.
update_ds_ids_from_file_handlers()
Add or modify available dataset information.
Each file handler is consulted on whether or not it can load the dataset with the provided information dic-
tionary. See satpy.readers.file_handlers.BaseFileHandler.available_datasets() for more
information.
class satpy.readers.yaml_reader.GEOFlippableFileYAMLReader(config_dict, filter_parameters=None,
filter_filenames=True, **kwargs)
Bases: FileYAMLReader
Reader for flippable geostationary data.
Set up initial internal storage for loading file data.

2.15. satpy 381


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_abc_impl = <_abc._abc_data object>

_load_dataset_with_area(dsid, coords, upper_right_corner='native', **kwargs)


Load dsid and its area if available.
class satpy.readers.yaml_reader.GEOSegmentYAMLReader(config_dict, filter_parameters=None,
filter_filenames=True, **kwargs)
Bases: GEOFlippableFileYAMLReader
Reader for segmented geostationary data.
This reader pads the data to full geostationary disk if necessary.
This reader uses an optional pad_data keyword argument that can be passed to Scene.load() to control if
padding is done (True by default). Passing pad_data=False will return data unpadded.
When using this class in a reader’s YAML configuration, segmented file types (files that may have multiple
segments) should specify an extra expected_segments piece of file_type metadata. This tells this reader how
many total segments it should expect when padding data. Alternatively, the file patterns for a file type can
include a total_segments field which will be used if expected_segments is not defined. This will default
to 1 segment.
Set up initial internal storage for loading file data.
_abc_impl = <_abc._abc_data object>

_get_empty_segment(**kwargs)

_get_new_areadef_for_padded_segment(area, filetype, seg_size, segment, padding_type)

_get_new_areadef_heights(previous_area, previous_seg_size, **kwargs)

_get_segments_areadef_with_later_padded(file_handlers, filetype, dsid, available_segments,


expected_segments)

_get_y_area_extents_for_padded_segment(area, filetype, padding_type, seg_size, segment)

_load_area_def(dsid, file_handlers, pad_data=True)


Load the area definition of dsid with padding.
_load_area_def_with_padding(dsid, file_handlers)
Load the area definition of dsid with padding.
_load_dataset(dsid, ds_info, file_handlers, dim='y', pad_data=True)
Load only a piece of the dataset.
_pad_earlier_segments_area(file_handlers, dsid, area_defs)
Pad area definitions for missing segments that are earlier in sequence than the first available.
_pad_later_segments_area(file_handlers, dsid)
Pad area definitions for missing segments that are later in sequence than the first available.
_sort_segment_filehandler_by_segment_number()

create_filehandlers(filenames, fh_kwargs=None)
Create file handler objects and determine expected segments for each.
Additionally, sort the filehandlers by segment number to avoid issues with filenames where start_time or
alphabetic sorting does not produce the correct order.

382 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.readers.yaml_reader.GEOVariableSegmentYAMLReader(config_dict, filter_parameters=None,


filter_filenames=True, **kwargs)
Bases: GEOSegmentYAMLReader
GEOVariableSegmentYAMLReader for handling segmented GEO products with segments of variable height.
This YAMLReader overrides parts of the GEOSegmentYAMLReader to account for formats where the segments
can have variable heights. It computes the sizes of the padded segments using the information available in the
file(handlers), so that gaps of any size can be filled as needed.
This implementation was motivated by the FCI L1c format, where the segments (called chunks in the FCI
world) can have variable heights. It is however generic, so that any future reader can use it. The require-
ment for the reader is to have a method called get_segment_position_info, returning a dictionary containing the
positioning info for each segment (see example in satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler.
get_segment_position_info()).
For more information on please see the documentation of satpy.readers.yaml_reader.
GEOSegmentYAMLReader().
Initialise the GEOVariableSegmentYAMLReader object.
_abc_impl = <_abc._abc_data object>

_collect_segment_position_infos(filetype)

_extract_segment_location_dicts(filetype)

_get_empty_segment(dim=None, idx=None, filetype=None)

_get_new_areadef_heights(previous_area, previous_seg_size, segment_n=None, filetype=None)

_initialise_segment_infos(filetype)

_segment_heights(filetype, grid_width)
Compute optimal padded segment heights (in number of pixels) based on the location of available segments.
class satpy.readers.yaml_reader.GenericYAMLReader(config_dict, filter_parameters=None,
filter_filenames=True)
Bases: AbstractYAMLReader
A Generic YAML-based reader.
Set up the yaml reader.
_abc_impl = <_abc._abc_data object>

static filename_items_for_filetype(filenames, filetype_info)


Iterate over the filenames matching filetype_info.
filter_filenames_by_info(filename_items)
Filter out file using metadata from the filenames.
Currently only uses start and end time. If only start time is available from the filename, keep all the filename
that have a start time before the requested end time.
filter_selected_filenames(filenames)
Filter provided files based on metadata in the filename.
metadata_matches(sample_dict, file_handler=None)
Check that file metadata matches filter_parameters of this reader.

2.15. satpy 383


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

sorted_filetype_items()
Sort the instance’s filetypes in using order.
time_matches(fstart, fend)
Check that a file’s start and end time mtach filter_parameters of this reader.
satpy.readers.yaml_reader._compute_optimal_missing_segment_heights(seg_infos, grid_type,
expected_vertical_size)

satpy.readers.yaml_reader._compute_positioning_data_for_missing_group(segment_start_rows,
segment_end_rows,
segment_heights, group)

satpy.readers.yaml_reader._compute_proposed_sizes_of_missing_segments_in_group(group, seg-
ment_end_rows,
seg-
ment_start_rows)

satpy.readers.yaml_reader._find_missing_segments(file_handlers, ds_info, dsid)


Find missing segments.
satpy.readers.yaml_reader._flip_dataset_data_and_area_extents(dataset, area_extents_to_update,
flip_direction)
Flip the data and area extents array for a dataset.
satpy.readers.yaml_reader._get_current_scene_orientation(area_extents_to_update)
Get the current scene orientation from the area_extents.
satpy.readers.yaml_reader._get_dataset_area_extents_array(dataset_area_attr)
Get dataset area extents in a numpy array for further flipping.
satpy.readers.yaml_reader._get_empty_segment_with_height(empty_segment, new_height, dim)
Get a new empty segment with the specified height.
satpy.readers.yaml_reader._get_filebase(path, pattern)
Get the end of path of same length as pattern.
satpy.readers.yaml_reader._get_grid_width_to_grid_type(seg_info)

satpy.readers.yaml_reader._get_new_flipped_area_definition(dataset_area_attr,
area_extents_to_update,
flip_areadef_stacking)
Get a new area definition with updated area_extents for flipped geostationary datasets.
satpy.readers.yaml_reader._get_projection_type(dataset_area_attr)
Get the projection type from the crs coordinate operation method name.
satpy.readers.yaml_reader._get_target_scene_orientation(upper_right_corner)
Get the target scene orientation from the target upper_right_corner.
‘NE’ corresponds to target_eastright and target_northup being True.
satpy.readers.yaml_reader._init_positioning_arrays_for_variable_padding(chk_infos, grid_type,
exp_segment_nr)

satpy.readers.yaml_reader._load_area_def(dsid, file_handlers)
Load the area definition of dsid.

384 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.yaml_reader._match_filenames(filenames, pattern)
Get the filenames matching pattern.
satpy.readers.yaml_reader._populate_group_end_row_using_later_segment(group,
segment_end_rows,
segment_start_rows)

satpy.readers.yaml_reader._populate_group_start_end_row_using_neighbour_segments(group, seg-
ment_end_rows,
seg-
ment_start_rows)

satpy.readers.yaml_reader._populate_group_start_row_using_previous_segment(group, seg-
ment_end_rows,
seg-
ment_start_rows)

satpy.readers.yaml_reader._populate_positioning_arrays_with_available_segment_info(chk_infos,
grid_type,
seg-
ment_start_rows,
seg-
ment_end_rows,
seg-
ment_heights)

satpy.readers.yaml_reader._populate_start_end_rows_of_missing_segments_with_proposed_sizes(group,
pro-
posed_sizes_mis
seg-
ment_start_rows
seg-
ment_end_rows,
seg-
ment_heights)

satpy.readers.yaml_reader._set_orientation(dataset, upper_right_corner)
Set the orientation of geostationary datasets.
Allows to flip geostationary imagery when loading the datasets. Example call: scn.load([‘VIS008’], up-
per_right_corner=’NE’)
Parameters
• dataset – Dataset to be flipped.
• upper_right_corner (str) – Direction of the upper right corner of the image after flip-
ping. Possible options are ‘NW’, ‘NE’, ‘SW’, ‘SE’, or ‘native’. The common upright image
orientation corresponds to ‘NE’. Defaults to ‘native’ (no flipping is applied).
satpy.readers.yaml_reader._stack_area_defs(area_def_dict)
Stack given dict of area definitions and return a StackedAreaDefinition.
satpy.readers.yaml_reader._verify_reader_info_assign_config_files(config, config_files)

2.15. satpy 385


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.yaml_reader.listify_string(something)
Take something and make it a list.
something is either a list of strings or a string, in which case the function returns a list containing the string. If
something is None, an empty list is returned.
satpy.readers.yaml_reader.load_yaml_configs(*config_files, loader=<class 'yaml.cyaml.CLoader'>)
Merge a series of YAML reader configuration files.
Parameters
• *config_files (str) – One or more pathnames to YAML-based reader configuration files
that will be merged to create a single configuration.
• loader – Yaml loader object to load the YAML with. Defaults to CLoader if libyaml is
available, Loader otherwise.

Returns: dict
Dictionary representing the entire YAML configuration with the addition of config[‘reader’][‘config_files’]
(the list of YAML pathnames that were merged).

satpy.readers.yaml_reader.split_integer_in_most_equal_parts(x, n)
Split an integer number x in n parts that are as equally-sizes as possible.

Module contents

Shared objects of the various reader classes.


class satpy.readers.FSFile(file, fs=None)
Bases: PathLike
Implementation of a PathLike file object, that can be opened.
Giving the filenames to Scene with valid transfer protocols will automatically use this class so manual usage of
this class is needed mainly for fine-grained control.
This class is made to be used in conjuction with fsspec or s3fs. For example:

from satpy import Scene

import fsspec
filename = 'noaa-goes16/ABI-L1b-RadC/2019/001/17/*_G16_s20190011702186*'

the_files = fsspec.open_files("simplecache::s3://" + filename, s3={'anon': True})

from satpy.readers import FSFile


fs_files = [FSFile(open_file) for open_file in the_files]

scn = Scene(filenames=fs_files, reader='abi_l1b')


scn.load(['true_color_raw'])

Initialise the FSFile instance.


Parameters
• file (str, Pathlike, or OpenFile) – String, object implementing the os.PathLike
protocol, or an fsspec.OpenFile instance. If passed an instance of fsspec.OpenFile, the fol-
lowing argument fs has no effect.

386 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• fs (fsspec filesystem, optional) – Object implementing the fsspec filesystem pro-


tocol.
_abc_impl = <_abc._abc_data object>

_update_with_fs_open_kwargs(user_kwargs)
Complement keyword arguments for opening a file via file system.
property fs
Return the underlying private filesystem attribute.
open(*args, **kwargs)
Open the file.
This is read-only.
satpy.readers._assign_files_to_readers(files_to_sort, reader_names, reader_kwargs)
Assign files to readers.
Given a list of file names (paths), match those to reader instances.
Internal helper for group_files.
Parameters
• files_to_sort (Collection[str]) – Files to assign to readers.
• reader_names (Collection[str]) – Readers to consider
• reader_kwargs (Mapping)
Returns
Mapping[str, Tuple[reader, Set[str]]] Mapping where the keys are reader names and the values
are tuples of (reader_configs, filenames).
satpy.readers._check_reader_instances(reader_instances)

satpy.readers._check_remaining_files(remaining_filenames)

satpy.readers._early_exit(filenames, reader)

satpy.readers._filter_groups(groups, missing='pass')
Filter multi-reader group-files behavior.
Helper for group_files. When group_files is called with multiple readers, make sure that the desired behaviour
for missing files is enforced: if missing is "raise", raise an exception if at least one group has at least one reader
without files; if it is "skip", remove those. If it is "pass", do nothing. Yields groups to be kept.
Parameters
• groups (List[Mapping[str, List[str]]]) – groups as found by group_files.
• missing (str) – String controlling behaviour, see documentation above.
Yields
Mapping[str:, List[str]] – groups to be retained
satpy.readers._get_compression(file)

2.15. satpy 387


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers._get_file_keys_for_reader_files(reader_files, group_keys=None)
From a mapping from _assign_files_to_readers, get file keys.
Given a mapping where each key is a reader name and each value is a tuple of reader instance (typically Fi-
leYAMLReader) and a collection of files, return a mapping with the same keys, but where the values are lists of
tuples of (keys, filename), where keys are extracted from the filenames according to group_keys and filenames
are the names those keys were extracted from.
Internal helper for group_files.
Returns
Mapping[str, List[Tuple[Tuple, str]]], as described.
satpy.readers._get_fs_open_kwargs(file)
Get keyword arguments for opening a file via file system.
For example compression.
satpy.readers._get_keys_with_empty_values(grp)
Find mapping keys where values have length zero.
Helper for _filter_groups, which is in turn a helper for group_files. Given a mapping key -> Collection[Any],
return the keys where the length of the collection is zero.
Parameters
grp (Mapping[Any, Collection[Any]]) – dictionary to check
Returns
set of keys
satpy.readers._get_loadables_for_reader_config(base_dir, reader, sensor, reader_configs,
reader_kwargs, fs)
Get loadables for reader configs.
Helper for find_files_and_readers.
Parameters
• base_dir – as for find_files_and_readers
• reader – as for find_files_and_readers
• sensor – as for find_files_and_readers
• reader_configs – reader metadata such as returned by configs_for_reader.
• reader_kwargs – Keyword arguments to be passed to reader.
• fs (FileSystem) – as for find_files_and_readers
satpy.readers._get_reader_and_filenames(reader, filenames)

satpy.readers._get_reader_instance(reader, reader_configs, idx, reader_kwargs)

satpy.readers._get_reader_kwargs(reader, reader_kwargs)
Help load_readers to form reader_kwargs.
Helper for load_readers to get reader_kwargs and reader_kwargs_without_filter in the desirable form.
satpy.readers._get_readers_files(filenames, reader, idx, remaining_filenames)

388 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers._get_sorted_file_groups(all_file_keys, time_threshold)
Get sorted file groups.
Get a list of dictionaries, where each list item consists of a dictionary mapping a tuple of keys to a mapping of
reader names to files. The files listed in each list item are considered to be grouped within the same time.
Parameters
• all_file_keys
• _get_file_keys_for_reader_files (as returned by)
• time_threshold – temporal threshold
Returns
List[Mapping[Tuple, Mapping[str, List[str]]]], as described
Internal helper for group_files.
satpy.readers._log_yaml_error(reader_configs, err)

satpy.readers.available_readers(as_dict=False, yaml_loader=<class 'yaml.loader.UnsafeLoader'>)


Available readers based on current configuration.
Parameters
• as_dict (bool) – Optionally return reader information as a dictionary. Default: False.
• yaml_loader (Optional[Union[yaml.BaseLoader, yaml.FullLoader, yaml.
UnsafeLoader]]) – The yaml loader type. Default: yaml.UnsafeLoader.
Returns
List of available reader names. If as_dict is True then a list of dictionaries including additionally
reader information is returned.
Return type
Union[list[str], list[dict]]
satpy.readers.configs_for_reader(reader=None)
Generate reader configuration files for one or more readers.
Parameters
reader (Optional[str]) – Yield configs only for this reader
Returns: Generator of lists of configuration files
satpy.readers.find_files_and_readers(start_time=None, end_time=None, base_dir=None, reader=None,
sensor=None, filter_parameters=None, reader_kwargs=None,
missing_ok=False, fs=None)
Find files matching the provided parameters.
Use start_time and/or end_time to limit found filenames by the times in the filenames (not the internal file meta-
data). Files are matched if they fall anywhere within the range specified by these parameters.
Searching is NOT recursive.
Files may be either on-disk or on a remote file system. By default, files are searched for locally. Users can search
on remote filesystems by passing an instance of an implementation of fsspec.spec.AbstractFileSystem (strictly
speaking, any object of a class implementing a glob method works).
If locating files on a local file system, the returned dictionary can be passed directly to the Scene object through
the filenames keyword argument. If it points to a remote file system, it is the responsibility of the user to download
the files first (directly reading from cloud storage is not currently available in Satpy).

2.15. satpy 389


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

The behaviour of time-based filtering depends on whether or not the filename contains information about the end
time of the data or not:
• if the end time is not present in the filename, the start time of the filename is used and has to fall between
(inclusive) the requested start and end times
• otherwise, the timespan of the filename has to overlap the requested timespan
Example usage for querying a s3 filesystem using the s3fs module:

>>> import s3fs, satpy.readers, datetime


>>> satpy.readers.find_files_and_readers(
... base_dir="s3://noaa-goes16/ABI-L1b-RadF/2019/321/14/",
... fs=s3fs.S3FileSystem(anon=True),
... reader="abi_l1b",
... start_time=datetime.datetime(2019, 11, 17, 14, 40))
{'abi_l1b': [...]}

Parameters
• start_time (datetime) – Limit used files by starting time.
• end_time (datetime) – Limit used files by ending time.
• base_dir (str) – The directory to search for files containing the data to load. Defaults to
the current directory.
• reader (str or list) – The name of the reader to use for loading the data or a list of
names.
• sensor (str or list) – Limit used files by provided sensors.
• filter_parameters (dict) – Filename pattern metadata to filter on. start_time
and end_time are automatically added to this dictionary. Shortcut for
reader_kwargs[‘filter_parameters’].
• reader_kwargs (dict) – Keyword arguments to pass to specific reader instances to further
configure file searching.
• missing_ok (bool) – If False (default), raise ValueError if no files are found. If True, return
empty dictionary if no files are found.
• fs (fsspec.spec.AbstractFileSystem) – Optional, instance of implementation of
fsspec.spec.AbstractFileSystem (strictly speaking, any object of a class implement-
ing .glob is enough). Defaults to searching the local filesystem.
Returns
Dictionary mapping reader name string to list of filenames
Return type
dict

satpy.readers.get_valid_reader_names(reader)
Check for old reader names or readers pending deprecation.
satpy.readers.group_files(files_to_sort, reader=None, time_threshold=10, group_keys=None,
reader_kwargs=None, missing='pass')
Group series of files by file pattern information.

390 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

By default this will group files by their filename start_time assuming it exists in the pattern. By passing the
individual dictionaries returned by this function to the Scene classes’ filenames, a series Scene objects can be
easily created.
Parameters
• files_to_sort (iterable) – File paths to sort in to group
• reader (str or Collection[str]) – Reader or readers whose file patterns should be
used to sort files. If not given, try all readers (slow, adding a list of readers is strongly
recommended).
• time_threshold (int) – Number of seconds used to consider time elements in a group as
being equal. For example, if the ‘start_time’ item is used to group files then any time within
time_threshold seconds of the first file’s ‘start_time’ will be seen as occurring at the same
time.
• group_keys (list or tuple) – File pattern information to use to group files. Keys
are sorted in order and only the first key is used when comparing datetime elements with
time_threshold (see above). This means it is recommended that datetime values should only
come from the first key in group_keys. Otherwise, there is a good chance that files will not
be grouped properly (datetimes being barely unequal). Defaults to a reader’s group_keys
configuration (set in YAML), otherwise ('start_time',). When passing multiple read-
ers, passing group_keys is strongly recommended as the behaviour without doing so is un-
defined.
• reader_kwargs (dict) – Additional keyword arguments to pass to reader creation.
• missing (str) – Parameter to control the behavior in the scenario where multiple readers
were passed, but at least one group does not have files associated with every reader. Valid
values are "pass" (the default), "skip", and "raise". If set to "pass", groups are passed
as-is. Some groups may have zero files for some readers. If set to "skip", groups for
which one or more readers have zero files are skipped (meaning that some files may not
be associated to any group). If set to "raise", raise a FileNotFoundError in case there are
any groups for which one or more readers have no files associated.
Returns
List of dictionaries mapping ‘reader’ to a list of filenames. Each of these dictionaries can be
passed as filenames to a Scene object.
satpy.readers.load_reader(reader_configs, **reader_kwargs)
Import and setup the reader from reader_info.
satpy.readers.load_readers(filenames=None, reader=None, reader_kwargs=None)
Create specified readers and assign files to them.
Parameters
• filenames (iterable or dict) – A sequence of files that will be used to load data from.
A dict object should map reader names to a list of filenames for that reader.
• reader (str or list) – The name of the reader to use for loading the data or a list of
names.
• reader_kwargs (dict) – Keyword arguments to pass to specific reader instances. This
can either be a single dictionary that will be passed to all reader instances, or a mapping of
reader names to dictionaries. If the keys of reader_kwargs match exactly the list of strings
in reader or the keys of filenames, each reader instance will get its own keyword arguments
accordingly.
Returns: Dictionary mapping reader name to reader instance

2.15. satpy 391


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.open_file_or_filename(unknown_file_thing, mode=None)
Try to open the provided file “thing” if needed, otherwise return the filename or Path.
This wraps the logic of getting something like an fsspec OpenFile object that is not directly supported by most
reading libraries and making it usable. If a pathlib.Path object or something that is not open-able is provided
then that object is passed along. In the case of fsspec OpenFiles their .open() method is called and the result
returned.
satpy.readers.read_reader_config(config_files, loader=<class 'yaml.loader.UnsafeLoader'>)
Read the reader config_files and return the extracted reader metadata.

satpy.tests package

Subpackages

satpy.tests.cf_tests package

Submodules

satpy.tests.cf_tests._test_data module

Functions and fixture to test CF code.


satpy.tests.cf_tests._test_data.get_test_attrs()
Create some dataset attributes for testing purpose.
Returns
Attributes, encoded attributes, encoded and flattened attributes

satpy.tests.cf_tests.test_area module

Tests for the CF Area.


class satpy.tests.cf_tests.test_area.TestCFArea
Bases: object
Test case for CF Area.
test_add_grid_mapping_cf_repr(input_data_arr)
Test the conversion from pyresample area object to CF grid mapping.
Projection has a corresponding CF representation (e.g. geos).
test_add_grid_mapping_cf_repr_no_ab(input_data_arr)
Test the conversion from pyresample area object to CF grid mapping.
Projection has a corresponding CF representation but no explicit a/b.
test_add_grid_mapping_no_cf_repr(input_data_arr)
Test the conversion from pyresample area object to CF grid mapping.
Projection does not have a corresponding CF representation (e.g. COSMO).
test_add_grid_mapping_oblique_mercator(input_data_arr)
Test the conversion from pyresample area object to CF grid mapping.
Projection is oblique mercator.

392 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_add_grid_mapping_transverse_mercator(input_data_arr)
Test the conversion from pyresample area object to CF grid mapping.
Projection is transverse mercator.
test_add_lonlat_coords(dims)
Test the conversion from areas to lon/lat.
test_area2cf_geos_area_nolonlats(input_data_arr, include_lonlats)
Test the conversion of an area to CF standards.
test_area2cf_swath(input_data_arr)
Test area2cf for swath definitions.
satpy.tests.cf_tests.test_area._gm_matches(gmapping, expected)
Assert that all keys in expected match the values in gmapping.
satpy.tests.cf_tests.test_area.input_data_arr() → DataArray
Create a data array.

satpy.tests.cf_tests.test_attrs module

Tests for CF-compatible attributes encoding.


class satpy.tests.cf_tests.test_attrs.TestCFAttributeEncoding
Bases: object
Test case for CF attribute encodings.
test__encode_nc_attrs()
Test attributes encoding.

satpy.tests.cf_tests.test_coords module

CF processing of time information (coordinates and dimensions).


class satpy.tests.cf_tests.test_coords.TestCFcoords
Bases: object
Test cases for CF spatial dimension and coordinates.
datasets()
Create test dataset.
test__is_lon_or_lat_dataarray(datasets)
Test the _is_lon_or_lat_dataarray function.
test_add_coordinates_attrs_coords()
Check that coordinates link has been established correctly.
test_check_unique_projection_coords()
Test that the x and y coordinates are unique.
test_ensure_unique_nondimensional_coords()
Test that created coordinate variables are unique.
test_has_projection_coords(datasets)
Test the has_projection_coords function.

2.15. satpy 393


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_is_projected(caplog)
Tests for private _is_projected function.
class satpy.tests.cf_tests.test_coords.TestCFtime
Bases: object
Test cases for CF time dimension and coordinates.
test_add_time_bounds_dimension()
Test addition of CF-compliant time attributes.

satpy.tests.cf_tests.test_dataaarray module

Tests CF-compliant DataArray creation.


class satpy.tests.cf_tests.test_dataaarray.TestCfDataArray
Bases: object
Test creation of CF DataArray.
test_make_cf_dataarray()
Test the conversion of a DataArray to a CF-compatible DataArray.
test_make_cf_dataarray_one_dimensional_array()
Test the conversion of an 1d DataArray to a CF-compatible DataArray.
satpy.tests.cf_tests.test_dataaarray.test_make_cf_dataarray_lonlat()
Test correct CF encoding for area with lon/lat units.
satpy.tests.cf_tests.test_dataaarray.test_preprocess_dataarray_name()
Test saving an array to netcdf/cf where dataset name starting with a digit with prefix include orig name.

satpy.tests.cf_tests.test_datasets module

Tests CF-compliant Dataset(s) creation.


class satpy.tests.cf_tests.test_datasets.TestCollectCfDataset
Bases: object
Test case for collect_cf_dataset.
test_collect_cf_dataset()
Test collecting CF datasets from a DataArray objects.
test_collect_cf_dataset_with_latitude_named_lat()
Test collecting CF datasets with latitude named lat.
test_geographic_area_coords_attrs()
Test correct storage for area with lon/lat units.
class satpy.tests.cf_tests.test_datasets.TestCollectCfDatasets
Bases: object
Test case for collect_cf_datasets.
test_empty_collect_cf_datasets()
Test that if no DataArrays, collect_cf_datasets raise error.

394 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.cf_tests.test_decoding module

Tests for CF decoding.


class satpy.tests.cf_tests.test_decoding.TestDecodeAttrs
Bases: object
Test decoding of CF-encoded attributes.
attrs()
Get CF-encoded attributes.
expected()
Get expected decoded results.
test_decoding(attrs, expected)
Test decoding of CF-encoded attributes.
test_decoding_doesnt_modify_original(attrs)
Test that decoding doesn’t modify the original attributes.

satpy.tests.cf_tests.test_encoding module

Tests for compatible netCDF/Zarr DataArray encodings.


class satpy.tests.cf_tests.test_encoding.TestUpdateEncoding
Bases: object
Test update of dataset encodings.
fake_ds()
Create fake data for testing.
fake_ds_digit()
Create fake data for testing.
test_dataset_name_digit(fake_ds_digit)
Test data with dataset name staring with a digit.
test_with_time(fake_ds)
Test data with a time dimension.
test_without_time(fake_ds)
Test data with no time dimension.

Module contents

The CF dataset tests package.

satpy.tests.compositor_tests package

Submodules

satpy.tests.compositor_tests.test_abi module

Tests for ABI compositors.

2.15. satpy 395


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.compositor_tests.test_abi.TestABIComposites(methodName='runTest')
Bases: TestCase
Test ABI-specific composites.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_load_composite_yaml()
Test loading the yaml for this sensor.
test_simulated_green()
Test creating a fake ‘green’ band.

satpy.tests.compositor_tests.test_agri module

Tests for AGRI compositors.


class satpy.tests.compositor_tests.test_agri.TestAGRIComposites(methodName='runTest')
Bases: TestCase
Test AGRI-specific composites.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_load_composite_yaml()
Test loading the yaml for this sensor.
test_simulated_red()
Test creating a fake ‘red’ band.

satpy.tests.compositor_tests.test_ahi module

Tests for AHI compositors.


class satpy.tests.compositor_tests.test_ahi.TestAHIComposites(methodName='runTest')
Bases: TestCase
Test AHI-specific composites.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_load_composite_yaml()
Test loading the yaml for this sensor.

396 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.compositor_tests.test_glm module

Tests for GLM compositors.


class satpy.tests.compositor_tests.test_glm.TestGLMComposites
Bases: object
Test GLM-specific composites.
test_highlight_compositor()
Test creating a highlight composite.
test_load_composite_yaml()
Test loading the yaml for this sensor.

satpy.tests.compositor_tests.test_sar module

Tests for SAR compositors.


class satpy.tests.compositor_tests.test_sar.TestSARComposites(methodName='runTest')
Bases: TestCase
Test SAR-specific composites.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_sar_ice()
Test creating a the sar_ice composite.
test_sar_ice_log()
Test creating a the sar_ice_log composite.

satpy.tests.compositor_tests.test_spectral module

Tests for spectral correction compositors.


class satpy.tests.compositor_tests.test_spectral.TestNdviHybridGreenCompositor
Bases: object
Test NDVI-weighted hybrid green correction of green band.
setup_method()
Initialize channels.
test_invalid_strength()
Test using invalid strength term for non-linear scaling.
test_ndvi_hybrid_green()
Test General functionality with linear scaling from ndvi to blend fraction.
test_ndvi_hybrid_green_dtype()
Test that the datatype is not altered by the compositor.

2.15. satpy 397


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_nonlinear_scaling()
Test non-linear scaling using strength term.
test_with_slightly_mismatching_coord_input()
Test the case where an input (typically the red band) has a slightly different coordinate.
If match_data_arrays is called correctly, the coords will be aligned and the array will have the expected
shape.
class satpy.tests.compositor_tests.test_spectral.TestSpectralComposites
Bases: object
Test composites for spectral channel corrections.
setup_method()
Initialize channels.
test_bad_lengths()
Test that error is raised if the amount of channels to blend does not match the number of weights.
test_hybrid_green()
Test hybrid green correction of the ‘green’ band.
test_spectral_blender()
Test the base class for spectral blending of channels.

satpy.tests.compositor_tests.test_viirs module

Tests for VIIRS compositors.


class satpy.tests.compositor_tests.test_viirs.TestVIIRSComposites
Bases: object
Test various VIIRS-specific composites.
area()
Return fake area for use with DNB tests.
dnb(area)
Return fake channel 1 data for DNB tests.
lza(area)
Return fake lunal zenith angle dataset for DNB tests.
sza(area)
Return fake sza dataset for DNB tests.
test_adaptive_dnb(dnb, sza)
Test the ‘adaptive_dnb’ compositor.
test_erf_dnb(dnb_units, saturation_correction, area, sza, lza)
Test the ‘dynamic_dnb’ or ERF DNB compositor.
test_histogram_dnb(dnb, sza)
Test the ‘histogram_dnb’ compositor.
test_hncc_dnb(area, dnb, sza, lza)
Test the ‘hncc_dnb’ compositor.

398 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_hncc_dnb_nomoonpha(area, dnb, sza, lza)


Test the ‘hncc_dnb’ compositor when no moon phase data is provided.
test_load_composite_yaml()
Test loading the yaml for this sensor.
test_snow_age(area)
Test the ‘snow_age’ compositor.

Module contents

Tests for compositors.

satpy.tests.enhancement_tests package

Submodules

satpy.tests.enhancement_tests.test_abi module

Unit testing for the ABI enhancement functions.


class satpy.tests.enhancement_tests.test_abi.TestABIEnhancement(methodName='runTest')
Bases: TestCase
Test the ABI enhancement functions.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Create fake data for the tests.
test_cimss_true_color_contrast()
Test the cimss_true_color_contrast enhancement.

satpy.tests.enhancement_tests.test_enhancements module

Unit testing the enhancements functions, e.g. cira_stretch.


class satpy.tests.enhancement_tests.test_enhancements.TestColormapLoading
Bases: object
Test utilities used with colormaps.
test_cmap_bad_mode(real_mode, forced_mode, filename_suffix)
Test that reading colormaps with the wrong mode fails.
test_cmap_error_with_only_one_alpha_set(alpha_arg)
Test that when only min_alpha or max_alpha arguments are set an error is raised.
test_cmap_from_config_path(tmp_path)
Test loading a colormap relative to a config path.

2.15. satpy 399


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_cmap_from_file(color_scale, colormap_mode, extra_kwargs, filename_suffix)


Test that colormaps can be loaded from a binary file.
test_cmap_from_file_bad_shape()
Test that unknown array shape causes an error.
test_cmap_from_trollimage()
Test that colormaps in trollimage can be loaded.
test_cmap_list()
Test that colors can be a list/tuple.
test_cmap_no_colormap()
Test that being unable to create a colormap raises an error.
test_cmap_vrgb_as_rgba()
Test that data created as VRGB still reads as RGBA.
test_cmap_with_alpha_set()
Test that the min_alpha and max_alpha arguments set the alpha channel correctly.
class satpy.tests.enhancement_tests.test_enhancements.TestEnhancementStretch
Bases: object
Class for testing enhancements in satpy.enhancements.
setup_method()
Create test data used by every test.
tearDown()
Clean up.
test_apply_enhancement(input_data_name, decorator, exp_call_cls)
Test the ‘apply_enhancement’ utility function.
test_btemp_threshold()
Test applying the cira_stretch.
test_cira_stretch(dtype)
Test applying the cira_stretch.
test_colorize()
Test the colorize enhancement function.
test_lookup()
Test the lookup enhancement function.
test_merge_colormaps()
Test merging colormaps.
test_palettize()
Test the palettize enhancement function.
test_piecewise_linear_stretch()
Test the piecewise_linear_stretch enhancement function.
test_reinhard()
Test the reinhard algorithm.

400 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_three_d_effect()
Test the three_d_effect enhancement function.
class satpy.tests.enhancement_tests.test_enhancements.TestTCREnhancement
Bases: object
Test the AHI enhancement functions.
setup_method()
Create test data.
test_jma_true_color_reproduction()
Test the jma_true_color_reproduction enhancement.
satpy.tests.enhancement_tests.test_enhancements._assert_image(img, pre_attrs, func_name,
has_palette)

satpy.tests.enhancement_tests.test_enhancements._assert_image_data(img, expected, dtype=None)

satpy.tests.enhancement_tests.test_enhancements._generate_cmap_test_data(color_scale,
colormap_mode)

satpy.tests.enhancement_tests.test_enhancements._get_enhanced_image(func, data, **kwargs)

satpy.tests.enhancement_tests.test_enhancements._write_cmap_to_file(cmap_filename,
cmap_data)

satpy.tests.enhancement_tests.test_enhancements.closed_named_temp_file(**kwargs)
Named temporary file context manager that closes the file after creation.
This helps with Windows systems which can get upset with opening or deleting a file that is already open.
satpy.tests.enhancement_tests.test_enhancements.fake_area()
Return a fake 2×2 area.
satpy.tests.enhancement_tests.test_enhancements.identical_decorator(func)
Decorate but do nothing.
satpy.tests.enhancement_tests.test_enhancements.run_and_check_enhancement(func, data,
expected,
**kwargs)
Perform basic checks that apply to multiple tests.
satpy.tests.enhancement_tests.test_enhancements.run_and_check_enhancement_with_dtype(func,
data,
ex-
pected,
**kwargs)
Perform basic checks that apply to multiple tests.
satpy.tests.enhancement_tests.test_enhancements.test_nwcsaf_comps(fake_area, tmp_path, data)
Test loading NWCSAF composites.
satpy.tests.enhancement_tests.test_enhancements.test_on_dask_array()
Test the on_dask_array decorator.
satpy.tests.enhancement_tests.test_enhancements.test_on_separate_bands()
Test the on_separate_bands decorator.

2.15. satpy 401


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.enhancement_tests.test_enhancements.test_using_map_blocks()
Test the using_map_blocks decorator.

satpy.tests.enhancement_tests.test_viirs module

Unit testing for the VIIRS enhancement function.


class satpy.tests.enhancement_tests.test_viirs.TestVIIRSEnhancement(methodName='runTest')
Bases: TestCase
Class for testing the VIIRS enhancement function in satpy.enhancements.viirs.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Create test data.
test_viirs()
Test VIIRS flood enhancement.

Module contents

The enhancements tests package.

satpy.tests.modifier_tests package

Submodules

satpy.tests.modifier_tests.test_angles module

Tests for the angles in modifiers.


class satpy.tests.modifier_tests.test_angles.TestAngleGeneration
Bases: object
Test the angle generation utility functions.
static _check_cache_and_clear(tmp_path, exp_num_zarr)

static _check_cached_result(results, exp_zarr_chunks)

test_cache_get_angles(input_func, num_normalized_chunks, exp_zarr_chunks, input2_func,


exp_equal_sun, exp_num_zarr, force_bad_glob, tmp_path)
Test get_angles when caching is enabled.
test_cached_no_chunks_fails(tmp_path)
Test that trying to pass non-dask arrays and no chunks fails.
test_cached_result_numpy_fails(tmp_path)
Test that trying to cache with non-dask arrays fails.

402 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_caching_with_array_in_args_does_not_warn_when_caching_is_not_enabled(tmp_path,
recwarn)
Test that trying to cache with non-dask arrays fails.
test_caching_with_array_in_args_warns(tmp_path)
Test that trying to cache with non-dask arrays fails.
test_get_angles(input_func, exp_calls)
Test sun and satellite angle calculation.
test_get_angles_satpos_preference(forced_preference)
Test that ‘actual’ satellite position is used for generating sensor angles.
test_no_cache_dir_fails(tmp_path)
Test that ‘cache_dir’ not being set fails.
test_relative_azimuth_calculation()
Test relative azimuth calculation.
test_solazi_correction(dtype)
Test that solar azimuth angles are corrected into the right range.
satpy.tests.modifier_tests.test_angles._angle_cache_area_def()

satpy.tests.modifier_tests.test_angles._angle_cache_stacked_area_def()

satpy.tests.modifier_tests.test_angles._assert_allclose_if(expect_equal, arr1, arr2)

satpy.tests.modifier_tests.test_angles._diff_sat_pos_datetime(orig_data)

satpy.tests.modifier_tests.test_angles._get_angle_test_data(area_def: AreaDefinition |
StackedAreaDefinition | None = None,
chunks: int | tuple | None = 2, shape:
tuple = (5, 5), dims: tuple | None =
None) → DataArray

satpy.tests.modifier_tests.test_angles._get_angle_test_data_odd_chunks()

satpy.tests.modifier_tests.test_angles._get_angle_test_data_odd_chunks2()

satpy.tests.modifier_tests.test_angles._get_angle_test_data_rgb()

satpy.tests.modifier_tests.test_angles._get_angle_test_data_rgb_nodims()

satpy.tests.modifier_tests.test_angles._get_stacked_angle_test_data()

satpy.tests.modifier_tests.test_angles._glob_reversed(pat)
Behave like glob but force results to be in the wrong order.
satpy.tests.modifier_tests.test_angles._mock_glob_if(mock_glob)

satpy.tests.modifier_tests.test_angles._similar_sat_pos_datetime(orig_data, lon_offset=0.04)

satpy.tests.modifier_tests.test_crefl module

Tests for the CREFL ReflectanceCorrector modifier.

2.15. satpy 403


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.modifier_tests.test_crefl.TestReflectanceCorrectorModifier
Bases: object
Test the CREFL modifier.
static data_area_ref_corrector()
Create test area definition and data.
test_reflectance_corrector_abi(name, wavelength, resolution, exp_mean, exp_unique)
Test ReflectanceCorrector modifier with ABI data.
test_reflectance_corrector_bad_prereqs()
Test ReflectanceCorrector modifier with wrong number of inputs.
test_reflectance_corrector_different_chunks(tmpdir, url, dem_mock_cm, dem_sds)
Test that the modifier works with different chunk sizes for inputs.
The modifier uses dask’s “map_blocks”. If the input chunks aren’t the same an error is raised.
test_reflectance_corrector_modis()
Test ReflectanceCorrector modifier with MODIS data.
test_reflectance_corrector_viirs(tmpdir, url, dem_mock_cm, dem_sds)
Test ReflectanceCorrector modifier with VIIRS data.
satpy.tests.modifier_tests.test_crefl._create_fake_dem_file(dem_fn, var_name, fill_value)

satpy.tests.modifier_tests.test_crefl._make_viirs_xarray(data, area, name, standard_name,


wavelength=None, units='degrees',
calibration=None)

satpy.tests.modifier_tests.test_crefl._mock_and_create_dem_file(tmpdir, url, var_name,


fill_value=None)

satpy.tests.modifier_tests.test_crefl._mock_dem_retrieve(tmpdir, url)

satpy.tests.modifier_tests.test_crefl.mock_cmgdem(tmpdir, url)
Create fake file representing CMGDEM.hdf.
satpy.tests.modifier_tests.test_crefl.mock_tbase(tmpdir, url)
Create fake file representing tbase.hdf.

satpy.tests.modifier_tests.test_filters module

Implementation of some image filters.


satpy.tests.modifier_tests.test_filters.test_median(caplog)
Test the median filter modifier.

satpy.tests.modifier_tests.test_parallax module

Tests related to parallax correction.


class satpy.tests.modifier_tests.test_parallax.TestForwardParallax
Bases: object
Test the forward parallax function with various inputs.

404 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_get_parallax_corrected_lonlats_clearsky()
Test parallax correction for clearsky case (returns NaN).
test_get_parallax_corrected_lonlats_cloudy_slant()
Test parallax correction for fully cloudy scene (not SSP).
test_get_parallax_corrected_lonlats_cloudy_ssp(lat, lon, resolution)
Test parallax correction for fully cloudy scene at SSP.
test_get_parallax_corrected_lonlats_horizon()
Test that exception is raised if satellites exactly at the horizon.
Test the rather unlikely case of a satellite elevation of exactly 0
test_get_parallax_corrected_lonlats_mixed()
Test parallax correction for mixed cloudy case.
test_get_parallax_corrected_lonlats_ssp()
Test that at SSP, parallax correction does nothing.
test_get_surface_parallax_displacement()
Test surface parallax displacement.
class satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionClass
Bases: object
Test that the ParallaxCorrection class is behaving sensibly.
test_correct_area_clearsky(sat_pos, ar_pos, resolution, caplog)
Test that ParallaxCorrection doesn’t change clearsky geolocation.
test_correct_area_clearsky_different_resolutions(res1, res2)
Test clearsky correction when areas have different resolutions.
test_correct_area_cloudy_no_overlap()
Test cloudy correction when areas have no overlap.
test_correct_area_cloudy_partly_shifted()
Test cloudy correction when areas overlap only partly.
test_correct_area_cloudy_same_area()
Test cloudy correction when areas are the same.
test_correct_area_no_orbital_parameters(caplog, fake_tle)
Test ParallaxCorrection when CTH has no orbital parameters.
Some CTH products, such as NWCSAF-GEO, do not include information on satellite location directly.
Rather, they include platform name, sensor, start time, and end time, that we have to use instead.
test_correct_area_partlycloudy(daskify)
Test ParallaxCorrection for partly cloudy situation.
test_correct_area_ssp(lat, lon, resolution)
Test that ParallaxCorrection doesn’t touch SSP.
test_init_parallaxcorrection(center, sizes, resolution)
Test that ParallaxCorrection class can be instantiated.

2.15. satpy 405


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionModifier
Bases: object
Test that the parallax correction modifier works correctly.
_get_fake_cloud_datasets(test_area, cth, use_dask)
Return datasets for BT and CTH for fake cloud.
test_area(request)
Produce test area for parallax correction unit tests.
Produce test area for the modifier-interface parallax correction unit tests.
test_modifier_interface_cloud_moves_to_observer(cth, use_dask, test_area)
Test that a cloud moves to the observer.
With the modifier interface, use a high resolution area and test that pixels are moved in the direction of the
observer and not away from it.
test_modifier_interface_fog_no_shift(test_area)
Test that fog isn’t masked or shifted.
test_parallax_modifier_interface()
Test the modifier interface.
test_parallax_modifier_interface_with_cloud()
Test the modifier interface with a cloud.
Test corresponds to a real bug encountered when using CTH data from NWCSAF-GEO, which created
strange speckles in Africa (see https://github.com/pytroll/satpy/pull/1904#issuecomment-1011161623 for
an example). Create fake CTH corresponding to NWCSAF-GEO area and BT corresponding to full disk
SEVIRI, and test that no strange speckles occur.
class satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionSceneLoad
Bases: object
Test that scene load interface works as expected.
conf_file(yaml_code, tmp_path)
Produce a fake configuration file.
fake_scene(yaml_code)
Produce fake scene and prepare fake composite config.
test_double_load(fake_scene, conf_file, fake_tle)
Test that loading corrected and uncorrected works correctly.
When the modifier __call__ method fails to call self.apply_modifier_info(new, old) and the
original and parallax-corrected dataset are requested at the same time, the DataArrays differ but the under-
lying dask arrays have object identity, which in turn leads to both being parallax corrected. This unit test
confirms that there is no such object identity.
test_enhanced_image(fake_scene, conf_file, fake_tle)
Test that image enhancement is the same.
test_no_compute(fake_scene, conf_file)
Test that no computation occurs.
yaml_code()
Return YAML code for parallax_corrected_VIS006.

406 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.modifier_tests.test_parallax._get_attrs(lat, lon, height=35000)


Get attributes for datasets in fake scene.
satpy.tests.modifier_tests.test_parallax._get_fake_areas(center, sizes, resolution, code=4326)
Get multiple square areas with the same center.
Returns multiple square areas centered at the same location
Parameters
• center (Tuple[float, float]) – Center of all areass
• sizes (List[int]) – Sizes of areas
• resolution (float) – Resolution of fake area.
Returns
List of areas.
satpy.tests.modifier_tests.test_parallax.fake_tle()
Produce fake Two Line Element (TLE) object from pyorbital.

Module contents

Tests for modifiers.

satpy.tests.multiscene_tests package

Submodules

satpy.tests.multiscene_tests.test_blend module

Unit tests for blending datasets with the Multiscene object.


class satpy.tests.multiscene_tests.test_blend.TestBlendFuncs
Bases: object
Test individual functions used for blending.
datasets_and_weights()
X-Array datasets with area definition plus weights for input to tests.
test_blend_function_stack(datasets_and_weights)
Test the ‘stack’ function.
test_blend_function_stack_weighted(datasets_and_weights, line, column)
Test the ‘stack_weighted’ function.
test_blend_two_scenes_bad_blend_type(multi_scene_and_weights, groups)
Test exception is raised when bad ‘blend_type’ is used.
test_blend_two_scenes_using_stack(multi_scene_and_weights, groups, scene1_with_weights,
scene2_with_weights)
Test blending two scenes by stacking them on top of each other using function ‘stack’.
test_blend_two_scenes_using_stack_weighted(multi_scene_and_weights, groups,
scene1_with_weights, scene2_with_weights,
blend_func, exp_result_func)

2.15. satpy 407


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Test stacking two scenes using weights.


Here we test that the start and end times can be combined so that they describe the start and times of the
entire data series. We also test the various types of weighted stacking functions (ex. select, blend).
test_timeseries(datasets_and_weights)
Test the ‘timeseries’ function.
class satpy.tests.multiscene_tests.test_blend.TestTemporalRGB
Bases: object
Test the temporal RGB blending method.
static _assert_results(res, expected_start_time, expected_result)

expected_result()
Return the expected result arrays.
nominal_data()
Return the input arrays for the nominal use case.
test_extra_datasets(nominal_data, expected_result)
Test that only the first three arrays affect the usage.
test_nominal(nominal_data, expected_result)
Test that nominal usage with 3 datasets works.
satpy.tests.multiscene_tests.test_blend._check_stacked_metadata(data_arr: DataArray, exp_name:
str) → None

satpy.tests.multiscene_tests.test_blend._get_expected_stack_blend(scene1: Scene, scene2:


Scene) → DataArray

satpy.tests.multiscene_tests.test_blend._get_expected_stack_select(scene1: Scene, scene2:


Scene) → DataArray

satpy.tests.multiscene_tests.test_blend.cloud_type_data_array1(test_area, data_type,
image_mode)
Get DataArray for cloud type in the first test Scene.
satpy.tests.multiscene_tests.test_blend.cloud_type_data_array2(test_area, data_type,
image_mode)
Get DataArray for cloud type in the second test Scene.
satpy.tests.multiscene_tests.test_blend.data_type(request)
Get array data type of the DataArray being tested.
satpy.tests.multiscene_tests.test_blend.groups()
Get group definitions for the MultiScene.
satpy.tests.multiscene_tests.test_blend.image_mode(request)
Get image mode of the main DataArray being tested.
satpy.tests.multiscene_tests.test_blend.multi_scene_and_weights(scene1_with_weights,
scene2_with_weights)
Create small multi-scene for testing.

408 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.multiscene_tests.test_blend.scene1_with_weights(cloud_type_data_array1, test_area)
Create first test scene with a dataset of weights.
satpy.tests.multiscene_tests.test_blend.scene2_with_weights(cloud_type_data_array2, test_area)
Create second test scene.
satpy.tests.multiscene_tests.test_blend.test_area()
Get area definition used by test DataArrays.

satpy.tests.multiscene_tests.test_misc module

Unit tests for the Multiscene object.


class satpy.tests.multiscene_tests.test_misc.TestMultiScene(methodName='runTest')
Bases: TestCase
Test basic functionality of MultiScene.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_from_files()
Test creating a multiscene from multiple files.
test_init_children()
Test creating a multiscene with children.
test_init_empty()
Test creating a multiscene with no children.
test_properties()
Test basic properties/attributes of the MultiScene.
class satpy.tests.multiscene_tests.test_misc.TestMultiSceneGrouping
Bases: object
Test dataset grouping in MultiScene.
groups()
Get group definitions for the MultiScene.
multi_scene(scene1, scene2)
Create small multi scene for testing.
scene1()
Create first test scene.
scene2()
Create second test scene.
test_fails_to_add_multiple_datasets_from_the_same_scene_to_a_group(multi_scene)
Test that multiple datasets from the same scene in one group fails.
test_multi_scene_grouping(multi_scene, groups, scene1)
Test grouping a MultiScene.

2.15. satpy 409


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.multiscene_tests.test_save_animation module

Unit tests for saving animations using Multiscene.


class satpy.tests.multiscene_tests.test_save_animation.TestMultiSceneSave(methodName='runTest')
Bases: TestCase
Test saving a MultiScene to various formats.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Create temporary directory to save files to.
tearDown()
Remove the temporary directory created for a test.
test_crop()
Test the crop method.
test_save_datasets_distributed_delayed()
Test distributed save for writers returning delayed obejcts e.g. simple_image.
test_save_datasets_distributed_source_target()
Test distributed save for writers returning sources and targets e.g. geotiff writer.
test_save_datasets_simple()
Save a series of fake scenes to an PNG images.
test_save_mp4_distributed()
Save a series of fake scenes to an mp4 video.
test_save_mp4_no_distributed()
Save a series of fake scenes to an mp4 video when distributed isn’t available.
satpy.tests.multiscene_tests.test_save_animation.test_save_mp4(smg, tmp_path)
Save a series of fake scenes to an mp4 video.

satpy.tests.multiscene_tests.test_utils module

Utilties to assist testing the Multiscene functionality.


Creating fake test data for use in the other Multiscene test modules.
satpy.tests.multiscene_tests.test_utils._create_test_area(proj_str=None, shape=(5, 10),
extents=None)
Create a test area definition.
satpy.tests.multiscene_tests.test_utils._create_test_dataset(name, shape=(5, 10), area=None,
values=None, dims=('y', 'x'))
Create a test DataArray object.

410 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.multiscene_tests.test_utils._create_test_int8_dataset(name, shape=(5, 10),


area=None, values=None,
dims=('y', 'x'))
Create a test DataArray object.
satpy.tests.multiscene_tests.test_utils._create_test_scenes(num_scenes=2, shape=(5, 10),
area=None)
Create some test scenes for various test cases.
satpy.tests.multiscene_tests.test_utils._fake_get_enhanced_image(img, enhance=None,
overlay=None,
decorate=None)

Module contents

Unit tests for Multiscene.

satpy.tests.reader_tests package

Subpackages

satpy.tests.reader_tests.gms package

Submodules

satpy.tests.reader_tests.gms.test_gms5_vissr_data module

Real world test data for GMS-5 VISSR unit tests.

satpy.tests.reader_tests.gms.test_gms5_vissr_l1b module

Unit tests for GMS-5 VISSR reader.


class satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestCorruptFile
Bases: object
Test reading corrupt files.
corrupt_file(file_contents, tmp_path)
Write corrupt VISSR file to disk.
file_contents()
Get corrupt file contents (all zero).
test_corrupt_file(corrupt_file)
Test reading a corrupt file.
class satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestEarthMask
Bases: object
Test getting the earth mask.
test_get_earth_mask()
Test getting the earth mask.

2.15. satpy 411


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileHandler
Bases: object
Test VISSR file handler.
_patch_number_of_pixels_per_scanline(monkeypatch)
Patch data types so that each scanline has two pixels.
area_def_exp(dataset_id)
Get expected area definition.
attitude_prediction()
Get attitude prediction.
attrs_exp(area_def_exp)
Get expected dataset attributes.
cal_params(vis_calibration, ir1_calibration, ir2_calibration, wv_calibration)
Get calibration parameters.
control_block(dataset_id)
Get VISSR control block.
coord_conv()
Get parameters for coordinate conversions.
Adjust pixel offset so that the first column is at the image center. This has the advantage that we can test
with very small 2x2 images. Otherwise, all pixels would be in space.
coordinate_conversion(coord_conv, simple_coord_conv_table)
Get all coordinate conversion parameters.
dataset_exp(dataset_id, ir1_counts_exp, ir1_bt_exp, vis_refl_exp)
Get expected dataset.
dataset_id(request)
Get dataset ID.
file_contents(control_block, image_parameters, image_data)
Get VISSR file contents.
file_handler(vissr_file_like, mask_space)
Get file handler to be tested.
image_data(dataset_id, image_data_ir1, image_data_vis)
Get VISSR image data.
image_data_ir1()
Get IR1 image data.
image_data_vis()
Get VIS image data.
image_parameters(mode_block, cal_params, nav_params)
Get VISSR image parameters.
ir1_bt_exp(lons_lats_exp)
Get expected IR1 brightness temperature.

412 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

ir1_calibration()
Get IR1 calibration block.
ir1_counts_exp(lons_lats_exp)
Get expected IR1 counts.
ir2_calibration()
Get IR2 calibration block.
lons_lats_exp(dataset_id)
Get expected lon/lat coordinates.
Computed with JMA’s Msial library for 2 pixels near the central column (6688.5/1672.5 for VIS/IR).
VIS:
pix = [6688, 6688, 6689, 6689] lin = [2744, 8356, 2744, 8356]
IR1:
pix = [1672, 1672, 1673, 1673] lin = [686, 2089, 686, 2089]
mask_space(request)
Mask space pixels.
mode_block()
Get VISSR mode block.
nav_params(coordinate_conversion, attitude_prediction, orbit_prediction)
Get navigation parameters.
open_function(with_compression)
Get open function for writing test files.
orbit_prediction(orbit_prediction_1, orbit_prediction_2)
Get predictions of orbital parameters.
orbit_prediction_1()
Get first block of orbit prediction data.
orbit_prediction_2()
Get second block of orbit prediction data.
simple_coord_conv_table()
Get simple coordinate conversion table.
test_get_dataset(file_handler, dataset_id, dataset_exp, attrs_exp)
Test getting the dataset.
test_time_attributes(file_handler, attrs_exp)
Test the file handler’s time attributes.
vis_calibration()
Get VIS calibration block.
vis_refl_exp(mask_space, lons_lats_exp)
Get expected VIS reflectance.
vissr_file(dataset_id, file_contents, open_function, tmp_path)
Get test VISSR file.

2.15. satpy 413


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

vissr_file_like(vissr_file, with_compression)
Get file-like object for VISSR test file.
with_compression(request)
Enable compression.
wv_calibration()
Get WV calibration block.
class satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.VissrFileWriter(ch_type,
open_function)
Bases: object
Write data in VISSR archive format.
Initialize the writer.
Parameters
• ch_type – Channel type (VIS or IR)
• open_function – Open function to be used (e.g. open or gzip.open)
_fill(fd, target_byte)
Write placeholders from current position to target byte.
_write(fd, data, offset=None)
Write data to file.
If specified, prepend with ‘offset’ placeholder bytes.
_write_control_block(fd, contents)

_write_image_data(fd, contents)

_write_image_parameter(fd, im_param, name)

_write_image_parameters(fd, contents)

image_params_order = ['mode', 'coordinate_conversion', 'attitude_prediction',


'orbit_prediction_1', 'orbit_prediction_2', 'vis_calibration', 'ir1_calibration',
'ir2_calibration', 'wv_calibration', 'simple_coordinate_conversion_table']

write(filename, contents)
Write file contents to disk.
satpy.tests.reader_tests.gms.test_gms5_vissr_l1b._disable_jit(request, monkeypatch)
Run tests with jit enabled and disabled.
Reason: Coverage report is only accurate with jit disabled.

satpy.tests.reader_tests.gms.test_gms5_vissr_navigation module

Unit tests for GMS-5 VISSR navigation.


class satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.TestImageNavigation
Bases: object
Test navigation of an entire image.

414 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

expected()
Get expected coordinates.
test_get_lons_lats(navigation_params, expected)
Test getting lon/lat coordinates.
class satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.TestPredictionInterpolation
Bases: object
Test interpolation of orbit and attitude predictions.
attitude_expected()
Get expected attitude.
obs_time()
Get observation time.
orbit_expected()
Get expected orbit.
test_interpolate_angles(obs_time, expected)
Test interpolation of periodic angles.
test_interpolate_attitude_prediction(obs_time, attitude_prediction, attitude_expected)
Test interpolating attitude prediction.
test_interpolate_continuous(obs_time, expected)
Test interpolation of continuous variables.
test_interpolate_nearest(obs_time, expected)
Test nearest neighbour interpolation.
test_interpolate_orbit_prediction(obs_time, orbit_prediction, orbit_expected)
Test interpolating orbit prediction.
class satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.TestSinglePixelNavigation
Bases: object
Test navigation of a single pixel.
test_get_lon_lat(point, nav_params, expected)
Test getting lon/lat coordinates for a given pixel.
test_intersect_view_vector_with_earth()
Test intersection of a view vector with the earth’s surface.
test_normalize_vector()
Test vector normalization.
test_transform_earth_fixed_to_geodetic_coords(point_earth_fixed, point_geodetic_exp)
Test transformation from earth-fixed to geodetic coordinates.
test_transform_image_coords_to_scanning_angles()
Test transformation from image coordinates to scanning angles.
test_transform_satellite_to_earth_fixed_coords()
Test transformation from satellite to earth-fixed coordinates.

2.15. satpy 415


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_transform_scanning_angles_to_satellite_coords()
Test transformation from scanning angles to satellite coordinates.
satpy.tests.reader_tests.gms.test_gms5_vissr_navigation._assert_namedtuple_close(a, b)

satpy.tests.reader_tests.gms.test_gms5_vissr_navigation._disable_jit(request, monkeypatch)
Run tests with jit enabled and disabled.
Reason: Coverage report is only accurate with jit disabled.
satpy.tests.reader_tests.gms.test_gms5_vissr_navigation._is_namedtuple(obj)

satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.attitude_prediction()
Get attitude prediction.
satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.navigation_params(static_nav_params,
pre-
dicted_nav_params)
Get image navigation parameters.
satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.orbit_prediction()
Get orbit prediction.
satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.predicted_nav_params(attitude_prediction,
or-
bit_prediction)
Get predicted navigation parameters.
satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.proj_params(sampling_angle)
Get projection parameters.
satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.sampling_angle()
Get sampling angle.
satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.scan_params(sampling_angle)
Get scanning parameters.
satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.static_nav_params(proj_params,
scan_params)
Get static navigation parameters.
satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.test_get_observation_time()
Test getting a pixel’s observation time.

Module contents

Unit tests for GMS reader.

satpy.tests.reader_tests.modis_tests package

Submodules

satpy.tests.reader_tests.modis_tests._modis_fixtures module

MODIS L1b and L2 test fixtures.

416 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.modis_tests._modis_fixtures._add_variable_to_file(h, var_name,
var_info)

satpy.tests.reader_tests.modis_tests._modis_fixtures._create_core_metadata(file_shortname:
str) → str

satpy.tests.reader_tests.modis_tests._modis_fixtures._create_header_metadata() → str

satpy.tests.reader_tests.modis_tests._modis_fixtures._create_struct_metadata(geo_resolution:
int) → str

satpy.tests.reader_tests.modis_tests._modis_fixtures._create_struct_metadata_cmg(ftype: str)
→ str

satpy.tests.reader_tests.modis_tests._modis_fixtures._generate_angle_data(resolution: int) →
ndarray

satpy.tests.reader_tests.modis_tests._modis_fixtures._generate_lonlat_data(resolution: int) →
tuple[ndarray,
ndarray]

satpy.tests.reader_tests.modis_tests._modis_fixtures._generate_visible_data(resolution: int,
num_bands: int,
dtype=<class
'numpy.uint16'>)
→ ndarray

satpy.tests.reader_tests.modis_tests._modis_fixtures._generate_visible_uncertainty_data(shape:
tu-
ple)

ndar-
ray

satpy.tests.reader_tests.modis_tests._modis_fixtures._get_angles_variable_info(resolution:
int) → dict

satpy.tests.reader_tests.modis_tests._modis_fixtures._get_basic_variable_info(var_name: str,
resolution:
int) → dict

satpy.tests.reader_tests.modis_tests._modis_fixtures._get_cloud_mask_variable_info(var_name:
str, res-
olution:
int) →
dict

satpy.tests.reader_tests.modis_tests._modis_fixtures._get_emissive_variable_info(var_name:
str,
resolution:
int, bands:
list[str])

2.15. satpy 417


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.modis_tests._modis_fixtures._get_l1b_geo_variable_info(filename:
str,
geo_resolution:
int, in-
clude_angles:
bool =
True) →
dict

satpy.tests.reader_tests.modis_tests._modis_fixtures._get_l3_land_cover_info() → dict

satpy.tests.reader_tests.modis_tests._modis_fixtures._get_l3_refl_variable_info(var_name:
str) → dict

satpy.tests.reader_tests.modis_tests._modis_fixtures._get_lonlat_variable_info(resolution:
int) → dict

satpy.tests.reader_tests.modis_tests._modis_fixtures._get_mask_byte1_variable_info() →
dict

satpy.tests.reader_tests.modis_tests._modis_fixtures._get_visible_variable_info(var_name:
str,
resolution:
int, bands:
list[str])

satpy.tests.reader_tests.modis_tests._modis_fixtures._shape_for_resolution(resolution: int) →
tuple[int, int]

satpy.tests.reader_tests.modis_tests._modis_fixtures.create_hdfeos_test_file(filename: str,
variable_infos:
dict,
struct_meta: str
| None = None,
core_meta: str |
None = None,
archive_meta:
str | None =
None) → None
Create a fake MODIS L1b HDF4 file with headers.
Parameters
• filename – Full path of filename to be created.
• variable_infos – Dictionary mapping HDF4 variable names to dictionary of variable
information (see _add_variable_to_file).
• struct_meta – Contents of the ‘StructMetadata.0’ header.
• core_meta – Contents of the ‘CoreMetadata.0’ header.
• archive_meta – Contents of the ‘ArchiveMetadata.0’ header.
satpy.tests.reader_tests.modis_tests._modis_fixtures.generate_imapp_filename(suffix)
Generate a filename that follows IMAPP MODIS L1b convention.

418 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.modis_tests._modis_fixtures.generate_nasa_l1b_filename(prefix)
Generate a filename that follows NASA MODIS L1b convention.
satpy.tests.reader_tests.modis_tests._modis_fixtures.generate_nasa_l2_filename(prefix: str)
→ str
Generate a file name that follows MODIS 35 L2 convention in a temporary directory.
satpy.tests.reader_tests.modis_tests._modis_fixtures.generate_nasa_l3_filename(prefix: str)
→ str
Generate a file name that follows MODIS 09 L3 convention in a temporary directory.
satpy.tests.reader_tests.modis_tests._modis_fixtures.generate_nasa_l3_tile_filename(prefix:
str) →
str
Generate a file name that follows MODIS sinusoidal grid tile pattern.
satpy.tests.reader_tests.modis_tests._modis_fixtures.modis_l1b_imapp_1000m_file(tmpdir_factory)
→ list[str]
Create a single MOD021KM file following IMAPP file scheme.
satpy.tests.reader_tests.modis_tests._modis_fixtures.modis_l1b_imapp_geo_file(tmpdir_factory)
→ list[str]
Create a single geo file following standard IMAPP file scheme.
satpy.tests.reader_tests.modis_tests._modis_fixtures.modis_l1b_nasa_1km_mod03_files(modis_l1b_nasa_mod021
modis_l1b_nasa_mod03_

list[str]
Create input files including the 1KM and MOD03 files.
satpy.tests.reader_tests.modis_tests._modis_fixtures.modis_l1b_nasa_mod021km_file(tmpdir_factory)

list[str]
Create a single MOD021KM file following standard NASA file scheme.
satpy.tests.reader_tests.modis_tests._modis_fixtures.modis_l1b_nasa_mod02hkm_file(tmpdir_factory)

list[str]
Create a single MOD02HKM file following standard NASA file scheme.
satpy.tests.reader_tests.modis_tests._modis_fixtures.modis_l1b_nasa_mod02qkm_file(tmpdir_factory)

list[str]
Create a single MOD02QKM file following standard NASA file scheme.
satpy.tests.reader_tests.modis_tests._modis_fixtures.modis_l1b_nasa_mod03_file(tmpdir_factory)
→ list[str]
Create a single MOD03 file following standard NASA file scheme.
satpy.tests.reader_tests.modis_tests._modis_fixtures.modis_l2_imapp_mask_byte1_file(tmpdir_factory)

list[str]
Create a single IMAPP mask_byte1 L2 HDF4 file with headers.

2.15. satpy 419


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.modis_tests._modis_fixtures.modis_l2_imapp_mask_byte1_geo_files(modis_l2_imapp_m
modis_l1b_nasa_m

list[str]
Create the IMAPP mask_byte1 and geo HDF4 files.
satpy.tests.reader_tests.modis_tests._modis_fixtures.modis_l2_imapp_snowmask_file(tmpdir_factory)

list[str]
Create a single IMAPP snowmask L2 HDF4 file with headers.
satpy.tests.reader_tests.modis_tests._modis_fixtures.modis_l2_imapp_snowmask_geo_files(modis_l2_imapp_sno
modis_l1b_nasa_mod

list[str]
Create the IMAPP snowmask and geo HDF4 files.
satpy.tests.reader_tests.modis_tests._modis_fixtures.modis_l2_nasa_mod06_file(tmpdir_factory)
→ list[str]
Create a single MOD06 L2 HDF4 file with headers.
satpy.tests.reader_tests.modis_tests._modis_fixtures.modis_l2_nasa_mod35_file(tmpdir_factory)
→ list[str]
Create a single MOD35 L2 HDF4 file with headers.
satpy.tests.reader_tests.modis_tests._modis_fixtures.modis_l2_nasa_mod35_mod03_files(modis_l2_nasa_mod35_
modis_l1b_nasa_mod03

list[str]
Create a MOD35 L2 HDF4 file and MOD03 L1b geolocation file.
satpy.tests.reader_tests.modis_tests._modis_fixtures.modis_l3_file(tmpdir_factory, f_prefix,
var_name, f_short)
Create a MODIS L3 file of the desired type.
satpy.tests.reader_tests.modis_tests._modis_fixtures.modis_l3_nasa_mcd12q1_file(tmpdir_factory)
→ list[str]
Create a single MOD35 L2 HDF4 file with headers.
satpy.tests.reader_tests.modis_tests._modis_fixtures.modis_l3_nasa_mod09_file(tmpdir_factory)
→ list[str]
Create a single MOD09 L3 HDF4 file with headers.
satpy.tests.reader_tests.modis_tests._modis_fixtures.modis_l3_nasa_mod43_file(tmpdir_factory)
→ list[str]
Create a single MVCD43 L3 HDF4 file with headers.

satpy.tests.reader_tests.modis_tests.conftest module

Setup and configuration for all reader tests.

420 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.modis_tests.test_modis_l1b module

Unit tests for MODIS L1b HDF reader.


class satpy.tests.reader_tests.modis_tests.test_modis_l1b.TestModisL1b
Bases: object
Test MODIS L1b reader.
test_available_reader()
Test that MODIS L1b reader is available.
test_load_longitude_latitude(input_files, has_5km, has_500, has_250, default_res)
Test that longitude and latitude datasets are loaded correctly.
test_load_sat_zenith_angle(modis_l1b_nasa_mod021km_file)
Test loading satellite zenith angle band.
test_load_vis(modis_l1b_nasa_mod021km_file)
Test loading visible band.
test_load_vis_saturation(mask_saturated, modis_l1b_nasa_mod021km_file)
Test loading visible band.
test_scene_available_datasets(input_files, expected_names, expected_data_res, expected_geo_res)
Test that datasets are available.
satpy.tests.reader_tests.modis_tests.test_modis_l1b._check_shared_metadata(data_arr)

satpy.tests.reader_tests.modis_tests.test_modis_l1b._load_and_check_geolocation(scene,
resolution,
exp_res,
exp_shape,
has_res,
check_callback=<function
_check_shared_metadata>)

satpy.tests.reader_tests.modis_tests.test_modis_l2 module

Unit tests for MODIS L2 HDF reader.


class satpy.tests.reader_tests.modis_tests.test_modis_l2.TestModisL2
Bases: object
Test MODIS L2 reader.
test_available_reader()
Test that MODIS L2 reader is available.
test_load_250m_cloud_mask_dataset(input_files, exp_area)
Test loading 250m cloud mask.
test_load_category_dataset(input_files, loadables, request_resolution, exp_resolution, exp_area)
Test loading category products.
test_load_l2_dataset(input_files, loadables, exp_resolution, exp_area, exp_value)
Load and check an L2 variable.

2.15. satpy 421


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_load_longitude_latitude(input_files, has_5km, has_500, has_250, default_res)


Test that longitude and latitude datasets are loaded correctly.
test_load_quality_assurance(modis_l2_nasa_mod35_file)
Test loading quality assurance.
test_scene_available_datasets(modis_l2_nasa_mod35_file)
Test that datasets are available.
satpy.tests.reader_tests.modis_tests.test_modis_l2._check_shared_metadata(data_arr, ex-
pect_area=False)

satpy.tests.reader_tests.modis_tests.test_modis_l3 module

Unit tests for MODIS L3 HDF reader.


class satpy.tests.reader_tests.modis_tests.test_modis_l3.TestModisL3
Bases: object
Test MODIS L3 reader.
test_available_reader()
Test that MODIS L3 reader is available.
test_load_l3_dataset(modis_l3_nasa_mod09_file)
Load and check an L2 variable.
test_scene_available_datasets(loadable, filename)
Test that datasets are available.
satpy.tests.reader_tests.modis_tests.test_modis_l3._expected_area()

satpy.tests.reader_tests.modis_tests.test_modis_l3_mcd12q1 module

Unit tests for MODIS L2 HDF reader.


class satpy.tests.reader_tests.modis_tests.test_modis_l3_mcd12q1.TestModisL3MCD12Q1
Bases: object
Test MODIS L3 MCD12Q1 reader.
test_available_reader()
Test that MODIS L3 reader is available.
test_load_l3_dataset(modis_l3_nasa_mcd12q1_file)
Load and check an L2 variable.
test_metadata(modis_l3_nasa_mcd12q1_file)
Test some basic metadata that should exist in the file.
test_scene_available_datasets(modis_l3_nasa_mcd12q1_file)
Test that datasets are available.

Module contents

Unit tests for MODIS readers.


This subdirectory mostly exists to have MODIS-based pytest fixtures only loaded for MODIS tests.

422 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_clavrx package

Submodules

satpy.tests.reader_tests.test_clavrx.test_clavrx_geohdf module

Module for testing the satpy.readers.clavrx module.


class satpy.tests.reader_tests.test_clavrx.test_clavrx_geohdf.FakeHDF4FileHandlerGeo(filename,
file-
name_info,
file-
type_info,
**kwargs)
Bases: FakeHDF4FileHandler
Swap-in HDF4 File Handler.
Get fake file content from ‘get_test_content’.
get_test_content(filename, filename_info, filetype_info)
Mimic reader input file content.
class satpy.tests.reader_tests.test_clavrx.test_clavrx_geohdf.TestCLAVRXReaderGeo(methodName='runTest')
Bases: TestCase
Test CLAVR-X Reader with Geo files.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap HDF4 file handler with our own fake handler.
tearDown()
Stop wrapping the NetCDF4 file handler.
test_init()
Test basic init with no extra parameters.
test_load_all_new_donor()
Test loading all test datasets with new donor.
test_load_all_old_donor()
Test loading all test datasets with old donor.
test_no_nav_donor()
Test exception raised when no donor file is available.
yaml_file = 'clavrx.yaml'

2.15. satpy 423


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_clavrx.test_clavrx_nc module

Module for testing the satpy.readers.clavrx module.


class satpy.tests.reader_tests.test_clavrx.test_clavrx_nc.TestCLAVRXReaderGeo
Bases: object
Test CLAVR-X Reader with Geo files.
setup_method()
Read fake data.
test_available_datasets(filenames, expected_datasets)
Test that variables are dynamically discovered.
test_load_all_new_donor(filenames, loadable_ids)
Test loading all test datasets with new donor.
test_reader_creation(filenames, expected_loadables)
Test basic initialization.
test_scale_data(filenames, loadable_ids)
Test that data is scaled when necessary and not scaled data are flags.
test_yaml_datasets(filenames, expected_loadables)
Test available_datasets with fake variables from YAML.
yaml_file = 'clavrx.yaml'

satpy.tests.reader_tests.test_clavrx.test_clavrx_nc.fake_test_content(filename, **kwargs)
Mimic reader input file content.

satpy.tests.reader_tests.test_clavrx.test_clavrx_polarhdf module

Module for testing the satpy.readers.clavrx module.


class satpy.tests.reader_tests.test_clavrx.test_clavrx_polarhdf.FakeHDF4FileHandlerPolar(filename,
file-
name_info,
file-
type_info,
**kwargs)
Bases: FakeHDF4FileHandler
Swap-in HDF4 File Handler.
Get fake file content from ‘get_test_content’.
get_test_content(filename, filename_info, filetype_info)
Mimic reader input file content.
class satpy.tests.reader_tests.test_clavrx.test_clavrx_polarhdf.TestCLAVRXReaderPolar(methodName='runTest'
Bases: TestCase
Test CLAVR-X Reader with Polar files.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.

424 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap HDF4 file handler with our own fake handler.
tearDown()
Stop wrapping the NetCDF4 file handler.
test_available_datasets()
Test available_datasets with fake variables from YAML.
test_available_datasets_with_alias()
Test availability of aliased dataset.
test_init()
Test basic init with no extra parameters.
test_load_all()
Test loading all test datasets.
yaml_file = 'clavrx.yaml'

Module contents

The clavrx reader tests package.

Submodules

satpy.tests.reader_tests._li_test_utils module

Common utility modules used for LI mock-oriented unit tests.


class satpy.tests.reader_tests._li_test_utils.FakeLIFileHandlerBase(filename, filename_info,
filetype_info,
auto_maskandscale=False,
xarray_kwargs=None,
cache_var_size=0,
cache_handle=False,
extra_file_content=None)
Bases: FakeNetCDF4FileHandler
Class for faking the NetCDF4 Filehandler.
Get fake file content from ‘get_test_content’.
get_test_content(filename, filename_info, filetype_info)
Get the content of the test data.
Here we generate the default content we want to provide depending on the provided filename infos.
get_variable_writer(dset, settings)
Get a variable writer.
schema_parameters = None

write_sector_variables(settings, write_variable)
Write the sector variables.

2.15. satpy 425


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

write_variables(settings, write_variable)
Write raw (i.e. not in sectors) variables.
satpy.tests.reader_tests._li_test_utils.accumulation_dimensions(nacc, nobs)
Set dimensions for the accumulated products.
satpy.tests.reader_tests._li_test_utils.add_attributes(attribs, ignored_attrs, desc)
Add all the custom properties directly as attributes.
satpy.tests.reader_tests._li_test_utils.extract_filetype_info(filetype_infos, filetype)
Extract Satpy-conform filetype_info from filetype_infos fixture.
satpy.tests.reader_tests._li_test_utils.fci_grid_definition(axis, nobs)
FCI grid definition on X or Y axis.
satpy.tests.reader_tests._li_test_utils.get_product_schema(pname, settings=None)
Retrieve an LI product schema given its name.
satpy.tests.reader_tests._li_test_utils.l2_af_schema(settings=None)
Define schema for LI L2 AF product.
satpy.tests.reader_tests._li_test_utils.l2_afa_schema(settings=None)
Define schema for LI L2 AFA product.
satpy.tests.reader_tests._li_test_utils.l2_afr_schema(settings=None)
Define schema for LI L2 AFR product.
satpy.tests.reader_tests._li_test_utils.l2_le_schema(settings=None)
Define schema for LI L2 LE product.
satpy.tests.reader_tests._li_test_utils.l2_lef_schema(settings=None)
Define schema for LI L2 LEF product.
satpy.tests.reader_tests._li_test_utils.l2_lfl_schema(settings=None)
Define schema for LI L2 LFL product.
satpy.tests.reader_tests._li_test_utils.l2_lgr_schema(settings=None)
Define schema for LI L2 LGR product.
satpy.tests.reader_tests._li_test_utils.mtg_geos_projection()
MTG geos projection definition.
satpy.tests.reader_tests._li_test_utils.populate_dummy_data(data, names, details)
Populate variable with dummy data.
satpy.tests.reader_tests._li_test_utils.set_variable_path(var_path, desc, sname)
Replace variable default path if applicable and ensure trailing separator.

satpy.tests.reader_tests.conftest module

Setup and configuration for all reader tests.


satpy.tests.reader_tests.conftest.aws_eps_sterna_mwr_level1_file(fake_mwr_data_array,
eps_sterna=True, l1b=True)
Create an AWS and EPS-Sterna MWR l1b file.
satpy.tests.reader_tests.conftest.aws_mwr_file(tmp_path_factory, fake_mwr_data_array)
Create an AWS MWR l1b file.

426 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.conftest.aws_mwr_handler(aws_mwr_file)
Create an AWS MWR filehandler.
satpy.tests.reader_tests.conftest.aws_mwr_l1c_file(tmp_path_factory, fake_mwr_data_array)
Create an AWS MWR l1c file.
satpy.tests.reader_tests.conftest.aws_mwr_l1c_handler(aws_mwr_l1c_file)
Create an AWS MWR level-1c filehandler.
satpy.tests.reader_tests.conftest.create_mwr_file(tmpdir, data_array, eps_sterna=False, l1b=True)
Create an AWS or EPS-Sterna MWR l1b (or level-1c) file.
satpy.tests.reader_tests.conftest.eps_sterna_mwr_file(tmp_path_factory, fake_mwr_data_array)
Create an EPS-Sterna MWR l1b file.
satpy.tests.reader_tests.conftest.eps_sterna_mwr_handler(eps_sterna_mwr_file)
Create an EPS-Sterna MWR filehandler.
satpy.tests.reader_tests.conftest.fake_mwr_data_array()
Return a fake AWS/EPS-Sterna MWR l1b data array.
satpy.tests.reader_tests.conftest.make_fake_angles(geo_size, geo_dims, shape)
Return fake sun-satellite angle array.
satpy.tests.reader_tests.conftest.make_fake_mwr_l1c_lonlats(geo_size, geo_dims)
Return fake level-1c geolocation data arrays.
satpy.tests.reader_tests.conftest.make_fake_mwr_lonlats(geo_size, geo_dims, shape)
Return fake geolocation data arrays for all 4 MWR horns.
satpy.tests.reader_tests.conftest.random_date(start, end)
Create a random datetime between two datetimes.

satpy.tests.reader_tests.test_aapp_l1b module

Test module for the avhrr aapp l1b reader.


class satpy.tests.reader_tests.test_aapp_l1b.TestAAPPL1BAllChannelsPresent(methodName='runTest')
Bases: TestCase
Test the filehandler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the test case.
test_angles()
Test reading the angles.
test_interpolation()
Test reading the lon and lats.

2.15. satpy 427


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_interpolation_angles()
Test reading the lon and lats.
test_navigation()
Test reading the lon and lats.
test_read()
Test the reading.
class satpy.tests.reader_tests.test_aapp_l1b.TestAAPPL1BChannel3AMissing(methodName='runTest')
Bases: TestCase
Test the filehandler when channel 3a is missing.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the test case.
test_available_datasets_miss_3a()
Test that channel 3a is missing from available datasets.
test_loading_missing_channels_returns_none()
Test that loading a missing channel raises a keyerror.
class satpy.tests.reader_tests.test_aapp_l1b.TestNegativeCalibrationSlope(methodName='runTest')
Bases: TestCase
Case for testing correct behaviour when the data has negative slope2 coefficients.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the test case.
tearDown()
Tear down the test case.
test_bright_channel2_has_reflectance_greater_than_100()
Test that a bright channel 2 has reflectances greater that 100.

satpy.tests.reader_tests.test_aapp_mhs_amsub_l1c module

Test module for the MHS AAPP level-1c reader.


class satpy.tests.reader_tests.test_aapp_mhs_amsub_l1c.TestMHS_AMSUB_AAPPL1CReadData(methodName='runTest')
Bases: TestCase
Test the filehandler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.

428 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the test case.
test_angles()
Test reading the angles.
test_navigation()
Test reading the longitudes and latitudes.
test_platform_name()
Test getting the platform name.
test_read()
Test getting the platform name.
test_sensor_name()
Test getting the sensor name.

satpy.tests.reader_tests.test_abi_l1b module

The abi_l1b reader tests package.


class satpy.tests.reader_tests.test_abi_l1b.Test_NC_ABI_L1B
Bases: object
Test the NC_ABI_L1B reader.
pytestmark = [Mark(name='parametrize', args=('c01_data_arr', [c01_rad,
c01_rad_h5netcdf]), kwargs={})]

test_get_dataset(c01_data_arr)
Test the get_dataset method.
satpy.tests.reader_tests.test_abi_l1b._apply_dask_chunk_size()

satpy.tests.reader_tests.test_abi_l1b._check_area(data_arr: DataArray) → None

satpy.tests.reader_tests.test_abi_l1b._check_dims_and_coords(data_arr: DataArray) → None

satpy.tests.reader_tests.test_abi_l1b._create_fake_rad_dataarray(rad: DataArray | None = None,


resolution: int = 2000) →
DataArray

satpy.tests.reader_tests.test_abi_l1b._create_fake_rad_dataset(rad: DataArray, resolution: int)


→ Dataset

satpy.tests.reader_tests.test_abi_l1b._create_reader_for_data(tmp_path: Path, channel_name:


str, rad: DataArray | None,
resolution: int, reader_kwargs:
dict[str, Any] | None = None) →
FileYAMLReader

satpy.tests.reader_tests.test_abi_l1b._fake_c07_data() → DataArray

2.15. satpy 429


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_abi_l1b._get_and_check_array(data_arr: DataArray, exp_dtype:


dtype[Any] | None | type[Any] |
_SupportsDType[dtype[Any]] | str |
tuple[Any, int] | tuple[Any,
SupportsIndex |
Sequence[SupportsIndex]] | list[Any] |
_DTypeDict | tuple[Any, Any]) →
ndarray[Any, dtype[_ScalarType_co]]

satpy.tests.reader_tests.test_abi_l1b.c01_counts(tmp_path) → DataArray
Load c01 counts.
satpy.tests.reader_tests.test_abi_l1b.c01_rad(tmp_path) → DataArray
Load c01 radiances.
satpy.tests.reader_tests.test_abi_l1b.c01_rad_h5netcdf(tmp_path) → DataArray
Load c01 radiances through h5netcdf.
satpy.tests.reader_tests.test_abi_l1b.c01_refl(tmp_path) → DataArray
Load c01 reflectances.
satpy.tests.reader_tests.test_abi_l1b.c07_bt_creator(tmp_path) → Callable
Create a loader for c07 brightness temperatures.
satpy.tests.reader_tests.test_abi_l1b.generate_l1b_filename(chan_name: str) → str
Generate a l1b filename.
satpy.tests.reader_tests.test_abi_l1b.test_file_patterns_match(channel, suffix)
Test that the configured file patterns work.
satpy.tests.reader_tests.test_abi_l1b.test_ir_calibrate(c07_bt_creator, clip_negative_radiances)
Test IR calibration.
satpy.tests.reader_tests.test_abi_l1b.test_open_dataset(_)
Test opening a dataset.
satpy.tests.reader_tests.test_abi_l1b.test_raw_calibrate(c01_counts)
Test RAW calibration.
satpy.tests.reader_tests.test_abi_l1b.test_vis_calibrate(c01_refl)
Test VIS calibration.

satpy.tests.reader_tests.test_abi_l2_nc module

The abi_l2_nc reader tests package.


class satpy.tests.reader_tests.test_abi_l2_nc.TestMCMIPReading
Bases: object
Test cases of the MCMIP file format.
test_mcmip_get_dataset(xr_, product, exp_metadata)
Test getting channel from MCMIP file.
class satpy.tests.reader_tests.test_abi_l2_nc.Test_NC_ABI_L2_area_AOD
Bases: object
Test the NC_ABI_L2 reader for the AOD product.

430 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

setup_method(xr_)
Create fake data for the tests.
test_get_area_def_xy(adef )
Test the area generation.
class satpy.tests.reader_tests.test_abi_l2_nc.Test_NC_ABI_L2_area_fixedgrid
Bases: object
Test the NC_ABI_L2 reader.
test_get_area_def_fixedgrid(adef )
Test the area generation.
class satpy.tests.reader_tests.test_abi_l2_nc.Test_NC_ABI_L2_area_latlon
Bases: object
Test the NC_ABI_L2 reader.
setup_method()
Create fake data for the tests.
test_get_area_def_latlon(adef )
Test the area generation.
class satpy.tests.reader_tests.test_abi_l2_nc.Test_NC_ABI_L2_get_dataset
Bases: object
Test get dataset function of the NC_ABI_L2 reader.
test_get_dataset(obs_type, ds_func, var_name, var_attrs)
Test basic L2 load.
test_get_dataset_gfls()
Test that Low Cloud and Fog filenames work.
satpy.tests.reader_tests.test_abi_l2_nc._assert_orbital_parameters(orb_params)

satpy.tests.reader_tests.test_abi_l2_nc._compare_subdict(actual_dict, exp_sub_dict)

satpy.tests.reader_tests.test_abi_l2_nc._create_aod_dataset()

satpy.tests.reader_tests.test_abi_l2_nc._create_cmip_dataset(data_variable: str = 'HT')

satpy.tests.reader_tests.test_abi_l2_nc._create_mcmip_dataset()

satpy.tests.reader_tests.test_abi_l2_nc._create_reader_for_fake_data(observation_type: str,
fake_dataset: Dataset,
filename_info: dict | None
= None)

satpy.tests.reader_tests.test_acspo module

Module for testing the satpy.readers.acspo module.

2.15. satpy 431


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.reader_tests.test_acspo.FakeNetCDF4FileHandler2(filename, filename_info,


filetype_info,
auto_maskandscale=False,
xarray_kwargs=None,
cache_var_size=0,
cache_handle=False,
extra_file_content=None)
Bases: FakeNetCDF4FileHandler
Swap-in NetCDF4 File Handler.
Get fake file content from ‘get_test_content’.
get_test_content(filename, filename_info, filetype_info)
Mimic reader input file content.
class satpy.tests.reader_tests.test_acspo.TestACSPOReader
Bases: object
Test ACSPO Reader.
setup_method()
Wrap NetCDF4 file handler with our own fake handler.
teardown_method()
Stop wrapping the NetCDF4 file handler.
test_init(filename)
Test basic init with no extra parameters.
test_load_every_dataset()
Test loading all datasets.
yaml_file = 'acspo.yaml'

satpy.tests.reader_tests.test_agri_l1 module

The agri_l1 reader tests package.


class satpy.tests.reader_tests.test_agri_l1.FakeHDF5FileHandler2(filename, filename_info,
filetype_info, **kwargs)
Bases: FakeHDF5FileHandler
Swap-in HDF5 File Handler.
Get fake file content from ‘get_test_content’.
_create_channel_data(chs, cwls)

_create_coeffs_array(channel_numbers: list[int]) → DataArray

_get_1km_data()

_get_2km_data()

_get_4km_data()

_get_500m_data()

432 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_geo_data()

_make_cal_data(cwl, ch, dims)


Make test data.
_make_geo_data(dims)

_make_nom_data(cwl, ch, dims)

get_test_content(filename, filename_info, filetype_info)


Mimic reader input file content.
class satpy.tests.reader_tests.test_agri_l1.Test_HDF_AGRI_L1_cal
Bases: object
Test VIRR L1B Reader.
static _assert_which_channels_are_loaded(available_datasets, band_names, resolution_to_test)

_check_calibration_and_units(band_names, result)

static _check_keys_for_dsq(available_datasets, resolution_to_test)

static _check_units(band_name, result)

_create_reader_for_resolutions(*resolutions)

setup_method()
Wrap HDF5 file handler with our own fake handler.
teardown_method()
Stop wrapping the HDF5 file handler.
test_agri_all_bands_have_right_units()
Test all bands have the right units.
test_agri_counts_calibration()
Test loading data at counts calibration.
test_agri_for_one_resolution(resolution_to_test, satname)
Test loading data when only one resolution is available.
test_agri_geo(satname)
Test loading data for angles.
test_agri_orbital_parameters_are_correct()
Test orbital parameters are set correctly.
test_fy4a_channels_are_loaded_with_right_resolution()
Test all channels are loaded with the right resolution.
test_times_correct()
Test that the reader handles the two possible time formats correctly.
yaml_file = 'agri_fy4a_l1.yaml'

satpy.tests.reader_tests.test_agri_l1._create_filenames_from_resolutions(satname,
*resolutions)
Create filenames from the given resolutions.

2.15. satpy 433


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_ahi_hrit module

The hrit ahi reader tests package.


class satpy.tests.reader_tests.test_ahi_hrit.TestHRITJMAFileHandler(methodName='runTest')
Bases: TestCase
Test the HRITJMAFileHandler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

_get_acq_time(nlines)
Get sample header entry for scanline acquisition times.
Lines: 1, 21, 41, 61, . . . , nlines Times: 1970-01-01 00:00 + (1, 21, 41, 61, . . . , nlines) seconds
So the interpolated times are expected to be 1970-01-01 + (1, 2, 3, 4, . . . , nlines) seconds. Note that there
will be some floating point inaccuracies, because timestamps are stored with only 6 decimals precision.
_get_mda(loff=5500.0, coff=5500.0, nlines=11000, ncols=11000, segno=0, numseg=1, vis=True,
platform='Himawari-8')
Create metadata dict like HRITFileHandler would do it.
_get_reader(mocked_init, mda, filename_info=None, filetype_info=None, reader_kwargs=None)

test_calibrate()
Test calibration.
test_get_acq_time()
Test computation of scanline acquisition times.
test_get_area_def()
Test getting an AreaDefinition.
test_get_dataset(base_get_dataset)
Test getting a dataset.
test_get_platform(mocked_init)
Test platform identification.
test_init()
Test creating the file handler.
test_mask_space()
Test masking of space pixels.
test_mjd2datetime64()
Test conversion from modified julian day to datetime64.
test_start_time_from_aqc_time()
Test that by the datetime from the metadata returned when use_acquisition_time_as_start_time=True.
test_start_time_from_filename()
Test that by default the datetime in the filename is returned.

434 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_ahi_hsd module

The ahi_hsd reader tests package.


class satpy.tests.reader_tests.test_ahi_hsd.TestAHICalibration(methodName='runTest')
Bases: TestCase
Test case for various AHI calibration types.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp(*mocks)
Create fake data for testing.
test_default_calibrate(*mocks)
Test default in-file calibration modes.
test_updated_calibrate()
Test updated in-file calibration modes.
test_user_calibration()
Test user-defined calibration modes.
class satpy.tests.reader_tests.test_ahi_hsd.TestAHIHSDFileHandler
Bases: object
Tests for the AHI HSD file handler.
test_actual_satellite_position(round_actual_position, expected_result)
Test that rounding of the actual satellite position can be controlled.
test_bad_calibration()
Test that a bad calibration mode causes an exception.
test_blocklen_error(*mocks)
Test erraneous blocklength.
test_read_band(calibrate, *mocks)
Test masking of space pixels.
test_read_band_from_actual_file(hsd_file_jp01)
Test read_bands on real data.
test_read_header(*mocks)
Test header reading.
test_scene_loading(calibrate, *mocks)
Test masking of space pixels.
test_time_properties()
Test start/end/scheduled time properties.

2.15. satpy 435


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.reader_tests.test_ahi_hsd.TestAHIHSDNavigation(methodName='runTest')
Bases: TestCase
Test the AHI HSD reader navigation.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_region(fromfile, np2str)
Test region navigation.
test_segment(fromfile, np2str)
Test segment navigation.
class satpy.tests.reader_tests.test_ahi_hsd.TestNominalTimeCalculator
Bases: object
Test case for nominal timestamp computation.
test_areas(area, expected)
Test nominal timestamps for multiple areas.
test_invalid_timeline(timeline, expected)
Test handling of invalid timeline.
test_timelines(timeline, obs_start_time, expected)
Test nominal timestamps for multiple timelines.
satpy.tests.reader_tests.test_ahi_hsd._create_fake_file_handler(in_fname, filename_info=None,
filetype_info=None,
fh_kwargs=None)

satpy.tests.reader_tests.test_ahi_hsd._custom_fromfile(*args, **kwargs)

satpy.tests.reader_tests.test_ahi_hsd._fake_hsd_handler(fh_kwargs=None)
Create a test file handler.
satpy.tests.reader_tests.test_ahi_hsd._new_unzip(fname, prefix='')
Fake unzipping.
satpy.tests.reader_tests.test_ahi_hsd.hsd_file_jp01(tmp_path)
Create a jp01 hsd file.

satpy.tests.reader_tests.test_ahi_l1b_gridded_bin module

The ahi_l1b_gridded_bin reader tests package.


class satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGriddedArea(methodName='runTest')
Bases: TestCase
Test the AHI gridded reader definition.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.

436 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_classSetupFailed = False

_class_cleanups = []

static make_fh(filetype, area='fld')


Create a test file handler.
setUp()
Create fake data for testing.
test_area_def()
Check that a valid full disk area is produced.
test_bad_area()
Ensure an error is raised for an usupported area.
test_hi_res()
Check size of the low resolution (0.5km) grid.
test_low_res()
Check size of the low resolution (2km) grid.
test_med_res()
Check size of the low resolution (1km) grid.
class satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGriddedFileCalibration(methodName='runTest'
Bases: TestCase
Test case for the file calibration types.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Create a test file handler.
test_calibrate(np_loadtxt, os_exist, get_luts)
Test the calibration modes of AHI using the LUTs.
class satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGriddedFileHandler(methodName='runTest')
Bases: TestCase
Test case for the file reading.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

new_unzip()
Fake unzipping.
setUp()
Create a test file handler.

2.15. satpy 437


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_dataread(memmap)
Check that a dask array is returned from the read function.
test_destructor(exist_patch, remove_patch)
Check that file handler deletes files if needed.
test_get_dataset(mocked_read)
Check that a good dataset is returned on request.
class satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGriddedLUTs(methodName='runTest')
Bases: TestCase
Test case for the downloading and preparing LUTs.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

mocked_ftp_dl()
Fake download of LUT tar file by creating a local tar.
setUp()
Create a test file handler.
tearDown()
Remove files and directories created by the tests.
test_download_luts(mock_dl, mock_shutil)
Test that the FTP library is called for downloading LUTS.
test_get_luts()
Check that the function to download LUTs operates successfully.

satpy.tests.reader_tests.test_ahi_l2_nc module

Tests for the Himawari L2 netCDF reader.


satpy.tests.reader_tests.test_ahi_l2_nc.ahil2_filehandler(fname, platform='h09')
Instantiate a Filehandler.
satpy.tests.reader_tests.test_ahi_l2_nc.himl2_filename(tmp_path_factory)
Create a fake himawari l2 file.
satpy.tests.reader_tests.test_ahi_l2_nc.himl2_filename_bad(tmp_path_factory)
Create a fake himawari l2 file.
satpy.tests.reader_tests.test_ahi_l2_nc.test_ahi_l2_area_def(himl2_filename, caplog)
Test reader handles area definition correctly.
satpy.tests.reader_tests.test_ahi_l2_nc.test_bad_area_name(himl2_filename_bad)
Check case where area name is not correct.
satpy.tests.reader_tests.test_ahi_l2_nc.test_load_data(himl2_filename)
Test that data is loaded successfully.
satpy.tests.reader_tests.test_ahi_l2_nc.test_startend(himl2_filename)
Test start and end times are set correctly.

438 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_ami_l1b module

The ami_l1b reader tests package.


class satpy.tests.reader_tests.test_ami_l1b.FakeDataset(info, attrs)
Bases: object
Mimic xarray Dataset object.
Initialize test data.
close()
Act like close method.
rename(*args, **kwargs)
Mimic rename method.
class satpy.tests.reader_tests.test_ami_l1b.TestAMIL1bNetCDF
Bases: object
Test the AMI L1b reader.
_check_orbital_parameters(orb_params)
Check that orbital parameters match expected values.
test_bad_calibration()
Test that asking for a bad calibration fails.
test_basic_attributes(fake_vis_reader)
Test getting basic file attributes.
test_filename_grouping()
Test that filenames are grouped properly.
test_get_area_def(adef , fake_vis_reader)
Test the area generation.
test_get_dataset(fake_vis_reader)
Test getting radiance data.
test_get_dataset_counts(fake_vis_reader)
Test get counts data.
test_get_dataset_vis(fake_vis_reader)
Test get visible calibrated data.
class satpy.tests.reader_tests.test_ami_l1b.TestAMIL1bNetCDFIRCal
Bases: object
Test IR specific things about the AMI reader.
ds_id = {'calibration': <2>, 'modifiers': (), 'name': 'IR087', 'wavelength':
(8.415, 8.59, 8.765, 'µm')}

ds_info = {'file_key': 'image_pixel_values', 'standard_name':


'toa_brightness_temperature', 'units': 'K', 'wavelength': [8.415, 8.59, 8.765]}

test_clipneg(fake_ir_reader2, clip)
Test that negative radiances are clipped.

2.15. satpy 439


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_default_calibrate(fake_ir_reader)
Test default (pyspectral) IR calibration.
test_gsics_radiance_corr(fake_ir_reader)
Test IR radiance adjustment using in-file GSICS coefs.
test_infile_calibrate(fake_ir_reader)
Test IR calibration using in-file coefficients.
test_user_radiance_corr(fake_ir_reader)
Test IR radiance adjustment using user-supplied coefs.
satpy.tests.reader_tests.test_ami_l1b._fake_ir_attrs()

satpy.tests.reader_tests.test_ami_l1b._fake_reader(counts_data: DataArray) →
Iterator[AMIL1bNetCDF]

satpy.tests.reader_tests.test_ami_l1b._fake_vis_attrs()

satpy.tests.reader_tests.test_ami_l1b._get_fake_counts(rad_data: ndarray, attrs: dict) →


DataArray

satpy.tests.reader_tests.test_ami_l1b.fake_ir_reader()
Create fake reader for loading IR data.
satpy.tests.reader_tests.test_ami_l1b.fake_ir_reader2()
Create fake reader for testing radiance clipping.
satpy.tests.reader_tests.test_ami_l1b.fake_vis_reader()
Create fake reader for loading visible data.

satpy.tests.reader_tests.test_amsr2_l1b module

Module for testing the satpy.readers.amsr2_l1b module.


class satpy.tests.reader_tests.test_amsr2_l1b.FakeHDF5FileHandler2(filename, filename_info,
filetype_info, **kwargs)
Bases: FakeHDF5FileHandler
Swap-in HDF5 File Handler.
Get fake file content from ‘get_test_content’.
get_test_content(filename, filename_info, filetype_info)
Mimic reader input file content.
class satpy.tests.reader_tests.test_amsr2_l1b.TestAMSR2L1BReader(methodName='runTest')
Bases: TestCase
Test AMSR2 L1B Reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

440 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

setUp()
Wrap HDF5 file handler with our own fake handler.
tearDown()
Stop wrapping the HDF5 file handler.
test_init()
Test basic init with no extra parameters.
test_load_89ghz()
Test loading of 89GHz channels.
test_load_basic()
Test loading of basic channels.
yaml_file = 'amsr2_l1b.yaml'

satpy.tests.reader_tests.test_amsr2_l2 module

Unit tests for AMSR L2 reader.


class satpy.tests.reader_tests.test_amsr2_l2.FakeHDF5FileHandler2(filename, filename_info,
filetype_info, **kwargs)
Bases: FakeHDF5FileHandler
Swap-in HDF5 File Handler.
Get fake file content from ‘get_test_content’.
get_test_content(filename, filename_info, filetype_info)
Mimic reader input file content.
class satpy.tests.reader_tests.test_amsr2_l2.TestAMSR2L2Reader(methodName='runTest')
Bases: TestCase
Test AMSR2 L2 Reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap HDF5 file handler with our own fake handler.
tearDown()
Stop wrapping the HDF5 file handler.
test_init()
Test basic init with no extra parameters.
test_load_basic()
Test loading of basic channels.
yaml_file = 'amsr2_l2.yaml'

2.15. satpy 441


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_amsr2_l2_gaasp module

Tests for the ‘amsr2_l2_gaasp’ reader.


class satpy.tests.reader_tests.test_amsr2_l2_gaasp.TestGAASPReader
Bases: object
Tests for the GAASP reader.
static _check_area(data_id, data_arr)

static _check_attrs(data_arr)

static _check_fill(data_id, data_arr)

setup_method()
Wrap pygrib to read fake data.
test_available_datasets(filenames, expected_datasets)
Test that variables are dynamically discovered.
test_basic_load(filenames, loadable_ids)
Test that variables are loaded properly.
test_reader_creation(filenames, expected_loadables)
Test basic initialization.
yaml_file = 'amsr2_l2_gaasp.yaml'

satpy.tests.reader_tests.test_amsr2_l2_gaasp._create_gridded_gaasp_dataset(filename)
Represent files with gridded products.
satpy.tests.reader_tests.test_amsr2_l2_gaasp._create_one_res_gaasp_dataset(filename)
Represent files with one resolution of variables in them (ex. SOIL).
satpy.tests.reader_tests.test_amsr2_l2_gaasp._create_two_res_gaasp_dataset(filename)
Represent files with two resolution of variables in them (ex. OCEAN).
satpy.tests.reader_tests.test_amsr2_l2_gaasp._get_shared_global_attrs(filename)

satpy.tests.reader_tests.test_amsr2_l2_gaasp.fake_open_dataset(filename, **kwargs)
Create a Dataset similar to reading an actual file with xarray.open_dataset.

satpy.tests.reader_tests.test_ascat_l2_soilmoisture_bufr module

Unittesting the ASCAT SCATTEROMETER SOIL MOISTURE BUFR reader.


class satpy.tests.reader_tests.test_ascat_l2_soilmoisture_bufr.TesitAscatL2SoilmoistureBufr(methodName=
Bases: TestCase
Test ASCAT Soil Mosture loader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

442 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

setUp()
Create temporary file to perform tests with.
tearDown()
Remove the temporary directory created for a test.
test_scene()
Test scene creation.
test_scene_dataset_values()
Test loading data.
test_scene_load_available_datasets()
Test that all datasets are available.
satpy.tests.reader_tests.test_ascat_l2_soilmoisture_bufr.create_message()
Create fake message for testing.
satpy.tests.reader_tests.test_ascat_l2_soilmoisture_bufr.save_test_data(path)
Save the test file to the indicated directory.

satpy.tests.reader_tests.test_atms_l1b_nc module

The atms_l1b_nc reader tests package.


class satpy.tests.reader_tests.test_atms_l1b_nc.TestAtsmsL1bNCFileHandler
Bases: object
Test the AtmsL1bNCFileHandler reader.
test_antenna_temperature(reader, atms_fake_dataset)
Test antenna temperature.
test_attrs(reader, param, expect)
Test attributes.
test_drop_coords(reader)
Test drop coordinates.
test_end_time(reader)
Test end time.
test_get_dataset(reader)
Test get dataset.
test_merge_attributes(reader, param, expect)
Test merge attributes.
test_platform_name(reader)
Test platform name.
test_select_dataset(reader, param, expect)
Test select dataset.
test_sensor(reader)
Test sensor.
test_standardize_dims(reader, dims)
Test standardize dims.

2.15. satpy 443


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_start_time(reader)
Test start time.
satpy.tests.reader_tests.test_atms_l1b_nc.atms_fake_dataset()
Return fake ATMS dataset.
satpy.tests.reader_tests.test_atms_l1b_nc.l1b_file(tmp_path, atms_fake_dataset)
Return file path to level1b file.
satpy.tests.reader_tests.test_atms_l1b_nc.reader(l1b_file)
Return reader of ATMS level1b data.

satpy.tests.reader_tests.test_atms_sdr_hdf5 module

Module for testing the ATMS SDR HDF5 reader.


class satpy.tests.reader_tests.test_atms_sdr_hdf5.FakeHDF5_ATMS_SDR_FileHandler(filename,
file-
name_info,
file-
type_info,
in-
clude_factors=True)
Bases: FakeHDF5FileHandler
Swap-in HDF5 File Handler.
Create fake file handler.
static _add_basic_metadata_to_file_content(file_content, filename_info, num_grans)

_add_data_info_to_file_content(file_content, filename, data_var_prefix, num_grans)

static _add_geo_ref(file_content, filename)

static _add_geolocation_info_to_file_content(file_content, filename, data_var_prefix,


num_grans)

_add_granule_specific_info_to_file_content(file_content, dataset_group, num_granules,


num_scans_per_granule, gran_group_prefix)

static _convert_numpy_content_to_dataarray(final_content)

static _get_per_granule_lats()

static _get_per_granule_lons()

_num_of_bands = 22

_num_scans_per_gran = [12]

_num_test_granules = 1

get_test_content(filename, filename_info, filetype_info)


Mimic reader input file content.
class satpy.tests.reader_tests.test_atms_sdr_hdf5.TestATMS_SDR_Reader
Bases: object
Test ATMS SDR Reader.

444 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_assert_bt_properties(data_arr, num_scans=1, with_area=True)

setup_method()
Wrap HDF5 file handler with our own fake handler.
teardown_method()
Stop wrapping the HDF5 file handler.
test_init()
Test basic init with no extra parameters.
test_init_start_end_time()
Test basic init with start and end times around the start/end times of the provided file.
test_load_all_bands(files, expected)
Load brightness temperatures for all 22 ATMS channels, with/without geolocation.
yaml_file = 'atms_sdr_hdf5.yaml'

satpy.tests.reader_tests.test_avhrr_l0_hrpt module

Tests for the hrpt reader.


class satpy.tests.reader_tests.test_avhrr_l0_hrpt.CalibratorPatcher(methodName='runTest')
Bases: PygacPatcher
Patch pygac.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp() → None
Patch pygac’s calibration.
class satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTChannel3(methodName='runTest')
Bases: TestHRPTWithPatchedCalibratorAndFile
Test case for reading calibrated brightness temperature from hrpt data.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

_get_channel_3a_counts()
Get the channel 4 bt.
_get_channel_3a_reflectance()
Get the channel 4 bt.
_get_channel_3b_bt()
Get the channel 4 bt.

2.15. satpy 445


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_channel_3a_masking()
Test that channel 3a is split correctly.
test_channel_3b_masking()
Test that channel 3b is split correctly.
test_uncalibrated_channel_3a_masking()
Test that channel 3a is split correctly.
class satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetCalibratedBT(methodName='runTest')
Bases: TestHRPTWithPatchedCalibratorAndFile
Test case for reading calibrated brightness temperature from hrpt data.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

_get_channel_4_bt()
Get the channel 4 bt.
test_calibrated_bt_values()
Test the calibrated reflectance values.
class satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetCalibratedReflectances(methodName='runTest')
Bases: TestHRPTWithPatchedCalibratorAndFile
Test case for reading calibrated reflectances from hrpt data.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

_get_channel_1_reflectance()
Get the channel 1 reflectance.
test_calibrated_reflectances_values()
Test the calibrated reflectance values.
class satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetUncalibratedData(methodName='runTest')
Bases: TestHRPTWithFile
Test case for reading uncalibrated hrpt data.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

_get_channel_1_counts()

test_get_dataset_returns_a_dataarray()
Test that get_dataset returns a dataarray.

446 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_no_calibration_values_are_1()
Test that the values of non-calibrated data is 1.
test_platform_name()
Test that the platform name is correct.
class satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTNavigation(methodName='runTest')
Bases: TestHRPTWithFile
Test case for computing HRPT navigation.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

_prepare_mocks(Orbital, SatelliteInterpolator, get_lonlatalt)


Prepare the mocks.
setUp() → None
Set up the test case.
test_latitudes_are_returned(Orbital, compute_pixels, get_lonlatalt, SatelliteInterpolator)
Check that latitudes are returned properly.
test_longitudes_are_returned(Orbital, compute_pixels, get_lonlatalt, SatelliteInterpolator)
Check that latitudes are returned properly.
class satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTReading(methodName='runTest')
Bases: TestHRPTWithFile
Test case for reading hrpt data.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_reading()
Test that data is read.
class satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTWithFile(methodName='runTest')
Bases: TestCase
Test base class with writing a fake file.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

_get_dataset(dataset_id)

setUp() → None
Set up the test case.

2.15. satpy 447


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

tearDown() → None
Tear down the test case.
class satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTWithPatchedCalibratorAndFile(methodName='runTes
Bases: CalibratorPatcher, TestHRPTWithFile
Test case with patched calibration routines and a synthetic file.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp() → None
Set up the test case.
tearDown()
Tear down the test case.
satpy.tests.reader_tests.test_avhrr_l0_hrpt.fake_calibrate_solar(data, *args, **kwargs)
Fake calibration.
satpy.tests.reader_tests.test_avhrr_l0_hrpt.fake_calibrate_thermal(data, *args, **kwargs)
Fake calibration.

satpy.tests.reader_tests.test_avhrr_l1b_gaclac module

Pygac interface.
class satpy.tests.reader_tests.test_avhrr_l1b_gaclac.GACLACFilePatcher(methodName='runTest')
Bases: PygacPatcher
Patch pygac.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Patch GACLACFile.
class satpy.tests.reader_tests.test_avhrr_l1b_gaclac.PygacPatcher(methodName='runTest')
Bases: TestCase
Patch pygac.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Patch pygac imports.

448 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

tearDown()
Unpatch the pygac imports.
class satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGACLACFile(methodName='runTest')
Bases: GACLACFilePatcher
Test the GACLAC file handler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

_get_eosip_fh(filename, **kwargs)
Create a file handler.
_get_fh(filename='NSS.GHRR.NG.D88002.S0614.E0807.B0670506.WI', **kwargs)
Create a file handler.
test__slice(strip_invalid_lat, get_qual_flags)
Test slicing.
test_get_angle()
Test getting the angle.
test_get_channel()
Test getting the channels.
test_get_dataset_angles(get_angle, *mocks)
Test getting the angles.
test_get_dataset_latlon(*mocks)
Test getting the latitudes and longitudes.
test_get_dataset_qual_flags(*mocks)
Test getting the qualitiy flags.
test_get_dataset_slice(get_channel, slc, *mocks)
Get a slice of a dataset.
test_init()
Test GACLACFile initialization.
test_init_eosip()
Test GACLACFile initialization.
test_read_raw_data()
Test raw data reading.
test_slice(_slice)
Test slicing.
test_strip_invalid_lat()
Test stripping invalid coordinates.

2.15. satpy 449


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGetDataset(methodName='runTest')
Bases: GACLACFilePatcher
Test the get_dataset method.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
static _check_get_channel_calls(fh, get_channel)
Check _get_channel() calls.
_classSetupFailed = False

_class_cleanups = []

static _create_expected(name)

static _create_file_handler(reader)
Mock reader and file handler.
static _get_dataset(fh)

setUp()
Set up the instance.
test_get_dataset_channels(get_channel, *mocks)
Test getting the channel datasets.
test_get_dataset_no_tle(get_channel, *mocks)
Test getting the channel datasets when no TLEs are present.
satpy.tests.reader_tests.test_avhrr_l1b_gaclac._get_fh_mocked(init_mock, **attrs)
Create a mocked file handler with the given attributes.
satpy.tests.reader_tests.test_avhrr_l1b_gaclac._get_reader_mocked(along_track=3)
Create a mocked reader.

satpy.tests.reader_tests.test_aws1_mwr_l1b module

Tests for aws l1b filehandlers.


satpy.tests.reader_tests.test_aws1_mwr_l1b.test_get_channel_data(aws_mwr_handler,
fake_mwr_data_array)
Test retrieving the channel data.
satpy.tests.reader_tests.test_aws1_mwr_l1b.test_get_navigation_data(aws_mwr_handler,
id_name, file_key,
fake_array)
Test retrieving the geolocation (lon-lat) data.
satpy.tests.reader_tests.test_aws1_mwr_l1b.test_get_viewing_geometry_data(aws_mwr_handler,
id_name, file_key,
fake_array)
Test retrieving the angles_data.
satpy.tests.reader_tests.test_aws1_mwr_l1b.test_metadata(aws_mwr_handler)
Test that the metadata is read correctly.

450 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_aws1_mwr_l1b.test_orbit_number_start_end(aws_mwr_handler)
Test that start and end orbit number is read correctly.
satpy.tests.reader_tests.test_aws1_mwr_l1b.test_start_end_time(aws_mwr_handler)
Test that start and end times are read correctly.
satpy.tests.reader_tests.test_aws1_mwr_l1b.test_try_get_data_not_in_file(aws_mwr_handler)
Test retrieving a data field that is not available in the file.

satpy.tests.reader_tests.test_aws1_mwr_l1c module

Tests for ESA Arctic Weather Satellite (AWS) level-1c file reading.
satpy.tests.reader_tests.test_aws1_mwr_l1c.test_get_channel_data(aws_mwr_l1c_handler,
fake_mwr_data_array)
Test retrieving the channel data.
satpy.tests.reader_tests.test_aws1_mwr_l1c.test_get_navigation_data(aws_mwr_l1c_handler,
id_name, file_key,
fake_array)
Test retrieving the geolocation (lon, lat) data.
satpy.tests.reader_tests.test_aws1_mwr_l1c.test_get_viewing_geometry_data(aws_mwr_l1c_handler,
id_name, file_key,
fake_array)
Test retrieving the angles_data.

satpy.tests.reader_tests.test_cmsaf_claas module

Tests for the ‘cmsaf-claas2_l2_nc’ reader.


class satpy.tests.reader_tests.test_cmsaf_claas.TestCLAAS2MultiFile
Bases: object
Test reading multiple CLAAS-2 files.
multi_file_dataset(multi_file_reader)
Load datasets from multiple files.
multi_file_reader(reader, fake_files)
Create a multi-file reader.
test_combine_datasets(multi_file_dataset, ds_name, expected)
Test combination of datasets.
test_combine_timestamps(multi_file_reader, start_time)
Test combination of timestamps.
test_number_of_datasets(multi_file_dataset)
Test number of datasets.
class satpy.tests.reader_tests.test_cmsaf_claas.TestCLAAS2SingleFile
Bases: object
Test reading a single CLAAS2 file.
area_exp(area_extent_exp)
Get expected area definition.

2.15. satpy 451


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

area_extent_exp(start_time)
Get expected area extent.
file_handler(fake_file)
Return a CLAAS-2 file handler.
test_end_time(file_handler)
Test end time property.
test_get_area_def(file_handler, area_exp)
Test area definition.
test_get_dataset(file_handler, ds_name, expected)
Test dataset loading.
test_start_time(file_handler, start_time)
Test start time property.
satpy.tests.reader_tests.test_cmsaf_claas.encoding()
Dataset encoding.
satpy.tests.reader_tests.test_cmsaf_claas.fake_dataset(start_time_str)
Create a CLAAS-like test dataset.
satpy.tests.reader_tests.test_cmsaf_claas.fake_file(fake_dataset, encoding, tmp_path)
Write a fake dataset to file.
satpy.tests.reader_tests.test_cmsaf_claas.fake_files(fake_dataset, encoding, tmp_path)
Write the same fake dataset into two different files.
satpy.tests.reader_tests.test_cmsaf_claas.reader()
Return reader for CMSAF CLAAS-2.
satpy.tests.reader_tests.test_cmsaf_claas.start_time(request)
Get start time of the dataset.
satpy.tests.reader_tests.test_cmsaf_claas.start_time_str(start_time)
Get string representation of the start time.
satpy.tests.reader_tests.test_cmsaf_claas.test_file_pattern(reader)
Test file pattern matching.

satpy.tests.reader_tests.test_electrol_hrit module

The HRIT electrol reader tests package.


class satpy.tests.reader_tests.test_electrol_hrit.TestHRITGOMSEpiFileHandler(methodName='runTest')
Bases: TestCase
Test the HRIT Epilogue FileHandler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

452 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_init(new_fh_init, fromfile)
Set up the hrit file handler for testing.
class satpy.tests.reader_tests.test_electrol_hrit.TestHRITGOMSFileHandler(methodName='runTest')
Bases: TestCase
A test of the ELECTRO-L main file handler functions.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_calibrate(*mocks)
Test calibrate.
test_get_area_def(*mocks)
Test get_area_def.
test_get_dataset(calibrate_mock, *mocks)
Test get dataset.
class satpy.tests.reader_tests.test_electrol_hrit.TestHRITGOMSProFileHandler(methodName='runTest')
Bases: TestCase
Test the HRIT Prologue FileHandler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_calib = array([[50, 50, 50, ..., 50, 50, 50], [50, 50, 50, ..., 50, 50, 50],
[50, 50, 50, ..., 50, 50, 50], ..., [50, 50, 50, ..., 50, 50, 50], [50, 50, 50, ...,
50, 50, 50], [50, 50, 50, ..., 50, 50, 50]], dtype=int32)

test_img_acq = {'Cel': array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),
'StartDelay': array([9119019, 9119019, 9119019, 9119019, 9119019, 9119019, 9119019,
9119019, 9119019, 9119019], dtype=int32), 'Status': array([2, 2, 2, 2, 2, 2, 2, 2,
2, 2], dtype=uint32), 'TagLength': array([24, 24, 24, 24, 24, 24, 24, 24, 24, 24],
dtype=uint32), 'TagType': array([3, 3, 3, 3, 3, 3, 3, 3, 3, 3], dtype=uint32)}

test_init(new_fh_init, fromfile)
Set up the hrit file handler for testing.
test_pro = {'ImageAcquisition': {'Cel': array([0., 0., 0., 0., 0., 0., 0., 0., 0.,
0.]), 'StartDelay': array([9119019, 9119019, 9119019, 9119019, 9119019, 9119019,
9119019, 9119019, 9119019, 9119019], dtype=int32), 'Status': array([2, 2, 2, 2, 2,
2, 2, 2, 2, 2], dtype=uint32), 'TagLength': array([24, 24, 24, 24, 24, 24, 24, 24,
24, 24], dtype=uint32), 'TagType': array([3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
dtype=uint32)}, 'ImageCalibration': array([[50, 50, 50, ..., 50, 50, 50], [50, 50,
50, ..., 50, 50, 50], [50, 50, 50, ..., 50, 50, 50], ..., [50, 50, 50, ..., 50, 50,
50], [50, 50, 50, ..., 50, 50, 50], [50, 50, 50, ..., 50, 50, 50]], dtype=int32),
'SatelliteStatus': {'NominalLongitude': 1.3264, 'SatelliteCondition': 1,
'SatelliteID': 19002, 'SatelliteName': b'ELECTRO', 'TagLength': 292, 'TagType':
2, 'TimeOffset': 0.0}}

2.15. satpy 453


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_sat_status = {'NominalLongitude': 1.3264, 'SatelliteCondition': 1,


'SatelliteID': 19002, 'SatelliteName': b'ELECTRO', 'TagLength': 292, 'TagType':
2, 'TimeOffset': 0.0}

class satpy.tests.reader_tests.test_electrol_hrit.Testrecarray2dict(methodName='runTest')
Bases: TestCase
Test the function that converts numpy record arrays into dicts for use within SatPy.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_fun()
Test record array.

satpy.tests.reader_tests.test_epic_l1b_h5 module

The epic_l1b_h5 reader tests package.


class satpy.tests.reader_tests.test_epic_l1b_h5.TestEPICL1bReader
Bases: object
Test the EPIC L1b HDF5 reader.
_setup_h5(setup_hdf5_file)
Initialise reader for the tests.
setup_method()
Set up the tests.
test_bad_calibration(setup_hdf5_file)
Test that error is raised if a bad calibration is used.
test_counts_calibration(setup_hdf5_file)
Test that data is correctly calibrated.
test_load_ancillary(setup_hdf5_file)
Test that ancillary datasets load correctly.
test_refl_calibration(setup_hdf5_file)
Test that data is correctly calibrated into reflectances.
test_times(setup_hdf5_file)
Test start and end times load properly.
satpy.tests.reader_tests.test_epic_l1b_h5.make_fake_hdf_epic(fname)
Make a fake HDF5 file for EPIC data testing.
satpy.tests.reader_tests.test_epic_l1b_h5.setup_hdf5_file(tmp_path)
Create temp hdf5 files.

454 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_eps_l1b module

Test the eps l1b format.


class satpy.tests.reader_tests.test_eps_l1b.BaseTestCaseEPSL1B(methodName='runTest')
Bases: TestCase
Base class for EPS l1b test case.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

_create_structure()

class satpy.tests.reader_tests.test_eps_l1b.TestEPSL1B(methodName='runTest')
Bases: BaseTestCaseEPSL1B
Test the filehandler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the tests.
test_angles()
Test the navigation.
test_clould_flags()
Test getting the cloud flags.
test_dataset()
Test getting a dataset.
test_get_dataset_radiance()
Test loading a data array with radiance calibration.
test_get_full_angles_twice(mock__getitem__)
Test get full angles twice.
test_navigation()
Test the navigation.
test_read_all()
Test initialization.
class satpy.tests.reader_tests.test_eps_l1b.TestWrongSamplingEPSL1B(methodName='runTest')
Bases: BaseTestCaseEPSL1B
Test the filehandler on a corrupt file.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.

2.15. satpy 455


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_classSetupFailed = False

_class_cleanups = []

_inject_fixtures(caplog)
Inject caplog.
setUp()
Set up the tests.
test_get_dataset_fails_because_of_wrong_sample_rate()
Test that lons fail to be interpolate.
class satpy.tests.reader_tests.test_eps_l1b.TestWrongScanlinesEPSL1B(methodName='runTest')
Bases: BaseTestCaseEPSL1B
Test the filehandler on a corrupt file.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

_inject_fixtures(caplog)
Inject caplog.
setUp()
Set up the tests.
tearDown()
Tear down the tests.
test_get_dataset_longitude_shape_is_right()
Test that the shape of longitude is 1080.
test_read_all_assigns_int_scan_lines()
Test scanline assignment.
test_read_all_return_right_number_of_scan_lines()
Test scanline assignment.
test_read_all_warns_about_scan_lines()
Test scanline assignment.
satpy.tests.reader_tests.test_eps_l1b.create_sections(structure)
Create file sections.

satpy.tests.reader_tests.test_eps_sterna_mwr_l1b module

Tests for the EPS-Sterna MWR l1b filehandlers.


satpy.tests.reader_tests.test_eps_sterna_mwr_l1b.test_get_navigation_data(eps_sterna_mwr_handler,
id_name, file_key,
fake_array)
Test retrieving the geolocation (lon-lat) data.

456 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_eps_sterna_mwr_l1b.test_metadata(eps_sterna_mwr_handler)
Test that the metadata is read correctly.
satpy.tests.reader_tests.test_eps_sterna_mwr_l1b.test_try_get_data_not_in_file(eps_sterna_mwr_handler)
Test retrieving a data field that is not available in the file.

satpy.tests.reader_tests.test_eum_base module

EUMETSAT base reader tests package.


class satpy.tests.reader_tests.test_eum_base.TestGetServiceMode(methodName='runTest')
Bases: TestCase
Test the get_service_mode function.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_get_fci_service_mode_fdss()
Test fetching of FCI service mode information for FDSS.
test_get_fci_service_mode_rss()
Test fetching of FCI service mode information for RSS.
test_get_seviri_service_mode_fes()
Test fetching of SEVIRI service mode information for FES.
test_get_seviri_service_mode_iodc_E0415()
Test fetching of SEVIRI service mode information for IODC at 41.5 degrees East.
test_get_seviri_service_mode_iodc_E0455()
Test fetching of SEVIRI service mode information for IODC at 45.5 degrees East.
test_get_seviri_service_mode_rss()
Test fetching of SEVIRI service mode information for RSS.
test_get_unknown_instrument_service_mode()
Test fetching of service mode information for unknown input instrument.
test_get_unknown_lon_service_mode()
Test fetching of service mode information for unknown input longitude.
class satpy.tests.reader_tests.test_eum_base.TestMakeTimeCdsDictionary(methodName='runTest')
Bases: TestCase
Test TestMakeTimeCdsDictionary.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_fun()
Test function for TestMakeTimeCdsDictionary.

2.15. satpy 457


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.reader_tests.test_eum_base.TestMakeTimeCdsRecarray(methodName='runTest')
Bases: TestCase
Test TestMakeTimeCdsRecarray.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_fun()
Test function for TestMakeTimeCdsRecarray.
class satpy.tests.reader_tests.test_eum_base.TestRecarray2Dict(methodName='runTest')
Bases: TestCase
Test TestRecarray2Dict.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_mpef_product_header()
Test function for TestRecarray2Dict and mpef product header.
test_timestamps()
Test function for TestRecarray2Dict.

satpy.tests.reader_tests.test_eum_l2_bufr module

Unittesting the EUMETSAT L2 BUFR reader.


class satpy.tests.reader_tests.test_eum_l2_bufr.L2BufrData(filename, test_data, with_adef=False,
rect_lon='default')
Bases: object
Mock L2 BUFR data.
Initialize by mocking test data for testing the L2 BUFR reader.
get_data(dataset_name, key, coordinates)
Read data from mock file.
class satpy.tests.reader_tests.test_eum_l2_bufr.TestL2BufrReader
Bases: object
Test EUMETSAT L2 BUFR Reader.

458 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

pytestmark = [Mark(name='parametrize', args=('input_file',


['GIIBUFRProduct_20231027140000Z_00_OMPEFS03_MET10_FES_E0000',
'ASRBUFRProd_20231022224500Z_00_OMPEFS03_MET10_FES_E0000',
'AMVBUFRProd_20231023044500Z_00_OMPEFS02_MET09_FES_E0455',
'MSG2-SEVI-MSGASRE-0101-0101-20191106130000.000000000Z-20191106131702-1362128.bfr',
'W_XX-EUMETSAT-Darmstadt,IMG+SAT,MTI1+FCI-2-ASR--FD------BUFR_C_EUMT_\n
20230623092246_L2PF_IV_20170410170000_20170410171000_V__C_0103_0000.bin',
'W_XX-EUMETSAT-Darmstadt,IMG+SAT,MTI1+FCI-2-AMV--FD------BUFR_C_EUMT_\
n20230623092246_L2PF_IV_20170410170000_20170410171000_V__C_0103_0000.bin']),
kwargs={})]

test_amv_with_area_def(input_file)
Test that AMV data can not be loaded with an area definition.
The way to test this is to try load a variable with with_adef=True. The reader shall ignore this flag and
return a 1D array, not a 2D.
static test_attributes_with_area_definition(input_file)
Test correctness of dataset attributes with data loaded with a AreaDefinition.
static test_attributes_with_swath_definition(input_file)
Test correctness of dataset attributes with data loaded with a SwathDefinition (default behaviour).
test_data_with_area_definition(input_file)
Test data loaded with an area definition.
test_data_with_rect_lon(input_file)
Test data loaded with an area definition and a rectification longitude.
static test_data_with_swath_definition(input_file)
Test data loaded with SwathDefinition (default behaviour).
static test_lonslats(input_file)
Test reading of longitude and latitude data with EUMETSAT L2 BUFR reader.
test_resolution(input_file)
Test data loaded with the correct resolution attribute .

satpy.tests.reader_tests.test_eum_l2_grib module

EUM L2 GRIB-reader test package.


satpy.tests.reader_tests.test_eum_l2_grib.common_checks(ec_, reader, mock_file, dataset_id)
Commmon checks for fci and seviri data.
satpy.tests.reader_tests.test_eum_l2_grib.setup_reader(ec_)
Set up the test by creating a mocked eccodes library.
satpy.tests.reader_tests.test_eum_l2_grib.test_fci_data_reading(da_, xr_, setup_reader)
Test the reading of fci data from the product.
satpy.tests.reader_tests.test_eum_l2_grib.test_seviri_data_reading(da_, xr_, setup_reader)
Test the reading of data from the product.

2.15. satpy 459


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_fci_base module

FCI base reader tests package.


satpy.tests.reader_tests.test_fci_base.test_calculate_area_extent()
Test function for calculate_area_extent.

satpy.tests.reader_tests.test_fci_l1c_nc module

Tests for the ‘fci_l1c_nc’ reader.


class satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerAF(*args, **kwargs)
Bases: FakeFCIFileHandlerBase
Mock AF data.
Initiative fake file handler.
chan_patterns: Dict[str, Dict[str, List[int] | str]] = {}

satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerAF_fixture(channel, resolution)
Get a fixture for the fake AF filehandler, it contains only one channel and one resolution.
class satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerBase(*args, **kwargs)
Bases: FakeNetCDF4FileHandler
Class for faking the NetCDF4 Filehandler.
Initiative fake file handler.
_get_test_content_all_channels()

cached_file_content: Dict[str, DataArray] = {}

chan_patterns: Dict[str, Dict[str, List[int] | str]] = {}

get_test_content(filename, filename_info, filetype_info)


Get the content of the test data.
class satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerFDHSI(*args, **kwargs)
Bases: FakeFCIFileHandlerBase
Mock FDHSI data.
Initiative fake file handler.
chan_patterns: Dict[str, Dict[str, List[int] | str]] = {'ir_{:>02d}': {'channels':
[38, 87, 97, 105, 123, 133], 'grid_type': '2km'}, 'nir_{:>02d}': {'channels':
[13, 16, 22], 'grid_type': '1km'}, 'vis_{:>02d}': {'channels': [4, 5, 6, 8, 9],
'grid_type': '1km'}, 'wv_{:>02d}': {'channels': [63, 73], 'grid_type': '2km'}}

satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerFDHSIError_fixture()
Get a fixture for the fake FDHSI filehandler, including channel and file names.
class satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerFDHSIIQTI(*args, **kwargs)
Bases: FakeFCIFileHandlerFDHSI
Mock IQTI for FHDSI data.
Initiative fake file handler.

460 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_test_content_all_channels()

satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerFDHSIIQTI_fixture()
Get a fixture for the fake FDHSI IQTI filehandler, including channel and file names.
satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerFDHSIQ4_fixture()
Get a fixture for the fake FDHSI Q4 filehandler, including channel and file names.
satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerFDHSI_fixture()
Get a fixture for the fake FDHSI filehandler, including channel and file names.
class satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerHRFI(*args, **kwargs)
Bases: FakeFCIFileHandlerBase
Mock HRFI data.
Initiative fake file handler.
chan_patterns: Dict[str, Dict[str, List[int] | str]] = {'ir_{:>02d}_hr':
{'channels': [38, 105], 'grid_type': '1km'}, 'nir_{:>02d}_hr': {'channels':
[22], 'grid_type': '500m'}, 'vis_{:>02d}_hr': {'channels': [6], 'grid_type':
'500m'}}

class satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerHRFIIQTI(*args, **kwargs)


Bases: FakeFCIFileHandlerHRFI
Mock IQTI for HRFI data.
Initiative fake file handler.
_get_test_content_all_channels()

satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerHRFIIQTI_fixture()
Get a fixture for the fake HRFI IQTI filehandler, including channel and file names.
satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerHRFIQ4_fixture()
Get a fixture for the fake HRFI Q4 filehandler, including channel and file names.
satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerHRFI_fixture()
Get a fixture for the fake HRFI filehandler, including channel and file names.
class satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerWithBadData(*args,
**kwargs)
Bases: FakeFCIFileHandlerFDHSI
Mock bad data.
Initiative fake file handler.
_get_test_content_all_channels()

class satpy.tests.reader_tests.test_fci_l1c_nc.FakeH5Variable(data, dims=(), attrs=None)


Bases: object
Class for faking h5netcdf.Variable class.
Initialize the class.
_set_meta()

2.15. satpy 461


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property ndim
Get the number of dimensions.
property shape
Get the shape.
class satpy.tests.reader_tests.test_fci_l1c_nc.ModuleTestFCIL1cNcReader
Bases: object
Class containing parameters and modules useful for the test related to L1c reader.
static _compare_rc_period_min_count_in_repeat_cycle(filetype, fh_param, reader_configs,
compare_parameters_tuple)
Test the count_in_repeat_cycle, rc_period_min.
static _compare_sun_earth_distance(filetype, fh_param, reader_configs)
Test the sun earth distance calculation.
static _get_assert_attrs(res, ch, attrs_dict)
Test the different attributes values.
static _get_assert_erased_attrs(res, ch)
Test that the attributes listed have been erased.
_get_assert_load(res, ch, dict_arg, filenames)
Test the value for different channels.
_get_res_AF(channel, fh_param, calibration, reader_configs)
Load the reader for AF data.
static _get_type_ter_AF(channel)
Get the type_ter.
static _other_calibration_test(res, ch, dict_arg)
Test of other calibration test.
static _reflectance_test(tab, filenames)
Test of with the reflectance test.
static _shape_test(res, ch, grid_type, dict_arg)
Test the shape.

462 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

fh_param_for_filetype = {'fdhsi': {'channels': {'solar': ['vis_04', 'vis_05',


'vis_06', 'vis_08', 'vis_09', 'nir_13', 'nir_16', 'nir_22'], 'solar_grid_type':
['1km', '1km', '1km', '1km', '1km', '1km', '1km', '1km'], 'terran': ['ir_38',
'wv_63', 'wv_73', 'ir_87', 'ir_97', 'ir_105', 'ir_123', 'ir_133'],
'terran_grid_type': ['2km', '2km', '2km', '2km', '2km', '2km', '2km', '2km']},
'filenames': ['W_XX-EUMETSAT-Darmstadt,IMG+SAT,
MTI1+FCI-1C-RRAD-FDHSI-FD--CHK-BODY--L2P-NC4E_C_EUMT_20170410114434_GTT_DEV_20170410113925_20170410
nc']}, 'fdhsi_iqti': {'channels': {'solar': ['vis_04', 'vis_05', 'vis_06',
'vis_08', 'vis_09', 'nir_13', 'nir_16', 'nir_22'], 'solar_grid_type': ['1km',
'1km', '1km', '1km', '1km', '1km', '1km', '1km'], 'terran': ['ir_38', 'wv_63',
'wv_73', 'ir_87', 'ir_97', 'ir_105', 'ir_123', 'ir_133'], 'terran_grid_type':
['2km', '2km', '2km', '2km', '2km', '2km', '2km', '2km']}, 'filenames':
['W_XX-EUMETSAT-Darmstadt,IMG+SAT,
MTI1+FCI-1C-RRAD-FDHSI-FD--CHK-BODY--MON-NC4_C_EUMT_20240307233956_IQTI_DEV_20231016125007_20231016
nc']}, 'fdhsi_q4': {'channels': {'solar': ['vis_04', 'vis_05', 'vis_06',
'vis_08', 'vis_09', 'nir_13', 'nir_16', 'nir_22'], 'solar_grid_type': ['1km',
'1km', '1km', '1km', '1km', '1km', '1km', '1km'], 'terran': ['ir_38', 'wv_63',
'wv_73', 'ir_87', 'ir_97', 'ir_105', 'ir_123', 'ir_133'], 'terran_grid_type':
['2km', '2km', '2km', '2km', '2km', '2km', '2km', '2km']}, 'filenames':
['W_XX-EUMETSAT-Darmstadt,IMG+SAT,
MTI1+FCI-1C-RRAD-FDHSI-Q4--CHK-BODY--DIS-NC4E_C_EUMT_20230723025408_IDPFI_DEV_20230722120000_202307
nc']}, 'hrfi': {'channels': {'solar': ['vis_06', 'nir_22'], 'solar_grid_type':
['500m', '500m'], 'terran': ['ir_38', 'ir_105'], 'terran_grid_type': ['1km',
'1km']}, 'filenames': ['W_XX-EUMETSAT-Darmstadt,IMG+SAT,
MTI1+FCI-1C-RRAD-HRFI-FD--CHK-BODY--L2P-NC4E_C_EUMT_20170410114434_GTT_DEV_20170410113925_201704101
nc']}, 'hrfi_iqti': {'channels': {'solar': ['vis_06', 'nir_22'],
'solar_grid_type': ['500m', '500m'], 'terran': ['ir_38', 'ir_105'],
'terran_grid_type': ['1km', '1km']}, 'filenames':
['W_XX-EUMETSAT-Darmstadt,IMG+SAT,
MTI1+FCI-1C-RRAD-HRFI-FD--CHK-BODY--MON-NC4_C_EUMT_20240307233956_IQTI_DEV_20231016125007_202310161
nc']}, 'hrfi_q4': {'channels': {'solar': ['vis_06', 'nir_22'], 'solar_grid_type':
['500m', '500m'], 'terran': ['ir_38', 'ir_105'], 'terran_grid_type': ['1km',
'1km']}, 'filenames': ['W_XX-EUMETSAT-Darmstadt,IMG+SAT,
MTI1+FCI-1C-RRAD-HRFI-Q4--CHK-BODY--DIS-NC4E_C_EUMT_20230723025408_IDPFI_DEV_20230722120000_2023072
nc']}}

class satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader
Bases: ModuleTestFCIL1cNcReader
Test FCI L1c NetCDF reader with nominal data.
test_area_definition_computation(reader_configs, fh_param, expected_area)
Test that the geolocation computation is correct.
test_compute_earth_sun_parameter(reader_configs, fh_param)
Test the computation of the sun_earth_parameter.
test_compute_earth_sun_parameter_AF(FakeFCIFileHandlerAF_fixture, reader_configs, channel,
resolution)
Test the rc_period_min value for each configuration.
test_count_in_repeat_cycle_rc_period_min(reader_configs, fh_param, compare_tuples)
Test the rc_period_min value for each configuration.
test_count_in_repeat_cycle_rc_period_min_AF(FakeFCIFileHandlerAF_fixture, reader_configs,
channel, resolution, compare_tuples)

2.15. satpy 463


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Test the rc_period_min value for each configuration.


test_excs(reader_configs, fh_param)
Test that exceptions are raised where expected.
test_file_pattern(reader_configs, filenames)
Test file pattern matching.
test_file_pattern_for_TRAIL_file(reader_configs, filenames)
Test file pattern matching for TRAIL files, which should not be picked up.
test_get_segment_position_info(reader_configs, fh_param, expected_pos_info)
Test the segment position info method.
test_load_aux_data(reader_configs, fh_param)
Test loading of auxiliary data.
test_load_calibration(reader_configs, fh_param, caplog, calibration, res_type)
Test loading with counts,radiance,reflectance and bt.
test_load_calibration_af(FakeFCIFileHandlerAF_fixture, reader_configs, channel, calibration,
caplog)
Test loading with counts,radiance,reflectance and bt for AF files.
test_load_calibration_negative_rad(reader_configs, fh_param)
Test calibrating negative radiances.
See https://github.com/pytroll/satpy/issues/3009.
test_load_composite()
Test that composites are loadable.
test_load_map_and_pixel(reader_configs, fh_param, expected_res_n, calibration)
Test loading of index_map and pixel_quality.
test_load_map_and_pixel_af(FakeFCIFileHandlerAF_fixture, reader_configs, channel, calibration)
Test loading with of index_map and pixel_quality for AF files.
test_not_get_segment_info_called_af(FakeFCIFileHandlerAF_fixture, reader_configs, channel,
resolution)
Test that checks that the get_segment_position_info has not been called for AF data.
test_orbital_parameters_attr(reader_configs, fh_param)
Test the orbital parameter attribute.
test_platform_name(reader_configs, fh_param)
Test that platform name is exposed.
Test that the FCI reader exposes the platform name. Corresponds to GH issue 1014.
test_rc_period_min_error(reader_configs, fh_param)
Test the rc_period_min error.
class satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReaderBadData
Bases: object
Test the FCI L1c NetCDF Reader for bad data input.

464 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_handling_bad_data_ir(reader_configs, caplog)
Test handling of bad IR data.
test_handling_bad_data_vis(reader_configs, caplog)
Test handling of bad VIS data.
satpy.tests.reader_tests.test_fci_l1c_nc._get_global_attributes()

satpy.tests.reader_tests.test_fci_l1c_nc._get_reader_with_filehandlers(filenames,
reader_configs,
**reader_kwargs)

satpy.tests.reader_tests.test_fci_l1c_nc._get_test_calib_data_for_channel(data, ch_str)

satpy.tests.reader_tests.test_fci_l1c_nc._get_test_calib_for_channel_ir(data, meas_path)

satpy.tests.reader_tests.test_fci_l1c_nc._get_test_calib_for_channel_vis(data, meas)

satpy.tests.reader_tests.test_fci_l1c_nc._get_test_content_areadef()

satpy.tests.reader_tests.test_fci_l1c_nc._get_test_content_aux_data()

satpy.tests.reader_tests.test_fci_l1c_nc._get_test_content_for_channel(ch_str, grid_type)

satpy.tests.reader_tests.test_fci_l1c_nc._get_test_geolocation_for_channel(data, ch_str,
grid_type,
n_rows_cols)

satpy.tests.reader_tests.test_fci_l1c_nc._get_test_image_data_for_channel(data, ch_str,
n_rows_cols)

satpy.tests.reader_tests.test_fci_l1c_nc._get_test_index_map_for_channel(data, ch_str,
n_rows_cols)

satpy.tests.reader_tests.test_fci_l1c_nc._get_test_pixel_quality_for_channel(data, ch_str,
n_rows_cols)

satpy.tests.reader_tests.test_fci_l1c_nc._get_test_segment_position_for_channel(data,
ch_str,
n_rows_cols)

satpy.tests.reader_tests.test_fci_l1c_nc.clear_cache(reader)
Clear the cache for file handlres in reader.
satpy.tests.reader_tests.test_fci_l1c_nc.fill_chans_af()
Fill the dict CHANS_AF and the list TEST_FILENAMES with the right channel and resolution.
satpy.tests.reader_tests.test_fci_l1c_nc.generate_parameters(calibration)
Generate dynamically the parameters.
satpy.tests.reader_tests.test_fci_l1c_nc.get_list_channel_calibration(calibration)
Get the channel’s list according the calibration.
satpy.tests.reader_tests.test_fci_l1c_nc.mocked_basefilehandler(filehandler)
Mock patch the base class of the FCIL1cNCFileHandler with the content of our fake files (filehandler).
satpy.tests.reader_tests.test_fci_l1c_nc.reader_configs()
Return reader configs for FCI.

2.15. satpy 465


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_fci_l1c_nc.resolutions_AF_products(channel)
Get the resolutions of the African products.

satpy.tests.reader_tests.test_fci_l2_nc module

The fci_cld_l2_nc reader tests package.


class satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCAMVFileHandler
Bases: object
Test the FciL2NCAMVFileHandler reader.
test_all_basic(amv_filehandler, amv_file)
Test all basic functionalities.
test_dataset(amv_filehandler)
Test the correct execution of the get_dataset function with a valid nc_key.
test_dataset_with_invalid_filekey(amv_filehandler)
Test the correct execution of the get_dataset function with an invalid nc_key.
class satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCFileHandler(methodName='runTest')
Bases: TestCase
Test the FciL2NCFileHandler reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the test by creating a test file and opening it with the reader.
tearDown()
Remove the previously created test file.
test_all_basic()
Test all basic functionalities.
test_area_definition(me_, gad_)
Test the area definition computation.
test_dataset()
Test the correct execution of the get_dataset function with a valid nc_key.
test_dataset_with_invalid_filekey()
Test the correct execution of the get_dataset function with an invalid nc_key.
test_dataset_with_layer()
Check the correct execution of the get_dataset function with a valid nc_key & layer.
test_dataset_with_scalar()
Test the execution of the get_dataset function for scalar values.
test_dataset_with_total_cot()
Test the correct execution of the get_dataset function for total COT (add contributions from two layers).

466 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_emumerations()
Test the conversion of enumerated type information into flag_values and flag_meanings.
test_unit_from_file()
Test that a unit stored with attribute unit in the file is assigned to the units attribute.
test_units_from_file()
Test units extraction from NetCDF file.
test_units_from_yaml()
Test units extraction from yaml file.
test_units_none_conversion()
Test that a units stored as ‘none’ is converted to None.
class satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCReadingByteData(methodName='runTest')
Bases: TestCase
Test the FciL2NCFileHandler when reading and extracting byte data.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the test by creating a test file and opening it with the reader.
tearDown()
Remove the previously created test file.
test_byte_extraction()
Test the execution of the get_dataset function.
class satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCSegmentFileHandler(methodName='runTest')
Bases: TestCase
Test the FciL2NCSegmentFileHandler reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

static _get_unique_array(iarr, jarr)

setUp()
Set up the test by creating a test file and opening it with the reader.
tearDown()
Remove the previously created test file.
test_all_basic()
Test all basic functionalities.

2.15. satpy 467


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_dataset()
Test the correct execution of the get_dataset function with valid nc_key.
test_dataset_slicing_catid()
Test the correct execution of the _slice_dataset function with ‘category_id’ set.
test_dataset_slicing_chid_catid()
Test the correct execution of the _slice_dataset function with ‘channel_id’ and ‘category_id’ set.
test_dataset_slicing_irid()
Test the correct execution of the _slice_dataset function with ‘ir_channel_id’ set.
test_dataset_slicing_visid_catid()
Test the correct execution of the _slice_dataset function with ‘vis_channel_id’ and ‘category_id’ set.
test_dataset_with_adef()
Test the correct execution of the get_dataset function with with_area_definition=True.
test_dataset_with_adef_and_wrongs_dims()
Test the correct execution of the get_dataset function with dims that don’t match expected AreaDefinition.
test_dataset_with_invalid_filekey()
Test the correct execution of the get_dataset function with an invalid nc_key.
test_dataset_with_scalar()
Test the execution of the get_dataset function for scalar values.
satpy.tests.reader_tests.test_fci_l2_nc.amv_file(tmp_path_factory)
Create an AMV file.
satpy.tests.reader_tests.test_fci_l2_nc.amv_filehandler(amv_file)
Create an AMV filehandler.

satpy.tests.reader_tests.test_fy4_base module

The fy4_base reader tests package.


class satpy.tests.reader_tests.test_fy4_base.Test_FY4Base
Bases: object
Tests for the FengYun4 base class for the components missed by AGRI/GHI tests.
setup_method()
Initialise the tests.
teardown_method()
Stop wrapping the HDF5 file handler.
test_badcalibration()
Test case where we pass a bad calibration type, radiance is not supported.
test_badplatform()
Test case where we pass a bad calibration type, radiance is not supported.
test_badsensor()
Test case where we pass a bad sensor name, must be GHI or AGRI.

468 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_generic_image module

Unittests for generic image reader.


class satpy.tests.reader_tests.test_generic_image.FakeGenericImageFileHandler(filename,
filename_info,
filetype_info,
file_content,
**kwargs)
Bases: GenericImageFileHandler
Fake file handler.
Get fake file content from ‘get_test_content’.
satpy.tests.reader_tests.test_generic_image._assert_image_common(scn, channels, start_time,
end_time, dtype)

satpy.tests.reader_tests.test_generic_image._save_image(dset, fname, writer, fill_value=None)

satpy.tests.reader_tests.test_generic_image.alpha_channel()
Create alpha channel with fully transparent and opaque areas.
satpy.tests.reader_tests.test_generic_image.random_image_channel()
Create random data.
satpy.tests.reader_tests.test_generic_image.random_image_channel_b()
Create random data.
satpy.tests.reader_tests.test_generic_image.random_image_channel_g()
Create random data.
satpy.tests.reader_tests.test_generic_image.random_image_channel_l()
Create random data.
satpy.tests.reader_tests.test_generic_image.random_image_channel_r()
Create random data.
satpy.tests.reader_tests.test_generic_image.random_image_channel_with_nans()
Create random data and replace a portion of it with NaN values.
satpy.tests.reader_tests.test_generic_image.reader_l_nan_fill_value(test_image_l_nan_fill_value)
Create GenericImageFileHandler.
satpy.tests.reader_tests.test_generic_image.rgba_dset(random_image_channel_r,
random_image_channel_g,
random_image_channel_b, alpha_channel)
Create an RGB dataset.
satpy.tests.reader_tests.test_generic_image.test_GenericImageFileHandler(test_image_rgba)
Test direct use of the reader.
satpy.tests.reader_tests.test_generic_image.test_GenericImageFileHandler_datasetid(test_image_rgba)
Test direct use of the reader.
satpy.tests.reader_tests.test_generic_image.test_GenericImageFileHandler_masking_for_integer(rgba_dset)
Test direct use of the reader for float_data.

2.15. satpy 469


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_generic_image.test_GenericImageFileHandler_no_masking_for_float(rgba_dset)
Test direct use of the reader for float_data.
satpy.tests.reader_tests.test_generic_image.test_GenericImageFileHandler_nodata_fill_value(reader_l_nan_fil
Test nodata handling with direct use of the reader with nodata handling: fill_value.
satpy.tests.reader_tests.test_generic_image.test_GenericImageFileHandler_nodata_nan_mask(reader_l_nan_fill_v
Test nodata handling with direct use of the reader with nodata handling: nan_mask.
satpy.tests.reader_tests.test_generic_image.test_GenericImageFileHandler_nodata_nan_mask_default(reader_l
Test nodata handling with direct use of the reader with default nodata handling.
satpy.tests.reader_tests.test_generic_image.test_geotiff_scene_nan(test_image_l_nan)
Test reading geotiff image with NaN values in it via satpy.Scene().
satpy.tests.reader_tests.test_generic_image.test_geotiff_scene_nan_fill_value(test_image_l_nan_fill_value)
Test reading geotiff image with fill value set via satpy.Scene().
satpy.tests.reader_tests.test_generic_image.test_geotiff_scene_rgb(test_image_rgb)
Test reading geotiff image in RGB mode via satpy.Scene().
satpy.tests.reader_tests.test_generic_image.test_geotiff_scene_rgba(test_image_rgba)
Test reading geotiff image in RGBA mode via satpy.Scene().
satpy.tests.reader_tests.test_generic_image.test_image_l(tmp_path, random_image_channel_l)
Create a test image with mode L.
satpy.tests.reader_tests.test_generic_image.test_image_l_nan(tmp_path,
random_image_channel_with_nans)
Create a test image with mode L where data has NaN values.
satpy.tests.reader_tests.test_generic_image.test_image_l_nan_fill_value(tmp_path, ran-
dom_image_channel_with_nans)
Create a test image with mode L where data has NaN values and fill value is set.
satpy.tests.reader_tests.test_generic_image.test_image_la(tmp_path, random_image_channel_l,
alpha_channel)
Create a test image with mode LA.
satpy.tests.reader_tests.test_generic_image.test_image_rgb(tmp_path, random_image_channel_r,
random_image_channel_g,
random_image_channel_b)
Create a test image with mode RGB.
satpy.tests.reader_tests.test_generic_image.test_image_rgba(tmp_path, rgba_dset)
Create a test image with mode RGBA.
satpy.tests.reader_tests.test_generic_image.test_png_scene_l_mode(test_image_l)
Test reading a PNG image with L mode via satpy.Scene().
satpy.tests.reader_tests.test_generic_image.test_png_scene_la_mode(test_image_la)
Test reading a PNG image with LA mode via satpy.Scene().

satpy.tests.reader_tests.test_geocat module

Module for testing the satpy.readers.geocat module.

470 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.reader_tests.test_geocat.FakeNetCDF4FileHandler2(filename, filename_info,


filetype_info,
auto_maskandscale=False,
xarray_kwargs=None,
cache_var_size=0,
cache_handle=False,
extra_file_content=None)
Bases: FakeNetCDF4FileHandler
Swap-in NetCDF4 File Handler.
Get fake file content from ‘get_test_content’.
get_test_content(filename, filename_info, filetype_info)
Mimic reader input file content.
class satpy.tests.reader_tests.test_geocat.TestGEOCATReader(methodName='runTest')
Bases: TestCase
Test GEOCAT Reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap NetCDF4 file handler with our own fake handler.
tearDown()
Stop wrapping the NetCDF4 file handler.
test_init()
Test basic init with no extra parameters.
test_init_with_kwargs()
Test basic init with extra parameters.
test_load_all_goes17_hdf4()
Test loading all test datasets from GOES-17 HDF4 file.
test_load_all_himawari8()
Test loading all test datasets from H8 NetCDF file.
test_load_all_old_goes()
Test loading all test datasets from old GOES files.
yaml_file = 'geocat.yaml'

satpy.tests.reader_tests.test_geos_area module

Geostationary project utility module tests package.


class satpy.tests.reader_tests.test_geos_area.TestGEOSProjectionUtil(methodName='runTest')
Bases: TestCase
Tests for the area utilities.

2.15. satpy 471


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

make_pdict_ext(typ, scan)
Create a dictionary and extents to use in testing.
test_geos_area()
Test area extent calculation with N->S scan then S->N scan.
test_get_area_definition()
Test the retrieval of the area definition.
test_get_geos_area_naming()
Test the geos area naming function.
test_get_resolution_and_unit_strings_in_km()
Test the resolution and unit strings function for a km resolution.
test_get_resolution_and_unit_strings_in_m()
Test the resolution and unit strings function for a m resolution.
test_get_xy_from_linecol()
Test the scan angle calculation.
test_sampling_to_lfac_cfac()
Test conversion from angular sampling to line/column offset.

satpy.tests.reader_tests.test_gerb_l2_hr_h5 module

Unit tests for GERB L2 HR HDF5 reader.


satpy.tests.reader_tests.test_gerb_l2_hr_h5.gerb_l2_hr_h5_dummy_file(tmp_path_factory)
Create a dummy HDF5 file for the GERB L2 HR product.
satpy.tests.reader_tests.test_gerb_l2_hr_h5.make_h5_null_string(length)
Make a HDF5 type for a NULL terminated string of fixed length.
satpy.tests.reader_tests.test_gerb_l2_hr_h5.test_dataset_load(gerb_l2_hr_h5_dummy_file, name)
Test loading the solar flux component.
satpy.tests.reader_tests.test_gerb_l2_hr_h5.write_h5_null_string_att(loc_id, name, s)
Write a NULL terminated string attribute at loc_id.

satpy.tests.reader_tests.test_ghi_l1 module

The agri_l1 reader tests package.


class satpy.tests.reader_tests.test_ghi_l1.FakeHDF5FileHandler2(filename, filename_info,
filetype_info, **kwargs)
Bases: FakeHDF5FileHandler
Swap-in HDF5 File Handler.
Get fake file content from ‘get_test_content’.

472 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_create_channel_data(chs, cwls, file_type)

_create_coeff_array(nb_channels)

_get_250m_data(file_type)

_get_2km_data(file_type)

_get_500m_data(file_type)

_get_geo_data(file_type)

get_test_content(filename, filename_info, filetype_info)


Mimic reader input file content.
make_test_data(cwl, ch, prefix, dims, file_type)
Make test data.
class satpy.tests.reader_tests.test_ghi_l1.Test_HDF_GHI_L1_cal
Bases: object
Test VIRR L1B Reader.
static _assert_which_channels_are_loaded(available_datasets, band_names, resolution_to_test)

_check_calibration_and_units(band_names, result)

static _check_keys_for_dsq(available_datasets, resolution_to_test)

static _check_units(band_name, result)

_create_reader_for_resolutions(*resolutions)

setup_method()
Wrap HDF5 file handler with our own fake handler.
teardown_method()
Stop wrapping the HDF5 file handler.
test_ghi_all_bands_have_right_units()
Test all bands have the right units.
test_ghi_channels_are_loaded_with_right_resolution()
Test all channels are loaded with the right resolution.
test_ghi_counts_calibration()
Test loading data at counts calibration.
test_ghi_for_one_resolution(resolution_to_test)
Test loading data when only one resolution is available.
test_ghi_geo()
Test loading data for angles.
test_ghi_orbital_parameters_are_correct()
Test orbital parameters are set correctly.
yaml_file = 'ghi_l1.yaml'

satpy.tests.reader_tests.test_ghi_l1._create_filenames_from_resolutions(*resolutions)
Create filenames from the given resolutions.

2.15. satpy 473


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_ghrsst_l2 module

Module for testing the satpy.readers.ghrsst_l2 module.


class satpy.tests.reader_tests.test_ghrsst_l2.TestGHRSSTL2Reader
Bases: object
Test Sentinel-3 SST L2 reader.
_create_tarfile_with_testdata(mypath)
Create a ‘fake’ testdata set in a tar file.
setup_method(tmp_path)
Create a fake osisaf ghrsst dataset.
test_get_dataset(tmp_path)
Test retrieval of datasets.
test_get_sensor(tmp_path)
Test retrieval of the sensor name from the netCDF file.
test_get_start_and_end_times(tmp_path)
Test retrieval of the sensor name from the netCDF file.
test_instantiate_single_netcdf_file(tmp_path)
Test initialization of file handlers - given a single netCDF file.
test_instantiate_tarfile(tmp_path)
Test initialization of file handlers - given a tar file as in the case of the SAFE format.

satpy.tests.reader_tests.test_gld360_ualf2 module

Tests for the Vaisala GLD360 UALF2-reader.


satpy.tests.reader_tests.test_gld360_ualf2.fake_file(tmp_path)
Create UALF2 file for the tests.
satpy.tests.reader_tests.test_gld360_ualf2.fake_filehandler(fake_file)
Create FileHandler for the tests.
satpy.tests.reader_tests.test_gld360_ualf2.fake_scn(fake_file)
Create fake file for tests.
satpy.tests.reader_tests.test_gld360_ualf2.test_altitude(fake_filehandler)
Test altitude.
satpy.tests.reader_tests.test_gld360_ualf2.test_altitude_uncertainty(fake_filehandler)
Test altitude uncertainty.
satpy.tests.reader_tests.test_gld360_ualf2.test_angle_indicator(fake_filehandler)
Test angle indicator.
satpy.tests.reader_tests.test_gld360_ualf2.test_area_(fake_scn)
Test correct area instance type.
satpy.tests.reader_tests.test_gld360_ualf2.test_chi_squared_value_location_optimization(fake_filehandler)
Test chi squared value location optimization.

474 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_gld360_ualf2.test_cloud_indicator(fake_filehandler)
Test cloud indicator.
satpy.tests.reader_tests.test_gld360_ualf2.test_cloud_pulse_count(fake_filehandler)
Test cloud pulse count.
satpy.tests.reader_tests.test_gld360_ualf2.test_column_names_length()
Test correct number of column names.
satpy.tests.reader_tests.test_gld360_ualf2.test_degree_freedom_for_location(fake_filehandler)
Test degree freedom for location.
satpy.tests.reader_tests.test_gld360_ualf2.test_error_ellipse_angle(fake_filehandler)
Test error ellipse angle.
satpy.tests.reader_tests.test_gld360_ualf2.test_error_ellipse_max_axis_length(fake_filehandler)
Test error ellipse max axis length.
satpy.tests.reader_tests.test_gld360_ualf2.test_error_ellipse_min_axis_length(fake_filehandler)
Test error ellipse min axis length.
satpy.tests.reader_tests.test_gld360_ualf2.test_latitude(fake_filehandler)
Test latitude.
satpy.tests.reader_tests.test_gld360_ualf2.test_longitude(fake_filehandler)
Test longitude.
satpy.tests.reader_tests.test_gld360_ualf2.test_multiplicity_flash(fake_filehandler)
Test multiplicity flash.
satpy.tests.reader_tests.test_gld360_ualf2.test_nanoseconds_index()
Test nanosecond column being after seconds.
satpy.tests.reader_tests.test_gld360_ualf2.test_network_type(fake_filehandler)
Test network type.
satpy.tests.reader_tests.test_gld360_ualf2.test_number_of_sensors(fake_filehandler)
Test number of sensors.
satpy.tests.reader_tests.test_gld360_ualf2.test_pad_nanoseconds(fake_filehandler)
Test pad nanoseconds.
satpy.tests.reader_tests.test_gld360_ualf2.test_peak_current(fake_filehandler)
Test peak current.
satpy.tests.reader_tests.test_gld360_ualf2.test_scene_attributes(fake_scn)
Test for correct start and end times.
satpy.tests.reader_tests.test_gld360_ualf2.test_scene_load(fake_scn)
Test data loading through Scene-object.
satpy.tests.reader_tests.test_gld360_ualf2.test_signal_indicator(fake_filehandler)
Test signal indicator.
satpy.tests.reader_tests.test_gld360_ualf2.test_time(fake_filehandler)
Test time.

2.15. satpy 475


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_gld360_ualf2.test_timing_indicator(fake_filehandler)
Test timing indicator.
satpy.tests.reader_tests.test_gld360_ualf2.test_ualf2_record_type(fake_filehandler)
Test ualf record type.
satpy.tests.reader_tests.test_gld360_ualf2.test_vhf_range(fake_filehandler)
Test vhf range.
satpy.tests.reader_tests.test_gld360_ualf2.test_wave_form_max_rate_of_rise(fake_filehandler)
Test wave form max rate of rise.
satpy.tests.reader_tests.test_gld360_ualf2.test_wave_form_peak_to_zero_time(fake_filehandler)
Test wave form peak to zero time.
satpy.tests.reader_tests.test_gld360_ualf2.test_wave_form_rise_time(fake_filehandler)
Test wave form rise time.

satpy.tests.reader_tests.test_glm_l2 module

The glm_l2 reader tests package.


class satpy.tests.reader_tests.test_glm_l2.TestGLML2FileHandler(methodName='runTest')
Bases: TestCase
Tests for the GLM L2 reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp(xr_)
Create a fake file handler to test.
test_basic_attributes()
Test getting basic file attributes.
test_get_dataset()
Test the get_dataset method.
test_get_dataset_dqf()
Test the get_dataset method with special DQF var.
class satpy.tests.reader_tests.test_glm_l2.TestGLML2Reader(methodName='runTest')
Bases: TestCase
Test high-level reading functionality of GLM L2 reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp(xr_)
Create a fake reader to test.

476 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_available_datasets()
Test that resolution is added to YAML configured variables.
yaml_file = 'glm_l2.yaml'

satpy.tests.reader_tests.test_glm_l2.setup_fake_dataset()
Create a fake dataset to avoid opening a file.

satpy.tests.reader_tests.test_goci2_l2_nc module

Module for testing the satpy.readers.goci2_l2_nc module.


class satpy.tests.reader_tests.test_goci2_l2_nc.TestGOCI2Reader
Bases: object
Test the GOCI-II L2 netcdf file reader.
test_load_dataset(test_files, datasets)
Test dataset loading.
test_scene_available_datasets(test_files)
Test that datasets are available.
test_start_end_time(test_files)
Test dataset start_time and end_time.
satpy.tests.reader_tests.test_goci2_l2_nc._create_bad_lon_lat()
Create a fake navigation dataset with lon/lat base name missing.
satpy.tests.reader_tests.test_goci2_l2_nc._create_lonlat()
Create a fake navigation dataset with lon/lat.
satpy.tests.reader_tests.test_goci2_l2_nc.ac_file(tmp_path_factory)
Create a fake atmospheric correction product.
satpy.tests.reader_tests.test_goci2_l2_nc.generic_bad_file(tmp_path_factory)
Create a PP product with lon/lat base name missing.
satpy.tests.reader_tests.test_goci2_l2_nc.generic_file(tmp_path_factory)
Create a fake ouput product like Chl, Zsd etc.
satpy.tests.reader_tests.test_goci2_l2_nc.iop_file(tmp_path_factory)
Create a fake IOP product.

satpy.tests.reader_tests.test_goes_imager_hrit module

The hrit msg reader tests package.


class satpy.tests.reader_tests.test_goes_imager_hrit.TestGVARFloat(methodName='runTest')
Bases: TestCase
GVAR float tester.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

2.15. satpy 477


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_fun()
Test function.
class satpy.tests.reader_tests.test_goes_imager_hrit.TestHRITGOESFileHandler(methodName='runTest')
Bases: TestCase
Test the HRITFileHandler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp(new_fh_init)
Set up the hrit file handler for testing.
test_get_area_def()
Test getting the area definition.
test_get_dataset(base_get_dataset)
Test get_dataset.
test_init()
Test the init.
class satpy.tests.reader_tests.test_goes_imager_hrit.TestHRITGOESPrologueFileHandler(methodName='runTest')
Bases: TestCase
Test the HRITFileHandler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_init(new_fh_init, fromfile, recarray2dict)


Setup the hrit file handler for testing.
class satpy.tests.reader_tests.test_goes_imager_hrit.TestMakeSGSTime(methodName='runTest')
Bases: TestCase
SGS Time tester.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_fun()
Encode the test time.

478 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_goes_imager_nc_eum module

Tests for the goes imager nc reader (EUMETSAT variant).


class satpy.tests.reader_tests.test_goes_imager_nc_eum.GOESNCEUMFileHandlerRadianceTest(methodName='runTe
Bases: TestCase
Tests for the radiances.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

longMessage = True

setUp(xr_)
Set up the tests.
test_calibrate()
Test whether the correct calibration methods are called.
test_get_dataset_radiance()
Test getting the radiances.
test_get_sector()
Test sector identification.
class satpy.tests.reader_tests.test_goes_imager_nc_eum.GOESNCEUMFileHandlerReflectanceTest(methodName='r
Bases: TestCase
Testing the reflectances.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

longMessage = True

setUp(xr_)
Set up the tests.
test_get_dataset_reflectance()
Test getting the reflectance.

satpy.tests.reader_tests.test_goes_imager_nc_noaa module

Tests for the goes imager nc reader (NOAA CLASS variant).


class satpy.tests.reader_tests.test_goes_imager_nc_noaa.GOESNCBaseFileHandlerTest(methodName='runTest')
Bases: TestCase
Testing the file handler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.

2.15. satpy 479


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_classSetupFailed = False

_class_cleanups = []

longMessage = True

setUp(xr_)
Set up the tests.
test_calibrate_ir()
Test IR calibration.
test_calibrate_vis()
Test VIS calibration.
test_end_time()
Test dataset end time stamp.
test_get_nadir_pixel()
Test identification of the nadir pixel.
test_init()
Tests reader initialization.
test_ircounts2radiance()
Test conversion from IR counts to radiance.
test_start_time()
Test dataset start time stamp.
test_viscounts2radiance()
Test conversion from VIS counts to radiance.
class satpy.tests.reader_tests.test_goes_imager_nc_noaa.GOESNCFileHandlerTest(methodName='runTest')
Bases: TestCase
Test the file handler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

longMessage = True

setUp(xr_)
Set up the tests.
test_calibrate()
Test whether the correct calibration methods are called.
test_get_dataset_coords()
Test whether coordinates returned by get_dataset() are correct.
test_get_dataset_counts()
Test whether counts returned by get_dataset() are correct.

480 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_get_dataset_invalid()
Test handling of invalid calibrations.
test_get_dataset_masks()
Test whether data and coordinates are masked consistently.
test_get_sector()
Test sector identification.
class satpy.tests.reader_tests.test_goes_imager_nc_noaa.TestChannelIdentification
Bases: object
Test identification of channel type.
test_invalid_channel()
Test handling of invalid channel type.
test_is_vis_channel(channel_name, expected)
Test vis channel identification.
class satpy.tests.reader_tests.test_goes_imager_nc_noaa.TestMetadata
Bases: object
Testcase for dataset metadata.
_apply_yaw_flip(data_array, yaw_flip)

_assert_earth_mask_equal(metadata, expected)

channel_id(request)
Set channel ID.
dataset(lons_lats, channel_id)
Create a fake dataset.
earth_mask(yaw_flip)
Get expected earth mask.
expected(geometry, earth_mask, yaw_flip)
Define expected metadata.
geometry(channel_id, yaw_flip)
Get expected geometry.
lons_lats(yaw_flip)
Get longitudes and latitudes.
mocked_file_handler(dataset)
Mock file handler to load the given fake dataset.
test_metadata(mocked_file_handler, expected)
Test dataset metadata.
yaw_flip(request)
Set yaw-flip flag.

2.15. satpy 481


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_gpm_imerg module

Unittests for GPM IMERG reader.


class satpy.tests.reader_tests.test_gpm_imerg.FakeHDF5FileHandler2(filename, filename_info,
filetype_info, **kwargs)
Bases: FakeHDF5FileHandler
Swap-in HDF5 File Handler.
Get fake file content from ‘get_test_content’.
_get_geo_data(num_rows, num_cols)

_get_precip_data(num_rows, num_cols)

get_test_content(filename, filename_info, filetype_info)


Mimic reader input file content.
class satpy.tests.reader_tests.test_gpm_imerg.TestHdf5IMERG(methodName='runTest')
Bases: TestCase
Test the GPM IMERG reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap HDF5 file handler with our own fake handler.
tearDown()
Stop wrapping the HDF5 file handler.
test_load_data()
Test loading data.
yaml_file = 'gpm_imerg.yaml'

satpy.tests.reader_tests.test_grib module

Module for testing the satpy.readers.grib module.


class satpy.tests.reader_tests.test_grib.FakeGRIB(messages=None, proj_params=None,
latlons=None)
Bases: object
Fake GRIB file returned by pygrib.open.
Init the grib file.
message(msg_num)
Get a message.
seek(loc)
Seek.

482 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.reader_tests.test_grib.FakeMessage(values, proj_params=None, latlons=None,


**attrs)
Bases: object
Fake message returned by pygrib.open().message(x).
Init the message.
keys()
Get message keys.
latlons()
Get coordinates.
valid_key(key)
Validate key.
class satpy.tests.reader_tests.test_grib.TestGRIBReader
Bases: object
Test GRIB Reader.
static _get_fake_pygrib(proj_params, lon_corners, lat_corners)

_get_test_datasets(dataids, fake_pygrib=None)

setup_method()
Wrap pygrib to read fake data.
teardown_method()
Re-enable pygrib import.
test_area_def_crs(proj_params, lon_corners, lat_corners)
Check that the projection is accurate.
test_file_pattern()
Test matching of file patterns.
test_init()
Test basic init with no extra parameters.
test_jscanspositively(proj_params, lon_corners, lat_corners)
Check that data is flipped if the jScansPositively is present.
test_load_all(proj_params, lon_corners, lat_corners)
Test loading all test datasets.
test_missing_attributes(proj_params, lon_corners, lat_corners)
Check that the grib reader handles missing attributes in the grib file.
yaml_file = 'grib.yaml'

satpy.tests.reader_tests.test_grib._round_trip_projection_lonlat_check(area)
Check that X/Y coordinates can be transformed multiple times.
Many GRIB files include non-standard projects that work for the initial transformation of X/Y coordinates to
longitude/latitude, but may fail in the reverse transformation. For example, an eqc projection that goes from 0
longitude to 360 longitude. The X/Y coordinates may accurately go from the original X/Y metered space to the
correct longitude/latitude, but transforming those coordinates back to X/Y space will produce the wrong result.

2.15. satpy 483


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_grib.fake_gribdata()
Return some faked data for use as grib values.

satpy.tests.reader_tests.test_hdf4_utils module

Module for testing the satpy.readers.hdf4_utils module.


class satpy.tests.reader_tests.test_hdf4_utils.FakeHDF4FileHandler(filename, filename_info,
filetype_info, **kwargs)
Bases: HDF4FileHandler
Swap-in NetCDF4 File Handler for reader tests to use.
Get fake file content from ‘get_test_content’.
get_test_content(filename, filename_info, filetype_info)
Mimic reader input file content.
Parameters
• filename (str) – input filename
• filename_info (dict) – Dict of metadata pulled from filename
• filetype_info (dict) – Dict of metadata from the reader’s yaml config for this file type
Returns: dict of file content with keys like:
• ‘dataset’
• ‘/attr/global_attr’
• ‘dataset/attr/global_attr’
• ‘dataset/shape’
class satpy.tests.reader_tests.test_hdf4_utils.TestHDF4FileHandler(methodName='runTest')
Bases: TestCase
Test HDF4 File Handler Utility class.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Create a test HDF4 file.
tearDown()
Remove the previously created test file.
test_all_basic()
Test everything about the HDF4 class.

satpy.tests.reader_tests.test_hdf5_utils module

Module for testing the satpy.readers.hdf5_utils module.

484 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.reader_tests.test_hdf5_utils.FakeHDF5FileHandler(filename, filename_info,


filetype_info, **kwargs)
Bases: HDF5FileHandler
Swap HDF5 File Handler for reader tests to use.
Get fake file content from ‘get_test_content’.
get_test_content(filename, filename_info, filetype_info)
Mimic reader input file content.
Parameters
• filename (str) – input filename
• filename_info (dict) – Dict of metadata pulled from filename
• filetype_info (dict) – Dict of metadata from the reader’s yaml config for this file type
Returns: dict of file content with keys like:
• ‘dataset’
• ‘/attr/global_attr’
• ‘dataset/attr/global_attr’
• ‘dataset/shape’
class satpy.tests.reader_tests.test_hdf5_utils.TestHDF5FileHandler(methodName='runTest')
Bases: TestCase
Test HDF5 File Handler Utility class.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Create a test HDF5 file.
tearDown()
Remove the previously created test file.
test_all_basic()
Test everything about the HDF5 class.
test_array_name_uniqueness()
Test the dask array generated from an hdf5 dataset stay constant and unique.

satpy.tests.reader_tests.test_hdfeos_base module

Tests for the HDF-EOS base functionality.


class satpy.tests.reader_tests.test_hdfeos_base.TestReadMDA(methodName='runTest')
Bases: TestCase
Test reading metadata.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.

2.15. satpy 485


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_classSetupFailed = False

_class_cleanups = []

test_read_mda()
Test reading basic metadata.
test_read_mda_geo_resolution()
Test reading geo resolution.

satpy.tests.reader_tests.test_hrit_base module

The HRIT base reader tests package.


class satpy.tests.reader_tests.test_hrit_base.TestHRITFileHandler
Bases: object
Test the HRITFileHandler.
setup_method(method)
Set up the hrit file handler for testing.
test_get_area_def()
Test getting an area definition.
test_get_area_extent()
Test getting the area extent.
test_get_xy_from_linecol()
Test get_xy_from_linecol.
test_read_band_FSFile(stub_hrit_file)
Test reading a single band from an FSFile.
test_read_band_bzipped2_filepath(stub_bzipped_hrit_file)
Test reading a single band from a bzipped file.
test_read_band_filepath(stub_hrit_file)
Test reading a single band from a filepath.
test_read_band_gzip_stream(stub_gzipped_hrit_file)
Test reading a single band from a gzip stream.
test_start_end_time()
Test reading and converting start/end time.
class satpy.tests.reader_tests.test_hrit_base.TestHRITFileHandlerCompressed
Bases: object
Test the HRITFileHandler with compressed segments.
test_read_band_filepath(stub_compressed_hrit_file)
Test reading a single band from a filepath.

486 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_hrit_base.create_stub_hrit(filename, open_fun=<built-in function


open>, meta={'GP_SC_ID': 324,
'annotation_header': b'H-000-MSG4__-
MSG4________-VIS006___-000001___-
202208180730-C_', 'cds_p_field': 64,
'cfac': -13642337, 'coff': 1856,
'compression_flag_for_data': 0,
'data_field_length': 17223680,
'data_field_representation': 3, 'file_type':
0, 'image_segment_line_quality':
array([(1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1,
0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1,
(0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0),
1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1,
0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1,
(0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0),
1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1,
0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1,
(0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0),
1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1,
0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1,
(0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0),
1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1,
0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1,
(0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0),
1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1,
0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1,
(0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0),
1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1,
0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1,
(0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0),
1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1,
0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1,
(0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0),
1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1,
0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1,
(0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0),
1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1,
0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1,
(0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0),
1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1,
0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1,
(0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0),
1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1,
0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1,
(0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0),
1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1,
0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1,
(0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0),
1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1,
0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1,
(0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0),
1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1,
0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1,
(0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0),
1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1,
2.15. satpy 0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0),487
(1,
(0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0),
1, 1, 0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1,
0), (1, (0, 0), 1, 1, 0), (1, (0, 0), 1, 1, 0), (1,
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Create a stub hrit file.


satpy.tests.reader_tests.test_hrit_base.create_stub_hrit_data(meta)
Create the data for the stub hrit.
satpy.tests.reader_tests.test_hrit_base.fake_decompress(filename)
Fake decompression.
satpy.tests.reader_tests.test_hrit_base.new_get_hd(instance, hdr_info)
Generate some metadata.
satpy.tests.reader_tests.test_hrit_base.new_get_hd_compressed(instance, hdr_info)
Generate some metadata.
satpy.tests.reader_tests.test_hrit_base.stub_bzipped_hrit_file(tmp_path)
Create a stub bzipped hrit file.
satpy.tests.reader_tests.test_hrit_base.stub_compressed_hrit_file(tmp_path)
Create a stub compressed hrit file.
satpy.tests.reader_tests.test_hrit_base.stub_gzipped_hrit_file(tmp_path)
Create a stub gzipped hrit file.
satpy.tests.reader_tests.test_hrit_base.stub_hrit_file(tmp_path)
Create a stub hrit file.

satpy.tests.reader_tests.test_hsaf_grib module

Module for testing the satpy.readers.grib module.


class satpy.tests.reader_tests.test_hsaf_grib.FakeGRIB(messages=None, proj_params=None,
latlons=None)
Bases: object
Fake GRIB file returned by pygrib.open.
Init the fake grib file.
message(msg_num)
Fake message.
seek(loc)
Fake seek.
class satpy.tests.reader_tests.test_hsaf_grib.FakeMessage(values, proj_params=None,
latlons=None, **attrs)
Bases: object
Fake message returned by pygrib.open().message(x).
Init the fake message.
latlons()
Get the latlons.
valid_key(key)
Check if key is valid.

488 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.reader_tests.test_hsaf_grib.TestHSAFFileHandler(methodName='runTest')
Bases: TestCase
Test HSAF Reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap pygrib to read fake data.
tearDown()
Re-enable pygrib import.
test_get_area_def(pg)
Test the area definition setup, checks the size and extent.
test_get_dataset(pg)
Test reading the actual datasets from a grib file.
test_init(pg)
Test the init function, ensure that the correct dates and metadata are returned.

satpy.tests.reader_tests.test_hsaf_h5 module

Tests for the H-SAF H5 reader.


satpy.tests.reader_tests.test_hsaf_h5._get_scene_with_loaded_sc_datasets(filename)
Return a scene with SC and SC_pal loaded.
satpy.tests.reader_tests.test_hsaf_h5.sc_h5_file(tmp_path_factory)
Create a fake HSAF SC HDF5 file.
satpy.tests.reader_tests.test_hsaf_h5.test_hsaf_sc_areadef(sc_h5_file)
Test the H-SAF SC area definition.
satpy.tests.reader_tests.test_hsaf_h5.test_hsaf_sc_colormap_dataset(sc_h5_file)
Test the H-SAF SC_pal dataset.
satpy.tests.reader_tests.test_hsaf_h5.test_hsaf_sc_dataset(sc_h5_file)
Test the H-SAF SC dataset.
satpy.tests.reader_tests.test_hsaf_h5.test_hsaf_sc_datetime(sc_h5_file)
Test the H-SAF reference time.

satpy.tests.reader_tests.test_hy2_scat_l2b_h5 module

Module for testing the satpy.readers.hy2_scat_l2b_h5 module.


class satpy.tests.reader_tests.test_hy2_scat_l2b_h5.FakeHDF5FileHandler2(filename,
filename_info,
filetype_info,
**kwargs)

2.15. satpy 489


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Bases: FakeHDF5FileHandler
Swap-in HDF5 File Handler.
Get fake file content from ‘get_test_content’.
_get_all_ambiguities_data(num_rows, num_cols, num_amb)

_get_geo_data(num_rows, num_cols)

_get_geo_data_nsoas(num_rows, num_cols)

_get_global_attrs(num_rows, num_cols)

_get_selection_data(num_rows, num_cols)

_get_wvc_row_time(num_rows)

get_test_content(filename, filename_info, filetype_info)


Mimic reader input file content.
class satpy.tests.reader_tests.test_hy2_scat_l2b_h5.TestHY2SCATL2BH5Reader(methodName='runTest')
Bases: TestCase
Test HY2 Scatterometer L2B H5 Reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap HDF5 file handler with our own fake handler.
tearDown()
Stop wrapping the HDF5 file handler.
test_load_data_all_ambiguities()
Test loading data.
test_load_data_row_times()
Test loading data.
test_load_data_selection()
Test loading data.
test_load_geo()
Test loading data.
test_load_geo_nsoas()
Test loading data from nsoas file.
test_properties()
Test platform_name.
test_reading_attrs()
Test loading data.

490 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_reading_attrs_nsoas()
Test loading data.
yaml_file = 'hy2_scat_l2b_h5.yaml'

satpy.tests.reader_tests.test_iasi_l2 module

Unit tests for IASI L2 reader.


class satpy.tests.reader_tests.test_iasi_l2.TestIasiL2(methodName='runTest')
Bases: TestCase
Test IASI L2 reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

check_emissivity(emis)
Test reading emissivity dataset.
Helper function.
check_pressure(pres, attrs=None)
Test reading pressure dataset.
Helper function.
check_sensing_times(times)
Test reading sensing times.
Helper function.
setUp()
Create temporary data to test on.
tearDown()
Remove the temporary directory created for a test.
test_form_datetimes()
Test _form_datetimes() function.
test_get_dataset()
Test get_dataset() for different datasets.
test_init()
Test reader initialization.
test_read_dataset()
Test read_dataset() function.
test_read_geo()
Test read_geo() function.
test_scene()
Test scene creation.

2.15. satpy 491


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_scene_load_available_datasets()
Test that all datasets are available.
test_scene_load_emissivity()
Test loading emissivity data.
test_scene_load_pressure()
Test loading pressure data.
test_scene_load_sensing_times()
Test loading sensing times.
test_time_properties()
Test time properties.
satpy.tests.reader_tests.test_iasi_l2.fake_iasi_l2_cdr_nc_dataset()
Create minimally fake IASI L2 CDR NC dataset.
satpy.tests.reader_tests.test_iasi_l2.fake_iasi_l2_cdr_nc_file(fake_iasi_l2_cdr_nc_dataset,
tmp_path)
Write a NetCDF file with minimal fake IASI L2 CDR NC data.
satpy.tests.reader_tests.test_iasi_l2.save_test_data(path)
Save the test to the indicated directory.
satpy.tests.reader_tests.test_iasi_l2.test_iasi_l2_cdr_nc(fake_iasi_l2_cdr_nc_file)
Test the IASI L2 CDR NC reader.

satpy.tests.reader_tests.test_iasi_l2_so2_bufr module

Unittesting the SEVIRI L2 BUFR reader.


class satpy.tests.reader_tests.test_iasi_l2_so2_bufr.TestIasiL2So2Bufr(methodName='runTest')
Bases: TestCase
Test IASI l2 SO2 loader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Create temporary file to perform tests with.
tearDown()
Remove the temporary directory created for a test.
test_scene()
Test scene creation.
test_scene_dataset_values()
Test loading data.
test_scene_load_available_datasets()
Test that all datasets are available.

492 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_iasi_l2_so2_bufr.save_test_data(path)
Save the test file to the indicated directory.

satpy.tests.reader_tests.test_ici_l1b_nc module

The ici_l1b_nc reader tests package.


This version tests the reader for ICI test data as per PFS V3A.
class satpy.tests.reader_tests.test_ici_l1b_nc.IciL1bFakeFileWriter(file_path)
Bases: object
Writer class of fake ici level1b data.
Init.
static _write_attributes(dataset)
Write attributes.
static _write_measurement_data_group(dataset)
Write the measurement data group.
static _write_navigation_data_group(dataset)
Write the navigation data group.
static _write_quality_group(dataset)
Write the quality group.
write()
Write fake data to file.
class satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
Bases: object
Test the IciL1bNCFileHandler reader.
test_calibrate_bt(reader)
Test calibrate brightness temperature.
test_calibrate_calls_calibrate_bt(mocked_calibrate_bt, reader)
Test calibrate calls calibrate_bt.
test_calibrate_does_not_call_calibrate_bt_if_not_needed(mocked_calibrate, reader)
Test calibrate does not call calibrate_bt if not needed.
test_calibrate_raises_for_unknown_calibration_method(reader)
Test perform calibration raises for unknown calibration method.
test_drop_coords(reader)
Test drop coordinates.
test_end_time(reader)
Test end time.
test_filter_variable(reader, dims, data_info, expect)
Test filter variable.
test_get_dataset_does_not_calibrate_if_not_desired(mocked_calibrate, reader, dataset_info)
Test get dataset does not calibrate if not desired.

2.15. satpy 493


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_get_dataset_handles_calibration(reader, dataset_info)
Test get dataset handles calibration.
test_get_dataset_orthorectifies_if_orthorect_data_defined(reader)
Test get dataset orthorectifies if orthorect data is defined.
test_get_dataset_return_none_if_data_not_exist(reader)
Tes get dataset return none if data does not exist.
test_get_global_attributes(reader)
Test get global attributes.
test_get_quality_attributes(reader)
Test get quality attributes.
test_get_third_dimension_name(reader)
Test get third dimension name.
test_get_third_dimension_name_return_none_for_2d_data(reader)
Test get third dimension name return none for 2d data.
test_interpolate_calls_interpolate_geo(mock, reader)
Test interpolate calls interpolate_geo.
test_interpolate_calls_interpolate_viewing_angles(mock, reader)
Test interpolate calls interpolate viewing_angles.
test_interpolate_geo(reader)
Test interpolate geographic coordinates.
test_interpolate_returns_none_if_dataset_not_exist(reader)
Test interpolate returns none if dataset not exist.
test_interpolate_viewing_angle(reader)
Test interpolate viewing angle.
test_latitude(reader)
Test latitude.
test_longitude(reader)
Test longitude.
test_manage_attributes(mock, reader)
Test manage attributes.
test_orthorectify(reader)
Test orthorectify.
test_platform_name(reader)
Test platform name.
test_sensor(reader)
Test sensor.
test_solar_azimuth(reader)
Test solar azimuth.
test_solar_zenith(reader)
Test solar zenith.

494 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_ssp_lon(reader)
Test sub satellite path longitude.
test_standardize_dims(reader, dims)
Test standardize dims.
test_start_time(reader)
Test start time.
satpy.tests.reader_tests.test_ici_l1b_nc.dataset_info()
Return dataset info.
satpy.tests.reader_tests.test_ici_l1b_nc.fake_file(tmp_path)
Return file path to level1b file.
satpy.tests.reader_tests.test_ici_l1b_nc.reader(fake_file)
Return reader of ici level1b data.

satpy.tests.reader_tests.test_insat3d_img_l1b_h5 module

Tests for the Insat3D reader.


satpy.tests.reader_tests.test_insat3d_img_l1b_h5._create_channels(channels, h5f , resolution)

satpy.tests.reader_tests.test_insat3d_img_l1b_h5._create_lonlats(h5f , resolution)

satpy.tests.reader_tests.test_insat3d_img_l1b_h5.insat_filehandler(insat_filename)
Instantiate a Filehandler.
satpy.tests.reader_tests.test_insat3d_img_l1b_h5.insat_filename(tmp_path_factory)
Create a fake insat 3d l1b file.
satpy.tests.reader_tests.test_insat3d_img_l1b_h5.mask_array(array)
Mask an array with nan instead of 0.
satpy.tests.reader_tests.test_insat3d_img_l1b_h5.test_filehandler_has_start_and_end_time(insat_filehandler)
Test that the filehandler handles start and end time.
satpy.tests.reader_tests.test_insat3d_img_l1b_h5.test_filehandler_returns_area(insat_filehandler)
Test that filehandle returns an area.
satpy.tests.reader_tests.test_insat3d_img_l1b_h5.test_filehandler_returns_coords(insat_filehandler)
Test that lon and lat can be loaded.
satpy.tests.reader_tests.test_insat3d_img_l1b_h5.test_filehandler_returns_data_array(insat_filehandler,
cali-
bra-
tion,
ex-
pected_values)
Test that the filehandler can get dataarrays.
satpy.tests.reader_tests.test_insat3d_img_l1b_h5.test_filehandler_returns_masked_data_in_space(insat_fileha
Test that the filehandler masks space pixels.
satpy.tests.reader_tests.test_insat3d_img_l1b_h5.test_insat3d_backend_has_1km_channels(insat_filename)
Test the insat3d backend.

2.15. satpy 495


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_insat3d_img_l1b_h5.test_insat3d_datatree_has_global_attributes(insat_filenam
Test that the backend supports global attributes in the datatree.
satpy.tests.reader_tests.test_insat3d_img_l1b_h5.test_insat3d_has_calibrated_arrays(insat_filename,
resolu-
tion,
name,
shape,
ex-
pected_values,
ex-
pected_name,
ex-
pected_units)
Check that calibration happens as expected.
satpy.tests.reader_tests.test_insat3d_img_l1b_h5.test_insat3d_has_dask_arrays(insat_filename)
Test that the backend uses dask.
satpy.tests.reader_tests.test_insat3d_img_l1b_h5.test_insat3d_has_global_attributes(insat_filename,
resolu-
tion)
Test that the backend supports global attributes.
satpy.tests.reader_tests.test_insat3d_img_l1b_h5.test_insat3d_has_orbital_parameters(insat_filehandler)
Test that the filehandler returns data with orbital parameter attributes.
satpy.tests.reader_tests.test_insat3d_img_l1b_h5.test_insat3d_only_has_3_resolutions(insat_filename)
Test that we only accept 1000, 4000, 8000.
satpy.tests.reader_tests.test_insat3d_img_l1b_h5.test_insat3d_opens_datatree(insat_filename,
resolution)
Test that a datatree is produced.
satpy.tests.reader_tests.test_insat3d_img_l1b_h5.test_insat3d_returns_lonlat(insat_filename,
resolution)
Test that lons and lats are loaded.
satpy.tests.reader_tests.test_insat3d_img_l1b_h5.test_satpy_load_array(insat_filename)
Test that satpy can load the VIS array.
satpy.tests.reader_tests.test_insat3d_img_l1b_h5.test_satpy_load_two_arrays(insat_filename)
Test that satpy can load the VIS array.

satpy.tests.reader_tests.test_li_l2_nc module

Unit tests on the LI L2 reader using the conventional mock constructed context.
class satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
Bases: object
Main test class for the LI L2 reader.
_test_dataset_sector_variables(settings, ds_desc, handler)
Check the loading of the in sector variables.

496 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_test_dataset_single_sector_variable(names, desc, settings, handler)


Check the validity of a given sector variable.
_test_dataset_single_variable(vname, desc, settings, handler)
Check the validity of a given variable.
_test_dataset_variable(var_params, sname='')
Test the validity of a given (sector) variable.
_test_dataset_variables(settings, ds_desc, handler)
Check the loading of the non in sector variables.
create_fullname_key(desc, var_path, vname, sname='')
Create full name key for sector/non-sector content retrieval.
fake_handler()
Wrap NetCDF4 FileHandler with our own fake handler.
generate_coords(filetype_infos, file_type_name, variable_name)
Generate file handler and mimic coordinate generator call.
get_variable_dataset(dataset_info, dname, handler)
Get the dataset of a given (sector) variable.
handler_with_area(filetype_infos, product_name)
Create handler with area definition.
static param_provider(_filename, filename_info, _fileype_info)
Provide parameters.
test_apply_accumulate_index_offset(filetype_infos)
Should accumulate index offsets.
test_available_datasets(filetype_infos)
Test available_datasets from li reader.
test_combine_info(filetype_infos)
Test overridden combine_info.
test_coordinates_projection(filetype_infos)
Should automatically generate lat/lon coords from projection data.
test_coords_and_grid_consistency(filetype_infos)
Compare computed latlon coords for 1-d version with latlon from areadef as for the gridded version.
test_coords_generation(filetype_infos)
Compare daskified coords generation results with non-daskified.
test_dataset_loading(filetype_infos)
Test loading of all datasets from all products.
test_dataset_not_in_provided_dataset(filetype_infos)
Test loading of a dataset that is not provided.
test_filename_infos(filetype_infos)
Test settings retrieved from filename.

2.15. satpy 497


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_generate_coords_called_once(filetype_infos)
Test that the method is called only once.
test_generate_coords_inverse_proj(filetype_infos)
Test inverse_projection execution delayed until .values is called on the dataset.
test_generate_coords_not_called_on_non_accum_dataset(filetype_infos)
Test that the method is not called when getting non-accum dataset.
test_generate_coords_not_called_on_non_coord_dataset(filetype_infos)
Test that the method is not called when getting non-coord dataset.
test_generate_coords_on_accumulated_prods(filetype_infos)
Test daskified generation of coords.
test_generate_coords_on_lon_lat(filetype_infos)
Test getting lon/lat dataset on accumulated product.
test_get_area_def_acc_products(filetype_infos)
Test retrieval of area def for accumulated products.
test_get_area_def_non_acc_products(filetype_infos)
Test retrieval of area def for non-accumulated products.
test_get_first_valid_variable(filetype_infos)
Test get_first_valid_variable from li reader.
test_get_first_valid_variable_not_found(filetype_infos)
Test get_first_valid_variable from li reader if the variable is not found.
test_get_on_fci_grid_exc(filetype_infos)
Test the execution of the get_on_fci_grid function for an accumulated gridded variable.
test_get_on_fci_grid_exc_non_accum(filetype_infos)
Test the non-execution of the get_on_fci_grid function for a non-accumulated variable.
test_get_on_fci_grid_exc_non_grid(filetype_infos)
Test the non-execution of the get_on_fci_grid function for an accumulated non-gridded variable.
test_milliseconds_to_timedelta(filetype_infos)
Should covert milliseconds to timedelta.
test_report_datetimes(filetype_infos)
Should report time variables as numpy datetime64 type and time durations as timedelta64.
test_swath_coordinates(filetype_infos)
Test that swath coordinates are used correctly to assign coordinates to some datasets.
test_unregistered_dataset_loading(filetype_infos)
Test loading of an unregistered dataset.
test_var_path_exists(filetype_infos)
Test variable_path_exists from li reader.
test_variable_scaling(filetype_infos)
Test automatic rescaling with offset and scale attributes.

498 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_with_area_def(filetype_infos)
Test accumulated products data array with area definition.
test_with_area_def_pixel_placement(filetype_infos)
Test the placements of pixel value with area definition.
test_with_area_def_vars_with_no_pattern(filetype_infos)
Test accumulated products variable with no patterns and with area definition.
test_without_area_def(filetype_infos)
Test accumulated products data array without area definition.
satpy.tests.reader_tests.test_li_l2_nc.std_filetype_infos()
Return standard filetype info for LI L2.

satpy.tests.reader_tests.test_meris_nc module

Module for testing the satpy.readers.meris_nc_sen3 module.


class satpy.tests.reader_tests.test_meris_nc.TestBitFlags(methodName='runTest')
Bases: TestCase
Test the bitflag reading.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_bitflags()
Test the BitFlags class.
class satpy.tests.reader_tests.test_meris_nc.TestMERISReader(methodName='runTest')
Bases: TestCase
Test various meris_nc_sen3 filehandlers.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_get_dataset(mocked_dataset)
Test reading datasets.
test_instantiate(mocked_dataset)
Test initialization of file handlers.
test_meris_angles(mocked_dataset)
Test reading datasets.
test_meris_meteo(mocked_dataset)
Test reading datasets.
test_open_file_objects(mocked_open_dataset)
Test initialization of file handlers.

2.15. satpy 499


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_mersi_l1b module

Tests for the ‘mersi2_l1b’ reader.


class satpy.tests.reader_tests.test_mersi_l1b.FakeHDF5FileHandler2(filename, filename_info,
filetype_info, **kwargs)
Bases: FakeHDF5FileHandler
Swap-in HDF5 File Handler.
Get fake file content from ‘get_test_content’.
_add_band_data_file_content()

_add_geo_data_file_content()

_add_tbb_coefficients(global_attrs)

property _geo_prefix_for_file_type

_get_data_file_content()

property _num_cols_for_file_type

property _rows_per_scan

_set_sensor_attrs(global_attrs)

get_test_content(filename, filename_info, filetype_info)


Mimic reader input file content.
num_cols = 2048

num_scans = 2

class satpy.tests.reader_tests.test_mersi_l1b.MERSI12llL1BTester
Bases: MERSIL1BTester
Test MERSI1/2/LL L1B Reader.
bands_1000: list = []

bands_250: list = []

filenames_1000m: list = []

filenames_250m: list = []

filenames_all: list = []

ir_1000_bands: list = []

ir_250_bands: list = []

test_all_resolutions()
Test loading data when all resolutions or specific one are available.
test_counts_calib()
Test loading data at counts calibration.

500 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_rad_calib()
Test loading data at radiance calibration. For MERSI-2/LL VIS/IR and MERSI-1 IR.
vis_1000_bands: list = []

vis_250_bands: list = []

yaml_file: str = ''

class satpy.tests.reader_tests.test_mersi_l1b.MERSIL1BTester
Bases: object
Test MERSI1/2/LL/RM L1B Reader.
setup_method()
Wrap HDF5 file handler with our own fake handler.
teardown_method()
Stop wrapping the HDF5 file handler.
class satpy.tests.reader_tests.test_mersi_l1b.TestFY3AMERSI1L1B
Bases: MERSI12llL1BTester
Test the FY3A MERSI1 L1B reader.
bands_1000: list = ['6', '7', '8', '11', '15', '19', '20']

bands_250: list = ['1', '2', '3', '4', '5']

filenames_1000m: list = ['FY3A_MERSI_GBAL_L1_20090601_1200_1000M_MS.hdf']

filenames_250m: list = ['FY3A_MERSI_GBAL_L1_20090601_1200_0250M_MS.hdf']

filenames_all: list = ['FY3A_MERSI_GBAL_L1_20090601_1200_1000M_MS.hdf',


'FY3A_MERSI_GBAL_L1_20090601_1200_0250M_MS.hdf']

ir_1000_bands: list = []

ir_250_bands: list = ['5']

vis_1000_bands: list = ['6', '7', '8', '11', '15', '19', '20']

vis_250_bands: list = ['1', '2', '3', '4']

yaml_file: str = 'fy3a_mersi1_l1b.yaml'

class satpy.tests.reader_tests.test_mersi_l1b.TestFY3BMERSI1L1B
Bases: MERSI12llL1BTester
Test the FY3B MERSI1 L1B reader.
bands_1000: list = ['6', '7', '8', '11', '15', '19', '20']

bands_250: list = ['1', '2', '3', '4', '5']

filenames_1000m: list = ['FY3B_MERSI_GBAL_L1_20110824_1850_1000M_MS.hdf']

filenames_250m: list = ['FY3B_MERSI_GBAL_L1_20110824_1850_0250M_MS.hdf',


'FY3B_MERSI_GBAL_L1_20110824_1850_GEOXX_MS.hdf']

2.15. satpy 501


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

filenames_all: list = ['FY3B_MERSI_GBAL_L1_20110824_1850_1000M_MS.hdf',


'FY3B_MERSI_GBAL_L1_20110824_1850_0250M_MS.hdf',
'FY3B_MERSI_GBAL_L1_20110824_1850_GEOXX_MS.hdf']

ir_1000_bands: list = []

ir_250_bands: list = ['5']

vis_1000_bands: list = ['6', '7', '8', '11', '15', '19', '20']

vis_250_bands: list = ['1', '2', '3', '4']

yaml_file: str = 'fy3b_mersi1_l1b.yaml'

class satpy.tests.reader_tests.test_mersi_l1b.TestFY3CMERSI1L1B
Bases: MERSI12llL1BTester
Test the FY3C MERSI1 L1B reader.
bands_1000: list = ['6', '7', '8', '11', '15', '19', '20']

bands_250: list = ['1', '2', '3', '4', '5']

filenames_1000m: list = ['FY3C_MERSI_GBAL_L1_20131002_1835_1000M_MS.hdf',


'FY3C_MERSI_GBAL_L1_20131002_1835_GEO1K_MS.hdf']

filenames_250m: list = ['FY3C_MERSI_GBAL_L1_20131002_1835_0250M_MS.hdf',


'FY3C_MERSI_GBAL_L1_20131002_1835_GEOQK_MS.hdf']

filenames_all: list = ['FY3C_MERSI_GBAL_L1_20131002_1835_1000M_MS.hdf',


'FY3C_MERSI_GBAL_L1_20131002_1835_GEO1K_MS.hdf',
'FY3C_MERSI_GBAL_L1_20131002_1835_0250M_MS.hdf',
'FY3C_MERSI_GBAL_L1_20131002_1835_GEOQK_MS.hdf']

ir_1000_bands: list = []

ir_250_bands: list = ['5']

vis_1000_bands: list = ['6', '7', '8', '11', '15', '19', '20']

vis_250_bands: list = ['1', '2', '3', '4']

yaml_file: str = 'fy3c_mersi1_l1b.yaml'

class satpy.tests.reader_tests.test_mersi_l1b.TestFY3DMERSI2L1B
Bases: MERSI12llL1BTester
Test the FY3D MERSI2 L1B reader.
bands_1000: list = ['5', '8', '9', '11', '15', '17', '19', '20', '21', '23']

bands_250: list = ['1', '2', '3', '4', '24', '25']

filenames_1000m: list = ['tf2019071182739.FY3D-X_MERSI_1000M_L1B.HDF',


'tf2019071182739.FY3D-X_MERSI_GEO1K_L1B.HDF']

filenames_250m: list = ['tf2019071182739.FY3D-X_MERSI_0250M_L1B.HDF',


'tf2019071182739.FY3D-X_MERSI_GEOQK_L1B.HDF']

502 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

filenames_all: list = ['tf2019071182739.FY3D-X_MERSI_1000M_L1B.HDF',


'tf2019071182739.FY3D-X_MERSI_GEO1K_L1B.HDF',
'tf2019071182739.FY3D-X_MERSI_0250M_L1B.HDF',
'tf2019071182739.FY3D-X_MERSI_GEOQK_L1B.HDF']

ir_1000_bands: list = ['20', '21', '23']

ir_250_bands: list = ['24', '25']

vis_1000_bands: list = ['5', '8', '9', '11', '15', '17', '19']

vis_250_bands: list = ['1', '2', '3', '4']

yaml_file: str = 'mersi2_l1b.yaml'

class satpy.tests.reader_tests.test_mersi_l1b.TestFY3EMERSIllL1B
Bases: MERSI12llL1BTester
Test the FY3D MERSI2 L1B reader.
bands_1000: list = ['1', '2', '3', '5']

bands_250: list = ['6', '7']

filenames_1000m: list = ['FY3E_MERSI_GRAN_L1_20230410_1910_1000M_V0.HDF',


'FY3E_MERSI_GRAN_L1_20230410_1910_GEO1K_V0.HDF']

filenames_250m: list = ['FY3E_MERSI_GRAN_L1_20230410_1910_0250M_V0.HDF',


'FY3E_MERSI_GRAN_L1_20230410_1910_GEOQK_V0.HDF']

filenames_all: list = ['FY3E_MERSI_GRAN_L1_20230410_1910_1000M_V0.HDF',


'FY3E_MERSI_GRAN_L1_20230410_1910_GEO1K_V0.HDF',
'FY3E_MERSI_GRAN_L1_20230410_1910_0250M_V0.HDF',
'FY3E_MERSI_GRAN_L1_20230410_1910_GEOQK_V0.HDF']

ir_1000_bands: list = ['2', '3', '5']

ir_250_bands: list = ['6', '7']

vis_1000_bands: list = ['1']

vis_250_bands: list = []

yaml_file: str = 'mersi_ll_l1b.yaml'

class satpy.tests.reader_tests.test_mersi_l1b.TestMERSIRML1B
Bases: MERSIL1BTester
Test the FY3E MERSI-RM L1B reader.
filenames_500m = ['FY3G_MERSI_GRAN_L1_20230410_1910_0500M_V1.HDF',
'FY3G_MERSI_GRAN_L1_20230410_1910_GEOHK_V1.HDF']

test_500m_resolution()
Test loading data when all resolutions are available.
test_rad_calib()
Test loading data at radiance calibration.

2.15. satpy 503


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

yaml_file = 'mersi_rm_l1b.yaml'

satpy.tests.reader_tests.test_mersi_l1b._assert_bands_mda_as_exp(res, band_list, exp_result)


Remove test code duplication.
satpy.tests.reader_tests.test_mersi_l1b._get_1km_data(num_scans, rows_per_scan, num_cols,
filetype_info)

satpy.tests.reader_tests.test_mersi_l1b._get_250m_data(num_scans, rows_per_scan, num_cols,


filetype_info)

satpy.tests.reader_tests.test_mersi_l1b._get_250m_ll_data(num_scans, rows_per_scan, num_cols)

satpy.tests.reader_tests.test_mersi_l1b._get_500m_data(num_scans, rows_per_scan, num_cols)

satpy.tests.reader_tests.test_mersi_l1b._get_calibration(num_scans, ftype)

satpy.tests.reader_tests.test_mersi_l1b._get_geo_data(num_scans, rows_per_scan, num_cols, prefix)

satpy.tests.reader_tests.test_mersi_l1b._test_find_files_and_readers(reader_config, filenames)
Test file and reader search.
satpy.tests.reader_tests.test_mersi_l1b._test_multi_resolutions(available_datasets, band_list,
test_resolution,
cal_results_number)
Test some bands have multiple resolutions.
satpy.tests.reader_tests.test_mersi_l1b.make_test_data(dims)
Make test data.

satpy.tests.reader_tests.test_mimic_TPW2_lowres module

Module for testing the satpy.readers.tropomi_l2 module.


class satpy.tests.reader_tests.test_mimic_TPW2_lowres.FakeNetCDF4FileHandlerMimicLow(filename,
file-
name_info,
file-
type_info,
auto_maskandscale=Fa
xar-
ray_kwargs=None,
cache_var_size=0,
cache_handle=False,
ex-
tra_file_content=None)
Bases: FakeNetCDF4FileHandler
Swap-in NetCDF4 File Handler.
Get fake file content from ‘get_test_content’.
get_test_content(filename, filename_info, filetype_info)
Mimic reader input file content for lower resolution files.

504 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.reader_tests.test_mimic_TPW2_lowres.TestMimicTPW2Reader(methodName='runTest')
Bases: TestCase
Test Mimic Reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap NetCDF4 file handler with our own fake handler.
tearDown()
Stop wrapping the NetCDF4 file handler.
test_init()
Test basic initialization of this reader.
test_load_mimic_float()
Load TPW mimic float data.
test_load_mimic_timedelta()
Load TPW mimic timedelta data (data latency variables).
test_load_mimic_ubyte()
Load TPW mimic sensor grids.
yaml_file = 'mimicTPW2_comp.yaml'

satpy.tests.reader_tests.test_mimic_TPW2_nc module

Module for testing the satpy.readers.tropomi_l2 module.


class satpy.tests.reader_tests.test_mimic_TPW2_nc.FakeNetCDF4FileHandlerMimic(filename,
filename_info,
filetype_info,
auto_maskandscale=False,
xar-
ray_kwargs=None,
cache_var_size=0,
cache_handle=False,
ex-
tra_file_content=None)
Bases: FakeNetCDF4FileHandler
Swap-in NetCDF4 File Handler.
Get fake file content from ‘get_test_content’.
get_test_content(filename, filename_info, filetype_info)
Mimic reader input file content.
class satpy.tests.reader_tests.test_mimic_TPW2_nc.TestMimicTPW2Reader(methodName='runTest')
Bases: TestCase
Test Mimic Reader.

2.15. satpy 505


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap NetCDF4 file handler with our own fake handler.
tearDown()
Stop wrapping the NetCDF4 file handler.
test_init()
Test basic initialization of this reader.
test_load_mimic()
Load Mimic data.
yaml_file = 'mimicTPW2_comp.yaml'

satpy.tests.reader_tests.test_mirs module

Module for testing the satpy.readers.mirs module.


satpy.tests.reader_tests.test_mirs._check_area(data_arr)

satpy.tests.reader_tests.test_mirs._check_attrs(data_arr, platform_name)

satpy.tests.reader_tests.test_mirs._check_fill_value(data_arr, test_fill_value)

satpy.tests.reader_tests.test_mirs._check_metadata(data_arr: DataArray, test_data: Dataset,


platform_name: str) → None

satpy.tests.reader_tests.test_mirs._check_valid_range(data_arr, test_valid_range)

satpy.tests.reader_tests.test_mirs._create_fake_reader(filenames: list[str], reader_kwargs: dict,


exp_loadable_files: int | None = None) →
FileYAMLReader

satpy.tests.reader_tests.test_mirs._get_datasets_with_attributes(**kwargs)
Represent files with two resolution of variables in them (ex. OCEAN).
satpy.tests.reader_tests.test_mirs._get_datasets_with_less_attributes()
Represent files with two resolution of variables in them (ex. OCEAN).
satpy.tests.reader_tests.test_mirs._load_and_check_limb_correction_variables(reader:
FileYAML-
Reader,
loadable_ids:
list[str],
platform_name:
str,
exp_limb_corr:
bool) →
dict[DataID,
DataArray]

506 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_mirs.fake_coeff_from_fn(fn)
Create Fake Coefficients.
satpy.tests.reader_tests.test_mirs.fake_open_dataset(filename, **kwargs)
Create a Dataset similar to reading an actual file with xarray.open_dataset.
satpy.tests.reader_tests.test_mirs.test_available_datasets(filenames, expected_datasets)
Test that variables are dynamically discovered.
satpy.tests.reader_tests.test_mirs.test_basic_load(filenames, loadable_ids, platform_name,
reader_kw)
Test that variables are loaded properly.

satpy.tests.reader_tests.test_msi_safe module

Module for testing the satpy.readers.msi_safe module.


class satpy.tests.reader_tests.test_msi_safe.TestMTDXML
Bases: object
Test the SAFE MTD XML file handler.
setup_method()
Set up the test case.
test_xml_calibration(process_level, mask_saturated, band_name, expected)
Test the calibration to reflectance/radiance/counts.
test_xml_calibration_to_atmospheric(process_level, mask_saturated, band_name, expected)
Test the calibration to L2A atmospheric products.
class satpy.tests.reader_tests.test_msi_safe.TestSAFEMSIL1C
Bases: object
Test case for image reading (jp2k).
setup_method()
Set up the test.
test_calibration_and_masking(process_level, mask_saturated, dataset_name, calibration, expected)
Test that saturated is masked with inf when requested and that calibration is performed.
test_filename_dsname_mismatch(process_level, band_name, dataset_name)
Test when dataset name and file band name mismatch, the data and its area definition should both be None.
test_l1b_calib()
Test that Level-1B calibration can be performed.
test_l1b_error()
We can’t process L1B data yet, so check an error is raised.
test_missing_esd(st_str, en_str, err_str)
Test that missing Earth-Sun distance in the metadata is handled correctly.
test_start_end_time()
Test that the correct start time is returned.

2.15. satpy 507


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.reader_tests.test_msi_safe.TestTileXML
Bases: object
Test the SAFE TILE XML file handler.
Since L1C/L2A share almost the same Tile XML structure, we only use L1C Tile here.
test_angles(process_level, angle_name, angle_tag, expected)
Test reading angles array.
test_navigation()
Test the navigation.
test_start_time()
Ensure start time is read correctly from XML.
satpy.tests.reader_tests.test_msi_safe.jp2_builder(process_level, band_name, mask_saturated=True,
test_l1b=False)
Build fake SAFE jp2 image file.
satpy.tests.reader_tests.test_msi_safe.make_alt_dataid(**items)
Make a DataID with modified keys.
satpy.tests.reader_tests.test_msi_safe.xml_builder(process_level, mask_saturated=True,
band_name=None)
Build fake SAFE MTD/Tile XML.

satpy.tests.reader_tests.test_msu_gsa_l1b module

Tests for the ‘msu_gsa_l1b’ reader.


class satpy.tests.reader_tests.test_msu_gsa_l1b.FakeHDF5FileHandler2(filename, filename_info,
filetype_info, **kwargs)
Bases: FakeHDF5FileHandler
Swap-in HDF5 File Handler.
Get fake file content from ‘get_test_content’.
_get_data(num_scans, num_cols)

get_test_content(filename, filename_info, filetype_info)


Mimic reader input file content.
class satpy.tests.reader_tests.test_msu_gsa_l1b.TestMSUGSABReader
Bases: object
Test MSU GS/A L1B Reader.
setup_method()
Wrap HDF5 file handler with our own fake handler.
teardown_method()
Stop wrapping the HDF5 file handler.
test_irbt()
Test retrieval in brightness temperature.

508 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_nocounts()
Test we can’t get IR or VIS data as counts.
test_vis_cal()
Test that we can retrieve VIS data as both radiance and reflectance.
yaml_file = 'msu_gsa_l1b.yaml'

satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc module

Unit tests for the FIDUCEO MVIRI FCDR Reader.


class satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.TestDatasetPreprocessor
Bases: object
Test dataset preprocessing.
fixture_dataset()
Get dataset before preprocessing.
• Encoded timestamps including fill values
• Duplicate dimension names
• x/y coordinates not assigned
fixture_dataset_exp()
Get expected dataset after preprocessing.
• Timestamps should have been converted to datetime64
• Time dimension should have been renamed
• Duplicate dimensions should have been removed
• x/y coordinates should have been assigned
test_preprocess(dataset, dataset_exp)
Test dataset preprocessing.
class satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.TestFiduceoMviriFileHandlers
Bases: object
Unit tests for FIDUCEO MVIRI file handlers.
test_angle_cache(interp_tiepoints, file_handler)
Test caching of angle datasets.
test_bad_quality_warning(file_handler)
Test warning about bad VIS quality.
test_calib_exceptions(file_handler)
Test calibration exceptions.
test_file_pattern(reader)
Test file pattern matching.
test_get_area_definition(file_handler, name, resolution, area_exp)
Test getting area definitions.

2.15. satpy 509


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_get_dataset(file_handler, name, calibration, resolution, expected)


Test getting datasets.
test_get_dataset_corrupt(file_handler)
Test getting datasets with known corruptions.
test_init(file_handler, projection_longitude)
Test file handler initialization.
test_time_cache(interp_acq_time, file_handler)
Test caching of acquisition times.
class satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.TestInterpolator
Bases: object
Unit tests for Interpolator class.
fixture_acq_time_exp()
Returns acq_time_vis_exp.
fixture_time_ir_wv()
Returns time_ir_wv.
test_interp_acq_time(time_ir_wv, acq_time_exp)
Tests time interpolation.
satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.fixture_fake_dataset(time_fake_dataset)
Create fake dataset.
satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.fixture_fake_file(fake_dataset, tmp_path)
Create test file.
satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.fixture_file_handler(fake_file, request,
projection_longitude)
Create mocked file handler.
satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.fixture_projection_longitude(request)
Get projection longitude as string.
satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.fixture_reader()
Return MVIRI FIDUCEO FCDR reader.
satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.fixture_time_fake_dataset()
Create time for fake dataset.

satpy.tests.reader_tests.test_mws_l1b_nc module

The mws_l1b_nc reader tests.


This module tests the reading of the MWS l1b netCDF format data as per version v4B issued 22 November 2021.
class satpy.tests.reader_tests.test_mws_l1b_nc.MWSL1BFakeFileWriter(file_path)
Bases: object
Writer class of fake mws level-1b data.
Init.

510 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

static _create_scan_dimensions(dataset)
Create the scan/fovs dimensions.
static _write_attributes(dataset)
Write attributes.
static _write_calibration_data_group(dataset)
Write the calibration data group.
static _write_measurement_data_group(dataset)
Write the measurement data group.
static _write_navigation_data_group(dataset)
Write the navigation data group.
static _write_quality_group(dataset)
Write the quality group.
static _write_status_group(dataset)
Write the status group.
write()
Write fake data to file.
class satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL1bNCFileHandler
Bases: object
Test the MWSL1BFile reader.
static test_drop_coords(reader)
Test drop coordinates.
test_end_time(reader)
Test acquiring the end time.
test_get_dataset_aux_data_expected_data_missing(caplog, reader)
Test get auxillary dataset which is not present but supposed to be in file.
test_get_dataset_aux_data_not_supported(reader)
Test get auxillary dataset not supported.
test_get_dataset_get_channeldata_bts(reader)
Test getting channel data.
test_get_dataset_get_channeldata_counts(reader)
Test getting channel data.
test_get_dataset_logs_debug_message(caplog, fake_file, reader)
Test get dataset return none if data does not exist.
test_get_dataset_return_none_if_data_not_exist(reader)
Test get dataset return none if data does not exist.
test_get_global_attributes(reader)
Test get global attributes.
test_get_navigation_longitudes(caplog, fake_file, reader)
Test get the longitudes.

2.15. satpy 511


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_manage_attributes(mock, reader)
Test manage attributes.
test_platform_name(reader)
Test getting the platform name.
test_sensor(reader)
Test sensor.
test_standardize_dims(reader, dims)
Test standardize dims.
test_start_time(reader)
Test acquiring the start time.
test_sub_satellite_latitude_end(reader)
Test getting the latitude of sub-satellite point at end of the product.
test_sub_satellite_latitude_start(reader)
Test getting the latitude of sub-satellite point at start of the product.
test_sub_satellite_longitude_end(reader)
Test getting the longitude of sub-satellite point at end of the product.
test_sub_satellite_longitude_start(reader)
Test getting the longitude of sub-satellite point at start of the product.
satpy.tests.reader_tests.test_mws_l1b_nc.fake_file(tmp_path)
Return file path to level-1b file.
satpy.tests.reader_tests.test_mws_l1b_nc.reader(fake_file)
Return reader of mws level-1b data.
satpy.tests.reader_tests.test_mws_l1b_nc.test_get_channel_index_from_name(name, index)
Test getting the MWS channel index from the channel name.
satpy.tests.reader_tests.test_mws_l1b_nc.test_get_channel_index_from_name_throw_exception()
Test that an excpetion is thrown when getting the MWS channel index from an unsupported name.

satpy.tests.reader_tests.test_netcdf_utils module

Module for testing the satpy.readers.netcdf_utils module.


class satpy.tests.reader_tests.test_netcdf_utils.FakeNetCDF4FileHandler(filename,
filename_info,
filetype_info,
auto_maskandscale=False,
xarray_kwargs=None,
cache_var_size=0,
cache_handle=False,
ex-
tra_file_content=None)
Bases: NetCDF4FileHandler
Swap-in NetCDF4 File Handler for reader tests to use.
Get fake file content from ‘get_test_content’.

512 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_test_content(filename, filename_info, filetype_info)


Mimic reader input file content.
Parameters
• filename (str) – input filename
• filename_info (dict) – Dict of metadata pulled from filename
• filetype_info (dict) – Dict of metadata from the reader’s yaml config for this file type
Returns: dict of file content with keys like:
• ‘dataset’
• ‘/attr/global_attr’
• ‘dataset/attr/global_attr’
• ‘dataset/shape’
• ‘dataset/dimensions’
• ‘/dimension/my_dim’
class satpy.tests.reader_tests.test_netcdf_utils.TestNetCDF4FileHandler(methodName='runTest')
Bases: TestCase
Test NetCDF4 File Handler Utility class.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Create a test NetCDF4 file.
tearDown()
Remove the previously created test file.
test_all_basic()
Test everything about the NetCDF4 class.
test_caching()
Test that caching works as intended.
test_filenotfound()
Test that error is raised when file not found.
test_get_and_cache_npxr_data_is_cached()
Test that the data are cached when get_and_cache_npxr() is called.
test_get_and_cache_npxr_is_xr()
Test that get_and_cache_npxr() returns xr.DataArray.
test_listed_variables()
Test that only listed variables/attributes area collected.
test_listed_variables_with_composing()
Test that composing for listed variables is performed.

2.15. satpy 513


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.reader_tests.test_netcdf_utils.TestNetCDF4FsspecFileHandler
Bases: object
Test the remote reading class.
test_default_to_netcdf4_lib()
Test that the NetCDF4 backend is used by default.
test_use_h5netcdf_for_file_not_accessible_locally()
Test that h5netcdf is used for files that are not accesible locally.
satpy.tests.reader_tests.test_netcdf_utils._write_test_h5netcdf(fname, data)

satpy.tests.reader_tests.test_netcdf_utils._write_test_netcdf4(fname, data)

satpy.tests.reader_tests.test_netcdf_utils.test_get_data_as_xarray_h5netcdf(tmp_path)
Test getting xr.DataArray from h5netcdf variable.
satpy.tests.reader_tests.test_netcdf_utils.test_get_data_as_xarray_netcdf4(tmp_path)
Test getting xr.DataArray from netcdf4 variable.
satpy.tests.reader_tests.test_netcdf_utils.test_get_data_as_xarray_scalar_h5netcdf(tmp_path)
Test getting xr.DataArray from h5netcdf variable.
satpy.tests.reader_tests.test_netcdf_utils.test_get_data_as_xarray_scalar_netcdf4(tmp_path)
Test getting scalar xr.DataArray from netcdf4 variable.

satpy.tests.reader_tests.test_nucaps module

Module for testing the satpy.readers.nucaps module.


class satpy.tests.reader_tests.test_nucaps.FakeNetCDF4FileHandler2(filename, filename_info,
filetype_info,
auto_maskandscale=False,
xarray_kwargs=None,
cache_var_size=0,
cache_handle=False,
extra_file_content=None)
Bases: FakeNetCDF4FileHandler
Swap-in NetCDF4 File Handler.
Get fake file content from ‘get_test_content’.
get_test_content(filename, filename_info, filetype_info)
Mimic reader input file content.
class satpy.tests.reader_tests.test_nucaps.TestNUCAPSReader(methodName='runTest')
Bases: TestCase
Test NUCAPS Reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

514 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

setUp()
Wrap NetCDF4 file handler with our own fake handler.
tearDown()
Stop wrapping the NetCDF4 file handler.
test_init()
Test basic init with no extra parameters.
test_init_with_kwargs()
Test basic init with extra parameters.
test_load_individual_pressure_levels_min_max()
Test loading individual Temperature with min/max level specified.
test_load_individual_pressure_levels_single()
Test loading individual Temperature with specific levels.
test_load_individual_pressure_levels_true()
Test loading Temperature with individual pressure datasets.
test_load_multiple_files_pressure()
Test loading Temperature from multiple input files.
test_load_nonpressure_based()
Test loading all channels that aren’t based on pressure.
test_load_pressure_based()
Test loading all channels based on pressure.
test_load_pressure_levels_min_max()
Test loading Temperature with min/max level specified.
test_load_pressure_levels_single()
Test loading a specific Temperature level.
test_load_pressure_levels_single_and_pressure_levels()
Test loading a specific Temperature level and pressure levels.
test_load_pressure_levels_true()
Test loading Temperature with all pressure levels.
yaml_file = 'nucaps.yaml'

class satpy.tests.reader_tests.test_nucaps.TestNUCAPSScienceEDRReader(methodName='runTest')
Bases: TestCase
Test NUCAPS Science EDR Reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap NetCDF4 file handler with our own fake handler.

2.15. satpy 515


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

tearDown()
Stop wrapping the NetCDF4 file handler.
test_init()
Test basic init with no extra parameters.
test_load_individual_pressure_levels_min_max()
Test loading individual Temperature with min/max level specified.
test_load_individual_pressure_levels_single()
Test loading individual Temperature with specific levels.
test_load_individual_pressure_levels_true()
Test loading Temperature with individual pressure datasets.
test_load_nonpressure_based()
Test loading all channels that aren’t based on pressure.
test_load_pressure_based()
Test loading all channels based on pressure.
test_load_pressure_levels_min_max()
Test loading Temperature with min/max level specified.
test_load_pressure_levels_single()
Test loading a specific Temperature level.
test_load_pressure_levels_single_and_pressure_levels()
Test loading a specific Temperature level and pressure levels.
test_load_pressure_levels_true()
Test loading Temperature with all pressure levels.
yaml_file = 'nucaps.yaml'

satpy.tests.reader_tests.test_nwcsaf_msg module

Unittests for NWC SAF MSG (2013) reader.


class satpy.tests.reader_tests.test_nwcsaf_msg.TestH5NWCSAF(methodName='runTest')
Bases: TestCase
Test the nwcsaf msg reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the tests.
tearDown()
Destroy.
test_get_area_def()
Get the area definition.

516 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_get_dataset()
Retrieve datasets from a NWCSAF msgv2013 hdf5 file.

satpy.tests.reader_tests.test_nwcsaf_nc module

Unittests for NWC SAF reader.


class satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFFileKeyPrefix
Bases: object
Test the NcNWCSAF reader when using a file key prefix.
test_get_dataset_scales_and_offsets_palette_meanings_using_other_dataset(nwcsaf_pps_cmic_filehandler)
Test that get_dataset() returns scaled palette_meanings using another dataset as scaling source.
test_get_dataset_uses_file_key_prefix(nwcsaf_pps_cmic_filehandler)
Test that get_dataset() uses a file_key_prefix.
class satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFGeo
Bases: object
Test the NcNWCSAF reader for Geo products.
test_end_time(nwcsaf_geo_ct_filehandler)
Test the end time property.
test_get_area_def(nwcsaf_geo_ct_filehandler)
Test that get_area_def() returns proper area.
test_get_area_def_km(nwcsaf_old_geo_ct_filehandler)
Test that get_area_def() returns proper area when the projection is in km.
test_orbital_parameters_are_correct(nwcsaf_geo_ct_filehandler)
Test that orbital parameters are present in the dataset attributes.
test_scale_dataset_attr_removal(nwcsaf_geo_ct_filehandler)
Test the scaling of the dataset and removal of obsolete attributes.
test_scale_dataset_floating(nwcsaf_geo_ct_filehandler, attrs, expected)
Test the scaling of the dataset with floating point values.
test_scale_dataset_floating_nwcsaf_geo_ctth(nwcsaf_geo_ct_filehandler)
Test the scaling of the dataset with floating point values for CTTH NWCSAF/Geo v2016/v2018.
test_scale_dataset_uint8_noop(nwcsaf_geo_ct_filehandler)
Test that uint8 is not accidentally casted when no scaling is done.
test_sensor_name_platform(nwcsaf_geo_ct_filehandler, platform, instrument)
Test that the correct sensor name is being set.
test_sensor_name_sat_id(nwcsaf_geo_ct_filehandler, platform, instrument)
Test that the correct sensor name is being set.
test_start_time(nwcsaf_geo_ct_filehandler)
Test the start time property.
test_times_are_in_dataset_attributes(nwcsaf_geo_ct_filehandler)
Check that start/end times are in the attributes of datasets.

2.15. satpy 517


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_uint8_remains_uint8(nwcsaf_geo_ct_filehandler)
Test that loading uint8 remains uint8.
class satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFPPS
Bases: object
Test the NcNWCSAF reader for PPS products.
test_drop_xycoords(nwcsaf_pps_cmic_filehandler)
Test the drop of x and y coords.
test_end_time(nwcsaf_pps_cmic_filehandler)
Test the start time property.
test_get_dataset_can_handle_file_key_list(nwcsaf_pps_cmic_filehandler,
nwcsaf_pps_cpp_filehandler)
Test that get_dataset() can handle a list of file_keys.
test_get_dataset_raises_when_dataset_missing(nwcsaf_pps_cpp_filehandler)
Test that get_dataset() raises an error when the requested dataset is missing.
test_get_dataset_scales_and_offsets(nwcsaf_pps_cpp_filehandler)
Test that get_dataset() returns scaled and offseted data.
test_get_dataset_scales_and_offsets_palette_meanings_using_other_dataset(nwcsaf_pps_cpp_filehandler)
Test that get_dataset() returns scaled palette_meanings with another dataset as scaling source.
test_get_dataset_uses_file_key_if_present(nwcsaf_pps_cmic_filehandler,
nwcsaf_pps_cpp_filehandler)
Test that get_dataset() uses a file_key if present.
test_get_palette_fill_value_color_added(nwcsaf_pps_ctth_filehandler)
Test that get_dataset() returns scaled palette_meanings with fill_value_color added.
test_start_time(nwcsaf_pps_cmic_filehandler)
Test the start time property.
satpy.tests.reader_tests.test_nwcsaf_nc._check_filehandler_area_def(file_handler, dsid)

satpy.tests.reader_tests.test_nwcsaf_nc.create_cmic_file(path, filetype, attrs={'gdal_projection':


'+proj=geos +a=6378137.000
+b=6356752.300 +lon_0=0.000000
+h=35785863.000',
'gdal_xgeo_low_right': 5566500.0,
'gdal_xgeo_up_left': -5569500.0,
'gdal_ygeo_low_right': 2653500.0,
'gdal_ygeo_up_left': 5437500.0,
'satellite_identifier': 'MSG4', 'source':
'NWC/GEO version v2021.1',
'sub-satellite_longitude': 0.0,
'time_coverage_end':
'2023-01-18T10:42:22Z',
'time_coverage_start':
'2023-01-18T10:39:17Z'})
Create a cmic file.

518 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_nwcsaf_nc.create_cot_pal_variable(nc_file, var_name)
Create a palette variable.
satpy.tests.reader_tests.test_nwcsaf_nc.create_cot_variable(nc_file, var_name)
Create a COT variable.
satpy.tests.reader_tests.test_nwcsaf_nc.create_cre_variables(nc_file, var_name)
Create a CRE variable.
satpy.tests.reader_tests.test_nwcsaf_nc.create_ctth_alti_pal_variable_with_fill_value_color(nc_file,
var_name)
Create a palette variable.
satpy.tests.reader_tests.test_nwcsaf_nc.create_ctth_file(path, attrs={'gdal_projection':
'+proj=geos +a=6378137.000
+b=6356752.300 +lon_0=0.000000
+h=35785863.000',
'gdal_xgeo_low_right': 5566500.0,
'gdal_xgeo_up_left': -5569500.0,
'gdal_ygeo_low_right': 2653500.0,
'gdal_ygeo_up_left': 5437500.0,
'satellite_identifier': 'MSG4', 'source':
'NWC/GEO version v2021.1',
'sub-satellite_longitude': 0.0,
'time_coverage_end':
'2023-01-18T10:42:22Z',
'time_coverage_start':
'2023-01-18T10:39:17Z'})
Create a cmic file.
satpy.tests.reader_tests.test_nwcsaf_nc.create_ctth_variables(nc_file, var_name)
Create a CRE variable.

2.15. satpy 519


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_nwcsaf_nc.create_nwcsaf_geo_ct_file(directory,
attrs={'gdal_projection':
'+proj=geos +a=6378137.000
+b=6356752.300
+lon_0=0.000000
+h=35785863.000',
'gdal_xgeo_low_right':
5566500.0,
'gdal_xgeo_up_left':
-5569500.0,
'gdal_ygeo_low_right':
2653500.0,
'gdal_ygeo_up_left':
5437500.0,
'nominal_product_time':
'2023-01-18T10:30:00Z',
'satellite_identifier': 'MSG4',
'source': 'NWC/GEO version
v2021.1',
'sub-satellite_longitude': 0.0,
'time_coverage_end':
'2023-01-18T10:42:22Z',
'time_coverage_start':
'2023-01-18T10:39:17Z'})
Create a CT file.
satpy.tests.reader_tests.test_nwcsaf_nc.nwcsaf_geo_ct_filehandler(nwcsaf_geo_ct_filename)
Create a CT filehandler.
satpy.tests.reader_tests.test_nwcsaf_nc.nwcsaf_geo_ct_filename(tmp_path_factory)
Create a CT file and return the filename.
satpy.tests.reader_tests.test_nwcsaf_nc.nwcsaf_old_geo_ct_filehandler(nwcsaf_old_geo_ct_filename)
Create a CT filehandler.
satpy.tests.reader_tests.test_nwcsaf_nc.nwcsaf_old_geo_ct_filename(tmp_path_factory)
Create a CT file and return the filename.
satpy.tests.reader_tests.test_nwcsaf_nc.nwcsaf_pps_cmic_filehandler(nwcsaf_pps_cmic_filename)
Create a CMIC filehandler.
satpy.tests.reader_tests.test_nwcsaf_nc.nwcsaf_pps_cmic_filename(tmp_path_factory)
Create a CMIC file.
satpy.tests.reader_tests.test_nwcsaf_nc.nwcsaf_pps_cpp_filehandler(nwcsaf_pps_cpp_filename)
Create a CPP filehandler.
satpy.tests.reader_tests.test_nwcsaf_nc.nwcsaf_pps_cpp_filename(tmp_path_factory)
Create a CPP file.
satpy.tests.reader_tests.test_nwcsaf_nc.nwcsaf_pps_ctth_filehandler(nwcsaf_pps_ctth_filename)
Create a CMIC filehandler.
satpy.tests.reader_tests.test_nwcsaf_nc.nwcsaf_pps_ctth_filename(tmp_path_factory)
Create a CTTH file.

520 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_oceancolorcci_l3_nc module

Module for testing the satpy.readers.oceancolorcci_l3_nc module.


class satpy.tests.reader_tests.test_oceancolorcci_l3_nc.TestOCCCIReader
Bases: object
Test the Ocean Color reader.
_create_reader_for_resolutions(filename)

area_exp()
Get expected area definition.
setup_method()
Set up the reader tests.
test_bad_fname(fake_dataset, fake_file_dict)
Test case where an incorrect composite period is given.
test_correct_dimnames(fake_file_dict)
Check that the loaded dimension names are correct.
test_end_time(fake_file_dict)
Test end time property.
test_get_area_def(area_exp, fake_file_dict)
Test area definition.
test_get_dataset_1d_kprods(fake_dataset, fake_file_dict)
Test dataset loading.
test_get_dataset_5d_allprods(fake_dataset, fake_file_dict)
Test dataset loading.
test_get_dataset_8d_iopprods(fake_dataset, fake_file_dict)
Test dataset loading.
test_get_dataset_monthly_allprods(fake_dataset, fake_file_dict)
Test dataset loading.
test_start_time(fake_file_dict)
Test start time property.
satpy.tests.reader_tests.test_oceancolorcci_l3_nc.fake_dataset()
Create a CLAAS-like test dataset.
satpy.tests.reader_tests.test_oceancolorcci_l3_nc.fake_file_dict(fake_dataset, tmp_path)
Write a fake dataset to file.

satpy.tests.reader_tests.test_oci_l2_bgc module

Tests for the ‘oci_l2_bgc’ reader.


class satpy.tests.reader_tests.test_oci_l2_bgc.TestSEADAS
Bases: object
Test the OCI L2 file reader.

2.15. satpy 521


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_available_reader()
Test that OCI L2 reader is available.
test_load_chlor_a(oci_l2_bgc_netcdf , apply_quality_flags)
Test that we can load ‘chlor_a’.
test_scene_available_datasets(oci_l2_bgc_netcdf )
Test that datasets are available.
satpy.tests.reader_tests.test_oci_l2_bgc.oci_l2_bgc_netcdf(tmp_path_factory)
Create MODIS SEADAS NetCDF file.

satpy.tests.reader_tests.test_olci_nc module

Module for testing the satpy.readers.olci_nc module.


class satpy.tests.reader_tests.test_olci_nc.TestL1bBitFlags(methodName='runTest')
Bases: TestCase
Test the bitflag reading.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_bitflags()
Test the BitFlags class.
class satpy.tests.reader_tests.test_olci_nc.TestL2BitFlags(methodName='runTest')
Bases: TestCase
Test the bitflag reading.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_bitflags()
Test the BitFlags class.
test_bitflags_with_custom_flag_list()
Test the BitFlags class providing a flag list.
test_bitflags_with_dataarray_without_flags()
Test the BitFlags class.
test_bitflags_with_flags_from_array()
Test reading bitflags from DataArray attributes.
class satpy.tests.reader_tests.test_olci_nc.TestOLCIReader(methodName='runTest')
Bases: TestCase
Test various olci_nc filehandlers.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.

522 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_classSetupFailed = False

_class_cleanups = []

test_chl_nn(mocked_dataset)
Test unlogging the chl_nn product.
test_get_l1b_customized_mask(mocked_dataset)
Test reading mask datasets from L1B products.
test_get_l1b_default_mask(mocked_dataset)
Test reading mask datasets from L1B products.
test_get_l2_mask(mocked_dataset)
Test reading datasets.
test_get_l2_mask_with_alternative_items(mocked_dataset)
Test reading datasets.
test_instantiate(mocked_dataset)
Test initialization of file handlers.
test_olci_angles(mocked_dataset)
Test reading datasets.
test_olci_meteo(mocked_dataset)
Test reading datasets.
test_open_file_objects(mocked_open_dataset)
Test initialization of file handlers.

satpy.tests.reader_tests.test_oli_tirs_l1_tif module

Unittests for generic image reader.


class satpy.tests.reader_tests.test_oli_tirs_l1_tif.TestOLITIRSL1
Bases: object
Test generic image reader.
setup_method(tmp_path)
Set up the filename and filetype info dicts..
test_angles(all_files, sza_data)
Test calibration modes for the reader.
test_area_def(mda_file)
Check we can get the area defs properly.
test_badfiles(mda_file, b4_file)
Test loading a Landsat Scene with bad data.
test_basicload(l1_area, b4_file, b11_file, mda_file)
Test loading a Landsat Scene.
test_calibration_counts(all_files, b4_data, b11_data)
Test counts calibration mode for the reader.

2.15. satpy 523


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_calibration_highlevel(all_files, b4_data, b11_data)


Test high level calibration modes for the reader.
test_calibration_radiance(all_files, b4_data, b11_data)
Test radiance calibration mode for the reader.
test_ch_startend(b4_file, sza_file, mda_file)
Test correct retrieval of start/end times.
test_loading_badchan(mda_file, b11_file)
Test loading a Landsat Scene with bad channel requests.
test_loading_badfil(mda_file, b4_file)
Test loading a Landsat Scene with bad channel requests.
test_loading_gd(mda_file, b4_file)
Test loading a Landsat Scene with good channel requests.
test_metadata(mda_file)
Check that metadata values loaded correctly.
satpy.tests.reader_tests.test_oli_tirs_l1_tif.all_files(b4_file, b11_file, mda_file, sza_file)
Return all the files.
satpy.tests.reader_tests.test_oli_tirs_l1_tif.b11_data()
Get the data for the b11 channel.
satpy.tests.reader_tests.test_oli_tirs_l1_tif.b11_file(l1_files_path, b11_data, l1_area)
Create the file for the b11 channel.
satpy.tests.reader_tests.test_oli_tirs_l1_tif.b4_data()
Get the data for the b4 channel.
satpy.tests.reader_tests.test_oli_tirs_l1_tif.b4_file(l1_files_path, b4_data, l1_area)
Create the file for the b4 channel.
satpy.tests.reader_tests.test_oli_tirs_l1_tif.create_tif_file(data, name, area, filename)
Create a tif file.
satpy.tests.reader_tests.test_oli_tirs_l1_tif.l1_area()
Get the landsat 1 area def.
satpy.tests.reader_tests.test_oli_tirs_l1_tif.l1_files_path(tmp_path_factory)
Create the path for l1 files.
satpy.tests.reader_tests.test_oli_tirs_l1_tif.mda_file(l1_files_path)
Create the metadata xml file.
satpy.tests.reader_tests.test_oli_tirs_l1_tif.sza_data()
Get the data for the sza.
satpy.tests.reader_tests.test_oli_tirs_l1_tif.sza_file(l1_files_path, sza_data, l1_area)
Create the file for the sza.

524 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_omps_edr module

Module for testing the satpy.readers.omps_edr module.


class satpy.tests.reader_tests.test_omps_edr.FakeHDF5FileHandler2(filename, filename_info,
filetype_info, **kwargs)
Bases: FakeHDF5FileHandler
Swap-in HDF5 File Handler.
Get fake file content from ‘get_test_content’.
get_test_content(filename, filename_info, filetype_info)
Mimic reader input file content.
class satpy.tests.reader_tests.test_omps_edr.TestOMPSEDRReader(methodName='runTest')
Bases: TestCase
Test OMPS EDR Reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap HDF5 file handler with our own fake handler.
tearDown()
Stop wrapping the NetCDF4 file handler.
test_basic_load_so2()
Test basic load of so2 datasets.
test_basic_load_to3()
Test basic load of to3 datasets.
test_init()
Test basic init with no extra parameters.
test_load_so2_DIMENSION_LIST(mock_h5py_file, mock_hdf5_utils_get_reference)
Test load of so2 datasets with DIMENSION_LIST.
yaml_file = 'omps_edr.yaml'

satpy.tests.reader_tests.test_osisaf_l3 module

Module for testing the satpy.readers.osisaf_l3 module.


class satpy.tests.reader_tests.test_osisaf_l3.OSISAFL3ReaderTests
Bases: object
Test OSI-SAF level 3 netCDF reader ice files.
setup_method(tester='ice')
Create a fake dataset.

2.15. satpy 525


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_get_area_def_bad(tmp_path)
Test getting the area definition for the polar stereographic grid.
test_get_dataset(tmp_path)
Test retrieval of datasets.
test_get_start_and_end_times(tmp_path)
Test retrieval of the sensor name from the netCDF file.
test_instantiate_single_netcdf_file(tmp_path)
Test initialization of file handlers - given a single netCDF file.
class satpy.tests.reader_tests.test_osisaf_l3.TestOSISAFL3ReaderFluxGeo
Bases: OSISAFL3ReaderTests
Test OSI-SAF level 3 netCDF reader flux files on lat/lon grid (GEO sensors).
setup_method()
Set up the tests.
test_get_area_def_grid(tmp_path)
Test getting the area definition for the lat/lon grid.
class satpy.tests.reader_tests.test_osisaf_l3.TestOSISAFL3ReaderFluxStere
Bases: OSISAFL3ReaderTests
Test OSI-SAF level 3 netCDF reader flux files on stereographic grid.
setup_method()
Set up the tests.
test_get_area_def_stere(tmp_path)
Test getting the area definition for the polar stereographic grid.
class satpy.tests.reader_tests.test_osisaf_l3.TestOSISAFL3ReaderICE
Bases: OSISAFL3ReaderTests
Test OSI-SAF level 3 netCDF reader ice files.
setup_method()
Set up the tests.
test_get_area_def_ease(tmp_path)
Test getting the area definition for the EASE grid.
test_get_area_def_stere(tmp_path)
Test getting the area definition for the polar stereographic grid.
class satpy.tests.reader_tests.test_osisaf_l3.TestOSISAFL3ReaderSST
Bases: OSISAFL3ReaderTests
Test OSI-SAF level 3 netCDF reader surface temperature files.
setup_method()
Set up the tests.
test_get_area_def_stere(tmp_path)
Test getting the area definition for the polar stereographic grid.

526 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_safe_sar_l2_ocn module

Module for testing the satpy.readers.safe_sar_l2_ocn module.


class satpy.tests.reader_tests.test_safe_sar_l2_ocn.TestSAFENC(methodName='runTest')
Bases: TestCase
Test various SAFE SAR L2 OCN file handlers.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp(xr_)
Set up the tests.
test_get_dataset()
Test getting a dataset.
test_init()
Test reader initialization.

satpy.tests.reader_tests.test_sar_c_safe module

Module for testing the satpy.readers.sar-c_safe module.


class satpy.tests.reader_tests.test_sar_c_safe.Calibration(value, names=None, *, module=None,
qualname=None, type=None, start=1,
boundary=None)
Bases: Enum
Calibration levels.
beta_nought = 3

dn = 4

gamma = 1

sigma_nought = 2

class satpy.tests.reader_tests.test_sar_c_safe.TestSAFEGRD
Bases: object
Test the SAFE GRD file handler.
test_read_calibrated_dB(measurement_filehandler)
Test the calibration routines.
test_read_calibrated_natural(measurement_filehandler)
Test the calibration routines.
test_read_lon_lats(measurement_filehandler)
Test reading lons and lats.

2.15. satpy 527


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.reader_tests.test_sar_c_safe.TestSAFEXMLCalibration
Bases: object
Test the SAFE XML Calibration file handler.
setup_method()
Set up testing.
test_beta_calibration_array(calibration_filehandler)
Test reading the beta calibration array.
test_dn_calibration_array(calibration_filehandler)
Test reading the dn calibration array.
test_gamma_calibration_array(calibration_filehandler)
Test reading the gamma calibration array.
test_get_calibration_constant(calibration_filehandler)
Test getting the calibration constant.
test_get_calibration_dataset(calibration_filehandler)
Test using get_dataset for the calibration.
test_get_calibration_dataset_has_right_chunk_size(calibration_filehandler)
Test using get_dataset for the calibration yields array with right chunksize.
test_sigma_calibration_array(calibration_filehandler)
Test reading the sigma calibration array.
class satpy.tests.reader_tests.test_sar_c_safe.TestSAFEXMLNoise
Bases: object
Test the SAFE XML Noise file handler.
setup_method()
Set up the test case.
test_azimuth_noise_array(noise_filehandler)
Test reading the azimuth-noise array.
test_azimuth_noise_array_with_holes(noise_with_holes_filehandler)
Test reading the azimuth-noise array.
test_get_noise_dataset(noise_filehandler)
Test using get_dataset for the noise.
test_get_noise_dataset_has_right_chunk_size(noise_filehandler)
Test using get_dataset for the noise has right chunk size in result.
test_range_noise_array(noise_filehandler)
Test reading the range-noise array.
satpy.tests.reader_tests.test_sar_c_safe.annotation_file(granule_directory)
Create an annotation file.
satpy.tests.reader_tests.test_sar_c_safe.annotation_filehandler(annotation_file)
Create an annotation filehandler.

528 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_sar_c_safe.calibration_file(granule_directory)
Create a calibration file.
satpy.tests.reader_tests.test_sar_c_safe.calibration_filehandler(calibration_file,
annotation_filehandler)
Create a calibration filehandler.
satpy.tests.reader_tests.test_sar_c_safe.granule_directory(tmp_path_factory)
Create a granule directory.
satpy.tests.reader_tests.test_sar_c_safe.measurement_file(granule_directory)
Create a tiff measurement file.
satpy.tests.reader_tests.test_sar_c_safe.measurement_filehandler(measurement_file,
noise_filehandler,
calibration_filehandler)
Create a measurement filehandler.
satpy.tests.reader_tests.test_sar_c_safe.noise_file(granule_directory)
Create a noise file.
satpy.tests.reader_tests.test_sar_c_safe.noise_filehandler(noise_file, annotation_filehandler)
Create a noise filehandler.
satpy.tests.reader_tests.test_sar_c_safe.noise_with_holes_filehandler(annotation_filehandler,
tmpdir_factory)
Create a noise filehandler from data with holes.
satpy.tests.reader_tests.test_sar_c_safe.test_filename_filtering_from_reader(measurement_file,
calibration_file,
noise_file,
annotation_file,
tmp_path)
Test that filenames get filtered before filehandlers are created.
satpy.tests.reader_tests.test_sar_c_safe.test_incidence_angle(annotation_filehandler)
Test reading the incidence angle in an annotation file.
satpy.tests.reader_tests.test_sar_c_safe.test_reading_from_reader(measurement_file,
calibration_file, noise_file,
annotation_file)
Test reading using the reader defined in the config.
satpy.tests.reader_tests.test_sar_c_safe.test_swath_def_contains_gcps_and_bounding_box(measurement_file,
cal-
i-
bra-
tion_file,
noise_file,
an-
no-
ta-
tion_file)
Test reading using the reader defined in the config.

2.15. satpy 529


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_satpy_cf_nc module

Tests for the CF reader.


class satpy.tests.reader_tests.test_satpy_cf_nc.TestCFReader
Bases: object
Test case for CF reader.
test_dataid_attrs_equal_contains_not_matching_key(cf_scene, nc_filename)
Check that get_dataset returns valid dataset when dataid have key(s) not existing in data.
test_dataid_attrs_equal_matching_dataset(cf_scene, nc_filename)
Check that get_dataset returns valid dataset when keys matches.
test_dataid_attrs_equal_not_matching_dataset(cf_scene, nc_filename)
Check that get_dataset returns None when key(s) are not matching.
test_decoding_of_dict_type_attributes(cf_scene, nc_filename)
Test decoding of dict type attributes.
test_decoding_of_timestamps(cf_scene, nc_filename)
Test decoding of timestamps.
test_fix_modifier_attr()
Check that fix modifier can handle empty list as modifier attribute.
test_read_prefixed_channels(cf_scene, nc_filename)
Check channels starting with digit is prefixed and read back correctly.
test_read_prefixed_channels_by_user(cf_scene, nc_filename)
Check channels starting with digit is prefixed by user and read back correctly.
test_read_prefixed_channels_by_user2(cf_scene, nc_filename)
Check channels starting with digit is prefixed by user when saving and read back correctly without prefix.
test_read_prefixed_channels_by_user_include_prefix(cf_scene, nc_filename)
Check channels starting with digit is prefixed by user and include original name when saving.
test_read_prefixed_channels_by_user_no_prefix(cf_scene, nc_filename)
Check channels starting with digit is not prefixed by user.
test_read_prefixed_channels_include_orig_name(cf_scene, nc_filename)
Check channels starting with digit and includeed orig name is prefixed and read back correctly.
test_write_and_read_from_two_files(nc_filename, nc_filename_i)
Save two datasets with different resolution and read the solar_zenith_angle again.
test_write_and_read_with_area_definition(cf_scene, nc_filename)
Save a dataset with an area definition to file with cf_writer and read the data again.
test_write_and_read_with_swath_definition(cf_scene, nc_filename)
Save a dataset with a swath definition to file with cf_writer and read the data again.
satpy.tests.reader_tests.test_satpy_cf_nc._create_test_netcdf(filename, resolution=742)

satpy.tests.reader_tests.test_satpy_cf_nc.area()
Get area definition.

530 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_satpy_cf_nc.cf_scene(datasets, common_attrs)
Create a cf scene.
satpy.tests.reader_tests.test_satpy_cf_nc.common_attrs(area)
Get common dataset attributes.
satpy.tests.reader_tests.test_satpy_cf_nc.datasets(vis006, ir_108, qual_flags, lonlats, prefix_data,
swath_data)
Get datasets belonging to the scene.
satpy.tests.reader_tests.test_satpy_cf_nc.ir_108(xy_coords)
Get IR_108 dataset.
satpy.tests.reader_tests.test_satpy_cf_nc.lonlats(xy_coords)
Get longitudes and latitudes.
satpy.tests.reader_tests.test_satpy_cf_nc.nc_filename(tmp_path)
Create an nc filename for viirs m band.
satpy.tests.reader_tests.test_satpy_cf_nc.nc_filename_i(tmp_path)
Create an nc filename for viirs i band.
satpy.tests.reader_tests.test_satpy_cf_nc.prefix_data(xy_coords, area)
Get dataset whose name should be prefixed.
satpy.tests.reader_tests.test_satpy_cf_nc.qual_flags(xy_coords)
Get quality flags.
satpy.tests.reader_tests.test_satpy_cf_nc.swath_data(prefix_data, lonlats)
Get swath data.
satpy.tests.reader_tests.test_satpy_cf_nc.vis006(xy_coords, common_attrs)
Get VIS006 dataset.
satpy.tests.reader_tests.test_satpy_cf_nc.xy_coords(area)
Get projection coordinates.

satpy.tests.reader_tests.test_scmi module

The scmi_abi_l1b reader tests package.


class satpy.tests.reader_tests.test_scmi.FakeDataset(info, attrs, dims=None)
Bases: object
Fake dataset.
Init the dataset.
close()
Close the dataset.
rename(*args, **kwargs)
Rename the dataset.
class satpy.tests.reader_tests.test_scmi.TestSCMIFileHandler(methodName='runTest')
Bases: TestCase
Test the SCMIFileHandler reader.

2.15. satpy 531


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp(xr_)
Set up for test.
test_basic_attributes()
Test getting basic file attributes.
test_data_load()
Test data loading.
class satpy.tests.reader_tests.test_scmi.TestSCMIFileHandlerArea(methodName='runTest')
Bases: TestCase
Test the SCMIFileHandler’s area creation.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

create_reader(proj_name, proj_attrs, xr_)


Create a fake reader.
test_get_area_def_bad(adef )
Test the area generation for bad projection.
test_get_area_def_geos(adef )
Test the area generation for geos projection.
test_get_area_def_lcc(adef )
Test the area generation for lcc projection.
test_get_area_def_merc(adef )
Test the area generation for merc projection.
test_get_area_def_stere(adef )
Test the area generation for stere projection.

satpy.tests.reader_tests.test_seadas_l2 module

Tests for the ‘seadas_l2’ reader.


class satpy.tests.reader_tests.test_seadas_l2.TestSEADAS
Bases: object
Test the SEADAS L2 file reader.
test_available_reader()
Test that SEADAS L2 reader is available.
test_load_chlor_a(input_files, exp_plat, exp_sensor, exp_rps, apply_quality_flags)
Test that we can load ‘chlor_a’.

532 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_scene_available_datasets(input_files)
Test that datasets are available.
satpy.tests.reader_tests.test_seadas_l2._add_variable_to_hdf4_file(h, var_name, var_info)

satpy.tests.reader_tests.test_seadas_l2._add_variable_to_netcdf_file(nc, var_name, var_info)

satpy.tests.reader_tests.test_seadas_l2._create_seadas_chlor_a_hdf4_file(full_path, mission,
sensor)

satpy.tests.reader_tests.test_seadas_l2._create_seadas_chlor_a_netcdf_file(full_path, mission,
sensor)

satpy.tests.reader_tests.test_seadas_l2.seadas_l2_modis_chlor_a(tmp_path_factory)
Create MODIS SEADAS file.
satpy.tests.reader_tests.test_seadas_l2.seadas_l2_modis_chlor_a_netcdf(tmp_path_factory)
Create MODIS SEADAS NetCDF file.
satpy.tests.reader_tests.test_seadas_l2.seadas_l2_viirs_j01_chlor_a(tmp_path_factory)
Create VIIRS JPSS-01 SEADAS file.
satpy.tests.reader_tests.test_seadas_l2.seadas_l2_viirs_npp_chlor_a(tmp_path_factory)
Create VIIRS NPP SEADAS file.

satpy.tests.reader_tests.test_seviri_base module

Test the MSG common (native and hrit format) functionionalities.


class satpy.tests.reader_tests.test_seviri_base.SeviriBaseTest(methodName='runTest')
Bases: TestCase
Test SEVIRI base.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

observation_end_time()
Get scan end timestamp for testing.
observation_start_time()
Get scan start timestamp for testing.
test_chebyshev()
Test the chebyshev function.
test_dec10216()
Test the dec10216 function.
test_get_cds_time_array()
Test the get_cds_time function for array inputs.
test_get_cds_time_nanoseconds()
Test the get_cds_time function for having nanosecond precision.

2.15. satpy 533


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_get_cds_time_scalar()
Test the get_cds_time function for scalar inputs.
static test_get_padding_area_float()
Test padding area generator for floats.
static test_get_padding_area_int()
Test padding area generator for integers.
static test_pad_data_horizontally()
Test the horizontal hrv padding.
test_pad_data_horizontally_bad_shape()
Test the error handling for the horizontal hrv padding.
static test_pad_data_vertically()
Test the vertical hrv padding.
test_pad_data_vertically_bad_shape()
Test the error handling for the vertical hrv padding.
test_round_nom_time()
Test the rouding of start/end_time.
class satpy.tests.reader_tests.test_seviri_base.TestMeirinkSlope
Bases: object
Unit tests for the slope of Meirink calibration.
test_get_meirink_slope_2020(platform_id, time, expected)
Test the value of the slope of the Meirink calibration.
test_get_meirink_slope_epoch(platform_id, channel_name)
Test the value of the slope of the Meirink calibration on 2000-01-01.
class satpy.tests.reader_tests.test_seviri_base.TestOrbitPolynomialFinder
Bases: object
Unit tests for orbit polynomial finder.
test_get_orbit_polynomial(orbit_polynomials, time, orbit_polynomial_exp)
Test getting the satellite locator.
test_get_orbit_polynomial_exceptions(orbit_polynomials, time)
Test exceptions thrown while getting the satellite locator.
class satpy.tests.reader_tests.test_seviri_base.TestSatellitePosition
Bases: object
Test locating the satellite.
orbit_polynomial()
Get an orbit polynomial for testing.
test_eval_polynomial(orbit_polynomial, time)
Test getting the position in cartesian coordinates.
test_get_satpos(orbit_polynomial, time)
Test getting the position in geodetic coordinates.

534 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

time()
Get scan timestamp for testing.
satpy.tests.reader_tests.test_seviri_base.chebyshev4(c, x, domain)
Evaluate 4th order Chebyshev polynomial.

satpy.tests.reader_tests.test_seviri_l1b_calibration module

Unittesting the native msg reader.


class satpy.tests.reader_tests.test_seviri_l1b_calibration.TestFileHandlerCalibrationBase
Bases: object
Base class for file handler calibration tests.
_get_expected(channel, calibration, calib_mode, use_ext_coefs)

counts()
Provide fake image counts.
expected = {'HRV': {'counts': {'NOMINAL': <xarray.DataArray (y: 2, x: 2)> Size:
32B array([[ 0, 10], [100, 255]]) Dimensions without coordinates: y, x},
'radiance': {'EXTERNAL': <xarray.DataArray (y: 2, x: 2)> Size: 32B array([[ nan,
45.], [ 495., 1270.]]) Dimensions without coordinates: y, x, 'GSICS':
<xarray.DataArray (y: 2, x: 2)> Size: 32B array([[ nan, 108.], [1188., 3048.]])
Dimensions without coordinates: y, x, 'NOMINAL': <xarray.DataArray (y: 2, x: 2)>
Size: 32B array([[ nan, 108.], [1188., 3048.]]) Dimensions without coordinates: y,
x}, 'reflectance': {'EXTERNAL': <xarray.DataArray (y: 2, x: 2)> Size: 32B
array([[ nan, 173.02817], [1903.31 , 4883.2397 ]]) Dimensions without coordinates:
y, x, 'NOMINAL': <xarray.DataArray (y: 2, x: 2)> Size: 32B array([[ nan,
415.26767], [ 4567.944 , 11719.775 ]]) Dimensions without coordinates: y, x}},
'IR_108': {'brightness_temperature': {'EXTERNAL': <xarray.DataArray (y: 2, x:
2)> Size: 32B array([[ nan, 335.14236], [ 758.6249 , 1262.7567 ]]) Dimensions
without coordinates: y, x, 'GSICS': <xarray.DataArray (y: 2, x: 2)> Size: 32B
array([[ nan, 189.20985], [285.53293, 356.06668]]) Dimensions without coordinates:
y, x, 'NOMINAL': <xarray.DataArray (y: 2, x: 2)> Size: 32B array([[ nan,
279.82318], [543.2585 , 812.77167]]) Dimensions without coordinates: y, x},
'counts': {'NOMINAL': <xarray.DataArray (y: 2, x: 2)> Size: 32B array([[ 0, 10],
[100, 255]]) Dimensions without coordinates: y, x}, 'radiance': {'EXTERNAL':
<xarray.DataArray (y: 2, x: 2)> Size: 32B array([[ nan, 180.], [1980., 5080.]])
Dimensions without coordinates: y, x, 'GSICS': <xarray.DataArray (y: 2, x: 2)>
Size: 32B array([[ nan, 8.19], [ 89.19, 228.69]]) Dimensions without coordinates:
y, x, 'NOMINAL': <xarray.DataArray (y: 2, x: 2)> Size: 32B array([[ nan, 81.], [
891., 2286.]]) Dimensions without coordinates: y, x}}, 'VIS006': {'counts':
{'NOMINAL': <xarray.DataArray (y: 2, x: 2)> Size: 32B array([[ 0, 10], [100,
255]]) Dimensions without coordinates: y, x}, 'radiance': {'EXTERNAL':
<xarray.DataArray (y: 2, x: 2)> Size: 32B array([[ nan, 90.], [ 990., 2540.]])
Dimensions without coordinates: y, x, 'GSICS': <xarray.DataArray (y: 2, x: 2)>
Size: 32B array([[ nan, 9.], [ 99., 254.]]) Dimensions without coordinates: y, x,
'NOMINAL': <xarray.DataArray (y: 2, x: 2)> Size: 32B array([[ nan, 9.], [ 99.,
254.]]) Dimensions without coordinates: y, x}, 'reflectance': {'EXTERNAL':
<xarray.DataArray (y: 2, x: 2)> Size: 32B array([[ nan, 418.89853], [ 4607.8843 ,
11822.249 ]]) Dimensions without coordinates: y, x, 'NOMINAL': <xarray.DataArray
(y: 2, x: 2)> Size: 32B array([[ nan, 41.88985], [ 460.7884 , 1182.2247 ]])
Dimensions without coordinates: y, x}}}

2.15. satpy 535


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

external_coefs = {'HRV': {'gain': 5, 'offset': -5}, 'IR_108': {'gain': 20,


'offset': -20}, 'VIS006': {'gain': 10, 'offset': -10}}

gains_gsics = [0, 0, 0, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 0]

gains_nominal = array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

offsets_gsics = [0, 0, 0, -0.4, -0.5, -0.6, -0.7, -0.8, -0.9, -1.0, -1.1, 0]

offsets_nominal = array([ -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12])

platform_id = 324

radiance_types = array([2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2.])

scan_time = datetime.datetime(2020, 1, 1, 0, 0)

spectral_channel_ids = {'HRV': 12, 'IR_108': 9, 'VIS006': 1}

class satpy.tests.reader_tests.test_seviri_l1b_calibration.TestSEVIRICalibrationAlgorithm(methodName='ru
Bases: TestCase
Unit Tests for SEVIRI calibration algorithm.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the SEVIRI Calibration algorithm for testing.
test_convert_to_radiance()
Test the conversion from counts to radiances.
test_ir_calibrate()
Test conversion from radiance to brightness temperature.
test_vis_calibrate()
Test conversion from radiance to reflectance.
class satpy.tests.reader_tests.test_seviri_l1b_calibration.TestSeviriCalibrationHandler
Bases: object
Unit tests for SEVIRI calibration handler.
_get_calibration_handler(calib_mode='NOMINAL', ext_coefs=None)
Provide a calibration handler.
test_calibrate_exceptions()
Test exceptions raised by the calibration handler.
test_get_gain_offset(calib_mode, ext_coefs, expected)
Test selection of gain and offset.
test_init()
Test initialization of the calibration handler.

536 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_seviri_l1b_hrit module

The HRIT msg reader tests package.


class satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGBase(methodName='runTest')
Bases: TestCase
Baseclass for SEVIRI HRIT reader tests.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

assert_attrs_equal(attrs, attrs_exp)
Assert equality of dataset attributes.
class satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGCalibration
Bases: TestFileHandlerCalibrationBase
Unit tests for calibration.
file_handler()
Create a mocked file handler.
test_calibrate(file_handler, counts, channel, calibration, calib_mode, use_ext_coefs)
Test the calibration.
test_mask_bad_quality(file_handler)
Test the masking of bad quality scan lines.
class satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGEpilogueFileHandler(methodName='runTest')
Bases: TestCase
Test the HRIT epilogue file handler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp(init, *mocks)
Set up the test case.
test_extra_kwargs(init, *mocks)
Test whether the epilogue file handler accepts extra keyword arguments.
test_reduce(reduce_mda)
Test metadata reduction.
class satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGFileHandler(methodName='runTest')
Bases: TestHRITMSGBase
Test the HRITFileHandler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.

2.15. satpy 537


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_classSetupFailed = False

_class_cleanups = []

_get_fake_data()

setUp()
Set up the hrit file handler for testing.
test_get_area_def()
Test getting the area def.
test_get_dataset(calibrate, parent_get_dataset)
Test getting the dataset.
test_get_dataset_with_raw_metadata(calibrate, parent_get_dataset)
Test getting the dataset.
test_get_dataset_without_masking_bad_scan_lines(calibrate, parent_get_dataset)
Test getting the dataset.
test_get_raw_mda()
Test provision of raw metadata.
test_read_band(memmap)
Test reading a band.
test_satpos_no_valid_orbit_polynomial()
Test satellite position if there is no valid orbit polynomial.
class satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGFileHandlerHRV(methodName='runTest')
Bases: TestHRITMSGBase
Test the HRITFileHandler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the hrit file handler for testing HRV.
test_get_area_def()
Test getting the area def.
test_get_dataset(calibrate, parent_get_dataset)
Test getting the hrv dataset.
test_get_dataset_non_fill(calibrate, parent_get_dataset)
Test getting a non-filled hrv dataset.
test_read_hrv_band(memmap)
Test reading the hrv band.

538 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGPrologueFileHandler(methodName='runTest')
Bases: TestCase
Test the HRIT prologue file handler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp(*mocks)
Set up the test case.
test_extra_kwargs(init, *mocks)
Test whether the prologue file handler accepts extra keyword arguments.
test_reduce(reduce_mda)
Test metadata reduction.

satpy.tests.reader_tests.test_seviri_l1b_hrit_setup module

Setup for SEVIRI HRIT reader tests.


satpy.tests.reader_tests.test_seviri_l1b_hrit_setup.get_acq_time_cds(start_time, nlines)
Get fake scanline acquisition times.
satpy.tests.reader_tests.test_seviri_l1b_hrit_setup.get_acq_time_exp(start_time, nlines)
Get expected scanline acquisition times.
satpy.tests.reader_tests.test_seviri_l1b_hrit_setup.get_attrs_exp(projection_longitude=0.0)
Get expected dataset attributes.
satpy.tests.reader_tests.test_seviri_l1b_hrit_setup.get_fake_dataset_info()
Create fake dataset info.
satpy.tests.reader_tests.test_seviri_l1b_hrit_setup.get_fake_epilogue()
Create a fake HRIT epilogue.

2.15. satpy 539


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_seviri_l1b_hrit_setup.get_fake_file_handler(observation_start_time,
nlines, ncols,
projec-
tion_longitude=0,
or-
bit_polynomials={'EndTime':
ar-
ray([[datetime.datetime(2006,
1, 1, 12, 0), date-
time.datetime(2006,
1, 1, 18, 0), date-
time.datetime(2006,
1, 2, 0, 0), date-
time.datetime(1958,
1, 1, 0, 0)]],
dtype=object),
'StartTime': ar-
ray([[datetime.datetime(2006,
1, 1, 6, 0), date-
time.datetime(2006,
1, 1, 12, 0), date-
time.datetime(2006,
1, 1, 18, 0), date-
time.datetime(1958,
1, 1, 0, 0)]],
dtype=object), 'X':
[array([0., 0., 0., 0.,
0., 0., 0., 0.]),
[84160.7082,
2.9431926,
0.986748617,
-0.270135453,
-0.038436465,
0.00848718433,
0.000770548174,
-0.000144262718],
array([0., 0., 0., 0.,
0., 0., 0., 0.])], 'Y':
[array([0., 0., 0., 0.,
0., 0., 0., 0.]),
[-5211.70255,
5.12998948,
-1.33370453,
-0.309634144,
0.0618232793,
0.00750505681,
-0.00135131011,
-0.000112054405],
array([0., 0., 0., 0.,
0., 0., 0., 0.])], 'Z':
[array([0., 0., 0., 0.,
0., 0., 0., 0.]),
[-651.293855,
145.830459,
56.13794,
-3.90970565,
540 Chapter 2.-0.738137565,
Documentation
0.0306131644,
0.00382892428,
-0.000112739309],
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Create a mocked SEVIRI HRIT file handler.


satpy.tests.reader_tests.test_seviri_l1b_hrit_setup.get_fake_filename_info(start_time)
Create fake filename information.
satpy.tests.reader_tests.test_seviri_l1b_hrit_setup.get_fake_mda(nlines, ncols, start_time)
Create fake metadata.
satpy.tests.reader_tests.test_seviri_l1b_hrit_setup.get_fake_prologue(projection_longitude,
orbit_polynomials)
Create a fake HRIT prologue.
satpy.tests.reader_tests.test_seviri_l1b_hrit_setup.get_new_read_prologue(prologue)
Create mocked read_prologue() method.
satpy.tests.reader_tests.test_seviri_l1b_hrit_setup.new_get_hd(instance, hdr_info)
Generate some metadata.

satpy.tests.reader_tests.test_seviri_l1b_icare module

Tests for the SEVIRI L1b HDF4 from ICARE reader.


class satpy.tests.reader_tests.test_seviri_l1b_icare.FakeHDF4FileHandler2(filename,
filename_info,
filetype_info,
**kwargs)
Bases: FakeHDF4FileHandler
Swap in HDF4 file handler.
Get fake file content from ‘get_test_content’.
get_test_content(filename, filename_info, filename_type)
Mimic reader input file content.
class satpy.tests.reader_tests.test_seviri_l1b_icare.TestSEVIRIICAREReader(methodName='runTest')
Bases: TestCase
Test SEVIRI L1b HDF4 from ICARE Reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

compare_areas(v)
Compare produced AreaDefinition with expected.
setUp()
Wrap HDF4 file handler with own fake file handler.
tearDown()
Stop wrapping the HDF4 file handler.
test_area_def_hires()
Test loading all datasets from an area of interest file.

2.15. satpy 541


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_area_def_lores()
Test loading all datasets from an area of interest file.
test_bad_bandname()
Check reader raises an error if a band bandname is passed.
test_init()
Test basic init with no extra parameters.
test_load_dataset_ir()
Test loading all datasets from a full swath file.
test_load_dataset_vis()
Test loading all datasets from a full swath file.
test_nocompute()
Test that dask does not compute anything in the reader itself.
test_sensor_names()
Check satellite name conversion is correct, including error case.
yaml_file = 'seviri_l1b_icare.yaml'

satpy.tests.reader_tests.test_seviri_l1b_native module

Unittesting the Native SEVIRI reader.


class satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeMSGCalibration
Bases: TestFileHandlerCalibrationBase
Unit tests for calibration.
file_handler()
Create a mocked file handler.
test_calibrate(file_handler, counts, channel, calibration, calib_mode, use_ext_coefs)
Test the calibration.
class satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeMSGDataset
Bases: object
Tests for getting the dataset.
static _exp_data_array()

static _fake_data()

static _fake_header()

file_handler()
Create a file handler for testing.
test_get_dataset(file_handler)
Test getting the dataset.
test_get_dataset_with_raw_metadata(file_handler)
Test provision of raw metadata.

542 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_repeat_cycle_duration(file_handler)
Test repeat cycle handling for FD or ReduscedScan.
test_satpos_no_valid_orbit_polynomial(file_handler)
Test satellite position if there is no valid orbit polynomial.
test_time(file_handler)
Test start/end nominal/observation time handling.
class satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeMSGFileHandler(methodName='runTest')
Bases: TestCase
Test the NativeMSGFileHandler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_get_available_channels()
Test the derivation of the available channel list.
class satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeMSGFilenames
Bases: object
Test identification of Native format filenames.
reader()
Return reader for SEVIRI Native format.
test_file_pattern(reader)
Test file pattern matching.
class satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeMSGPadder(methodName='runTest')
Bases: TestCase
Test Padder of the native l1b seviri reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

static prepare_padder(test_dict)
Initialize Padder and pad test data.
test_padder_fes_hrv()
Test padder for FES HRV data.
test_padder_rss_roi()
Test padder for RSS and ROI data (applies to both VISIR and HRV).

2.15. satpy 543


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_seviri_l1b_native.amend_seviri_native_null_header(hdr_null_numpy)
Amend the given null header so that the seviri_l1b_native reader can properly parse it.
This is achieved by setting values for the bare minimum number of header fields so that the reader can make
sense of the given header. This function relies on a number of auxiliary functions all of which are enclosed in
the body of the present function.

á Note

The naming scheme of the auxiliary functions is as follows: _amend_<KEY1>__<KEY2>__..., where


<KEY{n}> corresponds to keys in the header when it is represented as a dictionary, i.e. when calling
recarray2dict() on the given header array.
For example, _amend_15_DATA_HEADER__SatelliteStatus__SatelliteDefinition__SatelliteId()
corresponds to an auxiliary function which manipulates the following entry:
hdr_null_numpy_as_dict["15_DATA_HEADER"]["SatelliteStatus"]["SatelliteDefinition"]["SatelliteId"]

satpy.tests.reader_tests.test_seviri_l1b_native.append_data_and_trailer_content_to_seviri_native_header(

Generate the data and trailer part (null content) of the file and appends them to the null header.
The data and trailer are also null and appending them to the header results in a complete seviri nat file.
satpy.tests.reader_tests.test_seviri_l1b_native.compress_seviri_native_file(tmp_seviri_nat_filename,
ses-
sion_tmp_path)
Compress the given seviri native file into a zip file.
satpy.tests.reader_tests.test_seviri_l1b_native.create_physical_seviri_native_file(seviri_nat_full_file_path)
Create a physical seviri native file on disk.
satpy.tests.reader_tests.test_seviri_l1b_native.create_test_header(earth_model, dataset_id,
is_full_disk, is_rapid_scan,
good_qual='OK')
Create test header for SEVIRI L1.5 product.
Header includes mandatory attributes for NativeMSGFileHandler.get_area_extent
satpy.tests.reader_tests.test_seviri_l1b_native.create_test_trailer(is_rapid_scan)
Create test trailer for SEVIRI L1.5 product.
Trailer includes mandatory attributes for NativeMSGFileHandler.get_area_extent
satpy.tests.reader_tests.test_seviri_l1b_native.generate_seviri_native_null_header()
Generate the header of the seviri native format which is filled with zeros, hence the term null!
satpy.tests.reader_tests.test_seviri_l1b_native.prepare_area_definitions(test_dict)
Prepare calculated and expected area definitions for equal checking.
satpy.tests.reader_tests.test_seviri_l1b_native.prepare_is_roi(test_dict)
Prepare calculated and expected check for region of interest data for equal checking.
satpy.tests.reader_tests.test_seviri_l1b_native.scene_from_physical_seviri_nat_file(filename)
Generate a Scene object from the given seviri native file.
satpy.tests.reader_tests.test_seviri_l1b_native.session_tmp_path(tmp_path_factory)
Generate a single temp path to use for the entire session.

544 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_seviri_l1b_native.test_area_definitions(actual, expected)
Test area definitions with only one area.
satpy.tests.reader_tests.test_seviri_l1b_native.test_has_archive_header(starts_with, expected)
Test if the file includes an ASCII archive header.
satpy.tests.reader_tests.test_seviri_l1b_native.test_header_type(file_content, exp_header_size)
Test identification of the file header type.
satpy.tests.reader_tests.test_seviri_l1b_native.test_header_warning()
Test warning is raised for NOK quality flag.
satpy.tests.reader_tests.test_seviri_l1b_native.test_is_roi(actual, expected)
Test if given area is of area-of-interest.
satpy.tests.reader_tests.test_seviri_l1b_native.test_read_header()
Test that reading header returns the header correctly converted to a dictionary.
satpy.tests.reader_tests.test_seviri_l1b_native.test_read_physical_seviri_nat_file(full_path)
Test that the physical seviri native file can be read successfully, in case of both a plain and a zip file.

á Note

The purpose of this function is not to fully test the properties of the scene. It only provides a test for reading
a physical file from disk.

satpy.tests.reader_tests.test_seviri_l1b_native.test_stacked_area_definitions(actual,
expected)
Test area definitions with stacked areas.
satpy.tests.reader_tests.test_seviri_l1b_native.tmp_seviri_nat_filename(session_tmp_path)
Create a fully-qualified filename for a seviri native format file.

satpy.tests.reader_tests.test_seviri_l1b_nc module

The HRIT msg reader tests package.


class satpy.tests.reader_tests.test_seviri_l1b_nc.TestNCSEVIRIFileHandler
Bases: TestFileHandlerCalibrationBase
Unit tests for SEVIRI netCDF reader.
_get_fake_dataset(counts, h5netcdf )
Create a fake dataset.
Parameters
• counts (xr.DataArray) – Array with data.
• h5netcdf (boolean) – If True an array attribute will be created which is common for the
h5netcdf backend in xarray for scalar values.
file_handler(counts, h5netcdf )
Create a mocked file handler.
h5netcdf()
Fixture for xr backend choice.

2.15. satpy 545


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_calibrate(file_handler, channel, calibration, use_ext_coefs)


Test the calibration.
test_get_dataset(file_handler, channel, calibration, mask_bad_quality_scan_lines)
Test getting the dataset.
test_h5netcdf_pecularity(file_handler, h5netcdf )
Test conversion of attributes when xarray is used with h5netcdf backend.
test_mask_bad_quality(file_handler)
Test masking of bad quality scan lines.
test_repeat_cycle_duration(file_handler)
Test repeat cycle handling for FD or ReduscedScan.
test_satpos_no_valid_orbit_polynomial(file_handler)
Test satellite position if there is no valid orbit polynomial.
test_time(file_handler)
Test start/end nominal/observation time handling.
satpy.tests.reader_tests.test_seviri_l1b_nc.to_cds_time(time)
Convert datetime to (days, msecs) since 1958-01-01.

satpy.tests.reader_tests.test_sgli_l1b module

Tests for the SGLI L1B backend.


satpy.tests.reader_tests.test_sgli_l1b.add_downsampled_geometry_data(h5f )
Add downsampled geometry data to an h5py file instance.
satpy.tests.reader_tests.test_sgli_l1b.sgli_ir_file(tmp_path_factory)
Create a stub IR file.
satpy.tests.reader_tests.test_sgli_l1b.sgli_pol_file(tmp_path_factory)
Create a POL stub file.
satpy.tests.reader_tests.test_sgli_l1b.sgli_vn_file(tmp_path_factory)
Create a stub VN file.
satpy.tests.reader_tests.test_sgli_l1b.test_channel_is_chunked(sgli_vn_file)
Test that the channel data is chunked.
satpy.tests.reader_tests.test_sgli_l1b.test_channel_is_masked(sgli_vn_file)
Test that channels are masked for no-data.
satpy.tests.reader_tests.test_sgli_l1b.test_end_time(sgli_vn_file)
Test that the end time is extracted.
satpy.tests.reader_tests.test_sgli_l1b.test_get_dataset_counts(sgli_vn_file)
Test that counts can be extracted from a file.
satpy.tests.reader_tests.test_sgli_l1b.test_get_dataset_for_unknown_channel(sgli_vn_file)
Test that counts can be extracted from a file.
satpy.tests.reader_tests.test_sgli_l1b.test_get_polarized_dataset_reflectance(sgli_pol_file,
polarization)
Test getting polarized reflectances.

546 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_sgli_l1b.test_get_polarized_longitudes(sgli_pol_file)
Test getting polarized reflectances.
satpy.tests.reader_tests.test_sgli_l1b.test_get_sw_dataset_reflectances(sgli_ir_file)
Test getting SW dataset reflectances.
satpy.tests.reader_tests.test_sgli_l1b.test_get_ti_dataset_bt(sgli_ir_file)
Test getting brightness temperatures for IR channels.
satpy.tests.reader_tests.test_sgli_l1b.test_get_ti_dataset_radiance(sgli_ir_file)
Test getting thermal IR radiances.
satpy.tests.reader_tests.test_sgli_l1b.test_get_ti_lon_lats(sgli_ir_file)
Test getting the lons and lats for IR channels.
satpy.tests.reader_tests.test_sgli_l1b.test_get_vn_dataset_radiance(sgli_vn_file)
Test that datasets can be calibrated to radiance.
satpy.tests.reader_tests.test_sgli_l1b.test_get_vn_dataset_reflectances(sgli_vn_file)
Test that the vn datasets can be calibrated to reflectances.
satpy.tests.reader_tests.test_sgli_l1b.test_loading_lon_lat(sgli_vn_file)
Test that loading lons and lats works.
satpy.tests.reader_tests.test_sgli_l1b.test_loading_sensor_angles(sgli_vn_file)
Test loading the satellite angles.
satpy.tests.reader_tests.test_sgli_l1b.test_loading_solar_angles(sgli_vn_file)
Test loading sun angles.
satpy.tests.reader_tests.test_sgli_l1b.test_missing_values_are_masked(sgli_vn_file)
Check that missing values are masked.
satpy.tests.reader_tests.test_sgli_l1b.test_start_time(sgli_vn_file)
Test that the start time is extracted.

satpy.tests.reader_tests.test_slstr_l1b module

Module for testing the satpy.readers.nc_slstr module.


class satpy.tests.reader_tests.test_slstr_l1b.TestSLSTRCalibration(methodName='runTest')
Bases: TestSLSTRL1B
Test the implementation of the calibration factors.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_cal_rad()
Test the radiance to reflectance converter.
test_radiance_calibration(xr_)
Test radiance calibration steps.

2.15. satpy 547


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_reflectance_calibration(da_, xr_)
Test reflectance calibration.
class satpy.tests.reader_tests.test_slstr_l1b.TestSLSTRL1B(methodName='runTest')
Bases: TestCase
Common setup for SLSTR_L1B tests.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp(xr_)
Create a fake dataset using the given radiance data.
class satpy.tests.reader_tests.test_slstr_l1b.TestSLSTRReader(methodName='runTest')
Bases: TestSLSTRL1B
Test various nc_slstr file handlers.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
class FakeSpl
Bases: object
Fake return function for SPL interpolation.
static ev(foo_x, foo_y)
Fake function to return interpolated data.
_classSetupFailed = False

_class_cleanups = []

test_instantiate(bvs_, xr_)
Test initialization of file handlers.
satpy.tests.reader_tests.test_slstr_l1b.make_dataid(**items)
Make a data id.

satpy.tests.reader_tests.test_smos_l2_wind module

Module for testing the satpy.readers.smos_l2_wind module.


class satpy.tests.reader_tests.test_smos_l2_wind.FakeNetCDF4FileHandlerSMOSL2WIND(filename,
file-
name_info,
file-
type_info,
auto_maskandscale=False,
xar-
ray_kwargs=None,
cache_var_size=0,
cache_handle=False,
ex-
tra_file_content=None)

548 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Bases: FakeNetCDF4FileHandler
Swap-in NetCDF4 File Handler.
Get fake file content from ‘get_test_content’.
get_test_content(filename, filename_info, filetype_info)
Mimic reader input file content.
class satpy.tests.reader_tests.test_smos_l2_wind.TestSMOSL2WINDReader(methodName='runTest')
Bases: TestCase
Test SMOS L2 WINDReader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap NetCDF4 file handler with our own fake handler.
tearDown()
Stop wrapping the NetCDF4 file handler.
test_adjust_lon()
Load adjust longitude dataset.
test_init()
Test basic initialization of this reader.
test_load_lat()
Load lat dataset.
test_load_lon()
Load lon dataset.
test_load_wind_speed()
Load wind_speed dataset.
test_roll_dataset()
Load roll of dataset along the lon coordinate.
yaml_file = 'smos_l2_wind.yaml'

satpy.tests.reader_tests.test_tropomi_l2 module

Module for testing the satpy.readers.tropomi_l2 module.

2.15. satpy 549


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.reader_tests.test_tropomi_l2.FakeNetCDF4FileHandlerTL2(filename,
filename_info,
filetype_info,
auto_maskandscale=False,
xar-
ray_kwargs=None,
cache_var_size=0,
cache_handle=False,
ex-
tra_file_content=None)
Bases: FakeNetCDF4FileHandler
Swap-in NetCDF4 File Handler.
Get fake file content from ‘get_test_content’.
_convert_data_content_to_dataarrays(file_content)
Convert data content to xarray’s dataarrays.
get_test_content(filename, filename_info, filetype_info)
Mimic reader input file content.
class satpy.tests.reader_tests.test_tropomi_l2.TestTROPOMIL2Reader(methodName='runTest')
Bases: TestCase
Test TROPOMI L2 Reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap NetCDF4 file handler with our own fake handler.
tearDown()
Stop wrapping the NetCDF4 file handler.
test_init()
Test basic initialization of this reader.
test_load_bounds()
Load bounds dataset.
test_load_no2()
Load NO2 dataset.
test_load_so2()
Load SO2 dataset.
yaml_file = 'tropomi_l2.yaml'

satpy.tests.reader_tests.test_utils module

Testing of helper functions.

550 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.reader_tests.test_utils.TestCalibrationCoefficientPicker
Bases: object
Unit tests for calibration coefficient selection.
fixture_coefs()
Get fake coefficients.
test_fallback_to_nominal(coefs, wishlist, caplog)
Test falling back to nominal coefficients.
test_get_coefs(coefs, wishlist, expected)
Test getting calibration coefficients.
test_invalid_wishlist_type()
Test handling of invalid wishlist type.
test_missing_coefs(coefs, wishlist)
Test that an exception is raised when coefficients are missing.
test_no_default_coefs()
Test initialization without default coefficients.
test_no_fallback()
Test initialization without fallback coefficients.
test_unknown_mode(coefs, wishlist)
Test handling of unknown calibration mode.
class satpy.tests.reader_tests.test_utils.TestHelpers(methodName='runTest')
Bases: TestCase
Test the area helpers.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_apply_rad_correction()
Test radiance correction technique using user-supplied coefs.
test_generic_open_BZ2File(bz2_mock)
Test the generic_open method with bz2 filename input.
test_generic_open_FSFile_MemoryFileSystem()
Test the generic_open method with FSFile in MemoryFileSystem.
test_generic_open_filename(open_mock)
Test the generic_open method with filename (str).
test_geostationary_mask()
Test geostationary mask.
test_get_earth_radius()
Test earth radius computation.

2.15. satpy 551


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_get_geostationary_angle_extent()
Get max geostationary angles.
test_get_geostationary_bbox()
Get the geostationary bbox.
test_get_user_calibration_factors()
Test the retrieval of user-supplied calibration factors.
test_lonlat_from_geos()
Get lonlats from geos.
test_np2str()
Test the np2str function.
test_pro_reading_gets_unzipped_file(fake_unzip_file, fake_remove)
Test the bz2 file unzipping context manager.
test_reduce_mda()
Test metadata size reduction.
test_sub_area(adef )
Sub area slicing.
test_unzip_FSFile(bz2_mock)
Test the FSFile bz2 file unzipping techniques.
test_unzip_file(mock_popen, mock_bz2)
Test the bz2 file unzipping techniques.
class satpy.tests.reader_tests.test_utils.TestSunEarthDistanceCorrection
Bases: object
Tests for applying Sun-Earth distance correction to reflectance.
setup_method()
Create input / output arrays for the tests.
test_apply_sunearth_corr()
Test the correction of reflectances with sun-earth distance.
test_get_utc_time()
Test the retrieval of scene time from a dataset.
test_remove_sunearth_corr()
Test the removal of the sun-earth distance correction.
satpy.tests.reader_tests.test_utils.test_generic_open_binary(tmp_path, data, filename, mode)
Test the bz2 file unzipping context manager using dummy binary data.

satpy.tests.reader_tests.test_vaisala_gld360 module

Unittesting the Vaisala GLD360 reader.


class satpy.tests.reader_tests.test_vaisala_gld360.TestVaisalaGLD360TextFileHandler
Bases: object
Test the VaisalaGLD360TextFileHandler.

552 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_vaisala_gld360()
Test basic functionality for vaisala file handler.

satpy.tests.reader_tests.test_vii_base_nc module

The vii_base_nc reader tests package.


class satpy.tests.reader_tests.test_vii_base_nc.TestViiNCBaseFileHandler(methodName='runTest')
Bases: TestCase
Test the ViiNCBaseFileHandler reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp(pgi_)
Set up the test.
tearDown()
Remove the previously created test file.
test_dataset(po_, pi_, pc_)
Test the execution of the get_dataset function.
test_file_reading()
Test the file product reading.
test_functions(tpgi_, tpi_)
Test the functions.
test_standardize_dims()
Test the standardize dims function.

satpy.tests.reader_tests.test_vii_l1b_nc module

The vii_l1b_nc reader tests package.


This version tests the readers for VII test data V2 as per PFS V4A.
class satpy.tests.reader_tests.test_vii_l1b_nc.TestViiL1bNCFileHandler(methodName='runTest')
Bases: TestCase
Test the ViiL1bNCFileHandler reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the test.
tearDown()
Remove the previously created test file.

2.15. satpy 553


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_calibration_functions()
Test the calibration functions.
test_functions()
Test the functions.

satpy.tests.reader_tests.test_vii_l2_nc module

The vii_2_nc reader tests package.


class satpy.tests.reader_tests.test_vii_l2_nc.TestViiL2NCFileHandler(methodName='runTest')
Bases: TestCase
Test the ViiL2NCFileHandler reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the test.
tearDown()
Remove the previously created test file.
test_functions()
Test the functions.

satpy.tests.reader_tests.test_vii_utils module

The vii_utils reader tests package.


class satpy.tests.reader_tests.test_vii_utils.TestViiUtils(methodName='runTest')
Bases: TestCase
Test the vii_utils module.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_constants()
Test the constant values.

satpy.tests.reader_tests.test_vii_wv_nc module

The vii_l2_nc reader tests package for VII/METimage water vapour products.
class satpy.tests.reader_tests.test_vii_wv_nc.TestViiL2NCFileHandler(methodName='runTest')
Bases: TestCase
Test the ViiL2NCFileHandler reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.

554 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the test.
tearDown()
Remove the previously created test file.
test_functions()
Test the functions.

satpy.tests.reader_tests.test_viirs_atms_utils module

Test common VIIRS/ATMS SDR reader functions.


satpy.tests.reader_tests.test_viirs_atms_utils.test_get_file_units(caplog)
Test get the file-units from the dataset info.
satpy.tests.reader_tests.test_viirs_atms_utils.test_get_scale_factors_for_units_reflectances(caplog)
Test get scale factors for units, when variable is supposed to be a reflectance.
satpy.tests.reader_tests.test_viirs_atms_utils.test_get_scale_factors_for_units_tbs(caplog)
Test get scale factors for units, when variable is supposed to be a brightness temperature.
satpy.tests.reader_tests.test_viirs_atms_utils.test_get_scale_factors_for_units_unsupported_units()
Test get scale factors for units, when units are not supported.

satpy.tests.reader_tests.test_viirs_compact module

Module for testing the satpy.readers.viirs_compact module.


class satpy.tests.reader_tests.test_viirs_compact.TestCompact
Bases: object
Test class for reading compact viirs format.
_dataset_iterator()

_setup_method(fake_dnb_file)
Create a fake file from scratch.
teardown_method()
Destroy.
test_distributed()
Check that distributed computations work.
test_get_dataset()
Retrieve datasets from a DNB file.
satpy.tests.reader_tests.test_viirs_compact.fake_dnb()
Create fake DNB content.
satpy.tests.reader_tests.test_viirs_compact.fake_dnb_file(fake_dnb, tmp_path)
Create an hdf5 file in viirs_compact format with DNB data in it.

2.15. satpy 555


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_viirs_edr module

Module for testing the satpy.readers.viirs_l2_jrr module.


Note: This is adapted from the test_slstr_l2.py code.
class satpy.tests.reader_tests.test_viirs_edr.TestVIIRSJRRReader
Bases: object
Test the VIIRS JRR L2 reader.
test_availability_veg_idx(data_file, exp_available)
Test that vegetation indexes aren’t available when they aren’t present.
test_get_aod_filtered(aod_file, aod_qc_filter, exp_masked_pixel)
Test that the AOD product can be loaded and filtered.
test_get_dataset_generic(var_names, data_file)
Test datasets from cloud height files.
test_get_dataset_surf_refl(data_files)
Test retrieval of datasets.
test_get_dataset_surf_refl_with_veg_idx(data_files, filter_veg)
Test retrieval of vegetation indices from surface reflectance files.
test_get_platformname(surface_reflectance_file, filename_platform, exp_shortname)
Test finding start and end times of granules.
satpy.tests.reader_tests.test_viirs_edr._array_checks(data_arr: xr.DataArray, dtype: npt.Dtype =
<class 'numpy.float32'>, multiple_files: bool
= False) → None

satpy.tests.reader_tests.test_viirs_edr._check_continuous_data_arr(data_arr: DataArray) →
None

satpy.tests.reader_tests.test_viirs_edr._check_surf_refl_data_arr(data_arr: xr.DataArray,
dtype: npt.DType = <class
'numpy.float32'>,
multiple_files: bool = False)
→ None

satpy.tests.reader_tests.test_viirs_edr._check_surf_refl_qf_data_arr(data_arr: DataArray,
multiple_files: bool) →
None

satpy.tests.reader_tests.test_viirs_edr._check_vi_data_arr(data_arr: DataArray, is_filtered: bool,


multiple_files: bool) → None

satpy.tests.reader_tests.test_viirs_edr._create_continuous_variables(var_names: Iterable[str],
data_attrs: None | dict =
None) → dict[str,
DataArray]

satpy.tests.reader_tests.test_viirs_edr._create_fake_dataset(vars_dict: dict[str, DataArray]) →


Dataset

556 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_viirs_edr._create_fake_file(tmp_path_factory: TempPathFactory,
filename: str, data_arrs: dict[str,
DataArray]) → Path

satpy.tests.reader_tests.test_viirs_edr._create_lst_variables() → dict[str, DataArray]

satpy.tests.reader_tests.test_viirs_edr._create_surf_refl_variables() → dict[str, DataArray]

satpy.tests.reader_tests.test_viirs_edr._create_surface_reflectance_file(tmp_path_factory:
TempPathFactory,
start_time: datetime,
include_veg_indices:
bool = False) →
Path

satpy.tests.reader_tests.test_viirs_edr._create_veg_index_variables() → dict[str, DataArray]

satpy.tests.reader_tests.test_viirs_edr._is_mband_res(data_arr: DataArray) → bool

satpy.tests.reader_tests.test_viirs_edr._shared_metadata_checks(data_arr: DataArray) → None

satpy.tests.reader_tests.test_viirs_edr.aod_file(tmp_path_factory: TempPathFactory) → Path


Generate fake AOD VIIRs EDR file.
satpy.tests.reader_tests.test_viirs_edr.cloud_height_file(tmp_path_factory: TempPathFactory) →
Path
Generate fake CloudHeight VIIRS EDR file.
satpy.tests.reader_tests.test_viirs_edr.lst_file(tmp_path_factory: TempPathFactory) → Path
Generate fake VLST EDR file.
satpy.tests.reader_tests.test_viirs_edr.multiple_surface_reflectance_files(surface_reflectance_file,
sur-
face_reflectance_file2)
→ list[Path]
Get two multiple surface reflectance files.
satpy.tests.reader_tests.test_viirs_edr.multiple_surface_reflectance_files_with_veg_indices(surface_reflect
sur-
face_reflectanc

list[Path]
Get two multiple surface reflectance files with vegetation indexes included.
satpy.tests.reader_tests.test_viirs_edr.surface_reflectance_file(tmp_path_factory:
TempPathFactory) → Path
Generate fake surface reflectance EDR file.
satpy.tests.reader_tests.test_viirs_edr.surface_reflectance_file2(tmp_path_factory:
TempPathFactory) → Path
Generate fake surface reflectance EDR file.
satpy.tests.reader_tests.test_viirs_edr.surface_reflectance_with_veg_indices_file(tmp_path_factory:
Temp-
PathFac-
tory) →
Path

2.15. satpy 557


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Generate fake surface reflectance EDR file with vegetation indexes included.
satpy.tests.reader_tests.test_viirs_edr.surface_reflectance_with_veg_indices_file2(tmp_path_factory:
Temp-
Path-
Fac-
tory) →
Path
Generate fake surface reflectance EDR file with vegetation indexes included.
satpy.tests.reader_tests.test_viirs_edr.test_available_datasets(aod_file)
Test that available datasets doesn’t claim non-filetype datasets.
For example, if a YAML-configured dataset’s file type is not loaded then the available status is None and should
remain None. This means no file type knows what to do with this dataset. If it is False then that means that a file
type knows of the dataset, but that the variable is not available in the file. In the below test this isn’t the case so
the YAML-configured dataset should be provided once and have a None availability.

satpy.tests.reader_tests.test_viirs_edr_active_fires module

VIIRS Active Fires Tests.


This module implements tests for VIIRS Active Fires NetCDF and ASCII file readers.
class satpy.tests.reader_tests.test_viirs_edr_active_fires.FakeImgFiresNetCDF4FileHandler(filename,
file-
name_info,
file-
type_info,
auto_maskandsca
xar-
ray_kwargs=Non
cache_var_size=0
cache_handle=Fa
ex-
tra_file_content=
Bases: FakeNetCDF4FileHandler
Swap in CDF4 file handler.
Get fake file content from ‘get_test_content’.
get_test_content(filename, filename_info, filename_type)
Mimic reader input file content.
class satpy.tests.reader_tests.test_viirs_edr_active_fires.FakeImgFiresTextFileHandler(filename,
file-
name_info,
file-
type_info,
**kwargs)
Bases: BaseFileHandler
Fake file handler for text files at image resolution.
Get fake file content from ‘get_test_content’.

558 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_test_content()
Create fake test file content.
class satpy.tests.reader_tests.test_viirs_edr_active_fires.FakeModFiresNetCDF4FileHandler(filename,
file-
name_info,
file-
type_info,
auto_maskandsca
xar-
ray_kwargs=Non
cache_var_size=0
cache_handle=Fa
ex-
tra_file_content=
Bases: FakeNetCDF4FileHandler
Swap in CDF4 file handler.
Get fake file content from ‘get_test_content’.
get_test_content(filename, filename_info, filename_type)
Mimic reader input file content.
class satpy.tests.reader_tests.test_viirs_edr_active_fires.FakeModFiresTextFileHandler(filename,
file-
name_info,
file-
type_info,
**kwargs)
Bases: BaseFileHandler
Fake file handler for text files at moderate resolution.
Get fake file content from ‘get_test_content’.
get_test_content()
Create fake test file content.
class satpy.tests.reader_tests.test_viirs_edr_active_fires.TestImgVIIRSActiveFiresNetCDF4(methodName='ru
Bases: TestCase
Test VIIRS Fires Reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap CDF4 file handler with own fake file handler.
tearDown()
Stop wrapping the CDF4 file handler.
test_init()
Test basic init with no extra parameters.

2.15. satpy 559


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_load_dataset()
Test loading all datasets.
yaml_file = 'viirs_edr_active_fires.yaml'

class satpy.tests.reader_tests.test_viirs_edr_active_fires.TestImgVIIRSActiveFiresText(methodName='runTes
Bases: TestCase
Test VIIRS Fires Reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap file handler with own fake file handler.
tearDown()
Stop wrapping the text file handler.
test_init(mock_obj)
Test basic init with no extra parameters.
test_load_dataset(mock_obj)
Test loading all datasets.
yaml_file = 'viirs_edr_active_fires.yaml'

class satpy.tests.reader_tests.test_viirs_edr_active_fires.TestModVIIRSActiveFiresNetCDF4(methodName='ru
Bases: TestCase
Test VIIRS Fires Reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap CDF4 file handler with own fake file handler.
tearDown()
Stop wrapping the CDF4 file handler.
test_init()
Test basic init with no extra parameters.
test_load_dataset()
Test loading all datasets.
yaml_file = 'viirs_edr_active_fires.yaml'

560 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.reader_tests.test_viirs_edr_active_fires.TestModVIIRSActiveFiresText(methodName='runTes
Bases: TestCase
Test VIIRS Fires Reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap file handler with own fake file handler.
tearDown()
Stop wrapping the text file handler.
test_init(mock_obj)
Test basic init with no extra parameters.
test_load_dataset(csv_mock)
Test loading all datasets.
yaml_file = 'viirs_edr_active_fires.yaml'

satpy.tests.reader_tests.test_viirs_edr_flood module

Tests for the VIIRS EDR Flood reader.


class satpy.tests.reader_tests.test_viirs_edr_flood.FakeHDF4FileHandler2(filename,
filename_info,
filetype_info,
**kwargs)
Bases: FakeHDF4FileHandler
Swap in HDF4 file handler.
Get fake file content from ‘get_test_content’.
get_test_content(filename, filename_info, filename_type)
Mimic reader input file content.
class satpy.tests.reader_tests.test_viirs_edr_flood.TestVIIRSEDRFloodReader(methodName='runTest')
Bases: TestCase
Test VIIRS EDR Flood Reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap HDF4 file handler with own fake file handler.
tearDown()
Stop wrapping the HDF4 file handler.

2.15. satpy 561


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_init()
Test basic init with no extra parameters.
test_load_dataset()
Test loading all datasets from a full swath file.
test_load_dataset_aoi()
Test loading all datasets from an area of interest file.
yaml_file = 'viirs_edr_flood.yaml'

satpy.tests.reader_tests.test_viirs_l1b module

Module for testing the satpy.readers.viirs_l1b module.


class satpy.tests.reader_tests.test_viirs_l1b.FakeNetCDF4FileHandlerDay(filename,
filename_info,
filetype_info,
auto_maskandscale=False,
xarray_kwargs=None,
cache_var_size=0,
cache_handle=False,
ex-
tra_file_content=None)
Bases: FakeNetCDF4FileHandler
Swap-in NetCDF4 File Handler.
Get fake file content from ‘get_test_content’.
I_BANDS = ['I01', 'I02', 'I03', 'I04', 'I05']

I_BT_BANDS = ['I04', 'I05']

I_REFL_BANDS = ['I01', 'I02', 'I03']

M_BANDS = ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10',
'M11', 'M12', 'M13', 'M14', 'M15', 'M16']

M_BT_BANDS = ['M12', 'M13', 'M14', 'M15', 'M16']

M_REFL_BANDS = ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09',
'M10', 'M11']

_fill_contents_with_default_data(file_content, file_type)
Fill file contents with default data.
static _set_dataset_specific_metadata(file_content)
Set dataset-specific metadata.
get_test_content(filename, filename_info, filetype_info)
Mimic reader input file content.

562 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.reader_tests.test_viirs_l1b.FakeNetCDF4FileHandlerNight(filename,
filename_info,
filetype_info,
auto_maskandscale=False,
xar-
ray_kwargs=None,
cache_var_size=0,
cache_handle=False,
ex-
tra_file_content=None)
Bases: FakeNetCDF4FileHandlerDay
Same as the day file handler, but some day-only bands are missing.
This matches what happens in real world files where reflectance bands are removed in night data to save space.
Get fake file content from ‘get_test_content’.
I_BANDS = ['I04', 'I05']

M_BANDS = ['M12', 'M13', 'M14', 'M15', 'M16']

class satpy.tests.reader_tests.test_viirs_l1b.TestVIIRSL1BReaderDay
Bases: object
Test VIIRS L1B Reader.
fake_cls
alias of FakeNetCDF4FileHandlerDay
has_reflectance_bands = True

setup_method()
Wrap NetCDF4 file handler with our own fake handler.
teardown_method()
Stop wrapping the NetCDF4 file handler.
test_available_datasets_m_bands()
Test available datasets for M band files.
test_init()
Test basic init with no extra parameters.
test_load_dnb_angles()
Test loading all DNB angle datasets.
test_load_dnb_radiance()
Test loading the main DNB dataset.
test_load_every_m_band_bt()
Test loading all M band brightness temperatures.
test_load_every_m_band_rad()
Test loading all M bands as radiances.
test_load_every_m_band_refl()
Test loading all M band reflectances.

2.15. satpy 563


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_load_i_band_angles()
Test loading all M bands as radiances.
yaml_file = 'viirs_l1b.yaml'

class satpy.tests.reader_tests.test_viirs_l1b.TestVIIRSL1BReaderDayNight
Bases: TestVIIRSL1BReaderDay
Test VIIRS L1b with night data.
Night data files don’t have reflectance bands in them.
fake_cls
alias of FakeNetCDF4FileHandlerNight
has_reflectance_bands = False

satpy.tests.reader_tests.test_viirs_l2 module

Module for testing the satpy.readers.viirs_l2 module.


class satpy.tests.reader_tests.test_viirs_l2.FakeNetCDF4FileHandlerVIIRSL2(filename,
filename_info,
filetype_info,
auto_maskandscale=False,
xar-
ray_kwargs=None,
cache_var_size=0,
cache_handle=False,
ex-
tra_file_content=None)
Bases: FakeNetCDF4FileHandler
Swap-in NetCDF4 File Handler.
Get fake file content from ‘get_test_content’.
_fill_contents_with_default_data(file_content, file_type)
Fill file contents with default data.
get_test_content(filename, filename_info, filetype_info)
Mimic reader input file content.
class satpy.tests.reader_tests.test_viirs_l2.TestVIIRSL2FileHandler
Bases: object
Test VIIRS_L2 Reader.
setup_method()
Wrap NetCDF4 file handler with our own fake handler.
teardown_method()
Stop wrapping the NetCDF4 file handler.
test_init(filename)
Test basic init with no extra parameters.
test_load_l2_files(filename, datasets)
Test L2 File Loading.

564 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

yaml_file = 'viirs_l2.yaml'

satpy.tests.reader_tests.test_viirs_sdr module

Module for testing the satpy.readers.viirs_sdr module.


class satpy.tests.reader_tests.test_viirs_sdr.FakeHDF5FileHandler2(filename, filename_info,
filetype_info,
include_factors=True)
Bases: FakeHDF5FileHandler
Swap-in HDF5 File Handler.
Create fake file handler.
static _add_basic_metadata_to_file_content(file_content, filename_info, num_grans)

_add_data_info_to_file_content(file_content, filename, data_var_prefix, num_grans)

static _add_geo_ref(file_content, filename)

static _add_geolocation_info_to_file_content(file_content, filename, data_var_prefix,


num_grans)

_add_granule_specific_info_to_file_content(file_content, dataset_group, num_granules,


num_scans_per_granule, gran_group_prefix)

static _convert_numpy_content_to_dataarray(final_content)

static _get_per_granule_lats()

static _get_per_granule_lons()

_num_scans_per_gran = [48]

_num_test_granules = 1

get_test_content(filename, filename_info, filetype_info)


Mimic reader input file content.
class satpy.tests.reader_tests.test_viirs_sdr.FakeHDF5FileHandlerAggr(filename, filename_info,
filetype_info,
include_factors=True)
Bases: FakeHDF5FileHandler2
Swap-in HDF5 File Handler with 4 VIIRS Granules per file.
Create fake file handler.
_num_scans_per_gran = [48, 48, 48, 48]

_num_test_granules = 4

class satpy.tests.reader_tests.test_viirs_sdr.FakeShortHDF5FileHandlerAggr(filename,
filename_info,
filetype_info, in-
clude_factors=True)

2.15. satpy 565


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Bases: FakeHDF5FileHandler2
Fake file that has less scans than usual in a couple granules.
Create fake file handler.
_num_scans_per_gran = [47, 48, 47]

_num_test_granules = 3

class satpy.tests.reader_tests.test_viirs_sdr.TestAggrVIIRSSDRReader(methodName='runTest')
Bases: TestCase
Test VIIRS SDR Reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap HDF5 file handler with our own fake handler.
tearDown()
Stop wrapping the HDF5 file handler.
test_bounding_box()
Test bounding box.
yaml_file = 'viirs_sdr.yaml'

class satpy.tests.reader_tests.test_viirs_sdr.TestShortAggrVIIRSSDRReader(methodName='runTest')
Bases: TestCase
Test VIIRS SDR Reader with a file that has truncated granules.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap HDF5 file handler with our own fake handler.
tearDown()
Stop wrapping the HDF5 file handler.
test_load_truncated_band()
Test loading a single truncated band.
yaml_file = 'viirs_sdr.yaml'

566 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader(methodName='runTest')
Bases: TestCase
Test VIIRS SDR Reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_assert_bt_properties(data_arr, num_scans=16, with_area=True)

_assert_dnb_radiance_properties(data_arr, with_area=True)

_assert_reflectance_properties(data_arr, num_scans=16, with_area=True)

_classSetupFailed = False

_class_cleanups = []

setUp()
Wrap HDF5 file handler with our own fake handler.
tearDown()
Stop wrapping the HDF5 file handler.
test_init()
Test basic init with no extra parameters.
test_init_end_time_beyond()
Test basic init with end_time before the provided files.
test_init_start_end_time()
Test basic init with end_time before the provided files.
test_init_start_time_beyond()
Test basic init with start_time after the provided files.
test_init_start_time_is_nodate()
Test basic init with start_time being set to the no-date 1/1-1958.
test_load_all_i_bts()
Load all I band brightness temperatures.
test_load_all_i_radiances()
Load all I band radiances.
test_load_all_i_reflectances_provided_geo()
Load all I band reflectances with geo files provided.
test_load_all_m_bts()
Load all M band brightness temperatures.
test_load_all_m_radiances()
Load all M band radiances.
test_load_all_m_reflectances_find_geo()
Load all M band reflectances with geo files not specified but existing.
test_load_all_m_reflectances_no_geo()
Load all M band reflectances with no geo files provided.

2.15. satpy 567


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_load_all_m_reflectances_provided_geo()
Load all M band reflectances with geo files provided.
test_load_all_m_reflectances_use_nontc()
Load all M band reflectances but use non-TC geolocation.
test_load_all_m_reflectances_use_nontc2()
Load all M band reflectances but use non-TC geolocation because TC isn’t available.
test_load_dnb()
Load DNB dataset.
test_load_dnb_no_factors()
Load DNB dataset with no provided scale factors.
test_load_dnb_sza_no_factors()
Load DNB solar zenith angle with no scaling factors.
The angles in VIIRS SDRs should never have scaling factors so we test it that way.
test_load_i_no_files()
Load I01 when only DNB files are provided.
yaml_file = 'viirs_sdr.yaml'

satpy.tests.reader_tests.test_viirs_sdr._touch_geo_file(prefix)

satpy.tests.reader_tests.test_viirs_sdr.touch_geo_files(*prefixes)
Create and then remove VIIRS SDR geolocation files.

satpy.tests.reader_tests.test_viirs_vgac_l1c_nc module

The viirs_vgac_l1b_nc reader tests package.


This version tests the readers for VIIIRS VGAC data preliminary version.
class satpy.tests.reader_tests.test_viirs_vgac_l1c_nc.TestVGACREader
Bases: object
Test the VGACFileHandler reader.
test_decode_time_variable()
Test decode time variable branch.
test_read_vgac(nc_filename)
Test reading reflectances and BT.
satpy.tests.reader_tests.test_viirs_vgac_l1c_nc.nc_filename(tmp_path)
Create an nc test data file and return its filename.

satpy.tests.reader_tests.test_virr_l1b module

Test for readers/virr_l1b.py.


class satpy.tests.reader_tests.test_virr_l1b.FakeHDF5FileHandler2(filename, filename_info,
filetype_info, **kwargs)
Bases: FakeHDF5FileHandler
Swap-in HDF5 File Handler.
Get fake file content from ‘get_test_content’.

568 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_make_file(platform_id, geolocation_prefix, l1b_prefix, ECWN, Emissive_units)

get_test_content(filename, filename_info, filetype_info)


Mimic reader input file content.
make_test_data(dims)
Create fake test data.
class satpy.tests.reader_tests.test_virr_l1b.TestVIRRL1BReader(methodName='runTest')
Bases: TestCase
Test VIRR L1B Reader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_band_helper(attributes, units, calibration, standard_name, file_type, band_index_size, resolution)

_classSetupFailed = False

_class_cleanups = []

_fy3_helper(platform_name, reader, Emissive_units)


Load channels and test accurate metadata.
setUp()
Wrap HDF5 file handler with our own fake handler.
tearDown()
Stop wrapping the HDF5 file handler.
test_fy3b_file()
Test that FY3B files are recognized.
test_fy3c_file()
Test that FY3C files are recognized.
yaml_file = 'virr_l1b.yaml'

satpy.tests.reader_tests.utils module

Utilities for reader tests.


satpy.tests.reader_tests.utils._is_jit_method(obj)

satpy.tests.reader_tests.utils.default_attr_processor(root, attr)
Do not change the attribute.
satpy.tests.reader_tests.utils.fill_h5(root, contents, attr_processor=<function
default_attr_processor>)
Fill hdf5 file with the given contents.
Parameters
• root – hdf5 file rott
• contents – Contents to be written into the file
• attr_processor – A method for modifying attributes before they are written to the file.
satpy.tests.reader_tests.utils.get_jit_methods(module)
Get all jit-compiled methods in a module.

2.15. satpy 569


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Module contents

The reader tests package.

satpy.tests.scene_tests package

Submodules

satpy.tests.scene_tests.test_conversions module

Unit tests for Scene conversion functionality.


class satpy.tests.scene_tests.test_conversions.TestSceneConversions
Bases: object
Test Scene conversion to geoviews, xarray, etc.
test_geoviews_basic_with_area()
Test converting a Scene to geoviews with an AreaDefinition.
test_geoviews_basic_with_swath()
Test converting a Scene to geoviews with a SwathDefinition.
test_hvplot_basic_with_area()
Test converting a Scene to hvplot with a AreaDefinition.
test_hvplot_basic_with_swath()
Test converting a Scene to hvplot with a SwathDefinition.
test_hvplot_rgb_with_area()
Test converting a Scene to hvplot with a AreaDefinition.
test_to_xarray_dataset_with_empty_scene()
Test converting empty Scene to xarray dataset.
class satpy.tests.scene_tests.test_conversions.TestSceneSerialization
Bases: object
Test the Scene serialization.
pytestmark = [Mark(name='usefixtures', args=('include_test_etc',), kwargs={})]

test_serialization_with_readers_and_data_arr()
Test that dask can serialize a Scene with readers.
class satpy.tests.scene_tests.test_conversions.TestToXarrayConversion
Bases: object
Test Scene.to_xarray() conversion.
multi_area_scn()
Define Scene with multiple area.
single_area_scn()
Define Scene with single area.
test_dataset_string_accepted(single_area_scn)
Test accept dataset string.

570 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_include_lonlats_false(single_area_scn)
Test exclude lonlats.
test_include_lonlats_true(single_area_scn)
Test include lonlats.
test_to_xarray_with_multiple_area_scene(multi_area_scn)
Test converting muiltple area Scene to xarray.
test_with_empty_scene()
Test converting empty Scene to xarray.
test_with_single_area_scene_type(single_area_scn)
Test converting single area Scene to xarray dataset.
test_wrong_dataset_key(single_area_scn)
Test raise error if unexisting dataset.

satpy.tests.scene_tests.test_data_access module

Unit tests for data access methods and properties of the Scene class.
class satpy.tests.scene_tests.test_data_access.TestComputePersist
Bases: object
Test methods that compute the internal data in some way.
pytestmark = [Mark(name='usefixtures', args=('include_test_etc',), kwargs={})]

test_chunk_pass_through()
Test pass through of xarray chunk.
test_compute_pass_through()
Test pass through of xarray compute.
test_persist_pass_through()
Test pass through of xarray persist.
class satpy.tests.scene_tests.test_data_access.TestDataAccessMethods
Bases: object
Test the scene class.
pytestmark = [Mark(name='usefixtures', args=('include_test_etc',), kwargs={})]

test_bad_setitem()
Test setting an item wrongly.
test_contains()
Test contains.
test_delitem()
Test deleting an item.
test_getitem()
Test __getitem__ with names only.
test_getitem_modifiers()
Test __getitem__ with names and modifiers.

2.15. satpy 571


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_getitem_slices()
Test __getitem__ with slices.
test_iter()
Test iteration over the scene.
test_iter_by_area_swath()
Test iterating by area on a swath.
test_sensor_names_added_datasets(include_reader, added_sensor, exp_sensors)
Test that Scene sensor_names handles contained sensors properly.
test_sensor_names_readers(reader, filenames, exp_sensors)
Test that Scene sensor_names handles different cases properly.
test_setitem()
Test setting an item.
class satpy.tests.scene_tests.test_data_access.TestFinestCoarsestArea
Bases: object
Test the Scene logic for finding the finest and coarsest area.
test_coarsest_finest_area_different_shape(coarse_area, fine_area)
Test ‘coarsest_area’ and ‘finest_area’ methods for upright areas.
test_coarsest_finest_area_same_shape(area_def , shifted_area)
Test that two areas with the same shape are consistently returned.
If two geometries (ex. two AreaDefinitions or two SwathDefinitions) have the same resolution (shape)
but different coordinates, which one has the finer resolution would ultimately be determined by the semi-
random ordering of the internal container of the Scene (a dict) if only pixel resolution was compared. This
test makes sure that it is always the same object returned.
satpy.tests.scene_tests.test_data_access._create_coarest_finest_data_array(shape, area_def ,
attrs=None)

satpy.tests.scene_tests.test_data_access._create_coarsest_finest_area_def(shape, extents)

satpy.tests.scene_tests.test_data_access._create_coarsest_finest_swath_def(shape, extents,
name_suffix)

satpy.tests.scene_tests.test_init module

Unit tests for Scene creation.


class satpy.tests.scene_tests.test_init.TestScene
Bases: object
Test the scene class.
pytestmark = [Mark(name='usefixtures', args=('include_test_etc',), kwargs={})]

test_create_multiple_reader_different_kwargs(include_test_etc)
Test passing different kwargs to different readers.
test_create_reader_instances_with_filenames()
Test creating a reader providing filenames.

572 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_create_reader_instances_with_reader()
Test createring a reader instance providing the reader name.
test_create_reader_instances_with_reader_kwargs()
Test creating a reader instance with reader kwargs.
test_init()
Test scene initialization.
test_init_alone()
Test simple initialization.
test_init_no_files()
Test that providing an empty list of filenames fails.
test_init_preserve_reader_kwargs()
Test that the initialization preserves the kwargs.
test_init_str_filename()
Test initializing with a single string as filenames.
test_init_with_empty_filenames()
Test initialization with empty filename list.
test_init_with_fsfile()
Test initialisation with FSFile objects.
test_start_end_times()
Test start and end times for a scene.
test_storage_options_from_reader_kwargs_no_options()
Test getting storage options from reader kwargs.
Case where there are no options given.
test_storage_options_from_reader_kwargs_per_reader()
Test getting storage options from reader kwargs.
Case where each reader have their own storage options.
test_storage_options_from_reader_kwargs_per_reader_and_global()
Test getting storage options from reader kwargs.
Case where each reader have their own storage options and there are global options to merge.
test_storage_options_from_reader_kwargs_single_dict(reader_kwargs)
Test getting storage options from reader kwargs.
Case where a single dict is given for all readers with some common storage options.
test_storage_options_from_reader_kwargs_single_dict_no_options()
Test getting storage options from reader kwargs for remote files.
Case where a single dict is given for all readers without storage options.

satpy.tests.scene_tests.test_load module

Unit tests for loading-related functionality in scene.py.

2.15. satpy 573


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.scene_tests.test_load.TestBadLoading
Bases: object
Test the Scene object’s .load method with bad inputs.
pytestmark = [Mark(name='usefixtures', args=('include_test_etc',), kwargs={})]

test_load_no_exist()
Test loading a dataset that doesn’t exist.
test_load_str()
Test passing a string to Scene.load.
class satpy.tests.scene_tests.test_load.TestLoadingComposites
Bases: object
Test the Scene object’s .load method for composites.
pytestmark = [Mark(name='usefixtures', args=('include_test_etc',), kwargs={})]

test_load_comp11_and_23()
Test loading two composites that depend on similar wavelengths.
test_load_comp15()
Test loading a composite whose prerequisites can’t be loaded.
Note that the prereq exists in the reader, but fails in loading.
test_load_comp17()
Test loading a composite that depends on a composite that won’t load.
test_load_comp18()
Test loading a composite that depends on an incompatible area modified dataset.
test_load_comp18_2()
Test loading a composite that depends on an incompatible area modified dataset.
Specifically a modified dataset where the modifier has optional dependencies.
test_load_comp19()
Test loading a composite that shares a dep with a dependency.
More importantly test that loading a dependency that depends on the same dependency as this composite
(a sibling dependency) and that sibling dependency includes a modifier. This test makes sure that the Node
in the dependency tree is the exact same node.
test_load_comp8()
Test loading a composite that has a non-existent prereq.
test_load_dataset_after_composite()
Test load composite followed by other datasets.
test_load_dataset_after_composite2()
Test load complex composite followed by other datasets.
test_load_modified()
Test loading a modified dataset.
test_load_modified_with_load_kwarg()
Test loading a modified dataset using the Scene.load keyword argument.

574 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_load_multiple_comps()
Test loading multiple composites.
test_load_multiple_comps_separate()
Test loading multiple composites, one at a time.
test_load_multiple_modified()
Test loading multiple modified datasets.
test_load_multiple_resolutions()
Test loading a dataset has multiple resolutions available with different resolutions.
test_load_same_subcomposite()
Test loading a composite and one of it’s subcomposites at the same time.
test_load_too_many()
Test dependency tree if too many reader keys match.
test_load_when_sensor_none_in_preloaded_dataarrays()
Test Scene loading when existing loaded arrays have sensor set to None.
Some readers or composites (ex. static images) don’t have a sensor and developers choose to set it to None.
This test makes sure this doesn’t break loading.
test_modified_with_wl_dep()
Test modifying a dataset with a modifier with modified deps.
More importantly test that loading the modifiers dependency at the same time as the original modified
dataset that the dependency tree nodes are unique and that DataIDs.
test_no_generate_comp10()
Test generating a composite after loading.
test_single_composite_loading(comp_name, exp_id_or_name)
Test that certain composites can be loaded individually.
class satpy.tests.scene_tests.test_load.TestLoadingReaderDatasets
Bases: object
Test the Scene object’s .load method for datasets coming from a reader.
pytestmark = [Mark(name='usefixtures', args=('include_test_etc',), kwargs={})]

test_load_ds1_load_twice()
Test loading one dataset with no loaded compositors.
test_load_ds1_no_comps()
Test loading one dataset with no loaded compositors.
test_load_ds1_unknown_modifier()
Test loading one dataset with no loaded compositors.
test_load_ds4_cal()
Test loading a dataset that has two calibration variations.
test_load_ds5_multiple_resolution_loads()
Test loading a dataset with multiple resolutions available as separate loads.

2.15. satpy 575


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_load_ds5_variations(input_filenames, load_kwargs, exp_resolution)


Test loading a dataset has multiple resolutions available.
test_load_ds6_wl()
Test loading a dataset by wavelength.
test_load_ds9_fail_load()
Test loading a dataset that will fail during load.
test_load_no_exist2()
Test loading a dataset that doesn’t exist then another load.
class satpy.tests.scene_tests.test_load.TestSceneAllAvailableDatasets
Bases: object
Test the Scene’s handling of various dependencies.
pytestmark = [Mark(name='usefixtures', args=('include_test_etc',), kwargs={})]

test_all_dataset_names_no_readers()
Test all dataset names with no reader.
test_all_datasets_multiple_reader()
Test all datasets for multiple readers.
test_all_datasets_no_readers()
Test all datasets with no reader.
test_all_datasets_one_reader()
Test all datasets for one reader.
test_available_composite_ids_missing_available()
Test available_composite_ids when a composites dep is missing.
test_available_composites_known_versus_all()
Test available_composite_ids when some datasets aren’t available.
test_available_comps_no_deps()
Test Scene available composites when composites don’t have a dependency.
test_available_dataset_names_no_readers()
Test the available dataset names without a reader.
test_available_dataset_no_readers()
Test the available datasets without a reader.
test_available_datasets_one_reader()
Test the available datasets for one reader.
test_available_when_sensor_none_in_preloaded_dataarrays()
Test Scene available composites when existing loaded arrays have sensor set to None.
Some readers or composites (ex. static images) don’t have a sensor and developers choose to set it to None.
This test makes sure this doesn’t break available composite IDs.
satpy.tests.scene_tests.test_load._data_array_none_sensor(name: str) → DataArray
Create a DataArray with sensor set to None.
satpy.tests.scene_tests.test_load._scene_with_data_array_none_sensor()

576 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.scene_tests.test_resampling module

Unit tests for resampling and crop-related functionality in scene.py.


class satpy.tests.scene_tests.test_resampling.TestSceneAggregation
Bases: object
Test the scene’s aggregate method.
_check_aggregation_results(expected_aggregated_shape, scene1, scene2, x_size, y_size)

static _create_test_data(x_size, y_size)

test_aggregate()
Test the aggregate method.
test_aggregate_with_boundary()
Test aggregation with boundary argument.
test_custom_aggregate()
Test the aggregate method with custom function.
class satpy.tests.scene_tests.test_resampling.TestSceneCrop
Bases: object
Test creating new Scenes by cropping an existing Scene.
test_crop()
Test the crop method.
test_crop_epsg_crs()
Test the crop method when source area uses an EPSG code.
test_crop_rgb()
Test the crop method on multi-dimensional data.
class satpy.tests.scene_tests.test_resampling.TestSceneResampling
Bases: object
Test resampling a Scene to another Scene object.
_fake_resample_dataset(dataset, dest_area, **kwargs)
Return copy of dataset pretending it was resampled.
_fake_resample_dataset_force_20x20(dataset, dest_area, **kwargs)
Return copy of dataset pretending it was resampled to (20, 20) shape.
pytestmark = [Mark(name='usefixtures', args=('include_test_etc',), kwargs={})]

test_comp_loading_after_resampling_existing_sensor()
Test requesting a composite after resampling.
test_comp_loading_after_resampling_new_sensor()
Test requesting a composite after resampling when the sensor composites weren’t loaded before.
test_comp_loading_multisensor_composite_created_user()
Test that multisensor composite can be created manually.
Test that if the user has created datasets “manually”, that multi-sensor composites provided can still be read.

2.15. satpy 577


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_comps_need_resampling_optional_mod_deps()
Test that a composite with complex dependencies.
This is specifically testing the case where a compositor depends on multiple resolution prerequisites which
themselves are composites. These sub-composites depend on data with a modifier that only has optional
dependencies. This is a very specific use case and is the simplest way to present the problem (so far).
The general issue is that the Scene loading creates the “ds13” dataset which already has one modifier on it.
The “comp27” composite requires resampling so its 4 prerequisites + the requested “ds13” (from the reader
which includes mod1 modifier) remain. If the DependencyTree is not copied properly in this situation then
the new Scene object will have the composite dependencies without resolution in its dep tree, but have
the DataIDs with the resolution in the dataset dictionary. This all results in the Scene trying to regenerate
composite dependencies that aren’t needed which fail.
test_no_generate_comp10(rs)
Test generating a composite after loading.
test_resample_ancillary()
Test that the Scene reducing data does not affect final output.
test_resample_multi_ancillary()
Test that multiple ancillary variables are retained after resampling.
This test corresponds to GH#2329
test_resample_reduce_data()
Test that the Scene reducing data does not affect final output.
test_resample_reduce_data_toggle(rs)
Test that the Scene can be reduced or not reduced during resampling.
test_resample_scene_copy(rs, datasets)
Test that the Scene is properly copied during resampling.
The Scene that is created as a copy of the original Scene should not be able to affect the original Scene
object.
test_resample_scene_preserves_requested_dependencies(rs)
Test that the Scene is properly copied during resampling.
The Scene that is created as a copy of the original Scene should not be able to affect the original Scene
object.

satpy.tests.scene_tests.test_saving module

Unit tests for saving-related functionality in scene.py.


class satpy.tests.scene_tests.test_saving.TestSceneSaving
Bases: object
Test the Scene’s saving method.
test_save_dataset_default(tmp_path)
Save a dataset using ‘save_dataset’.
test_save_datasets_bad_writer(tmp_path)
Save a dataset using ‘save_datasets’ and a bad writer.

578 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_save_datasets_by_ext(tmp_path)
Save a dataset using ‘save_datasets’ with ‘filename’.
test_save_datasets_default(tmp_path)
Save a dataset using ‘save_datasets’.
test_save_datasets_missing_wishlist(tmp_path)
Calling ‘save_datasets’ with no valid datasets.

Module contents

Tests of the Scene class.

satpy.tests.writer_tests package

Submodules

satpy.tests.writer_tests.test_awips_tiled module

Tests for the AWIPS Tiled writer.


class satpy.tests.writer_tests.test_awips_tiled.TestAWIPSTiledWriter
Bases: object
Test basic functionality of AWIPS Tiled writer.
static _get_glm_glob_filename(extra_kwargs)

test_basic_lettered_tiles(tmp_path)
Test creating a lettered grid.
test_basic_lettered_tiles_diff_projection(tmp_path)
Test creating a lettered grid from data with differing projection..
test_basic_numbered_1_tile(extra_attrs, expected_filename, use_save_dataset, caplog, tmp_path)
Test creating a single numbered tile.
test_basic_numbered_tiles(tile_count, tile_size, tmp_path)
Test creating a multiple numbered tiles.
test_basic_numbered_tiles_rgb(tmp_path)
Test creating a multiple numbered tiles with RGB.
test_init(tmp_path)
Test basic init method of writer.
test_lettered_tiles_bad_filename(tmp_path)
Test creating a lettered grid with a bad filename.
test_lettered_tiles_no_fit(tmp_path)
Test creating a lettered grid with no data overlapping the grid.
test_lettered_tiles_no_valid_data(tmp_path)
Test creating a lettered grid with no valid data.
test_lettered_tiles_sector_ref(tmp_path)
Test creating a lettered grid using the sector as reference.

2.15. satpy 579


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_lettered_tiles_update_existing(tmp_path)
Test updating lettered tiles with additional data.
test_multivar_numbered_tiles_glm(sector, extra_kwargs, tmp_path)
Test creating a tiles with multiple variables.
test_units_length_warning(tmp_path)
Test long ‘units’ warnings are raised.
satpy.tests.writer_tests.test_awips_tiled._check_production_location(ds)

satpy.tests.writer_tests.test_awips_tiled._check_required_common_attributes(ds)
Check common properties of the created AWIPS tiles for validity.
satpy.tests.writer_tests.test_awips_tiled._check_scaled_x_coordinate_variable(ds,
masked_ds)

satpy.tests.writer_tests.test_awips_tiled._check_scaled_y_coordinate_variable(ds,
masked_ds)

satpy.tests.writer_tests.test_awips_tiled._get_test_area(shape=(200, 100), crs=None,


extents=None)

satpy.tests.writer_tests.test_awips_tiled._get_test_data(shape=(200, 100), chunks=50)

satpy.tests.writer_tests.test_awips_tiled._get_test_lcc_data(dask_arr, area_def ,
extra_attrs=None)

satpy.tests.writer_tests.test_awips_tiled.check_required_properties(unmasked_ds, masked_ds)
Check various aspects of coordinates and attributes for correctness.

satpy.tests.writer_tests.test_cf module

Tests for the CF writer.


class satpy.tests.writer_tests.test_cf.TempFile(suffix='.nc')
Bases: object
A temporary filename class.
Initialize.
class satpy.tests.writer_tests.test_cf.TestCFWriter
Bases: object
Test case for CF writer.
test_ancillary_variables()
Test ancillary_variables cited each other.
test_bounds()
Test setting time bounds.
test_bounds_minimum()
Test minimum bounds.
test_bounds_missing_time_info()
Test time bounds generation in case of missing time.

580 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_global_attr_default_history_and_Conventions()
Test saving global attributes history and Conventions.
test_global_attr_history_and_Conventions()
Test saving global attributes history and Conventions.
test_groups()
Test creating a file with groups.
test_header_attrs()
Check global attributes are set.
test_init()
Test initializing the CFWriter class.
test_load_module_with_old_pyproj()
Test that cf_writer can still be loaded with pyproj 1.9.6.
test_save_array()
Test saving an array to netcdf/cf.
test_save_array_coords()
Test saving array with coordinates.
test_save_dataset_a_digit()
Test saving an array to netcdf/cf where dataset name starting with a digit.
test_save_dataset_a_digit_no_prefix_include_attr()
Test saving an array to netcdf/cf dataset name starting with a digit with no prefix include orig name.
test_save_dataset_a_digit_prefix()
Test saving an array to netcdf/cf where dataset name starting with a digit with prefix.
test_save_dataset_a_digit_prefix_include_attr()
Test saving an array to netcdf/cf where dataset name starting with a digit with prefix include orig name.
test_single_time_value()
Test setting a single time value.
test_time_coordinate_on_a_swath()
Test that time dimension is not added on swath data with time already as a coordinate.
test_unlimited_dims_kwarg()
Test specification of unlimited dimensions.
class satpy.tests.writer_tests.test_cf.TestEncodingAttribute
Bases: TestNetcdfEncodingKwargs
Test CF writer with ‘encoding’ dataset attribute.
scene_with_encoding(scene, encoding)
Create scene with a dataset providing the ‘encoding’ attribute.
test_encoding_attribute(scene_with_encoding, filename, expected)
Test ‘encoding’ dataset attribute.
class satpy.tests.writer_tests.test_cf.TestNetcdfEncodingKwargs
Bases: object
Test netCDF compression encodings.

2.15. satpy 581


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_assert_encoding_as_expected(filename, expected)

complevel_exp(compression_on)
Get expected compression level.
compression_on(request)
Get compression options.
encoding(compression_on)
Get encoding.
expected(complevel_exp)
Get expectated file contents.
filename(tmp_path)
Get output filename.
scene()
Create a fake scene.
test_encoding_kwarg(scene, encoding, filename, expected)
Test ‘encoding’ keyword argument.
test_no_warning_if_backends_match(scene, filename, monkeypatch)
Make sure no warning is issued if backends match.
test_warning_if_backends_dont_match(scene, filename, monkeypatch, versions)
Test warning if backends don’t match.
satpy.tests.writer_tests.test_cf._get_compression_params(complevel)

satpy.tests.writer_tests.test_cf._should_use_compression_keyword()

satpy.tests.writer_tests.test_geotiff module

Tests for the geotiff writer.


class satpy.tests.writer_tests.test_geotiff.TestGeoTIFFWriter
Bases: object
Test the GeoTIFF Writer class.
test_colormap_write(tmp_path)
Test writing an image with a colormap.
test_dtype_for_enhance_false(tmp_path)
Test that dtype of dataset is used if parameters enhance=False and dtype=None.
test_dtype_for_enhance_false_and_given_dtype(tmp_path)
Test that dtype of dataset is used if enhance=False and dtype=uint8.
test_fill_value_from_config(tmp_path)
Test fill_value coming from the writer config.
test_float_write(tmp_path)
Test that geotiffs can be written as floats.
NOTE: Does not actually check that the output is floats.

582 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_float_write_with_unit_conversion(tmp_path)
Test that geotiffs can be written as floats and convert units.
test_init()
Test creating the writer with no arguments.
test_scale_offset(input_func, save_kwargs, tmp_path)
Test tags being added.
test_simple_delayed_write(tmp_path)
Test writing can be delayed.
test_simple_write(input_func, tmp_path)
Test basic writer operation.
test_tags(tmp_path)
Test tags being added.
test_tiled_value_from_config(tmp_path)
Test tiled value coming from the writer config.
satpy.tests.writer_tests.test_geotiff._get_test_datasets_2d()
Create a single 2D test dataset.
satpy.tests.writer_tests.test_geotiff._get_test_datasets_2d_nonlinear_enhancement()

satpy.tests.writer_tests.test_geotiff._get_test_datasets_3d()
Create a single 3D test dataset.

satpy.tests.writer_tests.test_mitiff module

Tests for the mitiff writer.


Based on the test for geotiff writer
class satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter(methodName='runTest')
Bases: TestCase
Test the MITIFF Writer class.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

_get_test_dataset(bands=3)
Create a single test dataset.
_get_test_dataset_calibration(bands=6)
Create a single test dataset.
_get_test_dataset_calibration_one_dataset(bands=1)
Create a single test dataset.
_get_test_dataset_three_bands_prereq(bands=3)
Create a single test dataset.

2.15. satpy 583


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_test_dataset_three_bands_two_prereq(bands=3)
Create a single test dataset.
_get_test_dataset_with_bad_values(bands=3)
Create a single test dataset.
_get_test_datasets()
Create a datasets list.
_get_test_datasets_sensor_set()
Create a datasets list.
_get_test_one_dataset()
Create a single test dataset.
_get_test_one_dataset_sensor_set()
Create a single test dataset.
_imagedescription_from_mitiff(filename)

_read_back_mitiff_and_check(filename, expected, test_shape=(100, 200))

setUp()
Create temporary directory to save files to.
tearDown()
Remove the temporary directory created for a test.
test_convert_proj4_string()
Test conversion of geolocations.
test_correction_proj4_string()
Test correction of proj4 lower left coordinate.
test_get_test_dataset_three_bands_prereq()
Test basic writer operation with 3 bands with DataQuery prerequisites with missing name.
test_init()
Test creating the writer with no arguments.
test_save_dataset_palette()
Test writer operation as palette.
test_save_dataset_with_bad_value()
Test writer operation with bad values.
test_save_dataset_with_calibration()
Test writer operation with calibration.
test_save_dataset_with_calibration_error_one_dataset()
Test saving if mitiff as dataset with only one channel with invalid calibration.
test_save_dataset_with_calibration_one_dataset()
Test saving if mitiff as dataset with only one channel.
test_save_dataset_with_missing_palette()
Test saving if mitiff missing palette.

584 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_save_datasets()
Test basic writer operation save_datasets.
test_save_datasets_sensor_set()
Test basic writer operation save_datasets.
test_save_one_dataset()
Test basic writer operation with one dataset ie. no bands.
test_save_one_dataset_sensor_set()
Test basic writer operation with one dataset ie. no bands.
test_simple_write()
Test basic writer operation.
test_simple_write_two_bands()
Test basic writer operation with 3 bands from 2 prerequisites.

satpy.tests.writer_tests.test_ninjogeotiff module

Tests for writing GeoTIFF files with NinJoTIFF tags.


satpy.tests.writer_tests.test_ninjogeotiff._get_fake_da(lo, hi, shp, dtype='f4')
Generate dask array with synthetic data.
This is more or less a 2d linspace: it’ll return a 2-d dask array of shape shp, lowest value is lo, highest value is
hi.
satpy.tests.writer_tests.test_ninjogeotiff._patch_datetime_now(monkeypatch)
Get a fake datetime.datetime.now().
satpy.tests.writer_tests.test_ninjogeotiff.ntg1(test_image_small_mid_atlantic_L)
Create instance of NinJoTagGenerator class.
satpy.tests.writer_tests.test_ninjogeotiff.ntg2(test_image_large_asia_RGB)
Create instance of NinJoTagGenerator class.
satpy.tests.writer_tests.test_ninjogeotiff.ntg3(test_image_small_arctic_P)
Create instance of NinJoTagGenerator class.
satpy.tests.writer_tests.test_ninjogeotiff.ntg_cmyk(test_image_cmyk_antarctic)
Create NinJoTagGenerator instance with CMYK image.
satpy.tests.writer_tests.test_ninjogeotiff.ntg_latlon(test_image_latlon)
Create NinJoTagGenerator with latlon-area image.
satpy.tests.writer_tests.test_ninjogeotiff.ntg_no_fill_value(test_image_small_mid_atlantic_L)
Create instance of NinJoTagGenerator class.
satpy.tests.writer_tests.test_ninjogeotiff.ntg_northpole(test_image_northpole)
Create NinJoTagGenerator with north pole image.
satpy.tests.writer_tests.test_ninjogeotiff.ntg_rgba(test_image_rgba_merc)
Create NinJoTagGenerator instance with RGBA image.
satpy.tests.writer_tests.test_ninjogeotiff.ntg_weird(test_image_weird)
Create NinJoTagGenerator instance with weird image.

2.15. satpy 585


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.writer_tests.test_ninjogeotiff.test_area_epsg4326()
Test with EPSG4326 (latlong) area, which has no CRS coordinate operation.
satpy.tests.writer_tests.test_ninjogeotiff.test_area_merc()
Create a mercator area.
satpy.tests.writer_tests.test_ninjogeotiff.test_area_northpole()
Create a 20x10 test area centered exactly on the north pole.
This has no well-defined central meridian so needs separate testing.
satpy.tests.writer_tests.test_ninjogeotiff.test_area_small_eqc_wgs84()
Create 50x100 test equirectangular area centered on (50, 90), wgs84.
satpy.tests.writer_tests.test_ninjogeotiff.test_area_tiny_antarctic()
Create a 20x10 test stereographic area centered near the south pole, wgs84.
satpy.tests.writer_tests.test_ninjogeotiff.test_area_tiny_eqc_sphere()
Create 10x00 test equirectangular area centered on (40, -30), spherical geoid, m.
satpy.tests.writer_tests.test_ninjogeotiff.test_area_tiny_stereographic_wgs84()
Create a 20x10 test stereographic area centered near the north pole, wgs84.
satpy.tests.writer_tests.test_ninjogeotiff.test_area_weird()
Create a weird area (interrupted goode homolosine) to test error handling.
satpy.tests.writer_tests.test_ninjogeotiff.test_calc_single_tag_by_name(ntg1, ntg2, ntg3)
Test calculating single tag from dataset.
satpy.tests.writer_tests.test_ninjogeotiff.test_create_unknown_tags(test_image_small_arctic_P)
Test that unknown tags raise ValueError.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_all_tags(ntg1, ntg3, ntg_latlon,
ntg_northpole, caplog)
Test getting all tags from dataset.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_central_meridian(ntg1, ntg2, ntg3,
ntg_latlon,
ntg_northpole)
Test calculating the central meridian.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_color_depth(ntg1, ntg2, ntg3, ntg_weird,
ntg_rgba, ntg_cmyk)
Test extracting the color depth.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_creation_date_id(ntg1, ntg2, ntg3)
Test getting the creation date ID.
This is the time at which the file was created.
This test believes it is run at 2033-5-18 05:33:20Z.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_date_id(ntg1, ntg2, ntg3)
Test getting the date ID.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_earth_radius_large(ntg1, ntg2, ntg3)
Test getting the Earth semi-major axis.

586 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.writer_tests.test_ninjogeotiff.test_get_earth_radius_small(ntg1, ntg2, ntg3)


Test getting the Earth semi-minor axis.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_filename(ntg1, ntg2, ntg3)
Test getting the filename.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_max_gray_value_L(ntg1)
Test getting max gray value for mode L.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_max_gray_value_P(ntg3)
Test getting max gray value for mode P.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_max_gray_value_RGB(ntg2)
Test max gray value for RGB.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_meridian_east(ntg1, ntg2, ntg3)
Test getting east meridian.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_meridian_west(ntg1, ntg2, ntg3)
Test getting west meridian.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_min_gray_value_L(ntg1)
Test getting min gray value for mode L.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_min_gray_value_P(ntg3)
Test getting min gray value for mode P.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_min_gray_value_RGB(ntg2)
Test getting min gray value for RGB.
Note that min/max gray value is mandatory in NinJo even for RGBs?
satpy.tests.writer_tests.test_ninjogeotiff.test_get_projection(ntg1, ntg2, ntg3, ntg_weird,
ntg_rgba, ntg_cmyk, ntg_latlon)
Test getting projection string.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_ref_lat_1(ntg1, ntg2, ntg3, ntg_weird,
ntg_latlon)
Test getting reference latitude 1.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_ref_lat_2(ntg1, ntg2, ntg3)
Test getting reference latitude 2.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_transparent_pixel(ntg1, ntg2, ntg3,
ntg_no_fill_value)
Test getting fill value.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_xmax(ntg1, ntg2, ntg3)
Test getting maximum x.
satpy.tests.writer_tests.test_ninjogeotiff.test_get_ymax(ntg1, ntg2, ntg3)
Test getting maximum y.
satpy.tests.writer_tests.test_ninjogeotiff.test_image_cmyk_antarctic(test_area_tiny_antarctic)
Get a small test image in mode CMYK on south pole.
satpy.tests.writer_tests.test_ninjogeotiff.test_image_large_asia_RGB(test_area_small_eqc_wgs84)
Get a large-ish test image in mode RGB, over Asia.

2.15. satpy 587


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.writer_tests.test_ninjogeotiff.test_image_latlon(test_area_epsg4326)
Get image with latlon areadefinition.
satpy.tests.writer_tests.test_ninjogeotiff.test_image_northpole(test_area_northpole)
Test image with area exactly on northpole.
satpy.tests.writer_tests.test_ninjogeotiff.test_image_rgba_merc(test_area_merc)
Get a small test image in mode RGBA and mercator.
satpy.tests.writer_tests.test_ninjogeotiff.test_image_small_arctic_P(test_area_tiny_stereographic_wgs84)
Get a small-ish test image in mode P, over Arctic.
satpy.tests.writer_tests.test_ninjogeotiff.test_image_small_mid_atlantic_K_L(test_area_tiny_eqc_sphere)
Get a small test image in units K, mode L, over Atlantic.
satpy.tests.writer_tests.test_ninjogeotiff.test_image_small_mid_atlantic_L(test_area_tiny_eqc_sphere)
Get a small test image in mode L, over Atlantic.
satpy.tests.writer_tests.test_ninjogeotiff.test_image_small_mid_atlantic_L_no_quantity(test_area_tiny_eqc_sp
Get a small test image, mode L, over Atlantic, with non-quantitywvalues.
This could be the case, for example, for vis_with_night_ir.
satpy.tests.writer_tests.test_ninjogeotiff.test_image_weird(test_area_weird)
Get a small image with some weird properties to test error handling.
satpy.tests.writer_tests.test_ninjogeotiff.test_str_ids(test_image_small_arctic_P)
Test that channel and satellit IDs can be str.
satpy.tests.writer_tests.test_ninjogeotiff.test_write_and_read_file(test_image_small_mid_atlantic_L,
tmp_path)
Test that it writes a GeoTIFF with the appropriate NinJo-tags.
satpy.tests.writer_tests.test_ninjogeotiff.test_write_and_read_file_LA(test_image_latlon,
tmp_path)
Test writing and reading LA image.
satpy.tests.writer_tests.test_ninjogeotiff.test_write_and_read_file_P(test_image_small_arctic_P,
tmp_path)
Test writing and reading P image.
satpy.tests.writer_tests.test_ninjogeotiff.test_write_and_read_file_RGB(test_image_large_asia_RGB,
tmp_path)
Test writing and reading RGB.
satpy.tests.writer_tests.test_ninjogeotiff.test_write_and_read_file_units(test_image_small_mid_atlantic_K_L,
tmp_path, caplog)
Test that it writes a GeoTIFF with the appropriate NinJo-tags and units.
satpy.tests.writer_tests.test_ninjogeotiff.test_write_and_read_no_quantity(test_image_small_mid_atlantic_L_no
tmp_path, unit)
Test that no scale/offset written if no valid units present.
satpy.tests.writer_tests.test_ninjogeotiff.test_write_and_read_via_scene(test_image_small_mid_atlantic_L,
tmp_path)
Test that all attributes are written also when writing from scene.
It appears that Satpy.Scene.save_dataset() does not pass the filename to the writer. Test that filename is
still written to header when saving this way (the regular way).

588 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.writer_tests.test_ninjotiff module

Tests for the NinJoTIFF writer.


class satpy.tests.writer_tests.test_ninjotiff.FakeImage(data, mode)
Bases: object
Fake image.
Init fake image.
get_scaling_from_history()
Return dummy scale and offset.
class satpy.tests.writer_tests.test_ninjotiff.TestNinjoTIFFWriter(methodName='runTest')
Bases: TestCase
The ninjo tiff writer tests.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_P_image_is_uint8(iwsi, save_dataset)
Test that a P-mode image is converted to uint8s.
test_convert_units_other()
Test that other unit conversions are not implemented.
test_convert_units_self()
Test that unit conversion to themselves do nothing.
test_convert_units_temp()
Test that temperature unit conversions works as expected.
test_dataset(iwsd)
Test saving a dataset.
test_dataset_skip_unit_conversion(iwsd)
Test saving a dataset without unit conversion.
test_image(iwsi, save_dataset)
Test saving an image.
test_init()
Test the init.

satpy.tests.writer_tests.test_simple_image module

Tests for the simple image writer.


class satpy.tests.writer_tests.test_simple_image.TestPillowWriter(methodName='runTest')
Bases: TestCase
Test Pillow/PIL writer.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.

2.15. satpy 589


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_classSetupFailed = False

_class_cleanups = []

static _get_test_datasets()
Create DataArray for testing.
setUp()
Create temporary directory to save files to.
tearDown()
Remove the temporary directory created for a test.
test_init()
Test creating the default writer.
test_simple_delayed_write()
Test writing datasets with delayed computation.
test_simple_write()
Test writing datasets with default behavior.

satpy.tests.writer_tests.test_utils module

Tests for writer utilities.


class satpy.tests.writer_tests.test_utils.WriterUtilsTest(methodName='runTest')
Bases: TestCase
Test various writer utilities.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_flatten_dict()
Test dictionary flattening.

Module contents

The writer tests package.

Submodules

satpy.tests.conftest module

Shared preparation and utilities for testing.


This module is executed automatically by pytest.
satpy.tests.conftest._clear_function_caches()
Clear out global function-level caches that may cause conflicts between tests.
satpy.tests.conftest._reset_satpy_config(tmpdir)
Set satpy config to logical defaults for tests.

590 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.conftest.include_test_etc()
Tell Satpy to use the config ‘etc’ directory from the tests directory.

satpy.tests.test_cf_roundtrip module

Test roundripping the cf writer and reader.


satpy.tests.test_cf_roundtrip.test_cf_roundtrip(fake_dnb_file, tmp_path)
Test the cf writing reading cycle.

satpy.tests.test_composites module

Tests for compositors in composites/__init__.py.


class satpy.tests.test_composites.TestAddBands(methodName='runTest')
Bases: TestCase
Test case for the add_bands function.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_add_bands_l_rgb()
Test adding bands.
test_add_bands_l_rgba()
Test adding bands.
test_add_bands_la_rgb()
Test adding bands.
test_add_bands_p_l()
Test adding bands.
test_add_bands_rgb_rbga()
Test adding bands.
class satpy.tests.test_composites.TestBackgroundCompositor
Bases: object
Test case for the background compositor.
classmethod setup_class()
Create shared input data arrays.
test_call(foreground_bands, background_bands, exp_bands, exp_result)
Test the background compositing.
test_multiple_sensors()
Test the background compositing from multiple sensor data.

2.15. satpy 591


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.test_composites.TestCategoricalDataCompositor(methodName='runTest')
Bases: TestCase
Test composiotor for recategorization of categorical data.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Create test data.
test_basic_recategorization()
Test general functionality of compositor incl. attributes.
test_too_many_datasets()
Test that ValueError is raised if more than one dataset is provided.
class satpy.tests.test_composites.TestCloudCompositorCommonMask
Bases: object
Test the CloudCompositorCommonMask.
setup_method()
Set up the test case.
test_bad_call()
Test the CloudCompositorCommonMask without mask.
test_call_dask()
Test the CloudCompositorCommonMask with dask.
test_call_numpy()
Test the CloudCompositorCommonMask with numpy.
class satpy.tests.test_composites.TestCloudCompositorWithoutCloudfree
Bases: object
Test the CloudCompositorWithoutCloudfree.
setup_method()
Set up the test case.
test_bad_indata()
Test the CloudCompositorWithoutCloudfree composite generation without status.
test_call_bad_optical_conditions()
Test the CloudCompositorWithoutCloudfree composite generation.
test_call_dask_with_invalid_value_in_status()
Test the CloudCompositorWithoutCloudfree composite generation.
test_call_numpy_with_invalid_value_in_status()
Test the CloudCompositorWithoutCloudfree composite generation.

592 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.test_composites.TestColorizeCompositor(methodName='runTest')
Bases: TestCase
Test the ColorizeCompositor.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_colorize_no_fill()
Test colorizing.
test_colorize_with_interpolation()
Test colorizing with interpolation.
class satpy.tests.test_composites.TestColormapCompositor(methodName='runTest')
Bases: TestCase
Test the ColormapCompositor.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the test case.
test_build_colormap_with_int_data_and_with_meanings()
Test colormap building.
test_build_colormap_with_int_data_and_without_meanings()
Test colormap building.
class satpy.tests.test_composites.TestDayNightCompositor(methodName='runTest')
Bases: TestCase
Test DayNightCompositor.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Create test data.
test_day_only_area_with_alpha()
Test compositor with day portion with alpha_band when SZA data is not provided.
test_day_only_area_with_alpha_and_missing_data()
Test compositor with day portion with alpha_band when SZA data is not provided and there is missing
data.

2.15. satpy 593


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_day_only_area_without_alpha()
Test compositor with day portion without alpha_band when SZA data is not provided.
test_day_only_sza_with_alpha()
Test compositor with day portion with alpha band when SZA data is included.
test_day_only_sza_without_alpha()
Test compositor with day portion without alpha band when SZA data is included.
test_daynight_area()
Test compositor both day and night portions when SZA data is not provided.
test_daynight_sza()
Test compositor with both day and night portions when SZA data is included.
test_night_only_area_with_alpha()
Test compositor with night portion with alpha band when SZA data is not provided.
test_night_only_area_without_alpha()
Test compositor with night portion without alpha band when SZA data is not provided.
test_night_only_sza_with_alpha()
Test compositor with night portion with alpha band when SZA data is included.
test_night_only_sza_without_alpha()
Test compositor with night portion without alpha band when SZA data is included.
class satpy.tests.test_composites.TestDifferenceCompositor(methodName='runTest')
Bases: TestCase
Test case for the difference compositor.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Create test data.
test_bad_areas_diff()
Test that a difference where resolutions are different fails.
test_basic_diff()
Test that a basic difference composite works.
class satpy.tests.test_composites.TestEnhance2Dataset(methodName='runTest')
Bases: TestCase
Test the enhance2dataset utility.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

594 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_enhance_l(get_enhanced_image)
Test enhancing a paletted dataset in P mode.
test_enhance_p(get_enhanced_image)
Test enhancing a paletted dataset in P mode.
test_enhance_p_to_rgb(get_enhanced_image)
Test enhancing a paletted dataset in RGB mode.
test_enhance_p_to_rgba(get_enhanced_image)
Test enhancing a paletted dataset in RGBA mode.
class satpy.tests.test_composites.TestFillingCompositor(methodName='runTest')
Bases: TestCase
Test case for the filling compositor.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_fill()
Test filling.
class satpy.tests.test_composites.TestGenericCompositor(methodName='runTest')
Bases: TestCase
Test generic compositor.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Create test data.
test_call()
Test calling generic compositor.
test_call_with_mock(match_data_arrays, check_times, combine_metadata, get_sensors)
Test calling generic compositor.
test_concat_datasets()
Test concatenation of datasets.
test_deprecation_warning()
Test deprecation warning for dcprecated composite recipes.
test_get_sensors()
Test getting sensors from the dataset attributes.
test_masking()
Test masking in generic compositor.

2.15. satpy 595


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.test_composites.TestHighCloudCompositor
Bases: object
Test HighCloudCompositor.
setup_method()
Create test data.
test_high_cloud_compositor()
Test general default functionality of compositor.
test_high_cloud_compositor_dtype()
Test that the datatype is not altered by the compositor.
test_high_cloud_compositor_multiple_calls()
Test that the modified init variables are reset properly when calling the compositor multiple times.
test_high_cloud_compositor_validity_checks()
Test that errors are raised for invalid input data and settings.
class satpy.tests.test_composites.TestInferMode(methodName='runTest')
Bases: TestCase
Test the infer_mode utility.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_band_size_is_used()
Test that the band size is used.
test_bands_coords_is_used()
Test that the bands coord is used.
test_mode_is_used()
Test that the mode attribute is used.
test_no_bands_is_l()
Test that default (no band) is L.
class satpy.tests.test_composites.TestInlineComposites(methodName='runTest')
Bases: TestCase
Test inline composites.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_inline_composites()
Test that inline composites are working.

596 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.test_composites.TestLongitudeMaskingCompositor(methodName='runTest')
Bases: TestCase
Test case for the LongitudeMaskingCompositor compositor.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_masking()
Test longitude masking.
class satpy.tests.test_composites.TestLowCloudCompositor
Bases: object
Test LowCloudCompositor.
setup_method()
Create test data.
test_low_cloud_compositor()
Test general default functionality of compositor.
test_low_cloud_compositor_dtype()
Test that the datatype is not altered by the compositor.
test_low_cloud_compositor_validity_checks()
Test that errors are raised for invalid input data and settings.
class satpy.tests.test_composites.TestLuminanceSharpeningCompositor(methodName='runTest')
Bases: TestCase
Test luminance sharpening compositor.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_compositor()
Test luminance sharpening compositor.
class satpy.tests.test_composites.TestMaskingCompositor
Bases: object
Test case for the simple masking compositor.
conditions_v1()
Masking conditions with string values.
conditions_v2()
Masking conditions with numerical values.
reference_alpha()
Get reference alpha to use in masking compositor tests.

2.15. satpy 597


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

reference_data(test_data, test_ct_data)
Get reference data to use in masking compositor tests.
test_call_named_fields(conditions_v2, test_data, test_ct_data, reference_data, reference_alpha)
Test with named fields.
test_call_named_fields_string(conditions_v2, test_data, test_ct_data, reference_data,
reference_alpha)
Test with named fields which are as a string in the mask attributes.
test_call_numerical_transparency_data(conditions_v1, test_data, test_ct_data, reference_data,
reference_alpha, mode)
Test call the compositor with numerical transparency data.
Use parameterisation to test different image modes.
test_ct_data()
Test 2D CT data array.
test_ct_data_v3(test_ct_data)
Set ct data to NaN where it originally is 1.
test_data()
Test data to use with masking compositors.
test_get_flag_value()
Test reading flag value from attributes based on a name.
test_incorrect_method(test_data, test_ct_data)
Test incorrect method.
test_incorrect_mode(conditions_v1)
Test initiating with unsupported mode.
test_init()
Test the initializiation of compositor.
test_method_absolute_import(test_data, test_ct_data_v3)
Test “absolute_import” as method.
test_method_isnan(test_data, test_ct_data, test_ct_data_v3)
Test “isnan” as method.
test_rgb_dataset(conditions_v1, test_ct_data, reference_alpha)
Test RGB dataset.
test_rgba_dataset(conditions_v2, test_ct_data, reference_alpha)
Test RGBA dataset.
class satpy.tests.test_composites.TestMatchDataArrays
Bases: object
Test the utility method ‘match_data_arrays’.
_get_test_ds(shape=(50, 100), dims=('y', 'x'))
Get a fake DataArray.

598 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_almost_equal_geo_coordinates()
Test that coordinates that are almost-equal still match.
See https://github.com/pytroll/satpy/issues/2668 for discussion.
Various operations like cropping and resampling can cause geo-coordinates (y, x) to be very slightly unequal
due to floating point precision. This test makes sure that even in those cases we can still generate composites
from DataArrays with these coordinates.
test_mult_ds_area()
Test multiple datasets successfully pass.
test_mult_ds_diff_area()
Test that datasets with different areas fail.
test_mult_ds_diff_dims()
Test that datasets with different dimensions still pass.
test_mult_ds_diff_size()
Test that datasets with different sizes fail.
test_mult_ds_no_area()
Test that all datasets must have an area attribute.
test_nondimensional_coords()
Test the removal of non-dimensional coordinates when compositing.
test_single_ds()
Test a single dataset is returned unharmed.
class satpy.tests.test_composites.TestMultiFiller(methodName='runTest')
Bases: TestCase
Test case for the MultiFiller compositor.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_fill()
Test filling.
class satpy.tests.test_composites.TestNaturalEnhCompositor(methodName='runTest')
Bases: TestCase
Test NaturalEnh compositor.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Create channel data and set channel weights.

2.15. satpy 599


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_natural_enh(match_data_arrays, repr_)
Test NaturalEnh compositor.
class satpy.tests.test_composites.TestPaletteCompositor(methodName='runTest')
Bases: TestCase
Test the PaletteCompositor.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_call()
Test palette compositing.
class satpy.tests.test_composites.TestPrecipCloudsCompositor(methodName='runTest')
Bases: TestCase
Test the PrecipClouds compositor.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_call()
Test the precip composite generation.
class satpy.tests.test_composites.TestRatioSharpenedCompositors
Bases: object
Test RatioSharpenedRGB and SelfSharpendRGB compositors.
setup_method()
Create test data.
test_bad_colors(init_kwargs)
Test that only valid band colors can be provided.
test_basic_no_high_res(dtype)
Test that three datasets can be passed without optional high res.
test_basic_no_sharpen(dtype)
Test that color None does no sharpening.
test_match_data_arrays()
Test that all areas have to be the same resolution.
test_more_than_three_datasets()
Test that only 3 datasets can be passed.
test_ratio_sharpening(high_resolution_band, neutral_resolution_band, exp_r, exp_g, exp_b, dtype)
Test RatioSharpenedRGB by different groups of high_resolution_band and neutral_resolution_band.

600 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_self_sharpened_basic(exp_shape, exp_r, exp_g, exp_b, dtype)


Test that three datasets can be passed without optional high res.
test_self_sharpened_no_high_res()
Test for exception when no high_res band is specified.
class satpy.tests.test_composites.TestRealisticColors
Bases: object
Test the SEVIRI Realistic Colors compositor.
test_realistic_colors()
Test the compositor.
class satpy.tests.test_composites.TestSandwichCompositor
Bases: object
Test sandwich compositor.
test_compositor(e2d, input_shape, bands)
Test luminance sharpening compositor.
class satpy.tests.test_composites.TestSingleBandCompositor(methodName='runTest')
Bases: TestCase
Test the single-band compositor.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Create test data.
test_call()
Test calling the compositor.
class satpy.tests.test_composites.TestStaticImageCompositor(methodName='runTest')
Bases: TestCase
Test case for the static compositor.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_call(Scene, register, retrieve)


Test the static compositing.
test_init(get_area_def )
Test the initializiation of static compositor.
satpy.tests.test_composites._create_fake_composite_config(yaml_filename: str)

2.15. satpy 601


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.test_composites._enhance2dataset(dataset, convert_p=False)
Mock the enhance2dataset to return the original data.
satpy.tests.test_composites.fake_area()
Return a fake 2×2 area.
satpy.tests.test_composites.fake_dataset_pair(fake_area)
Return a fake pair of 2×2 datasets.
satpy.tests.test_composites.test_bad_sensor_yaml_configs(tmp_path)
Test composite YAML file with no sensor isn’t loaded.
But the bad YAML also shouldn’t crash composite configuration loading.
satpy.tests.test_composites.test_ratio_compositor(fake_dataset_pair)
Test the ratio compositor.
satpy.tests.test_composites.test_sum_compositor(fake_dataset_pair)
Test the sum compositor.

satpy.tests.test_config module

Test objects and functions in the satpy.config module.


class satpy.tests.test_config.TestBuiltinAreas(methodName='runTest')
Bases: TestCase
Test that the builtin areas are all valid.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_areas_pyproj()
Test all areas have valid projections with pyproj.
test_areas_rasterio()
Test all areas have valid projections with rasterio.
class satpy.tests.test_config.TestConfigObject
Bases: object
Test basic functionality of the central config object.
test_bad_str_config_path()
Test that a str config path isn’t allowed.
test_config_path_multiple()
Test that multiple config paths are accepted.
test_config_path_multiple_load()
Test that config paths from subprocesses load properly.
Satpy modifies the config path environment variable when it is imported. If Satpy is imported again from
a subprocess then it should be able to parse this modified variable.

602 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_custom_config_file()
Test adding a custom configuration file using SATPY_CONFIG.
test_deprecated_env_vars()
Test that deprecated variables are mapped to new config.
test_tmp_dir_is_writable()
Check that the default temporary directory is writable.
class satpy.tests.test_config.TestPluginsConfigs
Bases: object
Test that plugins are working.
static _check_available_component(available_func, exp_component)

static _get_and_check_reader_writer_configs(specified_component, configs_func, exp_yaml)

setup_method()
Set up the test.
test_get_plugin_configs(fake_composite_plugin_etc_path)
Check that the plugin configs are looked for.
test_load_entry_point_composite(fake_composite_plugin_etc_path)
Test that composites can be loaded from plugin entry points.
test_plugin_enhancements_generic_sensor(fake_enh_plugin_etc_path, sensor_name, exp_result)
Test that enhancements from a plugin are available.
test_plugin_reader_available_readers(fake_reader_plugin_etc_path)
Test that readers can be loaded from plugin entry points.
test_plugin_reader_configs(fake_reader_plugin_etc_path, specified_reader)
Test that readers can be loaded from plugin entry points.
test_plugin_writer_available_writers(fake_writer_plugin_etc_path)
Test that readers can be loaded from plugin entry points.
test_plugin_writer_configs(fake_writer_plugin_etc_path, specified_writer)
Test that writers can be loaded from plugin entry points.
satpy.tests.test_config._create_fake_importlib_files(module_paths: dict[str, Path]) →
Callable[[str], Path]

satpy.tests.test_config._create_fake_iter_entry_points(entry_points: dict[str, list[EntryPoint]]) →


Callable[[], dict[str, EntryPoint]]

satpy.tests.test_config._create_yamlbased_plugin(tmp_path: Path, component_type: str, yaml_name:


str, yaml_func: Callable[[str], None]) →
Iterator[Path]

satpy.tests.test_config._get_entry_points_and_etc_paths(tmp_path: Path, entry_point_names:


dict[str, list[str]]) → tuple[Path, dict[str,
list[EntryPoint]], dict[str, Path]]

satpy.tests.test_config._is_writable(directory)

2.15. satpy 603


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.test_config._os_specific_multipaths()

satpy.tests.test_config._write_fake_composite_yaml(yaml_filename: str) → None

satpy.tests.test_config._write_fake_enh_yamls(yaml_filename: str) → None

satpy.tests.test_config._write_fake_reader_yaml(yaml_filename: str) → None

satpy.tests.test_config._write_fake_writer_yaml(yaml_filename: str) → None

satpy.tests.test_config.fake_composite_plugin_etc_path(tmp_path: Path) → Iterator[Path]


Create a fake plugin entry point with a fake compositor YAML configuration file.
satpy.tests.test_config.fake_enh_plugin_etc_path(tmp_path: Path) → Iterator[Path]
Create a fake plugin entry point with a fake enhancement YAML configure files.
This creates a fake_sensor.yaml and generic.yaml enhancement configuration.
satpy.tests.test_config.fake_plugin_etc_path(tmp_path: Path, entry_point_names: dict[str, list[str]])
→ Iterator[Path]
Create a fake satpy plugin entry point.
This mocks the necessary methods to trick Satpy into thinking a plugin package is installed and has made a satpy
plugin available.
satpy.tests.test_config.fake_reader_plugin_etc_path(tmp_path: Path) → Iterator[Path]
Create a fake plugin entry point with a fake reader YAML configuration file.
satpy.tests.test_config.fake_writer_plugin_etc_path(tmp_path: Path) → Iterator[Path]
Create a fake plugin entry point with a fake writer YAML configuration file.
satpy.tests.test_config.test_is_writable()
Test writable directory check.

satpy.tests.test_crefl_utils module

Test CREFL rayleigh correction functions.


class satpy.tests.test_crefl_utils.TestCreflUtils(methodName='runTest')
Bases: TestCase
Test crefl_utils.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_get_atm_variables_abi()
Test getting atmospheric variables for ABI.

satpy.tests.test_data_download module

Test for ancillary data downloading.

604 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.test_data_download.TestDataDownload
Bases: object
Test basic data downloading functionality.
_setup_custom_configs(tmpdir)

test_download_script()
Test basic functionality of the download script.
test_find_registerable(readers, writers, comp_sensors)
Test that find_registerable finds some things.
test_limited_find_registerable()
Test that find_registerable doesn’t find anything when limited.
test_no_downloads_in_tests()
Test that tests aren’t allowed to download stuff.
test_offline_retrieve()
Test retrieving a single file when offline.
test_offline_retrieve_all()
Test registering and retrieving all files fails when offline.
test_retrieve()
Test retrieving a single file.
test_retrieve_all()
Test registering and retrieving all files.
class satpy.tests.test_data_download.UnfriendlyModifier(name, prerequisites=None,
optional_prerequisites=None, **kwargs)
Bases: ModifierBase, DataDownloadMixin
Fake modifier that raises an exception in __init__.
Raise an exception if we weren’t provided any prerequisites.
satpy.tests.test_data_download._assert_comp_files_downloaded(comp_sensors, found_files)

satpy.tests.test_data_download._assert_mod_files_downloaded(comp_sensors, found_files)

satpy.tests.test_data_download._assert_reader_files_downloaded(readers, found_files)

satpy.tests.test_data_download._assert_writer_files_downloaded(writers, found_files)

satpy.tests.test_data_download._setup_custom_composite_config(base_dir)

satpy.tests.test_data_download._setup_custom_reader_config(base_dir)

satpy.tests.test_data_download._setup_custom_writer_config(base_dir)

satpy.tests.test_dataset module

Test objects and functions in the dataset module.

2.15. satpy 605


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.test_dataset.TestCombineMetadata(methodName='runTest')
Bases: TestCase
Test how metadata is combined.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the test case.
test_average_datetimes()
Test the average_datetimes helper function.
test_combine_arrays()
Test the combine_metadata with arrays.
test_combine_dask_arrays()
Test combining values that are dask arrays.
test_combine_empty_metadata()
Test combining empty metadata.
test_combine_end_times()
Test the combine_metadata with end times.
test_combine_end_times_with_none()
Test the combine_metadata with end times when there’s a None included.
test_combine_identical_numpy_scalars()
Test combining identical fill values.
test_combine_lists_different_size()
Test combine metadata with different size lists.
test_combine_lists_identical()
Test combine metadata with identical lists.
test_combine_lists_same_size_diff_values()
Test combine metadata with lists with different values.
test_combine_nans()
Test combining nan fill values.
test_combine_numpy_arrays()
Test combining values that are numpy arrays.
test_combine_one_metadata_object()
Test combining one metadata object.
test_combine_other_times()
Test the combine_metadata with other time values than start or end times.
test_combine_real_world_mda()
Test with real data.

606 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_combine_start_times()
Test the combine_metadata with start times.
test_combine_start_times_with_none()
Test the combine_metadata with start times when there’s a None included.
class satpy.tests.test_dataset.TestDataID(methodName='runTest')
Bases: TestCase
Test DataID object creation and other methods.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_bad_calibration()
Test that asking for a bad calibration fails.
test_basic_init()
Test basic ways of creating a DataID.
test_compare_no_wl()
Compare fully qualified wavelength ID to no wavelength ID.
test_create_less_modified_query()
Test that modifications are popped correctly.
test_init_bad_modifiers()
Test that modifiers are a tuple.
test_is_modified()
Test that modifications are detected properly.
class satpy.tests.test_dataset.TestDataQuery
Bases: object
Test case for data queries.
test_create_less_modified_query()
Test that modifications are popped correctly.
test_dataquery()
Test DataQuery objects.
test_is_modified()
Test that modifications are detected properly.
class satpy.tests.test_dataset.TestIDQueryInteractions(methodName='runTest')
Bases: TestCase
Test the interactions between DataIDs and DataQuerys.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

2.15. satpy 607


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_class_cleanups = []

setUp() → None
Set up the test case.
test_hash_equality()
Test hash equality.
test_id_filtering()
Check did filtering.
test_inequality()
Check (in)equality.
test_seviri_hrv_has_priority_over_vis008()
Check that the HRV channel has priority over VIS008 when querying 0.8µm.
test_sort_dataids()
Check dataid sorting.
test_sort_dataids_with_different_set_of_keys()
Check sorting data ids when the query has a different set of keys.
satpy.tests.test_dataset.test_combine_dicts_close()
Test combination of dictionaries whose values are close.
satpy.tests.test_dataset.test_combine_dicts_different(test_mda)
Test combination of dictionaries differing in various ways.
satpy.tests.test_dataset.test_dataid()
Test the DataID object.
satpy.tests.test_dataset.test_dataid_copy()
Test copying a DataID.
satpy.tests.test_dataset.test_dataid_elements_picklable()
Test individual elements of DataID can be pickled.
In some cases, like in the base reader classes, the elements of a DataID are extracted and stored in a separate
dictionary. This means that the internal/fancy pickle handling of DataID does not play a part.
satpy.tests.test_dataset.test_dataid_equal_if_enums_different()
Check that dataids with different enums but same items are equal.
satpy.tests.test_dataset.test_dataid_pickle()
Test dataid pickling roundtrip.
satpy.tests.test_dataset.test_frequency_double_side_band_channel_containment()
Test the frequency double side band object: check if one band contains another.
satpy.tests.test_dataset.test_frequency_double_side_band_channel_distances()
Test the frequency double side band object: get the distance between two bands.
satpy.tests.test_dataset.test_frequency_double_side_band_channel_equality()
Test the frequency double side band object: check if two bands are ‘equal’.
satpy.tests.test_dataset.test_frequency_double_side_band_channel_str()
Test the frequency double side band object: test the band description.

608 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.test_dataset.test_frequency_double_side_band_class_method_convert()
Test the frequency double side band object: test the class method convert.
satpy.tests.test_dataset.test_frequency_quadruple_side_band_channel_containment()
Test the frequency quadruple side band object: check if one band contains another.
satpy.tests.test_dataset.test_frequency_quadruple_side_band_channel_distances()
Test the frequency quadruple side band object: get the distance between two bands.
satpy.tests.test_dataset.test_frequency_quadruple_side_band_channel_equality()
Test the frequency quadruple side band object: check if two bands are ‘equal’.
satpy.tests.test_dataset.test_frequency_quadruple_side_band_channel_str()
Test the frequency quadruple side band object: test the band description.
satpy.tests.test_dataset.test_frequency_quadruple_side_band_class_method_convert()
Test the frequency double side band object: test the class method convert.
satpy.tests.test_dataset.test_frequency_range_channel_containment()
Test the frequency range object: channel containment.
satpy.tests.test_dataset.test_frequency_range_channel_distances()
Test the frequency range object: derive distances between bands.
satpy.tests.test_dataset.test_frequency_range_channel_equality()
Test the frequency range object: check if two bands are ‘equal’.
satpy.tests.test_dataset.test_frequency_range_class_method_convert()
Test the frequency range object: test the class method convert.
satpy.tests.test_dataset.test_frequency_range_class_method_str()
Test the frequency range object: test the band description.
satpy.tests.test_dataset.test_wavelength_range()
Test the wavelength range object.
satpy.tests.test_dataset.test_wavelength_range_cf_roundtrip()
Test the wavelength range object roundtrip to cf.

satpy.tests.test_demo module

Tests for the satpy.demo module.


class satpy.tests.test_demo.TestAHIDemoDownload
Bases: object
Test the AHI demo data download.
test_ahi_full_download()
Test that the himawari download works as expected.
test_ahi_partial_download()
Test that the himawari download works as expected.
class satpy.tests.test_demo.TestDemo(methodName='runTest')
Bases: TestCase
Test demo data download functions.

2.15. satpy 609


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Create temporary directory to save files to.
tearDown()
Remove the temporary directory created for a test.
test_get_hurricane_florence_abi(gcsfs_mod)
Test data download function.
test_get_us_midlatitude_cyclone_abi(gcsfs_mod)
Test data download function.
class satpy.tests.test_demo.TestGCPUtils(methodName='runTest')
Bases: TestCase
Test Google Cloud Platform utilities.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_get_bucket_files(gcsfs_mod)
Test get_bucket_files basic cases.
test_is_gcp_instance(uo)
Test is_google_cloud_instance.
test_no_gcsfs()
Test that ‘gcsfs’ is required.
class satpy.tests.test_demo.TestSEVIRIHRITDemoDownload(methodName='runTest')
Bases: TestCase
Test case for downloading an hrit tarball.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the test case.
tearDown()
Tear down the test case.
test_do_not_download_same_file_twice()
Test that files are not downloaded twice.

610 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_download_a_subset_of_files()
Test downloading a subset of files.
test_download_from_zenodo()
Test downloading SEVIRI HRIT data from zenodo.
test_download_gets_files_with_contents()
Test downloading SEVIRI HRIT data with content.
test_download_to_output_directory()
Test downloading to an output directory.
class satpy.tests.test_demo.TestVIIRSSDRDemoDownload
Bases: object
Test VIIRS SDR downloading.
ALL_BAND_PREFIXES = ('SVI01', 'SVI02', 'SVI03', 'SVI04', 'SVI05', 'SVM01', 'SVM02',
'SVM03', 'SVM04', 'SVM05', 'SVM06', 'SVM07', 'SVM08', 'SVM09', 'SVM10', 'SVM11',
'SVM12', 'SVM13', 'SVM14', 'SVM15', 'SVM16', 'SVDNB')

ALL_GEO_PREFIXES = ('GITCO', 'GMTCO', 'GDNBO')

static _assert_bands_in_filenames(band_prefixes, filenames, num_files_per_band)

_assert_bands_in_filenames_and_contents(band_prefixes, filenames, num_files_per_band)

static _assert_file_contents(filenames)

test_do_not_download_the_files_twice(requests, tmpdir)
Test re-downloading VIIRS SDR data.
test_download(requests, tmpdir)
Test downloading VIIRS SDR data.
test_download_channels_num_granules_dnb(requests, tmpdir)
Test downloading and re-downloading VIIRS SDR DNB data with select granules.
test_download_channels_num_granules_im(requests, tmpdir)
Test downloading VIIRS SDR I/M data with select granules.
test_download_channels_num_granules_im_twice(requests, tmpdir)
Test re-downloading VIIRS SDR I/M data with select granules.
class satpy.tests.test_demo._FakeRequest(url, stream=None, timeout=None)
Bases: object
Fake object to act like a requests return value when downloading a file.
_get_fake_bytesio()

iter_content(chunk_size)
Return generator of ‘chunk_size’ at a time.
raise_for_status()

requests_log: list[str] = []

2.15. satpy 611


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.test_demo._GlobHelper(num_results)
Bases: object
Create side effect function for mocking gcsfs glob method.
Initialize side_effect function for mocking gcsfs glob method.
Parameters
num_results (int or list) – Number of results for each glob call to return. If a list then
number of results per call. The last number is used for any additional calls.
satpy.tests.test_demo._create_and_populate_dummy_tarfile(fn)
Populate a dummy tarfile with dummy files.
satpy.tests.test_demo.mock_filesystem()
Create a mock filesystem, patching open and os.path.isfile.
satpy.tests.test_demo.test_fci_download(tmp_path, monkeypatch)
Test download of FCI test data.
satpy.tests.test_demo.test_fs()
Test the mock filesystem.

satpy.tests.test_dependency_tree module

Unit tests for the dependency tree class and dependencies.


class satpy.tests.test_dependency_tree.TestDependencyTree(methodName='runTest')
Bases: TestCase
Test the dependency tree.
This is what we are working with:

None (No Data)


+DataID(name='comp19')
+ +DataID(name='ds5', resolution=250, modifiers=('res_change',))
+ + +DataID(name='ds5', resolution=250, modifiers=())
+ + +__EMPTY_LEAF_SENTINEL__ (No Data)
+ +DataID(name='comp13')
+ + +DataID(name='ds5', resolution=250, modifiers=('res_change',))
+ + + +DataID(name='ds5', resolution=250, modifiers=())
+ + + +__EMPTY_LEAF_SENTINEL__ (No Data)
+ +DataID(name='ds2', resolution=250, calibration=<calibration.reflectance>,␣
˓→modifiers=())

Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

static _nodes_equal(node_list1, node_list2)

setUp()
Set up the test tree.

612 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_copy_preserves_all_nodes()
Test that dependency tree copy preserves all nodes.
test_copy_preserves_unique_empty_node()
Test that dependency tree copy preserves the uniqueness of the empty node.
test_new_dependency_tree_preserves_unique_empty_node()
Test that dependency tree instantiation preserves the uniqueness of the empty node.
class satpy.tests.test_dependency_tree.TestMissingDependencies(methodName='runTest')
Bases: TestCase
Test the MissingDependencies exception.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_new_missing_dependencies()
Test new MissingDependencies.
test_new_missing_dependencies_with_message()
Test new MissingDependencies with a message.
class satpy.tests.test_dependency_tree.TestMultipleResolutionSameChannelDependency(methodName='runTest')
Bases: TestCase
Test that MODIS situations where the same channel is available at multiple resolution works.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_modis_overview_1000m()
Test a modis overview dependency calculation with resolution fixed to 1000m.
class satpy.tests.test_dependency_tree.TestMultipleSensors(methodName='runTest')
Bases: TestCase
Test cases where multiple sensors are available.
This is what we are working with:

None (No Data)


+DataID(name='comp19')
+ +DataID(name='ds5', resolution=250, modifiers=('res_change',))
+ + +DataID(name='ds5', resolution=250, modifiers=())
+ + +__EMPTY_LEAF_SENTINEL__ (No Data)
+ +DataID(name='comp13')
+ + +DataID(name='ds5', resolution=250, modifiers=('res_change',))
+ + + +DataID(name='ds5', resolution=250, modifiers=())
+ + + +__EMPTY_LEAF_SENTINEL__ (No Data)
+ +DataID(name='ds2', resolution=250, calibration=<calibration.reflectance>,␣
˓→modifiers=())

2.15. satpy 613


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the test tree.
test_compositor_loaded_sensor_order()
Test that a compositor is loaded from the first alphabetical sensor.
test_modifier_loaded_sensor_order()
Test that a modifier is loaded from the first alphabetical sensor.

satpy.tests.test_file_handlers module

test file handler baseclass.


class satpy.tests.test_file_handlers.TestBaseFileHandler(methodName='runTest')
Bases: TestCase
Test the BaseFileHandler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the test.
test_combine_area(sdef )
Combine area.
test_combine_orbital_parameters()
Combine orbital parameters.
test_combine_orbits()
Combine orbits.
test_combine_time_parameters()
Combine times in ‘time_parameters.
test_combine_times()
Combine times.
test_file_is_kept_intact()
Test that the file object passed (string, path, or other) is kept intact.
satpy.tests.test_file_handlers.test_file_type_match(file_type, ds_file_type, exp_result)
Test that file type matching uses exactly equality.
satpy.tests.test_file_handlers.test_open_dataset()
Test xr.open_dataset wrapper.

614 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.test_modifiers module

Tests for modifiers in modifiers/__init__.py.


class satpy.tests.test_modifiers.TestNIREmissivePartFromReflectance(methodName='runTest')
Bases: TestCase
Test the NIR Emissive part from reflectance compositor.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_compositor(calculator, apply_modifier_info, sza)


Test the NIR emissive part from reflectance compositor.
class satpy.tests.test_modifiers.TestNIRReflectance(methodName='runTest')
Bases: TestCase
Test NIR reflectance compositor.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

fake_refl_from_tbs(sun_zenith, da_nir, da_tb11, tb_ir_co2=None)


Fake refl_from_tbs.
setUp()
Set up the test case for the NIRReflectance compositor.
test_masking_limit_default_value_is_not_none(calculator, apply_modifier_info, sza)
Check that sun_zenith_threshold is not None.
test_no_sunz_no_co2(calculator, apply_modifier_info, sza)
Test NIR reflectance compositor with minimal parameters.
test_no_sunz_with_co2(calculator, apply_modifier_info, sza)
Test NIR reflectance compositor provided extra co2 info.
test_provide_masking_limit(calculator, apply_modifier_info, sza)
Test NIR reflectance compositor provided sunz and a sunz threshold.
test_provide_sunz_and_threshold(calculator, apply_modifier_info, sza)
Test NIR reflectance compositor provided sunz and a sunz threshold.
test_provide_sunz_no_co2(calculator, apply_modifier_info, sza)
Test NIR reflectance compositor provided only sunz.
test_sunz_threshold_default_value_is_not_none(calculator, apply_modifier_info, sza)
Check that sun_zenith_threshold is not None.

2.15. satpy 615


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.test_modifiers.TestPSPAtmosphericalCorrection(methodName='runTest')
Bases: TestCase
Test the pyspectral-based atmospheric correction modifier.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_call()
Test atmospherical correction.
class satpy.tests.test_modifiers.TestPSPRayleighReflectance
Bases: object
Test the pyspectral-based Rayleigh correction modifier.
_create_test_data(name, wavelength, resolution)

_get_angles_prereqs_and_opts(as_optionals, dtype)

_make_data_area()
Create test area definition and data.
test_rayleigh_corrector(name, wavelength, resolution, aerosol_type, reduce_lim_low, reduce_lim_high,
reduce_strength, exp_mean, exp_unique, dtype)
Test PSPRayleighReflectance with fake data.
test_rayleigh_with_angles(as_optionals, dtype)
Test PSPRayleighReflectance with angles provided.
class satpy.tests.test_modifiers.TestSunZenithCorrector
Bases: object
Test case for the zenith corrector.
test_basic_default_not_provided(sunz_ds1, as_32bit)
Test default limits when SZA isn’t provided.
test_basic_default_provided(data_arr, sunz_sza, dtype)
Test default limits when SZA is provided.
test_basic_lims_not_provided(sunz_ds1, dtype)
Test custom limits when SZA isn’t provided.
test_basic_lims_provided(data_arr, sunz_sza, dtype)
Test custom limits when SZA is provided.
test_imcompatible_areas(sunz_ds2, sunz_sza)
Test sunz correction on incompatible areas.
class satpy.tests.test_modifiers.TestSunZenithReducer
Bases: object
Test case for the sun zenith reducer.

616 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

classmethod setup_class()
Initialze SunZenithReducer classes that shall be tested.
test_custom_settings(sunz_ds1, sunz_sza, dtype)
Test custom settings with sza data available.
test_default_settings(sunz_ds1, sunz_sza, dtype)
Test default settings with sza data available.
test_invalid_max_sza(sunz_ds1, sunz_sza)
Test invalid max_sza with sza data available.
satpy.tests.test_modifiers._get_ds1(attrs)

satpy.tests.test_modifiers._shared_sunz_attrs(area_def )

satpy.tests.test_modifiers._sunz_area_def()
Get fake area for testing sunz generation.
satpy.tests.test_modifiers._sunz_bigger_area_def()
Get area that is twice the size of ‘sunz_area_def’.
satpy.tests.test_modifiers._sunz_stacked_area_def()
Get fake stacked area for testing sunz generation.
satpy.tests.test_modifiers.sunz_ds1()
Generate fake dataset for sunz tests.
satpy.tests.test_modifiers.sunz_ds1_stacked()
Generate fake dataset for sunz tests.
satpy.tests.test_modifiers.sunz_ds2()
Generate larger fake dataset for sunz tests.
satpy.tests.test_modifiers.sunz_sza()
Generate fake solar zenith angle data array for testing.

satpy.tests.test_node module

Unit tests for the dependency tree class and dependencies.


class satpy.tests.test_node.FakeCompositor(id)
Bases: object
A fake compositor.
Set up the fake compositor.
class satpy.tests.test_node.TestCompositorNode(methodName='runTest')
Bases: TestCase
Test case for the compositor node object.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

2.15. satpy 617


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

setUp()
Set up the test case.
test_add_optional_nodes()
Test adding optional nodes.
test_add_optional_nodes_twice()
Test adding optional nodes twice.
test_add_required_nodes()
Test adding required nodes.
test_add_required_nodes_twice()
Test adding required nodes twice.
test_compositor_node_init()
Test compositor node initialization.
class satpy.tests.test_node.TestCompositorNodeCopy(methodName='runTest')
Bases: TestCase
Test case for copying a node.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the test case.
test_node_data_is_copied()
Test that the data of the node is copied.
test_node_data_optional_nodes_are_copies()
Test that the optional nodes of the node data are copied.
test_node_data_required_nodes_are_copies()
Test that the required nodes of the node data are copied.

satpy.tests.test_readers module

Test classes and functions in the readers/__init__.py module.


class satpy.tests.test_readers.TestDatasetDict(methodName='runTest')
Bases: TestCase
Test DatasetDict and its methods.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Create a test DatasetDict.

618 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_contains()
Test DatasetDict contains method.
test_get_key()
Test ‘get_key’ special functions.
test_getitem()
Test DatasetDict getitem with different arguments.
test_init_dict()
Test DatasetDict init with a regular dict argument.
test_init_noargs()
Test DatasetDict init with no arguments.
test_keys()
Test keys method of DatasetDict.
test_setitem()
Test setitem method of DatasetDict.
class satpy.tests.test_readers.TestFSFile
Bases: object
Test the FSFile class.
test_equality(local_filename, local_filename2, local_zip_file)
Test that FSFile compares equal when it should.
test_fs_property_is_read_only(local_filename)
Test that the fs property of the class is read-only.
test_fs_property_read(local_filename)
Test reading the fs property of the class.
test_fsfile_with_fs_open_file_abides_pathlike(local_file, random_string)
Test that FSFile abides PathLike for fsspec OpenFile instances.
test_fsfile_with_pathlike(local_filename)
Test FSFile with path-like object.
test_fsfile_with_regular_filename_abides_pathlike(random_string)
Test that FSFile abides PathLike for regular filenames.
test_fsfile_with_regular_filename_and_fs_spec_abides_pathlike(random_string)
Test that FSFile abides PathLike for filename+fs instances.
test_hash(local_filename, local_filename2, local_zip_file)
Test that FSFile hashing behaves sanely.
test_open_local_fs_file(local_file)
Test opening a localfs file.
test_open_regular_file(local_filename)
Test opening a regular file.
test_open_zip_fs_openfile(local_filename2, local_zip_file)
Test opening a zipfs openfile.

2.15. satpy 619


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_open_zip_fs_regular_filename(local_filename2, local_zip_file)
Test opening a zipfs with a regular filename provided.
test_regular_filename_is_returned_with_str(random_string)
Test that str give the filename.
test_repr_includes_filename(local_file, random_string)
Test that repr includes the filename.
test_sorting_fsfiles(local_filename, local_filename2, local_zip_file)
Test sorting FSFiles.
class satpy.tests.test_readers.TestFindFilesAndReaders
Bases: object
Test the find_files_and_readers utility function.
setup_method()
Wrap HDF5 file handler with our own fake handler.
teardown_method()
Stop wrapping the HDF5 file handler.
test_bad_sensor()
Test bad sensor doesn’t find any files.
test_no_parameters(viirs_file)
Test with no limiting parameters.
test_no_parameters_both_atms_and_viirs(viirs_file, atms_file)
Test with no limiting parameters when there area both atms and viirs files in the same directory.
test_old_reader_name_mapping()
Test that requesting old reader names raises a warning.
test_pending_old_reader_name_mapping()
Test that requesting pending old reader names raises a warning.
test_reader_load_failed()
Test that an exception is raised when a reader can’t be loaded.
test_reader_name(viirs_file)
Test with default base_dir and reader specified.
test_reader_name_matched_end_time(viirs_file)
Test with end matching the filename.
End time in the middle of the file time should still match the file.
test_reader_name_matched_start_end_time(viirs_file)
Test with start and end time matching the filename.
test_reader_name_matched_start_time(viirs_file)
Test with start matching the filename.
Start time in the middle of the file time should still match the file.
test_reader_name_unmatched_start_end_time(viirs_file)
Test with start and end time matching the filename.

620 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_reader_other_name(monkeypatch, tmp_path)
Test with default base_dir and reader specified.
test_sensor(viirs_file)
Test that readers for the current sensor are loaded.
test_sensor_no_files()
Test that readers for the current sensor are loaded.
class satpy.tests.test_readers.TestGroupFiles(methodName='runTest')
Bases: TestCase
Test the ‘group_files’ utility function.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

_filenames_abi_glm =
['OR_ABI-L1b-RadF-M6C14_G16_s19000010000000_e19000010005000_c20403662359590.nc',
'OR_ABI-L1b-RadF-M6C14_G16_s19000010010000_e19000010015000_c20403662359590.nc',
'OR_ABI-L1b-RadF-M6C14_G16_s19000010020000_e19000010025000_c20403662359590.nc',
'OR_GLM-L2-GLMF-M3_G16_s19000010000000_e19000010001000_c20403662359590.nc',
'OR_GLM-L2-GLMF-M3_G16_s19000010001000_e19000010002000_c20403662359590.nc',
'OR_GLM-L2-GLMF-M3_G16_s19000010002000_e19000010003000_c20403662359590.nc',
'OR_GLM-L2-GLMF-M3_G16_s19000010003000_e19000010004000_c20403662359590.nc',
'OR_GLM-L2-GLMF-M3_G16_s19000010004000_e19000010005000_c20403662359590.nc',
'OR_GLM-L2-GLMF-M3_G16_s19000010005000_e19000010006000_c20403662359590.nc',
'OR_GLM-L2-GLMF-M3_G16_s19000010006000_e19000010007000_c20403662359590.nc',
'OR_GLM-L2-GLMF-M3_G16_s19000010007000_e19000010008000_c20403662359590.nc',
'OR_GLM-L2-GLMF-M3_G16_s19000010008000_e19000010009000_c20403662359590.nc',
'OR_GLM-L2-GLMF-M3_G16_s19000010009000_e19000010010000_c20403662359590.nc',
'OR_GLM-L2-GLMF-M3_G16_s19000010010000_e19000010011000_c20403662359590.nc',
'OR_GLM-L2-GLMF-M3_G16_s19000010011000_e19000010012000_c20403662359590.nc',
'OR_GLM-L2-GLMF-M3_G16_s19000010012000_e19000010013000_c20403662359590.nc',
'OR_GLM-L2-GLMF-M3_G16_s19000010013000_e19000010014000_c20403662359590.nc',
'OR_GLM-L2-GLMF-M3_G16_s19000010014000_e19000010015000_c20403662359590.nc',
'OR_GLM-L2-GLMF-M3_G16_s19000010015000_e19000010016000_c20403662359590.nc']

setUp()
Set up test filenames to use.
test_bad_reader()
Test that reader not existing causes an error.
test_default_behavior()
Test the default behavior with the ‘abi_l1b’ reader.
test_default_behavior_set()
Test the default behavior with the ‘abi_l1b’ reader.
test_large_time_threshold()
Test what happens when the time threshold holds multiple files.

2.15. satpy 621


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_multi_readers()
Test passing multiple readers.
test_multi_readers_empty_groups_missing_skip()
Verify empty groups are skipped.
Verify that all groups lacking ABI are skipped, resulting in only three groups that are all non-empty for
both instruments.
test_multi_readers_empty_groups_passed()
Verify that all groups are there, resulting in some that are empty.
test_multi_readers_empty_groups_raises_filenotfounderror()
Test behaviour on empty groups passing multiple readers.
Make sure it raises an exception, for there will be groups containing GLM but not ABI.
test_multi_readers_invalid_parameter()
Verify that invalid missing parameter raises ValueError.
test_no_reader()
Test that reader does not need to be provided.
test_non_datetime_group_key()
Test what happens when the start_time isn’t used for grouping.
test_two_instruments_files()
Test the behavior when two instruments files are provided.
This is undesired from a user point of view since we don’t want G16 and G17 files in the same Scene.
Readers (like abi_l1b) are or can be configured to have specific group keys for handling these situations.
Due to that this test forces the fallback group keys of (‘start_time’,).
test_two_instruments_files_split()
Test the default behavior when two instruments files are provided and split.
Tell the sorting to include the platform identifier as another field to use for grouping.
test_unknown_files()
Test that error is raised on unknown files.
test_viirs_orbits()
Test a reader that doesn’t use ‘start_time’ for default grouping.
test_viirs_override_keys()
Test overriding a group keys to add ‘start_time’.
class satpy.tests.test_readers.TestReaderLoader(methodName='runTest')
Bases: TestCase
Test the load_readers function.
Assumes that the VIIRS SDR reader exists and works.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

622 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

inject_fixtures(caplog, tmp_path)
Inject caplog to the test class.
setUp()
Wrap HDF5 file handler with our own fake handler.
tearDown()
Stop wrapping the HDF5 file handler.
test_all_filtered()
Test behaviour if no file matches the filter parameters.
test_all_filtered_multiple()
Test behaviour if no file matches the filter parameters.
test_almost_all_filtered()
Test behaviour if only one reader has datasets.
test_bad_reader_name_with_filenames()
Test bad reader name with filenames provided.
test_empty_filenames_as_dict()
Test passing filenames as a dictionary with an empty list of filenames.
test_filenames_and_reader()
Test with filenames and reader specified.
test_filenames_as_dict()
Test loading readers where filenames are organized by reader.
test_filenames_as_dict_bad_reader()
Test loading with filenames dict but one of the readers is bad.
test_filenames_as_dict_with_reader()
Test loading from a filenames dict with a single reader specified.
This can happen in the deprecated Scene behavior of passing a reader and a base_dir.
test_filenames_as_path()
Test with filenames specified as pathlib.Path.
test_filenames_only()
Test with filenames specified.
test_missing_requirements(*mocks)
Test warnings and exceptions in case of missing requirements.
test_no_args()
Test no args provided.
This should check the local directory which should have no files.
test_yaml_error_message()
Test that YAML errors are logged properly.
class satpy.tests.test_readers.TestYAMLFiles
Bases: object
Test and analyze the reader configuration files.

2.15. satpy 623


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_available_readers()
Test the ‘available_readers’ function.
test_available_readers_base_loader(monkeypatch)
Test the ‘available_readers’ function for yaml loader type BaseLoader.
test_filename_matches_reader_name()
Test that every reader filename matches the name in the YAML.
satpy.tests.test_readers._assert_is_open_file_and_close(opened)

satpy.tests.test_readers._generate_random_string()

satpy.tests.test_readers._local_file(tmp_path_factory, filename: str) → Iterator[Path]

satpy.tests.test_readers._open_h5py()

satpy.tests.test_readers._open_xarray_default()

satpy.tests.test_readers._open_xarray_h5netcdf()

satpy.tests.test_readers._open_xarray_netcdf4()

satpy.tests.test_readers._posixify_path(filename)

satpy.tests.test_readers.atms_file(tmp_path, monkeypatch)
Create a dummy atms file.
satpy.tests.test_readers.local_file(local_filename)
Open local file with fsspec.
satpy.tests.test_readers.local_filename(tmp_path_factory, random_string)
Create simple on-disk file.
satpy.tests.test_readers.local_filename2(tmp_path_factory)
Create a second local file.
satpy.tests.test_readers.local_hdf5_filename(tmp_path_factory)
Create on-disk HDF5 file.
satpy.tests.test_readers.local_hdf5_fsspec(local_hdf5_filename)
Get fsspec OpenFile pointing to local HDF5 file.
satpy.tests.test_readers.local_hdf5_path(local_hdf5_filename)
Get Path object pointing to local HDF5 file.
satpy.tests.test_readers.local_netcdf_filename(tmp_path_factory)
Create a simple local NetCDF file.
satpy.tests.test_readers.local_netcdf_fsfile(local_netcdf_fsspec)
Get FSFile object wrapping an fsspec OpenFile pointing to local netcdf file.
satpy.tests.test_readers.local_netcdf_fsspec(local_netcdf_filename)
Get fsspec OpenFile object pointing to local netcdf file.
satpy.tests.test_readers.local_netcdf_path(local_netcdf_filename)
Get Path object pointing to local netcdf file.

624 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.test_readers.local_zip_file(local_filename2)
Create local zip file containing one local file.
satpy.tests.test_readers.make_dataid(**items)
Make a data id.
satpy.tests.test_readers.random_string()
Random string to be used as fake file content.
satpy.tests.test_readers.test_open_file_or_filename(file_thing, create_read_func)
Test various combinations of file-like things and opening them with various libraries.
satpy.tests.test_readers.test_open_file_or_filename_uses_mode(tmp_path)
Test that open_file_or_filename uses provided mode.
satpy.tests.test_readers.viirs_file(tmp_path, monkeypatch)
Create a dummy viirs file.

satpy.tests.test_regressions module

Test fixed bugs.


satpy.tests.test_regressions.generate_fake_abi_xr_dataset(filename, chunks=None, **kwargs)
Create a fake xarray dataset for abi data.
This is an incomplete copy of existing file structures.
satpy.tests.test_regressions.test_1088(fake_open_dataset)
Check that copied arrays gets resampled.
satpy.tests.test_regressions.test_1258(fake_open_dataset)
Save true_color from abi with radiance doesn’t need two resamplings.
satpy.tests.test_regressions.test_no_enums(fake_open_dataset)
Check that no enums are inserted in the resulting attrs.

satpy.tests.test_resample module

Unittests for resamplers.


class satpy.tests.test_resample.TestBilinearResampler(methodName='runTest')
Bases: TestCase
Test the bilinear resampler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_bil_resampling(xr_resampler, create_filename, move_existing_caches)


Test the bilinear resampler.
test_move_existing_caches()
Test that existing caches are moved to a subdirectory.

2.15. satpy 625


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.test_resample.TestBucketAvg(methodName='runTest')
Bases: TestCase
Test the bucket resampler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

_compute_mocked_bucket_avg(data, return_data=None, **kwargs)


Compute the mocked bucket average.
setUp()
Create fake area definitions and resampler to be tested.
test_compute()
Test bucket resampler computation.
test_compute_and_use_skipna_handling()
Test bucket resampler computation and use skipna handling.
test_init()
Test bucket resampler initialization.
test_precompute(bucket)
Test bucket resampler precomputation.
test_resample(pyresample_bucket)
Test bucket resamplers resample method.
class satpy.tests.test_resample.TestBucketCount(methodName='runTest')
Bases: TestCase
Test the count bucket resampler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

_compute_mocked_bucket_count(data, return_data=None, **kwargs)


Compute the mocked bucket count.
setUp()
Create fake area definitions and resampler to be tested.
test_compute()
Test count bucket resampler computation.
class satpy.tests.test_resample.TestBucketFraction(methodName='runTest')
Bases: TestCase
Test the fraction bucket resampler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.

626 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_classSetupFailed = False

_class_cleanups = []

setUp()
Create fake area definitions and resampler to be tested.
test_compute()
Test fraction bucket resampler computation.
test_resample(pyresample_bucket)
Test fraction bucket resamplers resample method.
class satpy.tests.test_resample.TestBucketSum(methodName='runTest')
Bases: TestCase
Test the sum bucket resampler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

_compute_mocked_bucket_sum(data, return_data=None, **kwargs)


Compute the mocked bucket sum.
setUp()
Create fake area definitions and resampler to be tested.
test_compute()
Test sum bucket resampler computation.
test_compute_and_use_skipna_handling()
Test bucket resampler computation and use skipna handling.
class satpy.tests.test_resample.TestCoordinateHelpers(methodName='runTest')
Bases: TestCase
Test various utility functions for working with coordinates.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_area_def_coordinates()
Test coordinates being added with an AreaDefinition.
test_swath_def_coordinates()
Test coordinates being added with an SwathDefinition.
class satpy.tests.test_resample.TestHLResample(methodName='runTest')
Bases: TestCase
Test the higher level resampling functions.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.

2.15. satpy 627


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_classSetupFailed = False

_class_cleanups = []

test_type_preserve()
Check that the type of resampled datasets is preserved.
class satpy.tests.test_resample.TestKDTreeResampler(methodName='runTest')
Bases: TestCase
Test the kd-tree resampler.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_kd_resampling(xr_resampler, create_filename, zarr_open, xr_dset)


Test the kd resampler.
class satpy.tests.test_resample.TestNativeResampler
Bases: object
Tests for the ‘native’ resampling method.
setup_method()
Create test data used by multiple tests.
test_expand_dims()
Test expanding native resampling with 2D data.
test_expand_dims_3d()
Test expanding native resampling with 3D data.
test_expand_reduce_agg_rechunk()
Test that an incompatible factor for the chunk size is rechunked.
This can happen when a user chunks their data that makes sense for the overall shape of the array and
for their local machine’s performance, but the resulting resampling factor does not divide evenly into that
chunk size.
test_expand_reduce_aggregate()
Test classmethod ‘expand_reduce’ to aggregate by half.
test_expand_reduce_aggregate_identity()
Test classmethod ‘expand_reduce’ returns the original dask array when factor is 1.
test_expand_reduce_aggregate_invalid(dim0_factor)
Test classmethod ‘expand_reduce’ fails when factor does not divide evenly.
test_expand_reduce_numpy()
Test classmethod ‘expand_reduce’ converts numpy arrays to dask arrays.
test_expand_reduce_replicate()
Test classmethod ‘expand_reduce’ to replicate by 2.
test_expand_without_dims()
Test expanding native resampling with no dimensions specified.

628 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_expand_without_dims_4D()
Test expanding native resampling with 4D data with no dimensions specified.
satpy.tests.test_resample.get_test_data(input_shape=(100, 50), output_shape=(200, 100),
output_proj=None, input_dims=('y', 'x'))
Get common data objects used in testing.
Returns
• input_data_on_area: DataArray with dimensions as if it is a gridded dataset.
• input_area_def: AreaDefinition of the above DataArray
• input_data_on_swath: DataArray with dimensions as if it is a swath.
• input_swath: SwathDefinition of the above DataArray
• target_area_def: AreaDefinition to be used as a target for resampling
Return type
tuple

satpy.tests.test_testing module

Tests for the testing helper module.


satpy.tests.test_testing.test_fake_reading(tmp_path)
Test that the fake reading context manager populates a scene.

satpy.tests.test_utils module

Testing of utils.
class satpy.tests.test_utils.TestCheckSatpy
Bases: object
Test the ‘check_satpy’ function.
test_basic_check_satpy()
Test ‘check_satpy’ basic functionality.
test_specific_check_satpy(capsys)
Test ‘check_satpy’ with specific features provided.
class satpy.tests.test_utils.TestGeoUtils
Bases: object
Testing geo-related utility functions.
test_angle2xyz(azizen, xyz)
Test the angle2xyz function.
test_lonlat2xyz(lonlat, xyz)
Test the lonlat2xyz function.
test_proj_units_to_meters(prj, exp_prj)
Test proj units to meters conversion.
test_xyz2angle(xyz, acos, azizen)
Test xyz2angle.

2.15. satpy 629


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_xyz2lonlat(xyz, asin, lonlat)


Test xyz2lonlat.
class satpy.tests.test_utils.TestGetSatPos
Bases: object
Tests for ‘get_satpos’.
test_get_satpos(included_prefixes, preference, expected_result)
Test getting the satellite position.
test_get_satpos_fails_with_informative_error(attrs)
Test that get_satpos raises an informative error message.
test_get_satpos_from_satname(caplog)
Test getting satellite position from satellite name only.
class satpy.tests.test_utils.TestShowVersions
Bases: object
Test the ‘show_versions’ function.
test_basic_show_versions()
Test ‘check_satpy’ basic functionality.
test_show_missing_specific_version(capsys)
Test ‘show_version’ works with missing package.
test_show_specific_version(capsys)
Test ‘show_version’ works with installed package.
satpy.tests.test_utils._data_arrays_from_params(shapes: list[tuple[int, ...]], chunks: list[tuple[int, ...]],
dims: list[tuple[int, ...]]) → Generator[DataArray,
None, None]

satpy.tests.test_utils._verify_unchanged_chunks(data_arrays: list[DataArray], orig_arrays:


list[DataArray]) → None

satpy.tests.test_utils._verify_unified(data_arrays: list[DataArray]) → None

satpy.tests.test_utils.test_chunk_size_limit()
Check the chunk size limit computations.
satpy.tests.test_utils.test_chunk_size_limit_from_dask_config()
Check the chunk size limit computations.
satpy.tests.test_utils.test_convert_remote_files_to_fsspec_filename_dict()
Test convertion of remote files to fsspec objects.
Case where filenames is a dictionary mapping readers and filenames.
satpy.tests.test_utils.test_convert_remote_files_to_fsspec_fsfile()
Test convertion of remote files to fsspec objects.
Case where the some of the files are already FSFile objects.
satpy.tests.test_utils.test_convert_remote_files_to_fsspec_local_files()
Test convertion of remote files to fsspec objects.
Case without scheme/protocol, which should default to plain filenames.

630 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.test_utils.test_convert_remote_files_to_fsspec_local_pathlib_files()
Test convertion of remote files to fsspec objects.
Case using pathlib objects as filenames.
satpy.tests.test_utils.test_convert_remote_files_to_fsspec_mixed_sources()
Test convertion of remote files to fsspec objects.
Case with mixed local and remote files.
satpy.tests.test_utils.test_convert_remote_files_to_fsspec_storage_options(open_files)
Test convertion of remote files to fsspec objects.
Case with storage options given.
satpy.tests.test_utils.test_convert_remote_files_to_fsspec_windows_paths()
Test convertion of remote files to fsspec objects.
Case where windows paths are used.
satpy.tests.test_utils.test_datetime64_to_pydatetime(dt64, expected)
Test conversion from datetime64 to Python datetime.
satpy.tests.test_utils.test_debug_on(caplog)
Test that debug_on is working as expected.
satpy.tests.test_utils.test_find_in_ancillary()
Test finding a dataset in ancillary variables.
satpy.tests.test_utils.test_get_legacy_chunk_size()
Test getting the legacy chunk size.
satpy.tests.test_utils.test_import_error_helper()
Test the import error helper.
satpy.tests.test_utils.test_logging_on_and_off(caplog)
Test that switching logging on and off works.
satpy.tests.test_utils.test_make_fake_scene()
Test the make_fake_scene utility.
Although the make_fake_scene utility is for internal testing purposes, it has grown sufficiently complex that it
needs its own testing.
satpy.tests.test_utils.test_resolution_chunking(chunks, shape, previous_chunks, lr_mult,
chunk_dtype, exp_result)
Test normalize_low_res_chunks helper function.
satpy.tests.test_utils.test_unify_chunks(shapes, chunks, dims, exp_unified)
Test unify_chunks utility function.

satpy.tests.test_writers module

Test generic writer functions.


class satpy.tests.test_writers.TestBaseWriter
Bases: object
Test the base writer class.

2.15. satpy 631


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

setup_method()
Set up tests.
teardown_method()
Remove the temporary directory created for a test.
test_save_dataset_dynamic_filename(fmt_fn, exp_fns)
Test saving a dataset with a format filename specified.
test_save_dataset_dynamic_filename_with_dir()
Test saving a dataset with a format filename that includes a directory.
test_save_dataset_static_filename()
Test saving a dataset with a static filename specified.
class satpy.tests.test_writers.TestComplexSensorEnhancerConfigs
Bases: _BaseCustomEnhancementConfigTests
Test enhancement configs that use or expect multiple sensors.
ENH_FN = 'test_sensor1.yaml'

ENH_FN2 = 'test_sensor2.yaml'

TEST_CONFIGS: dict[str, str] = {'test_sensor1.yaml': '\nenhancements:\n


test1_sensor1_specific:\n name: test1\n sensor: test_sensor1\n operations:\n -
name: stretch\n method: !!python/name:satpy.enhancements.stretch\n kwargs:
{stretch: crude, min_stretch: 0, max_stretch: 200}\n\n ', 'test_sensor2.yaml':
'\nenhancements:\n default:\n operations:\n - name: stretch\n method:
!!python/name:satpy.enhancements.stretch\n kwargs: {stretch: crude, min_stretch:
0, max_stretch: 100}\n test1_sensor2_specific:\n name: test1\n sensor:
test_sensor2\n operations:\n - name: stretch\n method:
!!python/name:satpy.enhancements.stretch\n kwargs: {stretch: crude, min_stretch:
0, max_stretch: 50}\n exact_multisensor_comp:\n name: my_comp\n sensor:
[test_sensor1, test_sensor2]\n operations:\n - name: stretch\n method:
!!python/name:satpy.enhancements.stretch\n kwargs: {stretch: crude, min_stretch:
0, max_stretch: 20}\n '}

test_enhance_bad_query_value()
Test Enhancer doesn’t fail when query includes bad values.
test_multisensor_choice(test_configs_path)
Test that a DataArray with two sensors works.
test_multisensor_exact(test_configs_path)
Test that a DataArray with two sensors can match exactly.
class satpy.tests.test_writers.TestComputeWriterResults
Bases: object
Test compute_writer_results().
setup_method()
Create temporary directory to save files to and a mock scene.
teardown_method()
Remove the temporary directory created for a test.

632 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_empty()
Test empty result list.
test_geotiff()
Test writing to mitiff file.
test_mixed()
Test writing to multiple mixed-type files.
test_multiple_geotiff()
Test writing to mitiff file.
test_multiple_simple()
Test writing to geotiff files.
test_simple_image()
Test writing to PNG file.
class satpy.tests.test_writers.TestEnhancer
Bases: object
Test basic Enhancer functionality with builtin configs.
test_basic_init_no_args()
Test Enhancer init with no arguments passed.
test_basic_init_no_enh()
Test Enhancer init requesting no enhancements.
test_basic_init_provided_enh()
Test Enhancer init with string enhancement configs.
test_init_nonexistent_enh_file()
Test Enhancer init with a nonexistent enhancement configuration file.
class satpy.tests.test_writers.TestEnhancerUserConfigs
Bases: _BaseCustomEnhancementConfigTests
Test Enhancer functionality when user’s custom configurations are present.
ENH_ENH_FN = 'enhancements/test_sensor.yaml'

ENH_ENH_FN2 = 'enhancements/test_sensor2.yaml'

ENH_FN = 'test_sensor.yaml'

ENH_FN2 = 'test_sensor2.yaml'

ENH_FN3 = 'test_empty.yaml'

TEST_CONFIGS: dict[str, str] = {'enhancements/test_sensor.yaml': '\nenhancements:\n


test1_kelvin:\n name: test1\n units: kelvin\n operations:\n - name: stretch\n
method: !!python/name:satpy.enhancements.stretch\n kwargs: {stretch: crude,
min_stretch: 0, max_stretch: 20}\n\n ', 'enhancements/test_sensor2.yaml': '\n\n
', 'test_empty.yaml': '', 'test_sensor.yaml': '\nenhancements:\n test1_default:\n
name: test1\n operations:\n - name: stretch\n method:
!!python/name:satpy.enhancements.stretch\n kwargs: {stretch: linear, cutoffs:
[0., 0.]}\n\n ', 'test_sensor2.yaml': '\n\n\n '}

2.15. satpy 633


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_enhance_empty_config(test_configs_path)
Test Enhancer doesn’t fail with empty enhancement file.
test_enhance_with_sensor_entry(test_configs_path)
Test enhancing an image with a configuration section.
test_enhance_with_sensor_entry2(test_configs_path)
Test enhancing an image with a more detailed configuration section.
test_enhance_with_sensor_no_entry(test_configs_path)
Test enhancing an image that has no configuration sections.
test_no_enhance()
Test turning off enhancements.
test_writer_custom_enhance()
Test using custom enhancements with writer.
test_writer_no_enhance()
Test turning off enhancements with writer.
class satpy.tests.test_writers.TestOverlays
Bases: object
Tests for add_overlay and add_decorate functions.
setup_method()
Create test data and mock pycoast/pydecorate.
teardown_method()
Turn off pycoast/pydecorate mocking.
test_add_decorate_basic_l()
Test basic add_decorate usage with L data.
test_add_decorate_basic_rgb()
Test basic add_decorate usage with RGB data.
test_add_overlay_basic_l()
Test basic add_overlay usage with L data.
test_add_overlay_basic_rgb()
Test basic add_overlay usage with RGB data.
class satpy.tests.test_writers.TestReaderEnhancerConfigs
Bases: _BaseCustomEnhancementConfigTests
Test enhancement configs that use reader name.
ENH_FN = 'test_sensor1.yaml'

634 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

TEST_CONFIGS: dict[str, str] = {'test_sensor1.yaml': '\nenhancements:\n


default_reader2:\n reader: reader2\n operations:\n - name: stretch\n method:
!!python/name:satpy.enhancements.stretch\n kwargs: {stretch: crude, min_stretch:
0, max_stretch: 75}\n default:\n operations:\n - name: stretch\n method:
!!python/name:satpy.enhancements.stretch\n kwargs: {stretch: crude, min_stretch:
0, max_stretch: 100}\n test1_reader2_specific:\n name: test1\n reader: reader2\n
operations:\n - name: stretch\n method: !!python/name:satpy.enhancements.stretch\n
kwargs: {stretch: crude, min_stretch: 0, max_stretch: 50}\n
test1_reader1_specific:\n name: test1\n reader: reader1\n operations:\n - name:
stretch\n method: !!python/name:satpy.enhancements.stretch\n kwargs: {stretch:
crude, min_stretch: 0, max_stretch: 200}\n '}

_get_enhanced_image(data_arr, test_configs_path)

_get_test_data_array()

test_no_matching_reader(test_configs_path)
Test that a DataArray with no matching ‘reader’ works.
test_no_reader(test_configs_path)
Test that a DataArray with no ‘reader’ metadata works.
test_only_reader_matches(test_configs_path)
Test that a DataArray with only a matching ‘reader’ works.
test_reader_and_name_match(test_configs_path)
Test that a DataArray with a matching ‘reader’ and ‘name’ works.
class satpy.tests.test_writers.TestWritersModule
Bases: object
Test the writers module.
test_show(mock_get_image)
Check showing.
test_to_image_1d()
Conversion to image.
test_to_image_2d(mock_geoimage)
Conversion to image.
test_to_image_3d(mock_geoimage)
Conversion to image.
class satpy.tests.test_writers.TestYAMLFiles
Bases: object
Test and analyze the writer configuration files.
test_available_writers()
Test the ‘available_writers’ function.
test_filename_matches_writer_name()
Test that every writer filename matches the name in the YAML.
class satpy.tests.test_writers._BaseCustomEnhancementConfigTests
Bases: object

2.15. satpy 635


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

TEST_CONFIGS: dict[str, str] = {}

test_configs_path(tmp_path_factory)
Create test enhancement configuration files in a temporary directory.
The root temporary directory is changed to and returned.
class satpy.tests.test_writers._CustomImageWriter(**kwargs)
Bases: ImageWriter
Initialize image writer object.
Parameters
• name (str) – A name for this writer for log and error messages. If this writer is configured
in a YAML file its name should match the name of the YAML file. Writer names may also
appear in output file attributes.
• filename (str) – Filename to save data to. This filename can and should specify certain
python string formatting fields to differentiate between data written to the files. Any attributes
provided by the .attrs of a DataArray object may be included. Format and conversion
specifiers provided by the trollsift package may also be used. Any directories in the
provided pattern will be created if they do not exist. Example:

{platform_name}_{sensor}_{name}_{start_time:%Y%m%d_%H%M%S}.tif

• base_dir (str) – Base destination directories for all created files.


• enhance (bool or Enhancer) – Whether to automatically enhance data to be more visu-
ally useful and to fit inside the file format being saved to. By default, this will default to
using the enhancement configuration files found using the default Enhancer class. This can
be set to False so that no enhancments are performed. This can also be an instance of the
Enhancer class if further custom enhancement is needed.
• kwargs (dict) – Additional keyword arguments to pass to the Writer base class.
Changed in version 0.10: Deprecated enhancement_config_file and ‘enhancer’ in favor of enhance. Pass an
instance of the Enhancer class to enhance instead.
save_image(img, **kwargs)
Save Image object to a given filename.
Parameters
• img (trollimage.xrimage.XRImage) – Image object to save to disk.
• filename (str) – Optionally specify the filename to save this dataset to. It may include
string formatting patterns that will be filled in by dataset attributes.
• compute (bool) – If True (default), compute and save the dataset. If False return either
a Dask Delayed object or tuple of (source, target). See the return values below for more
information.
• **kwargs – Other keyword arguments to pass to this writer.
Returns
Value returned depends on compute. If compute is True then the return value is the result of
computing a Dask Delayed object or running dask.array.store(). If compute is False
then the returned value is either a Dask Delayed object that can be computed using de-
layed.compute() or a tuple of (source, target) that should be passed to dask.array.store().
If target is provided the the caller is responsible for calling target.close() if the target has this
method.

636 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.test_writers.test_group_results_by_output_file(tmp_path)
Test grouping results by output file.
Add a test for grouping the results from save_datasets(. . . , compute=False) by output file. This is useful if for
some reason we want to treat each output file as a seperate computation (that can still be computed together later).

satpy.tests.test_yaml_reader module

Testing the yaml_reader module.


class satpy.tests.test_yaml_reader.DummyReader(filename, filename_info, filetype_info)
Bases: BaseFileHandler
Dummy reader instance.
Initialize the dummy reader.
property end_time
Return end time.
property start_time
Return start time.
class satpy.tests.test_yaml_reader.FakeFH(start_time, end_time)
Bases: BaseFileHandler
Fake file handler class.
Initialize fake file handler.
property end_time
Return end time.
property start_time
Return start time.
satpy.tests.test_yaml_reader.GVSYReader()
Get a fixture of the GEOVariableSegmentYAMLReader.
class satpy.tests.test_yaml_reader.TestFileFileYAMLReader(methodName='runTest')
Bases: TestCase
Test units from FileYAMLReader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Prepare a reader instance with a fake config.
test_all_data_ids()
Check that all datasets ids are returned.
test_all_dataset_names()
Get all dataset names.

2.15. satpy 637


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_available_dataset_ids()
Get ids of the available datasets.
test_available_dataset_names()
Get ids of the available datasets.
test_deprecated_passing_config_files()
Test that we get an exception when config files are passed to inti.
test_file_covers_area(bnd, adb, gad)
Test that area coverage is checked properly.
test_filter_fh_by_time()
Check filtering filehandlers by time.
test_get_coordinates_for_dataset_key()
Test getting coordinates for a key.
test_get_coordinates_for_dataset_key_without()
Test getting coordinates for a key without coordinates.
test_get_coordinates_for_dataset_keys()
Test getting coordinates for keys.
test_get_file_handlers()
Test getting filehandler to load a dataset.
test_load_area_def(sad)
Test loading the area def for the reader.
test_load_entire_dataset(xarray)
Check loading an entire dataset.
test_preferred_filetype()
Test finding the preferred filetype.
test_select_from_directory()
Check select_files_from_directory.
test_select_from_pathnames()
Check select_files_from_pathnames.
test_start_end_time()
Check start and end time behaviours.
test_supports_sensor()
Check supports_sensor.
class satpy.tests.test_yaml_reader.TestFileFileYAMLReaderMultipleFileTypes(methodName='runTest')
Bases: TestCase
Test units from FileYAMLReader with multiple file types.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

638 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

setUp()
Prepare a reader instance with a fake config.
test_update_ds_ids_from_file_handlers()
Test updating existing dataset IDs with information from the file.
class satpy.tests.test_yaml_reader.TestFileFileYAMLReaderMultiplePatterns(methodName='runTest')
Bases: TestCase
Test units from FileYAMLReader with multiple readers.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Prepare a reader instance with a fake config.
test_create_filehandlers()
Check create_filehandlers.
test_fn_items_for_ft()
Check filename_items_for_filetype.
test_select_from_pathnames()
Check select_files_from_pathnames.
test_serializable()
Check that a reader is serializable by dask.
This ensures users are able to serialize a Scene object that contains readers.
class satpy.tests.test_yaml_reader.TestFileYAMLReaderLoading(methodName='runTest')
Bases: TestCase
Tests for FileYAMLReader.load.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_check_area_for_ch01()

_classSetupFailed = False

_class_cleanups = []

setUp()
Prepare a reader instance with a fake config.
test_load_dataset_with_builtin_coords()
Test loading a dataset with builtin coordinates.
test_load_dataset_with_builtin_coords_in_wrong_order()
Test loading a dataset with builtin coordinates in the wrong order.

2.15. satpy 639


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.tests.test_yaml_reader.TestFileYAMLReaderWithCustomIDKey(methodName='runTest')
Bases: TestCase
Test units from FileYAMLReader with custom id_keys.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

setUp()
Set up the test case.
test_custom_type_with_dict_contents_gets_parsed_correctly()
Test custom type with dictionary contents gets parsed correctly.
class satpy.tests.test_yaml_reader.TestGEOFlippableFileYAMLReader(methodName='runTest')
Bases: TestCase
Test GEOFlippableFileYAMLReader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_load_dataset_with_area_for_data_without_area(ldwa)
Test _load_dataset_with_area() for data wihtout area information.
test_load_dataset_with_area_for_single_areas(ldwa)
Test _load_dataset_with_area() for single area definitions.
test_load_dataset_with_area_for_stacked_areas(ldwa)
Test _load_dataset_with_area() for stacked area definitions.
test_load_dataset_with_area_for_swath_def_data(ldwa)
Test _load_dataset_with_area() for swath definition data.
class satpy.tests.test_yaml_reader.TestGEOSegmentYAMLReader(methodName='runTest')
Bases: TestCase
Test GEOSegmentYAMLReader.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_find_missing_segments()
Test _find_missing_segments().
test_get_expected_segments(cfh)
Test that expected segments can come from the filename.

640 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_load_area_def(pesa, plsa, sad, parent_load_area_def )


Test _load_area_def().
test_load_dataset(mss, xr, parent_load_dataset)
Test _load_dataset().
test_pad_earlier_segments_area(AreaDefinition)
Test _pad_earlier_segments_area().
test_pad_later_segments_area(AreaDefinition)
Test _pad_later_segments_area().
test_segments_sorting(cfh)
Test that segment filehandlers are sorted by segment number.
class satpy.tests.test_yaml_reader.TestGEOVariableSegmentYAMLReader
Bases: object
Test GEOVariableSegmentYAMLReader.
test_get_empty_segment(GVSYReader, fake_mss, fake_xr, fake_geswh)
Test execution of (overridden) get_empty_segment inside _load_dataset.
test_get_empty_segment_with_height()
Test _get_empty_segment_with_height().
test_pad_earlier_segments_area(GVSYReader, fake_adef )
Test _pad_earlier_segments_area() for the variable segment case.
test_pad_later_segments_area(GVSYReader, fake_adef )
Test _pad_later_segments_area() in the variable padding case.
test_pad_later_segments_area_for_multiple_segments_gap(GVSYReader, fake_adef )
Test _pad_later_segments_area() in the variable padding case for multiple gaps with multiple segments.
class satpy.tests.test_yaml_reader.TestUtils(methodName='runTest')
Bases: TestCase
Test the utility functions.
Create an instance of the class that will use the named test method when executed. Raises a ValueError if the
instance does not have a method with the specified name.
_classSetupFailed = False

_class_cleanups = []

test_get_filebase()
Check the get_filebase function.
test_listify_string()
Check listify_string.
test_match_filenames()
Check that matching filenames works.
test_match_filenames_windows_forward_slash()
Check that matching filenames works on Windows with forward slashes.
This is common from Qt5 which internally uses forward slashes everywhere.

2.15. satpy 641


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.test_yaml_reader._create_mocked_basic_fh()

satpy.tests.test_yaml_reader._create_mocked_fh_and_areadef(aex, ashape, expected_segments,


segment, chk_pos_info)

satpy.tests.test_yaml_reader.available_datasets(self , configured_datasets=None)
Fake available_datasets for testing multiple file types.
satpy.tests.test_yaml_reader.fake_adef()
Get a fixture of the patched AreaDefinition.
satpy.tests.test_yaml_reader.fake_geswh()
Get a fixture of the patched _get_empty_segment_with_height.
satpy.tests.test_yaml_reader.fake_mss()
Get a fixture of the patched _find_missing_segments.
satpy.tests.test_yaml_reader.fake_xr()
Get a fixture of the patched xarray.
satpy.tests.test_yaml_reader.file_type_matches(self , ds_ftype)
Fake file_type_matches for testing multiple file types.

satpy.tests.utils module

Utilities for various satpy tests.


class satpy.tests.utils.CustomScheduler(max_computes=1)
Bases: object
Scheduler raising an exception if data are computed too many times.
Set starting and maximum compute counts.
class satpy.tests.utils.FakeCompositor(name, common_channel_mask=True, **kwargs)
Bases: GenericCompositor
Act as a compositor that produces fake RGB data.
Collect custom configuration values.
Parameters
common_channel_mask (bool) – If True, mask all the channels with a mask that combines all
the invalid areas of the given data.
class satpy.tests.utils.FakeFileHandler(filename, filename_info, filetype_info, **kwargs)
Bases: BaseFileHandler
Fake file handler to be used by test readers.
Initialize file handler and accept all keyword arguments.
available_datasets(configured_datasets=None)
Report YAML datasets available unless ‘not_available’ is specified during creation.
property end_time
Get static end time datetime object.
get_dataset(data_id: DataID, ds_info: dict)
Get fake DataArray for testing.

642 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property sensor_names
Get sensor name from filetype configuration.
property start_time
Get static start time datetime object.
class satpy.tests.utils.FakeModifier(name, prerequisites=None, optional_prerequisites=None,
**kwargs)
Bases: ModifierBase
Act as a modifier that performs different modifications.
Initialise the compositor.
_handle_res_change(datasets, info)

satpy.tests.utils._compare_nonarray(val1: Any, val2: Any) → None

satpy.tests.utils._compare_numpy_array(val1: ndarray, val2: ndarray) → None

satpy.tests.utils._filter_datasets(all_ds, names_or_ids)
Help filtering DataIDs by name or DataQuery.
satpy.tests.utils._get_did_for_fake_scene(area, arr, extra_attrs, daskify)
Add instance to fake scene. Helper for make_fake_scene.
satpy.tests.utils._get_fake_scene_area(arr, area)
Get area for fake scene. Helper for make_fake_scene.
satpy.tests.utils._swath_def_of_data_arrays(rows, cols)

satpy.tests.utils.assert_attrs_equal(attrs, attrs_exp, tolerance=0)


Test that attributes are equal.
Walks dictionary recursively. Numerical attributes are compared with the given relative tolerance.
satpy.tests.utils.assert_dict_array_equality(d1, d2)
Check that dicts containing arrays are equal.
satpy.tests.utils.assert_maximum_dask_computes(max_computes=1)
Context manager to make sure dask computations are not executed more than max_computes times.
satpy.tests.utils.convert_file_content_to_data_array(file_content, attrs=(), dims=('z', 'y', 'x'))
Help old reader tests that still use numpy arrays.
A lot of old reader tests still use numpy arrays and depend on the “var_name/attr/attr_name” convention estab-
lished before Satpy used xarray and dask. While these conventions are still used and should be supported, readers
need to use xarray DataArrays instead.
If possible, new tests should be based on pure DataArray objects instead of the “var_name/attr/attr_name” style
syntax provided by the utility file handlers.
Parameters
• file_content (dict) – Dictionary of string file keys to fake file data.
• attrs (iterable) – Series of attributes to copy to DataArray object from file content dic-
tionary. Defaults to no attributes.

2.15. satpy 643


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• dims (iterable) – Dimension names to use for resulting DataArrays. The second to last
dimension is used for 1D arrays, so for dims of ('z', 'y', 'x') this would use 'y'.
Otherwise, the dimensions are used starting with the last, so 2D arrays are ('y', 'x')
Dimensions are used in reverse order so the last dimension specified is used as the only
dimension for 1D arrays and the last dimension for other arrays.
satpy.tests.utils.make_cid(**items)
Make a DataID with a minimal set of keys to id composites.
satpy.tests.utils.make_dataid(**items)
Make a DataID with default keys.
satpy.tests.utils.make_dsq(**items)
Make a dataset query.
satpy.tests.utils.make_fake_scene(content_dict, daskify=False, area=True, common_attrs=None)
Create a fake Scene.
Create a fake Scene object from fake data. Data are provided in the content_dict argument. In content_dict,
keys should be strings or DataID, and values may be either numpy.ndarray or xarray.DataArray, in either case with
exactly two dimensions. The function will convert each of the numpy.ndarray objects into an xarray.DataArray
and assign those as datasets to a Scene object. A fake AreaDefinition will be assigned for each array, unless
disabled by passing area=False. When areas are automatically generated, arrays with the same shape will get
the same area.
This function is exclusively intended for testing purposes.
If regular ndarrays are passed and the keyword argument daskify is True, DataArrays will be created as dask
arrays. If False (default), regular DataArrays will be created. When the user passes xarray.DataArray objects
then this flag has no effect.
Parameters
• content_dict (Mapping) – Mapping where keys correspond to objects accepted by Scene.
__setitem__, i.e. strings or DataID, and values may be either numpy.ndarray or xarray.
DataArray.
• daskify (bool) – optional, to use dask when converting numpy.ndarray to xarray.
DataArray. No effect when the values in content_dict are already xarray.DataArray.
• area (bool or BaseDefinition) – Can be True, False, or an instance of pyresample.
geometry.BaseDefinition such as AreaDefinition or SwathDefinition. If True,
which is the default, automatically generate areas with the name “test-area”. If False, values
will not have assigned areas. If an instance of pyresample.geometry.BaseDefinition,
those instances will be used for all generated fake datasets. Warning: Passing an area as a
string (area="germ") is not supported.
• common_attrs (Mapping) – optional, additional attributes that will be added to every
dataset in the scene.
Returns
Scene object with datasets corresponding to content_dict.
satpy.tests.utils.skip_numba_unstable_if_missing()
Determine if numba-based tests should be skipped during unstable CI tests.
If numba fails to import it could be because numba is not compatible with a newer version of numpy. This is
very likely to happen in the unstable/experimental CI environment. This function returns True if numba-based
tests should be skipped if numba could not be imported and we’re in the unstable environment. We determine if
we’re in this CI environment by looking for the UNSTABLE="1" environment variable.

644 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.utils.spy_decorator(method_to_decorate)
Fancy decorator to wrap an object while still calling it.
See https://stackoverflow.com/a/41599695/433202
satpy.tests.utils.xfail_h5py_unstable_numpy2()
Determine if h5py-based tests should be xfail in the unstable numpy 2.x environment.
satpy.tests.utils.xfail_skyfield_unstable_numpy2()
Determine if skyfield-based tests should be xfail in the unstable numpy 2.x environment.

Module contents

The tests package.

satpy.writers package

Submodules

satpy.writers.awips_tiled module

The AWIPS Tiled writer is used to create AWIPS-compatible tiled NetCDF4 files.
The Advanced Weather Interactive Processing System (AWIPS) is a program used by the United States National
Weather Service (NWS) and others to view different forms of weather imagery. The original Sectorized Cloud and
Moisture Imagery (SCMI) functionality in AWIPS was a NetCDF4 format supported by AWIPS to store one image
broken up in to one or more “tiles”. This format has since been expanded to support many other products and so the
writer for this format in Satpy is generically called the “AWIPS Tiled” writer. You may still see SCMI referenced in
this documentation or in the source code for the writer. Once AWIPS is configured for specific products this writer can
be used to provide compatible products to the system.
The AWIPS Tiled writer takes 2D (y, x) geolocated data and creates one or more AWIPS-compatible NetCDF4 files.
The writer and the AWIPS client may need to be configured to make things appear the way the user wants in the AWIPS
client. The writer can only produce files for datasets mapped to areas with specific projections:
• lcc
• geos
• merc
• stere
This is a limitation of the AWIPS client and not of the writer. In the case where AWIPS has been updated to support
additional projections, this writer may also need to be updated to support those projections.

AWIPS Configuration

Depending on how this writer is used and the data it is provided, AWIPS may need additional configuration on the
server side to properly ingest the files produced. This will require administrator privileges to the ingest server(s) and
is not something that can be configured on the client. Note that any changes required must be done on all servers
that you wish to ingest your data files. The generic “polar” template this writer defaults to should limit the number of
modifications needed for any new data fields that AWIPS previously was unaware of. Once the data is ingested, the
client can be used to customize how the data looks on screen.
AWIPS requires files to follow a specific naming scheme so they can be routed to specific “decoders”. For the files
produced by this writer, this typically means editing the “goesr” decoder configuration in a directory like:

2.15. satpy 645


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

/awips2/edex/data/utility/common_static/site/<site>/distribution/goesr.xml

The “goesr” decoder is a subclass of the “satellite” decoder. You may see either name show up in the AWIPS ingest
logs. With the correct regular expression in the above file, your files should be passed to the right decoder, opened, and
parsed for data.
To tell AWIPS exactly what attributes and variables mean in your file, you’ll need to create or configure an XML file
in:

/awips2/edex/data/utility/common_static/site/<site>/satellite/goesr/descriptions/

See the existing files in this directory for examples. The “polar” template (see below) that this writer uses by default
is already configured in the “Polar” subdirectory assuming that the TOWR-S RPM package has been installed on your
AWIPS ingest server.

Templates

This writer allows for a “template” to be specified to control how the output files are structured and created. Templates
can be configured in the writer YAML file (awips_tiled.yaml) or passed as a dictionary to the template keyword
argument. Templates have three main sections:
1. global_attributes
2. coordinates
3. variables
Additionally, you can specify whether a template should produce files with one variable per file by specifying
single_variable: true or multiple variables per file by specifying single_variable: false. You can also
specify the output filename for a template using a Python format string. See awips_tiled.yaml for examples. Lastly,
a add_sector_id_global boolean parameter can be specified to add the user-provided sector_id keyword argu-
ment as a global attribute to the file.
The global_attributes section takes names of global attributes and then a series of options to “render” that attribute
from the metadata provided when creating files. For example:

product_name:
value: "{name}"

For more information see the satpy.writers.awips_tiled.NetCDFTemplate.get_attr_value() method.


The coordinates and variables are similar to each other in that they define how a variable should be created, the
attributes it should have, and the encoding to write to the file. Coordinates typically don’t need to be modified as tiled
files usually have only x and y dimension variables. The Variables on the other hand use a decision tree to determine
what section applies for a particular DataArray being saved. The basic structure is:

variables:
arbitrary_section_name:
<decision tree matching parameters>
var_name: "output_netcdf_variable_name"
attributes:
<attributes similar to global attributes>
encoding:
<xarray encoding parameters>

The “decision tree matching parameters” can be one or more of “name”, “standard_name’, “satellite”, “sensor”,
“area_id’, “units”, or “reader”. The writer will choose the best section for the DataArray being saved (the most matches).

646 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

If none of these parameters are specified in a section then it will be used when no other matches are found (the “default”
section).
The “encoding” parameters can be anything accepted by xarray’s to_netcdf method. See xarray.Dataset.
to_netcdf() for more information on the encoding` keyword argument.
For more examples see the existing builtin templates defined in awips_tiled.yaml.

Builtin Templates

There are only a few templates provided in Sapty currently.


• polar: A custom format developed for the CSPP Polar2Grid project at the University of Wisconsin - Madison
Space Science and Engineering Center (SSEC). This format is made available through the TOWR-S package that
can be installed for GOES-R support in AWIPS. This format is meant to be very generic and should theoretically
allow any variable to get ingested into AWIPS.
• glm_l2_radc: This format is used to produce standard files for the gridded GLM products produced by the CSPP
Geo Gridded GLM package. Support for this format is also available in the TOWR-S package on an AWIPS ingest
server. This format is specific to gridded GLM on the CONUS sector and is not meant to work for other data.
• glm_l2_radf: This format is used to produce standard files for the gridded GLM productes produced by the
CSPP Geo Gridded GLM package. Support for this format is also available in the TOWR-S package on an
AWIPS ingest server. This format is specific to gridded GLM on the Full Disk sector and is not meant to work
for other data.

Numbered versus Lettered Grids

By default this writer will save tiles by number starting with ‘1’ representing the upper-left image tile. Tile numbers
then increase along the column and then on to the next row.
By specifying lettered_grid as True tiles can be designated with a letter. Lettered grids or sectors are preconfigured
in the awips_tiled.yaml configuration file. The lettered tile locations are static and will not change with the data being
written to them. Each lettered tile is split into a certain number of subtiles (num_subtiles), default 2 rows by 2 columns.
Lettered tiles are meant to make it easier for receiving AWIPS clients/stations to filter what tiles they receive; saving
time, bandwidth, and space.
Any tiles (numbered or lettered) not containing any valid data are not created.

Updating tiles

There are some input data cases where we want to put new data in a tile file written by a previous execution. An example
is a pre-tiled input dataset that is processed one tile at a time. One input tile may map to one or more output AWIPS
tiles, but may not perfectly aligned, leaving empty/unused space in the output tile. The next input tile may be able to
fill in that empty space and should be allowed to write the “new” data to the file. This is the default behavior of the
AWIPS tiled writer. In cases where data overlaps the existing data in the tile, the newer data has priority.

Shifting Lettered Grids

Due to the static nature of the lettered grids, there is sometimes a need to shift the locations of where these tiles are
by up to 0.5 pixels in each dimension to align with the data being processed. This means that the tiles for a 1000m
resolution grid may be shifted up to 500m in each direction from the original definition of the lettered “sector”. This
can cause differences in the location of the tiles between executions depending on the locations of the input data. In
the worst case tile A01 from one execution could be shifted up to 1 grid cell from tile A01 in another execution (one is
shifted 0.5 pixels to the left, the other is shifted 0.5 to the right).
This shifting makes the calculations for generating tiles easier and more accurate. By default, the lettered tile locations
are changed to match the location of the data. This works well when output tiles will not be updated (see above) in

2.15. satpy 647


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

future processing. In cases where output tiles will be filled in or updated with more data the use_sector_reference
keyword argument can be set to True to tell the writer to shift the data’s geolocation by up to 0.5 pixels in each dimension
instead of shifting the lettered tile locations.
class satpy.writers.awips_tiled.AWIPSNetCDFTemplate(template_dict, swap_end_time=False)
Bases: NetCDFTemplate
NetCDF template renderer specifically for tiled AWIPS files.
Handle AWIPS special cases and initialize template helpers.
_add_sector_id_global(new_ds, sector_id)

_data_units(input_metadata)

static _fill_units_and_standard_name(attrs, units, standard_name)


Fill in units and standard_name if not set in attrs.
_get_projection_attrs(area_def )
Assign projection attributes per CF standard.
static _get_vmin_vmax(var_config, input_data_arr)

_global_awips_id(input_metadata)

_global_physical_element(input_metadata)

_global_production_location(input_metadata)
Get default global production_location attribute.
_global_production_site(input_metadata)
Get default global production_location attribute.
_global_start_date_time(input_metadata)

_render_variable_attributes(var_config, input_metadata)

_render_variable_encoding(var_config, input_data_arr)

_set_xy_coords_attrs(new_ds, crs)

_swap_attributes_end_time(template_dict)
Swap every use of ‘start_time’ to use ‘end_time’ instead.
apply_area_def(new_ds, area_def )
Apply information we can gather from the AreaDefinition.
apply_misc_metadata(new_ds, sector_id=None, creator=None, creation_time=None)
Add attributes that don’t fit into any other category.
apply_tile_coord_encoding(new_ds, xy_factors)
Add encoding information specific to the coordinate variables.
apply_tile_info(new_ds, tile_info)
Apply attributes associated with the current tile.
render(dataset_or_data_arrays, area_def , tile_info, sector_id, creator=None, creation_time=None,
shared_attrs=None, extra_global_attrs=None)
Create a xarray.Dataset from template using information provided.

648 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.writers.awips_tiled.AWIPSTiledVariableDecisionTree(decision_dicts, **kwargs)


Bases: DecisionTree
Load AWIPS-specific metadata from YAML configuration.
Initialize decision tree with specific keys to look for.
class satpy.writers.awips_tiled.AWIPSTiledWriter(compress=False, fix_awips=False, **kwargs)
Bases: Writer
Writer for AWIPS NetCDF4 Tile files.
See satpy.writers.awips_tiled documentation for more information on templates and produced file for-
mat.
Initialize writer and decision trees.
_adjust_metadata_times(ds_info)

_delay_netcdf_creation(delayed_gen, precompute=True, use_distributed=False)


Workaround random dask and xarray hanging executions.
In previous implementations this writer called ‘to_dataset’ directly in a delayed function. This seems to
cause random deadlocks where execution would hang indefinitely.
_enhance_and_split_rgbs(datasets)
Handle multi-band images by splitting in to separate products.
_fill_sector_info()
Convert sector extents if needed.
static _get_delayed_iter(use_distributed=False)

_get_lettered_sector_info(sector_id)
Get metadata for the current sector if configured.
This is not necessary for numbered grids. If found, the sector info will provide the overall tile layout for this
grid/sector. This allows for consistent tile numbering/naming regardless of where the data being converted
actually is.
_get_tile_data_info(data_arrs, creation_time, source_name)

_get_tile_generator(area_def , lettered_grid, sector_id, num_subtiles, tile_size, tile_count,


use_sector_reference=False)
Get the appropriate tile generator class for lettered or numbered tiles.
_group_by_area(datasets)
Group datasets by their area.
_iter_area_tile_info_and_datasets(area_datasets, template, lettered_grid, sector_id, num_subtiles,
tile_size, tile_count, use_sector_reference)

_iter_tile_info_and_datasets(tile_gen, data_arrays, single_variable=True)

_save_nonempty_mfdatasets(datasets_to_save, output_filenames, **kwargs)

_slice_and_update_coords(tile_info, data_arrays)

_split_rgbs(ds)
Split a single RGB dataset in to multiple.

2.15. satpy 649


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_tile_filler(tile_info, data_arr)

check_tile_exists(output_filename)
Check if tile exists and report error accordingly.
property enhancer
Get lazy loaded enhancer object only if needed.
get_filename(template, area_def , tile_info, sector_id, **kwargs)
Generate output NetCDF file from metadata.
save_dataset(dataset, **kwargs)
Save a single DataArray to one or more NetCDF4 Tile files.
save_datasets(datasets, sector_id=None, source_name=None, tile_count=(1, 1), tile_size=None,
lettered_grid=False, num_subtiles=None, use_end_time=False,
use_sector_reference=False, template='polar', check_categories=True,
extra_global_attrs=None, environment_prefix='DR', compute=True, **kwargs)
Write a series of DataArray objects to multiple NetCDF4 Tile files.
Parameters
• datasets (iterable) – Series of gridded DataArray objects with the necessary meta-
data to be converted to a valid tile product file.
• sector_id (str) – Name of the region or sector that the provided data is on. This name
will be written to the NetCDF file and will be used as the sector in the AWIPS client for
the ‘polar’ template. For lettered grids this name should match the name configured in
the writer YAML. This is required for some templates (ex. default ‘polar’ template) but is
defined as a keyword argument for better error handling in Satpy.
• source_name (str) – Name of producer of these files (ex. “SSEC”). This name is used
to create the output filename for some templates.
• environment_prefix (str) – Prefix of filenames for some templates. For operational
real-time data this is usually “OR”, “OT” for test data, “IR” for test system real-time data,
and “IT” for test system test data. This defaults to “DR” for “Developer Real-time” to avoid
anyone accidentally producing files that could be mistaken for the operational system.
• tile_count (tuple) – For numbered tiles only, how many tile rows and tile columns
to produce. Default to (1, 1), a single giant tile. Either tile_count, tile_size, or
lettered_grid should be specified.
• tile_size (tuple) – For numbered tiles only, how many pixels each tile should be.
This takes precedence over tile_count if specified. Either tile_count, tile_size,
or lettered_grid should be specified.
• lettered_grid (bool) – Whether to use a preconfigured grid and label tiles with letters
and numbers instead of only numbers. For example, tiles will be named “A01”, “A02”,
“B01”, and so on in the first row of data and continue on to “A03”, “A04”, and “B03” in
the default case where num_subtiles is (2, 2). Letters start in the upper-left corner and
will go from A up to Z, if necessary.
• num_subtiles (tuple) – For lettered tiles only, how many rows and columns to split each
lettered tile in to. By default 2 rows and 2 columns will be created. For example, the tile
for letter “A” will have “A01” and “A02” in the top row and “A03” and “A04” in the second
row.

650 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• use_end_time (bool) – Instead of using the start_time for the product filename and
time written to the file, use the end_time. This is useful for multi-day composites where
the end_time is a better representation of what data is in the file.
• use_sector_reference (bool) – For lettered tiles only, whether to shift the data loca-
tions to align with the preconfigured grid’s pixels. By default this is False meaning that the
grid’s tiles will be shifted to align with the data locations. If True, the data is shifted. At
most the data will be shifted by 0.5 pixels. See satpy.writers.awips_tiled for more
information.
• template (str or dict) – Name of the template configured in the writer YAML file.
This can also be a dictionary with a full template configuration. See the satpy.writers.
awips_tiled documentation for more information on templates. Defaults to the ‘polar’
builtin template.
• check_categories (bool) – Whether category and flag products should be included in
the checks for empty or not empty tiles. In some cases (ex. data quality flags) category
products may look like all valid data (a non-empty tile) but shouldn’t be used to determine
the emptiness of the overall tile (good quality versus non-existent). Default is True. Set
to False to ignore category (integer dtype or “flag_meanings” defined) when checking for
valid data.
• extra_global_attrs (dict) – Additional global attributes to be added to every pro-
duced file. These attributes are applied at the end of template rendering and will therefore
overwrite template generated values with the same global attribute name.
• compute (bool) – Compute and write the output immediately using dask. Default to
False.
classmethod separate_init_kwargs(kwargs)
Separate keyword arguments by initialization and saving keyword arguments.
class satpy.writers.awips_tiled.LetteredTileGenerator(area_definition, extents, sector_crs,
cell_size=(2000000, 2000000),
num_subtiles=None,
use_sector_reference=False)
Bases: NumberedTileGenerator
Helper class to generate per-tile metadata for lettered tiles.
Initialize tile information for later generation.
Parameters
• area_definition (AreaDefinition) – Area of the data being saved.
• extents (tuple) – Four element tuple of the configured lettered area.
• sector_crs (pyproj.CRS) – CRS of the configured lettered sector area.
• cell_size (tuple) – Two element tuple of resolution of each tile in sector projection units
(y, x).
_generate_tile_info()
Create generator of individual tile metadata.
_get_tile_properties(tile_shape, tile_count)
Calculate tile information for this particular sector/grid.
_get_xy_scaling_parameters()
Get the X/Y coordinate limits for the full resulting image.

2.15. satpy 651


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_tile_identifier(ty, tx)
Get tile identifier (name) for a particular tile row/column.
class satpy.writers.awips_tiled.NetCDFTemplate(template_dict)
Bases: object
Helper class to convert a dictionary-based NetCDF template to an xarray.Dataset.
Parse template dictionary and prepare for rendering.
_get_matchable_coordinate_metadata(coord_name, coord_attrs)

_render_attrs(attr_configs, input_metadata, prefix='_')

_render_coordinate_attributes(coord_config, input_metadata)

_render_coordinates(ds)

_render_global_attributes(input_metadata)

_render_variable(data_arr)

_render_variable_attributes(var_config, input_metadata)

_render_variable_encoding(var_config, input_data_arr)

get_attr_value(attr_name, input_metadata, value=None, raw_key=None, raw_value=None, prefix='_')


Determine attribute value using the provided configuration information.
If value and raw_key are not provided, this method will search for a method named
<prefix><attr_name>, which will be called with one argument (input_metadata) to get the value
to return. See the documentation for the prefix keyword argument below for more information.
Parameters
• attr_name (str) – Name of the attribute whose value we are generating.
• input_metadata (dict) – Dictionary of metadata from the input DataArray and other
context information. Used to provide information to value or access data from using
raw_key if provided.
• value (Any) – Value to assign to this attribute. If a string, it may be a python format
string which will be provided the data from input_metadata. For example, {name} will be
filled with the value for the "name" in input_metadata. It can also include environment
variables (ex. "${MY_ENV_VAR}") which will be expanded. String formatting is accom-
plished by the special trollsift.parser.StringFormatter which allows for special
common conversions.
• raw_key (str) – Key to access value from input_metadata, but without any string format-
ting applied to it. This allows for metadata of non-string types to be requested.
• raw_value (Any) – Static hardcoded value to set this attribute to. Overrides all other
options.
• prefix (str) – Prefix to use when value and raw_key are both None. Default is "_".
This will be used to find custom attribute handlers in subclasses. For example, if value and
raw_key are both None and attr_name is "my_attr", then the method self._my_attr
will be called as return self._my_attr(input_metadata). See NetCDFTemplate.
render_global_attributes() for additional information (prefix is "_global_").

652 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_filename(base_dir='', **kwargs)
Generate output NetCDF file from metadata.
render(dataset_or_data_arrays, shared_attrs=None)
Create xarray.Dataset from provided data.
class satpy.writers.awips_tiled.NumberedTileGenerator(area_definition, tile_shape=None,
tile_count=None)
Bases: object
Helper class to generate per-tile metadata for numbered tiles.
Initialize and generate tile information for this sector/grid for later use.
_generate_tile_info()
Get numbered tile metadata.
_get_tile_properties(tile_shape, tile_count)
Generate tile information for numbered tiles.
_get_xy_arrays()
Get the overall X/Y coordinate variable arrays.
_get_xy_scaling_parameters()
Get the X/Y coordinate limits for the full resulting image.
_tile_identifier(ty, tx)
Get tile identifier for numbered tiles.
_tile_number(ty, tx)
Get tile number from tile row/column.
class satpy.writers.awips_tiled.TileInfo(tile_count, image_shape, tile_shape, tile_row_offset,
tile_column_offset, tile_id, tile_number, x, y, xy_factors,
tile_slices, data_slices)
Bases: tuple
Create new instance of TileInfo(tile_count, image_shape, tile_shape, tile_row_offset, tile_column_offset, tile_id,
tile_number, x, y, xy_factors, tile_slices, data_slices)
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {}

_fields = ('tile_count', 'image_shape', 'tile_shape', 'tile_row_offset',


'tile_column_offset', 'tile_id', 'tile_number', 'x', 'y', 'xy_factors',
'tile_slices', 'data_slices')

classmethod _make(iterable)
Make a new TileInfo object from a sequence or iterable
_replace(**kwds)
Return a new TileInfo object replacing specified fields with new values
data_slices
Alias for field number 11

2.15. satpy 653


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

image_shape
Alias for field number 1
tile_column_offset
Alias for field number 4
tile_count
Alias for field number 0
tile_id
Alias for field number 5
tile_number
Alias for field number 6
tile_row_offset
Alias for field number 3
tile_shape
Alias for field number 2
tile_slices
Alias for field number 10
x
Alias for field number 7
xy_factors
Alias for field number 9
y
Alias for field number 8
class satpy.writers.awips_tiled.XYFactors(mx, bx, my, by)
Bases: tuple
Create new instance of XYFactors(mx, bx, my, by)
_asdict()
Return a new dict which maps field names to their values.
_field_defaults = {}

_fields = ('mx', 'bx', 'my', 'by')

classmethod _make(iterable)
Make a new XYFactors object from a sequence or iterable
_replace(**kwds)
Return a new XYFactors object replacing specified fields with new values
bx
Alias for field number 1
by
Alias for field number 3
mx
Alias for field number 0

654 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

my
Alias for field number 2
satpy.writers.awips_tiled._add_valid_ranges(data_arrs)
Add ‘valid_range’ metadata if not present.
If valid_range or valid_min/valid_max are not present in a DataArrays metadata (.attrs), then lazily compute
it with dask so it can be computed later when we write tiles out.
AWIPS requires that scale_factor/add_offset/_FillValue be the same for all tiles. We must do this calculation
before splitting the data into tiles otherwise the values will be different.
satpy.writers.awips_tiled._any_notnull(data_arr, check_categories)

satpy.writers.awips_tiled._copy_to_existing(dataset_to_save, output_filename)

satpy.writers.awips_tiled._create_debug_array(sector_info, num_subtiles, font_path='Verdana.ttf')

satpy.writers.awips_tiled._extract_factors(dataset_to_save)

satpy.writers.awips_tiled._get_data_vmin_vmax(input_data_arr)

satpy.writers.awips_tiled._get_factor_offset_fill(input_data_arr, vmin, vmax, encoding)

satpy.writers.awips_tiled._is_empty_tile(dataset_to_save, check_categories)

satpy.writers.awips_tiled._notnull(data_arr, check_categories=True)

satpy.writers.awips_tiled._reapply_factors(dataset_to_save, factors)

satpy.writers.awips_tiled.create_debug_lettered_tiles(**writer_kwargs)
Create tile files with tile identifiers “burned” in to the image data for debugging.
satpy.writers.awips_tiled.draw_rectangle(draw, coordinates, outline=None, fill=None, width=1)
Draw simple rectangle in to a numpy array image.
satpy.writers.awips_tiled.fix_awips_file(fn)
Hack the NetCDF4 files to workaround NetCDF-Java bugs used by AWIPS.
This should not be needed for new versions of AWIPS.
satpy.writers.awips_tiled.main()
Command line interface mimicing CSPP Polar2Grid.
satpy.writers.awips_tiled.tile_filler(data_arr_data, tile_shape, tile_slices, fill_value)
Create an empty tile array and fill the proper locations with data.
satpy.writers.awips_tiled.to_nonempty_netcdf(dataset_to_save: Dataset, factors: dict, output_filename:
str, update_existing: bool = True, check_categories: bool
= True)
Save xarray.Dataset to a NetCDF file if not all fills.
In addition to checking certain Dataset variables for fill values, this function can also “update” an existing NetCDF
file with the new valid data provided.

satpy.writers.cf_writer module

Writer for netCDF4/CF.

2.15. satpy 655


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Example usage

The CF writer saves datasets in a Scene as CF-compliant netCDF file. Here is an example with MSG SEVIRI data in
HRIT format:

>>> from satpy import Scene


>>> import glob
>>> filenames = glob.glob('data/H*201903011200*')
>>> scn = Scene(filenames=filenames, reader='seviri_l1b_hrit')
>>> scn.load(['VIS006', 'IR_108'])
>>> scn.save_datasets(writer='cf', datasets=['VIS006', 'IR_108'], filename='seviri_test.
˓→nc',

exclude_attrs=['raw_metadata'])

• You can select the netCDF backend using the engine keyword argument. If None if follows to_netcdf()
engine choices with a preference for ‘netcdf4’.
• For datasets with area definition you can exclude lat/lon coordinates by setting include_lonlats=False. If the
area has a projected CRS, units are assumed to be in metre. If the area has a geographic CRS, units are assumed
to be in degrees. The writer does not verify that the CRS is supported by the CF conventions. One commonly
used projected CRS not supported by the CF conventions is the equirectangular projection, such as EPSG 4087.
• By default non-dimensional coordinates (such as scanline timestamps) are prefixed with the corresponding
dataset name. This is because they are likely to be different for each dataset. If a non-dimensional coordinate is
identical for all datasets, the prefix can be removed by setting pretty=True.
• Some dataset names start with a digit, like AVHRR channels 1, 2, 3a, 3b, 4 and 5. This doesn’t comply
with CF https://cfconventions.org/Data/cf-conventions/cf-conventions-1.7/build/ch02s03.html. These channels
are prefixed with "CHANNEL_" by default. This can be controlled with the variable numeric_name_prefix to
save_datasets. Setting it to None or ‘’ will skip the prefixing.

Grouping

All datasets to be saved must have the same projection coordinates x and y. If a scene holds datasets with different
grids, the CF compliant workaround is to save the datasets to separate files. Alternatively, you can save datasets with
common grids in separate netCDF groups as follows:

>>> scn.load(['VIS006', 'IR_108', 'HRV'])


>>> scn.save_datasets(writer='cf', datasets=['VIS006', 'IR_108', 'HRV'],
filename='seviri_test.nc', exclude_attrs=['raw_metadata'],
groups={'visir': ['VIS006', 'IR_108'], 'hrv': ['HRV']})

Note that the resulting file will not be fully CF compliant.

Dataset Encoding

Dataset encoding can be specified in two ways:


1) Via the encoding keyword argument of save_datasets:

>>> my_encoding = {
... 'my_dataset_1': {
... 'compression': 'zlib',
... 'complevel': 9,
... 'scale_factor': 0.01,
... 'add_offset': 100,
(continues on next page)

656 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


... 'dtype': np.int16
... },
... 'my_dataset_2': {
... 'compression': None,
... 'dtype': np.float64
... }
... }
>>> scn.save_datasets(writer='cf', filename='encoding_test.nc', encoding=my_
˓→encoding)

2) Via the encoding attribute of the datasets in a scene. For example

>>> scn['my_dataset'].encoding = {'compression': 'zlib'}


>>> scn.save_datasets(writer='cf', filename='encoding_test.nc')

See the xarray encoding documentation for all encoding options.

á Note

Chunk-based compression can be specified with the compression keyword since


netCDF4-1.6.0
libnetcdf-4.9.0
xarray-2022.12.0

The zlib keyword is deprecated. Make sure that the versions of these modules are all above or all below that
reference. Otherwise, compression might fail or be ignored silently.

Attribute Encoding

In the above examples, raw metadata from the HRIT files have been excluded. If you want all attributes to be included,
just remove the exclude_attrs keyword argument. By default, dict-type dataset attributes, such as the raw metadata,
are encoded as a string using json. Thus, you can use json to decode them afterwards:

>>> import xarray as xr


>>> import json
>>> # Save scene to nc-file
>>> scn.save_datasets(writer='cf', datasets=['VIS006', 'IR_108'], filename='seviri_test.
˓→nc')

>>> # Now read data from the nc-file


>>> ds = xr.open_dataset('seviri_test.nc')
>>> raw_mda = json.loads(ds['IR_108'].attrs['raw_metadata'])
>>> print(raw_mda['RadiometricProcessing']['Level15ImageCalibration']['CalSlope'])
[0.020865 0.0278287 0.0232411 0.00365867 0.00831811 0.03862197
0.12674432 0.10396091 0.20503568 0.22231115 0.1576069 0.0352385]

Alternatively it is possible to flatten dict-type attributes by setting flatten_attrs=True. This is more human read-
able as it will create a separate nc-attribute for each item in every dictionary. Keys are concatenated with underscore
separators. The CalSlope attribute can then be accessed as follows:

>>> scn.save_datasets(writer='cf', datasets=['VIS006', 'IR_108'], filename='seviri_test.


˓→nc',

(continues on next page)

2.15. satpy 657


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(continued from previous page)


flatten_attrs=True)
>>> ds = xr.open_dataset('seviri_test.nc')
>>> print(ds['IR_108'].attrs['raw_metadata_RadiometricProcessing_Level15ImageCalibration_
˓→CalSlope'])

[0.020865 0.0278287 0.0232411 0.00365867 0.00831811 0.03862197


0.12674432 0.10396091 0.20503568 0.22231115 0.1576069 0.0352385]

This is what the corresponding ncdump output would look like in this case:

$ ncdump -h test_seviri.nc
...
IR_108:raw_metadata_RadiometricProcessing_Level15ImageCalibration_CalOffset = -1.064, ...
˓→;

IR_108:raw_metadata_RadiometricProcessing_Level15ImageCalibration_CalSlope = 0.021, ...;


IR_108:raw_metadata_RadiometricProcessing_MPEFCalFeedback_AbsCalCoeff = 0.021, ...;
...

class satpy.writers.cf_writer.CFWriter(name=None, filename=None, base_dir=None, **kwargs)


Bases: Writer
Writer producing NetCDF/CF compatible datasets.
Initialize the writer object.
Parameters
• name (str) – A name for this writer for log and error messages. If this writer is configured
in a YAML file its name should match the name of the YAML file. Writer names may also
appear in output file attributes.
• filename (str) – Filename to save data to. This filename can and should specify certain
python string formatting fields to differentiate between data written to the files. Any attributes
provided by the .attrs of a DataArray object may be included. Format and conversion
specifiers provided by the trollsift package may also be used. Any directories in the
provided pattern will be created if they do not exist. Example:

{platform_name}_{sensor}_{name}_{start_time:%Y%m%d_%H%M%S}.tif

• base_dir (str) – Base destination directories for all created files.


• kwargs (dict) – Additional keyword arguments to pass to the Plugin class.
static da2cf(dataarray, epoch=None, flatten_attrs=False, exclude_attrs=None, include_orig_name=True,
numeric_name_prefix='CHANNEL_')
Convert the dataarray to something cf-compatible.
Parameters
• dataarray (xr.DataArray) – The data array to be converted.
• epoch (str) – Reference time for encoding of time coordinates. If None, the default ref-
erence time is defined using from satpy.cf.coords import EPOCH
• flatten_attrs (bool) – If True, flatten dict-type attributes.
• exclude_attrs (list) – List of dataset attributes to be excluded.
• include_orig_name (bool) – Include the original dataset name in the netcdf variable
attributes.

658 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• numeric_name_prefix (str) – Prepend dataset name with this if starting with a digit.
save_dataset(dataset, filename=None, fill_value=None, **kwargs)
Save the dataset to a given filename.
save_datasets(datasets, filename=None, groups=None, header_attrs=None, engine=None, epoch=None,
flatten_attrs=False, exclude_attrs=None, include_lonlats=True, pretty=False,
include_orig_name=True, numeric_name_prefix='CHANNEL_', **to_netcdf_kwargs)
Save the given datasets in one netCDF file.
Note that all datasets (if grouping: in one group) must have the same projection coordinates.
Parameters
• datasets (list) – List of xr.DataArray to be saved.
• filename (str) – Output file.
• groups (dict) – Group datasets according to the given assignment: {‘group_name’:
[‘dataset1’, ‘dataset2’, . . . ]}. The group name None corresponds to the root of the file,
i.e., no group will be created. Warning: The results will not be fully CF compliant!
• header_attrs – Global attributes to be included.
• engine (str, optional) – Module to be used for writing netCDF files. Follows xarray’s
to_netcdf() engine choices with a preference for ‘netcdf4’.
• epoch (str, optional) – Reference time for encoding of time coordinates. If None, the
default reference time is defined using from satpy.cf.coords import EPOCH.
• flatten_attrs (bool, optional) – If True, flatten dict-type attributes.
• exclude_attrs (list, optional) – List of dataset attributes to be excluded.
• include_lonlats (bool, optional) – Always include latitude and longitude coordi-
nates, even for datasets with area definition.
• pretty (bool, optional) – Don’t modify coordinate names, if possible. Makes the file
prettier, but possibly less consistent.
• include_orig_name (bool, optional) – Include the original dataset name as a vari-
able attribute in the final netCDF.
• numeric_name_prefix (str, optional) – Prefix to add to each variable with a name
starting with a digit. Use ‘’ or None to leave this out.
static update_encoding(dataset, to_netcdf_kwargs)
Update encoding info (deprecated).
satpy.writers.cf_writer._backend_versions_match()

satpy.writers.cf_writer._check_backend_versions()
Issue warning if backend versions do not match.
satpy.writers.cf_writer._get_backend_versions()

satpy.writers.cf_writer._initialize_root_netcdf(filename, engine, header_attrs, to_netcdf_kwargs)


Initialize root empty netCDF.
satpy.writers.cf_writer._parse_libnetcdf_version(version_str)

satpy.writers.cf_writer._sanitize_writer_kwargs(writer_kwargs)
Remove satpy-specific kwargs.

2.15. satpy 659


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.writers.geotiff module

GeoTIFF writer objects for creating GeoTIFF files from DataArray objects.
class satpy.writers.geotiff.GeoTIFFWriter(dtype=None, tags=None, **kwargs)
Bases: ImageWriter
Writer to save GeoTIFF images.
Basic example from Scene:

>>> scn.save_datasets(writer='geotiff')

By default the writer will use the Enhancer class to linear stretch the data (see Enhancements). To get Un-
enhanced images enhance=False can be specified which will write a geotiff with the data type of the dataset.
The fill value defaults to the the datasets "_FillValue" attribute if not None and no value is passed to
fill_value for integer data. In case of float data if fill_value is not passed NaN will be used. If a geo-
tiff with a certain datatype is desired for example 32 bit floating point geotiffs:

>>> scn.save_datasets(writer='geotiff', dtype=np.float32, enhance=False)

To add custom metadata use tags:

>>> scn.save_dataset(dataset_name, writer='geotiff',


... tags={'offset': 291.8, 'scale': -0.35})

Images are tiled by default. To create striped TIFF files tiled=False can be specified:

>>> scn.save_datasets(writer='geotiff', tiled=False)

For performance tips on creating geotiffs quickly and making them smaller see the Frequently Asked Questions.
Init the writer.
GDAL_OPTIONS = ('tfw', 'rpb', 'rpctxt', 'interleave', 'tiled', 'blockxsize',
'blockysize', 'nbits', 'compress', 'num_threads', 'predictor', 'discard_lsb',
'sparse_ok', 'jpeg_quality', 'jpegtablesmode', 'zlevel', 'photometric', 'alpha',
'profile', 'bigtiff', 'pixeltype', 'copy_src_overviews', 'blocksize', 'resampling',
'quality', 'level', 'overview_resampling', 'warp_resampling', 'overview_compress',
'overview_quality', 'overview_predictor', 'tiling_scheme', 'zoom_level_strategy',
'target_srs', 'res', 'extent', 'aligned_levels', 'add_alpha')

_get_gdal_options(kwargs)

save_image(img: XRImage, filename: str | None = None, compute: bool = True, dtype: dtype[Any] | None |
type[Any] | _SupportsDType[dtype[Any]] | str | tuple[Any, int] | tuple[Any, SupportsIndex |
Sequence[SupportsIndex]] | list[Any] | _DTypeDict | tuple[Any, Any] = None, fill_value: int |
float | None = None, keep_palette: bool = False, cmap: Colormap | None = None, tags: dict[str,
Any] | None = None, overviews: list[int] | None = None, overviews_minsize: int = 256,
overviews_resampling: str | None = None, include_scale_offset: bool = False, scale_offset_tags:
tuple[str, str] | None = None, colormap_tag: str | None = None, driver: str | None = None, tiled:
bool = True, **kwargs)
Save the image to the given filename in geotiff format.
Note this writer requires the rasterio library to be installed.
Parameters
• img (xarray.DataArray) – Data to save to geotiff.

660 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• filename (str) – Filename to save the image to. Defaults to filename passed during
writer creation. Unlike the creation filename keyword argument, this filename does not
get formatted with data attributes.
• compute (bool) – Compute dask arrays and save the image immediately. If False then
the return value can be passed to compute_writer_results() to do the computation.
This is useful when multiple images may share input calculations where dask can benefit
from not repeating them multiple times. Defaults to True in the writer by itself, but is
typically passed as False by callers where calculations can be combined.
• dtype (DTypeLike) – Numpy data type to save the image as. Defaults to 8-bit unsigned
integer (np.uint8) or the data type of the data to be saved if enhance=False. If the
dtype argument is provided during writer creation then that will be used as the default.
• fill_value (float or int) – Value to use where data values are NaN/null. If this is
specified in the writer configuration file that value will be used as the default.
• keep_palette (bool) – Save palette/color table to geotiff. To be used with images that
were palettized with the “palettize” enhancement. Setting this to True will cause the col-
ormap of the image to be written as a “color table” in the output geotiff and the image data
values will represent the index values in to that color table. By default, this will use the
colormap used in the “palettize” operation. See the cmap option for other options. This
option defaults to False and palettized images will be converted to RGB/A.
• cmap (trollimage.colormap.Colormap or None) – Colormap to save as a color table
in the output geotiff. See keep_palette for more information. Defaults to the palette of
the provided img object. The colormap’s range should be set to match the index range of
the palette (ex. cmap.set_range(0, len(colors))).
• tags (dict) – Extra metadata to store in geotiff.
• overviews (list) – The reduction factors of the overviews to include in the image, eg:

scn.save_datasets(overviews=[2, 4, 8, 16])

If provided as an empty list, then levels will be computed as powers of two until the last
level has less pixels than overviews_minsize. Default is to not add overviews.
• overviews_minsize (int) – Minimum number of pixels for the smallest overview size
generated when overviews is auto-generated. Defaults to 256.
• overviews_resampling (str) – Resampling method to use when generating overviews.
This must be the name of an enum value from rasterio.enums.Resampling and only
takes effect if the overviews keyword argument is provided. Common values include near-
est (default), bilinear, average, and many others. See the rasterio documentation for more
information.
• scale_offset_tags (Tuple[str, str]) – If set, include inclusion of scale and offset
in the GeoTIFF headers in the GDALMetaData tag. The value of this argument should
be a keyword argument (scale_label, offset_label), for example, ("scale",
"offset"), indicating the labels to be used.
• colormap_tag (Optional[str]) – If set and the image being saved was colorized or
palettized then a comma-separated version of the colormap is saved to a custom geotiff tag
with the provided name. See trollimage.colormap.Colormap.to_csv() for more
information.
• driver (Optional[str]) – Name of GDAL driver to use to save the geotiff. If not spec-
ified or None (default) the “GTiff” driver is used. Another common option is “COG” for
Cloud Optimized GeoTIFF. See GDAL documentation for more information.

2.15. satpy 661


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• tiled (bool) – For performance this defaults to True. Pass False to created striped TIFF
files.
• include_scale_offset (deprecated, bool) – Deprecated. Use
scale_offset_tags=("scale", "offset") to include scale and offset tags.
classmethod separate_init_kwargs(kwargs)
Separate the init keyword args.

satpy.writers.mitiff module

MITIFF writer objects for creating MITIFF files from Dataset objects.
class satpy.writers.mitiff.MITIFFWriter(name=None, tags=None, **kwargs)
Bases: ImageWriter
Writer to produce MITIFF image files.
Initialize reader with tag and other configuration information.
_add_calibration(channels, cns, datasets, **kwargs)

_add_calibration_datasets(ch, datasets, reverse_offset, reverse_scale, decimals)

_add_corners(datasets, first_dataset)

_add_palette_info(datasets, palette_unit, palette_description, **kwargs)

_add_pixel_sizes(datasets, first_dataset)

_add_proj4_string(datasets, first_dataset, **kwargs)

_add_sizes(datasets, first_dataset)

_append_projection_center(proj4_string, dataset, x_0, y_0, mitiff_pixel_adjustment)

_calibrate_data(dataset, calibration, min_val, max_val)

_channel_names(channels, cns, **kwargs)

_convert_epsg_to_proj(proj4_string, x_0)

_generate_intermediate_filename(gen_filename)
Replace mitiff ext because pillow doesn’t recognise the file type.
_get_dataset_len(datasets)

_get_platform_name(first_dataset, translate_platform_name, kwargs)

_make_channel_list(datasets, **kwargs)

_make_image_description(datasets, **kwargs)
Generate image description for mitiff.
Satellite: NOAA 18 Date and Time: 06:58 31/05-2016 SatDir: 0 Channels: 6 In this file: 1-VIS0.63
2-VIS0.86 3(3B)-IR3.7 4-IR10.8 5-IR11.5 6(3A)-VIS1.6 Xsize: 4720 Ysize: 5544 Map projection:
Stereographic Proj string: +proj=stere +lon_0=0 +lat_0=90 +lat_ts=60 +ellps=WGS84 +towgs84=0,0,0
+units=km +x_0=2526000.000000 +y_0=5806000.000000 TrueLat: 60 N GridRot: 0 Xunit:1000 m Yunit:
1000 m NPX: 0.000000 NPY: 0.000000 Ax: 1.000000 Ay: 1.000000 Bx: -2526.000000 By: -262.000000

662 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Satellite: <satellite name> Date and Time: <HH:MM dd/mm-yyyy> SatDir: 0 Channels: <number of
chanels> In this file: <channels names in order> Xsize: <number of pixels x> Ysize: <number of pixels y>
Map projection: Stereographic Proj string: <proj4 string with +x_0 and +y_0 which is the positive distance
from proj origo to the lower left corner of the image data> TrueLat: 60 N GridRot: 0 Xunit:1000 m Yunit:
1000 m NPX: 0.000000 NPY: 0.000000 Ax: <pixels size x in km> Ay: <pixel size y in km> Bx: <left
corner of upper right pixel in km> By: <upper corner of upper right pixel in km>
if palette image write special palette if normal channel write table calibration: Table_calibration: <channel
name>, <calibration type>, [<unit>], <no of bits of data>, [<calibration values space separated>]nn
_reorder_channels(datasets, **kwargs)

_save_as_enhanced(datasets, tmp_gen_filename, **kwargs)


Save datasets as an enhanced RGB image.
_save_as_palette(datasets, tmp_gen_filename, tiffinfo, **kwargs)

_save_datasets_as_mitiff(datasets, image_description, gen_filename, **kwargs)


Put all together and save as a tiff file.
Include the special tags making it a mitiff file.
_save_single_dataset(datasets, cns, tmp_gen_filename, tiffinfo, kwargs)

_set_correction_size(dataset, mitiff_pixel_adjustment)

_special_correction_of_proj_string(proj4_string)

save_dataset(dataset, filename=None, fill_value=None, compute=True, **kwargs)


Save single dataset as mitiff file.
save_datasets(datasets, filename=None, fill_value=None, compute=True, **kwargs)
Save all datasets to one or more files.
save_image()
Save dataset as an image array.
satpy.writers.mitiff._adjust_kwargs(dataset, kwargs)

satpy.writers.ninjogeotiff module

Writer for GeoTIFF images with tags for the NinJo visualization tool.
Starting with NinJo 7, NinJo is able to read standard GeoTIFF images, with required metadata encoded as a set of XML
tags in the GDALMetadata TIFF tag. Each of the XML tags must be prepended with 'NINJO_'. For NinJo delivery,
these GeoTIFF files supersede the old NinJoTIFF format. The NinJoGeoTIFFWriter therefore supersedes the old
Satpy NinJoTIFF writer and the pyninjotiff package.
The reference documentation for valid NinJo tags and their meaning is contained in NinJoPedia. Since this page is not
in the public web, there is a (possibly outdated) mirror.
There are some user-facing differences between the old NinJoTIFF writer and the new NinJoGeoTIFF writer. Most
notably, keyword arguments that correspond to tags directly passed by the user are now identical, including case, to
how they will be written to the GDALMetaData and interpreted by NinJo. That means some keyword arguments have
changed, such as summarised in this table:

2.15. satpy 663


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Table 7: Migrating to NinJoGeoTIFF, keyword arguments for the writer


ninjotiff (old) ninjogeotiff (new) Notes
chan_id ChannelID mandatory
data_cat DataType mandatory
physic_unit PhysicUnit mandatory
physic_val PhysicValue mandatory
sat_id SatelliteNameID mandatory
data_source DataSource optional

Moreover, two keyword arguments are no longer supported because their functionality has become redundant. This
applies to ch_min_measurement_unit and ch_max_measurement_unit. Instead, pass those values in source units
to the stretch() enhancement with the min_stretch and max_stretch arguments.
For images where the pixel value corresponds directly to a physical value, NinJo has a functionality to read the cor-
responding quantity (example: brightness temperature or reflectance). To make this possible, the writer adds the tags
Gradient and AxisIntercept. Those tags are added if and only if the image has mode L, P, or LA and PhysicUnit
is not set to "N/A". In other words, to suppress those tags for images with mode L or LA (for example, for the composite
vis_with_ir, where the physical interpretation of individual pixels is lost), one should set PhysicUnit to "N/A",
"n/a", "1", or "" (empty string). If the image has mode P, Gradient is set to 1.0 and AxisIntercept to 0.0 (as
expected by NinJo).
class satpy.writers.ninjogeotiff.NinJoGeoTIFFWriter(dtype=None, tags=None, **kwargs)
Bases: GeoTIFFWriter
Writer for GeoTIFFs with NinJo tags.
This writer is experimental. API may be subject to change.
For information, see module docstring and documentation for save_image().
Init the writer.
_check_include_scale_offset(image, unit)
Check if scale-offset tags should be included.
_fix_units(image, quantity, unit)
Adapt units between °C and K.
This will return a new XRImage, to make sure the old data and enhancement history aren’t touched.
_get_scale_offset_tags(image, unit)
Get scale offset tags (tuple or dict).
save_image(image, filename=None, fill_value=None, compute=True, keep_palette=False, cmap=None,
overviews=None, overviews_minsize=256, overviews_resampling=None, tags=None,
config_files=None, *, ChannelID, DataType, PhysicUnit, PhysicValue, SatelliteNameID,
**kwargs)
Save image along with NinJo tags.
Save image along with NinJo tags. Interface as for GeoTIFF, except NinJo expects some additional tags.
Those tags will be prepended with ninjo_ and added as GDALMetaData.
Writing such images requires trollimage 1.16 or newer.
Importing such images with NinJo requires NinJo 7 or newer.
Parameters
• image (XRImage) – Image to save.

664 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• filename (str) – Where to save the file.


• fill_value (int) – Which pixel value is fill value?
• compute (bool) – To compute or not to compute, that is the question.
• keep_palette (bool) – As for parent GeoTIFF save_image().
• cmap (trollimage.colormap.Colormap) – As for parent save_image().
• overviews (list) – As for save_image().
• overviews_minsize (int) – As for save_image().
• overviews_resampling (str) – As for save_image().
• tags (dict) – Extra (not NinJo) tags to add to GDAL MetaData
• config_files (Any) – Not directly used by this writer, supported for compatibility with
other writers.
Remaining keyword arguments are either passed as GDAL options, if contained in self.GDAL_OPTIONS,
or they are passed to NinJoTagGenerator, which will include them as NinJo tags in GDALMetadata.
Supported tags are defined in NinJoTagGenerator.optional_tags. The meaning of those (and other)
tags are defined in the NinJo documentation (see module documentation for a link to NinJoPedia). The
following tags are mandatory and must be provided as keyword arguments:
ChannelID (int)
NinJo Channel ID
DataType (int)
NinJo Data Type
SatelliteNameID (int)
NinJo Satellite ID
PhysicUnit (str)
NinJo label for unit (example: “C”). If PhysicValue is set to “Temperature”, PhysicUnit is
set to “C”, but data attributes incidate the data have unit “K”, then the writer will adapt the
header ninjo_AxisIntercept such that data are interpreted in units of “C”. If PhysicUnit
is set to “N/A”, no AxisIntercept and Gradient tags will be written.
PhysicValue (str)
NinJo label for quantity (example: “temperature”)
scale_offset_tag_names = ('ninjo_Gradient', 'ninjo_AxisIntercept')

class satpy.writers.ninjogeotiff.NinJoTagGenerator(image, fill_value, filename, **kwargs)


Bases: object
Class to collect NinJo tags.
This class is used by NinJoGeoTIFFWriter to collect NinJo tags. Most end-users will not need to create
instances of this class directly.
Tags are gathered from three sources:
• Fixed tags, contained in the attribute fixed_tags. The value of those tags is hardcoded and never changes.
• Tags passed by the user, contained in the attribute passed_tags. Those tags must be passed by the user
as arguments to the writer, which will pass them on when instantiating this class.
• Tags calculated from data and metadata. Those tags are defined in the attribute dynamic_tags. They are
either calculated from image data, from image metadata, or from arguments passed by the user to the writer.

2.15. satpy 665


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Some tags are mandatory (defined in mandatory_tags). All tags that are not mandatory are optional. By
default, optional tags are generated if and only if the required information is available.
Initialise tag generator.
Parameters
• image (trollimage.xrimage.XRImage) – XRImage for which NinJo tags should be cal-
culated.
• fill_value (int) – Fill value corresponding to image.
• filename (str) – Filename to be written.
• **kwargs – Any additional tags to be included as-is.
_epoch = datetime.datetime(1970, 1, 1, 0, 0, tzinfo=datetime.timezone.utc)

dynamic_tags = {'CentralMeridian': 'central_meridian', 'ColorDepth':


'color_depth', 'CreationDateID': 'creation_date_id', 'DateID': 'date_id',
'EarthRadiusLarge': 'earth_radius_large', 'EarthRadiusSmall':
'earth_radius_small', 'FileName': 'filename', 'MaxGrayValue': 'max_gray_value',
'MinGrayValue': 'min_gray_value', 'Projection': 'projection',
'ReferenceLatitude1': 'ref_lat_1', 'TransparentPixel': 'transparent_pixel',
'XMaximum': 'xmaximum', 'YMaximum': 'ymaximum'}

fixed_tags = {'HeaderVersion': 2, 'Magic': 'NINJO', 'XMinimum': 1, 'YMinimum':


1}

get_all_tags()
Get a dictionary with all tags for NinJo.
get_central_meridian()
Calculate central meridian.
get_color_depth()
Return the color depth.
get_creation_date_id()
Calculate the creation date ID.
That’s seconds since UNIX Epoch for the time the image is created.
get_date_id()
Calculate the date ID.
That’s seconds since UNIX Epoch for the time corresponding to the satellite image start of measurement
time.
get_earth_radius_large()
Return the Earth semi-major axis in metre.
get_earth_radius_small()
Return the Earth semi-minor axis in metre.
get_filename()
Return the filename.
get_max_gray_value()
Calculate maximum gray value.

666 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_meridian_east()
Get the easternmost longitude of the area.
Currently not implemented. In pyninjotiff it was implemented but the answer was incorrect.
get_meridian_west()
Get the westernmost longitude of the area.
Currently not implemented. In pyninjotiff it was implemented but the answer was incorrect.
get_min_gray_value()
Calculate minimum gray value.
get_projection()
Get NinJo projection string.
From the documentation, valid values are:
• NPOL/SPOL: polar-sterographic North/South
• PLAT: „Plate Carrée“, equirectangular projection
• MERC: Mercator projection
Derived from AreaDefinition.
get_ref_lat_1()
Get reference latitude one.
Derived from area definition.
get_ref_lat_2()
Get reference latitude two.
This is not implemented and never was correctly implemented in pyninjotiff either. It doesn’t appear to be
used by NinJo.
get_tag(tag)
Get value for NinJo tag.
get_transparent_pixel()
Get the transparent pixel value, also known as the fill value.
When the no fill value is defined (value None), such as for RGBA or LA images, returns -1, in accordance
with the file format specification.
get_xmaximum()
Get the maximum value of x, i.e. the meridional extent of the image in pixels.
get_ymaximum()
Get the maximum value of y, i.e. the zonal extent of the image in pixels.
mandatory_tags = {'AxisIntercept', 'ChannelID', 'ColorDepth', 'CreationDateID',
'DataType', 'DateID', 'Gradient', 'HeaderVersion', 'MaxGrayValue', 'MinGrayValue',
'PhysicUnit', 'PhysicValue', 'Projection', 'SatelliteNameID', 'SatelliteNumber',
'TransparentPixel', 'XMaximum', 'XMinimum', 'YMaximum', 'YMinimum'}

2.15. satpy 667


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

optional_tags = {'AOSAzimuth', 'Altitude', 'CentralMeridian', 'ColorTable',


'DataSource', 'Description', 'EarthRadiusLarge', 'EarthRadiusSmall', 'GeoLatitude',
'GeoLongitude', 'GeodeticDate', 'IsAtmosphereCorrected', 'IsBlackLinesCorrection',
'IsCalibrated', 'IsNormalized', 'IsValueTableAvailable', 'LOSAzimuth',
'MaxElevation', 'MeridianEast', 'MeridianWest', 'OriginalHeader', 'OverFlightTime',
'OverflightDirection', 'ReferenceLatitude1', 'ReferenceLatitude2',
'ValueTableFloatField'}

passed_tags = {'ChannelID', 'DataType', 'PhysicUnit', 'PhysicValue',


'SatelliteNameID'}

postponed_tags = {'AxisIntercept', 'Gradient'}

satpy.writers.ninjotiff module

Writer for TIFF images compatible with the NinJo visualization tool (NinjoTIFFs).
NinjoTIFFs can be color images or monochromatic. For monochromatic images, the physical units and scale and offsets
to retrieve the physical values are provided. Metadata is also recorded in the file.
In order to write ninjotiff files, some metadata needs to be provided to the writer. Here is an example on how to write
a color image:

chn = "airmass"
ninjoRegion = load_area("areas.def", "nrEURO3km")

filenames = glob("data/*__")
global_scene = Scene(reader="hrit_msg", filenames=filenames)
global_scene.load([chn])
local_scene = global_scene.resample(ninjoRegion)
local_scene.save_dataset(chn, filename="airmass.tif", writer='ninjotiff',
sat_id=6300014,
chan_id=6500015,
data_cat='GPRN',
data_source='EUMCAST',
nbits=8)

Here is an example on how to write a color image:

chn = "IR_108"
ninjoRegion = load_area("areas.def", "nrEURO3km")

filenames = glob("data/*__")
global_scene = Scene(reader="hrit_msg", filenames=filenames)
global_scene.load([chn])
local_scene = global_scene.resample(ninjoRegion)
local_scene.save_dataset(chn, filename="msg.tif", writer='ninjotiff',
sat_id=6300014,
chan_id=900015,
data_cat='GORN',
data_source='EUMCAST',
physic_unit='K',
nbits=8)

The metadata to provide to the writer can also be stored in a configuration file (see pyninjotiff), so that the previous
example can be rewritten as:

668 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

chn = "IR_108"
ninjoRegion = load_area("areas.def", "nrEURO3km")

filenames = glob("data/*__")
global_scene = Scene(reader="hrit_msg", filenames=filenames)
global_scene.load([chn])
local_scene = global_scene.resample(ninjoRegion)
local_scene.save_dataset(chn, filename="msg.tif", writer='ninjotiff',
# ninjo product name to look for in .cfg file
ninjo_product_name="IR_108",
# custom configuration file for ninjo tiff products
# if not specified PPP_CONFIG_DIR is used as config file directory
ninjo_product_file="/config_dir/ninjotiff_products.cfg")

class satpy.writers.ninjotiff.NinjoTIFFWriter(tags=None, **kwargs)


Bases: ImageWriter
Writer for NinjoTiff files.
Inititalize the writer.
save_dataset(dataset, filename=None, fill_value=None, compute=True, convert_temperature_units=True,
**kwargs)
Save a dataset to ninjotiff format.
This calls save_image in turn, but first preforms some unit conversion if necessary and desired. Unit con-
version can be suppressed by passing convert_temperature_units=False.
save_image(img, filename=None, compute=True, **kwargs)
Save the image to the given filename in ninjotiff format.
satpy.writers.ninjotiff.convert_units(dataset, in_unit, out_unit)
Convert units of dataset.
Convert dataset units for the benefit of writing NinJoTIFF. The main background here is that NinJoTIFF would
like brightness temperatures in °C, but satellite data files are in K. For simplicity of implementation, this function
can only convert from K to °C.
This function will convert input data from K to °C and write the new unit in the "units" attribute. When output
and input units are equal, it returns the input dataset.
Parameters
• dataset (xarray DataArray) – Dataarray for which to convert the units.
• in_unit (str) – Unit for input data.
• out_unit (str) – Unit for output data.
Returns
dataset, possibly with new units.

satpy.writers.simple_image module

Generic PIL/Pillow image format writer.


class satpy.writers.simple_image.PillowWriter(**kwargs)
Bases: ImageWriter
Generic PIL image format writer.

2.15. satpy 669


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Initialize image writer plugin.


save_image(img, filename=None, compute=True, **kwargs)
Save Image object to a given filename.
Parameters
• img (trollimage.xrimage.XRImage) – Image object to save to disk.
• filename (str) – Optionally specify the filename to save this dataset to. It may include
string formatting patterns that will be filled in by dataset attributes.
• compute (bool) – If True (default), compute and save the dataset. If False return either a
dask.delayed.Delayed object or tuple of (source, target). See the return values below for
more information.
• **kwargs – Keyword arguments to pass to the images save method.
Returns
Value returned depends on compute. If compute is True then the return value is the result of
computing a dask.delayed.Delayed object or running dask.array.store. If compute is False
then the returned value is either a dask.delayed.Delayed object that can be computed using
delayed.compute() or a tuple of (source, target) that should be passed to dask.array.store. If
target is provided the the caller is responsible for calling target.close() if the target has this
method.

satpy.writers.utils module

Writer utilities.
satpy.writers.utils.flatten_dict(d, parent_key='', sep='_')
Flatten a nested dictionary.
Based on https://stackoverflow.com/a/6027615/5703449

Module contents

Shared objects of the various writer classes.


For now, this includes enhancement configuration utilities.
class satpy.writers.DecisionTree(decision_dicts, match_keys, multival_keys=None)
Bases: object
Structure to search for nearest match from a set of parameters.
This class is used to find the best configuration section by matching a set of attributes. The provided dictionary
contains a mapping of “section name” to “decision” dictionaries. Each decision dictionary contains the attributes
that will be used for matching plus any additional keys that could be useful when matched. This class will
search these decisions and return the one with the most matching parameters to the attributes passed to the
find_match() method.
Note that decision sections are provided as a dict instead of a list so that they can be overwritten or updated by
doing the equivalent of a current_dicts.update(new_dicts).

Examples
Decision sections are provided as a dictionary of dictionaries. The returned match will be the first result found
by searching provided match_keys in order.

670 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

decisions = {
'first_section': {
'a': 1,
'b': 2,
'useful_key': 'useful_value',
},
'second_section': {
'a': 5,
'useful_key': 'other_useful_value1',
},
'third_section': {
'b': 4,
'useful_key': 'other_useful_value2',
},
}
tree = DecisionTree(decisions, ('a', 'b'))
tree.find_match(a=5, b=2) # second_section dict
tree.find_match(a=1, b=2) # first_section dict
tree.find_match(a=5, b=4) # second_section dict
tree.find_match(a=3, b=2) # no match

Init the decision tree.


Parameters
• decision_dicts (dict) – Dictionary of dictionaries. Each sub-dictionary contains
key/value pairs that can be matched from the find_match method. Sub-dictionaries can in-
clude additional keys outside the match_keys provided to act as the “result” of a query. The
keys of the root dict are arbitrary.
• match_keys (list) – Keys of the provided dictionary to use for matching.
• multival_keys (list) – Keys of match_keys that can be provided as multiple values. A
multi-value key can be specified as a single value (typically a string) or a set. If a set, it will
be sorted and converted to a tuple and then used for matching. When querying the tree, these
keys will be searched for exact multi-value results (the sorted tuple) and if not found then
each of the values will be searched individually in alphabetical order.
_build_tree(conf )
Build the tree.
Create a tree structure of dicts where each level represents the possible matches for a specific match_key.
When finding matches we will iterate through the tree matching each key that we know about. The last dict
in the “tree” will contain the configure section whose match values led down that path in the tree.
See DecisionTree.find_match() for more information.
static _convert_query_val_to_hashable(query_val)

_find_match(curr_level, remaining_match_keys, query_dict)


Find a match.
_find_match_if_known(curr_level, remaining_match_keys, query_dict)

_get_query_values(query_dict, curr_match_key)

add_config_to_tree(*decision_dicts)
Add a configuration to the tree.

2.15. satpy 671


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

any_key = None

find_match(**query_dict)
Find a match.
Recursively search through the tree structure for a path that matches the provided match parameters.
class satpy.writers.EnhancementDecisionTree(*decision_dicts, **kwargs)
Bases: DecisionTree
The enhancement decision tree.
Init the decision tree.
add_config_to_tree(*decision_dict)
Add configuration to tree.
find_match(**query_dict)
Find a match.
class satpy.writers.Enhancer(enhancement_config_file=None)
Bases: object
Helper class to get enhancement information for images.
Initialize an Enhancer instance.
Parameters
enhancement_config_file – The enhancement configuration to apply, False to leave as is.
add_sensor_enhancements(sensor)
Add sensor-specific enhancements.
apply(img, **info)
Apply the enhancements.
get_sensor_enhancement_config(sensor)
Get the sensor-specific config.
class satpy.writers.ImageWriter(name=None, filename=None, base_dir=None, enhance=None, **kwargs)
Bases: Writer
Base writer for image file formats.
Initialize image writer object.
Parameters
• name (str) – A name for this writer for log and error messages. If this writer is configured
in a YAML file its name should match the name of the YAML file. Writer names may also
appear in output file attributes.
• filename (str) – Filename to save data to. This filename can and should specify certain
python string formatting fields to differentiate between data written to the files. Any attributes
provided by the .attrs of a DataArray object may be included. Format and conversion
specifiers provided by the trollsift package may also be used. Any directories in the
provided pattern will be created if they do not exist. Example:

{platform_name}_{sensor}_{name}_{start_time:%Y%m%d_%H%M%S}.tif

• base_dir (str) – Base destination directories for all created files.

672 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• enhance (bool or Enhancer) – Whether to automatically enhance data to be more visu-


ally useful and to fit inside the file format being saved to. By default, this will default to
using the enhancement configuration files found using the default Enhancer class. This can
be set to False so that no enhancments are performed. This can also be an instance of the
Enhancer class if further custom enhancement is needed.
• kwargs (dict) – Additional keyword arguments to pass to the Writer base class.
Changed in version 0.10: Deprecated enhancement_config_file and ‘enhancer’ in favor of enhance. Pass an
instance of the Enhancer class to enhance instead.
save_dataset(dataset, filename=None, fill_value=None, overlay=None, decorate=None, compute=True,
units=None, **kwargs)
Save the dataset to a given filename.
This method creates an enhanced image using get_enhanced_image(). The image is then passed to
save_image(). See both of these functions for more details on the arguments passed to this method.
save_image(img: XRImage, filename: str | None = None, compute: bool = True, **kwargs)
Save Image object to a given filename.
Parameters
• img (trollimage.xrimage.XRImage) – Image object to save to disk.
• filename (str) – Optionally specify the filename to save this dataset to. It may include
string formatting patterns that will be filled in by dataset attributes.
• compute (bool) – If True (default), compute and save the dataset. If False return either
a Dask Delayed object or tuple of (source, target). See the return values below for more
information.
• **kwargs – Other keyword arguments to pass to this writer.
Returns
Value returned depends on compute. If compute is True then the return value is the result of
computing a Dask Delayed object or running dask.array.store(). If compute is False
then the returned value is either a Dask Delayed object that can be computed using de-
layed.compute() or a tuple of (source, target) that should be passed to dask.array.store().
If target is provided the the caller is responsible for calling target.close() if the target has this
method.
classmethod separate_init_kwargs(kwargs)
Separate the init kwargs.
class satpy.writers.Writer(name=None, filename=None, base_dir=None, **kwargs)
Bases: Plugin, DataDownloadMixin
Base Writer class for all other writers.
A minimal writer subclass should implement the save_dataset method.
Initialize the writer object.
Parameters
• name (str) – A name for this writer for log and error messages. If this writer is configured
in a YAML file its name should match the name of the YAML file. Writer names may also
appear in output file attributes.
• filename (str) – Filename to save data to. This filename can and should specify certain
python string formatting fields to differentiate between data written to the files. Any attributes

2.15. satpy 673


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

provided by the .attrs of a DataArray object may be included. Format and conversion
specifiers provided by the trollsift package may also be used. Any directories in the
provided pattern will be created if they do not exist. Example:

{platform_name}_{sensor}_{name}_{start_time:%Y%m%d_%H%M%S}.tif

• base_dir (str) – Base destination directories for all created files.


• kwargs (dict) – Additional keyword arguments to pass to the Plugin class.
static _prepare_metadata_for_filename_formatting(attrs)

create_filename_parser(base_dir)
Create a trollsift.parser.Parser object for later use.
get_filename(**kwargs)
Create a filename where output data will be saved.
Parameters
kwargs (dict) – Attributes and other metadata to use for formatting the previously provided
filename.
save_dataset(dataset, filename=None, fill_value=None, compute=True, units=None, **kwargs)
Save the dataset to a given filename.
This method must be overloaded by the subclass.
Parameters
• dataset (xarray.DataArray) – Dataset to save using this writer.
• filename (str) – Optionally specify the filename to save this dataset to. If not provided
then filename which can be provided to the init method will be used and formatted by
dataset attributes.
• fill_value (int or float) – Replace invalid values in the dataset with this fill value
if applicable to this writer.
• compute (bool) – If True (default), compute and save the dataset. If False return either
a Dask Delayed object or tuple of (source, target). See the return values below for more
information.
• units (str or None) – If not None, will convert the dataset to the given unit using pint-
xarray before saving. Default is not to do any conversion.
• **kwargs – Other keyword arguments for this particular writer.
Returns
Value returned depends on compute. If compute is True then the return value is the result of
computing a Dask Delayed object or running dask.array.store(). If compute is False
then the returned value is either a Dask Delayed object that can be computed using de-
layed.compute() or a tuple of (source, target) that should be passed to dask.array.store().
If target is provided the caller is responsible for calling target.close() if the target has this
method.
save_datasets(datasets, compute=True, **kwargs)
Save all datasets to one or more files.
Subclasses can use this method to save all datasets to one single file or optimize the writing of individual
datasets. By default this simply calls save_dataset for each dataset provided.
Parameters

674 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• datasets (iterable) – Iterable of xarray.DataArray objects to save using this writer.


• compute (bool) – If True (default), compute all the saves to disk. If False then the return
value is either a Dask Delayed object or two lists to be passed to a dask.array.store()
call. See return values below for more details.
• **kwargs – Keyword arguments to pass to save_dataset. See that documentation for more
details.
Returns
Value returned depends on compute keyword argument. If compute is True the value is the
result of either a dask.array.store() operation or a Dask Delayed compute, typically
this is None. If compute is False then the result is either a Dask Delayed object that can be
computed with delayed.compute() or a two element tuple of sources and targets to be passed
to dask.array.store(). If targets is provided then it is the caller’s responsibility to close
any objects that have a “close” method.
classmethod separate_init_kwargs(kwargs)
Help separating arguments between init and save methods.
Currently the Scene is passed one set of arguments to represent the Writer creation and saving steps. This is
not preferred for Writer structure, but provides a simpler interface to users. This method splits the provided
keyword arguments between those needed for initialization and those needed for the save_dataset and
save_datasets method calls.
Writer subclasses should try to prefer keyword arguments only for the save methods only and leave the init
keyword arguments to the base classes when possible.
satpy.writers._burn_overlay(img, image_metadata, area, cw_, overlays)
Burn the overlay in the image array.
satpy.writers._create_overlays_dict(color, width, grid, level_coast, level_borders)
Fill in the overlays dict.
satpy.writers._determine_mode(dataset)

satpy.writers.add_decorate(orig, fill_value=None, **decorate)


Decorate an image with text and/or logos/images.
This call adds text/logos in order as given in the input to keep the alignment features available in pydecorate.
An example of the decorate config:

decorate = {
'decorate': [
{'logo': {'logo_path': <path to a logo>, 'height': 143, 'bg': 'white', 'bg_
˓→opacity': 255}},

{'text': {'txt': start_time_txt,


'align': {'top_bottom': 'bottom', 'left_right': 'right'},
'font': <path to ttf font>,
'font_size': 22,
'height': 30,
'bg': 'black',
'bg_opacity': 255,
'line': 'white'}}
]
}

2.15. satpy 675


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Any numbers of text/logo in any order can be added to the decorate list, but the order of the list is kept as described
above.
Note that a feature given in one element, eg. bg (which is the background color) will also apply on the next
elements unless a new value is given.
align is a special keyword telling where in the image to start adding features, top_bottom is either top or bottom
and left_right is either left or right.
satpy.writers.add_logo(orig, dc, img, logo)
Add logos or other images to an image using the pydecorate package.
All the features of pydecorate’s add_logo are available. See documentation of Welcome to the Pydecorate
documentation! for more info.
satpy.writers.add_overlay(orig_img, area, coast_dir, color=None, width=None, resolution=None,
level_coast=None, level_borders=None, fill_value=None, grid=None,
overlays=None)
Add coastline, political borders and grid(graticules) to image.
Uses color for feature colors where color is a 3-element tuple of integers between 0 and 255 representing (R,
G, B).

* Warning

This function currently loses the data mask (alpha band).

resolution is chosen automatically if None (default), otherwise it should be one of:

‘f’ Full resolution 0.04 km


‘h’ High resolution 0.2 km
‘i’ Intermediate resolution 1.0 km
‘l’ Low resolution 5.0 km
‘c’ Crude resolution 25 km

grid is a dictionary with key values as documented in detail in pycoast


eg. overlay={‘grid’: {‘major_lonlat’: (10, 10),
‘write_text’: False, ‘outline’: (224, 224, 224), ‘width’: 0.5}}
Here major_lonlat is plotted every 10 deg for both longitude and latitude, no labels for the grid lines are plotted,
the color used for the grid lines is light gray, and the width of the gratucules is 0.5 pixels.
For grid if aggdraw is used, font option is mandatory, if not write_text is set to False:

font = aggdraw.Font('black', '/usr/share/fonts/truetype/msttcorefonts/Arial.ttf',


opacity=127, size=16)

satpy.writers.add_scale(orig, dc, img, scale)


Add scale to an image using the pydecorate package.
All the features of pydecorate’s add_scale are available. See documentation of Welcome to the Pydecorate
documentation! for more info.

676 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.writers.add_text(orig, dc, img, text)


Add text to an image using the pydecorate package.
All the features of pydecorate’s add_text are available. See documentation of Welcome to the Pydecorate
documentation! for more info.
satpy.writers.available_writers(as_dict=False)
Available writers based on current configuration.
Parameters
as_dict (bool) – Optionally return writer information as a dictionary. Default: False

Returns: List of available writer names. If as_dict is True then


a list of dictionaries including additionally writer information is returned.

satpy.writers.compute_writer_results(results)
Compute all the given dask graphs results so that the files are saved.
Parameters
results (iterable) – Iterable of dask graphs resulting from calls to scn.save_datasets(. . . ,
compute=False)
satpy.writers.configs_for_writer(writer=None)
Generate writer configuration files for one or more writers.
Parameters
writer (Optional[str]) – Yield configs only for this writer
Returns: Generator of lists of configuration files
satpy.writers.get_enhanced_image(dataset, enhance=None, overlay=None, decorate=None,
fill_value=None)
Get an enhanced version of dataset as an XRImage instance.
Parameters
• dataset (xarray.DataArray) – Data to be enhanced and converted to an image.
• enhance (bool or Enhancer) – Whether to automatically enhance data to be more visu-
ally useful and to fit inside the file format being saved to. By default, this will default to
using the enhancement configuration files found using the default Enhancer class. This can
be set to False so that no enhancments are performed. This can also be an instance of the
Enhancer class if further custom enhancement is needed.
• overlay (dict) – Options for image overlays. See add_overlay() for available options.
• decorate (dict) – Options for decorating the image. See add_decorate() for available
options.
• fill_value (int or float) – Value to use when pixels are masked or invalid. Default
of None means to create an alpha channel. See finalize() for more details. Only used
when adding overlays or decorations. Otherwise it is up to the caller to “finalize” the image
before using it except if calling img.show() or providing the image to a writer as these will
finalize the image.
satpy.writers.group_results_by_output_file(sources, targets)
Group results by output file.
For writers that return sources and targets for compute=False, split the results by output file.

2.15. satpy 677


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

When not only the data but also GeoTIFF tags are dask arrays, then save_datasets(..., compute=False)`
returns a tuple of flat lists, where the second list consists of a mixture of RIOTag and RIODataset objects (from
trollimage). In some cases, we may want to get a seperate delayed object for each file; for example, if we want
to add a wrapper to do something with the file as soon as it’s finished. This function unflattens the flat lists into
a list of (src, target) tuples.
For example, to close files as soon as computation is completed:

>>> @dask.delayed
>>> def closer(obj, targs):
... for targ in targs:
... targ.close()
... return obj
>>> (srcs, targs) = sc.save_datasets(writer="ninjogeotiff", compute=False, **ninjo_
˓→tags)

>>> for (src, targ) in group_results_by_output_file(srcs, targs):


... delayed_store = da.store(src, targ, compute=False)
... wrapped_store = closer(delayed_store, targ)
... wrapped.append(wrapped_store)
>>> compute_writer_results(wrapped)

In the wrapper you can do other useful tasks, such as writing a log message or moving files to a different directory.

* Warning

Adding a callback may impact runtime and RAM. The pattern or cause is unclear. Tests with FCI data show
that for resampling with high RAM use (from around 15 GB), runtime increases when a callback is added.
Tests with ABI or low RAM consumption rather show a decrease in runtime. More information, see these
GitHub comments Users who find out more are encouraged to contact the Satpy developers with clues.

Parameters
• sources – List of sources (typically dask.array) as returned by Scene.save_datasets().
• targets – List of targets (should be RIODataset or RIOTag) as returned by Scene.
save_datasets().
Returns
List of Tuple(List[sources], List[targets]) with a length equal to the number of output
files planned to be written by Scene.save_datasets().

satpy.writers.load_writer(writer, **writer_kwargs)
Find and load writer writer in the available configuration files.
satpy.writers.load_writer_configs(writer_configs, **writer_kwargs)
Load the writer from the provided writer_configs.
satpy.writers.read_writer_config(config_files, loader=<class 'yaml.loader.UnsafeLoader'>)
Read the writer config_files and return the info extracted.
satpy.writers.show(dataset, **kwargs)
Display the dataset as an image.
satpy.writers.split_results(results)
Split results.
Get sources, targets and delayed objects to separate lists from a list of results collected from (multiple) writer(s).

678 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.writers.to_image(dataset)
Convert dataset into a XRImage instance.
Convert the dataset into an instance of the XRImage class. This function makes no other changes. To get an
enhanced image, possibly with overlays and decoration, see get_enhanced_image().
Parameters
dataset (xarray.DataArray) – Data to be converted to an image.
Returns
Instance of XRImage.

Submodules
satpy._compat module

Backports and compatibility fixes for satpy.

satpy._config module

Satpy Configuration directory and file handling.


satpy._config._entry_point_module(entry_point)

satpy._config.cached_entry_point(group_name: str) → Iterable[EntryPoint]


Return entry_point for specified group.
This is a dummy proxy to allow caching and provide compatibility between versions of Python and im-
portlib_metadata.
satpy._config.config_search_paths(filename, search_dirs=None, **kwargs)
Get series of configuration base paths where Satpy configs are located.
satpy._config.get_config_path(filename)
Get the path to the highest priority version of a config file.
satpy._config.get_config_path_safe()
Get ‘config_path’ and check for proper ‘list’ type.
satpy._config.get_entry_points_config_dirs(group_name: str, include_config_path: bool = True) →
list[str]
Get the config directories for all entry points of given name.
satpy._config.glob_config(pattern, search_dirs=None)
Return glob results for all possible configuration locations.
Note: This method does not check the configuration “base” directory if the pattern includes a
subdirectory.
This is done for performance since this is usually used to find all configs for a certain component.

satpy._scene_converters module

Helper functions for converting the Scene object to some other object.
satpy._scene_converters._get_dataarrays_from_identifiers(scn, identifiers)
Return a list of DataArray based on a single or list of identifiers.
An identifier can be a DataID or a string with name of a valid DataID.

2.15. satpy 679


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy._scene_converters.to_geoviews(scn, gvtype=None, datasets=None, kdims=None, vdims=None,


dynamic=False)
Convert satpy Scene to geoviews.
Parameters
• scn (satpy.Scene) – Satpy Scene.
• gvtype (gv plot type) – One of gv.Image, gv.LineContours, gv.FilledContours, gv.Points
Default to geoviews.Image. See Geoviews documentation for details.
• datasets (list) – Limit included products to these datasets
• kdims (list of str) – Key dimensions. See geoviews documentation for more informa-
tion.
• vdims (list of str, optional) – Value dimensions. See geoviews documentation for
more information. If not given defaults to first data variable
• dynamic (bool, optional) – Load and compute data on-the-fly during visualiza-
tion. Default is False. See https://holoviews.org/user_guide/Gridded_Datasets.html#
working-with-xarray-data-types for more information. Has no effect when data to be vi-
sualized only has 2 dimensions (y/x or longitude/latitude) and doesn’t require grouping via
the Holoviews groupby function.
Returns: geoviews object
satpy._scene_converters.to_hvplot(scn, datasets=None, *args, **kwargs)
Convert satpy Scene to Hvplot. The method could not be used with composites of swath data.
Parameters
• scn (satpy.Scene) – Satpy Scene.
• datasets (list) – Limit included products to these datasets.
• args – Arguments coming from hvplot
• kwargs – hvplot options dictionary.
Returns
hvplot object that contains within it the plots of datasets list. As default it contains all Scene
datasets plots and a plot title is shown.
Example usage:

scene_list = ['ash','IR_108']
scn = Scene()
scn.load(scene_list)
scn = scn.resample('eurol')
plot = scn.to_hvplot(datasets=scene_list)
plot.ash+plot.IR_108

satpy._scene_converters.to_xarray(scn, datasets=None, header_attrs=None, exclude_attrs=None,


flatten_attrs=False, pretty=True, include_lonlats=True, epoch=None,
include_orig_name=True, numeric_name_prefix='CHANNEL_')
Merge all xr.DataArray(s) of a satpy.Scene to a CF-compliant xarray object.
If all Scene DataArrays are on the same area, it returns an xr.Dataset. If Scene DataArrays are on different areas,
currently it fails, although in future we might return a DataTree object, grouped by area.
Parameters

680 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• scn (satpy.Scene) – Satpy Scene.


• datasets (iterable, optional) – List of Satpy Scene datasets to include in the output
xr.Dataset. Elements can be string name, a wavelength as a number, a DataID, or DataQuery
object. If None (the default), it includes all loaded Scene datasets.
• header_attrs – Global attributes of the output xr.Dataset.
• epoch (str, optional) – Reference time for encoding the time coordinates (if available).
Format example: “seconds since 1970-01-01 00:00:00”. If None, the default reference time
is retrieved using “from satpy.cf_writer import EPOCH”.
• flatten_attrs (bool, optional) – If True, flatten dict-type attributes.
• exclude_attrs (list, optional) – List of xr.DataArray attribute names to be excluded.
• include_lonlats (bool, optional) – If True, includes ‘latitude’ and ‘longitude’ coor-
dinates. If the ‘area’ attribute is a SwathDefinition, it always includes latitude and longitude
coordinates.
• pretty (bool, optional) – Don’t modify coordinate names, if possible. Makes the file
prettier, but possibly less consistent.
• include_orig_name (bool, optional) – Include the original dataset name as a variable
attribute in the xr.Dataset.
• numeric_name_prefix (str, optional) – Prefix to add to each variable with name start-
ing with a digit. Use ‘’ or None to leave this out.
Returns
A CF-compliant xr.Dataset
Return type
xr.Dataset

satpy.aux_download module

Functions and utilities for downloading ancillary data.


class satpy.aux_download.DataDownloadMixin
Bases: object
Mixin class for Satpy components to download files.
This class simplifies the logic needed to download and cache data files needed for operations in a Satpy component
(readers, writers, etc). It does this in a two step process where files that might be downloaded are “registered”
and then “retrieved” when they need to be used.
To use this class include it as one of the subclasses of your Satpy component. Then in the __init__ method,
call the register_data_files function during initialization.

á Note

This class is already included in the FileYAMLReader and Writer base classes. There is no need to define
a custom class.

The below code is shown as an example:

2.15. satpy 681


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

from satpy.readers.yaml_reader import AbstractYAMLReader


from satpy.aux_download import DataDownloadMixin

class MyReader(AbstractYAMLReader, DataDownloadMixin):


def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.register_data_files()

This class expects data files to be configured in either a self.info['data_files'] (standard for read-
ers/writers) or self.config['data_files'] list. The data_files item itself is a list of dictionaries. This
information can also be passed directly to register_data_files for more complex cases. In YAML, for a
reader, this might look like this:

reader:
name: abi_l1b
short_name: ABI L1b
long_name: GOES-R ABI Level 1b
... other metadata ...
data_files:
- url: "https://example.com/my_data_file.dat"
- url: "https://raw.githubusercontent.com/pytroll/satpy/main/README.rst"
known_hash:
˓→"sha256:5891286b63e7745de08c4b0ac204ad44cfdb9ab770309debaba90308305fa759"

- url: "https://raw.githubusercontent.com/pytroll/satpy/main/RELEASING.md"
filename: "satpy_releasing.md"

In this example we register two files that might be downloaded. If known_hash is not provided or None (null in
YAML) then the data file will not be checked for validity when downloaded. See register_file() for more
information. You can optionally specify filename to define the in-cache name when this file is downloaded.
This can be useful in cases when the filename can not be easily determined from the URL.
When it comes time to needing the file, you can retrieve the local path by calling ~satpy.aux_download.
retrieve(cache_key) with the “cache key” generated during registration. These keys will be in the format:
<component_type>/<filename>. For a reader this would be readers/satpy_release.md.
This Mixin is not the only way to register and download files for a Satpy component, but is the most
generic and flexible. Feel free to use the register_file() and retrieve() functions directly. However,
find_registerable_files() must also be updated to support your component (if files are not register during
initialization).
DATA_FILE_COMPONENTS = {'composit': 'composites', 'corr': 'modifiers', 'modifi':
'modifiers', 'reader': 'readers', 'writer': 'writers'}

property _data_file_component_type

static _register_data_file(data_file_entry, comp_type)

register_data_files(data_files=None)
Register a series of files that may be downloaded later.
See DataDownloadMixin for more information on the assumptions and structure of the data file configu-
ration dictionary.
satpy.aux_download._find_registerable_files_compositors(sensors=None)
Load all compositor configs so that files are registered.
Compositor objects should register files when they are initialized.

682 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.aux_download._find_registerable_files_readers(readers=None)
Load all readers so that files are registered.
satpy.aux_download._find_registerable_files_writers(writers=None)
Load all writers so that files are registered.
satpy.aux_download._generate_filename(filename, component_type)

satpy.aux_download._register_modifier_files(modifiers)

satpy.aux_download._retrieve_all_with_pooch(pooch_kwargs)

satpy.aux_download._retrieve_offline(data_dir, cache_key)

satpy.aux_download._should_download(cache_key)
Check if we’re running tests and can download this file.
satpy.aux_download.find_registerable_files(readers=None, writers=None, composite_sensors=None)
Load all Satpy components so they can be downloaded.
Parameters
• readers (list or None) – Limit searching to these readers. If not specified or None then
all readers are searched. If an empty list then no readers are searched.
• writers (list or None) – Limit searching to these writers. If not specified or None then
all writers are searched. If an empty list then no writers are searched.
• composite_sensors (list or None) – Limit searching to composite configuration files
for these sensors. If None then all sensor configs will be searched. If an empty list then no
composites will be searched.
satpy.aux_download.register_file(url, filename, component_type=None, known_hash=None)
Register file for future retrieval.
This function only prepares Satpy to be able to download and cache the provided file. It will not download the
file. See satpy.aux_download.retrieve() for more information.
Parameters
• url (str) – URL where remote file can be downloaded.
• filename (str) – Filename used to identify and store the downloaded file as.
• component_type (str or None) – Name of the type of Satpy component that will use this
file. Typically “readers”, “composites”, “writers”, or “enhancements” for consistency. This
will be prepended to the filename when storing the data in the cache.
• known_hash (str) – Hash used to verify the file is downloaded correctly. See https://www.
fatiando.org/pooch/v1.3.0/beginner.html#hashes for more information. If not provided then
the file is not checked.
Returns
Cache key that can be used to retrieve the file later. The cache key consists of
the component_type and provided filename. This should be passed to satpy.
aux_download_retrieve() when the file will be used.
satpy.aux_download.retrieve(cache_key, pooch_kwargs=None)
Download and cache the file associated with the provided cache_key.
Cache location is controlled by the config data_dir key. See Data Directory for more information.
Parameters

2.15. satpy 683


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• cache_key (str) – Cache key returned by register_file().


• pooch_kwargs (dict or None) – Extra keyword arguments to pass to pooch.Pooch.
fetch().
Returns
Local path of the cached file.
satpy.aux_download.retrieve_all(readers=None, writers=None, composite_sensors=None,
pooch_kwargs=None)
Find cache-able data files for Satpy and download them.
The typical use case for this function is to download all ancillary files before going to an environment/system
that does not have internet access.
Parameters
• readers (list or None) – Limit searching to these readers. If not specified or None then
all readers are searched. If an empty list then no readers are searched.
• writers (list or None) – Limit searching to these writers. If not specified or None then
all writers are searched. If an empty list then no writers are searched.
• composite_sensors (list or None) – Limit searching to composite configuration files
for these sensors. If None then all sensor configs will be searched. If an empty list then no
composites will be searched.
• pooch_kwargs (dict) – Additional keyword arguments to pass to pooch fetch.
satpy.aux_download.retrieve_all_cmd(argv=None)
Call ‘retrieve_all’ function from console script ‘satpy_retrieve_all’.

satpy.conftest module

Pytest configuration and setup functions.


satpy.conftest.pytest_configure(config)
Set test configuration.
satpy.conftest.pytest_unconfigure(config)
Undo previous configurations.

satpy.dependency_tree module

Implementation of a dependency tree.


class satpy.dependency_tree.DependencyTree(readers, compositors=None, modifiers=None,
available_only=False)
Bases: Tree
Structure to discover and store Dataset dependencies.
Used primarily by the Scene object to organize dependency finding. Dependencies are stored used a series of
Node objects which this class is a subclass of.
Collect Dataset generating information.
Collect the objects that generate and have information about Datasets including objects that may depend on
certain Datasets being generated. This includes readers, compositors, and modifiers.
Composites and modifiers are defined per-sensor. If multiple sensors are available, compositors and modifiers
are searched for in sensor alphabetical order.

684 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Parameters
• readers (dict) – Reader name -> Reader Object
• compositors (dict) – Sensor name -> Composite ID -> Composite Object. Empty dictio-
nary by default.
• modifiers (dict) – Sensor name -> Modifier name -> (Modifier Class, modifier options).
Empty dictionary by default.
• available_only (bool) – Whether only reader’s available/loadable datasets should be
used when searching for dependencies (True) or use all known/configured datasets regardless
of whether the necessary files were provided to the reader (False). Note that when False
loadable variations of a dataset will have priority over other known variations. Default is
False.
_create_implicit_dependency_subtree(dataset_key, query)

_create_optional_subtrees(parent, prereqs, query=None)


Determine optional prerequisite Nodes for a composite.
Parameters
• parent (Node) – Compositor node to add these prerequisites under
• prereqs (sequence) – Strings (names), floats (wavelengths), or DataQuerys to analyze.
_create_prerequisite_subtrees(parent, prereqs, query=None)
Determine prerequisite Nodes for a composite.
Parameters
• parent (Node) – Compositor node to add these prerequisites under
• prereqs (sequence) – Strings (names), floats (wavelengths), DataQuerys or Nodes to
analyze.
_create_required_subtrees(parent, prereqs, query=None)
Determine required prerequisite Nodes for a composite.
Parameters
• parent (Node) – Compositor node to add these prerequisites under
• prereqs (sequence) – Strings (names), floats (wavelengths), DataQuerys or Nodes to
analyze.
_create_subtree_for_key(dataset_key, query=None)
Find the dependencies for dataset_key.
Parameters
• dataset_key (str, float, DataID, DataQuery) – Dataset identifier to locate and
find any additional dependencies for.
• query (DataQuery) – Additional filter parameters. See satpy.readers.get_key for more
details.
_create_subtree_from_compositors(dataset_key, query)

_create_subtree_from_reader(dataset_key, query)

_find_compositor(dataset_key, query)
Find the compositor object for the given dataset_key.

2.15. satpy 685


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_find_matching_ids_in_readers(dataset_key)

_find_reader_node(dataset_key, query)
Attempt to find a DataID in the available readers.
Parameters
dataset_key (str, float, DataID, DataQuery) – Dataset name, wavelength, DataID
or DataQuery to use in searching for the dataset from the available readers.
_get_subtree_for_existing_key(dsq)

_get_subtree_for_existing_name(dsq)

static _get_unique_id_from_sorted_ids(sorted_ids, distances)

_get_unique_matching_id(matching_ids, dataset_key, query)


Get unique matching id from matching_ids, for a given dataset_key and some optional query.
_get_unique_reader_node_from_id(data_id, reader_name)

_promote_query_to_modified_dataid(query, dep_key)
Promote a query to an id based on the dataset it will modify (dep).
Typical use case is requesting a modified dataset (query). This modified dataset most likely depends on a
less-modified dataset (dep_key). The less-modified dataset must come from a reader (at least for now) or
will eventually depend on a reader dataset. The original request key may be limited like (wavelength=0.67,
modifiers=(‘a’, ‘b’)) while the reader-based key should have all of its properties specified. This method
updates the original request key so it is fully specified and should reduce the chance of Node’s not being
unique.
copy()
Copy this node tree.
Note all references to readers are removed. This is meant to avoid tree copies accessing readers that would
return incompatible (Area) data. Theoretically it should be possible for tree copies to request compositor
or modifier information as long as they don’t depend on any datasets not already existing in the dependency
tree.
get_compositor(key)
Get a compositor.
get_modifier(comp_id)
Get a modifer.
populate_with_keys(dataset_keys: set, query=None)
Populate the dependency tree.
Parameters
• dataset_keys (set) – Strings, DataIDs, DataQuerys to find dependencies for
• query (DataQuery) – Additional filter parameters. See satpy.readers.get_key for more
details.
Returns
Root node of the dependency tree and a set of unknown datasets
Return type
(Node, set)

686 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

update_compositors_and_modifiers(compositors: dict, modifiers: dict) → None


Add additional compositors and modifiers to the tree.
Provided dictionaries and the first sub-level dictionaries are copied to avoid modifying the input.
Parameters
• compositors (dict) – Sensor name -> composite ID -> Composite Object
• modifiers (dict) – Sensor name -> Modifier name -> (Modifier Class, modifier options)
update_node_name(node, new_name)
Update ‘name’ property of a node and any related metadata.
class satpy.dependency_tree.Tree
Bases: object
A tree implementation.
Set up the tree.
add_child(parent, child)
Add a child to the tree.
add_leaf(ds_id, parent=None)
Add a leaf to the tree.
contains(item)
Check contains when we know the exact DataID or DataQuery.
empty_node = <Node ('__EMPTY_LEAF_SENTINEL__')>

getitem(item)
Get Node when we know the exact DataID or DataQuery.
leaves(limit_nodes_to: Iterable[DataID] | None = None, unique: bool = True) → list[Node]
Get the leaves of the tree starting at the root.
Parameters
• limit_nodes_to – Limit leaves to Nodes with the names (DataIDs) specified.
• unique – Only include individual leaf nodes once.
Returns
list of leaf nodes
trunk(limit_nodes_to: Iterable[DataID] | None = None, unique: bool = True, limit_children_to:
Container[DataID] | None = None) → list[Node]
Get the trunk nodes of the tree starting at this root.
Parameters
• limit_nodes_to – Limit searching to trunk nodes with the names (DataIDs) specified
and the children of these nodes.
• unique – Only include individual trunk nodes once
• limit_children_to – Limit searching to the children with the specified names. These
child nodes will be included in the result, but not their children.
Returns
list of trunk nodes

2.15. satpy 687


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.dependency_tree._DataIDContainer
Bases: dict
Special dictionary object that can handle dict operations based on dataset name, wavelength, or DataID.
Note: Internal dictionary keys are DataID objects.
get_key(match_key)
Get multiple fully-specified keys that match the provided query.
Parameters
match_key (DataID) – DataID or DataQuery of query parameters to use for searching. Can
also be a string representing the dataset name or a number representing the dataset wavelength.
keys()
Give currently contained keys.

satpy.node module

Nodes to build trees.


class satpy.node.CompositorNode(compositor)
Bases: Node
Implementation of a compositor-specific node.
Set up the node.
_copy_name_and_data(node_cache=None)

add_optional_nodes(children)
Add nodes to the optional field.
add_required_nodes(children)
Add nodes to the required field.
property compositor
Get the compositor.
property optional_nodes
Get the optional nodes.
property required_nodes
Get the required nodes.
exception satpy.node.MissingDependencies(missing_dependencies, *args, **kwargs)
Bases: RuntimeError
Exception when dependencies are missing.
Set up the exception.
class satpy.node.Node(name, data=None)
Bases: object
A node object.
Init the node object.
_copy_name_and_data(node_cache=None)

688 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

add_child(obj)
Add a child to the node.
copy(node_cache=None)
Make a copy of the node.
display(previous=0, include_data=False)
Display the node.
flatten(d=None)
Flatten tree structure to a one level dictionary.
Parameters
d (dict, optional) – output dictionary to update
Returns
Node.name -> Node. The returned dictionary includes the
current Node and all its children.
Return type
dict
property is_leaf
Check if the node is a leaf.
leaves(unique=True)
Get the leaves of the tree starting at this root.
trunk(unique=True, limit_children_to=None)
Get the trunk of the tree starting at this root.
update_name(new_name)
Update ‘name’ property.
class satpy.node.ReaderNode(unique_id, reader_name)
Bases: Node
Implementation of a storage-based node.
Set up the node.
_copy_name_and_data(node_cache)

property reader_name
Get the name of the reader.

satpy.plugin_base module

Classes and utilities for defining generic “plugin” components.


class satpy.plugin_base.Plugin(default_config_filename=None, config_files=None, **kwargs)
Bases: object
Base plugin class for all dynamically loaded and configured objects.
Load configuration files related to this plugin.
This initializes a self.config dictionary that can be used to customize the subclass.
Parameters

2.15. satpy 689


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• default_config_filename (str) – Configuration filename to use if no other files have


been specified with config_files.
• config_files (list or str) – Configuration files to load instead of those automatically
found in SATPY_CONFIG_PATH and other default configuration locations.
• kwargs (dict) – Unused keyword arguments.
load_yaml_config(conf )
Load a YAML configuration file and recursively update the overall configuration.

satpy.resample module

Resampling in Satpy.
Satpy provides multiple resampling algorithms for resampling geolocated data to uniform projected grids. The easiest
way to perform resampling in Satpy is through the Scene object’s resample() method. Additional utility functions
are also available to assist in resampling data. Below is more information on resampling with Satpy as well as links to
the relevant API documentation for available keyword arguments.

Resampling algorithms

Table 8: Available Resampling Algorithms


Resampler Description Related
nearest Nearest Neighbor KDTreeResampler
ewa Elliptical Weighted Averaging DaskEWAResampler
ewa_legacy Elliptical Weighted Averaging (Legacy) LegacyDaskEWAResampler
native Native NativeResampler
bilinear Bilinear BilinearResampler
bucket_avg Average Bucket Resampling BucketAvg
bucket_sum Sum Bucket Resampling BucketSum
bucket_count Count Bucket Resampling BucketCount
bucket_fraction Fraction Bucket Resampling BucketFraction
gradient_search Gradient Search Resampling create_gradient_search_resampler()

The resampling algorithm used can be specified with the resampler keyword argument and defaults to nearest:

>>> scn = Scene(...)


>>> euro_scn = scn.resample('euro4', resampler='nearest')

* Warning

Some resampling algorithms expect certain forms of data. For example, the EWA resampling expects polar-orbiting
swath data and prefers if the data can be broken in to “scan lines”. See the API documentation for a specific
algorithm for more information.

Resampling for comparison and composites

While all the resamplers can be used to put datasets of different resolutions on to a common area, the ‘native’ resampler
is designed to match datasets to one resolution in the dataset’s original projection. This is extremely useful when
generating composites between bands of different resolutions.

690 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

>>> new_scn = scn.resample(resampler='native')

By default this resamples to the highest resolution area (smallest footprint per pixel) shared between the loaded
datasets. You can easily specify the lowest resolution area:

>>> new_scn = scn.resample(scn.coarsest_area(), resampler='native')

Providing an area that is neither the minimum or maximum resolution area may work, but behavior is currently unde-
fined.

Caching for geostationary data

Satpy will do its best to reuse calculations performed to resample datasets, but it can only do this for the current
processing and will lose this information when the process/script ends. Some resampling algorithms, like nearest
and bilinear, can benefit by caching intermediate data on disk in the directory specified by cache_dir and using it
next time. This is most beneficial with geostationary satellite data where the locations of the source data and the target
pixels don’t change over time.

>>> new_scn = scn.resample('euro4', cache_dir='/path/to/cache_dir')

See the documentation for specific algorithms to see availability and limitations of caching for that algorithm.

Create custom area definition

See pyresample.geometry.AreaDefinition for information on creating areas that can be passed to the resample
method:

>>> from pyresample.geometry import AreaDefinition


>>> my_area = AreaDefinition(...)
>>> local_scene = scn.resample(my_area)

Resize area definition in pixels

Sometimes you may want to create a small image with fixed size in pixels. For example, to create an image of (y, x)
pixels :

>>> small_scn = scn.resample(scn.finest_area().copy(height=y, width=x), resampler=


˓→"nearest")

* Warning

Be aware that resizing with native resampling (resampler="native") only works if the new size is an integer
factor of the original input size. For example, multiplying the size by 2 or dividing the size by 2. Multiplying by
1.5 would not be allowed.

Create dynamic area definition

See pyresample.geometry.DynamicAreaDefinition for more information.


Examples coming soon. . .

2.15. satpy 691


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Store area definitions

Area definitions can be saved to a custom YAML file (see pyresample’s writing to disk) and loaded using pyresample’s
utility methods (pyresample’s loading from disk):

>>> from pyresample import load_area


>>> my_area = load_area('my_areas.yaml', 'my_area')

Or using satpy.resample.get_area_def(), which will search through all areas.yaml files in your
SATPY_CONFIG_PATH:

>>> from satpy.resample import get_area_def


>>> area_eurol = get_area_def("eurol")

For examples of area definitions, see the file etc/areas.yaml that is included with Satpy and where all the area
definitions shipped with Satpy are defined. The section below gives an overview of these area definitions.

Area definitions included in Satpy

Table 9: Area Definitions


Name Description
msg_seviri_fes_3km MSG SEVIRI Full Earth Scanning service area definition with 3 km resolution
msg_seviri_fes_1km MSG SEVIRI Full Earth Scanning service area definition with 1 km resolution
msg_seviri_rss_3km MSG SEVIRI Rapid Scanning Service area definition with 3 km resolution
msg_seviri_rss_1km MSG SEVIRI Rapid Scanning Service area definition with 1 km resolution
msg_seviri_iodc_3km MSG SEVIRI Indian Ocean Data Coverage service area definition with 3 km resolution
msg_seviri_iodc_1km MSG SEVIRI Indian Ocean Data Coverage service area definition with 1 km resolution
msg_seviri_fes_9km MSG SEVIRI Full Earth Scanning service area definition with 9 km resolution
msg_seviri_rss_9km MSG SEVIRI Rapid Scanning Service area definition with 9 km resolution
msg_seviri_iodc_9km MSG SEVIRI Indian Ocean Data Coverage service area definition with 9 km resolution
msg_seviri_fes_9km_ext MSG SEVIRI Full Earth Scanning service area definition with 9 km resolution (extended outside origin
msg_seviri_rss_9km_ext MSG SEVIRI Rapid Scanning Service area definition with 9 km resolution (extended outside original 3
msg_seviri_iodc_9km_ext MSG SEVIRI Indian Ocean Data Coverage service area definition with 9 km resolution (extended outsid
msg_seviri_fes_48km MSG SEVIRI Full Earth Scanning service area definition with 48 km resolution
msg_seviri_rss_48km MSG SEVIRI Rapid Scanning Service area definition with 48 km resolution
msg_seviri_iodc_48km MSG SEVIRI Indian Ocean Data Coverage service area definition with 48 km resolution
himawari_ahi_fes_500m Himawari-8/9 full disk area definition at 500m resolution
himawari_ahi_fes_1km Himawari-8/9 full disk area definition at 1km resolution
himawari_ahi_fes_2km Himawari-8/9 full disk area definition at 2km resolution
EuropeCanary Northern disk MSG image 0 degrees
EastEurope Eastern part of Northern disk MSG image 0 degrees
AfHorn_geos Eastern disk MSG image 0 degrees
SouthAmerica_geos Lower West part of Southern disk MSG image 0 degrees
mtg_fci_fdss_500m MTG FCI Full Disk Scanning Service area definition with 500 m SSP resolution
mtg_fci_fdss_1km MTG FCI Full Disk Scanning Service area definition with 1 km SSP resolution
mtg_fci_fdss_2km MTG FCI Full Disk Scanning Service area definition with 2 km SSP resolution
mtg_fci_fdss_4km MTG FCI Full Disk Scanning Service area definition with 4 km SSP resolution
mtg_fci_fdss_6km MTG FCI Full Disk Scanning Service area definition with 6 km SSP resolution
mtg_fci_fdss_32km MTG FCI Full Disk Scanning Service area definition with 32 km SSP resolution
goes_east_abi_f_500m GOES East ABI Full Disk at 500 m SSP resolution
goes_east_abi_f_1km GOES East ABI Full Disk at 1 km SSP resolution
goes_east_abi_f_2km GOES East ABI Full Disk at 2 km SSP resolution

692 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Table 9 – continued from previous page


Name Description
goes_west_abi_f_500m GOES West ABI Full Disk at 500 m SSP resolution
goes_west_abi_f_1km GOES West ABI Full Disk at 1 km SSP resolution
goes_west_abi_f_2km GOES West ABI Full Disk at 2 km SSP resolution
goes_east_abi_c_500m GOES East ABI CONUS at 500 m SSP resolution
goes_east_abi_c_1km GOES East ABI CONUS at 1 km SSP resolution
goes_east_abi_c_2km GOES East ABI CONUS at 2 km SSP resolution
goes_west_abi_p_500m GOES West ABI PACUS at 500 m resolution
goes_west_abi_p_1km GOES West ABI PACUS at 1 km SSP resolution
goes_west_abi_p_2km GOES West ABI PACUS at 2 km resolution
australia australia
mali mali
mali_eqc mali
sve Sweden and baltic sea
brazil2 brazil, platecarree
sudeste sudeste, platecarree
SouthAmerica_flat South America flat
south_america south_america, platecarree
brazil brazil, platecarree
worldeqc3km70 World in 3km, platecarree
worldeqc30km70 World in 3km, platecarree
worldeqc3km73 World in 3km, platecarree
worldeqc3km World in 3km, platecarree
worldeqc30km World in 3km, platecarree
libya libya area
phil kuwait area
phil_small kuwait area
kuwait kuwait area
afghanistan Afghanistan
maspalomas Western Africa and Canary Islands
afhorn_merc Africa horn 3km resolution
spain Spain
germ Germany
germ2 Germany
euro4 Euro 4km area - Europe
euro1 Euro 4km area - Europe
scan Scandinavia
scan2 Scandinavia - 2km area
scan1 Scandinavia - 1km area
scan500m Scandinavia - 500m area
mesanX Mesan-X rotated lon/lat 1.8km
mesanE Europe Mesan rotated lon/lat 1.8km
baws BAWS
eurotv Europe TV - 6.2x5.0km
eurotv4n Europe TV4 - 4.1x4.1km
eurol Euro 3.0km area - Europe
eurol1 Euro 3.0km area - Europe
scanl Scandinavia - Large
euron1 Northern Europe - 1km
euron0250 Northern Europe - 1km
nsea North Baltic Sea

2.15. satpy 693


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Table 9 – continued from previous page


Name Description
ssea South Baltic Sea
nsea250 North Baltic Sea
ssea250 South Baltic Sea
bsea250 South Baltic Sea
test250 South Baltic Sea
bsea1000 South Baltic Sea
euro Euro area - Europe
baltrad_lambert Baltrad Lambert
eport eport
eport1 eport
eport10 eport reduced resolution
eport4 eport reduced resolution
eport2 eport reduced resolution
npp_sample_m North America - NPP sample data - M-bands
arctic_europe_1km Arctic and Europe
arctic_europe_9km Arctic and Europe
sswe Southern Sweden
nswe Northern Sweden
sval Svalbard
ease_sh Antarctic EASE grid
ease_nh Arctic EASE grid
barents_sea Barents and Greenland seas
antarctica Antarctica - 1km
arctica arctica - 1km
euroasia Euroasia - Global 1km USGS Landuse database
euroasia_10km Euroasia - Global 1km USGS Landuse database
euroasia_asia Euroasia - optimised for Asia - Global 1km USGS Landuse database
euroasia_asia_10km Euroasia - optimised for Asia - Global 1km USGS Landuse database
australia_pacific Austalia/Pacific - Global 1km USGS Landuse database
australia_pacific_10km Austalia/Pacific - Global 1km USGS Landuse database
africa Africa - Global 1km USGS Landuse database
africa_10km Africa - Global 1km USGS Landuse database
southamerica_laea South America - Global 1km USGS Landuse database
southamerica_10km South America - Global 1km USGS Landuse database
northamerica North America - Global 1km USGS Landuse database
northamerica_10km North America - Global 1km USGS Landuse database
romania Romania - 3km
stere_asia_test stere
bocheng_test stere
nsper_swe nsper_swe
new_bsea250 new_bsea250
scanice Scandinavia and Iceland
baws250 BAWS, 250m resolution
moll moll
robinson robinson
met07globe Full disk IODC image 57 degrees
met09globe Cropped disk MSG image 0 degrees
met09globeFull Full disk MSG image 0 degrees
seviri_0deg Full disk MSG image 0 degrees
seviri_iodc Full disk MSG image 41.5 degrees

694 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Table 9 – continued from previous page


Name Description
msg_resample_area Full disk MSG image 20.75 degrees
EPSG_4326_36000x18000 Global equal latitude/longitude grid at 0.01 degree resolution
EPSG_4326_7200x3600 Global equal latitude/longitude grid at 0.05 degree resolution
EPSG_4326_3600x1800 Global equal latitude/longitude grid at 0.1 degree resolution
EPSG_4326_1440x720 Global equal latitude/longitude grid at 0.25 degree resolution
EPSG_4326_720x360 Global equal latitude/longitude grid at 0.5 degree resolution
EPSG_4326_360x180 Global equal latitude/longitude grid at 1 degree resolution

msg_seviri_fes_3km

msg_seviri_fes_1km

msg_seviri_rss_3km

msg_seviri_rss_1km

msg_seviri_iodc_3km

msg_seviri_iodc_1km

msg_seviri_fes_9km

msg_seviri_rss_9km

msg_seviri_iodc_9km

msg_seviri_fes_9km_ext

msg_seviri_rss_9km_ext

msg_seviri_iodc_9km_ext

msg_seviri_fes_48km

msg_seviri_rss_48km

msg_seviri_iodc_48km

himawari_ahi_fes_500m

himawari_ahi_fes_1km

himawari_ahi_fes_2km

EuropeCanary

EastEurope

AfHorn_geos

SouthAmerica_geos

mtg_fci_fdss_500m

2.15. satpy 695


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

mtg_fci_fdss_1km

mtg_fci_fdss_2km

mtg_fci_fdss_4km

mtg_fci_fdss_6km

mtg_fci_fdss_32km

goes_east_abi_f_500m

goes_east_abi_f_1km

goes_east_abi_f_2km

goes_west_abi_f_500m

goes_west_abi_f_1km

goes_west_abi_f_2km

goes_east_abi_c_500m

goes_east_abi_c_1km

goes_east_abi_c_2km

goes_west_abi_p_500m

goes_west_abi_p_1km

goes_west_abi_p_2km

australia

mali

mali_eqc

sve

brazil2

sudeste

SouthAmerica_flat

south_america

brazil

worldeqc3km70

worldeqc30km70

worldeqc3km73

696 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

worldeqc3km

worldeqc30km

libya

phil

phil_small

kuwait

afghanistan

maspalomas

afhorn_merc

spain

germ

germ2

euro4

euro1

scan

scan2

scan1

scan500m

mesanX

mesanE

baws

eurotv

eurotv4n

eurol

eurol1

scanl

euron1

euron0250

nsea

2.15. satpy 697


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

ssea

nsea250

ssea250

bsea250

test250

bsea1000

euro

baltrad_lambert

eport

eport1

eport10

eport4

eport2

npp_sample_m

arctic_europe_1km

arctic_europe_9km

sswe

nswe

sval

ease_sh

ease_nh

barents_sea

antarctica

arctica

euroasia

euroasia_10km

euroasia_asia

euroasia_asia_10km

australia_pacific

698 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

australia_pacific_10km

africa

africa_10km

southamerica_laea

southamerica_10km

northamerica

northamerica_10km

romania

stere_asia_test

bocheng_test

nsper_swe

new_bsea250

scanice

baws250

moll

robinson

met07globe

met09globe

met09globeFull

seviri_0deg

seviri_iodc

msg_resample_area

EPSG_4326_36000x18000

EPSG_4326_7200x3600

EPSG_4326_3600x1800

EPSG_4326_1440x720

EPSG_4326_720x360

EPSG_4326_360x180

class satpy.resample.BilinearResampler(source_geo_def , target_geo_def )


Bases: BaseResampler

2.15. satpy 699


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Resample using bilinear interpolation.


This resampler implements on-disk caching when the cache_dir argument is provided to the resample method.
This should provide significant performance improvements on consecutive resampling of geostationary data.
Parameters
• cache_dir (str) – Long term storage directory for intermediate results.
• radius_of_influence (float) – Search radius cut off distance in meters
• epsilon (float) – Allowed uncertainty in meters. Increasing uncertainty reduces execution
time.
• reduce_data (bool) – Reduce the input data to (roughly) match the target area.
Init BilinearResampler.
compute(data, fill_value=None, **kwargs)
Resample the given data using bilinear interpolation.
load_bil_info(cache_dir, **kwargs)
Load bilinear resampling info from cache directory.
precompute(mask=None, radius_of_influence=50000, epsilon=0, reduce_data=True, cache_dir=False,
**kwargs)
Create bilinear coefficients and store them for later use.
save_bil_info(cache_dir, **kwargs)
Save bilinear resampling info to cache directory.
class satpy.resample.BucketAvg(source_geo_def , target_geo_def )
Bases: BucketResamplerBase
Class for averaging bucket resampling.
Bucket resampling calculates the average of all the values that are closest to each bin and inside the target area.
Parameters
• fill_value (float (default: np.nan)) – Fill value to mark missing/invalid values
in the input data, as well as in the binned and averaged output data.
• skipna (boolean (default: True)) – If True, skips missing values (as marked by NaN
or fill_value) for the average calculation (similarly to Numpy’s nanmean). Buckets containing
only missing values are set to fill_value. If False, sets the bucket to fill_value if one or more
missing values are present in the bucket (similarly to Numpy’s mean). In both cases, empty
buckets are set to fill_value.
Initialize bucket resampler.
compute(data, fill_value=nan, skipna=True, **kwargs)
Call the resampling.
Parameters
• data (numpy.Array, dask.Array) – Data to be resampled
• fill_value (numpy.nan, int) – fill_value. Defaults to numpy.nan
• skipna (boolean) – Skip NA’s. Default True
Returns
dask.Array

700 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.resample.BucketCount(source_geo_def , target_geo_def )


Bases: BucketResamplerBase
Class for bucket resampling which implements hit-counting.
This resampler calculates the number of occurences of the input data closest to each bin and inside the target
area.
Initialize bucket resampler.
compute(data, **kwargs)
Call the resampling.
class satpy.resample.BucketFraction(source_geo_def , target_geo_def )
Bases: BucketResamplerBase
Class for bucket resampling to compute category fractions.
This resampler calculates the fraction of occurences of the input data per category.
Initialize bucket resampler.
compute(data, fill_value=nan, categories=None, **kwargs)
Call the resampling.
class satpy.resample.BucketResamplerBase(source_geo_def , target_geo_def )
Bases: BaseResampler
Base class for bucket resampling which implements averaging.
Initialize bucket resampler.
compute(data, **kwargs)
Call the resampling.
precompute(**kwargs)
Create X and Y indices and store them for later use.
resample(data, **kwargs)
Resample data by calling precompute and compute methods.
Parameters
data (xarray.DataArray) – Data to be resampled
Returns (xarray.DataArray): Data resampled to the target area
class satpy.resample.BucketSum(source_geo_def , target_geo_def )
Bases: BucketResamplerBase
Class for bucket resampling which implements accumulation (sum).
This resampler calculates the cumulative sum of all the values that are closest to each bin and inside the target
area.
Parameters
• fill_value (float (default: np.nan)) – Fill value for missing data
• skipna (boolean (default: True)) – If True, skips NaN values for the sum calcula-
tion (similarly to Numpy’s nansum). Buckets containing only NaN are set to zero. If False,
sets the bucket to NaN if one or more NaN values are present in the bucket (similarly to
Numpy’s sum). In both cases, empty buckets are set to 0.
Initialize bucket resampler.

2.15. satpy 701


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

compute(data, skipna=True, **kwargs)


Call the resampling.
class satpy.resample.KDTreeResampler(source_geo_def , target_geo_def )
Bases: BaseResampler
Resample using a KDTree-based nearest neighbor algorithm.
This resampler implements on-disk caching when the cache_dir argument is provided to the resample method.
This should provide significant performance improvements on consecutive resampling of geostationary data. It
is not recommended to provide cache_dir when the mask keyword argument is provided to precompute which
occurs by default for SwathDefinition source areas.
Parameters
• cache_dir (str) – Long term storage directory for intermediate results.
• mask (bool) – Force resampled data’s invalid pixel mask to be used when searching for
nearest neighbor pixels. By default this is True for SwathDefinition source areas and False
for all other area definition types.
• radius_of_influence (float) – Search radius cut off distance in meters
• epsilon (float) – Allowed uncertainty in meters. Increasing uncertainty reduces execution
time.
Init KDTreeResampler.
_adjust_radius_of_influence(radius_of_influence)
Adjust radius of influence.
_apply_cached_index(val, idx_name, persist=False)
Reassign resampler index attributes.
_read_resampler_attrs()
Read certain attributes from the resampler for caching.
compute(data, weight_funcs=None, fill_value=nan, with_uncert=False, **kwargs)
Resample data.
load_neighbour_info(cache_dir, mask=None, **kwargs)
Read index arrays from either the in-memory or disk cache.
precompute(mask=None, radius_of_influence=None, epsilon=0, cache_dir=None, **kwargs)
Create a KDTree structure and store it for later use.
Note: The mask keyword should be provided if geolocation may be valid where data points are invalid.
save_neighbour_info(cache_dir, mask=None, **kwargs)
Cache resampler’s index arrays if there is a cache dir.
class satpy.resample.NativeResampler(source_geo_def: SwathDefinition | AreaDefinition, target_geo_def:
CoordinateDefinition | AreaDefinition)
Bases: BaseResampler
Expand or reduce input datasets to be the same shape.
If data is higher resolution (more pixels) than the destination area then data is averaged to match the destination
resolution.
If data is lower resolution (less pixels) than the destination area then data is repeated to match the destination
resolution.

702 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

This resampler does not perform any caching or masking due to the simplicity of the operations.
Initialize resampler with geolocation information.
Parameters
• source_geo_def – Geolocation definition for the data to be resampled
• target_geo_def – Geolocation definition for the area to resample data to.
classmethod _expand_reduce(d_arr, repeats)
Expand reduce.
compute(data, expand=True, **kwargs)
Resample data with NativeResampler.
resample(data, cache_dir=None, mask_area=False, **kwargs)
Run NativeResampler.
satpy.resample._aggregate(d, y_size, x_size)
Average every 4 elements (2x2) in a 2D array.
satpy.resample._get_replicated_chunk_sizes(d_arr, repeats)

satpy.resample._mean(data, y_size, x_size)

satpy.resample._move_existing_caches(cache_dir, filename)
Move existing cache files out of the way.
satpy.resample._rechunk_if_nonfactor_chunks(dask_arr, y_size, x_size)

satpy.resample._repeat_by_factor(data, block_info=None)

satpy.resample._replicate(d_arr, repeats)
Repeat data pixels by the per-axis factors specified.
satpy.resample.add_crs_xy_coords(data_arr, area)
Add pyproj.crs.CRS and x/y or lons/lats to coordinates.
For SwathDefinition or GridDefinition areas this will add a crs coordinate and coordinates for the 2D arrays of
lons and lats.
For AreaDefinition areas this will add a crs coordinate and the 1-dimensional x and y coordinate variables.
Parameters
• data_arr (xarray.DataArray) – DataArray to add the ‘crs’ coordinate.
• area (pyresample.geometry.AreaDefinition) – Area to get CRS information from.
satpy.resample.add_xy_coords(data_arr, area, crs=None)
Assign x/y coordinates to DataArray from provided area.
If ‘x’ and ‘y’ coordinates already exist then they will not be added.
Parameters
• data_arr (xarray.DataArray) – data object to add x/y coordinates to
• area (pyresample.geometry.AreaDefinition) – area providing the coordinate data.
• crs (pyproj.crs.CRS or None) – CRS providing additional information about the area’s
coordinate reference system if available. Requires pyproj 2.0+.
Returns (xarray.DataArray): Updated DataArray object

2.15. satpy 703


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.resample.get_area_def(area_name)
Get the definition of area_name from file.
The file is defined to use is to be placed in the $SATPY_CONFIG_PATH directory, and its name is defined in
satpy’s configuration file.
satpy.resample.get_area_file()
Find area file(s) to use.
The files are to be named areas.yaml or areas.def.
satpy.resample.get_fill_value(dataset)
Get the fill value of the dataset, defaulting to np.nan.
satpy.resample.hash_dict(the_dict, the_hash=None)
Calculate a hash for a dictionary.
satpy.resample.prepare_resampler(source_area, destination_area, resampler=None, **resample_kwargs)
Instantiate and return a resampler.
satpy.resample.resample(source_area, data, destination_area, resampler=None, **kwargs)
Do the resampling.
satpy.resample.resample_dataset(dataset, destination_area, **kwargs)
Resample dataset and return the resampled version.
Parameters
• dataset (xarray.DataArray) – Data to be resampled.
• destination_area – The destination onto which to project the data, either a full blown
area definition or a string corresponding to the name of the area as defined in the area file.
• **kwargs – The extra parameters to pass to the resampler objects.
Returns
A resampled DataArray with updated .attrs["area"] field. The dtype of the array is pre-
served.
satpy.resample.update_resampled_coords(old_data, new_data, new_area)
Add coordinate information to newly resampled DataArray.
Parameters
• old_data (xarray.DataArray) – Old data before resampling.
• new_data (xarray.DataArray) – New data after resampling.
• new_area (pyresample.geometry.BaseDefinition) – Area definition for the newly re-
sampled data.

satpy.scene module

Scene object to hold satellite data.


exception satpy.scene.DelayedGeneration
Bases: KeyError
Mark that a dataset can’t be generated without further modification.

704 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

class satpy.scene.Scene(filenames=None, reader=None, filter_parameters=None, reader_kwargs=None)


Bases: object
The Almighty Scene Class.
Example usage:

from satpy import Scene


from glob import glob

# create readers and open files


scn = Scene(filenames=glob('/path/to/files/*'), reader='viirs_sdr')

# load datasets from input files


scn.load(['I01', 'I02'])

# resample from satellite native geolocation to builtin 'eurol' Area


new_scn = scn.resample('eurol')

# save all resampled datasets to geotiff files in the current directory


new_scn.save_datasets()

Initialize Scene with Reader and Compositor objects.


To load data filenames and preferably reader must be specified:

scn = Scene(filenames=glob('/path/to/viirs/sdr/files/*'), reader='viirs_sdr')

If filenames is provided without reader then the available readers will be searched for a Reader that can
support the provided files. This can take a considerable amount of time so it is recommended that reader
always be provided. Note without filenames the Scene is created with no Readers available. When a Scene is
created with no Readers, each xarray.DataArray must be added manually:

scn = Scene()
scn['my_dataset'] = DataArray(my_data_array, attrs={})

The attrs dictionary contains the metadata for the data. See Metadata for more information.
Further, notice that it is also possible to load a combination of files or sets of files each requiring their specific
reader. For that filenames needs to be a dict (see parameters list below), e.g.:

scn = Scene(filenames={'nwcsaf-pps_nc': glob('/path/to/nwc/saf/pps/files/*'),


'modis_l1b': glob('/path/to/modis/lvl1/files/*')})

Parameters
• filenames (iterable or dict) – A sequence of files that will be used to load data from.
A dict object should map reader names to a list of filenames for that reader.
• reader (str or list) – The name of the reader to use for loading the data or a list of
names.
• filter_parameters (dict) – Specify loaded file filtering parameters. Shortcut for
reader_kwargs[‘filter_parameters’].
• reader_kwargs (dict) – Keyword arguments to pass to specific reader instances. Either
a single dictionary that will be passed onto to all reader instances, or a dictionary mapping
reader names to sub-dictionaries to pass different arguments to different reader instances.

2.15. satpy 705


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Keyword arguments for remote file access are also given in this dictionary. See documenta-
tion for usage examples.

_check_known_composites(available_only=False)
Create new dependency tree and check what composites we know about.
static _compare_area_defs(compare_func: Callable, area_defs: list[AreaDefinition]) →
list[AreaDefinition]

_compare_areas(datasets=None, compare_func=<built-in function max>)


Compare areas for the provided datasets.
Parameters
• datasets (iterable) – Datasets whose areas will be compared. Can be either xar-
ray.DataArray objects or identifiers to get the DataArrays from the current Scene. Defaults
to all datasets. This can also be a series of area objects, typically AreaDefinitions.
• compare_func (callable) – min or max or other function used to compare the dataset’s
areas.
static _compare_swath_defs(compare_func: Callable, swath_defs: list[SwathDefinition]) →
list[SwathDefinition]

_contained_sensor_names() → set[str]

_copy_datasets_and_wishlist(new_scn, datasets)

_create_reader_instances(filenames=None, reader=None, reader_kwargs=None)


Find readers and return their instances.
_filter_loaded_datasets_from_trunk_nodes(trunk_nodes)

_gather_all_areas(datasets)
Gather all areas from datasets.
They have to be of the same type, and at least one dataset should have an area.
_generate_composite(comp_node: CompositorNode, keepables: set)
Collect all composite prereqs and create the specified composite.
Parameters
• comp_node – Composite Node to generate a Dataset for
• keepables – set to update if any datasets are needed when generation is continued later.
This can happen if generation is delayed to incompatible areas which would require resam-
pling first.
_generate_composites_from_loaded_datasets()
Compute all the composites contained in requirements.
_generate_composites_nodes_from_loaded_datasets(compositor_nodes)
Read (generate) composites.
_get_finalized_destination_area(destination_area, new_scn)

706 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_prereq_datasets(comp_id, prereq_nodes, keepables, skip=False)


Get a composite’s prerequisites, generating them if needed.
Parameters
• comp_id (DataID) – DataID for the composite whose prerequisites are being collected.
• prereq_nodes (sequence of Nodes) – Prerequisites to collect
• keepables (set) – set to update if any prerequisites can’t be loaded at this time (see
_generate_composite).
• skip (bool) – If True, consider prerequisites as optional and only log when they are miss-
ing. If False, prerequisites are considered required and will raise an exception and log a
warning if they can’t be collected. Defaults to False.
Raises
KeyError – If required (skip=False) prerequisite can’t be collected.
static _get_writer_by_ext(extension)
Find the writer matching the extension.
Defaults to “simple_image”.
Example Mapping:
• geotiff: .tif, .tiff
• cf: .nc
• mitiff: .mitiff
• simple_image: .png, .jpeg, .jpg, . . .

Parameters
extension (str) – Filename extension starting with “.” (ex. “.png”).
Returns
The name of the writer to use for this extension.
Return type
str

_ipython_key_completions_()

_load_datasets_by_readers(reader_datasets, **kwargs)

_prepare_resampler(source_area, destination_area, resamplers, resample_kwargs)

_read_dataset_nodes_from_storage(reader_nodes, **kwargs)
Read the given dataset nodes from storage.
_read_datasets_from_storage(**kwargs)
Load datasets from the necessary reader.
Parameters
**kwargs – Keyword arguments to pass to the reader’s load method.
Returns
DatasetDict of loaded datasets
_reader_times(time_prop_name)

2.15. satpy 707


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_reduce_data(dataset, source_area, destination_area, reduce_data, reductions, resample_kwargs)

_remove_failed_datasets(keepables)
Remove the datasets that we couldn’t create.
_resampled_scene(new_scn, destination_area, reduce_data=True, **resample_kwargs)
Resample datasets to the destination area.
If data reduction is enabled, some local caching is perfomed in order to avoid recomputation of area inter-
sections.
static _slice_area_from_bbox(src_area, dst_area, ll_bbox=None, xy_bbox=None)
Slice the provided area using the bounds provided.
_slice_data(source_area, slices, dataset)
Slice the data to reduce it.
_slice_datasets(dataset_ids, slice_key, new_area, area_only=True)
Slice scene in-place for the datasets specified.
_sort_dataset_nodes_by_reader(reader_nodes)

_update_dependency_tree(needed_datasets, query)

aggregate(dataset_ids=None, boundary='trim', side='left', func='mean', **dim_kwargs)


Create an aggregated version of the Scene.
Parameters
• dataset_ids (iterable) – DataIDs to include in the returned Scene. Defaults to all
datasets.
• func (string, callable) – Function to apply on each aggregation window. One of
‘mean’, ‘sum’, ‘min’, ‘max’, ‘median’, ‘argmin’, ‘argmax’, ‘prod’, ‘std’, ‘var’ strings or a
custom function. ‘mean’ is the default.
• boundary – See xarray.DataArray.coarsen(), ‘trim’ by default.
• side – See xarray.DataArray.coarsen(), ‘left’ by default.
• dim_kwargs – the size of the windows to aggregate.
Returns
A new aggregated scene

Ë See also

xarray.DataArray.coarsen

Example
scn.aggregate(func=’min’, x=2, y=2) will apply the min function across a window of size 2 pixels.
all_composite_ids()
Get all IDs for configured composites.
all_composite_names()
Get all names for all configured composites.

708 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

all_dataset_ids(reader_name=None, composites=False)
Get IDs of all datasets from loaded readers or reader_name if specified.
Excludes composites unless composites=True is passed.
Parameters
• reader_name (str, optional) – Name of reader for which to return dataset IDs. If not
passed, return dataset IDs for all readers.
• composites (bool, optional) – If True, return dataset IDs including composites. If
False (default), return only non-composite dataset IDs.
Returns: list of all dataset IDs
all_dataset_names(reader_name=None, composites=False)
Get all known dataset names configured for the loaded readers.
Note that some readers dynamically determine what datasets are known by reading the contents of the files
they are provided. This means that the list of datasets returned by this method may change depending on
what files are provided even if a product/dataset is a “standard” product for a particular reader.
Excludes composites unless composites=True is passed.
Parameters
• reader_name (str, optional) – Name of reader for which to return dataset IDs. If not
passed, return dataset names for all readers.
• composites (bool, optional) – If True, return dataset IDs including composites. If
False (default), return only non-composite dataset names.
Returns: list of all dataset names
all_modifier_names()
Get names of configured modifier objects.
property all_same_area
All contained data arrays are on the same area.
property all_same_proj
All contained data array are in the same projection.
available_composite_ids()
Get IDs of composites that can be generated from the available datasets.
available_composite_names()
Names of all configured composites known to this Scene.
available_dataset_ids(reader_name=None, composites=False)
Get DataIDs of loadable datasets.
This can be for all readers loaded by this Scene or just for reader_name if specified.
Available dataset names are determined by what each individual reader can load. This is normally deter-
mined by what files are needed to load a dataset and what files have been provided to the scene/reader.
Some readers dynamically determine what is available based on the contents of the files provided.
By default, only returns non-composite dataset IDs. To include composite dataset IDs, pass
composites=True.
Parameters

2.15. satpy 709


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• reader_name (str, optional) – Name of reader for which to return dataset IDs. If not
passed, return dataset IDs for all readers.
• composites (bool, optional) – If True, return dataset IDs including composites. If
False (default), return only non-composite dataset IDs.
Returns: list of available dataset IDs
available_dataset_names(reader_name=None, composites=False)
Get the list of the names of the available datasets.
By default, this only shows names of datasets directly defined in (one of the) readers. Names of composites
are not returned unless the argument composites=True is passed.
Parameters
• reader_name (str, optional) – Name of reader for which to return dataset IDs. If not
passed, return dataset names for all readers.
• composites (bool, optional) – If True, return dataset IDs including composites. If
False (default), return only non-composite dataset names.
Returns: list of available dataset names
chunk(**kwargs)
Call chunk on all Scene data arrays.
See xarray.DataArray.chunk() for more details.
coarsest_area(datasets=None)
Get lowest resolution area for the provided datasets.
Parameters
datasets (iterable) – Datasets whose areas will be compared. Can be either xar-
ray.DataArray objects or identifiers to get the DataArrays from the current Scene. Defaults
to all datasets.
compute(**kwargs)
Call compute on all Scene data arrays.
See xarray.DataArray.compute() for more details. Note that this will convert the contents of the
DataArray to numpy arrays which may not work with all parts of Satpy which may expect dask arrays.
copy(datasets=None)
Create a copy of the Scene including dependency information.
Parameters
datasets (list, tuple) – DataID objects for the datasets to include in the new Scene
object.
crop(area=None, ll_bbox=None, xy_bbox=None, dataset_ids=None)
Crop Scene to a specific Area boundary or bounding box.
Parameters
• area (AreaDefinition) – Area to crop the current Scene to
• ll_bbox (tuple, list) – 4-element tuple where values are in lon/lat degrees. Elements
are (xmin, ymin, xmax, ymax) where X is longitude and Y is latitude.
• xy_bbox (tuple, list) – Same as ll_bbox but elements are in projection units.
• dataset_ids (iterable) – DataIDs to include in the returned Scene. Defaults to all
datasets.

710 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

This method will attempt to intelligently slice the data to preserve relationships between datasets. For
example, if we are cropping two DataArrays of 500m and 1000m pixel resolution then this method will
assume that exactly 4 pixels of the 500m array cover the same geographic area as a single 1000m pixel. It
handles these cases based on the shapes of the input arrays and adjusting slicing indexes accordingly. This
method will have trouble handling cases where data arrays seem related but don’t cover the same geographic
area or if the coarsest resolution data is not related to the other arrays which are related.
It can be useful to follow cropping with a call to the native resampler to resolve all datasets to the same
resolution and compute any composites that could not be generated previously:

>>> cropped_scn = scn.crop(ll_bbox=(-105., 40., -95., 50.))


>>> remapped_scn = cropped_scn.resample(resampler='native')

á Note

The resample method automatically crops input data before resampling to save time/memory.

property end_time
Return the end time of the file.
If no data is currently contained in the Scene then loaded readers will be consulted. If no readers are loaded
then the Scene.start_time is returned.
finest_area(datasets=None)
Get highest resolution area for the provided datasets.
Parameters
datasets (iterable) – Datasets whose areas will be compared. Can be either xar-
ray.DataArray objects or identifiers to get the DataArrays from the current Scene. Defaults
to all datasets.
generate_possible_composites(unload)
See which composites can be generated and generate them.
Parameters
unload (bool) – if the dependencies of the composites should be unloaded after successful
generation.
get(key, default=None)
Return value from DatasetDict with optional default.
images()
Generate images for all the datasets from the scene.
iter_by_area()
Generate datasets grouped by Area.
Returns
generator of (area_obj, list of dataset objects)
keys(**kwargs)
Get DataID keys for the underlying data container.
load(wishlist, calibration='*', resolution='*', polarization='*', level='*', modifiers='*', generate=True,
unload=True, **kwargs)
Read and generate requested datasets.

2.15. satpy 711


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

When the wishlist contains DataQuery objects they can either be fully-specified DataQuery objects with
every parameter specified or they can not provide certain parameters and the “best” parameter will be
chosen. For example, if a dataset is available in multiple resolutions and no resolution is specified in the
wishlist’s DataQuery then the highest (the smallest number) resolution will be chosen.
Loaded DataArray objects are created and stored in the Scene object.
Parameters
• wishlist (iterable) – List of names (str), wavelengths (float), DataQuery objects or
DataID of the requested datasets to load. See available_dataset_ids() for what datasets are
available.
• calibration (list | str) – Calibration levels to limit available datasets. This is a
shortcut to having to list each DataQuery/DataID in wishlist.
• resolution (list | float) – Resolution to limit available datasets. This is a shortcut
similar to calibration.
• polarization (list | str) – Polarization (‘V’, ‘H’) to limit available datasets. This is
a shortcut similar to calibration.
• modifiers (tuple | str) – Modifiers that should be applied to the loaded datasets.
This is a shortcut similar to calibration, but only represents a single set of
modifiers as a tuple. For example, specifying modifiers=('sunz_corrected',
'rayleigh_corrected') will attempt to apply both of these modifiers to all loaded
datasets in the specified order (‘sunz_corrected’ first).
• level (list | str) – Pressure level to limit available datasets. Pressure should be in
hPa or mb. If an altitude is used it should be specified in inverse meters (1/m). The units
of this parameter ultimately depend on the reader.
• generate (bool) – Generate composites from the loaded datasets (default: True)
• unload (bool) – Unload datasets that were required to generate the requested datasets
(composite dependencies) but are no longer needed.
max_area(datasets=None)
Get highest resolution area for the provided datasets. Deprecated.
Deprecated. Use finest_area() instead.
Parameters
datasets (iterable) – Datasets whose areas will be compared. Can be either xar-
ray.DataArray objects or identifiers to get the DataArrays from the current Scene. Defaults
to all datasets.
min_area(datasets=None)
Get lowest resolution area for the provided datasets. Deprecated.
Deprecated. Use coarsest_area() instead.
Parameters
datasets (iterable) – Datasets whose areas will be compared. Can be either xar-
ray.DataArray objects or identifiers to get the DataArrays from the current Scene. Defaults
to all datasets.
property missing_datasets
Set of DataIDs that have not been successfully loaded.

712 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

persist(**kwargs)
Call persist on all Scene data arrays.
See xarray.DataArray.persist() for more details.
resample(destination=None, datasets=None, generate=True, unload=True, resampler=None,
reduce_data=True, **resample_kwargs)
Resample datasets and return a new scene.
Parameters
• destination (AreaDefinition, GridDefinition) – area definition to resample to.
If not specified then the area returned by Scene.finest_area() will be used.
• datasets (list) – Limit datasets to resample to these specified data arrays. By default
all currently loaded datasets are resampled.
• generate (bool) – Generate any requested composites that could not be previously due
to incompatible areas (default: True).
• unload (bool) – Remove any datasets no longer needed after requested composites have
been generated (default: True).
• resampler (str) – Name of resampling method to use. By default, this is a nearest neigh-
bor KDTree-based resampling (‘nearest’). Other possible values include ‘native’, ‘ewa’,
etc. See the resample documentation for more information.
• reduce_data (bool) – Reduce data by matching the input and output areas and slicing
the data arrays (default: True)
• resample_kwargs – Remaining keyword arguments to pass to individual resampler
classes. See the individual resampler class documentation here for available arguments.
save_dataset(dataset_id, filename=None, writer=None, overlay=None, decorate=None, compute=True,
**kwargs)
Save the dataset_id to file using writer.
Parameters
• dataset_id (str or Number or DataID or DataQuery) – Identifier for the dataset
to save to disk.
• filename (str) – Optionally specify the filename to save this dataset to. It may include
string formatting patterns that will be filled in by dataset attributes.
• writer (str) – Name of writer to use when writing data to disk. Default to "geotiff". If
not provided, but filename is provided then the filename’s extension is used to determine
the best writer to use.
• overlay (dict) – See satpy.writers.add_overlay(). Only valid for “image” writers
like geotiff or simple_image.
• decorate (dict) – See satpy.writers.add_decorate(). Only valid for “image”
writers like geotiff or simple_image.
• compute (bool) – If True (default), compute all of the saves to disk. If False then the
return value is either a Dask Delayed object or two lists to be passed to a dask.array.store
call. See return values below for more details.
• kwargs – Additional writer arguments. See Writing for more information.
Returns
Value returned depends on compute. If compute is True then the return value is the result of

2.15. satpy 713


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

computing a Dask Delayed object or running dask.array.store(). If compute is False


then the returned value is either a Dask Delayed object that can be computed using de-
layed.compute() or a tuple of (source, target) that should be passed to dask.array.store().
If target is provided the the caller is responsible for calling target.close() if the target has this
method.
save_datasets(writer=None, filename=None, datasets=None, compute=True, **kwargs)
Save requested datasets present in a scene to disk using writer.
Note that dependency datasets (those loaded solely to create another and not requested explicitly) that may
be contained in this Scene will not be saved by default. The default datasets are those explicitly requested
through .load and exist in the Scene currently. Specify dependency datasets using the datasets keyword
argument.
Parameters
• writer (str) – Name of writer to use when writing data to disk. Default to "geotiff". If
not provided, but filename is provided then the filename’s extension is used to determine
the best writer to use.
• filename (str) – Optionally specify the filename to save this dataset to. It may include
string formatting patterns that will be filled in by dataset attributes.
• datasets (iterable) – Limit written products to these datasets. Elements can be string
name, a wavelength as a number, a DataID, or DataQuery object.
• compute (bool) – If True (default), compute all of the saves to disk. If False then the
return value is either a Dask Delayed object or two lists to be passed to a dask.array.store
call. See return values below for more details.
• kwargs – Additional writer arguments. See Writing for more information.
Returns
Value returned depends on compute keyword argument. If compute is True the value is the
result of a either a dask.array.store operation or a Dask Delayed compute, typically this is
None. If compute is False then the result is either a Dask Delayed object that can be computed
with delayed.compute() or a two element tuple of sources and targets to be passed to dask.
array.store(). If targets is provided then it is the caller’s responsibility to close any objects
that have a “close” method.
property sensor_names: set[str]
Return sensor names for the data currently contained in this Scene.
Sensor information is collected from data contained in the Scene whether loaded from a reader or generated
as a composite with load() or added manually using scn["name"] = data_arr). Sensor information
is also collected from any loaded readers. In some rare cases this may mean that the reader includes sensor
information for data that isn’t actually loaded or even available.
show(dataset_id, overlay=None)
Show the dataset on screen as an image.
Show dataset on screen as an image, possibly with an overlay.
Parameters
• dataset_id (DataID, DataQuery or str) – Either a DataID, a DataQuery or a string,
that refers to a data array that has been previously loaded using Scene.load.
• overlay (dict, optional) – Add an overlay before showing the image. The keys/values
for this dictionary are as the arguments for add_overlay(). The dictionary should con-
tain at least the key "coast_dir", which should refer to a top-level directory containing

714 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

shapefiles. See the pycoast package documentation for coastline shapefile installation in-
structions.
slice(key)
Slice Scene by dataset index.

á Note

DataArrays that do not have an area attribute will not be sliced.

property start_time
Return the start time of the contained data.
If no data is currently contained in the Scene then loaded readers will be consulted.
to_geoviews(gvtype=None, datasets=None, kdims=None, vdims=None, dynamic=False)
Convert satpy Scene to geoviews.
Parameters
• scn (satpy.Scene) – Satpy Scene.
• gvtype (gv plot type) – One of gv.Image, gv.LineContours, gv.FilledContours,
gv.Points Default to geoviews.Image. See Geoviews documentation for details.
• datasets (list) – Limit included products to these datasets
• kdims (list of str) – Key dimensions. See geoviews documentation for more infor-
mation.
• vdims (list of str, optional) – Value dimensions. See geoviews documentation
for more information. If not given defaults to first data variable
• dynamic (bool, optional) – Load and compute data on-the-fly during visualiza-
tion. Default is False. See https://holoviews.org/user_guide/Gridded_Datasets.html#
working-with-xarray-data-types for more information. Has no effect when data to be vi-
sualized only has 2 dimensions (y/x or longitude/latitude) and doesn’t require grouping via
the Holoviews groupby function.
Returns: geoviews object
to_hvplot(datasets=None, *args, **kwargs)
Convert satpy Scene to Hvplot. The method could not be used with composites of swath data.
Parameters
• scn (satpy.Scene) – Satpy Scene.
• datasets (list) – Limit included products to these datasets.
• args – Arguments coming from hvplot
• kwargs – hvplot options dictionary.
Returns
hvplot object that contains within it the plots of datasets list. As default it contains all Scene
datasets plots and a plot title is shown.
Example usage:

2.15. satpy 715


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

scene_list = ['ash','IR_108']
scn = Scene()
scn.load(scene_list)
scn = scn.resample('eurol')
plot = scn.to_hvplot(datasets=scene_list)
plot.ash+plot.IR_108

to_xarray(datasets=None, header_attrs=None, exclude_attrs=None, flatten_attrs=False, pretty=True,


include_lonlats=True, epoch=None, include_orig_name=True,
numeric_name_prefix='CHANNEL_')
Merge all xr.DataArray(s) of a satpy.Scene to a CF-compliant xarray object.
If all Scene DataArrays are on the same area, it returns an xr.Dataset. If Scene DataArrays are on different
areas, currently it fails, although in future we might return a DataTree object, grouped by area.
Parameters
• (iterable) (datasets) – List of Satpy Scene datasets to include in the output xr.Dataset.
Elements can be string name, a wavelength as a number, a DataID, or DataQuery object.
If None (the default), it include all loaded Scene datasets.
• header_attrs – Global attributes of the output xr.Dataset.
• (str) (numeric_name_prefix) – Reference time for encoding the time coordinates (if
available). Example format: “seconds since 1970-01-01 00:00:00”. If None, the default
reference time is defined using “from satpy.cf.coords import EPOCH”
• (bool) (pretty) – If True, flatten dict-type attributes.
• (list) (exclude_attrs) – List of xr.DataArray attribute names to be excluded.
• (bool) – If True, it includes ‘latitude’ and ‘longitude’ coordinates. If the ‘area’ attribute
is a SwathDefinition, it always includes latitude and longitude coordinates.
• (bool) – Don’t modify coordinate names, if possible. Makes the file prettier, but possibly
less consistent.
• (bool). (include_orig_name) – Include the original dataset name as a variable attribute
in the xr.Dataset.
• (str) – Prefix to add the each variable with name starting with a digit. Use ‘’ or None to
leave this out.
• Returns
• -------
• ds – A CF-compliant xr.Dataset
• xr.Dataset – A CF-compliant xr.Dataset
to_xarray_dataset(datasets=None)
Merge all xr.DataArrays of a scene to a xr.DataSet.
Parameters
datasets (list) – List of products to include in the xarray.Dataset
Returns: xarray.Dataset

716 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

unload(keepables=None)
Unload all unneeded datasets.
Datasets are considered unneeded if they weren’t directly requested or added to the Scene by the user or
they are no longer needed to generate composites that have yet to be generated.
Parameters
keepables (iterable) – DataIDs to keep whether they are needed or not.
values()
Get values for the underlying data container.
property wishlist
Return a copy of the wishlist.
satpy.scene._aggregate_data_array(data_array, func, **coarsen_kwargs)
Aggregate xr.DataArray.
satpy.scene._get_area_resolution(area)
Attempt to retrieve resolution from AreaDefinition.

satpy.testing module

Testing helpers for satpy.


satpy.testing.fake_satpy_reading(scene_dict)
Fake the satpy reading and populate the returned scene with the contents of scene_dict.
This allows users to test their programs that use satpy without actually needing to read files, eg:

scene_dict = {channel: somedata}

with fake_satpy_reading(scene_dict):
scene = Scene(input_files, reader="dummy_reader")
scene.load([channel])

satpy.utils module

Module defining various utilities.


exception satpy.utils.PerformanceWarning
Bases: Warning
Warning raised when there is a possible performance impact.
class satpy.utils._WarningManager
Bases: object
Class to handle switching warnings on and off.
filt = None

satpy.utils._all_dims_same_size(data_arrays: tuple[DataArray, ...]) → bool

satpy.utils._check_file_protocols(filenames, storage_options)

satpy.utils._check_file_protocols_for_dicts(filenames, storage_options)

2.15. satpy 717


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.utils._check_package_version(package_name: str) → str | None


Check the version of package_name.
Parameters
package_name (str) – the distribution package name.
Returns
the version number if available else None.
satpy.utils._check_yaml_configs(configs, key)
Get a diagnostic for the yaml configs.
key is the section to look for to get a name for the config at hand.
satpy.utils._filenames_to_fsfile(filenames, storage_options)

satpy.utils._get_chunk_pixel_size()
Compute the maximum chunk size from PYTROLL_CHUNK_SIZE.
satpy.utils._get_first_available_item(data_dict, possible_keys)

satpy.utils._get_prefix_order_by_preference(prefixes, preference)

satpy.utils._get_pytroll_chunk_size()

satpy.utils._get_sat_altitude(data_arr, key_prefixes)

satpy.utils._get_sat_lonlat(data_arr, key_prefixes)

satpy.utils._get_satpos_from_platform_name(cth_dataset)
Get satellite position if no orbital parameters in metadata.
Some cloud top height datasets lack orbital parameter information in metadata. Here, orbital parameters are
calculated based on the platform name and start time, via Two Line Element (TLE) information.
Needs pyorbital, skyfield, and astropy to be installed.
satpy.utils._get_storage_dictionary_options(reader_kwargs)

satpy.utils._get_sunz_corr_li_and_shibata(cos_zen)

satpy.utils._sort_files_to_local_remote_and_fsfiles(filenames)

satpy.utils.angle2xyz(azi, zen)
Convert azimuth and zenith to cartesian.
satpy.utils.atmospheric_path_length_correction(data, cos_zen, limit=88.0, max_sza=95.0)
Perform Sun zenith angle correction.
This function uses the correction method proposed by Li and Shibata (2006): https://doi.org/10.1175/JAS3682.1
The correction is limited to limit degrees (default: 88.0 degrees). For larger zenith angles, the correction is the
same as at the limit if max_sza is None. The default behavior is to gradually reduce the correction past limit
degrees up to max_sza where the correction becomes 0. Both data and cos_zen should be 2D arrays of the
same shape.
satpy.utils.check_satpy(readers=None, writers=None, packages=None)
Check the satpy readers and writers for correct installation.
Parameters
• readers (list or None) – Limit readers checked to those specified

718 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

• writers (list or None) – Limit writers checked to those specified


• packages (list or None) – Limit packages checked to those specified
Returns
None
satpy.utils.convert_remote_files_to_fsspec(filenames, storage_options=None)
Check filenames for transfer protocols, convert to FSFile objects if possible.
satpy.utils.datetime64_to_pydatetime(dt64)
Convert numpy.datetime64 timestamp to Python datetime.
Discards nanosecond precision, because Python datetime only has microsecond precision.
Parameters
dt64 (np.datetime64) – Timestamp to be converted

Returns (dt.datetime):
Converted timestamp

satpy.utils.debug(deprecation_warnings=True)
Context manager to temporarily set debugging on.
Example:

>>> with satpy.utils.debug():


... code_here()

Parameters
deprecation_warnings (Optional[bool]) – Switch on deprecation warnings. Defaults to
True.

satpy.utils.debug_off()
Turn debugging logging off.
This disables both debugging logging and the global visibility of deprecation warnings.
satpy.utils.debug_on(deprecation_warnings=True)
Turn debugging logging on.
Sets up a StreamHandler to to sys.stderr at debug level for all loggers, such that all debug messages (and log
messages with higher severity) are logged to the standard error stream.
By default, since Satpy 0.26, this also enables the global visibility of deprecation warnings. This can be sup-
pressed by passing a false value.
Parameters
deprecation_warnings (Optional[bool]) – Switch on deprecation warnings. Defaults to
True.
Returns
None
satpy.utils.deprecation_warnings_off()
Switch off deprecation warnings.
satpy.utils.deprecation_warnings_on()
Switch on deprecation warnings.

2.15. satpy 719


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.utils.find_in_ancillary(data, dataset)
Find a dataset by name in the ancillary vars of another dataset.
Parameters
• data (xarray.DataArray) – Array for which to search the ancillary variables
• dataset (str) – Name of ancillary variable to look for.
satpy.utils.get_chunk_size_limit(dtype=<class 'float'>)
Compute the chunk size limit in bytes given dtype (float by default).
It is derived from PYTROLL_CHUNK_SIZE if defined (although deprecated) first, from dask config’s
array.chunk-size then. It defaults to 128MiB.
Returns
The recommended chunk size in bytes.
satpy.utils.get_dask_chunk_size_in_bytes()
Get the dask configured chunk size in bytes.
satpy.utils.get_legacy_chunk_size()
Get the legacy chunk size.
This function should only be used while waiting for code to be migrated to use satpy.utils.get_chunk_size_limit
instead.
satpy.utils.get_logger(name)
Return logger with null handler added if needed.
satpy.utils.get_satpos(data_arr: DataArray, preference: str | None = None, use_tle: bool = False) →
tuple[float, float, float]
Get satellite position from dataset attributes.
Parameters
• data_arr – DataArray object to access .attrs metadata from.
• preference – Optional preference for one of the available types of position information. If
not provided or None then the default preference is:
– Longitude & Latitude: nadir, actual, nominal, projection
– Altitude: actual, nominal, projection
The provided preference can be any one of these individual strings (nadir, actual, nominal,
projection). If the preference is not available then the original preference list is used. A
warning is issued when projection values have to be used because nothing else is available
and it wasn’t provided as the preference.
• use_tle – If true, try to obtain position via satellite name and TLE if it can’t be determined
otherwise. This requires pyorbital, skyfield, and astropy to be installed and may need network
access to obtain the TLE. Note that even if use_tle is true, the TLE will not be used if the
dataset metadata contain the satellite position directly.
Returns
Geodetic longitude, latitude, altitude [km]
satpy.utils.get_storage_options_from_reader_kwargs(reader_kwargs)
Read and clean storage options from reader_kwargs.

720 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.utils.ignore_invalid_float_warnings()
Ignore warnings generated for working with NaN/inf values.
Numpy and dask sometimes don’t like NaN or inf values in normal function calls. This context manager
hides/ignores them inside its context.

Examples
Use around numpy operations that you expect to produce warnings:

with ignore_invalid_float_warnings():
np.nanmean(np.nan)

satpy.utils.ignore_pyproj_proj_warnings()
Wrap operations that we know will produce a PROJ.4 precision warning.
Only to be used internally to Pyresample when we have no other choice but to use PROJ.4 strings/dicts. For
example, serialization to YAML or other human-readable formats or testing the methods that produce the PROJ.4
versions of the CRS.
satpy.utils.import_error_helper(dependency_name)
Give more info on an import error.
satpy.utils.in_ipynb()
Check if we are in a jupyter notebook.
satpy.utils.logging_off()
Turn logging off.
satpy.utils.logging_on(level=30)
Turn logging on.
satpy.utils.lonlat2xyz(lon, lat)
Convert lon lat to cartesian.
For a sphere with unit radius, convert the spherical coordinates longitude and latitude to cartesian coordinates.
Parameters
• lon (number or array of numbers) – Longitude in °.
• lat (number or array of numbers) – Latitude in °.
Returns
(x, y, z) Cartesian coordinates [1]
satpy.utils.normalize_low_res_chunks(chunks: tuple[int | Literal['auto'], ...], input_shape: tuple[int, ...],
previous_chunks: tuple[int, ...], low_res_multipliers: tuple[int, ...],
input_dtype: dtype[Any] | None | type[Any] |
_SupportsDType[dtype[Any]] | str | tuple[Any, int] | tuple[Any,
SupportsIndex | Sequence[SupportsIndex]] | list[Any] | _DTypeDict
| tuple[Any, Any]) → tuple[int, ...]
Compute dask chunk sizes based on data resolution.
First, chunks are computed for the highest resolution version of the data. This is done by multiplying the input
array shape by the low_res_multiplier and then using Dask’s utility functions and configuration to produce
a chunk size to fit into a specific number of bytes. See Chunks for more information. Next, the same multiplier
is used to reduce the high resolution chunk sizes to the lower resolution of the input data. The end result of
reading multiple resolutions of data is that each dask chunk covers the same geographic region. This also means
replicating or aggregating one resolution and then combining arrays should not require any rechunking.

2.15. satpy 721


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Parameters
• chunks – Requested chunk size for each dimension. This is passed directly to dask. Use
"auto" for dimensions that should have chunks determined for them, -1 for dimensions that
should be whole (not chunked), and 1 or any other positive integer for dimensions that have
a known chunk size beforehand.
• input_shape – Shape of the array to compute dask chunk size for.
• previous_chunks – Any previous chunking or structure of the data. This can also be
thought of as the smallest number of high (fine) resolution elements that make up a sin-
gle “unit” or chunk of data. This could be a multiple or factor of the scan size for some
instruments and/or could be based on the on-disk chunk size. This value ensures that chunks
are aligned to the underlying data structure for best performance. On-disk chunk sizes should
be multiplied by the largest low resolution multiplier if it is the same between all files (ex.
500m file has 226 chunk size, 1km file has 226 chunk size, etc).. Otherwise, the resulting low
resolution chunks may not be aligned to the on-disk chunks. For example, if dask decides
on a chunk size of 226 * 3 for 500m data, that becomes 226 * 3 / 2 for 1km data which is not
aligned to the on-disk chunk size of 226.
• low_res_multipliers – Number of high (fine) resolution pixels that fit in a single low
(coarse) resolution pixel.
• input_dtype – Dtype for the final unscaled array. This is usually 32-bit float (np.float32)
or 64-bit float (np.float64) for non-category data. If this doesn’t represent the final data
type of the data then the final size of chunks in memory will not match the user’s request
via dask’s array.chunk-size configuration. Sometimes it is useful to keep this as a single
dtype for all reading functionality (ex. np.float32) in order to keep all read variable chunks
the same size regardless of dtype.
Returns
A tuple where each element is the chunk size for that axis/dimension.
satpy.utils.proj_units_to_meters(proj_str)
Convert projection units from kilometers to meters.
satpy.utils.recursive_dict_update(d, u)
Recursive dictionary update.
Copied from:
http://stackoverflow.com/questions/3232943/update-value-of-a-nested-dictionary-of-varying-depth
satpy.utils.show_versions(packages=None)
Shows version for system, python and common packages (if installed).
Parameters
packages (list or None) – Limit packages to those specified.
Returns
None.
satpy.utils.trace_on()
Turn trace logging on.
satpy.utils.unify_chunks(*data_arrays: DataArray) → tuple[DataArray, ...]
Run xarray.unify_chunks() if input dimensions are all the same size.
This is mostly used in satpy.composites.CompositeBase to safe guard against running dask.array.core.
map_blocks() with arrays of different chunk sizes. Doing so can cause unexpected results or errors. However,
xarray’s unify_chunks will raise an exception if dimensions of the provided DataArrays are different sizes.

722 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

This is a common case for Satpy. For example, the “bands” dimension may be 1 (L), 2 (LA), 3 (RGB), or 4
(RGBA) for most compositor operations that combine other composites together.
satpy.utils.xyz2angle(x, y, z, acos=False)
Convert cartesian to azimuth and zenith.
satpy.utils.xyz2lonlat(x, y, z, asin=False)
Convert cartesian to lon lat.
For a sphere with unit radius, convert cartesian coordinates to spherical coordinates longitude and latitude.
Parameters
• x (number or array of numbers) – x-coordinate, unitless
• y (number or array of numbers) – y-coordinate, unitless
• z (number or array of numbers) – z-coordinate, unitless
• asin (optional, bool) – If true, use arcsin for calculations. If false, use arctan2 for
calculations.
Returns
Longitude and latitude in °.
Return type
(lon, lat)

satpy.version module

Module contents
Satpy Package initializer.

2.16 FAQ
Below you’ll find frequently asked questions, performance tips, and other topics that don’t really fit in to the rest of the
Satpy documentation.
If you have any other questions that aren’t answered here feel free to make an issue on GitHub or talk to us on the Slack
team or mailing list. See the contributing documentation for more information.

Topics

• How can I speed up creation of composites that need resampling?


• Why is Satpy slow on my powerful machine?
• Why multiple CPUs are used even with one worker?
• What is the difference between number of workers and number of threads?
• How do I avoid memory errors?
• Reducing GDAL output size?
• How do I use multi-threaded compression when writing GeoTIFFs?

2.16. FAQ 723


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

2.16.1 How can I speed up creation of composites that need resampling?


Satpy performs some initial image generation on the fly, but for composites that need resampling (like the true_color
composite for GOES/ABI) the data must be resampled to a common grid before the final image can be produced, as the
input channels are at differing spatial resolutions. In such cases, you may see a substantial performance improvement
by passing generate=False when you load your composite:

scn = Scene(filenames=filenames, reader='abi_l1b')


scn.load(['true_color'], generate=False)
scn_res = scn.resample(...)

By default, generate=True which means that Satpy will create as many composites as it can with the available data.
In some cases this could mean a lot of intermediate products (ex. rayleigh corrected data using dynamically generated
angles for each band resolution) that will then need to be resampled. By setting generate=False, Satpy will only
load the necessary dependencies from the reader, but not attempt generating any composites or applying any modifiers.
In these cases this can save a lot of time and memory as only one resolution of the input data have to be processed.
Note that this option has no effect when only loading data directly from readers (ex. IR/visible bands directly from the
files) and where no composites or modifiers are used. Also note that in cases where most of your composite inputs are
already at the same resolution and you are only generating a limited number of composites, generate=False may
actually hurt performance.

2.16.2 Why is Satpy slow on my powerful machine?


Satpy depends heavily on the dask library for its performance. However, on some systems dask’s default settings can
actually hurt performance. By default dask will create a “worker” for each logical core on your system. In most systems
you have twice as many logical cores (also known as threaded cores) as physical cores. Managing and communicating
with all of these workers can slow down dask, especially when they aren’t all being used by most Satpy calculations.
One option is to limit the number of workers by doing the following at the top of your python code:

import dask
dask.config.set(num_workers=8)
# all other Satpy imports and code

This will limit dask to using 8 workers. Typically numbers between 4 and 8 are good starting points. Number of workers
can also be set from an environment variable before running the python script, so code modification isn’t necessary:

DASK_NUM_WORKERS=4 python myscript.py

Similarly, if you have many workers processing large chunks of data you may be using much more memory than you
expect. If you limit the number of workers and the size of the data chunks being processed by each worker you can
reduce the overall memory usage. Default chunk size can be configured in Satpy by using the following around your
code:

with dask.config.set("array.chunk-size": "32MiB"):


# your code here

For more information about chunk sizes in Satpy, please refer to the Data Chunks section in Overview.

á Note

The PYTROLL_CHUNK_SIZE variable is pending deprecation, so the above-mentioned dask configuration pa-
rameter should be used instead.

724 Chapter 2. Documentation


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

2.16.3 Why multiple CPUs are used even with one worker?
Many of the underlying Python libraries use math libraries like BLAS and LAPACK written in C or FORTRAN, and
they are often compiled to be multithreaded. If necessary, it is possible to force the number of threads they use by
setting an environment variable:

OMP_NUM_THREADS=2 python myscript.py

2.16.4 What is the difference between number of workers and number of threads?
The above questions handle two different stages of parallellization: Dask workers and math library threading.
The number of Dask workers affect how many separate tasks are started, effectively telling how many chunks of the
data are processed at the same time. The more workers are in use, the higher also the memory usage will be.
The number of threads determine how much parallel computations are run for the chunk handled by each worker. This
has minimal effect on memory usage.
The optimal setup is often a mix of these two settings, for example

DASK_NUM_WORKERS=2 OMP_NUM_THREADS=4 python myscript.py

would create two workers, and each of them would process their chunk of data using 4 threads when calling the under-
lying math libraries.

2.16.5 How do I avoid memory errors?


If your environment is using many dask workers, it may be using more memory than it needs to be using. See the “Why
is Satpy slow on my powerful machine?” question above for more information on changing Satpy’s memory usage.

2.16.6 Reducing GDAL output size?


Sometimes GDAL-based products, like geotiffs, can be much larger than expected. This can be caused by GDAL’s
internal memory caching conflicting with dask’s chunking of the data arrays. Modern versions of GDAL default to
using 5% of available memory for holding on to data before compressing it and writing it to disk. On more powerful
systems (~128GB of memory) this is usually not a problem. However, on low memory systems this may mean that
GDAL is only compressing a small amount of data before writing it to disk. This results in poor compression and
large overhead from the many small compressed areas. One solution is to increase the chunk size used by dask but this
can result in poor performance during computation. Another solution is to increase GDAL_CACHEMAX, an environment
variable that GDAL uses. This defaults to "5%", but can be increased:

export GDAL_CACHEMAX="15%"

For more information see GDAL’s documentation.

2.16.7 How do I use multi-threaded compression when writing GeoTIFFs?


The GDAL library’s GeoTIFF driver has a lot of options for changing how your GeoTIFF is formatted and written.
One of the most important ones when it comes to writing GeoTIFFs is using multiple threads to compress your data.
By default Satpy will use DEFLATE compression which can be slower to compress than other options out there, but
faster to read. GDAL gives us the option to control the number of threads used during compression by specifying the
num_threads option. This option defaults to 1, but it is recommended to set this to at least the same number of dask
workers you use. Do this by adding num_threads to your save_dataset or save_datasets call:

scn.save_datasets(base_dir='/tmp', num_threads=8)

2.16. FAQ 725


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Satpy also stores our data as “tiles” instead of “stripes” which is another way to get more efficient compression of our
GeoTIFF image. You can disable this with tiled=False.
See the GDAL GeoTIFF documentation for more information on the creation options available including other com-
pression choices.

á Note

Please note that the reader table that used to be placed here has moved to the “reading” section here: Reader Table.

726 Chapter 2. Documentation


CHAPTER

THREE

INDICES AND TABLES

• genindex
• modindex
• search

727
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

728 Chapter 3. Indices and tables


PYTHON MODULE INDEX

s satpy.enhancements.viirs, 148
satpy, 723 satpy.modifiers, 170
satpy._compat, 679 satpy.modifiers._crefl, 153
satpy._config, 679 satpy.modifiers._crefl_utils, 154
satpy._scene_converters, 679 satpy.modifiers.angles, 157
satpy.aux_download, 681 satpy.modifiers.atmosphere, 161
satpy.cf, 111 satpy.modifiers.base, 162
satpy.cf.area, 104 satpy.modifiers.filters, 162
satpy.cf.attrs, 104 satpy.modifiers.geometry, 163
satpy.cf.coords, 106 satpy.modifiers.parallax, 165
satpy.cf.data_array, 108 satpy.modifiers.spectral, 169
satpy.cf.datasets, 108 satpy.multiscene, 176
satpy.cf.decoding, 110 satpy.multiscene._blend_funcs, 170
satpy.cf.encoding, 110 satpy.multiscene._multiscene, 171
satpy.composites, 122 satpy.node, 688
satpy.composites.abi, 111 satpy.plugin_base, 689
satpy.composites.agri, 112 satpy.readers, 386
satpy.composites.ahi, 112 satpy.readers._geos_area, 196
satpy.composites.cloud_products, 112 satpy.readers.aapp_l1b, 198
satpy.composites.config_loader, 113 satpy.readers.aapp_mhs_amsub_l1c, 199
satpy.composites.glm, 114 satpy.readers.abi_base, 200
satpy.composites.sar, 115 satpy.readers.abi_l1b, 201
satpy.composites.spectral, 116 satpy.readers.abi_l2_nc, 202
satpy.composites.viirs, 118 satpy.readers.acspo, 202
satpy.conftest, 684 satpy.readers.agri_l1, 203
satpy.dataset, 144 satpy.readers.ahi_hsd, 203
satpy.dataset.anc_vars, 136 satpy.readers.ahi_l1b_gridded_bin, 207
satpy.dataset.data_dict, 136 satpy.readers.ahi_l2_nc, 208
satpy.dataset.dataid, 138 satpy.readers.ami_l1b, 209
satpy.dataset.metadata, 142 satpy.readers.amsr2_l1b, 210
satpy.demo, 147 satpy.readers.amsr2_l2, 211
satpy.demo._google_cloud_platform, 144 satpy.readers.amsr2_l2_gaasp, 211
satpy.demo.abi_l1b, 144 satpy.readers.ascat_l2_soilmoisture_bufr, 213
satpy.demo.ahi_hsd, 145 satpy.readers.atms_l1b_nc, 213
satpy.demo.fci, 145 satpy.readers.atms_sdr_hdf5, 214
satpy.demo.seviri_hrit, 145 satpy.readers.avhrr_l1b_gaclac, 215
satpy.demo.utils, 146 satpy.readers.clavrx, 216
satpy.demo.viirs_sdr, 146 satpy.readers.cmsaf_claas2, 218
satpy.dependency_tree, 684 satpy.readers.electrol_hrit, 219
satpy.enhancements, 148 satpy.readers.epic_l1b_h5, 220
satpy.enhancements.abi, 147 satpy.readers.eps_l1b, 221
satpy.enhancements.mimic, 147 satpy.readers.eum_base, 222

729
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.eum_l2_bufr, 222 satpy.readers.nucaps, 302


satpy.readers.eum_l2_grib, 224 satpy.readers.nwcsaf_msg2013_hdf5, 303
satpy.readers.fci_base, 225 satpy.readers.nwcsaf_nc, 304
satpy.readers.fci_l1c_nc, 226 satpy.readers.oceancolorcci_l3_nc, 305
satpy.readers.fci_l2_nc, 229 satpy.readers.olci_nc, 306
satpy.readers.file_handlers, 231 satpy.readers.oli_tirs_l1_tif, 309
satpy.readers.fy4_base, 234 satpy.readers.omps_edr, 310
satpy.readers.generic_image, 235 satpy.readers.osisaf_l3_nc, 311
satpy.readers.geocat, 236 satpy.readers.pmw_channels_definitions, 312
satpy.readers.gerb_l2_hr_h5, 237 satpy.readers.safe_sar_l2_ocn, 315
satpy.readers.ghi_l1, 238 satpy.readers.sar_c_safe, 316
satpy.readers.ghrsst_l2, 238 satpy.readers.satpy_cf_nc, 321
satpy.readers.gld360_ualf2, 239 satpy.readers.scmi, 325
satpy.readers.glm_l2, 239 satpy.readers.seadas_l2, 326
satpy.readers.gms, 196 satpy.readers.seviri_base, 327
satpy.readers.gms.gms5_vissr_format, 176 satpy.readers.seviri_l1b_hrit, 335
satpy.readers.gms.gms5_vissr_l1b, 176 satpy.readers.seviri_l1b_icare, 341
satpy.readers.gms.gms5_vissr_navigation, 182 satpy.readers.seviri_l1b_native, 342
satpy.readers.goci2_l2_nc, 240 satpy.readers.seviri_l1b_native_hdr, 347
satpy.readers.goes_imager_hrit, 240 satpy.readers.seviri_l1b_nc, 350
satpy.readers.goes_imager_nc, 242 satpy.readers.sgli_l1b, 351
satpy.readers.gpm_imerg, 250 satpy.readers.slstr_l1b, 353
satpy.readers.grib, 250 satpy.readers.smos_l2_wind, 354
satpy.readers.hdf4_utils, 252 satpy.readers.tropomi_l2, 355
satpy.readers.hdf5_utils, 252 satpy.readers.utils, 356
satpy.readers.hdfeos_base, 252 satpy.readers.vaisala_gld360, 361
satpy.readers.hrit_base, 254 satpy.readers.vii_base_nc, 362
satpy.readers.hrit_jma, 256 satpy.readers.vii_l1b_nc, 363
satpy.readers.hrpt, 259 satpy.readers.vii_l2_nc, 364
satpy.readers.hsaf_grib, 260 satpy.readers.vii_utils, 365
satpy.readers.hsaf_h5, 261 satpy.readers.viirs_atms_sdr_base, 365
satpy.readers.hy2_scat_l2b_h5, 262 satpy.readers.viirs_compact, 366
satpy.readers.iasi_l2, 262 satpy.readers.viirs_edr, 368
satpy.readers.iasi_l2_so2_bufr, 263 satpy.readers.viirs_edr_active_fires, 370
satpy.readers.ici_l1b_nc, 265 satpy.readers.viirs_edr_flood, 371
satpy.readers.insat3d_img_l1b_h5, 268 satpy.readers.viirs_l1b, 372
satpy.readers.li_base_nc, 269 satpy.readers.viirs_l2, 373
satpy.readers.li_l2_nc, 273 satpy.readers.viirs_sdr, 374
satpy.readers.maia, 274 satpy.readers.viirs_vgac_l1c_nc, 375
satpy.readers.mcd12q1, 275 satpy.readers.virr_l1b, 376
satpy.readers.meris_nc_sen3, 276 satpy.readers.xmlformat, 377
satpy.readers.mersi_l1b, 277 satpy.readers.yaml_reader, 377
satpy.readers.mimic_TPW2_nc, 278 satpy.resample, 690
satpy.readers.mirs, 279 satpy.scene, 704
satpy.readers.modis_l1b, 281 satpy.testing, 717
satpy.readers.modis_l2, 283 satpy.tests, 645
satpy.readers.modis_l3, 284 satpy.tests.cf_tests, 395
satpy.readers.msi_safe, 285 satpy.tests.cf_tests._test_data, 392
satpy.readers.msu_gsa_l1b, 288 satpy.tests.cf_tests.test_area, 392
satpy.readers.mviri_l1b_fiduceo_nc, 288 satpy.tests.cf_tests.test_attrs, 393
satpy.readers.mwr_l1b, 295 satpy.tests.cf_tests.test_coords, 393
satpy.readers.mwr_l1c, 297 satpy.tests.cf_tests.test_dataaarray, 394
satpy.readers.mws_l1b, 298 satpy.tests.cf_tests.test_datasets, 394
satpy.readers.netcdf_utils, 299 satpy.tests.cf_tests.test_decoding, 395

730 Python Module Index


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.cf_tests.test_encoding, 395 satpy.tests.reader_tests.test_abi_l2_nc, 430


satpy.tests.compositor_tests, 399 satpy.tests.reader_tests.test_acspo, 431
satpy.tests.compositor_tests.test_abi, 395 satpy.tests.reader_tests.test_agri_l1, 432
satpy.tests.compositor_tests.test_agri, 396 satpy.tests.reader_tests.test_ahi_hrit, 434
satpy.tests.compositor_tests.test_ahi, 396 satpy.tests.reader_tests.test_ahi_hsd, 435
satpy.tests.compositor_tests.test_glm, 397 satpy.tests.reader_tests.test_ahi_l1b_gridded_bin,
satpy.tests.compositor_tests.test_sar, 397 436
satpy.tests.compositor_tests.test_spectral, satpy.tests.reader_tests.test_ahi_l2_nc, 438
397 satpy.tests.reader_tests.test_ami_l1b, 439
satpy.tests.compositor_tests.test_viirs, 398 satpy.tests.reader_tests.test_amsr2_l1b, 440
satpy.tests.conftest, 590 satpy.tests.reader_tests.test_amsr2_l2, 441
satpy.tests.enhancement_tests, 402 satpy.tests.reader_tests.test_amsr2_l2_gaasp,
satpy.tests.enhancement_tests.test_abi, 399 442
satpy.tests.enhancement_tests.test_enhancements,
satpy.tests.reader_tests.test_ascat_l2_soilmoisture_bufr,
399 442
satpy.tests.enhancement_tests.test_viirs, 402 satpy.tests.reader_tests.test_atms_l1b_nc,
satpy.tests.modifier_tests, 407 443
satpy.tests.modifier_tests.test_angles, 402 satpy.tests.reader_tests.test_atms_sdr_hdf5,
satpy.tests.modifier_tests.test_crefl, 403 444
satpy.tests.modifier_tests.test_filters, 404 satpy.tests.reader_tests.test_avhrr_l0_hrpt,
satpy.tests.modifier_tests.test_parallax, 404 445
satpy.tests.multiscene_tests, 411 satpy.tests.reader_tests.test_avhrr_l1b_gaclac,
satpy.tests.multiscene_tests.test_blend, 407 448
satpy.tests.multiscene_tests.test_misc, 409 satpy.tests.reader_tests.test_aws1_mwr_l1b,
satpy.tests.multiscene_tests.test_save_animation, 450
410 satpy.tests.reader_tests.test_aws1_mwr_l1c,
satpy.tests.multiscene_tests.test_utils, 410 451
satpy.tests.reader_tests, 570 satpy.tests.reader_tests.test_clavrx, 425
satpy.tests.reader_tests._li_test_utils, 425 satpy.tests.reader_tests.test_clavrx.test_clavrx_geohdf,
satpy.tests.reader_tests.conftest, 426 423
satpy.tests.reader_tests.gms, 416 satpy.tests.reader_tests.test_clavrx.test_clavrx_nc,
satpy.tests.reader_tests.gms.test_gms5_vissr_data, 424
411 satpy.tests.reader_tests.test_clavrx.test_clavrx_polarhdf,
satpy.tests.reader_tests.gms.test_gms5_vissr_l1b, 424
411 satpy.tests.reader_tests.test_cmsaf_claas,
451
satpy.tests.reader_tests.gms.test_gms5_vissr_navigation,
414 satpy.tests.reader_tests.test_electrol_hrit,
satpy.tests.reader_tests.modis_tests, 422 452
satpy.tests.reader_tests.modis_tests._modis_fixtures,
satpy.tests.reader_tests.test_epic_l1b_h5,
416 454
satpy.tests.reader_tests.modis_tests.conftest, satpy.tests.reader_tests.test_eps_l1b, 455
420 satpy.tests.reader_tests.test_eps_sterna_mwr_l1b,
satpy.tests.reader_tests.modis_tests.test_modis_l1b, 456
421 satpy.tests.reader_tests.test_eum_base, 457
satpy.tests.reader_tests.modis_tests.test_modis_l2,
satpy.tests.reader_tests.test_eum_l2_bufr,
421 458
satpy.tests.reader_tests.modis_tests.test_modis_l3,
satpy.tests.reader_tests.test_eum_l2_grib,
422 459
satpy.tests.reader_tests.test_fci_base, 460
satpy.tests.reader_tests.modis_tests.test_modis_l3_mcd12q1,
422 satpy.tests.reader_tests.test_fci_l1c_nc, 460
satpy.tests.reader_tests.test_aapp_l1b, 427 satpy.tests.reader_tests.test_fci_l2_nc, 466
satpy.tests.reader_tests.test_fy4_base, 468
satpy.tests.reader_tests.test_aapp_mhs_amsub_l1c,
428 satpy.tests.reader_tests.test_generic_image,
satpy.tests.reader_tests.test_abi_l1b, 429 469

Python Module Index 731


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_geocat, 470 521


satpy.tests.reader_tests.test_geos_area, 471 satpy.tests.reader_tests.test_oci_l2_bgc, 521
satpy.tests.reader_tests.test_gerb_l2_hr_h5, satpy.tests.reader_tests.test_olci_nc, 522
472 satpy.tests.reader_tests.test_oli_tirs_l1_tif,
satpy.tests.reader_tests.test_ghi_l1, 472 523
satpy.tests.reader_tests.test_ghrsst_l2, 474 satpy.tests.reader_tests.test_omps_edr, 525
satpy.tests.reader_tests.test_gld360_ualf2, satpy.tests.reader_tests.test_osisaf_l3, 525
474 satpy.tests.reader_tests.test_safe_sar_l2_ocn,
satpy.tests.reader_tests.test_glm_l2, 476 527
satpy.tests.reader_tests.test_goci2_l2_nc, satpy.tests.reader_tests.test_sar_c_safe, 527
477 satpy.tests.reader_tests.test_satpy_cf_nc,
satpy.tests.reader_tests.test_goes_imager_hrit, 530
477 satpy.tests.reader_tests.test_scmi, 531
satpy.tests.reader_tests.test_seadas_l2, 532
satpy.tests.reader_tests.test_goes_imager_nc_eum,
479 satpy.tests.reader_tests.test_seviri_base,
satpy.tests.reader_tests.test_goes_imager_nc_noaa, 533
479 satpy.tests.reader_tests.test_seviri_l1b_calibration,
satpy.tests.reader_tests.test_gpm_imerg, 482 535
satpy.tests.reader_tests.test_grib, 482 satpy.tests.reader_tests.test_seviri_l1b_hrit,
satpy.tests.reader_tests.test_hdf4_utils, 484 537
satpy.tests.reader_tests.test_hdf5_utils, 484 satpy.tests.reader_tests.test_seviri_l1b_hrit_setup,
satpy.tests.reader_tests.test_hdfeos_base, 539
485 satpy.tests.reader_tests.test_seviri_l1b_icare,
satpy.tests.reader_tests.test_hrit_base, 486 541
satpy.tests.reader_tests.test_hsaf_grib, 488 satpy.tests.reader_tests.test_seviri_l1b_native,
satpy.tests.reader_tests.test_hsaf_h5, 489 542
satpy.tests.reader_tests.test_hy2_scat_l2b_h5, satpy.tests.reader_tests.test_seviri_l1b_nc,
489 545
satpy.tests.reader_tests.test_iasi_l2, 491 satpy.tests.reader_tests.test_sgli_l1b, 546
satpy.tests.reader_tests.test_iasi_l2_so2_bufr,satpy.tests.reader_tests.test_slstr_l1b, 547
492 satpy.tests.reader_tests.test_smos_l2_wind,
satpy.tests.reader_tests.test_ici_l1b_nc, 493 548
satpy.tests.reader_tests.test_tropomi_l2, 549
satpy.tests.reader_tests.test_insat3d_img_l1b_h5,
495 satpy.tests.reader_tests.test_utils, 550
satpy.tests.reader_tests.test_li_l2_nc, 496 satpy.tests.reader_tests.test_vaisala_gld360,
satpy.tests.reader_tests.test_meris_nc, 499 552
satpy.tests.reader_tests.test_mersi_l1b, 500 satpy.tests.reader_tests.test_vii_base_nc,
satpy.tests.reader_tests.test_mimic_TPW2_lowres, 553
504 satpy.tests.reader_tests.test_vii_l1b_nc, 553
satpy.tests.reader_tests.test_mimic_TPW2_nc, satpy.tests.reader_tests.test_vii_l2_nc, 554
505 satpy.tests.reader_tests.test_vii_utils, 554
satpy.tests.reader_tests.test_mirs, 506 satpy.tests.reader_tests.test_vii_wv_nc, 554
satpy.tests.reader_tests.test_msi_safe, 507 satpy.tests.reader_tests.test_viirs_atms_utils,
satpy.tests.reader_tests.test_msu_gsa_l1b, 555
508 satpy.tests.reader_tests.test_viirs_compact,
satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc, 555
509 satpy.tests.reader_tests.test_viirs_edr, 556
satpy.tests.reader_tests.test_mws_l1b_nc, 510 satpy.tests.reader_tests.test_viirs_edr_active_fires,
satpy.tests.reader_tests.test_netcdf_utils, 558
512 satpy.tests.reader_tests.test_viirs_edr_flood,
satpy.tests.reader_tests.test_nucaps, 514 561
satpy.tests.reader_tests.test_nwcsaf_msg, 516 satpy.tests.reader_tests.test_viirs_l1b, 562
satpy.tests.reader_tests.test_nwcsaf_nc, 517 satpy.tests.reader_tests.test_viirs_l2, 564
satpy.tests.reader_tests.test_viirs_sdr, 565
satpy.tests.reader_tests.test_oceancolorcci_l3_nc,

732 Python Module Index


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_viirs_vgac_l1c_nc,
568
satpy.tests.reader_tests.test_virr_l1b, 568
satpy.tests.reader_tests.utils, 569
satpy.tests.scene_tests, 579
satpy.tests.scene_tests.test_conversions, 570
satpy.tests.scene_tests.test_data_access, 571
satpy.tests.scene_tests.test_init, 572
satpy.tests.scene_tests.test_load, 573
satpy.tests.scene_tests.test_resampling, 577
satpy.tests.scene_tests.test_saving, 578
satpy.tests.test_cf_roundtrip, 591
satpy.tests.test_composites, 591
satpy.tests.test_config, 602
satpy.tests.test_crefl_utils, 604
satpy.tests.test_data_download, 604
satpy.tests.test_dataset, 605
satpy.tests.test_demo, 609
satpy.tests.test_dependency_tree, 612
satpy.tests.test_file_handlers, 614
satpy.tests.test_modifiers, 615
satpy.tests.test_node, 617
satpy.tests.test_readers, 618
satpy.tests.test_regressions, 625
satpy.tests.test_resample, 625
satpy.tests.test_testing, 629
satpy.tests.test_utils, 629
satpy.tests.test_writers, 631
satpy.tests.test_yaml_reader, 637
satpy.tests.utils, 642
satpy.tests.writer_tests, 590
satpy.tests.writer_tests.test_awips_tiled,
579
satpy.tests.writer_tests.test_cf, 580
satpy.tests.writer_tests.test_geotiff, 582
satpy.tests.writer_tests.test_mitiff, 583
satpy.tests.writer_tests.test_ninjogeotiff,
585
satpy.tests.writer_tests.test_ninjotiff, 589
satpy.tests.writer_tests.test_simple_image,
589
satpy.tests.writer_tests.test_utils, 590
satpy.utils, 717
satpy.version, 723
satpy.writers, 670
satpy.writers.awips_tiled, 645
satpy.writers.cf_writer, 655
satpy.writers.geotiff, 660
satpy.writers.mitiff, 662
satpy.writers.ninjogeotiff, 663
satpy.writers.ninjotiff, 668
satpy.writers.simple_image, 669
satpy.writers.utils, 670

Python Module Index 733


Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

734 Python Module Index


INDEX

Symbols _NominalTimeCalculator (class in


_ABIAtmosphereVariables (class in satpy.readers.ahi_hsd), 206
satpy.modifiers._crefl_utils), 154 _OrbitPrediction (class in
_ABICREFLRunner (class in satpy.modifiers._crefl_utils), satpy.readers.gms.gms5_vissr_navigation),
154 192
_ABICoefficients (class in _SEADASL2Base (class in satpy.readers.seadas_l2), 326
satpy.modifiers._crefl_utils), 154 _SceneGenerator (class in
_AtmosphereVariables (class in satpy.multiscene._multiscene), 176
satpy.modifiers._crefl_utils), 155 _VIIRSAtmosphereVariables (class in
_AttitudePrediction (class in satpy.modifiers._crefl_utils), 156
satpy.readers.gms.gms5_vissr_navigation), _VIIRSCREFLRunner (class in
191 satpy.modifiers._crefl_utils), 156
_AzimuthBlock (class in satpy.readers.sar_c_safe), 320 _VIIRSCoefficients (class in
_BaseCustomEnhancementConfigTests (class in satpy.modifiers._crefl_utils), 156
satpy.tests.test_writers), 635 _VIIRSMODISCREFLRunner (class in
_CLAVRxHelper (class in satpy.readers.clavrx), 217 satpy.modifiers._crefl_utils), 157
_CREFLRunner (class in satpy.modifiers._crefl_utils), 155 _WarningManager (class in satpy.utils), 717
_CalibrationCoefficientParser (class in _abc_impl (satpy.readers.FSFile attribute), 387
satpy.readers.utils), 358 _abc_impl (satpy.readers.nucaps.NUCAPSReader at-
_Coefficients (class in satpy.modifiers._crefl_utils), tribute), 303
155 _abc_impl (satpy.readers.sar_c_safe.SAFESARReader
_CompositeConfigHelper (class in attribute), 319
satpy.composites.config_loader), 113 _abc_impl (satpy.readers.viirs_sdr.VIIRSSDRReader at-
_CustomImageWriter (class in satpy.tests.test_writers), tribute), 374
636 _abc_impl (satpy.readers.yaml_reader.AbstractYAMLReader
_DataIDContainer (class in satpy.dependency_tree), attribute), 378
687 _abc_impl (satpy.readers.yaml_reader.FileYAMLReader
_DatasetPreprocessor (class in attribute), 379
satpy.readers.mviri_l1b_fiduceo_nc), 295 _abc_impl (satpy.readers.yaml_reader.GEOFlippableFileYAMLReader
_FakeRequest (class in satpy.tests.test_demo), 611 attribute), 381
_G_calc() (in module satpy.modifiers._crefl_utils), 155 _abc_impl (satpy.readers.yaml_reader.GEOSegmentYAMLReader
_GlobHelper (class in satpy.tests.test_demo), 611 attribute), 382
_GroupAliasGenerator (class in _abc_impl (satpy.readers.yaml_reader.GEOVariableSegmentYAMLReader
satpy.multiscene._multiscene), 175 attribute), 383
_MODISAtmosphereVariables (class in _abc_impl (satpy.readers.yaml_reader.GenericYAMLReader
satpy.modifiers._crefl_utils), 155 attribute), 383
_MODISCREFLRunner (class in _add_absolute_distance()
satpy.modifiers._crefl_utils), 156 (satpy.dataset.dataid.DataQuery static
_MODISCoefficients (class in method), 139
satpy.modifiers._crefl_utils), 156 _add_ancillary_variables_attrs() (in module
_ModifierConfigHelper (class in satpy.cf.attrs), 105
satpy.composites.config_loader), 113 _add_attributes() (satpy.readers.eum_l2_bufr.EumetsatL2BufrFileHand

735
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 223 (satpy.readers.amsr2_l2_gaasp.GAASPFileHandler


_add_band_data_file_content() method), 211
(satpy.tests.reader_tests.test_mersi_l1b.FakeHDF5FileHandler2
_add_palette_info()
method), 500 (satpy.writers.mitiff.MITIFFWriter method),
_add_basic_metadata_to_file_content() 662
(satpy.tests.reader_tests.test_atms_sdr_hdf5.FakeHDF5_ATMS_SDR_FileHandler
_add_pixel_sizes() (satpy.writers.mitiff.MITIFFWriter
static method), 444 method), 662
_add_basic_metadata_to_file_content() _add_proj4_string()
(satpy.tests.reader_tests.test_viirs_sdr.FakeHDF5FileHandler2
(satpy.writers.mitiff.MITIFFWriter method),
static method), 565 662
_add_calibration() (satpy.writers.mitiff.MITIFFWriter _add_satpy_metadata()
method), 662 (satpy.readers.hdfeos_base.HDFEOSBaseFileReader
_add_calibration_datasets() method), 253
(satpy.writers.mitiff.MITIFFWriter method), _add_satpy_metadata()
662 (satpy.readers.seadas_l2._SEADASL2Base
_add_corners() (satpy.writers.mitiff.MITIFFWriter method), 326
method), 662 _add_scanline_acq_time()
_add_data_info_to_file_content() (satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler
(satpy.tests.reader_tests.test_atms_sdr_hdf5.FakeHDF5_ATMS_SDR_FileHandler
method), 339
method), 444 _add_scanline_acq_time()
_add_data_info_to_file_content() (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
(satpy.tests.reader_tests.test_viirs_sdr.FakeHDF5FileHandler2
method), 345
method), 565 _add_scanline_acq_time()
_add_declared_coordinates() (in module (satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler
satpy.cf.coords), 106 method), 350
_add_distance_from_query() _add_sector_id_global()
(satpy.dataset.dataid.DataQuery static (satpy.writers.awips_tiled.AWIPSNetCDFTemplate
method), 139 method), 648
_add_flag_values_and_meanings() _add_sizes() (satpy.writers.mitiff.MITIFFWriter
(satpy.readers.fci_l2_nc.FciL2CommonFunctions method), 662
static method), 229 _add_tbb_coefficients()
_add_geo_data_file_content() (satpy.tests.reader_tests.test_mersi_l1b.FakeHDF5FileHandler2
(satpy.tests.reader_tests.test_mersi_l1b.FakeHDF5FileHandler2
method), 500
method), 500 _add_valid_ranges() (in module
_add_geo_ref() (satpy.tests.reader_tests.test_atms_sdr_hdf5.FakeHDF5_ATMS_SDR_FileHandler
satpy.writers.awips_tiled), 655
static method), 444 _add_variable_to_file() (in module
_add_geo_ref() (satpy.tests.reader_tests.test_viirs_sdr.FakeHDF5FileHandler2
satpy.tests.reader_tests.modis_tests._modis_fixtures),
static method), 565 416
_add_geolocation_info_to_file_content() _add_variable_to_hdf4_file() (in module
(satpy.tests.reader_tests.test_atms_sdr_hdf5.FakeHDF5_ATMS_SDR_FileHandler
satpy.tests.reader_tests.test_seadas_l2), 533
static method), 444 _add_variable_to_netcdf_file() (in module
_add_geolocation_info_to_file_content() satpy.tests.reader_tests.test_seadas_l2), 533
(satpy.tests.reader_tests.test_viirs_sdr.FakeHDF5FileHandler2
_add_xy_geographic_coords_attrs() (in module
static method), 565 satpy.cf.coords), 106
_add_granule_specific_info_to_file_content() _add_xy_projected_coords_attrs() (in module
(satpy.tests.reader_tests.test_atms_sdr_hdf5.FakeHDF5_ATMS_SDR_FileHandler
satpy.cf.coords), 106
method), 444 _adjust_area_to_match_shifted_data() (in mod-
_add_granule_specific_info_to_file_content() ule satpy.readers.cmsaf_claas2), 219
(satpy.tests.reader_tests.test_viirs_sdr.FakeHDF5FileHandler2
_adjust_attrs() (satpy.readers.abi_l1b.NC_ABI_L1B
method), 565 method), 201
_add_grid_mapping() (in module satpy.cf.area), 104 _adjust_coords() (satpy.readers.abi_base.NC_ABI_BASE
_add_history() (in module satpy.cf.attrs), 105 method), 200
_add_lonlat_coords() (in module satpy.cf.area), 104 _adjust_data() (satpy.readers.abi_base.NC_ABI_BASE
_add_lonlat_coords() method), 200

736 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_adjust_kwargs() (in module satpy.writers.mitiff ), 663 static method), 132


_adjust_lon_coord() _apply_correction()
(satpy.readers.smos_l2_wind.SMOSL2WINDFileHandler (satpy.modifiers.geometry.EffectiveSolarPathLengthCorrector
method), 354 method), 163
_adjust_metadata_times() _apply_correction()
(satpy.writers.awips_tiled.AWIPSTiledWriter (satpy.modifiers.geometry.SunZenithCorrector
method), 649 method), 164
_adjust_radius_of_influence() _apply_correction()
(satpy.resample.KDTreeResampler method), (satpy.modifiers.geometry.SunZenithCorrectorBase
702 method), 164
_adjust_scaling_factors() _apply_correction()
(satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandler(satpy.modifiers.geometry.SunZenithReducer
method), 365 method), 164
_adjust_variable_for_legacy_software() _apply_dask_chunk_size() (in module
(satpy.readers.nwcsaf_nc.NcNWCSAF satpy.tests.reader_tests.test_abi_l1b), 429
method), 304 _apply_factors() (in module
_aggregate() (in module satpy.resample), 703 satpy.readers.viirs_atms_sdr_base), 366
_aggregate_data_array() (in module satpy.scene), _apply_gsics_rad_correction()
717 (satpy.readers.ami_l1b.AMIL1bNetCDF
_all_arrays_equal() (in module method), 210
satpy.dataset.metadata), 142 _apply_highlight_effect()
_all_close() (in module satpy.dataset.metadata), 142 (satpy.composites.glm.HighlightCompositor
_all_dicts_equal() (in module method), 115
satpy.dataset.metadata), 142 _apply_lut() (satpy.readers.fy4_base.FY4Base
_all_dims_same_size() (in module satpy.utils), 717 method), 234
_all_equal() (in module satpy.dataset.metadata), 142 _apply_palette_to_image() (in module
_all_identical() (in module satpy.dataset.metadata), satpy.composites), 135
142 _apply_radiance_adjustment()
_all_list_of_arrays_equal() (in module (satpy.readers.slstr_l1b.NCSLSTR1B method),
satpy.dataset.metadata), 142 353
_all_non_dicts_equal() (in module _apply_scale_offset()
satpy.dataset.metadata), 142 (satpy.readers.msu_gsa_l1b.MSUGSAFileHandler
_all_same_area() (satpy.multiscene._multiscene.MultiScene static method), 288
method), 172 _apply_scales() (in module satpy.readers.xmlformat),
_all_values_equal() (in module 377
satpy.dataset.metadata), 142 _apply_strength() (satpy.composites.spectral.NDVIHybridGreen
_analyze_messages() method), 118
(satpy.readers.grib.GRIBFileHandler method), _apply_user_rad_correction()
251 (satpy.readers.ami_l1b.AMIL1bNetCDF
_angle_cache_area_def() (in module method), 210
satpy.tests.modifier_tests.test_angles), 403 _apply_valid_range()
_angle_cache_stacked_area_def() (in module (satpy.readers.mirs.MiRSL2ncHandler
satpy.tests.modifier_tests.test_angles), 403 method), 279
_any_notnull() (in module satpy.writers.awips_tiled), _apply_yaw_flip() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.T
655 method), 481
_append_projection_center() _are_values_combinable() (in module
(satpy.writers.mitiff.MITIFFWriter method), satpy.dataset.metadata), 142
662 _area_def_from_msg()
_apply_cached_index() (satpy.readers.grib.GRIBFileHandler method),
(satpy.resample.KDTreeResampler method), 251
702 _area_extent() (satpy.readers.clavrx._CLAVRxHelper
_apply_colormap() (satpy.composites.ColorizeCompositor static method), 217
static method), 124 _area_extent() (satpy.readers.msi_safe.SAFEMSITileMDXML
_apply_colormap() (satpy.composites.PaletteCompositor method), 287

Index 737
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_array_checks() (in module _assert_allclose_if() (in module


satpy.tests.reader_tests.test_viirs_edr), 556 satpy.tests.modifier_tests.test_angles), 403
_asdict() (satpy.dataset.dataid.DataID method), 138 _assert_bands_in_filenames()
_asdict() (satpy.dataset.dataid.DataQuery method), (satpy.tests.test_demo.TestVIIRSSDRDemoDownload
139 static method), 611
_asdict() (satpy.readers.gms.gms5_vissr_navigation.Attitude
_assert_bands_in_filenames_and_contents()
method), 182 (satpy.tests.test_demo.TestVIIRSSDRDemoDownload
_asdict() (satpy.readers.gms.gms5_vissr_navigation.EarthEllipsoidmethod), 611
method), 183 _assert_bands_mda_as_exp() (in module
_asdict() (satpy.readers.gms.gms5_vissr_navigation.ImageNavigationParameters
satpy.tests.reader_tests.test_mersi_l1b), 504
method), 184 _assert_bt_properties()
_asdict() (satpy.readers.gms.gms5_vissr_navigation.ImageOffset (satpy.tests.reader_tests.test_atms_sdr_hdf5.TestATMS_SDR_Rea
method), 184 method), 444
_asdict() (satpy.readers.gms.gms5_vissr_navigation.Orbit_assert_bt_properties()
method), 185 (satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
_asdict() (satpy.readers.gms.gms5_vissr_navigation.OrbitAngles method), 567
method), 185 _assert_comp_files_downloaded() (in module
_asdict() (satpy.readers.gms.gms5_vissr_navigation.Pixel satpy.tests.test_data_download), 605
method), 186 _assert_dnb_radiance_properties()
_asdict() (satpy.readers.gms.gms5_vissr_navigation.PixelNavigationParameters
(satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
method), 187 method), 567
_asdict() (satpy.readers.gms.gms5_vissr_navigation.PredictedNavigationParameters
_assert_earth_mask_equal()
method), 187 (satpy.tests.reader_tests.test_goes_imager_nc_noaa.TestMetadata
_asdict() (satpy.readers.gms.gms5_vissr_navigation.ProjectionParameters
method), 481
method), 188 _assert_encoding_as_expected()
_asdict() (satpy.readers.gms.gms5_vissr_navigation.Satpos (satpy.tests.writer_tests.test_cf.TestNetcdfEncodingKwargs
method), 188 method), 581
_asdict() (satpy.readers.gms.gms5_vissr_navigation.ScanningAngles
_assert_file_contents()
method), 189 (satpy.tests.test_demo.TestVIIRSSDRDemoDownload
_asdict() (satpy.readers.gms.gms5_vissr_navigation.ScanningParameters
static method), 611
method), 189 _assert_image() (in module
_asdict() (satpy.readers.gms.gms5_vissr_navigation.StaticNavigationParameters
satpy.tests.enhancement_tests.test_enhancements),
method), 190 401
_asdict() (satpy.readers.gms.gms5_vissr_navigation.Vector2D
_assert_image_common() (in module
method), 190 satpy.tests.reader_tests.test_generic_image),
_asdict() (satpy.readers.gms.gms5_vissr_navigation.Vector3D 469
method), 191 _assert_image_data() (in module
_asdict() (satpy.readers.gms.gms5_vissr_navigation._AttitudePrediction
satpy.tests.enhancement_tests.test_enhancements),
method), 191 401
_asdict() (satpy.readers.gms.gms5_vissr_navigation._OrbitPrediction
_assert_is_open_file_and_close() (in module
method), 192 satpy.tests.test_readers), 624
_asdict() (satpy.readers.pmw_channels_definitions.FrequencyDoubleSideBandBase
_assert_mod_files_downloaded() (in module
method), 313 satpy.tests.test_data_download), 605
_asdict() (satpy.readers.pmw_channels_definitions.FrequencyQuadrupleSideBandBase
_assert_namedtuple_close() (in module
method), 314 satpy.tests.reader_tests.gms.test_gms5_vissr_navigation),
_asdict() (satpy.readers.pmw_channels_definitions.FrequencyRangeBase
416
method), 315 _assert_orbital_parameters() (in module
_asdict() (satpy.writers.awips_tiled.TileInfo method), satpy.tests.reader_tests.test_abi_l2_nc), 431
653 _assert_reader_files_downloaded() (in module
_asdict() (satpy.writers.awips_tiled.XYFactors satpy.tests.test_data_download), 605
method), 654 _assert_reflectance_properties()
_assemble_azimuth_noise_blocks() (satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
(satpy.readers.sar_c_safe.AzimuthNoiseReader method), 567
method), 317 _assert_results() (satpy.tests.multiscene_tests.test_blend.TestTemporal

738 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

static method), 408 method), 159


_assert_which_channels_are_loaded() _cal_rad() (satpy.readers.slstr_l1b.NCSLSTR1B static
(satpy.tests.reader_tests.test_agri_l1.Test_HDF_AGRI_L1_cal
method), 353
static method), 433 _calc_area_resolution()
_assert_which_channels_are_loaded() (satpy.readers.geocat.GEOCATFileHandler
(satpy.tests.reader_tests.test_ghi_l1.Test_HDF_GHI_L1_calmethod), 236
static method), 473 _calc_extents() (satpy.readers.scmi.SCMIFileHandler
_assert_writer_files_downloaded() (in module method), 325
satpy.tests.test_data_download), 605 _calculate_slant_cloud_distance() (in module
_assign_coords_from_dataarray() satpy.modifiers.parallax), 168
(satpy.readers.yaml_reader.FileYAMLReader _calculate_weights() (in module
static method), 379 satpy.composites.viirs), 120
_assign_ds_info() (satpy.readers.satpy_cf_nc.SatpyCFFileHandler
_calibrate() (in module
method), 324 satpy.readers.aapp_mhs_amsub_l1c), 200
_assign_files_to_readers() (in module _calibrate() (satpy.readers.ahi_l1b_gridded_bin.AHIGriddedFileHandle
satpy.readers), 387 method), 207
_attach_lons_lats() _calibrate() (satpy.readers.electrol_hrit.HRITGOMSFileHandler
(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandlermethod), 219
method), 180 _calibrate() (satpy.readers.gms.gms5_vissr_l1b.Calibrator
_available_aliases() method), 179
(satpy.readers.clavrx.CLAVRXHDF4FileHandler _calibrate() (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandle
method), 216 method), 180
_available_btemp_datasets() _calibrate() (satpy.readers.goes_imager_hrit.HRITGOESFileHandler
(satpy.readers.mirs.MiRSL2ncHandler method), 241
method), 279 _calibrate() (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler
_available_file_datasets() method), 247
(satpy.readers.clavrx.CLAVRXNetCDFFileHandler _calibrate() (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler
method), 217 method), 265
_available_if_this_file_type() _calibrate() (satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriBase
(satpy.readers.amsr2_l2_gaasp.GAASPFileHandler method), 291
method), 211 _calibrate_active_channel_data()
_available_new_datasets() (satpy.readers.aapp_l1b.AAPPL1BaseFileHandler
(satpy.readers.amsr2_l2_gaasp.GAASPFileHandler method), 198
method), 211 _calibrate_active_channel_data()
_available_new_datasets() (satpy.readers.aapp_l1b.AVHRRAAPPL1BFile
(satpy.readers.mirs.MiRSL2ncHandler method), 198
method), 279 _calibrate_active_channel_data()
_backend_versions_match() (in module (satpy.readers.aapp_mhs_amsub_l1c.MHS_AMSUB_AAPPL1CFi
satpy.writers.cf_writer), 659 method), 199
_band_helper() (satpy.tests.reader_tests.test_virr_l1b.TestVIRRL1BReader
_calibrate_and_denoise()
method), 569 (satpy.readers.sar_c_safe.SAFEGRD method),
_band_index() (satpy.readers.msi_safe.SAFEMSIMDXML 318
method), 286 _calibrate_bt() (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler
_bits_strip() (in module satpy.readers.modis_l2), 284 static method), 265
_bt_threshold() (in module satpy.enhancements), 148 _calibrate_bt() (satpy.readers.vii_l1b_nc.ViiL1bNCFileHandler
_build_id_permutations() static method), 363
(satpy.readers.yaml_reader.AbstractYAMLReader _calibrate_data() (satpy.readers.modis_l1b.HDFEOSBandReader
method), 378 method), 281
_build_tree() (satpy.writers.DecisionTree method), _calibrate_data() (satpy.writers.mitiff.MITIFFWriter
671 method), 662
_burn_overlay() (in module satpy.writers), 675 _calibrate_emissive()
_cache_and_read() (satpy.modifiers.angles.ZarrCacheHelper (satpy.readers.virr_l1b.VIRR_L1B method),
method), 159 376
_cache_results() (satpy.modifiers.angles.ZarrCacheHelper _calibrate_ir() (satpy.readers.ami_l1b.AMIL1bNetCDF

Index 739
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 210 _check_band_contains_other()


_calibrate_ir() (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler(satpy.readers.pmw_channels_definitions.FrequencyDoubleSideB
static method), 247 static method), 312
_calibrate_rad_bt() _check_cache_and_clear()
(satpy.readers.mviri_l1b_fiduceo_nc.IRWVCalibrator (satpy.tests.modifier_tests.test_angles.TestAngleGeneration
method), 293 static method), 402
_calibrate_rad_refl() _check_cached_result()
(satpy.readers.mviri_l1b_fiduceo_nc.VISCalibrator (satpy.tests.modifier_tests.test_angles.TestAngleGeneration
method), 294 static method), 402
_calibrate_refl() (satpy.readers.vii_l1b_nc.ViiL1bNCFileHandler
_check_calibration_and_units()
static method), 364 (satpy.tests.reader_tests.test_agri_l1.Test_HDF_AGRI_L1_cal
_calibrate_reflective() method), 433
(satpy.readers.virr_l1b.VIRR_L1B method), _check_calibration_and_units()
376 (satpy.tests.reader_tests.test_ghi_l1.Test_HDF_GHI_L1_cal
_calibrate_vis() (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler
method), 473
static method), 247 _check_continuous_data_arr() (in module
_calibrate_vis() (satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriBase
satpy.tests.reader_tests.test_viirs_edr), 556
method), 291 _check_dims_and_coords() (in module
_calibrate_vis() (satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriEasyFcdrFileHandler
satpy.tests.reader_tests.test_abi_l1b), 429
method), 292 _check_file_protocols() (in module satpy.utils), 717
_calibrate_vis() (satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriFullFcdrFileHandler
_check_file_protocols_for_dicts() (in module
method), 292 satpy.utils), 717
_call_crefl() (satpy.modifiers._crefl.ReflectanceCorrector_check_filehandler_area_def() (in module
method), 153 satpy.tests.reader_tests.test_nwcsaf_nc), 518
_call_mapped_correction() (in module _check_fill() (satpy.tests.reader_tests.test_amsr2_l2_gaasp.TestGAASPR
satpy.modifiers.atmosphere), 162 static method), 442
_call_scene_func() (satpy.multiscene._multiscene.MultiScene
_check_fill_value() (in module
static method), 172 satpy.tests.reader_tests.test_mirs), 506
_chand() (in module satpy.modifiers._crefl_utils), 157 _check_for_valid_bounds()
_change_quantity() (satpy.readers.sar_c_safe.SAFEGRD (satpy.readers.seviri_l1b_native.ImageBoundaries
static method), 318 static method), 344
_channel_names() (satpy.writers.mitiff.MITIFFWriter _check_fpos() (satpy.readers.ahi_hsd.AHIHSDFileHandler
method), 662 method), 205
_check_aggregation_results() _check_get_channel_calls()
(satpy.tests.scene_tests.test_resampling.TestSceneAggregation
(satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGetDataset
method), 577 static method), 450
_check_area() (in module _check_include_scale_offset()
satpy.tests.reader_tests.test_abi_l1b), 429 (satpy.writers.ninjogeotiff.NinJoGeoTIFFWriter
_check_area() (in module method), 664
satpy.tests.reader_tests.test_mirs), 506 _check_keys_for_dsq()
_check_area() (satpy.tests.reader_tests.test_amsr2_l2_gaasp.TestGAASPReader
(satpy.tests.reader_tests.test_agri_l1.Test_HDF_AGRI_L1_cal
static method), 442 static method), 433
_check_area_for_ch01() _check_keys_for_dsq()
(satpy.tests.test_yaml_reader.TestFileYAMLReaderLoading (satpy.tests.reader_tests.test_ghi_l1.Test_HDF_GHI_L1_cal
method), 639 static method), 473
_check_attrs() (in module _check_known_composites() (satpy.scene.Scene
satpy.tests.reader_tests.test_mirs), 506 method), 706
_check_attrs() (satpy.tests.reader_tests.test_amsr2_l2_gaasp.TestGAASPReader
_check_metadata() (in module
static method), 442 satpy.tests.reader_tests.test_mirs), 506
_check_available_component() _check_moon_phase() (in module
(satpy.tests.test_config.TestPluginsConfigs satpy.composites.viirs), 120
static method), 603 _check_orbital_parameters()
_check_backend_versions() (in module (satpy.tests.reader_tests.test_ami_l1b.TestAMIL1bNetCDF
satpy.writers.cf_writer), 659 method), 439

740 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_check_overlap() (satpy.modifiers.parallax.ParallaxCorrection method), 253


method), 166 _cimss_true_color_contrast() (in module
_check_package_version() (in module satpy.utils), satpy.enhancements.abi), 147
717 _cira_stretch() (in module satpy.enhancements), 148
_check_production_location() (in module _classSetupFailed (satpy.tests.compositor_tests.test_abi.TestABICompos
satpy.tests.writer_tests.test_awips_tiled), attribute), 396
580 _classSetupFailed (satpy.tests.compositor_tests.test_agri.TestAGRIComp
_check_reader_instances() (in module attribute), 396
satpy.readers), 387 _classSetupFailed (satpy.tests.compositor_tests.test_ahi.TestAHICompo
_check_relative_filename() attribute), 396
(satpy.composites.StaticImageCompositor _classSetupFailed (satpy.tests.compositor_tests.test_sar.TestSARCompo
static method), 135 attribute), 397
_check_remaining_files() (in module _classSetupFailed (satpy.tests.enhancement_tests.test_abi.TestABIEnhan
satpy.readers), 387 attribute), 399
_check_required_common_attributes() (in module _classSetupFailed (satpy.tests.enhancement_tests.test_viirs.TestVIIRSEn
satpy.tests.writer_tests.test_awips_tiled), 580 attribute), 402
_check_scaled_x_coordinate_variable() (in mod- _classSetupFailed (satpy.tests.multiscene_tests.test_misc.TestMultiScene
ule satpy.tests.writer_tests.test_awips_tiled), attribute), 409
580 _classSetupFailed (satpy.tests.multiscene_tests.test_save_animation.Tes
_check_scaled_y_coordinate_variable() (in mod- attribute), 410
ule satpy.tests.writer_tests.test_awips_tiled), _classSetupFailed (satpy.tests.reader_tests.test_aapp_l1b.TestAAPPL1B
580 attribute), 427
_check_sensor_platform_consistency() _classSetupFailed (satpy.tests.reader_tests.test_aapp_l1b.TestAAPPL1B
(satpy.readers.hrit_jma.HRITJMAFileHandler attribute), 428
method), 258 _classSetupFailed (satpy.tests.reader_tests.test_aapp_l1b.TestNegativeC
_check_shared_metadata() (in module attribute), 428
satpy.tests.reader_tests.modis_tests.test_modis_l1b),
_classSetupFailed (satpy.tests.reader_tests.test_aapp_mhs_amsub_l1c.T
421 attribute), 428
_check_shared_metadata() (in module _classSetupFailed (satpy.tests.reader_tests.test_ahi_hrit.TestHRITJMAF
satpy.tests.reader_tests.modis_tests.test_modis_l2), attribute), 434
422 _classSetupFailed (satpy.tests.reader_tests.test_ahi_hsd.TestAHICalibra
_check_stacked_metadata() (in module attribute), 435
satpy.tests.multiscene_tests.test_blend), 408 _classSetupFailed (satpy.tests.reader_tests.test_ahi_hsd.TestAHIHSDNa
_check_surf_refl_data_arr() (in module attribute), 436
satpy.tests.reader_tests.test_viirs_edr), 556 _classSetupFailed (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.Te
_check_surf_refl_qf_data_arr() (in module attribute), 436
satpy.tests.reader_tests.test_viirs_edr), 556 _classSetupFailed (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.Te
_check_units() (satpy.tests.reader_tests.test_agri_l1.Test_HDF_AGRI_L1_cal
attribute), 437
static method), 433 _classSetupFailed (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.Te
_check_units() (satpy.tests.reader_tests.test_ghi_l1.Test_HDF_GHI_L1_cal
attribute), 437
static method), 473 _classSetupFailed (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.Te
_check_valid_range() (in module attribute), 438
satpy.tests.reader_tests.test_mirs), 506 _classSetupFailed (satpy.tests.reader_tests.test_amsr2_l1b.TestAMSR2L
_check_vi_data_arr() (in module attribute), 440
satpy.tests.reader_tests.test_viirs_edr), 556 _classSetupFailed (satpy.tests.reader_tests.test_amsr2_l2.TestAMSR2L2
_check_yaml_configs() (in module satpy.utils), 718 attribute), 441
_chunk_bytes_for_resolution() _classSetupFailed (satpy.tests.reader_tests.test_ascat_l2_soilmoisture_b
(satpy.readers.abi_base.NC_ABI_BASE attribute), 442
method), 200 _classSetupFailed (satpy.tests.reader_tests.test_avhrr_l0_hrpt.Calibrato
_chunks (satpy.readers.hrpt.HRPTFile property), 259 attribute), 445
_chunks_are_irregular() (in module _classSetupFailed (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPT
satpy.modifiers.angles), 159 attribute), 445
_chunks_for_variable() _classSetupFailed (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPT
(satpy.readers.hdfeos_base.HDFEOSBaseFileReader attribute), 446

Index 741
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_classSetupFailed (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetCalibratedReflectances
_classSetupFailed (satpy.tests.reader_tests.test_geocat.TestGEOCATRea
attribute), 446 attribute), 471
_classSetupFailed (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetUncalibratedData
_classSetupFailed (satpy.tests.reader_tests.test_geos_area.TestGEOSPro
attribute), 446 attribute), 472
_classSetupFailed (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTNavigation
_classSetupFailed (satpy.tests.reader_tests.test_glm_l2.TestGLML2FileH
attribute), 447 attribute), 476
_classSetupFailed (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTReading
_classSetupFailed (satpy.tests.reader_tests.test_glm_l2.TestGLML2Read
attribute), 447 attribute), 476
_classSetupFailed (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTWithFile
_classSetupFailed (satpy.tests.reader_tests.test_goes_imager_hrit.TestG
attribute), 447 attribute), 477
_classSetupFailed (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTWithPatchedCalibratorAndFile
_classSetupFailed (satpy.tests.reader_tests.test_goes_imager_hrit.TestH
attribute), 448 attribute), 478
_classSetupFailed (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.GACLACFilePatcher
_classSetupFailed (satpy.tests.reader_tests.test_goes_imager_hrit.TestH
attribute), 448 attribute), 478
_classSetupFailed (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.PygacPatcher
_classSetupFailed (satpy.tests.reader_tests.test_goes_imager_hrit.TestM
attribute), 448 attribute), 478
_classSetupFailed (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGACLACFile
_classSetupFailed (satpy.tests.reader_tests.test_goes_imager_nc_eum.G
attribute), 449 attribute), 479
_classSetupFailed (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGetDataset
_classSetupFailed (satpy.tests.reader_tests.test_goes_imager_nc_eum.G
attribute), 450 attribute), 479
_classSetupFailed (satpy.tests.reader_tests.test_clavrx.test_clavrx_geohdf.TestCLAVRXReaderGeo
_classSetupFailed (satpy.tests.reader_tests.test_goes_imager_nc_noaa.G
attribute), 423 attribute), 479
_classSetupFailed (satpy.tests.reader_tests.test_clavrx.test_clavrx_polarhdf.TestCLAVRXReaderPolar
_classSetupFailed (satpy.tests.reader_tests.test_goes_imager_nc_noaa.G
attribute), 424 attribute), 480
_classSetupFailed (satpy.tests.reader_tests.test_electrol_hrit.TestHRITGOMSEpiFileHandler
_classSetupFailed (satpy.tests.reader_tests.test_gpm_imerg.TestHdf5IM
attribute), 452 attribute), 482
_classSetupFailed (satpy.tests.reader_tests.test_electrol_hrit.TestHRITGOMSFileHandler
_classSetupFailed (satpy.tests.reader_tests.test_hdf4_utils.TestHDF4Fil
attribute), 453 attribute), 484
_classSetupFailed (satpy.tests.reader_tests.test_electrol_hrit.TestHRITGOMSProFileHandler
_classSetupFailed (satpy.tests.reader_tests.test_hdf5_utils.TestHDF5Fil
attribute), 453 attribute), 485
_classSetupFailed (satpy.tests.reader_tests.test_electrol_hrit.Testrecarray2dict
_classSetupFailed (satpy.tests.reader_tests.test_hdfeos_base.TestReadM
attribute), 454 attribute), 485
_classSetupFailed (satpy.tests.reader_tests.test_eps_l1b.BaseTestCaseEPSL1B
_classSetupFailed (satpy.tests.reader_tests.test_hsaf_grib.TestHSAFFile
attribute), 455 attribute), 489
_classSetupFailed (satpy.tests.reader_tests.test_eps_l1b.TestEPSL1B
_classSetupFailed (satpy.tests.reader_tests.test_hy2_scat_l2b_h5.TestHY
attribute), 455 attribute), 490
_classSetupFailed (satpy.tests.reader_tests.test_eps_l1b.TestWrongSamplingEPSL1B
_classSetupFailed (satpy.tests.reader_tests.test_iasi_l2.TestIasiL2
attribute), 455 attribute), 491
_classSetupFailed (satpy.tests.reader_tests.test_eps_l1b.TestWrongScanlinesEPSL1B
_classSetupFailed (satpy.tests.reader_tests.test_iasi_l2_so2_bufr.TestIas
attribute), 456 attribute), 492
_classSetupFailed (satpy.tests.reader_tests.test_eum_base.TestGetServiceMode
_classSetupFailed (satpy.tests.reader_tests.test_meris_nc.TestBitFlags
attribute), 457 attribute), 499
_classSetupFailed (satpy.tests.reader_tests.test_eum_base.TestMakeTimeCdsDictionary
_classSetupFailed (satpy.tests.reader_tests.test_meris_nc.TestMERISRea
attribute), 457 attribute), 499
_classSetupFailed (satpy.tests.reader_tests.test_eum_base.TestMakeTimeCdsRecarray
_classSetupFailed (satpy.tests.reader_tests.test_mimic_TPW2_lowres.Te
attribute), 458 attribute), 505
_classSetupFailed (satpy.tests.reader_tests.test_eum_base.TestRecarray2Dict
_classSetupFailed (satpy.tests.reader_tests.test_mimic_TPW2_nc.TestM
attribute), 458 attribute), 506
_classSetupFailed (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCFileHandler
_classSetupFailed (satpy.tests.reader_tests.test_netcdf_utils.TestNetCDF
attribute), 466 attribute), 513
_classSetupFailed (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCReadingByteData
_classSetupFailed (satpy.tests.reader_tests.test_nucaps.TestNUCAPSRe
attribute), 467 attribute), 514
_classSetupFailed (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCSegmentFileHandler
_classSetupFailed (satpy.tests.reader_tests.test_nucaps.TestNUCAPSSci
attribute), 467 attribute), 515

742 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_classSetupFailed (satpy.tests.reader_tests.test_nwcsaf_msg.TestH5NWCSAF
_classSetupFailed (satpy.tests.reader_tests.test_vii_utils.TestViiUtils
attribute), 516 attribute), 554
_classSetupFailed (satpy.tests.reader_tests.test_olci_nc.TestL1bBitFlags
_classSetupFailed (satpy.tests.reader_tests.test_vii_wv_nc.TestViiL2NCF
attribute), 522 attribute), 554
_classSetupFailed (satpy.tests.reader_tests.test_olci_nc.TestL2BitFlags
_classSetupFailed (satpy.tests.reader_tests.test_viirs_edr_active_fires.Te
attribute), 522 attribute), 559
_classSetupFailed (satpy.tests.reader_tests.test_olci_nc.TestOLCIReader
_classSetupFailed (satpy.tests.reader_tests.test_viirs_edr_active_fires.Te
attribute), 522 attribute), 560
_classSetupFailed (satpy.tests.reader_tests.test_omps_edr.TestOMPSEDRReader
_classSetupFailed (satpy.tests.reader_tests.test_viirs_edr_active_fires.Te
attribute), 525 attribute), 560
_classSetupFailed (satpy.tests.reader_tests.test_safe_sar_l2_ocn.TestSAFENC
_classSetupFailed (satpy.tests.reader_tests.test_viirs_edr_active_fires.Te
attribute), 527 attribute), 561
_classSetupFailed (satpy.tests.reader_tests.test_scmi.TestSCMIFileHandler
_classSetupFailed (satpy.tests.reader_tests.test_viirs_edr_flood.TestVIIR
attribute), 532 attribute), 561
_classSetupFailed (satpy.tests.reader_tests.test_scmi.TestSCMIFileHandlerArea
_classSetupFailed (satpy.tests.reader_tests.test_viirs_sdr.TestAggrVIIRS
attribute), 532 attribute), 566
_classSetupFailed (satpy.tests.reader_tests.test_seviri_base.SeviriBaseTest
_classSetupFailed (satpy.tests.reader_tests.test_viirs_sdr.TestShortAggrV
attribute), 533 attribute), 566
_classSetupFailed (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestSEVIRICalibrationAlgorithm
_classSetupFailed (satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDR
attribute), 536 attribute), 567
_classSetupFailed (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGBase
_classSetupFailed (satpy.tests.reader_tests.test_virr_l1b.TestVIRRL1BR
attribute), 537 attribute), 569
_classSetupFailed (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGEpilogueFileHandler
_classSetupFailed (satpy.tests.test_composites.TestAddBands
attribute), 537 attribute), 591
_classSetupFailed (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGFileHandler
_classSetupFailed (satpy.tests.test_composites.TestCategoricalDataCom
attribute), 537 attribute), 592
_classSetupFailed (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGFileHandlerHRV
_classSetupFailed (satpy.tests.test_composites.TestColorizeCompositor
attribute), 538 attribute), 593
_classSetupFailed (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGPrologueFileHandler
_classSetupFailed (satpy.tests.test_composites.TestColormapComposito
attribute), 539 attribute), 593
_classSetupFailed (satpy.tests.reader_tests.test_seviri_l1b_icare.TestSEVIRIICAREReader
_classSetupFailed (satpy.tests.test_composites.TestDayNightCompositor
attribute), 541 attribute), 593
_classSetupFailed (satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeMSGFileHandler
_classSetupFailed (satpy.tests.test_composites.TestDifferenceComposito
attribute), 543 attribute), 594
_classSetupFailed (satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeMSGPadder
_classSetupFailed (satpy.tests.test_composites.TestEnhance2Dataset
attribute), 543 attribute), 594
_classSetupFailed (satpy.tests.reader_tests.test_slstr_l1b.TestSLSTRCalibration
_classSetupFailed (satpy.tests.test_composites.TestFillingCompositor
attribute), 547 attribute), 595
_classSetupFailed (satpy.tests.reader_tests.test_slstr_l1b.TestSLSTRL1B
_classSetupFailed (satpy.tests.test_composites.TestGenericCompositor
attribute), 548 attribute), 595
_classSetupFailed (satpy.tests.reader_tests.test_slstr_l1b.TestSLSTRReader
_classSetupFailed (satpy.tests.test_composites.TestInferMode
attribute), 548 attribute), 596
_classSetupFailed (satpy.tests.reader_tests.test_smos_l2_wind.TestSMOSL2WINDReader
_classSetupFailed (satpy.tests.test_composites.TestInlineComposites
attribute), 549 attribute), 596
_classSetupFailed (satpy.tests.reader_tests.test_tropomi_l2.TestTROPOMIL2Reader
_classSetupFailed (satpy.tests.test_composites.TestLongitudeMaskingCo
attribute), 550 attribute), 597
_classSetupFailed (satpy.tests.reader_tests.test_utils.TestHelpers
_classSetupFailed (satpy.tests.test_composites.TestLuminanceSharpenin
attribute), 551 attribute), 597
_classSetupFailed (satpy.tests.reader_tests.test_vii_base_nc.TestViiNCBaseFileHandler
_classSetupFailed (satpy.tests.test_composites.TestMultiFiller
attribute), 553 attribute), 599
_classSetupFailed (satpy.tests.reader_tests.test_vii_l1b_nc.TestViiL1bNCFileHandler
_classSetupFailed (satpy.tests.test_composites.TestNaturalEnhComposit
attribute), 553 attribute), 599
_classSetupFailed (satpy.tests.reader_tests.test_vii_l2_nc.TestViiL2NCFileHandler
_classSetupFailed (satpy.tests.test_composites.TestPaletteCompositor
attribute), 554 attribute), 600

Index 743
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_classSetupFailed (satpy.tests.test_composites.TestPrecipCloudsCompositor
_classSetupFailed (satpy.tests.test_resample.TestBucketFraction
attribute), 600 attribute), 626
_classSetupFailed (satpy.tests.test_composites.TestSingleBandCompositor
_classSetupFailed (satpy.tests.test_resample.TestBucketSum
attribute), 601 attribute), 627
_classSetupFailed (satpy.tests.test_composites.TestStaticImageCompositor
_classSetupFailed (satpy.tests.test_resample.TestCoordinateHelpers
attribute), 601 attribute), 627
_classSetupFailed (satpy.tests.test_config.TestBuiltinAreas
_classSetupFailed (satpy.tests.test_resample.TestHLResample
attribute), 602 attribute), 627
_classSetupFailed (satpy.tests.test_crefl_utils.TestCreflUtils
_classSetupFailed (satpy.tests.test_resample.TestKDTreeResampler
attribute), 604 attribute), 628
_classSetupFailed (satpy.tests.test_dataset.TestCombineMetadata
_classSetupFailed (satpy.tests.test_yaml_reader.TestFileFileYAMLReade
attribute), 606 attribute), 637
_classSetupFailed (satpy.tests.test_dataset.TestDataID _classSetupFailed (satpy.tests.test_yaml_reader.TestFileFileYAMLReade
attribute), 607 attribute), 638
_classSetupFailed (satpy.tests.test_dataset.TestIDQueryInteractions
_classSetupFailed (satpy.tests.test_yaml_reader.TestFileFileYAMLReade
attribute), 607 attribute), 639
_classSetupFailed (satpy.tests.test_demo.TestDemo _classSetupFailed (satpy.tests.test_yaml_reader.TestFileYAMLReaderLo
attribute), 610 attribute), 639
_classSetupFailed (satpy.tests.test_demo.TestGCPUtils _classSetupFailed (satpy.tests.test_yaml_reader.TestFileYAMLReaderW
attribute), 610 attribute), 640
_classSetupFailed (satpy.tests.test_demo.TestSEVIRIHRITDemoDownload
_classSetupFailed (satpy.tests.test_yaml_reader.TestGEOFlippableFileY
attribute), 610 attribute), 640
_classSetupFailed (satpy.tests.test_dependency_tree.TestDependencyTree
_classSetupFailed (satpy.tests.test_yaml_reader.TestGEOSegmentYAML
attribute), 612 attribute), 640
_classSetupFailed (satpy.tests.test_dependency_tree.TestMissingDependencies
_classSetupFailed (satpy.tests.test_yaml_reader.TestUtils
attribute), 613 attribute), 641
_classSetupFailed (satpy.tests.test_dependency_tree.TestMultipleResolutionSameChannelDependency
_classSetupFailed (satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
attribute), 613 attribute), 583
_classSetupFailed (satpy.tests.test_dependency_tree.TestMultipleSensors
_classSetupFailed (satpy.tests.writer_tests.test_ninjotiff.TestNinjoTIFFW
attribute), 614 attribute), 589
_classSetupFailed (satpy.tests.test_file_handlers.TestBaseFileHandler
_classSetupFailed (satpy.tests.writer_tests.test_simple_image.TestPillow
attribute), 614 attribute), 589
_classSetupFailed (satpy.tests.test_modifiers.TestNIREmissivePartFromReflectance
_classSetupFailed (satpy.tests.writer_tests.test_utils.WriterUtilsTest
attribute), 615 attribute), 590
_classSetupFailed (satpy.tests.test_modifiers.TestNIRReflectance
_class_cleanups (satpy.tests.compositor_tests.test_abi.TestABIComposite
attribute), 615 attribute), 396
_classSetupFailed (satpy.tests.test_modifiers.TestPSPAtmosphericalCorrection
_class_cleanups (satpy.tests.compositor_tests.test_agri.TestAGRICompos
attribute), 616 attribute), 396
_classSetupFailed (satpy.tests.test_node.TestCompositorNode
_class_cleanups (satpy.tests.compositor_tests.test_ahi.TestAHIComposite
attribute), 617 attribute), 396
_classSetupFailed (satpy.tests.test_node.TestCompositorNodeCopy
_class_cleanups (satpy.tests.compositor_tests.test_sar.TestSARComposite
attribute), 618 attribute), 397
_classSetupFailed (satpy.tests.test_readers.TestDatasetDict
_class_cleanups (satpy.tests.enhancement_tests.test_abi.TestABIEnhance
attribute), 618 attribute), 399
_classSetupFailed (satpy.tests.test_readers.TestGroupFiles_class_cleanups (satpy.tests.enhancement_tests.test_viirs.TestVIIRSEnha
attribute), 621 attribute), 402
_classSetupFailed (satpy.tests.test_readers.TestReaderLoader
_class_cleanups (satpy.tests.multiscene_tests.test_misc.TestMultiScene
attribute), 622 attribute), 409
_classSetupFailed (satpy.tests.test_resample.TestBilinearResampler
_class_cleanups (satpy.tests.multiscene_tests.test_save_animation.TestM
attribute), 625 attribute), 410
_classSetupFailed (satpy.tests.test_resample.TestBucketAvg_class_cleanups (satpy.tests.reader_tests.test_aapp_l1b.TestAAPPL1BAl
attribute), 626 attribute), 427
_classSetupFailed (satpy.tests.test_resample.TestBucketCount
_class_cleanups (satpy.tests.reader_tests.test_aapp_l1b.TestAAPPL1BCh
attribute), 626 attribute), 428

744 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_class_cleanups (satpy.tests.reader_tests.test_aapp_l1b.TestNegativeCalibrationSlope
_class_cleanups (satpy.tests.reader_tests.test_electrol_hrit.TestHRITGOM
attribute), 428 attribute), 452
_class_cleanups (satpy.tests.reader_tests.test_aapp_mhs_amsub_l1c.TestMHS_AMSUB_AAPPL1CReadData
_class_cleanups (satpy.tests.reader_tests.test_electrol_hrit.TestHRITGOM
attribute), 429 attribute), 453
_class_cleanups (satpy.tests.reader_tests.test_ahi_hrit.TestHRITJMAFileHandler
_class_cleanups (satpy.tests.reader_tests.test_electrol_hrit.TestHRITGOM
attribute), 434 attribute), 453
_class_cleanups (satpy.tests.reader_tests.test_ahi_hsd.TestAHICalibration
_class_cleanups (satpy.tests.reader_tests.test_electrol_hrit.Testrecarray2
attribute), 435 attribute), 454
_class_cleanups (satpy.tests.reader_tests.test_ahi_hsd.TestAHIHSDNavigation
_class_cleanups (satpy.tests.reader_tests.test_eps_l1b.BaseTestCaseEPS
attribute), 436 attribute), 455
_class_cleanups (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGriddedArea
_class_cleanups (satpy.tests.reader_tests.test_eps_l1b.TestEPSL1B
attribute), 437 attribute), 455
_class_cleanups (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGriddedFileCalibration
_class_cleanups (satpy.tests.reader_tests.test_eps_l1b.TestWrongSamplin
attribute), 437 attribute), 456
_class_cleanups (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGriddedFileHandler
_class_cleanups (satpy.tests.reader_tests.test_eps_l1b.TestWrongScanlin
attribute), 437 attribute), 456
_class_cleanups (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGriddedLUTs
_class_cleanups (satpy.tests.reader_tests.test_eum_base.TestGetServiceM
attribute), 438 attribute), 457
_class_cleanups (satpy.tests.reader_tests.test_amsr2_l1b.TestAMSR2L1BReader
_class_cleanups (satpy.tests.reader_tests.test_eum_base.TestMakeTimeC
attribute), 440 attribute), 457
_class_cleanups (satpy.tests.reader_tests.test_amsr2_l2.TestAMSR2L2Reader
_class_cleanups (satpy.tests.reader_tests.test_eum_base.TestMakeTimeC
attribute), 441 attribute), 458
_class_cleanups (satpy.tests.reader_tests.test_ascat_l2_soilmoisture_bufr.TesitAscatL2SoilmoistureBufr
_class_cleanups (satpy.tests.reader_tests.test_eum_base.TestRecarray2D
attribute), 442 attribute), 458
_class_cleanups (satpy.tests.reader_tests.test_avhrr_l0_hrpt.CalibratorPatcher
_class_cleanups (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCFile
attribute), 445 attribute), 466
_class_cleanups (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTChannel3
_class_cleanups (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCRea
attribute), 445 attribute), 467
_class_cleanups (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetCalibratedBT
_class_cleanups (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCSeg
attribute), 446 attribute), 467
_class_cleanups (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetCalibratedReflectances
_class_cleanups (satpy.tests.reader_tests.test_geocat.TestGEOCATReade
attribute), 446 attribute), 471
_class_cleanups (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetUncalibratedData
_class_cleanups (satpy.tests.reader_tests.test_geos_area.TestGEOSProje
attribute), 446 attribute), 472
_class_cleanups (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTNavigation
_class_cleanups (satpy.tests.reader_tests.test_glm_l2.TestGLML2FileHa
attribute), 447 attribute), 476
_class_cleanups (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTReading
_class_cleanups (satpy.tests.reader_tests.test_glm_l2.TestGLML2Reader
attribute), 447 attribute), 476
_class_cleanups (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTWithFile
_class_cleanups (satpy.tests.reader_tests.test_goes_imager_hrit.TestGVA
attribute), 447 attribute), 477
_class_cleanups (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTWithPatchedCalibratorAndFile
_class_cleanups (satpy.tests.reader_tests.test_goes_imager_hrit.TestHRI
attribute), 448 attribute), 478
_class_cleanups (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.GACLACFilePatcher
_class_cleanups (satpy.tests.reader_tests.test_goes_imager_hrit.TestHRI
attribute), 448 attribute), 478
_class_cleanups (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.PygacPatcher
_class_cleanups (satpy.tests.reader_tests.test_goes_imager_hrit.TestMak
attribute), 448 attribute), 478
_class_cleanups (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGACLACFile
_class_cleanups (satpy.tests.reader_tests.test_goes_imager_nc_eum.GOE
attribute), 449 attribute), 479
_class_cleanups (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGetDataset
_class_cleanups (satpy.tests.reader_tests.test_goes_imager_nc_eum.GOE
attribute), 450 attribute), 479
_class_cleanups (satpy.tests.reader_tests.test_clavrx.test_clavrx_geohdf.TestCLAVRXReaderGeo
_class_cleanups (satpy.tests.reader_tests.test_goes_imager_nc_noaa.GO
attribute), 423 attribute), 480
_class_cleanups (satpy.tests.reader_tests.test_clavrx.test_clavrx_polarhdf.TestCLAVRXReaderPolar
_class_cleanups (satpy.tests.reader_tests.test_goes_imager_nc_noaa.GO
attribute), 425 attribute), 480

Index 745
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_class_cleanups (satpy.tests.reader_tests.test_gpm_imerg.TestHdf5IMERG
_class_cleanups (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITM
attribute), 482 attribute), 538
_class_cleanups (satpy.tests.reader_tests.test_hdf4_utils.TestHDF4FileHandler
_class_cleanups (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITM
attribute), 484 attribute), 538
_class_cleanups (satpy.tests.reader_tests.test_hdf5_utils.TestHDF5FileHandler
_class_cleanups (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITM
attribute), 485 attribute), 539
_class_cleanups (satpy.tests.reader_tests.test_hdfeos_base.TestReadMDA
_class_cleanups (satpy.tests.reader_tests.test_seviri_l1b_icare.TestSEVIR
attribute), 486 attribute), 541
_class_cleanups (satpy.tests.reader_tests.test_hsaf_grib.TestHSAFFileHandler
_class_cleanups (satpy.tests.reader_tests.test_seviri_l1b_native.TestNativ
attribute), 489 attribute), 543
_class_cleanups (satpy.tests.reader_tests.test_hy2_scat_l2b_h5.TestHY2SCATL2BH5Reader
_class_cleanups (satpy.tests.reader_tests.test_seviri_l1b_native.TestNativ
attribute), 490 attribute), 543
_class_cleanups (satpy.tests.reader_tests.test_iasi_l2.TestIasiL2
_class_cleanups (satpy.tests.reader_tests.test_slstr_l1b.TestSLSTRCalibr
attribute), 491 attribute), 547
_class_cleanups (satpy.tests.reader_tests.test_iasi_l2_so2_bufr.TestIasiL2So2Bufr
_class_cleanups (satpy.tests.reader_tests.test_slstr_l1b.TestSLSTRL1B
attribute), 492 attribute), 548
_class_cleanups (satpy.tests.reader_tests.test_meris_nc.TestBitFlags
_class_cleanups (satpy.tests.reader_tests.test_slstr_l1b.TestSLSTRReade
attribute), 499 attribute), 548
_class_cleanups (satpy.tests.reader_tests.test_meris_nc.TestMERISReader
_class_cleanups (satpy.tests.reader_tests.test_smos_l2_wind.TestSMOSL
attribute), 499 attribute), 549
_class_cleanups (satpy.tests.reader_tests.test_mimic_TPW2_lowres.TestMimicTPW2Reader
_class_cleanups (satpy.tests.reader_tests.test_tropomi_l2.TestTROPOMI
attribute), 505 attribute), 550
_class_cleanups (satpy.tests.reader_tests.test_mimic_TPW2_nc.TestMimicTPW2Reader
_class_cleanups (satpy.tests.reader_tests.test_utils.TestHelpers
attribute), 506 attribute), 551
_class_cleanups (satpy.tests.reader_tests.test_netcdf_utils.TestNetCDF4FileHandler
_class_cleanups (satpy.tests.reader_tests.test_vii_base_nc.TestViiNCBas
attribute), 513 attribute), 553
_class_cleanups (satpy.tests.reader_tests.test_nucaps.TestNUCAPSReader
_class_cleanups (satpy.tests.reader_tests.test_vii_l1b_nc.TestViiL1bNCF
attribute), 514 attribute), 553
_class_cleanups (satpy.tests.reader_tests.test_nucaps.TestNUCAPSScienceEDRReader
_class_cleanups (satpy.tests.reader_tests.test_vii_l2_nc.TestViiL2NCFile
attribute), 515 attribute), 554
_class_cleanups (satpy.tests.reader_tests.test_nwcsaf_msg.TestH5NWCSAF
_class_cleanups (satpy.tests.reader_tests.test_vii_utils.TestViiUtils
attribute), 516 attribute), 554
_class_cleanups (satpy.tests.reader_tests.test_olci_nc.TestL1bBitFlags
_class_cleanups (satpy.tests.reader_tests.test_vii_wv_nc.TestViiL2NCFil
attribute), 522 attribute), 555
_class_cleanups (satpy.tests.reader_tests.test_olci_nc.TestL2BitFlags
_class_cleanups (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestI
attribute), 522 attribute), 559
_class_cleanups (satpy.tests.reader_tests.test_olci_nc.TestOLCIReader
_class_cleanups (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestI
attribute), 523 attribute), 560
_class_cleanups (satpy.tests.reader_tests.test_omps_edr.TestOMPSEDRReader
_class_cleanups (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestM
attribute), 525 attribute), 560
_class_cleanups (satpy.tests.reader_tests.test_safe_sar_l2_ocn.TestSAFENC
_class_cleanups (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestM
attribute), 527 attribute), 561
_class_cleanups (satpy.tests.reader_tests.test_scmi.TestSCMIFileHandler
_class_cleanups (satpy.tests.reader_tests.test_viirs_edr_flood.TestVIIRSE
attribute), 532 attribute), 561
_class_cleanups (satpy.tests.reader_tests.test_scmi.TestSCMIFileHandlerArea
_class_cleanups (satpy.tests.reader_tests.test_viirs_sdr.TestAggrVIIRSSD
attribute), 532 attribute), 566
_class_cleanups (satpy.tests.reader_tests.test_seviri_base.SeviriBaseTest
_class_cleanups (satpy.tests.reader_tests.test_viirs_sdr.TestShortAggrVII
attribute), 533 attribute), 566
_class_cleanups (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestSEVIRICalibrationAlgorithm
_class_cleanups (satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRRe
attribute), 536 attribute), 567
_class_cleanups (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGBase
_class_cleanups (satpy.tests.reader_tests.test_virr_l1b.TestVIRRL1BRead
attribute), 537 attribute), 569
_class_cleanups (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGEpilogueFileHandler
_class_cleanups (satpy.tests.test_composites.TestAddBands
attribute), 537 attribute), 591

746 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_class_cleanups (satpy.tests.test_composites.TestCategoricalDataCompositor
_class_cleanups (satpy.tests.test_dependency_tree.TestMissingDependen
attribute), 592 attribute), 613
_class_cleanups (satpy.tests.test_composites.TestColorizeCompositor
_class_cleanups (satpy.tests.test_dependency_tree.TestMultipleResolutio
attribute), 593 attribute), 613
_class_cleanups (satpy.tests.test_composites.TestColormapCompositor
_class_cleanups (satpy.tests.test_dependency_tree.TestMultipleSensors
attribute), 593 attribute), 614
_class_cleanups (satpy.tests.test_composites.TestDayNightCompositor
_class_cleanups (satpy.tests.test_file_handlers.TestBaseFileHandler
attribute), 593 attribute), 614
_class_cleanups (satpy.tests.test_composites.TestDifferenceCompositor
_class_cleanups (satpy.tests.test_modifiers.TestNIREmissivePartFromRefl
attribute), 594 attribute), 615
_class_cleanups (satpy.tests.test_composites.TestEnhance2Dataset
_class_cleanups (satpy.tests.test_modifiers.TestNIRReflectance
attribute), 594 attribute), 615
_class_cleanups (satpy.tests.test_composites.TestFillingCompositor
_class_cleanups (satpy.tests.test_modifiers.TestPSPAtmosphericalCorrec
attribute), 595 attribute), 616
_class_cleanups (satpy.tests.test_composites.TestGenericCompositor
_class_cleanups (satpy.tests.test_node.TestCompositorNode
attribute), 595 attribute), 617
_class_cleanups (satpy.tests.test_composites.TestInferMode _class_cleanups (satpy.tests.test_node.TestCompositorNodeCopy
attribute), 596 attribute), 618
_class_cleanups (satpy.tests.test_composites.TestInlineComposites
_class_cleanups (satpy.tests.test_readers.TestDatasetDict
attribute), 596 attribute), 618
_class_cleanups (satpy.tests.test_composites.TestLongitudeMaskingCompositor
_class_cleanups (satpy.tests.test_readers.TestGroupFiles
attribute), 597 attribute), 621
_class_cleanups (satpy.tests.test_composites.TestLuminanceSharpeningCompositor
_class_cleanups (satpy.tests.test_readers.TestReaderLoader
attribute), 597 attribute), 622
_class_cleanups (satpy.tests.test_composites.TestMultiFiller_class_cleanups (satpy.tests.test_resample.TestBilinearResampler
attribute), 599 attribute), 625
_class_cleanups (satpy.tests.test_composites.TestNaturalEnhCompositor
_class_cleanups (satpy.tests.test_resample.TestBucketAvg
attribute), 599 attribute), 626
_class_cleanups (satpy.tests.test_composites.TestPaletteCompositor
_class_cleanups (satpy.tests.test_resample.TestBucketCount
attribute), 600 attribute), 626
_class_cleanups (satpy.tests.test_composites.TestPrecipCloudsCompositor
_class_cleanups (satpy.tests.test_resample.TestBucketFraction
attribute), 600 attribute), 627
_class_cleanups (satpy.tests.test_composites.TestSingleBandCompositor
_class_cleanups (satpy.tests.test_resample.TestBucketSum
attribute), 601 attribute), 627
_class_cleanups (satpy.tests.test_composites.TestStaticImageCompositor
_class_cleanups (satpy.tests.test_resample.TestCoordinateHelpers
attribute), 601 attribute), 627
_class_cleanups (satpy.tests.test_config.TestBuiltinAreas _class_cleanups (satpy.tests.test_resample.TestHLResample
attribute), 602 attribute), 628
_class_cleanups (satpy.tests.test_crefl_utils.TestCreflUtils_class_cleanups (satpy.tests.test_resample.TestKDTreeResampler
attribute), 604 attribute), 628
_class_cleanups (satpy.tests.test_dataset.TestCombineMetadata
_class_cleanups (satpy.tests.test_yaml_reader.TestFileFileYAMLReader
attribute), 606 attribute), 637
_class_cleanups (satpy.tests.test_dataset.TestDataID _class_cleanups (satpy.tests.test_yaml_reader.TestFileFileYAMLReaderM
attribute), 607 attribute), 638
_class_cleanups (satpy.tests.test_dataset.TestIDQueryInteractions
_class_cleanups (satpy.tests.test_yaml_reader.TestFileFileYAMLReaderM
attribute), 607 attribute), 639
_class_cleanups (satpy.tests.test_demo.TestDemo at- _class_cleanups (satpy.tests.test_yaml_reader.TestFileYAMLReaderLoad
tribute), 610 attribute), 639
_class_cleanups (satpy.tests.test_demo.TestGCPUtils _class_cleanups (satpy.tests.test_yaml_reader.TestFileYAMLReaderWith
attribute), 610 attribute), 640
_class_cleanups (satpy.tests.test_demo.TestSEVIRIHRITDemoDownload
_class_cleanups (satpy.tests.test_yaml_reader.TestGEOFlippableFileYAM
attribute), 610 attribute), 640
_class_cleanups (satpy.tests.test_dependency_tree.TestDependencyTree
_class_cleanups (satpy.tests.test_yaml_reader.TestGEOSegmentYAMLRe
attribute), 612 attribute), 640

Index 747
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_class_cleanups (satpy.tests.test_yaml_reader.TestUtils (satpy.readers.netcdf_utils.NetCDF4FileHandler


attribute), 641 method), 300
_class_cleanups (satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
_combine() (satpy.readers.file_handlers.BaseFileHandler
attribute), 583 static method), 231
_class_cleanups (satpy.tests.writer_tests.test_ninjotiff.TestNinjoTIFFWriter
_combine_metadata_with_mode_and_sensor()
attribute), 589 (satpy.composites.BackgroundCompositor
_class_cleanups (satpy.tests.writer_tests.test_simple_image.TestPillowWriter
method), 123
attribute), 590 _combine_orbital_parameters()
_class_cleanups (satpy.tests.writer_tests.test_utils.WriterUtilsTest (satpy.readers.file_handlers.BaseFileHandler
attribute), 590 method), 232
_cleanup_attrs() (satpy.readers.mviri_l1b_fiduceo_nc._DatasetPreprocessor
_combine_shared_info() (in module
method), 295 satpy.dataset.metadata), 142
_cleanup_coords() (satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriBase
_combine_stacked_attrs() (in module
method), 291 satpy.multiscene._blend_funcs), 170
_clear_function_caches() (in module _combine_time_parameters() (in module
satpy.tests.conftest), 590 satpy.dataset.metadata), 142
_clip_negative_radiance() _combine_times() (in module satpy.dataset.metadata),
(satpy.readers.ami_l1b.AMIL1bNetCDF 142
method), 210 _combine_values() (in module
_clipneg() (satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler satpy.dataset.metadata), 142
static method), 227 _combined_sharpened_info()
_collect_attrs() (satpy.readers.hdf4_utils.HDF4FileHandler (satpy.composites.RatioSharpenedRGB
method), 252 method), 133
_collect_attrs() (satpy.readers.hdf5_utils.HDF5FileHandler _compare_area_defs() (satpy.scene.Scene static
method), 252 method), 706
_collect_attrs() (satpy.readers.netcdf_utils.NetCDF4FileHandler
_compare_areas() (satpy.scene.Scene method), 706
method), 300 _compare_attr() (satpy.readers.satpy_cf_nc.SatpyCFFileHandler
_collect_cache_var_names() method), 324
(satpy.readers.netcdf_utils.NetCDF4FileHandler _compare_nonarray() (in module satpy.tests.utils), 643
method), 300 _compare_numpy_array() (in module satpy.tests.utils),
_collect_cache_var_names() 643
(satpy.readers.netcdf_utils.NetCDF4FsspecFileHandler
_compare_rc_period_min_count_in_repeat_cycle()
method), 301 (satpy.tests.reader_tests.test_fci_l1c_nc.ModuleTestFCIL1cNcRea
_collect_cache_var_names_h5netcdf() static method), 462
(satpy.readers.netcdf_utils.NetCDF4FsspecFileHandler
_compare_subdict() (in module
method), 301 satpy.tests.reader_tests.test_abi_l2_nc), 431
_collect_cf_dataset() (in module satpy.cf.datasets), _compare_sun_earth_distance()
108 (satpy.tests.reader_tests.test_fci_l1c_nc.ModuleTestFCIL1cNcRea
_collect_global_attrs() static method), 462
(satpy.readers.netcdf_utils.NetCDF4FileHandler _compare_swath_defs() (satpy.scene.Scene static
method), 300 method), 706
_collect_groups_info() _compose_replacement_names() (in module
(satpy.readers.netcdf_utils.NetCDF4FileHandler satpy.readers.netcdf_utils), 302
method), 300 _compute_airmass() (satpy.modifiers._crefl_utils._VIIRSAtmosphereVari
_collect_listed_variables() method), 156
(satpy.readers.netcdf_utils.NetCDF4FileHandler _compute_area_def()
method), 300 (satpy.readers.fci_l2_nc.FciL2NCFileHandler
_collect_segment_position_infos() method), 230
(satpy.readers.yaml_reader.GEOVariableSegmentYAMLReader
_compute_blend_fraction()
method), 383 (satpy.composites.spectral.NDVIHybridGreen
_collect_variable_info() method), 118
(satpy.readers.netcdf_utils.NetCDF4FileHandler _compute_luminance_from_rgb() (in module
method), 300 satpy.enhancements), 148
_collect_variables_info() _compute_mocked_bucket_avg()

748 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(satpy.tests.test_resample.TestBucketAvg static method), 444


method), 626 _convert_numpy_content_to_dataarray()
_compute_mocked_bucket_count() (satpy.tests.reader_tests.test_viirs_sdr.FakeHDF5FileHandler2
(satpy.tests.test_resample.TestBucketCount static method), 565
method), 626 _convert_query_val_to_hashable()
_compute_mocked_bucket_sum() (satpy.writers.DecisionTree static method),
(satpy.tests.test_resample.TestBucketSum 671
method), 627 _convert_to_percent()
_compute_optimal_missing_segment_heights() (satpy.readers.gms.gms5_vissr_l1b.Calibrator
(in module satpy.readers.yaml_reader), 384 method), 179
_compute_positioning_data_for_missing_group() _convert_visir_bound_to_hrv()
(in module satpy.readers.yaml_reader), 384 (satpy.readers.seviri_l1b_native.ImageBoundaries
_compute_proposed_sizes_of_missing_segments_in_group()static method), 344
(in module satpy.readers.yaml_reader), 384 _coord_conv (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
_compute_sun_earth_distance property), 180
(satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler _coord_names_for_resolution()
property), 227 (satpy.readers.viirs_edr.VIIRSJRRFileHandler
_compute_tile_dist_and_bin_info() (in module method), 369
satpy.composites.viirs), 121 _coordinate_datasets()
_concat_datasets() (satpy.composites.GenericCompositor (satpy.readers.satpy_cf_nc.SatpyCFFileHandler
method), 128 method), 324
_concat_orbit_prediction() _coordinates_not_assigned()
(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler(satpy.readers.mviri_l1b_fiduceo_nc._DatasetPreprocessor
static method), 180 method), 295
_construct_area_def() _coords_cache (satpy.readers.yaml_reader.FileYAMLReader
(satpy.readers.eum_l2_bufr.EumetsatL2BufrFileHandler attribute), 379
method), 223 _copy_datasets_and_wishlist() (satpy.scene.Scene
_construct_area_def() method), 706
(satpy.readers.fci_l2_nc.FciL2NCSegmentFileHandler _copy_name_and_data() (satpy.node.CompositorNode
method), 231 method), 688
_contain_arrays() (in module _copy_name_and_data() (satpy.node.Node method),
satpy.dataset.metadata), 142 688
_contain_collections_of_arrays() (in module _copy_name_and_data() (satpy.node.ReaderNode
satpy.dataset.metadata), 142 method), 689
_contain_dicts() (in module satpy.dataset.metadata), _copy_to_existing() (in module
142 satpy.writers.awips_tiled), 655
_contained_sensor_names() (satpy.scene.Scene _correct_cyl_minmax_xy()
method), 706 (satpy.readers.grib.GRIBFileHandler static
_convert_binary_channel_status_to_activation_dict() method), 251
(satpy.readers.aapp_l1b.AVHRRAAPPL1BFile _correct_nutation_precession() (in module
static method), 198 satpy.readers.gms.gms5_vissr_navigation),
_convert_data_content_to_dataarrays() 192
(satpy.tests.reader_tests.test_tropomi_l2.FakeNetCDF4FileHandlerTL2
_correct_proj_params_over_prime_meridian()
method), 550 (satpy.readers.grib.GRIBFileHandler static
_convert_datetime() method), 251
(satpy.readers.grib.GRIBFileHandler static _correct_refl() (in module
method), 251 satpy.modifiers._crefl_utils), 157
_convert_dep_info_to_data_query() (in module _correct_slope() (satpy.readers.virr_l1b.VIRR_L1B
satpy.composites.config_loader), 113 method), 376
_convert_epsg_to_proj() _correct_vis_edges()
(satpy.writers.mitiff.MITIFFWriter method), (satpy.readers.gms.gms5_vissr_l1b.SpaceMasker
662 method), 181
_convert_numpy_content_to_dataarray() _cos_zen_ndarray() (in module
(satpy.tests.reader_tests.test_atms_sdr_hdf5.FakeHDF5_ATMS_SDR_FileHandler
satpy.modifiers.angles), 159

Index 749
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_count_channel_repeat_number() _create_coeffs_array()
(satpy.readers.mirs.MiRSL2ncHandler (satpy.tests.reader_tests.test_agri_l1.FakeHDF5FileHandler2
method), 279 method), 432
_counts2radiance() (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler
_create_colormap_from_dataset() (in module
method), 247 satpy.enhancements), 148
_counts_to_radiance() _create_column_names() (in module
(satpy.readers.mviri_l1b_fiduceo_nc.IRWVCalibrator satpy.readers.gld360_ualf2), 239
method), 293 _create_comp_from_info()
_counts_to_radiance() (satpy.composites.config_loader._CompositeConfigHelper
(satpy.readers.mviri_l1b_fiduceo_nc.VISCalibrator method), 113
method), 294 _create_composite_from_channels()
_create_40km_interpolator() (satpy.composites.ColormapCompositor
(satpy.readers.aapp_l1b.AVHRRAAPPL1BFile method), 125
static method), 198 _create_continuous_variables() (in module
_create_and_populate_dummy_tarfile() (in mod- satpy.tests.reader_tests.test_viirs_edr), 556
ule satpy.tests.test_demo), 612 _create_core_metadata() (in module
_create_aod_dataset() (in module satpy.tests.reader_tests.modis_tests._modis_fixtures),
satpy.tests.reader_tests.test_abi_l2_nc), 431 417
_create_area_def() (satpy.readers.goes_imager_nc.AreaDefEstimator
_create_dask_slice_from_block_line()
method), 245 (satpy.readers.sar_c_safe.AzimuthNoiseReader
_create_area_extent() method), 317
(satpy.readers.smos_l2_wind.SMOSL2WINDFileHandler _create_dask_slices_from_blocks()
method), 354 (satpy.readers.sar_c_safe.AzimuthNoiseReader
_create_bad_lon_lat() (in module method), 317
satpy.tests.reader_tests.test_goci2_l2_nc), _create_dataid_key()
477 (satpy.dataset.data_dict.DatasetDict method),
_create_bad_quality_lines_mask() (in module 136
satpy.readers.seviri_base), 332 _create_dataset_ids()
_create_cached_iter() (satpy.readers.grib.GRIBFileHandler method),
(satpy.multiscene._multiscene._SceneGenerator 251
method), 176 _create_debug_array() (in module
_create_calibrators() satpy.writers.awips_tiled), 655
(satpy.readers.sar_c_safe.SAFESARReader _create_denoisers()
method), 319 (satpy.readers.sar_c_safe.SAFESARReader
_create_channel_data() method), 319
(satpy.tests.reader_tests.test_agri_l1.FakeHDF5FileHandler2
_create_expected() (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.Test
method), 432 static method), 450
_create_channel_data() _create_fake_composite_config() (in module
(satpy.tests.reader_tests.test_ghi_l1.FakeHDF5FileHandler2satpy.tests.test_composites), 601
method), 472 _create_fake_dataset() (in module
_create_channels() (in module satpy.tests.reader_tests.test_viirs_edr), 556
satpy.tests.reader_tests.test_insat3d_img_l1b_h5),_create_fake_dem_file() (in module
495 satpy.tests.modifier_tests.test_crefl), 404
_create_cmip_dataset() (in module _create_fake_file() (in module
satpy.tests.reader_tests.test_abi_l2_nc), 431 satpy.tests.reader_tests.test_viirs_edr), 556
_create_coarest_finest_data_array() (in module _create_fake_file_handler() (in module
satpy.tests.scene_tests.test_data_access), 572 satpy.tests.reader_tests.test_ahi_hsd), 436
_create_coarsest_finest_area_def() (in module _create_fake_importlib_files() (in module
satpy.tests.scene_tests.test_data_access), 572 satpy.tests.test_config), 603
_create_coarsest_finest_swath_def() (in module _create_fake_iter_entry_points() (in module
satpy.tests.scene_tests.test_data_access), 572 satpy.tests.test_config), 603
_create_coeff_array() _create_fake_rad_dataarray() (in module
(satpy.tests.reader_tests.test_ghi_l1.FakeHDF5FileHandler2satpy.tests.reader_tests.test_abi_l1b), 429
method), 473 _create_fake_rad_dataset() (in module

750 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_abi_l1b), 429 _create_one_res_gaasp_dataset() (in module


_create_fake_reader() (in module satpy.tests.reader_tests.test_amsr2_l2_gaasp),
satpy.tests.reader_tests.test_mirs), 506 442
_create_file_handler() _create_optional_subtrees()
(satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGetDataset
(satpy.dependency_tree.DependencyTree
static method), 450 method), 685
_create_filenames_from_resolutions() (in mod- _create_overlays_dict() (in module satpy.writers),
ule satpy.tests.reader_tests.test_agri_l1), 433 675
_create_filenames_from_resolutions() (in mod- _create_prerequisite_subtrees()
ule satpy.tests.reader_tests.test_ghi_l1), 473 (satpy.dependency_tree.DependencyTree
_create_full_set() (in module method), 685
satpy.demo.seviri_hrit), 145 _create_reader_for_data() (in module
_create_grid_mapping() (in module satpy.cf.area), satpy.tests.reader_tests.test_abi_l1b), 429
104 _create_reader_for_fake_data() (in module
_create_gridded_gaasp_dataset() (in module satpy.tests.reader_tests.test_abi_l2_nc), 431
satpy.tests.reader_tests.test_amsr2_l2_gaasp), _create_reader_for_resolutions()
442 (satpy.tests.reader_tests.test_agri_l1.Test_HDF_AGRI_L1_cal
_create_header_metadata() (in module method), 433
satpy.tests.reader_tests.modis_tests._modis_fixtures),
_create_reader_for_resolutions()
417 (satpy.tests.reader_tests.test_ghi_l1.Test_HDF_GHI_L1_cal
_create_id_dict_from_any_key() (in module method), 473
satpy.dataset.dataid), 141 _create_reader_for_resolutions()
_create_id_keys_from_dict() (satpy.tests.reader_tests.test_oceancolorcci_l3_nc.TestOCCCIRea
(satpy.dataset.data_dict.DatasetDict method), method), 521
136 _create_reader_instances() (satpy.scene.Scene
_create_implicit_dependency_subtree() method), 706
(satpy.dependency_tree.DependencyTree _create_required_subtrees()
method), 685 (satpy.dependency_tree.DependencyTree
_create_lonlat() (in module method), 685
satpy.tests.reader_tests.test_goci2_l2_nc), _create_scan_dimensions()
477 (satpy.tests.reader_tests.test_mws_l1b_nc.MWSL1BFakeFileWrite
_create_lonlats() (in module static method), 510
satpy.tests.reader_tests.test_insat3d_img_l1b_h5),_create_seadas_chlor_a_hdf4_file() (in module
495 satpy.tests.reader_tests.test_seadas_l2), 533
_create_lst_variables() (in module _create_seadas_chlor_a_netcdf_file() (in mod-
satpy.tests.reader_tests.test_viirs_edr), 557 ule satpy.tests.reader_tests.test_seadas_l2),
_create_masked_dataarray_like() 533
(satpy.composites.ColormapCompositor _create_struct_metadata() (in module
static method), 125 satpy.tests.reader_tests.modis_tests._modis_fixtures),
_create_mcmip_dataset() (in module 417
satpy.tests.reader_tests.test_abi_l2_nc), 431 _create_struct_metadata_cmg() (in module
_create_measurement_handlers() satpy.tests.reader_tests.modis_tests._modis_fixtures),
(satpy.readers.sar_c_safe.SAFESARReader 417
method), 319 _create_structure()
_create_mocked_basic_fh() (in module (satpy.tests.reader_tests.test_eps_l1b.BaseTestCaseEPSL1B
satpy.tests.test_yaml_reader), 641 method), 455
_create_mocked_fh_and_areadef() (in module _create_subtree_for_key()
satpy.tests.test_yaml_reader), 642 (satpy.dependency_tree.DependencyTree
_create_modified_dataarray() method), 685
(satpy.modifiers.spectral.NIRReflectance _create_subtree_from_compositors()
method), 170 (satpy.dependency_tree.DependencyTree
_create_new_geo_file_handlers() method), 685
(satpy.readers.viirs_sdr.VIIRSSDRReader _create_subtree_from_reader()
method), 374 (satpy.dependency_tree.DependencyTree

Index 751
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 685 (satpy.readers.viirs_l1b.VIIRSL1BFileHandler


_create_surf_refl_variables() (in module static method), 372
satpy.tests.reader_tests.test_viirs_edr), 557 _datetime_parser_json() (in module
_create_surface_reflectance_file() (in module satpy.cf.decoding), 110
satpy.tests.reader_tests.test_viirs_edr), 557 _decode_cf() (satpy.readers.mviri_l1b_fiduceo_nc._DatasetPreprocessor
_create_tarfile_with_testdata() method), 295
(satpy.tests.reader_tests.test_ghrsst_l2.TestGHRSSTL2Reader
_decode_clm_test_data()
method), 474 (satpy.readers.fci_l2_nc.FciL2NCFileHandler
_create_test_area() (in module static method), 231
satpy.tests.multiscene_tests.test_utils), 410 _decode_dict_type_attrs() (in module
_create_test_data() satpy.cf.decoding), 110
(satpy.tests.scene_tests.test_resampling.TestSceneAggregation
_decode_flag_meanings()
static method), 577 (satpy.readers.viirs_edr.VIIRSJRRFileHandler
_create_test_data() static method), 369
(satpy.tests.test_modifiers.TestPSPRayleighReflectance
_decode_time() (satpy.readers.mviri_l1b_fiduceo_nc._DatasetPreprocess
method), 616 method), 295
_create_test_dataset() (in module _decode_timestamps() (in module satpy.cf.decoding),
satpy.tests.multiscene_tests.test_utils), 410 110
_create_test_int8_dataset() (in module _delay_netcdf_creation()
satpy.tests.multiscene_tests.test_utils), 410 (satpy.writers.awips_tiled.AWIPSTiledWriter
_create_test_netcdf() (in module method), 649
satpy.tests.reader_tests.test_satpy_cf_nc), _denoise() (satpy.readers.goes_imager_nc.GOESCoefficientReader
530 method), 245
_create_test_scenes() (in module _determine_mode() (in module satpy.writers), 675
satpy.tests.multiscene_tests.test_utils), 411 _dict_equal() (in module satpy.dataset.metadata), 143
_create_two_res_gaasp_dataset() (in module _dict_keys_equal() (in module
satpy.tests.reader_tests.test_amsr2_l2_gaasp), satpy.dataset.metadata), 143
442 _dictify() (in module satpy.readers.sar_c_safe), 321
_create_veg_index_variables() (in module _diff_sat_pos_datetime() (in module
satpy.tests.reader_tests.test_viirs_edr), 557 satpy.tests.modifier_tests.test_angles), 403
_create_yamlbased_plugin() (in module _dim_index_with_default() (in module
satpy.tests.test_config), 603 satpy.modifiers.angles), 159
_csalbr() (in module satpy.modifiers._crefl_utils), 157 _disable_jit() (in module
_custom_fromfile() (in module satpy.tests.reader_tests.gms.test_gms5_vissr_l1b),
satpy.tests.reader_tests.test_ahi_hsd), 436 414
_data (satpy.readers.hrpt.HRPTFile property), 259 _disable_jit() (in module
_data (satpy.readers.sar_c_safe.SAFEGRD property), satpy.tests.reader_tests.gms.test_gms5_vissr_navigation),
318 416
_data_array_none_sensor() (in module _distribute_frame_compute()
satpy.tests.scene_tests.test_load), 576 (satpy.multiscene._multiscene.MultiScene
_data_arrays_from_params() (in module method), 172
satpy.tests.test_utils), 630 _distribute_save_datasets()
_data_file_component_type (satpy.multiscene._multiscene.MultiScene
(satpy.aux_download.DataDownloadMixin method), 172
property), 682 _do_interp() (satpy.readers.msi_safe.SAFEMSITileMDXML
_data_units() (satpy.writers.awips_tiled.AWIPSNetCDFTemplate static method), 287
method), 648 _do_interpolate() (satpy.readers.olci_nc.NCOLCILowResData
_dataid_attrs_equal() method), 308
(satpy.readers.satpy_cf_nc.SatpyCFFileHandler _download_gcs_files() (in module
method), 324 satpy.demo._google_cloud_platform), 144
_dataset_iterator() _download_luts() (satpy.readers.ahi_l1b_gridded_bin.AHIGriddedFileH
(satpy.tests.reader_tests.test_viirs_compact.TestCompact static method), 207
method), 555 _drop_attrs() (in module satpy.cf.attrs), 105
_dataset_name_to_var_path() _drop_coords() (satpy.readers.atms_l1b_nc.AtmsL1bNCFileHandler

752 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

static method), 214 _epoch_year_from_sgs_time() (in module


_drop_coords() (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler satpy.readers.goes_imager_hrit), 241
static method), 266 _erads2bt() (satpy.readers.seviri_base.SEVIRICalibrationAlgorithm
_drop_coords() (satpy.readers.mws_l1b.MWSL1BFile method), 331
static method), 298 _existing_datasets()
_drop_id_attrs() (satpy.multiscene._multiscene._GroupAliasGenerator
(satpy.readers.satpy_cf_nc.SatpyCFFileHandler
method), 175 method), 324
_duplicate_dataset_with_different_id() _exp_data_array() (satpy.tests.reader_tests.test_seviri_l1b_native.TestNa
(satpy.multiscene._multiscene._GroupAliasGenerator static method), 542
method), 175 _expand_reduce() (satpy.resample.NativeResampler
_duplicate_dataset_with_group_alias() class method), 703
(satpy.multiscene._multiscene._GroupAliasGenerator
_expected_area() (in module
method), 175 satpy.tests.reader_tests.modis_tests.test_modis_l3),
_dynamic_dataset_info() 422
(satpy.readers.clavrx.CLAVRXNetCDFFileHandler _extract_and_mask_category_dataset()
method), 217 (satpy.readers.modis_l2.ModisL2HDFFileHandler
_dynamic_datasets() method), 283
(satpy.readers.clavrx.CLAVRXHDF4FileHandler _extract_angle_data_arrays()
method), 216 (satpy.modifiers._crefl.ReflectanceCorrector
_dynamic_datasets() method), 153
(satpy.readers.satpy_cf_nc.SatpyCFFileHandler _extract_byte_mask() (in module
method), 324 satpy.readers.modis_l2), 284
_dynamic_variables_from_file() _extract_data_to_pad()
(satpy.readers.mcd12q1.MCD12Q1HDFFileHandler (satpy.readers.seviri_l1b_native.Padder
method), 275 method), 346
_dynamic_variables_from_file() _extract_factors() (in module
(satpy.readers.modis_l3.ModisL3GriddedHDFFileHandler satpy.writers.awips_tiled), 655
method), 284 _extract_segment_location_dicts()
_dynamic_variables_from_file() (satpy.readers.yaml_reader.GEOVariableSegmentYAMLReader
(satpy.readers.viirs_edr.VIIRSJRRFileHandler method), 383
method), 369 _extract_two_byte_mask() (in module
_early_exit() (in module satpy.readers), 387 satpy.readers.modis_l2), 284
_encode() (satpy.cf.attrs.AttributeEncoder method), 105 _fake_c07_data() (in module
_encode_numpy_array() (in module satpy.cf.attrs), 105 satpy.tests.reader_tests.test_abi_l1b), 429
_encode_object() (in module satpy.cf.attrs), 105 _fake_data() (satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeM
_encode_python_objects() (in module satpy.cf.attrs), static method), 542
105 _fake_get_enhanced_image() (in module
_encode_to_cf() (in module satpy.cf.attrs), 105 satpy.tests.multiscene_tests.test_utils), 411
_enhance2dataset() (in module _fake_header() (satpy.tests.reader_tests.test_seviri_l1b_native.TestNative
satpy.tests.test_composites), 601 static method), 542
_enhance_and_split_rgbs() _fake_hsd_handler() (in module
(satpy.writers.awips_tiled.AWIPSTiledWriter satpy.tests.reader_tests.test_ahi_hsd), 436
method), 649 _fake_ir_attrs() (in module
_ensure_crs_extents_in_meters() satpy.tests.reader_tests.test_ami_l1b), 440
(satpy.readers.nwcsaf_nc.NcNWCSAF static _fake_reader() (in module
method), 304 satpy.tests.reader_tests.test_ami_l1b), 440
_ensure_dataarray() (in module _fake_resample_dataset()
satpy.readers.fci_l1c_nc), 229 (satpy.tests.scene_tests.test_resampling.TestSceneResampling
_entry_point_module() (in module satpy._config), method), 577
679 _fake_resample_dataset_force_20x20()
_epoch (satpy.writers.ninjogeotiff.NinJoTagGenerator (satpy.tests.scene_tests.test_resampling.TestSceneResampling
attribute), 666 method), 577
_epoch_doy_offset_from_sgs_time() (in module _fake_vis_attrs() (in module
satpy.readers.goes_imager_hrit), 241 satpy.tests.reader_tests.test_ami_l1b), 440

Index 753
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_fetch_variable() (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler
_fields (satpy.readers.gms.gms5_vissr_navigation.ImageOffset
method), 266 attribute), 184
_field_defaults (satpy.readers.gms.gms5_vissr_navigation.Attitude
_fields (satpy.readers.gms.gms5_vissr_navigation.Orbit
attribute), 182 attribute), 185
_field_defaults (satpy.readers.gms.gms5_vissr_navigation.EarthEllipsoid
_fields (satpy.readers.gms.gms5_vissr_navigation.OrbitAngles
attribute), 183 attribute), 185
_field_defaults (satpy.readers.gms.gms5_vissr_navigation.ImageNavigationParameters
_fields (satpy.readers.gms.gms5_vissr_navigation.Pixel
attribute), 184 attribute), 186
_field_defaults (satpy.readers.gms.gms5_vissr_navigation.ImageOffset
_fields (satpy.readers.gms.gms5_vissr_navigation.PixelNavigationParame
attribute), 184 attribute), 187
_field_defaults (satpy.readers.gms.gms5_vissr_navigation.Orbit
_fields (satpy.readers.gms.gms5_vissr_navigation.PredictedNavigationPa
attribute), 185 attribute), 187
_field_defaults (satpy.readers.gms.gms5_vissr_navigation.OrbitAngles
_fields (satpy.readers.gms.gms5_vissr_navigation.ProjectionParameters
attribute), 185 attribute), 188
_field_defaults (satpy.readers.gms.gms5_vissr_navigation.Pixel
_fields (satpy.readers.gms.gms5_vissr_navigation.Satpos
attribute), 186 attribute), 188
_field_defaults (satpy.readers.gms.gms5_vissr_navigation.PixelNavigationParameters
_fields (satpy.readers.gms.gms5_vissr_navigation.ScanningAngles
attribute), 187 attribute), 189
_field_defaults (satpy.readers.gms.gms5_vissr_navigation.PredictedNavigationParameters
_fields (satpy.readers.gms.gms5_vissr_navigation.ScanningParameters
attribute), 187 attribute), 190
_field_defaults (satpy.readers.gms.gms5_vissr_navigation.ProjectionParameters
_fields (satpy.readers.gms.gms5_vissr_navigation.StaticNavigationParam
attribute), 188 attribute), 190
_field_defaults (satpy.readers.gms.gms5_vissr_navigation.Satpos
_fields (satpy.readers.gms.gms5_vissr_navigation.Vector2D
attribute), 188 attribute), 191
_field_defaults (satpy.readers.gms.gms5_vissr_navigation.ScanningAngles
_fields (satpy.readers.gms.gms5_vissr_navigation.Vector3D
attribute), 189 attribute), 191
_field_defaults (satpy.readers.gms.gms5_vissr_navigation.ScanningParameters
_fields (satpy.readers.gms.gms5_vissr_navigation._AttitudePrediction
attribute), 189 attribute), 191
_field_defaults (satpy.readers.gms.gms5_vissr_navigation.StaticNavigationParameters
_fields (satpy.readers.gms.gms5_vissr_navigation._OrbitPrediction
attribute), 190 attribute), 192
_field_defaults (satpy.readers.gms.gms5_vissr_navigation.Vector2D
_fields (satpy.readers.pmw_channels_definitions.FrequencyDoubleSideBa
attribute), 190 attribute), 313
_field_defaults (satpy.readers.gms.gms5_vissr_navigation.Vector3D
_fields (satpy.readers.pmw_channels_definitions.FrequencyQuadrupleSid
attribute), 191 attribute), 314
_field_defaults (satpy.readers.gms.gms5_vissr_navigation._AttitudePrediction
_fields (satpy.readers.pmw_channels_definitions.FrequencyRangeBase
attribute), 191 attribute), 315
_field_defaults (satpy.readers.gms.gms5_vissr_navigation._OrbitPrediction
_fields (satpy.writers.awips_tiled.TileInfo attribute),
attribute), 192 653
_field_defaults (satpy.readers.pmw_channels_definitions.FrequencyDoubleSideBandBase
_fields (satpy.writers.awips_tiled.XYFactors attribute),
attribute), 313 654
_field_defaults (satpy.readers.pmw_channels_definitions.FrequencyQuadrupleSideBandBase
_file_handlers_available_datasets()
attribute), 314 (satpy.readers.yaml_reader.FileYAMLReader
_field_defaults (satpy.readers.pmw_channels_definitions.FrequencyRangeBase
method), 379
attribute), 315 _filenames_abi_glm (satpy.tests.test_readers.TestGroupFiles
_field_defaults (satpy.writers.awips_tiled.TileInfo attribute), 621
attribute), 653 _filenames_to_fsfile() (in module satpy.utils), 718
_field_defaults (satpy.writers.awips_tiled.XYFactors _fill() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.VissrFileWriter
attribute), 654 method), 414
_fields (satpy.readers.gms.gms5_vissr_navigation.Attitude_fill_contents_with_default_data()
attribute), 182 (satpy.tests.reader_tests.test_viirs_l1b.FakeNetCDF4FileHandlerD
_fields (satpy.readers.gms.gms5_vissr_navigation.EarthEllipsoid method), 562
attribute), 183 _fill_contents_with_default_data()
_fields (satpy.readers.gms.gms5_vissr_navigation.ImageNavigationParameters
(satpy.tests.reader_tests.test_viirs_l2.FakeNetCDF4FileHandlerV
attribute), 184 method), 564

754 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_fill_dask_pieces() _find_match() (satpy.writers.DecisionTree method),


(satpy.readers.sar_c_safe.AzimuthNoiseReader 671
static method), 317 _find_match_if_known() (satpy.writers.DecisionTree
_fill_data() (satpy.readers.amsr2_l2_gaasp.GAASPFileHandler method), 671
method), 211 _find_matching_ids_in_readers()
_fill_data() (satpy.readers.mirs.MiRSL2ncHandler (satpy.dependency_tree.DependencyTree
method), 279 method), 685
_fill_name (satpy.readers.omps_edr.EDREOSFileHandler_find_missing_segments() (in module
attribute), 310 satpy.readers.yaml_reader), 384
_fill_name (satpy.readers.omps_edr.EDRFileHandler _find_modifiers_key() (satpy.dataset.dataid.DataID
attribute), 310 method), 138
_fill_saturated() (satpy.readers.modis_l1b.HDFEOSBandReader
_find_reader_node()
method), 281 (satpy.dependency_tree.DependencyTree
_fill_sector_info() method), 686
(satpy.writers.awips_tiled.AWIPSTiledWriter _find_registerable_files_compositors() (in
method), 649 module satpy.aux_download), 682
_fill_swath_edges() (in module _find_registerable_files_readers() (in module
satpy.readers.msi_safe), 287 satpy.aux_download), 682
_fill_units_and_standard_name() _find_registerable_files_writers() (in module
(satpy.writers.awips_tiled.AWIPSNetCDFTemplate satpy.aux_download), 683
static method), 648 _first_good_nav() (satpy.readers.geocat.GEOCATFileHandler
_fill_value (satpy.readers.gms.gms5_vissr_l1b.SpaceMasker method), 236
attribute), 181 _fix_duplicate_dimensions()
_fill_weights_for_invalid_dataset_pixels() (satpy.readers.mviri_l1b_fiduceo_nc._DatasetPreprocessor
(in module satpy.multiscene._blend_funcs), 171 method), 295
_filter_by_valid_min_max() _fix_units() (satpy.writers.ninjogeotiff.NinJoGeoTIFFWriter
(satpy.readers.seadas_l2._SEADASL2Base method), 664
method), 326 _flatten_multi_channel_keys()
_filter_dataset_keys_outside_pressure_levels() (satpy.readers.utils._CalibrationCoefficientParser
(satpy.readers.nucaps.NUCAPSReader method), 358
method), 303 _flip_dataset_data_and_area_extents() (in mod-
_filter_datasets() (in module satpy.tests.utils), 643 ule satpy.readers.yaml_reader), 384
_filter_groups() (in module satpy.readers), 387 _float() (satpy.readers.goes_imager_nc.GOESCoefficientReader
_filter_loaded_datasets_from_trunk_nodes() method), 245
(satpy.scene.Scene method), 706 _form_datetimes() (in module satpy.readers.iasi_l2),
_filter_time_values() (in module 263
satpy.dataset.metadata), 143 _format_decoration()
_filter_variable() (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler (satpy.multiscene._multiscene.MultiScene
method), 266 static method), 172
_find_and_run_interpolation() (in module _format_prerequisites_attrs() (in module
satpy.readers.hdfeos_base), 254 satpy.cf.attrs), 105
_find_blocks_covering_line() _fy3_helper() (satpy.tests.reader_tests.test_virr_l1b.TestVIRRL1BReader
(satpy.readers.sar_c_safe.AzimuthNoiseReader method), 569
method), 317 _gain_factor() (satpy.composites.viirs.NCCZinke
_find_coefficient_index() static method), 120
(satpy.modifiers._crefl_utils._Coefficients _gather_all_areas() (satpy.scene.Scene method),
method), 155 706
_find_compositor() (satpy.dependency_tree.DependencyTree _gather_ancillary_variables_ids()
method), 685 (satpy.readers.yaml_reader.FileYAMLReader
_find_enclosing_index() (in module method), 379
satpy.readers.gms.gms5_vissr_navigation), _generalize_value_for_comparison() (in module
192 satpy.dataset.dataid), 141
_find_input_nc() (satpy.readers.clavrx._CLAVRxHelper_generate_angle_data() (in module
static method), 217 satpy.tests.reader_tests.modis_tests._modis_fixtures),

Index 755
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

417 (satpy.readers.hdfeos_base.HDFEOSGeoReader
_generate_cmap_test_data() (in module static method), 254
satpy.tests.enhancement_tests.test_enhancements),_geo_resolution_for_l2_l1b()
401 (satpy.readers.hdfeos_base.HDFEOSGeoReader
_generate_composite() (satpy.scene.Scene method), static method), 254
706 _get_1km_data() (in module
_generate_composites_from_loaded_datasets() satpy.tests.reader_tests.test_mersi_l1b), 504
(satpy.scene.Scene method), 706 _get_1km_data() (satpy.tests.reader_tests.test_agri_l1.FakeHDF5FileHan
_generate_composites_nodes_from_loaded_datasets() method), 432
(satpy.scene.Scene method), 706 _get_250m_data() (in module
_generate_dynamic_metadata() satpy.tests.reader_tests.test_mersi_l1b), 504
(satpy.readers.viirs_edr.VIIRSJRRFileHandler _get_250m_data() (satpy.tests.reader_tests.test_ghi_l1.FakeHDF5FileHa
method), 369 method), 473
_generate_file_key() _get_250m_ll_data() (in module
(satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandlersatpy.tests.reader_tests.test_mersi_l1b), 504
method), 365 _get_2km_data() (satpy.tests.reader_tests.test_agri_l1.FakeHDF5FileHan
_generate_filename() (in module method), 432
satpy.aux_download), 683 _get_2km_data() (satpy.tests.reader_tests.test_ghi_l1.FakeHDF5FileHan
_generate_filenames() (in module method), 473
satpy.demo.seviri_hrit), 145 _get_4km_data() (satpy.tests.reader_tests.test_agri_l1.FakeHDF5FileHan
_generate_intermediate_filename() method), 432
(satpy.writers.mitiff.MITIFFWriter method), _get_500m_data() (in module
662 satpy.tests.reader_tests.test_mersi_l1b), 504
_generate_lonlat_data() (in module _get_500m_data() (satpy.tests.reader_tests.test_agri_l1.FakeHDF5FileHa
satpy.tests.reader_tests.modis_tests._modis_fixtures), method), 432
417 _get_500m_data() (satpy.tests.reader_tests.test_ghi_l1.FakeHDF5FileHa
_generate_random_string() (in module method), 473
satpy.tests.test_readers), 624 _get_abc_helper() (in module
_generate_scene_func() satpy.readers.gms.gms5_vissr_navigation),
(satpy.multiscene._multiscene.MultiScene 192
method), 172 _get_acq_time() (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHa
_generate_tile_info() method), 180
(satpy.writers.awips_tiled.LetteredTileGenerator _get_acq_time() (satpy.readers.hrit_jma.HRITJMAFileHandler
method), 651 method), 258
_generate_tile_info() _get_acq_time() (satpy.tests.reader_tests.test_ahi_hrit.TestHRITJMAFile
(satpy.writers.awips_tiled.NumberedTileGenerator method), 434
method), 653 _get_acq_time_hrv()
_generate_visible_data() (in module (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
satpy.tests.reader_tests.modis_tests._modis_fixtures), method), 345
417 _get_acq_time_hrv()
_generate_visible_uncertainty_data() (in mod- (satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler
ule satpy.tests.reader_tests.modis_tests._modis_fixtures), method), 350
417 _get_acq_time_uncached()
_geo_chunks_from_data_arr() (in module (satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriBase
satpy.modifiers.angles), 159 method), 291
_geo_dask_to_data_array() (in module _get_acq_time_visir()
satpy.modifiers.angles), 159 (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
_geo_dataset_groups() method), 345
(satpy.readers.viirs_sdr.VIIRSSDRReader _get_acq_time_visir()
method), 374 (satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler
_geo_prefix_for_file_type method), 350
(satpy.tests.reader_tests.test_mersi_l1b.FakeHDF5FileHandler2
_get_active_channels()
property), 500 (satpy.readers.aapp_l1b.AVHRRAAPPL1BFile
_geo_resolution_for_l1b() method), 198

756 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_actual_shape() _get_animation_info()
(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler(satpy.multiscene._multiscene.MultiScene
method), 180 method), 172
_get_aggr_path() (satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandler
_get_area_def() (satpy.readers.ahi_hsd.AHIHSDFileHandler
method), 365 method), 205
_get_all_ambiguities_data() _get_area_def() (satpy.readers.ahi_l2_nc.HIML2NCFileHandler
(satpy.tests.reader_tests.test_hy2_scat_l2b_h5.FakeHDF5FileHandler2
method), 209
method), 490 _get_area_def() (satpy.readers.hrit_jma.HRITJMAFileHandler
_get_all_interpolated_angles_uncached() method), 258
(satpy.readers.aapp_l1b.AVHRRAAPPL1BFile _get_area_def() (satpy.readers.hsaf_grib.HSAFFileHandler
method), 198 method), 260
_get_all_interpolated_coordinates_uncached() _get_area_def() (satpy.readers.hsaf_h5.HSAFFileHandler
(satpy.readers.aapp_l1b.AVHRRAAPPL1BFile method), 261
method), 199 _get_area_def_uniform_sampling()
_get_alpha() (in module satpy.composites), 135 (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
_get_alpha_bands() (satpy.composites.MaskingCompositor method), 180
method), 131 _get_area_def_uniform_sampling()
_get_alternative_channel_name() (in module (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler
satpy.readers.gms.gms5_vissr_l1b), 182 method), 247
_get_and_check_array() (in module _get_area_description()
satpy.tests.reader_tests.test_abi_l1b), 429 (satpy.readers.goes_imager_nc.AreaDefEstimator
_get_and_check_reader_writer_configs() method), 245
(satpy.tests.test_config.TestPluginsConfigs _get_area_extent() (satpy.readers.fci_l2_nc.FciL2NCFileHandler
static method), 603 method), 231
_get_and_sharpen_rgb_data_arrays_and_meta() _get_area_extent() (satpy.readers.mcd12q1.MCD12Q1HDFFileHandle
(satpy.composites.RatioSharpenedRGB method), 275
method), 133 _get_area_extent() (satpy.readers.modis_l3.ModisL3GriddedHDFFileH
_get_angle() (satpy.readers.avhrr_l1b_gaclac.GACLACFile method), 284
method), 215 _get_area_extent() (satpy.readers.seviri_l1b_hrit.HRITMSGFileHandle
_get_angle_dataarray() method), 339
(satpy.readers.eps_l1b.EPSAVHRRFile _get_area_extent_at_max_scan_angle()
method), 221 (satpy.readers.goes_imager_nc.AreaDefEstimator
_get_angle_test_data() (in module method), 245
satpy.tests.modifier_tests.test_angles), 403 _get_area_info() (satpy.readers.grib.GRIBFileHandler
_get_angle_test_data_odd_chunks() (in module method), 251
satpy.tests.modifier_tests.test_angles), 403 _get_area_resolution() (in module satpy.scene), 717
_get_angle_test_data_odd_chunks2() (in module _get_areadef_fixedgrid()
satpy.tests.modifier_tests.test_angles), 403 (satpy.readers.abi_base.NC_ABI_BASE
_get_angle_test_data_rgb() (in module method), 200
satpy.tests.modifier_tests.test_angles), 403 _get_areadef_latlon()
_get_angle_test_data_rgb_nodims() (in module (satpy.readers.abi_base.NC_ABI_BASE
satpy.tests.modifier_tests.test_angles), 403 method), 200
_get_angles_prereqs_and_opts() _get_array() (in module
(satpy.tests.test_modifiers.TestPSPRayleighReflectance satpy.readers.seviri_l1b_native), 347
method), 616 _get_array_pieces_for_current_line()
_get_angles_uncached() (satpy.readers.sar_c_safe.AzimuthNoiseReader
(satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriBase method), 317
method), 291 _get_assert_attrs()
_get_angles_variable_info() (in module (satpy.tests.reader_tests.test_fci_l1c_nc.ModuleTestFCIL1cNcRea
satpy.tests.reader_tests.modis_tests._modis_fixtures), static method), 462
417 _get_assert_erased_attrs()
_get_animation_frames() (satpy.tests.reader_tests.test_fci_l1c_nc.ModuleTestFCIL1cNcRea
(satpy.multiscene._multiscene.MultiScene static method), 462
method), 172 _get_assert_load() (satpy.tests.reader_tests.test_fci_l1c_nc.ModuleTest

Index 757
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 462 _get_calib_coefs() (satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriB


_get_atms_channel_index() method), 291
(satpy.readers.atms_sdr_hdf5.ATMS_SDR_FileHandler _get_calib_coefs() (satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriF
method), 215 method), 292
_get_attitude_prediction() _get_calib_coefs() (satpy.readers.seviri_l1b_hrit.HRITMSGFileHandle
(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandlermethod), 339
method), 180 _get_calib_coefs() (satpy.readers.seviri_l1b_native.NativeMSGFileHan
_get_attr() (satpy.readers.netcdf_utils.NetCDF4FileHandler method), 345
method), 300 _get_calib_coefs() (satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler
_get_attr() (satpy.readers.netcdf_utils.NetCDF4FsspecFileHandlermethod), 350
method), 301 _get_calibrated_dataarray()
_get_attr_value() (satpy.readers.netcdf_utils.NetCDF4FileHandler (satpy.readers.eps_l1b.EPSAVHRRFile
method), 300 method), 221
_get_attributes() (satpy.readers.eum_l2_grib.EUML2GribFileHandler
_get_calibration() (in module
method), 224 satpy.tests.reader_tests.test_mersi_l1b), 504
_get_attrs() (in module _get_calibration_handler()
satpy.tests.modifier_tests.test_parallax), 406 (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestSeviriCali
_get_aux_data_lut_vector() method), 536
(satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler _get_calibration_name() (in module
method), 227 satpy.readers.sar_c_safe), 321
_get_aux_data_name_from_dsname() (in module _get_calibration_params()
satpy.readers.fci_l1c_nc), 229 (satpy.readers.goes_imager_hrit.HRITGOESFileHandler
_get_aux_data_name_from_dsname() (in module method), 241
satpy.readers.mws_l1b), 299 _get_calibration_table()
_get_average_elevation() (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
(satpy.modifiers._crefl.ReflectanceCorrector method), 180
method), 153 _get_calibration_uncached()
_get_avhrr_tiepoints() (satpy.readers.sar_c_safe.Calibrator method),
(satpy.readers.hrpt.HRPTFile method), 259 317
_get_backend_versions() (in module _get_calibration_vector()
satpy.writers.cf_writer), 659 (satpy.readers.sar_c_safe.Calibrator method),
_get_band_index() (satpy.readers.modis_l1b.HDFEOSBandReader317
method), 282 _get_cf_grid_mapping_var()
_get_band_names() (in module satpy.composites), 135 (satpy.readers.scmi.SCMIFileHandler method),
_get_band_radcal() (satpy.readers.oli_tirs_l1_tif.OLITIRSMDReader 325
method), 309 _get_ch3_mask_or_true()
_get_band_tircal() (satpy.readers.oli_tirs_l1_tif.OLITIRSMDReader (satpy.readers.hrpt.HRPTFile method), 259
method), 309 _get_channel() (satpy.readers.avhrr_l1b_gaclac.GACLACFile
_get_band_variable_name_and_index() method), 215
(satpy.readers.modis_l1b.HDFEOSBandReader _get_channel() (satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriBase
method), 282 method), 291
_get_band_viscal() (satpy.readers.oli_tirs_l1_tif.OLITIRSMDReader
_get_channel_1_counts()
method), 309 (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetUncalib
_get_basic_variable_info() (in module method), 446
satpy.tests.reader_tests.modis_tests._modis_fixtures),
_get_channel_1_reflectance()
417 (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetCalibrat
_get_bt_dataset() (satpy.readers.mersi_l1b.MERSIL1B method), 446
method), 277 _get_channel_3a_counts()
_get_cache_dir_from_config() (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTChannel3
(satpy.modifiers.angles.ZarrCacheHelper method), 445
static method), 159 _get_channel_3a_reflectance()
_get_cache_filename_and_url() (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTChannel3
(satpy.composites.StaticImageCompositor method), 445
method), 135 _get_channel_3b_bt()

758 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTChannel3
_get_coefs_set() (satpy.readers.utils._CalibrationCoefficientParser
method), 445 method), 358
_get_channel_4_bt() _get_compositor_loader_from_config()
(satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetCalibratedBT
(satpy.composites.config_loader._CompositeConfigHelper
method), 446 static method), 113
_get_channel_binary_status_from_header() _get_compression() (in module satpy.readers), 387
(satpy.readers.aapp_l1b.AVHRRAAPPL1BFile _get_compression_params() (in module
method), 199 satpy.tests.writer_tests.test_cf ), 582
_get_channel_data() (satpy.readers.hrpt.HRPTFile _get_coordinates_for_dataset_key()
method), 259 (satpy.readers.viirs_sdr.VIIRSSDRReader
_get_channel_data() method), 374
(satpy.readers.mwr_l1b.AWS_EPS_Sterna_BaseFileHandler
_get_coordinates_for_dataset_key()
method), 296 (satpy.readers.yaml_reader.FileYAMLReader
_get_channel_index() (in module satpy.readers.hrpt), method), 379
260 _get_coordinates_for_dataset_keys()
_get_channel_name_from_dsname() (in module (satpy.readers.yaml_reader.FileYAMLReader
satpy.readers.fci_l1c_nc), 229 method), 379
_get_channel_type() _get_coordinates_in_degrees()
(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler(satpy.readers.aapp_l1b.AVHRRAAPPL1BFile
static method), 180 method), 199
_get_chunk_pixel_size() (in module satpy.utils), 718 _get_coordinates_in_degrees()
_get_client() (satpy.multiscene._multiscene.MultiScene (satpy.readers.aapp_mhs_amsub_l1c.MHS_AMSUB_AAPPL1CFi
method), 172 method), 200
_get_closest_interval() _get_coordinates_list() (in module
(satpy.readers.seviri_base.OrbitPolynomialFinder satpy.cf.coords), 106
method), 330 _get_corner_lonlat()
_get_closest_interval_within() (satpy.readers.grib.GRIBFileHandler static
(satpy.readers.seviri_base.OrbitPolynomialFinder method), 251
method), 330 _get_corner_xy() (satpy.readers.grib.GRIBFileHandler
_get_closest_timeline() static method), 251
(satpy.readers.ahi_hsd._NominalTimeCalculator _get_corrected_lon_lat()
method), 206 (satpy.modifiers.parallax.ParallaxCorrection
_get_cloud_mask_variable_info() (in module method), 166
satpy.tests.reader_tests.modis_tests._modis_fixtures),
_get_corrector() (satpy.modifiers.parallax.ParallaxCorrectionModifier
417 method), 168
_get_cmap_from_palette_info() (in module _get_cos_sza() (in module satpy.modifiers.angles),
satpy.enhancements), 148 159
_get_coarse_dataset() _get_coszen_blending_weights()
(satpy.readers.msi_safe.SAFEMSITileMDXML (satpy.composites.DayNightCompositor
method), 287 method), 127
_get_coeff_filenames _get_counts() (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHand
(satpy.readers.mirs.MiRSL2ncHandler prop- method), 180
erty), 279 _get_cumul_bin_info_for_tile() (in module
_get_coefficients() satpy.composites.viirs), 121
(satpy.readers.mersi_l1b.MERSIL1B method), _get_current_scene_orientation() (in module
277 satpy.readers.yaml_reader), 384
_get_coefficients_mersi1() _get_cyl_area_info()
(satpy.readers.mersi_l1b.MERSIL1B method), (satpy.readers.grib.GRIBFileHandler method),
277 251
_get_coefs() (satpy.readers.utils._CalibrationCoefficientParser
_get_cyl_minmax_lonlat()
method), 358 (satpy.readers.grib.GRIBFileHandler static
_get_coefs_by_mode() method), 251
(satpy.readers.utils._CalibrationCoefficientParser_get_data() (satpy.readers.clavrx._CLAVRxHelper
method), 358 static method), 217

Index 759
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_data() (satpy.tests.reader_tests.test_msu_gsa_l1b.FakeHDF5FileHandler2
method), 662
method), 508 _get_dataset_measurand()
_get_data_array() (satpy.readers.eps_l1b.EPSAVHRRFile (satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler
method), 221 method), 228
_get_data_channels() _get_dataset_quality()
(satpy.readers.safe_sar_l2_ocn.SAFENC (satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler
method), 316 method), 228
_get_data_dtype() (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
_get_dataset_valid_range()
method), 345 (satpy.readers.viirs_l1b.VIIRSL1BFileHandler
_get_data_file_content() method), 372
(satpy.tests.reader_tests.test_mersi_l1b.FakeHDF5FileHandler2
_get_dataset_valid_range()
method), 500 (satpy.readers.viirs_l2.VIIRSL2FileHandler
_get_data_for_combined_product() method), 373
(satpy.composites.DayNightCompositor _get_datasets_with_attributes() (in module
method), 127 satpy.tests.reader_tests.test_mirs), 506
_get_data_for_single_side_product() _get_datasets_with_less_attributes() (in mod-
(satpy.composites.DayNightCompositor ule satpy.tests.reader_tests.test_mirs), 506
method), 127 _get_datetime() (satpy.readers.hsaf_grib.HSAFFileHandler
_get_data_from_enhanced_image() (in module static method), 260
satpy.composites), 135 _get_day_night_data_for_single_side_product()
_get_data_vmin_vmax() (in module (satpy.composites.DayNightCompositor
satpy.writers.awips_tiled), 655 method), 127
_get_dataarrays_from_identifiers() (in module _get_delayed_iter()
satpy._scene_converters), 679 (satpy.writers.awips_tiled.AWIPSTiledWriter
_get_dataset() (satpy.readers.hsaf_h5.HSAFFileHandler static method), 649
method), 261 _get_did_for_fake_scene() (in module
_get_dataset() (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTWithFile
satpy.tests.utils), 643
method), 447 _get_digital_number()
_get_dataset() (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGetDataset
(satpy.readers.sar_c_safe.SAFEGRD method),
static method), 450 318
_get_dataset_area_extents_array() (in module _get_distance_to_intersection() (in module
satpy.readers.yaml_reader), 384 satpy.readers.gms.gms5_vissr_navigation),
_get_dataset_aux_data() 192
(satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler _get_distances_to_intersections() (in module
method), 227 satpy.readers.gms.gms5_vissr_navigation),
_get_dataset_aux_data() 192
(satpy.readers.mws_l1b.MWSL1BFile method), _get_dn_corrections()
298 (satpy.readers.mersi_l1b.MERSIL1B method),
_get_dataset_channel() 277
(satpy.readers.mws_l1b.MWSL1BFile method), _get_ds1() (in module satpy.tests.test_modifiers), 617
298 _get_ds_info_for_data_arr()
_get_dataset_file_units() (satpy.readers.amsr2_l2_gaasp.GAASPFileHandler
(satpy.readers.viirs_l1b.VIIRSL1BFileHandler method), 212
method), 372 _get_ds_info_for_data_arr()
_get_dataset_file_units() (satpy.readers.mirs.MiRSL2ncHandler
(satpy.readers.viirs_l2.VIIRSL2FileHandler method), 279
method), 373 _get_ds_units() (satpy.readers.osisaf_l3_nc.OSISAFL3NCFileHandler
_get_dataset_id_of_group_members_in_scene() method), 311
(satpy.multiscene._multiscene._GroupAliasGenerator
_get_dsinfo() (satpy.readers.cmsaf_claas2.CLAAS2
method), 175 method), 218
_get_dataset_index_map() _get_dsname() (satpy.readers.seviri_l1b_icare.SEVIRI_ICARE
(satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler method), 341
method), 227 _get_earth_edges() (satpy.readers.gms.gms5_vissr_l1b.SpaceMasker
_get_dataset_len() (satpy.writers.mitiff.MITIFFWriter method), 181

760 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_earth_edges_per_scan_line() _get_expected_stack_select() (in module


(satpy.readers.gms.gms5_vissr_l1b.SpaceMasker satpy.tests.multiscene_tests.test_blend), 408
method), 182 _get_extents() (satpy.readers.amsr2_l2_gaasp.GAASPGriddedFileHand
_get_earth_ellipsoid() static method), 212
(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
_get_extents() (satpy.readers.geocat.GEOCATFileHandler
method), 180 method), 236
_get_earth_fixed_coords() (in module _get_extents() (satpy.readers.grib.GRIBFileHandler
satpy.readers.gms.gms5_vissr_navigation), static method), 251
193 _get_extra_ds() (in module satpy.cf.datasets), 109
_get_earth_mask() (satpy.readers.gms.gms5_vissr_l1b.SpaceMasker
_get_factor_offset_fill() (in module
method), 182 satpy.writers.awips_tiled), 655
_get_earth_mask() (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler
_get_factors_offsets()
static method), 247 (satpy.readers.mviri_l1b_fiduceo_nc.Navigator
_get_earth_model() (satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler method), 294
method), 350 _get_fake_areas() (in module
_get_ease_grid() (satpy.readers.osisaf_l3_nc.OSISAFL3NCFileHandler satpy.tests.modifier_tests.test_parallax), 407
method), 311 _get_fake_bytesio()
_get_emissive_variable_info() (in module (satpy.tests.test_demo._FakeRequest method),
satpy.tests.reader_tests.modis_tests._modis_fixtures), 611
417 _get_fake_cloud_datasets()
_get_emissivity_as_dask() (satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionMo
(satpy.modifiers.spectral.NIREmissivePartFromReflectance method), 406
method), 170 _get_fake_counts() (in module
_get_emissivity_as_dataarray() satpy.tests.reader_tests.test_ami_l1b), 440
(satpy.modifiers.spectral.NIREmissivePartFromReflectance
_get_fake_da() (in module
method), 170 satpy.tests.writer_tests.test_ninjogeotiff ),
_get_empty_segment() 585
(satpy.readers.yaml_reader.GEOSegmentYAMLReader _get_fake_data() (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRIT
method), 382 method), 538
_get_empty_segment() _get_fake_dataset()
(satpy.readers.yaml_reader.GEOVariableSegmentYAMLReader (satpy.tests.reader_tests.test_seviri_l1b_nc.TestNCSEVIRIFileHan
method), 383 method), 545
_get_empty_segment_with_height() (in module _get_fake_pygrib() (satpy.tests.reader_tests.test_grib.TestGRIBReader
satpy.readers.yaml_reader), 384 static method), 483
_get_enclosing_interval() _get_fake_scene_area() (in module satpy.tests.utils),
(satpy.readers.seviri_base.OrbitPolynomialFinder 643
method), 331 _get_fh() (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGACLACFil
_get_enhanced_background_data() method), 449
(satpy.composites.glm.HighlightCompositor _get_fh_mocked() (in module
static method), 115 satpy.tests.reader_tests.test_avhrr_l1b_gaclac),
_get_enhanced_image() (in module 450
satpy.tests.enhancement_tests.test_enhancements),_get_file_handle() (satpy.readers.netcdf_utils.NetCDF4FileHandler
401 method), 300
_get_enhanced_image() _get_file_handle() (satpy.readers.netcdf_utils.NetCDF4FsspecFileHan
(satpy.tests.test_writers.TestReaderEnhancerConfigs method), 301
method), 635 _get_file_handlers()
_get_entry_points_and_etc_paths() (in module (satpy.readers.viirs_sdr.VIIRSSDRReader
satpy.tests.test_config), 603 method), 374
_get_eosip_fh() (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGACLACFile
_get_file_handlers()
method), 449 (satpy.readers.yaml_reader.FileYAMLReader
_get_expected() (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestFileHandlerCalibrationBase
method), 379
method), 535 _get_file_key_and_variable()
_get_expected_stack_blend() (in module (satpy.readers.seadas_l2._SEADASL2Base
satpy.tests.multiscene_tests.test_blend), 408 method), 326

Index 761
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_file_keys_for_reader_files() (in module method), 490


satpy.readers), 387 _get_geographic_grid()
_get_file_units() (in module (satpy.readers.osisaf_l3_nc.OSISAFL3NCFileHandler
satpy.readers.viirs_atms_sdr_base), 366 method), 311
_get_filebase() (in module _get_geographical_chunks()
satpy.readers.yaml_reader), 384 (satpy.readers.viirs_compact.VIIRSCompactFileHandler
_get_filekeys() (satpy.readers.nwcsaf_nc.NcNWCSAF method), 367
method), 304 _get_geostationary_height() (in module
_get_filenames_to_download() (in module satpy.readers.utils), 359
satpy.demo.viirs_sdr), 146 _get_geostationary_reference_longitude() (in
_get_files_by_type() module satpy.readers.utils), 359
(satpy.readers.sar_c_safe.SAFESARReader _get_geostationary_semi_axes() (in module
method), 319 satpy.readers.utils), 359
_get_finalized_destination_area() _get_glm_glob_filename()
(satpy.scene.Scene method), 706 (satpy.tests.writer_tests.test_awips_tiled.TestAWIPSTiledWriter
_get_finfo_grid() (satpy.readers.osisaf_l3_nc.OSISAFL3NCFileHandler
static method), 579
method), 311 _get_global_attributes() (in module
_get_first_available_item() (in module satpy.tests.reader_tests.test_fci_l1c_nc),
satpy.utils), 718 465
_get_flag_value() (in module satpy.composites), 135 _get_global_attributes()
_get_frame_parameters_key() (satpy.readers.fci_l2_nc.FciL2CommonFunctions
(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandlermethod), 229
method), 180 _get_global_attributes()
_get_from_msg() (satpy.readers.eum_l2_grib.EUML2GribFileHandler (satpy.readers.fci_l2_nc.FciL2NCAMVFileHandler
static method), 224 method), 230
_get_fs_open_kwargs() (in module satpy.readers), _get_global_attributes()
388 (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler
_get_ftype_grid() (satpy.readers.osisaf_l3_nc.OSISAFL3NCFileHandler
method), 266
method), 311 _get_global_attributes()
_get_full_angles() (satpy.readers.eps_l1b.EPSAVHRRFile (satpy.readers.mws_l1b.MWSL1BFile method),
method), 221 298
_get_full_angles_uncached() _get_global_attributes()
(satpy.readers.eps_l1b.EPSAVHRRFile (satpy.readers.vii_base_nc.ViiNCBaseFileHandler
method), 221 method), 362
_get_full_disk() (satpy.readers.cmsaf_claas2.CLAAS2 _get_global_attrs()
method), 218 (satpy.tests.reader_tests.test_hy2_scat_l2b_h5.FakeHDF5FileHan
_get_full_lonlats_uncached() method), 490
(satpy.readers.eps_l1b.EPSAVHRRFile _get_good_data_mask()
method), 221 (satpy.readers.hdfeos_base.HDFEOSBaseFileReader
_get_gdal_options() method), 253
(satpy.writers.geotiff.GeoTIFFWriter method), _get_grid_width_to_grid_type() (in module
660 satpy.readers.yaml_reader), 384
_get_geo_data() (in module _get_group() (satpy.readers.netcdf_utils.NetCDF4FileHandler
satpy.tests.reader_tests.test_mersi_l1b), 504 method), 300
_get_geo_data() (satpy.tests.reader_tests.test_agri_l1.FakeHDF5FileHandler2
_get_group_dataarrays() (in module
method), 432 satpy.cf.datasets), 109
_get_geo_data() (satpy.tests.reader_tests.test_ghi_l1.FakeHDF5FileHandler2
_get_groups() (in module satpy.cf.datasets), 109
method), 473 _get_hd() (satpy.readers.hrit_base.HRITFileHandler
_get_geo_data() (satpy.tests.reader_tests.test_gpm_imerg.FakeHDF5FileHandler2
method), 255
method), 482 _get_header() (satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler
_get_geo_data() (satpy.tests.reader_tests.test_hy2_scat_l2b_h5.FakeHDF5FileHandler2
method), 339
method), 490 _get_highlight_factor()
_get_geo_data_nsoas() (satpy.composites.glm.HighlightCompositor
(satpy.tests.reader_tests.test_hy2_scat_l2b_h5.FakeHDF5FileHandler2
method), 115

762 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_hrv_actual_img_bounds() method), 180


(satpy.readers.seviri_l1b_native.ImageBoundaries_get_line_offset() (satpy.readers.hrit_jma.HRITJMAFileHandler
method), 344 method), 258
_get_hrv_channel() (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
_get_loadables_for_reader_config() (in module
method), 345 satpy.readers), 388
_get_hrv_img_shape() _get_lonlat_variable_info() (in module
(satpy.readers.seviri_l1b_native.ImageBoundaries satpy.tests.reader_tests.modis_tests._modis_fixtures),
method), 344 418
_get_id_attrs() (satpy.multiscene._multiscene._GroupAliasGenerator
_get_lonlatalts_uncached()
method), 176 (satpy.readers.sar_c_safe.SAFEGRD method),
_get_image_coords() 318
(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
_get_lons_lats() (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileH
method), 180 method), 180
_get_image_data() (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
_get_lons_lats_from_coords()
method), 180 (satpy.readers.yaml_reader.FileYAMLReader
_get_image_data_type_specs() method), 379
(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
_get_lons_lats_numba() (in module
method), 180 satpy.readers.gms.gms5_vissr_navigation),
_get_image_offset() 193
(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
_get_luts() (satpy.readers.ahi_l1b_gridded_bin.AHIGriddedFileHandler
method), 180 method), 208
_get_image_shapes() _get_map_blocks_kwargs() (in module
(satpy.readers.sar_c_safe.SAFESARReader satpy.readers.gms.gms5_vissr_navigation),
method), 319 193
_get_incidence_angle_uncached() _get_mask() (satpy.composites.MaskingCompositor
(satpy.readers.sar_c_safe.SAFEXMLAnnotation method), 131
method), 320 _get_mask_byte1_variable_info() (in module
_get_input_info() (satpy.readers.hrit_base.HRITSegment satpy.tests.reader_tests.modis_tests._modis_fixtures),
method), 255 418
_get_instname() (satpy.readers.osisaf_l3_nc.OSISAFL3NCFileHandler
_get_mask_from_data()
method), 311 (satpy.composites.ColormapCompositor
_get_invalid_info() (in module static method), 125
satpy.readers.viirs_sdr), 375 _get_matchable_coordinate_metadata()
_get_ir_coefs() (satpy.readers.goes_imager_nc.GOESCoefficientReader
(satpy.writers.awips_tiled.NetCDFTemplate
method), 245 method), 652
_get_is_nondimensional_coords_dict() (in mod- _get_max_scan_angle()
ule satpy.cf.coords), 106 (satpy.readers.goes_imager_nc.AreaDefEstimator
_get_items() (satpy.readers.olci_nc.NCOLCI1B static method), 245
method), 306 _get_mda() (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
_get_keys_with_empty_values() (in module method), 180
satpy.readers), 388 _get_mda() (satpy.tests.reader_tests.test_ahi_hrit.TestHRITJMAFileHandl
_get_l1b_geo_variable_info() (in module method), 434
satpy.tests.reader_tests.modis_tests._modis_fixtures),
_get_merged_image_data()
417 (satpy.composites.BackgroundCompositor
_get_l3_land_cover_info() (in module static method), 123
satpy.tests.reader_tests.modis_tests._modis_fixtures),
_get_message() (satpy.readers.grib.GRIBFileHandler
418 method), 251
_get_l3_refl_variable_info() (in module _get_message() (satpy.readers.hsaf_grib.HSAFFileHandler
satpy.tests.reader_tests.modis_tests._modis_fixtures), method), 261
418 _get_metadata() (satpy.readers.ahi_hsd.AHIHSDFileHandler
_get_lettered_sector_info() method), 205
(satpy.writers.awips_tiled.AWIPSTiledWriter _get_minimum_radiance()
method), 649 (satpy.readers.abi_l1b.NC_ABI_L1B method),
_get_line_number() (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
201

Index 763
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_modifier_loader_from_config() (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
(satpy.composites.config_loader._ModifierConfigHelper method), 180
static method), 113 _get_orbital_parameters()
_get_nadir_pixel() (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler
(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
static method), 248 method), 180
_get_nadir_resolution() _get_orbital_parameters()
(satpy.readers.clavrx._CLAVRxHelper static (satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriBase
method), 217 method), 291
_get_name_dict() (satpy.readers.gms.gms5_vissr_l1b.AreaDefEstimator
_get_orbital_parameters()
method), 179 (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
_get_navigation_data() method), 345
(satpy.readers.hrpt.HRPTFile method), 259 _get_other_dataset()
_get_navigation_data() (satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriBase
(satpy.readers.mwr_l1b.AWS_EPS_Sterna_MWR_L1BFile method), 291
method), 297 _get_output_chunks_from_func_arguments() (in
_get_navigation_data() module satpy.modifiers.angles), 159
(satpy.readers.mwr_l1c.AWS_MWR_L1CFile _get_output_info() (satpy.readers.hrit_base.HRITFileHandler
method), 298 method), 255
_get_navigation_parameters() _get_padded_dask_pieces()
(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler(satpy.readers.sar_c_safe.AzimuthNoiseReader
method), 180 method), 317
_get_new_areadef_for_padded_segment() _get_parallax_shift_xyz() (in module
(satpy.readers.yaml_reader.GEOSegmentYAMLReader satpy.modifiers.parallax), 168
method), 382 _get_per_granule_lats()
_get_new_areadef_heights() (satpy.tests.reader_tests.test_atms_sdr_hdf5.FakeHDF5_ATMS_S
(satpy.readers.yaml_reader.GEOSegmentYAMLReader static method), 444
method), 382 _get_per_granule_lats()
_get_new_areadef_heights() (satpy.tests.reader_tests.test_viirs_sdr.FakeHDF5FileHandler2
(satpy.readers.yaml_reader.GEOVariableSegmentYAMLReaderstatic method), 565
method), 383 _get_per_granule_lons()
_get_new_flipped_area_definition() (in module (satpy.tests.reader_tests.test_atms_sdr_hdf5.FakeHDF5_ATMS_S
satpy.readers.yaml_reader), 384 static method), 444
_get_next_start_line() _get_per_granule_lons()
(satpy.readers.sar_c_safe.AzimuthNoiseReader (satpy.tests.reader_tests.test_viirs_sdr.FakeHDF5FileHandler2
method), 317 static method), 565
_get_nir_inputs() (satpy.modifiers.spectral.NIRReflectance
_get_pixel_navigation_parameters() (in module
method), 170 satpy.readers.gms.gms5_vissr_navigation), 193
_get_noise_correction_uncached() _get_platform() (in module satpy.readers.clavrx), 218
(satpy.readers.sar_c_safe.Denoiser method), _get_platform() (satpy.readers.hrit_jma.HRITJMAFileHandler
318 method), 258
_get_nominal_shape() _get_platform_name (satpy.readers.mirs.MiRSL2ncHandler
(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandlerproperty), 279
method), 180 _get_platform_name()
_get_none_attrs() (in module satpy.cf.attrs), 105 (satpy.readers.aapp_l1b.AAPPL1BaseFileHandler
_get_object_attrs() method), 198
(satpy.readers.netcdf_utils.NetCDF4FileHandler _get_platform_name()
method), 300 (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler
_get_object_attrs() static method), 248
(satpy.readers.netcdf_utils.NetCDF4FsspecFileHandler
_get_platform_name()
method), 302 (satpy.writers.mitiff.MITIFFWriter method),
_get_offset_relative_to_timeline() 662
(satpy.readers.ahi_hsd._NominalTimeCalculator _get_platname() (satpy.readers.osisaf_l3_nc.OSISAFL3NCFileHandler
method), 207 method), 311
_get_orbit_prediction() _get_polar_stereographic_grid()

764 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(satpy.readers.osisaf_l3_nc.OSISAFL3NCFileHandler (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler
method), 311 method), 266
_get_precip_data() (satpy.tests.reader_tests.test_gpm_imerg.FakeHDF5FileHandler2
_get_quality_attributes()
method), 482 (satpy.readers.mws_l1b.MWSL1BFile method),
_get_predicted_navigation_params() 298
(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
_get_query_values() (satpy.writers.DecisionTree
method), 180 method), 671
_get_prefix_order_by_preference() (in module _get_rad_dataset() (satpy.readers.mersi_l1b.MERSIL1B
satpy.utils), 718 method), 277
_get_prereq_datasets() (satpy.scene.Scene method), _get_raw_mda() (satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler
706 method), 339
_get_pressure_level_condition() (in module _get_reader() (satpy.tests.reader_tests.test_ahi_hrit.TestHRITJMAFileHa
satpy.readers.nucaps), 303 method), 434
_get_primary_secondary_geo_groups() _get_reader_and_filenames() (in module
(satpy.readers.viirs_sdr.VIIRSSDRReader satpy.readers), 388
method), 375 _get_reader_instance() (in module satpy.readers),
_get_proj() (satpy.readers.geocat.GEOCATFileHandler 388
method), 236 _get_reader_kwargs() (in module satpy.readers), 388
_get_proj4_dict() (satpy.readers.gms.gms5_vissr_l1b.AreaDefEstimator
_get_reader_mocked() (in module
method), 179 satpy.tests.reader_tests.test_avhrr_l1b_gaclac),
_get_proj4_name() (satpy.readers.scmi.SCMIFileHandler 450
method), 325 _get_reader_with_filehandlers() (in module
_get_proj_area() (satpy.readers.eum_l2_grib.EUML2GribFileHandlersatpy.tests.reader_tests.test_fci_l1c_nc), 465
method), 224 _get_readers_files() (in module satpy.readers), 388
_get_proj_area() (satpy.readers.fci_l2_nc.FciL2NCFileHandler
_get_ref_dataset() (satpy.readers.mersi_l1b.MERSIL1B
method), 231 method), 277
_get_proj_dict() (satpy.readers.gms.gms5_vissr_l1b.AreaDefEstimator
_get_reference() (satpy.readers.hdf5_utils.HDF5FileHandler
method), 179 method), 252
_get_proj_dict() (satpy.readers.goes_imager_hrit.HRITGOESFileHandler
_get_reflectance_as_dask()
method), 241 (satpy.modifiers.spectral.NIRReflectance
_get_proj_params() (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
method), 170
method), 180 _get_reflectance_as_dataarray()
_get_proj_params() (satpy.readers.mviri_l1b_fiduceo_nc.Navigator(satpy.modifiers.spectral.NIRReflectance
method), 294 method), 170
_get_proj_specific_params() _get_registered_dem_cache_key()
(satpy.readers.scmi.SCMIFileHandler method), (satpy.modifiers._crefl.ReflectanceCorrector
325 method), 153
_get_projection() (satpy.readers.goes_imager_nc.AreaDefEstimator
_get_relative_observation_time() (in module
method), 245 satpy.readers.gms.gms5_vissr_navigation),
_get_projection() (satpy.readers.nwcsaf_nc.NcNWCSAF 193
method), 304 _get_replicated_chunk_sizes() (in module
_get_projection_attrs() satpy.resample), 703
(satpy.writers.awips_tiled.AWIPSNetCDFTemplate_get_required_variable_names()
method), 648 (satpy.readers.netcdf_utils.NetCDF4FileHandler
_get_projection_longitude() static method), 301
(satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriBase
_get_res() (satpy.readers.mcd12q1.MCD12Q1HDFFileHandler
method), 291 method), 275
_get_projection_type() (in module _get_res() (satpy.readers.modis_l3.ModisL3GriddedHDFFileHandler
satpy.readers.yaml_reader), 384 method), 284
_get_pytroll_chunk_size() (in module satpy.utils), _get_res_AF() (satpy.tests.reader_tests.test_fci_l1c_nc.ModuleTestFCIL1
718 method), 462
_get_qual_flags() (satpy.readers.avhrr_l1b_gaclac.GACLACFile
_get_res_multiplier()
method), 215 (satpy.readers.hdfeos_base.HDFEOSBaseFileReader
_get_quality_attributes() static method), 253

Index 765
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_rows_per_granule() method), 344


(satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandler
_get_selection_data()
method), 365 (satpy.tests.reader_tests.test_hy2_scat_l2b_h5.FakeHDF5FileHan
_get_rows_per_scan() (in module method), 490
satpy.readers.clavrx), 218 _get_sensor (satpy.readers.mirs.MiRSL2ncHandler
_get_sat_altitude() (in module satpy.utils), 718 property), 279
_get_sat_lonlat() (in module satpy.utils), 718 _get_sensor() (in module satpy.readers.clavrx), 218
_get_satellite_angles() _get_sensor() (satpy.readers.scmi.SCMIFileHandler
(satpy.readers.msi_safe.SAFEMSITileMDXML method), 325
method), 287 _get_sensor_angles() (in module
_get_satellite_elevation() (in module satpy.modifiers.angles), 159
satpy.modifiers.parallax), 168 _get_sensor_angles_ndarray() (in module
_get_satellite_unit_vector_x() (in module satpy.modifiers.angles), 159
satpy.readers.gms.gms5_vissr_navigation), _get_sensor_id_keys() (in module
193 satpy.composites.config_loader), 113
_get_satellite_unit_vector_y() (in module _get_sensorname() (satpy.readers.aapp_mhs_amsub_l1c.MHS_AMSUB_
satpy.readers.gms.gms5_vissr_navigation), method), 200
193 _get_sensors() (satpy.composites.GenericCompositor
_get_satellite_unit_vector_z() (in module method), 128
satpy.readers.gms.gms5_vissr_navigation), _get_shape_dict() (satpy.readers.gms.gms5_vissr_l1b.AreaDefEstimato
193 method), 179
_get_satellite_z_axis_1950() (in module _get_shape_with_uniform_pixel_size()
satpy.readers.gms.gms5_vissr_navigation), (satpy.readers.goes_imager_nc.AreaDefEstimator
193 method), 245
_get_satflag() (satpy.readers.oli_tirs_l1_tif.OLITIRSMDReader
_get_shared_global_attrs() (in module
method), 309 satpy.tests.reader_tests.test_amsr2_l2_gaasp),
_get_satpos_from_cth() (in module 442
satpy.modifiers.parallax), 168 _get_sharpening_ratio() (in module
_get_satpos_from_platform_name() (in module satpy.composites), 135
satpy.utils), 718 _get_single_band_data() (in module
_get_satpy_attrs() (in module satpy.cf.attrs), 105 satpy.composites), 135
_get_scale_factors_for_units() (in module _get_single_channel() (in module satpy.composites),
satpy.readers.viirs_atms_sdr_base), 366 135
_get_scale_offset_tags() _get_single_frame()
(satpy.writers.ninjogeotiff.NinJoGeoTIFFWriter (satpy.multiscene._multiscene.MultiScene
method), 664 method), 172
_get_scanning_angles() _get_single_slope_intercept()
(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler(satpy.readers.mersi_l1b.MERSIL1B method),
method), 180 278
_get_scans_per_granule() _get_solar_angles()
(satpy.readers.atms_sdr_hdf5.ATMS_SDR_FileHandler (satpy.readers.msi_safe.SAFEMSITileMDXML
method), 215 method), 287
_get_scans_per_granule() _get_solar_flux() (satpy.readers.olci_nc.NCOLCI1B
(satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandlermethod), 306
method), 365 _get_sorted_file_groups() (in module
_get_scene_with_loaded_sc_datasets() (in mod- satpy.readers), 388
ule satpy.tests.reader_tests.test_hsaf_h5), 489 _get_ssp() (satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriBase
_get_sector() (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler
method), 291
method), 248 _get_ssp_lonlat() (satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriBa
_get_segments_areadef_with_later_padded() method), 291
(satpy.readers.yaml_reader.GEOSegmentYAMLReader _get_stacked_angle_test_data() (in module
method), 382 satpy.tests.modifier_tests.test_angles), 403
_get_selected_img_bounds() _get_start_time() (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileH
(satpy.readers.seviri_l1b_native.ImageBoundaries method), 180

766 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_get_static_navigation_params() _get_test_content_areadef() (in module


(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandlersatpy.tests.reader_tests.test_fci_l1c_nc),
method), 180 465
_get_storage_dictionary_options() (in module _get_test_content_aux_data() (in module
satpy.utils), 718 satpy.tests.reader_tests.test_fci_l1c_nc),
_get_subset_of_full_disk() 465
(satpy.readers.cmsaf_claas2.CLAAS2 method), _get_test_content_for_channel() (in module
218 satpy.tests.reader_tests.test_fci_l1c_nc), 465
_get_subtree_for_existing_key() _get_test_data() (in module
(satpy.dependency_tree.DependencyTree satpy.tests.writer_tests.test_awips_tiled),
method), 686 580
_get_subtree_for_existing_name() _get_test_data_array()
(satpy.dependency_tree.DependencyTree (satpy.tests.test_writers.TestReaderEnhancerConfigs
method), 686 method), 635
_get_sun_angles() (in module satpy.modifiers.angles), _get_test_dataset()
159 (satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
_get_sun_azimuth_ndarray() (in module method), 583
satpy.modifiers.angles), 159 _get_test_dataset_calibration()
_get_sun_zenith_from_provided_data() (satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
(satpy.modifiers.spectral.NIRReflectance method), 583
static method), 170 _get_test_dataset_calibration_one_dataset()
_get_sunz_corr_li_and_shibata() (in module (satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
satpy.utils), 718 method), 583
_get_swathdef_from_lon_lat() _get_test_dataset_three_bands_prereq()
(satpy.modifiers.parallax.ParallaxCorrection (satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
static method), 166 method), 583
_get_table() (satpy.readers.goes_imager_nc.GOESCoefficientReader
_get_test_dataset_three_bands_two_prereq()
method), 245 (satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
_get_target_scene_orientation() (in module method), 583
satpy.readers.yaml_reader), 384 _get_test_dataset_with_bad_values()
_get_tb13_4_from_optionals() (satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
(satpy.modifiers.spectral.NIRReflectance method), 584
static method), 170 _get_test_datasets()
_get_test_area() (in module (satpy.tests.reader_tests.test_grib.TestGRIBReader
satpy.tests.writer_tests.test_awips_tiled), method), 483
580 _get_test_datasets()
_get_test_calib_data_for_channel() (in module (satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
satpy.tests.reader_tests.test_fci_l1c_nc), 465 method), 584
_get_test_calib_for_channel_ir() (in module _get_test_datasets()
satpy.tests.reader_tests.test_fci_l1c_nc), 465 (satpy.tests.writer_tests.test_simple_image.TestPillowWriter
_get_test_calib_for_channel_vis() (in module static method), 590
satpy.tests.reader_tests.test_fci_l1c_nc), 465 _get_test_datasets_2d() (in module
_get_test_content_all_channels() satpy.tests.writer_tests.test_geotiff ), 583
(satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerBase
_get_test_datasets_2d_nonlinear_enhancement()
method), 460 (in module satpy.tests.writer_tests.test_geotiff ),
_get_test_content_all_channels() 583
(satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerFDHSIIQTI
_get_test_datasets_3d() (in module
method), 460 satpy.tests.writer_tests.test_geotiff ), 583
_get_test_content_all_channels() _get_test_datasets_sensor_set()
(satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerHRFIIQTI
(satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
method), 461 method), 584
_get_test_content_all_channels() _get_test_ds() (satpy.tests.test_composites.TestMatchDataArrays
(satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerWithBadData
method), 598
method), 461 _get_test_geolocation_for_channel() (in module

Index 767
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_fci_l1c_nc), 465 method), 154


_get_test_image_data_for_channel() (in module _get_to3() (satpy.modifiers._crefl_utils._AtmosphereVariables
satpy.tests.reader_tests.test_fci_l1c_nc), 465 method), 155
_get_test_index_map_for_channel() (in module _get_to3() (satpy.modifiers._crefl_utils._MODISAtmosphereVariables
satpy.tests.reader_tests.test_fci_l1c_nc), 465 method), 155
_get_test_lcc_data() (in module _get_to3() (satpy.modifiers._crefl_utils._VIIRSAtmosphereVariables
satpy.tests.writer_tests.test_awips_tiled), method), 156
580 _get_type_ter_AF() (satpy.tests.reader_tests.test_fci_l1c_nc.ModuleTest
_get_test_one_dataset() static method), 462
(satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
_get_uniform_pixel_size()
method), 584 (satpy.readers.goes_imager_nc.AreaDefEstimator
_get_test_one_dataset_sensor_set() method), 245
(satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
_get_unique_array()
method), 584 (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCSegmentFileH
_get_test_pixel_quality_for_channel() (in mod- static method), 467
ule satpy.tests.reader_tests.test_fci_l1c_nc), _get_unique_id_from_sorted_ids()
465 (satpy.dependency_tree.DependencyTree
_get_test_segment_position_for_channel() (in static method), 686
module satpy.tests.reader_tests.test_fci_l1c_nc), _get_unique_matching_id()
465 (satpy.dependency_tree.DependencyTree
_get_th2o() (satpy.modifiers._crefl_utils._ABIAtmosphereVariables method), 686
method), 154 _get_unique_reader_node_from_id()
_get_th2o() (satpy.modifiers._crefl_utils._AtmosphereVariables (satpy.dependency_tree.DependencyTree
method), 155 method), 686
_get_th2o() (satpy.modifiers._crefl_utils._MODISAtmosphereVariables
_get_unit_vector_x() (in module
method), 155 satpy.readers.gms.gms5_vissr_navigation),
_get_th2o() (satpy.modifiers._crefl_utils._VIIRSAtmosphereVariables193
method), 156 _get_user_calibration_correction_type()
_get_third_dimension_name() (satpy.readers.ahi_hsd.AHIHSDFileHandler
(satpy.readers.ici_l1b_nc.IciL1bNCFileHandler method), 205
static method), 266 _get_uz_cross_satsun() (in module
_get_tiepoint_angles_in_degrees() satpy.readers.gms.gms5_vissr_navigation),
(satpy.readers.aapp_l1b.AVHRRAAPPL1BFile 193
method), 199 _get_valid_dicts() (in module
_get_tile_data_info() satpy.dataset.metadata), 143
(satpy.writers.awips_tiled.AWIPSTiledWriter _get_valid_scaling_factors()
method), 649 (satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandler
_get_tile_generator() static method), 365
(satpy.writers.awips_tiled.AWIPSTiledWriter _get_values_from_tag()
method), 649 (satpy.readers.msi_safe.SAFEMSITileMDXML
_get_tile_properties() static method), 287
(satpy.writers.awips_tiled.LetteredTileGenerator _get_var_from_filehandle()
method), 651 (satpy.readers.netcdf_utils.NetCDF4FileHandler
_get_tile_properties() method), 301
(satpy.writers.awips_tiled.NumberedTileGenerator_get_var_from_xr() (satpy.readers.netcdf_utils.NetCDF4FileHandler
method), 653 method), 301
_get_time_parameters() _get_var_name_without_suffix()
(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler(satpy.readers.amsr2_l2_gaasp.GAASPFileHandler
method), 181 method), 212
_get_to2() (satpy.modifiers._crefl_utils._ABIAtmosphereVariables
_get_variable() (satpy.readers.atms_sdr_hdf5.ATMS_SDR_FileHandler
method), 154 method), 215
_get_to2() (satpy.modifiers._crefl_utils._AtmosphereVariables
_get_variable() (satpy.readers.netcdf_utils.NetCDF4FileHandler
method), 155 method), 301
_get_to3() (satpy.modifiers._crefl_utils._ABIAtmosphereVariables
_get_variable() (satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHan

768 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 365 static method), 123


_get_varname_in_file() _getitem() (satpy.readers.electrol_hrit.HRITGOMSFileHandler
(satpy.readers.nwcsaf_nc.NcNWCSAF static method), 219
method), 304 _getitem() (satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler
_get_vector_from_satellite_to_sun() (in module static method), 228
satpy.readers.gms.gms5_vissr_navigation), 193 _getitem() (satpy.readers.fy4_base.FY4Base static
_get_veg_index_good_mask() method), 234
(satpy.readers.viirs_edr.VIIRSSurfaceReflectanceWithVIHandler
_getitem_h5netcdf()
method), 370 (satpy.readers.netcdf_utils.NetCDF4FsspecFileHandler
_get_vis_coefs() (satpy.readers.goes_imager_nc.GOESCoefficientReader
method), 302
method), 245 _glob_reversed() (in module
_get_visible_variable_info() (in module satpy.tests.modifier_tests.test_angles), 403
satpy.tests.reader_tests.modis_tests._modis_fixtures),
_global_awips_id() (satpy.writers.awips_tiled.AWIPSNetCDFTemplate
418 method), 648
_get_visir_channel() _global_physical_element()
(satpy.readers.seviri_l1b_native.NativeMSGFileHandler (satpy.writers.awips_tiled.AWIPSNetCDFTemplate
method), 345 method), 648
_get_visir_img_shape() _global_production_location()
(satpy.readers.seviri_l1b_native.ImageBoundaries (satpy.writers.awips_tiled.AWIPSNetCDFTemplate
method), 344 method), 648
_get_vmin_vmax() (satpy.writers.awips_tiled.AWIPSNetCDFTemplate
_global_production_site()
static method), 648 (satpy.writers.awips_tiled.AWIPSNetCDFTemplate
_get_weight_mask_for_daynight_product() (in method), 648
module satpy.composites), 135 _global_start_date_time()
_get_weight_mask_for_single_side_product() (satpy.writers.awips_tiled.AWIPSNetCDFTemplate
(in module satpy.composites), 135 method), 648
_get_weighted_blending_func() (in module _gm_matches() (in module
satpy.multiscene._blend_funcs), 171 satpy.tests.cf_tests.test_area), 393
_get_writer_by_ext() (satpy.scene.Scene static _group_by_area() (satpy.writers.awips_tiled.AWIPSTiledWriter
method), 707 method), 649
_get_writers_and_frames() _group_datasets_in_scenes() (in module
(satpy.multiscene._multiscene.MultiScene satpy.multiscene._multiscene), 176
method), 172 _handle_data_array_name() (in module
_get_wvc_row_time() satpy.cf.data_array), 108
(satpy.tests.reader_tests.test_hy2_scat_l2b_h5.FakeHDF5FileHandler2
_handle_inline_comp_dep()
method), 490 (satpy.composites.config_loader._CompositeConfigHelper
_get_xarray_from_msg() method), 113
(satpy.readers.eum_l2_grib.EUML2GribFileHandler _handle_nodatavals() (in module
method), 224 satpy.readers.generic_image), 236
_get_xy_arrays() (satpy.writers.awips_tiled.NumberedTileGenerator
_handle_res_change() (satpy.tests.utils.FakeModifier
method), 653 method), 643
_get_xy_scaling_parameters() _hash_args() (in module satpy.modifiers.angles), 159
(satpy.writers.awips_tiled.LetteredTileGenerator _height_from_avg_elevation()
method), 651 (satpy.modifiers._crefl_utils._CREFLRunner
_get_xy_scaling_parameters() method), 155
(satpy.writers.awips_tiled.NumberedTileGenerator_histogram_equalization_helper() (in module
method), 653 satpy.composites.viirs), 121
_get_y_area_extents_for_padded_segment() _histogram_equalize_one_tile() (in module
(satpy.readers.yaml_reader.GEOSegmentYAMLReader satpy.composites.viirs), 121
method), 382 _imagedescription_from_mitiff()
_get_zarr_file_pattern() (satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
(satpy.modifiers.angles.ZarrCacheHelper method), 584
method), 159 _immutable() (satpy.dataset.dataid.DataID method),
_getitem() (satpy.composites.CategoricalDataCompositor 138

Index 769
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_init_positioning_arrays_for_variable_padding() method), 707


(in module satpy.readers.yaml_reader), 384 _ir_calibrate() (in module satpy.readers.aapp_l1b),
_init_reflectance_calculator() 199
(satpy.modifiers.spectral.NIRReflectance _ir_calibrate() (satpy.readers.abi_l1b.NC_ABI_L1B
method), 170 method), 201
_initialise_segment_infos() _ir_calibrate() (satpy.readers.ahi_hsd.AHIHSDFileHandler
(satpy.readers.yaml_reader.GEOVariableSegmentYAMLReader method), 205
method), 383 _ircounts2radiance()
_initialize_root_netcdf() (in module (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler
satpy.writers.cf_writer), 659 static method), 248
_inject_fixtures() (satpy.tests.reader_tests.test_eps_l1b.TestWrongSamplingEPSL1B
_is3b (satpy.readers.hrpt.HRPTFile property), 259
method), 456 _is_2d_xy_var() (satpy.readers.glm_l2.NCGriddedGLML2
_inject_fixtures() (satpy.tests.reader_tests.test_eps_l1b.TestWrongScanlinesEPSL1B
method), 239
method), 456 _is_2d_yx_data_array()
_insert_palette_colors() (in module (satpy.readers.amsr2_l2_gaasp.GAASPFileHandler
satpy.composites), 135 method), 212
_interp() (satpy.readers.hrit_jma.HRITJMAFileHandler _is_2d_yx_data_array()
static method), 258 (satpy.readers.clavrx.CLAVRXNetCDFFileHandler
_interpolate() (in module static method), 217
satpy.readers.gms.gms5_vissr_navigation), _is_2d_yx_data_array()
193 (satpy.readers.mirs.MiRSL2ncHandler
_interpolate() (satpy.readers.eps_l1b.EPSAVHRRFile method), 279
method), 221 _is_all_arrays() (in module satpy.dataset.metadata),
_interpolate() (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler 143
method), 266 _is_area() (in module satpy.cf.coords), 106
_interpolate_angles() _is_array() (in module satpy.dataset.metadata), 143
(satpy.readers.olci_nc.NCOLCIAngles _is_avhrr2() (satpy.readers.avhrr_l1b_gaclac.GACLACFile
method), 307 method), 215
_interpolate_arrays() _is_avhrr3() (satpy.readers.avhrr_l1b_gaclac.GACLACFile
(satpy.readers.aapp_l1b.AVHRRAAPPL1BFile method), 215
method), 199 _is_category_product()
_interpolate_data() (in module (satpy.readers.glm_l2.NCGriddedGLML2
satpy.readers.viirs_compact), 367 method), 239
_interpolate_geo() (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler
_is_chunk_tuple() (in module satpy.modifiers.angles),
static method), 266 159
_interpolate_local_equalized_tiles() (in mod- _is_empty_tile() (in module
ule satpy.composites.viirs), 121 satpy.writers.awips_tiled), 655
_interpolate_nearest() (in module _is_equal() (in module satpy.dataset.metadata), 143
satpy.readers.gms.gms5_vissr_navigation), _is_file_like() (satpy.readers.hrit_base.HRITSegment
193 method), 255
_interpolate_no_angles() (in module _is_georef_offset_present() (in module
satpy.readers.hdfeos_base), 254 satpy.readers.cmsaf_claas2), 219
_interpolate_orbit_angles() (in module _is_inside_interval() (in module
satpy.readers.gms.gms5_vissr_navigation), satpy.readers.pmw_channels_definitions),
193 315
_interpolate_sat_position() (in module _is_jit_method() (in module
satpy.readers.gms.gms5_vissr_navigation), satpy.tests.reader_tests.utils), 569
193 _is_lon_or_lat_dataarray() (in module
_interpolate_viewing_angle() satpy.cf.coords), 106
(satpy.readers.ici_l1b_nc.IciL1bNCFileHandler _is_mband_res() (in module
method), 266 satpy.tests.reader_tests.test_viirs_edr), 557
_interpolate_with_angles() (in module _is_mode() (satpy.readers.utils._CalibrationCoefficientParser
satpy.readers.hdfeos_base), 254 method), 358
_ipython_key_completions_() (satpy.scene.Scene _is_multi_channel()

770 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(satpy.readers.utils._CalibrationCoefficientParser_load_area_def() (satpy.readers.yaml_reader.FileYAMLReader
method), 358 method), 380
_is_namedtuple() (in module _load_area_def() (satpy.readers.yaml_reader.GEOSegmentYAMLReader
satpy.tests.reader_tests.gms.test_gms5_vissr_navigation), method), 382
416 _load_area_def_with_padding()
_is_non_empty_collection() (in module (satpy.readers.yaml_reader.GEOSegmentYAMLReader
satpy.dataset.metadata), 143 method), 382
_is_polar() (satpy.readers.clavrx.CLAVRXHDF4FileHandler _load_config() (in module
method), 216 satpy.composites.config_loader), 113
_is_polar() (satpy.readers.clavrx.CLAVRXNetCDFFileHandler _load_config_composite()
method), 217 (satpy.composites.config_loader._CompositeConfigHelper
_is_projected() (in module satpy.cf.coords), 106 method), 113
_is_scan_based_array() _load_config_composites()
(satpy.readers.viirs_l1b.VIIRSL1BFileHandler (satpy.composites.config_loader._CompositeConfigHelper
method), 372 method), 113
_is_sst_file() (satpy.readers.ghrsst_l2.GHRSSTL2FileHandler
_load_config_modifier()
static method), 238 (satpy.composites.config_loader._ModifierConfigHelper
_is_swath() (in module satpy.cf.coords), 106 method), 113
_is_viirs_dataset() _load_config_modifiers()
(satpy.readers.viirs_sdr.VIIRSSDRReader (satpy.composites.config_loader._ModifierConfigHelper
method), 375 method), 113
_is_writable() (in module satpy.tests.test_config), 603 _load_dataset() (satpy.readers.yaml_reader.FileYAMLReader
_is_yaw_flip() (satpy.readers.goes_imager_nc.GOESNCBaseFileHandlerstatic method), 380
method), 248 _load_dataset() (satpy.readers.yaml_reader.GEOSegmentYAMLReader
_iter_area_tile_info_and_datasets() method), 382
(satpy.writers.awips_tiled.AWIPSTiledWriter _load_dataset_area()
method), 649 (satpy.readers.yaml_reader.FileYAMLReader
_iter_tile_info_and_datasets() method), 380
(satpy.writers.awips_tiled.AWIPSTiledWriter _load_dataset_data()
method), 649 (satpy.readers.yaml_reader.FileYAMLReader
_iterate_over_dataset_contents() method), 380
(satpy.readers.tropomi_l2.TROPOMIL2FileHandler _load_dataset_with_area()
method), 355 (satpy.readers.yaml_reader.FileYAMLReader
_jma_true_color_reproduction() (in module method), 380
satpy.enhancements), 148 _load_dataset_with_area()
_linear_normalization_from_0to1() (in module (satpy.readers.yaml_reader.GEOFlippableFileYAMLReader
satpy.composites.viirs), 121 method), 382
_load_all_metadata_attributes() _load_datasets_by_readers() (satpy.scene.Scene
(satpy.readers.hdfeos_base.HDFEOSBaseFileReader method), 707
method), 253 _load_ds_by_name() (satpy.readers.hdfeos_base.HDFEOSGeoReader
_load_all_metadata_attributes() method), 254
(satpy.readers.modis_l2.ModisL2HDFFileHandler_load_filenames_from_geo_ref()
method), 283 (satpy.readers.viirs_sdr.VIIRSSDRReader
_load_ancillary_variables() method), 375
(satpy.readers.yaml_reader.FileYAMLReader _load_lut() (satpy.readers.ahi_l1b_gridded_bin.AHIGriddedFileHandler
method), 380 method), 208
_load_and_check_geolocation() (in module _load_nav() (satpy.readers.geocat.GEOCATFileHandler
satpy.tests.reader_tests.modis_tests.test_modis_l1b), method), 236
421 _load_url_or_file()
_load_and_check_limb_correction_variables() (satpy.readers.goes_imager_nc.GOESCoefficientReader
(in module satpy.tests.reader_tests.test_mirs), method), 245
506 _loadcart() (satpy.readers.slstr_l1b.NCSLSTRAngles
_load_area_def() (in module method), 353
satpy.readers.yaml_reader), 384 _local_file() (in module satpy.tests.test_readers), 624

Index 771
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_log_yaml_error() (in module satpy.readers), 389 method), 654


_lonlat_from_geos_angle() (in module _make_area_from_coords()
satpy.readers.utils), 359 (satpy.readers.yaml_reader.FileYAMLReader
_lookup_calib_table() method), 380
(satpy.readers.gms.gms5_vissr_l1b.Calibrator _make_cal_data() (satpy.tests.reader_tests.test_agri_l1.FakeHDF5FileHa
method), 179 method), 433
_lookup_table() (in module satpy.enhancements), 148 _make_channel_list()
_lru_cache_with_config_path() (in module (satpy.writers.mitiff.MITIFFWriter method),
satpy.composites.config_loader), 113 662
_make() (satpy.readers.gms.gms5_vissr_navigation.Attitude_make_coefs() (in module satpy.readers.utils), 359
class method), 182 _make_counts_data_array()
_make() (satpy.readers.gms.gms5_vissr_navigation.EarthEllipsoid (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
class method), 183 method), 181
_make() (satpy.readers.gms.gms5_vissr_navigation.ImageNavigationParameters
_make_dask_array_with_map_blocks()
class method), 184 (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
_make() (satpy.readers.gms.gms5_vissr_navigation.ImageOffset method), 345
class method), 184 _make_data_area() (satpy.tests.test_modifiers.TestPSPRayleighReflectanc
_make() (satpy.readers.gms.gms5_vissr_navigation.Orbit method), 616
class method), 185 _make_data_array() (satpy.readers.gms.gms5_vissr_l1b.Calibrator
_make() (satpy.readers.gms.gms5_vissr_navigation.OrbitAngles method), 179
class method), 185 _make_file() (satpy.tests.reader_tests.test_virr_l1b.FakeHDF5FileHandl
_make() (satpy.readers.gms.gms5_vissr_navigation.Pixel method), 568
class method), 186 _make_geo_data() (satpy.tests.reader_tests.test_agri_l1.FakeHDF5FileHa
_make() (satpy.readers.gms.gms5_vissr_navigation.PixelNavigationParameters
method), 433
class method), 187 _make_image_description()
_make() (satpy.readers.gms.gms5_vissr_navigation.PredictedNavigationParameters
(satpy.writers.mitiff.MITIFFWriter method),
class method), 187 662
_make() (satpy.readers.gms.gms5_vissr_navigation.ProjectionParameters
_make_lons_lats_data_array()
class method), 188 (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
_make() (satpy.readers.gms.gms5_vissr_navigation.Satpos method), 181
class method), 188 _make_nav_params_numba_compatible() (in module
_make() (satpy.readers.gms.gms5_vissr_navigation.ScanningAngles satpy.readers.gms.gms5_vissr_navigation), 193
class method), 189 _make_nom_data() (satpy.tests.reader_tests.test_agri_l1.FakeHDF5FileHa
_make() (satpy.readers.gms.gms5_vissr_navigation.ScanningParameters
method), 433
class method), 190 _make_swath_definition_from_lons_lats()
_make() (satpy.readers.gms.gms5_vissr_navigation.StaticNavigationParameters
(satpy.readers.yaml_reader.FileYAMLReader
class method), 190 method), 380
_make() (satpy.readers.gms.gms5_vissr_navigation.Vector2D_make_viirs_xarray() (in module
class method), 191 satpy.tests.modifier_tests.test_crefl), 404
_make() (satpy.readers.gms.gms5_vissr_navigation.Vector3D_manage_attributes()
class method), 191 (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler
_make() (satpy.readers.gms.gms5_vissr_navigation._AttitudePrediction
method), 266
class method), 191 _manage_attributes()
_make() (satpy.readers.gms.gms5_vissr_navigation._OrbitPrediction(satpy.readers.mws_l1b.MWSL1BFile method),
class method), 192 298
_make() (satpy.readers.pmw_channels_definitions.FrequencyDoubleSideBandBase
_manual_scalings (satpy.readers.viirs_edr.VIIRSLSTHandler
class method), 313 attribute), 370
_make() (satpy.readers.pmw_channels_definitions.FrequencyQuadrupleSideBandBase
_map_and_apply_factors()
class method), 314 (satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandler
_make() (satpy.readers.pmw_channels_definitions.FrequencyRangeBasestatic method), 365
class method), 315 _mask_and_reshape_factors()
_make() (satpy.writers.awips_tiled.TileInfo class (satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandler
method), 653 static method), 365
_make() (satpy.writers.awips_tiled.XYFactors class _mask_bad_quality()

772 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler
_match_dataid() (satpy.dataset.dataid.DataQuery
method), 339 method), 139
_mask_bad_quality() _match_filenames() (in module
(satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler satpy.readers.yaml_reader), 384
method), 350 _match_query_value()
_mask_based_on_l2_flags() (satpy.dataset.dataid.DataQuery method),
(satpy.readers.seadas_l2._SEADASL2Base 139
method), 327 _mean() (in module satpy.resample), 703
_mask_data() (satpy.readers.fci_l2_nc.FciL2CommonFunctions
_mean4() (in module satpy.composites), 135
static method), 230 _merge_attributes()
_mask_data() (satpy.readers.hy2_scat_l2b_h5.HY2SCATL2BH5FileHandler
(satpy.readers.atms_l1b_nc.AtmsL1bNCFileHandler
method), 262 method), 214
_mask_data() (satpy.readers.mersi_l1b.MERSIL1B _merge_colormaps() (in module satpy.enhancements),
method), 278 148
_mask_data_below_surface_pressure() (in module _merge_navigation_data()
satpy.readers.nucaps), 303 (satpy.readers.goci2_l2_nc.GOCI2L2NCFileHandler
_mask_data_with_quality_flag() (in module method), 240
satpy.readers.nucaps), 303 _mock_and_create_dem_file() (in module
_mask_dataset() (satpy.readers.smos_l2_wind.SMOSL2WINDFileHandler
satpy.tests.modifier_tests.test_crefl), 404
method), 354 _mock_dem_retrieve() (in module
_mask_image_data() (in module satpy.tests.modifier_tests.test_crefl), 404
satpy.readers.generic_image), 236 _mock_glob_if() (in module
_mask_infinite() (satpy.readers.epic_l1b_h5.DscovrEpicL1BH5FileHandler
satpy.tests.modifier_tests.test_angles), 403
static method), 220 _mode_block (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
_mask_invalid() (satpy.readers.ahi_hsd.AHIHSDFileHandler property), 181
method), 205 _modify_area_extent()
_mask_invalid() (satpy.readers.modis_l1b.HDFEOSBandReader (satpy.readers.fci_l2_nc.FciL2NCSegmentFileHandler
method), 282 static method), 231
_mask_invalid() (satpy.readers.viirs_edr.VIIRSAODHandler
_modify_observation_time_for_nominal()
method), 369 (satpy.readers.ahi_hsd._NominalTimeCalculator
_mask_invalid() (satpy.readers.viirs_edr.VIIRSJRRFileHandler method), 207
method), 369 _modis_date() (in module satpy.readers.hdfeos_base),
_mask_invalid() (satpy.readers.viirs_edr.VIIRSSurfaceReflectanceWithVIHandler
254
method), 370 _move_existing_caches() (in module
_mask_space() (satpy.readers.ahi_hsd.AHIHSDFileHandler satpy.resample), 703
method), 205 _nan_for_dtype() (satpy.readers.amsr2_l2_gaasp.GAASPFileHandler
_mask_space() (satpy.readers.hrit_jma.HRITJMAFileHandler static method), 212
method), 258 _nan_for_dtype() (satpy.readers.mirs.MiRSL2ncHandler
_mask_space_pixels() static method), 279
(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
_need_interpolation
method), 181 (satpy.readers.olci_nc.NCOLCILowResData
_mask_uncertain_pixels() property), 308
(satpy.readers.modis_l1b.HDFEOSBandReader _new_filehandler_instances()
method), 282 (satpy.readers.yaml_reader.FileYAMLReader
_mask_variable() (satpy.readers.nwcsaf_nc.NcNWCSAF method), 380
static method), 304 _new_filehandlers_for_filetype()
_mask_weights() (satpy.composites.DayNightCompositor (satpy.readers.yaml_reader.FileYAMLReader
method), 127 method), 380
_mask_weights_with_data() _new_unzip() (in module
(satpy.composites.DayNightCompositor satpy.tests.reader_tests.test_ahi_hsd), 436
method), 127 _nodes_equal() (satpy.tests.test_dependency_tree.TestDependencyTree
_mask_with_quality_assurance_if_needed() static method), 612
(satpy.readers.modis_l2.ModisL2HDFFileHandler_normalize_dnb_for_mask()
method), 283 (satpy.composites.viirs.AdaptiveDNB method),

Index 773
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

119 method), 267


_normalize_dnb_for_mask() _os_specific_multipaths() (in module
(satpy.composites.viirs.HistogramDNB satpy.tests.test_config), 603
method), 119 _other_calibration_test()
_normalize_dnb_with_day_night_masks() (satpy.tests.reader_tests.test_fci_l1c_nc.ModuleTestFCIL1cNcRea
(satpy.composites.viirs.HistogramDNB static method), 462
method), 119 _pad_earlier_segments_area()
_notnull() (in module satpy.writers.awips_tiled), 655 (satpy.readers.yaml_reader.GEOSegmentYAMLReader
_np_add_at_wrapper() (in module method), 382
satpy.readers.li_l2_nc), 274 _pad_later_segments_area()
_num_cols_for_file_type (satpy.readers.yaml_reader.GEOSegmentYAMLReader
(satpy.tests.reader_tests.test_mersi_l1b.FakeHDF5FileHandler2
method), 382
property), 500 _pairwise_all() (in module satpy.dataset.metadata),
_num_of_bands (satpy.tests.reader_tests.test_atms_sdr_hdf5.FakeHDF5_ATMS_SDR_FileHandler
143
attribute), 444 _parse_datetime() (satpy.readers.acspo.ACSPOFileHandler
_num_scans_per_gran static method), 202
(satpy.tests.reader_tests.test_atms_sdr_hdf5.FakeHDF5_ATMS_SDR_FileHandler
_parse_datetime() (satpy.readers.nucaps.NUCAPSFileHandler
attribute), 444 method), 302
_num_scans_per_gran _parse_datetime() (satpy.readers.oceancolorcci_l3_nc.OCCCIFileHand
(satpy.tests.reader_tests.test_viirs_sdr.FakeHDF5FileHandler2
static method), 305
attribute), 565 _parse_datetime() (satpy.readers.osisaf_l3_nc.OSISAFL3NCFileHandle
_num_scans_per_gran static method), 311
(satpy.tests.reader_tests.test_viirs_sdr.FakeHDF5FileHandlerAggr
_parse_datetime() (satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileH
attribute), 565 method), 365
_num_scans_per_gran _parse_datetime() (satpy.readers.viirs_l1b.VIIRSL1BFileHandler
(satpy.tests.reader_tests.test_viirs_sdr.FakeShortHDF5FileHandlerAggr
method), 372
attribute), 566 _parse_datetime() (satpy.readers.viirs_l2.VIIRSL2FileHandler
_num_test_granules (satpy.tests.reader_tests.test_atms_sdr_hdf5.FakeHDF5_ATMS_SDR_FileHandler
method), 373
attribute), 444 _parse_dict() (satpy.readers.utils._CalibrationCoefficientParser
_num_test_granules (satpy.tests.reader_tests.test_viirs_sdr.FakeHDF5FileHandler2
method), 358
attribute), 565 _parse_libnetcdf_version() (in module
_num_test_granules (satpy.tests.reader_tests.test_viirs_sdr.FakeHDF5FileHandlerAggr
satpy.writers.cf_writer), 659
attribute), 565 _parse_timeline() (satpy.readers.ahi_hsd._NominalTimeCalculator
_num_test_granules (satpy.tests.reader_tests.test_viirs_sdr.FakeShortHDF5FileHandlerAggr
method), 207
attribute), 566 _patch_datetime_now() (in module
_number_of_visir_channels() satpy.tests.writer_tests.test_ninjogeotiff ),
(satpy.readers.seviri_l1b_native.NativeMSGFileHandler 585
method), 345 _patch_number_of_pixels_per_scanline()
_observation_frequency (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileHandler
(satpy.readers.ahi_hsd._NominalTimeCalculator method), 412
property), 207 _perform_calibration()
_open_h5py() (in module satpy.tests.test_readers), 624 (satpy.readers.vii_base_nc.ViiNCBaseFileHandler
_open_tarfile() (satpy.readers.ghrsst_l2.GHRSSTL2FileHandler method), 362
method), 238 _perform_calibration()
_open_xarray_dataset() (satpy.readers.vii_l1b_nc.ViiL1bNCFileHandler
(satpy.readers.hdf4_utils.HDF4FileHandler method), 364
method), 252 _perform_geo_interpolation()
_open_xarray_default() (in module (satpy.readers.vii_base_nc.ViiNCBaseFileHandler
satpy.tests.test_readers), 624 static method), 362
_open_xarray_h5netcdf() (in module _perform_interpolation()
satpy.tests.test_readers), 624 (satpy.readers.vii_base_nc.ViiNCBaseFileHandler
_open_xarray_netcdf4() (in module static method), 362
satpy.tests.test_readers), 624 _perform_orthorectification()
_orthorectify() (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler (satpy.readers.vii_base_nc.ViiNCBaseFileHandler

774 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 363 method), 304


_perform_orthorectification() _preprocess_data_array_name() (in module
(satpy.readers.vii_l1b_nc.ViiL1bNCFileHandler satpy.cf.data_array), 108
method), 364 _process_composite_deps()
_perform_orthorectification() (satpy.composites.config_loader._CompositeConfigHelper
(satpy.readers.vii_l2_nc.ViiL2NCFileHandler method), 113
method), 364 _process_modifier_deps()
_piecewise_linear() (in module (satpy.composites.config_loader._ModifierConfigHelper
satpy.enhancements), 148 method), 113
_platform_name() (satpy.readers.seadas_l2._SEADASL2Base _promote_query_to_modified_dataid()
method), 327 (satpy.dependency_tree.DependencyTree
_platform_name_from_filename() method), 686
(satpy.readers.hdfeos_base.HDFEOSBaseFileReader _rad_calibrate() (satpy.readers.abi_l1b.NC_ABI_L1B
method), 253 method), 201
_platform_name_translate _radiance_to_brightness_temperature()
(satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler (satpy.readers.mviri_l1b_fiduceo_nc.IRWVCalibrator
attribute), 228 method), 293
_platform_name_translate _radiance_to_reflectance()
(satpy.readers.mws_l1b.MWSL1BFile at- (satpy.readers.mviri_l1b_fiduceo_nc.VISCalibrator
tribute), 298 method), 294
_populate_group_end_row_using_later_segment() _raw_calibrate() (satpy.readers.abi_l1b.NC_ABI_L1B
(in module satpy.readers.yaml_reader), 385 method), 201
_populate_group_start_end_row_using_neighbour_segments()_read_all() (satpy.readers.eps_l1b.EPSAVHRRFile
(in module satpy.readers.yaml_reader), 385 method), 221
_populate_group_start_row_using_previous_segment() _read_attributes() (satpy.readers.eum_l2_grib.EUML2GribFileHandle
(in module satpy.readers.yaml_reader), 385 method), 225
_populate_positioning_arrays_with_available_segment_info()
_read_axi_fixed_grid()
(in module satpy.readers.yaml_reader), 385 (satpy.readers.clavrx._CLAVRxHelper static
_populate_start_end_rows_of_missing_segments_with_proposed_sizes()method), 217
(in module satpy.readers.yaml_reader), 385 _read_azimuth_noise_blocks()
_posixify_path() (in module satpy.tests.test_readers), (satpy.readers.sar_c_safe.AzimuthNoiseReader
624 method), 317
_postproc() (satpy.readers.gms.gms5_vissr_l1b.Calibrator_read_back_mitiff_and_check()
method), 179 (satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
_preferred_filetype() method), 584
(satpy.readers.yaml_reader.FileYAMLReader _read_cf_from_string_export()
method), 380 (satpy.dataset.dataid.WavelengthRange class
_prepare_cth_dataset() method), 141
(satpy.modifiers.parallax.ParallaxCorrection _read_cf_from_string_list()
method), 166 (satpy.dataset.dataid.WavelengthRange class
_prepare_dataset_for_duplication() method), 141
(satpy.multiscene._multiscene._GroupAliasGenerator
_read_control_block()
method), 176 (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
_prepare_metadata_for_filename_formatting() method), 181
(satpy.writers.Writer static method), 674 _read_data() (satpy.readers.ahi_hsd.AHIHSDFileHandler
_prepare_mocks() (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTNavigation
method), 205
method), 447 _read_data() (satpy.readers.ahi_l1b_gridded_bin.AHIGriddedFileHandle
_prepare_resampler() (satpy.scene.Scene method), method), 208
707 _read_data_from_disk()
_prepare_variable_for_palette() (satpy.readers.hrit_base.HRITSegment
(satpy.readers.hsaf_h5.HSAFFileHandler method), 255
method), 261 _read_data_from_file()
_prepare_variable_for_palette() (satpy.readers.hrit_base.HRITSegment
(satpy.readers.nwcsaf_nc.NcNWCSAF method), 255

Index 775
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_read_dataset_in_file() satpy.writers.awips_tiled), 655


(satpy.readers.hdfeos_base.HDFEOSBaseFileReader_reassign_coords() (satpy.readers.mviri_l1b_fiduceo_nc._DatasetPrepr
method), 253 method), 295
_read_dataset_nodes_from_storage() _recarr2dict() (in module
(satpy.scene.Scene method), 707 satpy.readers.gms.gms5_vissr_l1b), 182
_read_datasets_from_storage() (satpy.scene.Scene _rechunk_if_nonfactor_chunks() (in module
method), 707 satpy.resample), 703
_read_file_like() (satpy.readers.hrit_base.HRITSegment _reduce() (satpy.readers.seviri_l1b_hrit.HRITMSGPrologueEpilogueBase
method), 255 method), 340
_read_fill_value_from_hdf4() _reduce_data() (satpy.scene.Scene method), 707
(satpy.modifiers._crefl.ReflectanceCorrector _reflectance_test()
static method), 153 (satpy.tests.reader_tests.test_fci_l1c_nc.ModuleTestFCIL1cNcRea
_read_from_file() (satpy.readers.msi_safe.SAFEMSIL1C static method), 462
method), 285 _register_data_file()
_read_header() (satpy.readers.ahi_hsd.AHIHSDFileHandler (satpy.aux_download.DataDownloadMixin
method), 206 static method), 682
_read_header() (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
_register_modifier_files() (in module
method), 181 satpy.aux_download), 683
_read_header() (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
_regular_chunks_from_irregular_chunks() (in
method), 345 module satpy.modifiers.angles), 159
_read_image_data() (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
_remove_attributes()
method), 181 (satpy.readers.clavrx._CLAVRxHelper static
_read_image_param() method), 218
(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
_remove_data_at_pressure_levels() (in module
static method), 181 satpy.readers.nucaps), 303
_read_image_params() _remove_datasets_from_files()
(satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler(satpy.readers.viirs_sdr.VIIRSSDRReader
method), 181 method), 375
_read_mda() (satpy.readers.hdfeos_base.HDFEOSBaseFileReader
_remove_failed_datasets() (satpy.scene.Scene
class method), 253 method), 708
_read_mpef_header() _remove_geo_datasets_from_files()
(satpy.readers.eum_l2_bufr.EumetsatL2BufrFileHandler (satpy.readers.viirs_sdr.VIIRSSDRReader
method), 223 method), 375
_read_pug_fixed_grid() _remove_non_viirs_datasets_from_files()
(satpy.readers.clavrx._CLAVRxHelper static (satpy.readers.viirs_sdr.VIIRSSDRReader
method), 218 method), 375
_read_resampler_attrs() _remove_not_loaded_geo_dataset_group()
(satpy.resample.KDTreeResampler method), (satpy.readers.viirs_sdr.VIIRSSDRReader
702 method), 375
_read_trailer() (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
_remove_problem_attrs()
method), 345 (satpy.readers.abi_l2_nc.NC_ABI_L2 static
_read_var_from_hdf4_file() method), 202
(satpy.modifiers._crefl.ReflectanceCorrector _remove_time_coordinate()
static method), 153 (satpy.readers.smos_l2_wind.SMOSL2WINDFileHandler
_read_var_from_hdf4_file_netcdf4() method), 354
(satpy.modifiers._crefl.ReflectanceCorrector _rename_2d_dims_if_necessary()
static method), 153 (satpy.readers.seadas_l2._SEADASL2Base
_read_var_from_hdf4_file_pyhdf() method), 327
(satpy.modifiers._crefl.ReflectanceCorrector _rename_coords() (in module satpy.cf.coords), 106
static method), 153 _rename_coords() (satpy.readers.smos_l2_wind.SMOSL2WINDFileHand
_read_xml_array() (satpy.readers.sar_c_safe.XMLArray method), 354
method), 320 _rename_dims() (in module
_reader_times() (satpy.scene.Scene method), 707 satpy.readers.insat3d_img_l1b_h5), 268
_reapply_factors() (in module _rename_dims() (satpy.readers.abi_base.NC_ABI_BASE

776 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

static method), 201 _replace() (satpy.readers.gms.gms5_vissr_navigation.ImageOffset


_rename_dims() (satpy.readers.mviri_l1b_fiduceo_nc.DatasetAccessor
method), 184
method), 290 _replace() (satpy.readers.gms.gms5_vissr_navigation.Orbit
_rename_dims() (satpy.readers.tropomi_l2.TROPOMIL2FileHandlermethod), 185
method), 355 _replace() (satpy.readers.gms.gms5_vissr_navigation.OrbitAngles
_rename_dims() (satpy.readers.viirs_edr.VIIRSJRRFileHandler method), 186
static method), 369 _replace() (satpy.readers.gms.gms5_vissr_navigation.Pixel
_rename_vars() (satpy.readers.mviri_l1b_fiduceo_nc._DatasetPreprocessor
method), 186
method), 295 _replace() (satpy.readers.gms.gms5_vissr_navigation.PixelNavigationPar
_render_attrs() (satpy.writers.awips_tiled.NetCDFTemplate method), 187
method), 652 _replace() (satpy.readers.gms.gms5_vissr_navigation.PredictedNavigatio
_render_coordinate_attributes() method), 188
(satpy.writers.awips_tiled.NetCDFTemplate _replace() (satpy.readers.gms.gms5_vissr_navigation.ProjectionParamete
method), 652 method), 188
_render_coordinates() _replace() (satpy.readers.gms.gms5_vissr_navigation.Satpos
(satpy.writers.awips_tiled.NetCDFTemplate method), 189
method), 652 _replace() (satpy.readers.gms.gms5_vissr_navigation.ScanningAngles
_render_global_attributes() method), 189
(satpy.writers.awips_tiled.NetCDFTemplate _replace() (satpy.readers.gms.gms5_vissr_navigation.ScanningParameter
method), 652 method), 190
_render_variable() (satpy.writers.awips_tiled.NetCDFTemplate
_replace() (satpy.readers.gms.gms5_vissr_navigation.StaticNavigationPa
method), 652 method), 190
_render_variable_attributes() _replace() (satpy.readers.gms.gms5_vissr_navigation.Vector2D
(satpy.writers.awips_tiled.AWIPSNetCDFTemplate method), 191
method), 648 _replace() (satpy.readers.gms.gms5_vissr_navigation.Vector3D
_render_variable_attributes() method), 191
(satpy.writers.awips_tiled.NetCDFTemplate _replace() (satpy.readers.gms.gms5_vissr_navigation._AttitudePrediction
method), 652 method), 191
_render_variable_encoding() _replace() (satpy.readers.gms.gms5_vissr_navigation._OrbitPrediction
(satpy.writers.awips_tiled.AWIPSNetCDFTemplate method), 192
method), 648 _replace() (satpy.readers.pmw_channels_definitions.FrequencyDoubleSid
_render_variable_encoding() method), 313
(satpy.writers.awips_tiled.NetCDFTemplate _replace() (satpy.readers.pmw_channels_definitions.FrequencyQuadrupl
method), 652 method), 314
_reorder_channels() _replace() (satpy.readers.pmw_channels_definitions.FrequencyRangeBas
(satpy.writers.mitiff.MITIFFWriter method), method), 315
663 _replace() (satpy.writers.awips_tiled.TileInfo method),
_repeat_by_factor() (in module satpy.resample), 703 653
_repeat_cycle_duration _replace() (satpy.writers.awips_tiled.XYFactors
(satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler method), 654
property), 339 _replace_calib_mode_with_actual_coefs()
_repeat_cycle_duration (satpy.readers.utils._CalibrationCoefficientParser
(satpy.readers.seviri_l1b_native.NativeMSGFileHandler method), 358
property), 345 _replicate() (in module satpy.resample), 703
_repeat_cycle_duration _resampled_scene() (satpy.scene.Scene method), 708
(satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler
_reset_satpy_config() (in module
property), 350 satpy.tests.conftest), 590
_replace() (satpy.dataset.dataid.DataID method), 138 _resolution_to_rows_per_scan()
_replace() (satpy.readers.gms.gms5_vissr_navigation.Attitude (satpy.readers.hdfeos_base.HDFEOSBaseFileReader
method), 183 method), 253
_replace() (satpy.readers.gms.gms5_vissr_navigation.EarthEllipsoid
_retrieve_all_with_pooch() (in module
method), 183 satpy.aux_download), 683
_replace() (satpy.readers.gms.gms5_vissr_navigation.ImageNavigationParameters
_retrieve_data_file()
method), 184 (satpy.composites.StaticImageCompositor

Index 777
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 135 (satpy.writers.mitiff.MITIFFWriter method),


_retrieve_offline() (in module 663
satpy.aux_download), 683 _save_image() (in module
_roll_dataset_lon_coord() satpy.tests.reader_tests.test_generic_image),
(satpy.readers.smos_l2_wind.SMOSL2WINDFileHandler 469
method), 355 _save_nonempty_mfdatasets()
_rotate_to_greenwich() (in module (satpy.writers.awips_tiled.AWIPSTiledWriter
satpy.readers.gms.gms5_vissr_navigation), method), 649
193 _save_single_dataset()
_round_trip_projection_lonlat_check() (in mod- (satpy.writers.mitiff.MITIFFWriter method),
ule satpy.tests.reader_tests.test_grib), 483 663
_rows_per_scan (satpy.tests.reader_tests.test_mersi_l1b.FakeHDF5FileHandler2
_scale_and_mask_data_array()
property), 500 (satpy.readers.hdfeos_base.HDFEOSBaseFileReader
_rows_per_scan() (satpy.readers.seadas_l2._SEADASL2Base method), 253
method), 327 _scale_data() (in module satpy.readers.clavrx), 218
_run_crefl() (in module satpy.modifiers._crefl_utils), _scale_data() (satpy.readers.amsr2_l2_gaasp.GAASPFileHandler
157 method), 212
_run_crefl() (satpy.modifiers._crefl_utils._ABICREFLRunner_scale_data() (satpy.readers.hy2_scat_l2b_h5.HY2SCATL2BH5FileHan
method), 154 method), 262
_run_crefl() (satpy.modifiers._crefl_utils._CREFLRunner_scale_data() (satpy.readers.mirs.MiRSL2ncHandler
method), 155 static method), 280
_run_crefl() (satpy.modifiers._crefl_utils._MODISCREFLRunner
_scale_data() (satpy.readers.viirs_edr.VIIRSLSTHandler
method), 156 method), 370
_run_crefl() (satpy.modifiers._crefl_utils._VIIRSCREFLRunner
_scale_earth_axis()
method), 156 (satpy.readers.eum_l2_grib.EUML2GribFileHandler
_run_crefl() (satpy.modifiers._crefl_utils._VIIRSMODISCREFLRunner static method), 225
method), 157 _scale_factors_for_units()
_run_crefl_abi() (in module (satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandler
satpy.modifiers._crefl_utils), 157 static method), 365
_run_dnb_normalization() _scan_size() (satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandle
(satpy.composites.viirs.HistogramDNB method), 365
method), 120 _scene_with_data_array_none_sensor() (in mod-
_runner_class_for_sensor() (in module ule satpy.tests.scene_tests.test_load), 576
satpy.modifiers._crefl_utils), 157 _segment_heights() (satpy.readers.yaml_reader.GEOVariableSegmentYA
_sanitize_args_with_chunks() (in module method), 383
satpy.modifiers.angles), 160 _select_data_bands()
_sanitize_data() (satpy.readers.msi_safe.SAFEMSIMDXML (satpy.composites.MaskingCompositor
method), 286 method), 131
_sanitize_metadata() _select_dataset() (satpy.readers.atms_l1b_nc.AtmsL1bNCFileHandler
(satpy.readers.viirs_edr.VIIRSJRRFileHandler method), 214
method), 369 _select_hdf_dataset()
_sanitize_observer_look_args() (in module (satpy.readers.modis_l2.ModisL2HDFFileHandler
satpy.modifiers.angles), 160 method), 283
_sanitize_writer_kwargs() (in module _set_attributes() (satpy.readers.fci_l2_nc.FciL2CommonFunctions
satpy.writers.cf_writer), 659 method), 230
_saturation_correction() _set_correction_size()
(satpy.composites.viirs.ERFDNB method), (satpy.writers.mitiff.MITIFFWriter method),
119 663
_save_as_enhanced() _set_data_nans() (satpy.composites.MaskingCompositor
(satpy.writers.mitiff.MITIFFWriter method), method), 131
663 _set_dataset_specific_metadata()
_save_as_palette() (satpy.writers.mitiff.MITIFFWriter (satpy.tests.reader_tests.test_viirs_l1b.FakeNetCDF4FileHandlerD
method), 663 static method), 562
_save_datasets_as_mitiff() _set_default_chunks() (in module

778 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.cf.encoding), 110 _shared_sunz_attrs() (in module


_set_default_fill_value() (in module satpy.tests.test_modifiers), 617
satpy.cf.encoding), 110 _shares_required_keys()
_set_default_time_encoding() (in module (satpy.dataset.dataid.DataQuery method),
satpy.cf.encoding), 110 139
_set_file_handle_auto_maskandscale() _sharpen_bands_with_high_res()
(satpy.readers.netcdf_utils.NetCDF4FileHandler (satpy.composites.RatioSharpenedRGB
static method), 301 method), 133
_set_filedata_layout() _should_dims_be_renamed()
(satpy.readers.aapp_l1b.AAPPL1BaseFileHandler (satpy.readers.mviri_l1b_fiduceo_nc.DatasetAccessor
method), 198 method), 290
_set_filedata_layout() _should_download() (in module satpy.aux_download),
(satpy.readers.aapp_l1b.AVHRRAAPPL1BFile 683
method), 199 _should_use_compression_keyword() (in module
_set_filedata_layout() satpy.tests.writer_tests.test_cf ), 582
(satpy.readers.aapp_mhs_amsub_l1c.MHS_AMSUB_AAPPL1CFile
_similar_sat_pos_datetime() (in module
method), 200 satpy.tests.modifier_tests.test_angles), 403
_set_meta() (satpy.tests.reader_tests.test_fci_l1c_nc.FakeH5Variable
_simple_frame_compute()
method), 461 (satpy.multiscene._multiscene.MultiScene
_set_orientation() (in module static method), 172
satpy.readers.yaml_reader), 385 _simple_overlay() (satpy.composites.BackgroundCompositor
_set_sensor_attrs() static method), 123
(satpy.tests.reader_tests.test_mersi_l1b.FakeHDF5FileHandler2
_simple_save_datasets()
method), 500 (satpy.multiscene._multiscene.MultiScene
_set_xarray_kwargs() method), 173
(satpy.readers.netcdf_utils.NetCDF4FileHandler _slice() (satpy.readers.avhrr_l1b_gaclac.GACLACFile
method), 301 method), 216
_set_xy_coords_attrs() _slice_and_update_coords()
(satpy.writers.awips_tiled.AWIPSNetCDFTemplate (satpy.writers.awips_tiled.AWIPSTiledWriter
method), 648 method), 649
_setup_custom_composite_config() (in module _slice_area_from_bbox() (satpy.scene.Scene static
satpy.tests.test_data_download), 605 method), 708
_setup_custom_configs() _slice_data() (satpy.scene.Scene method), 708
(satpy.tests.test_data_download.TestDataDownload _slice_dataset() (satpy.readers.fci_l2_nc.FciL2CommonFunctions
method), 605 method), 230
_setup_custom_reader_config() (in module _slice_datasets() (satpy.scene.Scene method), 708
satpy.tests.test_data_download), 605 _sort_dataset_nodes_by_reader()
_setup_custom_writer_config() (in module (satpy.scene.Scene method), 708
satpy.tests.test_data_download), 605 _sort_files_to_local_remote_and_fsfiles() (in
_setup_h5() (satpy.tests.reader_tests.test_epic_l1b_h5.TestEPICL1bReader
module satpy.utils), 718
method), 454 _sort_segment_filehandler_by_segment_number()
_setup_method() (satpy.tests.reader_tests.test_viirs_compact.TestCompact
(satpy.readers.yaml_reader.GEOSegmentYAMLReader
method), 555 method), 382
_shape() (satpy.readers.msi_safe.SAFEMSITileMDXML _space_mask_height() (in module
method), 287 satpy.modifiers._crefl_utils), 157
_shape_for_resolution() (in module _special_correction_of_proj_string()
satpy.tests.reader_tests.modis_tests._modis_fixtures), (satpy.writers.mitiff.MITIFFWriter method),
418 663
_shape_test() (satpy.tests.reader_tests.test_fci_l1c_nc.ModuleTestFCIL1cNcReader
_split_line() (satpy.readers.hdfeos_base.HDFEOSBaseFileReader
static method), 462 class method), 253
_shared_keys() (in module satpy.dataset.metadata), _split_rgbs() (satpy.writers.awips_tiled.AWIPSTiledWriter
143 method), 649
_shared_metadata_checks() (in module _square_root_channels() (in module
satpy.tests.reader_tests.test_viirs_edr), 557 satpy.composites.sar), 116

Index 779
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

_srads2bt() (satpy.readers.seviri_base.SEVIRICalibrationAlgorithmmethod), 496


method), 331 _test_dataset_single_sector_variable()
_srgb_gamma() (in module satpy.enhancements), 148 (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
_stack_area_defs() (in module method), 496
satpy.readers.yaml_reader), 385 _test_dataset_single_variable()
_stack_blend_by_weights() (in module (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
satpy.multiscene._blend_funcs), 171 method), 497
_stack_no_weights() (in module _test_dataset_variable()
satpy.multiscene._blend_funcs), 171 (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
_stack_select_by_weights() (in module method), 497
satpy.multiscene._blend_funcs), 171 _test_dataset_variables()
_stack_with_weights() (in module (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
satpy.multiscene._blend_funcs), 171 method), 497
_standardize_dims() _test_find_files_and_readers() (in module
(satpy.readers.atms_l1b_nc.AtmsL1bNCFileHandler satpy.tests.reader_tests.test_mersi_l1b), 504
static method), 214 _test_multi_resolutions() (in module
_standardize_dims() satpy.tests.reader_tests.test_mersi_l1b), 504
(satpy.readers.ici_l1b_nc.IciL1bNCFileHandler _three_d_effect() (in module satpy.enhancements),
static method), 267 148
_standardize_dims() _three_d_effect_delayed() (in module
(satpy.readers.mws_l1b.MWSL1BFile static satpy.enhancements), 148
method), 298 _tile_filler() (satpy.writers.awips_tiled.AWIPSTiledWriter
_standardize_dims() method), 649
(satpy.readers.vii_base_nc.ViiNCBaseFileHandler_tile_identifier() (satpy.writers.awips_tiled.LetteredTileGenerator
method), 363 method), 651
_start_time_from_filename() _tile_identifier() (satpy.writers.awips_tiled.NumberedTileGenerator
(satpy.readers.hdfeos_base.HDFEOSBaseFileReader method), 653
method), 253 _tile_number() (satpy.writers.awips_tiled.NumberedTileGenerator
_str2datetime() (in module satpy.cf.decoding), 110 method), 653
_str2dict() (in module satpy.cf.decoding), 110 _timeline (satpy.readers.ahi_hsd.AHIHSDFileHandler
_strip_invalid_lat() property), 206
(satpy.readers.avhrr_l1b_gaclac.GACLACFile _tl15() (satpy.readers.seviri_base.SEVIRICalibrationAlgorithm
method), 216 method), 331
_strptime() (satpy.readers.mersi_l1b.MERSIL1B _to_trimmed_dict() (satpy.dataset.dataid.DataQuery
method), 278 method), 140
_sunz_area_def() (in module _touch_geo_file() (in module
satpy.tests.test_modifiers), 617 satpy.tests.reader_tests.test_viirs_sdr), 568
_sunz_bigger_area_def() (in module _try_add_coordinate() (in module satpy.cf.coords),
satpy.tests.test_modifiers), 617 106
_sunz_stacked_area_def() (in module _try_decode_object() (in module satpy.cf.attrs), 105
satpy.tests.test_modifiers), 617 _try_get_units_from_coords() (in module
_sunzen_corr_cos_ndarray() (in module satpy.cf.coords), 106
satpy.modifiers.angles), 160 _try_to_get_crs() (in module satpy.cf.coords), 106
_sunzen_reduction_ndarray() (in module _unpack_tarfile_to() (in module satpy.demo.fci),
satpy.modifiers.angles), 160 145
_supported_modes (satpy.composites.MaskingCompositor_unpickle() (satpy.dataset.dataid.DataID class
attribute), 131 method), 138
_swap_attributes_end_time() _unpickle() (satpy.dataset.dataid.ValueList class
(satpy.writers.awips_tiled.AWIPSNetCDFTemplate method), 141
method), 648 _untar_luts() (satpy.readers.ahi_l1b_gridded_bin.AHIGriddedFileHand
_swath_def_of_data_arrays() (in module static method), 208
satpy.tests.utils), 643 _unwrap_angles() (satpy.readers.gms.gms5_vissr_navigation.AttitudePre
_test_dataset_sector_variables() method), 183
(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2 _unwrap_angles() (satpy.readers.gms.gms5_vissr_navigation.OrbitPredic

780 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 186 method), 304


_unzip_FSFile() (in module satpy.readers.utils), 359 _valid_min_max() (satpy.readers.seadas_l2._SEADASL2Base
_unzip_local_file() (in module satpy.readers.utils), method), 327
359 _verify_reader_info_assign_config_files() (in
_unzip_with_bz2() (in module satpy.readers.utils), module satpy.readers.yaml_reader), 385
359 _verify_unchanged_chunks() (in module
_unzip_with_pbzip() (in module satpy.readers.utils), satpy.tests.test_utils), 630
359 _verify_unified() (in module satpy.tests.test_utils),
_update_attrs() (satpy.composites.CategoricalDataCompositor 630
method), 123 _vis_calibrate() (in module satpy.readers.aapp_l1b),
_update_attrs() (satpy.composites.glm.HighlightCompositor 199
method), 115 _vis_calibrate() (satpy.readers.abi_l1b.NC_ABI_L1B
_update_attrs() (satpy.readers.avhrr_l1b_gaclac.GACLACFile method), 201
method), 216 _vis_calibrate() (satpy.readers.ahi_hsd.AHIHSDFileHandler
_update_attrs() (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
method), 206
method), 181 _viscounts2radiance()
_update_attrs() (satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriBase
(satpy.readers.goes_imager_nc.GOESNCBaseFileHandler
method), 292 static method), 248
_update_attrs() (satpy.readers.oceancolorcci_l3_nc.OCCCIFileHandler
_warn_if_irregular_input_chunks()
method), 305 (satpy.modifiers.angles.ZarrCacheHelper
_update_attrs() (satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler
static method), 159
method), 339 _warn_if_pretty_but_not_unique() (in module
_update_attrs() (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
satpy.cf.coords), 106
method), 345 _water_detection() (in module
_update_attrs() (satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler
satpy.enhancements.viirs), 148
method), 350 _weight_data() (satpy.composites.DayNightCompositor
_update_cached_wrapper() (in module method), 127
satpy.composites.config_loader), 113 _wrap_2pi() (in module
_update_data_arr_with_filename_attrs() satpy.readers.gms.gms5_vissr_navigation),
(satpy.readers.abi_l2_nc.NC_ABI_L2 method), 193
202 _write() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.VissrFileWrite
_update_data_attributes() method), 414
(satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandler
_write_attributes()
method), 365 (satpy.tests.reader_tests.test_ici_l1b_nc.IciL1bFakeFileWriter
_update_dataset_attributes() static method), 493
(satpy.readers.aapp_l1b.AAPPL1BaseFileHandler_write_attributes()
method), 198 (satpy.tests.reader_tests.test_mws_l1b_nc.MWSL1BFakeFileWrite
_update_dependency_tree() (satpy.scene.Scene static method), 511
method), 708 _write_calibration_data_group()
_update_dict_with_filter_query() (in module (satpy.tests.reader_tests.test_mws_l1b_nc.MWSL1BFakeFileWrite
satpy.dataset.dataid), 141 static method), 511
_update_encoding_dataset_names() (in module _write_cmap_to_file() (in module
satpy.cf.encoding), 111 satpy.tests.enhancement_tests.test_enhancements),
_update_metadata() (satpy.readers.epic_l1b_h5.DscovrEpicL1BH5FileHandler
401
method), 220 _write_control_block()
_update_metadata() (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler
(satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.VissrFileWriter
method), 248 method), 414
_update_missing_metadata() _write_fake_composite_yaml() (in module
(satpy.composites.SingleBandCompositor satpy.tests.test_config), 604
static method), 134 _write_fake_enh_yamls() (in module
_update_with_fs_open_kwargs() satpy.tests.test_config), 604
(satpy.readers.FSFile method), 387 _write_fake_reader_yaml() (in module
_upsample_geolocation_uncached() satpy.tests.test_config), 604
(satpy.readers.nwcsaf_nc.NcNWCSAF _write_fake_writer_yaml() (in module

Index 781
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.test_config), 604 ACSPOFileHandler (class in satpy.readers.acspo), 202


_write_image_data() AdaptiveDNB (class in satpy.composites.viirs), 118
(satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.VissrFileWriter
add_alpha_bands() (in module satpy.composites), 135
method), 414 add_attributes() (in module
_write_image_parameter() satpy.tests.reader_tests._li_test_utils), 426
(satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.VissrFileWriter
add_bands() (in module satpy.composites), 135
method), 414 add_child() (satpy.dependency_tree.Tree method), 687
_write_image_parameters() add_child() (satpy.node.Node method), 688
(satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.VissrFileWriter
add_config_to_tree() (satpy.writers.DecisionTree
method), 414 method), 671
_write_measurement_data_group() add_config_to_tree()
(satpy.tests.reader_tests.test_ici_l1b_nc.IciL1bFakeFileWriter
(satpy.writers.EnhancementDecisionTree
static method), 493 method), 672
_write_measurement_data_group() add_coordinates_attrs_coords() (in module
(satpy.tests.reader_tests.test_mws_l1b_nc.MWSL1BFakeFileWriter
satpy.cf.coords), 107
static method), 511 add_crs_xy_coords() (in module satpy.resample), 703
_write_navigation_data_group() add_decorate() (in module satpy.writers), 675
(satpy.tests.reader_tests.test_ici_l1b_nc.IciL1bFakeFileWriter
add_downsampled_geometry_data() (in module
static method), 493 satpy.tests.reader_tests.test_sgli_l1b), 546
_write_navigation_data_group() add_leaf() (satpy.dependency_tree.Tree method), 687
(satpy.tests.reader_tests.test_mws_l1b_nc.MWSL1BFakeFileWriter
add_logo() (in module satpy.writers), 676
static method), 511 add_optional_nodes() (satpy.node.CompositorNode
_write_quality_group() method), 688
(satpy.tests.reader_tests.test_ici_l1b_nc.IciL1bFakeFileWriter
add_overlay() (in module satpy.writers), 676
static method), 493 add_provided_dataset()
_write_quality_group() (satpy.readers.li_base_nc.LINCFileHandler
(satpy.tests.reader_tests.test_mws_l1b_nc.MWSL1BFakeFileWriter
method), 271
static method), 511 add_required_nodes() (satpy.node.CompositorNode
_write_status_group() method), 688
(satpy.tests.reader_tests.test_mws_l1b_nc.MWSL1BFakeFileWriter
add_scale() (in module satpy.writers), 676
static method), 511 add_scanline_acq_time() (in module
_write_test_h5netcdf() (in module satpy.readers.seviri_base), 332
satpy.tests.reader_tests.test_netcdf_utils), add_sensor_enhancements() (satpy.writers.Enhancer
514 method), 672
_write_test_netcdf4() (in module add_text() (in module satpy.writers), 676
satpy.tests.reader_tests.test_netcdf_utils), add_time_bounds_dimension() (in module
514 satpy.cf.coords), 107
_write_uncompressed_file() (in module add_xy_coords() (in module satpy.resample), 703
satpy.readers.utils), 359 add_xy_coords_attrs() (in module satpy.cf.coords),
_yield_specific_granules() (in module 107
satpy.demo.viirs_sdr), 146 adjust_attrs() (satpy.readers.agri_l1.HDF_AGRI_L1
_zarr_pattern() (satpy.modifiers.angles.ZarrCacheHelper method), 203
method), 159 adjust_attrs() (satpy.readers.ghi_l1.HDF_GHI_L1
method), 238
A adjust_scaling_factors()
AAPPL1BaseFileHandler (class in (satpy.readers.omps_edr.EDRFileHandler
satpy.readers.aapp_l1b), 198 method), 310
AbstractYAMLReader (class in adjust_scaling_factors()
satpy.readers.yaml_reader), 377 (satpy.readers.viirs_l1b.VIIRSL1BFileHandler
ac_file() (in module method), 372
satpy.tests.reader_tests.test_goci2_l2_nc), adjust_scaling_factors()
477 (satpy.readers.viirs_l2.VIIRSL2FileHandler
accumulation_dimensions() (in module method), 373
satpy.tests.reader_tests._li_test_utils), 426 aggregate() (satpy.scene.Scene method), 708

782 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

AHIGriddedFileHandler (class in analysis_time (satpy.readers.hsaf_grib.HSAFFileHandler


satpy.readers.ahi_l1b_gridded_bin), 207 property), 261
AHIHSDFileHandler (class in satpy.readers.ahi_hsd), angle2xyz() (in module satpy.utils), 718
204 angle_between_earth_and_sun
ahil2_filehandler() (in module (satpy.readers.gms.gms5_vissr_navigation.Attitude
satpy.tests.reader_tests.test_ahi_l2_nc), 438 attribute), 183
align_geo_coordinates() angle_between_sat_spin_and_yz_plane
(satpy.composites.CompositeBase static (satpy.readers.gms.gms5_vissr_navigation.Attitude
method), 125 attribute), 183
ALL_BAND_PREFIXES (satpy.tests.test_demo.TestVIIRSSDRDemoDownload
angle_between_sat_spin_and_z_axis
attribute), 611 (satpy.readers.gms.gms5_vissr_navigation.Attitude
all_composite_ids() (satpy.scene.Scene method), attribute), 183
708 angles (satpy.readers.gms.gms5_vissr_navigation._OrbitPrediction
all_composite_names() (satpy.scene.Scene method), attribute), 192
708 angles (satpy.readers.gms.gms5_vissr_navigation.Orbit
all_composite_sensors() (in module attribute), 185
satpy.composites.config_loader), 113 angles() (satpy.readers.viirs_compact.VIIRSCompactFileHandler
all_dataset_ids (satpy.readers.yaml_reader.AbstractYAMLReadermethod), 367
property), 378 annotation_file() (in module
all_dataset_ids() (satpy.scene.Scene method), 708 satpy.tests.reader_tests.test_sar_c_safe),
all_dataset_names (satpy.readers.yaml_reader.AbstractYAMLReader 528
property), 378 annotation_filehandler() (in module
all_dataset_names() (satpy.scene.Scene method), satpy.tests.reader_tests.test_sar_c_safe),
709 528
all_files() (in module antenna_temperature
satpy.tests.reader_tests.test_oli_tirs_l1_tif ), (satpy.readers.atms_l1b_nc.AtmsL1bNCFileHandler
524 property), 214
ALL_GEO_PREFIXES (satpy.tests.test_demo.TestVIIRSSDRDemoDownload
any_key (satpy.writers.DecisionTree attribute), 671
attribute), 611 aod_file() (in module
all_modifier_names() (satpy.scene.Scene method), satpy.tests.reader_tests.test_viirs_edr), 557
709 append_data_and_trailer_content_to_seviri_native_header()
all_same_area (satpy.multiscene._multiscene.MultiScene (in module satpy.tests.reader_tests.test_seviri_l1b_native),
property), 173 544
all_same_area (satpy.scene.Scene property), 709 apply() (satpy.writers.Enhancer method), 672
all_same_proj (satpy.scene.Scene property), 709 apply_accumulate_index_offset()
alpha_channel() (in module (satpy.readers.li_base_nc.LINCFileHandler
satpy.tests.reader_tests.test_generic_image), method), 271
469 apply_area_def() (satpy.writers.awips_tiled.AWIPSNetCDFTemplate
alt (satpy.readers.seviri_l1b_icare.SEVIRI_ICARE method), 648
property), 342 apply_atms_limb_correction() (in module
ALTITUDE (in module satpy.readers.mviri_l1b_fiduceo_nc), satpy.readers.mirs), 280
290 apply_attributes() (satpy.readers.mirs.MiRSL2ncHandler
amend_seviri_native_null_header() (in module method), 280
satpy.tests.reader_tests.test_seviri_l1b_native), apply_broadcast_to()
543 (satpy.readers.li_base_nc.LINCFileHandler
AMIL1bNetCDF (class in satpy.readers.ami_l1b), 209 method), 271
AMSR2L1BFileHandler (class in apply_earthsun_distance_correction() (in mod-
satpy.readers.amsr2_l1b), 210 ule satpy.readers.utils), 359
AMSR2L2FileHandler (class in apply_fill_value() (satpy.readers.li_base_nc.LINCFileHandler
satpy.readers.amsr2_l2), 211 method), 271
amv_file() (in module apply_lut() (in module
satpy.tests.reader_tests.test_fci_l2_nc), 468 satpy.readers.insat3d_img_l1b_h5), 268
amv_filehandler() (in module apply_milliseconds_to_timedelta()
satpy.tests.reader_tests.test_fci_l2_nc), 468 (satpy.readers.li_base_nc.LINCFileHandler

Index 783
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 271 (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGBase


apply_misc_metadata() method), 537
(satpy.writers.awips_tiled.AWIPSNetCDFTemplateassert_dict_array_equality() (in module
method), 648 satpy.tests.utils), 643
apply_modifier_info() assert_maximum_dask_computes() (in module
(satpy.composites.CompositeBase method), satpy.tests.utils), 643
125 atmospheric_path_length_correction() (in mod-
apply_rad_correction() (in module ule satpy.utils), 718
satpy.readers.utils), 359 atms_fake_dataset() (in module
apply_scales() (satpy.readers.xmlformat.XMLFormat satpy.tests.reader_tests.test_atms_l1b_nc),
method), 377 444
apply_seconds_to_datetime() atms_file() (in module satpy.tests.test_readers), 624
(satpy.readers.li_base_nc.LINCFileHandler ATMS_SDR_FileHandler (class in
method), 271 satpy.readers.atms_sdr_hdf5), 214
apply_seconds_to_timedelta() AtmsL1bNCFileHandler (class in
(satpy.readers.li_base_nc.LINCFileHandler satpy.readers.atms_l1b_nc), 213
method), 271 Attitude (class in satpy.readers.gms.gms5_vissr_navigation),
apply_tile_coord_encoding() 182
(satpy.writers.awips_tiled.AWIPSNetCDFTemplateattitude (satpy.readers.gms.gms5_vissr_navigation._AttitudePrediction
method), 648 attribute), 191
apply_tile_info() (satpy.writers.awips_tiled.AWIPSNetCDFTemplate
attitude (satpy.readers.gms.gms5_vissr_navigation.PixelNavigationParam
method), 648 attribute), 187
apply_transforms() (satpy.readers.li_base_nc.LINCFileHandler
attitude (satpy.readers.gms.gms5_vissr_navigation.PredictedNavigationP
method), 271 attribute), 188
apply_use_rescaling() attitude_expected()
(satpy.readers.li_base_nc.LINCFileHandler (satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.TestPred
method), 271 method), 415
area (satpy.readers.ahi_hsd.AHIHSDFileHandler prop- attitude_prediction() (in module
erty), 206 satpy.tests.reader_tests.gms.test_gms5_vissr_navigation),
area (satpy.readers.ahi_l2_nc.HIML2NCFileHandler 416
property), 209 attitude_prediction()
area() (in module satpy.tests.reader_tests.test_satpy_cf_nc), (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileHandler
530 method), 412
area() (satpy.tests.compositor_tests.test_viirs.TestVIIRSComposites
AttitudePrediction (class in
method), 398 satpy.readers.gms.gms5_vissr_navigation),
area2cf() (in module satpy.cf.area), 104 183
area_def_exp() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileHandler
AttributeEncoder (class in satpy.cf.attrs), 104
method), 412 attrs (satpy.readers.atms_l1b_nc.AtmsL1bNCFileHandler
area_exp() (satpy.tests.reader_tests.test_cmsaf_claas.TestCLAAS2SingleFile
property), 214
method), 451 attrs (satpy.readers.mviri_l1b_fiduceo_nc.DatasetAccessor
area_exp() (satpy.tests.reader_tests.test_oceancolorcci_l3_nc.TestOCCCIReader
property), 290
method), 521 attrs() (satpy.tests.cf_tests.test_decoding.TestDecodeAttrs
area_extent_exp() (satpy.tests.reader_tests.test_cmsaf_claas.TestCLAAS2SingleFile
method), 395
method), 451 attrs_exp() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileHa
AreaDefEstimator (class in method), 412
satpy.readers.gms.gms5_vissr_l1b), 178 available_composite_ids() (satpy.scene.Scene
AreaDefEstimator (class in method), 709
satpy.readers.goes_imager_nc), 245 available_composite_names() (satpy.scene.Scene
AscatSoilMoistureBufr (class in method), 709
satpy.readers.ascat_l2_soilmoisture_bufr), available_dataset_ids
213 (satpy.readers.yaml_reader.AbstractYAMLReader
assert_attrs_equal() (in module satpy.tests.utils), property), 378
643 available_dataset_ids
assert_attrs_equal() (satpy.readers.yaml_reader.FileYAMLReader

784 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property), 380 method), 278


available_dataset_ids() (satpy.scene.Scene available_datasets()
method), 709 (satpy.readers.mirs.MiRSL2ncHandler
available_dataset_names method), 280
(satpy.readers.yaml_reader.AbstractYAMLReader available_datasets()
property), 378 (satpy.readers.modis_l3.ModisL3GriddedHDFFileHandler
available_dataset_names() (satpy.scene.Scene method), 285
method), 710 available_datasets()
available_datasets() (in module (satpy.readers.satpy_cf_nc.SatpyCFFileHandler
satpy.tests.test_yaml_reader), 642 method), 324
available_datasets() available_datasets()
(satpy.readers.aapp_l1b.AVHRRAAPPL1BFile (satpy.readers.smos_l2_wind.SMOSL2WINDFileHandler
method), 199 method), 355
available_datasets() available_datasets()
(satpy.readers.abi_l2_nc.NC_ABI_L2 method), (satpy.readers.tropomi_l2.TROPOMIL2FileHandler
202 method), 355
available_datasets() available_datasets()
(satpy.readers.amsr2_l2_gaasp.GAASPFileHandler (satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandler
method), 212 method), 365
available_datasets() available_datasets()
(satpy.readers.clavrx.CLAVRXHDF4FileHandler (satpy.readers.viirs_edr.VIIRSJRRFileHandler
method), 216 method), 369
available_datasets() available_datasets()
(satpy.readers.clavrx.CLAVRXNetCDFFileHandler (satpy.readers.viirs_l1b.VIIRSL1BFileHandler
method), 217 method), 372
available_datasets() available_datasets()
(satpy.readers.cmsaf_claas2.CLAAS2 method), (satpy.readers.viirs_l2.VIIRSL2FileHandler
218 method), 373
available_datasets() available_datasets()
(satpy.readers.file_handlers.BaseFileHandler (satpy.tests.utils.FakeFileHandler method),
method), 232 642
available_datasets() available_readers() (in module satpy.readers), 389
(satpy.readers.geocat.GEOCATFileHandler available_writers() (in module satpy.writers), 677
method), 236 average_datetimes() (in module
available_datasets() satpy.dataset.metadata), 143
(satpy.readers.glm_l2.NCGriddedGLML2 AVHRRAAPPL1BFile (class in satpy.readers.aapp_l1b),
method), 240 198
available_datasets() AWIPSNetCDFTemplate (class in
(satpy.readers.goes_imager_nc.GOESNCBaseFileHandler satpy.writers.awips_tiled), 648
method), 248 AWIPSTiledVariableDecisionTree (class in
available_datasets() satpy.writers.awips_tiled), 648
(satpy.readers.grib.GRIBFileHandler method), AWIPSTiledWriter (class in satpy.writers.awips_tiled),
251 649
available_datasets() AWS_EPS_Sterna_BaseFileHandler (class in
(satpy.readers.iasi_l2.IASIL2CDRNC method), satpy.readers.mwr_l1b), 296
263 AWS_EPS_Sterna_MWR_L1BFile (class in
available_datasets() satpy.readers.mwr_l1b), 297
(satpy.readers.li_base_nc.LINCFileHandler aws_eps_sterna_mwr_level1_file() (in module
method), 271 satpy.tests.reader_tests.conftest), 426
available_datasets() aws_mwr_file() (in module
(satpy.readers.mcd12q1.MCD12Q1HDFFileHandler satpy.tests.reader_tests.conftest), 426
method), 275 aws_mwr_handler() (in module
available_datasets() satpy.tests.reader_tests.conftest), 426
(satpy.readers.mimic_TPW2_nc.MimicTPW2FileHandler
aws_mwr_l1c_file() (in module

Index 785
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.conftest), 427 bands_250 (satpy.tests.reader_tests.test_mersi_l1b.TestFY3EMERSIllL1B


aws_mwr_l1c_handler() (in module attribute), 503
satpy.tests.reader_tests.conftest), 427 bandwidth (satpy.readers.pmw_channels_definitions.FrequencyDoubleSide
AWS_MWR_L1CFile (class in satpy.readers.mwr_l1c), 297 attribute), 313
AzimuthNoiseReader (class in bandwidth (satpy.readers.pmw_channels_definitions.FrequencyQuadrupleS
satpy.readers.sar_c_safe), 316 attribute), 314
bandwidth (satpy.readers.pmw_channels_definitions.FrequencyRangeBase
B attribute), 315
b11_data() (in module BaseFileHandler (class in satpy.readers.file_handlers),
satpy.tests.reader_tests.test_oli_tirs_l1_tif ), 231
524 BaseTestCaseEPSL1B (class in
b11_file() (in module satpy.tests.reader_tests.test_eps_l1b), 455
satpy.tests.reader_tests.test_oli_tirs_l1_tif ), bbox() (in module satpy.readers.utils), 359
524 beta_nought (satpy.tests.reader_tests.test_sar_c_safe.Calibration
b4_data() (in module attribute), 527
satpy.tests.reader_tests.test_oli_tirs_l1_tif ), bfield() (in module satpy.readers.hrpt), 260
524 BilinearResampler (class in satpy.resample), 699
b4_file() (in module BitFlags (class in satpy.readers.olci_nc), 306
satpy.tests.reader_tests.test_oli_tirs_l1_tif ), blend() (satpy.multiscene._multiscene.MultiScene
524 method), 173
BackgroundCompositor (class in satpy.composites), btemp_threshold() (in module satpy.enhancements),
122 148
BucketAvg (class in satpy.resample), 700
band_calibration (satpy.readers.oli_tirs_l1_tif.OLITIRSMDReader
property), 309 BucketCount (class in satpy.resample), 700
band_indices (satpy.readers.msi_safe.SAFEMSIMDXML BucketFraction (class in satpy.resample), 701
property), 286 BucketResamplerBase (class in satpy.resample), 701
band_offset() (satpy.readers.msi_safe.SAFEMSIMDXMLBucketSum (class in satpy.resample), 701
method), 286 build_area_def() (satpy.readers.oli_tirs_l1_tif.OLITIRSMDReader
band_offsets (satpy.readers.msi_safe.SAFEMSIMDXML method), 310
property), 286 build_colormap() (satpy.composites.ColormapCompositor
band_saturation (satpy.readers.oli_tirs_l1_tif.OLITIRSMDReader static method), 125
property), 309 bx (satpy.writers.awips_tiled.XYFactors attribute), 654
by (satpy.writers.awips_tiled.XYFactors attribute), 654
bands_1000 (satpy.tests.reader_tests.test_mersi_l1b.MERSI12llL1BTester
attribute), 500
C
bands_1000 (satpy.tests.reader_tests.test_mersi_l1b.TestFY3AMERSI1L1B
attribute), 501 c01_counts() (in module
bands_1000 (satpy.tests.reader_tests.test_mersi_l1b.TestFY3BMERSI1L1B satpy.tests.reader_tests.test_abi_l1b), 430
attribute), 501 c01_rad() (in module
bands_1000 (satpy.tests.reader_tests.test_mersi_l1b.TestFY3CMERSI1L1B satpy.tests.reader_tests.test_abi_l1b), 430
attribute), 502 c01_rad_h5netcdf() (in module
bands_1000 (satpy.tests.reader_tests.test_mersi_l1b.TestFY3DMERSI2L1B satpy.tests.reader_tests.test_abi_l1b), 430
attribute), 502 c01_refl() (in module
bands_1000 (satpy.tests.reader_tests.test_mersi_l1b.TestFY3EMERSIllL1Bsatpy.tests.reader_tests.test_abi_l1b), 430
attribute), 503 c07_bt_creator() (in module
bands_250 (satpy.tests.reader_tests.test_mersi_l1b.MERSI12llL1BTester satpy.tests.reader_tests.test_abi_l1b), 430
attribute), 500 c_step (satpy.readers.olci_nc.NCOLCILowResData
bands_250 (satpy.tests.reader_tests.test_mersi_l1b.TestFY3AMERSI1L1B property), 308
attribute), 501 cache_clear() (satpy.modifiers.angles.ZarrCacheHelper
bands_250 (satpy.tests.reader_tests.test_mersi_l1b.TestFY3BMERSI1L1B method), 159
attribute), 501 cache_to_zarr_if() (in module
bands_250 (satpy.tests.reader_tests.test_mersi_l1b.TestFY3CMERSI1L1B satpy.modifiers.angles), 160
attribute), 502 cached_entry_point() (in module satpy._config), 679
bands_250 (satpy.tests.reader_tests.test_mersi_l1b.TestFY3DMERSI2L1B
cached_file_content
attribute), 502 (satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerBase

786 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

attribute), 460 calibrate() (satpy.readers.viirs_vgac_l1c_nc.VGACFileHandler


cal_params() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileHandler
method), 375
method), 412 calibrate_bt() (in module satpy.readers.modis_l1b),
calc_area_extent() (satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler 282
method), 228 calibrate_counts() (in module
calculate_area_extent satpy.readers.modis_l1b), 282
(satpy.readers.eum_l2_grib.EUML2GribFileHandler calibrate_counts_to_physical_quantity()
attribute), 225 (satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler
calculate_area_extent() (in module method), 228
satpy.readers.fci_base), 225 calibrate_counts_to_rad()
calculate_area_extent() (in module (satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler
satpy.readers.seviri_base), 332 method), 228
calibrate() (satpy.readers.aapp_l1b.AVHRRAAPPL1BFile calibrate_ir() (satpy.readers.sgli_l1b.HDF5SGLI
method), 199 method), 352
calibrate() (satpy.readers.aapp_mhs_amsub_l1c.MHS_AMSUB_AAPPL1CFile
calibrate_rad_to_bt()
method), 200 (satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler
calibrate() (satpy.readers.ahi_hsd.AHIHSDFileHandler method), 228
method), 206 calibrate_rad_to_refl()
calibrate() (satpy.readers.ahi_l1b_gridded_bin.AHIGriddedFileHandler
(satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler
method), 208 method), 228
calibrate() (satpy.readers.electrol_hrit.HRITGOMSFileHandler
calibrate_radiance() (in module
method), 219 satpy.readers.modis_l1b), 283
calibrate() (satpy.readers.epic_l1b_h5.DscovrEpicL1BH5FileHandler
calibrate_refl() (in module
static method), 220 satpy.readers.modis_l1b), 283
calibrate() (satpy.readers.fci_l1c_nc.FCIL1cNCFileHandlercalibrate_solar_channel()
method), 228 (satpy.readers.hrpt.HRPTFile method), 259
calibrate() (satpy.readers.fy4_base.FY4Base calibrate_thermal_channel()
method), 235 (satpy.readers.hrpt.HRPTFile method), 259
calibrate() (satpy.readers.gms.gms5_vissr_l1b.Calibrator calibrate_to_atmospheric()
method), 179 (satpy.readers.msi_safe.SAFEMSIMDXML
calibrate() (satpy.readers.goes_imager_hrit.HRITGOESFileHandler method), 286
method), 241 calibrate_to_bt() (satpy.readers.fy4_base.FY4Base
calibrate() (satpy.readers.goes_imager_nc.GOESEUMNCFileHandler method), 235
method), 246 calibrate_to_radiances()
calibrate() (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler (satpy.readers.msi_safe.SAFEMSIMDXML
method), 249 method), 286
calibrate() (satpy.readers.goes_imager_nc.GOESNCFileHandler
calibrate_to_radiances_l1b()
method), 249 (satpy.readers.msi_safe.SAFEMSIMDXML
calibrate() (satpy.readers.hrit_jma.HRITJMAFileHandler method), 286
method), 259 calibrate_to_reflectance()
calibrate() (satpy.readers.mviri_l1b_fiduceo_nc.IRWVCalibrator (satpy.readers.fy4_base.FY4Base method),
method), 293 235
calibrate() (satpy.readers.mviri_l1b_fiduceo_nc.VISCalibrator
calibrate_to_reflectances()
method), 294 (satpy.readers.msi_safe.SAFEMSIMDXML
calibrate() (satpy.readers.oli_tirs_l1_tif.OLITIRSCHReader method), 286
method), 309 calibrate_vis() (satpy.readers.sgli_l1b.HDF5SGLI
calibrate() (satpy.readers.seviri_base.SEVIRICalibrationHandler method), 352
method), 332 Calibration (class in
calibrate() (satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler satpy.tests.reader_tests.test_sar_c_safe),
method), 339 527
calibrate() (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
calibration_file() (in module
method), 345 satpy.tests.reader_tests.test_sar_c_safe),
calibrate() (satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler 528
method), 350 calibration_filehandler() (in module

Index 787
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_sar_c_safe), 126
529 check_pressure() (satpy.tests.reader_tests.test_iasi_l2.TestIasiL2
CalibrationCoefficientPicker (class in method), 491
satpy.readers.utils), 356 check_required_properties() (in module
CalibrationError, 240 satpy.tests.writer_tests.test_awips_tiled),
Calibrator (class in satpy.readers.gms.gms5_vissr_l1b), 580
179 check_satpy() (in module satpy.utils), 718
Calibrator (class in satpy.readers.sar_c_safe), 317 check_sensing_times()
calibrator (satpy.readers.hrpt.HRPTFile property), (satpy.tests.reader_tests.test_iasi_l2.TestIasiL2
260 method), 491
CalibratorPatcher (class in check_tile_exists()
satpy.tests.reader_tests.test_avhrr_l0_hrpt), (satpy.writers.awips_tiled.AWIPSTiledWriter
445 method), 650
CategoricalDataCompositor (class in check_times() (in module satpy.composites), 136
satpy.composites), 123 check_unique_projection_coords() (in module
celestial_events (satpy.readers.seviri_l1b_native_hdr.L15DataHeaderRecord
satpy.cf.coords), 107
property), 348 check_variable_extra_info()
center_time (satpy.readers.oli_tirs_l1_tif.OLITIRSMDReader (satpy.readers.li_base_nc.LINCFileHandler
property), 310 method), 271
central (satpy.readers.pmw_channels_definitions.FrequencyDoubleSideBandBase
chunk() (satpy.scene.Scene method), 710
attribute), 313 cimss_true_color_contrast() (in module
central (satpy.readers.pmw_channels_definitions.FrequencyQuadrupleSideBandBase
satpy.enhancements.abi), 147
attribute), 314 cira_stretch() (in module satpy.enhancements), 149
central (satpy.readers.pmw_channels_definitions.FrequencyRangeBase
CLAAS2 (class in satpy.readers.cmsaf_claas2), 218
attribute), 315 CLAVRXHDF4FileHandler (class in
cf_scene() (in module satpy.readers.clavrx), 216
satpy.tests.reader_tests.test_satpy_cf_nc), CLAVRXNetCDFFileHandler (class in
530 satpy.readers.clavrx), 217
CFWriter (class in satpy.writers.cf_writer), 658 clear() (satpy.dataset.dataid.DataID method), 138
chan_patterns (satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerAF
clear_cache() (in module
attribute), 460 satpy.tests.reader_tests.test_fci_l1c_nc),
chan_patterns (satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerBase
465
attribute), 460 close() (satpy.tests.reader_tests.test_ami_l1b.FakeDataset
chan_patterns (satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerFDHSI
method), 439
attribute), 460 close() (satpy.tests.reader_tests.test_scmi.FakeDataset
chan_patterns (satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerHRFI
method), 531
attribute), 461 closed_named_temp_file() (in module
channel_id() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.TestMetadata
satpy.tests.enhancement_tests.test_enhancements),
method), 481 401
chebyshev() (in module satpy.readers.seviri_base), 332 cloud_cover (satpy.readers.oli_tirs_l1_tif.OLITIRSMDReader
chebyshev4() (in module property), 310
satpy.tests.reader_tests.test_seviri_base), cloud_height_file() (in module
535 satpy.tests.reader_tests.test_viirs_edr), 557
chebyshev_3d() (in module satpy.readers.seviri_base), cloud_type_data_array1() (in module
333 satpy.tests.multiscene_tests.test_blend), 408
check() (satpy.readers.mviri_l1b_fiduceo_nc.VisQualityControl
cloud_type_data_array2() (in module
method), 294 satpy.tests.multiscene_tests.test_blend), 408
check_emissivity() (satpy.tests.reader_tests.test_iasi_l2.TestIasiL2
CloudCompositor (class in satpy.composites), 123
method), 491 CloudCompositorCommonMask (class in
check_file_covers_area() satpy.composites.cloud_products), 112
(satpy.readers.yaml_reader.FileYAMLReader CloudCompositorWithoutCloudfree (class in
static method), 380 satpy.composites.cloud_products), 112
check_geolocation() CO2Corrector (class in satpy.modifiers.atmosphere),
(satpy.composites.CompositeBase method), 161

788 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

coarsest_area() (satpy.scene.Scene method), 710 composite_period (satpy.readers.oceancolorcci_l3_nc.OCCCIFileHandl


COEFF_INDEX_MAP (satpy.modifiers._crefl_utils._ABICoefficients property), 305
attribute), 154 CompositeBase (class in satpy.composites), 125
COEFF_INDEX_MAP (satpy.modifiers._crefl_utils._Coefficients
compositor (satpy.node.CompositorNode property), 688
attribute), 155 CompositorNode (class in satpy.node), 688
COEFF_INDEX_MAP (satpy.modifiers._crefl_utils._MODISCoefficients
compress_seviri_native_file() (in module
attribute), 156 satpy.tests.reader_tests.test_seviri_l1b_native),
COEFF_INDEX_MAP (satpy.modifiers._crefl_utils._VIIRSCoefficients 544
attribute), 156 compression_on() (satpy.tests.writer_tests.test_cf.TestNetcdfEncodingKw
coeffs_cls (satpy.modifiers._crefl_utils._ABICREFLRunner method), 582
property), 154 compute() (satpy.resample.BilinearResampler method),
coeffs_cls (satpy.modifiers._crefl_utils._CREFLRunner 700
property), 155 compute() (satpy.resample.BucketAvg method), 700
coeffs_cls (satpy.modifiers._crefl_utils._MODISCREFLRunnercompute() (satpy.resample.BucketCount method), 701
property), 156 compute() (satpy.resample.BucketFraction method), 701
coeffs_cls (satpy.modifiers._crefl_utils._VIIRSCREFLRunnercompute() (satpy.resample.BucketResamplerBase
property), 156 method), 701
collect_cache_vars() compute() (satpy.resample.BucketSum method), 701
(satpy.readers.netcdf_utils.NetCDF4FileHandler compute() (satpy.resample.KDTreeResampler method),
method), 301 702
collect_cf_datasets() (in module satpy.cf.datasets), compute() (satpy.resample.NativeResampler method),
109 703
collect_dimensions() compute() (satpy.scene.Scene method), 710
(satpy.readers.netcdf_utils.NetCDF4FileHandler compute_relative_azimuth() (in module
method), 301 satpy.modifiers.angles), 160
collect_metadata() (satpy.readers.hdf4_utils.HDF4FileHandler
compute_writer_results() (in module satpy.writers),
method), 252 677
collect_metadata() (satpy.readers.hdf5_utils.HDF5FileHandler
concatenate_dataset()
method), 252 (satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandler
collect_metadata() (satpy.readers.netcdf_utils.NetCDF4FileHandler method), 366
method), 301 conditions_v1() (satpy.tests.test_composites.TestMaskingCompositor
colorize() (in module satpy.enhancements), 149 method), 597
ColorizeCompositor (class in satpy.composites), 124 conditions_v2() (satpy.tests.test_composites.TestMaskingCompositor
ColormapCompositor (class in satpy.composites), 124 method), 597
cols_name (satpy.readers.olci_nc.NCOLCIBase at- conf_file() (satpy.tests.modifier_tests.test_parallax.TestParallaxCorrecti
tribute), 307 method), 406
cols_name (satpy.readers.olci_nc.NCOLCILowResData config_search_paths() (in module satpy._config),
attribute), 308 679
combine_info() (satpy.readers.file_handlers.BaseFileHandler
configs_for_reader() (in module satpy.readers), 389
method), 233 configs_for_writer() (in module satpy.writers), 677
combine_info() (satpy.readers.li_base_nc.LINCFileHandler contains() (satpy.dataset.data_dict.DatasetDict
method), 271 method), 136
combine_metadata() (in module contains() (satpy.dependency_tree.Tree method), 687
satpy.dataset.metadata), 143 control_block() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestF
common_attrs() (in module method), 412
satpy.tests.reader_tests.test_satpy_cf_nc), convert() (satpy.dataset.dataid.ModifierTuple class
531 method), 140
common_checks() (in module convert() (satpy.dataset.dataid.ValueList class
satpy.tests.reader_tests.test_eum_l2_grib), method), 141
459 convert() (satpy.dataset.dataid.WavelengthRange class
compare_areas() (satpy.tests.reader_tests.test_seviri_l1b_icare.TestSEVIRIICAREReader
method), 141
method), 541 convert() (satpy.readers.pmw_channels_definitions.FrequencyBandBaseA
complevel_exp() (satpy.tests.writer_tests.test_cf.TestNetcdfEncodingKwargs
class method), 312
method), 582 convert_dict() (satpy.dataset.dataid.DataID method),

Index 789
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

138 satpy.tests.reader_tests.test_nwcsaf_nc),
convert_file_content_to_data_array() (in mod- 519
ule satpy.tests.utils), 643 create_ctth_variables() (in module
convert_from_angles() (in module satpy.tests.reader_tests.test_nwcsaf_nc),
satpy.readers.viirs_compact), 367 519
convert_remote_files_to_fsspec() (in module create_debug_lettered_tiles() (in module
satpy.utils), 719 satpy.writers.awips_tiled), 655
convert_to_angles() (in module create_filehandlers()
satpy.readers.viirs_compact), 367 (satpy.readers.yaml_reader.FileYAMLReader
convert_to_bt() (satpy.readers.viirs_vgac_l1c_nc.VGACFileHandler method), 380
method), 375 create_filehandlers()
convert_to_radiance() (satpy.readers.yaml_reader.GEOSegmentYAMLReader
(satpy.readers.ahi_hsd.AHIHSDFileHandler method), 382
method), 206 create_filename_parser() (satpy.writers.Writer
convert_to_radiance() method), 674
(satpy.readers.seviri_base.SEVIRICalibrationAlgorithm
create_filter_query_without_required_fields()
method), 331 (satpy.dataset.dataid.DataID method), 138
convert_units() (in module satpy.writers.ninjotiff ), create_filtered_query() (in module
669 satpy.dataset.dataid), 141
coord_conv() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileHandler
create_fullname_key()
method), 412 (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
coordinate_conversion() method), 497
(satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileHandler
create_hdfeos_test_file() (in module
method), 412 satpy.tests.reader_tests.modis_tests._modis_fixtures),
copy() (satpy.dependency_tree.DependencyTree 418
method), 686 create_less_modified_query()
copy() (satpy.node.Node method), 689 (satpy.dataset.dataid.DataID method), 138
copy() (satpy.scene.Scene method), 710 create_less_modified_query()
corrected_area() (satpy.modifiers.parallax.ParallaxCorrection (satpy.dataset.dataid.DataQuery method),
method), 166 140
corrupt_file() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestCorruptFile
create_message() (in module
method), 411 satpy.tests.reader_tests.test_ascat_l2_soilmoisture_bufr),
counts() (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestFileHandlerCalibrationBase
443
method), 535 create_mwr_file() (in module
create_cmic_file() (in module satpy.tests.reader_tests.conftest), 427
satpy.tests.reader_tests.test_nwcsaf_nc), create_nwcsaf_geo_ct_file() (in module
518 satpy.tests.reader_tests.test_nwcsaf_nc),
create_coef_dict() (in module 519
satpy.readers.seviri_base), 333 create_physical_seviri_native_file() (in mod-
create_colormap() (in module satpy.enhancements), ule satpy.tests.reader_tests.test_seviri_l1b_native),
149 544
create_cot_pal_variable() (in module create_reader() (satpy.tests.reader_tests.test_scmi.TestSCMIFileHandle
satpy.tests.reader_tests.test_nwcsaf_nc), method), 532
518 create_sections() (in module
create_cot_variable() (in module satpy.tests.reader_tests.test_eps_l1b), 456
satpy.tests.reader_tests.test_nwcsaf_nc), create_storage_items()
519 (satpy.readers.sar_c_safe.SAFESARReader
create_cre_variables() (in module method), 319
satpy.tests.reader_tests.test_nwcsaf_nc), create_storage_items()
519 (satpy.readers.yaml_reader.FileYAMLReader
create_ctth_alti_pal_variable_with_fill_value_color() method), 380
(in module satpy.tests.reader_tests.test_nwcsaf_nc),
create_stub_hrit() (in module
519 satpy.tests.reader_tests.test_hrit_base), 486
create_ctth_file() (in module create_stub_hrit_data() (in module

790 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_hrit_base), 488 DatasetDict (class in satpy.dataset.data_dict), 136


create_test_header() (in module datasets (satpy.readers.olci_nc.NCOLCIAngles at-
satpy.tests.reader_tests.test_seviri_l1b_native), tribute), 307
544 datasets (satpy.readers.olci_nc.NCOLCIMeteo at-
create_test_trailer() (in module tribute), 308
satpy.tests.reader_tests.test_seviri_l1b_native), datasets() (in module
544 satpy.tests.reader_tests.test_satpy_cf_nc),
create_tif_file() (in module 531
satpy.tests.reader_tests.test_oli_tirs_l1_tif ), datasets() (satpy.tests.cf_tests.test_coords.TestCFcoords
524 method), 393
create_xarray() (in module satpy.readers.aapp_l1b), datasets_and_weights()
199 (satpy.tests.multiscene_tests.test_blend.TestBlendFuncs
create_xarray() (in module satpy.readers.eps_l1b), method), 407
222 datatree (satpy.readers.insat3d_img_l1b_h5.Insat3DIMGL1BH5FileHand
crop() (satpy.multiscene._multiscene.MultiScene property), 268
method), 173 datetime64_to_pydatetime() (in module satpy.utils),
crop() (satpy.scene.Scene method), 710 719
cross_product() (in module DayNightCompositor (class in satpy.composites), 126
satpy.readers.gms.gms5_vissr_navigation), debug() (in module satpy.utils), 719
193 debug_off() (in module satpy.utils), 719
CustomScheduler (class in satpy.tests.utils), 642 debug_on() (in module satpy.utils), 719
dec10216() (in module satpy.readers.seviri_base), 333
D DecisionTree (class in satpy.writers), 670
da2cf() (satpy.writers.cf_writer.CFWriter static declination_from_sat_to_sun
method), 658 (satpy.readers.gms.gms5_vissr_navigation.OrbitAngles
data_area_ref_corrector() attribute), 186
decode_attrs() (in module satpy.cf.decoding), 110
(satpy.tests.modifier_tests.test_crefl.TestReflectanceCorrectorModifier
static method), 404 decode_lut_arr() (in module
DATA_FILE_COMPONENTS satpy.readers.insat3d_img_l1b_h5), 268
(satpy.aux_download.DataDownloadMixin decode_time_variable()
attribute), 682 (satpy.readers.viirs_vgac_l1c_nc.VGACFileHandler
data_slices (satpy.writers.awips_tiled.TileInfo at- method), 375
tribute), 653 decompress() (in module satpy.readers.hrit_base), 255
data_type() (in module default() (satpy.cf.attrs.AttributeEncoder method), 105
satpy.tests.multiscene_tests.test_blend), 408 DEFAULT_15_SECONDARY_PRODUCT_HEADER (in module
DataDownloadMixin (class in satpy.aux_download), satpy.readers.seviri_l1b_native_hdr), 347
681 default_attr_processor() (in module
DataID (class in satpy.dataset.dataid), 138 satpy.tests.reader_tests.utils), 569
DataQuery (class in satpy.dataset.dataid), 139 default_co_keys_config (in module
satpy.dataset.dataid), 141
dataset() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.TestMetadata
method), 481 default_id_keys_config (in module
satpy.dataset.dataid), 141
dataset_exp() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileHandler
method), 412 DelayedGeneration, 704
delog() (satpy.readers.olci_nc.NCOLCI2 method), 307
dataset_id() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileHandler
method), 412 Denoiser (class in satpy.readers.sar_c_safe), 317
dataset_info() (in module DependencyTree (class in satpy.dependency_tree), 684
satpy.tests.reader_tests.test_ici_l1b_nc), deprecation_warnings_off() (in module satpy.utils),
495 719
DATASET_NAMES (satpy.readers.hdfeos_base.HDFEOSGeoReader deprecation_warnings_on() (in module satpy.utils),
attribute), 254 719
dataset_walker() (in module satpy.dataset.anc_vars), dictify() (in module satpy.readers.sar_c_safe), 321
136 DifferenceCompositor (class in satpy.composites),
DatasetAccessor (class in 127
satpy.readers.mviri_l1b_fiduceo_nc), 290 dim_resolutions (satpy.readers.amsr2_l2_gaasp.GAASPFileHandler

Index 791
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

attribute), 212 earth_sun_distance()


dim_resolutions (satpy.readers.amsr2_l2_gaasp.GAASPGriddedFileHandler
(satpy.readers.oli_tirs_l1_tif.OLITIRSMDReader
attribute), 212 method), 310
dim_resolutions (satpy.readers.amsr2_l2_gaasp.GAASPLowResFileHandler
EarthEllipsoid (class in
attribute), 213 satpy.readers.gms.gms5_vissr_navigation),
display() (satpy.node.Node method), 689 183
distance() (satpy.dataset.dataid.WavelengthRange EDREOSFileHandler (class in satpy.readers.omps_edr),
method), 141 310
distance() (satpy.readers.pmw_channels_definitions.FrequencyDoubleSideBand
EDRFileHandler (class in satpy.readers.omps_edr), 310
method), 312 EffectiveSolarPathLengthCorrector (class in
distance() (satpy.readers.pmw_channels_definitions.FrequencyQuadrupleSideBand
satpy.modifiers.geometry), 163
method), 313 empty_node (satpy.dependency_tree.Tree attribute), 687
distance() (satpy.readers.pmw_channels_definitions.FrequencyRange
encode_attrs_to_cf() (in module satpy.cf.attrs), 105
method), 315 encoding() (in module
dn (satpy.tests.reader_tests.test_sar_c_safe.Calibration satpy.tests.reader_tests.test_cmsaf_claas),
attribute), 527 452
dnb() (satpy.tests.compositor_tests.test_viirs.TestVIIRSComposites
encoding() (satpy.tests.writer_tests.test_cf.TestNetcdfEncodingKwargs
method), 398 method), 582
download_fci_test_data() (in module end_orbit_number (satpy.readers.nucaps.NUCAPSFileHandler
satpy.demo.fci), 145 property), 302
download_seviri_hrit_20180228_1500() (in mod- end_orbit_number (satpy.readers.omps_edr.EDRFileHandler
ule satpy.demo.seviri_hrit), 146 property), 310
download_typhoon_surigae_ahi() (in module end_orbit_number (satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHa
satpy.demo.ahi_hsd), 145 property), 366
download_url() (in module satpy.demo.utils), 146 end_orbit_number (satpy.readers.viirs_l1b.VIIRSL1BFileHandler
draw_rectangle() (in module property), 372
satpy.writers.awips_tiled), 655 end_orbit_number (satpy.readers.viirs_l2.VIIRSL2FileHandler
drop_coordinates() (satpy.composites.CompositeBase property), 373
static method), 126 end_time (satpy.readers.aapp_l1b.AAPPL1BaseFileHandler
drop_xycoords() (satpy.readers.nwcsaf_nc.NcNWCSAF property), 198
method), 304 end_time (satpy.readers.abi_base.NC_ABI_BASE prop-
ds_id (satpy.tests.reader_tests.test_ami_l1b.TestAMIL1bNetCDFIRCal erty), 201
attribute), 439 end_time (satpy.readers.acspo.ACSPOFileHandler
ds_info (satpy.tests.reader_tests.test_ami_l1b.TestAMIL1bNetCDFIRCal
property), 202
attribute), 439 end_time (satpy.readers.ahi_hsd.AHIHSDFileHandler
DscovrEpicL1BH5FileHandler (class in property), 206
satpy.readers.epic_l1b_h5), 220 end_time (satpy.readers.ahi_l2_nc.HIML2NCFileHandler
dtype() (satpy.readers.xmlformat.XMLFormat method), property), 209
377 end_time (satpy.readers.ami_l1b.AMIL1bNetCDF prop-
DummyReader (class in satpy.tests.test_yaml_reader), 637 erty), 210
duplicate_datasets_with_group_alias() end_time (satpy.readers.amsr2_l2_gaasp.GAASPFileHandler
(satpy.multiscene._multiscene._GroupAliasGenerator property), 212
method), 176 end_time (satpy.readers.ascat_l2_soilmoisture_bufr.AscatSoilMoistureBufr
dynamic_tags (satpy.writers.ninjogeotiff.NinJoTagGenerator property), 213
attribute), 666 end_time (satpy.readers.atms_l1b_nc.AtmsL1bNCFileHandler
property), 214
E end_time (satpy.readers.avhrr_l1b_gaclac.GACLACFile
property), 216
earth_ellipsoid (satpy.readers.gms.gms5_vissr_navigation.ProjectionParameters
attribute), 188 end_time (satpy.readers.clavrx.CLAVRXHDF4FileHandler
property),
earth_mask() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.TestMetadata 217
method), 481 end_time (satpy.readers.cmsaf_claas2.CLAAS2 prop-
EARTH_POLAR_RADIUS (in module erty), 219
satpy.readers.gms.gms5_vissr_navigation), end_time (satpy.readers.epic_l1b_h5.DscovrEpicL1BH5FileHandler
183 property), 220

792 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

end_time (satpy.readers.eps_l1b.EPSAVHRRFile prop- erty), 275


erty), 221 end_time (satpy.readers.mersi_l1b.MERSIL1B prop-
end_time (satpy.readers.eum_l2_grib.EUML2GribFileHandler erty), 278
property), 225 end_time (satpy.readers.mimic_TPW2_nc.MimicTPW2FileHandler
end_time (satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler property), 278
property), 228 end_time (satpy.readers.mirs.MiRSL2ncHandler prop-
end_time (satpy.readers.file_handlers.BaseFileHandler erty), 280
property), 233 end_time (satpy.readers.modis_l2.ModisL2HDFFileHandler
end_time (satpy.readers.fy4_base.FY4Base property), property), 283
235 end_time (satpy.readers.msi_safe.SAFEMSIL1C prop-
end_time (satpy.readers.generic_image.GenericImageFileHandler erty), 285
property), 235 end_time (satpy.readers.msi_safe.SAFEMSIXMLMetadata
end_time (satpy.readers.geocat.GEOCATFileHandler property), 287
property), 237 end_time (satpy.readers.mwr_l1b.AWS_EPS_Sterna_BaseFileHandler
end_time (satpy.readers.gerb_l2_hr_h5.GERB_HR_FileHandler property), 296
property), 237 end_time (satpy.readers.mws_l1b.MWSL1BFile prop-
end_time (satpy.readers.ghrsst_l2.GHRSSTL2FileHandler erty), 299
property), 238 end_time (satpy.readers.nucaps.NUCAPSFileHandler
end_time (satpy.readers.gld360_ualf2.VaisalaGld360Ualf2FileHandler
property), 302
property), 239 end_time (satpy.readers.nwcsaf_nc.NcNWCSAF prop-
end_time (satpy.readers.glm_l2.NCGriddedGLML2 erty), 304
property), 240 end_time (satpy.readers.oceancolorcci_l3_nc.OCCCIFileHandler
end_time (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandlerproperty), 305
property), 181 end_time (satpy.readers.olci_nc.NCOLCIBase prop-
end_time (satpy.readers.goci2_l2_nc.GOCI2L2NCFileHandler erty), 307
property), 240 end_time (satpy.readers.oli_tirs_l1_tif.OLITIRSCHReader
end_time (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler property), 309
property), 249 end_time (satpy.readers.oli_tirs_l1_tif.OLITIRSMDReader
end_time (satpy.readers.gpm_imerg.Hdf5IMERG prop- property), 310
erty), 250 end_time (satpy.readers.osisaf_l3_nc.OSISAFL3NCFileHandler
end_time (satpy.readers.grib.GRIBFileHandler prop- property), 311
erty), 251 end_time (satpy.readers.safe_sar_l2_ocn.SAFENC
end_time (satpy.readers.hdfeos_base.HDFEOSBaseFileReader property), 316
property), 253 end_time (satpy.readers.sar_c_safe.SAFEGRD prop-
end_time (satpy.readers.hrit_base.HRITFileHandler erty), 318
property), 255 end_time (satpy.readers.sar_c_safe.SAFESARReader
end_time (satpy.readers.hrit_jma.HRITJMAFileHandler property), 319
property), 259 end_time (satpy.readers.sar_c_safe.SAFEXML prop-
end_time (satpy.readers.hrpt.HRPTFile property), 260 erty), 319
end_time (satpy.readers.hsaf_h5.HSAFFileHandler end_time (satpy.readers.satpy_cf_nc.SatpyCFFileHandler
property), 261 property), 324
end_time (satpy.readers.hy2_scat_l2b_h5.HY2SCATL2BH5FileHandler
end_time (satpy.readers.scmi.SCMIFileHandler prop-
property), 262 erty), 325
end_time (satpy.readers.iasi_l2.IASIL2HDF5 property), end_time (satpy.readers.seadas_l2._SEADASL2Base
263 property), 327
end_time (satpy.readers.iasi_l2_so2_bufr.IASIL2SO2BUFRend_time (satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler
property), 265 property), 339
end_time (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler end_time (satpy.readers.seviri_l1b_icare.SEVIRI_ICARE
property), 267 property), 342
end_time (satpy.readers.insat3d_img_l1b_h5.Insat3DIMGL1BH5FileHandler
end_time (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
property), 268 property), 345
end_time (satpy.readers.li_base_nc.LINCFileHandler end_time (satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler
property), 271 property), 350
end_time (satpy.readers.maia.MAIAFileHandler prop- end_time (satpy.readers.sgli_l1b.HDF5SGLI property),

Index 793
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

352 ENH_ENH_FN2 (satpy.tests.test_writers.TestEnhancerUserConfigs


end_time (satpy.readers.slstr_l1b.NCSLSTR1B prop- attribute), 633
erty), 353 ENH_FN (satpy.tests.test_writers.TestComplexSensorEnhancerConfigs
end_time (satpy.readers.slstr_l1b.NCSLSTRAngles attribute), 632
property), 353 ENH_FN (satpy.tests.test_writers.TestEnhancerUserConfigs
end_time (satpy.readers.slstr_l1b.NCSLSTRFlag prop- attribute), 633
erty), 354 ENH_FN (satpy.tests.test_writers.TestReaderEnhancerConfigs
end_time (satpy.readers.slstr_l1b.NCSLSTRGeo prop- attribute), 634
erty), 354 ENH_FN2 (satpy.tests.test_writers.TestComplexSensorEnhancerConfigs
end_time (satpy.readers.smos_l2_wind.SMOSL2WINDFileHandler attribute), 632
property), 355 ENH_FN2 (satpy.tests.test_writers.TestEnhancerUserConfigs
end_time (satpy.readers.tropomi_l2.TROPOMIL2FileHandler attribute), 633
property), 356 ENH_FN3 (satpy.tests.test_writers.TestEnhancerUserConfigs
end_time (satpy.readers.vaisala_gld360.VaisalaGLD360TextFileHandlerattribute), 633
property), 362 enhance2dataset() (in module satpy.composites), 136
end_time (satpy.readers.vii_base_nc.ViiNCBaseFileHandler EnhancementDecisionTree (class in satpy.writers),
property), 363 672
end_time (satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandler
Enhancer (class in satpy.writers), 672
property), 366 enhancer (satpy.writers.awips_tiled.AWIPSTiledWriter
end_time (satpy.readers.viirs_compact.VIIRSCompactFileHandler property), 650
property), 367 ensure_unique_nondimensional_coords() (in mod-
end_time (satpy.readers.viirs_edr.VIIRSJRRFileHandler ule satpy.cf.coords), 107
property), 369 eps_sterna_mwr_file() (in module
end_time (satpy.readers.viirs_edr_active_fires.VIIRSActiveFiresFileHandler
satpy.tests.reader_tests.conftest), 427
property), 370 eps_sterna_mwr_handler() (in module
end_time (satpy.readers.viirs_edr_active_fires.VIIRSActiveFiresTextFileHandler
satpy.tests.reader_tests.conftest), 427
property), 371 EPSAVHRRFile (class in satpy.readers.eps_l1b), 221
end_time (satpy.readers.viirs_edr_flood.VIIRSEDRFlood equatorial_radius (satpy.readers.gms.gms5_vissr_navigation.EarthEllip
property), 371 attribute), 184
end_time (satpy.readers.viirs_l1b.VIIRSL1BFileHandler ERFDNB (class in satpy.composites.viirs), 119
property), 372 EumetsatL2BufrFileHandler (class in
end_time (satpy.readers.viirs_l2.VIIRSL2FileHandler satpy.readers.eum_l2_bufr), 222
property), 373 EUML2GribFileHandler (class in
end_time (satpy.readers.viirs_vgac_l1c_nc.VGACFileHandler satpy.readers.eum_l2_grib), 224
property), 375 ev() (satpy.tests.reader_tests.test_slstr_l1b.TestSLSTRReader.FakeSpl
end_time (satpy.readers.virr_l1b.VIRR_L1B property), static method), 548
376 evaluate() (satpy.readers.seviri_base.OrbitPolynomial
end_time (satpy.readers.yaml_reader.AbstractYAMLReader method), 330
property), 378 exclude_alpha() (in module satpy.enhancements), 151
end_time (satpy.readers.yaml_reader.FileYAMLReader expand() (in module satpy.readers.viirs_compact), 367
property), 380 expand() (satpy.readers.sar_c_safe._AzimuthBlock
end_time (satpy.scene.Scene property), 711 method), 320
end_time (satpy.tests.test_yaml_reader.DummyReader expand() (satpy.readers.sar_c_safe.XMLArray method),
property), 637 320
end_time (satpy.tests.test_yaml_reader.FakeFH prop- expand_angle_and_nav()
erty), 637 (satpy.readers.viirs_compact.VIIRSCompactFileHandler
end_time (satpy.tests.utils.FakeFileHandler property), method), 367
642 expand_arrays() (in module
end_time_attr_name (satpy.readers.seadas_l2.SEADASL2HDFFileHandler satpy.readers.viirs_compact), 367
attribute), 326 expand_single_values()
end_time_attr_name (satpy.readers.seadas_l2.SEADASL2NetCDFFileHandler
(satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandler
attribute), 326 static method), 366
ENH_ENH_FN (satpy.tests.test_writers.TestEnhancerUserConfigs
expansion_coefs (satpy.readers.viirs_compact.VIIRSCompactFileHandle
attribute), 633 property), 367

794 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

expected (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestFileHandlerCalibrationBase
fake_decompress() (in module
attribute), 535 satpy.tests.reader_tests.test_hrit_base), 488
expected() (satpy.tests.cf_tests.test_decoding.TestDecodeAttrs
fake_dnb() (in module
method), 395 satpy.tests.reader_tests.test_viirs_compact),
expected() (satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.TestImageNavigation
555
method), 414 fake_dnb_file() (in module
expected() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.TestMetadata
satpy.tests.reader_tests.test_viirs_compact),
method), 481 555
expected() (satpy.tests.writer_tests.test_cf.TestNetcdfEncodingKwargs
fake_ds() (satpy.tests.cf_tests.test_encoding.TestUpdateEncoding
method), 582 method), 395
expected_result() (satpy.tests.multiscene_tests.test_blend.TestTemporalRGB
fake_ds_digit() (satpy.tests.cf_tests.test_encoding.TestUpdateEncoding
method), 408 method), 395
external_coefs (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestFileHandlerCalibrationBase
fake_enh_plugin_etc_path() (in module
attribute), 535 satpy.tests.test_config), 604
extract_filetype_info() (in module fake_file() (in module
satpy.tests.reader_tests._li_test_utils), 426 satpy.tests.reader_tests.test_cmsaf_claas),
extract_msg_date_extremes() 452
(satpy.readers.ascat_l2_soilmoisture_bufr.AscatSoilMoistureBufr
fake_file() (in module
method), 213 satpy.tests.reader_tests.test_gld360_ualf2),
extract_time_data() 474
(satpy.readers.viirs_vgac_l1c_nc.VGACFileHandler fake_file() (in module
method), 376 satpy.tests.reader_tests.test_ici_l1b_nc),
495
F fake_file() (in module
fake_adef() (in module satpy.tests.test_yaml_reader), satpy.tests.reader_tests.test_mws_l1b_nc),
642 512
fake_area() (in module fake_file_dict() (in module
satpy.tests.enhancement_tests.test_enhancements), satpy.tests.reader_tests.test_oceancolorcci_l3_nc),
401 521
fake_area() (in module satpy.tests.test_composites), fake_filehandler() (in module
602 satpy.tests.reader_tests.test_gld360_ualf2),
fake_calibrate_solar() (in module 474
satpy.tests.reader_tests.test_avhrr_l0_hrpt), fake_files() (in module
448 satpy.tests.reader_tests.test_cmsaf_claas),
fake_calibrate_thermal() (in module 452
satpy.tests.reader_tests.test_avhrr_l0_hrpt), fake_geswh() (in module satpy.tests.test_yaml_reader),
448 642
fake_cls (satpy.tests.reader_tests.test_viirs_l1b.TestVIIRSL1BReaderDay
fake_gribdata() (in module
attribute), 563 satpy.tests.reader_tests.test_grib), 483
fake_handler() (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
fake_cls (satpy.tests.reader_tests.test_viirs_l1b.TestVIIRSL1BReaderDayNight
attribute), 564 method), 497
fake_coeff_from_fn() (in module fake_iasi_l2_cdr_nc_dataset() (in module
satpy.tests.reader_tests.test_mirs), 506 satpy.tests.reader_tests.test_iasi_l2), 492
fake_composite_plugin_etc_path() (in module fake_iasi_l2_cdr_nc_file() (in module
satpy.tests.test_config), 604 satpy.tests.reader_tests.test_iasi_l2), 492
fake_dataset() (in module fake_ir_reader() (in module
satpy.tests.reader_tests.test_cmsaf_claas), satpy.tests.reader_tests.test_ami_l1b), 440
452 fake_ir_reader2() (in module
fake_dataset() (in module satpy.tests.reader_tests.test_ami_l1b), 440
satpy.tests.reader_tests.test_oceancolorcci_l3_nc),fake_mss() (in module satpy.tests.test_yaml_reader),
521 642
fake_dataset_pair() (in module fake_mwr_data_array() (in module
satpy.tests.test_composites), 602 satpy.tests.reader_tests.conftest), 427
fake_open_dataset() (in module

Index 795
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_amsr2_l2_gaasp), 461
442 FakeFCIFileHandlerFDHSIQ4_fixture() (in module
fake_open_dataset() (in module satpy.tests.reader_tests.test_fci_l1c_nc), 461
satpy.tests.reader_tests.test_mirs), 507 FakeFCIFileHandlerHRFI (class in
fake_plugin_etc_path() (in module satpy.tests.reader_tests.test_fci_l1c_nc),
satpy.tests.test_config), 604 461
fake_reader_plugin_etc_path() (in module FakeFCIFileHandlerHRFI_fixture() (in module
satpy.tests.test_config), 604 satpy.tests.reader_tests.test_fci_l1c_nc), 461
fake_refl_from_tbs() FakeFCIFileHandlerHRFIIQTI (class in
(satpy.tests.test_modifiers.TestNIRReflectance satpy.tests.reader_tests.test_fci_l1c_nc),
method), 615 461
fake_satpy_reading() (in module satpy.testing), 717 FakeFCIFileHandlerHRFIIQTI_fixture() (in mod-
fake_scene() (satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionSceneLoad
ule satpy.tests.reader_tests.test_fci_l1c_nc),
method), 406 461
fake_scn() (in module FakeFCIFileHandlerHRFIQ4_fixture() (in module
satpy.tests.reader_tests.test_gld360_ualf2), satpy.tests.reader_tests.test_fci_l1c_nc), 461
474 FakeFCIFileHandlerWithBadData (class in
fake_test_content() (in module satpy.tests.reader_tests.test_fci_l1c_nc),
satpy.tests.reader_tests.test_clavrx.test_clavrx_nc), 461
424 FakeFH (class in satpy.tests.test_yaml_reader), 637
fake_tle() (in module FakeFileHandler (class in satpy.tests.utils), 642
satpy.tests.modifier_tests.test_parallax), 407 FakeGenericImageFileHandler (class in
fake_vis_reader() (in module satpy.tests.reader_tests.test_generic_image),
satpy.tests.reader_tests.test_ami_l1b), 440 469
fake_writer_plugin_etc_path() (in module FakeGRIB (class in satpy.tests.reader_tests.test_grib),
satpy.tests.test_config), 604 482
fake_xr() (in module satpy.tests.test_yaml_reader), 642 FakeGRIB (class in satpy.tests.reader_tests.test_hsaf_grib),
FakeCompositor (class in satpy.tests.test_node), 617 488
FakeCompositor (class in satpy.tests.utils), 642 FakeH5Variable (class in
FakeDataset (class in satpy.tests.reader_tests.test_fci_l1c_nc),
satpy.tests.reader_tests.test_ami_l1b), 439 461
FakeDataset (class in FakeHDF4FileHandler (class in
satpy.tests.reader_tests.test_scmi), 531 satpy.tests.reader_tests.test_hdf4_utils), 484
FakeFCIFileHandlerAF (class in FakeHDF4FileHandler2 (class in
satpy.tests.reader_tests.test_fci_l1c_nc), satpy.tests.reader_tests.test_seviri_l1b_icare),
460 541
FakeFCIFileHandlerAF_fixture() (in module FakeHDF4FileHandler2 (class in
satpy.tests.reader_tests.test_fci_l1c_nc), 460 satpy.tests.reader_tests.test_viirs_edr_flood),
FakeFCIFileHandlerBase (class in 561
satpy.tests.reader_tests.test_fci_l1c_nc), FakeHDF4FileHandlerGeo (class in
460 satpy.tests.reader_tests.test_clavrx.test_clavrx_geohdf ),
FakeFCIFileHandlerFDHSI (class in 423
satpy.tests.reader_tests.test_fci_l1c_nc), FakeHDF4FileHandlerPolar (class in
460 satpy.tests.reader_tests.test_clavrx.test_clavrx_polarhdf ),
FakeFCIFileHandlerFDHSI_fixture() (in module 424
satpy.tests.reader_tests.test_fci_l1c_nc), 461 FakeHDF5_ATMS_SDR_FileHandler (class in
FakeFCIFileHandlerFDHSIError_fixture() (in satpy.tests.reader_tests.test_atms_sdr_hdf5),
module satpy.tests.reader_tests.test_fci_l1c_nc), 444
460 FakeHDF5FileHandler (class in
FakeFCIFileHandlerFDHSIIQTI (class in satpy.tests.reader_tests.test_hdf5_utils), 484
satpy.tests.reader_tests.test_fci_l1c_nc), FakeHDF5FileHandler2 (class in
460 satpy.tests.reader_tests.test_agri_l1), 432
FakeFCIFileHandlerFDHSIIQTI_fixture() (in mod- FakeHDF5FileHandler2 (class in
ule satpy.tests.reader_tests.test_fci_l1c_nc), satpy.tests.reader_tests.test_amsr2_l1b),

796 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

440 FakeNetCDF4FileHandlerDay (class in


FakeHDF5FileHandler2 (class in satpy.tests.reader_tests.test_viirs_l1b), 562
satpy.tests.reader_tests.test_amsr2_l2), 441 FakeNetCDF4FileHandlerMimic (class in
FakeHDF5FileHandler2 (class in satpy.tests.reader_tests.test_mimic_TPW2_nc),
satpy.tests.reader_tests.test_ghi_l1), 472 505
FakeHDF5FileHandler2 (class in FakeNetCDF4FileHandlerMimicLow (class in
satpy.tests.reader_tests.test_gpm_imerg), satpy.tests.reader_tests.test_mimic_TPW2_lowres),
482 504
FakeHDF5FileHandler2 (class in FakeNetCDF4FileHandlerNight (class in
satpy.tests.reader_tests.test_hy2_scat_l2b_h5), satpy.tests.reader_tests.test_viirs_l1b), 562
489 FakeNetCDF4FileHandlerSMOSL2WIND (class in
FakeHDF5FileHandler2 (class in satpy.tests.reader_tests.test_smos_l2_wind),
satpy.tests.reader_tests.test_mersi_l1b), 500 548
FakeHDF5FileHandler2 (class in FakeNetCDF4FileHandlerTL2 (class in
satpy.tests.reader_tests.test_msu_gsa_l1b), satpy.tests.reader_tests.test_tropomi_l2),
508 549
FakeHDF5FileHandler2 (class in FakeNetCDF4FileHandlerVIIRSL2 (class in
satpy.tests.reader_tests.test_omps_edr), 525 satpy.tests.reader_tests.test_viirs_l2), 564
FakeHDF5FileHandler2 (class in FakeShortHDF5FileHandlerAggr (class in
satpy.tests.reader_tests.test_viirs_sdr), 565 satpy.tests.reader_tests.test_viirs_sdr), 565
FakeHDF5FileHandler2 (class in fci_grid_definition() (in module
satpy.tests.reader_tests.test_virr_l1b), 568 satpy.tests.reader_tests._li_test_utils), 426
FakeHDF5FileHandlerAggr (class in FCIL1cNCFileHandler (class in
satpy.tests.reader_tests.test_viirs_sdr), 565 satpy.readers.fci_l1c_nc), 227
FakeImage (class in satpy.tests.writer_tests.test_ninjotiff ), FciL2CommonFunctions (class in
589 satpy.readers.fci_l2_nc), 229
FakeImgFiresNetCDF4FileHandler (class in FciL2NCAMVFileHandler (class in
satpy.tests.reader_tests.test_viirs_edr_active_fires), satpy.readers.fci_l2_nc), 230
558 FciL2NCFileHandler (class in satpy.readers.fci_l2_nc),
FakeImgFiresTextFileHandler (class in 230
satpy.tests.reader_tests.test_viirs_edr_active_fires), FciL2NCSegmentFileHandler (class in
558 satpy.readers.fci_l2_nc), 231
FakeLIFileHandlerBase (class in fend_time (satpy.readers.safe_sar_l2_ocn.SAFENC
satpy.tests.reader_tests._li_test_utils), 425 property), 316
FakeMessage (class in satpy.tests.reader_tests.test_grib), fh_param_for_filetype
482 (satpy.tests.reader_tests.test_fci_l1c_nc.ModuleTestFCIL1cNcRea
FakeMessage (class in attribute), 462
satpy.tests.reader_tests.test_hsaf_grib), 488 FiduceoMviriBase (class in
FakeModFiresNetCDF4FileHandler (class in satpy.readers.mviri_l1b_fiduceo_nc), 291
satpy.tests.reader_tests.test_viirs_edr_active_fires), FiduceoMviriEasyFcdrFileHandler (class in
559 satpy.readers.mviri_l1b_fiduceo_nc), 292
FakeModFiresTextFileHandler (class in FiduceoMviriFullFcdrFileHandler (class in
satpy.tests.reader_tests.test_viirs_edr_active_fires), satpy.readers.mviri_l1b_fiduceo_nc), 292
559 file_contents() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestC
FakeModifier (class in satpy.tests.utils), 643 method), 411
FakeNetCDF4FileHandler (class in file_contents() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestF
satpy.tests.reader_tests.test_netcdf_utils), method), 412
512 file_handle (satpy.readers.netcdf_utils.NetCDF4FileHandler
FakeNetCDF4FileHandler2 (class in attribute), 301
satpy.tests.reader_tests.test_acspo), 431 file_handler() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFil
FakeNetCDF4FileHandler2 (class in method), 412
satpy.tests.reader_tests.test_geocat), 470 file_handler() (satpy.tests.reader_tests.test_cmsaf_claas.TestCLAAS2Si
FakeNetCDF4FileHandler2 (class in method), 452
satpy.tests.reader_tests.test_nucaps), 514 file_handler() (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMS

Index 797
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 537 attribute), 503


file_handler() (satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeMSGCalibration
FileYAMLReader (class in satpy.readers.yaml_reader),
method), 542 379
file_handler() (satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeMSGDataset
fill_chans_af() (in module
method), 542 satpy.tests.reader_tests.test_fci_l1c_nc),
file_handler() (satpy.tests.reader_tests.test_seviri_l1b_nc.TestNCSEVIRIFileHandler
465
method), 545 fill_h5() (in module satpy.tests.reader_tests.utils), 569
file_type_matches() (in module Filler (class in satpy.composites), 127
satpy.tests.test_yaml_reader), 642 FillingCompositor (class in satpy.composites), 127
file_type_matches() filt (satpy.utils._WarningManager attribute), 717
(satpy.readers.file_handlers.BaseFileHandler filter_dataids() (satpy.dataset.dataid.DataQuery
method), 233 method), 140
filename() (satpy.tests.writer_tests.test_cf.TestNetcdfEncodingKwargs
filter_fh_by_metadata()
method), 582 (satpy.readers.yaml_reader.FileYAMLReader
filename_items_for_filetype() method), 380
(satpy.readers.yaml_reader.GenericYAMLReader filter_filenames_by_info()
static method), 383 (satpy.readers.viirs_sdr.VIIRSSDRReader
filenames_1000m (satpy.tests.reader_tests.test_mersi_l1b.MERSI12llL1BTester
method), 375
attribute), 500 filter_filenames_by_info()
filenames_1000m (satpy.tests.reader_tests.test_mersi_l1b.TestFY3AMERSI1L1B
(satpy.readers.yaml_reader.GenericYAMLReader
attribute), 501 method), 383
filenames_1000m (satpy.tests.reader_tests.test_mersi_l1b.TestFY3BMERSI1L1B
filter_selected_filenames()
attribute), 501 (satpy.readers.yaml_reader.AbstractYAMLReader
filenames_1000m (satpy.tests.reader_tests.test_mersi_l1b.TestFY3CMERSI1L1B
method), 378
attribute), 502 filter_selected_filenames()
filenames_1000m (satpy.tests.reader_tests.test_mersi_l1b.TestFY3DMERSI2L1B
(satpy.readers.yaml_reader.GenericYAMLReader
attribute), 502 method), 383
filenames_1000m (satpy.tests.reader_tests.test_mersi_l1b.TestFY3EMERSIllL1B
find_files_and_readers() (in module
attribute), 503 satpy.readers), 389
filenames_250m (satpy.tests.reader_tests.test_mersi_l1b.MERSI12llL1BTester
find_in_ancillary() (in module satpy.utils), 719
attribute), 500 find_match() (satpy.writers.DecisionTree method), 672
filenames_250m (satpy.tests.reader_tests.test_mersi_l1b.TestFY3AMERSI1L1B
find_match() (satpy.writers.EnhancementDecisionTree
attribute), 501 method), 672
filenames_250m (satpy.tests.reader_tests.test_mersi_l1b.TestFY3BMERSI1L1B
find_registerable_files() (in module
attribute), 501 satpy.aux_download), 683
filenames_250m (satpy.tests.reader_tests.test_mersi_l1b.TestFY3CMERSI1L1B
find_required_filehandlers()
attribute), 502 (satpy.readers.yaml_reader.FileYAMLReader
filenames_250m (satpy.tests.reader_tests.test_mersi_l1b.TestFY3DMERSI2L1B
method), 380
attribute), 502 finest_area() (satpy.scene.Scene method), 711
filenames_250m (satpy.tests.reader_tests.test_mersi_l1b.TestFY3EMERSIllL1B
first (satpy.multiscene._multiscene._SceneGenerator
attribute), 503 property), 176
filenames_500m (satpy.tests.reader_tests.test_mersi_l1b.TestMERSIRML1B
first_line (satpy.readers.sar_c_safe._AzimuthBlock
attribute), 503 property), 320
filenames_all (satpy.tests.reader_tests.test_mersi_l1b.MERSI12llL1BTester
first_pixel (satpy.readers.sar_c_safe._AzimuthBlock
attribute), 500 property), 320
filenames_all (satpy.tests.reader_tests.test_mersi_l1b.TestFY3AMERSI1L1B
first_scene (satpy.multiscene._multiscene.MultiScene
attribute), 501 property), 173
filenames_all (satpy.tests.reader_tests.test_mersi_l1b.TestFY3BMERSI1L1B
fix_awips_file() (in module
attribute), 501 satpy.writers.awips_tiled), 655
filenames_all (satpy.tests.reader_tests.test_mersi_l1b.TestFY3CMERSI1L1B
fix_id_keys() (satpy.dataset.dataid.DataID static
attribute), 502 method), 139
filenames_all (satpy.tests.reader_tests.test_mersi_l1b.TestFY3DMERSI2L1B
fix_modifier_attr()
attribute), 502 (satpy.readers.satpy_cf_nc.SatpyCFFileHandler
filenames_all (satpy.tests.reader_tests.test_mersi_l1b.TestFY3EMERSIllL1B
method), 324

798 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

fix_radiances_not_in_percent() satpy.readers.pmw_channels_definitions),
(satpy.readers.viirs_vgac_l1c_nc.VGACFileHandler 312
method), 376 FrequencyQuadrupleSideBand (class in
fixed_tags (satpy.writers.ninjogeotiff.NinJoTagGenerator satpy.readers.pmw_channels_definitions),
attribute), 666 313
fixture_acq_time_exp() FrequencyQuadrupleSideBandBase (class in
(satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.TestInterpolator
satpy.readers.pmw_channels_definitions),
method), 510 314
fixture_coefs() (satpy.tests.reader_tests.test_utils.TestCalibrationCoefficientPicker
FrequencyRange (class in
method), 551 satpy.readers.pmw_channels_definitions),
fixture_dataset() (satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.TestDatasetPreprocessor
314
method), 509 FrequencyRangeBase (class in
fixture_dataset_exp() satpy.readers.pmw_channels_definitions),
(satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.TestDatasetPreprocessor
315
method), 509 from_cf() (satpy.dataset.dataid.WavelengthRange class
fixture_fake_dataset() (in module method), 141
satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc),
from_config_files()
510 (satpy.readers.yaml_reader.AbstractYAMLReader
fixture_fake_file() (in module class method), 378
satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc),
from_dataarray() (satpy.dataset.dataid.DataID class
510 method), 139
fixture_file_handler() (in module from_dict() (satpy.dataset.dataid.DataID method),
satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc), 139
510 from_dict() (satpy.dataset.dataid.DataQuery class
fixture_projection_longitude() (in module method), 140
satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc),
from_files() (satpy.multiscene._multiscene.MultiScene
510 class method), 173
fixture_reader() (in module from_h5_array() (in module satpy.readers.hdf5_utils),
satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc), 252
510 from_sds() (in module satpy.readers.hdf4_utils), 252
fixture_time_fake_dataset() (in module fromfile() (in module satpy.readers.utils), 359
satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc),
fs (satpy.readers.FSFile property), 387
510 FSFile (class in satpy.readers), 386
fixture_time_ir_wv() fstart_time (satpy.readers.safe_sar_l2_ocn.SAFENC
(satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.TestInterpolator
property), 316
method), 510 full_disk_size (satpy.readers.gms.gms5_vissr_l1b.AreaDefEstimator
flatten() (satpy.node.Node method), 689 attribute), 179
flatten_dict() (in module satpy.writers.utils), 670 FY4Base (class in satpy.readers.fy4_base), 234
flattening (satpy.readers.gms.gms5_vissr_navigation.EarthEllipsoid
attribute), 184 G
force_date() (satpy.readers.mirs.MiRSL2ncHandler GAASPFileHandler (class in
method), 280 satpy.readers.amsr2_l2_gaasp), 211
force_time() (satpy.readers.mirs.MiRSL2ncHandler GAASPGriddedFileHandler (class in
method), 280 satpy.readers.amsr2_l2_gaasp), 212
four_element_average_dask() GAASPLowResFileHandler (class in
(satpy.composites.SelfSharpenedRGB static satpy.readers.amsr2_l2_gaasp), 213
method), 134 GACLACFile (class in satpy.readers.avhrr_l1b_gaclac),
FrequencyBandBaseArithmetics (class in 215
satpy.readers.pmw_channels_definitions), GACLACFilePatcher (class in
312 satpy.tests.reader_tests.test_avhrr_l1b_gaclac),
FrequencyDoubleSideBand (class in 448
satpy.readers.pmw_channels_definitions), gain_factor() (satpy.composites.viirs.NCCZinke
312 method), 120
FrequencyDoubleSideBandBase (class in

Index 799
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

gains_gsics (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestFileHandlerCalibrationBase
satpy.readers.yaml_reader), 383
attribute), 536 geo_interpolate() (in module satpy.readers.hrpt),
gains_nominal (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestFileHandlerCalibrationBase
260
attribute), 536 geo_resolution (satpy.readers.hdfeos_base.HDFEOSGeoReader
gamma (satpy.tests.reader_tests.test_sar_c_safe.Calibration property), 254
attribute), 527 GEOCATFileHandler (class in satpy.readers.geocat),
gamma() (in module satpy.enhancements), 151 236
GDAL_OPTIONS (satpy.writers.geotiff.GeoTIFFWriter at- GEOFlippableFileYAMLReader (class in
tribute), 660 satpy.readers.yaml_reader), 381
generate_coords() (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
geoloc (satpy.readers.seviri_l1b_icare.SEVIRI_ICARE
method), 497 property), 342
generate_coords_from_scan_angles() geometric_processing
(satpy.readers.li_base_nc.LINCFileHandler (satpy.readers.seviri_l1b_native_hdr.L15DataHeaderRecord
method), 271 property), 348
generate_fake_abi_xr_dataset() (in module geometric_quality (satpy.readers.seviri_l1b_native_hdr.Msg15NativeTra
satpy.tests.test_regressions), 625 property), 349
generate_imapp_filename() (in module geometry() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.TestMetad
satpy.tests.reader_tests.modis_tests._modis_fixtures), method), 481
418 GEOSegmentYAMLReader (class in
generate_l1b_filename() (in module satpy.readers.yaml_reader), 382
satpy.tests.reader_tests.test_abi_l1b), 430 GeoTIFFWriter (class in satpy.writers.geotiff ), 660
generate_nasa_l1b_filename() (in module GEOVariableSegmentYAMLReader (class in
satpy.tests.reader_tests.modis_tests._modis_fixtures), satpy.readers.yaml_reader), 382
418 gerb_get_dataset() (in module
generate_nasa_l2_filename() (in module satpy.readers.gerb_l2_hr_h5), 238
satpy.tests.reader_tests.modis_tests._modis_fixtures),
GERB_HR_FileHandler (class in
419 satpy.readers.gerb_l2_hr_h5), 237
generate_nasa_l3_filename() (in module gerb_l2_hr_h5_dummy_file() (in module
satpy.tests.reader_tests.modis_tests._modis_fixtures), satpy.tests.reader_tests.test_gerb_l2_hr_h5),
419 472
generate_nasa_l3_tile_filename() (in module get() (satpy.dataset.data_dict.DatasetDict method), 136
satpy.tests.reader_tests.modis_tests._modis_fixtures),
get() (satpy.dataset.dataid.DataQuery method), 140
419 get() (satpy.readers.hdf4_utils.HDF4FileHandler
generate_parameters() (in module method), 252
satpy.tests.reader_tests.test_fci_l1c_nc), get() (satpy.readers.hdf5_utils.HDF5FileHandler
465 method), 252
generate_possible_composites() get() (satpy.readers.netcdf_utils.NetCDF4FileHandler
(satpy.scene.Scene method), 711 method), 301
generate_seviri_native_null_header() (in mod- get() (satpy.readers.seviri_base.MpefProductHeader
ule satpy.tests.reader_tests.test_seviri_l1b_native), method), 330
544 get() (satpy.readers.seviri_l1b_native_hdr.HritPrologue
generate_subset_of_filenames() (in module method), 348
satpy.demo.seviri_hrit), 146 get() (satpy.readers.seviri_l1b_native_hdr.L15DataHeaderRecord
generic_bad_file() (in module method), 348
satpy.tests.reader_tests.test_goci2_l2_nc), get() (satpy.readers.seviri_l1b_native_hdr.L15MainProductHeaderRecord
477 method), 348
generic_file() (in module get() (satpy.readers.seviri_l1b_native_hdr.L15SecondaryProductHeaderR
satpy.tests.reader_tests.test_goci2_l2_nc), method), 349
477 get() (satpy.readers.seviri_l1b_native_hdr.Msg15NativeHeaderRecord
generic_open() (in module satpy.readers.utils), 360 method), 349
GenericCompositor (class in satpy.composites), 128 get() (satpy.readers.seviri_l1b_native_hdr.Msg15NativeTrailerRecord
GenericImageFileHandler (class in method), 349
satpy.readers.generic_image), 235 get() (satpy.scene.Scene method), 711
GenericYAMLReader (class in get_aapp_chunks() (in module

800 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.aapp_l1b), 199 get_area_def() (satpy.readers.generic_image.GenericImageFileHandler


get_acq_time_cds() (in module method), 235
satpy.tests.reader_tests.test_seviri_l1b_hrit_setup),get_area_def() (satpy.readers.geocat.GEOCATFileHandler
539 method), 237
get_acq_time_exp() (in module get_area_def() (satpy.readers.gerb_l2_hr_h5.GERB_HR_FileHandler
satpy.tests.reader_tests.test_seviri_l1b_hrit_setup), method), 237
539 get_area_def() (satpy.readers.ghi_l1.HDF_GHI_L1
get_all_tags() (satpy.writers.ninjogeotiff.NinJoTagGenerator method), 238
method), 666 get_area_def() (satpy.readers.goes_imager_hrit.HRITGOESFileHandler
get_and_cache_npxr() method), 241
(satpy.readers.netcdf_utils.NetCDF4FileHandler get_area_def() (satpy.readers.gpm_imerg.Hdf5IMERG
method), 301 method), 250
get_angles() (in module satpy.modifiers.angles), 160 get_area_def() (satpy.readers.grib.GRIBFileHandler
get_angles() (satpy.readers.aapp_l1b.AVHRRAAPPL1BFile method), 251
method), 199 get_area_def() (satpy.readers.hrit_base.HRITFileHandler
get_angles() (satpy.readers.aapp_mhs_amsub_l1c.MHS_AMSUB_AAPPL1CFile method), 255
method), 200 get_area_def() (satpy.readers.hrit_jma.HRITJMAFileHandler
get_angles() (satpy.readers.sgli_l1b.HDF5SGLI method), 259
method), 352 get_area_def() (satpy.readers.hsaf_grib.HSAFFileHandler
get_area_def() (in module satpy.resample), 704 method), 261
get_area_def() (satpy.readers.abi_base.NC_ABI_BASE get_area_def() (satpy.readers.hsaf_h5.HSAFFileHandler
method), 201 method), 262
get_area_def() (satpy.readers.ahi_hsd.AHIHSDFileHandler get_area_def() (satpy.readers.insat3d_img_l1b_h5.Insat3DIMGL1BH5F
method), 206 method), 268
get_area_def() (satpy.readers.ahi_l1b_gridded_bin.AHIGriddedFileHandler
get_area_def() (satpy.readers.li_l2_nc.LIL2NCFileHandler
method), 208 method), 274
get_area_def() (satpy.readers.ahi_l2_nc.HIML2NCFileHandler get_area_def() (satpy.readers.mcd12q1.MCD12Q1HDFFileHandler
method), 209 method), 275
get_area_def() (satpy.readers.ami_l1b.AMIL1bNetCDF get_area_def() (satpy.readers.mimic_TPW2_nc.MimicTPW2FileHandler
method), 210 method), 278
get_area_def() (satpy.readers.amsr2_l2_gaasp.GAASPGriddedFileHandler
get_area_def() (satpy.readers.modis_l3.ModisL3GriddedHDFFileHandl
method), 212 method), 285
get_area_def() (satpy.readers.clavrx.CLAVRXHDF4FileHandler get_area_def() (satpy.readers.msi_safe.SAFEMSIL1C
method), 217 method), 285
get_area_def() (satpy.readers.clavrx.CLAVRXNetCDFFileHandler
get_area_def() (satpy.readers.msi_safe.SAFEMSITileMDXML
method), 217 method), 287
get_area_def() (satpy.readers.cmsaf_claas2.CLAAS2 get_area_def() (satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriBase
method), 219 method), 292
get_area_def() (satpy.readers.electrol_hrit.HRITGOMSFileHandler
get_area_def() (satpy.readers.mviri_l1b_fiduceo_nc.Navigator
method), 219 method), 294
get_area_def() (satpy.readers.eum_l2_bufr.EumetsatL2BufrFileHandler
get_area_def() (satpy.readers.nwcsaf_msg2013_hdf5.Hdf5NWCSAF
method), 223 method), 303
get_area_def() (satpy.readers.eum_l2_grib.EUML2GribFileHandler
get_area_def() (satpy.readers.nwcsaf_nc.NcNWCSAF
method), 225 method), 304
get_area_def() (satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler
get_area_def() (satpy.readers.oceancolorcci_l3_nc.OCCCIFileHandler
method), 228 method), 305
get_area_def() (satpy.readers.fci_l2_nc.FciL2NCFileHandler get_area_def() (satpy.readers.oli_tirs_l1_tif.OLITIRSCHReader
method), 231 method), 309
get_area_def() (satpy.readers.fci_l2_nc.FciL2NCSegmentFileHandler
get_area_def() (satpy.readers.osisaf_l3_nc.OSISAFL3NCFileHandler
method), 231 method), 311
get_area_def() (satpy.readers.file_handlers.BaseFileHandlerget_area_def() (satpy.readers.satpy_cf_nc.SatpyCFFileHandler
method), 234 method), 324
get_area_def() (satpy.readers.fy4_base.FY4Base get_area_def() (satpy.readers.scmi.SCMIFileHandler
method), 235 method), 325

Index 801
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_area_def() (satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler
get_best_dataset_key() (in module
method), 339 satpy.dataset.data_dict), 137
get_area_def() (satpy.readers.seviri_l1b_icare.SEVIRI_ICAREget_bounding_box() (satpy.readers.eps_l1b.EPSAVHRRFile
method), 342 method), 221
get_area_def() (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
get_bounding_box() (satpy.readers.file_handlers.BaseFileHandler
method), 345 method), 234
get_area_def() (satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler
get_bounding_box() (satpy.readers.sar_c_safe.SAFEGRD
method), 350 method), 318
get_area_def() (satpy.readers.smos_l2_wind.SMOSL2WINDFileHandler
get_bounding_box() (satpy.readers.viirs_compact.VIIRSCompactFileHa
method), 355 method), 367
get_area_def() (satpy.readers.viirs_edr_flood.VIIRSEDRFloodget_bounding_box() (satpy.readers.viirs_sdr.VIIRSSDRFileHandler
method), 371 method), 374
get_area_def_uniform_sampling() get_btype() (satpy.readers.oli_tirs_l1_tif.OLITIRSCHReader
(satpy.readers.gms.gms5_vissr_l1b.AreaDefEstimator static method), 309
method), 179 get_bucket_files() (in module
get_area_def_with_uniform_sampling() satpy.demo._google_cloud_platform), 144
(satpy.readers.goes_imager_nc.AreaDefEstimatorget_bufr_data() (satpy.readers.ascat_l2_soilmoisture_bufr.AscatSoilMo
method), 245 method), 213
get_area_definition() (in module get_calib_mode() (satpy.readers.utils._CalibrationCoefficientParser
satpy.readers._geos_area), 196 method), 358
get_area_extent() (in module get_calibration_constant()
satpy.readers._geos_area), 196 (satpy.readers.sar_c_safe.Calibrator method),
get_area_extent() (in module 317
satpy.readers.nwcsaf_msg2013_hdf5), 304 get_cds_time() (in module satpy.readers.seviri_base),
get_area_extent() (satpy.readers.hrit_base.HRITFileHandler 333
method), 255 get_central_meridian()
get_area_extent() (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
(satpy.writers.ninjogeotiff.NinJoTagGenerator
method), 346 method), 666
get_area_extent() (satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler
get_channel_index_from_name() (in module
method), 351 satpy.readers.mws_l1b), 299
get_area_extent() (satpy.readers.seviri_l1b_nc.NCSEVIRIHRVFileHandler
get_channel_measured_group_path()
method), 351 (satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler
get_area_file() (in module satpy.resample), 704 method), 228
get_array() (satpy.readers.eum_l2_bufr.EumetsatL2BufrFileHandler
get_chunk_size_limit() (in module satpy.utils), 720
method), 223 get_coeff_by_sfc() (in module satpy.readers.mirs),
get_array() (satpy.readers.iasi_l2_so2_bufr.IASIL2SO2BUFR 280
method), 265 get_coefs() (in module satpy.readers.viirs_compact),
get_array_date() (in module satpy.readers.utils), 360 367
get_array_on_fci_grid() get_coefs() (satpy.readers.goes_imager_nc.GOESCoefficientReader
(satpy.readers.li_l2_nc.LIL2NCFileHandler method), 246
method), 274 get_coefs() (satpy.readers.utils.CalibrationCoefficientPicker
get_attr_value() (satpy.writers.awips_tiled.NetCDFTemplate method), 358
method), 652 get_color_depth() (satpy.writers.ninjogeotiff.NinJoTagGenerator
get_attribute() (satpy.readers.iasi_l2_so2_bufr.IASIL2SO2BUFRmethod), 666
method), 265 get_compositor() (satpy.dependency_tree.DependencyTree
get_attributes() (satpy.readers.eum_l2_bufr.EumetsatL2BufrFileHandler
method), 686
method), 223 get_config_path() (in module satpy._config), 679
get_attrs_exp() (in module get_config_path_safe() (in module satpy._config),
satpy.tests.reader_tests.test_seviri_l1b_hrit_setup), 679
539 get_coordinate_names()
get_available_channels() (in module (satpy.readers.li_base_nc.LINCFileHandler
satpy.readers.seviri_l1b_native), 347 method), 272
get_avhrr_lac_chunks() (in module get_cos_sza() (in module satpy.modifiers.angles), 160
satpy.readers.aapp_l1b), 199 get_creation_date_id()

802 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(satpy.writers.ninjogeotiff.NinJoTagGenerator method), 219


method), 666 get_dataset() (satpy.readers.epic_l1b_h5.DscovrEpicL1BH5FileHandle
get_dask_chunk_size_in_bytes() (in module method), 220
satpy.utils), 720 get_dataset() (satpy.readers.eps_l1b.EPSAVHRRFile
get_daskified_lon_lat() method), 221
(satpy.readers.li_base_nc.LINCFileHandler get_dataset() (satpy.readers.eum_l2_bufr.EumetsatL2BufrFileHandler
method), 272 method), 223
get_data() (satpy.tests.reader_tests.test_eum_l2_bufr.L2BufrData
get_dataset() (satpy.readers.eum_l2_grib.EUML2GribFileHandler
method), 458 method), 225
get_data_as_xarray() (in module get_dataset() (satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler
satpy.readers.netcdf_utils), 302 method), 228
get_data_items() (satpy.readers.sar_c_safe.XMLArray get_dataset() (satpy.readers.fci_l2_nc.FciL2NCAMVFileHandler
method), 320 method), 230
get_dataset() (satpy.readers.aapp_l1b.AAPPL1BaseFileHandler
get_dataset() (satpy.readers.fci_l2_nc.FciL2NCFileHandler
method), 198 method), 231
get_dataset() (satpy.readers.abi_base.NC_ABI_BASE get_dataset() (satpy.readers.fci_l2_nc.FciL2NCSegmentFileHandler
method), 201 method), 231
get_dataset() (satpy.readers.abi_l1b.NC_ABI_L1B get_dataset() (satpy.readers.file_handlers.BaseFileHandler
method), 202 method), 234
get_dataset() (satpy.readers.abi_l2_nc.NC_ABI_L2 get_dataset() (satpy.readers.generic_image.GenericImageFileHandler
method), 202 method), 235
get_dataset() (satpy.readers.acspo.ACSPOFileHandler get_dataset() (satpy.readers.geocat.GEOCATFileHandler
method), 202 method), 237
get_dataset() (satpy.readers.agri_l1.HDF_AGRI_L1 get_dataset() (satpy.readers.gerb_l2_hr_h5.GERB_HR_FileHandler
method), 203 method), 238
get_dataset() (satpy.readers.ahi_hsd.AHIHSDFileHandler get_dataset() (satpy.readers.ghi_l1.HDF_GHI_L1
method), 206 method), 238
get_dataset() (satpy.readers.ahi_l1b_gridded_bin.AHIGriddedFileHandler
get_dataset() (satpy.readers.ghrsst_l2.GHRSSTL2FileHandler
method), 208 method), 238
get_dataset() (satpy.readers.ahi_l2_nc.HIML2NCFileHandlerget_dataset() (satpy.readers.gld360_ualf2.VaisalaGld360Ualf2FileHand
method), 209 method), 239
get_dataset() (satpy.readers.ami_l1b.AMIL1bNetCDF get_dataset() (satpy.readers.glm_l2.NCGriddedGLML2
method), 210 method), 240
get_dataset() (satpy.readers.amsr2_l1b.AMSR2L1BFileHandler
get_dataset() (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHand
method), 210 method), 181
get_dataset() (satpy.readers.amsr2_l2.AMSR2L2FileHandler get_dataset() (satpy.readers.goci2_l2_nc.GOCI2L2NCFileHandler
method), 211 method), 240
get_dataset() (satpy.readers.amsr2_l2_gaasp.GAASPFileHandler
get_dataset() (satpy.readers.goes_imager_hrit.HRITGOESFileHandler
method), 212 method), 241
get_dataset() (satpy.readers.ascat_l2_soilmoisture_bufr.AscatSoilMoistureBufr
get_dataset() (satpy.readers.goes_imager_nc.GOESEUMGEONCFileHa
method), 213 method), 246
get_dataset() (satpy.readers.atms_l1b_nc.AtmsL1bNCFileHandler
get_dataset() (satpy.readers.goes_imager_nc.GOESEUMNCFileHandle
method), 214 method), 246
get_dataset() (satpy.readers.atms_sdr_hdf5.ATMS_SDR_FileHandler
get_dataset() (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler
method), 215 method), 249
get_dataset() (satpy.readers.avhrr_l1b_gaclac.GACLACFile get_dataset() (satpy.readers.goes_imager_nc.GOESNCFileHandler
method), 216 method), 249
get_dataset() (satpy.readers.clavrx.CLAVRXHDF4FileHandlerget_dataset() (satpy.readers.gpm_imerg.Hdf5IMERG
method), 217 method), 250
get_dataset() (satpy.readers.clavrx.CLAVRXNetCDFFileHandler
get_dataset() (satpy.readers.grib.GRIBFileHandler
method), 217 method), 251
get_dataset() (satpy.readers.cmsaf_claas2.CLAAS2 get_dataset() (satpy.readers.hdfeos_base.HDFEOSGeoReader
method), 219 method), 254
get_dataset() (satpy.readers.electrol_hrit.HRITGOMSFileHandler
get_dataset() (satpy.readers.hrit_base.HRITFileHandler

Index 803
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 255 method), 297


get_dataset() (satpy.readers.hrit_jma.HRITJMAFileHandler
get_dataset() (satpy.readers.mwr_l1c.AWS_MWR_L1CFile
method), 259 method), 298
get_dataset() (satpy.readers.hrpt.HRPTFile method), get_dataset() (satpy.readers.mws_l1b.MWSL1BFile
260 method), 299
get_dataset() (satpy.readers.hsaf_grib.HSAFFileHandlerget_dataset() (satpy.readers.nucaps.NUCAPSFileHandler
method), 261 method), 302
get_dataset() (satpy.readers.hsaf_h5.HSAFFileHandler get_dataset() (satpy.readers.nwcsaf_msg2013_hdf5.Hdf5NWCSAF
method), 262 method), 304
get_dataset() (satpy.readers.hy2_scat_l2b_h5.HY2SCATL2BH5FileHandler
get_dataset() (satpy.readers.nwcsaf_nc.NcNWCSAF
method), 262 method), 304
get_dataset() (satpy.readers.iasi_l2.IASIL2CDRNC get_dataset() (satpy.readers.oceancolorcci_l3_nc.OCCCIFileHandler
method), 263 method), 306
get_dataset() (satpy.readers.iasi_l2.IASIL2HDF5 get_dataset() (satpy.readers.olci_nc.NCOLCI1B
method), 263 method), 306
get_dataset() (satpy.readers.iasi_l2_so2_bufr.IASIL2SO2BUFR
get_dataset() (satpy.readers.olci_nc.NCOLCI2
method), 265 method), 307
get_dataset() (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler
get_dataset() (satpy.readers.olci_nc.NCOLCIAngles
method), 267 method), 307
get_dataset() (satpy.readers.insat3d_img_l1b_h5.Insat3DIMGL1BH5FileHandler
get_dataset() (satpy.readers.olci_nc.NCOLCIBase
method), 268 method), 307
get_dataset() (satpy.readers.li_base_nc.LINCFileHandlerget_dataset() (satpy.readers.olci_nc.NCOLCIMeteo
method), 272 method), 308
get_dataset() (satpy.readers.li_l2_nc.LIL2NCFileHandlerget_dataset() (satpy.readers.oli_tirs_l1_tif.OLITIRSCHReader
method), 274 method), 309
get_dataset() (satpy.readers.maia.MAIAFileHandler get_dataset() (satpy.readers.omps_edr.EDRFileHandler
method), 275 method), 310
get_dataset() (satpy.readers.mcd12q1.MCD12Q1HDFFileHandler
get_dataset() (satpy.readers.osisaf_l3_nc.OSISAFL3NCFileHandler
method), 276 method), 311
get_dataset() (satpy.readers.mersi_l1b.MERSIL1B get_dataset() (satpy.readers.safe_sar_l2_ocn.SAFENC
method), 278 method), 316
get_dataset() (satpy.readers.mimic_TPW2_nc.MimicTPW2FileHandler
get_dataset() (satpy.readers.sar_c_safe.Calibrator
method), 278 method), 317
get_dataset() (satpy.readers.mirs.MiRSL2ncHandler get_dataset() (satpy.readers.sar_c_safe.Denoiser
method), 280 method), 318
get_dataset() (satpy.readers.modis_l1b.HDFEOSBandReaderget_dataset() (satpy.readers.sar_c_safe.SAFEGRD
method), 282 method), 318
get_dataset() (satpy.readers.modis_l1b.MixedHDFEOSReader
get_dataset() (satpy.readers.sar_c_safe.SAFEXMLAnnotation
method), 282 method), 320
get_dataset() (satpy.readers.modis_l2.ModisL2HDFFileHandler
get_dataset() (satpy.readers.satpy_cf_nc.SatpyCFFileHandler
method), 283 method), 324
get_dataset() (satpy.readers.modis_l3.ModisL3GriddedHDFFileHandler
get_dataset() (satpy.readers.scmi.SCMIFileHandler
method), 285 method), 325
get_dataset() (satpy.readers.msi_safe.SAFEMSIL1C get_dataset() (satpy.readers.seadas_l2._SEADASL2Base
method), 285 method), 327
get_dataset() (satpy.readers.msi_safe.SAFEMSITileMDXML get_dataset() (satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler
method), 287 method), 339
get_dataset() (satpy.readers.msu_gsa_l1b.MSUGSAFileHandler
get_dataset() (satpy.readers.seviri_l1b_icare.SEVIRI_ICARE
method), 288 method), 342
get_dataset() (satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriBase
get_dataset() (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
method), 292 method), 346
get_dataset() (satpy.readers.mwr_l1b.AWS_EPS_Sterna_BaseFileHandler
get_dataset() (satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler
method), 296 method), 351
get_dataset() (satpy.readers.mwr_l1b.AWS_EPS_Sterna_MWR_L1BFile
get_dataset() (satpy.readers.seviri_l1b_nc.NCSEVIRIHRVFileHandler

804 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 351 satpy.readers.gms.gms5_vissr_l1b), 182


get_dataset() (satpy.readers.sgli_l1b.HDF5SGLI get_earth_radii() (satpy.readers.seviri_l1b_hrit.HRITMSGPrologueFil
method), 352 method), 340
get_dataset() (satpy.readers.slstr_l1b.NCSLSTR1B get_earth_radius() (in module satpy.readers.utils),
method), 353 360
get_dataset() (satpy.readers.slstr_l1b.NCSLSTRAngles get_earth_radius_large()
method), 353 (satpy.writers.ninjogeotiff.NinJoTagGenerator
get_dataset() (satpy.readers.slstr_l1b.NCSLSTRFlag method), 666
method), 354 get_earth_radius_small()
get_dataset() (satpy.readers.slstr_l1b.NCSLSTRGeo (satpy.writers.ninjogeotiff.NinJoTagGenerator
method), 354 method), 666
get_dataset() (satpy.readers.smos_l2_wind.SMOSL2WINDFileHandler
get_enhanced_image() (in module satpy.writers), 677
method), 355 get_entry_points_config_dirs() (in module
get_dataset() (satpy.readers.tropomi_l2.TROPOMIL2FileHandler satpy._config), 679
method), 356 get_fake_dataset_info() (in module
get_dataset() (satpy.readers.vaisala_gld360.VaisalaGLD360TextFileHandler
satpy.tests.reader_tests.test_seviri_l1b_hrit_setup),
method), 362 539
get_dataset() (satpy.readers.vii_base_nc.ViiNCBaseFileHandler
get_fake_epilogue() (in module
method), 363 satpy.tests.reader_tests.test_seviri_l1b_hrit_setup),
get_dataset() (satpy.readers.viirs_compact.VIIRSCompactFileHandler539
method), 367 get_fake_file_handler() (in module
get_dataset() (satpy.readers.viirs_edr.VIIRSJRRFileHandler satpy.tests.reader_tests.test_seviri_l1b_hrit_setup),
method), 369 539
get_dataset() (satpy.readers.viirs_edr_active_fires.VIIRSActiveFiresFileHandler
get_fake_filename_info() (in module
method), 370 satpy.tests.reader_tests.test_seviri_l1b_hrit_setup),
get_dataset() (satpy.readers.viirs_edr_active_fires.VIIRSActiveFiresTextFileHandler
541
method), 371 get_fake_mda() (in module
get_dataset() (satpy.readers.viirs_edr_flood.VIIRSEDRFlood satpy.tests.reader_tests.test_seviri_l1b_hrit_setup),
method), 371 541
get_dataset() (satpy.readers.viirs_l1b.VIIRSL1BFileHandler
get_fake_prologue() (in module
method), 372 satpy.tests.reader_tests.test_seviri_l1b_hrit_setup),
get_dataset() (satpy.readers.viirs_l2.VIIRSL2FileHandler 541
method), 373 get_fci_test_data_dir() (in module
get_dataset() (satpy.readers.viirs_sdr.VIIRSSDRFileHandler satpy.demo.fci), 145
method), 374 get_filename() (satpy.writers.awips_tiled.AWIPSTiledWriter
get_dataset() (satpy.readers.viirs_vgac_l1c_nc.VGACFileHandler method), 650
method), 376 get_filename() (satpy.writers.awips_tiled.NetCDFTemplate
get_dataset() (satpy.readers.virr_l1b.VIRR_L1B method), 652
method), 377 get_filename() (satpy.writers.ninjogeotiff.NinJoTagGenerator
get_dataset() (satpy.tests.utils.FakeFileHandler method), 666
method), 642 get_filename() (satpy.writers.Writer method), 674
get_dataset_infos() get_fill_value() (in module satpy.resample), 704
(satpy.readers.li_base_nc.LINCFileHandler get_first_valid_variable()
method), 272 (satpy.readers.li_base_nc.LINCFileHandler
get_dataset_key() (satpy.readers.yaml_reader.AbstractYAMLReader method), 272
method), 378 get_full_angles() (satpy.readers.sgli_l1b.HDF5SGLI
get_dataset_key() (satpy.readers.yaml_reader.FileYAMLReader method), 352
method), 381 get_gain_offset() (satpy.readers.seviri_base.SEVIRICalibrationHandle
get_dataset_with_area_def() method), 332
(satpy.readers.eum_l2_bufr.EumetsatL2BufrFileHandler
get_gcps() (satpy.readers.sar_c_safe.SAFEGRD
method), 223 method), 319
get_date_id() (satpy.writers.ninjogeotiff.NinJoTagGenerator
get_gcps_from_array() (in module
method), 666 satpy.readers.sar_c_safe), 321
get_earth_mask() (in module get_geos_area_naming() (in module

Index 805
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers._geos_area), 197 method), 666


get_geostationary_angle_extent() (in module get_measured_variable()
satpy.readers.utils), 360 (satpy.readers.li_base_nc.LINCFileHandler
get_geostationary_bounding_box() (in module method), 272
satpy.readers.utils), 360 get_meirink_slope() (in module
get_geostationary_mask() (in module satpy.readers.seviri_base), 334
satpy.readers.utils), 360 get_meridian_east()
get_header_content() (in module (satpy.writers.ninjogeotiff.NinJoTagGenerator
satpy.readers.hrit_base), 256 method), 666
get_header_id() (in module satpy.readers.hrit_base), get_meridian_west()
256 (satpy.writers.ninjogeotiff.NinJoTagGenerator
get_hurricane_florence_abi() (in module method), 667
satpy.demo.abi_l1b), 144 get_metadata() (satpy.readers.acspo.ACSPOFileHandler
get_image_size() (satpy.readers.mviri_l1b_fiduceo_nc.DatasetAccessor
method), 202
method), 290 get_metadata() (satpy.readers.amsr2_l1b.AMSR2L1BFileHandler
get_img_bounds() (satpy.readers.seviri_l1b_native.ImageBoundaries method), 211
method), 344 get_metadata() (satpy.readers.clavrx._CLAVRxHelper
get_interpolated_dataset() static method), 218
(satpy.readers.hdfeos_base.HDFEOSGeoReader get_metadata() (satpy.readers.geocat.GEOCATFileHandler
method), 254 method), 237
get_iqt_parameters_lon_lat_alt() get_metadata() (satpy.readers.grib.GRIBFileHandler
(satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler method), 251
method), 228 get_metadata() (satpy.readers.hsaf_grib.HSAFFileHandler
get_ir_dataset() (satpy.readers.sgli_l1b.HDF5SGLI method), 261
method), 352 get_metadata() (satpy.readers.hsaf_h5.HSAFFileHandler
get_jit_methods() (in module method), 262
satpy.tests.reader_tests.utils), 569 get_metadata() (satpy.readers.hy2_scat_l2b_h5.HY2SCATL2BH5FileHa
get_key() (in module satpy.dataset.data_dict), 137 method), 262
get_key() (satpy.dataset.data_dict.DatasetDict get_metadata() (satpy.readers.mimic_TPW2_nc.MimicTPW2FileHandler
method), 136 method), 279
get_key() (satpy.dependency_tree._DataIDContainer get_metadata() (satpy.readers.nucaps.NUCAPSFileHandler
method), 688 method), 302
get_keys_from_config() (in module get_metadata() (satpy.readers.omps_edr.EDRFileHandler
satpy.dataset.dataid), 142 method), 310
get_latlon_names() (satpy.readers.li_base_nc.LINCFileHandler
get_metadata() (satpy.readers.sar_c_safe.SAFEXML
method), 272 method), 319
get_legacy_chunk_size() (in module satpy.utils), 720 get_metadata() (satpy.readers.seviri_l1b_icare.SEVIRI_ICARE
get_list_channel_calibration() (in module method), 342
satpy.tests.reader_tests.test_fci_l1c_nc), 465 get_metadata() (satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler
get_logger() (in module satpy.utils), 720 method), 351
get_lon_lat() (in module get_metadata() (satpy.readers.smos_l2_wind.SMOSL2WINDFileHandler
satpy.readers.gms.gms5_vissr_navigation), method), 355
194 get_metadata() (satpy.readers.tropomi_l2.TROPOMIL2FileHandler
get_lon_lats() (satpy.readers.sgli_l1b.HDF5SGLI method), 356
method), 352 get_metadata() (satpy.readers.viirs_edr_flood.VIIRSEDRFlood
get_lonlat_suffix() (in module method), 371
satpy.readers.insat3d_img_l1b_h5), 268 get_metadata() (satpy.readers.viirs_l1b.VIIRSL1BFileHandler
get_lonlats() (satpy.readers.eps_l1b.EPSAVHRRFile method), 372
method), 221 get_metadata() (satpy.readers.viirs_l2.VIIRSL2FileHandler
get_lons_lats() (in module method), 373
satpy.readers.gms.gms5_vissr_navigation), get_min_gray_value()
194 (satpy.writers.ninjogeotiff.NinJoTagGenerator
get_max_gray_value() method), 667
(satpy.writers.ninjogeotiff.NinJoTagGenerator get_missing_and_saturated()

806 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(satpy.readers.sgli_l1b.HDF5SGLI method), satpy.readers._geos_area), 197


352 get_resource_string() (in module
get_modifier() (satpy.dependency_tree.DependencyTree satpy.readers.mirs), 280
method), 686 get_right_geo_fhs()
get_native_header() (in module (satpy.readers.viirs_sdr.VIIRSSDRReader
satpy.readers.seviri_l1b_native_hdr), 349 method), 375
get_new_read_prologue() (in module get_satellite_zenith_angle() (in module
satpy.tests.reader_tests.test_seviri_l1b_hrit_setup), satpy.modifiers.angles), 161
541 get_satpos() (in module satpy.readers.seviri_base),
get_nominal_end_time() 334
(satpy.readers.ahi_hsd._NominalTimeCalculator get_satpos() (in module satpy.utils), 720
method), 207 get_scaling_from_history()
get_nominal_start_time() (satpy.tests.writer_tests.test_ninjotiff.FakeImage
(satpy.readers.ahi_hsd._NominalTimeCalculator method), 589
method), 207 get_segment_position_info()
get_observation_time() (in module (satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler
satpy.readers.gms.gms5_vissr_navigation), method), 228
194 get_sensor() (satpy.readers.geocat.GEOCATFileHandler
get_orbit_polynomial() method), 237
(satpy.readers.seviri_base.OrbitPolynomialFinderget_sensor_angles()
method), 331 (satpy.readers.sgli_l1b.HDF5SGLI method),
get_orbital_parameters() 352
(satpy.readers.ami_l1b.AMIL1bNetCDF get_sensor_enhancement_config()
method), 210 (satpy.writers.Enhancer method), 672
get_orbital_parameters() get_service_mode() (in module
(satpy.readers.nwcsaf_nc.NcNWCSAF satpy.readers.eum_base), 222
method), 304 get_shape() (satpy.readers.acspo.ACSPOFileHandler
get_padding_area() (in module method), 202
satpy.readers.seviri_base), 334 get_shape() (satpy.readers.amsr2_l1b.AMSR2L1BFileHandler
get_parallax_corrected_lonlats() (in module method), 211
satpy.modifiers.parallax), 168 get_shape() (satpy.readers.clavrx.CLAVRXHDF4FileHandler
get_parameters_lon_lat_alt() method), 217
(satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler get_shape() (satpy.readers.geocat.GEOCATFileHandler
method), 228 method), 237
get_platform() (satpy.readers.geocat.GEOCATFileHandler get_shape() (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler
method), 237 method), 249
get_platform() (satpy.readers.maia.MAIAFileHandler get_shape() (satpy.readers.nucaps.NUCAPSFileHandler
method), 275 method), 302
get_product_schema() (in module get_shape() (satpy.readers.omps_edr.EDRFileHandler
satpy.tests.reader_tests._li_test_utils), 426 method), 310
get_projection() (satpy.writers.ninjogeotiff.NinJoTagGenerator
get_shape() (satpy.readers.scmi.SCMIFileHandler
method), 667 method), 325
get_projection_config() get_shape() (satpy.readers.viirs_l1b.VIIRSL1BFileHandler
(satpy.readers.li_base_nc.LINCFileHandler method), 372
method), 272 get_slope() (satpy.readers.seviri_base.MeirinkCalibrationHandler
get_ref_lat_1() (satpy.writers.ninjogeotiff.NinJoTagGenerator method), 329
method), 667 get_solar_angles() (satpy.readers.sgli_l1b.HDF5SGLI
get_ref_lat_2() (satpy.writers.ninjogeotiff.NinJoTagGenerator method), 352
method), 667 get_start_end_date()
get_reference() (satpy.readers.hdf5_utils.HDF5FileHandler (satpy.readers.ascat_l2_soilmoisture_bufr.AscatSoilMoistureBufr
method), 252 method), 213
get_refl_mult() (satpy.readers.mersi_l1b.MERSIL1B get_start_end_date()
method), 278 (satpy.readers.iasi_l2_so2_bufr.IASIL2SO2BUFR
get_resolution_and_unit_strings() (in module method), 265

Index 807
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_storage_options_from_reader_kwargs() (in method), 541


module satpy.utils), 720 get_test_content() (satpy.tests.reader_tests.test_smos_l2_wind.FakeNe
get_sub_area() (in module satpy.readers.utils), 361 method), 549
get_surface_parallax_displacement() (in module get_test_content() (satpy.tests.reader_tests.test_tropomi_l2.FakeNetCD
satpy.modifiers.parallax), 169 method), 550
get_tag() (satpy.writers.ninjogeotiff.NinJoTagGenerator get_test_content() (satpy.tests.reader_tests.test_viirs_edr_active_fires.F
method), 667 method), 558
get_test_attrs() (in module get_test_content() (satpy.tests.reader_tests.test_viirs_edr_active_fires.F
satpy.tests.cf_tests._test_data), 392 method), 558
get_test_content() (satpy.tests.reader_tests._li_test_utils.FakeLIFileHandlerBase
get_test_content() (satpy.tests.reader_tests.test_viirs_edr_active_fires.F
method), 425 method), 559
get_test_content() (satpy.tests.reader_tests.test_acspo.FakeNetCDF4FileHandler2
get_test_content() (satpy.tests.reader_tests.test_viirs_edr_active_fires.F
method), 432 method), 559
get_test_content() (satpy.tests.reader_tests.test_agri_l1.FakeHDF5FileHandler2
get_test_content() (satpy.tests.reader_tests.test_viirs_edr_flood.FakeH
method), 433 method), 561
get_test_content() (satpy.tests.reader_tests.test_amsr2_l1b.FakeHDF5FileHandler2
get_test_content() (satpy.tests.reader_tests.test_viirs_l1b.FakeNetCDF
method), 440 method), 562
get_test_content() (satpy.tests.reader_tests.test_amsr2_l2.FakeHDF5FileHandler2
get_test_content() (satpy.tests.reader_tests.test_viirs_l2.FakeNetCDF4
method), 441 method), 564
get_test_content() (satpy.tests.reader_tests.test_atms_sdr_hdf5.FakeHDF5_ATMS_SDR_FileHandler
get_test_content() (satpy.tests.reader_tests.test_viirs_sdr.FakeHDF5Fi
method), 444 method), 565
get_test_content() (satpy.tests.reader_tests.test_clavrx.test_clavrx_geohdf.FakeHDF4FileHandlerGeo
get_test_content() (satpy.tests.reader_tests.test_virr_l1b.FakeHDF5Fil
method), 423 method), 569
get_test_content() (satpy.tests.reader_tests.test_clavrx.test_clavrx_polarhdf.FakeHDF4FileHandlerPolar
get_test_data() (in module satpy.tests.test_resample),
method), 424 629
get_test_content() (satpy.tests.reader_tests.test_fci_l1c_nc.FakeFCIFileHandlerBase
get_total_cot() (satpy.readers.fci_l2_nc.FciL2NCFileHandler
method), 460 static method), 231
get_test_content() (satpy.tests.reader_tests.test_geocat.FakeNetCDF4FileHandler2
get_transform_reference()
method), 471 (satpy.readers.li_base_nc.LINCFileHandler
get_test_content() (satpy.tests.reader_tests.test_ghi_l1.FakeHDF5FileHandler2
method), 272
method), 473 get_transformed_dataset()
get_test_content() (satpy.tests.reader_tests.test_gpm_imerg.FakeHDF5FileHandler2
(satpy.readers.li_base_nc.LINCFileHandler
method), 482 method), 272
get_test_content() (satpy.tests.reader_tests.test_hdf4_utils.FakeHDF4FileHandler
get_transparent_pixel()
method), 484 (satpy.writers.ninjogeotiff.NinJoTagGenerator
get_test_content() (satpy.tests.reader_tests.test_hdf5_utils.FakeHDF5FileHandler
method), 667
method), 485 get_us_midlatitude_cyclone_abi() (in module
get_test_content() (satpy.tests.reader_tests.test_hy2_scat_l2b_h5.FakeHDF5FileHandler2
satpy.demo.abi_l1b), 145
method), 490 get_user_calibration_factors() (in module
get_test_content() (satpy.tests.reader_tests.test_mersi_l1b.FakeHDF5FileHandler2
satpy.readers.utils), 361
method), 500 get_valid_reader_names() (in module
get_test_content() (satpy.tests.reader_tests.test_mimic_TPW2_lowres.FakeNetCDF4FileHandlerMimicLow
satpy.readers), 390
method), 504 get_variable_dataset()
get_test_content() (satpy.tests.reader_tests.test_mimic_TPW2_nc.FakeNetCDF4FileHandlerMimic
(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
method), 505 method), 497
get_test_content() (satpy.tests.reader_tests.test_msu_gsa_l1b.FakeHDF5FileHandler2
get_variable_metadata()
method), 508 (satpy.readers.hy2_scat_l2b_h5.HY2SCATL2BH5FileHandler
get_test_content() (satpy.tests.reader_tests.test_netcdf_utils.FakeNetCDF4FileHandler
method), 262
method), 512 get_variable_search_paths()
get_test_content() (satpy.tests.reader_tests.test_nucaps.FakeNetCDF4FileHandler2
(satpy.readers.li_base_nc.LINCFileHandler
method), 514 method), 272
get_test_content() (satpy.tests.reader_tests.test_omps_edr.FakeHDF5FileHandler2
get_variable_writer()
method), 525 (satpy.tests.reader_tests._li_test_utils.FakeLIFileHandlerBase
get_test_content() (satpy.tests.reader_tests.test_seviri_l1b_icare.FakeHDF4FileHandler2
method), 425

808 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

get_viirs_sdr_20170128_1229() (in module gp_cpu_address (satpy.readers.seviri_l1b_native_hdr.GSDTRecords


satpy.demo.viirs_sdr), 146 attribute), 347
get_visible_dataset() gp_fac_env (satpy.readers.seviri_l1b_native_hdr.GSDTRecords
(satpy.readers.sgli_l1b.HDF5SGLI method), attribute), 347
352 gp_fac_id (satpy.readers.seviri_l1b_native_hdr.GSDTRecords
get_xmaximum() (satpy.writers.ninjogeotiff.NinJoTagGenerator attribute), 347
method), 667 gp_pk_header (satpy.readers.seviri_l1b_native_hdr.GSDTRecords
get_xy_coords() (satpy.readers.mviri_l1b_fiduceo_nc.DatasetAccessor attribute), 347
method), 290 gp_pk_sh1 (satpy.readers.seviri_l1b_native_hdr.GSDTRecords
get_xy_from_linecol() (in module attribute), 347
satpy.readers._geos_area), 197 gp_sc_id (satpy.readers.seviri_l1b_native_hdr.GSDTRecords
get_xy_from_linecol() attribute), 348
(satpy.readers.hrit_base.HRITFileHandler gp_su_id (satpy.readers.seviri_l1b_native_hdr.GSDTRecords
method), 255 attribute), 348
get_ymaximum() (satpy.writers.ninjogeotiff.NinJoTagGeneratorgp_svce_type (satpy.readers.seviri_l1b_native_hdr.GSDTRecords
method), 667 attribute), 348
getbitmask() (satpy.readers.meris_nc_sen3.NCMERIS2 granule_directory() (in module
method), 276 satpy.tests.reader_tests.test_sar_c_safe),
getbitmask() (satpy.readers.olci_nc.NCOLCI1B 529
method), 306 greenwich_sidereal_time
getbitmask() (satpy.readers.olci_nc.NCOLCI2 (satpy.readers.gms.gms5_vissr_navigation.OrbitAngles
method), 307 attribute), 186
getitem() (satpy.dataset.data_dict.DatasetDict GRIBFileHandler (class in satpy.readers.grib), 250
method), 137 grid_size (satpy.readers.cmsaf_claas2.CLAAS2 at-
getitem() (satpy.dependency_tree.Tree method), 687 tribute), 219
GHRSSTL2FileHandler (class in group() (satpy.multiscene._multiscene.MultiScene
satpy.readers.ghrsst_l2), 238 method), 173
glob_config() (in module satpy._config), 679 group_files() (in module satpy.readers), 390
GMS5VISSRFileHandler (class in group_results_by_output_file() (in module
satpy.readers.gms.gms5_vissr_l1b), 179 satpy.writers), 677
GOCI2L2NCFileHandler (class in groups() (in module satpy.tests.multiscene_tests.test_blend),
satpy.readers.goci2_l2_nc), 240 408
GOESCoefficientReader (class in groups() (satpy.tests.multiscene_tests.test_misc.TestMultiSceneGrouping
satpy.readers.goes_imager_nc), 245 method), 409
GOESEUMGEONCFileHandler (class in GSDTRecords (class in
satpy.readers.goes_imager_nc), 246 satpy.readers.seviri_l1b_native_hdr), 347
GOESEUMNCFileHandler (class in gvar_channels (satpy.readers.goes_imager_nc.GOESCoefficientReader
satpy.readers.goes_imager_nc), 246 attribute), 246
GOESNCBaseFileHandler (class in GVSYReader() (in module satpy.tests.test_yaml_reader),
satpy.readers.goes_imager_nc), 247 637
GOESNCBaseFileHandlerTest (class in
satpy.tests.reader_tests.test_goes_imager_nc_noaa), H
479 h5netcdf() (satpy.tests.reader_tests.test_seviri_l1b_nc.TestNCSEVIRIFile
GOESNCEUMFileHandlerRadianceTest (class in method), 545
satpy.tests.reader_tests.test_goes_imager_nc_eum), handler_with_area()
479 (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
GOESNCEUMFileHandlerReflectanceTest (class in method), 497
satpy.tests.reader_tests.test_goes_imager_nc_eum), has_archive_header() (in module
479 satpy.readers.seviri_l1b_native), 347
GOESNCFileHandler (class in has_projection_coords() (in module
satpy.readers.goes_imager_nc), 249 satpy.cf.coords), 107
GOESNCFileHandlerTest (class in has_reflectance_bands
satpy.tests.reader_tests.test_goes_imager_nc_noaa), (satpy.tests.reader_tests.test_viirs_l1b.TestVIIRSL1BReaderDay
480 attribute), 563

Index 809
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

has_reflectance_bands HritPrologue (class in


(satpy.tests.reader_tests.test_viirs_l1b.TestVIIRSL1BReaderDayNight
satpy.readers.seviri_l1b_native_hdr), 348
attribute), 564 HRITSegment (class in satpy.readers.hrit_base), 255
hash_dict() (in module satpy.resample), 704 HRPTFile (class in satpy.readers.hrpt), 259
HDF4FileHandler (class in satpy.readers.hdf4_utils), HSAFFileHandler (class in satpy.readers.hsaf_grib),
252 260
HDF5FileHandler (class in satpy.readers.hdf5_utils), HSAFFileHandler (class in satpy.readers.hsaf_h5), 261
252 hsd_file_jp01() (in module
Hdf5IMERG (class in satpy.readers.gpm_imerg), 250 satpy.tests.reader_tests.test_ahi_hsd), 436
Hdf5NWCSAF (class in satpy.readers.nwcsaf_msg2013_hdf5),HY2SCATL2BH5FileHandler (class in
303 satpy.readers.hy2_scat_l2b_h5), 262
HDF5SGLI (class in satpy.readers.sgli_l1b), 351 HybridGreen (class in satpy.composites.spectral), 116
HDF_AGRI_L1 (class in satpy.readers.agri_l1), 203
HDF_GHI_L1 (class in satpy.readers.ghi_l1), 238 I
HDFEOSBandReader (class in satpy.readers.modis_l1b), I_BANDS (satpy.tests.reader_tests.test_viirs_l1b.FakeNetCDF4FileHandlerD
281 attribute), 562
HDFEOSBaseFileReader (class in I_BANDS (satpy.tests.reader_tests.test_viirs_l1b.FakeNetCDF4FileHandlerN
satpy.readers.hdfeos_base), 252 attribute), 563
HDFEOSGeoReader (class in satpy.readers.hdfeos_base), I_BT_BANDS (satpy.tests.reader_tests.test_viirs_l1b.FakeNetCDF4FileHand
253 attribute), 562
HighCloudCompositor (class in satpy.composites), 128 I_REFL_BANDS (satpy.tests.reader_tests.test_viirs_l1b.FakeNetCDF4FileHa
HighlightCompositor (class in satpy.composites.glm), attribute), 562
114 IASIL2CDRNC (class in satpy.readers.iasi_l2), 262
himl2_filename() (in module IASIL2HDF5 (class in satpy.readers.iasi_l2), 263
satpy.tests.reader_tests.test_ahi_l2_nc), 438 IASIL2SO2BUFR (class in
himl2_filename_bad() (in module satpy.readers.iasi_l2_so2_bufr), 264
satpy.tests.reader_tests.test_ahi_l2_nc), 438 IciL1bFakeFileWriter (class in
HIML2NCFileHandler (class in satpy.tests.reader_tests.test_ici_l1b_nc),
satpy.readers.ahi_l2_nc), 208 493
histogram_equalization() (in module IciL1bNCFileHandler (class in
satpy.composites.viirs), 121 satpy.readers.ici_l1b_nc), 265
HistogramDNB (class in satpy.composites.viirs), 119 id (satpy.composites.CompositeBase property), 126
HRITFileHandler (class in satpy.readers.hrit_base), id_keys (satpy.dataset.dataid.DataID property), 139
254 identical_decorator() (in module
HRITGOESFileHandler (class in satpy.tests.enhancement_tests.test_enhancements),
satpy.readers.goes_imager_hrit), 240 401
HRITGOESPrologueFileHandler (class in ignore_invalid_float_warnings() (in module
satpy.readers.goes_imager_hrit), 241 satpy.utils), 720
HRITGOMSEpilogueFileHandler (class in ignore_pyproj_proj_warnings() (in module
satpy.readers.electrol_hrit), 219 satpy.utils), 721
HRITGOMSFileHandler (class in image_acquisition (satpy.readers.seviri_l1b_native_hdr.L15DataHeader
satpy.readers.electrol_hrit), 219 property), 348
HRITGOMSPrologueFileHandler (class in image_data() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileH
satpy.readers.electrol_hrit), 219 method), 412
HRITJMAFileHandler (class in satpy.readers.hrit_jma), image_data_ir1() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestF
257 method), 412
HRITMSGEpilogueFileHandler (class in image_data_vis() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestF
satpy.readers.seviri_l1b_hrit), 338 method), 412
HRITMSGFileHandler (class in image_description (satpy.readers.seviri_l1b_native_hdr.L15DataHeader
satpy.readers.seviri_l1b_hrit), 338 property), 348
HRITMSGPrologueEpilogueBase (class in image_mode() (in module
satpy.readers.seviri_l1b_hrit), 340 satpy.tests.multiscene_tests.test_blend), 408
HRITMSGPrologueFileHandler (class in image_offset (satpy.readers.gms.gms5_vissr_navigation.ProjectionParam
satpy.readers.seviri_l1b_hrit), 340 attribute), 188

810 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

image_parameters() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileHandler
194
method), 412 interpolate_angles()
image_params_order (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.VissrFileWriter
(satpy.readers.msi_safe.SAFEMSITileMDXML
attribute), 414 method), 287
image_production_stats interpolate_attitude_prediction() (in module
(satpy.readers.seviri_l1b_native_hdr.Msg15NativeTrailerRecord
satpy.readers.gms.gms5_vissr_navigation),
property), 349 194
image_shape (satpy.readers.sar_c_safe.SAFEXMLAnnotation interpolate_continuous() (in module
property), 320 satpy.readers.gms.gms5_vissr_navigation),
image_shape (satpy.writers.awips_tiled.TileInfo at- 194
tribute), 653 interpolate_navigation_prediction() (in module
ImageBoundaries (class in satpy.readers.gms.gms5_vissr_navigation), 194
satpy.readers.seviri_l1b_native), 344 interpolate_nearest() (in module
ImageNavigationParameters (class in satpy.readers.gms.gms5_vissr_navigation),
satpy.readers.gms.gms5_vissr_navigation), 194
184 interpolate_orbit_prediction() (in module
ImageOffset (class in satpy.readers.gms.gms5_vissr_navigation),
satpy.readers.gms.gms5_vissr_navigation), 194
184 interpolate_spherical()
images() (satpy.scene.Scene method), 711 (satpy.readers.sgli_l1b.HDF5SGLI method),
images_used (satpy.readers.seviri_base.MpefProductHeader 352
property), 330 interpolate_xarray_linear() (in module
ImageWriter (class in satpy.writers), 672 satpy.readers.sar_c_safe), 321
impf_configuration (satpy.readers.seviri_l1b_native_hdr.L15DataHeaderRecord
interpolate_xml_array()
property), 348 (satpy.readers.sar_c_safe.XMLArray method),
import_error_helper() (in module satpy.utils), 721 320
in_ipynb() (in module satpy.utils), 721 InterpolationType (class in satpy.readers.ici_l1b_nc),
include_test_etc() (in module satpy.tests.conftest), 268
590 Interpolator (class in
IncompatibleAreas, 129 satpy.readers.mviri_l1b_fiduceo_nc), 293
IncompatibleTimes, 129 intersect_with_earth() (in module
IncompleteHeightWarning, 165 satpy.readers.gms.gms5_vissr_navigation),
infer_mode() (satpy.composites.GenericCompositor 194
class method), 128 intp() (in module satpy.readers.sar_c_safe), 321
inject_fixtures() (satpy.tests.test_readers.TestReaderLoader
inverse_projection()
method), 622 (satpy.readers.li_base_nc.LINCFileHandler
input_data_arr() (in module method), 272
satpy.tests.cf_tests.test_area), 393 invert() (in module satpy.enhancements), 151
Insat3DIMGL1BH5FileHandler (class in iop_file() (in module
satpy.readers.insat3d_img_l1b_h5), 268 satpy.tests.reader_tests.test_goci2_l2_nc),
insat_filehandler() (in module 477
satpy.tests.reader_tests.test_insat3d_img_l1b_h5),ir1_bt_exp() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileH
495 method), 412
insat_filename() (in module ir1_calibration() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.Tes
satpy.tests.reader_tests.test_insat3d_img_l1b_h5), method), 412
495 ir1_counts_exp() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestF
interp_acq_time() (satpy.readers.mviri_l1b_fiduceo_nc.Interpolator method), 413
static method), 293 ir2_calibration() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.Tes
interp_tiepoints() (satpy.readers.mviri_l1b_fiduceo_nc.Interpolatormethod), 413
static method), 293 ir_1000_bands (satpy.tests.reader_tests.test_mersi_l1b.MERSI12llL1BTes
interpolate() (in module satpy.readers.hdfeos_base), attribute), 500
254 ir_1000_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3AMERSI1L
interpolate_angles() (in module attribute), 501
satpy.readers.gms.gms5_vissr_navigation), ir_1000_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3BMERSI1L

Index 811
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

attribute), 502 is_modified() (satpy.dataset.dataid.DataQuery


ir_1000_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3CMERSI1L1B
method), 140
attribute), 502 is_prod_in_accumulation_grid()
ir_1000_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3DMERSI2L1B
(satpy.readers.li_base_nc.LINCFileHandler
attribute), 503 method), 272
ir_1000_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3EMERSIllL1B
is_roi() (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
attribute), 503 method), 346
ir_108() (in module satpy.tests.reader_tests.test_satpy_cf_nc),
is_var_with_swath_coord()
531 (satpy.readers.li_l2_nc.LIL2NCFileHandler
ir_250_bands (satpy.tests.reader_tests.test_mersi_l1b.MERSI12llL1BTester
method), 274
attribute), 500 is_vis_channel() (in module
ir_250_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3AMERSI1L1B
satpy.readers.gms.gms5_vissr_l1b), 182
attribute), 501 is_vis_channel() (in module
ir_250_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3BMERSI1L1B
satpy.readers.goes_imager_nc), 250
attribute), 502 items() (satpy.dataset.dataid.DataQuery method), 140
ir_250_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3CMERSI1L1B
iter_by_area() (satpy.scene.Scene method), 711
attribute), 502 iter_content() (satpy.tests.test_demo._FakeRequest
ir_250_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3DMERSI2L1B
method), 611
attribute), 503
J
ir_250_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3EMERSIllL1B
attribute), 503 jma_true_color_reproduction() (in module
ir_calibrate() (satpy.readers.seviri_base.SEVIRICalibrationAlgorithm
satpy.enhancements), 151
method), 331 jp2_builder() (in module
ir_sectors (satpy.readers.goes_imager_nc.GOESEUMNCFileHandler satpy.tests.reader_tests.test_msi_safe), 508
attribute), 246 JPSS_SDR_FileHandler (class in
ir_sectors (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler satpy.readers.viirs_atms_sdr_base), 365
property), 249
ir_sectors (satpy.readers.goes_imager_nc.GOESNCFileHandler K
attribute), 249 KDTreeResampler (class in satpy.resample), 702
ir_tables (satpy.readers.goes_imager_nc.GOESCoefficientReader
keys() (satpy.dataset.data_dict.DatasetDict method),
attribute), 246 137
IRWVCalibrator (class in keys() (satpy.dependency_tree._DataIDContainer
satpy.readers.mviri_l1b_fiduceo_nc), 293 method), 688
is_generator (satpy.multiscene._multiscene.MultiScene keys() (satpy.readers.eps_l1b.EPSAVHRRFile method),
property), 174 221
is_geo (satpy.readers.geocat.GEOCATFileHandler keys() (satpy.scene.Scene method), 711
property), 237 keys() (satpy.tests.reader_tests.test_grib.FakeMessage
is_geo_loadable_dataset() method), 483
(satpy.readers.hdfeos_base.HDFEOSGeoReader
static method), 254 L
is_google_cloud_instance() (in module
satpy.demo._google_cloud_platform), 144 l15_ph_data (satpy.readers.seviri_l1b_native_hdr.L15PhData
is_gridded (satpy.readers.amsr2_l2_gaasp.GAASPFileHandler attribute), 349
attribute), 212 L15DataHeaderRecord (class in
is_gridded (satpy.readers.amsr2_l2_gaasp.GAASPGriddedFileHandler satpy.readers.seviri_l1b_native_hdr), 348
attribute), 212 L15MainProductHeaderRecord (class in
is_high_resol() (in module satpy.readers.seviri_l1b_native_hdr), 348
satpy.readers.mviri_l1b_fiduceo_nc), 295 L15PhData (class in satpy.readers.seviri_l1b_native_hdr),
is_imapp_mask_byte1 349
(satpy.readers.modis_l2.ModisL2HDFFileHandler L15SecondaryProductHeaderRecord (class in
property), 283 satpy.readers.seviri_l1b_native_hdr), 349
is_leaf (satpy.node.Node property), 689 l1_area() (in module
is_modified() (satpy.dataset.dataid.DataID method), satpy.tests.reader_tests.test_oli_tirs_l1_tif ),
139 524

812 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

l1_files_path() (in module listify_string() (in module


satpy.tests.reader_tests.test_oli_tirs_l1_tif ), satpy.readers.yaml_reader), 385
524 load() (satpy.multiscene._multiscene.MultiScene
l1b_file() (in module method), 174
satpy.tests.reader_tests.test_atms_l1b_nc), load() (satpy.readers.nucaps.NUCAPSReader method),
444 303
l2_af_schema() (in module load() (satpy.readers.sar_c_safe.SAFESARReader
satpy.tests.reader_tests._li_test_utils), 426 method), 319
l2_afa_schema() (in module load() (satpy.readers.yaml_reader.AbstractYAMLReader
satpy.tests.reader_tests._li_test_utils), 426 method), 378
l2_afr_schema() (in module load() (satpy.readers.yaml_reader.FileYAMLReader
satpy.tests.reader_tests._li_test_utils), 426 method), 381
l2_flags_var_name (satpy.readers.seadas_l2.SEADASL2HDFFileHandler
load() (satpy.scene.Scene method), 711
attribute), 326 load_bil_info() (satpy.resample.BilinearResampler
l2_flags_var_name (satpy.readers.seadas_l2.SEADASL2NetCDFFileHandler method), 700
attribute), 326 load_compositor_configs_for_sensor() (in mod-
l2_le_schema() (in module ule satpy.composites.config_loader), 114
satpy.tests.reader_tests._li_test_utils), 426 load_compositor_configs_for_sensors() (in mod-
l2_lef_schema() (in module ule satpy.composites.config_loader), 114
satpy.tests.reader_tests._li_test_utils), 426 load_dataset() (satpy.readers.hdfeos_base.HDFEOSBaseFileReader
l2_lfl_schema() (in module method), 253
satpy.tests.reader_tests._li_test_utils), 426 load_ds_ids_from_config()
l2_lgr_schema() (in module (satpy.readers.nucaps.NUCAPSReader
satpy.tests.reader_tests._li_test_utils), 426 method), 303
L2BufrData (class in satpy.tests.reader_tests.test_eum_l2_bufr),
load_ds_ids_from_config()
458 (satpy.readers.yaml_reader.AbstractYAMLReader
l_step (satpy.readers.olci_nc.NCOLCILowResData method), 378
property), 308 load_neighbour_info()
last_line (satpy.readers.sar_c_safe._AzimuthBlock (satpy.resample.KDTreeResampler method),
property), 320 702
last_pixel (satpy.readers.sar_c_safe._AzimuthBlock load_reader() (in module satpy.readers), 391
property), 320 load_readers() (in module satpy.readers), 391
latitude (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler load_writer() (in module satpy.writers), 678
property), 267 load_writer_configs() (in module satpy.writers),
latlons() (satpy.tests.reader_tests.test_grib.FakeMessage 678
method), 483 load_yaml_config() (satpy.plugin_base.Plugin
latlons() (satpy.tests.reader_tests.test_hsaf_grib.FakeMessage method), 690
method), 488 load_yaml_configs() (in module
leaves() (satpy.dependency_tree.Tree method), 687 satpy.readers.yaml_reader), 386
leaves() (satpy.node.Node method), 689 loaded_dataset_ids (satpy.multiscene._multiscene.MultiScene
LetteredTileGenerator (class in property), 174
satpy.writers.awips_tiled), 651 local_file() (in module satpy.tests.test_readers), 624
LIL2NCFileHandler (class in satpy.readers.li_l2_nc), local_filename() (in module satpy.tests.test_readers),
274 624
limb_correct_atms_bt() (in module local_filename2() (in module
satpy.readers.mirs), 280 satpy.tests.test_readers), 624
LINCFileHandler (class in satpy.readers.li_base_nc), local_hdf5_filename() (in module
271 satpy.tests.test_readers), 624
line (satpy.readers.gms.gms5_vissr_navigation.Pixel at- local_hdf5_fsspec() (in module
tribute), 186 satpy.tests.test_readers), 624
line_offset (satpy.readers.gms.gms5_vissr_navigation.ImageOffset
local_hdf5_path() (in module
attribute), 185 satpy.tests.test_readers), 624
lines (satpy.readers.sar_c_safe._AzimuthBlock prop- local_histogram_equalization() (in module
erty), 320 satpy.composites.viirs), 121

Index 813
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

local_netcdf_filename() (in module lza() (satpy.tests.compositor_tests.test_viirs.TestVIIRSComposites


satpy.tests.test_readers), 624 method), 398
local_netcdf_fsfile() (in module
satpy.tests.test_readers), 624 M
local_netcdf_fsspec() (in module M_BANDS (satpy.tests.reader_tests.test_viirs_l1b.FakeNetCDF4FileHandlerD
satpy.tests.test_readers), 624 attribute), 562
local_netcdf_path() (in module M_BANDS (satpy.tests.reader_tests.test_viirs_l1b.FakeNetCDF4FileHandlerN
satpy.tests.test_readers), 624 attribute), 563
local_zip_file() (in module satpy.tests.test_readers), M_BT_BANDS (satpy.tests.reader_tests.test_viirs_l1b.FakeNetCDF4FileHand
624 attribute), 562
logging_off() (in module satpy.utils), 721 M_REFL_BANDS (satpy.tests.reader_tests.test_viirs_l1b.FakeNetCDF4FileHa
logging_on() (in module satpy.utils), 721 attribute), 562
longitude (satpy.readers.ici_l1b_nc.IciL1bNCFileHandlerMAIAFileHandler (class in satpy.readers.maia), 274
property), 267 main() (in module satpy.writers.awips_tiled), 655
longitude_and_latitude make_alt_dataid() (in module
(satpy.readers.ici_l1b_nc.IciL1bNCFileHandler satpy.tests.reader_tests.test_msi_safe), 508
property), 267 make_cf_data_array() (in module
LongitudeMaskingCompositor (class in satpy.cf.data_array), 108
satpy.composites), 129 make_cid() (in module satpy.tests.utils), 644
longMessage (satpy.tests.reader_tests.test_goes_imager_nc_eum.GOESNCEUMFileHandlerRadianceTest
make_dataid() (in module
attribute), 479 satpy.tests.reader_tests.test_slstr_l1b), 548
longMessage (satpy.tests.reader_tests.test_goes_imager_nc_eum.GOESNCEUMFileHandlerReflectanceTest
make_dataid() (in module satpy.tests.test_readers), 625
attribute), 479 make_dataid() (in module satpy.tests.utils), 644
longMessage (satpy.tests.reader_tests.test_goes_imager_nc_noaa.GOESNCBaseFileHandlerTest
make_day_night_masks() (in module
attribute), 480 satpy.composites.viirs), 122
longMessage (satpy.tests.reader_tests.test_goes_imager_nc_noaa.GOESNCFileHandlerTest
make_dsq() (in module satpy.tests.utils), 644
attribute), 480 make_ext() (in module satpy.readers._geos_area), 197
LONLAT (satpy.readers.ici_l1b_nc.InterpolationType at- make_fake_angles() (in module
tribute), 268 satpy.tests.reader_tests.conftest), 427
lonlat2xyz() (in module satpy.utils), 721 make_fake_hdf_epic() (in module
lonlats() (in module satpy.tests.reader_tests.test_epic_l1b_h5),
satpy.tests.reader_tests.test_satpy_cf_nc), 454
531 make_fake_mwr_l1c_lonlats() (in module
lons_lats (satpy.readers.hrpt.HRPTFile property), 260 satpy.tests.reader_tests.conftest), 427
lons_lats() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.TestMetadata
make_fake_mwr_lonlats() (in module
method), 481 satpy.tests.reader_tests.conftest), 427
lons_lats_exp() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileHandler
make_fake_scene() (in module satpy.tests.utils), 644
method), 413 make_fh() (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGrid
lookup() (in module satpy.enhancements), 151 static method), 437
LowCloudCompositor (class in satpy.composites), 129 make_gvar_float() (in module
lst_file() (in module satpy.readers.goes_imager_hrit), 241
satpy.tests.reader_tests.test_viirs_edr), 557 make_h5_null_string() (in module
LuminanceSharpeningCompositor (class in satpy.tests.reader_tests.test_gerb_l2_hr_h5),
satpy.composites), 130 472
lut (satpy.readers.sar_c_safe._AzimuthBlock property), make_pdict_ext() (satpy.tests.reader_tests.test_geos_area.TestGEOSProj
321 method), 472
LUTS (satpy.modifiers._crefl_utils._ABICoefficients make_sgs_time() (in module
attribute), 154 satpy.readers.goes_imager_hrit), 241
LUTS (satpy.modifiers._crefl_utils._Coefficients at- make_test_data() (in module
tribute), 155 satpy.tests.reader_tests.test_mersi_l1b), 504
LUTS (satpy.modifiers._crefl_utils._MODISCoefficients make_test_data() (satpy.tests.reader_tests.test_ghi_l1.FakeHDF5FileHa
attribute), 156 method), 473
LUTS (satpy.modifiers._crefl_utils._VIIRSCoefficients at- make_test_data() (satpy.tests.reader_tests.test_virr_l1b.FakeHDF5FileH
tribute), 157 method), 569

814 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

mandatory_tags (satpy.writers.ninjogeotiff.NinJoTagGenerator meta (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler


attribute), 667 property), 249
mask() (satpy.readers.mviri_l1b_fiduceo_nc.VisQualityControl metadata_matches() (satpy.readers.yaml_reader.GenericYAMLReader
method), 295 method), 383
mask_and_scale() (in module satpy.readers.mwr_l1b), metadata_platform_name
297 (satpy.readers.hdfeos_base.HDFEOSBaseFileReader
mask_array() (in module property), 253
satpy.tests.reader_tests.test_insat3d_img_l1b_h5),MHS_AMSUB_AAPPL1CFile (class in
495 satpy.readers.aapp_mhs_amsub_l1c), 199
mask_bad_quality() (in module MimicTPW2FileHandler (class in
satpy.readers.seviri_base), 334 satpy.readers.mimic_TPW2_nc), 278
mask_dataset() (satpy.readers.amsr2_l2.AMSR2L2FileHandler min_area() (satpy.scene.Scene method), 712
method), 211 minimal_default_keys_config (in module
mask_fill_values() (satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandler
satpy.dataset.dataid), 142
method), 366 MiRSL2ncHandler (class in satpy.readers.mirs), 279
mask_space() (satpy.readers.gms.gms5_vissr_l1b.SpaceMasker misalignment (satpy.readers.gms.gms5_vissr_navigation.ScanningAngles
method), 182 attribute), 189
mask_space() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileHandler
missing_datasets (satpy.scene.Scene property), 712
method), 413 MissingDependencies, 688
mask_to_14_bits() (satpy.readers.sgli_l1b.HDF5SGLI MissingHeightError, 165
method), 352 MITIFFWriter (class in satpy.writers.mitiff ), 662
MASKING_LIMIT (satpy.modifiers.spectral.NIRReflectance MixedHDFEOSReader (class in satpy.readers.modis_l1b),
attribute), 170 282
MaskingCompositor (class in satpy.composites), 130 mjd2datetime64() (in module satpy.readers.hrit_jma),
match_data_arrays() 259
(satpy.composites.CompositeBase method), mock_cmgdem() (in module
126 satpy.tests.modifier_tests.test_crefl), 404
matrix_vector() (in module mock_filesystem() (in module satpy.tests.test_demo),
satpy.readers.gms.gms5_vissr_navigation), 612
195 mock_tbase() (in module
max_area() (satpy.scene.Scene method), 712 satpy.tests.modifier_tests.test_crefl), 404
MCD12Q1HDFFileHandler (class in mocked_basefilehandler() (in module
satpy.readers.mcd12q1), 275 satpy.tests.reader_tests.test_fci_l1c_nc),
mda_file() (in module 465
satpy.tests.reader_tests.test_oli_tirs_l1_tif ), mocked_file_handler()
524 (satpy.tests.reader_tests.test_goes_imager_nc_noaa.TestMetadata
measurement_file() (in module method), 481
satpy.tests.reader_tests.test_sar_c_safe), mocked_ftp_dl() (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestA
529 method), 438
measurement_filehandler() (in module mode_block() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileH
satpy.tests.reader_tests.test_sar_c_safe), method), 413
529 modes (satpy.composites.GenericCompositor attribute),
Median (class in satpy.modifiers.filters), 162 128
MeirinkCalibrationHandler (class in ModifierBase (class in satpy.modifiers.base), 162
satpy.readers.seviri_base), 329 ModifierTuple (class in satpy.dataset.dataid), 140
MERSI12llL1BTester (class in modis_l1b_imapp_1000m_file() (in module
satpy.tests.reader_tests.test_mersi_l1b), 500 satpy.tests.reader_tests.modis_tests._modis_fixtures),
MERSIL1B (class in satpy.readers.mersi_l1b), 277 419
MERSIL1BTester (class in modis_l1b_imapp_geo_file() (in module
satpy.tests.reader_tests.test_mersi_l1b), 501 satpy.tests.reader_tests.modis_tests._modis_fixtures),
message() (satpy.tests.reader_tests.test_grib.FakeGRIB 419
method), 482 modis_l1b_nasa_1km_mod03_files() (in module
message() (satpy.tests.reader_tests.test_hsaf_grib.FakeGRIB satpy.tests.reader_tests.modis_tests._modis_fixtures),
method), 488 419

Index 815
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

modis_l1b_nasa_mod021km_file() (in module satpy.aux_download, 681


satpy.tests.reader_tests.modis_tests._modis_fixtures), satpy.cf, 111
419 satpy.cf.area, 104
modis_l1b_nasa_mod02hkm_file() (in module satpy.cf.attrs, 104
satpy.tests.reader_tests.modis_tests._modis_fixtures), satpy.cf.coords, 106
419 satpy.cf.data_array, 108
modis_l1b_nasa_mod02qkm_file() (in module satpy.cf.datasets, 108
satpy.tests.reader_tests.modis_tests._modis_fixtures), satpy.cf.decoding, 110
419 satpy.cf.encoding, 110
modis_l1b_nasa_mod03_file() (in module satpy.composites, 122
satpy.tests.reader_tests.modis_tests._modis_fixtures), satpy.composites.abi, 111
419 satpy.composites.agri, 112
modis_l2_imapp_mask_byte1_file() (in module satpy.composites.ahi, 112
satpy.tests.reader_tests.modis_tests._modis_fixtures), satpy.composites.cloud_products, 112
419 satpy.composites.config_loader, 113
modis_l2_imapp_mask_byte1_geo_files() (in mod- satpy.composites.glm, 114
ule satpy.tests.reader_tests.modis_tests._modis_fixtures),
satpy.composites.sar, 115
419 satpy.composites.spectral, 116
modis_l2_imapp_snowmask_file() (in module satpy.composites.viirs, 118
satpy.tests.reader_tests.modis_tests._modis_fixtures), satpy.conftest, 684
420 satpy.dataset, 144
modis_l2_imapp_snowmask_geo_files() (in module satpy.dataset.anc_vars, 136
satpy.tests.reader_tests.modis_tests._modis_fixtures), satpy.dataset.data_dict, 136
420 satpy.dataset.dataid, 138
modis_l2_nasa_mod06_file() (in module satpy.dataset.metadata, 142
satpy.tests.reader_tests.modis_tests._modis_fixtures), satpy.demo, 147
420 satpy.demo._google_cloud_platform, 144
modis_l2_nasa_mod35_file() (in module satpy.demo.abi_l1b, 144
satpy.tests.reader_tests.modis_tests._modis_fixtures), satpy.demo.ahi_hsd, 145
420 satpy.demo.fci, 145
modis_l2_nasa_mod35_mod03_files() (in module satpy.demo.seviri_hrit, 145
satpy.tests.reader_tests.modis_tests._modis_fixtures), satpy.demo.utils, 146
420 satpy.demo.viirs_sdr, 146
modis_l3_file() (in module satpy.dependency_tree, 684
satpy.tests.reader_tests.modis_tests._modis_fixtures), satpy.enhancements, 148
420 satpy.enhancements.abi, 147
modis_l3_nasa_mcd12q1_file() (in module satpy.enhancements.mimic, 147
satpy.tests.reader_tests.modis_tests._modis_fixtures), satpy.enhancements.viirs, 148
420 satpy.modifiers, 170
modis_l3_nasa_mod09_file() (in module satpy.modifiers._crefl, 153
satpy.tests.reader_tests.modis_tests._modis_fixtures), satpy.modifiers._crefl_utils, 154
420 satpy.modifiers.angles, 157
modis_l3_nasa_mod43_file() (in module satpy.modifiers.atmosphere, 161
satpy.tests.reader_tests.modis_tests._modis_fixtures), satpy.modifiers.base, 162
420 satpy.modifiers.filters, 162
ModisL2HDFFileHandler (class in satpy.modifiers.geometry, 163
satpy.readers.modis_l2), 283 satpy.modifiers.parallax, 165
ModisL3GriddedHDFFileHandler (class in satpy.modifiers.spectral, 169
satpy.readers.modis_l3), 284 satpy.multiscene, 176
module satpy.multiscene._blend_funcs, 170
satpy, 723 satpy.multiscene._multiscene, 171
satpy._compat, 679 satpy.node, 688
satpy._config, 679 satpy.plugin_base, 689
satpy._scene_converters, 679 satpy.readers, 386

816 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers._geos_area, 196 satpy.readers.hrit_jma, 256


satpy.readers.aapp_l1b, 198 satpy.readers.hrpt, 259
satpy.readers.aapp_mhs_amsub_l1c, 199 satpy.readers.hsaf_grib, 260
satpy.readers.abi_base, 200 satpy.readers.hsaf_h5, 261
satpy.readers.abi_l1b, 201 satpy.readers.hy2_scat_l2b_h5, 262
satpy.readers.abi_l2_nc, 202 satpy.readers.iasi_l2, 262
satpy.readers.acspo, 202 satpy.readers.iasi_l2_so2_bufr, 263
satpy.readers.agri_l1, 203 satpy.readers.ici_l1b_nc, 265
satpy.readers.ahi_hsd, 203 satpy.readers.insat3d_img_l1b_h5, 268
satpy.readers.ahi_l1b_gridded_bin, 207 satpy.readers.li_base_nc, 269
satpy.readers.ahi_l2_nc, 208 satpy.readers.li_l2_nc, 273
satpy.readers.ami_l1b, 209 satpy.readers.maia, 274
satpy.readers.amsr2_l1b, 210 satpy.readers.mcd12q1, 275
satpy.readers.amsr2_l2, 211 satpy.readers.meris_nc_sen3, 276
satpy.readers.amsr2_l2_gaasp, 211 satpy.readers.mersi_l1b, 277
satpy.readers.ascat_l2_soilmoisture_bufr, satpy.readers.mimic_TPW2_nc, 278
213 satpy.readers.mirs, 279
satpy.readers.atms_l1b_nc, 213 satpy.readers.modis_l1b, 281
satpy.readers.atms_sdr_hdf5, 214 satpy.readers.modis_l2, 283
satpy.readers.avhrr_l1b_gaclac, 215 satpy.readers.modis_l3, 284
satpy.readers.clavrx, 216 satpy.readers.msi_safe, 285
satpy.readers.cmsaf_claas2, 218 satpy.readers.msu_gsa_l1b, 288
satpy.readers.electrol_hrit, 219 satpy.readers.mviri_l1b_fiduceo_nc, 288
satpy.readers.epic_l1b_h5, 220 satpy.readers.mwr_l1b, 295
satpy.readers.eps_l1b, 221 satpy.readers.mwr_l1c, 297
satpy.readers.eum_base, 222 satpy.readers.mws_l1b, 298
satpy.readers.eum_l2_bufr, 222 satpy.readers.netcdf_utils, 299
satpy.readers.eum_l2_grib, 224 satpy.readers.nucaps, 302
satpy.readers.fci_base, 225 satpy.readers.nwcsaf_msg2013_hdf5, 303
satpy.readers.fci_l1c_nc, 226 satpy.readers.nwcsaf_nc, 304
satpy.readers.fci_l2_nc, 229 satpy.readers.oceancolorcci_l3_nc, 305
satpy.readers.file_handlers, 231 satpy.readers.olci_nc, 306
satpy.readers.fy4_base, 234 satpy.readers.oli_tirs_l1_tif, 309
satpy.readers.generic_image, 235 satpy.readers.omps_edr, 310
satpy.readers.geocat, 236 satpy.readers.osisaf_l3_nc, 311
satpy.readers.gerb_l2_hr_h5, 237 satpy.readers.pmw_channels_definitions,
satpy.readers.ghi_l1, 238 312
satpy.readers.ghrsst_l2, 238 satpy.readers.safe_sar_l2_ocn, 315
satpy.readers.gld360_ualf2, 239 satpy.readers.sar_c_safe, 316
satpy.readers.glm_l2, 239 satpy.readers.satpy_cf_nc, 321
satpy.readers.gms, 196 satpy.readers.scmi, 325
satpy.readers.gms.gms5_vissr_format, 176 satpy.readers.seadas_l2, 326
satpy.readers.gms.gms5_vissr_l1b, 176 satpy.readers.seviri_base, 327
satpy.readers.gms.gms5_vissr_navigation, satpy.readers.seviri_l1b_hrit, 335
182 satpy.readers.seviri_l1b_icare, 341
satpy.readers.goci2_l2_nc, 240 satpy.readers.seviri_l1b_native, 342
satpy.readers.goes_imager_hrit, 240 satpy.readers.seviri_l1b_native_hdr, 347
satpy.readers.goes_imager_nc, 242 satpy.readers.seviri_l1b_nc, 350
satpy.readers.gpm_imerg, 250 satpy.readers.sgli_l1b, 351
satpy.readers.grib, 250 satpy.readers.slstr_l1b, 353
satpy.readers.hdf4_utils, 252 satpy.readers.smos_l2_wind, 354
satpy.readers.hdf5_utils, 252 satpy.readers.tropomi_l2, 355
satpy.readers.hdfeos_base, 252 satpy.readers.utils, 356
satpy.readers.hrit_base, 254 satpy.readers.vaisala_gld360, 361

Index 817
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.vii_base_nc, 362 satpy.tests.modifier_tests.test_angles,


satpy.readers.vii_l1b_nc, 363 402
satpy.readers.vii_l2_nc, 364 satpy.tests.modifier_tests.test_crefl,
satpy.readers.vii_utils, 365 403
satpy.readers.viirs_atms_sdr_base, 365 satpy.tests.modifier_tests.test_filters,
satpy.readers.viirs_compact, 366 404
satpy.readers.viirs_edr, 368 satpy.tests.modifier_tests.test_parallax,
satpy.readers.viirs_edr_active_fires, 370 404
satpy.readers.viirs_edr_flood, 371 satpy.tests.multiscene_tests, 411
satpy.readers.viirs_l1b, 372 satpy.tests.multiscene_tests.test_blend,
satpy.readers.viirs_l2, 373 407
satpy.readers.viirs_sdr, 374 satpy.tests.multiscene_tests.test_misc,
satpy.readers.viirs_vgac_l1c_nc, 375 409
satpy.readers.virr_l1b, 376 satpy.tests.multiscene_tests.test_save_animation,
satpy.readers.xmlformat, 377 410
satpy.readers.yaml_reader, 377 satpy.tests.multiscene_tests.test_utils,
satpy.resample, 690 410
satpy.scene, 704 satpy.tests.reader_tests, 570
satpy.testing, 717 satpy.tests.reader_tests._li_test_utils,
satpy.tests, 645 425
satpy.tests.cf_tests, 395 satpy.tests.reader_tests.conftest, 426
satpy.tests.cf_tests._test_data, 392 satpy.tests.reader_tests.gms, 416
satpy.tests.cf_tests.test_area, 392 satpy.tests.reader_tests.gms.test_gms5_vissr_data,
satpy.tests.cf_tests.test_attrs, 393 411
satpy.tests.cf_tests.test_coords, 393 satpy.tests.reader_tests.gms.test_gms5_vissr_l1b,
satpy.tests.cf_tests.test_dataaarray, 394 411
satpy.tests.cf_tests.test_datasets, 394 satpy.tests.reader_tests.gms.test_gms5_vissr_navigatio
satpy.tests.cf_tests.test_decoding, 395 414
satpy.tests.cf_tests.test_encoding, 395 satpy.tests.reader_tests.modis_tests, 422
satpy.tests.compositor_tests, 399 satpy.tests.reader_tests.modis_tests._modis_fixtures,
satpy.tests.compositor_tests.test_abi, 416
395 satpy.tests.reader_tests.modis_tests.conftest,
satpy.tests.compositor_tests.test_agri, 420
396 satpy.tests.reader_tests.modis_tests.test_modis_l1b,
satpy.tests.compositor_tests.test_ahi, 421
396 satpy.tests.reader_tests.modis_tests.test_modis_l2,
satpy.tests.compositor_tests.test_glm, 421
397 satpy.tests.reader_tests.modis_tests.test_modis_l3,
satpy.tests.compositor_tests.test_sar, 422
397 satpy.tests.reader_tests.modis_tests.test_modis_l3_mcd
satpy.tests.compositor_tests.test_spectral, 422
397 satpy.tests.reader_tests.test_aapp_l1b,
satpy.tests.compositor_tests.test_viirs, 427
398 satpy.tests.reader_tests.test_aapp_mhs_amsub_l1c,
satpy.tests.conftest, 590 428
satpy.tests.enhancement_tests, 402 satpy.tests.reader_tests.test_abi_l1b,
satpy.tests.enhancement_tests.test_abi, 429
399 satpy.tests.reader_tests.test_abi_l2_nc,
satpy.tests.enhancement_tests.test_enhancements, 430
399 satpy.tests.reader_tests.test_acspo, 431
satpy.tests.enhancement_tests.test_viirs, satpy.tests.reader_tests.test_agri_l1,
402 432
satpy.tests.modifier_tests, 407 satpy.tests.reader_tests.test_ahi_hrit,
434

818 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_ahi_hsd, 460
435 satpy.tests.reader_tests.test_fci_l2_nc,
satpy.tests.reader_tests.test_ahi_l1b_gridded_bin,466
436 satpy.tests.reader_tests.test_fy4_base,
satpy.tests.reader_tests.test_ahi_l2_nc, 468
438 satpy.tests.reader_tests.test_generic_image,
satpy.tests.reader_tests.test_ami_l1b, 469
439 satpy.tests.reader_tests.test_geocat, 470
satpy.tests.reader_tests.test_amsr2_l1b, satpy.tests.reader_tests.test_geos_area,
440 471
satpy.tests.reader_tests.test_amsr2_l2, satpy.tests.reader_tests.test_gerb_l2_hr_h5,
441 472
satpy.tests.reader_tests.test_amsr2_l2_gaasp, satpy.tests.reader_tests.test_ghi_l1, 472
442 satpy.tests.reader_tests.test_ghrsst_l2,
474
satpy.tests.reader_tests.test_ascat_l2_soilmoisture_bufr,
442 satpy.tests.reader_tests.test_gld360_ualf2,
satpy.tests.reader_tests.test_atms_l1b_nc, 474
443 satpy.tests.reader_tests.test_glm_l2, 476
satpy.tests.reader_tests.test_atms_sdr_hdf5, satpy.tests.reader_tests.test_goci2_l2_nc,
444 477
satpy.tests.reader_tests.test_avhrr_l0_hrpt, satpy.tests.reader_tests.test_goes_imager_hrit,
445 477
satpy.tests.reader_tests.test_avhrr_l1b_gaclac,satpy.tests.reader_tests.test_goes_imager_nc_eum,
448 479
satpy.tests.reader_tests.test_aws1_mwr_l1b, satpy.tests.reader_tests.test_goes_imager_nc_noaa,
450 479
satpy.tests.reader_tests.test_aws1_mwr_l1c, satpy.tests.reader_tests.test_gpm_imerg,
451 482
satpy.tests.reader_tests.test_clavrx, 425 satpy.tests.reader_tests.test_grib, 482
satpy.tests.reader_tests.test_clavrx.test_clavrx_geohdf,
satpy.tests.reader_tests.test_hdf4_utils,
423 484
satpy.tests.reader_tests.test_clavrx.test_clavrx_nc,
satpy.tests.reader_tests.test_hdf5_utils,
424 484
satpy.tests.reader_tests.test_clavrx.test_clavrx_polarhdf,
satpy.tests.reader_tests.test_hdfeos_base,
424 485
satpy.tests.reader_tests.test_cmsaf_claas, satpy.tests.reader_tests.test_hrit_base,
451 486
satpy.tests.reader_tests.test_electrol_hrit, satpy.tests.reader_tests.test_hsaf_grib,
452 488
satpy.tests.reader_tests.test_epic_l1b_h5, satpy.tests.reader_tests.test_hsaf_h5,
454 489
satpy.tests.reader_tests.test_eps_l1b, satpy.tests.reader_tests.test_hy2_scat_l2b_h5,
455 489
satpy.tests.reader_tests.test_eps_sterna_mwr_l1b,
satpy.tests.reader_tests.test_iasi_l2,
456 491
satpy.tests.reader_tests.test_eum_base, satpy.tests.reader_tests.test_iasi_l2_so2_bufr,
457 492
satpy.tests.reader_tests.test_eum_l2_bufr, satpy.tests.reader_tests.test_ici_l1b_nc,
458 493
satpy.tests.reader_tests.test_eum_l2_grib, satpy.tests.reader_tests.test_insat3d_img_l1b_h5,
459 495
satpy.tests.reader_tests.test_fci_base, satpy.tests.reader_tests.test_li_l2_nc,
460 496
satpy.tests.reader_tests.test_fci_l1c_nc, satpy.tests.reader_tests.test_meris_nc,

Index 819
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

499 satpy.tests.reader_tests.test_seviri_l1b_native,
satpy.tests.reader_tests.test_mersi_l1b, 542
500 satpy.tests.reader_tests.test_seviri_l1b_nc,
satpy.tests.reader_tests.test_mimic_TPW2_lowres, 545
504 satpy.tests.reader_tests.test_sgli_l1b,
satpy.tests.reader_tests.test_mimic_TPW2_nc, 546
505 satpy.tests.reader_tests.test_slstr_l1b,
satpy.tests.reader_tests.test_mirs, 506 547
satpy.tests.reader_tests.test_msi_safe, satpy.tests.reader_tests.test_smos_l2_wind,
507 548
satpy.tests.reader_tests.test_msu_gsa_l1b, satpy.tests.reader_tests.test_tropomi_l2,
508 549
satpy.tests.reader_tests.test_utils, 550
satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc,
509 satpy.tests.reader_tests.test_vaisala_gld360,
satpy.tests.reader_tests.test_mws_l1b_nc, 552
510 satpy.tests.reader_tests.test_vii_base_nc,
satpy.tests.reader_tests.test_netcdf_utils, 553
512 satpy.tests.reader_tests.test_vii_l1b_nc,
satpy.tests.reader_tests.test_nucaps, 514 553
satpy.tests.reader_tests.test_nwcsaf_msg, satpy.tests.reader_tests.test_vii_l2_nc,
516 554
satpy.tests.reader_tests.test_nwcsaf_nc, satpy.tests.reader_tests.test_vii_utils,
517 554
satpy.tests.reader_tests.test_oceancolorcci_l3_nc,
satpy.tests.reader_tests.test_vii_wv_nc,
521 554
satpy.tests.reader_tests.test_oci_l2_bgc, satpy.tests.reader_tests.test_viirs_atms_utils,
521 555
satpy.tests.reader_tests.test_olci_nc, satpy.tests.reader_tests.test_viirs_compact,
522 555
satpy.tests.reader_tests.test_oli_tirs_l1_tif, satpy.tests.reader_tests.test_viirs_edr,
523 556
satpy.tests.reader_tests.test_omps_edr, satpy.tests.reader_tests.test_viirs_edr_active_fires,
525 558
satpy.tests.reader_tests.test_osisaf_l3, satpy.tests.reader_tests.test_viirs_edr_flood,
525 561
satpy.tests.reader_tests.test_safe_sar_l2_ocn, satpy.tests.reader_tests.test_viirs_l1b,
527 562
satpy.tests.reader_tests.test_sar_c_safe, satpy.tests.reader_tests.test_viirs_l2,
527 564
satpy.tests.reader_tests.test_satpy_cf_nc, satpy.tests.reader_tests.test_viirs_sdr,
530 565
satpy.tests.reader_tests.test_scmi, 531 satpy.tests.reader_tests.test_viirs_vgac_l1c_nc,
satpy.tests.reader_tests.test_seadas_l2, 568
532 satpy.tests.reader_tests.test_virr_l1b,
satpy.tests.reader_tests.test_seviri_base, 568
533 satpy.tests.reader_tests.utils, 569
satpy.tests.scene_tests, 579
satpy.tests.reader_tests.test_seviri_l1b_calibration,
535 satpy.tests.scene_tests.test_conversions,
satpy.tests.reader_tests.test_seviri_l1b_hrit, 570
537 satpy.tests.scene_tests.test_data_access,
571
satpy.tests.reader_tests.test_seviri_l1b_hrit_setup,
539 satpy.tests.scene_tests.test_init, 572
satpy.tests.reader_tests.test_seviri_l1b_icare,satpy.tests.scene_tests.test_load, 573
541 satpy.tests.scene_tests.test_resampling,

820 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

577 Msg15NativeTrailerRecord (class in


satpy.tests.scene_tests.test_saving, 578 satpy.readers.seviri_l1b_native_hdr), 349
satpy.tests.test_cf_roundtrip, 591 MSUGSAFileHandler (class in
satpy.tests.test_composites, 591 satpy.readers.msu_gsa_l1b), 288
satpy.tests.test_config, 602 mtg_geos_projection() (in module
satpy.tests.test_crefl_utils, 604 satpy.tests.reader_tests._li_test_utils), 426
satpy.tests.test_data_download, 604 multi_area_scn() (satpy.tests.scene_tests.test_conversions.TestToXarrayC
satpy.tests.test_dataset, 605 method), 570
satpy.tests.test_demo, 609 multi_file_dataset()
satpy.tests.test_dependency_tree, 612 (satpy.tests.reader_tests.test_cmsaf_claas.TestCLAAS2MultiFile
satpy.tests.test_file_handlers, 614 method), 451
satpy.tests.test_modifiers, 615 multi_file_reader()
satpy.tests.test_node, 617 (satpy.tests.reader_tests.test_cmsaf_claas.TestCLAAS2MultiFile
satpy.tests.test_readers, 618 method), 451
satpy.tests.test_regressions, 625 multi_scene() (satpy.tests.multiscene_tests.test_misc.TestMultiSceneGrou
satpy.tests.test_resample, 625 method), 409
satpy.tests.test_testing, 629 multi_scene_and_weights() (in module
satpy.tests.test_utils, 629 satpy.tests.multiscene_tests.test_blend), 408
satpy.tests.test_writers, 631 MultiFiller (class in satpy.composites), 131
satpy.tests.test_yaml_reader, 637 multiple_surface_reflectance_files() (in mod-
satpy.tests.utils, 642 ule satpy.tests.reader_tests.test_viirs_edr), 557
satpy.tests.writer_tests, 590 multiple_surface_reflectance_files_with_veg_indices()
satpy.tests.writer_tests.test_awips_tiled, (in module satpy.tests.reader_tests.test_viirs_edr),
579 557
satpy.tests.writer_tests.test_cf, 580 MultiScene (class in satpy.multiscene._multiscene), 171
satpy.tests.writer_tests.test_geotiff, MVIRI_FIELD_OF_VIEW (in module
582 satpy.readers.mviri_l1b_fiduceo_nc), 293
satpy.tests.writer_tests.test_mitiff, 583 MWSL1BFakeFileWriter (class in
satpy.tests.writer_tests.test_ninjogeotiff, satpy.tests.reader_tests.test_mws_l1b_nc),
585 510
satpy.tests.writer_tests.test_ninjotiff, MWSL1BFile (class in satpy.readers.mws_l1b), 298
589 mx (satpy.writers.awips_tiled.XYFactors attribute), 654
satpy.tests.writer_tests.test_simple_image,my (satpy.writers.awips_tiled.XYFactors attribute), 654
589
satpy.tests.writer_tests.test_utils, 590 N
satpy.utils, 717 NativeMSGFileHandler (class in
satpy.version, 723 satpy.readers.seviri_l1b_native), 344
satpy.writers, 670 NativeResampler (class in satpy.resample), 702
satpy.writers.awips_tiled, 645 NaturalEnh (class in satpy.composites), 131
satpy.writers.cf_writer, 655 nav_params() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileH
satpy.writers.geotiff, 660 method), 413
satpy.writers.mitiff, 662 navigate() (satpy.readers.aapp_l1b.AVHRRAAPPL1BFile
satpy.writers.ninjogeotiff, 663 method), 199
satpy.writers.ninjotiff, 668 navigate() (satpy.readers.aapp_mhs_amsub_l1c.MHS_AMSUB_AAPPL1
satpy.writers.simple_image, 669 method), 200
satpy.writers.utils, 670 navigate() (satpy.readers.viirs_compact.VIIRSCompactFileHandler
ModuleTestFCIL1cNcReader (class in method), 367
satpy.tests.reader_tests.test_fci_l1c_nc), navigation_extraction_results
462 (satpy.readers.seviri_l1b_native_hdr.Msg15NativeTrailerRecord
MpefProductHeader (class in property), 349
satpy.readers.seviri_base), 330 navigation_params() (in module
Msg15NativeHeaderRecord (class in satpy.tests.reader_tests.gms.test_gms5_vissr_navigation),
satpy.readers.seviri_l1b_native_hdr), 349 416

Index 821
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

Navigator (class in satpy.readers.mviri_l1b_fiduceo_nc), satpy.readers.seviri_l1b_nc), 351


294 NCSLSTR1B (class in satpy.readers.slstr_l1b), 353
nc (satpy.readers.abi_base.NC_ABI_BASE property), NCSLSTRAngles (class in satpy.readers.slstr_l1b), 353
201 NCSLSTRFlag (class in satpy.readers.slstr_l1b), 353
nc (satpy.readers.amsr2_l2_gaasp.GAASPFileHandler NCSLSTRGeo (class in satpy.readers.slstr_l1b), 354
property), 212 ndim (satpy.tests.reader_tests.test_fci_l1c_nc.FakeH5Variable
nc (satpy.readers.fci_l2_nc.FciL2NCAMVFileHandler property), 461
property), 230 NDVIHybridGreen (class in satpy.composites.spectral),
nc (satpy.readers.ghrsst_l2.GHRSSTL2FileHandler 117
property), 238 NEGLIGIBLE_COORDS (in module satpy.composites), 131
nc (satpy.readers.olci_nc.NCOLCIBase property), 307 NetCDF4FileHandler (class in
nc (satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler satpy.readers.netcdf_utils), 299
property), 351 NetCDF4FsspecFileHandler (class in
NC_ABI_BASE (class in satpy.readers.abi_base), 200 satpy.readers.netcdf_utils), 301
NC_ABI_L1B (class in satpy.readers.abi_l1b), 201 NetCDFTemplate (class in satpy.writers.awips_tiled),
NC_ABI_L2 (class in satpy.readers.abi_l2_nc), 202 652
nc_filename() (in module new_get_hd() (in module
satpy.tests.reader_tests.test_satpy_cf_nc), satpy.tests.reader_tests.test_hrit_base), 488
531 new_get_hd() (in module
nc_filename() (in module satpy.tests.reader_tests.test_seviri_l1b_hrit_setup),
satpy.tests.reader_tests.test_viirs_vgac_l1c_nc), 541
568 new_get_hd_compressed() (in module
nc_filename_i() (in module satpy.tests.reader_tests.test_hrit_base), 488
satpy.tests.reader_tests.test_satpy_cf_nc), new_id_from_dataarray()
531 (satpy.dataset.dataid.DataID class method),
nc_keys (satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriBase 139
attribute), 292 new_unzip() (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIG
nc_keys (satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriEasyFcdrFileHandler
method), 437
attribute), 292 NinJoGeoTIFFWriter (class in
nc_keys (satpy.readers.mviri_l1b_fiduceo_nc.FiduceoMviriFullFcdrFileHandler
satpy.writers.ninjogeotiff ), 664
attribute), 293 NinJoTagGenerator (class in
NCCZinke (class in satpy.composites.viirs), 120 satpy.writers.ninjogeotiff ), 665
NCGriddedGLML2 (class in satpy.readers.glm_l2), 239 NinjoTIFFWriter (class in satpy.writers.ninjotiff ), 669
NCMERIS2 (class in satpy.readers.meris_nc_sen3), 276 NIREmissivePartFromReflectance (class in
NCMERISAngles (class in satpy.readers.meris_nc_sen3), satpy.modifiers.spectral), 169
276 NIRReflectance (class in satpy.modifiers.spectral), 170
NCMERISCal (class in satpy.readers.meris_nc_sen3), 276 no_data (satpy.readers.msi_safe.SAFEMSIMDXML
NCMERISGeo (class in satpy.readers.meris_nc_sen3), 276 property), 286
NCMERISMeteo (class in satpy.readers.meris_nc_sen3), Node (class in satpy.node), 688
276 noise_file() (in module
NcNWCSAF (class in satpy.readers.nwcsaf_nc), 304 satpy.tests.reader_tests.test_sar_c_safe),
NCOLCI1B (class in satpy.readers.olci_nc), 306 529
NCOLCI2 (class in satpy.readers.olci_nc), 307 noise_filehandler() (in module
NCOLCIAngles (class in satpy.readers.olci_nc), 307 satpy.tests.reader_tests.test_sar_c_safe),
NCOLCIBase (class in satpy.readers.olci_nc), 307 529
NCOLCICal (class in satpy.readers.olci_nc), 308 noise_with_holes_filehandler() (in module
NCOLCIChannelBase (class in satpy.readers.olci_nc), satpy.tests.reader_tests.test_sar_c_safe), 529
308 nominal_data() (satpy.tests.multiscene_tests.test_blend.TestTemporalRGB
NCOLCIGeo (class in satpy.readers.olci_nc), 308 method), 408
NCOLCILowResData (class in satpy.readers.olci_nc), 308 nominal_end_time (satpy.readers.ahi_hsd.AHIHSDFileHandler
NCOLCIMeteo (class in satpy.readers.olci_nc), 308 property), 206
NCSEVIRIFileHandler (class in nominal_end_time (satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler
satpy.readers.seviri_l1b_nc), 350 property), 229
NCSEVIRIHRVFileHandler (class in nominal_end_time (satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler

822 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property), 339 attribute), 500


nominal_end_time (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
num_sensors (satpy.readers.gms.gms5_vissr_navigation.ScanningParamet
property), 346 attribute), 190
nominal_end_time (satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler
NumberedTileGenerator (class in
property), 351 satpy.writers.awips_tiled), 653
nominal_start_time (satpy.readers.ahi_hsd.AHIHSDFileHandler nutation_precession
property), 206 (satpy.readers.gms.gms5_vissr_navigation._OrbitPrediction
nominal_start_time (satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler attribute), 192
property), 229 nutation_precession
nominal_start_time (satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler (satpy.readers.gms.gms5_vissr_navigation.Orbit
property), 339 attribute), 185
nominal_start_time (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
nwcsaf_geo_ct_filehandler() (in module
property), 346 satpy.tests.reader_tests.test_nwcsaf_nc),
nominal_start_time (satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler 520
property), 351 nwcsaf_geo_ct_filename() (in module
normalize_low_res_chunks() (in module satpy.utils), satpy.tests.reader_tests.test_nwcsaf_nc),
721 520
normalize_vector() (in module nwcsaf_old_geo_ct_filehandler() (in module
satpy.readers.gms.gms5_vissr_navigation), satpy.tests.reader_tests.test_nwcsaf_nc), 520
195 nwcsaf_old_geo_ct_filename() (in module
NoValidOrbitParams, 330 satpy.tests.reader_tests.test_nwcsaf_nc),
np2str() (in module satpy.readers.utils), 361 520
nrl_colors() (in module satpy.enhancements.mimic), nwcsaf_pps_cmic_filehandler() (in module
147 satpy.tests.reader_tests.test_nwcsaf_nc), 520
ntg1() (in module satpy.tests.writer_tests.test_ninjogeotiff ),nwcsaf_pps_cmic_filename() (in module
585 satpy.tests.reader_tests.test_nwcsaf_nc),
ntg2() (in module satpy.tests.writer_tests.test_ninjogeotiff ), 520
585 nwcsaf_pps_cpp_filehandler() (in module
ntg3() (in module satpy.tests.writer_tests.test_ninjogeotiff ), satpy.tests.reader_tests.test_nwcsaf_nc),
585 520
ntg_cmyk() (in module nwcsaf_pps_cpp_filename() (in module
satpy.tests.writer_tests.test_ninjogeotiff ), satpy.tests.reader_tests.test_nwcsaf_nc),
585 520
ntg_latlon() (in module nwcsaf_pps_ctth_filehandler() (in module
satpy.tests.writer_tests.test_ninjogeotiff ), satpy.tests.reader_tests.test_nwcsaf_nc), 520
585 nwcsaf_pps_ctth_filename() (in module
ntg_no_fill_value() (in module satpy.tests.reader_tests.test_nwcsaf_nc),
satpy.tests.writer_tests.test_ninjogeotiff ), 520
585
ntg_northpole() (in module O
satpy.tests.writer_tests.test_ninjogeotiff ), obs_time() (satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.TestP
585 method), 415
ntg_rgba() (in module OBSERVATION_ANGLES (satpy.readers.ici_l1b_nc.InterpolationType
satpy.tests.writer_tests.test_ninjogeotiff ), attribute), 268
585 observation_azimuth
ntg_weird() (in module (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler
satpy.tests.writer_tests.test_ninjogeotiff ), property), 267
585 observation_azimuth_and_zenith
NUCAPSFileHandler (class in satpy.readers.nucaps), (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler
302 property), 267
NUCAPSReader (class in satpy.readers.nucaps), 303 observation_end_time
num_cols (satpy.tests.reader_tests.test_mersi_l1b.FakeHDF5FileHandler2 (satpy.readers.ahi_hsd.AHIHSDFileHandler
attribute), 500 property), 206
num_scans (satpy.tests.reader_tests.test_mersi_l1b.FakeHDF5FileHandler2
observation_end_time

Index 823
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler on_separate_bands() (in module


property), 229 satpy.enhancements), 151
observation_end_time open() (satpy.readers.FSFile method), 387
(satpy.readers.hrit_base.HRITFileHandler open_dataset() (in module
property), 255 satpy.readers.file_handlers), 234
observation_end_time open_dataset() (in module
(satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler satpy.readers.insat3d_img_l1b_h5), 269
property), 339 open_dataset() (in module
observation_end_time satpy.readers.mviri_l1b_fiduceo_nc), 295
(satpy.readers.seviri_l1b_native.NativeMSGFileHandler
open_datatree() (in module
property), 346 satpy.readers.insat3d_img_l1b_h5), 269
observation_end_time open_file_or_filename() (in module satpy.readers),
(satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler 391
property), 351 open_function() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestF
observation_end_time() method), 413
(satpy.tests.reader_tests.test_seviri_base.SeviriBaseTest
optional_nodes (satpy.node.CompositorNode prop-
method), 533 erty), 688
observation_start_time optional_tags (satpy.writers.ninjogeotiff.NinJoTagGenerator
(satpy.readers.ahi_hsd.AHIHSDFileHandler attribute), 667
property), 206 Orbit (class in satpy.readers.gms.gms5_vissr_navigation),
observation_start_time 185
(satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler orbit (satpy.readers.gms.gms5_vissr_navigation.PixelNavigationParamete
property), 229 attribute), 187
observation_start_time orbit (satpy.readers.gms.gms5_vissr_navigation.PredictedNavigationParam
(satpy.readers.hrit_base.HRITFileHandler attribute), 188
property), 255 orbit_end (satpy.readers.mwr_l1b.AWS_EPS_Sterna_BaseFileHandler
observation_start_time property), 296
(satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler orbit_expected() (satpy.tests.reader_tests.gms.test_gms5_vissr_navigati
property), 339 method), 415
observation_start_time orbit_polynomial() (satpy.tests.reader_tests.test_seviri_base.TestSatellit
(satpy.readers.seviri_l1b_native.NativeMSGFileHandler method), 534
property), 346 orbit_prediction() (in module
observation_start_time satpy.tests.reader_tests.gms.test_gms5_vissr_navigation),
(satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler 416
property), 351 orbit_prediction() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.Te
observation_start_time() method), 413
(satpy.tests.reader_tests.test_seviri_base.SeviriBaseTest
orbit_prediction_1()
method), 533 (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileHandler
observation_zenith (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler method), 413
property), 267 orbit_prediction_2()
OCCCIFileHandler (class in (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileHandler
satpy.readers.oceancolorcci_l3_nc), 305 method), 413
oci_l2_bgc_netcdf() (in module orbit_start (satpy.readers.mwr_l1b.AWS_EPS_Sterna_BaseFileHandler
satpy.tests.reader_tests.test_oci_l2_bgc), property), 296
522 orbital_param (satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler
offsets_gsics (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestFileHandlerCalibrationBase
property), 229
attribute), 536 OrbitAngles (class in
offsets_nominal (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestFileHandlerCalibrationBase
satpy.readers.gms.gms5_vissr_navigation),
attribute), 536 185
OLITIRSCHReader (class in OrbitPolynomial (class in satpy.readers.seviri_base),
satpy.readers.oli_tirs_l1_tif ), 309 330
OLITIRSMDReader (class in OrbitPolynomialFinder (class in
satpy.readers.oli_tirs_l1_tif ), 309 satpy.readers.seviri_base), 330
on_dask_array() (in module satpy.enhancements), 151 OrbitPrediction (class in

824 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.readers.gms.gms5_vissr_navigation), pixel_offset (satpy.readers.gms.gms5_vissr_navigation.ImageOffset


186 attribute), 185
OSISAFL3NCFileHandler (class in PixelNavigationParameters (class in
satpy.readers.osisaf_l3_nc), 311 satpy.readers.gms.gms5_vissr_navigation),
OSISAFL3ReaderTests (class in 187
satpy.tests.reader_tests.test_osisaf_l3), 525 platform_attr_name (satpy.readers.seadas_l2.SEADASL2HDFFileHand
overlay() (in module satpy.composites.sar), 116 attribute), 326
platform_attr_name (satpy.readers.seadas_l2.SEADASL2NetCDFFileHa
P attribute), 326
pad_data() (in module satpy.readers.seviri_l1b_hrit), platform_id (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestFileH
340 attribute), 536
pad_data() (satpy.readers.seviri_l1b_native.Padder platform_name (satpy.readers.acspo.ACSPOFileHandler
method), 347 property), 203
pad_data_horizontally() (in module platform_name (satpy.readers.amsr2_l2_gaasp.GAASPFileHandler
satpy.readers.seviri_base), 334 property), 212
pad_data_vertically() (in module platform_name (satpy.readers.ascat_l2_soilmoisture_bufr.AscatSoilMoistu
satpy.readers.seviri_base), 334 property), 213
platform_name (satpy.readers.atms_l1b_nc.AtmsL1bNCFileHandler
pad_hrv_data() (satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler
method), 339 property), 214
platform_name (satpy.readers.eps_l1b.EPSAVHRRFile
pad_nanoseconds() (satpy.readers.gld360_ualf2.VaisalaGld360Ualf2FileHandler
static method), 239 property), 221
Padder (class in satpy.readers.seviri_l1b_native), 346 platform_name (satpy.readers.eum_l2_bufr.EumetsatL2BufrFileHandler
PaletteCompositor (class in satpy.composites), 132 property), 223
palettize() (in module satpy.enhancements), 151 platform_name (satpy.readers.hrpt.HRPTFile prop-
ParallaxCorrection (class in erty), 260
satpy.modifiers.parallax), 165 platform_name (satpy.readers.hy2_scat_l2b_h5.HY2SCATL2BH5FileHan
ParallaxCorrectionModifier (class in property), 262
satpy.modifiers.parallax), 167 platform_name (satpy.readers.iasi_l2_so2_bufr.IASIL2SO2BUFR
param_provider() (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2 property), 265
static method), 497 platform_name (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler
parse() (satpy.readers.utils._CalibrationCoefficientParser property), 267
method), 358 platform_name (satpy.readers.mersi_l1b.MERSIL1B
property), 278
parse_config() (satpy.composites.config_loader._CompositeConfigHelper
method), 113 platform_name (satpy.readers.msu_gsa_l1b.MSUGSAFileHandler
property), 288
parse_config() (satpy.composites.config_loader._ModifierConfigHelper
method), 113 platform_name (satpy.readers.mwr_l1b.AWS_EPS_Sterna_BaseFileHandl
parse_format() (in module satpy.readers.xmlformat), property), 296
377 platform_name (satpy.readers.mws_l1b.MWSL1BFile
passed_tags (satpy.writers.ninjogeotiff.NinJoTagGenerator property), 299
attribute), 668 platform_name (satpy.readers.nucaps.NUCAPSFileHandler
PerformanceWarning, 717 property), 302
persist() (satpy.scene.Scene method), 712 platform_name (satpy.readers.omps_edr.EDRFileHandler
physical_gain() (satpy.readers.msi_safe.SAFEMSIMDXML property), 311
method), 286 platform_name (satpy.readers.smos_l2_wind.SMOSL2WINDFileHandler
physical_gains (satpy.readers.msi_safe.SAFEMSIMDXML property), 355
property), 286 platform_name (satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandl
piecewise_linear_stretch() (in module property), 366
satpy.enhancements), 151 platform_name (satpy.readers.viirs_edr.VIIRSJRRFileHandler
PillowWriter (class in satpy.writers.simple_image), property), 369
669 platform_name (satpy.readers.viirs_edr_active_fires.VIIRSActiveFiresFile
Pixel (class in satpy.readers.gms.gms5_vissr_navigation), property), 370
186 platform_name (satpy.readers.viirs_edr_flood.VIIRSEDRFlood
pixel (satpy.readers.gms.gms5_vissr_navigation.Pixel property), 371
attribute), 187 platform_name (satpy.readers.viirs_l1b.VIIRSL1BFileHandler

Index 825
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property), 372 prepare_padder() (satpy.tests.reader_tests.test_seviri_l1b_native.TestNat


platform_name (satpy.readers.viirs_l2.VIIRSL2FileHandler static method), 543
property), 373 prepare_resampler() (in module satpy.resample), 704
platform_shortname (satpy.readers.mirs.MiRSL2ncHandler preprocess() (satpy.readers.mviri_l1b_fiduceo_nc._DatasetPreprocessor
property), 280 method), 295
platform_shortname (satpy.readers.smos_l2_wind.SMOSL2WINDFileHandler
preprocess_attrs() (in module satpy.cf.attrs), 106
property), 355 preprocess_dataset() (in module
platform_shortname (satpy.readers.tropomi_l2.TROPOMIL2FileHandler satpy.readers.mviri_l1b_fiduceo_nc), 295
property), 356 preprocess_header_attrs() (in module
platforms (satpy.readers.geocat.GEOCATFileHandler satpy.cf.attrs), 106
attribute), 237 process_array() (in module satpy.readers.xmlformat),
Plugin (class in satpy.plugin_base), 689 377
pop() (satpy.dataset.dataid.DataID method), 139 process_delimiter() (in module
popitem() (satpy.dataset.dataid.DataID method), 139 satpy.readers.xmlformat), 377
populate_dummy_data() (in module process_field() (in module satpy.readers.xmlformat),
satpy.tests.reader_tests._li_test_utils), 426 377
populate_with_keys() process_prologue() (satpy.readers.electrol_hrit.HRITGOMSPrologueFi
(satpy.dependency_tree.DependencyTree method), 220
method), 686 process_prologue() (satpy.readers.goes_imager_hrit.HRITGOESProlog
postponed_tags (satpy.writers.ninjogeotiff.NinJoTagGenerator method), 241
attribute), 668 proj_params (satpy.readers.gms.gms5_vissr_navigation.PixelNavigationPa
PrecipCloudsRGB (class in attribute), 187
satpy.composites.cloud_products), 112 proj_params (satpy.readers.gms.gms5_vissr_navigation.StaticNavigationP
precompute() (satpy.resample.BilinearResampler attribute), 190
method), 700 proj_params() (in module
precompute() (satpy.resample.BucketResamplerBase satpy.tests.reader_tests.gms.test_gms5_vissr_navigation),
method), 701 416
precompute() (satpy.resample.KDTreeResampler proj_units_to_meters() (in module satpy.utils), 722
method), 702 projection (satpy.readers.msi_safe.SAFEMSITileMDXML
predicted (satpy.readers.gms.gms5_vissr_navigation.ImageNavigationParameters
property), 287
attribute), 184 projection (satpy.readers.seviri_l1b_icare.SEVIRI_ICARE
predicted_nav_params() (in module property), 342
satpy.tests.reader_tests.gms.test_gms5_vissr_navigation),
ProjectionParameters (class in
416 satpy.readers.gms.gms5_vissr_navigation),
PredictedNavigationParameters (class in 188
satpy.readers.gms.gms5_vissr_navigation), projlon (satpy.readers.seviri_l1b_icare.SEVIRI_ICARE
187 property), 342
prediction_times (satpy.readers.gms.gms5_vissr_navigation._AttitudePrediction
PSPAtmosphericalCorrection (class in
attribute), 192 satpy.modifiers.atmosphere), 161
prediction_times (satpy.readers.gms.gms5_vissr_navigation._OrbitPrediction
PSPRayleighReflectance (class in
attribute), 192 satpy.modifiers.atmosphere), 161
prefix_data() (in module PygacPatcher (class in
satpy.tests.reader_tests.test_satpy_cf_nc), satpy.tests.reader_tests.test_avhrr_l1b_gaclac),
531 448
prepare_area_definitions() (in module pytest_configure() (in module satpy.conftest), 684
satpy.tests.reader_tests.test_seviri_l1b_native), pytest_unconfigure() (in module satpy.conftest), 684
544 pytestmark (satpy.tests.reader_tests.test_abi_l1b.Test_NC_ABI_L1B
prepare_dataset() (satpy.readers.sgli_l1b.HDF5SGLI attribute), 429
method), 352 pytestmark (satpy.tests.reader_tests.test_eum_l2_bufr.TestL2BufrReader
prepare_geo() (satpy.readers.tropomi_l2.TROPOMIL2FileHandler attribute), 458
method), 356 pytestmark (satpy.tests.scene_tests.test_conversions.TestSceneSerialization
prepare_is_roi() (in module attribute), 570
satpy.tests.reader_tests.test_seviri_l1b_native), pytestmark (satpy.tests.scene_tests.test_data_access.TestComputePersist
544 attribute), 571

826 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

pytestmark (satpy.tests.scene_tests.test_data_access.TestDataAccessMethods
469
attribute), 571 random_string() (in module satpy.tests.test_readers),
pytestmark (satpy.tests.scene_tests.test_init.TestScene 625
attribute), 572 RatioCompositor (class in satpy.composites), 132
pytestmark (satpy.tests.scene_tests.test_load.TestBadLoading
RatioSharpenedRGB (class in satpy.composites), 132
attribute), 574 rc_period_min (satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler
pytestmark (satpy.tests.scene_tests.test_load.TestLoadingCompositesproperty), 229
attribute), 574 read() (satpy.readers.aapp_l1b.AAPPL1BaseFileHandler
pytestmark (satpy.tests.scene_tests.test_load.TestLoadingReaderDatasets
method), 198
attribute), 575 read() (satpy.readers.generic_image.GenericImageFileHandler
pytestmark (satpy.tests.scene_tests.test_load.TestSceneAllAvailableDatasets
method), 235
attribute), 576 read() (satpy.readers.hrpt.HRPTFile method), 260
pytestmark (satpy.tests.scene_tests.test_resampling.TestSceneResampling
read() (satpy.readers.maia.MAIAFileHandler method),
attribute), 577 275
read_atms_coeff_to_string() (in module
Q satpy.readers.mirs), 280
qual_flags() (in module read_atms_limb_correction_coefficients() (in
satpy.tests.reader_tests.test_satpy_cf_nc), module satpy.readers.mirs), 280
531 read_azimuth_noise_array()
(satpy.readers.sar_c_safe.AzimuthNoiseReader
R method), 317
radiance_to_bt() (in module satpy.readers.eps_l1b), read_band() (satpy.readers.ahi_hsd.AHIHSDFileHandler
222 method), 206
radiance_to_refl() (in module read_band() (satpy.readers.ahi_l1b_gridded_bin.AHIGriddedFileHandler
satpy.readers.eps_l1b), 222 method), 208
read_band() (satpy.readers.hrit_base.HRITFileHandler
radiance_types (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestFileHandlerCalibrationBase
attribute), 536 method), 255
radiometric_processing read_data() (satpy.readers.hrit_base.HRITSegment
(satpy.readers.seviri_l1b_native_hdr.L15DataHeaderRecordmethod), 255
property), 348 read_dataset() (in module satpy.readers.iasi_l2), 263
radiometric_quality read_dataset() (satpy.readers.viirs_compact.VIIRSCompactFileHandler
method), 367
(satpy.readers.seviri_l1b_native_hdr.Msg15NativeTrailerRecord
property), 349 read_epilogue() (satpy.readers.electrol_hrit.HRITGOMSEpilogueFileHa
raise_for_status() (satpy.tests.test_demo._FakeRequest method), 219
method), 611 read_epilogue() (satpy.readers.seviri_l1b_hrit.HRITMSGEpilogueFileH
random_date() (in module method), 338
satpy.tests.reader_tests.conftest), 427 read_from_file_obj() (in module
random_image_channel() (in module satpy.readers.gms.gms5_vissr_l1b), 182
satpy.tests.reader_tests.test_generic_image), read_geo() (in module satpy.readers.iasi_l2), 263
469 read_geo() (satpy.readers.viirs_compact.VIIRSCompactFileHandler
random_image_channel_b() (in module method), 367
satpy.tests.reader_tests.test_generic_image), read_geo_resolution()
469 (satpy.readers.hdfeos_base.HDFEOSGeoReader
random_image_channel_g() (in module static method), 254
satpy.tests.reader_tests.test_generic_image), read_geo_resolution()
469 (satpy.readers.modis_l2.ModisL2HDFFileHandler
random_image_channel_l() (in module static method), 284
satpy.tests.reader_tests.test_generic_image), read_header() (in module
469 satpy.readers.seviri_l1b_native), 347
random_image_channel_r() (in module read_legacy_noise()
satpy.tests.reader_tests.test_generic_image), (satpy.readers.sar_c_safe.Denoiser method),
469 318
random_image_channel_with_nans() (in module read_mda() (satpy.readers.hdfeos_base.HDFEOSBaseFileReader
satpy.tests.reader_tests.test_generic_image), class method), 253

Index 827
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

read_nwcsaf_time() (in module reflectance_coeffs (satpy.readers.fy4_base.FY4Base


satpy.readers.nwcsaf_nc), 305 property), 235
read_prologue() (satpy.readers.electrol_hrit.HRITGOMSPrologueFileHandler
ReflectanceCorrector (class in
method), 220 satpy.modifiers._crefl), 153
read_prologue() (satpy.readers.goes_imager_hrit.HRITGOESPrologueFileHandler
register_available_datasets()
method), 241 (satpy.readers.li_base_nc.LINCFileHandler
read_prologue() (satpy.readers.seviri_l1b_hrit.HRITMSGPrologueFileHandler
method), 272
method), 340 register_coords_from_scan_angles()
read_range_noise_array() (satpy.readers.li_base_nc.LINCFileHandler
(satpy.readers.sar_c_safe.Denoiser method), method), 272
318 register_data_files()
read_raw_data() (satpy.readers.avhrr_l1b_gaclac.GACLACFile (satpy.aux_download.DataDownloadMixin
method), 216 method), 682
read_reader_config() (in module satpy.readers), 392 register_data_files()
read_records() (in module satpy.readers.eps_l1b), 222 (satpy.composites.StaticImageCompositor
read_writer_config() (in module satpy.writers), 678 method), 135
reader() (in module satpy.tests.reader_tests.test_atms_l1b_nc),
register_dataset() (satpy.readers.li_base_nc.LINCFileHandler
444 method), 272
reader() (in module satpy.tests.reader_tests.test_cmsaf_claas),
register_file() (in module satpy.aux_download), 683
452 register_sector_datasets()
reader() (in module satpy.tests.reader_tests.test_ici_l1b_nc), (satpy.readers.li_base_nc.LINCFileHandler
495 method), 272
reader() (in module satpy.tests.reader_tests.test_mws_l1b_nc),
register_variable_datasets()
512 (satpy.readers.li_base_nc.LINCFileHandler
reader() (satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeMSGFilenames
method), 272
method), 543 reinhard_to_srgb() (in module satpy.enhancements),
reader_configs() (in module 152
satpy.tests.reader_tests.test_fci_l1c_nc), remove_earthsun_distance_correction() (in mod-
465 ule satpy.readers.utils), 361
reader_l_nan_fill_value() (in module remove_empties() (in module
satpy.tests.reader_tests.test_generic_image), satpy.readers.nwcsaf_nc), 305
469 remove_timedim() (satpy.readers.nwcsaf_nc.NcNWCSAF
reader_name (satpy.node.ReaderNode property), 689 method), 305
ReaderNode (class in satpy.node), 689 rename() (satpy.tests.reader_tests.test_ami_l1b.FakeDataset
RealisticColors (class in satpy.composites), 133 method), 439
recarray2dict() (in module rename() (satpy.tests.reader_tests.test_scmi.FakeDataset
satpy.readers.electrol_hrit), 220 method), 531
recarray2dict() (in module satpy.readers.eum_base), render() (satpy.writers.awips_tiled.AWIPSNetCDFTemplate
222 method), 648
recursive_dict_update() (in module satpy.utils), 722 render() (satpy.writers.awips_tiled.NetCDFTemplate
reduce() (satpy.readers.seviri_l1b_hrit.HRITMSGEpilogueFileHandler method), 653
method), 338 replace_anc() (in module satpy.dataset.anc_vars), 136
reduce() (satpy.readers.seviri_l1b_hrit.HRITMSGPrologueEpilogueBase
requests_log (satpy.tests.test_demo._FakeRequest at-
method), 340 tribute), 611
reduce() (satpy.readers.seviri_l1b_hrit.HRITMSGPrologueFileHandler
required_nodes (satpy.node.CompositorNode prop-
method), 340 erty), 688
reduce_mda() (in module satpy.readers.utils), 361 res (satpy.readers.modis_l1b.HDFEOSBandReader at-
reference_alpha() (satpy.tests.test_composites.TestMaskingCompositor tribute), 282
method), 597 res (satpy.readers.seviri_l1b_icare.SEVIRI_ICARE
reference_data() (satpy.tests.test_composites.TestMaskingCompositor property), 342
method), 597 res_to_possible_variable_names
refl_factor_to_percent() (satpy.readers.modis_l1b.HDFEOSBandReader
(satpy.readers.mviri_l1b_fiduceo_nc.VISCalibrator attribute), 282
static method), 294 resample() (in module satpy.resample), 704

828 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

resample() (satpy.multiscene._multiscene.MultiScene SAFEMSITileMDXML (class in satpy.readers.msi_safe),


method), 174 286
resample() (satpy.resample.BucketResamplerBase SAFEMSIXMLMetadata (class in satpy.readers.msi_safe),
method), 701 287
resample() (satpy.resample.NativeResampler method), SAFENC (class in satpy.readers.safe_sar_l2_ocn), 315
703 SAFESARReader (class in satpy.readers.sar_c_safe), 319
resample() (satpy.scene.Scene method), 713 SAFEXML (class in satpy.readers.sar_c_safe), 319
resample_dataset() (in module satpy.resample), 704 SAFEXMLAnnotation (class in
resolution (satpy.readers.geocat.GEOCATFileHandler satpy.readers.sar_c_safe), 320
property), 237 sampling_angle (satpy.readers.gms.gms5_vissr_navigation.ScanningAngl
resolution (satpy.readers.goes_imager_nc.GOESEUMGEONCFileHandler attribute), 189
property), 246 sampling_angle (satpy.readers.gms.gms5_vissr_navigation.ScanningPara
resolution (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler attribute), 190
property), 249 sampling_angle() (in module
resolutions (satpy.readers.geocat.GEOCATFileHandler satpy.tests.reader_tests.gms.test_gms5_vissr_navigation),
attribute), 237 416
resolutions_AF_products() (in module sampling_to_lfac_cfac() (in module
satpy.tests.reader_tests.test_fci_l1c_nc), satpy.readers._geos_area), 197
465 SandwichCompositor (class in satpy.composites), 133
retrieve() (in module satpy.aux_download), 683 SARIce (class in satpy.composites.sar), 115
retrieve_all() (in module satpy.aux_download), 684 SARIceLegacy (class in satpy.composites.sar), 115
retrieve_all_cmd() (in module satpy.aux_download), SARIceLog (class in satpy.composites.sar), 115
684 SARQuickLook (class in satpy.composites.sar), 116
RG_FUDGE (satpy.modifiers._crefl_utils._ABICoefficients SARRGB (class in satpy.composites.sar), 116
attribute), 155 sat_position (satpy.readers.gms.gms5_vissr_navigation._OrbitPrediction
rgba_dset() (in module attribute), 192
satpy.tests.reader_tests.test_generic_image), sat_position (satpy.readers.gms.gms5_vissr_navigation.Orbit
469 attribute), 185
RGBCompositor (class in satpy.composites), 132 satellite_altitude (satpy.readers.msu_gsa_l1b.MSUGSAFileHandler
right_ascension_from_sat_to_sun property), 288
(satpy.readers.gms.gms5_vissr_navigation.OrbitAngles
satellite_angles (satpy.readers.olci_nc.NCOLCIAngles
attribute), 186 property), 307
round_nom_time() (in module satellite_latitude (satpy.readers.msu_gsa_l1b.MSUGSAFileHandler
satpy.readers.seviri_base), 334 property), 288
rows_name (satpy.readers.olci_nc.NCOLCIBase at- satellite_longitude
tribute), 307 (satpy.readers.msu_gsa_l1b.MSUGSAFileHandler
rows_name (satpy.readers.olci_nc.NCOLCILowResData property), 288
attribute), 308 satellite_status (satpy.readers.seviri_l1b_native_hdr.L15DataHeaderR
rows_per_scans() (satpy.readers.viirs_edr.VIIRSJRRFileHandler property), 348
method), 369 satlon (satpy.readers.seviri_l1b_icare.SEVIRI_ICARE
run_and_check_enhancement() (in module property), 342
satpy.tests.enhancement_tests.test_enhancements),Satpos (class in satpy.readers.gms.gms5_vissr_navigation),
401 188
run_and_check_enhancement_with_dtype() (in satpos (satpy.readers.seviri_l1b_hrit.HRITMSGPrologueFileHandler
module satpy.tests.enhancement_tests.test_enhancements), property), 340
401 satpos (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
run_crefl() (in module satpy.modifiers._crefl_utils), property), 346
157 satpos (satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler
property), 351
S satpy
SAFEGRD (class in satpy.readers.sar_c_safe), 318 module, 723
SAFEMSIL1C (class in satpy.readers.msi_safe), 285 satpy._compat
SAFEMSIMDXML (class in satpy.readers.msi_safe), 285 module, 679
satpy._config

Index 829
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

module, 679 module, 147


satpy._scene_converters satpy.demo._google_cloud_platform
module, 679 module, 144
satpy.aux_download satpy.demo.abi_l1b
module, 681 module, 144
satpy.cf satpy.demo.ahi_hsd
module, 111 module, 145
satpy.cf.area satpy.demo.fci
module, 104 module, 145
satpy.cf.attrs satpy.demo.seviri_hrit
module, 104 module, 145
satpy.cf.coords satpy.demo.utils
module, 106 module, 146
satpy.cf.data_array satpy.demo.viirs_sdr
module, 108 module, 146
satpy.cf.datasets satpy.dependency_tree
module, 108 module, 684
satpy.cf.decoding satpy.enhancements
module, 110 module, 148
satpy.cf.encoding satpy.enhancements.abi
module, 110 module, 147
satpy.composites satpy.enhancements.mimic
module, 122 module, 147
satpy.composites.abi satpy.enhancements.viirs
module, 111 module, 148
satpy.composites.agri satpy.modifiers
module, 112 module, 170
satpy.composites.ahi satpy.modifiers._crefl
module, 112 module, 153
satpy.composites.cloud_products satpy.modifiers._crefl_utils
module, 112 module, 154
satpy.composites.config_loader satpy.modifiers.angles
module, 113 module, 157
satpy.composites.glm satpy.modifiers.atmosphere
module, 114 module, 161
satpy.composites.sar satpy.modifiers.base
module, 115 module, 162
satpy.composites.spectral satpy.modifiers.filters
module, 116 module, 162
satpy.composites.viirs satpy.modifiers.geometry
module, 118 module, 163
satpy.conftest satpy.modifiers.parallax
module, 684 module, 165
satpy.dataset satpy.modifiers.spectral
module, 144 module, 169
satpy.dataset.anc_vars satpy.multiscene
module, 136 module, 176
satpy.dataset.data_dict satpy.multiscene._blend_funcs
module, 136 module, 170
satpy.dataset.dataid satpy.multiscene._multiscene
module, 138 module, 171
satpy.dataset.metadata satpy.node
module, 142 module, 688
satpy.demo satpy.plugin_base

830 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

module, 689 module, 222


satpy.readers satpy.readers.eum_l2_grib
module, 386 module, 224
satpy.readers._geos_area satpy.readers.fci_base
module, 196 module, 225
satpy.readers.aapp_l1b satpy.readers.fci_l1c_nc
module, 198 module, 226
satpy.readers.aapp_mhs_amsub_l1c satpy.readers.fci_l2_nc
module, 199 module, 229
satpy.readers.abi_base satpy.readers.file_handlers
module, 200 module, 231
satpy.readers.abi_l1b satpy.readers.fy4_base
module, 201 module, 234
satpy.readers.abi_l2_nc satpy.readers.generic_image
module, 202 module, 235
satpy.readers.acspo satpy.readers.geocat
module, 202 module, 236
satpy.readers.agri_l1 satpy.readers.gerb_l2_hr_h5
module, 203 module, 237
satpy.readers.ahi_hsd satpy.readers.ghi_l1
module, 203 module, 238
satpy.readers.ahi_l1b_gridded_bin satpy.readers.ghrsst_l2
module, 207 module, 238
satpy.readers.ahi_l2_nc satpy.readers.gld360_ualf2
module, 208 module, 239
satpy.readers.ami_l1b satpy.readers.glm_l2
module, 209 module, 239
satpy.readers.amsr2_l1b satpy.readers.gms
module, 210 module, 196
satpy.readers.amsr2_l2 satpy.readers.gms.gms5_vissr_format
module, 211 module, 176
satpy.readers.amsr2_l2_gaasp satpy.readers.gms.gms5_vissr_l1b
module, 211 module, 176
satpy.readers.ascat_l2_soilmoisture_bufr satpy.readers.gms.gms5_vissr_navigation
module, 213 module, 182
satpy.readers.atms_l1b_nc satpy.readers.goci2_l2_nc
module, 213 module, 240
satpy.readers.atms_sdr_hdf5 satpy.readers.goes_imager_hrit
module, 214 module, 240
satpy.readers.avhrr_l1b_gaclac satpy.readers.goes_imager_nc
module, 215 module, 242
satpy.readers.clavrx satpy.readers.gpm_imerg
module, 216 module, 250
satpy.readers.cmsaf_claas2 satpy.readers.grib
module, 218 module, 250
satpy.readers.electrol_hrit satpy.readers.hdf4_utils
module, 219 module, 252
satpy.readers.epic_l1b_h5 satpy.readers.hdf5_utils
module, 220 module, 252
satpy.readers.eps_l1b satpy.readers.hdfeos_base
module, 221 module, 252
satpy.readers.eum_base satpy.readers.hrit_base
module, 222 module, 254
satpy.readers.eum_l2_bufr satpy.readers.hrit_jma

Index 831
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

module, 256 module, 302


satpy.readers.hrpt satpy.readers.nwcsaf_msg2013_hdf5
module, 259 module, 303
satpy.readers.hsaf_grib satpy.readers.nwcsaf_nc
module, 260 module, 304
satpy.readers.hsaf_h5 satpy.readers.oceancolorcci_l3_nc
module, 261 module, 305
satpy.readers.hy2_scat_l2b_h5 satpy.readers.olci_nc
module, 262 module, 306
satpy.readers.iasi_l2 satpy.readers.oli_tirs_l1_tif
module, 262 module, 309
satpy.readers.iasi_l2_so2_bufr satpy.readers.omps_edr
module, 263 module, 310
satpy.readers.ici_l1b_nc satpy.readers.osisaf_l3_nc
module, 265 module, 311
satpy.readers.insat3d_img_l1b_h5 satpy.readers.pmw_channels_definitions
module, 268 module, 312
satpy.readers.li_base_nc satpy.readers.safe_sar_l2_ocn
module, 269 module, 315
satpy.readers.li_l2_nc satpy.readers.sar_c_safe
module, 273 module, 316
satpy.readers.maia satpy.readers.satpy_cf_nc
module, 274 module, 321
satpy.readers.mcd12q1 satpy.readers.scmi
module, 275 module, 325
satpy.readers.meris_nc_sen3 satpy.readers.seadas_l2
module, 276 module, 326
satpy.readers.mersi_l1b satpy.readers.seviri_base
module, 277 module, 327
satpy.readers.mimic_TPW2_nc satpy.readers.seviri_l1b_hrit
module, 278 module, 335
satpy.readers.mirs satpy.readers.seviri_l1b_icare
module, 279 module, 341
satpy.readers.modis_l1b satpy.readers.seviri_l1b_native
module, 281 module, 342
satpy.readers.modis_l2 satpy.readers.seviri_l1b_native_hdr
module, 283 module, 347
satpy.readers.modis_l3 satpy.readers.seviri_l1b_nc
module, 284 module, 350
satpy.readers.msi_safe satpy.readers.sgli_l1b
module, 285 module, 351
satpy.readers.msu_gsa_l1b satpy.readers.slstr_l1b
module, 288 module, 353
satpy.readers.mviri_l1b_fiduceo_nc satpy.readers.smos_l2_wind
module, 288 module, 354
satpy.readers.mwr_l1b satpy.readers.tropomi_l2
module, 295 module, 355
satpy.readers.mwr_l1c satpy.readers.utils
module, 297 module, 356
satpy.readers.mws_l1b satpy.readers.vaisala_gld360
module, 298 module, 361
satpy.readers.netcdf_utils satpy.readers.vii_base_nc
module, 299 module, 362
satpy.readers.nucaps satpy.readers.vii_l1b_nc

832 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

module, 363 module, 395


satpy.readers.vii_l2_nc satpy.tests.compositor_tests
module, 364 module, 399
satpy.readers.vii_utils satpy.tests.compositor_tests.test_abi
module, 365 module, 395
satpy.readers.viirs_atms_sdr_base satpy.tests.compositor_tests.test_agri
module, 365 module, 396
satpy.readers.viirs_compact satpy.tests.compositor_tests.test_ahi
module, 366 module, 396
satpy.readers.viirs_edr satpy.tests.compositor_tests.test_glm
module, 368 module, 397
satpy.readers.viirs_edr_active_fires satpy.tests.compositor_tests.test_sar
module, 370 module, 397
satpy.readers.viirs_edr_flood satpy.tests.compositor_tests.test_spectral
module, 371 module, 397
satpy.readers.viirs_l1b satpy.tests.compositor_tests.test_viirs
module, 372 module, 398
satpy.readers.viirs_l2 satpy.tests.conftest
module, 373 module, 590
satpy.readers.viirs_sdr satpy.tests.enhancement_tests
module, 374 module, 402
satpy.readers.viirs_vgac_l1c_nc satpy.tests.enhancement_tests.test_abi
module, 375 module, 399
satpy.readers.virr_l1b satpy.tests.enhancement_tests.test_enhancements
module, 376 module, 399
satpy.readers.xmlformat satpy.tests.enhancement_tests.test_viirs
module, 377 module, 402
satpy.readers.yaml_reader satpy.tests.modifier_tests
module, 377 module, 407
satpy.resample satpy.tests.modifier_tests.test_angles
module, 690 module, 402
satpy.scene satpy.tests.modifier_tests.test_crefl
module, 704 module, 403
satpy.testing satpy.tests.modifier_tests.test_filters
module, 717 module, 404
satpy.tests satpy.tests.modifier_tests.test_parallax
module, 645 module, 404
satpy.tests.cf_tests satpy.tests.multiscene_tests
module, 395 module, 411
satpy.tests.cf_tests._test_data satpy.tests.multiscene_tests.test_blend
module, 392 module, 407
satpy.tests.cf_tests.test_area satpy.tests.multiscene_tests.test_misc
module, 392 module, 409
satpy.tests.cf_tests.test_attrs satpy.tests.multiscene_tests.test_save_animation
module, 393 module, 410
satpy.tests.cf_tests.test_coords satpy.tests.multiscene_tests.test_utils
module, 393 module, 410
satpy.tests.cf_tests.test_dataaarray satpy.tests.reader_tests
module, 394 module, 570
satpy.tests.cf_tests.test_datasets satpy.tests.reader_tests._li_test_utils
module, 394 module, 425
satpy.tests.cf_tests.test_decoding satpy.tests.reader_tests.conftest
module, 395 module, 426
satpy.tests.cf_tests.test_encoding satpy.tests.reader_tests.gms

Index 833
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

module, 416 module, 444


satpy.tests.reader_tests.gms.test_gms5_vissr_data
satpy.tests.reader_tests.test_avhrr_l0_hrpt
module, 411 module, 445
satpy.tests.reader_tests.gms.test_gms5_vissr_l1b
satpy.tests.reader_tests.test_avhrr_l1b_gaclac
module, 411 module, 448
satpy.tests.reader_tests.gms.test_gms5_vissr_navigation
satpy.tests.reader_tests.test_aws1_mwr_l1b
module, 414 module, 450
satpy.tests.reader_tests.modis_tests satpy.tests.reader_tests.test_aws1_mwr_l1c
module, 422 module, 451
satpy.tests.reader_tests.modis_tests._modis_fixtures
satpy.tests.reader_tests.test_clavrx
module, 416 module, 425
satpy.tests.reader_tests.modis_tests.conftest satpy.tests.reader_tests.test_clavrx.test_clavrx_geohdf
module, 420 module, 423
satpy.tests.reader_tests.modis_tests.test_modis_l1b
satpy.tests.reader_tests.test_clavrx.test_clavrx_nc
module, 421 module, 424
satpy.tests.reader_tests.modis_tests.test_modis_l2
satpy.tests.reader_tests.test_clavrx.test_clavrx_polarhdf
module, 421 module, 424
satpy.tests.reader_tests.modis_tests.test_modis_l3
satpy.tests.reader_tests.test_cmsaf_claas
module, 422 module, 451
satpy.tests.reader_tests.modis_tests.test_modis_l3_mcd12q1
satpy.tests.reader_tests.test_electrol_hrit
module, 422 module, 452
satpy.tests.reader_tests.test_aapp_l1b satpy.tests.reader_tests.test_epic_l1b_h5
module, 427 module, 454
satpy.tests.reader_tests.test_aapp_mhs_amsub_l1c
satpy.tests.reader_tests.test_eps_l1b
module, 428 module, 455
satpy.tests.reader_tests.test_abi_l1b satpy.tests.reader_tests.test_eps_sterna_mwr_l1b
module, 429 module, 456
satpy.tests.reader_tests.test_abi_l2_nc satpy.tests.reader_tests.test_eum_base
module, 430 module, 457
satpy.tests.reader_tests.test_acspo satpy.tests.reader_tests.test_eum_l2_bufr
module, 431 module, 458
satpy.tests.reader_tests.test_agri_l1 satpy.tests.reader_tests.test_eum_l2_grib
module, 432 module, 459
satpy.tests.reader_tests.test_ahi_hrit satpy.tests.reader_tests.test_fci_base
module, 434 module, 460
satpy.tests.reader_tests.test_ahi_hsd satpy.tests.reader_tests.test_fci_l1c_nc
module, 435 module, 460
satpy.tests.reader_tests.test_ahi_l1b_gridded_bin
satpy.tests.reader_tests.test_fci_l2_nc
module, 436 module, 466
satpy.tests.reader_tests.test_ahi_l2_nc satpy.tests.reader_tests.test_fy4_base
module, 438 module, 468
satpy.tests.reader_tests.test_ami_l1b satpy.tests.reader_tests.test_generic_image
module, 439 module, 469
satpy.tests.reader_tests.test_amsr2_l1b satpy.tests.reader_tests.test_geocat
module, 440 module, 470
satpy.tests.reader_tests.test_amsr2_l2 satpy.tests.reader_tests.test_geos_area
module, 441 module, 471
satpy.tests.reader_tests.test_amsr2_l2_gaasp satpy.tests.reader_tests.test_gerb_l2_hr_h5
module, 442 module, 472
satpy.tests.reader_tests.test_ascat_l2_soilmoisture_bufr
satpy.tests.reader_tests.test_ghi_l1
module, 442 module, 472
satpy.tests.reader_tests.test_atms_l1b_nc satpy.tests.reader_tests.test_ghrsst_l2
module, 443 module, 474
satpy.tests.reader_tests.test_atms_sdr_hdf5 satpy.tests.reader_tests.test_gld360_ualf2

834 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

module, 474 module, 509


satpy.tests.reader_tests.test_glm_l2 satpy.tests.reader_tests.test_mws_l1b_nc
module, 476 module, 510
satpy.tests.reader_tests.test_goci2_l2_nc satpy.tests.reader_tests.test_netcdf_utils
module, 477 module, 512
satpy.tests.reader_tests.test_goes_imager_hritsatpy.tests.reader_tests.test_nucaps
module, 477 module, 514
satpy.tests.reader_tests.test_goes_imager_nc_eum
satpy.tests.reader_tests.test_nwcsaf_msg
module, 479 module, 516
satpy.tests.reader_tests.test_goes_imager_nc_noaa
satpy.tests.reader_tests.test_nwcsaf_nc
module, 479 module, 517
satpy.tests.reader_tests.test_gpm_imerg satpy.tests.reader_tests.test_oceancolorcci_l3_nc
module, 482 module, 521
satpy.tests.reader_tests.test_grib satpy.tests.reader_tests.test_oci_l2_bgc
module, 482 module, 521
satpy.tests.reader_tests.test_hdf4_utils satpy.tests.reader_tests.test_olci_nc
module, 484 module, 522
satpy.tests.reader_tests.test_hdf5_utils satpy.tests.reader_tests.test_oli_tirs_l1_tif
module, 484 module, 523
satpy.tests.reader_tests.test_hdfeos_base satpy.tests.reader_tests.test_omps_edr
module, 485 module, 525
satpy.tests.reader_tests.test_hrit_base satpy.tests.reader_tests.test_osisaf_l3
module, 486 module, 525
satpy.tests.reader_tests.test_hsaf_grib satpy.tests.reader_tests.test_safe_sar_l2_ocn
module, 488 module, 527
satpy.tests.reader_tests.test_hsaf_h5 satpy.tests.reader_tests.test_sar_c_safe
module, 489 module, 527
satpy.tests.reader_tests.test_hy2_scat_l2b_h5 satpy.tests.reader_tests.test_satpy_cf_nc
module, 489 module, 530
satpy.tests.reader_tests.test_iasi_l2 satpy.tests.reader_tests.test_scmi
module, 491 module, 531
satpy.tests.reader_tests.test_iasi_l2_so2_bufrsatpy.tests.reader_tests.test_seadas_l2
module, 492 module, 532
satpy.tests.reader_tests.test_ici_l1b_nc satpy.tests.reader_tests.test_seviri_base
module, 493 module, 533
satpy.tests.reader_tests.test_insat3d_img_l1b_h5
satpy.tests.reader_tests.test_seviri_l1b_calibration
module, 495 module, 535
satpy.tests.reader_tests.test_li_l2_nc satpy.tests.reader_tests.test_seviri_l1b_hrit
module, 496 module, 537
satpy.tests.reader_tests.test_meris_nc satpy.tests.reader_tests.test_seviri_l1b_hrit_setup
module, 499 module, 539
satpy.tests.reader_tests.test_mersi_l1b satpy.tests.reader_tests.test_seviri_l1b_icare
module, 500 module, 541
satpy.tests.reader_tests.test_mimic_TPW2_lowres
satpy.tests.reader_tests.test_seviri_l1b_native
module, 504 module, 542
satpy.tests.reader_tests.test_mimic_TPW2_nc satpy.tests.reader_tests.test_seviri_l1b_nc
module, 505 module, 545
satpy.tests.reader_tests.test_mirs satpy.tests.reader_tests.test_sgli_l1b
module, 506 module, 546
satpy.tests.reader_tests.test_msi_safe satpy.tests.reader_tests.test_slstr_l1b
module, 507 module, 547
satpy.tests.reader_tests.test_msu_gsa_l1b satpy.tests.reader_tests.test_smos_l2_wind
module, 508 module, 548
satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc
satpy.tests.reader_tests.test_tropomi_l2

Index 835
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

module, 549 module, 591


satpy.tests.reader_tests.test_utils satpy.tests.test_config
module, 550 module, 602
satpy.tests.reader_tests.test_vaisala_gld360 satpy.tests.test_crefl_utils
module, 552 module, 604
satpy.tests.reader_tests.test_vii_base_nc satpy.tests.test_data_download
module, 553 module, 604
satpy.tests.reader_tests.test_vii_l1b_nc satpy.tests.test_dataset
module, 553 module, 605
satpy.tests.reader_tests.test_vii_l2_nc satpy.tests.test_demo
module, 554 module, 609
satpy.tests.reader_tests.test_vii_utils satpy.tests.test_dependency_tree
module, 554 module, 612
satpy.tests.reader_tests.test_vii_wv_nc satpy.tests.test_file_handlers
module, 554 module, 614
satpy.tests.reader_tests.test_viirs_atms_utilssatpy.tests.test_modifiers
module, 555 module, 615
satpy.tests.reader_tests.test_viirs_compact satpy.tests.test_node
module, 555 module, 617
satpy.tests.reader_tests.test_viirs_edr satpy.tests.test_readers
module, 556 module, 618
satpy.tests.reader_tests.test_viirs_edr_active_fires
satpy.tests.test_regressions
module, 558 module, 625
satpy.tests.reader_tests.test_viirs_edr_flood satpy.tests.test_resample
module, 561 module, 625
satpy.tests.reader_tests.test_viirs_l1b satpy.tests.test_testing
module, 562 module, 629
satpy.tests.reader_tests.test_viirs_l2 satpy.tests.test_utils
module, 564 module, 629
satpy.tests.reader_tests.test_viirs_sdr satpy.tests.test_writers
module, 565 module, 631
satpy.tests.reader_tests.test_viirs_vgac_l1c_nc
satpy.tests.test_yaml_reader
module, 568 module, 637
satpy.tests.reader_tests.test_virr_l1b satpy.tests.utils
module, 568 module, 642
satpy.tests.reader_tests.utils satpy.tests.writer_tests
module, 569 module, 590
satpy.tests.scene_tests satpy.tests.writer_tests.test_awips_tiled
module, 579 module, 579
satpy.tests.scene_tests.test_conversions satpy.tests.writer_tests.test_cf
module, 570 module, 580
satpy.tests.scene_tests.test_data_access satpy.tests.writer_tests.test_geotiff
module, 571 module, 582
satpy.tests.scene_tests.test_init satpy.tests.writer_tests.test_mitiff
module, 572 module, 583
satpy.tests.scene_tests.test_load satpy.tests.writer_tests.test_ninjogeotiff
module, 573 module, 585
satpy.tests.scene_tests.test_resampling satpy.tests.writer_tests.test_ninjotiff
module, 577 module, 589
satpy.tests.scene_tests.test_saving satpy.tests.writer_tests.test_simple_image
module, 578 module, 589
satpy.tests.test_cf_roundtrip satpy.tests.writer_tests.test_utils
module, 591 module, 590
satpy.tests.test_composites satpy.utils

836 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

module, 717 save_image() (satpy.writers.geotiff.GeoTIFFWriter


satpy.version method), 660
module, 723 save_image() (satpy.writers.ImageWriter method), 673
satpy.writers save_image() (satpy.writers.mitiff.MITIFFWriter
module, 670 method), 663
satpy.writers.awips_tiled save_image() (satpy.writers.ninjogeotiff.NinJoGeoTIFFWriter
module, 645 method), 664
satpy.writers.cf_writer save_image() (satpy.writers.ninjotiff.NinjoTIFFWriter
module, 655 method), 669
satpy.writers.geotiff save_image() (satpy.writers.simple_image.PillowWriter
module, 660 method), 670
satpy.writers.mitiff save_neighbour_info()
module, 662 (satpy.resample.KDTreeResampler method),
satpy.writers.ninjogeotiff 702
module, 663 save_test_data() (in module
satpy.writers.ninjotiff satpy.tests.reader_tests.test_ascat_l2_soilmoisture_bufr),
module, 668 443
satpy.writers.simple_image save_test_data() (in module
module, 669 satpy.tests.reader_tests.test_iasi_l2), 492
satpy.writers.utils save_test_data() (in module
module, 670 satpy.tests.reader_tests.test_iasi_l2_so2_bufr),
SatpyCFFileHandler (class in 492
satpy.readers.satpy_cf_nc), 324 sc_h5_file() (in module
saturated (satpy.readers.msi_safe.SAFEMSIMDXML satpy.tests.reader_tests.test_hsaf_h5), 489
property), 286 scale() (satpy.readers.fy4_base.FY4Base static
save_animation() (satpy.multiscene._multiscene.MultiScene method), 235
method), 174 scale_array() (satpy.readers.sgli_l1b.HDF5SGLI
save_bil_info() (satpy.resample.BilinearResampler method), 352
method), 700 scale_data_to_specified_unit()
save_dataset() (satpy.scene.Scene method), 713 (satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandler
save_dataset() (satpy.writers.awips_tiled.AWIPSTiledWriter method), 366
method), 650 scale_dataset() (satpy.readers.amsr2_l2.AMSR2L2FileHandler
save_dataset() (satpy.writers.cf_writer.CFWriter method), 211
method), 659 scale_dataset() (satpy.readers.nwcsaf_nc.NcNWCSAF
save_dataset() (satpy.writers.ImageWriter method), method), 305
673 scale_offset_tag_names
save_dataset() (satpy.writers.mitiff.MITIFFWriter (satpy.writers.ninjogeotiff.NinJoGeoTIFFWriter
method), 663 attribute), 665
save_dataset() (satpy.writers.ninjotiff.NinjoTIFFWriter scale_swath_data() (satpy.readers.viirs_atms_sdr_base.JPSS_SDR_File
method), 669 method), 366
save_dataset() (satpy.writers.Writer method), 674 scan_params (satpy.readers.gms.gms5_vissr_navigation.StaticNavigationP
save_datasets() (satpy.multiscene._multiscene.MultiScene attribute), 190
method), 175 scan_params() (in module
save_datasets() (satpy.scene.Scene method), 714 satpy.tests.reader_tests.gms.test_gms5_vissr_navigation),
save_datasets() (satpy.writers.awips_tiled.AWIPSTiledWriter 416
method), 650 scan_time (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestFileHan
save_datasets() (satpy.writers.cf_writer.CFWriter attribute), 536
method), 659 scanning_angles (satpy.readers.gms.gms5_vissr_navigation.ProjectionPa
save_datasets() (satpy.writers.mitiff.MITIFFWriter attribute), 188
method), 663 ScanningAngles (class in
save_datasets() (satpy.writers.Writer method), 674 satpy.readers.gms.gms5_vissr_navigation),
save_image() (satpy.tests.test_writers._CustomImageWriter 189
method), 636 ScanningParameters (class in
satpy.readers.gms.gms5_vissr_navigation),

Index 837
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

189 sensor (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler


Scene (class in satpy.scene), 704 property), 267
scene() (satpy.tests.writer_tests.test_cf.TestNetcdfEncodingKwargs
sensor (satpy.readers.mwr_l1b.AWS_EPS_Sterna_BaseFileHandler
method), 582 property), 296
scene1() (satpy.tests.multiscene_tests.test_misc.TestMultiSceneGrouping
sensor (satpy.readers.mwr_l1c.AWS_MWR_L1CFile
method), 409 property), 298
scene1_with_weights() (in module sensor (satpy.readers.mws_l1b.MWSL1BFile property),
satpy.tests.multiscene_tests.test_blend), 408 299
scene2() (satpy.tests.multiscene_tests.test_misc.TestMultiSceneGrouping
sensor (satpy.readers.tropomi_l2.TROPOMIL2FileHandler
method), 409 property), 356
scene2_with_weights() (in module sensor (satpy.readers.vii_base_nc.ViiNCBaseFileHandler
satpy.tests.multiscene_tests.test_blend), 409 property), 363
scene_from_physical_seviri_nat_file() (in mod- sensor_attr_name (satpy.readers.seadas_l2.SEADASL2HDFFileHandler
ule satpy.tests.reader_tests.test_seviri_l1b_native), attribute), 326
544 sensor_attr_name (satpy.readers.seadas_l2.SEADASL2NetCDFFileHand
scene_with_encoding() attribute), 326
(satpy.tests.writer_tests.test_cf.TestEncodingAttribute
sensor_name (satpy.readers.acspo.ACSPOFileHandler
method), 581 property), 203
scenes (satpy.multiscene._multiscene.MultiScene prop- sensor_name (satpy.readers.eps_l1b.EPSAVHRRFile
erty), 175 property), 221
schema_parameters (satpy.tests.reader_tests._li_test_utils.FakeLIFileHandlerBase
sensor_name (satpy.readers.eum_l2_bufr.EumetsatL2BufrFileHandler
attribute), 425 property), 223
SCMIFileHandler (class in satpy.readers.scmi), 325 sensor_name (satpy.readers.fci_l2_nc.FciL2CommonFunctions
seadas_l2_modis_chlor_a() (in module property), 230
satpy.tests.reader_tests.test_seadas_l2), 533 sensor_name (satpy.readers.mersi_l1b.MERSIL1B
seadas_l2_modis_chlor_a_netcdf() (in module property), 278
satpy.tests.reader_tests.test_seadas_l2), 533 sensor_name (satpy.readers.mimic_TPW2_nc.MimicTPW2FileHandler
seadas_l2_viirs_j01_chlor_a() (in module property), 279
satpy.tests.reader_tests.test_seadas_l2), 533 sensor_name (satpy.readers.msu_gsa_l1b.MSUGSAFileHandler
seadas_l2_viirs_npp_chlor_a() (in module property), 288
satpy.tests.reader_tests.test_seadas_l2), 533 sensor_name (satpy.readers.omps_edr.EDRFileHandler
SEADASL2HDFFileHandler (class in property), 311
satpy.readers.seadas_l2), 326 sensor_name (satpy.readers.seviri_l1b_icare.SEVIRI_ICARE
SEADASL2NetCDFFileHandler (class in property), 342
satpy.readers.seadas_l2), 326 sensor_name (satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandler
seek() (satpy.tests.reader_tests.test_grib.FakeGRIB property), 366
method), 482 sensor_name (satpy.readers.viirs_edr_active_fires.VIIRSActiveFiresFileHa
seek() (satpy.tests.reader_tests.test_hsaf_grib.FakeGRIB property), 371
method), 488 sensor_name (satpy.readers.viirs_edr_flood.VIIRSEDRFlood
select_files_from_directory() property), 371
(satpy.readers.yaml_reader.AbstractYAMLReader sensor_name (satpy.readers.viirs_l1b.VIIRSL1BFileHandler
method), 378 property), 372
select_files_from_pathnames() sensor_name (satpy.readers.viirs_l2.VIIRSL2FileHandler
(satpy.readers.yaml_reader.AbstractYAMLReader property), 373
method), 378 sensor_names (satpy.readers.amsr2_l2_gaasp.GAASPFileHandler
SelfSharpenedRGB (class in satpy.composites), 133 property), 212
sensor (satpy.readers.abi_base.NC_ABI_BASE prop- sensor_names (satpy.readers.file_handlers.BaseFileHandler
erty), 201 property), 234
sensor (satpy.readers.atms_l1b_nc.AtmsL1bNCFileHandlersensor_names (satpy.readers.geocat.GEOCATFileHandler
property), 214 property), 237
sensor (satpy.readers.ghrsst_l2.GHRSSTL2FileHandler sensor_names (satpy.readers.li_base_nc.LINCFileHandler
property), 239 property), 273
sensor (satpy.readers.glm_l2.NCGriddedGLML2 prop- sensor_names (satpy.readers.mirs.MiRSL2ncHandler
erty), 240 property), 280

838 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

sensor_names (satpy.readers.nucaps.NUCAPSFileHandlersetUp() (satpy.tests.reader_tests.test_aapp_l1b.TestAAPPL1BChannel3AM


property), 302 method), 428
sensor_names (satpy.readers.nwcsaf_nc.NcNWCSAF setUp() (satpy.tests.reader_tests.test_aapp_l1b.TestNegativeCalibrationSlo
property), 305 method), 428
sensor_names (satpy.readers.satpy_cf_nc.SatpyCFFileHandler setUp() (satpy.tests.reader_tests.test_aapp_mhs_amsub_l1c.TestMHS_AM
property), 324 method), 429
sensor_names (satpy.readers.scmi.SCMIFileHandler setUp() (satpy.tests.reader_tests.test_ahi_hsd.TestAHICalibration
property), 325 method), 435
sensor_names (satpy.readers.seadas_l2._SEADASL2Base setUp() (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGridde
property), 327 method), 437
sensor_names (satpy.readers.tropomi_l2.TROPOMIL2FileHandler setUp() (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGridde
property), 356 method), 437
sensor_names (satpy.readers.yaml_reader.AbstractYAMLReader setUp() (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGridde
property), 379 method), 437
sensor_names (satpy.readers.yaml_reader.FileYAMLReader setUp() (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGridde
property), 381 method), 438
sensor_names (satpy.scene.Scene property), 714 setUp() (satpy.tests.reader_tests.test_amsr2_l1b.TestAMSR2L1BReader
sensor_names (satpy.tests.utils.FakeFileHandler prop- method), 440
erty), 642 setUp() (satpy.tests.reader_tests.test_amsr2_l2.TestAMSR2L2Reader
sensors (satpy.readers.eps_l1b.EPSAVHRRFile at- method), 441
tribute), 221 setUp() (satpy.tests.reader_tests.test_ascat_l2_soilmoisture_bufr.TesitAsca
sensors (satpy.readers.geocat.GEOCATFileHandler at- method), 442
tribute), 237 setUp() (satpy.tests.reader_tests.test_avhrr_l0_hrpt.CalibratorPatcher
separate_init_kwargs() method), 445
(satpy.writers.awips_tiled.AWIPSTiledWriter setUp() (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTNavigation
class method), 651 method), 447
separate_init_kwargs() setUp() (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTWithFile
(satpy.writers.geotiff.GeoTIFFWriter class method), 447
method), 662 setUp() (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTWithPatched
separate_init_kwargs() (satpy.writers.ImageWriter method), 448
class method), 673 setUp() (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.GACLACFilePatch
separate_init_kwargs() (satpy.writers.Writer class method), 448
method), 675 setUp() (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.PygacPatcher
session_tmp_path() (in module method), 448
satpy.tests.reader_tests.test_seviri_l1b_native), setUp() (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGetDataset
544 method), 450
set_cf_time_info() (in module satpy.cf.coords), 107 setUp() (satpy.tests.reader_tests.test_clavrx.test_clavrx_geohdf.TestCLAVR
set_platform_and_sensor() method), 423
(satpy.readers.nwcsaf_nc.NcNWCSAF setUp() (satpy.tests.reader_tests.test_clavrx.test_clavrx_polarhdf.TestCLAV
method), 305 method), 425
set_time_attrs() (satpy.readers.viirs_vgac_l1c_nc.VGACFileHandler
setUp() (satpy.tests.reader_tests.test_eps_l1b.TestEPSL1B
method), 376 method), 455
set_variable_path() (in module setUp() (satpy.tests.reader_tests.test_eps_l1b.TestWrongSamplingEPSL1B
satpy.tests.reader_tests._li_test_utils), 426 method), 456
setdefault() (satpy.dataset.dataid.DataID method), setUp() (satpy.tests.reader_tests.test_eps_l1b.TestWrongScanlinesEPSL1B
139 method), 456
setUp() (satpy.tests.enhancement_tests.test_abi.TestABIEnhancement
setUp() (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCFileHandler
method), 399 method), 466
setUp() (satpy.tests.enhancement_tests.test_viirs.TestVIIRSEnhancement
setUp() (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCReadingByteD
method), 402 method), 467
setUp() (satpy.tests.multiscene_tests.test_save_animation.TestMultiSceneSave
setUp() (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCSegmentFileH
method), 410 method), 467
setUp() (satpy.tests.reader_tests.test_aapp_l1b.TestAAPPL1BAllChannelsPresent
setUp() (satpy.tests.reader_tests.test_geocat.TestGEOCATReader
method), 427 method), 471

Index 839
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

setUp() (satpy.tests.reader_tests.test_glm_l2.TestGLML2FileHandler
setUp() (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGProlog
method), 476 method), 539
setUp() (satpy.tests.reader_tests.test_glm_l2.TestGLML2Reader
setUp() (satpy.tests.reader_tests.test_seviri_l1b_icare.TestSEVIRIICARER
method), 476 method), 541
setUp() (satpy.tests.reader_tests.test_goes_imager_hrit.TestHRITGOESFileHandler
setUp() (satpy.tests.reader_tests.test_slstr_l1b.TestSLSTRL1B
method), 478 method), 548
setUp() (satpy.tests.reader_tests.test_goes_imager_nc_eum.GOESNCEUMFileHandlerRadianceTest
setUp() (satpy.tests.reader_tests.test_smos_l2_wind.TestSMOSL2WINDRe
method), 479 method), 549
setUp() (satpy.tests.reader_tests.test_goes_imager_nc_eum.GOESNCEUMFileHandlerReflectanceTest
setUp() (satpy.tests.reader_tests.test_tropomi_l2.TestTROPOMIL2Reader
method), 479 method), 550
setUp() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.GOESNCBaseFileHandlerTest
setUp() (satpy.tests.reader_tests.test_vii_base_nc.TestViiNCBaseFileHand
method), 480 method), 553
setUp() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.GOESNCFileHandlerTest
setUp() (satpy.tests.reader_tests.test_vii_l1b_nc.TestViiL1bNCFileHandler
method), 480 method), 553
setUp() (satpy.tests.reader_tests.test_gpm_imerg.TestHdf5IMERG
setUp() (satpy.tests.reader_tests.test_vii_l2_nc.TestViiL2NCFileHandler
method), 482 method), 554
setUp() (satpy.tests.reader_tests.test_hdf4_utils.TestHDF4FileHandler
setUp() (satpy.tests.reader_tests.test_vii_wv_nc.TestViiL2NCFileHandler
method), 484 method), 555
setUp() (satpy.tests.reader_tests.test_hdf5_utils.TestHDF5FileHandler
setUp() (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestImgVIIRSA
method), 485 method), 559
setUp() (satpy.tests.reader_tests.test_hsaf_grib.TestHSAFFileHandler
setUp() (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestImgVIIRSA
method), 489 method), 560
setUp() (satpy.tests.reader_tests.test_hy2_scat_l2b_h5.TestHY2SCATL2BH5Reader
setUp() (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestModVIIRSA
method), 490 method), 560
setUp() (satpy.tests.reader_tests.test_iasi_l2.TestIasiL2 setUp() (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestModVIIRSA
method), 491 method), 561
setUp() (satpy.tests.reader_tests.test_iasi_l2_so2_bufr.TestIasiL2So2Bufr
setUp() (satpy.tests.reader_tests.test_viirs_edr_flood.TestVIIRSEDRFloodR
method), 492 method), 561
setUp() (satpy.tests.reader_tests.test_mimic_TPW2_lowres.TestMimicTPW2Reader
setUp() (satpy.tests.reader_tests.test_viirs_sdr.TestAggrVIIRSSDRReader
method), 505 method), 566
setUp() (satpy.tests.reader_tests.test_mimic_TPW2_nc.TestMimicTPW2Reader
setUp() (satpy.tests.reader_tests.test_viirs_sdr.TestShortAggrVIIRSSDRRea
method), 506 method), 566
setUp() (satpy.tests.reader_tests.test_netcdf_utils.TestNetCDF4FileHandler
setUp() (satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
method), 513 method), 567
setUp() (satpy.tests.reader_tests.test_nucaps.TestNUCAPSReader
setUp() (satpy.tests.reader_tests.test_virr_l1b.TestVIRRL1BReader
method), 514 method), 569
setUp() (satpy.tests.reader_tests.test_nucaps.TestNUCAPSScienceEDRReader
setUp() (satpy.tests.test_composites.TestCategoricalDataCompositor
method), 515 method), 592
setUp() (satpy.tests.reader_tests.test_nwcsaf_msg.TestH5NWCSAF
setUp() (satpy.tests.test_composites.TestColormapCompositor
method), 516 method), 593
setUp() (satpy.tests.reader_tests.test_omps_edr.TestOMPSEDRReader
setUp() (satpy.tests.test_composites.TestDayNightCompositor
method), 525 method), 593
setUp() (satpy.tests.reader_tests.test_safe_sar_l2_ocn.TestSAFENC
setUp() (satpy.tests.test_composites.TestDifferenceCompositor
method), 527 method), 594
setUp() (satpy.tests.reader_tests.test_scmi.TestSCMIFileHandler
setUp() (satpy.tests.test_composites.TestGenericCompositor
method), 532 method), 595
setUp() (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestSEVIRICalibrationAlgorithm
setUp() (satpy.tests.test_composites.TestNaturalEnhCompositor
method), 536 method), 599
setUp() (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGEpilogueFileHandler
setUp() (satpy.tests.test_composites.TestSingleBandCompositor
method), 537 method), 601
setUp() (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGFileHandler
setUp() (satpy.tests.test_dataset.TestCombineMetadata
method), 538 method), 606
setUp() (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGFileHandlerHRV
setUp() (satpy.tests.test_dataset.TestIDQueryInteractions
method), 538 method), 608

840 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

setUp() (satpy.tests.test_demo.TestDemo method), 610 setup_method() (satpy.tests.compositor_tests.test_spectral.TestSpectralCo


setUp() (satpy.tests.test_demo.TestSEVIRIHRITDemoDownload method), 398
method), 610 setup_method() (satpy.tests.enhancement_tests.test_enhancements.TestEn
setUp() (satpy.tests.test_dependency_tree.TestDependencyTree method), 400
method), 612 setup_method() (satpy.tests.enhancement_tests.test_enhancements.TestTC
setUp() (satpy.tests.test_dependency_tree.TestMultipleSensors method), 401
method), 614 setup_method() (satpy.tests.reader_tests.test_abi_l2_nc.Test_NC_ABI_L2
setUp() (satpy.tests.test_file_handlers.TestBaseFileHandler method), 430
method), 614 setup_method() (satpy.tests.reader_tests.test_abi_l2_nc.Test_NC_ABI_L2
setUp() (satpy.tests.test_modifiers.TestNIRReflectance method), 431
method), 615 setup_method() (satpy.tests.reader_tests.test_acspo.TestACSPOReader
setUp() (satpy.tests.test_node.TestCompositorNode method), 432
method), 617 setup_method() (satpy.tests.reader_tests.test_agri_l1.Test_HDF_AGRI_L
setUp() (satpy.tests.test_node.TestCompositorNodeCopy method), 433
method), 618 setup_method() (satpy.tests.reader_tests.test_amsr2_l2_gaasp.TestGAASP
setUp() (satpy.tests.test_readers.TestDatasetDict method), 442
method), 618 setup_method() (satpy.tests.reader_tests.test_atms_sdr_hdf5.TestATMS_S
setUp() (satpy.tests.test_readers.TestGroupFiles method), 445
method), 621 setup_method() (satpy.tests.reader_tests.test_clavrx.test_clavrx_nc.TestC
setUp() (satpy.tests.test_readers.TestReaderLoader method), 424
method), 623 setup_method() (satpy.tests.reader_tests.test_epic_l1b_h5.TestEPICL1bR
setUp() (satpy.tests.test_resample.TestBucketAvg method), 454
method), 626 setup_method() (satpy.tests.reader_tests.test_fy4_base.Test_FY4Base
setUp() (satpy.tests.test_resample.TestBucketCount method), 468
method), 626 setup_method() (satpy.tests.reader_tests.test_ghi_l1.Test_HDF_GHI_L1_
setUp() (satpy.tests.test_resample.TestBucketFraction method), 473
method), 627 setup_method() (satpy.tests.reader_tests.test_ghrsst_l2.TestGHRSSTL2Re
setUp() (satpy.tests.test_resample.TestBucketSum method), 474
method), 627 setup_method() (satpy.tests.reader_tests.test_grib.TestGRIBReader
setUp() (satpy.tests.test_yaml_reader.TestFileFileYAMLReader method), 483
method), 637 setup_method() (satpy.tests.reader_tests.test_hrit_base.TestHRITFileHan
setUp() (satpy.tests.test_yaml_reader.TestFileFileYAMLReaderMultipleFileTypes
method), 486
method), 638 setup_method() (satpy.tests.reader_tests.test_mersi_l1b.MERSIL1BTester
setUp() (satpy.tests.test_yaml_reader.TestFileFileYAMLReaderMultiplePatterns
method), 501
method), 639 setup_method() (satpy.tests.reader_tests.test_msi_safe.TestMTDXML
setUp() (satpy.tests.test_yaml_reader.TestFileYAMLReaderLoading method), 507
method), 639 setup_method() (satpy.tests.reader_tests.test_msi_safe.TestSAFEMSIL1C
setUp() (satpy.tests.test_yaml_reader.TestFileYAMLReaderWithCustomIDKey
method), 507
method), 640 setup_method() (satpy.tests.reader_tests.test_msu_gsa_l1b.TestMSUGSAB
setUp() (satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter method), 508
method), 584 setup_method() (satpy.tests.reader_tests.test_oceancolorcci_l3_nc.TestOC
setUp() (satpy.tests.writer_tests.test_simple_image.TestPillowWriter method), 521
method), 590 setup_method() (satpy.tests.reader_tests.test_oli_tirs_l1_tif.TestOLITIRSL
setup_class() (satpy.tests.test_composites.TestBackgroundCompositor method), 523
class method), 591 setup_method() (satpy.tests.reader_tests.test_osisaf_l3.OSISAFL3Reader
setup_class() (satpy.tests.test_modifiers.TestSunZenithReducer method), 525
class method), 616 setup_method() (satpy.tests.reader_tests.test_osisaf_l3.TestOSISAFL3Rea
setup_fake_dataset() (in module method), 526
satpy.tests.reader_tests.test_glm_l2), 477 setup_method() (satpy.tests.reader_tests.test_osisaf_l3.TestOSISAFL3Rea
setup_hdf5_file() (in module method), 526
satpy.tests.reader_tests.test_epic_l1b_h5), setup_method() (satpy.tests.reader_tests.test_osisaf_l3.TestOSISAFL3Rea
454 method), 526
setup_method() (satpy.tests.compositor_tests.test_spectral.TestNdviHybridGreenCompositor
setup_method() (satpy.tests.reader_tests.test_osisaf_l3.TestOSISAFL3Rea
method), 397 method), 526

Index 841
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

setup_method() (satpy.tests.reader_tests.test_sar_c_safe.TestSAFEXMLCalibration
shared_dataset_ids (satpy.multiscene._multiscene.MultiScene
method), 528 property), 175
setup_method() (satpy.tests.reader_tests.test_sar_c_safe.TestSAFEXMLNoise
should_apply_meirink() (in module
method), 528 satpy.readers.seviri_base), 334
setup_method() (satpy.tests.reader_tests.test_utils.TestSunEarthDistanceCorrection
show() (in module satpy.writers), 678
method), 552 show() (satpy.scene.Scene method), 714
setup_method() (satpy.tests.reader_tests.test_viirs_l1b.TestVIIRSL1BReaderDay
show_versions() (in module satpy.utils), 722
method), 563 side (satpy.readers.pmw_channels_definitions.FrequencyDoubleSideBandB
setup_method() (satpy.tests.reader_tests.test_viirs_l2.TestVIIRSL2FileHandler
attribute), 313
method), 564 side (satpy.readers.pmw_channels_definitions.FrequencyQuadrupleSideBa
setup_method() (satpy.tests.test_composites.TestCloudCompositorCommonMask
attribute), 314
method), 592 sideside (satpy.readers.pmw_channels_definitions.FrequencyQuadrupleSi
setup_method() (satpy.tests.test_composites.TestCloudCompositorWithoutCloudfree
attribute), 314
method), 592 sigma_nought (satpy.tests.reader_tests.test_sar_c_safe.Calibration
setup_method() (satpy.tests.test_composites.TestHighCloudCompositor attribute), 527
method), 596 simple_coord_conv_table()
setup_method() (satpy.tests.test_composites.TestLowCloudCompositor (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileHandler
method), 597 method), 413
setup_method() (satpy.tests.test_composites.TestRatioSharpenedCompositors
SimulatedGreen (class in satpy.composites.abi), 111
method), 600 SimulatedRed (class in satpy.composites.agri), 112
setup_method() (satpy.tests.test_config.TestPluginsConfigssingle_area_scn() (satpy.tests.scene_tests.test_conversions.TestToXarra
method), 603 method), 570
setup_method() (satpy.tests.test_readers.TestFindFilesAndReaders
SingleBandCompositor (class in satpy.composites),
method), 620 134
setup_method() (satpy.tests.test_resample.TestNativeResampler
skip_numba_unstable_if_missing() (in module
method), 628 satpy.tests.utils), 644
setup_method() (satpy.tests.test_writers.TestBaseWriter slice() (satpy.readers.avhrr_l1b_gaclac.GACLACFile
method), 631 method), 216
setup_method() (satpy.tests.test_writers.TestComputeWriterResults
slice() (satpy.scene.Scene method), 715
method), 632 SMOSL2WINDFileHandler (class in
setup_method() (satpy.tests.test_writers.TestOverlays satpy.readers.smos_l2_wind), 354
method), 634 SnowAge (class in satpy.composites.viirs), 120
setup_reader() (in module soft_light() (in module satpy.composites.sar), 116
satpy.tests.reader_tests.test_eum_l2_grib), SOLAR_ANGLES (satpy.readers.ici_l1b_nc.InterpolationType
459 attribute), 268
SEVIRI_ICARE (class in satpy.readers.seviri_l1b_icare), solar_azimuth (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler
341 property), 267
seviri_l15_trailer (satpy.readers.seviri_l1b_native_hdr.Msg15NativeTrailerRecord
solar_azimuth_and_zenith
property), 349 (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler
SeviriBaseTest (class in property), 267
satpy.tests.reader_tests.test_seviri_base), solar_irradiance() (satpy.readers.msi_safe.SAFEMSIMDXML
533 method), 286
SEVIRICalibrationAlgorithm (class in solar_irradiances (satpy.readers.msi_safe.SAFEMSIMDXML
satpy.readers.seviri_base), 331 property), 286
SEVIRICalibrationHandler (class in solar_zenith (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler
satpy.readers.seviri_base), 331 property), 267
sgli_ir_file() (in module sort_dataids() (satpy.dataset.dataid.DataQuery
satpy.tests.reader_tests.test_sgli_l1b), 546 method), 140
sgli_pol_file() (in module sort_dataids_with_preference()
satpy.tests.reader_tests.test_sgli_l1b), 546 (satpy.dataset.dataid.DataQuery method),
sgli_vn_file() (in module 140
satpy.tests.reader_tests.test_sgli_l1b), 546 sorted_filetype_items()
shape (satpy.tests.reader_tests.test_fci_l1c_nc.FakeH5Variable (satpy.readers.yaml_reader.GenericYAMLReader
property), 462 method), 383

842 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

spacecraft_name (satpy.readers.fci_l2_nc.FciL2CommonFunctions property), 209


property), 230 start_time (satpy.readers.ami_l1b.AMIL1bNetCDF
spacecraft_name (satpy.readers.vii_base_nc.ViiNCBaseFileHandlerproperty), 210
property), 363 start_time (satpy.readers.amsr2_l2_gaasp.GAASPFileHandler
spacecrafts (satpy.readers.eps_l1b.EPSAVHRRFile at- property), 212
tribute), 221 start_time (satpy.readers.ascat_l2_soilmoisture_bufr.AscatSoilMoistureB
SpaceMasker (class in property), 213
satpy.readers.gms.gms5_vissr_l1b), 181 start_time (satpy.readers.atms_l1b_nc.AtmsL1bNCFileHandler
spatial_resolution_to_number() property), 214
(satpy.readers.abi_base.NC_ABI_BASE start_time (satpy.readers.avhrr_l1b_gaclac.GACLACFile
method), 201 property), 216
special_values (satpy.readers.msi_safe.SAFEMSIMDXML start_time (satpy.readers.clavrx.CLAVRXHDF4FileHandler
property), 286 property), 217
spectral_channel_ids start_time (satpy.readers.cmsaf_claas2.CLAAS2 prop-
(satpy.tests.reader_tests.test_seviri_l1b_calibration.TestFileHandlerCalibrationBase
erty), 219
attribute), 536 start_time (satpy.readers.epic_l1b_h5.DscovrEpicL1BH5FileHandler
SpectralBlender (class in satpy.composites.spectral), property), 220
118 start_time (satpy.readers.eps_l1b.EPSAVHRRFile
spinning_rate (satpy.readers.gms.gms5_vissr_navigation.ScanningParameters
property), 221
attribute), 190 start_time (satpy.readers.eum_l2_bufr.EumetsatL2BufrFileHandler
split_desired_other() (in module property), 223
satpy.readers.viirs_sdr), 375 start_time (satpy.readers.eum_l2_grib.EUML2GribFileHandler
split_integer_in_most_equal_parts() (in module property), 225
satpy.readers.yaml_reader), 386 start_time (satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler
split_results() (in module satpy.writers), 678 property), 229
spy_decorator() (in module satpy.tests.utils), 644 start_time (satpy.readers.file_handlers.BaseFileHandler
ssp_lon (satpy.readers.eum_l2_bufr.EumetsatL2BufrFileHandler property), 234
property), 223 start_time (satpy.readers.fy4_base.FY4Base property),
ssp_lon (satpy.readers.fci_l2_nc.FciL2CommonFunctions 235
property), 230 start_time (satpy.readers.generic_image.GenericImageFileHandler
ssp_lon (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler property), 236
property), 268 start_time (satpy.readers.geocat.GEOCATFileHandler
ssp_lon (satpy.readers.vii_base_nc.ViiNCBaseFileHandler property), 237
property), 363 start_time (satpy.readers.gerb_l2_hr_h5.GERB_HR_FileHandler
stack() (in module satpy.multiscene._blend_funcs), 171 property), 238
start_orbit_number (satpy.readers.nucaps.NUCAPSFileHandler start_time (satpy.readers.ghrsst_l2.GHRSSTL2FileHandler
property), 302 property), 239
start_orbit_number (satpy.readers.omps_edr.EDRFileHandler start_time (satpy.readers.gld360_ualf2.VaisalaGld360Ualf2FileHandler
property), 311 property), 239
start_orbit_number (satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandler
start_time (satpy.readers.glm_l2.NCGriddedGLML2
property), 366 property), 240
start_orbit_number (satpy.readers.viirs_l1b.VIIRSL1BFileHandler
start_time (satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler
property), 372 property), 181
start_orbit_number (satpy.readers.viirs_l2.VIIRSL2FileHandler
start_time (satpy.readers.goci2_l2_nc.GOCI2L2NCFileHandler
property), 373 property), 240
start_time (satpy.readers.aapp_l1b.AAPPL1BaseFileHandler start_time (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler
property), 198 property), 249
start_time (satpy.readers.abi_base.NC_ABI_BASE start_time (satpy.readers.gpm_imerg.Hdf5IMERG
property), 201 property), 250
start_time (satpy.readers.acspo.ACSPOFileHandler start_time (satpy.readers.grib.GRIBFileHandler prop-
property), 203 erty), 251
start_time (satpy.readers.ahi_hsd.AHIHSDFileHandler start_time (satpy.readers.hdfeos_base.HDFEOSBaseFileReader
property), 206 property), 253
start_time (satpy.readers.ahi_l2_nc.HIML2NCFileHandler start_time (satpy.readers.hrit_base.HRITFileHandler

Index 843
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property), 255 property), 312


start_time (satpy.readers.hrit_jma.HRITJMAFileHandlerstart_time (satpy.readers.safe_sar_l2_ocn.SAFENC
property), 259 property), 316
start_time (satpy.readers.hrpt.HRPTFile property), start_time (satpy.readers.sar_c_safe.SAFEGRD prop-
260 erty), 319
start_time (satpy.readers.hsaf_h5.HSAFFileHandler start_time (satpy.readers.sar_c_safe.SAFESARReader
property), 262 property), 319
start_time (satpy.readers.hy2_scat_l2b_h5.HY2SCATL2BH5FileHandler
start_time (satpy.readers.sar_c_safe.SAFEXML prop-
property), 262 erty), 320
start_time (satpy.readers.iasi_l2.IASIL2HDF5 prop- start_time (satpy.readers.satpy_cf_nc.SatpyCFFileHandler
erty), 263 property), 324
start_time (satpy.readers.iasi_l2_so2_bufr.IASIL2SO2BUFR
start_time (satpy.readers.scmi.SCMIFileHandler
property), 265 property), 325
start_time (satpy.readers.ici_l1b_nc.IciL1bNCFileHandler
start_time (satpy.readers.seadas_l2._SEADASL2Base
property), 268 property), 327
start_time (satpy.readers.insat3d_img_l1b_h5.Insat3DIMGL1BH5FileHandler
start_time (satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler
property), 268 property), 340
start_time (satpy.readers.li_base_nc.LINCFileHandler start_time (satpy.readers.seviri_l1b_icare.SEVIRI_ICARE
property), 273 property), 342
start_time (satpy.readers.maia.MAIAFileHandler start_time (satpy.readers.seviri_l1b_native.NativeMSGFileHandler
property), 275 property), 346
start_time (satpy.readers.mersi_l1b.MERSIL1B prop- start_time (satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler
erty), 278 property), 351
start_time (satpy.readers.mimic_TPW2_nc.MimicTPW2FileHandler
start_time (satpy.readers.sgli_l1b.HDF5SGLI prop-
property), 279 erty), 352
start_time (satpy.readers.mirs.MiRSL2ncHandler start_time (satpy.readers.slstr_l1b.NCSLSTR1B prop-
property), 280 erty), 353
start_time (satpy.readers.modis_l2.ModisL2HDFFileHandler
start_time (satpy.readers.slstr_l1b.NCSLSTRAngles
property), 284 property), 353
start_time (satpy.readers.msi_safe.SAFEMSIL1C start_time (satpy.readers.slstr_l1b.NCSLSTRFlag
property), 285 property), 354
start_time (satpy.readers.msi_safe.SAFEMSIXMLMetadata start_time (satpy.readers.slstr_l1b.NCSLSTRGeo
property), 287 property), 354
start_time (satpy.readers.msu_gsa_l1b.MSUGSAFileHandlerstart_time (satpy.readers.smos_l2_wind.SMOSL2WINDFileHandler
property), 288 property), 355
start_time (satpy.readers.mwr_l1b.AWS_EPS_Sterna_BaseFileHandler
start_time (satpy.readers.tropomi_l2.TROPOMIL2FileHandler
property), 296 property), 356
start_time (satpy.readers.mws_l1b.MWSL1BFile prop- start_time (satpy.readers.vaisala_gld360.VaisalaGLD360TextFileHandle
erty), 299 property), 362
start_time (satpy.readers.nucaps.NUCAPSFileHandler start_time (satpy.readers.vii_base_nc.ViiNCBaseFileHandler
property), 302 property), 363
start_time (satpy.readers.nwcsaf_msg2013_hdf5.Hdf5NWCSAF
start_time (satpy.readers.viirs_atms_sdr_base.JPSS_SDR_FileHandler
property), 304 property), 366
start_time (satpy.readers.nwcsaf_nc.NcNWCSAF start_time (satpy.readers.viirs_compact.VIIRSCompactFileHandler
property), 305 property), 367
start_time (satpy.readers.oceancolorcci_l3_nc.OCCCIFileHandler
start_time (satpy.readers.viirs_edr.VIIRSJRRFileHandler
property), 306 property), 369
start_time (satpy.readers.olci_nc.NCOLCIBase prop- start_time (satpy.readers.viirs_edr_active_fires.VIIRSActiveFiresFileHan
erty), 307 property), 371
start_time (satpy.readers.oli_tirs_l1_tif.OLITIRSCHReader
start_time (satpy.readers.viirs_edr_active_fires.VIIRSActiveFiresTextFile
property), 309 property), 371
start_time (satpy.readers.oli_tirs_l1_tif.OLITIRSMDReader
start_time (satpy.readers.viirs_edr_flood.VIIRSEDRFlood
property), 310 property), 372
start_time (satpy.readers.osisaf_l3_nc.OSISAFL3NCFileHandler
start_time (satpy.readers.viirs_l1b.VIIRSL1BFileHandler

844 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

property), 373 satpy.tests.reader_tests.test_hrit_base), 488


start_time (satpy.readers.viirs_l2.VIIRSL2FileHandler stub_hrit_file() (in module
property), 374 satpy.tests.reader_tests.test_hrit_base), 488
start_time (satpy.readers.viirs_vgac_l1c_nc.VGACFileHandler
sub_arrays() (in module satpy.composites), 136
property), 376 sub_satellite_latitude_end
start_time (satpy.readers.virr_l1b.VIRR_L1B prop- (satpy.readers.mwr_l1b.AWS_EPS_Sterna_MWR_L1BFile
erty), 377 property), 297
start_time (satpy.readers.yaml_reader.AbstractYAMLReader sub_satellite_latitude_end
property), 379 (satpy.readers.mws_l1b.MWSL1BFile prop-
start_time (satpy.readers.yaml_reader.FileYAMLReader erty), 299
property), 381 sub_satellite_latitude_start
start_time (satpy.scene.Scene property), 715 (satpy.readers.mwr_l1b.AWS_EPS_Sterna_MWR_L1BFile
start_time (satpy.tests.test_yaml_reader.DummyReader property), 297
property), 637 sub_satellite_latitude_start
start_time (satpy.tests.test_yaml_reader.FakeFH prop- (satpy.readers.mws_l1b.MWSL1BFile prop-
erty), 637 erty), 299
start_time (satpy.tests.utils.FakeFileHandler prop- sub_satellite_longitude_end
erty), 643 (satpy.readers.mwr_l1b.AWS_EPS_Sterna_MWR_L1BFile
start_time() (in module property), 297
satpy.tests.reader_tests.test_cmsaf_claas), sub_satellite_longitude_end
452 (satpy.readers.mws_l1b.MWSL1BFile prop-
start_time() (satpy.readers.msi_safe.SAFEMSITileMDXML erty), 299
method), 287 sub_satellite_longitude_start
start_time_attr_name (satpy.readers.mwr_l1b.AWS_EPS_Sterna_MWR_L1BFile
(satpy.readers.seadas_l2.SEADASL2HDFFileHandler property), 297
attribute), 326 sub_satellite_longitude_start
start_time_attr_name (satpy.readers.mws_l1b.MWSL1BFile prop-
(satpy.readers.seadas_l2.SEADASL2NetCDFFileHandler erty), 299
attribute), 326 SumCompositor (class in satpy.composites), 135
start_time_of_scan (satpy.readers.gms.gms5_vissr_navigation.ScanningParameters
sun_angles (satpy.readers.olci_nc.NCOLCIAngles
attribute), 190 property), 307
start_time_str() (in module sun_earth_dist (satpy.readers.msi_safe.SAFEMSIMDXML
satpy.tests.reader_tests.test_cmsaf_claas), property), 286
452 sunz_ds1() (in module satpy.tests.test_modifiers), 617
static (satpy.readers.gms.gms5_vissr_navigation.ImageNavigationParameters
sunz_ds1_stacked() (in module
attribute), 184 satpy.tests.test_modifiers), 617
static_nav_params() (in module sunz_ds2() (in module satpy.tests.test_modifiers), 617
satpy.tests.reader_tests.gms.test_gms5_vissr_navigation),
sunz_sza() (in module satpy.tests.test_modifiers), 617
416 sunzen_corr_cos() (in module satpy.modifiers.angles),
StaticImageCompositor (class in satpy.composites), 161
134 sunzen_reduction() (in module
StaticNavigationParameters (class in satpy.modifiers.angles), 161
satpy.readers.gms.gms5_vissr_navigation), SunZenithCorrector (class in
190 satpy.modifiers.geometry), 163
std_filetype_infos() (in module SunZenithCorrectorBase (class in
satpy.tests.reader_tests.test_li_l2_nc), 499 satpy.modifiers.geometry), 164
stepping_angle (satpy.readers.gms.gms5_vissr_navigation.ScanningAngles
SunZenithReducer (class in satpy.modifiers.geometry),
attribute), 189 164
stretch() (in module satpy.enhancements), 152 supports_sensor() (satpy.readers.yaml_reader.AbstractYAMLReader
stub_bzipped_hrit_file() (in module method), 379
satpy.tests.reader_tests.test_hrit_base), 488 surface_reflectance_file() (in module
stub_compressed_hrit_file() (in module satpy.tests.reader_tests.test_viirs_edr), 557
satpy.tests.reader_tests.test_hrit_base), 488 surface_reflectance_file2() (in module
stub_gzipped_hrit_file() (in module satpy.tests.reader_tests.test_viirs_edr), 557

Index 845
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

surface_reflectance_with_veg_indices_file() tearDown() (satpy.tests.reader_tests.test_gpm_imerg.TestHdf5IMERG


(in module satpy.tests.reader_tests.test_viirs_edr), method), 482
557 tearDown() (satpy.tests.reader_tests.test_hdf4_utils.TestHDF4FileHandler
surface_reflectance_with_veg_indices_file2() method), 484
(in module satpy.tests.reader_tests.test_viirs_edr),tearDown() (satpy.tests.reader_tests.test_hdf5_utils.TestHDF5FileHandler
558 method), 485
swath_data() (in module tearDown() (satpy.tests.reader_tests.test_hsaf_grib.TestHSAFFileHandler
satpy.tests.reader_tests.test_satpy_cf_nc), method), 489
531 tearDown() (satpy.tests.reader_tests.test_hy2_scat_l2b_h5.TestHY2SCATL
sza() (satpy.tests.compositor_tests.test_viirs.TestVIIRSComposites method), 490
method), 398 tearDown() (satpy.tests.reader_tests.test_iasi_l2.TestIasiL2
sza_data() (in module method), 491
satpy.tests.reader_tests.test_oli_tirs_l1_tif ), tearDown() (satpy.tests.reader_tests.test_iasi_l2_so2_bufr.TestIasiL2So2B
524 method), 492
sza_file() (in module tearDown() (satpy.tests.reader_tests.test_mimic_TPW2_lowres.TestMimicT
satpy.tests.reader_tests.test_oli_tirs_l1_tif ), method), 505
524 tearDown() (satpy.tests.reader_tests.test_mimic_TPW2_nc.TestMimicTPW
method), 506
T tearDown() (satpy.tests.reader_tests.test_netcdf_utils.TestNetCDF4FileHan
method), 513
tearDown() (satpy.tests.enhancement_tests.test_enhancements.TestEnhancementStretch
method), 400 tearDown() (satpy.tests.reader_tests.test_nucaps.TestNUCAPSReader
method), 515
tearDown() (satpy.tests.multiscene_tests.test_save_animation.TestMultiSceneSave
method), 410 tearDown() (satpy.tests.reader_tests.test_nucaps.TestNUCAPSScienceEDR
method), 515
tearDown() (satpy.tests.reader_tests.test_aapp_l1b.TestNegativeCalibrationSlope
method), 428 tearDown() (satpy.tests.reader_tests.test_nwcsaf_msg.TestH5NWCSAF
method), 516
tearDown() (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGriddedLUTs
method), 438 tearDown() (satpy.tests.reader_tests.test_omps_edr.TestOMPSEDRReader
tearDown() (satpy.tests.reader_tests.test_amsr2_l1b.TestAMSR2L1BReadermethod), 525
method), 441 tearDown() (satpy.tests.reader_tests.test_seviri_l1b_icare.TestSEVIRIICAR
tearDown() (satpy.tests.reader_tests.test_amsr2_l2.TestAMSR2L2Reader method), 541
method), 441 tearDown() (satpy.tests.reader_tests.test_smos_l2_wind.TestSMOSL2WIND
method), 549
tearDown() (satpy.tests.reader_tests.test_ascat_l2_soilmoisture_bufr.TesitAscatL2SoilmoistureBufr
method), 443 tearDown() (satpy.tests.reader_tests.test_tropomi_l2.TestTROPOMIL2Rea
method), 550
tearDown() (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTWithFile
method), 447 tearDown() (satpy.tests.reader_tests.test_vii_base_nc.TestViiNCBaseFileH
method), 553
tearDown() (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTWithPatchedCalibratorAndFile
method), 448 tearDown() (satpy.tests.reader_tests.test_vii_l1b_nc.TestViiL1bNCFileHan
method), 553
tearDown() (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.PygacPatcher
method), 448 tearDown() (satpy.tests.reader_tests.test_vii_l2_nc.TestViiL2NCFileHandl
method), 554
tearDown() (satpy.tests.reader_tests.test_clavrx.test_clavrx_geohdf.TestCLAVRXReaderGeo
method), 423 tearDown() (satpy.tests.reader_tests.test_vii_wv_nc.TestViiL2NCFileHand
method), 555
tearDown() (satpy.tests.reader_tests.test_clavrx.test_clavrx_polarhdf.TestCLAVRXReaderPolar
method), 425 tearDown() (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestImgVII
method), 559
tearDown() (satpy.tests.reader_tests.test_eps_l1b.TestWrongScanlinesEPSL1B
method), 456 tearDown() (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestImgVII
method), 560
tearDown() (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCFileHandler
method), 466 tearDown() (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestModVI
method),
tearDown() (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCReadingByteData 560
method), 467 tearDown() (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestModVI
method), 561
tearDown() (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCSegmentFileHandler
method), 467 tearDown() (satpy.tests.reader_tests.test_viirs_edr_flood.TestVIIRSEDRFl
tearDown() (satpy.tests.reader_tests.test_geocat.TestGEOCATReader method), 561
method), 471 tearDown() (satpy.tests.reader_tests.test_viirs_sdr.TestAggrVIIRSSDRRead
method), 566

846 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

tearDown() (satpy.tests.reader_tests.test_viirs_sdr.TestShortAggrVIIRSSDRReader
442
method), 566 test_1088() (in module satpy.tests.test_regressions),
tearDown() (satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
625
method), 567 test_1258() (in module satpy.tests.test_regressions),
tearDown() (satpy.tests.reader_tests.test_virr_l1b.TestVIRRL1BReader 625
method), 569 test_500m_resolution()
tearDown() (satpy.tests.test_demo.TestDemo method), (satpy.tests.reader_tests.test_mersi_l1b.TestMERSIRML1B
610 method), 503
tearDown() (satpy.tests.test_demo.TestSEVIRIHRITDemoDownload test__encode_nc_attrs()
method), 610 (satpy.tests.cf_tests.test_attrs.TestCFAttributeEncoding
tearDown() (satpy.tests.test_readers.TestReaderLoader method), 393
method), 623 test__is_lon_or_lat_dataarray()
tearDown() (satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter (satpy.tests.cf_tests.test_coords.TestCFcoords
method), 584 method), 393
tearDown() (satpy.tests.writer_tests.test_simple_image.TestPillowWriter
test__slice() (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGACLA
method), 590 method), 449
teardown_method() (satpy.tests.reader_tests.test_acspo.TestACSPOReader
test_actual_satellite_position()
method), 432 (satpy.tests.reader_tests.test_ahi_hsd.TestAHIHSDFileHandler
teardown_method() (satpy.tests.reader_tests.test_agri_l1.Test_HDF_AGRI_L1_cal
method), 435
method), 433 test_adaptive_dnb()
teardown_method() (satpy.tests.reader_tests.test_atms_sdr_hdf5.TestATMS_SDR_Reader
(satpy.tests.compositor_tests.test_viirs.TestVIIRSComposites
method), 445 method), 398
teardown_method() (satpy.tests.reader_tests.test_fy4_base.Test_FY4Base
test_add_bands_l_rgb()
method), 468 (satpy.tests.test_composites.TestAddBands
teardown_method() (satpy.tests.reader_tests.test_ghi_l1.Test_HDF_GHI_L1_cal
method), 591
method), 473 test_add_bands_l_rgba()
teardown_method() (satpy.tests.reader_tests.test_grib.TestGRIBReader (satpy.tests.test_composites.TestAddBands
method), 483 method), 591
teardown_method() (satpy.tests.reader_tests.test_mersi_l1b.MERSIL1BTester
test_add_bands_la_rgb()
method), 501 (satpy.tests.test_composites.TestAddBands
teardown_method() (satpy.tests.reader_tests.test_msu_gsa_l1b.TestMSUGSABReader
method), 591
method), 508 test_add_bands_p_l()
teardown_method() (satpy.tests.reader_tests.test_viirs_compact.TestCompact
(satpy.tests.test_composites.TestAddBands
method), 555 method), 591
teardown_method() (satpy.tests.reader_tests.test_viirs_l1b.TestVIIRSL1BReaderDay
test_add_bands_rgb_rbga()
method), 563 (satpy.tests.test_composites.TestAddBands
teardown_method() (satpy.tests.reader_tests.test_viirs_l2.TestVIIRSL2FileHandler
method), 591
method), 564 test_add_coordinates_attrs_coords()
teardown_method() (satpy.tests.test_readers.TestFindFilesAndReaders (satpy.tests.cf_tests.test_coords.TestCFcoords
method), 620 method), 393
teardown_method() (satpy.tests.test_writers.TestBaseWriter test_add_decorate_basic_l()
method), 632 (satpy.tests.test_writers.TestOverlays method),
teardown_method() (satpy.tests.test_writers.TestComputeWriterResults 634
method), 632 test_add_decorate_basic_rgb()
teardown_method() (satpy.tests.test_writers.TestOverlays (satpy.tests.test_writers.TestOverlays method),
method), 634 634
telemetry (satpy.readers.hrpt.HRPTFile property), 260 test_add_grid_mapping_cf_repr()
TempFile (class in satpy.tests.writer_tests.test_cf ), 580 (satpy.tests.cf_tests.test_area.TestCFArea
temporal_rgb() (in module method), 392
satpy.multiscene._blend_funcs), 171 test_add_grid_mapping_cf_repr_no_ab()
TERMINATOR_LIMIT (satpy.modifiers.spectral.NIRReflectance (satpy.tests.cf_tests.test_area.TestCFArea
attribute), 170 method), 392
TesitAscatL2SoilmoistureBufr (class in test_add_grid_mapping_no_cf_repr()
satpy.tests.reader_tests.test_ascat_l2_soilmoisture_bufr), (satpy.tests.cf_tests.test_area.TestCFArea

Index 847
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 392 method), 609


test_add_grid_mapping_oblique_mercator() test_ahi_l2_area_def() (in module
(satpy.tests.cf_tests.test_area.TestCFArea satpy.tests.reader_tests.test_ahi_l2_nc), 438
method), 392 test_ahi_partial_download()
test_add_grid_mapping_transverse_mercator() (satpy.tests.test_demo.TestAHIDemoDownload
(satpy.tests.cf_tests.test_area.TestCFArea method), 609
method), 392 test_all_basic() (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCAM
test_add_lonlat_coords() method), 466
(satpy.tests.cf_tests.test_area.TestCFArea test_all_basic() (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCFi
method), 393 method), 466
test_add_optional_nodes() test_all_basic() (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCSe
(satpy.tests.test_node.TestCompositorNode method), 467
method), 618 test_all_basic() (satpy.tests.reader_tests.test_hdf4_utils.TestHDF4FileH
test_add_optional_nodes_twice() method), 484
(satpy.tests.test_node.TestCompositorNode test_all_basic() (satpy.tests.reader_tests.test_hdf5_utils.TestHDF5FileH
method), 618 method), 485
test_add_overlay_basic_l() test_all_basic() (satpy.tests.reader_tests.test_netcdf_utils.TestNetCDF4
(satpy.tests.test_writers.TestOverlays method), method), 513
634 test_all_data_ids()
test_add_overlay_basic_rgb() (satpy.tests.test_yaml_reader.TestFileFileYAMLReader
(satpy.tests.test_writers.TestOverlays method), method), 637
634 test_all_dataset_names()
test_add_required_nodes() (satpy.tests.test_yaml_reader.TestFileFileYAMLReader
(satpy.tests.test_node.TestCompositorNode method), 637
method), 618 test_all_dataset_names_no_readers()
test_add_required_nodes_twice() (satpy.tests.scene_tests.test_load.TestSceneAllAvailableDatasets
(satpy.tests.test_node.TestCompositorNode method), 576
method), 618 test_all_datasets_multiple_reader()
test_add_time_bounds_dimension() (satpy.tests.scene_tests.test_load.TestSceneAllAvailableDatasets
(satpy.tests.cf_tests.test_coords.TestCFtime method), 576
method), 394 test_all_datasets_no_readers()
test_adjust_lon() (satpy.tests.reader_tests.test_smos_l2_wind.TestSMOSL2WINDReader
(satpy.tests.scene_tests.test_load.TestSceneAllAvailableDatasets
method), 549 method), 576
test_aggregate() (satpy.tests.scene_tests.test_resampling.TestSceneAggregation
test_all_datasets_one_reader()
method), 577 (satpy.tests.scene_tests.test_load.TestSceneAllAvailableDatasets
test_aggregate_with_boundary() method), 576
(satpy.tests.scene_tests.test_resampling.TestSceneAggregation
test_all_filtered()
method), 577 (satpy.tests.test_readers.TestReaderLoader
test_agri_all_bands_have_right_units() method), 623
(satpy.tests.reader_tests.test_agri_l1.Test_HDF_AGRI_L1_cal
test_all_filtered_multiple()
method), 433 (satpy.tests.test_readers.TestReaderLoader
test_agri_counts_calibration() method), 623
(satpy.tests.reader_tests.test_agri_l1.Test_HDF_AGRI_L1_cal
test_all_resolutions()
method), 433 (satpy.tests.reader_tests.test_mersi_l1b.MERSI12llL1BTester
test_agri_for_one_resolution() method), 500
(satpy.tests.reader_tests.test_agri_l1.Test_HDF_AGRI_L1_cal
test_almost_all_filtered()
method), 433 (satpy.tests.test_readers.TestReaderLoader
test_agri_geo() (satpy.tests.reader_tests.test_agri_l1.Test_HDF_AGRI_L1_cal
method), 623
method), 433 test_almost_equal_geo_coordinates()
test_agri_orbital_parameters_are_correct() (satpy.tests.test_composites.TestMatchDataArrays
(satpy.tests.reader_tests.test_agri_l1.Test_HDF_AGRI_L1_calmethod), 598
method), 433 test_altitude() (in module
test_ahi_full_download() satpy.tests.reader_tests.test_gld360_ualf2),
(satpy.tests.test_demo.TestAHIDemoDownload 474

848 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_altitude_uncertainty() (in module test_area_def() (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestA


satpy.tests.reader_tests.test_gld360_ualf2), method), 437
474 test_area_def() (satpy.tests.reader_tests.test_oli_tirs_l1_tif.TestOLITIRS
test_amv_with_area_def() method), 523
(satpy.tests.reader_tests.test_eum_l2_bufr.TestL2BufrReader
test_area_def_coordinates()
method), 459 (satpy.tests.test_resample.TestCoordinateHelpers
test_ancillary_variables() method), 627
(satpy.tests.writer_tests.test_cf.TestCFWriter test_area_def_crs()
method), 580 (satpy.tests.reader_tests.test_grib.TestGRIBReader
test_angle2xyz() (satpy.tests.test_utils.TestGeoUtils method), 483
method), 629 test_area_def_hires()
test_angle_cache() (satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.TestFiduceoMviriFileHandlers
(satpy.tests.reader_tests.test_seviri_l1b_icare.TestSEVIRIICARER
method), 509 method), 541
test_angle_indicator() (in module test_area_def_lores()
satpy.tests.reader_tests.test_gld360_ualf2), (satpy.tests.reader_tests.test_seviri_l1b_icare.TestSEVIRIICARER
474 method), 541
test_angles() (satpy.tests.reader_tests.test_aapp_l1b.TestAAPPL1BAllChannelsPresent
test_area_definition()
method), 427 (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCFileHandler
test_angles() (satpy.tests.reader_tests.test_aapp_mhs_amsub_l1c.TestMHS_AMSUB_AAPPL1CReadData
method), 466
method), 429 test_area_definition_computation()
test_angles() (satpy.tests.reader_tests.test_eps_l1b.TestEPSL1B (satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader
method), 455 method), 463
test_angles() (satpy.tests.reader_tests.test_msi_safe.TestTileXML
test_area_definitions() (in module
method), 508 satpy.tests.reader_tests.test_seviri_l1b_native),
test_angles() (satpy.tests.reader_tests.test_oli_tirs_l1_tif.TestOLITIRSL1
544
method), 523 test_area_epsg4326() (in module
test_antenna_temperature() satpy.tests.writer_tests.test_ninjogeotiff ),
(satpy.tests.reader_tests.test_atms_l1b_nc.TestAtsmsL1bNCFileHandler
585
method), 443 test_area_merc() (in module
test_apply_accumulate_index_offset() satpy.tests.writer_tests.test_ninjogeotiff ),
(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2 586
method), 497 test_area_northpole() (in module
test_apply_enhancement() satpy.tests.writer_tests.test_ninjogeotiff ),
(satpy.tests.enhancement_tests.test_enhancements.TestEnhancementStretch
586
method), 400 test_area_small_eqc_wgs84() (in module
test_apply_rad_correction() satpy.tests.writer_tests.test_ninjogeotiff ),
(satpy.tests.reader_tests.test_utils.TestHelpers 586
method), 551 test_area_tiny_antarctic() (in module
test_apply_sunearth_corr() satpy.tests.writer_tests.test_ninjogeotiff ),
(satpy.tests.reader_tests.test_utils.TestSunEarthDistanceCorrection
586
method), 552 test_area_tiny_eqc_sphere() (in module
test_area() (in module satpy.tests.writer_tests.test_ninjogeotiff ),
satpy.tests.multiscene_tests.test_blend), 409 586
test_area() (satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionModifier
test_area_tiny_stereographic_wgs84() (in mod-
method), 406 ule satpy.tests.writer_tests.test_ninjogeotiff ),
test_area2cf_geos_area_nolonlats() 586
(satpy.tests.cf_tests.test_area.TestCFArea test_area_weird() (in module
method), 393 satpy.tests.writer_tests.test_ninjogeotiff ),
test_area2cf_swath() 586
(satpy.tests.cf_tests.test_area.TestCFArea test_areas() (satpy.tests.reader_tests.test_ahi_hsd.TestNominalTimeCalc
method), 393 method), 436
test_area_() (in module test_areas_pyproj()
satpy.tests.reader_tests.test_gld360_ualf2), (satpy.tests.test_config.TestBuiltinAreas
474 method), 602

Index 849
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_areas_rasterio() test_available_datasets()
(satpy.tests.test_config.TestBuiltinAreas (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
method), 602 method), 497
test_array_name_uniqueness() test_available_datasets_m_bands()
(satpy.tests.reader_tests.test_hdf5_utils.TestHDF5FileHandler(satpy.tests.reader_tests.test_viirs_l1b.TestVIIRSL1BReaderDay
method), 485 method), 563
test_attributes_with_area_definition() test_available_datasets_miss_3a()
(satpy.tests.reader_tests.test_eum_l2_bufr.TestL2BufrReader(satpy.tests.reader_tests.test_aapp_l1b.TestAAPPL1BChannel3AM
static method), 459 method), 428
test_attributes_with_swath_definition() test_available_datasets_one_reader()
(satpy.tests.reader_tests.test_eum_l2_bufr.TestL2BufrReader(satpy.tests.scene_tests.test_load.TestSceneAllAvailableDatasets
static method), 459 method), 576
test_attrs() (satpy.tests.reader_tests.test_atms_l1b_nc.TestAtsmsL1bNCFileHandler
test_available_datasets_with_alias()
method), 443 (satpy.tests.reader_tests.test_clavrx.test_clavrx_polarhdf.TestCLA
test_availability_veg_idx() method), 425
(satpy.tests.reader_tests.test_viirs_edr.TestVIIRSJRRReader
test_available_reader()
method), 556 (satpy.tests.reader_tests.modis_tests.test_modis_l1b.TestModisL1b
test_available_composite_ids_missing_available() method), 421
(satpy.tests.scene_tests.test_load.TestSceneAllAvailableDatasets
test_available_reader()
method), 576 (satpy.tests.reader_tests.modis_tests.test_modis_l2.TestModisL2
test_available_composites_known_versus_all() method), 421
(satpy.tests.scene_tests.test_load.TestSceneAllAvailableDatasets
test_available_reader()
method), 576 (satpy.tests.reader_tests.modis_tests.test_modis_l3.TestModisL3
test_available_comps_no_deps() method), 422
(satpy.tests.scene_tests.test_load.TestSceneAllAvailableDatasets
test_available_reader()
method), 576 (satpy.tests.reader_tests.modis_tests.test_modis_l3_mcd12q1.Test
test_available_dataset_ids() method), 422
(satpy.tests.test_yaml_reader.TestFileFileYAMLReader
test_available_reader()
method), 637 (satpy.tests.reader_tests.test_oci_l2_bgc.TestSEADAS
test_available_dataset_names() method), 521
(satpy.tests.test_yaml_reader.TestFileFileYAMLReader
test_available_reader()
method), 638 (satpy.tests.reader_tests.test_seadas_l2.TestSEADAS
test_available_dataset_names_no_readers() method), 532
(satpy.tests.scene_tests.test_load.TestSceneAllAvailableDatasets
test_available_readers()
method), 576 (satpy.tests.test_readers.TestYAMLFiles
test_available_dataset_no_readers() method), 623
(satpy.tests.scene_tests.test_load.TestSceneAllAvailableDatasets
test_available_readers_base_loader()
method), 576 (satpy.tests.test_readers.TestYAMLFiles
test_available_datasets() (in module method), 624
satpy.tests.reader_tests.test_mirs), 507 test_available_when_sensor_none_in_preloaded_dataarrays()
test_available_datasets() (in module (satpy.tests.scene_tests.test_load.TestSceneAllAvailableDatasets
satpy.tests.reader_tests.test_viirs_edr), 558 method), 576
test_available_datasets() test_available_writers()
(satpy.tests.reader_tests.test_amsr2_l2_gaasp.TestGAASPReader(satpy.tests.test_writers.TestYAMLFiles
method), 442 method), 635
test_available_datasets() test_average_datetimes()
(satpy.tests.reader_tests.test_clavrx.test_clavrx_nc.TestCLAVRXReaderGeo
(satpy.tests.test_dataset.TestCombineMetadata
method), 424 method), 606
test_available_datasets() test_azimuth_noise_array()
(satpy.tests.reader_tests.test_clavrx.test_clavrx_polarhdf.TestCLAVRXReaderPolar
(satpy.tests.reader_tests.test_sar_c_safe.TestSAFEXMLNoise
method), 425 method), 528
test_available_datasets() test_azimuth_noise_array_with_holes()
(satpy.tests.reader_tests.test_glm_l2.TestGLML2Reader (satpy.tests.reader_tests.test_sar_c_safe.TestSAFEXMLNoise
method), 476 method), 528

850 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_bad_area() (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGriddedArea
test_badplatform() (satpy.tests.reader_tests.test_fy4_base.Test_FY4Bas
method), 437 method), 468
test_bad_area_name() (in module test_badsensor() (satpy.tests.reader_tests.test_fy4_base.Test_FY4Base
satpy.tests.reader_tests.test_ahi_l2_nc), 438 method), 468
test_bad_areas_diff() test_band_size_is_used()
(satpy.tests.test_composites.TestDifferenceCompositor (satpy.tests.test_composites.TestInferMode
method), 594 method), 596
test_bad_bandname() test_bands_coords_is_used()
(satpy.tests.reader_tests.test_seviri_l1b_icare.TestSEVIRIICAREReader
(satpy.tests.test_composites.TestInferMode
method), 542 method), 596
test_bad_calibration() test_basic_attributes()
(satpy.tests.reader_tests.test_ahi_hsd.TestAHIHSDFileHandler(satpy.tests.reader_tests.test_ami_l1b.TestAMIL1bNetCDF
method), 435 method), 439
test_bad_calibration() test_basic_attributes()
(satpy.tests.reader_tests.test_ami_l1b.TestAMIL1bNetCDF (satpy.tests.reader_tests.test_glm_l2.TestGLML2FileHandler
method), 439 method), 476
test_bad_calibration() test_basic_attributes()
(satpy.tests.reader_tests.test_epic_l1b_h5.TestEPICL1bReader(satpy.tests.reader_tests.test_scmi.TestSCMIFileHandler
method), 454 method), 532
test_bad_calibration() test_basic_check_satpy()
(satpy.tests.test_dataset.TestDataID method), (satpy.tests.test_utils.TestCheckSatpy method),
607 629
test_bad_call() (satpy.tests.test_composites.TestCloudCompositorCommonMask
test_basic_default_not_provided()
method), 592 (satpy.tests.test_modifiers.TestSunZenithCorrector
test_bad_colors() (satpy.tests.test_composites.TestRatioSharpenedCompositors
method), 616
method), 600 test_basic_default_provided()
test_bad_fname() (satpy.tests.reader_tests.test_oceancolorcci_l3_nc.TestOCCCIReader
(satpy.tests.test_modifiers.TestSunZenithCorrector
method), 521 method), 616
test_bad_indata() (satpy.tests.test_composites.TestCloudCompositorWithoutCloudfree
test_basic_diff() (satpy.tests.test_composites.TestDifferenceComposito
method), 592 method), 594
test_bad_lengths() (satpy.tests.compositor_tests.test_spectral.TestSpectralComposites
test_basic_init() (satpy.tests.test_dataset.TestDataID
method), 398 method), 607
test_bad_quality_warning() test_basic_init_no_args()
(satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.TestFiduceoMviriFileHandlers
(satpy.tests.test_writers.TestEnhancer method),
method), 509 633
test_bad_reader() (satpy.tests.test_readers.TestGroupFiles test_basic_init_no_enh()
method), 621 (satpy.tests.test_writers.TestEnhancer method),
test_bad_reader_name_with_filenames() 633
(satpy.tests.test_readers.TestReaderLoader test_basic_init_provided_enh()
method), 623 (satpy.tests.test_writers.TestEnhancer method),
test_bad_sensor() (satpy.tests.test_readers.TestFindFilesAndReaders 633
method), 620 test_basic_lettered_tiles()
test_bad_sensor_yaml_configs() (in module (satpy.tests.writer_tests.test_awips_tiled.TestAWIPSTiledWriter
satpy.tests.test_composites), 602 method), 579
test_bad_setitem() (satpy.tests.scene_tests.test_data_access.TestDataAccessMethods
test_basic_lettered_tiles_diff_projection()
method), 571 (satpy.tests.writer_tests.test_awips_tiled.TestAWIPSTiledWriter
test_bad_str_config_path() method), 579
(satpy.tests.test_config.TestConfigObject test_basic_lims_not_provided()
method), 602 (satpy.tests.test_modifiers.TestSunZenithCorrector
test_badcalibration() method), 616
(satpy.tests.reader_tests.test_fy4_base.Test_FY4Basetest_basic_lims_provided()
method), 468 (satpy.tests.test_modifiers.TestSunZenithCorrector
test_badfiles() (satpy.tests.reader_tests.test_oli_tirs_l1_tif.TestOLITIRSL1
method), 616
method), 523 test_basic_load() (in module

Index 851
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_mirs), 507 (satpy.tests.multiscene_tests.test_blend.TestBlendFuncs


test_basic_load() (satpy.tests.reader_tests.test_amsr2_l2_gaasp.TestGAASPReader
method), 407
method), 442 test_blend_function_stack_weighted()
test_basic_load_so2() (satpy.tests.multiscene_tests.test_blend.TestBlendFuncs
(satpy.tests.reader_tests.test_omps_edr.TestOMPSEDRReader method), 407
method), 525 test_blend_two_scenes_bad_blend_type()
test_basic_load_to3() (satpy.tests.multiscene_tests.test_blend.TestBlendFuncs
(satpy.tests.reader_tests.test_omps_edr.TestOMPSEDRReader method), 407
method), 525 test_blend_two_scenes_using_stack()
test_basic_no_high_res() (satpy.tests.multiscene_tests.test_blend.TestBlendFuncs
(satpy.tests.test_composites.TestRatioSharpenedCompositorsmethod), 407
method), 600 test_blend_two_scenes_using_stack_weighted()
test_basic_no_sharpen() (satpy.tests.multiscene_tests.test_blend.TestBlendFuncs
(satpy.tests.test_composites.TestRatioSharpenedCompositorsmethod), 407
method), 600 test_blocklen_error()
test_basic_numbered_1_tile() (satpy.tests.reader_tests.test_ahi_hsd.TestAHIHSDFileHandler
(satpy.tests.writer_tests.test_awips_tiled.TestAWIPSTiledWriter
method), 435
method), 579 test_bounding_box()
test_basic_numbered_tiles() (satpy.tests.reader_tests.test_viirs_sdr.TestAggrVIIRSSDRReader
(satpy.tests.writer_tests.test_awips_tiled.TestAWIPSTiledWriter
method), 566
method), 579 test_bounds() (satpy.tests.writer_tests.test_cf.TestCFWriter
test_basic_numbered_tiles_rgb() method), 580
(satpy.tests.writer_tests.test_awips_tiled.TestAWIPSTiledWriter
test_bounds_minimum()
method), 579 (satpy.tests.writer_tests.test_cf.TestCFWriter
test_basic_recategorization() method), 580
(satpy.tests.test_composites.TestCategoricalDataCompositor
test_bounds_missing_time_info()
method), 592 (satpy.tests.writer_tests.test_cf.TestCFWriter
test_basic_show_versions() method), 580
(satpy.tests.test_utils.TestShowVersions test_bright_channel2_has_reflectance_greater_than_100()
method), 630 (satpy.tests.reader_tests.test_aapp_l1b.TestNegativeCalibrationSlo
test_basicload() (satpy.tests.reader_tests.test_oli_tirs_l1_tif.TestOLITIRSL1
method), 428
method), 523 test_btemp_threshold()
test_beta_calibration_array() (satpy.tests.enhancement_tests.test_enhancements.TestEnhanceme
(satpy.tests.reader_tests.test_sar_c_safe.TestSAFEXMLCalibration
method), 400
method), 528 test_build_colormap_with_int_data_and_with_meanings()
test_bil_resampling() (satpy.tests.test_composites.TestColormapCompositor
(satpy.tests.test_resample.TestBilinearResampler method), 593
method), 625 test_build_colormap_with_int_data_and_without_meanings()
test_bitflags() (satpy.tests.reader_tests.test_meris_nc.TestBitFlags (satpy.tests.test_composites.TestColormapCompositor
method), 499 method), 593
test_bitflags() (satpy.tests.reader_tests.test_olci_nc.TestL1bBitFlags
test_byte_extraction()
method), 522 (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCReadingByteD
test_bitflags() (satpy.tests.reader_tests.test_olci_nc.TestL2BitFlagsmethod), 467
method), 522 test_cache_get_angles()
test_bitflags_with_custom_flag_list() (satpy.tests.modifier_tests.test_angles.TestAngleGeneration
(satpy.tests.reader_tests.test_olci_nc.TestL2BitFlags method), 402
method), 522 test_cached_no_chunks_fails()
test_bitflags_with_dataarray_without_flags() (satpy.tests.modifier_tests.test_angles.TestAngleGeneration
(satpy.tests.reader_tests.test_olci_nc.TestL2BitFlags method), 402
method), 522 test_cached_result_numpy_fails()
test_bitflags_with_flags_from_array() (satpy.tests.modifier_tests.test_angles.TestAngleGeneration
(satpy.tests.reader_tests.test_olci_nc.TestL2BitFlags method), 402
method), 522 test_caching() (satpy.tests.reader_tests.test_netcdf_utils.TestNetCDF4Fi
test_blend_function_stack() method), 513

852 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_caching_with_array_in_args_does_not_warn_when_caching_is_not_enabled()
test_calibrated_bt_values()
(satpy.tests.modifier_tests.test_angles.TestAngleGeneration (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetCalibrat
method), 402 method), 446
test_caching_with_array_in_args_warns() test_calibrated_reflectances_values()
(satpy.tests.modifier_tests.test_angles.TestAngleGeneration (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetCalibrat
method), 403 method), 446
test_cal_rad() (satpy.tests.reader_tests.test_slstr_l1b.TestSLSTRCalibration
test_calibration_and_masking()
method), 547 (satpy.tests.reader_tests.test_msi_safe.TestSAFEMSIL1C
test_calc_single_tag_by_name() (in module method), 507
satpy.tests.writer_tests.test_ninjogeotiff ), 586 test_calibration_counts()
test_calculate_area_extent() (in module (satpy.tests.reader_tests.test_oli_tirs_l1_tif.TestOLITIRSL1
satpy.tests.reader_tests.test_fci_base), 460 method), 523
test_calib (satpy.tests.reader_tests.test_electrol_hrit.TestHRITGOMSProFileHandler
test_calibration_functions()
attribute), 453 (satpy.tests.reader_tests.test_vii_l1b_nc.TestViiL1bNCFileHandle
test_calib_exceptions() method), 553
(satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.TestFiduceoMviriFileHandlers
test_calibration_highlevel()
method), 509 (satpy.tests.reader_tests.test_oli_tirs_l1_tif.TestOLITIRSL1
test_calibrate() (satpy.tests.reader_tests.test_ahi_hrit.TestHRITJMAFileHandler
method), 523
method), 434 test_calibration_radiance()
test_calibrate() (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGriddedFileCalibration
(satpy.tests.reader_tests.test_oli_tirs_l1_tif.TestOLITIRSL1
method), 437 method), 524
test_calibrate() (satpy.tests.reader_tests.test_electrol_hrit.TestHRITGOMSFileHandler
test_call() (satpy.tests.test_composites.TestBackgroundCompositor
method), 453 method), 591
test_calibrate() (satpy.tests.reader_tests.test_goes_imager_nc_eum.GOESNCEUMFileHandlerRadianceTest
test_call() (satpy.tests.test_composites.TestGenericCompositor
method), 479 method), 595
test_calibrate() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.GOESNCFileHandlerTest
test_call() (satpy.tests.test_composites.TestPaletteCompositor
method), 480 method), 600
test_calibrate() (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGCalibration
test_call() (satpy.tests.test_composites.TestPrecipCloudsCompositor
method), 537 method), 600
test_calibrate() (satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeMSGCalibration
test_call() (satpy.tests.test_composites.TestSingleBandCompositor
method), 542 method), 601
test_calibrate() (satpy.tests.reader_tests.test_seviri_l1b_nc.TestNCSEVIRIFileHandler
test_call() (satpy.tests.test_composites.TestStaticImageCompositor
method), 545 method), 601
test_calibrate_bt() test_call() (satpy.tests.test_modifiers.TestPSPAtmosphericalCorrection
(satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
method), 616
method), 493 test_call_bad_optical_conditions()
test_calibrate_calls_calibrate_bt() (satpy.tests.test_composites.TestCloudCompositorWithoutCloudfre
(satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
method), 592
method), 493 test_call_dask() (satpy.tests.test_composites.TestCloudCompositorCom
test_calibrate_does_not_call_calibrate_bt_if_not_needed() method), 592
(satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
test_call_dask_with_invalid_value_in_status()
method), 493 (satpy.tests.test_composites.TestCloudCompositorWithoutCloudfre
test_calibrate_exceptions() method), 592
(satpy.tests.reader_tests.test_seviri_l1b_calibration.TestSeviriCalibrationHandler
test_call_named_fields()
method), 536 (satpy.tests.test_composites.TestMaskingCompositor
test_calibrate_ir() method), 598
(satpy.tests.reader_tests.test_goes_imager_nc_noaa.GOESNCBaseFileHandlerTest
test_call_named_fields_string()
method), 480 (satpy.tests.test_composites.TestMaskingCompositor
test_calibrate_raises_for_unknown_calibration_method()method), 598
(satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
test_call_numerical_transparency_data()
method), 493 (satpy.tests.test_composites.TestMaskingCompositor
test_calibrate_vis() method), 598
(satpy.tests.reader_tests.test_goes_imager_nc_noaa.GOESNCBaseFileHandlerTest
test_call_numpy() (satpy.tests.test_composites.TestCloudCompositorCom
method), 480 method), 592

Index 853
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_call_numpy_with_invalid_value_in_status()test_cmap_bad_mode()
(satpy.tests.test_composites.TestCloudCompositorWithoutCloudfree
(satpy.tests.enhancement_tests.test_enhancements.TestColormapL
method), 592 method), 399
test_call_with_mock() test_cmap_error_with_only_one_alpha_set()
(satpy.tests.test_composites.TestGenericCompositor (satpy.tests.enhancement_tests.test_enhancements.TestColormapL
method), 595 method), 399
test_cf_roundtrip() (in module test_cmap_from_config_path()
satpy.tests.test_cf_roundtrip), 591 (satpy.tests.enhancement_tests.test_enhancements.TestColormapL
test_ch_startend() (satpy.tests.reader_tests.test_oli_tirs_l1_tif.TestOLITIRSL1
method), 399
method), 524 test_cmap_from_file()
test_channel_3a_masking() (satpy.tests.enhancement_tests.test_enhancements.TestColormapL
(satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTChannel3
method), 399
method), 445 test_cmap_from_file_bad_shape()
test_channel_3b_masking() (satpy.tests.enhancement_tests.test_enhancements.TestColormapL
(satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTChannel3
method), 400
method), 446 test_cmap_from_trollimage()
test_channel_is_chunked() (in module (satpy.tests.enhancement_tests.test_enhancements.TestColormapL
satpy.tests.reader_tests.test_sgli_l1b), 546 method), 400
test_channel_is_masked() (in module test_cmap_list() (satpy.tests.enhancement_tests.test_enhancements.Test
satpy.tests.reader_tests.test_sgli_l1b), 546 method), 400
test_chebyshev() (satpy.tests.reader_tests.test_seviri_base.SeviriBaseTest
test_cmap_no_colormap()
method), 533 (satpy.tests.enhancement_tests.test_enhancements.TestColormapL
test_check_unique_projection_coords() method), 400
(satpy.tests.cf_tests.test_coords.TestCFcoords test_cmap_vrgb_as_rgba()
method), 393 (satpy.tests.enhancement_tests.test_enhancements.TestColormapL
test_chi_squared_value_location_optimization() method), 400
(in module satpy.tests.reader_tests.test_gld360_ualf2),
test_cmap_with_alpha_set()
474 (satpy.tests.enhancement_tests.test_enhancements.TestColormapL
test_chl_nn() (satpy.tests.reader_tests.test_olci_nc.TestOLCIReader method), 400
method), 523 test_coarsest_finest_area_different_shape()
test_chunk_pass_through() (satpy.tests.scene_tests.test_data_access.TestFinestCoarsestArea
(satpy.tests.scene_tests.test_data_access.TestComputePersistmethod), 572
method), 571 test_coarsest_finest_area_same_shape()
test_chunk_size_limit() (in module (satpy.tests.scene_tests.test_data_access.TestFinestCoarsestArea
satpy.tests.test_utils), 630 method), 572
test_chunk_size_limit_from_dask_config() (in test_coefs() (in module
module satpy.tests.test_utils), 630 satpy.readers.goes_imager_nc), 250
test_cimss_true_color_contrast() test_collect_cf_dataset()
(satpy.tests.enhancement_tests.test_abi.TestABIEnhancement(satpy.tests.cf_tests.test_datasets.TestCollectCfDataset
method), 399 method), 394
test_cira_stretch() test_collect_cf_dataset_with_latitude_named_lat()
(satpy.tests.enhancement_tests.test_enhancements.TestEnhancementStretch
(satpy.tests.cf_tests.test_datasets.TestCollectCfDataset
method), 400 method), 394
test_clipneg() (satpy.tests.reader_tests.test_ami_l1b.TestAMIL1bNetCDFIRCal
test_colorize() (satpy.tests.enhancement_tests.test_enhancements.TestE
method), 439 method), 400
test_cloud_indicator() (in module test_colorize_no_fill()
satpy.tests.reader_tests.test_gld360_ualf2), (satpy.tests.test_composites.TestColorizeCompositor
474 method), 593
test_cloud_pulse_count() (in module test_colorize_with_interpolation()
satpy.tests.reader_tests.test_gld360_ualf2), (satpy.tests.test_composites.TestColorizeCompositor
475 method), 593
test_clould_flags() test_colormap_write()
(satpy.tests.reader_tests.test_eps_l1b.TestEPSL1B (satpy.tests.writer_tests.test_geotiff.TestGeoTIFFWriter
method), 455 method), 582

854 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_column_names_length() (in module method), 614


satpy.tests.reader_tests.test_gld360_ualf2), test_combine_orbits()
475 (satpy.tests.test_file_handlers.TestBaseFileHandler
test_combine_area() method), 614
(satpy.tests.test_file_handlers.TestBaseFileHandlertest_combine_other_times()
method), 614 (satpy.tests.test_dataset.TestCombineMetadata
test_combine_arrays() method), 606
(satpy.tests.test_dataset.TestCombineMetadata test_combine_real_world_mda()
method), 606 (satpy.tests.test_dataset.TestCombineMetadata
test_combine_dask_arrays() method), 606
(satpy.tests.test_dataset.TestCombineMetadata test_combine_start_times()
method), 606 (satpy.tests.test_dataset.TestCombineMetadata
test_combine_datasets() method), 606
(satpy.tests.reader_tests.test_cmsaf_claas.TestCLAAS2MultiFile
test_combine_start_times_with_none()
method), 451 (satpy.tests.test_dataset.TestCombineMetadata
test_combine_dicts_close() (in module method), 607
satpy.tests.test_dataset), 608 test_combine_time_parameters()
test_combine_dicts_different() (in module (satpy.tests.test_file_handlers.TestBaseFileHandler
satpy.tests.test_dataset), 608 method), 614
test_combine_empty_metadata() test_combine_times()
(satpy.tests.test_dataset.TestCombineMetadata (satpy.tests.test_file_handlers.TestBaseFileHandler
method), 606 method), 614
test_combine_end_times() test_combine_timestamps()
(satpy.tests.test_dataset.TestCombineMetadata (satpy.tests.reader_tests.test_cmsaf_claas.TestCLAAS2MultiFile
method), 606 method), 451
test_combine_end_times_with_none() test_comp_loading_after_resampling_existing_sensor()
(satpy.tests.test_dataset.TestCombineMetadata (satpy.tests.scene_tests.test_resampling.TestSceneResampling
method), 606 method), 577
test_combine_identical_numpy_scalars() test_comp_loading_after_resampling_new_sensor()
(satpy.tests.test_dataset.TestCombineMetadata (satpy.tests.scene_tests.test_resampling.TestSceneResampling
method), 606 method), 577
test_combine_info() test_comp_loading_multisensor_composite_created_user()
(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2 (satpy.tests.scene_tests.test_resampling.TestSceneResampling
method), 497 method), 577
test_combine_lists_different_size() test_compare_no_wl()
(satpy.tests.test_dataset.TestCombineMetadata (satpy.tests.test_dataset.TestDataID method),
method), 606 607
test_combine_lists_identical() test_compositor() (satpy.tests.test_composites.TestLuminanceSharpenin
(satpy.tests.test_dataset.TestCombineMetadata method), 597
method), 606 test_compositor() (satpy.tests.test_composites.TestSandwichCompositor
test_combine_lists_same_size_diff_values() method), 601
(satpy.tests.test_dataset.TestCombineMetadata test_compositor() (satpy.tests.test_modifiers.TestNIREmissivePartFromR
method), 606 method), 615
test_combine_nans() test_compositor_loaded_sensor_order()
(satpy.tests.test_dataset.TestCombineMetadata (satpy.tests.test_dependency_tree.TestMultipleSensors
method), 606 method), 614
test_combine_numpy_arrays() test_compositor_node_init()
(satpy.tests.test_dataset.TestCombineMetadata (satpy.tests.test_node.TestCompositorNode
method), 606 method), 618
test_combine_one_metadata_object() test_comps_need_resampling_optional_mod_deps()
(satpy.tests.test_dataset.TestCombineMetadata (satpy.tests.scene_tests.test_resampling.TestSceneResampling
method), 606 method), 577
test_combine_orbital_parameters() test_compute() (satpy.tests.test_resample.TestBucketAvg
(satpy.tests.test_file_handlers.TestBaseFileHandler method), 626

Index 855
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_compute() (satpy.tests.test_resample.TestBucketCount test_convert_remote_files_to_fsspec_local_files()


method), 626 (in module satpy.tests.test_utils), 630
test_compute() (satpy.tests.test_resample.TestBucketFraction
test_convert_remote_files_to_fsspec_local_pathlib_files()
method), 627 (in module satpy.tests.test_utils), 630
test_compute() (satpy.tests.test_resample.TestBucketSum test_convert_remote_files_to_fsspec_mixed_sources()
method), 627 (in module satpy.tests.test_utils), 631
test_compute_and_use_skipna_handling() test_convert_remote_files_to_fsspec_storage_options()
(satpy.tests.test_resample.TestBucketAvg (in module satpy.tests.test_utils), 631
method), 626 test_convert_remote_files_to_fsspec_windows_paths()
test_compute_and_use_skipna_handling() (in module satpy.tests.test_utils), 631
(satpy.tests.test_resample.TestBucketSum test_convert_to_radiance()
method), 627 (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestSEVIRICa
test_compute_earth_sun_parameter() method), 536
(satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader
test_convert_units_other()
method), 463 (satpy.tests.writer_tests.test_ninjotiff.TestNinjoTIFFWriter
test_compute_earth_sun_parameter_AF() method), 589
(satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader
test_convert_units_self()
method), 463 (satpy.tests.writer_tests.test_ninjotiff.TestNinjoTIFFWriter
test_compute_pass_through() method), 589
(satpy.tests.scene_tests.test_data_access.TestComputePersist
test_convert_units_temp()
method), 571 (satpy.tests.writer_tests.test_ninjotiff.TestNinjoTIFFWriter
test_concat_datasets() method), 589
(satpy.tests.test_composites.TestGenericCompositor test_coordinates_projection()
method), 595 (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
test_config_path_multiple() method), 497
(satpy.tests.test_config.TestConfigObject test_coords_and_grid_consistency()
method), 602 (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
test_config_path_multiple_load() method), 497
(satpy.tests.test_config.TestConfigObject test_coords_generation()
method), 602 (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
TEST_CONFIGS (satpy.tests.test_writers._BaseCustomEnhancementConfigTests
method), 497
attribute), 635 test_copy_preserves_all_nodes()
TEST_CONFIGS (satpy.tests.test_writers.TestComplexSensorEnhancerConfigs
(satpy.tests.test_dependency_tree.TestDependencyTree
attribute), 632 method), 612
TEST_CONFIGS (satpy.tests.test_writers.TestEnhancerUserConfigs
test_copy_preserves_unique_empty_node()
attribute), 633 (satpy.tests.test_dependency_tree.TestDependencyTree
TEST_CONFIGS (satpy.tests.test_writers.TestReaderEnhancerConfigs method), 613
attribute), 634 test_correct_area_clearsky()
test_configs_path() (satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionCl
(satpy.tests.test_writers._BaseCustomEnhancementConfigTests method), 405
method), 636 test_correct_area_clearsky_different_resolutions()
test_constants() (satpy.tests.reader_tests.test_vii_utils.TestViiUtils(satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionCl
method), 554 method), 405
test_contains() (satpy.tests.scene_tests.test_data_access.TestDataAccessMethods
test_correct_area_cloudy_no_overlap()
method), 571 (satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionCl
test_contains() (satpy.tests.test_readers.TestDatasetDict method), 405
method), 618 test_correct_area_cloudy_partly_shifted()
test_convert_proj4_string() (satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionCl
(satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter method), 405
method), 584 test_correct_area_cloudy_same_area()
test_convert_remote_files_to_fsspec_filename_dict() (satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionCl
(in module satpy.tests.test_utils), 630 method), 405
test_convert_remote_files_to_fsspec_fsfile() test_correct_area_no_orbital_parameters()
(in module satpy.tests.test_utils), 630 (satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionCl

856 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 405 test_crop() (satpy.tests.scene_tests.test_resampling.TestSceneCrop


test_correct_area_partlycloudy() method), 577
(satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionClass
test_crop_epsg_crs()
method), 405 (satpy.tests.scene_tests.test_resampling.TestSceneCrop
test_correct_area_ssp() method), 577
(satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionClass
test_crop_rgb() (satpy.tests.scene_tests.test_resampling.TestSceneCrop
method), 405 method), 577
test_correct_dimnames() test_ct_data() (satpy.tests.test_composites.TestMaskingCompositor
(satpy.tests.reader_tests.test_oceancolorcci_l3_nc.TestOCCCIReader
method), 598
method), 521 test_ct_data_v3() (satpy.tests.test_composites.TestMaskingCompositor
test_correction_proj4_string() method), 598
(satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
test_custom_aggregate()
method), 584 (satpy.tests.scene_tests.test_resampling.TestSceneAggregation
test_corrupt_file() method), 577
(satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestCorruptFile
test_custom_config_file()
method), 411 (satpy.tests.test_config.TestConfigObject
test_count_in_repeat_cycle_rc_period_min() method), 602
(satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader
test_custom_settings()
method), 463 (satpy.tests.test_modifiers.TestSunZenithReducer
test_count_in_repeat_cycle_rc_period_min_AF() method), 617
(satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader
test_custom_type_with_dict_contents_gets_parsed_correctly(
method), 463 (satpy.tests.test_yaml_reader.TestFileYAMLReaderWithCustomID
test_counts_calib() method), 640
(satpy.tests.reader_tests.test_mersi_l1b.MERSI12llL1BTester
test_data() (satpy.tests.test_composites.TestMaskingCompositor
method), 500 method), 598
test_counts_calibration() test_data_load() (satpy.tests.reader_tests.test_scmi.TestSCMIFileHandl
(satpy.tests.reader_tests.test_epic_l1b_h5.TestEPICL1bReader method), 532
method), 454 test_data_with_area_definition()
test_create_filehandlers() (satpy.tests.reader_tests.test_eum_l2_bufr.TestL2BufrReader
(satpy.tests.test_yaml_reader.TestFileFileYAMLReaderMultiplePatterns
method), 459
method), 639 test_data_with_rect_lon()
test_create_less_modified_query() (satpy.tests.reader_tests.test_eum_l2_bufr.TestL2BufrReader
(satpy.tests.test_dataset.TestDataID method), method), 459
607 test_data_with_swath_definition()
test_create_less_modified_query() (satpy.tests.reader_tests.test_eum_l2_bufr.TestL2BufrReader
(satpy.tests.test_dataset.TestDataQuery static method), 459
method), 607 test_dataid() (in module satpy.tests.test_dataset), 608
test_create_multiple_reader_different_kwargs()test_dataid_attrs_equal_contains_not_matching_key()
(satpy.tests.scene_tests.test_init.TestScene (satpy.tests.reader_tests.test_satpy_cf_nc.TestCFReader
method), 572 method), 530
test_create_reader_instances_with_filenames() test_dataid_attrs_equal_matching_dataset()
(satpy.tests.scene_tests.test_init.TestScene (satpy.tests.reader_tests.test_satpy_cf_nc.TestCFReader
method), 572 method), 530
test_create_reader_instances_with_reader() test_dataid_attrs_equal_not_matching_dataset()
(satpy.tests.scene_tests.test_init.TestScene (satpy.tests.reader_tests.test_satpy_cf_nc.TestCFReader
method), 572 method), 530
test_create_reader_instances_with_reader_kwargs() test_dataid_copy() (in module
(satpy.tests.scene_tests.test_init.TestScene satpy.tests.test_dataset), 608
method), 573 test_dataid_elements_picklable() (in module
test_create_unknown_tags() (in module satpy.tests.test_dataset), 608
satpy.tests.writer_tests.test_ninjogeotiff ), test_dataid_equal_if_enums_different() (in
586 module satpy.tests.test_dataset), 608
test_crop() (satpy.tests.multiscene_tests.test_save_animation.TestMultiSceneSave
test_dataid_pickle() (in module
method), 410 satpy.tests.test_dataset), 608

Index 857
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_dataquery() (satpy.tests.test_dataset.TestDataQuery method), 466


method), 607 test_dataset_with_invalid_filekey()
test_dataread() (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGriddedFileHandler
(satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCFileHandler
method), 437 method), 466
test_dataset() (satpy.tests.reader_tests.test_eps_l1b.TestEPSL1B
test_dataset_with_invalid_filekey()
method), 455 (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCSegmentFileH
test_dataset() (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCAMVFileHandler
method), 468
method), 466 test_dataset_with_layer()
test_dataset() (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCFileHandler
(satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCFileHandler
method), 466 method), 466
test_dataset() (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCSegmentFileHandler
test_dataset_with_scalar()
method), 467 (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCFileHandler
test_dataset() (satpy.tests.reader_tests.test_vii_base_nc.TestViiNCBaseFileHandler
method), 466
method), 553 test_dataset_with_scalar()
test_dataset() (satpy.tests.writer_tests.test_ninjotiff.TestNinjoTIFFWriter
(satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCSegmentFileH
method), 589 method), 468
test_dataset_load() (in module test_dataset_with_total_cot()
satpy.tests.reader_tests.test_gerb_l2_hr_h5), (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCFileHandler
472 method), 466
test_dataset_loading() test_datetime64_to_pydatetime() (in module
(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2 satpy.tests.test_utils), 631
method), 497 test_day_only_area_with_alpha()
test_dataset_name_digit() (satpy.tests.test_composites.TestDayNightCompositor
(satpy.tests.cf_tests.test_encoding.TestUpdateEncoding method), 593
method), 395 test_day_only_area_with_alpha_and_missing_data()
test_dataset_not_in_provided_dataset() (satpy.tests.test_composites.TestDayNightCompositor
(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2 method), 593
method), 497 test_day_only_area_without_alpha()
test_dataset_skip_unit_conversion() (satpy.tests.test_composites.TestDayNightCompositor
(satpy.tests.writer_tests.test_ninjotiff.TestNinjoTIFFWriter method), 593
method), 589 test_day_only_sza_with_alpha()
test_dataset_slicing_catid() (satpy.tests.test_composites.TestDayNightCompositor
(satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCSegmentFileHandler
method), 594
method), 468 test_day_only_sza_without_alpha()
test_dataset_slicing_chid_catid() (satpy.tests.test_composites.TestDayNightCompositor
(satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCSegmentFileHandler
method), 594
method), 468 test_daynight_area()
test_dataset_slicing_irid() (satpy.tests.test_composites.TestDayNightCompositor
(satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCSegmentFileHandler
method), 594
method), 468 test_daynight_sza()
test_dataset_slicing_visid_catid() (satpy.tests.test_composites.TestDayNightCompositor
(satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCSegmentFileHandler
method), 594
method), 468 test_debug_on() (in module satpy.tests.test_utils), 631
test_dataset_string_accepted() test_dec10216() (satpy.tests.reader_tests.test_seviri_base.SeviriBaseTest
(satpy.tests.scene_tests.test_conversions.TestToXarrayConversion
method), 533
method), 570 test_decode_time_variable()
test_dataset_with_adef() (satpy.tests.reader_tests.test_viirs_vgac_l1c_nc.TestVGACREader
(satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCSegmentFileHandler
method), 568
method), 468 test_decoding() (satpy.tests.cf_tests.test_decoding.TestDecodeAttrs
test_dataset_with_adef_and_wrongs_dims() method), 395
(satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCSegmentFileHandler
test_decoding_doesnt_modify_original()
method), 468 (satpy.tests.cf_tests.test_decoding.TestDecodeAttrs
test_dataset_with_invalid_filekey() method), 395
(satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCAMVFileHandler
test_decoding_of_dict_type_attributes()

858 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(satpy.tests.reader_tests.test_satpy_cf_nc.TestCFReader (satpy.tests.test_demo.TestSEVIRIHRITDemoDownload
method), 530 method), 610
test_decoding_of_timestamps() test_download_channels_num_granules_dnb()
(satpy.tests.reader_tests.test_satpy_cf_nc.TestCFReader (satpy.tests.test_demo.TestVIIRSSDRDemoDownload
method), 530 method), 611
test_default_behavior() test_download_channels_num_granules_im()
(satpy.tests.test_readers.TestGroupFiles (satpy.tests.test_demo.TestVIIRSSDRDemoDownload
method), 621 method), 611
test_default_behavior_set() test_download_channels_num_granules_im_twice()
(satpy.tests.test_readers.TestGroupFiles (satpy.tests.test_demo.TestVIIRSSDRDemoDownload
method), 621 method), 611
test_default_calibrate() test_download_from_zenodo()
(satpy.tests.reader_tests.test_ahi_hsd.TestAHICalibration (satpy.tests.test_demo.TestSEVIRIHRITDemoDownload
method), 435 method), 611
test_default_calibrate() test_download_gets_files_with_contents()
(satpy.tests.reader_tests.test_ami_l1b.TestAMIL1bNetCDFIRCal(satpy.tests.test_demo.TestSEVIRIHRITDemoDownload
method), 439 method), 611
test_default_settings() test_download_luts()
(satpy.tests.test_modifiers.TestSunZenithReducer (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGridde
method), 617 method), 438
test_default_to_netcdf4_lib() test_download_script()
(satpy.tests.reader_tests.test_netcdf_utils.TestNetCDF4FsspecFileHandler
(satpy.tests.test_data_download.TestDataDownload
method), 514 method), 605
test_degree_freedom_for_location() (in module test_download_to_output_directory()
satpy.tests.reader_tests.test_gld360_ualf2), 475 (satpy.tests.test_demo.TestSEVIRIHRITDemoDownload
test_delitem() (satpy.tests.scene_tests.test_data_access.TestDataAccessMethods
method), 611
method), 571 test_drop_coords() (satpy.tests.reader_tests.test_atms_l1b_nc.TestAtsm
test_deprecated_env_vars() method), 443
(satpy.tests.test_config.TestConfigObject test_drop_coords() (satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bN
method), 603 method), 493
test_deprecated_passing_config_files() test_drop_coords() (satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL
(satpy.tests.test_yaml_reader.TestFileFileYAMLReader static method), 511
method), 638 test_drop_xycoords()
test_deprecation_warning() (satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFPPS
(satpy.tests.test_composites.TestGenericCompositor method), 518
method), 595 test_dtype_for_enhance_false()
test_destructor() (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGriddedFileHandler
(satpy.tests.writer_tests.test_geotiff.TestGeoTIFFWriter
method), 438 method), 582
test_distributed() (satpy.tests.reader_tests.test_viirs_compact.TestCompact
test_dtype_for_enhance_false_and_given_dtype()
method), 555 (satpy.tests.writer_tests.test_geotiff.TestGeoTIFFWriter
test_dn_calibration_array() method), 582
(satpy.tests.reader_tests.test_sar_c_safe.TestSAFEXMLCalibration
test_empty() (satpy.tests.test_writers.TestComputeWriterResults
method), 528 method), 632
test_do_not_download_same_file_twice() test_empty_collect_cf_datasets()
(satpy.tests.test_demo.TestSEVIRIHRITDemoDownload (satpy.tests.cf_tests.test_datasets.TestCollectCfDatasets
method), 610 method), 394
test_do_not_download_the_files_twice() test_empty_filenames_as_dict()
(satpy.tests.test_demo.TestVIIRSSDRDemoDownload (satpy.tests.test_readers.TestReaderLoader
method), 611 method), 623
test_double_load() (satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionSceneLoad
test_emumerations()
method), 406 (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCFileHandler
test_download() (satpy.tests.test_demo.TestVIIRSSDRDemoDownload method), 466
method), 611 test_encoding_attribute()
test_download_a_subset_of_files() (satpy.tests.writer_tests.test_cf.TestEncodingAttribute

Index 859
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 581 method), 619


test_encoding_kwarg() test_erf_dnb() (satpy.tests.compositor_tests.test_viirs.TestVIIRSCompos
(satpy.tests.writer_tests.test_cf.TestNetcdfEncodingKwargs method), 398
method), 582 test_error_ellipse_angle() (in module
test_end_time() (in module satpy.tests.reader_tests.test_gld360_ualf2),
satpy.tests.reader_tests.test_sgli_l1b), 546 475
test_end_time() (satpy.tests.reader_tests.test_atms_l1b_nc.TestAtsmsL1bNCFileHandler
test_error_ellipse_max_axis_length() (in mod-
method), 443 ule satpy.tests.reader_tests.test_gld360_ualf2),
test_end_time() (satpy.tests.reader_tests.test_cmsaf_claas.TestCLAAS2SingleFile
475
method), 452 test_error_ellipse_min_axis_length() (in mod-
test_end_time() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.GOESNCBaseFileHandlerTest
ule satpy.tests.reader_tests.test_gld360_ualf2),
method), 480 475
test_end_time() (satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
test_eval_polynomial()
method), 493 (satpy.tests.reader_tests.test_seviri_base.TestSatellitePosition
test_end_time() (satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL1bNCFileHandler
method), 534
method), 511 test_excs() (satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReade
test_end_time() (satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFGeo
method), 464
method), 517 test_expand_dims() (satpy.tests.test_resample.TestNativeResampler
test_end_time() (satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFPPS
method), 628
method), 518 test_expand_dims_3d()
test_end_time() (satpy.tests.reader_tests.test_oceancolorcci_l3_nc.TestOCCCIReader
(satpy.tests.test_resample.TestNativeResampler
method), 521 method), 628
test_enhance_bad_query_value() test_expand_reduce_agg_rechunk()
(satpy.tests.test_writers.TestComplexSensorEnhancerConfigs(satpy.tests.test_resample.TestNativeResampler
method), 632 method), 628
test_enhance_empty_config() test_expand_reduce_aggregate()
(satpy.tests.test_writers.TestEnhancerUserConfigs (satpy.tests.test_resample.TestNativeResampler
method), 633 method), 628
test_enhance_l() (satpy.tests.test_composites.TestEnhance2Dataset
test_expand_reduce_aggregate_identity()
method), 594 (satpy.tests.test_resample.TestNativeResampler
test_enhance_p() (satpy.tests.test_composites.TestEnhance2Datasetmethod), 628
method), 595 test_expand_reduce_aggregate_invalid()
test_enhance_p_to_rgb() (satpy.tests.test_resample.TestNativeResampler
(satpy.tests.test_composites.TestEnhance2Dataset method), 628
method), 595 test_expand_reduce_numpy()
test_enhance_p_to_rgba() (satpy.tests.test_resample.TestNativeResampler
(satpy.tests.test_composites.TestEnhance2Dataset method), 628
method), 595 test_expand_reduce_replicate()
test_enhance_with_sensor_entry() (satpy.tests.test_resample.TestNativeResampler
(satpy.tests.test_writers.TestEnhancerUserConfigs method), 628
method), 634 test_expand_without_dims()
test_enhance_with_sensor_entry2() (satpy.tests.test_resample.TestNativeResampler
(satpy.tests.test_writers.TestEnhancerUserConfigs method), 628
method), 634 test_expand_without_dims_4D()
test_enhance_with_sensor_no_entry() (satpy.tests.test_resample.TestNativeResampler
(satpy.tests.test_writers.TestEnhancerUserConfigs method), 628
method), 634 test_extra_datasets()
test_enhanced_image() (satpy.tests.multiscene_tests.test_blend.TestTemporalRGB
(satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionSceneLoad
method), 408
method), 406 test_extra_kwargs()
test_ensure_unique_nondimensional_coords() (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGEpilog
(satpy.tests.cf_tests.test_coords.TestCFcoords method), 537
method), 393 test_extra_kwargs()
test_equality() (satpy.tests.test_readers.TestFSFile (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGProlog

860 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 539 test_filehandler_returns_data_array() (in mod-


test_fails_to_add_multiple_datasets_from_the_same_scene_to_a_group() ule satpy.tests.reader_tests.test_insat3d_img_l1b_h5),
(satpy.tests.multiscene_tests.test_misc.TestMultiSceneGrouping495
method), 409 test_filehandler_returns_masked_data_in_space()
test_fake_reading() (in module (in module satpy.tests.reader_tests.test_insat3d_img_l1b_h5),
satpy.tests.test_testing), 629 495
test_fallback_to_nominal() test_filename_dsname_mismatch()
(satpy.tests.reader_tests.test_utils.TestCalibrationCoefficientPicker
(satpy.tests.reader_tests.test_msi_safe.TestSAFEMSIL1C
method), 551 method), 507
test_fci_data_reading() (in module test_filename_filtering_from_reader() (in mod-
satpy.tests.reader_tests.test_eum_l2_grib), ule satpy.tests.reader_tests.test_sar_c_safe),
459 529
test_fci_download() (in module test_filename_grouping()
satpy.tests.test_demo), 612 (satpy.tests.reader_tests.test_ami_l1b.TestAMIL1bNetCDF
test_file_covers_area() method), 439
(satpy.tests.test_yaml_reader.TestFileFileYAMLReadertest_filename_infos()
method), 638 (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
test_file_is_kept_intact() method), 497
(satpy.tests.test_file_handlers.TestBaseFileHandlertest_filename_matches_reader_name()
method), 614 (satpy.tests.test_readers.TestYAMLFiles
test_file_pattern() (in module method), 624
satpy.tests.reader_tests.test_cmsaf_claas), test_filename_matches_writer_name()
452 (satpy.tests.test_writers.TestYAMLFiles
test_file_pattern() method), 635
(satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader
test_filenames_and_reader()
method), 464 (satpy.tests.test_readers.TestReaderLoader
test_file_pattern() method), 623
(satpy.tests.reader_tests.test_grib.TestGRIBReadertest_filenames_as_dict()
method), 483 (satpy.tests.test_readers.TestReaderLoader
test_file_pattern() method), 623
(satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.TestFiduceoMviriFileHandlers
test_filenames_as_dict_bad_reader()
method), 509 (satpy.tests.test_readers.TestReaderLoader
test_file_pattern() method), 623
(satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeMSGFilenames
test_filenames_as_dict_with_reader()
method), 543 (satpy.tests.test_readers.TestReaderLoader
test_file_pattern_for_TRAIL_file() method), 623
(satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader
test_filenames_as_path()
method), 464 (satpy.tests.test_readers.TestReaderLoader
test_file_patterns_match() (in module method), 623
satpy.tests.reader_tests.test_abi_l1b), 430 test_filenames_only()
test_file_reading() (satpy.tests.test_readers.TestReaderLoader
(satpy.tests.reader_tests.test_vii_base_nc.TestViiNCBaseFileHandler
method), 623
method), 553 test_filenotfound()
test_file_type_match() (in module (satpy.tests.reader_tests.test_netcdf_utils.TestNetCDF4FileHandle
satpy.tests.test_file_handlers), 614 method), 513
test_filehandler_has_start_and_end_time() (in test_fill() (satpy.tests.test_composites.TestFillingCompositor
module satpy.tests.reader_tests.test_insat3d_img_l1b_h5), method), 595
495 test_fill() (satpy.tests.test_composites.TestMultiFiller
test_filehandler_returns_area() (in module method), 599
satpy.tests.reader_tests.test_insat3d_img_l1b_h5),test_fill_value_from_config()
495 (satpy.tests.writer_tests.test_geotiff.TestGeoTIFFWriter
test_filehandler_returns_coords() (in module method), 582
satpy.tests.reader_tests.test_insat3d_img_l1b_h5),test_filter_fh_by_time()
495 (satpy.tests.test_yaml_reader.TestFileFileYAMLReader

Index 861
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 638 module satpy.tests.test_dataset), 609


test_filter_variable() test_frequency_range_class_method_convert()
(satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
(in module satpy.tests.test_dataset), 609
method), 493 test_frequency_range_class_method_str() (in
test_find_in_ancillary() (in module module satpy.tests.test_dataset), 609
satpy.tests.test_utils), 631 test_from_files() (satpy.tests.multiscene_tests.test_misc.TestMultiScene
test_find_missing_segments() method), 409
(satpy.tests.test_yaml_reader.TestGEOSegmentYAMLReader
test_fs() (in module satpy.tests.test_demo), 612
method), 640 test_fs_property_is_read_only()
test_find_registerable() (satpy.tests.test_readers.TestFSFile method),
(satpy.tests.test_data_download.TestDataDownload 619
method), 605 test_fs_property_read()
test_fix_modifier_attr() (satpy.tests.test_readers.TestFSFile method),
(satpy.tests.reader_tests.test_satpy_cf_nc.TestCFReader 619
method), 530 test_fsfile_with_fs_open_file_abides_pathlike()
test_flatten_dict() (satpy.tests.test_readers.TestFSFile method),
(satpy.tests.writer_tests.test_utils.WriterUtilsTest 619
method), 590 test_fsfile_with_pathlike()
test_float_write() (satpy.tests.writer_tests.test_geotiff.TestGeoTIFFWriter
(satpy.tests.test_readers.TestFSFile method),
method), 582 619
test_float_write_with_unit_conversion() test_fsfile_with_regular_filename_abides_pathlike()
(satpy.tests.writer_tests.test_geotiff.TestGeoTIFFWriter (satpy.tests.test_readers.TestFSFile method),
method), 582 619
test_fn_items_for_ft() test_fsfile_with_regular_filename_and_fs_spec_abides_pathl
(satpy.tests.test_yaml_reader.TestFileFileYAMLReaderMultiplePatterns
(satpy.tests.test_readers.TestFSFile method),
method), 639 619
test_form_datetimes() test_fun() (satpy.tests.reader_tests.test_electrol_hrit.Testrecarray2dict
(satpy.tests.reader_tests.test_iasi_l2.TestIasiL2 method), 454
method), 491 test_fun() (satpy.tests.reader_tests.test_eum_base.TestMakeTimeCdsDict
test_frequency_double_side_band_channel_containment() method), 457
(in module satpy.tests.test_dataset), 608 test_fun() (satpy.tests.reader_tests.test_eum_base.TestMakeTimeCdsReca
test_frequency_double_side_band_channel_distances() method), 458
(in module satpy.tests.test_dataset), 608 test_fun() (satpy.tests.reader_tests.test_goes_imager_hrit.TestGVARFloa
test_frequency_double_side_band_channel_equality() method), 477
(in module satpy.tests.test_dataset), 608 test_fun() (satpy.tests.reader_tests.test_goes_imager_hrit.TestMakeSGST
test_frequency_double_side_band_channel_str() method), 478
(in module satpy.tests.test_dataset), 608 test_functions() (satpy.tests.reader_tests.test_vii_base_nc.TestViiNCBa
test_frequency_double_side_band_class_method_convert()method), 553
(in module satpy.tests.test_dataset), 608 test_functions() (satpy.tests.reader_tests.test_vii_l1b_nc.TestViiL1bNC
test_frequency_quadruple_side_band_channel_containment() method), 554
(in module satpy.tests.test_dataset), 609 test_functions() (satpy.tests.reader_tests.test_vii_l2_nc.TestViiL2NCFil
test_frequency_quadruple_side_band_channel_distances()method), 554
(in module satpy.tests.test_dataset), 609 test_functions() (satpy.tests.reader_tests.test_vii_wv_nc.TestViiL2NCFi
test_frequency_quadruple_side_band_channel_equality() method), 555
(in module satpy.tests.test_dataset), 609 test_fy3b_file() (satpy.tests.reader_tests.test_virr_l1b.TestVIRRL1BRea
test_frequency_quadruple_side_band_channel_str() method), 569
(in module satpy.tests.test_dataset), 609 test_fy3c_file() (satpy.tests.reader_tests.test_virr_l1b.TestVIRRL1BRea
test_frequency_quadruple_side_band_class_method_convert() method), 569
(in module satpy.tests.test_dataset), 609 test_fy4a_channels_are_loaded_with_right_resolution()
test_frequency_range_channel_containment() (satpy.tests.reader_tests.test_agri_l1.Test_HDF_AGRI_L1_cal
(in module satpy.tests.test_dataset), 609 method), 433
test_frequency_range_channel_distances() (in Test_FY4Base (class in
module satpy.tests.test_dataset), 609 satpy.tests.reader_tests.test_fy4_base), 468
test_frequency_range_channel_equality() (in test_gamma_calibration_array()

862 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(satpy.tests.reader_tests.test_sar_c_safe.TestSAFEXMLCalibration
method), 394
method), 528 test_geos_area() (satpy.tests.reader_tests.test_geos_area.TestGEOSProj
test_generate_coords_called_once() method), 472
(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2 test_geostationary_mask()
method), 497 (satpy.tests.reader_tests.test_utils.TestHelpers
test_generate_coords_inverse_proj() method), 551
(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2 test_geotiff() (satpy.tests.test_writers.TestComputeWriterResults
method), 498 method), 633
test_generate_coords_not_called_on_non_accum_dataset() test_geotiff_scene_nan() (in module
(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2 satpy.tests.reader_tests.test_generic_image),
method), 498 470
test_generate_coords_not_called_on_non_coord_dataset() test_geotiff_scene_nan_fill_value() (in module
(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2 satpy.tests.reader_tests.test_generic_image),
method), 498 470
test_generate_coords_on_accumulated_prods() test_geotiff_scene_rgb() (in module
(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2 satpy.tests.reader_tests.test_generic_image),
method), 498 470
test_generate_coords_on_lon_lat() test_geotiff_scene_rgba() (in module
(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2 satpy.tests.reader_tests.test_generic_image),
method), 498 470
test_generic_open_binary() (in module test_geoviews_basic_with_area()
satpy.tests.reader_tests.test_utils), 552 (satpy.tests.scene_tests.test_conversions.TestSceneConversions
test_generic_open_BZ2File() method), 570
(satpy.tests.reader_tests.test_utils.TestHelpers test_geoviews_basic_with_swath()
method), 551 (satpy.tests.scene_tests.test_conversions.TestSceneConversions
test_generic_open_filename() method), 570
(satpy.tests.reader_tests.test_utils.TestHelpers test_get_acq_time()
method), 551 (satpy.tests.reader_tests.test_ahi_hrit.TestHRITJMAFileHandler
test_generic_open_FSFile_MemoryFileSystem() method), 434
(satpy.tests.reader_tests.test_utils.TestHelpers test_get_all_tags() (in module
method), 551 satpy.tests.writer_tests.test_ninjogeotiff ),
test_GenericImageFileHandler() (in module 586
satpy.tests.reader_tests.test_generic_image), test_get_and_cache_npxr_data_is_cached()
469 (satpy.tests.reader_tests.test_netcdf_utils.TestNetCDF4FileHandle
test_GenericImageFileHandler_datasetid() (in method), 513
module satpy.tests.reader_tests.test_generic_image),
test_get_and_cache_npxr_is_xr()
469 (satpy.tests.reader_tests.test_netcdf_utils.TestNetCDF4FileHandle
test_GenericImageFileHandler_masking_for_integer() method), 513
(in module satpy.tests.reader_tests.test_generic_image),
test_get_angle() (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGA
469 method), 449
test_GenericImageFileHandler_no_masking_for_float() test_get_angles() (satpy.tests.modifier_tests.test_angles.TestAngleGene
(in module satpy.tests.reader_tests.test_generic_image), method), 403
469 test_get_angles_satpos_preference()
test_GenericImageFileHandler_nodata_fill_value() (satpy.tests.modifier_tests.test_angles.TestAngleGeneration
(in module satpy.tests.reader_tests.test_generic_image), method), 403
470 test_get_aod_filtered()
test_GenericImageFileHandler_nodata_nan_mask() (satpy.tests.reader_tests.test_viirs_edr.TestVIIRSJRRReader
(in module satpy.tests.reader_tests.test_generic_image), method), 556
470 test_get_area_def()
test_GenericImageFileHandler_nodata_nan_mask_default()(satpy.tests.reader_tests.test_ahi_hrit.TestHRITJMAFileHandler
(in module satpy.tests.reader_tests.test_generic_image), method), 434
470 test_get_area_def()
test_geographic_area_coords_attrs() (satpy.tests.reader_tests.test_ami_l1b.TestAMIL1bNetCDF
(satpy.tests.cf_tests.test_datasets.TestCollectCfDataset method), 439

Index 863
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_get_area_def() test_get_area_def_latlon()
(satpy.tests.reader_tests.test_cmsaf_claas.TestCLAAS2SingleFile
(satpy.tests.reader_tests.test_abi_l2_nc.Test_NC_ABI_L2_area_la
method), 452 method), 431
test_get_area_def() test_get_area_def_lcc()
(satpy.tests.reader_tests.test_electrol_hrit.TestHRITGOMSFileHandler
(satpy.tests.reader_tests.test_scmi.TestSCMIFileHandlerArea
method), 453 method), 532
test_get_area_def() test_get_area_def_merc()
(satpy.tests.reader_tests.test_goes_imager_hrit.TestHRITGOESFileHandler
(satpy.tests.reader_tests.test_scmi.TestSCMIFileHandlerArea
method), 478 method), 532
test_get_area_def() test_get_area_def_non_acc_products()
(satpy.tests.reader_tests.test_hrit_base.TestHRITFileHandler(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
method), 486 method), 498
test_get_area_def() test_get_area_def_stere()
(satpy.tests.reader_tests.test_hsaf_grib.TestHSAFFileHandler(satpy.tests.reader_tests.test_osisaf_l3.TestOSISAFL3ReaderFluxS
method), 489 method), 526
test_get_area_def() test_get_area_def_stere()
(satpy.tests.reader_tests.test_nwcsaf_msg.TestH5NWCSAF (satpy.tests.reader_tests.test_osisaf_l3.TestOSISAFL3ReaderICE
method), 516 method), 526
test_get_area_def() test_get_area_def_stere()
(satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFGeo(satpy.tests.reader_tests.test_osisaf_l3.TestOSISAFL3ReaderSST
method), 517 method), 526
test_get_area_def() test_get_area_def_stere()
(satpy.tests.reader_tests.test_oceancolorcci_l3_nc.TestOCCCIReader
(satpy.tests.reader_tests.test_scmi.TestSCMIFileHandlerArea
method), 521 method), 532
test_get_area_def() test_get_area_def_xy()
(satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGFileHandler
(satpy.tests.reader_tests.test_abi_l2_nc.Test_NC_ABI_L2_area_A
method), 538 method), 431
test_get_area_def() test_get_area_definition()
(satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGFileHandlerHRV
(satpy.tests.reader_tests.test_geos_area.TestGEOSProjectionUtil
method), 538 method), 472
test_get_area_def_acc_products() test_get_area_definition()
(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2 (satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.TestFiduceoM
method), 498 method), 509
test_get_area_def_bad() test_get_area_extent()
(satpy.tests.reader_tests.test_osisaf_l3.OSISAFL3ReaderTests(satpy.tests.reader_tests.test_hrit_base.TestHRITFileHandler
method), 525 method), 486
test_get_area_def_bad() test_get_atm_variables_abi()
(satpy.tests.reader_tests.test_scmi.TestSCMIFileHandlerArea(satpy.tests.test_crefl_utils.TestCreflUtils
method), 532 method), 604
test_get_area_def_ease() test_get_available_channels()
(satpy.tests.reader_tests.test_osisaf_l3.TestOSISAFL3ReaderICE
(satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeMSGFile
method), 526 method), 543
test_get_area_def_fixedgrid() test_get_bucket_files()
(satpy.tests.reader_tests.test_abi_l2_nc.Test_NC_ABI_L2_area_fixedgrid
(satpy.tests.test_demo.TestGCPUtils method),
method), 431 610
test_get_area_def_geos() test_get_calibration_constant()
(satpy.tests.reader_tests.test_scmi.TestSCMIFileHandlerArea(satpy.tests.reader_tests.test_sar_c_safe.TestSAFEXMLCalibratio
method), 532 method), 528
test_get_area_def_grid() test_get_calibration_dataset()
(satpy.tests.reader_tests.test_osisaf_l3.TestOSISAFL3ReaderFluxGeo
(satpy.tests.reader_tests.test_sar_c_safe.TestSAFEXMLCalibratio
method), 526 method), 528
test_get_area_def_km() test_get_calibration_dataset_has_right_chunk_size()
(satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFGeo(satpy.tests.reader_tests.test_sar_c_safe.TestSAFEXMLCalibratio
method), 517 method), 528

864 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_get_cds_time_array() test_get_dataset() (satpy.tests.reader_tests.test_abi_l1b.Test_NC_ABI_


(satpy.tests.reader_tests.test_seviri_base.SeviriBaseTest method), 429
method), 533 test_get_dataset() (satpy.tests.reader_tests.test_abi_l2_nc.Test_NC_AB
test_get_cds_time_nanoseconds() method), 431
(satpy.tests.reader_tests.test_seviri_base.SeviriBaseTest
test_get_dataset() (satpy.tests.reader_tests.test_ahi_hrit.TestHRITJMA
method), 533 method), 434
test_get_cds_time_scalar() test_get_dataset() (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.T
(satpy.tests.reader_tests.test_seviri_base.SeviriBaseTest method), 438
method), 533 test_get_dataset() (satpy.tests.reader_tests.test_ami_l1b.TestAMIL1bN
test_get_central_meridian() (in module method), 439
satpy.tests.writer_tests.test_ninjogeotiff ), test_get_dataset() (satpy.tests.reader_tests.test_atms_l1b_nc.TestAtsm
586 method), 443
test_get_channel() (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGACLACFile
test_get_dataset() (satpy.tests.reader_tests.test_cmsaf_claas.TestCLAA
method), 449 method), 452
test_get_channel_data() (in module test_get_dataset() (satpy.tests.reader_tests.test_electrol_hrit.TestHRIT
satpy.tests.reader_tests.test_aws1_mwr_l1b), method), 453
450 test_get_dataset() (satpy.tests.reader_tests.test_ghrsst_l2.TestGHRSST
test_get_channel_data() (in module method), 474
satpy.tests.reader_tests.test_aws1_mwr_l1c), test_get_dataset() (satpy.tests.reader_tests.test_glm_l2.TestGLML2File
451 method), 476
test_get_channel_index_from_name() (in module test_get_dataset() (satpy.tests.reader_tests.test_goes_imager_hrit.TestH
satpy.tests.reader_tests.test_mws_l1b_nc), 512 method), 478
test_get_channel_index_from_name_throw_exception() test_get_dataset() (satpy.tests.reader_tests.test_hsaf_grib.TestHSAFFi
(in module satpy.tests.reader_tests.test_mws_l1b_nc), method), 489
512 test_get_dataset() (satpy.tests.reader_tests.test_iasi_l2.TestIasiL2
test_get_coefs() (satpy.tests.reader_tests.test_utils.TestCalibrationCoefficientPicker
method), 491
method), 551 test_get_dataset() (satpy.tests.reader_tests.test_meris_nc.TestMERISR
test_get_color_depth() (in module method), 499
satpy.tests.writer_tests.test_ninjogeotiff ), test_get_dataset() (satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.
586 method), 509
test_get_coordinates_for_dataset_key() test_get_dataset() (satpy.tests.reader_tests.test_nwcsaf_msg.TestH5NW
(satpy.tests.test_yaml_reader.TestFileFileYAMLReader method), 516
method), 638 test_get_dataset() (satpy.tests.reader_tests.test_osisaf_l3.OSISAFL3Re
test_get_coordinates_for_dataset_key_without() method), 526
(satpy.tests.test_yaml_reader.TestFileFileYAMLReadertest_get_dataset() (satpy.tests.reader_tests.test_safe_sar_l2_ocn.TestSA
method), 638 method), 527
test_get_coordinates_for_dataset_keys() test_get_dataset() (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHR
(satpy.tests.test_yaml_reader.TestFileFileYAMLReader method), 538
method), 638 test_get_dataset() (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHR
test_get_creation_date_id() (in module method), 538
satpy.tests.writer_tests.test_ninjogeotiff ), test_get_dataset() (satpy.tests.reader_tests.test_seviri_l1b_native.TestN
586 method), 542
test_get_data_as_xarray_h5netcdf() (in module test_get_dataset() (satpy.tests.reader_tests.test_seviri_l1b_nc.TestNCS
satpy.tests.reader_tests.test_netcdf_utils), 514 method), 546
test_get_data_as_xarray_netcdf4() (in module test_get_dataset() (satpy.tests.reader_tests.test_viirs_compact.TestCom
satpy.tests.reader_tests.test_netcdf_utils), 514 method), 555
test_get_data_as_xarray_scalar_h5netcdf() (in test_get_dataset_1d_kprods()
module satpy.tests.reader_tests.test_netcdf_utils), (satpy.tests.reader_tests.test_oceancolorcci_l3_nc.TestOCCCIRea
514 method), 521
test_get_data_as_xarray_scalar_netcdf4() (in test_get_dataset_5d_allprods()
module satpy.tests.reader_tests.test_netcdf_utils), (satpy.tests.reader_tests.test_oceancolorcci_l3_nc.TestOCCCIRea
514 method), 521
test_get_dataset() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileHandler
test_get_dataset_8d_iopprods()
method), 413 (satpy.tests.reader_tests.test_oceancolorcci_l3_nc.TestOCCCIRea

Index 865
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 521 test_get_dataset_handles_calibration()


test_get_dataset_angles() (satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
(satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGACLACFile
method), 493
method), 449 test_get_dataset_invalid()
test_get_dataset_aux_data_expected_data_missing() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.GOESNCFile
(satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL1bNCFileHandler
method), 480
method), 511 test_get_dataset_latlon()
test_get_dataset_aux_data_not_supported() (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGACLACFile
(satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL1bNCFileHandler
method), 449
method), 511 test_get_dataset_logs_debug_message()
test_get_dataset_can_handle_file_key_list() (satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL1bNCFileHan
(satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFPPSmethod), 511
method), 518 test_get_dataset_longitude_shape_is_right()
test_get_dataset_channels() (satpy.tests.reader_tests.test_eps_l1b.TestWrongScanlinesEPSL1B
(satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGetDataset
method), 456
method), 450 test_get_dataset_masks()
test_get_dataset_coords() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.GOESNCFile
(satpy.tests.reader_tests.test_goes_imager_nc_noaa.GOESNCFileHandlerTest
method), 481
method), 480 test_get_dataset_monthly_allprods()
test_get_dataset_corrupt() (satpy.tests.reader_tests.test_oceancolorcci_l3_nc.TestOCCCIRea
(satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.TestFiduceoMviriFileHandlers
method), 521
method), 510 test_get_dataset_no_tle()
test_get_dataset_counts() (in module (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGetDataset
satpy.tests.reader_tests.test_sgli_l1b), 546 method), 450
test_get_dataset_counts() test_get_dataset_non_fill()
(satpy.tests.reader_tests.test_ami_l1b.TestAMIL1bNetCDF (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGFileHa
method), 439 method), 538
test_get_dataset_counts() test_get_dataset_orthorectifies_if_orthorect_data_defined(
(satpy.tests.reader_tests.test_goes_imager_nc_noaa.GOESNCFileHandlerTest
(satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
method), 480 method), 494
test_get_dataset_does_not_calibrate_if_not_desired() test_get_dataset_qual_flags()
(satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
(satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGACLACFile
method), 493 method), 449
test_get_dataset_dqf() test_get_dataset_radiance()
(satpy.tests.reader_tests.test_glm_l2.TestGLML2FileHandler(satpy.tests.reader_tests.test_eps_l1b.TestEPSL1B
method), 476 method), 455
test_get_dataset_fails_because_of_wrong_sample_rate() test_get_dataset_radiance()
(satpy.tests.reader_tests.test_eps_l1b.TestWrongSamplingEPSL1B
(satpy.tests.reader_tests.test_goes_imager_nc_eum.GOESNCEUM
method), 456 method), 479
test_get_dataset_for_unknown_channel() (in test_get_dataset_raises_when_dataset_missing()
module satpy.tests.reader_tests.test_sgli_l1b), (satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFPPS
546 method), 518
test_get_dataset_generic() test_get_dataset_reflectance()
(satpy.tests.reader_tests.test_viirs_edr.TestVIIRSJRRReader (satpy.tests.reader_tests.test_goes_imager_nc_eum.GOESNCEUM
method), 556 method), 479
test_get_dataset_get_channeldata_bts() test_get_dataset_return_none_if_data_not_exist()
(satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL1bNCFileHandler
(satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
method), 511 method), 494
test_get_dataset_get_channeldata_counts() test_get_dataset_return_none_if_data_not_exist()
(satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL1bNCFileHandler
(satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL1bNCFileHan
method), 511 method), 511
test_get_dataset_gfls() test_get_dataset_returns_a_dataarray()
(satpy.tests.reader_tests.test_abi_l2_nc.Test_NC_ABI_L2_get_dataset
(satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetUncalib
method), 431 method), 446

866 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_get_dataset_scales_and_offsets() method), 641


(satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFPPS
test_get_expected_segments()
method), 518 (satpy.tests.test_yaml_reader.TestGEOSegmentYAMLReader
method), 640
test_get_dataset_scales_and_offsets_palette_meanings_using_other_dataset()
(satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFFileKeyPrefix
test_get_fci_service_mode_fdss()
method), 517 (satpy.tests.reader_tests.test_eum_base.TestGetServiceMode
method), 457
test_get_dataset_scales_and_offsets_palette_meanings_using_other_dataset()
(satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFPPS
test_get_fci_service_mode_rss()
method), 518 (satpy.tests.reader_tests.test_eum_base.TestGetServiceMode
test_get_dataset_slice() method), 457
(satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGACLACFile
test_get_file_handlers()
method), 449 (satpy.tests.test_yaml_reader.TestFileFileYAMLReader
test_get_dataset_surf_refl() method), 638
(satpy.tests.reader_tests.test_viirs_edr.TestVIIRSJRRReader
test_get_file_units() (in module
method), 556 satpy.tests.reader_tests.test_viirs_atms_utils),
test_get_dataset_surf_refl_with_veg_idx() 555
(satpy.tests.reader_tests.test_viirs_edr.TestVIIRSJRRReader
test_get_filebase()
method), 556 (satpy.tests.test_yaml_reader.TestUtils
test_get_dataset_uses_file_key_if_present() method), 641
(satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFPPS
test_get_filename() (in module
method), 518 satpy.tests.writer_tests.test_ninjogeotiff ),
test_get_dataset_uses_file_key_prefix() 587
(satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFFileKeyPrefix
test_get_first_valid_variable()
method), 517 (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
test_get_dataset_vis() method), 498
(satpy.tests.reader_tests.test_ami_l1b.TestAMIL1bNetCDF
test_get_first_valid_variable_not_found()
method), 439 (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
test_get_dataset_with_raw_metadata() method), 498
(satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGFileHandler
test_get_flag_value()
method), 538 (satpy.tests.test_composites.TestMaskingCompositor
test_get_dataset_with_raw_metadata() method), 598
(satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeMSGDataset
test_get_full_angles_twice()
method), 542 (satpy.tests.reader_tests.test_eps_l1b.TestEPSL1B
test_get_dataset_without_masking_bad_scan_lines() method), 455
(satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGFileHandler
test_get_gain_offset()
method), 538 (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestSeviriCali
test_get_date_id() (in module method), 536
satpy.tests.writer_tests.test_ninjogeotiff ), test_get_geos_area_naming()
586 (satpy.tests.reader_tests.test_geos_area.TestGEOSProjectionUtil
test_get_earth_mask() method), 472
(satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestEarthMask
test_get_geostationary_angle_extent()
method), 411 (satpy.tests.reader_tests.test_utils.TestHelpers
test_get_earth_radius() method), 551
(satpy.tests.reader_tests.test_utils.TestHelpers test_get_geostationary_bbox()
method), 551 (satpy.tests.reader_tests.test_utils.TestHelpers
test_get_earth_radius_large() (in module method), 552
satpy.tests.writer_tests.test_ninjogeotiff ), 586 test_get_global_attributes()
test_get_earth_radius_small() (in module (satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
satpy.tests.writer_tests.test_ninjogeotiff ), 586 method), 494
test_get_empty_segment() test_get_global_attributes()
(satpy.tests.test_yaml_reader.TestGEOVariableSegmentYAMLReader
(satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL1bNCFileHan
method), 641 method), 511
test_get_empty_segment_with_height() test_get_hurricane_florence_abi()
(satpy.tests.test_yaml_reader.TestGEOVariableSegmentYAMLReader
(satpy.tests.test_demo.TestDemo method),

Index 867
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

610 test_get_navigation_data() (in module


test_get_key() (satpy.tests.test_readers.TestDatasetDict satpy.tests.reader_tests.test_aws1_mwr_l1b),
method), 619 450
test_get_l1b_customized_mask() test_get_navigation_data() (in module
(satpy.tests.reader_tests.test_olci_nc.TestOLCIReader satpy.tests.reader_tests.test_aws1_mwr_l1c),
method), 523 451
test_get_l1b_default_mask() test_get_navigation_data() (in module
(satpy.tests.reader_tests.test_olci_nc.TestOLCIReader satpy.tests.reader_tests.test_eps_sterna_mwr_l1b),
method), 523 456
test_get_l2_mask() (satpy.tests.reader_tests.test_olci_nc.TestOLCIReader
test_get_navigation_longitudes()
method), 523 (satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL1bNCFileHan
test_get_l2_mask_with_alternative_items() method), 511
(satpy.tests.reader_tests.test_olci_nc.TestOLCIReader
test_get_noise_dataset()
method), 523 (satpy.tests.reader_tests.test_sar_c_safe.TestSAFEXMLNoise
test_get_legacy_chunk_size() (in module method), 528
satpy.tests.test_utils), 631 test_get_noise_dataset_has_right_chunk_size()
test_get_lon_lat() (satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.TestSinglePixelNavigation
(satpy.tests.reader_tests.test_sar_c_safe.TestSAFEXMLNoise
method), 415 method), 528
test_get_lons_lats() test_get_observation_time() (in module
(satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.TestImageNavigation
satpy.tests.reader_tests.gms.test_gms5_vissr_navigation),
method), 415 416
test_get_luts() (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGriddedLUTs
test_get_on_fci_grid_exc()
method), 438 (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
test_get_max_gray_value_L() (in module method), 498
satpy.tests.writer_tests.test_ninjogeotiff ), test_get_on_fci_grid_exc_non_accum()
587 (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
test_get_max_gray_value_P() (in module method), 498
satpy.tests.writer_tests.test_ninjogeotiff ), test_get_on_fci_grid_exc_non_grid()
587 (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
test_get_max_gray_value_RGB() (in module method), 498
satpy.tests.writer_tests.test_ninjogeotiff ), 587 test_get_orbit_polynomial()
test_get_meirink_slope_2020() (satpy.tests.reader_tests.test_seviri_base.TestOrbitPolynomialFind
(satpy.tests.reader_tests.test_seviri_base.TestMeirinkSlope method), 534
method), 534 test_get_orbit_polynomial_exceptions()
test_get_meirink_slope_epoch() (satpy.tests.reader_tests.test_seviri_base.TestOrbitPolynomialFind
(satpy.tests.reader_tests.test_seviri_base.TestMeirinkSlope method), 534
method), 534 test_get_padding_area_float()
test_get_meridian_east() (in module (satpy.tests.reader_tests.test_seviri_base.SeviriBaseTest
satpy.tests.writer_tests.test_ninjogeotiff ), static method), 534
587 test_get_padding_area_int()
test_get_meridian_west() (in module (satpy.tests.reader_tests.test_seviri_base.SeviriBaseTest
satpy.tests.writer_tests.test_ninjogeotiff ), static method), 534
587 test_get_palette_fill_value_color_added()
test_get_min_gray_value_L() (in module (satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFPPS
satpy.tests.writer_tests.test_ninjogeotiff ), method), 518
587 test_get_parallax_corrected_lonlats_clearsky()
test_get_min_gray_value_P() (in module (satpy.tests.modifier_tests.test_parallax.TestForwardParallax
satpy.tests.writer_tests.test_ninjogeotiff ), method), 404
587 test_get_parallax_corrected_lonlats_cloudy_slant()
test_get_min_gray_value_RGB() (in module (satpy.tests.modifier_tests.test_parallax.TestForwardParallax
satpy.tests.writer_tests.test_ninjogeotiff ), 587 method), 405
test_get_nadir_pixel() test_get_parallax_corrected_lonlats_cloudy_ssp()
(satpy.tests.reader_tests.test_goes_imager_nc_noaa.GOESNCBaseFileHandlerTest
(satpy.tests.modifier_tests.test_parallax.TestForwardParallax
method), 480 method), 405

868 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_get_parallax_corrected_lonlats_horizon() (in module satpy.tests.reader_tests.test_viirs_atms_utils),


(satpy.tests.modifier_tests.test_parallax.TestForwardParallax555
method), 405 test_get_scale_factors_for_units_tbs() (in
test_get_parallax_corrected_lonlats_mixed() module satpy.tests.reader_tests.test_viirs_atms_utils),
(satpy.tests.modifier_tests.test_parallax.TestForwardParallax555
method), 405 test_get_scale_factors_for_units_unsupported_units()
test_get_parallax_corrected_lonlats_ssp() (in module satpy.tests.reader_tests.test_viirs_atms_utils),
(satpy.tests.modifier_tests.test_parallax.TestForwardParallax555
method), 405 test_get_sector() (satpy.tests.reader_tests.test_goes_imager_nc_eum.G
test_get_platform() method), 479
(satpy.tests.reader_tests.test_ahi_hrit.TestHRITJMAFileHandler
test_get_sector() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.G
method), 434 method), 481
test_get_platformname() test_get_segment_position_info()
(satpy.tests.reader_tests.test_viirs_edr.TestVIIRSJRRReader (satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader
method), 556 method), 464
test_get_plugin_configs() test_get_sensor() (satpy.tests.reader_tests.test_ghrsst_l2.TestGHRSSTL
(satpy.tests.test_config.TestPluginsConfigs method), 474
method), 603 test_get_sensors() (satpy.tests.test_composites.TestGenericCompositor
test_get_polarized_dataset_reflectance() (in method), 595
module satpy.tests.reader_tests.test_sgli_l1b), test_get_seviri_service_mode_fes()
546 (satpy.tests.reader_tests.test_eum_base.TestGetServiceMode
test_get_polarized_longitudes() (in module method), 457
satpy.tests.reader_tests.test_sgli_l1b), 546 test_get_seviri_service_mode_iodc_E0415()
test_get_projection() (in module (satpy.tests.reader_tests.test_eum_base.TestGetServiceMode
satpy.tests.writer_tests.test_ninjogeotiff ), method), 457
587 test_get_seviri_service_mode_iodc_E0455()
test_get_quality_attributes() (satpy.tests.reader_tests.test_eum_base.TestGetServiceMode
(satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
method), 457
method), 494 test_get_seviri_service_mode_rss()
test_get_raw_mda() (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGFileHandler
(satpy.tests.reader_tests.test_eum_base.TestGetServiceMode
method), 538 method), 457
test_get_ref_lat_1() (in module test_get_start_and_end_times()
satpy.tests.writer_tests.test_ninjogeotiff ), (satpy.tests.reader_tests.test_ghrsst_l2.TestGHRSSTL2Reader
587 method), 474
test_get_ref_lat_2() (in module test_get_start_and_end_times()
satpy.tests.writer_tests.test_ninjogeotiff ), (satpy.tests.reader_tests.test_osisaf_l3.OSISAFL3ReaderTests
587 method), 526
test_get_resolution_and_unit_strings_in_km() test_get_surface_parallax_displacement()
(satpy.tests.reader_tests.test_geos_area.TestGEOSProjectionUtil
(satpy.tests.modifier_tests.test_parallax.TestForwardParallax
method), 472 method), 405
test_get_resolution_and_unit_strings_in_m() test_get_sw_dataset_reflectances() (in module
(satpy.tests.reader_tests.test_geos_area.TestGEOSProjectionUtil
satpy.tests.reader_tests.test_sgli_l1b), 547
method), 472 test_get_test_dataset_three_bands_prereq()
test_get_satpos() (satpy.tests.reader_tests.test_seviri_base.TestSatellitePosition
(satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
method), 534 method), 584
test_get_satpos() (satpy.tests.test_utils.TestGetSatPos test_get_third_dimension_name()
method), 630 (satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
test_get_satpos_fails_with_informative_error() method), 494
(satpy.tests.test_utils.TestGetSatPos method), test_get_third_dimension_name_return_none_for_2d_data()
630 (satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
test_get_satpos_from_satname() method), 494
(satpy.tests.test_utils.TestGetSatPos method), test_get_ti_dataset_bt() (in module
630 satpy.tests.reader_tests.test_sgli_l1b), 547
test_get_scale_factors_for_units_reflectances() test_get_ti_dataset_radiance() (in module

Index 869
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.tests.reader_tests.test_sgli_l1b), 547 (satpy.tests.reader_tests.test_ghi_l1.Test_HDF_GHI_L1_cal


test_get_ti_lon_lats() (in module method), 473
satpy.tests.reader_tests.test_sgli_l1b), 547 test_ghi_channels_are_loaded_with_right_resolution()
test_get_transparent_pixel() (in module (satpy.tests.reader_tests.test_ghi_l1.Test_HDF_GHI_L1_cal
satpy.tests.writer_tests.test_ninjogeotiff ), method), 473
587 test_ghi_counts_calibration()
test_get_unknown_instrument_service_mode() (satpy.tests.reader_tests.test_ghi_l1.Test_HDF_GHI_L1_cal
(satpy.tests.reader_tests.test_eum_base.TestGetServiceModemethod), 473
method), 457 test_ghi_for_one_resolution()
test_get_unknown_lon_service_mode() (satpy.tests.reader_tests.test_ghi_l1.Test_HDF_GHI_L1_cal
(satpy.tests.reader_tests.test_eum_base.TestGetServiceModemethod), 473
method), 457 test_ghi_geo() (satpy.tests.reader_tests.test_ghi_l1.Test_HDF_GHI_L1_
test_get_us_midlatitude_cyclone_abi() method), 473
(satpy.tests.test_demo.TestDemo method), test_ghi_orbital_parameters_are_correct()
610 (satpy.tests.reader_tests.test_ghi_l1.Test_HDF_GHI_L1_cal
test_get_user_calibration_factors() method), 473
(satpy.tests.reader_tests.test_utils.TestHelpers test_global_attr_default_history_and_Conventions()
method), 552 (satpy.tests.writer_tests.test_cf.TestCFWriter
test_get_utc_time() method), 580
(satpy.tests.reader_tests.test_utils.TestSunEarthDistanceCorrection
test_global_attr_history_and_Conventions()
method), 552 (satpy.tests.writer_tests.test_cf.TestCFWriter
test_get_viewing_geometry_data() (in module method), 581
satpy.tests.reader_tests.test_aws1_mwr_l1b), test_group_results_by_output_file() (in module
450 satpy.tests.test_writers), 636
test_get_viewing_geometry_data() (in module test_groups() (satpy.tests.writer_tests.test_cf.TestCFWriter
satpy.tests.reader_tests.test_aws1_mwr_l1c), method), 581
451 test_gsics_radiance_corr()
test_get_vn_dataset_radiance() (in module (satpy.tests.reader_tests.test_ami_l1b.TestAMIL1bNetCDFIRCal
satpy.tests.reader_tests.test_sgli_l1b), 547 method), 440
test_get_vn_dataset_reflectances() (in module test_h5netcdf_pecularity()
satpy.tests.reader_tests.test_sgli_l1b), 547 (satpy.tests.reader_tests.test_seviri_l1b_nc.TestNCSEVIRIFileHan
test_get_xmax() (in module method), 546
satpy.tests.writer_tests.test_ninjogeotiff ), test_handling_bad_data_ir()
587 (satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReaderBad
test_get_xy_from_linecol() method), 464
(satpy.tests.reader_tests.test_geos_area.TestGEOSProjectionUtil
test_handling_bad_data_vis()
method), 472 (satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReaderBad
test_get_xy_from_linecol() method), 465
(satpy.tests.reader_tests.test_hrit_base.TestHRITFileHandler
test_has_archive_header() (in module
method), 486 satpy.tests.reader_tests.test_seviri_l1b_native),
test_get_ymax() (in module 545
satpy.tests.writer_tests.test_ninjogeotiff ), test_has_projection_coords()
587 (satpy.tests.cf_tests.test_coords.TestCFcoords
test_getitem() (satpy.tests.scene_tests.test_data_access.TestDataAccessMethods
method), 393
method), 571 test_hash() (satpy.tests.test_readers.TestFSFile
test_getitem() (satpy.tests.test_readers.TestDatasetDict method), 619
method), 619 test_hash_equality()
test_getitem_modifiers() (satpy.tests.test_dataset.TestIDQueryInteractions
(satpy.tests.scene_tests.test_data_access.TestDataAccessMethods
method), 608
method), 571 Test_HDF_AGRI_L1_cal (class in
test_getitem_slices() satpy.tests.reader_tests.test_agri_l1), 433
(satpy.tests.scene_tests.test_data_access.TestDataAccessMethods
Test_HDF_GHI_L1_cal (class in
method), 571 satpy.tests.reader_tests.test_ghi_l1), 473
test_ghi_all_bands_have_right_units() test_header_attrs()

870 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(satpy.tests.writer_tests.test_cf.TestCFWriter satpy.tests.reader_tests.test_iasi_l2), 492


method), 581 test_id_filtering()
test_header_type() (in module (satpy.tests.test_dataset.TestIDQueryInteractions
satpy.tests.reader_tests.test_seviri_l1b_native), method), 608
545 test_image() (satpy.tests.writer_tests.test_ninjotiff.TestNinjoTIFFWriter
test_header_warning() (in module method), 589
satpy.tests.reader_tests.test_seviri_l1b_native), test_image_cmyk_antarctic() (in module
545 satpy.tests.writer_tests.test_ninjogeotiff ),
test_hi_res() (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGriddedArea
587
method), 437 test_image_l() (in module
test_high_cloud_compositor() satpy.tests.reader_tests.test_generic_image),
(satpy.tests.test_composites.TestHighCloudCompositor 470
method), 596 test_image_l_nan() (in module
test_high_cloud_compositor_dtype() satpy.tests.reader_tests.test_generic_image),
(satpy.tests.test_composites.TestHighCloudCompositor 470
method), 596 test_image_l_nan_fill_value() (in module
test_high_cloud_compositor_multiple_calls() satpy.tests.reader_tests.test_generic_image),
(satpy.tests.test_composites.TestHighCloudCompositor 470
method), 596 test_image_la() (in module
test_high_cloud_compositor_validity_checks() satpy.tests.reader_tests.test_generic_image),
(satpy.tests.test_composites.TestHighCloudCompositor 470
method), 596 test_image_large_asia_RGB() (in module
test_highlight_compositor() satpy.tests.writer_tests.test_ninjogeotiff ),
(satpy.tests.compositor_tests.test_glm.TestGLMComposites 587
method), 397 test_image_latlon() (in module
test_histogram_dnb() satpy.tests.writer_tests.test_ninjogeotiff ),
(satpy.tests.compositor_tests.test_viirs.TestVIIRSComposites587
method), 398 test_image_northpole() (in module
test_hncc_dnb() (satpy.tests.compositor_tests.test_viirs.TestVIIRSComposites
satpy.tests.writer_tests.test_ninjogeotiff ),
method), 398 588
test_hncc_dnb_nomoonpha() test_image_rgb() (in module
(satpy.tests.compositor_tests.test_viirs.TestVIIRSCompositessatpy.tests.reader_tests.test_generic_image),
method), 398 470
test_hsaf_sc_areadef() (in module test_image_rgba() (in module
satpy.tests.reader_tests.test_hsaf_h5), 489 satpy.tests.reader_tests.test_generic_image),
test_hsaf_sc_colormap_dataset() (in module 470
satpy.tests.reader_tests.test_hsaf_h5), 489 test_image_rgba_merc() (in module
test_hsaf_sc_dataset() (in module satpy.tests.writer_tests.test_ninjogeotiff ),
satpy.tests.reader_tests.test_hsaf_h5), 489 588
test_hsaf_sc_datetime() (in module test_image_small_arctic_P() (in module
satpy.tests.reader_tests.test_hsaf_h5), 489 satpy.tests.writer_tests.test_ninjogeotiff ),
test_hvplot_basic_with_area() 588
(satpy.tests.scene_tests.test_conversions.TestSceneConversions
test_image_small_mid_atlantic_K_L() (in module
method), 570 satpy.tests.writer_tests.test_ninjogeotiff ), 588
test_hvplot_basic_with_swath() test_image_small_mid_atlantic_L() (in module
(satpy.tests.scene_tests.test_conversions.TestSceneConversions
satpy.tests.writer_tests.test_ninjogeotiff ), 588
method), 570 test_image_small_mid_atlantic_L_no_quantity()
test_hvplot_rgb_with_area() (in module satpy.tests.writer_tests.test_ninjogeotiff ),
(satpy.tests.scene_tests.test_conversions.TestSceneConversions
588
method), 570 test_image_weird() (in module
test_hybrid_green() satpy.tests.writer_tests.test_ninjogeotiff ),
(satpy.tests.compositor_tests.test_spectral.TestSpectralComposites
588
method), 398 test_imcompatible_areas()
test_iasi_l2_cdr_nc() (in module (satpy.tests.test_modifiers.TestSunZenithCorrector

Index 871
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 616 method), 483


test_img_acq (satpy.tests.reader_tests.test_electrol_hrit.TestHRITGOMSProFileHandler
test_init() (satpy.tests.reader_tests.test_hsaf_grib.TestHSAFFileHandler
attribute), 453 method), 489
test_import_error_helper() (in module test_init() (satpy.tests.reader_tests.test_iasi_l2.TestIasiL2
satpy.tests.test_utils), 631 method), 491
test_incidence_angle() (in module test_init() (satpy.tests.reader_tests.test_mimic_TPW2_lowres.TestMimic
satpy.tests.reader_tests.test_sar_c_safe), method), 505
529 test_init() (satpy.tests.reader_tests.test_mimic_TPW2_nc.TestMimicTPW
test_include_lonlats_false() method), 506
(satpy.tests.scene_tests.test_conversions.TestToXarrayConversion
test_init() (satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.TestFiduc
method), 570 method), 510
test_include_lonlats_true() test_init() (satpy.tests.reader_tests.test_nucaps.TestNUCAPSReader
(satpy.tests.scene_tests.test_conversions.TestToXarrayConversion
method), 515
method), 571 test_init() (satpy.tests.reader_tests.test_nucaps.TestNUCAPSScienceED
test_incorrect_method() method), 516
(satpy.tests.test_composites.TestMaskingCompositor test_init() (satpy.tests.reader_tests.test_omps_edr.TestOMPSEDRReade
method), 598 method), 525
test_incorrect_mode() test_init() (satpy.tests.reader_tests.test_safe_sar_l2_ocn.TestSAFENC
(satpy.tests.test_composites.TestMaskingCompositor method), 527
method), 598 test_init() (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestSevir
test_inequality() (satpy.tests.test_dataset.TestIDQueryInteractions method), 536
method), 608 test_init() (satpy.tests.reader_tests.test_seviri_l1b_icare.TestSEVIRIICA
test_infile_calibrate() method), 542
(satpy.tests.reader_tests.test_ami_l1b.TestAMIL1bNetCDFIRCal
test_init() (satpy.tests.reader_tests.test_smos_l2_wind.TestSMOSL2WIN
method), 440 method), 549
test_init() (satpy.tests.reader_tests.test_acspo.TestACSPOReader
test_init() (satpy.tests.reader_tests.test_tropomi_l2.TestTROPOMIL2Re
method), 432 method), 550
test_init() (satpy.tests.reader_tests.test_ahi_hrit.TestHRITJMAFileHandler
test_init() (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestImgV
method), 434 method), 559
test_init() (satpy.tests.reader_tests.test_amsr2_l1b.TestAMSR2L1BReader
test_init() (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestImgV
method), 441 method), 560
test_init() (satpy.tests.reader_tests.test_amsr2_l2.TestAMSR2L2Reader
test_init() (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestModV
method), 441 method), 560
test_init() (satpy.tests.reader_tests.test_atms_sdr_hdf5.TestATMS_SDR_Reader
test_init() (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestModV
method), 445 method), 561
test_init() (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGACLACFile
test_init() (satpy.tests.reader_tests.test_viirs_edr_flood.TestVIIRSEDRF
method), 449 method), 561
test_init() (satpy.tests.reader_tests.test_clavrx.test_clavrx_geohdf.TestCLAVRXReaderGeo
test_init() (satpy.tests.reader_tests.test_viirs_l1b.TestVIIRSL1BReaderD
method), 423 method), 563
test_init() (satpy.tests.reader_tests.test_clavrx.test_clavrx_polarhdf.TestCLAVRXReaderPolar
test_init() (satpy.tests.reader_tests.test_viirs_l2.TestVIIRSL2FileHandle
method), 425 method), 564
test_init() (satpy.tests.reader_tests.test_electrol_hrit.TestHRITGOMSEpiFileHandler
test_init() (satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
method), 452 method), 567
test_init() (satpy.tests.reader_tests.test_electrol_hrit.TestHRITGOMSProFileHandler
test_init() (satpy.tests.scene_tests.test_init.TestScene
method), 453 method), 573
test_init() (satpy.tests.reader_tests.test_geocat.TestGEOCATReader
test_init() (satpy.tests.test_composites.TestMaskingCompositor
method), 471 method), 598
test_init() (satpy.tests.reader_tests.test_goes_imager_hrit.TestHRITGOESFileHandler
test_init() (satpy.tests.test_composites.TestStaticImageCompositor
method), 478 method), 601
test_init() (satpy.tests.reader_tests.test_goes_imager_hrit.TestHRITGOESPrologueFileHandler
test_init() (satpy.tests.test_resample.TestBucketAvg
method), 478 method), 626
test_init() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.GOESNCBaseFileHandlerTest
test_init() (satpy.tests.writer_tests.test_awips_tiled.TestAWIPSTiledWrit
method), 480 method), 579
test_init() (satpy.tests.reader_tests.test_grib.TestGRIBReader
test_init() (satpy.tests.writer_tests.test_cf.TestCFWriter

872 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 581 method), 573


test_init() (satpy.tests.writer_tests.test_geotiff.TestGeoTIFFWriter
test_init_with_empty_filenames()
method), 583 (satpy.tests.scene_tests.test_init.TestScene
test_init() (satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter method), 573
method), 584 test_init_with_fsfile()
test_init() (satpy.tests.writer_tests.test_ninjotiff.TestNinjoTIFFWriter
(satpy.tests.scene_tests.test_init.TestScene
method), 589 method), 573
test_init() (satpy.tests.writer_tests.test_simple_image.TestPillowWriter
test_init_with_kwargs()
method), 590 (satpy.tests.reader_tests.test_geocat.TestGEOCATReader
test_init_alone() (satpy.tests.scene_tests.test_init.TestScene method), 471
method), 573 test_init_with_kwargs()
test_init_bad_modifiers() (satpy.tests.reader_tests.test_nucaps.TestNUCAPSReader
(satpy.tests.test_dataset.TestDataID method), method), 515
607 test_inline_composites()
test_init_children() (satpy.tests.test_composites.TestInlineComposites
(satpy.tests.multiscene_tests.test_misc.TestMultiScene method), 596
method), 409 test_insat3d_backend_has_1km_channels() (in
test_init_dict() (satpy.tests.test_readers.TestDatasetDict module satpy.tests.reader_tests.test_insat3d_img_l1b_h5),
method), 619 495
test_init_empty() (satpy.tests.multiscene_tests.test_misc.TestMultiScene
test_insat3d_datatree_has_global_attributes()
method), 409 (in module satpy.tests.reader_tests.test_insat3d_img_l1b_h5),
test_init_end_time_beyond() 495
(satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
test_insat3d_has_calibrated_arrays() (in mod-
method), 567 ule satpy.tests.reader_tests.test_insat3d_img_l1b_h5),
test_init_eosip() (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGACLACFile
496
method), 449 test_insat3d_has_dask_arrays() (in module
test_init_no_files() satpy.tests.reader_tests.test_insat3d_img_l1b_h5),
(satpy.tests.scene_tests.test_init.TestScene 496
method), 573 test_insat3d_has_global_attributes() (in mod-
test_init_noargs() (satpy.tests.test_readers.TestDatasetDict ule satpy.tests.reader_tests.test_insat3d_img_l1b_h5),
method), 619 496
test_init_nonexistent_enh_file() test_insat3d_has_orbital_parameters() (in mod-
(satpy.tests.test_writers.TestEnhancer method), ule satpy.tests.reader_tests.test_insat3d_img_l1b_h5),
633 496
test_init_parallaxcorrection() test_insat3d_only_has_3_resolutions() (in mod-
(satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionClass
ule satpy.tests.reader_tests.test_insat3d_img_l1b_h5),
method), 405 496
test_init_preserve_reader_kwargs() test_insat3d_opens_datatree() (in module
(satpy.tests.scene_tests.test_init.TestScene satpy.tests.reader_tests.test_insat3d_img_l1b_h5),
method), 573 496
test_init_start_end_time() test_insat3d_returns_lonlat() (in module
(satpy.tests.reader_tests.test_atms_sdr_hdf5.TestATMS_SDR_Reader
satpy.tests.reader_tests.test_insat3d_img_l1b_h5),
method), 445 496
test_init_start_end_time() test_instantiate() (satpy.tests.reader_tests.test_meris_nc.TestMERISR
(satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReadermethod), 499
method), 567 test_instantiate() (satpy.tests.reader_tests.test_olci_nc.TestOLCIRead
test_init_start_time_beyond() method), 523
(satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
test_instantiate() (satpy.tests.reader_tests.test_slstr_l1b.TestSLSTRRe
method), 567 method), 548
test_init_start_time_is_nodate() test_instantiate_single_netcdf_file()
(satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader(satpy.tests.reader_tests.test_ghrsst_l2.TestGHRSSTL2Reader
method), 567 method), 474
test_init_str_filename() test_instantiate_single_netcdf_file()
(satpy.tests.scene_tests.test_init.TestScene (satpy.tests.reader_tests.test_osisaf_l3.OSISAFL3ReaderTests

Index 873
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 526 method), 397


test_instantiate_tarfile() test_invalid_timeline()
(satpy.tests.reader_tests.test_ghrsst_l2.TestGHRSSTL2Reader (satpy.tests.reader_tests.test_ahi_hsd.TestNominalTimeCalculator
method), 474 method), 436
test_interp_acq_time() test_invalid_wishlist_type()
(satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.TestInterpolator
(satpy.tests.reader_tests.test_utils.TestCalibrationCoefficientPicke
method), 510 method), 551
test_interpolate_angles() test_ir_calibrate() (in module
(satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.TestPredictionInterpolation
satpy.tests.reader_tests.test_abi_l1b), 430
method), 415 test_ir_calibrate()
test_interpolate_attitude_prediction() (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestSEVIRICa
(satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.TestPredictionInterpolation
method), 536
method), 415 test_irbt() (satpy.tests.reader_tests.test_msu_gsa_l1b.TestMSUGSABRe
test_interpolate_calls_interpolate_geo() method), 508
(satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
test_ircounts2radiance()
method), 494 (satpy.tests.reader_tests.test_goes_imager_nc_noaa.GOESNCBas
test_interpolate_calls_interpolate_viewing_angles() method), 480
(satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
test_is_gcp_instance()
method), 494 (satpy.tests.test_demo.TestGCPUtils method),
test_interpolate_continuous() 610
(satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.TestPredictionInterpolation
test_is_modified() (satpy.tests.test_dataset.TestDataID
method), 415 method), 607
test_interpolate_geo() test_is_modified() (satpy.tests.test_dataset.TestDataQuery
(satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
method), 607
method), 494 test_is_projected()
test_interpolate_nearest() (satpy.tests.cf_tests.test_coords.TestCFcoords
(satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.TestPredictionInterpolation
method), 393
method), 415 test_is_roi() (in module
test_interpolate_orbit_prediction() satpy.tests.reader_tests.test_seviri_l1b_native),
(satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.TestPredictionInterpolation
545
method), 415 test_is_vis_channel()
test_interpolate_returns_none_if_dataset_not_exist() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.TestChannelI
(satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
method), 481
method), 494 test_is_writable() (in module
test_interpolate_viewing_angle() satpy.tests.test_config), 604
(satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
test_iter() (satpy.tests.scene_tests.test_data_access.TestDataAccessMeth
method), 494 method), 572
test_interpolation() test_iter_by_area_swath()
(satpy.tests.reader_tests.test_aapp_l1b.TestAAPPL1BAllChannelsPresent
(satpy.tests.scene_tests.test_data_access.TestDataAccessMethods
method), 427 method), 572
test_interpolation_angles() test_jma_true_color_reproduction()
(satpy.tests.reader_tests.test_aapp_l1b.TestAAPPL1BAllChannelsPresent
(satpy.tests.enhancement_tests.test_enhancements.TestTCREnhan
method), 427 method), 401
test_intersect_view_vector_with_earth() test_jscanspositively()
(satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.TestSinglePixelNavigation
(satpy.tests.reader_tests.test_grib.TestGRIBReader
method), 415 method), 483
test_invalid_channel() test_kd_resampling()
(satpy.tests.reader_tests.test_goes_imager_nc_noaa.TestChannelIdentification
(satpy.tests.test_resample.TestKDTreeResampler
method), 481 method), 628
test_invalid_max_sza() test_keys() (satpy.tests.test_readers.TestDatasetDict
(satpy.tests.test_modifiers.TestSunZenithReducer method), 619
method), 617 test_l1b_calib() (satpy.tests.reader_tests.test_msi_safe.TestSAFEMSIL1
test_invalid_strength() method), 507
(satpy.tests.compositor_tests.test_spectral.TestNdviHybridGreenCompositor
test_l1b_error() (satpy.tests.reader_tests.test_msi_safe.TestSAFEMSIL1

874 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 507 test_load_all_himawari8()


test_large_time_threshold() (satpy.tests.reader_tests.test_geocat.TestGEOCATReader
(satpy.tests.test_readers.TestGroupFiles method), 471
method), 621 test_load_all_i_bts()
test_latitude() (in module (satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
satpy.tests.reader_tests.test_gld360_ualf2), method), 567
475 test_load_all_i_radiances()
test_latitude() (satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
(satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
method), 494 method), 567
test_latitudes_are_returned() test_load_all_i_reflectances_provided_geo()
(satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTNavigation
(satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
method), 447 method), 567
test_lettered_tiles_bad_filename() test_load_all_m_bts()
(satpy.tests.writer_tests.test_awips_tiled.TestAWIPSTiledWriter
(satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
method), 579 method), 567
test_lettered_tiles_no_fit() test_load_all_m_radiances()
(satpy.tests.writer_tests.test_awips_tiled.TestAWIPSTiledWriter
(satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
method), 579 method), 567
test_lettered_tiles_no_valid_data() test_load_all_m_reflectances_find_geo()
(satpy.tests.writer_tests.test_awips_tiled.TestAWIPSTiledWriter
(satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
method), 579 method), 567
test_lettered_tiles_sector_ref() test_load_all_m_reflectances_no_geo()
(satpy.tests.writer_tests.test_awips_tiled.TestAWIPSTiledWriter
(satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
method), 579 method), 567
test_lettered_tiles_update_existing() test_load_all_m_reflectances_provided_geo()
(satpy.tests.writer_tests.test_awips_tiled.TestAWIPSTiledWriter
(satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
method), 579 method), 567
test_limited_find_registerable() test_load_all_m_reflectances_use_nontc()
(satpy.tests.test_data_download.TestDataDownload (satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
method), 605 method), 568
test_listed_variables() test_load_all_m_reflectances_use_nontc2()
(satpy.tests.reader_tests.test_netcdf_utils.TestNetCDF4FileHandler
(satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
method), 513 method), 568
test_listed_variables_with_composing() test_load_all_new_donor()
(satpy.tests.reader_tests.test_netcdf_utils.TestNetCDF4FileHandler
(satpy.tests.reader_tests.test_clavrx.test_clavrx_geohdf.TestCLAVR
method), 513 method), 423
test_listify_string() test_load_all_new_donor()
(satpy.tests.test_yaml_reader.TestUtils (satpy.tests.reader_tests.test_clavrx.test_clavrx_nc.TestCLAVRXR
method), 641 method), 424
test_load_250m_cloud_mask_dataset() test_load_all_old_donor()
(satpy.tests.reader_tests.modis_tests.test_modis_l2.TestModisL2
(satpy.tests.reader_tests.test_clavrx.test_clavrx_geohdf.TestCLAVR
method), 421 method), 423
test_load_89ghz() (satpy.tests.reader_tests.test_amsr2_l1b.TestAMSR2L1BReader
test_load_all_old_goes()
method), 441 (satpy.tests.reader_tests.test_geocat.TestGEOCATReader
test_load_all() (satpy.tests.reader_tests.test_clavrx.test_clavrx_polarhdf.TestCLAVRXReaderPolar
method), 471
method), 425 test_load_ancillary()
test_load_all() (satpy.tests.reader_tests.test_grib.TestGRIBReader(satpy.tests.reader_tests.test_epic_l1b_h5.TestEPICL1bReader
method), 483 method), 454
test_load_all_bands() test_load_area_def()
(satpy.tests.reader_tests.test_atms_sdr_hdf5.TestATMS_SDR_Reader
(satpy.tests.test_yaml_reader.TestFileFileYAMLReader
method), 445 method), 638
test_load_all_goes17_hdf4() test_load_area_def()
(satpy.tests.reader_tests.test_geocat.TestGEOCATReader (satpy.tests.test_yaml_reader.TestGEOSegmentYAMLReader
method), 471 method), 640

Index 875
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_load_aux_data() method), 396


(satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader
test_load_composite_yaml()
method), 464 (satpy.tests.compositor_tests.test_glm.TestGLMComposites
test_load_basic() (satpy.tests.reader_tests.test_amsr2_l1b.TestAMSR2L1BReader
method), 397
method), 441 test_load_composite_yaml()
test_load_basic() (satpy.tests.reader_tests.test_amsr2_l2.TestAMSR2L2Reader
(satpy.tests.compositor_tests.test_viirs.TestVIIRSComposites
method), 441 method), 399
test_load_bounds() (satpy.tests.reader_tests.test_tropomi_l2.TestTROPOMIL2Reader
test_load_data() (in module
method), 550 satpy.tests.reader_tests.test_ahi_l2_nc), 438
test_load_calibration() test_load_data() (satpy.tests.reader_tests.test_gpm_imerg.TestHdf5IME
(satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader
method), 482
method), 464 test_load_data_all_ambiguities()
test_load_calibration_af() (satpy.tests.reader_tests.test_hy2_scat_l2b_h5.TestHY2SCATL2BH
(satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader
method), 490
method), 464 test_load_data_row_times()
test_load_calibration_negative_rad() (satpy.tests.reader_tests.test_hy2_scat_l2b_h5.TestHY2SCATL2BH
(satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader
method), 490
method), 464 test_load_data_selection()
test_load_category_dataset() (satpy.tests.reader_tests.test_hy2_scat_l2b_h5.TestHY2SCATL2BH
(satpy.tests.reader_tests.modis_tests.test_modis_l2.TestModisL2
method), 490
method), 421 test_load_dataset()
test_load_chlor_a() (satpy.tests.reader_tests.test_goci2_l2_nc.TestGOCI2Reader
(satpy.tests.reader_tests.test_oci_l2_bgc.TestSEADAS method), 477
method), 522 test_load_dataset()
test_load_chlor_a() (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestImgVIIRSA
(satpy.tests.reader_tests.test_seadas_l2.TestSEADAS method), 559
method), 532 test_load_dataset()
test_load_comp11_and_23() (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestImgVIIRSA
(satpy.tests.scene_tests.test_load.TestLoadingComposites method), 560
method), 574 test_load_dataset()
test_load_comp15() (satpy.tests.scene_tests.test_load.TestLoadingComposites
(satpy.tests.reader_tests.test_viirs_edr_active_fires.TestModVIIRS
method), 574 method), 560
test_load_comp17() (satpy.tests.scene_tests.test_load.TestLoadingComposites
test_load_dataset()
method), 574 (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestModVIIRS
test_load_comp18() (satpy.tests.scene_tests.test_load.TestLoadingComposites
method), 561
method), 574 test_load_dataset()
test_load_comp18_2() (satpy.tests.reader_tests.test_viirs_edr_flood.TestVIIRSEDRFlood
(satpy.tests.scene_tests.test_load.TestLoadingComposites method), 562
method), 574 test_load_dataset()
test_load_comp19() (satpy.tests.scene_tests.test_load.TestLoadingComposites
(satpy.tests.test_yaml_reader.TestGEOSegmentYAMLReader
method), 574 method), 641
test_load_comp8() (satpy.tests.scene_tests.test_load.TestLoadingComposites
test_load_dataset_after_composite()
method), 574 (satpy.tests.scene_tests.test_load.TestLoadingComposites
test_load_composite() method), 574
(satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader
test_load_dataset_after_composite2()
method), 464 (satpy.tests.scene_tests.test_load.TestLoadingComposites
test_load_composite_yaml() method), 574
(satpy.tests.compositor_tests.test_abi.TestABIComposites
test_load_dataset_aoi()
method), 396 (satpy.tests.reader_tests.test_viirs_edr_flood.TestVIIRSEDRFlood
test_load_composite_yaml() method), 562
(satpy.tests.compositor_tests.test_agri.TestAGRIComposites
test_load_dataset_ir()
method), 396 (satpy.tests.reader_tests.test_seviri_l1b_icare.TestSEVIRIICARER
test_load_composite_yaml() method), 542
(satpy.tests.compositor_tests.test_ahi.TestAHIComposites
test_load_dataset_vis()

876 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(satpy.tests.reader_tests.test_seviri_l1b_icare.TestSEVIRIICAREReader
test_load_ds9_fail_load()
method), 542 (satpy.tests.scene_tests.test_load.TestLoadingReaderDatasets
test_load_dataset_with_area_for_data_without_area() method), 576
(satpy.tests.test_yaml_reader.TestGEOFlippableFileYAMLReader
test_load_entire_dataset()
method), 640 (satpy.tests.test_yaml_reader.TestFileFileYAMLReader
test_load_dataset_with_area_for_single_areas() method), 638
(satpy.tests.test_yaml_reader.TestGEOFlippableFileYAMLReader
test_load_entry_point_composite()
method), 640 (satpy.tests.test_config.TestPluginsConfigs
test_load_dataset_with_area_for_stacked_areas() method), 603
(satpy.tests.test_yaml_reader.TestGEOFlippableFileYAMLReader
test_load_every_dataset()
method), 640 (satpy.tests.reader_tests.test_acspo.TestACSPOReader
test_load_dataset_with_area_for_swath_def_data() method), 432
(satpy.tests.test_yaml_reader.TestGEOFlippableFileYAMLReader
test_load_every_m_band_bt()
method), 640 (satpy.tests.reader_tests.test_viirs_l1b.TestVIIRSL1BReaderDay
test_load_dataset_with_builtin_coords() method), 563
(satpy.tests.test_yaml_reader.TestFileYAMLReaderLoading
test_load_every_m_band_rad()
method), 639 (satpy.tests.reader_tests.test_viirs_l1b.TestVIIRSL1BReaderDay
test_load_dataset_with_builtin_coords_in_wrong_order()method), 563
(satpy.tests.test_yaml_reader.TestFileYAMLReaderLoading
test_load_every_m_band_refl()
method), 639 (satpy.tests.reader_tests.test_viirs_l1b.TestVIIRSL1BReaderDay
test_load_dnb() (satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
method), 563
method), 568 test_load_geo() (satpy.tests.reader_tests.test_hy2_scat_l2b_h5.TestHY2S
test_load_dnb_angles() method), 490
(satpy.tests.reader_tests.test_viirs_l1b.TestVIIRSL1BReaderDay
test_load_geo_nsoas()
method), 563 (satpy.tests.reader_tests.test_hy2_scat_l2b_h5.TestHY2SCATL2BH
test_load_dnb_no_factors() method), 490
(satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
test_load_i_band_angles()
method), 568 (satpy.tests.reader_tests.test_viirs_l1b.TestVIIRSL1BReaderDay
test_load_dnb_radiance() method), 563
(satpy.tests.reader_tests.test_viirs_l1b.TestVIIRSL1BReaderDay
test_load_i_no_files()
method), 563 (satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
test_load_dnb_sza_no_factors() method), 568
(satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
test_load_individual_pressure_levels_min_max()
method), 568 (satpy.tests.reader_tests.test_nucaps.TestNUCAPSReader
test_load_ds1_load_twice() method), 515
(satpy.tests.scene_tests.test_load.TestLoadingReaderDatasets
test_load_individual_pressure_levels_min_max()
method), 575 (satpy.tests.reader_tests.test_nucaps.TestNUCAPSScienceEDRRea
test_load_ds1_no_comps() method), 516
(satpy.tests.scene_tests.test_load.TestLoadingReaderDatasets
test_load_individual_pressure_levels_single()
method), 575 (satpy.tests.reader_tests.test_nucaps.TestNUCAPSReader
test_load_ds1_unknown_modifier() method), 515
(satpy.tests.scene_tests.test_load.TestLoadingReaderDatasets
test_load_individual_pressure_levels_single()
method), 575 (satpy.tests.reader_tests.test_nucaps.TestNUCAPSScienceEDRRea
test_load_ds4_cal() method), 516
(satpy.tests.scene_tests.test_load.TestLoadingReaderDatasets
test_load_individual_pressure_levels_true()
method), 575 (satpy.tests.reader_tests.test_nucaps.TestNUCAPSReader
test_load_ds5_multiple_resolution_loads() method), 515
(satpy.tests.scene_tests.test_load.TestLoadingReaderDatasets
test_load_individual_pressure_levels_true()
method), 575 (satpy.tests.reader_tests.test_nucaps.TestNUCAPSScienceEDRRea
test_load_ds5_variations() method), 516
(satpy.tests.scene_tests.test_load.TestLoadingReaderDatasets
test_load_l2_dataset()
method), 575 (satpy.tests.reader_tests.modis_tests.test_modis_l2.TestModisL2
test_load_ds6_wl() (satpy.tests.scene_tests.test_load.TestLoadingReaderDatasets
method), 421
method), 576 test_load_l2_files()

Index 877
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(satpy.tests.reader_tests.test_viirs_l2.TestVIIRSL2FileHandler
(satpy.tests.scene_tests.test_load.TestLoadingComposites
method), 564 method), 575
test_load_l3_dataset() test_load_multiple_resolutions()
(satpy.tests.reader_tests.modis_tests.test_modis_l3.TestModisL3
(satpy.tests.scene_tests.test_load.TestLoadingComposites
method), 422 method), 575
test_load_l3_dataset() test_load_no2() (satpy.tests.reader_tests.test_tropomi_l2.TestTROPOMI
(satpy.tests.reader_tests.modis_tests.test_modis_l3_mcd12q1.TestModisL3MCD12Q1
method), 550
method), 422 test_load_no_exist()
test_load_lat() (satpy.tests.reader_tests.test_smos_l2_wind.TestSMOSL2WINDReader
(satpy.tests.scene_tests.test_load.TestBadLoading
method), 549 method), 574
test_load_lon() (satpy.tests.reader_tests.test_smos_l2_wind.TestSMOSL2WINDReader
test_load_no_exist2()
method), 549 (satpy.tests.scene_tests.test_load.TestLoadingReaderDatasets
test_load_longitude_latitude() method), 576
(satpy.tests.reader_tests.modis_tests.test_modis_l1b.TestModisL1b
test_load_nonpressure_based()
method), 421 (satpy.tests.reader_tests.test_nucaps.TestNUCAPSReader
test_load_longitude_latitude() method), 515
(satpy.tests.reader_tests.modis_tests.test_modis_l2.TestModisL2
test_load_nonpressure_based()
method), 421 (satpy.tests.reader_tests.test_nucaps.TestNUCAPSScienceEDRRea
test_load_map_and_pixel() method), 516
(satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader
test_load_pressure_based()
method), 464 (satpy.tests.reader_tests.test_nucaps.TestNUCAPSReader
test_load_map_and_pixel_af() method), 515
(satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader
test_load_pressure_based()
method), 464 (satpy.tests.reader_tests.test_nucaps.TestNUCAPSScienceEDRRea
test_load_mimic() (satpy.tests.reader_tests.test_mimic_TPW2_nc.TestMimicTPW2Reader
method), 516
method), 506 test_load_pressure_levels_min_max()
test_load_mimic_float() (satpy.tests.reader_tests.test_nucaps.TestNUCAPSReader
(satpy.tests.reader_tests.test_mimic_TPW2_lowres.TestMimicTPW2Reader
method), 515
method), 505 test_load_pressure_levels_min_max()
test_load_mimic_timedelta() (satpy.tests.reader_tests.test_nucaps.TestNUCAPSScienceEDRRea
(satpy.tests.reader_tests.test_mimic_TPW2_lowres.TestMimicTPW2Reader
method), 516
method), 505 test_load_pressure_levels_single()
test_load_mimic_ubyte() (satpy.tests.reader_tests.test_nucaps.TestNUCAPSReader
(satpy.tests.reader_tests.test_mimic_TPW2_lowres.TestMimicTPW2Reader
method), 515
method), 505 test_load_pressure_levels_single()
test_load_modified() (satpy.tests.reader_tests.test_nucaps.TestNUCAPSScienceEDRRea
(satpy.tests.scene_tests.test_load.TestLoadingComposites method), 516
method), 574 test_load_pressure_levels_single_and_pressure_levels()
test_load_modified_with_load_kwarg() (satpy.tests.reader_tests.test_nucaps.TestNUCAPSReader
(satpy.tests.scene_tests.test_load.TestLoadingComposites method), 515
method), 574 test_load_pressure_levels_single_and_pressure_levels()
test_load_module_with_old_pyproj() (satpy.tests.reader_tests.test_nucaps.TestNUCAPSScienceEDRRea
(satpy.tests.writer_tests.test_cf.TestCFWriter method), 516
method), 581 test_load_pressure_levels_true()
test_load_multiple_comps() (satpy.tests.reader_tests.test_nucaps.TestNUCAPSReader
(satpy.tests.scene_tests.test_load.TestLoadingComposites method), 515
method), 574 test_load_pressure_levels_true()
test_load_multiple_comps_separate() (satpy.tests.reader_tests.test_nucaps.TestNUCAPSScienceEDRRea
(satpy.tests.scene_tests.test_load.TestLoadingComposites method), 516
method), 575 test_load_quality_assurance()
test_load_multiple_files_pressure() (satpy.tests.reader_tests.modis_tests.test_modis_l2.TestModisL2
(satpy.tests.reader_tests.test_nucaps.TestNUCAPSReader method), 422
method), 515 test_load_same_subcomposite()
test_load_multiple_modified() (satpy.tests.scene_tests.test_load.TestLoadingComposites

878 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 575 method), 447


test_load_sat_zenith_angle() test_lonlat2xyz() (satpy.tests.test_utils.TestGeoUtils
(satpy.tests.reader_tests.modis_tests.test_modis_l1b.TestModisL1b
method), 629
method), 421 test_lonlat_from_geos()
test_load_so2() (satpy.tests.reader_tests.test_tropomi_l2.TestTROPOMIL2Reader
(satpy.tests.reader_tests.test_utils.TestHelpers
method), 550 method), 552
test_load_so2_DIMENSION_LIST() test_lonslats() (satpy.tests.reader_tests.test_eum_l2_bufr.TestL2BufrRe
(satpy.tests.reader_tests.test_omps_edr.TestOMPSEDRReader static method), 459
method), 525 test_lookup() (satpy.tests.enhancement_tests.test_enhancements.TestEnh
test_load_str() (satpy.tests.scene_tests.test_load.TestBadLoading method), 400
method), 574 test_low_cloud_compositor()
test_load_too_many() (satpy.tests.test_composites.TestLowCloudCompositor
(satpy.tests.scene_tests.test_load.TestLoadingComposites method), 597
method), 575 test_low_cloud_compositor_dtype()
test_load_truncated_band() (satpy.tests.test_composites.TestLowCloudCompositor
(satpy.tests.reader_tests.test_viirs_sdr.TestShortAggrVIIRSSDRReader
method), 597
method), 566 test_low_cloud_compositor_validity_checks()
test_load_vis() (satpy.tests.reader_tests.modis_tests.test_modis_l1b.TestModisL1b
(satpy.tests.test_composites.TestLowCloudCompositor
method), 421 method), 597
test_load_vis_saturation() test_low_res() (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAH
(satpy.tests.reader_tests.modis_tests.test_modis_l1b.TestModisL1b
method), 437
method), 421 test_make_cf_dataarray()
test_load_when_sensor_none_in_preloaded_dataarrays() (satpy.tests.cf_tests.test_dataaarray.TestCfDataArray
(satpy.tests.scene_tests.test_load.TestLoadingComposites method), 394
method), 575 test_make_cf_dataarray_lonlat() (in module
test_load_wind_speed() satpy.tests.cf_tests.test_dataaarray), 394
(satpy.tests.reader_tests.test_smos_l2_wind.TestSMOSL2WINDReader
test_make_cf_dataarray_one_dimensional_array()
method), 549 (satpy.tests.cf_tests.test_dataaarray.TestCfDataArray
test_loading_badchan() method), 394
(satpy.tests.reader_tests.test_oli_tirs_l1_tif.TestOLITIRSL1
test_make_fake_scene() (in module
method), 524 satpy.tests.test_utils), 631
test_loading_badfil() test_manage_attributes()
(satpy.tests.reader_tests.test_oli_tirs_l1_tif.TestOLITIRSL1 (satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
method), 524 method), 494
test_loading_gd() (satpy.tests.reader_tests.test_oli_tirs_l1_tif.TestOLITIRSL1
test_manage_attributes()
method), 524 (satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL1bNCFileHan
test_loading_lon_lat() (in module method), 511
satpy.tests.reader_tests.test_sgli_l1b), 547 test_mask_bad_quality()
test_loading_missing_channels_returns_none() (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGCalibr
(satpy.tests.reader_tests.test_aapp_l1b.TestAAPPL1BChannel3AMissing
method), 537
method), 428 test_mask_bad_quality()
test_loading_sensor_angles() (in module (satpy.tests.reader_tests.test_seviri_l1b_nc.TestNCSEVIRIFileHan
satpy.tests.reader_tests.test_sgli_l1b), 547 method), 546
test_loading_solar_angles() (in module test_mask_space() (satpy.tests.reader_tests.test_ahi_hrit.TestHRITJMAF
satpy.tests.reader_tests.test_sgli_l1b), 547 method), 434
test_logging_on_and_off() (in module test_masking() (satpy.tests.test_composites.TestGenericCompositor
satpy.tests.test_utils), 631 method), 595
test_longitude() (in module test_masking() (satpy.tests.test_composites.TestLongitudeMaskingCompo
satpy.tests.reader_tests.test_gld360_ualf2), method), 597
475 test_masking_limit_default_value_is_not_none()
test_longitude() (satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
(satpy.tests.test_modifiers.TestNIRReflectance
method), 494 method), 615
test_longitudes_are_returned() test_match_data_arrays()
(satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTNavigation
(satpy.tests.test_composites.TestRatioSharpenedCompositors

Index 879
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 600 test_missing_requirements()


test_match_filenames() (satpy.tests.test_readers.TestReaderLoader
(satpy.tests.test_yaml_reader.TestUtils method), 623
method), 641 test_missing_values_are_masked() (in module
test_match_filenames_windows_forward_slash() satpy.tests.reader_tests.test_sgli_l1b), 547
(satpy.tests.test_yaml_reader.TestUtils test_mixed() (satpy.tests.test_writers.TestComputeWriterResults
method), 641 method), 633
test_mcmip_get_dataset() test_mjd2datetime64()
(satpy.tests.reader_tests.test_abi_l2_nc.TestMCMIPReading(satpy.tests.reader_tests.test_ahi_hrit.TestHRITJMAFileHandler
method), 430 method), 434
test_med_res() (satpy.tests.reader_tests.test_ahi_l1b_gridded_bin.TestAHIGriddedArea
test_mode_is_used()
method), 437 (satpy.tests.test_composites.TestInferMode
test_median() (in module method), 596
satpy.tests.modifier_tests.test_filters), 404 test_modified_with_wl_dep()
test_merge_attributes() (satpy.tests.scene_tests.test_load.TestLoadingComposites
(satpy.tests.reader_tests.test_atms_l1b_nc.TestAtsmsL1bNCFileHandler
method), 575
method), 443 test_modifier_interface_cloud_moves_to_observer()
test_merge_colormaps() (satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionMo
(satpy.tests.enhancement_tests.test_enhancements.TestEnhancementStretch
method), 406
method), 400 test_modifier_interface_fog_no_shift()
test_meris_angles() (satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionMo
(satpy.tests.reader_tests.test_meris_nc.TestMERISReader method), 406
method), 499 test_modifier_loaded_sensor_order()
test_meris_meteo() (satpy.tests.reader_tests.test_meris_nc.TestMERISReader
(satpy.tests.test_dependency_tree.TestMultipleSensors
method), 499 method), 614
test_metadata() (in module test_modis_overview_1000m()
satpy.tests.reader_tests.test_aws1_mwr_l1b), (satpy.tests.test_dependency_tree.TestMultipleResolutionSameCha
450 method), 613
test_metadata() (in module test_more_than_three_datasets()
satpy.tests.reader_tests.test_eps_sterna_mwr_l1b), (satpy.tests.test_composites.TestRatioSharpenedCompositors
456 method), 600
test_metadata() (satpy.tests.reader_tests.modis_tests.test_modis_l3_mcd12q1.TestModisL3MCD12Q1
test_move_existing_caches()
method), 422 (satpy.tests.test_resample.TestBilinearResampler
test_metadata() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.TestMetadata
method), 625
method), 481 test_mpef_product_header()
test_metadata() (satpy.tests.reader_tests.test_oli_tirs_l1_tif.TestOLITIRSL1
(satpy.tests.reader_tests.test_eum_base.TestRecarray2Dict
method), 524 method), 458
test_method_absolute_import() test_mult_ds_area()
(satpy.tests.test_composites.TestMaskingCompositor (satpy.tests.test_composites.TestMatchDataArrays
method), 598 method), 599
test_method_isnan() test_mult_ds_diff_area()
(satpy.tests.test_composites.TestMaskingCompositor (satpy.tests.test_composites.TestMatchDataArrays
method), 598 method), 599
test_milliseconds_to_timedelta() test_mult_ds_diff_dims()
(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2 (satpy.tests.test_composites.TestMatchDataArrays
method), 498 method), 599
test_missing_attributes() test_mult_ds_diff_size()
(satpy.tests.reader_tests.test_grib.TestGRIBReader (satpy.tests.test_composites.TestMatchDataArrays
method), 483 method), 599
test_missing_coefs() test_mult_ds_no_area()
(satpy.tests.reader_tests.test_utils.TestCalibrationCoefficientPicker
(satpy.tests.test_composites.TestMatchDataArrays
method), 551 method), 599
test_missing_esd() (satpy.tests.reader_tests.test_msi_safe.TestSAFEMSIL1C
test_multi_readers()
method), 507 (satpy.tests.test_readers.TestGroupFiles

880 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 621 Test_NC_ABI_L2_area_fixedgrid (class in


test_multi_readers_empty_groups_missing_skip() satpy.tests.reader_tests.test_abi_l2_nc), 431
(satpy.tests.test_readers.TestGroupFiles Test_NC_ABI_L2_area_latlon (class in
method), 622 satpy.tests.reader_tests.test_abi_l2_nc), 431
test_multi_readers_empty_groups_passed() Test_NC_ABI_L2_get_dataset (class in
(satpy.tests.test_readers.TestGroupFiles satpy.tests.reader_tests.test_abi_l2_nc), 431
method), 622 test_ndvi_hybrid_green()
test_multi_readers_empty_groups_raises_filenotfounderror() (satpy.tests.compositor_tests.test_spectral.TestNdviHybridGreenC
(satpy.tests.test_readers.TestGroupFiles method), 397
method), 622 test_ndvi_hybrid_green_dtype()
test_multi_readers_invalid_parameter() (satpy.tests.compositor_tests.test_spectral.TestNdviHybridGreenC
(satpy.tests.test_readers.TestGroupFiles method), 397
method), 622 test_network_type() (in module
test_multi_scene_grouping() satpy.tests.reader_tests.test_gld360_ualf2),
(satpy.tests.multiscene_tests.test_misc.TestMultiSceneGrouping
475
method), 409 test_new_dependency_tree_preserves_unique_empty_node()
test_multiple_geotiff() (satpy.tests.test_dependency_tree.TestDependencyTree
(satpy.tests.test_writers.TestComputeWriterResults method), 613
method), 633 test_new_missing_dependencies()
test_multiple_sensors() (satpy.tests.test_dependency_tree.TestMissingDependencies
(satpy.tests.test_composites.TestBackgroundCompositor method), 613
method), 591 test_new_missing_dependencies_with_message()
test_multiple_simple() (satpy.tests.test_dependency_tree.TestMissingDependencies
(satpy.tests.test_writers.TestComputeWriterResults method), 613
method), 633 test_night_only_area_with_alpha()
test_multiplicity_flash() (in module (satpy.tests.test_composites.TestDayNightCompositor
satpy.tests.reader_tests.test_gld360_ualf2), method), 594
475 test_night_only_area_without_alpha()
test_multisensor_choice() (satpy.tests.test_composites.TestDayNightCompositor
(satpy.tests.test_writers.TestComplexSensorEnhancerConfigsmethod), 594
method), 632 test_night_only_sza_with_alpha()
test_multisensor_exact() (satpy.tests.test_composites.TestDayNightCompositor
(satpy.tests.test_writers.TestComplexSensorEnhancerConfigsmethod), 594
method), 632 test_night_only_sza_without_alpha()
test_multivar_numbered_tiles_glm() (satpy.tests.test_composites.TestDayNightCompositor
(satpy.tests.writer_tests.test_awips_tiled.TestAWIPSTiledWriter
method), 594
method), 580 test_no_args() (satpy.tests.test_readers.TestReaderLoader
test_nanoseconds_index() (in module method), 623
satpy.tests.reader_tests.test_gld360_ualf2), test_no_bands_is_l()
475 (satpy.tests.test_composites.TestInferMode
test_natural_enh() (satpy.tests.test_composites.TestNaturalEnhCompositor
method), 596
method), 599 test_no_cache_dir_fails()
test_navigation() (satpy.tests.reader_tests.test_aapp_l1b.TestAAPPL1BAllChannelsPresent
(satpy.tests.modifier_tests.test_angles.TestAngleGeneration
method), 428 method), 403
test_navigation() (satpy.tests.reader_tests.test_aapp_mhs_amsub_l1c.TestMHS_AMSUB_AAPPL1CReadData
test_no_calibration_values_are_1()
method), 429 (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetUncalib
test_navigation() (satpy.tests.reader_tests.test_eps_l1b.TestEPSL1Bmethod), 446
method), 455 test_no_compute() (satpy.tests.modifier_tests.test_parallax.TestParallaxC
test_navigation() (satpy.tests.reader_tests.test_msi_safe.TestTileXML
method), 406
method), 508 test_no_default_coefs()
Test_NC_ABI_L1B (class in (satpy.tests.reader_tests.test_utils.TestCalibrationCoefficientPicke
satpy.tests.reader_tests.test_abi_l1b), 429 method), 551
Test_NC_ABI_L2_area_AOD (class in test_no_downloads_in_tests()
satpy.tests.reader_tests.test_abi_l2_nc), 430 (satpy.tests.test_data_download.TestDataDownload

Index 881
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 605 method), 408


test_no_enhance() (satpy.tests.test_writers.TestEnhancerUserConfigs
test_non_datetime_group_key()
method), 634 (satpy.tests.test_readers.TestGroupFiles
test_no_enums() (in module method), 622
satpy.tests.test_regressions), 625 test_nondimensional_coords()
test_no_fallback() (satpy.tests.reader_tests.test_utils.TestCalibrationCoefficientPicker
(satpy.tests.test_composites.TestMatchDataArrays
method), 551 method), 599
test_no_gcsfs() (satpy.tests.test_demo.TestGCPUtils test_nonlinear_scaling()
method), 610 (satpy.tests.compositor_tests.test_spectral.TestNdviHybridGreenC
test_no_generate_comp10() method), 397
(satpy.tests.scene_tests.test_load.TestLoadingComposites
test_normalize_vector()
method), 575 (satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.TestSing
test_no_generate_comp10() method), 415
(satpy.tests.scene_tests.test_resampling.TestSceneResampling
test_not_get_segment_info_called_af()
method), 578 (satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader
test_no_matching_reader() method), 464
(satpy.tests.test_writers.TestReaderEnhancerConfigs test_np2str() (satpy.tests.reader_tests.test_utils.TestHelpers
method), 635 method), 552
test_no_nav_donor() test_number_of_datasets()
(satpy.tests.reader_tests.test_clavrx.test_clavrx_geohdf.TestCLAVRXReaderGeo
(satpy.tests.reader_tests.test_cmsaf_claas.TestCLAAS2MultiFile
method), 423 method), 451
test_no_parameters() test_number_of_sensors() (in module
(satpy.tests.test_readers.TestFindFilesAndReaders satpy.tests.reader_tests.test_gld360_ualf2),
method), 620 475
test_no_parameters_both_atms_and_viirs() test_nwcsaf_comps() (in module
(satpy.tests.test_readers.TestFindFilesAndReaders satpy.tests.enhancement_tests.test_enhancements),
method), 620 401
test_no_reader() (satpy.tests.test_readers.TestGroupFilestest_offline_retrieve()
method), 622 (satpy.tests.test_data_download.TestDataDownload
test_no_reader() (satpy.tests.test_writers.TestReaderEnhancerConfigs method), 605
method), 635 test_offline_retrieve_all()
test_no_sunz_no_co2() (satpy.tests.test_data_download.TestDataDownload
(satpy.tests.test_modifiers.TestNIRReflectance method), 605
method), 615 test_olci_angles() (satpy.tests.reader_tests.test_olci_nc.TestOLCIRead
test_no_sunz_with_co2() method), 523
(satpy.tests.test_modifiers.TestNIRReflectance test_olci_meteo() (satpy.tests.reader_tests.test_olci_nc.TestOLCIReade
method), 615 method), 523
test_no_warning_if_backends_match() test_old_reader_name_mapping()
(satpy.tests.writer_tests.test_cf.TestNetcdfEncodingKwargs (satpy.tests.test_readers.TestFindFilesAndReaders
method), 582 method), 620
test_nocompute() (satpy.tests.reader_tests.test_seviri_l1b_icare.TestSEVIRIICAREReader
test_on_dask_array() (in module
method), 542 satpy.tests.enhancement_tests.test_enhancements),
test_nocounts() (satpy.tests.reader_tests.test_msu_gsa_l1b.TestMSUGSABReader
401
method), 508 test_on_separate_bands() (in module
test_node_data_is_copied() satpy.tests.enhancement_tests.test_enhancements),
(satpy.tests.test_node.TestCompositorNodeCopy 401
method), 618 test_only_reader_matches()
test_node_data_optional_nodes_are_copies() (satpy.tests.test_writers.TestReaderEnhancerConfigs
(satpy.tests.test_node.TestCompositorNodeCopy method), 635
method), 618 test_open_dataset() (in module
test_node_data_required_nodes_are_copies() satpy.tests.reader_tests.test_abi_l1b), 430
(satpy.tests.test_node.TestCompositorNodeCopy test_open_dataset() (in module
method), 618 satpy.tests.test_file_handlers), 614
test_nominal() (satpy.tests.multiscene_tests.test_blend.TestTemporalRGB
test_open_file_objects()

882 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(satpy.tests.reader_tests.test_meris_nc.TestMERISReader
test_pad_later_segments_area()
method), 499 (satpy.tests.test_yaml_reader.TestGEOSegmentYAMLReader
test_open_file_objects() method), 641
(satpy.tests.reader_tests.test_olci_nc.TestOLCIReadertest_pad_later_segments_area()
method), 523 (satpy.tests.test_yaml_reader.TestGEOVariableSegmentYAMLRea
test_open_file_or_filename() (in module method), 641
satpy.tests.test_readers), 625 test_pad_later_segments_area_for_multiple_segments_gap()
test_open_file_or_filename_uses_mode() (in (satpy.tests.test_yaml_reader.TestGEOVariableSegmentYAMLRea
module satpy.tests.test_readers), 625 method), 641
test_open_local_fs_file() test_pad_nanoseconds() (in module
(satpy.tests.test_readers.TestFSFile method), satpy.tests.reader_tests.test_gld360_ualf2),
619 475
test_open_regular_file() test_padder_fes_hrv()
(satpy.tests.test_readers.TestFSFile method), (satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeMSGPad
619 method), 543
test_open_zip_fs_openfile() test_padder_rss_roi()
(satpy.tests.test_readers.TestFSFile method), (satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeMSGPad
619 method), 543
test_open_zip_fs_regular_filename() test_palettize() (satpy.tests.enhancement_tests.test_enhancements.Test
(satpy.tests.test_readers.TestFSFile method), method), 400
619 test_parallax_modifier_interface()
test_orbit_number_start_end() (in module (satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionMo
satpy.tests.reader_tests.test_aws1_mwr_l1b), method), 406
450 test_parallax_modifier_interface_with_cloud()
test_orbital_parameters_are_correct() (satpy.tests.modifier_tests.test_parallax.TestParallaxCorrectionMo
(satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFGeomethod), 406
method), 517 test_peak_current() (in module
test_orbital_parameters_attr() satpy.tests.reader_tests.test_gld360_ualf2),
(satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader 475
method), 464 test_pending_old_reader_name_mapping()
test_orthorectify() (satpy.tests.test_readers.TestFindFilesAndReaders
(satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
method), 620
method), 494 test_persist_pass_through()
test_P_image_is_uint8() (satpy.tests.scene_tests.test_data_access.TestComputePersist
(satpy.tests.writer_tests.test_ninjotiff.TestNinjoTIFFWriter method), 571
method), 589 test_piecewise_linear_stretch()
test_pad_data_horizontally() (satpy.tests.enhancement_tests.test_enhancements.TestEnhanceme
(satpy.tests.reader_tests.test_seviri_base.SeviriBaseTest method), 400
static method), 534 test_platform_name()
test_pad_data_horizontally_bad_shape() (satpy.tests.reader_tests.test_aapp_mhs_amsub_l1c.TestMHS_AM
(satpy.tests.reader_tests.test_seviri_base.SeviriBaseTest method), 429
method), 534 test_platform_name()
test_pad_data_vertically() (satpy.tests.reader_tests.test_atms_l1b_nc.TestAtsmsL1bNCFileHa
(satpy.tests.reader_tests.test_seviri_base.SeviriBaseTest method), 443
static method), 534 test_platform_name()
test_pad_data_vertically_bad_shape() (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetUncalib
(satpy.tests.reader_tests.test_seviri_base.SeviriBaseTest method), 447
method), 534 test_platform_name()
test_pad_earlier_segments_area() (satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader
(satpy.tests.test_yaml_reader.TestGEOSegmentYAMLReadermethod), 464
method), 641 test_platform_name()
test_pad_earlier_segments_area() (satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
(satpy.tests.test_yaml_reader.TestGEOVariableSegmentYAMLReader
method), 494
method), 641 test_platform_name()

Index 883
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL1bNCFileHandler
method), 500
method), 512 test_rad_calib() (satpy.tests.reader_tests.test_mersi_l1b.TestMERSIRM
test_plugin_enhancements_generic_sensor() method), 503
(satpy.tests.test_config.TestPluginsConfigs test_radiance_calibration()
method), 603 (satpy.tests.reader_tests.test_slstr_l1b.TestSLSTRCalibration
test_plugin_reader_available_readers() method), 547
(satpy.tests.test_config.TestPluginsConfigs test_range_noise_array()
method), 603 (satpy.tests.reader_tests.test_sar_c_safe.TestSAFEXMLNoise
test_plugin_reader_configs() method), 528
(satpy.tests.test_config.TestPluginsConfigs test_ratio_compositor() (in module
method), 603 satpy.tests.test_composites), 602
test_plugin_writer_available_writers() test_ratio_sharpening()
(satpy.tests.test_config.TestPluginsConfigs (satpy.tests.test_composites.TestRatioSharpenedCompositors
method), 603 method), 600
test_plugin_writer_configs() test_raw_calibrate() (in module
(satpy.tests.test_config.TestPluginsConfigs satpy.tests.reader_tests.test_abi_l1b), 430
method), 603 test_rayleigh_corrector()
test_png_scene_l_mode() (in module (satpy.tests.test_modifiers.TestPSPRayleighReflectance
satpy.tests.reader_tests.test_generic_image), method), 616
470 test_rayleigh_with_angles()
test_png_scene_la_mode() (in module (satpy.tests.test_modifiers.TestPSPRayleighReflectance
satpy.tests.reader_tests.test_generic_image), method), 616
470 test_rc_period_min_error()
test_precompute() (satpy.tests.test_resample.TestBucketAvg (satpy.tests.reader_tests.test_fci_l1c_nc.TestFCIL1cNCReader
method), 626 method), 464
test_preferred_filetype() test_read() (satpy.tests.reader_tests.test_aapp_l1b.TestAAPPL1BAllChan
(satpy.tests.test_yaml_reader.TestFileFileYAMLReader method), 428
method), 638 test_read() (satpy.tests.reader_tests.test_aapp_mhs_amsub_l1c.TestMHS
test_preprocess() (satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.TestDatasetPreprocessor
method), 429
method), 509 test_read_all() (satpy.tests.reader_tests.test_eps_l1b.TestEPSL1B
test_preprocess_dataarray_name() (in module method), 455
satpy.tests.cf_tests.test_dataaarray), 394 test_read_all_assigns_int_scan_lines()
test_pro (satpy.tests.reader_tests.test_electrol_hrit.TestHRITGOMSProFileHandler
(satpy.tests.reader_tests.test_eps_l1b.TestWrongScanlinesEPSL1B
attribute), 453 method), 456
test_pro_reading_gets_unzipped_file() test_read_all_return_right_number_of_scan_lines()
(satpy.tests.reader_tests.test_utils.TestHelpers (satpy.tests.reader_tests.test_eps_l1b.TestWrongScanlinesEPSL1B
method), 552 method), 456
test_proj_units_to_meters() test_read_all_warns_about_scan_lines()
(satpy.tests.test_utils.TestGeoUtils method), (satpy.tests.reader_tests.test_eps_l1b.TestWrongScanlinesEPSL1B
629 method), 456
test_properties() (satpy.tests.multiscene_tests.test_misc.TestMultiScene
test_read_band() (satpy.tests.reader_tests.test_ahi_hsd.TestAHIHSDFile
method), 409 method), 435
test_properties() (satpy.tests.reader_tests.test_hy2_scat_l2b_h5.TestHY2SCATL2BH5Reader
test_read_band() (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRIT
method), 490 method), 538
test_provide_masking_limit() test_read_band_bzipped2_filepath()
(satpy.tests.test_modifiers.TestNIRReflectance (satpy.tests.reader_tests.test_hrit_base.TestHRITFileHandler
method), 615 method), 486
test_provide_sunz_and_threshold() test_read_band_filepath()
(satpy.tests.test_modifiers.TestNIRReflectance (satpy.tests.reader_tests.test_hrit_base.TestHRITFileHandler
method), 615 method), 486
test_provide_sunz_no_co2() test_read_band_filepath()
(satpy.tests.test_modifiers.TestNIRReflectance (satpy.tests.reader_tests.test_hrit_base.TestHRITFileHandlerCom
method), 615 method), 486
test_rad_calib() (satpy.tests.reader_tests.test_mersi_l1b.MERSI12llL1BTester
test_read_band_from_actual_file()

884 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(satpy.tests.reader_tests.test_ahi_hsd.TestAHIHSDFileHandler (satpy.tests.reader_tests.test_satpy_cf_nc.TestCFReader
method), 435 method), 530
test_read_band_FSFile() test_read_raw_data()
(satpy.tests.reader_tests.test_hrit_base.TestHRITFileHandler(satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGACLACFile
method), 486 method), 449
test_read_band_gzip_stream() test_read_vgac() (satpy.tests.reader_tests.test_viirs_vgac_l1c_nc.TestVG
(satpy.tests.reader_tests.test_hrit_base.TestHRITFileHandlermethod), 568
method), 486 test_reader_and_name_match()
test_read_calibrated_dB() (satpy.tests.test_writers.TestReaderEnhancerConfigs
(satpy.tests.reader_tests.test_sar_c_safe.TestSAFEGRD method), 635
method), 527 test_reader_creation()
test_read_calibrated_natural() (satpy.tests.reader_tests.test_amsr2_l2_gaasp.TestGAASPReader
(satpy.tests.reader_tests.test_sar_c_safe.TestSAFEGRD method), 442
method), 527 test_reader_creation()
test_read_dataset() (satpy.tests.reader_tests.test_clavrx.test_clavrx_nc.TestCLAVRXR
(satpy.tests.reader_tests.test_iasi_l2.TestIasiL2 method), 424
method), 491 test_reader_load_failed()
test_read_geo() (satpy.tests.reader_tests.test_iasi_l2.TestIasiL2 (satpy.tests.test_readers.TestFindFilesAndReaders
method), 491 method), 620
test_read_header() (in module test_reader_name() (satpy.tests.test_readers.TestFindFilesAndReaders
satpy.tests.reader_tests.test_seviri_l1b_native), method), 620
545 test_reader_name_matched_end_time()
test_read_header() (satpy.tests.reader_tests.test_ahi_hsd.TestAHIHSDFileHandler
(satpy.tests.test_readers.TestFindFilesAndReaders
method), 435 method), 620
test_read_hrv_band() test_reader_name_matched_start_end_time()
(satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGFileHandlerHRV
(satpy.tests.test_readers.TestFindFilesAndReaders
method), 538 method), 620
test_read_lon_lats() test_reader_name_matched_start_time()
(satpy.tests.reader_tests.test_sar_c_safe.TestSAFEGRD (satpy.tests.test_readers.TestFindFilesAndReaders
method), 527 method), 620
test_read_mda() (satpy.tests.reader_tests.test_hdfeos_base.TestReadMDA
test_reader_name_unmatched_start_end_time()
method), 486 (satpy.tests.test_readers.TestFindFilesAndReaders
test_read_mda_geo_resolution() method), 620
(satpy.tests.reader_tests.test_hdfeos_base.TestReadMDA
test_reader_other_name()
method), 486 (satpy.tests.test_readers.TestFindFilesAndReaders
test_read_physical_seviri_nat_file() (in mod- method), 620
ule satpy.tests.reader_tests.test_seviri_l1b_native),test_reading() (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTRe
545 method), 447
test_read_prefixed_channels() test_reading_attrs()
(satpy.tests.reader_tests.test_satpy_cf_nc.TestCFReader (satpy.tests.reader_tests.test_hy2_scat_l2b_h5.TestHY2SCATL2BH
method), 530 method), 490
test_read_prefixed_channels_by_user() test_reading_attrs_nsoas()
(satpy.tests.reader_tests.test_satpy_cf_nc.TestCFReader (satpy.tests.reader_tests.test_hy2_scat_l2b_h5.TestHY2SCATL2BH
method), 530 method), 490
test_read_prefixed_channels_by_user2() test_reading_from_reader() (in module
(satpy.tests.reader_tests.test_satpy_cf_nc.TestCFReader satpy.tests.reader_tests.test_sar_c_safe),
method), 530 529
test_read_prefixed_channels_by_user_include_prefix() test_realistic_colors()
(satpy.tests.reader_tests.test_satpy_cf_nc.TestCFReader (satpy.tests.test_composites.TestRealisticColors
method), 530 method), 601
test_read_prefixed_channels_by_user_no_prefix() test_reduce() (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSG
(satpy.tests.reader_tests.test_satpy_cf_nc.TestCFReader method), 537
method), 530 test_reduce() (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSG
test_read_prefixed_channels_include_orig_name() method), 539

Index 885
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_reduce_mda() (satpy.tests.reader_tests.test_utils.TestHelpers method), 578


method), 552 test_resample_multi_ancillary()
test_refl_calibration() (satpy.tests.scene_tests.test_resampling.TestSceneResampling
(satpy.tests.reader_tests.test_epic_l1b_h5.TestEPICL1bReader method), 578
method), 454 test_resample_reduce_data()
test_reflectance_calibration() (satpy.tests.scene_tests.test_resampling.TestSceneResampling
(satpy.tests.reader_tests.test_slstr_l1b.TestSLSTRCalibrationmethod), 578
method), 547 test_resample_reduce_data_toggle()
test_reflectance_corrector_abi() (satpy.tests.scene_tests.test_resampling.TestSceneResampling
(satpy.tests.modifier_tests.test_crefl.TestReflectanceCorrectorModifier
method), 578
method), 404 test_resample_scene_copy()
test_reflectance_corrector_bad_prereqs() (satpy.tests.scene_tests.test_resampling.TestSceneResampling
(satpy.tests.modifier_tests.test_crefl.TestReflectanceCorrectorModifier
method), 578
method), 404 test_resample_scene_preserves_requested_dependencies()
test_reflectance_corrector_different_chunks() (satpy.tests.scene_tests.test_resampling.TestSceneResampling
(satpy.tests.modifier_tests.test_crefl.TestReflectanceCorrectorModifier
method), 578
method), 404 test_resolution() (satpy.tests.reader_tests.test_eum_l2_bufr.TestL2Bufr
test_reflectance_corrector_modis() method), 459
(satpy.tests.modifier_tests.test_crefl.TestReflectanceCorrectorModifier
test_resolution_chunking() (in module
method), 404 satpy.tests.test_utils), 631
test_reflectance_corrector_viirs() test_retrieve() (satpy.tests.test_data_download.TestDataDownload
(satpy.tests.modifier_tests.test_crefl.TestReflectanceCorrectorModifier
method), 605
method), 404 test_retrieve_all()
test_region() (satpy.tests.reader_tests.test_ahi_hsd.TestAHIHSDNavigation
(satpy.tests.test_data_download.TestDataDownload
method), 436 method), 605
test_regular_filename_is_returned_with_str() test_rgb_dataset() (satpy.tests.test_composites.TestMaskingCompositor
(satpy.tests.test_readers.TestFSFile method), method), 598
620 test_rgba_dataset()
test_reinhard() (satpy.tests.enhancement_tests.test_enhancements.TestEnhancementStretch
(satpy.tests.test_composites.TestMaskingCompositor
method), 400 method), 598
test_relative_azimuth_calculation() test_roll_dataset()
(satpy.tests.modifier_tests.test_angles.TestAngleGeneration (satpy.tests.reader_tests.test_smos_l2_wind.TestSMOSL2WINDRe
method), 403 method), 549
test_remove_sunearth_corr() test_round_nom_time()
(satpy.tests.reader_tests.test_utils.TestSunEarthDistanceCorrection
(satpy.tests.reader_tests.test_seviri_base.SeviriBaseTest
method), 552 method), 534
test_repeat_cycle_duration() test_sampling_to_lfac_cfac()
(satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeMSGDataset
(satpy.tests.reader_tests.test_geos_area.TestGEOSProjectionUtil
method), 542 method), 472
test_repeat_cycle_duration() test_sar_ice() (satpy.tests.compositor_tests.test_sar.TestSARComposites
(satpy.tests.reader_tests.test_seviri_l1b_nc.TestNCSEVIRIFileHandler
method), 397
method), 546 test_sar_ice_log() (satpy.tests.compositor_tests.test_sar.TestSARComp
test_report_datetimes() method), 397
(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2 test_sat_status (satpy.tests.reader_tests.test_electrol_hrit.TestHRITGOM
method), 498 attribute), 454
test_repr_includes_filename() test_satpos_no_valid_orbit_polynomial()
(satpy.tests.test_readers.TestFSFile method), (satpy.tests.reader_tests.test_seviri_l1b_hrit.TestHRITMSGFileHa
620 method), 538
test_resample() (satpy.tests.test_resample.TestBucketAvgtest_satpos_no_valid_orbit_polynomial()
method), 626 (satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeMSGDa
test_resample() (satpy.tests.test_resample.TestBucketFraction method), 543
method), 627 test_satpos_no_valid_orbit_polynomial()
test_resample_ancillary() (satpy.tests.reader_tests.test_seviri_l1b_nc.TestNCSEVIRIFileHan
(satpy.tests.scene_tests.test_resampling.TestSceneResampling method), 546

886 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_satpy_load_array() (in module (satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter


satpy.tests.reader_tests.test_insat3d_img_l1b_h5), method), 584
496 test_save_datasets_bad_writer()
test_satpy_load_two_arrays() (in module (satpy.tests.scene_tests.test_saving.TestSceneSaving
satpy.tests.reader_tests.test_insat3d_img_l1b_h5), method), 578
496 test_save_datasets_by_ext()
test_save_array() (satpy.tests.writer_tests.test_cf.TestCFWriter (satpy.tests.scene_tests.test_saving.TestSceneSaving
method), 581 method), 578
test_save_array_coords() test_save_datasets_default()
(satpy.tests.writer_tests.test_cf.TestCFWriter (satpy.tests.scene_tests.test_saving.TestSceneSaving
method), 581 method), 579
test_save_dataset_a_digit() test_save_datasets_distributed_delayed()
(satpy.tests.writer_tests.test_cf.TestCFWriter (satpy.tests.multiscene_tests.test_save_animation.TestMultiSceneS
method), 581 method), 410
test_save_dataset_a_digit_no_prefix_include_attr() test_save_datasets_distributed_source_target()
(satpy.tests.writer_tests.test_cf.TestCFWriter (satpy.tests.multiscene_tests.test_save_animation.TestMultiSceneS
method), 581 method), 410
test_save_dataset_a_digit_prefix() test_save_datasets_missing_wishlist()
(satpy.tests.writer_tests.test_cf.TestCFWriter (satpy.tests.scene_tests.test_saving.TestSceneSaving
method), 581 method), 579
test_save_dataset_a_digit_prefix_include_attr() test_save_datasets_sensor_set()
(satpy.tests.writer_tests.test_cf.TestCFWriter (satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
method), 581 method), 585
test_save_dataset_default() test_save_datasets_simple()
(satpy.tests.scene_tests.test_saving.TestSceneSaving (satpy.tests.multiscene_tests.test_save_animation.TestMultiSceneS
method), 578 method), 410
test_save_dataset_dynamic_filename() test_save_mp4() (in module
(satpy.tests.test_writers.TestBaseWriter satpy.tests.multiscene_tests.test_save_animation),
method), 632 410
test_save_dataset_dynamic_filename_with_dir() test_save_mp4_distributed()
(satpy.tests.test_writers.TestBaseWriter (satpy.tests.multiscene_tests.test_save_animation.TestMultiSceneS
method), 632 method), 410
test_save_dataset_palette() test_save_mp4_no_distributed()
(satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter (satpy.tests.multiscene_tests.test_save_animation.TestMultiSceneS
method), 584 method), 410
test_save_dataset_static_filename() test_save_one_dataset()
(satpy.tests.test_writers.TestBaseWriter (satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
method), 632 method), 585
test_save_dataset_with_bad_value() test_save_one_dataset_sensor_set()
(satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter (satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
method), 584 method), 585
test_save_dataset_with_calibration() test_scale_data() (satpy.tests.reader_tests.test_clavrx.test_clavrx_nc.Te
(satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter method), 424
method), 584 test_scale_dataset_attr_removal()
test_save_dataset_with_calibration_error_one_dataset()(satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFGeo
(satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter method), 517
method), 584 test_scale_dataset_floating()
test_save_dataset_with_calibration_one_dataset() (satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFGeo
(satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter method), 517
method), 584 test_scale_dataset_floating_nwcsaf_geo_ctth()
test_save_dataset_with_missing_palette() (satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFGeo
(satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter method), 517
method), 584 test_scale_dataset_uint8_noop()
test_save_datasets() (satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFGeo

Index 887
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 517 method), 492


test_scale_offset() test_scene_load_pressure()
(satpy.tests.writer_tests.test_geotiff.TestGeoTIFFWriter (satpy.tests.reader_tests.test_iasi_l2.TestIasiL2
method), 583 method), 492
test_scene() (satpy.tests.reader_tests.test_ascat_l2_soilmoisture_bufr.TesitAscatL2SoilmoistureBufr
test_scene_load_sensing_times()
method), 443 (satpy.tests.reader_tests.test_iasi_l2.TestIasiL2
test_scene() (satpy.tests.reader_tests.test_iasi_l2.TestIasiL2 method), 492
method), 491 test_scene_loading()
test_scene() (satpy.tests.reader_tests.test_iasi_l2_so2_bufr.TestIasiL2So2Bufr
(satpy.tests.reader_tests.test_ahi_hsd.TestAHIHSDFileHandler
method), 492 method), 435
test_scene_attributes() (in module test_segment() (satpy.tests.reader_tests.test_ahi_hsd.TestAHIHSDNaviga
satpy.tests.reader_tests.test_gld360_ualf2), method), 436
475 test_segments_sorting()
test_scene_available_datasets() (satpy.tests.test_yaml_reader.TestGEOSegmentYAMLReader
(satpy.tests.reader_tests.modis_tests.test_modis_l1b.TestModisL1b
method), 641
method), 421 test_select_dataset()
test_scene_available_datasets() (satpy.tests.reader_tests.test_atms_l1b_nc.TestAtsmsL1bNCFileHa
(satpy.tests.reader_tests.modis_tests.test_modis_l2.TestModisL2
method), 443
method), 422 test_select_from_directory()
test_scene_available_datasets() (satpy.tests.test_yaml_reader.TestFileFileYAMLReader
(satpy.tests.reader_tests.modis_tests.test_modis_l3.TestModisL3
method), 638
method), 422 test_select_from_pathnames()
test_scene_available_datasets() (satpy.tests.test_yaml_reader.TestFileFileYAMLReader
(satpy.tests.reader_tests.modis_tests.test_modis_l3_mcd12q1.TestModisL3MCD12Q1
method), 638
method), 422 test_select_from_pathnames()
test_scene_available_datasets() (satpy.tests.test_yaml_reader.TestFileFileYAMLReaderMultiplePa
(satpy.tests.reader_tests.test_goci2_l2_nc.TestGOCI2Readermethod), 639
method), 477 test_self_sharpened_basic()
test_scene_available_datasets() (satpy.tests.test_composites.TestRatioSharpenedCompositors
(satpy.tests.reader_tests.test_oci_l2_bgc.TestSEADAS method), 600
method), 522 test_self_sharpened_no_high_res()
test_scene_available_datasets() (satpy.tests.test_composites.TestRatioSharpenedCompositors
(satpy.tests.reader_tests.test_seadas_l2.TestSEADAS method), 601
method), 532 test_sensor() (satpy.tests.reader_tests.test_atms_l1b_nc.TestAtsmsL1bNC
test_scene_dataset_values() method), 443
(satpy.tests.reader_tests.test_ascat_l2_soilmoisture_bufr.TesitAscatL2SoilmoistureBufr
test_sensor() (satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileH
method), 443 method), 494
test_scene_dataset_values() test_sensor() (satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL1bNCF
(satpy.tests.reader_tests.test_iasi_l2_so2_bufr.TestIasiL2So2Bufr
method), 512
method), 492 test_sensor() (satpy.tests.test_readers.TestFindFilesAndReaders
test_scene_load() (in module method), 621
satpy.tests.reader_tests.test_gld360_ualf2), test_sensor_name() (satpy.tests.reader_tests.test_aapp_mhs_amsub_l1c
475 method), 429
test_scene_load_available_datasets() test_sensor_name_platform()
(satpy.tests.reader_tests.test_ascat_l2_soilmoisture_bufr.TesitAscatL2SoilmoistureBufr
(satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFGeo
method), 443 method), 517
test_scene_load_available_datasets() test_sensor_name_sat_id()
(satpy.tests.reader_tests.test_iasi_l2.TestIasiL2 (satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFGeo
method), 491 method), 517
test_scene_load_available_datasets() test_sensor_names()
(satpy.tests.reader_tests.test_iasi_l2_so2_bufr.TestIasiL2So2Bufr
(satpy.tests.reader_tests.test_seviri_l1b_icare.TestSEVIRIICARER
method), 492 method), 542
test_scene_load_emissivity() test_sensor_names_added_datasets()
(satpy.tests.reader_tests.test_iasi_l2.TestIasiL2 (satpy.tests.scene_tests.test_data_access.TestDataAccessMethods

888 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 572 method), 590


test_sensor_names_readers() test_simple_write_two_bands()
(satpy.tests.scene_tests.test_data_access.TestDataAccessMethods
(satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter
method), 572 method), 585
test_sensor_no_files() test_simulated_green()
(satpy.tests.test_readers.TestFindFilesAndReaders (satpy.tests.compositor_tests.test_abi.TestABIComposites
method), 621 method), 396
test_serializable() test_simulated_red()
(satpy.tests.test_yaml_reader.TestFileFileYAMLReaderMultiplePatterns
(satpy.tests.compositor_tests.test_agri.TestAGRIComposites
method), 639 method), 396
test_serialization_with_readers_and_data_arr()test_single_composite_loading()
(satpy.tests.scene_tests.test_conversions.TestSceneSerialization
(satpy.tests.scene_tests.test_load.TestLoadingComposites
method), 570 method), 575
test_setitem() (satpy.tests.scene_tests.test_data_access.TestDataAccessMethods
test_single_ds() (satpy.tests.test_composites.TestMatchDataArrays
method), 572 method), 599
test_setitem() (satpy.tests.test_readers.TestDatasetDict test_single_time_value()
method), 619 (satpy.tests.writer_tests.test_cf.TestCFWriter
test_seviri_data_reading() (in module method), 581
satpy.tests.reader_tests.test_eum_l2_grib), test_slice() (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGACLAC
459 method), 449
test_seviri_hrv_has_priority_over_vis008() test_snow_age() (satpy.tests.compositor_tests.test_viirs.TestVIIRSCompo
(satpy.tests.test_dataset.TestIDQueryInteractions method), 399
method), 608 test_solar_azimuth()
test_show() (satpy.tests.test_writers.TestWritersModule (satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
method), 635 method), 494
test_show_missing_specific_version() test_solar_zenith()
(satpy.tests.test_utils.TestShowVersions (satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
method), 630 method), 494
test_show_specific_version() test_solazi_correction()
(satpy.tests.test_utils.TestShowVersions (satpy.tests.modifier_tests.test_angles.TestAngleGeneration
method), 630 method), 403
test_sigma_calibration_array() test_sort_dataids()
(satpy.tests.reader_tests.test_sar_c_safe.TestSAFEXMLCalibration
(satpy.tests.test_dataset.TestIDQueryInteractions
method), 528 method), 608
test_signal_indicator() (in module test_sort_dataids_with_different_set_of_keys()
satpy.tests.reader_tests.test_gld360_ualf2), (satpy.tests.test_dataset.TestIDQueryInteractions
475 method), 608
test_simple_delayed_write() test_sorting_fsfiles()
(satpy.tests.writer_tests.test_geotiff.TestGeoTIFFWriter (satpy.tests.test_readers.TestFSFile method),
method), 583 620
test_simple_delayed_write() test_specific_check_satpy()
(satpy.tests.writer_tests.test_simple_image.TestPillowWriter (satpy.tests.test_utils.TestCheckSatpy method),
method), 590 629
test_simple_image() test_spectral_blender()
(satpy.tests.test_writers.TestComputeWriterResults (satpy.tests.compositor_tests.test_spectral.TestSpectralComposites
method), 633 method), 398
test_simple_write() test_ssp_lon() (satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFil
(satpy.tests.writer_tests.test_geotiff.TestGeoTIFFWriter method), 494
method), 583 test_stacked_area_definitions() (in module
test_simple_write() satpy.tests.reader_tests.test_seviri_l1b_native),
(satpy.tests.writer_tests.test_mitiff.TestMITIFFWriter 545
method), 585 test_standardize_dims()
test_simple_write() (satpy.tests.reader_tests.test_atms_l1b_nc.TestAtsmsL1bNCFileHa
(satpy.tests.writer_tests.test_simple_image.TestPillowWriter method), 443

Index 889
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

test_standardize_dims() satpy.tests.reader_tests.test_ahi_l2_nc), 438


(satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
test_storage_options_from_reader_kwargs_no_options()
method), 495 (satpy.tests.scene_tests.test_init.TestScene
test_standardize_dims() method), 573
(satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL1bNCFileHandler
test_storage_options_from_reader_kwargs_per_reader()
method), 512 (satpy.tests.scene_tests.test_init.TestScene
test_standardize_dims() method), 573
(satpy.tests.reader_tests.test_vii_base_nc.TestViiNCBaseFileHandler
test_storage_options_from_reader_kwargs_per_reader_and_glo
method), 553 (satpy.tests.scene_tests.test_init.TestScene
test_start_end_time() (in module method), 573
satpy.tests.reader_tests.test_aws1_mwr_l1b), test_storage_options_from_reader_kwargs_single_dict()
451 (satpy.tests.scene_tests.test_init.TestScene
test_start_end_time() method), 573
(satpy.tests.reader_tests.test_goci2_l2_nc.TestGOCI2Reader
test_storage_options_from_reader_kwargs_single_dict_no_opt
method), 477 (satpy.tests.scene_tests.test_init.TestScene
test_start_end_time() method), 573
(satpy.tests.reader_tests.test_hrit_base.TestHRITFileHandler
test_str_ids() (in module
method), 486 satpy.tests.writer_tests.test_ninjogeotiff ),
test_start_end_time() 588
(satpy.tests.reader_tests.test_msi_safe.TestSAFEMSIL1C
test_strip_invalid_lat()
method), 507 (satpy.tests.reader_tests.test_avhrr_l1b_gaclac.TestGACLACFile
test_start_end_time() method), 449
(satpy.tests.test_yaml_reader.TestFileFileYAMLReader
test_sub_area() (satpy.tests.reader_tests.test_utils.TestHelpers
method), 638 method), 552
test_start_end_times() test_sub_satellite_latitude_end()
(satpy.tests.scene_tests.test_init.TestScene (satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL1bNCFileHan
method), 573 method), 512
test_start_time() (in module test_sub_satellite_latitude_start()
satpy.tests.reader_tests.test_sgli_l1b), 547 (satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL1bNCFileHan
test_start_time() (satpy.tests.reader_tests.test_atms_l1b_nc.TestAtsmsL1bNCFileHandler
method), 512
method), 443 test_sub_satellite_longitude_end()
test_start_time() (satpy.tests.reader_tests.test_cmsaf_claas.TestCLAAS2SingleFile
(satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL1bNCFileHan
method), 452 method), 512
test_start_time() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.GOESNCBaseFileHandlerTest
test_sub_satellite_longitude_start()
method), 480 (satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL1bNCFileHan
test_start_time() (satpy.tests.reader_tests.test_ici_l1b_nc.TestIciL1bNCFileHandler
method), 512
method), 495 test_sum_compositor() (in module
test_start_time() (satpy.tests.reader_tests.test_msi_safe.TestTileXML
satpy.tests.test_composites), 602
method), 508 test_sunz_threshold_default_value_is_not_none()
test_start_time() (satpy.tests.reader_tests.test_mws_l1b_nc.TestMwsL1bNCFileHandler
(satpy.tests.test_modifiers.TestNIRReflectance
method), 512 method), 615
test_start_time() (satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFGeo
test_supports_sensor()
method), 517 (satpy.tests.test_yaml_reader.TestFileFileYAMLReader
test_start_time() (satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFPPS
method), 638
method), 518 test_swath_coordinates()
test_start_time() (satpy.tests.reader_tests.test_oceancolorcci_l3_nc.TestOCCCIReader
(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
method), 521 method), 498
test_start_time_from_aqc_time() test_swath_def_contains_gcps_and_bounding_box()
(satpy.tests.reader_tests.test_ahi_hrit.TestHRITJMAFileHandler
(in module satpy.tests.reader_tests.test_sar_c_safe),
method), 434 529
test_start_time_from_filename() test_swath_def_coordinates()
(satpy.tests.reader_tests.test_ahi_hrit.TestHRITJMAFileHandler
(satpy.tests.test_resample.TestCoordinateHelpers
method), 434 method), 627
test_startend() (in module test_tags() (satpy.tests.writer_tests.test_geotiff.TestGeoTIFFWriter

890 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 583 test_to_xarray_dataset_with_empty_scene()


test_three_d_effect() (satpy.tests.scene_tests.test_conversions.TestSceneConversions
(satpy.tests.enhancement_tests.test_enhancements.TestEnhancementStretch
method), 570
method), 400 test_to_xarray_with_multiple_area_scene()
test_tiled_value_from_config() (satpy.tests.scene_tests.test_conversions.TestToXarrayConversion
(satpy.tests.writer_tests.test_geotiff.TestGeoTIFFWriter method), 571
method), 583 test_too_many_datasets()
test_time() (in module (satpy.tests.test_composites.TestCategoricalDataCompositor
satpy.tests.reader_tests.test_gld360_ualf2), method), 592
475 test_transform_earth_fixed_to_geodetic_coords()
test_time() (satpy.tests.reader_tests.test_seviri_l1b_native.TestNativeMSGDataset
(satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.TestSing
method), 543 method), 415
test_time() (satpy.tests.reader_tests.test_seviri_l1b_nc.TestNCSEVIRIFileHandler
test_transform_image_coords_to_scanning_angles()
method), 546 (satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.TestSing
test_time_attributes() method), 415
(satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileHandler
test_transform_satellite_to_earth_fixed_coords()
method), 413 (satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.TestSing
test_time_cache() (satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc.TestFiduceoMviriFileHandlers
method), 415
method), 510 test_transform_scanning_angles_to_satellite_coords()
test_time_coordinate_on_a_swath() (satpy.tests.reader_tests.gms.test_gms5_vissr_navigation.TestSing
(satpy.tests.writer_tests.test_cf.TestCFWriter method), 415
method), 581 test_try_get_data_not_in_file() (in module
test_time_properties() satpy.tests.reader_tests.test_aws1_mwr_l1b),
(satpy.tests.reader_tests.test_ahi_hsd.TestAHIHSDFileHandler 451
method), 435 test_try_get_data_not_in_file() (in module
test_time_properties() satpy.tests.reader_tests.test_eps_sterna_mwr_l1b),
(satpy.tests.reader_tests.test_iasi_l2.TestIasiL2 457
method), 492 test_two_instruments_files()
test_timelines() (satpy.tests.reader_tests.test_ahi_hsd.TestNominalTimeCalculator
(satpy.tests.test_readers.TestGroupFiles
method), 436 method), 622
test_times() (satpy.tests.reader_tests.test_epic_l1b_h5.TestEPICL1bReader
test_two_instruments_files_split()
method), 454 (satpy.tests.test_readers.TestGroupFiles
test_times_are_in_dataset_attributes() method), 622
(satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFGeo
test_type_preserve()
method), 517 (satpy.tests.test_resample.TestHLResample
test_times_correct() method), 628
(satpy.tests.reader_tests.test_agri_l1.Test_HDF_AGRI_L1_cal
test_ualf2_record_type() (in module
method), 433 satpy.tests.reader_tests.test_gld360_ualf2),
test_timeseries() (satpy.tests.multiscene_tests.test_blend.TestBlendFuncs
476
method), 408 test_uint8_remains_uint8()
test_timestamps() (satpy.tests.reader_tests.test_eum_base.TestRecarray2Dict
(satpy.tests.reader_tests.test_nwcsaf_nc.TestNcNWCSAFGeo
method), 458 method), 517
test_timing_indicator() (in module test_uncalibrated_channel_3a_masking()
satpy.tests.reader_tests.test_gld360_ualf2), (satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTChannel3
475 method), 446
test_tmp_dir_is_writable() test_unify_chunks() (in module
(satpy.tests.test_config.TestConfigObject satpy.tests.test_utils), 631
method), 603 test_unit_from_file()
test_to_image_1d() (satpy.tests.test_writers.TestWritersModule (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCFileHandler
method), 635 method), 467
test_to_image_2d() (satpy.tests.test_writers.TestWritersModule
test_units_from_file()
method), 635 (satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCFileHandler
test_to_image_3d() (satpy.tests.test_writers.TestWritersModule method), 467
method), 635 test_units_from_yaml()

Index 891
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCFileHandler
476
method), 467 test_viirs() (satpy.tests.enhancement_tests.test_viirs.TestVIIRSEnhance
test_units_length_warning() method), 402
(satpy.tests.writer_tests.test_awips_tiled.TestAWIPSTiledWriter
test_viirs_orbits()
method), 580 (satpy.tests.test_readers.TestGroupFiles
test_units_none_conversion() method), 622
(satpy.tests.reader_tests.test_fci_l2_nc.TestFciL2NCFileHandler
test_viirs_override_keys()
method), 467 (satpy.tests.test_readers.TestGroupFiles
test_unknown_files() method), 622
(satpy.tests.test_readers.TestGroupFiles test_vis_cal() (satpy.tests.reader_tests.test_msu_gsa_l1b.TestMSUGSAB
method), 622 method), 509
test_unknown_mode() test_vis_calibrate() (in module
(satpy.tests.reader_tests.test_utils.TestCalibrationCoefficientPicker
satpy.tests.reader_tests.test_abi_l1b), 430
method), 551 test_vis_calibrate()
test_unlimited_dims_kwarg() (satpy.tests.reader_tests.test_seviri_l1b_calibration.TestSEVIRICa
(satpy.tests.writer_tests.test_cf.TestCFWriter method), 536
method), 581 test_viscounts2radiance()
test_unregistered_dataset_loading() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.GOESNCBas
(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2 method), 480
method), 498 test_warning_if_backends_dont_match()
test_unzip_file() (satpy.tests.reader_tests.test_utils.TestHelpers (satpy.tests.writer_tests.test_cf.TestNetcdfEncodingKwargs
method), 552 method), 582
test_unzip_FSFile() test_wave_form_max_rate_of_rise() (in module
(satpy.tests.reader_tests.test_utils.TestHelpers satpy.tests.reader_tests.test_gld360_ualf2), 476
method), 552 test_wave_form_peak_to_zero_time() (in module
test_update_ds_ids_from_file_handlers() satpy.tests.reader_tests.test_gld360_ualf2), 476
(satpy.tests.test_yaml_reader.TestFileFileYAMLReaderMultipleFileTypes
test_wave_form_rise_time() (in module
method), 639 satpy.tests.reader_tests.test_gld360_ualf2),
test_updated_calibrate() 476
(satpy.tests.reader_tests.test_ahi_hsd.TestAHICalibration
test_wavelength_range() (in module
method), 435 satpy.tests.test_dataset), 609
test_use_h5netcdf_for_file_not_accessible_locally() test_wavelength_range_cf_roundtrip() (in mod-
(satpy.tests.reader_tests.test_netcdf_utils.TestNetCDF4FsspecFileHandler
ule satpy.tests.test_dataset), 609
method), 514 test_with_area_def()
test_user_calibration() (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
(satpy.tests.reader_tests.test_ahi_hsd.TestAHICalibration method), 498
method), 435 test_with_area_def_pixel_placement()
test_user_radiance_corr() (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
(satpy.tests.reader_tests.test_ami_l1b.TestAMIL1bNetCDFIRCal method), 499
method), 440 test_with_area_def_vars_with_no_pattern()
test_using_map_blocks() (in module (satpy.tests.reader_tests.test_li_l2_nc.TestLIL2
satpy.tests.enhancement_tests.test_enhancements), method), 499
401 test_with_empty_scene()
test_vaisala_gld360() (satpy.tests.scene_tests.test_conversions.TestToXarrayConversion
(satpy.tests.reader_tests.test_vaisala_gld360.TestVaisalaGLD360TextFileHandler
method), 571
method), 552 test_with_single_area_scene_type()
test_var_path_exists() (satpy.tests.scene_tests.test_conversions.TestToXarrayConversion
(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2 method), 571
method), 498 test_with_slightly_mismatching_coord_input()
test_variable_scaling() (satpy.tests.compositor_tests.test_spectral.TestNdviHybridGreenC
(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2 method), 398
method), 498 test_with_time() (satpy.tests.cf_tests.test_encoding.TestUpdateEncoding
test_vhf_range() (in module method), 395
satpy.tests.reader_tests.test_gld360_ualf2), test_without_area_def()

892 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

(satpy.tests.reader_tests.test_li_l2_nc.TestLIL2 method), 623


method), 499 TestAAPPL1BAllChannelsPresent (class in
test_without_time() satpy.tests.reader_tests.test_aapp_l1b), 427
(satpy.tests.cf_tests.test_encoding.TestUpdateEncoding
TestAAPPL1BChannel3AMissing (class in
method), 395 satpy.tests.reader_tests.test_aapp_l1b), 428
test_write_and_read_file() (in module TestABIComposites (class in
satpy.tests.writer_tests.test_ninjogeotiff ), satpy.tests.compositor_tests.test_abi), 395
588 TestABIEnhancement (class in
test_write_and_read_file_LA() (in module satpy.tests.enhancement_tests.test_abi), 399
satpy.tests.writer_tests.test_ninjogeotiff ), 588 TestACSPOReader (class in
test_write_and_read_file_P() (in module satpy.tests.reader_tests.test_acspo), 432
satpy.tests.writer_tests.test_ninjogeotiff ), TestAddBands (class in satpy.tests.test_composites), 591
588 TestAggrVIIRSSDRReader (class in
test_write_and_read_file_RGB() (in module satpy.tests.reader_tests.test_viirs_sdr), 566
satpy.tests.writer_tests.test_ninjogeotiff ), 588 TestAGRIComposites (class in
test_write_and_read_file_units() (in module satpy.tests.compositor_tests.test_agri), 396
satpy.tests.writer_tests.test_ninjogeotiff ), 588 TestAHICalibration (class in
test_write_and_read_from_two_files() satpy.tests.reader_tests.test_ahi_hsd), 435
(satpy.tests.reader_tests.test_satpy_cf_nc.TestCFReader
TestAHIComposites (class in
method), 530 satpy.tests.compositor_tests.test_ahi), 396
test_write_and_read_no_quantity() (in module TestAHIDemoDownload (class in satpy.tests.test_demo),
satpy.tests.writer_tests.test_ninjogeotiff ), 588 609
test_write_and_read_via_scene() (in module TestAHIGriddedArea (class in
satpy.tests.writer_tests.test_ninjogeotiff ), 588 satpy.tests.reader_tests.test_ahi_l1b_gridded_bin),
test_write_and_read_with_area_definition() 436
(satpy.tests.reader_tests.test_satpy_cf_nc.TestCFReader
TestAHIGriddedFileCalibration (class in
method), 530 satpy.tests.reader_tests.test_ahi_l1b_gridded_bin),
test_write_and_read_with_swath_definition() 437
(satpy.tests.reader_tests.test_satpy_cf_nc.TestCFReader
TestAHIGriddedFileHandler (class in
method), 530 satpy.tests.reader_tests.test_ahi_l1b_gridded_bin),
test_writer_custom_enhance() 437
(satpy.tests.test_writers.TestEnhancerUserConfigsTestAHIGriddedLUTs (class in
method), 634 satpy.tests.reader_tests.test_ahi_l1b_gridded_bin),
test_writer_no_enhance() 438
(satpy.tests.test_writers.TestEnhancerUserConfigsTestAHIHSDFileHandler (class in
method), 634 satpy.tests.reader_tests.test_ahi_hsd), 435
test_wrong_dataset_key() TestAHIHSDNavigation (class in
(satpy.tests.scene_tests.test_conversions.TestToXarrayConversion
satpy.tests.reader_tests.test_ahi_hsd), 435
method), 571 TestAMIL1bNetCDF (class in
test_xml_calibration() satpy.tests.reader_tests.test_ami_l1b), 439
(satpy.tests.reader_tests.test_msi_safe.TestMTDXML TestAMIL1bNetCDFIRCal (class in
method), 507 satpy.tests.reader_tests.test_ami_l1b), 439
test_xml_calibration_to_atmospheric() TestAMSR2L1BReader (class in
(satpy.tests.reader_tests.test_msi_safe.TestMTDXML satpy.tests.reader_tests.test_amsr2_l1b),
method), 507 440
test_xyz2angle() (satpy.tests.test_utils.TestGeoUtils TestAMSR2L2Reader (class in
method), 629 satpy.tests.reader_tests.test_amsr2_l2), 441
test_xyz2lonlat() (satpy.tests.test_utils.TestGeoUtils TestAngleGeneration (class in
method), 629 satpy.tests.modifier_tests.test_angles), 402
test_yaml_datasets() TestATMS_SDR_Reader (class in
(satpy.tests.reader_tests.test_clavrx.test_clavrx_nc.TestCLAVRXReaderGeo
satpy.tests.reader_tests.test_atms_sdr_hdf5),
method), 424 444
test_yaml_error_message() TestAtsmsL1bNCFileHandler (class in
(satpy.tests.test_readers.TestReaderLoader satpy.tests.reader_tests.test_atms_l1b_nc),

Index 893
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

443 423
TestAWIPSTiledWriter (class in TestCLAVRXReaderGeo (class in
satpy.tests.writer_tests.test_awips_tiled), satpy.tests.reader_tests.test_clavrx.test_clavrx_nc),
579 424
TestBackgroundCompositor (class in TestCLAVRXReaderPolar (class in
satpy.tests.test_composites), 591 satpy.tests.reader_tests.test_clavrx.test_clavrx_polarhdf ),
TestBadLoading (class in 424
satpy.tests.scene_tests.test_load), 573 TestCloudCompositorCommonMask (class in
TestBaseFileHandler (class in satpy.tests.test_composites), 592
satpy.tests.test_file_handlers), 614 TestCloudCompositorWithoutCloudfree (class in
TestBaseWriter (class in satpy.tests.test_writers), 631 satpy.tests.test_composites), 592
TestBilinearResampler (class in TestCollectCfDataset (class in
satpy.tests.test_resample), 625 satpy.tests.cf_tests.test_datasets), 394
TestBitFlags (class in TestCollectCfDatasets (class in
satpy.tests.reader_tests.test_meris_nc), 499 satpy.tests.cf_tests.test_datasets), 394
TestBlendFuncs (class in TestColorizeCompositor (class in
satpy.tests.multiscene_tests.test_blend), 407 satpy.tests.test_composites), 592
TestBucketAvg (class in satpy.tests.test_resample), 625 TestColormapCompositor (class in
TestBucketCount (class in satpy.tests.test_resample), satpy.tests.test_composites), 593
626 TestColormapLoading (class in
TestBucketFraction (class in satpy.tests.enhancement_tests.test_enhancements),
satpy.tests.test_resample), 626 399
TestBucketSum (class in satpy.tests.test_resample), 627 TestCombineMetadata (class in
TestBuiltinAreas (class in satpy.tests.test_config), 602 satpy.tests.test_dataset), 605
TestCalibrationCoefficientPicker (class in TestCompact (class in
satpy.tests.reader_tests.test_utils), 550 satpy.tests.reader_tests.test_viirs_compact),
TestCategoricalDataCompositor (class in 555
satpy.tests.test_composites), 591 TestComplexSensorEnhancerConfigs (class in
TestCFArea (class in satpy.tests.cf_tests.test_area), 392 satpy.tests.test_writers), 632
TestCFAttributeEncoding (class in TestCompositorNode (class in satpy.tests.test_node),
satpy.tests.cf_tests.test_attrs), 393 617
TestCFcoords (class in satpy.tests.cf_tests.test_coords), TestCompositorNodeCopy (class in
393 satpy.tests.test_node), 618
TestCfDataArray (class in TestComputePersist (class in
satpy.tests.cf_tests.test_dataaarray), 394 satpy.tests.scene_tests.test_data_access),
TestCFReader (class in 571
satpy.tests.reader_tests.test_satpy_cf_nc), TestComputeWriterResults (class in
530 satpy.tests.test_writers), 632
TestCFtime (class in satpy.tests.cf_tests.test_coords), TestConfigObject (class in satpy.tests.test_config), 602
394 TestCoordinateHelpers (class in
TestCFWriter (class in satpy.tests.writer_tests.test_cf ), satpy.tests.test_resample), 627
580 TestCorruptFile (class in
TestChannelIdentification (class in satpy.tests.reader_tests.gms.test_gms5_vissr_l1b),
satpy.tests.reader_tests.test_goes_imager_nc_noaa), 411
481 TestCreflUtils (class in satpy.tests.test_crefl_utils),
TestCheckSatpy (class in satpy.tests.test_utils), 629 604
TestCLAAS2MultiFile (class in TestDataAccessMethods (class in
satpy.tests.reader_tests.test_cmsaf_claas), satpy.tests.scene_tests.test_data_access),
451 571
TestCLAAS2SingleFile (class in TestDataDownload (class in
satpy.tests.reader_tests.test_cmsaf_claas), satpy.tests.test_data_download), 604
451 TestDataID (class in satpy.tests.test_dataset), 607
TestCLAVRXReaderGeo (class in TestDataQuery (class in satpy.tests.test_dataset), 607
satpy.tests.reader_tests.test_clavrx.test_clavrx_geohdf ),
TestDatasetDict (class in satpy.tests.test_readers), 618

894 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

TestDatasetPreprocessor (class in satpy.tests.reader_tests.gms.test_gms5_vissr_l1b),


satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc), 411
509 TestFileHandlerCalibrationBase (class in
TestDayNightCompositor (class in satpy.tests.reader_tests.test_seviri_l1b_calibration),
satpy.tests.test_composites), 593 535
TestDecodeAttrs (class in TestFileYAMLReaderLoading (class in
satpy.tests.cf_tests.test_decoding), 395 satpy.tests.test_yaml_reader), 639
TestDemo (class in satpy.tests.test_demo), 609 TestFileYAMLReaderWithCustomIDKey (class in
TestDependencyTree (class in satpy.tests.test_yaml_reader), 639
satpy.tests.test_dependency_tree), 612 TestFillingCompositor (class in
TestDifferenceCompositor (class in satpy.tests.test_composites), 595
satpy.tests.test_composites), 594 TestFindFilesAndReaders (class in
TestEarthMask (class in satpy.tests.test_readers), 620
satpy.tests.reader_tests.gms.test_gms5_vissr_l1b),TestFinestCoarsestArea (class in
411 satpy.tests.scene_tests.test_data_access),
TestEncodingAttribute (class in 572
satpy.tests.writer_tests.test_cf ), 581 TestForwardParallax (class in
TestEnhance2Dataset (class in satpy.tests.modifier_tests.test_parallax), 404
satpy.tests.test_composites), 594 TestFSFile (class in satpy.tests.test_readers), 619
TestEnhancementStretch (class in TestFY3AMERSI1L1B (class in
satpy.tests.enhancement_tests.test_enhancements), satpy.tests.reader_tests.test_mersi_l1b), 501
400 TestFY3BMERSI1L1B (class in
TestEnhancer (class in satpy.tests.test_writers), 633 satpy.tests.reader_tests.test_mersi_l1b), 501
TestEnhancerUserConfigs (class in TestFY3CMERSI1L1B (class in
satpy.tests.test_writers), 633 satpy.tests.reader_tests.test_mersi_l1b), 502
TestEPICL1bReader (class in TestFY3DMERSI2L1B (class in
satpy.tests.reader_tests.test_epic_l1b_h5), satpy.tests.reader_tests.test_mersi_l1b), 502
454 TestFY3EMERSIllL1B (class in
TestEPSL1B (class in satpy.tests.reader_tests.test_eps_l1b), satpy.tests.reader_tests.test_mersi_l1b), 503
455 TestGAASPReader (class in
TestFCIL1cNCReader (class in satpy.tests.reader_tests.test_amsr2_l2_gaasp),
satpy.tests.reader_tests.test_fci_l1c_nc), 442
463 TestGACLACFile (class in
TestFCIL1cNCReaderBadData (class in satpy.tests.reader_tests.test_avhrr_l1b_gaclac),
satpy.tests.reader_tests.test_fci_l1c_nc), 449
464 TestGCPUtils (class in satpy.tests.test_demo), 610
TestFciL2NCAMVFileHandler (class in TestGenericCompositor (class in
satpy.tests.reader_tests.test_fci_l2_nc), 466 satpy.tests.test_composites), 595
TestFciL2NCFileHandler (class in TestGEOCATReader (class in
satpy.tests.reader_tests.test_fci_l2_nc), 466 satpy.tests.reader_tests.test_geocat), 471
TestFciL2NCReadingByteData (class in TestGEOFlippableFileYAMLReader (class in
satpy.tests.reader_tests.test_fci_l2_nc), 467 satpy.tests.test_yaml_reader), 640
TestFciL2NCSegmentFileHandler (class in TestGEOSegmentYAMLReader (class in
satpy.tests.reader_tests.test_fci_l2_nc), 467 satpy.tests.test_yaml_reader), 640
TestFiduceoMviriFileHandlers (class in TestGEOSProjectionUtil (class in
satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc), satpy.tests.reader_tests.test_geos_area), 471
509 TestGeoTIFFWriter (class in
TestFileFileYAMLReader (class in satpy.tests.writer_tests.test_geotiff ), 582
satpy.tests.test_yaml_reader), 637 TestGeoUtils (class in satpy.tests.test_utils), 629
TestFileFileYAMLReaderMultipleFileTypes (class TestGEOVariableSegmentYAMLReader (class in
in satpy.tests.test_yaml_reader), 638 satpy.tests.test_yaml_reader), 641
TestFileFileYAMLReaderMultiplePatterns (class TestGetDataset (class in
in satpy.tests.test_yaml_reader), 639 satpy.tests.reader_tests.test_avhrr_l1b_gaclac),
TestFileHandler (class in 449

Index 895
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

TestGetSatPos (class in satpy.tests.test_utils), 630 453


TestGetServiceMode (class in TestHRITJMAFileHandler (class in
satpy.tests.reader_tests.test_eum_base), 457 satpy.tests.reader_tests.test_ahi_hrit), 434
TestGHRSSTL2Reader (class in TestHRITMSGBase (class in
satpy.tests.reader_tests.test_ghrsst_l2), 474 satpy.tests.reader_tests.test_seviri_l1b_hrit),
TestGLMComposites (class in 537
satpy.tests.compositor_tests.test_glm), 397 TestHRITMSGCalibration (class in
TestGLML2FileHandler (class in satpy.tests.reader_tests.test_seviri_l1b_hrit),
satpy.tests.reader_tests.test_glm_l2), 476 537
TestGLML2Reader (class in TestHRITMSGEpilogueFileHandler (class in
satpy.tests.reader_tests.test_glm_l2), 476 satpy.tests.reader_tests.test_seviri_l1b_hrit),
TestGOCI2Reader (class in 537
satpy.tests.reader_tests.test_goci2_l2_nc), TestHRITMSGFileHandler (class in
477 satpy.tests.reader_tests.test_seviri_l1b_hrit),
TestGRIBReader (class in 537
satpy.tests.reader_tests.test_grib), 483 TestHRITMSGFileHandlerHRV (class in
TestGroupFiles (class in satpy.tests.test_readers), 621 satpy.tests.reader_tests.test_seviri_l1b_hrit),
TestGVARFloat (class in 538
satpy.tests.reader_tests.test_goes_imager_hrit), TestHRITMSGPrologueFileHandler (class in
477 satpy.tests.reader_tests.test_seviri_l1b_hrit),
TestH5NWCSAF (class in 538
satpy.tests.reader_tests.test_nwcsaf_msg), TestHRPTChannel3 (class in
516 satpy.tests.reader_tests.test_avhrr_l0_hrpt),
TestHDF4FileHandler (class in 445
satpy.tests.reader_tests.test_hdf4_utils), 484 TestHRPTGetCalibratedBT (class in
TestHDF5FileHandler (class in satpy.tests.reader_tests.test_avhrr_l0_hrpt),
satpy.tests.reader_tests.test_hdf5_utils), 485 446
TestHdf5IMERG (class in TestHRPTGetCalibratedReflectances (class in
satpy.tests.reader_tests.test_gpm_imerg), satpy.tests.reader_tests.test_avhrr_l0_hrpt),
482 446
TestHelpers (class in TestHRPTGetUncalibratedData (class in
satpy.tests.reader_tests.test_utils), 551 satpy.tests.reader_tests.test_avhrr_l0_hrpt),
TestHighCloudCompositor (class in 446
satpy.tests.test_composites), 595 TestHRPTNavigation (class in
TestHLResample (class in satpy.tests.test_resample), satpy.tests.reader_tests.test_avhrr_l0_hrpt),
627 447
TestHRITFileHandler (class in TestHRPTReading (class in
satpy.tests.reader_tests.test_hrit_base), 486 satpy.tests.reader_tests.test_avhrr_l0_hrpt),
TestHRITFileHandlerCompressed (class in 447
satpy.tests.reader_tests.test_hrit_base), 486 TestHRPTWithFile (class in
TestHRITGOESFileHandler (class in satpy.tests.reader_tests.test_avhrr_l0_hrpt),
satpy.tests.reader_tests.test_goes_imager_hrit), 447
478 TestHRPTWithPatchedCalibratorAndFile (class in
TestHRITGOESPrologueFileHandler (class in satpy.tests.reader_tests.test_avhrr_l0_hrpt),
satpy.tests.reader_tests.test_goes_imager_hrit), 448
478 TestHSAFFileHandler (class in
TestHRITGOMSEpiFileHandler (class in satpy.tests.reader_tests.test_hsaf_grib), 488
satpy.tests.reader_tests.test_electrol_hrit), TestHY2SCATL2BH5Reader (class in
452 satpy.tests.reader_tests.test_hy2_scat_l2b_h5),
TestHRITGOMSFileHandler (class in 490
satpy.tests.reader_tests.test_electrol_hrit), TestIasiL2 (class in satpy.tests.reader_tests.test_iasi_l2),
453 491
TestHRITGOMSProFileHandler (class in TestIasiL2So2Bufr (class in
satpy.tests.reader_tests.test_electrol_hrit), satpy.tests.reader_tests.test_iasi_l2_so2_bufr),

896 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

492 TestMCMIPReading (class in


TestIciL1bNCFileHandler (class in satpy.tests.reader_tests.test_abi_l2_nc), 430
satpy.tests.reader_tests.test_ici_l1b_nc), TestMeirinkSlope (class in
493 satpy.tests.reader_tests.test_seviri_base),
TestIDQueryInteractions (class in 534
satpy.tests.test_dataset), 607 TestMERISReader (class in
TestImageNavigation (class in satpy.tests.reader_tests.test_meris_nc), 499
satpy.tests.reader_tests.gms.test_gms5_vissr_navigation),
TestMERSIRML1B (class in
414 satpy.tests.reader_tests.test_mersi_l1b), 503
TestImgVIIRSActiveFiresNetCDF4 (class in TestMetadata (class in
satpy.tests.reader_tests.test_viirs_edr_active_fires), satpy.tests.reader_tests.test_goes_imager_nc_noaa),
559 481
TestImgVIIRSActiveFiresText (class in TestMHS_AMSUB_AAPPL1CReadData (class in
satpy.tests.reader_tests.test_viirs_edr_active_fires), satpy.tests.reader_tests.test_aapp_mhs_amsub_l1c),
560 428
TestInferMode (class in satpy.tests.test_composites), TestMimicTPW2Reader (class in
596 satpy.tests.reader_tests.test_mimic_TPW2_lowres),
TestInlineComposites (class in 504
satpy.tests.test_composites), 596 TestMimicTPW2Reader (class in
TestInterpolator (class in satpy.tests.reader_tests.test_mimic_TPW2_nc),
satpy.tests.reader_tests.test_mviri_l1b_fiduceo_nc), 505
510 TestMissingDependencies (class in
TestKDTreeResampler (class in satpy.tests.test_dependency_tree), 613
satpy.tests.test_resample), 628 TestMITIFFWriter (class in
TestL1bBitFlags (class in satpy.tests.writer_tests.test_mitiff ), 583
satpy.tests.reader_tests.test_olci_nc), 522 TestModisL1b (class in
TestL2BitFlags (class in satpy.tests.reader_tests.modis_tests.test_modis_l1b),
satpy.tests.reader_tests.test_olci_nc), 522 421
TestL2BufrReader (class in TestModisL2 (class in
satpy.tests.reader_tests.test_eum_l2_bufr), satpy.tests.reader_tests.modis_tests.test_modis_l2),
458 421
TestLIL2 (class in satpy.tests.reader_tests.test_li_l2_nc), TestModisL3 (class in
496 satpy.tests.reader_tests.modis_tests.test_modis_l3),
TestLoadingComposites (class in 422
satpy.tests.scene_tests.test_load), 574 TestModisL3MCD12Q1 (class in
TestLoadingReaderDatasets (class in satpy.tests.reader_tests.modis_tests.test_modis_l3_mcd12q1),
satpy.tests.scene_tests.test_load), 575 422
TestLongitudeMaskingCompositor (class in TestModVIIRSActiveFiresNetCDF4 (class in
satpy.tests.test_composites), 596 satpy.tests.reader_tests.test_viirs_edr_active_fires),
TestLowCloudCompositor (class in 560
satpy.tests.test_composites), 597 TestModVIIRSActiveFiresText (class in
TestLuminanceSharpeningCompositor (class in satpy.tests.reader_tests.test_viirs_edr_active_fires),
satpy.tests.test_composites), 597 560
TestMakeSGSTime (class in TestMSUGSABReader (class in
satpy.tests.reader_tests.test_goes_imager_hrit), satpy.tests.reader_tests.test_msu_gsa_l1b),
478 508
TestMakeTimeCdsDictionary (class in TestMTDXML (class in satpy.tests.reader_tests.test_msi_safe),
satpy.tests.reader_tests.test_eum_base), 457 507
TestMakeTimeCdsRecarray (class in TestMultiFiller (class in satpy.tests.test_composites),
satpy.tests.reader_tests.test_eum_base), 457 599
TestMaskingCompositor (class in TestMultipleResolutionSameChannelDependency
satpy.tests.test_composites), 597 (class in satpy.tests.test_dependency_tree), 613
TestMatchDataArrays (class in TestMultipleSensors (class in
satpy.tests.test_composites), 598 satpy.tests.test_dependency_tree), 613

Index 897
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

TestMultiScene (class in TestNinjoTIFFWriter (class in


satpy.tests.multiscene_tests.test_misc), 409 satpy.tests.writer_tests.test_ninjotiff ), 589
TestMultiSceneGrouping (class in TestNIREmissivePartFromReflectance (class in
satpy.tests.multiscene_tests.test_misc), 409 satpy.tests.test_modifiers), 615
TestMultiSceneSave (class in TestNIRReflectance (class in
satpy.tests.multiscene_tests.test_save_animation), satpy.tests.test_modifiers), 615
410 TestNominalTimeCalculator (class in
TestMwsL1bNCFileHandler (class in satpy.tests.reader_tests.test_ahi_hsd), 436
satpy.tests.reader_tests.test_mws_l1b_nc), TestNUCAPSReader (class in
511 satpy.tests.reader_tests.test_nucaps), 514
TestNativeMSGCalibration (class in TestNUCAPSScienceEDRReader (class in
satpy.tests.reader_tests.test_seviri_l1b_native), satpy.tests.reader_tests.test_nucaps), 515
542 TestOCCCIReader (class in
TestNativeMSGDataset (class in satpy.tests.reader_tests.test_oceancolorcci_l3_nc),
satpy.tests.reader_tests.test_seviri_l1b_native), 521
542 TestOLCIReader (class in
TestNativeMSGFileHandler (class in satpy.tests.reader_tests.test_olci_nc), 522
satpy.tests.reader_tests.test_seviri_l1b_native), TestOLITIRSL1 (class in
543 satpy.tests.reader_tests.test_oli_tirs_l1_tif ),
TestNativeMSGFilenames (class in 523
satpy.tests.reader_tests.test_seviri_l1b_native), TestOMPSEDRReader (class in
543 satpy.tests.reader_tests.test_omps_edr), 525
TestNativeMSGPadder (class in TestOrbitPolynomialFinder (class in
satpy.tests.reader_tests.test_seviri_l1b_native), satpy.tests.reader_tests.test_seviri_base),
543 534
TestNativeResampler (class in TestOSISAFL3ReaderFluxGeo (class in
satpy.tests.test_resample), 628 satpy.tests.reader_tests.test_osisaf_l3), 526
TestNaturalEnhCompositor (class in TestOSISAFL3ReaderFluxStere (class in
satpy.tests.test_composites), 599 satpy.tests.reader_tests.test_osisaf_l3), 526
TestNcNWCSAFFileKeyPrefix (class in TestOSISAFL3ReaderICE (class in
satpy.tests.reader_tests.test_nwcsaf_nc), satpy.tests.reader_tests.test_osisaf_l3), 526
517 TestOSISAFL3ReaderSST (class in
TestNcNWCSAFGeo (class in satpy.tests.reader_tests.test_osisaf_l3), 526
satpy.tests.reader_tests.test_nwcsaf_nc), TestOverlays (class in satpy.tests.test_writers), 634
517 TestPaletteCompositor (class in
TestNcNWCSAFPPS (class in satpy.tests.test_composites), 600
satpy.tests.reader_tests.test_nwcsaf_nc), TestParallaxCorrectionClass (class in
518 satpy.tests.modifier_tests.test_parallax), 405
TestNCSEVIRIFileHandler (class in TestParallaxCorrectionModifier (class in
satpy.tests.reader_tests.test_seviri_l1b_nc), satpy.tests.modifier_tests.test_parallax), 405
545 TestParallaxCorrectionSceneLoad (class in
TestNdviHybridGreenCompositor (class in satpy.tests.modifier_tests.test_parallax), 406
satpy.tests.compositor_tests.test_spectral), TestPillowWriter (class in
397 satpy.tests.writer_tests.test_simple_image),
TestNegativeCalibrationSlope (class in 589
satpy.tests.reader_tests.test_aapp_l1b), 428 TestPluginsConfigs (class in satpy.tests.test_config),
TestNetCDF4FileHandler (class in 603
satpy.tests.reader_tests.test_netcdf_utils), TestPrecipCloudsCompositor (class in
513 satpy.tests.test_composites), 600
TestNetCDF4FsspecFileHandler (class in TestPredictionInterpolation (class in
satpy.tests.reader_tests.test_netcdf_utils), satpy.tests.reader_tests.gms.test_gms5_vissr_navigation),
513 415
TestNetcdfEncodingKwargs (class in TestPSPAtmosphericalCorrection (class in
satpy.tests.writer_tests.test_cf ), 581 satpy.tests.test_modifiers), 615

898 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

TestPSPRayleighReflectance (class in TestSceneSerialization (class in


satpy.tests.test_modifiers), 616 satpy.tests.scene_tests.test_conversions),
TestRatioSharpenedCompositors (class in 570
satpy.tests.test_composites), 600 TestSCMIFileHandler (class in
TestReaderEnhancerConfigs (class in satpy.tests.reader_tests.test_scmi), 531
satpy.tests.test_writers), 634 TestSCMIFileHandlerArea (class in
TestReaderLoader (class in satpy.tests.test_readers), satpy.tests.reader_tests.test_scmi), 532
622 TestSEADAS (class in satpy.tests.reader_tests.test_oci_l2_bgc),
TestReadMDA (class in 521
satpy.tests.reader_tests.test_hdfeos_base), TestSEADAS (class in satpy.tests.reader_tests.test_seadas_l2),
485 532
TestRealisticColors (class in TestSEVIRICalibrationAlgorithm (class in
satpy.tests.test_composites), 601 satpy.tests.reader_tests.test_seviri_l1b_calibration),
Testrecarray2dict (class in 536
satpy.tests.reader_tests.test_electrol_hrit), TestSeviriCalibrationHandler (class in
454 satpy.tests.reader_tests.test_seviri_l1b_calibration),
TestRecarray2Dict (class in 536
satpy.tests.reader_tests.test_eum_base), 458 TestSEVIRIHRITDemoDownload (class in
TestReflectanceCorrectorModifier (class in satpy.tests.test_demo), 610
satpy.tests.modifier_tests.test_crefl), 403 TestSEVIRIICAREReader (class in
TestSAFEGRD (class in satpy.tests.reader_tests.test_seviri_l1b_icare),
satpy.tests.reader_tests.test_sar_c_safe), 541
527 TestShortAggrVIIRSSDRReader (class in
TestSAFEMSIL1C (class in satpy.tests.reader_tests.test_viirs_sdr), 566
satpy.tests.reader_tests.test_msi_safe), 507 TestShowVersions (class in satpy.tests.test_utils), 630
TestSAFENC (class in satpy.tests.reader_tests.test_safe_sar_l2_ocn),
TestSingleBandCompositor (class in
527 satpy.tests.test_composites), 601
TestSAFEXMLCalibration (class in TestSinglePixelNavigation (class in
satpy.tests.reader_tests.test_sar_c_safe), satpy.tests.reader_tests.gms.test_gms5_vissr_navigation),
527 415
TestSAFEXMLNoise (class in TestSLSTRCalibration (class in
satpy.tests.reader_tests.test_sar_c_safe), satpy.tests.reader_tests.test_slstr_l1b), 547
528 TestSLSTRL1B (class in
TestSandwichCompositor (class in satpy.tests.reader_tests.test_slstr_l1b), 548
satpy.tests.test_composites), 601 TestSLSTRReader (class in
TestSARComposites (class in satpy.tests.reader_tests.test_slstr_l1b), 548
satpy.tests.compositor_tests.test_sar), 397 TestSLSTRReader.FakeSpl (class in
TestSatellitePosition (class in satpy.tests.reader_tests.test_slstr_l1b), 548
satpy.tests.reader_tests.test_seviri_base), TestSMOSL2WINDReader (class in
534 satpy.tests.reader_tests.test_smos_l2_wind),
TestScene (class in satpy.tests.scene_tests.test_init), 572 549
TestSceneAggregation (class in TestSpectralComposites (class in
satpy.tests.scene_tests.test_resampling), 577 satpy.tests.compositor_tests.test_spectral),
TestSceneAllAvailableDatasets (class in 398
satpy.tests.scene_tests.test_load), 576 TestStaticImageCompositor (class in
TestSceneConversions (class in satpy.tests.test_composites), 601
satpy.tests.scene_tests.test_conversions), TestSunEarthDistanceCorrection (class in
570 satpy.tests.reader_tests.test_utils), 552
TestSceneCrop (class in TestSunZenithCorrector (class in
satpy.tests.scene_tests.test_resampling), 577 satpy.tests.test_modifiers), 616
TestSceneResampling (class in TestSunZenithReducer (class in
satpy.tests.scene_tests.test_resampling), 577 satpy.tests.test_modifiers), 616
TestSceneSaving (class in TestTCREnhancement (class in
satpy.tests.scene_tests.test_saving), 578 satpy.tests.enhancement_tests.test_enhancements),

Index 899
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

401 TestWritersModule (class in satpy.tests.test_writers),


TestTemporalRGB (class in 635
satpy.tests.multiscene_tests.test_blend), 408 TestWrongSamplingEPSL1B (class in
TestTileXML (class in satpy.tests.reader_tests.test_eps_l1b), 455
satpy.tests.reader_tests.test_msi_safe), 507 TestWrongScanlinesEPSL1B (class in
TestToXarrayConversion (class in satpy.tests.reader_tests.test_eps_l1b), 456
satpy.tests.scene_tests.test_conversions), TestYAMLFiles (class in satpy.tests.test_readers), 623
570 TestYAMLFiles (class in satpy.tests.test_writers), 635
TestTROPOMIL2Reader (class in three_a_mask (satpy.readers.eps_l1b.EPSAVHRRFile
satpy.tests.reader_tests.test_tropomi_l2), property), 221
550 three_b_mask (satpy.readers.eps_l1b.EPSAVHRRFile
TestUpdateEncoding (class in property), 222
satpy.tests.cf_tests.test_encoding), 395 three_d_effect() (in module satpy.enhancements),
TestUtils (class in satpy.tests.test_yaml_reader), 641 153
TestVaisalaGLD360TextFileHandler (class in tile_column_offset (satpy.writers.awips_tiled.TileInfo
satpy.tests.reader_tests.test_vaisala_gld360), attribute), 654
552 tile_count (satpy.writers.awips_tiled.TileInfo at-
TestVGACREader (class in tribute), 654
satpy.tests.reader_tests.test_viirs_vgac_l1c_nc), tile_filler() (in module satpy.writers.awips_tiled),
568 655
TestViiL1bNCFileHandler (class in tile_id (satpy.writers.awips_tiled.TileInfo attribute),
satpy.tests.reader_tests.test_vii_l1b_nc), 654
553 tile_number (satpy.writers.awips_tiled.TileInfo at-
TestViiL2NCFileHandler (class in tribute), 654
satpy.tests.reader_tests.test_vii_l2_nc), 554 tile_row_offset (satpy.writers.awips_tiled.TileInfo
TestViiL2NCFileHandler (class in attribute), 654
satpy.tests.reader_tests.test_vii_wv_nc), 554 tile_shape (satpy.writers.awips_tiled.TileInfo at-
TestViiNCBaseFileHandler (class in tribute), 654
satpy.tests.reader_tests.test_vii_base_nc), tile_slices (satpy.writers.awips_tiled.TileInfo at-
553 tribute), 654
TestVIIRSComposites (class in TileInfo (class in satpy.writers.awips_tiled), 653
satpy.tests.compositor_tests.test_viirs), 398 time() (satpy.tests.reader_tests.test_seviri_base.TestSatellitePosition
TestVIIRSEDRFloodReader (class in method), 534
satpy.tests.reader_tests.test_viirs_edr_flood), time_coverage_end (satpy.readers.tropomi_l2.TROPOMIL2FileHandler
561 property), 356
TestVIIRSEnhancement (class in time_coverage_start
satpy.tests.enhancement_tests.test_viirs), (satpy.readers.tropomi_l2.TROPOMIL2FileHandler
402 property), 356
TestVIIRSJRRReader (class in time_dims (satpy.readers.amsr2_l2_gaasp.GAASPFileHandler
satpy.tests.reader_tests.test_viirs_edr), 556 attribute), 212
TestVIIRSL1BReaderDay (class in time_format (satpy.readers.seadas_l2.SEADASL2HDFFileHandler
satpy.tests.reader_tests.test_viirs_l1b), 563 attribute), 326
TestVIIRSL1BReaderDayNight (class in time_format (satpy.readers.seadas_l2.SEADASL2NetCDFFileHandler
satpy.tests.reader_tests.test_viirs_l1b), 564 attribute), 326
TestVIIRSL2FileHandler (class in time_matches() (satpy.readers.yaml_reader.GenericYAMLReader
satpy.tests.reader_tests.test_viirs_l2), 564 method), 384
TestVIIRSSDRDemoDownload (class in time_seconds() (in module satpy.readers.hrpt), 260
satpy.tests.test_demo), 611 timecds2datetime() (in module
TestVIIRSSDRReader (class in satpy.readers.eum_base), 222
satpy.tests.reader_tests.test_viirs_sdr), 566 timeliness_and_completeness
TestViiUtils (class in (satpy.readers.seviri_l1b_native_hdr.Msg15NativeTrailerRecord
satpy.tests.reader_tests.test_vii_utils), 554 property), 349
TestVIRRL1BReader (class in times (satpy.readers.hrpt.HRPTFile property), 260
satpy.tests.reader_tests.test_virr_l1b), 569 timeseries() (in module

900 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

satpy.multiscene._blend_funcs), 171 trunk() (satpy.node.Node method), 689


tmp_seviri_nat_filename() (in module
satpy.tests.reader_tests.test_seviri_l1b_native), U
545 UnfriendlyModifier (class in
to_cds_time() (in module satpy.tests.test_data_download), 605
satpy.tests.reader_tests.test_seviri_l1b_nc), unify_chunks() (in module satpy.utils), 722
546 unit (satpy.readers.pmw_channels_definitions.FrequencyDoubleSideBandB
to_cf() (satpy.dataset.dataid.WavelengthRange attribute), 313
method), 141 unit (satpy.readers.pmw_channels_definitions.FrequencyQuadrupleSideBa
to_dict() (satpy.dataset.dataid.DataID method), 139 attribute), 314
to_dict() (satpy.dataset.dataid.DataQuery method), unit (satpy.readers.pmw_channels_definitions.FrequencyRangeBase
140 attribute), 315
to_dtype() (in module satpy.readers.xmlformat), 377 units (satpy.readers.eps_l1b.EPSAVHRRFile attribute),
to_geoviews() (in module satpy._scene_converters), 222
679 unload() (satpy.scene.Scene method), 716
to_geoviews() (satpy.scene.Scene method), 715 unzip_context() (in module satpy.readers.utils), 361
to_hvplot() (in module satpy._scene_converters), 680 unzip_file() (in module satpy.readers.utils), 361
to_hvplot() (satpy.scene.Scene method), 715 update() (satpy.dataset.dataid.DataID method), 139
to_image() (in module satpy.writers), 679 update_array_attributes()
to_nonempty_netcdf() (in module (satpy.readers.li_base_nc.LINCFileHandler
satpy.writers.awips_tiled), 655 method), 273
to_numba() (satpy.readers.gms.gms5_vissr_navigation.AttitudePrediction
update_compositors_and_modifiers()
method), 183 (satpy.dependency_tree.DependencyTree
to_numba() (satpy.readers.gms.gms5_vissr_navigation.OrbitPrediction method), 686
method), 186 update_ds_ids_from_file_handlers()
to_scaled_dtype() (in module (satpy.readers.yaml_reader.FileYAMLReader
satpy.readers.xmlformat), 377 method), 381
to_scales() (in module satpy.readers.xmlformat), 377 update_encoding() (in module satpy.cf.encoding), 111
to_xarray() (in module satpy._scene_converters), 680 update_encoding() (satpy.writers.cf_writer.CFWriter
to_xarray() (satpy.scene.Scene method), 716 static method), 659
to_xarray_dataset() (satpy.scene.Scene method), update_metadata() (satpy.readers.mirs.MiRSL2ncHandler
716 method), 280
TooManyResults, 137 update_name() (satpy.node.Node method), 689
total_precipitable_water() (in module update_node_name() (satpy.dependency_tree.DependencyTree
satpy.enhancements.mimic), 147 method), 687
touch_geo_files() (in module update_refl_attrs()
satpy.tests.reader_tests.test_viirs_sdr), 568 (satpy.readers.mviri_l1b_fiduceo_nc.VISCalibrator
trace_on() (in module satpy.utils), 722 method), 294
transform_earth_fixed_to_geodetic_coords() update_resampled_coords() (in module
(in module satpy.readers.gms.gms5_vissr_navigation), satpy.resample), 704
195 using_map_blocks() (in module satpy.enhancements),
transform_image_coords_to_scanning_angles() 153
(in module satpy.readers.gms.gms5_vissr_navigation),
195 V
transform_satellite_to_earth_fixed_coords() VaisalaGLD360TextFileHandler (class in
(in module satpy.readers.gms.gms5_vissr_navigation), satpy.readers.vaisala_gld360), 361
195 VaisalaGld360Ualf2FileHandler (class in
transform_scanning_angles_to_satellite_coords() satpy.readers.gld360_ualf2), 239
(in module satpy.readers.gms.gms5_vissr_navigation),
valid_key() (satpy.tests.reader_tests.test_grib.FakeMessage
195 method), 483
Tree (class in satpy.dependency_tree), 687 valid_key() (satpy.tests.reader_tests.test_hsaf_grib.FakeMessage
TROPOMIL2FileHandler (class in method), 488
satpy.readers.tropomi_l2), 355 validate_array_dimensions()
trunk() (satpy.dependency_tree.Tree method), 687 (satpy.readers.li_base_nc.LINCFileHandler

Index 901
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

method), 273 attribute), 503


ValueList (class in satpy.dataset.dataid), 140 vis_1000_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3EMERSIl
values() (satpy.scene.Scene method), 717 attribute), 503
variable_path_exists() vis_250_bands (satpy.tests.reader_tests.test_mersi_l1b.MERSI12llL1BTes
(satpy.readers.li_base_nc.LINCFileHandler attribute), 501
method), 273 vis_250_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3AMERSI1L
Vector2D (class in satpy.readers.gms.gms5_vissr_navigation), attribute), 501
190 vis_250_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3BMERSI1L
Vector3D (class in satpy.readers.gms.gms5_vissr_navigation), attribute), 502
191 vis_250_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3CMERSI1L
VGACFileHandler (class in attribute), 502
satpy.readers.viirs_vgac_l1c_nc), 375 vis_250_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3DMERSI2
ViiL1bNCFileHandler (class in attribute), 503
satpy.readers.vii_l1b_nc), 363 vis_250_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3EMERSIllL
ViiL2NCFileHandler (class in satpy.readers.vii_l2_nc), attribute), 503
364 vis_calibrate() (satpy.readers.seviri_base.SEVIRICalibrationAlgorithm
ViiNCBaseFileHandler (class in method), 331
satpy.readers.vii_base_nc), 362 vis_calibration() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.Tes
viirs_file() (in module satpy.tests.test_readers), 625 method), 413
VIIRSActiveFiresFileHandler (class in vis_refl_exp() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFil
satpy.readers.viirs_edr_active_fires), 370 method), 413
VIIRSActiveFiresTextFileHandler (class in vis_sectors (satpy.readers.goes_imager_nc.GOESEUMNCFileHandler
satpy.readers.viirs_edr_active_fires), 371 attribute), 246
VIIRSAODHandler (class in satpy.readers.viirs_edr), vis_sectors (satpy.readers.goes_imager_nc.GOESNCBaseFileHandler
368 property), 249
VIIRSCompactFileHandler (class in vis_sectors (satpy.readers.goes_imager_nc.GOESNCFileHandler
satpy.readers.viirs_compact), 366 attribute), 249
VIIRSEDRFlood (class in satpy.readers.viirs_edr_flood), vis_tables (satpy.readers.goes_imager_nc.GOESCoefficientReader
371 attribute), 246
VIIRSJRRFileHandler (class in VISCalibrator (class in
satpy.readers.viirs_edr), 369 satpy.readers.mviri_l1b_fiduceo_nc), 294
VIIRSL1BFileHandler (class in VisQualityControl (class in
satpy.readers.viirs_l1b), 372 satpy.readers.mviri_l1b_fiduceo_nc), 294
VIIRSL2FileHandler (class in satpy.readers.viirs_l2), vissr_file() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileH
373 method), 413
VIIRSLSTHandler (class in satpy.readers.viirs_edr), vissr_file_like() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.Tes
370 method), 413
VIIRSSDRFileHandler (class in VissrFileWriter (class in
satpy.readers.viirs_sdr), 374 satpy.tests.reader_tests.gms.test_gms5_vissr_l1b),
VIIRSSDRReader (class in satpy.readers.viirs_sdr), 374 414
VIIRSSurfaceReflectanceWithVIHandler (class in
satpy.readers.viirs_edr), 370 W
VIRR_L1B (class in satpy.readers.virr_l1b), 376 water_detection() (in module
vis006() (in module satpy.tests.reader_tests.test_satpy_cf_nc), satpy.enhancements.viirs), 148
531 WavelengthRange (class in satpy.dataset.dataid), 141
vis_1000_bands (satpy.tests.reader_tests.test_mersi_l1b.MERSI12llL1BTester
wishlist (satpy.scene.Scene property), 717
attribute), 501 with_compression() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.Te
vis_1000_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3AMERSI1L1B
method), 414
attribute), 501 wlklass (in module satpy.dataset.dataid), 142
vis_1000_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3BMERSI1L1B
write() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.VissrFileWriter
attribute), 502 method), 414
vis_1000_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3CMERSI1L1B
write() (satpy.tests.reader_tests.test_ici_l1b_nc.IciL1bFakeFileWriter
attribute), 502 method), 493
vis_1000_bands (satpy.tests.reader_tests.test_mersi_l1b.TestFY3DMERSI2L1B

902 Index
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

write() (satpy.tests.reader_tests.test_mws_l1b_nc.MWSL1BFakeFileWriter
y (satpy.writers.awips_tiled.TileInfo attribute), 654
method), 511 y_dims (satpy.readers.amsr2_l2_gaasp.GAASPFileHandler
write_h5_null_string_att() (in module attribute), 212
satpy.tests.reader_tests.test_gerb_l2_hr_h5), y_dims (satpy.readers.amsr2_l2_gaasp.GAASPGriddedFileHandler
472 attribute), 213
write_sector_variables() yaml_code() (satpy.tests.modifier_tests.test_parallax.TestParallaxCorrecti
(satpy.tests.reader_tests._li_test_utils.FakeLIFileHandlerBasemethod), 406
method), 425 yaml_file (satpy.tests.reader_tests.test_acspo.TestACSPOReader
write_variables() (satpy.tests.reader_tests._li_test_utils.FakeLIFileHandlerBase
attribute), 432
method), 425 yaml_file (satpy.tests.reader_tests.test_agri_l1.Test_HDF_AGRI_L1_cal
Writer (class in satpy.writers), 673 attribute), 433
WriterUtilsTest (class in yaml_file (satpy.tests.reader_tests.test_amsr2_l1b.TestAMSR2L1BReader
satpy.tests.writer_tests.test_utils), 590 attribute), 441
wv_calibration() (satpy.tests.reader_tests.gms.test_gms5_vissr_l1b.TestFileHandler
yaml_file (satpy.tests.reader_tests.test_amsr2_l2.TestAMSR2L2Reader
method), 414 attribute), 441
yaml_file (satpy.tests.reader_tests.test_amsr2_l2_gaasp.TestGAASPReade
X attribute), 442
x (satpy.readers.gms.gms5_vissr_navigation.Satpos at- yaml_file (satpy.tests.reader_tests.test_atms_sdr_hdf5.TestATMS_SDR_R
tribute), 189 attribute), 445
x (satpy.readers.gms.gms5_vissr_navigation.Vector2D yaml_file (satpy.tests.reader_tests.test_clavrx.test_clavrx_geohdf.TestCLA
attribute), 191 attribute), 423
x (satpy.readers.gms.gms5_vissr_navigation.Vector3D yaml_file (satpy.tests.reader_tests.test_clavrx.test_clavrx_nc.TestCLAVRX
attribute), 191 attribute), 424
x (satpy.writers.awips_tiled.TileInfo attribute), 654 yaml_file (satpy.tests.reader_tests.test_clavrx.test_clavrx_polarhdf.TestCL
x_dims (satpy.readers.amsr2_l2_gaasp.GAASPFileHandler attribute), 425
attribute), 212 yaml_file (satpy.tests.reader_tests.test_geocat.TestGEOCATReader
x_dims (satpy.readers.amsr2_l2_gaasp.GAASPGriddedFileHandler attribute), 471
attribute), 212 yaml_file (satpy.tests.reader_tests.test_ghi_l1.Test_HDF_GHI_L1_cal
x_dims (satpy.readers.amsr2_l2_gaasp.GAASPLowResFileHandler attribute), 473
attribute), 213 yaml_file (satpy.tests.reader_tests.test_glm_l2.TestGLML2Reader
xfail_h5py_unstable_numpy2() (in module attribute), 477
satpy.tests.utils), 645 yaml_file (satpy.tests.reader_tests.test_gpm_imerg.TestHdf5IMERG
xfail_skyfield_unstable_numpy2() (in module attribute), 482
satpy.tests.utils), 645 yaml_file (satpy.tests.reader_tests.test_grib.TestGRIBReader
xml_builder() (in module attribute), 483
satpy.tests.reader_tests.test_msi_safe), 508 yaml_file (satpy.tests.reader_tests.test_hy2_scat_l2b_h5.TestHY2SCATL2
XMLArray (class in satpy.readers.sar_c_safe), 320 attribute), 491
XMLFormat (class in satpy.readers.xmlformat), 377 yaml_file (satpy.tests.reader_tests.test_mersi_l1b.MERSI12llL1BTester
xy_coords() (in module attribute), 501
satpy.tests.reader_tests.test_satpy_cf_nc), yaml_file (satpy.tests.reader_tests.test_mersi_l1b.TestFY3AMERSI1L1B
531 attribute), 501
xy_factors (satpy.writers.awips_tiled.TileInfo at- yaml_file (satpy.tests.reader_tests.test_mersi_l1b.TestFY3BMERSI1L1B
tribute), 654 attribute), 502
XYFactors (class in satpy.writers.awips_tiled), 654 yaml_file (satpy.tests.reader_tests.test_mersi_l1b.TestFY3CMERSI1L1B
xyz2angle() (in module satpy.utils), 723 attribute), 502
xyz2lonlat() (in module satpy.utils), 723 yaml_file (satpy.tests.reader_tests.test_mersi_l1b.TestFY3DMERSI2L1B
attribute), 503
Y yaml_file (satpy.tests.reader_tests.test_mersi_l1b.TestFY3EMERSIllL1B
y (satpy.readers.gms.gms5_vissr_navigation.Satpos at- attribute), 503
tribute), 189 yaml_file (satpy.tests.reader_tests.test_mersi_l1b.TestMERSIRML1B
y (satpy.readers.gms.gms5_vissr_navigation.Vector2D attribute), 503
attribute), 191 yaml_file (satpy.tests.reader_tests.test_mimic_TPW2_lowres.TestMimicTP
y (satpy.readers.gms.gms5_vissr_navigation.Vector3D attribute), 505
attribute), 191 yaml_file (satpy.tests.reader_tests.test_mimic_TPW2_nc.TestMimicTPW2

Index 903
Satpy Documentation, Release 0.54.1.dev0+g6fc15fe66.d20250120

attribute), 506
yaml_file (satpy.tests.reader_tests.test_msu_gsa_l1b.TestMSUGSABReader
attribute), 509
yaml_file (satpy.tests.reader_tests.test_nucaps.TestNUCAPSReader
attribute), 515
yaml_file (satpy.tests.reader_tests.test_nucaps.TestNUCAPSScienceEDRReader
attribute), 516
yaml_file (satpy.tests.reader_tests.test_omps_edr.TestOMPSEDRReader
attribute), 525
yaml_file (satpy.tests.reader_tests.test_seviri_l1b_icare.TestSEVIRIICAREReader
attribute), 542
yaml_file (satpy.tests.reader_tests.test_smos_l2_wind.TestSMOSL2WINDReader
attribute), 549
yaml_file (satpy.tests.reader_tests.test_tropomi_l2.TestTROPOMIL2Reader
attribute), 550
yaml_file (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestImgVIIRSActiveFiresNetCDF4
attribute), 560
yaml_file (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestImgVIIRSActiveFiresText
attribute), 560
yaml_file (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestModVIIRSActiveFiresNetCDF4
attribute), 560
yaml_file (satpy.tests.reader_tests.test_viirs_edr_active_fires.TestModVIIRSActiveFiresText
attribute), 561
yaml_file (satpy.tests.reader_tests.test_viirs_edr_flood.TestVIIRSEDRFloodReader
attribute), 562
yaml_file (satpy.tests.reader_tests.test_viirs_l1b.TestVIIRSL1BReaderDay
attribute), 564
yaml_file (satpy.tests.reader_tests.test_viirs_l2.TestVIIRSL2FileHandler
attribute), 564
yaml_file (satpy.tests.reader_tests.test_viirs_sdr.TestAggrVIIRSSDRReader
attribute), 566
yaml_file (satpy.tests.reader_tests.test_viirs_sdr.TestShortAggrVIIRSSDRReader
attribute), 566
yaml_file (satpy.tests.reader_tests.test_viirs_sdr.TestVIIRSSDRReader
attribute), 568
yaml_file (satpy.tests.reader_tests.test_virr_l1b.TestVIRRL1BReader
attribute), 569
yaw_flip() (satpy.tests.reader_tests.test_goes_imager_nc_noaa.TestMetadata
method), 481
yaw_flip_sampling_distance
(satpy.readers.goes_imager_nc.GOESNCBaseFileHandler
attribute), 249

Z
z (satpy.readers.gms.gms5_vissr_navigation.Satpos at-
tribute), 189
z (satpy.readers.gms.gms5_vissr_navigation.Vector3D
attribute), 191
ZarrCacheHelper (class in satpy.modifiers.angles), 157
zero_missing_data() (in module satpy.composites),
136
zone (satpy.readers.seviri_l1b_icare.SEVIRI_ICARE
property), 342

904 Index

You might also like