Coverage for larch/math/normalization.py: 18%

22 statements  

« prev     ^ index     » next       coverage.py v7.6.0, created at 2024-10-16 21:04 +0000

1#!/usr/bin/env python 

2# -*- coding: utf-8 -*- 

3"""Normalization schemes 

4======================== 

5 

6""" 

7import logging 

8import numpy as np 

9 

10def norm1D(y, norm=None, logger=None, **kws): 

11 """collection of simple 1D normalization methods 

12 

13 Parameters 

14 ---------- 

15 y : array of float, to normalize 

16 norm : string, available options 

17 "max" -> y / np.max(y) 

18 "max-min" -> (y - np.min(y)) / (np.max(y) - np.min(y)) 

19 "area" -> (y - np.min(y)) / np.trapz(y, x=kws.get('x')) 

20 "sum" -> (y - np.min(y)) / np.sum(y) 

21 "larch" -> TODO!!! 

22 

23 Returns 

24 ------- 

25 ynorm : array of float 

26 

27 """ 

28 _logger = logger or logging.getLogger(__name__) 

29 if norm == "max": 

30 return y / np.max(y) 

31 elif norm == "max-min": 

32 return (y - np.min(y)) / (np.max(y) - np.min(y)) 

33 elif norm == "area": 

34 try: 

35 return (y - np.min(y)) / np.trapz(y, x=kws.get("x")) 

36 except Exception: 

37 return (y - np.min(y)) / np.trapz(y) 

38 elif norm == "sum": 

39 return (y - np.min(y)) / np.sum(y) 

40 elif norm == "larch": 

41 _logger.error("NOT IMPLEMENTED YET!") 

42 return y 

43 # try: 

44 # d = DataGroupXanes() 

45 # d.gs.append(Group(_larch=d._larch)) 

46 # d.gs[-1].x = kws.get('x') 

47 # d.gs[-1].y = y 

48 # d.norxafs(d.gs[-1], xattr='x', yattr='y', outattr='flat', **kws) 

49 # return d.gs[-1].flat 

50 # except: 

51 # print('ERROR: Larch normalization failed') 

52 # return y 

53 else: 

54 _logger.debug("Normalization method not applied") 

55 return y 

56 

57 

58if __name__ == "__main__": 

59 pass