utilities
Download and management utilities
General Methods
- IS2view.utilities.get_data_path(relpath: list | str | Path)[source]
Get the absolute path within a package from a relative path
- Parameters:
- relpath: list, str or pathlib.Path
relative path
- IS2view.utilities.import_dependency(name: str, extra: str = '', raise_exception: bool = False)[source]
Import an optional dependency
Adapted from
pandas.compat._optional::import_optional_dependency- Parameters:
- name: str
Module name
- extra: str, default “”
Additional text to include in the
ImportErrormessage- raise_exception: bool, default False
Raise an
ImportErrorif the module is not found
- Returns:
- module: obj
Imported module
- IS2view.utilities.dependency_available(name: str, minversion: str | None = None)[source]
Checks whether a module is installed without importing it
Adapted from
xarray.namedarray.utils.module_available- Parameters:
- name: str
Module name
- minversionstr, optional
Minimum version of the module
- Returns:
- availablebool
Whether the module is installed
- IS2view.utilities.get_hash(local: str | IOBase | Path, algorithm: str = 'md5')[source]
Get the hash value from a local file or
BytesIOobject- Parameters:
- local: obj, str or pathlib.Path
BytesIO object or path to file
- algorithm: str, default ‘md5’
hashing algorithm for checksum validation
- IS2view.utilities.url_split(s: str)[source]
Recursively split a url path into a list
- Parameters:
- s: str
url string
- IS2view.utilities.get_unix_time(time_string: str, format: str = '%Y-%m-%d %H:%M:%S')[source]
Get the Unix timestamp value for a formatted date string
- Parameters:
- time_string: str
formatted time string to parse
- format: str, default ‘%Y-%m-%d %H:%M:%S’
format for input time string
- IS2view.utilities.s3_client(HOST: str = 'https://data.nsidc.earthdatacloud.nasa.gov/s3credentials', timeout: int | None = None, region_name: str = 'us-west-2')[source]
Get AWS s3 client for NSIDC data in the cloud https://data.nsidc.earthdatacloud.nasa.gov/s3credentials
- Parameters:
- HOST: str
NSIDC AWS S3 credential host
- timeout: int or NoneType, default None
timeout in seconds for blocking operations
- region_name: str, default ‘us-west-2’
AWS region name
- Returns:
- client: obj
AWS s3 client for NSIDC Cumulus
- IS2view.utilities.s3_filesystem(HOST: str = 'https://data.nsidc.earthdatacloud.nasa.gov/s3credentials', timeout: int | None = None, region_name: str = 'us-west-2')[source]
Get AWS s3 file system object for NSIDC data in the cloud https://data.nsidc.earthdatacloud.nasa.gov/s3credentials
- Parameters:
- HOST: str
NSIDC AWS S3 credential host
- timeout: int or NoneType, default None
timeout in seconds for blocking operations
- region_name: str, default ‘us-west-2’
AWS region name
- Returns:
- session: obj
AWS s3 file system session for NSIDC Cumulus
- IS2view.utilities.s3_bucket(presigned_url: str)[source]
Get a s3 bucket name from a presigned url
- Parameters:
- presigned_url: str
s3 presigned url
- Returns:
- bucket: str
s3 bucket name
- IS2view.utilities.s3_key(presigned_url: str)[source]
Get a s3 bucket key from a presigned url
- Parameters:
- presigned_url: str
s3 presigned url or https url
- Returns:
- key: str
s3 bucket key for object
- IS2view.utilities.s3_presigned_url(bucket: str, key: str)[source]
Get a s3 presigned url from a bucket and object key
- Parameters:
- bucket: str
s3 bucket name
- key: str
s3 bucket key for object
- Returns:
- presigned_url: str
s3 presigned url
- IS2view.utilities.generate_presigned_url(bucket: str, key: str, expiration: int = 3600)[source]
Generate a presigned https URL to share an S3 object
- Parameters:
- bucket: str
s3 bucket name
- key: str
s3 bucket key for object
- expiration: int
Time in seconds for the presigned URL to remain valid
- Returns:
- presigned_url: str
s3 presigned https url
- IS2view.utilities._create_ssl_context_no_verify() SSLContext[source]
Creates an SSL context for unverified connections
- IS2view.utilities._set_ssl_context_options(context: SSLContext) None[source]
Sets the default options for the SSL context
- IS2view.utilities.attempt_login(urs: str = 'urs.earthdata.nasa.gov', context=<ssl.SSLContext object>, password_manager: bool = False, get_ca_certs: bool = False, redirect: bool = False, authorization_header: bool = True, **kwargs)[source]
attempt to build a
urllibopener for NASA Earthdata- Parameters:
- urs: str, default urs.earthdata.nasa.gov
Earthdata login URS 3 host
- context: obj, default IS2view.utilities._default_ssl_context
SSL context for
urllibopener object- password_manager: bool, default True
Create password manager context using default realm
- get_ca_certs: bool, default False
Get list of loaded “certification authority” certificates
- redirect: bool, default False
Create redirect handler object
- authorization_header: bool, default False
Add base64 encoded authorization header to opener
- username: str, default from environmental variable
NASA Earthdata username
- password: str, default from environmental variable
NASA Earthdata password
- retries: int, default 5
number of retry attempts
- netrc: str, default ~/.netrc
path to .netrc file for authentication
- Returns:
- opener: obj
OpenerDirector instance
- IS2view.utilities.build_opener(username: str, password: str, context=<ssl.SSLContext object>, password_manager: bool = True, get_ca_certs: bool = False, redirect: bool = False, authorization_header: bool = False, urs: str = 'https://urs.earthdata.nasa.gov')[source]
Build
urllibopener for NASA Earthdata with supplied credentials- Parameters:
- username: str or NoneType, default None
NASA Earthdata username
- password: str or NoneType, default None
NASA Earthdata password
- context: obj, default IS2view.utilities._default_ssl_context
SSL context for
urllibopener object- password_manager: bool, default True
Create password manager context using default realm
- get_ca_certs: bool, default False
Get list of loaded “certification authority” certificates
- redirect: bool, default False
Create redirect handler object
- authorization_header: bool, default False
Add base64 encoded authorization header to opener
- urs: str, default ‘https://urs.earthdata.nasa.gov’
Earthdata login URS 3 host
- Returns:
- opener: obj
OpenerDirectorinstance
- IS2view.utilities.get_token(HOST: str = 'https://urs.earthdata.nasa.gov/api/users/token', username: str | None = None, password: str | None = None, build: bool = True, urs: str = 'urs.earthdata.nasa.gov')[source]
Generate a NASA Earthdata User Token
- Parameters:
- HOST: str or list
NASA Earthdata token API host
- username: str or NoneType, default None
NASA Earthdata username
- password: str or NoneType, default None
NASA Earthdata password
- build: bool, default True
Build opener and check credentials
- timeout: int or NoneType, default None
timeout in seconds for blocking operations
- urs: str, default ‘urs.earthdata.nasa.gov’
NASA Earthdata URS 3 host
- Returns:
- token: dict
JSON response with NASA Earthdata User Token
- IS2view.utilities.list_tokens(HOST: str = 'https://urs.earthdata.nasa.gov/api/users/tokens', username: str | None = None, password: str | None = None, build: bool = True, urs: str = 'urs.earthdata.nasa.gov')[source]
List the current associated NASA Earthdata User Tokens
- Parameters:
- HOST: str
NASA Earthdata list token API host
- username: str or NoneType, default None
NASA Earthdata username
- password: str or NoneType, default None
NASA Earthdata password
- build: bool, default True
Build opener and check credentials
- timeout: int or NoneType, default None
timeout in seconds for blocking operations
- urs: str, default ‘urs.earthdata.nasa.gov’
NASA Earthdata URS 3 host
- Returns:
- tokens: list
JSON response with NASA Earthdata User Tokens
- IS2view.utilities.revoke_token(token: str, HOST: str = 'https://urs.earthdata.nasa.gov/api/users/revoke_token', username: str | None = None, password: str | None = None, build: bool = True, urs: str = 'urs.earthdata.nasa.gov')[source]
Generate a NASA Earthdata User Token
- Parameters:
- token: str
NASA Earthdata token to be revoked
- HOST: str
NASA Earthdata revoke token API host
- username: str or NoneType, default None
NASA Earthdata username
- password: str or NoneType, default None
NASA Earthdata password
- build: bool, default True
Build opener and check credentials
- timeout: int or NoneType, default None
timeout in seconds for blocking operations
- urs: str, default ‘urs.earthdata.nasa.gov’
NASA Earthdata URS 3 host
- IS2view.utilities.check_credentials()[source]
Check that entered NASA Earthdata credentials are valid
- IS2view.utilities.from_nsidc(HOST: str | list, username: str | None = None, password: str | None = None, build: bool = True, timeout: int | None = None, urs: str = 'urs.earthdata.nasa.gov', local: str | ~pathlib.Path | None = None, hash: str = '', chunk: int = 16384, verbose: bool = False, fid=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>, mode: oct = 509)[source]
Download a file from a NSIDC https server
- Parameters:
- HOST: str or list
remote https host
- username: str or NoneType, default None
NASA Earthdata username
- password: str or NoneType, default None
NASA Earthdata password
- build: bool, default True
Build opener and check credentials
- timeout: int or NoneType, default None
timeout in seconds for blocking operations
- urs: str, default ‘urs.earthdata.nasa.gov’
NASA Earthdata URS 3 host
- local: str or NoneType, default None
path to local file
- hash: str, default ‘’
MD5 hash of local file
- chunk: int, default 16384
chunk size for transfer encoding
- verbose: bool, default False
print file transfer information
- fid: obj, default sys.stdout
open file object to print if verbose
- mode: oct, default 0o775
permissions mode of output local file
- Returns:
- remote_buffer: obj
BytesIO representation of file
- response_error: str or None
notification for response error
- IS2view.utilities.cmr_query_release(release: str | int | None)[source]
Build formatted query string for ICESat-2 release
- Parameters:
- release: str
ICESat-2 data release
- Returns:
- query_params: str
formatted string for CMR queries
- IS2view.utilities.cmr_regions(region: str | list | None)[source]
Check if the submitted ATL14/15 regions are valid
- Parameters:
- region: str, list or NoneType, default None
- Returns:
- region_list: list
formatted available ATL14/15 regions
- IS2view.utilities.cmr_resolutions(resolution: str | list | None)[source]
Check if the submitted ATL14/15 resolutions are valid
- Parameters:
- resolution: str, list or NoneType, default None
ICESat-2 ATL14/15 spatial resolution
- Returns:
- resolution_list: list
formatted available ATL14/15 resolutions
- IS2view.utilities.cmr_readable_granules(product: str, **kwargs)[source]
Create list of readable granule names for CMR queries
- Parameters:
- product: str
ICESat-2 data product
- regions: str, list or NoneType, default None
ICESat-2 ATL14/15 region name
- resolutions: str, list or NoneType, default None
ICESat-2 ATL14/15 spatial resolution
- Returns:
- readable_granule_list: list
readable granule names for CMR queries
- IS2view.utilities.cmr_filter_json(search_results: dict, endpoint: str = 'data', request_type: str = 'application/x-hdfeos')[source]
Filter the CMR json response for desired data files
- Parameters:
- search_results: dict
json response from CMR query
- endpoint: str, default ‘data’
url endpoint type
'data': NASA Earthdata https archive'opendap': NASA Earthdata OPeNDAP archive's3': NASA Earthdata Cumulus AWS S3 bucket
- request_type: str, default ‘application/x-hdfeos’
data type for reducing CMR query
- Returns:
- producer_granule_ids: list
ICESat-2 granules
- granule_urls: list
ICESat-2 granule urls from NSIDC
- IS2view.utilities.cmr(product: str = None, release: str = None, regions: str | list | None = None, resolutions: str | list | None = None, provider: str = 'NSIDC_CPRD', endpoint: str = 'data', request_type: str = 'application/(x-)?netcdf', opener=None, context: ~ssl.SSLContext = <ssl.SSLContext object>, verbose: bool = False, fid=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>)[source]
Query the NASA Common Metadata Repository (CMR) for ICESat-2 data
- Parameters:
- product: str or NoneType, default None
ICESat-2 data product
- release: str or NoneType, default None
ICESat-2 data release
- regions: str, list or NoneType, default None
ICESat-2 ATL14/15 region name
- resolutions: str, list or NoneType, default None
ICESat-2 ATL14/15 spatial resolution
- provider: str, default ‘NSIDC_CPRD’
CMR data provider
- endpoint: str, default ‘data’
url endpoint type
'data': NASA Earthdata https archive'opendap': NASA Earthdata OPeNDAP archive's3': NASA Earthdata Cumulus AWS S3 bucket
- request_type: str, default ‘application/(x-)?netcdf’
data type for reducing CMR query
- opener: obj or NoneType, default None
OpenerDirectorinstance- context: obj, default IS2view.utilities._default_ssl_context
SSL context for
urllibopener object- verbose: bool, default False
print file transfer information
- fid: obj, default sys.stdout
open file object to print if verbose
- Returns:
- producer_granule_ids: list
ICESat-2 granules
- granule_urls: list
ICESat-2 granule urls from NSIDC
- IS2view.utilities.query_resources(**kwargs)[source]
Queries CMR or s3 for available granules
- Parameters:
- asset: str, default ‘nsidc-https’
Location to get the ICESat-2 gridded land ice data
nsidc-https: NSIDC on-prem DAACnsidc-s3: NSIDC AWS protected s3 bucketatlas-s3: s3 bucket in us-west-2atlas-local: local directory
- bucket: str, default ‘is2view’
Project AWS s3 bucket name
- directory: str or NoneType, default None
Working data directory if local
- product: str, default ‘ATL15’
ICESat-2 gridded land ice product
ATL14: land ice heightATL15: land ice height change
- release: str, default ‘004’
ICESat-2 data release
- version: str, default ‘01’
ICESat-2 data version
- region: str, default ‘AA’
ICESat-2 ATL14/15 region name
AA: AntarcticCN: Northern Canadian ArchipelagobbCS: Southern Canadian ArchipelagoGL: GreenlandIS: IcelandSV: SvalbardRA: Russian High Arctic
- resolution: str, default ‘01km’
ICESat-2 ATL14/15 spatial resolution
100m: 100 meters horizontal01km: 1 kilometer horizontal10km: 10 kilometers horizontal20km: 20 kilometers horizontal40km: 40 kilometers horizontal
- format: str, default ‘nc’
Data format for ICESat-2 granules
nc: Native netCDF4zarr: Cloud-optimized zarr
- Returns:
- granule: str
presigned url or path for granule