Skip to content

Commit

Permalink
Merge pull request #190 from pysat/enh/187_clean
Browse files Browse the repository at this point in the history
ENH: Use generalized clean function
  • Loading branch information
jklenzing committed Jun 14, 2023
2 parents 77fa1c1 + bc5c0b3 commit 303ea96
Show file tree
Hide file tree
Showing 18 changed files with 61 additions and 91 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ This project adheres to [Semantic Versioning](https://semver.org/).
* Added `var_translation` kwarg to `load_xarray` interface so that variables can
be renamed before attempting to merge.
* Improved usage of cdflib for users in xarray instruments
* Added a generalized `clean` routine to replace fill vals with NaNs
* Deprecations
* Deprecated jpl_gps instrtument module, moved roti instrument to igs_gps
* Maintenance
Expand Down
4 changes: 2 additions & 2 deletions pysatNASA/instruments/ace_epam_l2.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@
# Use standard init routine
init = functools.partial(mm_nasa.init, module=mm_ace, name=name)

# Use default ace clean
clean = mm_ace.clean
# Use default clean
clean = mm_nasa.clean

# ----------------------------------------------------------------------------
# Instrument functions
Expand Down
4 changes: 2 additions & 2 deletions pysatNASA/instruments/ace_mag_l2.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,8 @@ def preprocess(self):
return


# Use default ace clean
clean = mm_ace.clean
# Use default clean
clean = mm_nasa.clean

# ----------------------------------------------------------------------------
# Instrument functions
Expand Down
4 changes: 2 additions & 2 deletions pysatNASA/instruments/ace_sis_l2.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@
# Use standard init routine
init = functools.partial(mm_nasa.init, module=mm_ace, name=name)

# Use default ace clean
clean = mm_ace.clean
# Use default clean
clean = mm_nasa.clean

# ----------------------------------------------------------------------------
# Instrument functions
Expand Down
4 changes: 2 additions & 2 deletions pysatNASA/instruments/ace_swepam_l2.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,8 @@
# Use standard init routine
init = functools.partial(mm_nasa.init, module=mm_ace, name=name)

# Use default ace clean
clean = mm_ace.clean
# Use default clean
clean = mm_nasa.clean

# ----------------------------------------------------------------------------
# Instrument functions
Expand Down
18 changes: 2 additions & 16 deletions pysatNASA/instruments/cnofs_plp.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@

import datetime as dt
import functools
import numpy as np

from pysat.instruments.methods import general as mm_gen

Expand Down Expand Up @@ -88,21 +87,8 @@
init = functools.partial(mm_nasa.init, module=mm_cnofs, name=name)


def clean(self):
"""Clean C/NOFS PLP data to the specified level.
Note
----
Basic cleaning to find valid Epoch values
"""

for key in self.data.columns:
if key != 'Epoch':
fill = self.meta[key, self.meta.labels.fill_val]
idx, = np.where(self[key] == fill)
self[idx, key] = np.nan
return
# Use default clean
clean = mm_nasa.clean


# ----------------------------------------------------------------------------
Expand Down
4 changes: 2 additions & 2 deletions pysatNASA/instruments/de2_fpi.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,8 @@
# Use standard init routine
init = functools.partial(mm_nasa.init, module=mm_de2, name=name)

# No cleaning, use standard warning function instead
clean = mm_nasa.clean_warn
# Use default clean
clean = mm_nasa.clean

# ----------------------------------------------------------------------------
# Instrument functions
Expand Down
4 changes: 2 additions & 2 deletions pysatNASA/instruments/de2_lang.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@
# Use standard init routine
init = functools.partial(mm_nasa.init, module=mm_de2, name=name)

# No cleaning, use standard warning function instead
clean = mm_nasa.clean_warn
# Use default clean
clean = mm_nasa.clean

# ----------------------------------------------------------------------------
# Instrument functions
Expand Down
4 changes: 2 additions & 2 deletions pysatNASA/instruments/de2_nacs.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,8 +104,8 @@
# Use standard init routine
init = functools.partial(mm_nasa.init, module=mm_de2, name=name)

# No cleaning, use standard warning function instead
clean = mm_nasa.clean_warn
# Use default clean
clean = mm_nasa.clean

# ----------------------------------------------------------------------------
# Instrument functions
Expand Down
4 changes: 2 additions & 2 deletions pysatNASA/instruments/de2_rpa.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@
# Use standard init routine
init = functools.partial(mm_nasa.init, module=mm_de2, name=name)

# No cleaning, use standard warning function instead
clean = mm_nasa.clean_warn
# Use default clean
clean = mm_nasa.clean

# ----------------------------------------------------------------------------
# Instrument functions
Expand Down
4 changes: 2 additions & 2 deletions pysatNASA/instruments/de2_vefi.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,8 @@
# Use standard init routine
init = functools.partial(mm_nasa.init, module=mm_de2, name=name)

# No cleaning, use standard warning function instead
clean = mm_nasa.clean_warn
# Use default clean
clean = mm_nasa.clean

# ----------------------------------------------------------------------------
# Instrument functions
Expand Down
4 changes: 2 additions & 2 deletions pysatNASA/instruments/de2_wats.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,8 @@
# Use standard init routine
init = functools.partial(mm_nasa.init, module=mm_de2, name=name)

# No cleaning, use standard warning function instead
clean = mm_nasa.clean_warn
# Use default clean
clean = mm_nasa.clean

# ----------------------------------------------------------------------------
# Instrument functions
Expand Down
4 changes: 2 additions & 2 deletions pysatNASA/instruments/formosat1_ivm.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,8 @@ def init(self):
return


# No cleaning, use standard warning function instead
clean = mm_nasa.clean_warn
# Use default clean
clean = mm_nasa.clean

# ----------------------------------------------------------------------------
# Instrument functions
Expand Down
4 changes: 2 additions & 2 deletions pysatNASA/instruments/igs_gps.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,8 @@
init = functools.partial(mm_nasa.init, module=mm_igs, name=name)


# No cleaning, use standard warning function instead
clean = mm_nasa.clean_warn
# Use default clean
clean = mm_nasa.clean

# ----------------------------------------------------------------------------
# Instrument functions
Expand Down
23 changes: 3 additions & 20 deletions pysatNASA/instruments/iss_fpmu.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@

import datetime as dt
import functools
import numpy as np

from pysat.instruments.methods import general as mm_gen
from pysat import logger

from pysatNASA.instruments.methods import cdaweb as cdw
from pysatNASA.instruments.methods import general as mm_nasa

# ----------------------------------------------------------------------------
# Instrument attributes
Expand Down Expand Up @@ -79,25 +79,8 @@ def init(self):
return


def clean(self):
"""Clean ISS FPMU data to the specified level.
Note
----
'clean' - Replace Te and Ni fill values with NaN
'dusty' - Same as clean
'dirty' - Same as clean
'none' - Not applied, default fill values are preserved
"""

# Replace Te data fill
self.data.replace(-999., np.nan, inplace=True)

# Replace Ne data fill
self.data.replace(-9.9999998e+30, np.nan, inplace=True)

return
# Use default clean
clean = mm_nasa.clean


# ----------------------------------------------------------------------------
Expand Down
4 changes: 2 additions & 2 deletions pysatNASA/instruments/jpl_gps.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,8 @@ def init(self):
return


# No cleaning, use standard warning function instead
clean = mm_nasa.clean_warn
# Use default clean
clean = mm_nasa.clean

# ----------------------------------------------------------------------------
# Instrument functions
Expand Down
29 changes: 0 additions & 29 deletions pysatNASA/instruments/methods/ace.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
# -*- coding: utf-8 -*-
"""Provides non-instrument specific routines for ACE data."""

import numpy as np

from pysatNASA.instruments.methods import cdaweb as cdw

ackn_str = ' '.join(("Please acknowledge the NASA National Space Science Data",
Expand Down Expand Up @@ -87,30 +85,3 @@ def load(fnames, tag='', inst_id='', to_pandas=False):
data = data.to_dataframe()

return data, meta


def clean(self):
"""Clean ACE data to the specified level.
Note
----
Basic cleaning to replace fill values with NaN
"""

# Get a list of coords for the data
if self.pandas_format:
coords = [self.data.index.name]
else:
coords = [key for key in self.data.coords.keys()]

for key in self.variables:
# Skip over the coordinates when cleaning
if key not in coords:
fill = self.meta[key, self.meta.labels.fill_val]

# Replace fill with nan
fill_mask = self[key] == fill
self[key] = self.data[key].where(~fill_mask)
self.meta[key] = {self.meta.labels.fill_val: np.nan}
return
29 changes: 29 additions & 0 deletions pysatNASA/instruments/methods/general.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
"""General methods for NASA instruments."""

import numpy as np

import pysat


Expand Down Expand Up @@ -43,6 +45,33 @@ def init(self, module, name):
return


def clean(self):
"""Clean data to the specified level.
Note
----
Basic cleaning to replace fill values with NaN
"""

# Get a list of coords for the data
if self.pandas_format:
coords = [self.data.index.name]
else:
coords = [key for key in self.data.coords.keys()]

for key in self.variables:
# Skip over the coordinates when cleaning
if key not in coords:
fill = self.meta[key, self.meta.labels.fill_val]

# Replace fill with nan
fill_mask = self[key] == fill
self[key] = self.data[key].where(~fill_mask)
self.meta[key] = {self.meta.labels.fill_val: np.nan}
return


def clean_warn(self):
"""Warn user that cleaning not yet available for this data set.
Expand Down

0 comments on commit 303ea96

Please sign in to comment.