kopia lustrzana https://github.com/corrscope/corrscope
Remove unneeded Wave validation, switch from Flag to Enum
rodzic
d5a1479751
commit
de285317f8
|
@ -13,7 +13,7 @@ FLOAT = np.single
|
|||
|
||||
|
||||
@enum.unique
|
||||
class Flatten(TypedEnumDump, enum.Flag):
|
||||
class Flatten(TypedEnumDump, enum.Enum):
|
||||
""" How to flatten a stereo signal. (Channels beyond first 2 are ignored.)
|
||||
|
||||
Flatten(0) == Flatten.Stereo == Flatten['Stereo']
|
||||
|
@ -63,21 +63,18 @@ class Wave:
|
|||
|
||||
@flatten.setter
|
||||
def flatten(self, flatten: Flatten) -> None:
|
||||
""" If self.is_mono, converts all non-Stereo modes to Mono. """
|
||||
# Reject invalid modes (including Mono).
|
||||
if flatten not in Flatten.modes:
|
||||
# Flatten.Mono not in Flatten.modes.
|
||||
raise CorrError(
|
||||
f"Wave {self.wave_path} has invalid flatten mode {flatten} "
|
||||
f"not in {Flatten.modes}"
|
||||
)
|
||||
|
||||
# If self.is_mono, converts all non-Stereo modes to Mono.
|
||||
self._flatten = flatten
|
||||
if self.is_mono:
|
||||
if flatten != Flatten.Stereo:
|
||||
self._flatten = Flatten.Mono
|
||||
else:
|
||||
if self.flatten == Flatten.Mono:
|
||||
raise CorrError(
|
||||
f"Cannot initialize stereo file {self.wave_path} with flatten=Mono"
|
||||
)
|
||||
if self.is_mono and flatten != Flatten.Stereo:
|
||||
self._flatten = Flatten.Mono
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
|
@ -147,7 +144,7 @@ class Wave:
|
|||
data = data.reshape(-1) # ndarray.flatten() creates copy, is slow.
|
||||
elif flatten != Flatten.Stereo:
|
||||
# data.strides = (4,), so data == contiguous float32
|
||||
if flatten & Flatten.SumAvg:
|
||||
if flatten == Flatten.SumAvg:
|
||||
data = data[..., 0] + data[..., 1]
|
||||
else:
|
||||
data = data[..., 0] - data[..., 1]
|
||||
|
|
|
@ -116,14 +116,14 @@ def test_stereo_flatten_modes(
|
|||
assert data.shape == (nsamp,)
|
||||
|
||||
# If DiffAvg and in-phase, L-R=0.
|
||||
if flatten & Flatten.DiffAvg:
|
||||
if flatten == Flatten.DiffAvg:
|
||||
if len(peaks) >= 2 and peaks[0] == peaks[1]:
|
||||
np.testing.assert_equal(data, 0)
|
||||
else:
|
||||
pass
|
||||
# If SumAvg, check average.
|
||||
else:
|
||||
assert flatten & Flatten.SumAvg
|
||||
assert flatten == Flatten.SumAvg
|
||||
assert_full_scale(data, np.mean(peaks))
|
||||
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue