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 176 of file transform.py.

Constructor & Destructor Documentation

◆ __init__()

__init__ ( self,
* args )
Init function :param args: None

Definition at line 189 of file transform.py.

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

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 199 of file transform.py.

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

◆ _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 225 of file transform.py.

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

◆ 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 try:
146 _ = len(x) # to catch exception
147 x[x > self.max] = self.max
148 x[x < self.min] = self.min
149 except TypeError:
150 if x < self.min:
151 x = self.min
152 if x > self.max:
153 x = self.max
154 return x
155
156

◆ 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 197 of file transform.py.


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