Belle II Software development
CDF Class Reference
Inheritance diagram for CDF:
Transform ProTool

Public Member Functions

 __init__ (self, *args)
 
 fit (self, x, y=None)
 
 __call__ (self, x)
 
 transform (self, x, set_limits=False)
 
 set_n_bins (self, n)
 
 set_limits (self, x)
 
 io (self)
 

Public Attributes

 spline = None
 Spline, fitting the CDF.
 
 n_bins = n_bins
 Binning in x, will be set automatically.
 
int max = 0
 Maximum of the fitted distribution.
 
int min = 0
 Minimum of the fitted distribution.
 
bool is_processed = False
 Status flag.
 
 name = name
 Name of the class.
 

Protected Member Functions

 _fit (self, x, y=None)
 
 _transform (self, x)
 
 _initialise (self, x)
 

Detailed Description

Calculates the cumulative distribution (CDF)
Can be used for the flat transformation.

Attributes
----------
spline : InterpolatedUnivariateSpline
    Spline, fitting the CDF

Definition at line 179 of file transform.py.

Constructor & Destructor Documentation

◆ __init__()

__init__ ( self,
* args )
 Init function

:param args: None

Definition at line 192 of file transform.py.

192 def __init__(self, *args):
193 """ Init function
194
195 :param args: None
196 """
197 Transform.__init__(self, "CDF", *args)
198
199
200 self.spline = None
201

Member Function Documentation

◆ __call__()

__call__ ( self,
x )
inherited
 Call function calls transform
:param x:   Input data
:return:    Transformed data

Definition at line 95 of file transform.py.

95 def __call__(self, x):
96 """ Call function calls transform
97 :param x: Input data
98 :return: Transformed data
99 """
100 return self.transform(x)
101

◆ _fit()

_fit ( self,
x,
y = None )
protected
Fit function calculates the cumulative distribution with numpy percentile.

:param x:   Input distribution
:param y:   Will not be used in this transformation

Reimplemented from Transform.

Definition at line 202 of file transform.py.

202 def _fit(self, x, y=None):
203 """
204 Fit function calculates the cumulative distribution with numpy percentile.
205
206 :param x: Input distribution
207 :param y: Will not be used in this transformation
208 """
209 self.io.debug("Fitting CDF")
210 y_ = np.linspace(0, 100, 2 * self.n_bins)
211 x_ = pd.Series(np.percentile(x, list(y_)))
212
213 # Count same values
214 vc = x_.value_counts()
215 vc = vc.sort_index()
216
217 # replace same values
218 for i, xi in enumerate(vc):
219 if xi > 1:
220 try:
221 nex_val = vc.index[i + 1]
222 except IndexError:
223 nex_val = vc.index[i] + 0.01
224 fill = np.linspace(vc.index[i], nex_val, xi)
225 x_[x_ == vc.index[i]] = fill
226 self.spline = InterpolatedUnivariateSpline(x_, y_)
227

◆ _initialise()

_initialise ( self,
x )
protectedinherited
Sets limits for the data.
Not called by the user.

:param x: array type

Definition at line 71 of file transform.py.

71 def _initialise(self, x):
72 """
73 Sets limits for the data.
74 Not called by the user.
75
76 :param x: array type
77 """
78 self.io.debug("Initiating " + self.name)
79 if self.n_bins is None:
80 self.set_n_bins(len(x))
81 self.max = np.max(x)
82 self.min = np.min(x)
83

◆ _transform()

_transform ( self,
x )
protected
Transforms the input data according to the cdf.
:param x:   Input data
:return:    Transformed data

Reimplemented from Transform.

Definition at line 228 of file transform.py.

228 def _transform(self, x):
229 """
230 Transforms the input data according to the cdf.
231 :param x: Input data
232 :return: Transformed data
233 """
234 x = self.set_limits(x)
235 return self.spline(x)
236
237

◆ fit()

fit ( self,
x,
y = None )
inherited
The fit function is calls the individual _fit() functions.

:param x:   Distribution to fit, array type
:param y:   optional for some transformations, sets signal class

Definition at line 84 of file transform.py.

84 def fit(self, x, y=None):
85 """
86 The fit function is calls the individual _fit() functions.
87
88 :param x: Distribution to fit, array type
89 :param y: optional for some transformations, sets signal class
90 """
91 self._initialise(x)
92 self._fit(x, y)
93 self.is_processed = True
94

◆ io()

io ( self)
inherited
Logging function
:return: logger

Definition at line 49 of file settings.py.

49 def io(self):
50 """
51 Logging function
52 :return: logger
53 """
54 return logging.getLogger(self.name)
55
56

◆ set_limits()

set_limits ( self,
x )
inherited
Limits the data to the fitted range.
:param x:   Input data
:return:    Limited data

Definition at line 139 of file transform.py.

139 def set_limits(self, x):
140 """
141 Limits the data to the fitted range.
142 :param x: Input data
143 :return: Limited data
144 """
145 x_min = self.min
146 x_max = self.max
147
148 try:
149 _ = len(x) # to catch exception
150 x[x > x_max] = x_max
151 x[x < x_min] = x_min
152 except TypeError:
153 if x < x_min:
154 x = x_min
155 if x > x_max:
156 x = x_max
157 return x
158
159

◆ set_n_bins()

set_n_bins ( self,
n )
inherited
Calculates the optimal size for the binning.
:param n:   Length of the input data

Definition at line 131 of file transform.py.

131 def set_n_bins(self, n):
132 """
133 Calculates the optimal size for the binning.
134 :param n: Length of the input data
135 """
136 self.n_bins = get_optimal_bin_size(n)
137 self.io.debug("Bins are set to " + str(self.n_bins) + "\t " + str(n / float(self.n_bins)) + "per bin")
138

◆ transform()

transform ( self,
x,
set_limits = False )
inherited
This is defined in the children and overwritten.
:param x:           Distribution to transform, array type
:param set_limits:  Limits the range of the data to the fitted range
:return:            Transformed data

Definition at line 110 of file transform.py.

110 def transform(self, x, set_limits=False):
111 """
112 This is defined in the children and overwritten.
113 :param x: Distribution to transform, array type
114 :param set_limits: Limits the range of the data to the fitted range
115 :return: Transformed data
116 """
117 if set_limits:
118 self.set_limits(x)
119 return self._transform(x)
120

Member Data Documentation

◆ is_processed

bool is_processed = False
inherited

Status flag.

Definition at line 64 of file transform.py.

◆ max

int max = 0
inherited

Maximum of the fitted distribution.

Definition at line 58 of file transform.py.

◆ min

int min = 0
inherited

Minimum of the fitted distribution.

Definition at line 61 of file transform.py.

◆ n_bins

n_bins = n_bins
inherited

Binning in x, will be set automatically.

Definition at line 55 of file transform.py.

◆ name

name = name
inherited

Name of the class.

Definition at line 46 of file settings.py.

◆ spline

spline = None

Spline, fitting the CDF.

Definition at line 200 of file transform.py.


The documentation for this class was generated from the following file: