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
« 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========================
6"""
7import logging
8import numpy as np
10def norm1D(y, norm=None, logger=None, **kws):
11 """collection of simple 1D normalization methods
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!!!
23 Returns
24 -------
25 ynorm : array of float
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
58if __name__ == "__main__":
59 pass