-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #217 from pysat/bug/de2_vefi
BUG: de2 vefi load
- Loading branch information
Showing
7 changed files
with
265 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,168 @@ | ||
"""Module for the DE2 VEFI instrument. | ||
From CDAWeb (adpated): | ||
This directory gathers data for the VEFI and Magnetometer instruments that flew | ||
on the DE 2 spacecraft which was launched on 3 August 1981 into an elliptical | ||
orbit with an altitude range of 300 km to 1000 km and re-entered the atmosphere | ||
on 19 February 1983. | ||
References | ||
---------- | ||
Maynard, N. C., E. A. Bielecki, H. G. Burdick, Instrumentation for vector | ||
electric field measurements from DE-B, Space Sci. Instrum., 5, 523, 1981. | ||
Properties | ||
---------- | ||
platform | ||
'de2' | ||
name | ||
'vefimagb' | ||
tag | ||
'e', 'b' | ||
inst_id | ||
none supported | ||
Note | ||
---- | ||
Electric and Magnetic fields have the same cadence, but different time indices. | ||
Currently loads one index per instrument. Files kept in the same directory to | ||
prevent duplication of downloads. | ||
Examples | ||
-------- | ||
:: | ||
import datetime as dt | ||
import pysat | ||
# Set electric field instrument | ||
vefi = pysat.Instrument(platform='de2', name='vefimagb', tag='e') | ||
vefi.download(dt.datetime(1983, 1, 1)) | ||
# Set magnetic field instrument | ||
mag = pysat.Instrument(platform='de2', name='vefimagb', tag='b') | ||
# Both instruments can be loaded from the same download | ||
vefi.load(1983, 1) | ||
mag.load(1983, 1) | ||
""" | ||
|
||
import datetime as dt | ||
import functools | ||
import os | ||
|
||
from pysat.instruments.methods import general as mm_gen | ||
from pysatNASA.instruments.methods import cdaweb as cdw | ||
from pysatNASA.instruments.methods import de2 as mm_de2 | ||
from pysatNASA.instruments.methods import general as mm_nasa | ||
|
||
# ---------------------------------------------------------------------------- | ||
# Instrument attributes | ||
|
||
platform = 'de2' | ||
name = 'vefimagb' | ||
tags = {'e': '62 ms cadence Electric Field data', | ||
'b': '62 ms cadence Magnetometer data'} | ||
inst_ids = {'': [tag for tag in tags.keys()]} | ||
|
||
# Because both data products are stored in one file, tag not used | ||
directory_format = os.path.join('{platform}', '{name}', '{inst_id}') | ||
|
||
# ---------------------------------------------------------------------------- | ||
# Instrument test attributes | ||
|
||
_test_dates = {'': {tag: dt.datetime(1983, 1, 1) for tag in tags.keys()}} | ||
|
||
|
||
# ---------------------------------------------------------------------------- | ||
# Instrument methods | ||
|
||
# Use standard init routine | ||
init = functools.partial(mm_nasa.init, module=mm_de2, name='vefi') | ||
|
||
# No cleaning, use standard warning function instead | ||
clean = mm_nasa.clean_warn | ||
|
||
# ---------------------------------------------------------------------------- | ||
# Instrument functions | ||
# | ||
# Use the default CDAWeb and pysat methods | ||
|
||
# Set the list_files routine | ||
datestr = '{year:04d}{month:02d}{day:02d}_v{version:02d}' | ||
fname = 'de2_62ms_vefimagb_{datestr:s}.cdf' | ||
supported_tags = {'': {tag: fname.format(datestr=datestr) | ||
for tag in tags.keys()}} | ||
list_files = functools.partial(mm_gen.list_files, | ||
supported_tags=supported_tags) | ||
|
||
|
||
# Set the load routine | ||
def load(fnames, tag='', inst_id='', **kwargs): | ||
"""Load DE2 VEFI data. | ||
This routine is called as needed by pysat. It is not intended | ||
for direct user interaction. | ||
Parameters | ||
---------- | ||
fnames : array-like | ||
Iterable of filename strings, full path, to data files to be loaded. | ||
This input is nominally provided by pysat itself. | ||
tag : str | ||
Tag name used to identify particular data set to be loaded. | ||
This input is nominally provided by pysat itself. (default='') | ||
inst_id : str | ||
Instrument ID used to identify particular data set to be loaded. | ||
This input is nominally provided by pysat itself. (default='') | ||
kwargs : dict | ||
Additional kwargs that may be supplied to the instrument during the | ||
course of unit tests. Not implemented for this instrument. | ||
Returns | ||
------- | ||
data : pds.DataFrame | ||
A pandas DataFrame with data prepared for the `pysat.Instrument`. | ||
meta : pysat.Meta | ||
Metadata formatted for a pysat.Instrument object. | ||
Note | ||
---- | ||
Several variables relating to time stored in different formats are dropped. | ||
These are redundant and complicate the load procedure. | ||
""" | ||
|
||
# Select which epoch to use, drop the rest. | ||
if tag == 'b': | ||
epoch_name = 'mtimeEpoch' | ||
drop_dims = 'vtimeEpoch' | ||
elif tag == 'e': | ||
epoch_name = 'vtimeEpoch' | ||
drop_dims = 'mtimeEpoch' | ||
|
||
# Load and drop appropriate data. | ||
data, meta = cdw.load_xarray(fnames, tag=tag, inst_id=inst_id, | ||
epoch_name=epoch_name, | ||
drop_dims=drop_dims) | ||
# Convert to pandas. | ||
if hasattr(data, 'to_pandas'): | ||
data = data.to_pandas() | ||
else: | ||
# xarray 0.16 support required for operational server | ||
data = data.to_dataframe() | ||
|
||
return data, meta | ||
|
||
|
||
# Set the download routine | ||
download_tags = {'': {'e': 'DE2_62MS_VEFIMAGB', | ||
'b': 'DE2_62MS_VEFIMAGB'}} | ||
download = functools.partial(cdw.cdas_download, supported_tags=download_tags) | ||
|
||
# Set the list_remote_files routine | ||
list_remote_files = functools.partial(cdw.cdas_list_remote_files, | ||
supported_tags=download_tags) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters