Changeset 1741 in bayesapp


Ignore:
Timestamp:
Jun 10, 2021, 7:40:58 AM (8 months ago)
Author:
ehb
Message:

Andreas Larsen BayesApp? updates

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • bin/bayesapp.py

    r1735 r1741  
    5151        dummy = json_variables['nondilute'] # non-dilute sample
    5252        eta = json_variables['eta'] # eta
    53         fitratio = json_variables['fitratio'] # fitratio
    54         estimateratio = json_variables['estimateratio']
     53        method = json_variables['method']
     54        ratio = json_variables['ratio']
    5555        try:
    56             dummy = json_variables['estimateratiofixed']
    57             estimateratio = 'f%s' % estimateratio
     56            dummy = json_variables['ratiofixed']
     57            ratio = 'f%s' % ratio
    5858        except:
    5959            pass
    6060    except:
    61         pass
     61        eta = 'default'
     62        method = 'default'
     63        ratio = 'default'
     64    try:
     65        dummy = json_variables['nonconstantrescale']
     66        rescale = 'N'
     67        nbin = json_variables['binsize']
     68    except:
     69        rescale = 'C'
     70        nbin = '10'
    6271
    6372    ## make input file with Json input for running iftci
     
    6776    f.write('%s\n' % q_max)
    6877    f.write('%s\n' % dmax)
    69     f.write('\n')
     78    if eta != 'default':
     79        f.write('%s\n' % eta)
     80    else:
     81        f.write('\n')
    7082    f.write('%s\n' % alpha)
    7183    f.write('%s\n' % smear)
    72     f.write('\n' ) # ratio
    73     f.write('\n' ) #method
     84    if ratio != 'default':
     85        f.write('%s\n' % ratio)
     86    else:
     87        f.write('\n')
     88    if method != 'default':
     89        f.write('%s\n' % method )
     90    else:
     91        f.write('\n')
    7492    f.write('%s\n' % prpoints)
    7593    f.write('%s\n' % noextracalc)
    7694    f.write('%s\n' % transformation)
    7795    f.write('%s\n' % fitbackground)
    78     f.write('\n') # screensize
     96    f.write('%s\n' % rescale) # rescale method. N: non-constant, C: constant
     97    if rescale == 'N':
     98        f.write('%s\n' % nbin)
     99    else:
     100        f.write('\n')
     101
    79102    f.write('\n')
    80103    f.close()
     
    98121   
    99122    f = open('stdout.d','w')
    100     execute([os.path.dirname(os.path.realpath(__file__)) + '/source/iftci','<','inputfile.d'],f)
     123    execute(['/opt/genapp/bayesapp/bin/source/iftci','<','inputfile.d'],f)
    101124    f.close()
    102125
     
    159182    f.close()
    160183
    161     ## import and plot data and fit
    162     qdat,Idat,sigma = np.genfromtxt('data.d',skip_header=0,usecols=[0,1,2],unpack=True)
    163     qfit,Ifit = np.genfromtxt('fit.d',skip_header=1,usecols=[0,1],unpack=True)
    164    
     184    ## general plotting settings
    165185    markersize=4
    166186    linewidth=1
    167     plt.errorbar(qdat,Idat,yerr=sigma,linestyle='none',marker='.',markersize=markersize,color='red',label='data',zorder=0)
    168     plt.plot(qfit,Ifit,color='black',linewidth=linewidth,label='fit')
    169     plt.ylabel(r'$I(q)$')
    170     plt.yscale('log')
    171     plt.xlabel(r'$q$')
    172     plt.title('fit to data')
    173     plt.legend()
    174     plt.savefig('Iq.png',dpi=200)
    175     plt.close()
    176 
     187   
    177188    ## import and plot p(r)
    178189    r,pr,d_pr = np.genfromtxt('pr.d',skip_header=0,usecols=[0,1,2],unpack=True)
     
    185196    plt.close()
    186197
     198    ## import data and fit
     199    qdat,Idat,sigma = np.genfromtxt('data.d',skip_header=0,usecols=[0,1,2],unpack=True)
     200    sigma_rs = np.genfromtxt('rescale.d',skip_header=3,usecols=[2],unpack=True)
     201    qfit,Ifit = np.genfromtxt('fit.d',skip_header=1,usecols=[0,1],unpack=True)
     202   
     203    ## calculate residuals
     204    Ifit_interp = np.interp(qdat,qfit,Ifit)
     205    R = (Idat-Ifit_interp)/sigma
     206    maxR = np.ceil(np.amax(abs(R)))
     207    R_rs = (Idat-Ifit_interp)/sigma_rs
     208    maxR_rs = np.ceil(np.amax(abs(R_rs)))
     209
     210    ## plot data, fit and residuals, not rescaled
     211    f,(p0,p1) = plt.subplots(2,1,gridspec_kw={'height_ratios': [4,1]})
     212    p0.errorbar(qdat,Idat,yerr=sigma,linestyle='none',marker='.',markersize=markersize,color='red',zorder=0,label='data')
     213    p0.plot(qfit,Ifit,color='black',linewidth=linewidth,zorder=1,label='fit')
     214    #p0.plot(qdat,Ifit_interp,color='green',linewidth=linewidth,label='fit_interp')
     215    p0.set_ylabel(r'$I(q)$')
     216    p0.set_yscale('log')
     217    p0.set_title('fit to data')
     218    p0.legend(frameon=False)
     219   
     220    p1.plot(qdat,R,linestyle='none',marker='.',markersize=markersize,color='red',zorder=0)
     221    p1.plot(qdat,qdat*0,color='black',zorder=1)
     222    p1.set_xlabel(r'$q$')
     223    p1.set_ylabel(r'$I(q)/\sigma$')
     224    p1.set_ylim(-maxR,maxR)
     225    p1.set_yticks([-maxR,0,maxR])
     226
     227    plt.savefig('Iq.png',dpi=200)
     228    plt.tight_layout()
     229    plt.close()
     230
    187231    ## import and plot data with rescaled errors
    188232    qresc,Iresc,sigmaresc = np.genfromtxt('rescale.d',skip_header=2,usecols=[0,1,2],unpack=True)
     
    194238    plt.yscale('log')
    195239    plt.xlabel(r'$q$')
    196     plt.title('input data and data with errors rescaled by a factor %1.2f' % beta)
    197     plt.legend()
     240    if rescale == 'N':
     241        plt.title('input data and data with q-dependent rescaling of errors')
     242    else:
     243        plt.title('input data and data with errors rescaled by a factor %1.2f' % beta)
     244    plt.legend(frameon=False)
    198245    plt.savefig('rescale.png',dpi=200)
    199246    plt.close()
    200247
    201     ## compress files to zip file
    202     os.system('zip results.zip pr.d data.d fit.d parameters.d rescale.d stdout.d *.png')
    203    
     248    ## plot data, fit and residuals, rescaled
     249    f,(p0,p1) = plt.subplots(2,1,gridspec_kw={'height_ratios': [4,1]})
     250    p0.errorbar(qdat,Idat,yerr=sigma_rs,linestyle='none',marker='.',markersize=markersize,color='blue',zorder=0,label='data with rescaled errors')
     251    p0.plot(qfit,Ifit,color='black',linewidth=linewidth,zorder=1,label='fit')
     252    p0.set_ylabel(r'$I(q)$')
     253    p0.set_yscale('log')
     254    p0.set_title('fit to data with rescaled errors')
     255    p0.legend(frameon=False)
     256
     257    p1.plot(qdat,R_rs,linestyle='none',marker='.',markersize=markersize,color='blue',zorder=0)
     258    p1.plot(qdat,qdat*0,color='black',zorder=1)
     259    p1.set_xlabel(r'$q$')
     260    p1.set_ylabel(r'$I(q)/\sigma_\mathrm{rescale}$')
     261    p1.set_ylim(-maxR_rs,maxR_rs)
     262    p1.set_yticks([-maxR_rs,0,maxR_rs])
     263   
     264    plt.savefig('Iq_rs.png',dpi=200)
     265    plt.tight_layout()
     266    plt.close()
     267
     268    ## copy source code to output folder (and rename)
     269    os.system('cp /opt/genapp/bayesapp/bin/source/iftci_v10.f %s/bift.f' % folder)   
     270
     271    ## compress output files to zip file
     272    os.system('zip results.zip pr.d data.d fit.d parameters.d rescale.d scale_factor.d stdout.d bift.f inputfile.d *.png')
     273
    204274    ## generate output
    205275    output = {} # create an empty python dictionary
     276   
     277    # files
    206278    output["pr"] = "%s/pr.d" % folder
    207279    output["dataused"] = "%s/data.d" % folder
    208280    output["rescaled"] = "%s/rescale.d" % folder
     281    output["scale_factor"] = "%s/scale_factor.d" % folder
    209282    output["fitofdata"] = "%s/fit.d" % folder
    210283    output["parameters"] = "%s/parameters.d" % folder
    211284    output["file_stdout"] = "%s/stdout.d" % folder
     285    output["sourcecode"] = "%s/bift.f" % folder
     286    output["inputfile"] = "%s/inputfile.d" % folder
    212287    output["prfig"] = "%s/pr.png" % folder
    213288    output["iqfig"] = "%s/Iq.png" % folder
    214289    output["rescalefig"] = "%s/rescale.png" % folder
     290    output["iqrsfig"] = "%s/Iq_rs.png" % folder
    215291    output["zip"] = "%s/results.zip" % folder
    216     output["chi2"] = "%1.2f" % chi2r
    217     output["logalpha"] = "%1.2f" % alpha
     292
     293    # values
    218294    output["dmaxout"] = "%1.2f" % dmax
    219295    output["Rg"] = "%1.2f" % Rg
     296   
    220297    output["I0"] = "%1.2e" % I0
     298    output["background"] = "%2.5f" % background
     299   
     300    output["chi2"] = "%1.2f" % chi2r
     301    output["prob"] = "%s" % Prob_str
     302    output["assess"] = "%s" % assessment
     303    if rescale == 'N':
     304        output["beta"] = "see scale_factor.d"
     305    elif rescale == 'C':
     306        output["beta"] = "%1.2f" % beta
     307   
    221308    output["Ng"] = "%1.2f" % Ng
    222309    output["shannon"] = "%1.2f" % Ns
     310   
     311    output["logalpha"] = "%1.2f" % alpha
    223312    output["evidence"] = "%1.2f" % evidence
    224313    output["axratio_pro"] = "%1.2f" % ax_pro
    225314    output["axratio_obl"] = "%1.2f" % ax_obl
    226     output["background"] = "%2.5f" % background
    227     output["assess"] = "%s" % assessment
    228     output["prob"] = "%s" % Prob_str
    229     output["beta"] = "%1.2f" % beta
     315   
    230316    #output['_textarea'] = "JSON output from executable:\n" + json.dumps( output, indent=4 ) + "\n\n";
    231317    #output['_textarea'] += "JSON input to executable:\n" + json.dumps( json_variables, indent=4 ) + "\n";
  • bin/source/iftci.f

    r1733 r1741  
    7676      parameter (ndim=4)
    7777
     78
     79      PARAMETER (ngmax=100)
     80      REAL sumsquare(ngmax),countn(ngmax),betan(ngmax)
     81     
    7882      external func
    7983      REAL A(NMAX,0:NMAX),B(0:NMAX,0:NMAX),Adec(NMAX,0:NMAX)
     
    12441248
    12451249c        WRITE(11,*)X(I),fmdec(i),fm(i),fmi
    1246         WRITE(11,*)X(I),fmdec(i),fm(i)
     1250c        WRITE(11,*)X(I),fmdec(i),fm(i)
     1251        WRITE(11,*)X(I),fm(i)
    12471252        write(213,*)x(i),fm(i)/fmi,0
    12481253 8141   CONTINUE
     
    14561461      beta=sqrt(chi2r)
    14571462      OPEN(21,FILE='rescale.d',STATUS='UNKNOWN')
    1458       write(21,*)'# q,I,sigma'
    1459       write(21,*)'# errors rescaled with factor: ', beta
     1463      write(21,*)'# q,I,sigma,scaling factor'
     1464c      write(21,*)'# errors rescaled with factor: ', beta
     1465      write(21,*)'# errors rescaled with factor'
     1466      n=1
     1467      ns=1
     1468      sumsquare=0.0
     1469      countn=1.0
    14601470      do 111,i=1,mtotxx
    1461         write(21,*)xori(i),y(i),sdori(i)*beta
     1471c       qmax for ns'th shannon channel
     1472        qn=ns*pi/Dmax
     1473        res=(fm(20+i)-y(i))/sdori(i)
     1474c        write(21,*)n,sumsquare(n),res*res
     1475c        if(xori(i).gt.qn.and.countn(n).gt.9) then
     1476        if(xori(i).gt.qn) then
     1477          ns=ns+1
     1478          rest=mtotxx-i
     1479          if(countn(n).gt.10.and.rest.gt.10) then
     1480            n=n+1
     1481          endif
     1482        endif
     1483        sumsquare(n)=sumsquare(n)+res*res
     1484        countn(n)=countn(n)+1.0
     1485c        write(21,*)xori(i),y(i),fm(20+i),res,sdori(i),sdori(i)*beta
    14621486111   continue
     1487      do 112,i=1,n
     1488        ngpartial=sumng/(1.0*mtotxx)*countn(i)
     1489        chi2rn=sumsquare(i)/(countn(i)-ngpartial)
     1490        betan(i)=sqrt(chi2rn)
     1491112   continue
     1492      n=1
     1493      ns=1
     1494      countn=1.0
     1495      do 113, i=1,mtotxx
     1496        qn=ns*pi/Dmax
     1497        if(xori(i).gt.qn) then
     1498           ns=ns+1
     1499           rest=mtotxx-i
     1500           if(countn(n).gt.10.and.rest.gt.10) then
     1501             n=n+1
     1502           endif
     1503        endif
     1504        countn(n)=countn(n)+1.0
     1505        sd0=sdori(i)
     1506        sd1=sdori(i)*beta
     1507        sd2=sdori(i)*betan(n)
     1508        chi=betan(n)*betan(n)
     1509c        write(21,*)xori(i),y(i),sd0,sd1,sd2,betan(n),chi,n
     1510c        write(21,*)xori(i),y(i),sd1
     1511        if(answer8.eq.'S') then
     1512            write(21,*)xori(i),y(i),sd2,betan(n)
     1513        else
     1514            write(21,*)xori(i),y(i),sd1,beta
     1515        endif       
     1516113   continue
    14631517c*********************************************
    14641518c     Start OUTPUT for download for p(r) only
  • modules/bayesapp.json

    r1733 r1741  
    1919            ,"colspan"   : 3
    2020            ,"default"   : "header3"
    21             ,"label"     : "BayesApp [<a target=_blank href=https://scripts.iucr.org/cgi-bin/paper?pe0063>1,</a><a target=_blank href=https://onlinelibrary.wiley.com/iucr/doi/10.1107/S0021889812014318>2,</a><a target=_blank href=http://journals.iucr.org/j/issues/2014/04/00/he5656>3,</a><a target=_blank href=https://scripts.iucr.org/cgi-bin/paper?gk0508>4,</a><a target=_blank href=https://scripts.iucr.org/cgi-bin/paper?wf5022>5,</a><a target=_blank href=https://github.com/Niels-Bohr-Institute-XNS-StructBiophys/BayesApp>Source code</a>]"
    22 # old refs?
    23 #            ,"label"     : "BayesApp [<a href=http://igm.fys.ku.dk/&#126;steen/jac45_566.pdf>1,</a><a href=http://bayesapp.org/&#126;bayes/upload/ift/ift1.pdf>2,</a><a href=http://bayesapp.org/&#126;bayes/upload/ift/ift2.pdf>3,</a><a href=http://igm.fys.ku.dk/&#126;steen/jac_47_1469.pdf>4</a>]"
     21            ,"label"     : "BayesApp [<a target=_blank href=https://scripts.iucr.org/cgi-bin/paper?pe0063>1,</a><a target=_blank href=https://onlinelibrary.wiley.com/iucr/doi/10.1107/S0021889812014318>2,</a><a target=_blank href=http://journals.iucr.org/j/issues/2014/04/00/he5656>3,</a><a target=_blank href=https://scripts.iucr.org/cgi-bin/paper?gk0508>4,</a><a target=_blank href=https://scripts.iucr.org/cgi-bin/paper?wf5022>5,</a><a target=_blank href=https://arxiv.org/abs/2012.04247>6,</a><a target=_blank href=https://github.com/Niels-Bohr-Institute-XNS-StructBiophys/BayesApp>Source code</a>]"
    2422            ,"prehline"  : "true"
    2523            ,"posthline" : "true"
     
    3836            "role"       : "input"
    3937            ,"id"         : "qmin"
    40             ,"label"      : "Qmin [Angstrom^-1]"
    41             ,"type"       : "float"
    42             ,"step"       : 0.001
    43             ,"help"       : "Optionally enter q min in inverse Angstroms."
     38            ,"label"      : "qmin"
     39            ,"type"       : "float"
     40            ,"step"       : 0.001
     41            ,"help"       : "Optionally enter q min - same units as the input data: 1/A or 1/nm."
    4442        }
    4543        ,{
    4644            "role"       : "input"
    4745            ,"id"         : "qmax"
    48             ,"label"      : "Qmax [Angstrom^-1]"
    49             ,"type"       : "float"
    50             ,"step"       : 0.001
    51             ,"help"       : "Qptionally Enter q max in inverse Angstroms."
     46            ,"label"      : "qmax"
     47            ,"type"       : "float"
     48            ,"step"       : 0.001
     49            ,"help"       : "Optionally Enter q max - same units the input as data: 1/A or 1/nm."
    5250        }
    5351        ,{
     
    6260            "role"       : "input"
    6361            ,"id"         : "dmax"
    64             ,"label"      : "Maximum diameter [Angstrom]"
     62            ,"label"      : "Maximum distance"
    6563            ,"type"       : "float"
    6664            ,"step"       : 0.001
    6765            ,"min"        : 0
    68             ,"help"       : "<p>Optionally enter starting value for the maximum diameter of the scatterer, in Angstroms.</p><p> A decent guess makes the transformation more reliable and faster</p>"
     66            ,"help"       : "<p>Optionally enter starting value for the maximum distance in the scatterer - same units as the input data: A or nm.</p><p> A decent guess makes the transformation more reliable and faster</p>"
    6967            ,"norow"      : "true"
    7068        }
     
    7472            ,"label"      : "Fix"
    7573            ,"type"       : "checkbox"
    76             ,"help"       : "Fix the defined maximum diameter"
     74            ,"help"       : "Fix the value for dmax"
    7775        }
    7876        ,{
    7977            "role"       : "input"
    8078            ,"id"         : "alpha"
    81             ,"label"      : "Starting value for the Lagrange multiplier (Alpha)"
    82             ,"type"       : "float"
    83             ,"step"       : 0.001
    84             ,"help"       : "<p>Optionally enter the starting value for the logarithm of the Lagrange multiplier (usually between -10 and 20).</p><p>Larger values will give smoother distributions or - for the MaxEnt constraint:</p><p>an estimate which is closer to the prior ellipsoid of revolution.</p>"
     79            ,"label"      : "Starting value for the Lagrange multiplier, alpha"
     80            ,"type"       : "float"
     81            ,"step"       : 0.001
     82            ,"help"       : "<p>Optionally enter the starting value for the logarithm of the Lagrange multiplier, alpha (usually between -10 and 20).</p><p>Larger values will give smoother distributions or - for the MaxEnt constraint:</p><p>an estimate which is closer to the prior ellipsoid of revolution.</p>"
    8583            ,"norow"      : "true"
    8684        }
     
    9088            ,"label"      : "Fix"
    9189            ,"type"       : "checkbox"
    92             ,"help"       : "Fix the Lagrange multiplier"
    93         }
    94         ,{
    95             "role"       : "input"
    96             ,"id"         : "smearing"
    97             ,"label"      : "Desmearing constant"
    98             ,"type"       : "float"
    99             ,"step"       : 0.001
    100             ,"help"       : "<p>Optionally enter a correction for slit smearing. Default is no smearing.</p><p>Enter value for constant c as given by the expression</p><p>I_smear(q) = integrate P(t)*I(sqrt(q**2 + t**2)) dt with the</p><p>primary beam length profile: P(t) = c/sqrt(pi) * exp(-c**2*t**2).</p><p>The fit and the deconvolution are both given in the ouput file fit.d</p>"
     90            ,"help"       : "Fix the value for alpha"
    10191        }
    10292        ,{
     
    112102        ,{
    113103            "role"       : "input"
    114             ,"id"         : "smallplot"
    115             ,"label"      : "Small plot"
    116             ,"type"       : "checkbox"
    117             ,"help"       : "Check to produce small versions of the plots"
     104            ,"id"         : "transform"
     105            ,"label"      : "Transformation/Regularization"
     106            ,"type"       : "listbox"
     107            ,"values"     : "Debye (default -> returning p(r) with positivity constraint)~D~Negative (Debye transformation -> returning p(r) without positivity constraint)~N~MaxEnt using an ellipsoid of revolution as prior ( -> p(r) -positivity constraint)~M~Bessel (for cylindrical scatterers -> cross section distribution)~B~Cosine (lamellae -> thickness distribution)~C~Size (using spheres only -> size distribution)~S"
     108            ,"help"       : "<p>As a rule of thumb, use Negative if:</p><p> (1) there is a structure factor (e.g. electrostatic repulsion), or</p><p> (2) the particle has both positive and negative contrast (e.g. micelles or nanodiscs)</p><p> else, use Debye</p><p>All options:</p><p>[D]ebye (default -> returning p(r) with positivity constraint), sin(q*r)/(q*r) * dr</p><p>[N]egative (Debye transformation -> returning p(r) without positivity constraint), sin(q*r)/(q*r) * dr</p><p>[M]axEnt using an ellipsoid of revolution as prior ( -> p(r) -positivity constraint), sin(q*r)/(q*r) * dr</p><p> The axial ratio for the ellipsoid is optimized using the posterior probability.</p><p> The axial ratio may be initialized or fixed using the box <i>Estimate axial ratio</i></p><p>     (leave the box <i>Fit axial ratio</i> empty).</p><p>[B]essel (for cylindrical scatterers -> cross section distribution), J_0(q*r)/q * dr</p><p>[C]osine (lamellae -> thickness distribution), cos(q*r)/q**2 * dr</p><p>[S]ize (using spheres only -> size distribution), (3*sin(q*r)-q*r*cos(q*r))/(q*r)**3)**2 * dr </p>"
     109        }
     110        ,{ 
     111            "role"       : "input"
     112            ,"id"         : "label_advanced_options"
     113            ,"label"      : "<hr> Advanced options <hr>"
     114            ,"type"       : "label"
     115            ,"colspan"    : 2
     116        }
     117        ,{
     118            "role"       : "input"
     119            ,"id"         : "smearing"
     120            ,"label"      : "Desmearing constant"
     121            ,"type"       : "float"
     122            ,"step"       : 0.001
     123            ,"help"       : "<p>Optionally enter a correction for slit smearing. Default is no smearing.</p><p>Enter value for constant c as given by the expression</p><p>I_smear(q) = integrate P(t)*I(sqrt(q**2 + t**2)) dt with the</p><p>primary beam length profile: P(t) = c/sqrt(pi) * exp(-c**2*t**2).</p><p>The fit and the deconvolution are both given in the ouput file fit.d</p>"
    118124        }
    119125        ,{
     
    128134        ,{
    129135            "role"       : "input"
    130             ,"id"         : "transform"
    131             ,"label"      : "Transformation/Regularization"
    132             ,"type"       : "listbox"
    133             ,"values"     : "Debye (default -> returning p(r) with positivity constraint)~D~Negative (Debye transformation -> returning p(r) without positivity constraint)~N~MaxEnt using an ellipsoid of revolution as prior ( -> p(r) -positivity constraint)~M~Bessel (for cylindrical scatterers -> cross section distribution)~B~Cosine (lamellae -> thickness distribution)~C~Size (using spheres only -> size distribution)~S"
    134             ,"help"       : "<p>[D]ebye (default -> returning p(r) with positivity constraint)                                        sin(q*r)/(q*r) * dr</p><p>[N]egative (Debye transformation -> returning p(r) without positivity constraint)       sin(q*r)/(q*r) * dr</p><p>[M]axEnt using an ellipsoid of revolution as prior ( -> p(r) -positivity constraint)       sin(q*r)/(q*r) * dr</p><p>     The axial ratio for the ellipsoid is optimized using the posterior probability.</p><p>     The axial ratio may be initialized or fixed using the box <i>Estimate axial ratio</i></p><p>     (leave the box <i>Fit axial ratio</i> empty).</p><p>[B]essel (for cylindrical scatterers -> cross section distribution)        J_0(q*r)/q * dr</p><p>[C]osine (lamellae -> thickness distribution)                                    cos(q*r)/q**2 * dr</p><p>[S]ize (using spheres only -> size distribution)        (3*sin(q*r)-q*r*cos(q*r))/(q*r)**3)**2 * dr </p>"
    135         }
    136         ,{
    137             "role"       : "input"
    138136            ,"id"         : "nondilute"
    139137            ,"label"      : "Non-dilute solution"
     
    145143            "role"       : "input"
    146144            ,"id"         : "eta"
    147             ,"label"      : "Estimate value for volume fraction"
     145            ,"label"      : "Volume fraction, eta"
    148146            ,"type"       : "float"
    149147            ,"step"       : 0.001
     
    154152        ,{
    155153            "role"       : "input"
    156             ,"id"         : "fitratio"
    157             ,"label"      : "Fit axial ratio method"
     154            ,"id"         : "method"
     155            ,"label"      : "Fit method"
    158156            ,"type"       : "listbox"
    159157            ,"repeat"     : "nondilute"
    160             ,"values"     : "No concentration effects~noconceffects~Moment~moment~No~no~Evidence~evidence"
    161             ,"help"       : "Optionally enter the method"
    162         }
    163         ,{
    164             "role"       : "input"
    165             ,"id"         : "estimateratio"
    166             ,"label"      : "Estimate the axial ratio"
     158            ,"values"     : "No concentration effects~N~Moment~M~Evidence~E"
     159            ,"help"       : "<p>Optionally enter the method.</p><p>No conc effect (default): fit alpha and dmax.</p><p>Moment: fit alpha, dmax and eta.</p><p>Evidence: fit alpha, dmax, eta and ratio.</p>"
     160        }
     161        ,{
     162            "role"       : "input"
     163            ,"id"         : "ratio"
     164            ,"label"      : "Axial ratio"
    167165            ,"type"       : "float"
    168166            ,"step"       : 0.001
     
    173171        ,{
    174172            "role"       : "input"
    175             ,"id"         : "estimateratiofixed"
     173            ,"id"         : "ratiofixed"
    176174            ,"label"      : "Fix"
    177175            ,"type"       : "checkbox"
     
    180178        }
    181179        ,{
     180            "role"       : "input"
     181            ,"id"         : "nonconstantrescale"
     182            ,"label"      : "Non-constant rescaling of errors"
     183            ,"type"       : "checkbox"
     184            ,"repeater"   : "true"
     185            ,"help"       : "Give an estimate of the correction of over/underestimated errors, that vary along q. This estimate can vary for each Shannon channel (minimum 10 points rescaled together per default)."
     186        }
     187        ,{
     188            "role"       : "input"
     189            ,"id"         : "binsize"
     190            ,"label"      : "Minimum bin size of one Shannon bin (default: 10, min: 8, max: 300)"
     191            ,"type"       : "integer"
     192            ,"step"       : 1
     193            ,"default"    : 10
     194            ,"min"        : 8
     195            ,"max"        : 300
     196            ,"repeat"     : "nonconstantrescale"
     197            ,"help"       : "<p>Minimum bin size of one Shannon bin.</p><p>See Larsen and Pedersen 2021 [6]</p>"
     198        }
     199        ,{
    182200            "role"       : "output"
    183201            ,"id"         : "hroutput"
     
    212230            ,"label"      : "Data with errors rescaled"
    213231            ,"type"       : "file"
    214             ,"help"       : "Dataset with errors being rescaledi by a correction factor. See Larsen and Pedersen 2020 [6]"
     232            ,"help"       : "Dataset with errors being rescaled by a correction factor. See Larsen and Pedersen 2020 [6]"
     233        }
     234        ,{
     235            "role"       : "output"
     236            ,"id"         : "scale_factor"
     237            ,"label"      : "Correction factor for errors"
     238            ,"type"       : "file"
     239            ,"help"       : "List of factor(s) by which errors (in rescale.d) has been rescaled. See Larsen and Pedersen 2020 [6]"
    215240        }
    216241        ,{
     
    227252            ,"type"       : "file"
    228253            ,"help"       : "A copy of the standard output"
     254        }
     255        ,{
     256            "role"       : "output"
     257            ,"id"         : "sourcecode"
     258            ,"label"      : "Source code"
     259            ,"type"       : "file"
     260            ,"help"       : "Source code (needs to be compiled)"
     261        }
     262        ,{
     263            "role"       : "output"
     264            ,"id"         : "inputfile"
     265            ,"label"      : "Input file"
     266            ,"type"       : "file"
     267            ,"help"       : "Input file (for running locally)"
    229268        }
    230269        ,{
     
    252291            "role"       : "output"
    253292            ,"id"         : "dmaxout"
    254             ,"label"      : "Dmax [Angstrom]"
    255             ,"type"       : "text"
    256             ,"help"       : "Maximum distance in particle"
     293            ,"label"      : "Dmax"
     294            ,"type"       : "text"
     295            ,"help"       : "Maximum distance in particle - same units as the input data: A or nm"
    257296        }       
    258297        ,{
    259298            "role"       : "output"
    260299            ,"id"         : "Rg"
    261             ,"label"      : "Rg [Angstrom]"
    262             ,"type"       : "text"
    263             ,"help"       : "Radius of gyration"
     300            ,"label"      : "Rg"
     301            ,"type"       : "text"
     302            ,"help"       : "Radius of gyration - same units as the input data: A or nm"
    264303        }
    265304        ,{
     
    301340            "role"       : "output"
    302341            ,"id"         : "prob"
    303             ,"label"      : "Probability of reducd Chi2 (Chi2r)"
    304             ,"type"       : "text"
    305             ,"help"       : "probability for Chi2r, given correct errors. See Larsen and Pedersen 2020 [6]"
     342            ,"label"      : "Probability of Chi2r, p-value"
     343            ,"type"       : "text"
     344            ,"help"       : "probability for Chi2r, given correct errors. See Larsen and Pedersen 2021 [6]"
    306345        }
    307346        ,{
     
    310349            ,"label"      : "The experimental errors are probably:"
    311350            ,"type"       : "text"
    312             ,"help"       : "<p>Assessed from the Chi2r. Rule of thumb: </p><p>the experimental errors are correctly estimated if the probability is above 0.003 </p><p>See Larsen and Pedersen 2020 [6]</p>"
     351            ,"help"       : "<p>Experimental errors assessed from the Chi2r. Recommended significance criteria: </p><p>the experimental errors are correctly estimated if the probability is above 0.003,</p><p> else they are likely over/underestimated and rescaled errors (in rescale.d) may be used for further data analysis.</p><p>See Larsen and Pedersen 2021 [6]</p>"
    313352        }
    314353        ,{
     
    317356            ,"label"      : "Correction factor for errors"
    318357            ,"type"       : "text"
    319             ,"help"       : "<p>This factor was used to rescale errors in rescale.d, by:</p><p> sigma_rescaled = factor*sigma, where factor = sqrt(Chi2r)</p>"
     358            ,"help"       : "<p>Constant rescaling (default): a constant was used to rescale errors in rescale.d, by:</p><p> sigma_rescaled = c*sigma, where c = sqrt(Chi2r)</p><p>Non-constant rescaling: q-dependent factors were used to rescale errors in rescale.d (indepent in each Shannon-bin):</p><p>sigma_rescaled_bin = c_bin*sigma, where c_bin = sqrt(Chi2r_bin)</p><p>See Larsen and Pedersen 2021 [6]</p>"
    320359        }
    321360        ,{
     
    403442            ,"width"      : "50%"
    404443        }
     444        ,{
     445            "role"       : "output"
     446            ,"id"         : "iqrsfig"
     447            ,"label"      : ""
     448            ,"type"       : "image"
     449            ,"width"      : "50%"
     450        }
    405451    ]
    406452}
Note: See TracChangeset for help on using the changeset viewer.