# Changeset 35ac8df in sasview

Ignore:
Timestamp:
Aug 21, 2018 9:20:27 AM (9 months ago)
Branches:
Children:
c2525bf
Parents:
96d06a4 (diff), ec52ea1 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into ticket-1111

Files:
5 deleted
27 edited
7 moved

Unmodified
Removed
• ## docs/sphinx-docs/source/conf.py

 rf1d48e9 # General information about the project. project = u'SasView' copyright = u'2017, The SasView Project' copyright = u'2018, The SasView Project' # The version info for the project you're documenting, acts as replacement for version = '4.2' # The full version, including alpha/beta/rc tags. release = '4.2.0' release = '4.2.0-beta' # The language for content autogenerated by Sphinx. Refer to documentation
• ## docs/sphinx-docs/source/user/working.rst

 r3bd677b Writing a Plugin Model Environment Variables Model marketplace

 r2f6d340 - New in Version 3.?.? Release Notes ============= 1- Features =========== - New in Version 4.2.0 -------------------- This point release heralds many improvements and a host of bug fixes. But there are also some significant changes from previous versions. - Changes - The infrastucture for calculating 2D patterns from 3D orientated objects has been totally re-factored. It is now more accurate and consistent across models. - The way that SasView defines the orientation of anisometric and aligned objects has been completely overhauled. It now differs from previous versions. - Plugin models, including sum/multiply models, have completely migrated to the new infrastructure. ???DO WE NEED TO SAY SOMETHING ABOUT BACKWARD COMPATIBILITY OR LEGACY SUPPORT HERE??? - The NeXus loader has been removed (as it is superseded by the NXcanSAS loader). - Improvements - The accuracy/speed of some numerical integrations have been improved. ???CHECK WITH PAULK??? - An orientation viewer tool has been introduced (to assist in understanding the new orientation framework). - Problems with the computation of magnetic scattering from some objects have been rectified. - The known issue with the core_shell_parallelepiped model is now fixed. - A number of issues and inconsistencies with the creation of sum|product models have been rectified (and more work is in progress). - A Boltzmann distribution has been added for polydispersity/orientational distributions. - Some batch slicing options have been introduced. - Correlation function analysis now computes both the 1D and 3D functions. - There are several data loading improvements. - There are several improvements to Save/Load Project (with more to come). - There have been numerous other bug fixes. - Documentation Several sections of the help documentation have undergone significant checking and updating, particularly those relating to orientation, magnetic scattering, and polydispersity distributions. - Other work - A Third-Party initiative has recently succeeded in getting SasView to run on Debian. More details at http://trac.sasview.org/wiki/DevNotes/Projects/Debian - With this release we have started to prepare for the inevitable move to Python 3. - SasView 5.0 is already in development. The two most significant features of this version will be (i) a move away from the present WxPython GUIs to new Qt5 GUIs, and (ii) implementation of the Beta-approximation for S(Q). Subject to resources, the latter functionality may be released (in a non-GUI form) in an interim SasView 4.3.0. - Bug Fixes Fixes #  14: Loading a saved project is really really slow Fixes # 260: Box integration does not update when entering values in dialog Fixes # 379: Need to make the BUMPS output page more more obvious Fixes # 446: Saving plot as PGF (not PDF!) format throws error Fixes # 467: Extend batch functionality to slicer Fixes # 489: ABS reader (NIST 1D) does not handle negative dx properly (USANS slit smearing) Fixes # 499: create sin(x)/x, 2*J1(x)/x and 3*j1(x)/x functions Fixes # 510: Build PDF documentation along with HTML Fixes # 525: Add GUI category defaults to models in sasmodels Fixes # 579: clean up sasview directory Fixes # 597: Need to document Combine Batch Fit Fixes # 645: GUI logic problem in Batch vs single fit mode Fixes # 648: Need to allow user input background value in Pr perspective Fixes # 685: Fix data upload to marketplace Fixes # 695: linear slope in onion model Fixes # 735: Review new Corfunc documentation Fixes # 741: Recalculate P(Q) and S(Q) components on model update. Fixes # 767: Sum/Product Models don't do what they should Fixes # 776: angular dispersity Fixes # 784: Add 3D integral to Correlation Function analysis Fixes # 786: core_shell_parallelepiped 1-D model is incorrect Fixes # 818: report button followed by save makes an empty pdf file??? Fixes # 830: Check compliance of loader against NXcanSAS-1.0 release Fixes # 838: Fix model download from marketplace Fixes # 848: can't save analysis when only one fit page Fixes # 849: Load Folder should ignore files starting with . Fixes # 852: More unit tests, especially for oriented or 2d models Fixes # 854: remove unnecessary sleep() in fitting perspective Fixes # 856: Reading SAS_OPENCL from custom_config sometimes raises an ERROR Fixes # 861: cannot defined a structure factor plugin Fixes # 864: New Model Editor (simple plugin editor) error parsing parameter line Fixes # 865: Plugin live discovery issues Fixes # 866: inform user when NaN is returned from compute Fixes # 869: fit page computation thread cleanup Fixes # 875: Possible weirdness with 1D NXcanSAS data Fixes # 876: Add check for HDF5 format in dataloader Fixes # 887: reorganize tree, separating the installed source from the build source Fixes # 889: Refactor dataloader error handling infrastructure Fixes # 890: use new orientation definition for asymmetric shapes Fixes # 891: update docs for oriented shapes with new orientation definition Fixes # 896: equations in core shell parallelepiped docs do not match code Fixes # 898: Image Viewer Tool file selector issue Fixes # 899: Igor Reader q calculation Fixes # 902: IgorReader Q calculation needs fixing/improving Fixes # 903: sasview - all non-gui tests should be converted to run in Python 3 Fixes # 906: polydispersity not showing up in tabulated results Fixes # 912: About box points to misleading contributors page on Github Fixes # 913: Need to add Diamond developer and logo in relevant places Fixes # 915: load project issues Fixes # 916: Proper Logging Fixes # 920: Logarithmic binning option in the slice viewer Fixes # 921: Improve developer communication methods Fixes # 922: Remove support for all data formats that are not in q space Fixes # 923: Add CI and trac integrations to Slack Fixes # 930: fitting help says chisq is normalized to number of points Fixes # 931: Allow admins to edit all models and upload data etc on marketplace Fixes # 932: Need to fix upload of data files to marketplace Fixes # 934: Slurp tutorial repo for tutorials Fixes # 935: Build new tutorials as PDF Fixes # 943: Deep copy error on setting model after data is selected Fixes # 950: Most of the readers don't close files properly. Fixes # 954: cross check dll/opencl/python polydispersity and orientation results Fixes # 956: Possible problem with new doc build process Fixes # 961: sasmodels tests should fail if the parameter name does not exist Fixes # 962: star polymer typo in docs Fixes # 966: Inconsistent chi2 reporting Fixes # 967: no uncertainties errors on fitting parameters Fixes # 969: About Box not picking up dls_logo.png Fixes # 970: ASCII loader doesn't handle ISIS 2D ASCII Fixes # 974: blacklist Intel HD 620/630 for double precision Fixes # 978: load project fails for pages which have not been defined Fixes # 980: Inconsistent results between Igor & SasView using Fractal Core-Shell model Fixes # 983: Remove Nexus Loader Fixes # 984: PDF reports are not being properly generated on Windows Fixes # 985: Saving Project Fails Fixes # 986: Send to fitting overwrites theory page even if blank FitPage has focus Fixes # 990: utest_sasview.py giving different results than run_one.py Fixes # 993: Windows x64 versions not installing to correct folder Fixes # 994: Error changing fit engine Fixes # 995: OpenCL required on Linux even if turned off in GUI Fixes #1006: multiplicity models don't work with SQ Fixes #1007: spherical_sld model freezes SasView Fixes #1008: plugin model scaling not working? S Fixes #1010: Win64 build script not creating working executable Fixes #1011: sld_test failing on ubuntu Fixes #1012: ESS GUI not updating after fitting Fixes #1013: FileReaderBaseClass output[] not reset - same file loaded multiple times Fixes #1018: add Boltzmann distribution Fixes #1021: add PDF documentation to website and document in wiki release process Fixes #1024: Update version numbers in master Fixes #1025: Sum/multiply editor hangs Fixes #1032: convert C++ modules to C Fixes #1035: Order of combining P(Q) and S(Q) in Plugins seems to matter Fixes #1037: data loader crop not working? & all fits crashing Fixes #1043: problem compiling marketplace models Fixes #1050: fix appveyor test for sasmodels win 64 python 3 Fixes #1052: Can't use a user-created plugin model in a plugin model Fixes #1054: Check plugin & orientation descriptions in full docs once SasModels PR #57 is merged Fixes #1057: phi rotation issue for elliptical cylinder Fixes #1060: incorrect default for rectangle dispersion Fixes #1062: win32 build not installing correctly Fixes #1064: Fitting did not converge!!! error with a Sum|Multi plugin model Fixes #1068: 2d data (from NG7) not loadiing - strange format? Fixes #1069: GUI problem when using polydispersity/orientation distributions Fixes #1070: Parameter error boxes should not be editable Fixes #1072: Orientation distributions seem to depend on initial angle Fixes #1079: Remove save button in report dialog on Mac Fixes #1081: GUI problem with new orientation distribution Fixes #1083: Magnetic models not being computed Fixes #1099: Erratic behaviour of Sum|Multi model in 4.1.2 Fixes #1101: Batch results page not displaying polydispersity values Fixes #1103: Problem with plugin models on mac when using ER Fixes #1134: sum/multi scale factor in 4.2 seems incorrect? Fixes #1139: Missing Docs and Help for new Batch Slicing Fixes #1145: Update models in model marketplace to 4.2 when 4.2 is released. Fixes #1146: Need to add Release notes for 4.2 - Current Known Issues Listed here are known issues that users should be aware of. A full list of known bugs and feature requests is available at http://trac.sasview.org/report/3 - Blocker Ticket #1131: OpencCl dialog does not open                                              assigned wojciech defect blocker Ticket #1132: Slit Size Calculator Tool not working                                     assigned krzywon defect blocker Ticket #1133: Reference in Acknowledging SasView box will need updating for release     assigned ajj task blocker Ticket #1142: Plugin framework is broken                                                reopened pkienzle defect blocker - Critical Ticket #1148: Documentation for S(Q) models need updating SasView 4.2.0                 assigned butler defect critical - Other Significant Ticket #1046: convert non builtin models in the marketplace to new API                  assigned butler task major Ticket #1128: AutoPlot generation for model documentation does not include background   assigned pkienzle defect major Ticket #1140: Batch Slicer requires plotting of all 2D data sets to use in batch        assigned krzywon enhancement major Ticket #1141: Intro to scripting.rst needs improvement                                  new pkienzle enhancement major Ticket #1143: Validate new orientation distribution                                     assigned butler task major Ticket #1144: Redundant MultiplicationModel class                                       new pkienzle defect major - Model Issues Corrections will be posted to Marketplace as available (and fixed in following release) Ticket #1044: Unable to upload c file to marketplace                                    assigned tim defect major It is recommended that all users upgrade to this version, but your attention is drawn to the Changes section above. - New in Version 4.1.2 -------------------- This point release is a bug-fix release addressing: - Fixes #984: PDF Reports Generate Empty PDFs - Fixes a path typo - 64 bit and 32 bit Windows executables now available It is recommended that all users upgrade to this version - New in Version 4.1.1 -------------------- This point release is a bug-fix release addressing: - Fixes #948: Mathjax CDN is going away - Fixes #938: Cannot read canSAS1D file output by SasView - Fixes #960: Save project throws error if empty fit page - Fixes #929: Problem deleting data in first fit page - Fixes #918: Test folders not bundled with release - Fixes an issue with the live discovery of plugin models - Fixes an issue with the NXcanSAS data loader - Updated tutorials for SasView 4.x.y - New in Version 4.1.0 ------------------ This incremental release brings a series of new features and improvements, and a host of bug fixes. Of particular note are: - Correlation Function Analysis (Corfunc) This performs a correlation function analysis of one-dimensional SAXS/SANS data, or generates a model-independent volume fraction profile from the SANS from an adsorbed polymer/surfactant layer. A correlation function may be interpreted in terms of an imaginary rod moving through the structure of the material. Î1D(R) is the probability that a rod of length R moving through the material has equal electron/neutron scattering length density at either end. Hence a frequently occurring spacing within a structure manifests itself as a peak. A volume fraction profile \Phi(z) describes how the density of polymer segments/surfactant molecules varies with distance from an (assumed locally flat) interface. - Fitting of SESANS Data Data from Spin-Echo SANS measurements can now be loaded and fitted. The data will be plotted against the correct axes and models will automatically perform a Hankel transform in order to calculate SESANS from a SANS model. - Documentation The documentation has undergone significant checking and updating. - Improvements - Correlation function (corfunc) analysis of 1D SAS data added from CCP13 - File converter tool for multi-file single column data sets - SESANS data loading and direct fitting using the Hankel transformation - Saving and loading of simultaneous and constrained fits now supported - Save states from SasView v3.x.y now loaded using sasmodel model names - Saving and loading of projects with 2D fits now supported - Loading a project removes all existing data, fits, and plots - Structure factor and form factor can be plotted independently - OpenCL is disabled by default and can be enabled through a fit menu - Data and theory fields are now independently expandable - Bug Fixes - Fixes #667: Models computed multiple times on parameters changes - Fixes #673: Custom models override built in models of same name - Fixes #678: Hard crash when running complex models on GPU - Fixes $774: Old style plugin models unloadable - Fixes #789: stacked disk scale doesn't match cylinder model - Fixes #792: core_shell_fractal uses wrong effective radius - Fixes #800: Plot range reset on plot redraws - Fixes #811 and #825: 2D smearing broken - Fixes #815: Integer model parameter handling - Fixes #824: Cannot apply sector averaging when no detector data present - Fixes #830: Cansas HDF5 reader fully compliant with NXCanSAS v1.0 format - Fixes #835: Fractal model breaks with negative Q values - Fixes #843: Multilayer vesicle does not define effective radius - Fixes #858: Hayter MSA S(Q) returns errors - Numerous grammatical and contexual errors in documention - New in Version 4.0.1 ------------------ This release fixes the critical bug #750 in P(Q)*S(Q). Most damaging it appears that the background term was being added to S(Q) prior to multiplication by P(Q). - New in Version 4.0 ------------------ This release fixes the various bugs found during the alpha and beta testing - Improvements - Support for reading data files from Anton Paar Saxess instruments - Adds documentation on how to write custom models in the new framework - Bug Fixes - Fixes bug #604 Pringle model questions - Fixes bug #472 Reparameterize Teubner-Strey - Fixes bug #530 Numerical instabilities in Teubner Strey model - Fixes bug #658 ASCII reader very broken - New in Version 4.0 beta 1 -------------------- This beta adds support for the magnetic and multilevel models of 3.1.2 and along with a host of bug fixes found in the alpha. - Model package changes and improvements - All 3.1.2 models now available in new interface - Old custom models should now still work - '''NOTE:''' These will be deprecated in a future version. Old custom models should be converted to the new model format which is now the same as the built in models and offers much better support. - Custom model editor now creates new style models - Custom model editor supports better error checking - Documentation improvements - Continued general cleanup - Other improvements/additions - Support for new canSAS 2D data files added - Plot axes range can now be set manually as well as by zooming - Plot annotations can now be moved around after being placed on plot. - The active optimizer is now listed on the top of the fit panel. - Linear fits now update qmin and max when the x scale limits are changed. Also the plot range no longer resets after a fit. - Bug fixes - Fixes bug #511 Errors in linearized fits and clean up of interface including Kratky representation - Fixes bug #186 Data operation Tool now executes when something is entered in the text box and does not wait for the user to hit enter - Fixes bug #459 plot context menu bug - Fixes bug #559 copy to clipboard in graph menu broken - Fixes bug #466 cannot remove a linear fit from graph - Numerous bugs introduced in the alpha - New in Version 4.0.0-alpha -------------------- This alpha release brings a major overhaul of the model system. The new model package allows rapid integration of custom models and access to polydispersity without requiring a compiler. - Model package changes and improvements - Model interface moved to independent sasmodels package. - Most models converted to new interface. - Allows rapid integration of user-written models. - OpenCL GPU utilization for faster fitting. - Improved numerical integration of Bessel functions. - SESANS integration and implementation - Scripting interface added for analysis of SESANS data. - Hankel transformation now accepts finite acceptance angles. - 2D cosine transformation added for TOF SESANS analysis. - Documentation improvements - The documentation tree was restructured for a better end user experience. - The documentation for each model was revamped and verified by at least two people following the conversion of the model. - Theoretical 1D (and 2D if applicable) scattering curves are auto-generated and added to the model documentation for each model. - Separation of GUI and calculations for future GUI enhancements - Bug fixes - Fixes bug #411 No stop button on simultaneous fit page - Fixes bug #410 Error with raspberry model - Fixes bug #364 Possible inconsistency in Poly_GausCoil model - Fixes bug #439 Hayter Penfold MSA code needs checking - Fixes bug #484 lammellerPC is precision limited - Fixes bug #498$HOME/.matplotlib conflicts - Fixes bug #348 Control order in which fit parameters appear in the gui - Fixes bug #456 Provide DREAM Results Panel with something to identify data and age of results - Fixes bug #556 Build script improvements for developers - New in Version 3.1.2 -------------------- This release is a major stability improvement, having fixed a serious bug that came to light since release 3.1.1. All users should upgrade. - Fixes bug #468 broken remove constraint buttons in simultaneous/constrained fitting panel - Fixes bug #474 resulting from changes in 3.1.1 that had introduced an error in the high-Q of slit-smeared models. - Fixes bug #478 which would cause wx to run out of IDs and result in SasView crashing even if left alone. - Fixes bug #479 missing help button on simultaneous/constrained fit page - Fixes bug #480 GUI resizing issues on simultaneous fit page - Fixes bug #486 broken Report Results - Fixes bug #488 redraw issues in fit page - New in Version 3.1.1 -------------------- - Fixes bug #457 that prevented SasView from starting if the user was not connected to the internet, or was behind a proxy server. - New in Version 3.1.0 -------------------- - The documentation/help has had a complete overhaul including: - A completely new presentation interface (Sphinx). - Proof reading! - Updating for latest features. - A Help (or sometimes ?) button has been added to every panel, and some sub panels if appropriate, linking to the appropriate section in the documentation. - The model help has been split so that the Details button now brings up a very short pop-up giving the equation being used while HELP goes to the section in the full documentation describing the model. - Extensive help has also been added for the new optimizer engine (see below) including rules of thumb on how and when to choose a given optimizer and what the parameters do. - The optimizer engine has been completely replaced. The new optimizer still defaults to the standard Levenberg-Marquardt algorithm. However 4 other optimizers are now also available. Each starts with a set of default parameters which can be tuned. The DREAM optimizer takes the longest but is the most powerful and yields rich information including full parameter correlation and uncertainty plots. A results panel has been added to accommodate this. - The five new optimizers are: - A Levenberg-Marquardt optimizer - A Quasi-Newton BFGS optimizer - A Nelder-Mead Simplex optimizer - A Differential Evolution optimizer - A Monte Carlo optimizer (DREAM) - New models were added: - LamellarPolLz - MicelleSphCoreModel (currently residing in the Uncategorized category) - Existing models were updated: - LamellarPS and LamellarPSHG have been changed to LamellarCaille and LamellarCailleHG - LamellarPS (bug in polydispersity integration fixed) - RectangularPrismModel - RectangularHollowPrismModel - RectangularHollowPrismInfThinWallsModel - Infrastructure to allow SESANS data to be fit with models was added. This will become available in a future release but can currently be used from the command line with some caveats. - A number of bugs were fixed including a thread crashing issue and an incorrect slit smearing resolution calculation. - Implemented much more robust error logging to enable much easier debugging in general but particularly the debugging of issues reported by SasView users. - A number of infrastructure tasks under the hood to enhance maintainability - Upgrade from Wx 2.8 to Wx 3.0.2 which allows several new features but required significant additional rework as well. - Fully implemented Sphinx to the build process to produce both better user documentation and developer documentation. - Restructuring of the code base to more unified nomenclature and structure so that the source installation tree more closely matches the installer version tree. - Code cleanup (an ongoing task) . - Migration of the repository to github simplifying contributions from non-project personnel through pull requests. - New in Version 3.0.0 -------------------- - The GUI look and feel has been refactored to be more familiar for Windows users by using MDI frames. Graph windows are also now free- floating. - Five new models have been added: PringlesModel, CoreShellEllipsoidXTModel, RectangularPrismModel, RectangularHollowPrismModel and RectangularHollowPrismInfThinWallsModel. - The data loader now supports ILL DAT data files and reads the full meta information from canSAS file formats. - Redefined convention for specifying angular parameters for anisotropic models. - A number of minor features have been added such as permitting a log distribution of points when using a model to simulate data, and the addition of a Kratky plot option to the linear plots. - A number of bugs have also been fixed. - Save Project and Save Analysis now work more reliably. - BETA: Magnetic contrast supporting full polarization analysis has been implemented for some spherical and cylindrical models. - BETA: Two new tools have been added: - A generic scattering calculator which takes an atomic, magnetic or SLD distribution in space and generates the appropriate 2D scattering pattern. In some cases the orientationally averaged (powder) 1D scattering can also be computed. Supported formats include: SLD or text, PDB, and OMF magnetic moment distribution file. - An image viewer/converter for data in image format; this reads in an image file and will attempt to convert the image pixels to data. Supported formats include: TIFF, TIF, PNG, BMP, JPG. - New in Version 2.2.1 -------------------- - Minor patch to support CanSAS XML v1.1 file format - Added DataInfo for data in the DataExplorer and plots - Added Maximize/Restore button in the title bar of the graphs - Added a hide button in the toolbar of the graph panel - The 'x' button now deletes a graph - Edit SUM Model from the menubar can now generate and save more than one sum model - Reports can now be saved in pdf format on WIN and MAC - Made significant improvements to the batch/grid panel and fixed several bugs - Fixed a number of other minor bugs - New in Version 2.2.0 -------------------- - Application name changed to SasView - New fully customizable Category Manager added for better management of increasing number of models - Improved the Grid Window functionality in the batch fitting mode - Added a simpler Graph/Plot modification interface - Added a new 'Data Operation' tool for addition, subtraction, multiplication, division, of two data sets. - The 'Sum Model' editor was extended and renamed 'Summation and Multiplication' editor - Added more plot symbols options for 1d plots - Added improved trapping of compiling errors to the 'New model editor' - Added some intelligent outputs (e.g., Rg, background, or rod diameter depending on the choice of axis scale of the plot) to the linear fits - Added more models - Feature set from previous versions ----------------------------------- - Perspectives Available - Invariant calculator: Calculates the invariant, volume fraction, and specific surface area. - P(r) inversion calculator: Indirect Fourier transformation method. - Fitting: the tool used for modeling and fitting 1D and 2D data to analytical model functions - Tools: provides a number of useful supplementary tools such as SLD calculation - Fitting - Includes a large number of model functions, both form factors and structure factors. - Support P(Q)*S(Q) for form factors that flag they can be so multiplied. - Supports Gaussian, lognormal, Shulz, rectangular and custom distribution functions for models that need to include polydispersity or for orientational distributions if appropriate. - Anisotropic shapes and magnetic moment modeling in 2D allow for a non-uniform distribution of orientations of a given axis leading to modeling and fitting capabilities of non azimuthaly symmetric data. - User can choose to weight fits or not. If using weights, the user can choose the error bar on each point if provided in the file, the square root of the intensity or the intensity itself. - Instrumental resolution smearing of model or fits is provided with several options: read the resolution/point fromt he file. Input a pinhole resolution or a slit resolution. - Users can define the Qrange (Qmin and Qmax) for both 1D and 2D data for fitting and modeling, but not graphically.  The range can be reset to the defaults (limits of q in data set for a fit) with the reset button. - A mask can be applied to 2D calculation and fitting. - Normalized residual plots are provided with every fit. - Model function help available through detail button or from the fitting panel. - Simultaneous/(advanced)constrained fitting allows for fitting a single data set or several different sets simultaneously with the application of advanced constraints relating fit parameters to functions of other parameters (including from a different set). For example thickness of shell = sin(30) times the length. - Models that are the sum of two other models can be easily generated through the SUM Model menubar item. - New Python models can be added on the fly by creating an appropriate Python file in the model plugin directory. Two tools are provided to help: An easy to use custom model editor allows the quick generation of new Python models by supplying only the parameters and their default value (box 1) and the mathematical function of the model (box 2) and generating the necessary *.py file.  A separate advanced model editor provides a full Python file editor.  Either way once saved the model becomes immediately available to the application. - A batch fitting capability allows for the analysis of a series of data sets to a single model and provides the results in a tabular form suitable for saving or plotting the evolution of the fit parameters with error bars (from within the application). - Tools - A scattering length density calculator,including some X-ray information is provided. - A density to vol. fraction converter is provided - In application access to a Python shell/editor (PyCrust) is provided - An instrument resolution calculator, including possible gravitational and TOF effects is provided - A slit size calculator optimized for Anton Paar Saxess is provided. - A kiessig fringe thickness calculator is provided - Plots and plot management - A 3D graphing option (for 2d data/results) is provided with the view controlled by the mouse - 2D plots are shown with an intensity color bar. 2D Color map can be user adjusted. - Supports output of plot to a variety of graphic formats. Supported formats include: png, eps, emf, jpg/jpeg, pdf, ps, tif/tiff, rawRGBbitmap(raw, rgba), and scalable vector graphic (svg/svgz) - Supports ouput of data in plot (1 or 2D) to limited data formats - Multiple data sets can be loaded into a single graph for viewing (but a fit plot can currently only have a single plot). - Extensive context sensitive plot/fitting/manipulation options are available through a right mouse click pop-up menu on plots. - Data management - Supports 2 + column 1D ASCII data, NIST 1D and 2D data, and canSAS data via plug-in mechanism which can easily allow other readers as appropriate. - 2D data is expected in Q space but for historical reasons accepts the NIST 2D raw pixel format and will do conversion internally. - The full data and metadata available to SasView is viewable in ASCII via right clicking on a data set and choosing Data Info in the DataExplorer or on the plots - Supports loading a single file, multiple files, or a whole folder - An optional Data Explorer is provided (default) which simplifies managing, plotting, deleting, or setup for computation. Most functions however do not require access to the explorer/manager and can be accessed through right click menus and the toolbar.  The data explorer can be re-started from the menu bar. - Data manipulation - Support various 2D averaging methods : Circular, sectors, annular, boxsum, boxQx and boxQy. - A 2D data maks editor is provided - 2D mask can be applied to the circular averaging. - Miscellaneous features - limited reports can be generated in pdf format - Provides multiprocessor support(Windows only) - Limited startup customization currently includes default startup data folder and choice of default starting with data manager - Limited support for saving(opening) a SasView project or a SasView analysis (subproject) is provided. - SasView can be launched and loaded with a file of interesty by double-clicking on that file (recognized extension) - A data file or data folder can be passed to SasView when launched from the command line. - Limited bookmarking capability to later recall the results of a fit calculation is provided. - Extensive help is provided through context sensitive mouse roll-over, information bar (at the bottom of the panel), the console menu, and access to the help files in several different ways. 2- Downloading and Installing ============================= *** Note 1:  Much more information is available at www.sasview.org under links. Look in the 'For Developers' section and particularly the wiki at www.sasview.org/trac/wiki. *** Note 2:  If you have EXE or ZIP SasView installer, you won't need any of the following.  However it is highly recommended that any previous versions be un-installed prior to installing the new version. 2.1- System Requirements - Python version >= 2.5 and < 3.0 should be running on the system - We currently use Python 2.7 2.2- Installing from source - Get the source code - to follow the current development version from source control use git clone https://github.com/SasView/sasview.git git clone https://github.com/bumps/bumps.git - to install a specific version - Build, install and run a specific release - make sure the requirements below are already installed - retrieve the source from https://github.com/SasView/sasview/releases - open a command line window in the 'sasview-x.x.x' directory - run 'python setup.py install' - run 'python sasview.py' under the 'sasview' folder. - Build, install and run the current development version - clone the source from git; also clone bumps, which is developed in parallel git clone https://github.com/SasView/sasview.git git clone https://github.com/bumps/bumps.git - open a command line window in the 'sasview' directory - run 'python setup.py build' - run 'python run.py'; this runs from the source directories, so you don't have to rebuild every time you make a change, unless you are changing the C++ model files - The following modules are required (version numbers are what are used in the windows release build): - Common Packages - reportlab 3.1.44 - lxml 3.4.4.0 (MAC 3.4.2.0) - PIL 1.1.7 - xhtml2pdf 3.0.33 (MAC = not installed on build server) - unittest-xml-reporting 1.12.0 (MAC 1.10.0) - matplotlib Version Installed: 1.4.3 (MAC 1.1.1) - bumps Version Installed: 0.7.5.9 - scipy Version Installed: 0.16.0b2 (MAC 0.11.0) - periodictable Version Installed: 1.4.1 - setuptools Version Installed: 7.0 (MAC 12.0.5) - sphinx Version Installed: 1.3.1 (MAC 1.3b2) - pyparsing Version Installed: 2.0.3 - numpy Version Installed: 1.9.2 (MAC 1.6.2) - html5lib Version Installed: 0.99999 - wx Version Installed: 3.0.2.0 - Windows Specific Packages - pywin 219 - py2exe 0.6.9 - comtypes 1.1.1 - MinGW w/ gcc version 4.6.1 (WIN) - vcredist_x86.exe (version 9.0.21022.8  -microsoft visual C 2008 re-distributable) - Innosetup (WIN - isetup 5.4.2-unicode) - used to create distributable *** Note: Windows build dependencies can be set up using anaconda. Instructions can be found at http://trac.sasview.org/wiki/AnacondaSetup - MAC Specifc Packages - py2app 0.7.1 3- Known Issues =============== 4.1- All systems: The conversion to sasmodels infrastructure is ongoing and should be completed in the next release. In the meantime this leads to a few known issues: - The way that orientation is defined is being refactored to address long standing issues and comments.  In release 4.1 however only models with symmetry (e.g. a=b) have been converted to the new definitions. The rest (a <> b <> c - e.g. parellelepiped) maintain the same definition as before and will be converted in 4.2.  Note that orientational distribution also makes much more sense in the new framework.  The documentation should indicate which definition is being used for a given model. - The infrastructure currently handles internal conversion of old style models so that user created models in previous versions should continue to work for now. At some point in the future such support will go away. Everyone is encouraged to convert to the new structure which should be relatively straight forward and provides a number of benefits. - In that vein, the distributed models and those generated by the new plugin model editor are in the new format, however those generated by sum|multiply models are the old style sum|multiply models. This should also disappear in the near future - The on the fly discovery of plugin models and changes thereto behave inconsistently.  If a change to a plugin model does not seem to register, the Load Plugin Models (under fitting -> Plugin Model Operations) can be used.  However, after calling Load Plugin Models, the active plugin will no longer be loaded (even though the GUI looks like it is) unless it is a sum|multiply model which works properly.  All others will need to be recalled from the model dropdown menu to reload the model into the calculation engine.  While it might be annoying it does not appear to prevent SasView from working.. - The model code and documentation review is ongoing. At this time the core shell parellelepiped is known to have the C shell effectively fixed at 0 (noted in documentation) while the triaxial ellipsoid does not seem to reproduce the limit of the oblate or prolate ellipsoid. If errors are found and corrected, corrected versions will be uploaded to the marketplace. 3.1- All systems: - The documentation window may take a few seconds to load the first time it is called. Also, an internet connection is required before equations will render properly. Until then they will show in their original TeX format. - If the documentation window remains stubbornly blank, try installing a different browser and set that as your default browser. Issues have been noted with Internet Explorer 11. - Check for Updates may fail (with the status bar message ' Cannot connect to the application server') if your internet connection uses a proxy server. Tested resolutions for this are described on the website FAQ. - The copy and paste functions (^C, ^V) in the batch mode results grid require two clicks: one to select the cell and a second to select the contents of the cell. - The tutorial has not yet been updated and is somewhat out of date - Very old computers may struggle to run the 3.x and later releases - Polydispersity on multiple parameters included in a simultaneous/ constrained fit will likely not be correct - Constrained/simultaneous fit page does not have a stop button - Constrained/simultaneous fit do not accept min/max limits - Save project does not store the state of all the windows - Loading projects can be very slow - Save Project only works once a data set has been associated with a model.  Error is reported on status bar. - There is a numerical precision problem with the multishell model when the iner radius gets large enough (ticket #288) - The angular distribution angles are not clearly defined and may in some cases lead to incorrect calculations(ticket #332) 3.2- Windows: - If installed to same directory as old version without first removing the old version, the old desktop icon will remain but point to the new exe version. Likewise all the start menu folders and items will have the old name even though pointing to the new version.  Usually safest to uninstall old version prior to installing new version anyway. 3.3- MAC: - Application normally starts up hidden. Click icon in Dock to view/use application. - Multiprocessing does not currently work on MAC OS 3.4- Linux: - Not well tested 4- SasView website ================== - www.sasview.org.  This main project site is the gateway to all information about the sasview project.  It includes information about the project, a FAQ page and links to all developer and user information, tools and resources. 5- Frequently Asked Questions ============================= - www.sasview.org/faq.html 6- Installer download website ============================= - Latest release Version - https://github.com/SasView/sasview/releases - Latest developer builds - https://jenkins.esss.dk/sasview/view/Master-Builds/

 r724af06 Release Notes ============= This is a beta pre-release version of 4.2.0.  A number of fixes and changes have been made in the year since the previous release. Full release notes will be compiled prior to the full release 4.2.0. Highlights are: - Infrastucture for calculating 2D patterns from 3D orientated objects has now been totally refactored - Plugins have completely migrated to the new infrastructure now, including sum/multiply models - Some batch slicing options have been introduced - The known issue with the core_shell_parallelepiped is now fixed - Several data loading improvements - Several save Project improvements (though there are more to come) - Numerous bug fixes - Lots of documentation enhancement In the meantime please report any bugs or issues found while using this beta 1- Features ===========

 r3bab401 try: _x = float(toks[0]) _x = float(toks[4]) _y = float(toks[1]) _dy = float(toks[2])
• ## src/sas/sascalc/fit/pagestate.py

 r3b070a0 ################################################################################ import time import re import os import sys if node.get('version'): # Get the version for model conversion purposes self.version = tuple(int(e) for e in str.split(node.get('version'), ".")) x = re.sub('[^\d.]', '', node.get('version')) self.version = tuple(int(e) for e in str.split(x, ".")) # The tuple must be at least 3 items long while len(self.version) < 3:
• ## src/sas/sasgui/guiframe/local_perspectives/plotting/parameters_panel_slicer.py

 ra26f67f self.bck.Add(self.batch_slicer_button, (iy, ix), (1, 1), wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 15) # Help button self.bt_help = wx.Button(self, wx.NewId(), "HELP") self.bt_help.SetToolTipString( "Help for the slicer parameters and batch slicing.") self.bck.Add(self.bt_help, (iy, 1), (1, 1), wx.ALIGN_RIGHT | wx.ADJUST_MINSIZE, 15) wx.EVT_BUTTON(self, self.bt_help.GetId(), self.on_help) iy += 1 self.bck.Add((5, 5), (iy, ix), (1, 1), wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 5) self.bck.Layout() self.bck.Fit(self) self.default_value += "_{0}".format(key).split(" [")[0] self.default_value += "-{:.2f}".format(params[key]) def on_help(self, event=None): """ Opens a help window for the slicer parameters/batch slicing window :param event: :return: """ from sas.sasgui.guiframe.documentation_window import DocumentationWindow _TreeLocation = "user/sasgui/guiframe/graph_help.html" _doc_viewer = DocumentationWindow(self, wx.ID_ANY, _TreeLocation, "#d-data-averaging", "Data Explorer Help")
• ## src/sas/sasgui/guiframe/media/graph_help.rst

 r5ed76f8 .. ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ .. _d_data_averaging: 2D data averaging Alternatively, once a 'slicer' is active you can also select the region to average by bringing back the *Dataset Menu* and selecting *Edit Slicer Parameters*. A dialog window will appear in which you can enter values to define a region or select the number of points to plot (*nbins*). Parameters and Batch Fitting*. A dialog window will appear in which you can enter values to define a region, select the number of points to plot (*nbins*), or apply the slicer to any or all other 2D data plots. A separate plot window will also have appeared, displaying the requested To remove a 'slicer', bring back the *Dataset menu* and select *Clear Slicer*. Batch Slicing ^^^^^^^^^^^^^ A slicer can be applied to any or all existing 2D data plots using the 'Slicer Parameters' window. To open the window, select *Edit Slicer Parameters and Batch Fitting* in the *Dataset Menu* (see Invoking_the_dataset_menu_). Batch slicing options are available at the bottom of the window. Select the 2D plots you want to apply the slicer to. All 2D plots are selected by default. The resulting 1D data for all slicers can be saved as a text file and then sent to fitting by selecting the *Auto save generated 1D* check box. Sending data to the fitting perspective requires the data be saved. Once the auto save check box is selected, you can select where the files are saved. The file name for the saved data is the slicer name plus the file name of the original data set, plus what is in the *Append to file name* field. The default value in the append to field includes the names and values for all of the slicer parameters. The batch of slices can be sent to fitting if desired, with three options available. The first is to not fit the data, the second is to send the slices to individual fit pages, and the third is to send all sliced data to a single batch fit window. Clicking *Apply Slicer to Selected Plots* will create a slicer for each selected plot with the parameters entered in the 'Slicer Parameters' window. Depending on the options selected the data may then be saved, loaded as separate data sets in the data manager panel, and finally sent to fitting. Unmasked circular average

• ## src/sas/sasgui/perspectives/calculator/slit_length_calculator_panel.py

 r7432acb Complete the loading and compute the slit size """ if isinstance(data, list): data = data[0] if data is None or data.__class__.__name__ == 'Data2D': if self.parent.parent is None:
• ## src/sas/sasgui/perspectives/fitting/basepage.py

 rc192960 # draw self._draw_model() self.Layout() self.Refresh() except Exception:
• ## src/sas/sasgui/perspectives/fitting/fitpage.py

 ra7c6f38 ix = 3 ctl2 = wx.TextCtrl(self, wx.ID_ANY, size=(_BOX_WIDTH / 1.3, 20), style=0) ctl2 = BGTextCtrl(self, wx.ID_ANY, size=(_BOX_WIDTH / 1.3, 20)) self.sizer4_4.Add(ctl2, (iy, ix), (1, 1), self.on_smear_helper() self.on_set_focus(None) self.Layout() self.Refresh() # update model plot with new data information text2.Hide() ix += 1 ctl2 = wx.TextCtrl(self, wx.ID_ANY, size=(_BOX_WIDTH / 1.2, 20), style=0) ctl2 = BGTextCtrl(self, wx.ID_ANY, size=(_BOX_WIDTH / 1.2, 20)) sizer.Add(ctl2, (iy, ix), (1, 1), wx.EXPAND | wx.ADJUST_MINSIZE, 0)
• ## src/sas/sasview/__init__.py

 r3ca67dcf __version__ = "4.2.0" __version__ = "4.2.0-beta" __build__ = "GIT_COMMIT"

 rfc51d06 self.assertEqual(self.data.y_unit, 'cm^{-1}') self.assertEqual(self.data.x[0], 0.002618) self.assertEqual(self.data.x[1], 0.007854) self.assertEqual(self.data.x[2], 0.01309) self.assertEqual(self.data.x[0], 0.008082) self.assertEqual(self.data.x[1], 0.0275) self.assertEqual(self.data.x[2], 0.02762) self.assertEqual(self.data.x[126], 0.5828)
• ## src/sas/sascalc/data_util/nxsunit.py

 r574adc7 sld = { '10^-6 Angstrom^-2': 1e-6, 'Angstrom^-2': 1 } Q = { 'invA': 1, 'invAng': 1, 'invAngstroms': 1, '1/A': 1, '1/Angstrom': 1, '1/angstrom': 1, 'A^{-1}': 1, 'cm^{-1}': 1e-8, '10^-3 Angstrom^-1': 1e-3, '1/cm': 1e-8, '1/m': 1e-10, 'nm^-1': 0.1, '1/nm': 0.1, 'n_m^-1': 0.1 } 'nm^{-1}': 1, 'nm^-1': 0.1, '1/nm': 0.1, 'n_m^-1': 0.1 } _caret_optional(sld) # units for that particular dimension. # Note: don't have support for dimensionless units. unknown = {None:1, '???':1, '': 1, 'a.u.': 1} unknown = {None:1, '???':1, '': 1, 'a.u.': 1, 'Counts': 1, 'counts': 1} def __init__(self, name):

 r4a8d55c from .data_info import Data1D, Data2D, DataInfo, plottable_1D, plottable_2D,\ combine_data_info_with_plottable from sas.sascalc.data_util.nxsunit import Converter logger = logging.getLogger(__name__) if len(self.output) > 0: # Sort the data that's been loaded self.sort_one_d_data() self.sort_two_d_data() self.convert_data_units() self.sort_data() else: msg = "Unable to find file at: {}\n".format(filepath) self.output.append(data_obj) def sort_one_d_data(self): def sort_data(self): """ Sort 1D data along the X axis for consistency # Normalize the units for data.x_unit = self.format_unit(data.x_unit) data._xunit = data.x_unit data.y_unit = self.format_unit(data.y_unit) data._yunit = data.y_unit # Sort data by increasing x and remove 1st point ind = np.lexsort((data.y, data.x)) data.ymin = np.min(data.y) data.ymax = np.max(data.y) elif isinstance(data, Data2D): # Normalize the units for data.Q_unit = self.format_unit(data.Q_unit) data.I_unit = self.format_unit(data.I_unit) data._xunit = data.Q_unit data._yunit = data.Q_unit data._zunit = data.I_unit data.data = data.data.astype(np.float64) data.qx_data = data.qx_data.astype(np.float64) data.xmin = np.min(data.qx_data) data.xmax = np.max(data.qx_data) data.qy_data = data.qy_data.astype(np.float64) data.ymin = np.min(data.qy_data) data.ymax = np.max(data.qy_data) data.q_data = np.sqrt(data.qx_data * data.qx_data + data.qy_data * data.qy_data) if data.err_data is not None: data.err_data = data.err_data.astype(np.float64) if data.dqx_data is not None: data.dqx_data = data.dqx_data.astype(np.float64) if data.dqy_data is not None: data.dqy_data = data.dqy_data.astype(np.float64) if data.mask is not None: data.mask = data.mask.astype(dtype=bool) if len(data.data.shape) == 2: n_rows, n_cols = data.data.shape data.y_bins = data.qy_data[0::int(n_cols)] data.x_bins = data.qx_data[:int(n_cols)] data.data = data.data.flatten() data = self._remove_nans_in_data(data) if len(data.data) > 0: data.xmin = np.min(data.qx_data) data.xmax = np.max(data.qx_data) data.ymin = np.min(data.qy_data) data.ymax = np.max(data.qx_data) @staticmethod return data def sort_two_d_data(self): for dataset in self.output: if isinstance(dataset, Data2D): # Normalize the units for dataset.x_unit = self.format_unit(dataset.Q_unit) dataset.y_unit = self.format_unit(dataset.I_unit) dataset.data = dataset.data.astype(np.float64) dataset.qx_data = dataset.qx_data.astype(np.float64) dataset.xmin = np.min(dataset.qx_data) dataset.xmax = np.max(dataset.qx_data) dataset.qy_data = dataset.qy_data.astype(np.float64) dataset.ymin = np.min(dataset.qy_data) dataset.ymax = np.max(dataset.qy_data) dataset.q_data = np.sqrt(dataset.qx_data * dataset.qx_data + dataset.qy_data * dataset.qy_data) if dataset.err_data is not None: dataset.err_data = dataset.err_data.astype(np.float64) if dataset.dqx_data is not None: dataset.dqx_data = dataset.dqx_data.astype(np.float64) if dataset.dqy_data is not None: dataset.dqy_data = dataset.dqy_data.astype(np.float64) if dataset.mask is not None: dataset.mask = dataset.mask.astype(dtype=bool) if len(dataset.data.shape) == 2: n_rows, n_cols = dataset.data.shape dataset.y_bins = dataset.qy_data[0::int(n_cols)] dataset.x_bins = dataset.qx_data[:int(n_cols)] dataset.data = dataset.data.flatten() dataset = self._remove_nans_in_data(dataset) if len(dataset.data) > 0: dataset.xmin = np.min(dataset.qx_data) dataset.xmax = np.max(dataset.qx_data) dataset.ymin = np.min(dataset.qy_data) dataset.ymax = np.max(dataset.qx_data) @staticmethod def set_default_1d_units(data): """ Set the x and y axes to the default 1D units :param data: 1D data set :return: """ data.xaxis("\\rm{Q}", '1/A') data.yaxis("\\rm{Intensity}", "1/cm") return data @staticmethod def set_default_2d_units(data): """ Set the x and y axes to the default 2D units :param data: 2D data set :return: """ data.xaxis("\\rm{Q_{x}}", '1/A') data.yaxis("\\rm{Q_{y}}", '1/A') data.zaxis("\\rm{Intensity}", "1/cm") return data def convert_data_units(self, default_q_unit="1/A", default_i_unit="1/cm"): """ Converts al; data to the sasview default of units of A^{-1} for Q and cm^{-1} for I. :param default_x_unit: The default x unit used by Sasview :param default_y_unit: The default y unit used by Sasview """ new_output = [] for data in self.output: if data.isSesans: new_output.append(data) continue file_x_unit = data._xunit data_conv_x = Converter(file_x_unit) file_y_unit = data._yunit data_conv_y = Converter(file_y_unit) if isinstance(data, Data1D): try: data.x = data_conv_x(data.x, units=default_q_unit) data._xunit = default_q_unit data.x_unit = default_q_unit if data.dx is not None: data.dx = data_conv_x(data.dx, units=default_q_unit) if data.dxl is not None: data.dxl = data_conv_x(data.dxl, units=default_q_unit) if data.dxw is not None: data.dxw = data_conv_x(data.dxw, units=default_q_unit) except KeyError: message = "Unable to convert Q units from {0} to 1/A." message.format(default_q_unit) data.errors.append(message) try: data.y = data_conv_y(data.y, units=default_i_unit) data._yunit = default_i_unit data.y_unit = default_i_unit if data.dy is not None: data.dy = data_conv_y(data.dy, units=default_i_unit) except KeyError: message = "Unable to convert I units from {0} to 1/cm." message.format(default_q_unit) data.errors.append(message) elif isinstance(data, Data2D): try: data.qx_data = data_conv_x(data.qx_data, units=default_q_unit) if data.dqx_data is not None: data.dqx_data = data_conv_x(data.dqx_data, units=default_q_unit) data.qy_data = data_conv_y(data.qy_data, units=default_q_unit) if data.dqy_data is not None: data.dqy_data = data_conv_y(data.dqy_data, units=default_q_unit) except KeyError: message = "Unable to convert Q units from {0} to 1/A." message.format(default_q_unit) data.errors.append(message) try: file_z_unit = data._zunit data_conv_z = Converter(file_z_unit) data.data = data_conv_z(data.data, units=default_i_unit) if data.err_data is not None: data.err_data = data_conv_z(data.err_data, units=default_i_unit) except KeyError: message = "Unable to convert I units from {0} to 1/cm." message.format(default_q_unit) data.errors.append(message) else: # TODO: Throw error of some sort... pass new_output.append(data) self.output = new_output def format_unit(self, unit=None):

 r9e6aeaf self.remove_empty_q_values() self.current_dataset.xaxis("\\rm{Q}", 'A^{-1}') self.current_dataset.yaxis("\\rm{Intensity}", "cm^{-1}") self.current_dataset = self.set_default_1d_units(self.current_dataset) # Store loading process information

 r2469df7 node.append(point) self.write_node(point, "Q", datainfo.x[i], {'unit': datainfo.x_unit}) {'unit': datainfo._xunit}) if len(datainfo.y) >= i: self.write_node(point, "I", datainfo.y[i], {'unit': datainfo.y_unit}) {'unit': datainfo._yunit}) if datainfo.dy is not None and len(datainfo.dy) > i: self.write_node(point, "Idev", datainfo.dy[i], {'unit': datainfo.y_unit}) {'unit': datainfo._yunit}) if datainfo.dx is not None and len(datainfo.dx) > i: self.write_node(point, "Qdev", datainfo.dx[i], {'unit': datainfo.x_unit}) {'unit': datainfo._xunit}) if datainfo.dxw is not None and len(datainfo.dxw) > i: self.write_node(point, "dQw", datainfo.dxw[i], {'unit': datainfo.x_unit}) {'unit': datainfo._xunit}) if datainfo.dxl is not None and len(datainfo.dxl) > i: self.write_node(point, "dQl", datainfo.dxl[i], {'unit': datainfo.x_unit}) {'unit': datainfo._xunit}) if datainfo.isSesans: sesans_attrib = {'x_axis': datainfo._xaxis,

 r2469df7 detector.beam_center.y = center_y * pixel self.current_dataset.xaxis("\\rm{Q_{x}}", 'A^{-1}') self.current_dataset.yaxis("\\rm{Q_{y}}", 'A^{-1}') self.current_dataset.zaxis("\\rm{Intensity}", "cm^{-1}") self.current_dataset = self.set_default_2d_units(self.current_dataset) self.current_dataset.x_bins = x_vals self.current_dataset.y_bins = y_vals

 rc8321cfc # Units of axes self.current_dataset.xaxis(r"\rm{Q_{x}}", 'A^{-1}') self.current_dataset.yaxis(r"\rm{Q_{y}}", 'A^{-1}') self.current_dataset.zaxis(r"\rm{Intensity}", "cm^{-1}") self.current_dataset = self.set_default_2d_units(self.current_dataset) # Store loading process information
• ## src/sas/sascalc/file_converter/nxcansas_writer.py

 r574adc7 names=['beam_size_x', 'beam_size_y'], units=data_info.source.beam_size_unit, write_fn=_write_h5_float) # Collimation metadata detector_entry.attrs['name'] = '' # Process meta data if len(data_info.process) > 0 and not data_info.process[0].is_empty(): i = 1 for process in data_info.process: process_entry = sasentry.create_group( 'sasprocess{0:0=2d}'.format(i)) process_entry.attrs['canSAS_class'] = 'SASprocess' if process.name: name = _h5_string(process.name) process_entry.create_dataset('name', data=name) if process.date: date = _h5_string(process.date) process_entry.create_dataset('date', data=date) if process.description: desc = _h5_string(process.description) process_entry.create_dataset('description', data=desc) j = 1 for term in process.term: if term: h5_term = _h5_string(term) process_entry.create_dataset('term{0:0=2d}'.format(j), data=h5_term) j += 1 j = 1 for note in process.notes: if note: h5_note = _h5_string(note) process_entry.create_dataset('note{0:0=2d}'.format(j), data=h5_note) j += 1 i += 1 # Transmission Spectrum if len(data_info.trans_spectrum) > 0: i = 1 for trans in data_info.trans_spectrum: trans_entry = sasentry.create_group( 'sastransmission_spectrum{0:0=2d}'.format(i)) trans_entry.attrs['canSAS_class'] = 'SAStransmission_spectrum' trans_entry.attrs['signal'] = 'T' trans_entry.attrs['T_axes'] = 'T' trans_entry.attrs['name'] = trans.name if trans.timestamp is not '': trans_entry.attrs['timestamp'] = trans.timestamp transmission = trans_entry.create_dataset( 'T', data=trans.transmission) transmission.attrs['unertainties'] = 'Tdev' trans_entry.create_dataset('Tdev', data = trans.transmission_deviation) trans_entry.create_dataset('lambda', data=trans.wavelength) note_entry = sasentry.create_group('sasnote'.format(i)) note_entry.attrs['canSAS_class'] = 'SASnote' data_entry.attrs['signal'] = 'I' data_entry.attrs['I_axes'] = 'Q' data_entry.attrs['I_uncertainties'] = 'Idev' data_entry.attrs['Q_indicies'] = 0 dI = data_obj.dy if dI is None: dI = np.zeros((data_obj.y.shape)) data_entry.create_dataset('Q', data=data_obj.x) data_entry.create_dataset('I', data=data_obj.y) data_entry.create_dataset('Idev', data=dI) data_entry.attrs['Q_indices'] = [0] q_entry = data_entry.create_dataset('Q', data=data_obj.x) q_entry.attrs['units'] = data_obj.x_unit i_entry = data_entry.create_dataset('I', data=data_obj.y) i_entry.attrs['units'] = data_obj.y_unit if data_obj.dy is not None: i_entry.attrs['uncertainties'] = 'Idev' i_dev_entry = data_entry.create_dataset('Idev', data=data_obj.dy) i_dev_entry.attrs['units'] = data_obj.y_unit if data_obj.dx is not None: q_entry.attrs['resolutions'] = 'dQ' dq_entry = data_entry.create_dataset('dQ', data=data_obj.dx) dq_entry.attrs['units'] = data_obj.x_unit elif data_obj.dxl is not None: q_entry.attrs['resolutions'] = ['dQl','dQw'] dql_entry = data_entry.create_dataset('dQl', data=data_obj.dxl) dql_entry.attrs['units'] = data_obj.x_unit dqw_entry = data_entry.create_dataset('dQw', data=data_obj.dxw) dqw_entry.attrs['units'] = data_obj.x_unit def _write_2d_data(self, data, data_entry): """ data_entry.attrs['signal'] = 'I' data_entry.attrs['I_axes'] = 'Q,Q' data_entry.attrs['I_uncertainties'] = 'Idev' data_entry.attrs['Q_indicies'] = [0,1] data_entry.attrs['I_axes'] = 'Qx,Qy' data_entry.attrs['Q_indices'] = [0,1] (n_rows, n_cols) = (len(data.y_bins), len(data.x_bins)) raise ValueError("Unable to calculate dimensions of 2D data") I = np.reshape(data.data, (n_rows, n_cols)) dI = np.zeros((n_rows, n_cols)) if not all(data.err_data == [None]): dI = np.reshape(data.err_data, (n_rows, n_cols)) qx =  np.reshape(data.qx_data, (n_rows, n_cols)) intensity = np.reshape(data.data, (n_rows, n_cols)) qx = np.reshape(data.qx_data, (n_rows, n_cols)) qy = np.reshape(data.qy_data, (n_rows, n_cols)) I_entry = data_entry.create_dataset('I', data=I) I_entry.attrs['units'] = data.I_unit Qx_entry = data_entry.create_dataset('Qx', data=qx) Qx_entry.attrs['units'] = data.Q_unit Qy_entry = data_entry.create_dataset('Qy', data=qy) Qy_entry.attrs['units'] = data.Q_unit Idev_entry = data_entry.create_dataset('Idev', data=dI) Idev_entry.attrs['units'] = data.I_unit i_entry = data_entry.create_dataset('I', data=intensity) i_entry.attrs['units'] = data.I_unit qx_entry = data_entry.create_dataset('Qx', data=qx) qx_entry.attrs['units'] = data.Q_unit qy_entry = data_entry.create_dataset('Qy', data=qy) qy_entry.attrs['units'] = data.Q_unit if data.err_data is not None and not all(data.err_data == [None]): d_i = np.reshape(data.err_data, (n_rows, n_cols)) i_entry.attrs['uncertainties'] = 'Idev' i_dev_entry = data_entry.create_dataset('Idev', data=d_i) i_dev_entry.attrs['units'] = data.I_unit if data.dqx_data is not None and not all(data.dqx_data == [None]): qx_entry.attrs['resolutions'] = 'dQx' dqx_entry = data_entry.create_dataset('dQx', data=data.dqx_data) dqx_entry.attrs['units'] = data.Q_unit if data.dqy_data is not None and not all(data.dqy_data == [None]): qy_entry.attrs['resolutions'] = 'dQy' dqy_entry = data_entry.create_dataset('dQy', data=data.dqy_data) dqy_entry.attrs['units'] = data.Q_unit
• ## src/sas/sasgui/guiframe/gui_manager.py

 r8c9ffde 0.00019987186878 -0.01196215 0.148605728355 0.000453772721237 0.02091606 0.0680283029334 0.000750492390439 -0.01337855 0.0444902910757 0.00103996394336 0.03062 0.0580312894528 0.0013420198959 0.0811008333333 0.0540469289108 0.001652061869 0.167022288372 0.0651891320031 0.00196086470492 27.5554711176 0.735053300957 0.000453772721237 0.02091606 0.23372601 0.000750492390439 -0.01337855 0.17169562 0.00103996394336 0.03062 0.13136407 0.0013420198959 0.0811008333333 0.10681163 0.001652061869 0.167022288372 0.10098903 0.00196086470492 27.5554711176 0.7350533 0.00226262401224 105.031578947 1.35744586624 0.00256734439716 82.1791776119 1.10749938588

 r400155b 0.628318530718 0.964040908176 0.0790933208542 0.942477796077 0.922142905769 0.0781616076625 1.25663706144 1.02710537736 0.080875897538 1.25663706144 1.02710537736 0.08136351514804 1.57079632679 1.01448978075 0.0808313893873 1.88495559215 1.04677136013 0.0828850195035

 r8c9ffde 0.981747704247 0.893411561538 0.151685984204 1.06028752059 0.86231787 0.152618707077 1.13882733693 1.0607364925 0.164276150316 1.13882733693 1.0607364925 0.166167546658 1.21736715327 1.0684421475 0.163649496829 1.29590696961 1.09330437436 0.167871645263 1.29590696961 1.09330437436 0.16981858402 1.37444678595 0.88759347 0.150974201439 1.45298660229 1.1352002 0.172191803977

 r8c9ffde 0.00913119845523 0.405669568421 0.0705339106673 0.00938052380065 0.331241946 0.061307573431 0.00962825731078 0.237315993939 0.0578654769893 0.00962825731078 0.237315993939 0.059602636160850493 0.00987552050718 0.296916590385 0.0592796733987

 r8c9ffde -0.00184475260646 2.40154 1.09579651396 -0.00143541414791 0.065281 0.198049867458 -0.00102607559383 -0.04767235 0.154389685536 -0.000616736954402 -0.0090503 0.0960105462957 -0.00102607559383 -0.04767235 0.52329358394690839 -0.000616736954402 -0.0090503 0.36635778277525377 -0.000207398273925 0.03109325 0.246629023029 0.000201940423805 -0.027508775 0.082928847514 0.000201940423805 -0.027508775 0.36314899662535211 0.000611279108096 0.03251315 0.246951260373 0.00102061774154 -0.00987975 0.144233534589 0.00142995630705 0.075937 0.19485507435 0.00102061774154 -0.00987975 0.38184199939241886 0.00142995630705 0.075937 0.53662696540520582 0.00183929475361 10.60918375 1.62858709853 0.00224863307777 106.2485 7.2886384188