# Copyright (C) 2000-2020 Hiroshi Watabe watabe@cyric.tohoku.ac.jp
# Define PYBld Class python implemantation of BLD originally developed by Richard E Carson
# \$Id: __init__.py,v 4362b56d74f9 2020/01/13 02:04:21 watabe \$

Package Contents

 _bldanaimgc _pybldc bldanaimg bldanaimgc datafile grace_np numpyio pybldc qconv

Classes

builtins.object
PYBLD

 class PYBLD(builtins.object) BLD with Python Variables gp_cmd = 'matplot' or 'grace' or 'gnuplot' for plotting data view_cmd = 'matplot' or 'gpetview' to view data show = 1 if you want to see detail of fitting fit_z = results of fitting comment = comment for output function legend = list of legend for graph title = title of graph xlabel = label for X axis for graph ylabel = label for X axis for graph Methods defined here: __init__(self)Initialize self.  See help(type(self)) for accurate signature. checkarg(self, inp)#check whether array or not checkarray(self, inp)#check whether array combine(self, a, b)combine(a,b) combines two arrays into one array conv_exp(self, time, param, bld_tm, bld_cnt)conv_exp(x,p,a,b)  returns  the  convolution  of  the  piecewise linear  curve  described  by  the  variables  a  and  b with a sum of exponentials defined by the parameter list p, evaluated at  times  x. The  variable  'a' is the list of times of the sampled curve (assumed to be in ascending order) and 'b' contains the function value at  the times  in  'a'.   The  curve  being integrated is assumed to have the value 0 for a<=0 (so the result of INTEGRATE is 0 for x<=0).   For  x values  beyond  the  largest  value  of  a, the curve is extrapolated linearly based on the final two points.  The exponential function has; the following form depending on the number of values in p: 1 value    p(1) 2 values   p(1)exp(-p(2)x) 3 values   p(1)exp(-p(2)x)+p(3) 4 values   p(1)exp(-p(2)x)+p(3)exp(-p(4)x),    etc dimen(self, a)return dimension of array even(self, x)even(x) is the value x even (1=yes, 0=no) exit(self)#exit pybld expf(self, x, p)expf(x,p) - sum of exponentials  p*exp(p*x) + pexp(... expfit(self, x, obs, p, wt=array([0.]), fixm=array([0.]))Exponential Fitting. The exponential fit routine fits the X,Y data to the function: y(x) = p1  exp(p2  x) + p3 exp(p4 x) + ... First you  must specify the number of parameters, two for one exponential, three for one exponential plus a constant,four for two exponentials, etc. Then PyBLD requests initial estimates for the parameters. Note that for exponential decay, p2 and p4 ,etc. should be negative. The exponential function is non-linear in the parameters,  so the fitting procedure is an iterative one. This means that the program will find the best fitting parameters step by step,starting from the initial estimates that you supply. The closer these parameters are to the true values, the quicker the convergence. The algorithm is Marquardt_-Levenberg with step halving. expo(self, x, a, beta)#  EXPo(X;A;beta) - sum of exponentials A(1)*exp(beta(1)*x) + ... filter(self, x, f)#filtering fit(self, fitfunc, x, obs, p, wt=array([0.]), fixm=array([0.]))Fitting to user-given funciton. fit(func,x,obs,p) where 'func' is define function, 'x' is x-axis of function such as time, 'obs' is observed data, and 'p' is array of initial parameters to be fitted. you must define func as func(x,p) and return fitted values. Optionally you can give weight of data as variable 'wt'. Optionally you can fix certain parameters by variable 'fixm' fixm has format of array with elements of one or zero. If you want to fix second parameter in four parameters, you can give fixm = array([0,1,0,0]) this funciton returns estimated p values and their se. Also corrmat,fitresmat,fit_z contains results of fitting.   fitresmat:standard error of the estimate fitresmat:sum of squares fitresmat:degree of freedom1 fitresmat:degree of freedom2 fitresmat:F value fitresmat:R square fitresmat:Correlation coefficient fitd(self, fitfunc, x, obs, p, wt=array([0.]), fixm=array([0.]))Fitting to user-given funciton with derivatives. fitd(func,x,obs,p) where 'func' is define function, 'x' is x-axis of function such as time, 'obs' is observed data, and 'p' is array of initial parameters to be fitted. you must define func as func(x,p). This function returns fitted values and derivatives of each parameter. Optionally you can give weight of data as variable 'wt'. Optionally you can fix certain parameters by variable 'fixm' fixm has format of array with elements of one or zero. If you want to fix second parameter in four parameters, you can give fixm = array([0,1,0,0]) this funciton returns estimated p values and their se. Also corrmat,fitresmat,fit_z contains results of fitting. gaus(self, mean, sd)gaus(x,y) returns a list of gaussian random numbers with mean x and  standard deviation y.  One value is returned for each element in the list x.   To get 100 random  numbers  with  mean  0  and  standard deviation  1,  Use  gaus(zeros(100,'f'),1).  These numbers are pseudo random and are generated from a seed variable. gauss_filter1d(self, fwhm)define gaussian kernel with fwhm in pixels (keep until 1% of gaussian) gauss_filter2d(self, fwhm)define gaussian kernel with fwhm in pixels (keep until 1% of gaussian) gauss_smooth1d(self, x, fwhm)perform 1d gaussian smooth of line x with fwhm gauss_smooth2d(self, x, fwhm)perform 2d gaussian smooth of image x with fwhm gaussian_1d(self, x, f)#gaussian filter gaussian_2d(self, x, f)calculate value of 2d gaussian at distances x from the center with fwhm of f gnuplot(sel, tm, arg, ny)Plot x,y points using gnuplot graceplot(self, tm, arg, ny)Plot x,y points using Grace histogram(self, a, b0, bw, nbins)histogram(a,b0,bw,nbins) the histogram of the list a where the first bin starts at b0, the width of each bin is bw, and  there are a total of nbin bins. img(self, xdim=0, ydim=0, zdim=0, tdim=1, px=0.0, py=0.0, pz=0.0, type=2) input(self, *arg)Read data file if no argument are given, from standard input integrate(self, newtime, time, cnt)integrate(x,a,b) Integrates the piecewise linear curve described  by the  variables  a  and  b  from  0  to the list of times x.  This function assumes that the values in the variable a are  greater  than or equal to 0 and are in ascending order.  The curve being integrated is assumed to have the value 0 for a<=0 (so the result  of  INTEGRATE is  0  for  x<=0).   For  x values beyond the largest value of a, the curve is extrapolated linearly based on the  final  two  points.   To) evaluate the integral from x1 to x2, use integrate(x2,a,b) - integrate(x1,a,b) interpolate(self, newtime, time, cnt)interpolate(x,a,b) interpolates  the  piecewise  linear   curve described  by  a  and  b to the list of times x. This function assumes that the values in the variable a are greater than or equal to 0  and are  in  ascending order.  The curve being interpolated is assumed to have the value 0 for a<=0 (so the result of INTEGRATE is 0 for x<=0). For x values beyond the largest value of a, the curve is extrapolated( linearly based on the final two points. invmat(self, a)inverse matrix list2vec(self, x)#list to vector matplot(self, tm, arg, ny)Plot x,y points using matplot mean(self, a)return mean value of matrix mod(self, x, y)# modular arithmetic  (x mod y) - remainder from x divided by y mullin(self, dep_y, ind_x, wt=array([0.]), cst=0)mullin(dependent,independents,[wt],cst=0 or 1) perform linear regression of one dependent variable against any number    of independent variables.  To use this routine you must first select the    variables of interest.     The first variable must be the dependent one,followed by the independent     variables.  The order of the resulting parameters will correspond to the order     of selection of the independent variables.    The linear fitting routine will do a weighted regression when you create     a variable named 'wt' with the same length as the independent variable.     This variable will be used to weight the sum of squares computed by the     regression routine. You will be notified that a weighted regression is being done. If the user give cst=1, the routine includes constant.    This funciton returns estimated p values and their se. Also corrmat,fitresmat,fit_z contains results of fitting.      fitresmat:standard error of the estimate    fitresmat:sum of squares    fitresmat:degree of freedom1    fitresmat:degree of freedom2    fitresmat:F value    fitresmat:R square    fitresmat:Correlation coefficient mulmat(self, a, b)Multiply Matrix ncol(self, a) normalize(self, x)scale a vector/matrix so that its sum is 1 nrow(self, a)#get numbers of row odd(self, x)odd(x) is the value x odd (1=yes, 0=no) output(self, outfile, *arg)Output text file from data. If first argument is null, print out to standard output pconv_exp(self, time, param, bld_tm, bld_cnt)pconv_exp(x,p,a,b)  returns  the  product convolution  of  the  piecewise linear  curve  described  by  the  variables  a  and  b with a sum of exponentials defined by the parameter list p, evaluated at  times  x. The  variable  'a' is the list of times of the sampled curve (assumed to be in ascending order) and 'b' contains the function value at  the times  in  'a'.   The  curve  being integrated is assumed to have the value 0 for a<=0 (so the result of INTEGRATE is 0 for x<=0).   For  x values  beyond  the  largest  value  of  a, the curve is extrapolated linearly based on the final two points.  The exponential function has; the following form depending on the number of values in p: 1 value    p(1) 2 values   p(1)exp(-p(2)x) 3 values   p(1)exp(-p(2)x)+p(3) 4 values   p(1)exp(-p(2)x)+p(3)exp(-p(4)x),    etc plot(self, _tm, *_arg) polfit(self, deg_pol, x, y, wt=array([0.]))polfit(degree,x,y,[wt]) The polynomial fitting routine will perform a polynomial fit. A polynomial function is of the form ; y=a+bx+cx**2....... The simplest polynomial fit is a linear fit; y_=a_+bx     First you must specify the order of the polynomial to be used, i.e. one=linear, two=quadratic, three=cubic, etc. The routine will perform all fits starting with linear, quadratic, up to the requested order.  A statistical summary will be provided. The polynomial fitting routine will do a weighted regression when you create a variable named 'wt' with the same number of elements as the independent (x) variable.  This variable will be used to weight the sum of squares computed by the regression routine.  You will be notified that a weighted regression is being done.  This funciton returns estimated p values and their se. Also corrmat,fitresmat,fit_z contains results of fitting.   fitresmat:standard error of the estimate fitresmat:sum of squares fitresmat:degree of freedom1 fitresmat:degree of freedom2 fitresmat:F value fitresmat:R square fitresmat:Correlation coefficient ran(self, x, y)ran(x,y) returns a list of uniform random numbers between x and y (x and y must be same length). These numbers are pseudo_- random and are generated from  a seed variable. recall(self, file)#recall BLD object recall2(self, file) save(self, file)#save BLD object sd(self, x)return sd value of matrix spline(self, newtime, time, cnt)spline(X,R,S) The SPLine fit routine allows the  user  to  generate  a  smooth curve at many time points, simply by specifying the Y values at a few of these points.  First the user must specify the time points at which the curve should be computed (X),  and  the  original curve in  R and S. Typing SPL will cause the routine to compute the spline fit.  The spline fit routine places the spline in X, and  the final fitted values in Y.  The original data (R and S) and the spline curve (X and Y) are selected upon completion, ready for plotting. tran(self, a)Transpose of matrix var(self)#BLD var list variables variance(self, x)return variance value of matrix vec2mat(self, x)#vector to matrix vector(self, a, x)VECTOR(a;x) returns a list of length 'a' filled with values  for x.   If  there  are less then 'a' values, the value will be recycled,   for example;      x=1,2,3,4      vector(2;x) returns 1,2      vector(6;x) returns 1,2,3,4,1,2      VECTOR(a) returns a vector filled with zeroes. Data descriptors defined here: __dict__ dictionary for instance variables (if defined) __weakref__ list of weak references to the object (if defined)