------------------------------------ Example using ``test1.smr`` data set ------------------------------------ Input Commands -------------- .. see :func:`jldesmear.api.smear.Plengt` for an example of formatted math .. needs graphviz .. .. inheritance-diagram:: jldesmear.api.traditional jldesmear.api.smear jldesmear.api.StatsReg jldesmear.api.textplots Start the program from the ``data`` directory in the source tree. We'll use UNIX shell redirection to get everything in a text file:: cd src/jldesmear/data python ../api/traditional.py < test1.inp > test1.out The program will print a header:: <<< SAS data desmearing, by Pete R. Jemian <<< Based on the iterative technique of JA Lake and PR Jemian. <<< P.R.Jemian,; Ph.D. thesis, Northwestern University (1990). <<< J.A. Lake; ACTA CRYST 23 (1967) 191-194. <<< <<< $Id$ <<< desmear using the same FORTRAN & C command line interface <<< Then, the program will ask some questions about the input data. Here, the test data is ``test1.smr``:: <<< What is the input data file name? <''=Quit> <> ==> >>> test1.smr Name the (new) file name to write the results. If it exists, it will be overwritten without further comment. Here, we choose the name ``test1.out``:: <<< What is the output data file name? <> ==> >>> test1.out The slit length is the term *l_o* and has the same units as *X*:: <<< What is the slit length (x-axis units)? <1.0> ==> >>> .08 To complete the smearing integral at highest *X*, it is necessary to extrapolate beyond the range of measured data. Choose the functional form that best represents the data at highest *X*. Fit coefficients will be evaluated for each desmearing iteration over the range ``X_start <= X <= X_max``:: <<< Extrapolation forms to avoid truncation-error. <<< constant = flat background, I(q) = B <<< linear = linear, I(q) = b + q * m <<< powerlaw = power law, I(q) = b * q^m <<< Porod = Porod law, I(q) = Cp + Bkg / q^4 <<< Choose the *linear* form (although *constant* would work with this data as well):: <<< Which form? <constant> ==> >>> linear This is ``X-start`` as noted above: ``.08``:: <<< What X to begin evaluating extrapolation (x-axis units)? <1.0> ==> >>> .08 Accept the solution after 20 iterations this time:: <<< How many iteration(s)? (10000 = infinite) <10000> ==> >>> 20 This question is largely historical. The ``fast`` method is **always** the best choice. The others were implementations of either Jansson or Halsey & Blass. They converge more slowly by far. That said, you are free to re-determine this for yourself. Press the [return] key to accept the default suggestion:: <<< Weighting methods for iterative corrections: <<< Correction = weight * (MeasuredI - SmearedI) <<< constant: weight = 1.0 <<< fast: weight = CorrectedI / SmearedI <<< ChiSqr: weight = 2*SQRT(ChiSqr(0) / ChiSqr(i)) <<< <<< Which method? <fast> ==> >>> Program output to console ------------------------- Now the program starts the work of desmearing. The first step shows an awful chi-square statistic. This will improve with subsequent iterations. The plot is standardized residual vs. data point number. There are ``==========`` bars indicated at ``+1`` and ``-1``; these merge together on the first plot.:: Input file: test1.smr -/|\ ... standardized residuals, ChiSqr = 1.29823e+07, iteration=0 x: min=1 step=3.45833 max=250 y: min=-545.836 step=24.8717 max=1.34169 ------------------------------------------------------------------------- | + | |==============================================+++++++++++++++++++++++++++| |+ ++ | | ++ | | ++ | |+ + ++ | |++ + ++ | | + ++ | | +++ ++ | | +++ + | | ++ + | | ++ ++ | | + + | | ++ +++ ++ | | ++ +++++ + | | ++++++++++++ + | | + | | + | | + | | + | | + | | + | | + | ------------------------------------------------------------------------- After the next iteration, the chi-squared statistic has improved by an order of magnitude but the plot still does not different:: standardized residuals, ChiSqr = 1.36804e+06, iteration=1 x: min=1 step=3.45833 max=250 y: min=-206.354 step=9.44611 max=1.46073 ------------------------------------------------------------------------- | + | |================================================+++++++++++++++++++++++++| |+ ++ | | ++ | |+ + | | + + + | | +++ ++ | | +++++ ++ | | +++ ++ | | ++ +++++ ++ | | ++ +++++++ ++ | | +++++++++++ + | | + + | | + | | + | | ++ | | + | | + | | + | | + | | + | | + | | + | ------------------------------------------------------------------------- Skipping forward a few iterations, we see some real progress:: standardized residuals, ChiSqr = 566.385, iteration=5 x: min=1 step=3.45833 max=250 y: min=-3.97891 step=0.499962 max=7.02024 ------------------------------------------------------------------------- | + | | + | | | | | | | | | | | | + + + | | + + +++ | | + ++++ | |+ + ++++ + | |++ + ++ | | + + ++ ++ + | |=======+===+=+=++=++=+==============+=============+===+===+======+====== | | + ++ +++ + ++ +++++++ + + + ++ + ++++++++++++++++| |+ +++ + + ++ +++++ + ++++++++++ + + ++++ + ++++++++++++++++ | |+ + + ++ + + ++ + + + + ++ +++ +++++ ++ + | |========+===================++=====+==========+=+++=====+=============== | | + + +++ | | + | | + + | | ++ | | ++ | ------------------------------------------------------------------------- After about 10 iterations or so, it seems convergence has been achieved. The chi-squared statistic has dropped and the plot looks more randomly-arranged about 0.:: standardized residuals, ChiSqr = 103.479, iteration=11 x: min=1 step=3.45833 max=250 y: min=-2.89125 step=0.349475 max=4.7972 ------------------------------------------------------------------------- | + | | + | | | | | | | | + | | + | | | | | | | |+ | |=+====+================================================================= | | + ++ + + + + + + + | | + + + + ++ ++ + + ++ ++ +++ ++ + + | |+ +++ ++++++++++++ ++ +++++ ++++++++++++++ ++++ ++++ +++++++++++++++++| | + ++ +++ ++ ++++ +++++++++ ++ ++++++++ +++++ ++ ++ ++ + ++++ | |++ + + + + ++ + + + + | |====++=+================================================================ | |+ + | | | | + | | | | + | ------------------------------------------------------------------------- Finally, after 20 iterations (numbered 0 .. 19):: standardized residuals, ChiSqr = 46.9362, iteration=19 x: min=1 step=3.45833 max=250 y: min=-2.94353 step=0.264922 max=2.88475 ------------------------------------------------------------------------- | + | | | | + | | | | + | | + | | | |+ | |==+===================================================================== | | + ++ | | + + ++ + + + ++ + + + ++++ +++ ++ +| | + +++ ++++++ ++ + ++ ++++++++++++++++++++++++++++++++++ +++++++++++++ | | ++ + ++++++ ++++ + +++++++++ + ++ ++++++++++++++++ +++++ + ++ + ++ ++ | |++ + + ++ + + | |+ + | |======+================================================================= | | + ++ | | | | | | | | | | | | + | ------------------------------------------------------------------------- The result is accepted and the data are saved to the output file:: Saving data in file: test1.out SAS log-log plot, final, S=input, D=desmeared x: min=-7.898 step=0.0889226 max=-1.49558 y: min=3.0786 step=0.637599 max=17.1058 ------------------------------------------------------------------------- |D | |DDDDDD | |D DDDDDDDD | | DDDDD | | DDD | | DDD | | DDD | | DD | |SSSSS DDD | | SSSSSSS DD | | SSSSS DDD | | SSSS DD | | SSSS DDD | | SSS DD | | SSS DDD | | SSS DDD | | SSS DDD | | SSSS DDD | | SSS DD | | SSSS DDDD | | SSSSS DDDD | | SSSSSDDDDDDDDDD D DD DDDDDD | | D DDDDDSSDDDDDDDDDDDDDD| ------------------------------------------------------------------------- Data Files ---------- Command Input File (:file:`test1.inp`) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. literalinclude:: ../../../src/jldesmear/data/test1.inp Input Data File (:file:`test1.smr`) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. literalinclude:: ../../../src/jldesmear/data/test1.smr Output Data File (:file:`test1.dsm`) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. literalinclude:: ../../../src/jldesmear/data/test1.dsm Complete Program Output (:file:`test1.out`) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Too big for the documentation. See the source code distribution. .. .. literalinclude:: ../../data/test1.out