HIRS

class typhon.datasets.tovs.HIRS(name=None, **kwargs)[source]

High-resolution Infra-Red Sounder.

This class can read HIRS l1b as published in the NOAA CLASS archive.

Reading routines as for any datasets (see documentation for Dataset, MultiFileDataset, and others).

Specifically for HIRS: when reading a single file (i.e. h.read(path)), takes keyword arguments:

radiance_units. Defaults to “si”, by which I annoyingly mean W/(m²·sr·Hz). Set to “classic” if you want mW/(m²·sr·cm^{-1}), which is the unit more commonly used for HIRS and which it is calibrated against.

apply_scale_factors. If true (defaults true), apply scale factors as documented in KLM / POD guides. This is required when calibrate is True.

calibrate. If true (defaults true), apply calibration. When false, will not return any brightness temperatures or radiances, just counts. Note that this relates to the native NOAA calibration, not to any new calibration such as developed for FIDUCEO.

max_flagged. Float between 0 and 1. If a larger proportion than this number is flagged, raise an exception (FIXME DOC) and throw away the entire granule.

Note that this class only reads in the standard HIRS data with its standard calibration. Innovative calibrations including uncertainties are implemented in HIRSFCDR.

To use this class, you need to define in your typhonrc the following settings in the section ‘hirs’:

basedir

subdir

re

(TODO: migrate to definition?)

format_definition_file

only for FIXME

Work in progress.

TODO/FIXME:

  • What is the correct way to use the odd bit parity? Information in NOAA KLM User’s Guide pages 3-31 and 8-154, but I’m not sure how to apply it.

  • If datasets like MHS or AVHRR are added some common code could probably move to a class between HIRS and MultiFileDataset, or to a mixin such as ATOVS.

  • Better handling of duplicates between subsequent granules. Currently it takes all lines from the older granule and none from the newer, but this should be decided on a case-by-case basis (Jon Mittaz, personal communication).

__init__(*args, **kwargs)[source]

Methods

__init__(*args, **kwargs)

as_xarray_dataset(M[, skip_dimensions, ...])

Convert structured ndarray to xarray dataset

calc_time_since_last_calib(M[, D, H, fn])

Calculate time since last calibration.

calibrate(cc, counts)

check_parity(counts)

Verify parity for counts

combine(my_data, other_obj[, other_data, ...])

Combine with data from other dataset.

count_lines_since_last_calib(M[, D, H, fn])

Count scanlines since last calibration.

find_dir_for_time(dt)

Find the directory containing granules/measurements at (date)time

find_granules([dt_start, dt_end, ...])

Yield all granules/measurementfiles in period

find_granules_sorted([dt_start, dt_end, ...])

Yield all granules, sorted by times.

find_most_recent_granule_before(instant, ...)

Find granule covering instant

flagscore(M)

Calculate "flag score"; higher is worse.

get_additional_field(M, fld)

Get additional field.

get_cc(scanlines)

Extract calibration coefficients from scanlines.

get_dataname(header[, robust])

Extract dataname from header.

get_definition_from_PDF(path_to_pdf)

Get HIRS definition from NWPSAF PDF.

get_dtypes(fp)

Get dtypes for file.

get_info_for_granule(p)

Return dict (re.fullmatch) for granule, based on re

get_iwt(header, elem)

Get temperature of internal warm target

get_mandatory_fields()

get_mask_from_flags(header, lines[, max_flagged])

Set mask in lines, based on header and lines info

get_other()

Get other information from scanlines.

get_path_format_variables()

What extra format variables are needed in find_granules?

get_pos()

Get lat-lon from scanlines.

get_subdir_resolution()

Return the resolution for the subdir precision.

get_temp(header, elem, anwrd)

Get temperatures from header, element, anwrd

get_time_from_granule_contents(p)

Get datetime objects for beginning and end of granule

get_times_for_granule(p, **kwargs)

For granule stored in path, get start and end times.

get_wn_c1_c2(header)

Read central wavenumber, c1, and c2 from header

id2name(satid)

Translate satellite id to satellite name.

id2no(satid)

Translate satellite id to satellite number.

iterate_subdirs(d_start, d_end, **extra)

Iterate through all subdirs in dataset.

rad2bt(rad_wn, wn, c1, c2)

Apply the standard radiance-to-BT conversion from NOAA KLM User's Guide.

read([f, fields, pseudo_fields])

Read granule in file and do some other fixes

read_period([start, end, onerror, fields, ...])

Read all granules between start and end, in bulk.

seekhead(f)

Seek open file to header position.

setlocal()

Set local attributes, from config or otherwise.

verify_mandatory_fields(extra)

Attributes

aliases

basedir

concat_coor

count_end

count_start

datefields

default_orbit_filters

end_date

filter_calibcounts

filter_prttemps

flag_fields

format_definition_file

granule_cache_file

granule_duration

granules_firstline_db

granules_firstline_file

mandatory_fields

max_valid_time_ptp

maxsize

my_pseudo_fields

n_calibchannels

n_channels

n_minorframes

n_perline

name

re

read_returns

refields

related

satellites

satname

section

srf_backend_f

srf_backend_response

srf_dir

srf_rttov

start_date

subdir

temperature_fields

time_field

typ_Earth

typ_iwt

typ_space

unique_fields

valid_field_values

dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object's (key, value) pairs dict(iterable) -> new dictionary initialized as if via: d = {} for k, v in iterable: d[k] = v dict(**kwargs) -> new dictionary initialized with the name=value pairs in the keyword argument list. For example: dict(one=1, two=2).