Commit 54742f3e authored by Heller, William T.'s avatar Heller, William T.
Browse files

Merge branch 'scrub_code_for_min' into 'master'

Scrub code for min

See merge request !29
parents e3a167e5 c721d718
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ import math as m
import sas_temper.polydispersity as pd

class Param(object):
    def __init__(self, name, kind, min, max, coupled=None, polydispersity=None, pd_min=None, pd_max=None):
    def __init__(self, name, kind, minv, maxv, coupled=None, polydispersity=None, pd_min=None, pd_max=None):
        self.name = str(name)        # string:  the name of the parameter
        
        if kind in ["linear","log","integer","coupled","fixed"]:
@@ -36,13 +36,13 @@ class Param(object):
            raise Exception(err_message)
        
        if kind in ["integer"]:
            self.min = min
            self.max = max
            self.min = minv
            self.max = maxv
            self.val = int(0.5*self.min+self.max)
            self.unc = 0.0
        else:
            self.min = np.float64(min)            # the minimum value
            self.max = np.float64(max)            # the maximum value
            self.min = np.float64(minv)            # the minimum value
            self.max = np.float64(maxv)            # the maximum value
            self.val = 0.5*(self.min + self.max)
            self.unc = 0.0
            
@@ -52,7 +52,7 @@ class Param(object):
            self.coupled = None
    
        if polydispersity is not None:
            self.polydispersity = pd.Polydispersity(name=self.name,kind=polydispersity,min=pd_min,max=pd_max)
            self.polydispersity = pd.Polydispersity(name=self.name,kind=polydispersity,minv=pd_min,maxv=pd_max)
        else:
            self.polydispersity = None
            
+8 −8
Original line number Diff line number Diff line
@@ -78,14 +78,14 @@ def parse_config(name):
            #now, we create a parameter
            if coupled_name is None:
                if pd_name is None:
                    cur_param = param.Param(name=txt1, kind=var_kind, min=min_val, max=max_val, coupled=None, polydispersity=None, pd_min=0.0, pd_max=0.0)
                    cur_param = param.Param(name=txt1, kind=var_kind, minv=min_val, maxv=max_val, coupled=None, polydispersity=None, pd_min=0.0, pd_max=0.0)
                else:
                    cur_param = param.Param(name=txt1, kind=var_kind, min=min_val, max=max_val, coupled=None, polydispersity=txt3, pd_min=pd_minval, pd_max=pd_maxval)
                    cur_param = param.Param(name=txt1, kind=var_kind, minv=min_val, maxv=max_val, coupled=None, polydispersity=txt3, pd_min=pd_minval, pd_max=pd_maxval)
            else:
                if pd_name is None:
                    cur_param = param.Param(name=txt1, kind=var_kind, min=min_val, max=max_val, coupled=coupled_name, polydispersity=None, pd_min=0.0, pd_max=0.0)
                    cur_param = param.Param(name=txt1, kind=var_kind, minv=min_val, maxv=max_val, coupled=coupled_name, polydispersity=None, pd_min=0.0, pd_max=0.0)
                else:
                    cur_param = param.Param(name=txt1, kind=var_kind, min=min_val, max=max_val, coupled=coupled_name, polydispersity=txt3, pd_min=pd_minval, pd_max=pd_maxval)
                    cur_param = param.Param(name=txt1, kind=var_kind, minv=min_val, maxv=max_val, coupled=coupled_name, polydispersity=txt3, pd_min=pd_minval, pd_max=pd_maxval)
            
            #and add it to the array of parameters
            model_params.append(cur_param)
@@ -129,14 +129,14 @@ def parse_config(name):
                    #now, we create a parameter
                    if sq_coupled_name is None:
                        if sq_pd_name is None:
                            sq_cur_param = param.Param(name=txt2, kind=sq_var_kind, min=sq_min_val, max=sq_max_val, coupled=None, polydispersity=None, pd_min=0.0, pd_max=0.0)
                            sq_cur_param = param.Param(name=txt2, kind=sq_var_kind, minv=sq_min_val, maxv=sq_max_val, coupled=None, polydispersity=None, pd_min=0.0, pd_max=0.0)
                        else:
                            sq_cur_param = param.Param(name=txt2, kind=sq_var_kind, min=sq_min_val, max=sq_max_val, coupled=None, polydispersity=txt3, pd_min=pd_minval, pd_max=pd_maxval)
                            sq_cur_param = param.Param(name=txt2, kind=sq_var_kind, minv=sq_min_val, maxv=sq_max_val, coupled=None, polydispersity=txt3, pd_min=pd_minval, pd_max=pd_maxval)
                    else:
                        if sq_pd_name is None:
                            sq_cur_param = param.Param(name=txt2, kind=sq_var_kind, min=sq_min_val, max=sq_max_val, coupled=sq_coupled_name, polydispersity=None, pd_min=0.0, pd_max=0.0)
                            sq_cur_param = param.Param(name=txt2, kind=sq_var_kind, minv=sq_min_val, maxv=sq_max_val, coupled=sq_coupled_name, polydispersity=None, pd_min=0.0, pd_max=0.0)
                        else:
                            sq_cur_param = param.Param(name=txt2, kind=sq_var_kind, min=sq_min_val, max=sq_max_val, coupled=sq_coupled_name, polydispersity=txt4, pd_min=sq_pd_minval, pd_max=sq_pd_maxval)
                            sq_cur_param = param.Param(name=txt2, kind=sq_var_kind, minv=sq_min_val, maxv=sq_max_val, coupled=sq_coupled_name, polydispersity=txt4, pd_min=sq_pd_minval, pd_max=sq_pd_maxval)
    
                    #and add it to the array of structure factor parameters
                    s_of_q_params.append(sq_cur_param)
+3 −3
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@ import numpy as np
import math as m

class Polydispersity(object):
    def __init__(self, name, kind, min, max):
    def __init__(self, name, kind, minv, maxv):
        self.name = str(name)        # string:  the name of the parameter
        
        if kind in ["SchulzDispersion","GaussianDispersion","LogNormalDispersion","RectangleDispersion"]:
@@ -34,8 +34,8 @@ class Polydispersity(object):
            err_message = "The polydispersity distribution type " + str(kind) + " is not valid"
            raise Exception(err_message)
        
        self.min = np.float64(min)            # the minimum value
        self.max = np.float64(max)            # the maximum value
        self.min = np.float64(minv)            # the minimum value
        self.max = np.float64(maxv)            # the maximum value
        self.val = 0.5*(self.min + self.max)
        self.unc = 0.0
        
+6 −6
Original line number Diff line number Diff line
@@ -28,10 +28,10 @@ def calc_profile(d, mc, usm):
    
    for i in range(0,len(d.x)):
        tot = 0.0
        min = d.x[i] - 4.5*d.dx[i]
        minq = d.x[i] - 4.5*d.dx[i]
        qstep = 4.5*d.dx[i]/30.0
        for j in range(0,61):
            qv = m.fabs(min + j*qstep)
            qv = m.fabs(minq + j*qstep)
            tmp = np.interp(qv,usm.x,usm.y)
            # the number on the next line is ~sqrt(2*Pi)
            tot += tmp*qstep*m.exp(-(qv-d.x[i])*(qv-d.x[i])/(2.0*d.dx[i]*d.dx[i]))/(2.506628273*d.dx[i])
@@ -105,12 +105,12 @@ def calc_profile_usm(d, mc):
# mc is the model configuration, d is the input data, mi is the calculated model profile
def chisq(mc, d, mi):
    # this is quite straightforward
    sum = 0
    sumv = 0
    for i in range(0,len(d.x)):
        sum += (d.y[i]-mi.y[i])*(d.y[i]-mi.y[i])/(d.dy[i]*d.dy[i])
        sumv += (d.y[i]-mi.y[i])*(d.y[i]-mi.y[i])/(d.dy[i]*d.dy[i])
        
    sum = m.sqrt(sum/(mc.free_params-1))
    sumv = m.sqrt(sumv/(mc.free_params-1))
    
    return sum
    return sumv