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

1import numpy as np 

2from webgeodyn.filters import coeffilter, modelfilter, measurefilter 

3from webgeodyn.data import GHData, TSData 

4 

5 

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 

16 

17 

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) 

29 

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) 

36 

37 else: 

38 # TODO : Perhaps raise a ValueError ? Return None ? 

39 print('Invalid measure type: only GHData and TSData are accepted') 

40 return 

41 

42 return measure