Source code for pyrfu.mms.db_get_variable
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Built-in imports
import logging
from typing import Optional
# 3rd party imports
from xarray.core.dataarray import DataArray
# Local imports
from pyrfu.mms.get_variable import get_variable
from pyrfu.mms.list_files import list_files
__author__ = "Louis Richard"
__email__ = "louisr@irfu.se"
__copyright__ = "Copyright 2020-2024"
__license__ = "MIT"
__version__ = "2.4.13"
__status__ = "Prototype"
logging.captureWarnings(True)
logging.basicConfig(
format="[%(asctime)s] %(levelname)s: %(message)s",
datefmt="%d-%b-%y %H:%M:%S",
level=logging.INFO,
)
[docs]def db_get_variable(
dataset_name: str,
cdf_name: str,
tint: list,
verbose: Optional[bool] = True,
data_path: Optional[str] = "",
) -> DataArray:
r"""Get variable in the cdf file.
Parameters
----------
dataset_name : str
Name of the dataset.
cdf_name : str
Name of the target field in cdf file.
tint : list
Time interval.
verbose : bool, Optional
Status monitoring. Default is verbose = True
data_path : str, Optional
Path of MMS data. Default uses `pyrfu.mms.mms_config.py`
Returns
-------
out : DataArray
Variable of the target variable.
Raises
------
FileNotFoundError
If no files are found for the dataset.
"""
dataset = dataset_name.split("_")
# Index of the MMS spacecraft
probe = dataset[0][-1]
var = {"inst": dataset[1], "tmmode": dataset[2], "lev": dataset[3]}
try:
var["dtype"] = dataset[4]
except IndexError:
pass
files = list_files(tint, probe, var, data_path=data_path)
if not files:
raise FileNotFoundError(f"No files found for {cdf_name} in {data_path}")
if verbose:
logging.info("Loading %s...", cdf_name)
out = get_variable(files[0], cdf_name)
return out