Coverage for webgeodyn/filters/spectral.py: 0%
26 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-12-18 09:33 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2023-12-18 09:33 +0000
1import numpy as np
2from webgeodyn.filters import coeffilter, modelfilter, measurefilter
3from webgeodyn.data import GHData, TSData
6@measurefilter
7def keep_m(measure, mmin, mmax):
8 """ Filters the measure to keep only the data corresponding to spherical
9 harmonics of order mmin <= m <= mmax.
10 """
11 for k in range(measure.data.shape[1]):
12 m = measure.k2lm(k)[1]
13 if (m < mmin) or (m > mmax):
14 measure.data[:,k] = 0
15 return measure
18@measurefilter
19def keep_sym(measure, isym=True):
20 """ Filters the measure to keep only the data corresponding to
21 equatorial-symmetric (ES) spherical harmonics for isym=True
22 or equatorial-asymmetric (EA) spherical harmonics for isym=False.
23 """
24 print("isym is ", isym)
25 if type(measure) == GHData:
26 indices = np.argwhere(((measure.l - measure.m) % 2) == isym)
27 measure.data[:,indices] = 0 # Select ES (isym=True) or EA (isym=False) magnetic field coefs
28 measure.setData(measure.data)
30 elif type(measure) == TSData:
31 indices_t_ES = np.argwhere( ((measure.l - measure.m) % 2 != isym) * measure.is_t )
32 indices_s_ES = np.argwhere( ((measure.l - measure.m) % 2 == isym) * measure.is_s )
33 measure.data[:,indices_t_ES] = 0 # Select ES (isym=True) or EA (isym=False) flow coefs
34 measure.data[:,indices_s_ES] = 0 # Select ES (isym=True) or EA (isym=False) flow coefs
35 measure.setData(measure.data)
37 else:
38 # TODO : Perhaps raise a ValueError ? Return None ?
39 print('Invalid measure type: only GHData and TSData are accepted')
40 return
42 return measure