From 690dfa66671e5cfcb741d1aa4f9a238826de721d Mon Sep 17 00:00:00 2001 From: Florent Jaillet <florent.jaillet@lis-lab.fr> Date: Wed, 13 Jun 2018 11:18:22 +0200 Subject: [PATCH] Replace the _complex_entries_only decorator by the use of a simple method --- .cache/v/cache/lastfailed | 1 + madarrays/mad_array.py | 31 +++++++++++++------------------ 2 files changed, 14 insertions(+), 18 deletions(-) create mode 100644 .cache/v/cache/lastfailed diff --git a/.cache/v/cache/lastfailed b/.cache/v/cache/lastfailed new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/.cache/v/cache/lastfailed @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/madarrays/mad_array.py b/madarrays/mad_array.py index 78947f7..9bfc55d 100644 --- a/madarrays/mad_array.py +++ b/madarrays/mad_array.py @@ -91,16 +91,6 @@ def _merge_masks(ma1, ma2): return {'mask': np.logical_or(ma1.unknown_mask, ma2.unknown_mask)} -def _complex_masking_only(f): - def decorated(self): - if not self._complex_masking: - errmsg = 'Method not defined if masking is not complex.' - raise ValueError(errmsg) - return f(self) - decorated.__doc__ = f.__doc__ - return decorated - - UFUNC_NOT_RETURNING_MADARRAYS = ['bitwise_and', 'bitwise_or', 'bitwise_xor', 'invert', 'left_shift', 'right_shift', 'greater', 'greater_equal', 'less', @@ -429,7 +419,6 @@ class MadArray(np.ndarray): return np.copy(self._mask) @property - @_complex_masking_only def any_unknown_mask(self): """Boolean mask for coefficients with unknown magnitude and/or phase. @@ -446,10 +435,10 @@ class MadArray(np.ndarray): ValueError If `complex_masking` is False. """ + self._raise_if_not_complex_masking() return ~(self._mask == 0) @property - @_complex_masking_only def all_unknown_mask(self): """Boolean mask for coefficients with both unknown magnitude and phase. @@ -466,10 +455,10 @@ class MadArray(np.ndarray): ValueError If `complex_masking` is False. """ + self._raise_if_not_complex_masking() return self._mask == 3 @property - @_complex_masking_only def known_phase_mask(self): """Boolean mask for coefficients with known phase. @@ -485,10 +474,10 @@ class MadArray(np.ndarray): ValueError If masking is not complex. """ + self._raise_if_not_complex_masking() return ~np.logical_or(self._mask == 1, self._mask == 3) @property - @_complex_masking_only def unknown_phase_mask(self): """Boolean mask for coefficients with unknown phase. @@ -504,10 +493,10 @@ class MadArray(np.ndarray): ValueError If masking is not complex. """ + self._raise_if_not_complex_masking() return np.logical_or(self._mask == 1, self._mask == 3) @property - @_complex_masking_only def known_magnitude_mask(self): """Boolean mask for coefficients with known magnitude. @@ -523,10 +512,10 @@ class MadArray(np.ndarray): ValueError If masking is not complex. """ + self._raise_if_not_complex_masking() return ~np.logical_or(self._mask == 2, self._mask == 3) @property - @_complex_masking_only def unknown_magnitude_mask(self): """Boolean mask for coefficients with unknown magnitude @@ -542,10 +531,10 @@ class MadArray(np.ndarray): ValueError If masking is not complex. """ + self._raise_if_not_complex_masking() return np.logical_or(self._mask == 2, self._mask == 3) @property - @_complex_masking_only def unknown_phase_only_mask(self): """Boolean mask for coefficients with unknown phase and known magnitude. @@ -562,10 +551,10 @@ class MadArray(np.ndarray): ValueError If masking is not complex. """ + self._raise_if_not_complex_masking() return self._mask == 1 @property - @_complex_masking_only def unknown_magnitude_only_mask(self): """Boolean mask for coefficients with unknown magnitude and known phase. @@ -582,6 +571,7 @@ class MadArray(np.ndarray): ValueError If masking is not complex. """ + self._raise_if_not_complex_masking() return self._mask == 2 @property @@ -620,6 +610,11 @@ class MadArray(np.ndarray): else: return np.average(self.unknown_mask) + def _raise_if_not_complex_masking(self): + if not self._complex_masking: + errmsg = 'Method not defined if masking is not complex.' + raise ValueError(errmsg) + def is_masked(self): """Indicate if one or several elements are masked.""" return np.any(self._mask) -- GitLab