Changeset 18faec7 in sasview


Ignore:
Timestamp:
Aug 14, 2018 8:26:33 AM (5 weeks ago)
Author:
wojciech
Branches:
win64bit_conda_vm
Parents:
b800454 (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' of https://github.com/SasView/sasview into win64bit_conda_vm

Files:
8 added
26 edited

Legend:

Unmodified
Added
Removed
  • build_tools/requirements.txt

    r36ca21e rc16172d  
    33pylint 
    44unittest-xml-reporting==1.10.0 
    5 pyparsing==1.5.5 
     5pyparsing>=2.0 
    66html5lib==0.95 
    77reportlab==2.5 
  • docs/sphinx-docs/source/conf.py

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

    r3bd677b rc1790a5  
    1919   Writing a Plugin Model <sasgui/perspectives/fitting/plugin> 
    2020 
     21   Environment Variables <environment> 
     22 
    2123   Model marketplace <marketplace> 
  • installers/README-next-release.txt

    r2f6d340 rfde3042  
    1    - New in Version 3.?.? 
     1Release Notes 
     2============= 
     3     
     41- Features 
     5=========== 
     6    - New in Version 4.2.0 
     7      -------------------- 
     8      This point release heralds many improvements and a host of bug fixes. But there are also some significant changes from previous versions. 
     9       
     10      - Changes 
     11         - The infrastucture for calculating 2D patterns from 3D orientated objects has been totally re-factored. It is now more accurate and consistent across models. 
     12         - The way that SasView defines the orientation of anisometric and aligned objects has been completely overhauled. It now differs from previous versions. 
     13         - 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??? 
     14         - The NeXus loader has been removed (as it is superseded by the NXcanSAS loader). 
     15      - Improvements 
     16         - The accuracy/speed of some numerical integrations have been improved. ???CHECK WITH PAULK??? 
     17         - An orientation viewer tool has been introduced (to assist in understanding the new orientation framework). 
     18         - Problems with the computation of magnetic scattering from some objects have been rectified. 
     19         - The known issue with the core_shell_parallelepiped model is now fixed. 
     20         - A number of issues and inconsistencies with the creation of sum|product models have been rectified (and more work is in progress). 
     21         - A Boltzmann distribution has been added for polydispersity/orientational distributions. 
     22         - Some batch slicing options have been introduced. 
     23         - Correlation function analysis now computes both the 1D and 3D functions. 
     24         - There are several data loading improvements. 
     25         - There are several improvements to Save/Load Project (with more to come). 
     26         - There have been numerous other bug fixes. 
     27      - Documentation 
     28         Several sections of the help documentation have undergone significant checking and updating, particularly those relating to orientation, magnetic scattering, and polydispersity distributions. 
     29      - Other work 
     30         - 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 
     31         - With this release we have started to prepare for the inevitable move to Python 3. 
     32         - 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. 
     33      - Bug Fixes 
     34         Fixes #  14: Loading a saved project is really really slow   
     35         Fixes # 260: Box integration does not update when entering values in dialog   
     36         Fixes # 379: Need to make the BUMPS output page more more obvious   
     37         Fixes # 446: Saving plot as PGF (not PDF!) format throws error   
     38         Fixes # 467: Extend batch functionality to slicer   
     39         Fixes # 489: ABS reader (NIST 1D) does not handle negative dx properly (USANS slit smearing)   
     40         Fixes # 499: create sin(x)/x, 2*J1(x)/x and 3*j1(x)/x functions   
     41         Fixes # 510: Build PDF documentation along with HTML   
     42         Fixes # 525: Add GUI category defaults to models in sasmodels   
     43         Fixes # 579: clean up sasview directory   
     44         Fixes # 597: Need to document Combine Batch Fit   
     45         Fixes # 645: GUI logic problem in Batch vs single fit mode   
     46         Fixes # 648: Need to allow user input background value in Pr perspective   
     47         Fixes # 685: Fix data upload to marketplace   
     48         Fixes # 695: linear slope in onion model   
     49         Fixes # 735: Review new Corfunc documentation   
     50         Fixes # 741: Recalculate P(Q) and S(Q) components on model update.   
     51         Fixes # 767: Sum/Product Models don't do what they should   
     52         Fixes # 776: angular dispersity   
     53         Fixes # 784: Add 3D integral to Correlation Function analysis   
     54         Fixes # 786: core_shell_parallelepiped 1-D model is incorrect   
     55         Fixes # 818: “report button” followed by “save” makes an empty pdf file???   
     56         Fixes # 830: Check compliance of loader against NXcanSAS-1.0 release   
     57         Fixes # 838: Fix model download from marketplace   
     58         Fixes # 848: can't save analysis when only one fit page   
     59         Fixes # 849: Load Folder should ignore files starting with .   
     60         Fixes # 852: More unit tests, especially for oriented or 2d models   
     61         Fixes # 854: remove unnecessary sleep() in fitting perspective   
     62         Fixes # 856: Reading SAS_OPENCL from custom_config sometimes raises an ERROR   
     63         Fixes # 861: cannot defined a structure factor plugin   
     64         Fixes # 864: New Model Editor (simple plugin editor) error parsing parameter line   
     65         Fixes # 865: Plugin live discovery issues   
     66         Fixes # 866: inform user when NaN is returned from compute   
     67         Fixes # 869: fit page computation thread cleanup   
     68         Fixes # 875: Possible weirdness with 1D NXcanSAS data   
     69         Fixes # 876: Add check for HDF5 format in dataloader   
     70         Fixes # 887: reorganize tree, separating the installed source from the build source   
     71         Fixes # 889: Refactor dataloader error handling infrastructure   
     72         Fixes # 890: use new orientation definition for asymmetric shapes   
     73         Fixes # 891: update docs for oriented shapes with new orientation definition   
     74         Fixes # 896: equations in core shell parallelepiped docs do not match code   
     75         Fixes # 898: Image Viewer Tool file selector issue   
     76         Fixes # 899: Igor Reader q calculation   
     77         Fixes # 902: IgorReader Q calculation needs fixing/improving   
     78         Fixes # 903: sasview - all non-gui tests should be converted to run in Python 3   
     79         Fixes # 906: polydispersity not showing up in tabulated results   
     80         Fixes # 912: About box points to misleading contributors page on Github   
     81         Fixes # 913: Need to add Diamond developer and logo in relevant places   
     82         Fixes # 915: load project issues   
     83         Fixes # 916: Proper Logging   
     84         Fixes # 920: Logarithmic binning option in the slice viewer   
     85         Fixes # 921: Improve developer communication methods   
     86         Fixes # 922: Remove support for all data formats that are not in q space   
     87         Fixes # 923: Add CI and trac integrations to Slack   
     88         Fixes # 930: fitting help says chisq is normalized to number of points   
     89         Fixes # 931: Allow admins to edit all models and upload data etc on marketplace   
     90         Fixes # 932: Need to fix upload of data files to marketplace   
     91         Fixes # 934: Slurp tutorial repo for tutorials   
     92         Fixes # 935: Build new tutorials as PDF   
     93         Fixes # 943: Deep copy error on setting model after data is selected   
     94         Fixes # 950: Most of the readers don't close files properly.   
     95         Fixes # 954: cross check dll/opencl/python polydispersity and orientation results   
     96         Fixes # 956: Possible problem with new doc build process   
     97         Fixes # 961: sasmodels tests should fail if the parameter name does not exist   
     98         Fixes # 962: star polymer typo in docs   
     99         Fixes # 966: Inconsistent chi2 reporting   
     100         Fixes # 967: no uncertainties errors on fitting parameters   
     101         Fixes # 969: About Box not picking up dls_logo.png   
     102         Fixes # 970: ASCII loader doesn't handle ISIS 2D ASCII   
     103         Fixes # 974: blacklist Intel HD 620/630 for double precision   
     104         Fixes # 978: load project fails for pages which have not been defined   
     105         Fixes # 980: Inconsistent results between Igor & SasView using Fractal Core-Shell model   
     106         Fixes # 983: Remove Nexus Loader   
     107         Fixes # 984: PDF reports are not being properly generated on Windows   
     108         Fixes # 985: Saving Project Fails   
     109         Fixes # 986: Send to fitting overwrites theory page even if blank FitPage has focus   
     110         Fixes # 990: utest_sasview.py giving different results than run_one.py   
     111         Fixes # 993: Windows x64 versions not installing to correct folder   
     112         Fixes # 994: Error changing fit engine   
     113         Fixes # 995: OpenCL required on Linux even if turned off in GUI   
     114         Fixes #1006: multiplicity models don't work with SQ   
     115         Fixes #1007: spherical_sld model freezes SasView   
     116         Fixes #1008: plugin model scaling not working? S  
     117         Fixes #1010: Win64 build script not creating working executable   
     118         Fixes #1011: sld_test failing on ubuntu   
     119         Fixes #1012: ESS GUI not updating after fitting   
     120         Fixes #1013: FileReaderBaseClass output[] not reset - same file loaded multiple times   
     121         Fixes #1018: add Boltzmann distribution   
     122         Fixes #1021: add PDF documentation to website and document in wiki release process   
     123         Fixes #1024: Update version numbers in master   
     124         Fixes #1025: Sum/multiply editor hangs   
     125         Fixes #1032: convert C++ modules to C   
     126         Fixes #1035: Order of combining P(Q) and S(Q) in Plugins seems to matter   
     127         Fixes #1037: data loader crop not working? & all fits crashing   
     128         Fixes #1043: problem compiling marketplace models   
     129         Fixes #1050: fix appveyor test for sasmodels win 64 python 3   
     130         Fixes #1052: Can't use a user-created plugin model in a plugin model   
     131         Fixes #1054: Check plugin & orientation descriptions in full docs once SasModels PR #57 is merged   
     132         Fixes #1057: phi rotation issue for elliptical cylinder   
     133         Fixes #1060: incorrect default for rectangle dispersion   
     134         Fixes #1062: win32 build not installing correctly   
     135         Fixes #1064: Fitting did not converge!!! error with a Sum|Multi plugin model   
     136         Fixes #1068: 2d data (from NG7) not loadiing - strange format?   
     137         Fixes #1069: GUI problem when using polydispersity/orientation distributions   
     138         Fixes #1070: Parameter error boxes should not be editable   
     139         Fixes #1072: Orientation distributions seem to depend on initial angle   
     140         Fixes #1079: Remove save button in report dialog on Mac   
     141         Fixes #1081: GUI problem with new orientation distribution   
     142         Fixes #1083: Magnetic models not being computed   
     143         Fixes #1099: Erratic behaviour of Sum|Multi model in 4.1.2   
     144         Fixes #1101: Batch results page not displaying polydispersity values   
     145         Fixes #1103: Problem with plugin models on mac when using ER   
     146         Fixes #1134: sum/multi scale factor in 4.2 seems incorrect?   
     147         Fixes #1139: Missing Docs and Help for new Batch Slicing   
     148         Fixes #1145: Update models in model marketplace to 4.2 when 4.2 is released.   
     149         Fixes #1146: Need to add Release notes for 4.2  
     150      - Current Known Issues 
     151         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 
     152      - Blocker 
     153         Ticket #1131: OpencCl dialog does not open                                              assigned wojciech defect blocker 
     154         Ticket #1132: Slit Size Calculator Tool not working                                     assigned krzywon defect blocker 
     155         Ticket #1133: Reference in Acknowledging SasView box will need updating for release     assigned ajj task blocker 
     156         Ticket #1142: Plugin framework is broken                                                reopened pkienzle defect blocker 
     157      - Critical 
     158         Ticket #1148: Documentation for S(Q) models need updating SasView 4.2.0                 assigned butler defect critical 
     159      - Other Significant 
     160         Ticket #1046: convert non builtin models in the marketplace to new API                  assigned butler task major 
     161         Ticket #1128: AutoPlot generation for model documentation does not include background   assigned pkienzle defect major 
     162         Ticket #1140: Batch Slicer requires plotting of all 2D data sets to use in batch        assigned krzywon enhancement major 
     163         Ticket #1141: Intro to scripting.rst needs improvement                                  new pkienzle enhancement major 
     164         Ticket #1143: Validate new orientation distribution                                     assigned butler task major 
     165         Ticket #1144: Redundant MultiplicationModel class                                       new pkienzle defect major 
     166      - Model Issues 
     167         Corrections will be posted to Marketplace as available (and fixed in following release) 
     168         Ticket #1044: Unable to upload c file to marketplace                                    assigned tim defect major 
     169 
     170      It is recommended that all users upgrade to this version, but your attention is drawn to the Changes section above. 
     171 
     172 
     173    - New in Version 4.1.2 
     174      -------------------- 
     175      This point release is a bug-fix release addressing: 
     176 
     177       - Fixes #984: PDF Reports Generate Empty PDFs 
     178       - Fixes a path typo 
     179       - 64 bit and 32 bit Windows executables now available 
     180 
     181      It is recommended that all users upgrade to this version 
     182 
     183 
     184    - New in Version 4.1.1 
     185      -------------------- 
     186      This point release is a bug-fix release addressing: 
     187 
     188       - Fixes #948: Mathjax CDN is going away 
     189       - Fixes #938: Cannot read canSAS1D file output by SasView 
     190       - Fixes #960: Save project throws error if empty fit page 
     191       - Fixes #929: Problem deleting data in first fit page 
     192       - Fixes #918: Test folders not bundled with release 
     193       - Fixes an issue with the live discovery of plugin models 
     194       - Fixes an issue with the NXcanSAS data loader 
     195       - Updated tutorials for SasView 4.x.y 
     196 
     197 
     198    - New in Version 4.1.0 
     199      ------------------ 
     200      This incremental release brings a series of new features and improvements, 
     201      and a host of bug fixes. Of particular note are: 
     202       
     203      - Correlation Function Analysis (Corfunc) 
     204        This performs a correlation function analysis of one-dimensional SAXS/SANS data,  
     205            or generates a model-independent volume fraction profile from the SANS from an  
     206            adsorbed polymer/surfactant layer. 
     207 
     208            A correlation function may be interpreted in terms of an imaginary rod moving  
     209            through the structure of the material. Γ1D(R) is the probability that a rod of  
     210            length R moving through the material has equal electron/neutron scattering  
     211            length density at either end. Hence a frequently occurring spacing within a  
     212            structure manifests itself as a peak. 
     213 
     214            A volume fraction profile \Phi(z) describes how the density of polymer  
     215            segments/surfactant molecules varies with distance from an (assumed locally flat) 
     216            interface. 
     217 
     218      - Fitting of SESANS Data 
     219        Data from Spin-Echo SANS measurements can now be loaded and fitted. The data will  
     220            be plotted against the correct axes and models will automatically perform a Hankel  
     221            transform in order to calculate SESANS from a SANS model. 
     222 
     223      - Documentation 
     224        The documentation has undergone significant checking and updating. 
     225 
     226      - Improvements 
     227        - Correlation function (corfunc) analysis of 1D SAS data added from CCP13 
     228        - File converter tool for multi-file single column data sets 
     229        - SESANS data loading and direct fitting using the Hankel transformation 
     230        - Saving and loading of simultaneous and constrained fits now supported 
     231        - Save states from SasView v3.x.y now loaded using sasmodel model names 
     232        - Saving and loading of projects with 2D fits now supported 
     233        - Loading a project removes all existing data, fits, and plots 
     234        - Structure factor and form factor can be plotted independently 
     235        - OpenCL is disabled by default and can be enabled through a fit menu 
     236        - Data and theory fields are now independently expandable 
     237      - Bug Fixes 
     238        - Fixes #667: Models computed multiple times on parameters changes 
     239        - Fixes #673: Custom models override built in models of same name 
     240        - Fixes #678: Hard crash when running complex models on GPU 
     241        - Fixes $774: Old style plugin models unloadable 
     242        - Fixes #789: stacked disk scale doesn't match cylinder model 
     243        - Fixes #792: core_shell_fractal uses wrong effective radius 
     244        - Fixes #800: Plot range reset on plot redraws 
     245        - Fixes #811 and #825: 2D smearing broken 
     246        - Fixes #815: Integer model parameter handling 
     247        - Fixes #824: Cannot apply sector averaging when no detector data present 
     248        - Fixes #830: Cansas HDF5 reader fully compliant with NXCanSAS v1.0 format 
     249        - Fixes #835: Fractal model breaks with negative Q values 
     250        - Fixes #843: Multilayer vesicle does not define effective radius 
     251        - Fixes #858: Hayter MSA S(Q) returns errors 
     252        - Numerous grammatical and contexual errors in documention 
     253 
     254 
     255    - New in Version 4.0.1 
     256      ------------------ 
     257      This release fixes the critical bug #750 in P(Q)*S(Q).  Most damaging 
     258      it appears that the background term was being added to S(Q) prior to 
     259      multiplication by P(Q). 
     260 
     261 
     262    - New in Version 4.0 
     263      ------------------ 
     264      This release fixes the various bugs found during the alpha and beta testing 
     265      - Improvements 
     266        - Support for reading data files from Anton Paar Saxess instruments 
     267        - Adds documentation on how to write custom models in the new framework 
     268      - Bug Fixes 
     269        - Fixes bug #604 Pringle model questions 
     270        - Fixes bug #472 Reparameterize Teubner-Strey 
     271        - Fixes bug #530 Numerical instabilities in Teubner Strey model 
     272        - Fixes bug #658 ASCII reader very broken 
     273 
     274 
     275    - New in Version 4.0 beta 1 
     276      -------------------- 
     277      This beta adds support for the magnetic and multilevel models of 3.1.2 
     278      and along with a host of bug fixes found in the alpha. 
     279 
     280      - Model package changes and improvements 
     281         - All 3.1.2 models now available in new interface 
     282         - Old custom models should now still work 
     283            - '''NOTE:''' These will be deprecated in a future version. Old 
     284            custom models should be converted to the new model format which 
     285            is now the same as the built in models and offers much better 
     286            support. 
     287         - Custom model editor now creates new style models 
     288         - Custom model editor supports better error checking 
     289      - Documentation improvements 
     290        - Continued general cleanup 
     291      - Other improvements/additions 
     292         - Support for new canSAS 2D data files added 
     293         - Plot axes range can now be set manually as well as by zooming 
     294         - Plot annotations can now be moved around after being placed on plot. 
     295         - The active optimizer is now listed on the top of the fit panel. 
     296         - Linear fits now update qmin and max when the x scale limits are 
     297         changed.  Also the plot range no longer resets after a fit. 
     298      - Bug fixes 
     299         - Fixes bug #511 Errors in linearized fits and clean up of interface 
     300         including Kratky representation 
     301         - Fixes bug #186 Data operation Tool now executes when something is 
     302         entered in the text box and does not wait for the user to hit enter 
     303         - Fixes bug #459 plot context menu bug 
     304         - Fixes bug #559 copy to clipboard in graph menu broken 
     305         - Fixes bug #466 cannot remove a linear fit from graph 
     306         - Numerous bugs introduced in the alpha 
     307 
     308 
     309    - New in Version 4.0.0-alpha 
     310      -------------------- 
     311      This alpha release brings a major overhaul of the model system. The new model 
     312      package allows rapid integration of custom models and access to polydispersity 
     313      without requiring a compiler. 
     314 
     315      - Model package changes and improvements 
     316         - Model interface moved to independent sasmodels package. 
     317         - Most models converted to new interface. 
     318         - Allows rapid integration of user-written models. 
     319         - OpenCL GPU utilization for faster fitting. 
     320         - Improved numerical integration of Bessel functions. 
     321      - SESANS integration and implementation 
     322         - Scripting interface added for analysis of SESANS data. 
     323         - Hankel transformation now accepts finite acceptance angles. 
     324         - 2D cosine transformation added for TOF SESANS analysis. 
     325      - Documentation improvements 
     326         - The documentation tree was restructured for a better end user experience. 
     327         - The documentation for each model was revamped and verified by at least 
     328           two people following the conversion of the model. 
     329         - Theoretical 1D (and 2D if applicable) scattering curves are auto-generated 
     330           and added to the model documentation for each model. 
     331      - Separation of GUI and calculations for future GUI enhancements 
     332      - Bug fixes 
     333         - Fixes bug #411 No stop button on simultaneous fit page 
     334         - Fixes bug #410 Error with raspberry model 
     335         - Fixes bug #364 Possible inconsistency in Poly_GausCoil model 
     336         - Fixes bug #439 Hayter Penfold MSA code needs checking 
     337         - Fixes bug #484 lammellerPC is precision limited 
     338         - Fixes bug #498 $HOME/.matplotlib conflicts 
     339         - Fixes bug #348 Control order in which fit parameters appear in the gui 
     340         - Fixes bug #456 Provide DREAM Results Panel with something to identify 
     341           data and age of results 
     342         - Fixes bug #556 Build script improvements for developers 
     343 
     344 
     345   - New in Version 3.1.2 
    2346     -------------------- 
    3  
     347     This release is a major stability improvement, having fixed a serious bug 
     348     that came to light since release 3.1.1. All users should upgrade. 
     349 
     350     - Fixes bug #468 broken remove constraint buttons in 
     351       simultaneous/constrained fitting panel 
     352     - Fixes bug #474 resulting from changes in 3.1.1 that had 
     353       introduced an error in the high-Q of slit-smeared models. 
     354     - Fixes bug #478 which would cause wx to run out of IDs and result 
     355       in SasView crashing even if left alone. 
     356     - Fixes bug #479 missing help button on simultaneous/constrained fit page 
     357     - Fixes bug #480 GUI resizing issues on simultaneous fit page 
     358     - Fixes bug #486 broken Report Results 
     359     - Fixes bug #488 redraw issues in fit page 
     360 
     361 
     362   - New in Version 3.1.1 
     363     -------------------- 
     364     - Fixes bug #457 that prevented SasView from starting if the user was not 
     365       connected to the internet, or was behind a proxy server. 
     366 
     367 
     368   - New in Version 3.1.0 
     369     -------------------- 
     370     - The documentation/help has had a complete overhaul including: 
     371       - A completely new presentation interface (Sphinx). 
     372       - Proof reading! 
     373       - Updating for latest features. 
     374       - A Help (or sometimes ?) button has been added to every panel, and some 
     375         sub panels if appropriate, linking to the appropriate section in the 
     376         documentation. 
     377       - The model help has been split so that the Details button now brings up 
     378         a very short pop-up giving the equation being used while HELP goes to 
     379         the section in the full documentation describing the model. 
     380       - Extensive help has also been added for the new optimizer engine (see 
     381         below) including rules of thumb on how and when to choose a given 
     382         optimizer and what the parameters do. 
     383     - The optimizer engine has been completely replaced. The new optimizer 
     384       still defaults to the standard Levenberg-Marquardt algorithm. However 4 
     385       other optimizers are now also available. Each starts with a set of default 
     386       parameters which can be tuned. The DREAM optimizer takes the longest but 
     387       is the most powerful and yields rich information including full parameter 
     388       correlation and uncertainty plots. A results panel has been added to 
     389       accommodate this. 
     390       - The five new optimizers are: 
     391         - A Levenberg-Marquardt optimizer 
     392         - A Quasi-Newton BFGS optimizer 
     393         - A Nelder-Mead Simplex optimizer 
     394         - A Differential Evolution optimizer 
     395         - A Monte Carlo optimizer (DREAM) 
    4396     - New models were added: 
    5        - LamellarPolLz 
    6  
     397         - MicelleSphCoreModel (currently residing in the Uncategorized category) 
    7398     - Existing models were updated: 
    8        - LamellarPS and LamellarPSHG have been changed to LamellarCaille and  
    9          LamellarCailleHG 
    10         
     399         - LamellarPS (bug in polydispersity integration fixed) 
     400         - RectangularPrismModel 
     401         - RectangularHollowPrismModel 
     402         - RectangularHollowPrismInfThinWallsModel 
     403     - Infrastructure to allow SESANS data to be fit with models was added. This 
     404       will become available in a future release but can currently be used from 
     405       the command line with some caveats. 
     406     - A number of bugs were fixed including a thread crashing issue and an 
     407       incorrect slit smearing resolution calculation. 
     408     - Implemented much more robust error logging to enable much easier 
     409       debugging in general but particularly the debugging of issues reported by 
     410       SasView users. 
     411     - A number of infrastructure tasks under the hood to enhance maintainability 
     412     - Upgrade from Wx 2.8 to Wx 3.0.2 which allows several new features but 
     413       required significant additional rework as well. 
     414     - Fully implemented Sphinx to the build process to produce both better 
     415       user documentation and developer documentation. 
     416     - Restructuring of the code base to more unified nomenclature and structure 
     417       so that the source installation tree more closely matches the installer 
     418       version tree. 
     419     - Code cleanup (an ongoing task) . 
     420     - Migration of the repository to github simplifying contributions from 
     421       non-project personnel through pull requests. 
     422 
     423 
     424   - New in Version 3.0.0 
     425     -------------------- 
     426     - The GUI look and feel has been refactored to be more familiar for 
     427       Windows users by using MDI frames. Graph windows are also now free- 
     428       floating. 
     429     - Five new models have been added: PringlesModel, CoreShellEllipsoidXTModel, 
     430       RectangularPrismModel, RectangularHollowPrismModel and 
     431       RectangularHollowPrismInfThinWallsModel. 
     432     - The data loader now supports ILL DAT data files and reads the full meta 
     433       information from canSAS file formats. 
     434     - Redefined convention for specifying angular parameters for anisotropic 
     435       models. 
     436     - A number of minor features have been added such as permitting a log 
     437       distribution of points when using a model to simulate data, and the 
     438       addition of a Kratky plot option to the linear plots. 
     439     - A number of bugs have also been fixed. 
     440     - Save Project and Save Analysis now work more reliably. 
     441     - BETA: Magnetic contrast supporting full polarization analysis has been 
     442       implemented for some spherical and cylindrical models. 
     443     - BETA: Two new tools have been added: 
     444       - A generic scattering calculator which takes an atomic, magnetic or 
     445         SLD distribution in space and generates the appropriate 2D 
     446         scattering pattern. In some cases the orientationally averaged 
     447         (powder) 1D scattering can also be computed. Supported formats 
     448         include: SLD or text, PDB, and OMF magnetic moment distribution 
     449         file. 
     450       - An image viewer/converter for data in image format; this reads in 
     451         an image file and will attempt to convert the image pixels to 
     452         data. Supported formats include: TIFF, TIF, PNG, BMP, JPG. 
     453 
     454 
     455   - New in Version 2.2.1 
     456     -------------------- 
     457     - Minor patch to support CanSAS XML v1.1 file format 
     458     - Added DataInfo for data in the DataExplorer and plots 
     459     - Added Maximize/Restore button in the title bar of the graphs 
     460     - Added a hide button in the toolbar of the graph panel 
     461     - The 'x' button now deletes a graph 
     462     - Edit SUM Model from the menubar can now generate and save more than one sum model 
     463     - Reports can now be saved in pdf format on WIN and MAC 
     464     - Made significant improvements to the batch/grid panel and fixed several bugs 
     465     - Fixed a number of other minor bugs 
     466 
     467 
     468   - New in Version 2.2.0 
     469     -------------------- 
     470     - Application name changed to SasView 
     471     - New fully customizable Category Manager added for better management of 
     472       increasing number of models 
     473     - Improved the Grid Window functionality in the batch fitting mode 
     474     - Added a simpler Graph/Plot modification interface 
     475     - Added a new 'Data Operation' tool for addition, subtraction, multiplication, 
     476       division, of two data sets. 
     477     - The 'Sum Model' editor was extended and renamed 'Summation and Multiplication' 
     478       editor 
     479     - Added more plot symbols options for 1d plots 
     480     - Added improved trapping of compiling errors to the 'New model editor' 
     481     - Added some intelligent outputs (e.g., Rg, background, or rod diameter 
     482       depending on the choice of axis scale of the plot) to the linear fits 
     483     - Added more models 
     484 
     485   - Feature set from previous versions 
     486     ----------------------------------- 
     487     - Perspectives Available 
     488       - Invariant calculator: Calculates the invariant, volume fraction, and 
     489         specific surface area. 
     490       - P(r) inversion calculator: Indirect Fourier transformation method. 
     491       - Fitting: the tool used for modeling and fitting 1D and 2D data to 
     492         analytical model functions 
     493       - Tools: provides a number of useful supplementary tools such as SLD 
     494         calculation 
     495 
     496     - Fitting 
     497       - Includes a large number of model functions, both form factors and structure factors. 
     498       - Support P(Q)*S(Q) for form factors that flag they can be so multiplied. 
     499       - Supports Gaussian, lognormal, Shulz, rectangular and custom distribution 
     500         functions for models that need to include polydispersity or for orientational 
     501         distributions if appropriate. 
     502       - Anisotropic shapes and magnetic moment modeling in 2D allow for a non-uniform 
     503         distribution of orientations of a given axis leading to modeling and fitting 
     504         capabilities of non azimuthaly symmetric data. 
     505       - User can choose to weight fits or not. If using weights, the user can choose 
     506         the error bar on each point if provided in the file, the square root 
     507         of the intensity or the intensity itself. 
     508       - Instrumental resolution smearing of model or fits is provided with several 
     509         options: read the resolution/point fromt he file. Input a pinhole resolution 
     510         or a slit resolution. 
     511       - Users can define the Qrange (Qmin and Qmax) for both 1D and 2D data for 
     512         fitting and modeling, but not graphically.  The range can be reset to the 
     513         defaults (limits of q in data set for a fit) with the reset button. 
     514       - A mask can be applied to 2D calculation and fitting. 
     515       - Normalized residual plots are provided with every fit. 
     516       - Model function help available through detail button or from the fitting panel. 
     517       - Simultaneous/(advanced)constrained fitting allows for fitting a single 
     518         data set or several different sets simultaneously with the application 
     519         of advanced constraints relating fit parameters to functions of other 
     520         parameters (including from a different set). For example thickness of 
     521         shell = sin(30) times the length. 
     522       - Models that are the sum of two other models can be easily generated through the 
     523         SUM Model menubar item. 
     524       - New Python models can be added on the fly by creating an appropriate Python 
     525         file in the model plugin directory. Two tools are provided to help: 
     526         An easy to use custom model editor allows the quick generation of new Python 
     527         models by supplying only the parameters and their default value (box 1) 
     528         and the mathematical function of the model (box 2) and generating the 
     529         necessary *.py file.  A separate advanced model editor provides a full Python 
     530         file editor.  Either way once saved the model becomes immediately available 
     531         to the application. 
     532       - A batch fitting capability allows for the analysis of a series of data sets to 
     533         a single model and provides the results in a tabular form suitable for saving 
     534         or plotting the evolution of the fit parameters with error bars (from within 
     535         the application). 
     536 
     537     - Tools 
     538       - A scattering length density calculator,including some X-ray information 
     539         is provided. 
     540       - A density to vol. fraction converter is provided 
     541       - In application access to a Python shell/editor (PyCrust) is provided 
     542       - An instrument resolution calculator, including possible gravitational and 
     543         TOF effects is provided 
     544       - A slit size calculator optimized for Anton Paar Saxess is provided. 
     545       - A kiessig fringe thickness calculator is provided 
     546 
     547     - Plots and plot management 
     548       - A 3D graphing option (for 2d data/results) is provided with the view 
     549         controlled by the mouse 
     550       - 2D plots are shown with an intensity color bar. 2D Color map can be user 
     551         adjusted. 
     552       - Supports output of plot to a variety of graphic formats. Supported formats 
     553         include: png, eps, emf, jpg/jpeg, pdf, ps, tif/tiff, rawRGBbitmap(raw, rgba), 
     554         and scalable vector graphic (svg/svgz) 
     555       - Supports ouput of data in plot (1 or 2D) to limited data formats 
     556       - Multiple data sets can be loaded into a single graph for viewing (but a fit 
     557         plot can currently only have a single plot). 
     558       - Extensive context sensitive plot/fitting/manipulation options are available 
     559         through a right mouse click pop-up menu on plots. 
     560 
     561     - Data management 
     562       - Supports 2 + column 1D ASCII data, NIST 1D and 2D data, and canSAS data 
     563         via plug-in mechanism which can easily allow other readers as appropriate. 
     564       - 2D data is expected in Q space but for historical reasons accepts the 
     565         NIST 2D raw pixel format and will do conversion internally. 
     566       - The full data and metadata available to SasView is viewable in ASCII via 
     567         right clicking on a data set and choosing Data Info in the DataExplorer 
     568         or on the plots 
     569       - Supports loading a single file, multiple files, or a whole folder 
     570       - An optional Data Explorer is provided (default) which simplifies managing, 
     571         plotting, deleting, or setup for computation. Most functions however do 
     572         not require access to the explorer/manager and can be accessed through 
     573         right click menus and the toolbar.  The data explorer can be re-started 
     574         from the menu bar. 
     575 
     576     - Data manipulation 
     577       - Support various 2D averaging methods : Circular, sectors, annular, 
     578         boxsum, boxQx and boxQy. 
     579       - A 2D data maks editor is provided 
     580       - 2D mask can be applied to the circular averaging. 
     581 
     582     - Miscellaneous features 
     583       - limited reports can be generated in pdf format 
     584       - Provides multiprocessor support(Windows only) 
     585       - Limited startup customization currently includes default startup 
     586         data folder and choice of default starting with data manager 
     587       - Limited support for saving(opening) a SasView project or a SasView analysis 
     588         (subproject) is provided. 
     589       - SasView can be launched and loaded with a file of interesty by double-clicking 
     590         on that file (recognized extension) 
     591       - A data file or data folder can be passed to SasView when launched from 
     592         the command line. 
     593       - Limited bookmarking capability to later recall the results of a fit calculation 
     594         is provided. 
     595       - Extensive help is provided through context sensitive mouse roll-over, 
     596         information bar (at the bottom of the panel), the console menu, and 
     597         access to the help files in several different ways. 
     598 
     599 
     6002- Downloading and Installing 
     601============================= 
     602 
     603   *** Note 1:  Much more information is available at www.sasview.org under links. 
     604                    Look in the 'For Developers' section and particularly the wiki at 
     605                www.sasview.org/trac/wiki. 
     606   *** Note 2:  If you have EXE or ZIP SasView installer, you won't need any of 
     607                the following.  However it is highly recommended that any 
     608                previous versions be un-installed prior to installing the 
     609                new version. 
     610 
     611   2.1- System Requirements 
     612        - Python version >= 2.5 and < 3.0 should be running on the system 
     613        - We currently use Python 2.7 
     614 
     615   2.2- Installing from source 
     616        - Get the source code 
     617          - to follow the current development version from source control use 
     618              git clone https://github.com/SasView/sasview.git 
     619              git clone https://github.com/bumps/bumps.git 
     620          - to install a specific version 
     621 
     622        - Build, install and run a specific release 
     623          - make sure the requirements below are already installed 
     624          - retrieve the source from https://github.com/SasView/sasview/releases 
     625          - open a command line window in the 'sasview-x.x.x' directory 
     626          - run 'python setup.py install' 
     627          - run 'python sasview.py' under the 'sasview' folder. 
     628 
     629        - Build, install and run the current development version 
     630          - clone the source from git; also clone bumps, which is developed in parallel 
     631              git clone https://github.com/SasView/sasview.git 
     632              git clone https://github.com/bumps/bumps.git 
     633          - open a command line window in the 'sasview' directory 
     634          - run 'python setup.py build' 
     635          - run 'python run.py'; this runs from the source directories, so you 
     636            don't have to rebuild every time you make a change, unless you are 
     637            changing the C++ model files 
     638 
     639        - The following modules are required (version numbers are what are used 
     640          in the windows release build): 
     641 
     642          - Common Packages 
     643            - reportlab 3.1.44 
     644            - lxml 3.4.4.0 (MAC 3.4.2.0) 
     645            - PIL 1.1.7 
     646            - xhtml2pdf 3.0.33 (MAC = not installed on build server) 
     647            - unittest-xml-reporting 1.12.0 (MAC 1.10.0) 
     648            - matplotlib Version Installed: 1.4.3 (MAC 1.1.1) 
     649            - bumps Version Installed: 0.7.5.9 
     650            - scipy Version Installed: 0.16.0b2 (MAC 0.11.0) 
     651            - periodictable Version Installed: 1.4.1 
     652            - setuptools Version Installed: 7.0 (MAC 12.0.5) 
     653            - sphinx Version Installed: 1.3.1 (MAC 1.3b2) 
     654            - pyparsing Version Installed: 2.0.3 
     655            - numpy Version Installed: 1.9.2 (MAC 1.6.2) 
     656            - html5lib Version Installed: 0.99999 
     657            - wx Version Installed: 3.0.2.0 
     658 
     659          - Windows Specific Packages 
     660            - pywin 219 
     661            - py2exe 0.6.9 
     662            - comtypes 1.1.1 
     663            - MinGW w/ gcc version 4.6.1 (WIN) 
     664            - vcredist_x86.exe (version 9.0.21022.8  -microsoft visual C 2008 
     665              re-distributable) 
     666            - Innosetup (WIN - isetup 5.4.2-unicode) - used to create distributable 
     667 
     668            *** Note: Windows build dependencies can be set up using anaconda. Instructions 
     669                can be found at http://trac.sasview.org/wiki/AnacondaSetup 
     670 
     671          - MAC Specifc Packages 
     672            - py2app 0.7.1 
     673 
     674 
     6753- Known Issues 
     676=============== 
     677 
     678   4.1- All systems: 
     679      The conversion to sasmodels infrastructure is ongoing and should be 
     680      completed in the next release. In the meantime this leads to a few known 
     681      issues: 
     682        - The way that orientation is defined is being refactored to address 
     683        long standing issues and comments.  In release 4.1 however only models 
     684        with symmetry (e.g. a=b) have been converted to the new definitions. 
     685        The rest (a <> b <> c - e.g. parellelepiped) maintain the same 
     686        definition as before and will be converted in 4.2.  Note that 
     687        orientational distribution also makes much more sense in the new 
     688        framework.  The documentation should indicate which definition is being 
     689        used for a given model. 
     690        - The infrastructure currently handles internal conversion of old style 
     691        models so that user created models in previous versions should continue 
     692        to work for now. At some point in the future such support will go away. 
     693        Everyone is encouraged to convert to the new structure which should be 
     694        relatively straight forward and provides a number of benefits.  
     695        - In that vein, the distributed models and those generated by the new 
     696        plugin model editor are in the new format, however those generated by 
     697        sum|multiply models are the old style sum|multiply models. This should 
     698        also disappear in the near future  
     699        - The on the fly discovery of plugin models and changes thereto behave 
     700        inconsistently.  If a change to a plugin model does not seem to 
     701        register, the Load Plugin Models (under fitting -> Plugin Model 
     702        Operations) can be used.  However, after calling Load Plugin Models, the 
     703        active plugin will no longer be loaded (even though the GUI looks like 
     704        it is) unless it is a sum|multiply model which works properly.  All 
     705        others will need to be recalled from the model dropdown menu to reload 
     706        the model into the calculation engine.  While it might be annoying it 
     707        does not appear to prevent SasView from working.. 
     708        - The model code and documentation review is ongoing. At this time the 
     709        core shell parellelepiped is known to have the C shell effectively fixed 
     710        at 0 (noted in documentation) while the triaxial ellipsoid does not seem 
     711        to reproduce the limit of the oblate or prolate ellipsoid. If errors are 
     712        found and corrected, corrected versions will be uploaded to the 
     713        marketplace.  
     714    
     715   3.1- All systems: 
     716        - The documentation window may take a few seconds to load the first time 
     717          it is called. Also, an internet connection is required before 
     718          equations will render properly. Until then they will show in their 
     719          original TeX format. 
     720        - If the documentation window remains stubbornly blank, try installing a 
     721          different browser and set that as your default browser. Issues have 
     722          been noted with Internet Explorer 11. 
     723        - Check for Updates may fail (with the status bar message ' Cannot 
     724          connect to the application server') if your internet connection uses 
     725          a proxy server. Tested resolutions for this are described on the 
     726          website FAQ. 
     727        - The copy and paste functions (^C, ^V) in the batch mode results grid 
     728          require two clicks: one to select the cell and a second to select the 
     729          contents of the cell. 
     730        - The tutorial has not yet been updated and is somewhat out of date 
     731        - Very old computers may struggle to run the 3.x and later releases 
     732        - Polydispersity on multiple parameters included in a simultaneous/ 
     733          constrained fit will likely not be correct 
     734        - Constrained/simultaneous fit page does not have a stop button 
     735        - Constrained/simultaneous fit do not accept min/max limits 
     736        - Save project does not store the state of all the windows 
     737        - Loading projects can be very slow 
     738        - Save Project only works once a data set has been associated with 
     739          a model.  Error is reported on status bar. 
     740        - There is a numerical precision problem with the multishell model when 
     741          the iner radius gets large enough (ticket #288) 
     742        - The angular distribution angles are not clearly defined and may in 
     743          some cases lead to incorrect calculations(ticket #332) 
     744 
     745   3.2- Windows: 
     746        - If installed to same directory as old version without first removing 
     747          the old version, the old desktop icon will remain but point to the 
     748          new exe version. Likewise all the start menu folders and items will 
     749          have the old name even though pointing to the new version.  Usually 
     750          safest to uninstall old version prior to installing new version anyway. 
     751 
     752   3.3- MAC: 
     753        - Application normally starts up hidden. Click icon in Dock to view/use 
     754          application. 
     755        - Multiprocessing does not currently work on MAC OS 
     756 
     757   3.4- Linux: 
     758        - Not well tested 
     759 
     760 
     7614- SasView website 
     762================== 
     763 
     764   - www.sasview.org.  This main project site is the gateway to all 
     765     information about the sasview project.  It includes information 
     766     about the project, a FAQ page and links to all developer and user 
     767     information, tools and resources. 
     768 
     769 
     7705- Frequently Asked Questions 
     771============================= 
     772 
     773   - www.sasview.org/faq.html 
     774 
     775 
     7766- Installer download website 
     777============================= 
     778 
     779   - Latest release Version 
     780     - https://github.com/SasView/sasview/releases 
     781   - Latest developer builds 
     782     - https://jenkins.esss.dk/sasview/view/Master-Builds/ 
  • installers/README.txt

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

    r1a3602d rc16172d  
    402402 
    403403required = [ 
    404     'bumps>=0.7.5.9', 'periodictable>=1.5.0', 'pyparsing<2.0.0', 
     404    'bumps>=0.7.5.9', 'periodictable>=1.5.0', 'pyparsing>=2.0.0', 
    405405 
    406406    # 'lxml>=2.2.2', 
  • src/sas/sascalc/dataloader/file_reader_base_class.py

    ra58b5a0 r4a8d55c  
    3131FIELDS_2D = ('data', 'qx_data', 'qy_data', 'q_data', 'err_data', 
    3232                 'dqx_data', 'dqy_data', 'mask') 
    33  
     33DEPRECATION_MESSAGE = ("\rThe extension of this file suggests the data set migh" 
     34                       "t not be fully reduced. Support for the reader associat" 
     35                       "ed with this file type has been removed. An attempt to " 
     36                       "load the file was made, but, should it be successful, " 
     37                       "SasView cannot guarantee the accuracy of the data.") 
    3438 
    3539class FileReader(object): 
     
    4044    # List of allowed extensions 
    4145    ext = ['.txt'] 
     46    # Deprecated extensions 
     47    deprecated_extensions = ['.asc', '.nxs'] 
    4248    # Bypass extension check and try to load anyway 
    4349    allow_all = False 
     
    8793                    if not self.f_open.closed: 
    8894                        self.f_open.close() 
     95                    if any(filepath.lower().endswith(ext) for ext in 
     96                           self.deprecated_extensions): 
     97                        self.handle_error_message(DEPRECATION_MESSAGE) 
    8998                    if len(self.output) > 0: 
    9099                        # Sort the data that's been loaded 
     
    146155        else: 
    147156            logger.warning(msg) 
     157            raise NoKnownLoaderException(msg) 
    148158 
    149159    def send_to_output(self): 
  • src/sas/sascalc/dataloader/loader.py

    rdc8d1c2 r4a8d55c  
    9090            ascii_loader = ascii_reader.Reader() 
    9191            return ascii_loader.read(path) 
     92        except NoKnownLoaderException: 
     93            pass  # Try the Cansas XML reader 
    9294        except DefaultReaderException: 
    9395            pass  # Loader specific error to try the cansas XML reader 
     
    100102            cansas_loader = cansas_reader.Reader() 
    101103            return cansas_loader.read(path) 
     104        except NoKnownLoaderException: 
     105            pass  # Try the NXcanSAS reader 
    102106        except DefaultReaderException: 
    103107            pass  # Loader specific error to try the NXcanSAS reader 
  • src/sas/sascalc/dataloader/readers/abs_reader.py

    re3775c6 rbd5c3b1  
    171171 
    172172                try: 
    173                     _x = float(toks[0]) 
     173                    _x = float(toks[4]) 
    174174                    _y = float(toks[1]) 
    175175                    _dy = float(toks[2]) 
  • src/sas/sascalc/fit/pagestate.py

    r9e6aeaf r59873e1  
    1313################################################################################ 
    1414import time 
     15import re 
    1516import os 
    1617import sys 
     
    646647                    name = value.split(':', 1)[1].strip() 
    647648                    file_value = "File name:" + name 
     649                    #Truncating string so print doesn't complain of being outside margins 
     650                    if sys.platform != "win32": 
     651                        MAX_STRING_LENGHT = 50 
     652                        if len(file_value) > MAX_STRING_LENGHT: 
     653                            file_value = "File name:.."+file_value[-MAX_STRING_LENGHT+10:] 
    648654                    file_name = CENTRE % file_value 
    649655                    if len(title) == 0: 
     
    721727        html_str, text_str, title = self._get_report_string() 
    722728        # Allow 2 figures to append 
    723         image_links = [FEET_2%fig for fig in fig_urls] 
    724  
     729        #Constraining image width for OSX and linux, so print doesn't complain of being outside margins 
     730        if sys.platform == "win32": 
     731            image_links = [FEET_2%fig for fig in fig_urls] 
     732        else: 
     733            image_links = [FEET_2_unix%fig for fig in fig_urls] 
    725734        # final report html strings 
    726735        report_str = html_str + ELINE.join(image_links) 
    727  
     736        report_str += FEET_3 
    728737        return report_str, text_str 
    729738 
     
    954963        if node.get('version'): 
    955964            # Get the version for model conversion purposes 
    956             self.version = tuple(int(e) for e in 
    957                                  str.split(node.get('version'), ".")) 
     965            x = re.sub('[^\d.]', '', node.get('version')) 
     966            self.version = tuple(int(e) for e in str.split(x, ".")) 
    958967            # The tuple must be at least 3 items long 
    959968            while len(self.version) < 3: 
     
    13681377""" 
    13691378FEET_2 = \ 
    1370 """<img src="%s" ></img> 
     1379"""<img src="%s"></img> 
     1380""" 
     1381FEET_2_unix = \ 
     1382"""<img src="%s" width="540"></img> 
    13711383""" 
    13721384FEET_3 = \ 
  • src/sas/sasgui/guiframe/local_perspectives/data_loader/data_loader.py

    r20fa5fe r2924532  
    185185            try: 
    186186                message = "Loading {}...\n".format(p_file) 
    187                 self.load_update(output=output, message=message, info="info") 
     187                self.load_update(message=message, info="info") 
    188188                temp = self.loader.load(p_file, format) 
    189189                if not isinstance(temp, list): 
     
    201201                        else: 
    202202                            file_errors[basename] = [error_message] 
    203                         self.load_update(output=output, 
    204                             message=error_message, info="warning") 
    205  
    206                 self.load_update(output=output, 
    207                 message="Loaded {}\n".format(p_file), 
    208                 info="info") 
     203 
     204                self.load_update(message="Loaded {}\n".format(p_file), 
     205                                 info="info") 
    209206 
    210207            except NoKnownLoaderException as e: 
    211208                exception_occurred = True 
    212                 logger.error(e.message) 
    213  
    214209                error_message = "Loading data failed!\n" + e.message 
    215                 self.load_update(output=None, message=e.message, info="warning") 
     210                self.load_complete(output=None, 
     211                                   message=error_message, 
     212                                   info="warning") 
    216213 
    217214            except Exception as e: 
    218215                exception_occurred = True 
    219                 logger.error(e.message) 
    220  
    221216                file_err = "The Data file you selected could not be " 
    222217                file_err += "loaded.\nMake sure the content of your file" 
     
    225220                file_err += " following:\n" 
    226221                file_err += e.message 
    227                 file_errors[basename] = [file_err] 
     222                self.load_complete(output=None, 
     223                                   message=file_err, 
     224                                   info="error") 
    228225 
    229226        if len(file_errors) > 0: 
    230227            error_message = "" 
    231228            for filename, error_array in file_errors.iteritems(): 
    232                 error_message += "The following errors occured whilst " 
     229                error_message += "The following issues were found whilst " 
    233230                error_message += "loading {}:\n".format(filename) 
    234231                for message in error_array: 
    235232                    error_message += message + "\n" 
    236                 error_message += "\n" 
    237             if not exception_occurred: # Some data loaded but with errors 
    238                 self.load_update(output=output, message=error_message, info="error") 
    239  
    240         if not exception_occurred: # Everything loaded as expected 
     233                error_message = error_message[:-1] 
     234            self.load_complete(output=output, 
     235                               message=error_message, 
     236                               info="error") 
     237 
     238        elif not exception_occurred: # Everything loaded as expected 
    241239            self.load_complete(output=output, message="Loading data complete!", 
    242240                               info="info") 
     
    244242            self.load_complete(output=None, message=error_message, info="error") 
    245243 
    246  
    247     def load_update(self, output=None, message="", info="warning"): 
     244    def load_update(self, message="", info="warning"): 
    248245        """ 
    249246        print update on the status bar 
    250247        """ 
    251248        if message != "": 
    252             wx.PostEvent(self.parent, StatusEvent(status=message, info=info, 
     249            wx.PostEvent(self.parent, StatusEvent(status=message, 
     250                                                  info=info, 
    253251                                                  type="progress")) 
    254252 
     
    257255         post message to status bar and return list of data 
    258256        """ 
    259         wx.PostEvent(self.parent, StatusEvent(status=message, info=info, 
     257        wx.PostEvent(self.parent, StatusEvent(status=message, 
     258                                              info=info, 
    260259                                              type="stop")) 
    261260        if output is not None: 
  • src/sas/sasgui/guiframe/local_perspectives/plotting/parameters_panel_slicer.py

    ra26f67f ra20a255  
    251251            self.bck.Add(self.batch_slicer_button, (iy, ix), (1, 1), 
    252252                         wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 15) 
     253            # Help button 
     254 
     255            self.bt_help = wx.Button(self, wx.NewId(), "HELP") 
     256            self.bt_help.SetToolTipString( 
     257                "Help for the slicer parameters and batch slicing.") 
     258            self.bck.Add(self.bt_help, (iy, 1), (1, 1), 
     259                         wx.ALIGN_RIGHT | wx.ADJUST_MINSIZE, 15) 
     260            wx.EVT_BUTTON(self, self.bt_help.GetId(), self.on_help) 
     261 
    253262            iy += 1 
    254263            self.bck.Add((5, 5), (iy, ix), (1, 1), 
    255264                         wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 5) 
     265 
    256266        self.bck.Layout() 
    257267        self.bck.Fit(self) 
     
    535545            self.default_value += "_{0}".format(key).split(" [")[0] 
    536546            self.default_value += "-{:.2f}".format(params[key]) 
     547 
     548    def on_help(self, event=None): 
     549        """ 
     550        Opens a help window for the slicer parameters/batch slicing window 
     551        :param event: 
     552        :return: 
     553        """ 
     554        from sas.sasgui.guiframe.documentation_window import DocumentationWindow 
     555 
     556        _TreeLocation = "user/sasgui/guiframe/graph_help.html" 
     557        _doc_viewer = DocumentationWindow(self, wx.ID_ANY, _TreeLocation, 
     558                                          "#d-data-averaging", 
     559                                          "Data Explorer Help") 
  • src/sas/sasgui/guiframe/media/graph_help.rst

    r5ed76f8 rde68f78  
    266266 
    267267.. ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 
     268.. _d_data_averaging: 
    268269 
    2692702D data averaging 
     
    301302Alternatively, once a 'slicer' is active you can also select the region to 
    302303average by bringing back the *Dataset Menu* and selecting *Edit Slicer 
    303 Parameters*. A dialog window will appear in which you can enter values to 
    304 define a region or select the number of points to plot (*nbins*). 
     304Parameters and Batch Fitting*. A dialog window will appear in which you can 
     305enter values to define a region, select the number of points to plot (*nbins*), 
     306or apply the slicer to any or all other 2D data plots. 
    305307 
    306308A separate plot window will also have appeared, displaying the requested 
     
    315317 
    316318To remove a 'slicer', bring back the *Dataset menu* and select *Clear Slicer*. 
     319 
     320Batch Slicing 
     321^^^^^^^^^^^^^ 
     322 
     323A slicer can be applied to any or all existing 2D data plots using the 'Slicer 
     324Parameters' window. To open the window, select *Edit Slicer Parameters and Batch 
     325Fitting* in the *Dataset Menu* (see Invoking_the_dataset_menu_). Batch slicing 
     326options are available at the bottom of the window. 
     327 
     328Select the 2D plots you want to apply the slicer to. All 2D plots are selected 
     329by default. The resulting 1D data for all slicers can be saved as a text file 
     330and then sent to fitting by selecting the *Auto save generated 1D* check box. 
     331Sending data to the fitting perspective requires the data be saved. 
     332 
     333Once the auto save check box is selected, you can select where the files are 
     334saved. The file name for the saved data is the slicer name plus the file name 
     335of the original data set, plus what is in the *Append to file name* field. The 
     336default value in the append to field includes the names and values for all of 
     337the slicer parameters. 
     338 
     339The batch of slices can be sent to fitting if desired, with three options 
     340available. The first is to not fit the data, the second is to send the 
     341slices to individual fit pages, and the third is to send all sliced data to a 
     342single batch fit window. 
     343 
     344Clicking *Apply Slicer to Selected Plots* will create a slicer for each selected 
     345plot with the parameters entered in the 'Slicer Parameters' window. Depending on 
     346the options selected the data may then be saved, loaded as separate data sets in 
     347the data manager panel, and finally sent to fitting. 
    317348 
    318349Unmasked circular average 
  • src/sas/sasgui/guiframe/report_dialog.py

    r69a6897 r91552b5  
    2727class BaseReportDialog(wx.Dialog): 
    2828 
    29     def __init__(self, report_list, *args, **kwds): 
     29    def __init__(self, report_list, imgRAM, fig_urls, *args, **kwds): 
    3030        """ 
    3131        Initialization. The parameters added to Dialog are: 
     
    3737        kwds["image"] = 'Dynamic Image' 
    3838 
     39        #MemoryFSHandle for storing images 
     40        self.imgRAM = imgRAM 
     41        #Images location in urls 
     42        self.fig_urls = fig_urls 
    3943        # title 
    4044        self.SetTitle("Report") 
     
    7579        hbox.Add(button_print) 
    7680 
    77         button_save = wx.Button(self, wx.NewId(), "Save") 
    78         button_save.SetToolTipString("Save this report.") 
    79         button_save.Bind(wx.EVT_BUTTON, self.onSave, id=button_save.GetId()) 
    80         hbox.Add(button_save) 
     81        if sys.platform != "darwin": 
     82            button_save = wx.Button(self, wx.NewId(), "Save") 
     83            button_save.SetToolTipString("Save this report.") 
     84            button_save.Bind(wx.EVT_BUTTON, self.onSave, id=button_save.GetId()) 
     85            hbox.Add(button_save) 
    8186 
    8287        # panel for report page 
     
    111116        printh.PrintText(self.report_html) 
    112117 
     118 
    113119    def OnClose(self, event=None): 
    114120        """ 
     
    116122        : event: Close button event 
    117123        """ 
     124        for fig in self.fig_urls: 
     125            self.imgRAM.RemoveFile(fig) 
     126 
    118127        self.Close() 
    119128 
  • src/sas/sasgui/perspectives/calculator/model_editor.py

    rc6dfb9f r9258c43c  
    663663        Do the layout for parameter related widgets 
    664664        """ 
    665         param_txt = wx.StaticText(self, -1, 'Fit Parameters NOT requiring' + \ 
    666                                   ' polydispersity (if any): ') 
    667  
    668         param_tip = "#Set the parameters NOT requiring polydispersity " + \ 
    669         "and their initial values.\n" 
     665        param_txt = wx.StaticText(self, -1, 'Fit Parameters: ') 
     666 
     667        param_tip = "#Set the parameters and their initial values.\n" 
    670668        param_tip += "#Example:\n" 
    671669        param_tip += "A = 1\nB = 1" 
     
    681679                                  (self.param_tcl, 1, wx.EXPAND | wx.ALL, 10)]) 
    682680 
    683         # Parameters with polydispersity 
    684         pd_param_txt = wx.StaticText(self, -1, 'Fit Parameters requiring ' + \ 
    685                                      'polydispersity (if any): ') 
    686  
    687         pd_param_tip = "#Set the parameters requiring polydispersity and " + \ 
    688         "their initial values.\n" 
    689         pd_param_tip += "#Example:\n" 
    690         pd_param_tip += "C = 2\nD = 2" 
    691         newid = wx.NewId() 
    692         self.pd_param_tcl = EditWindow(self, newid, wx.DefaultPosition, 
    693                                     wx.DefaultSize, 
    694                                     wx.CLIP_CHILDREN | wx.SUNKEN_BORDER) 
    695         self.pd_param_tcl.setDisplayLineNumbers(True) 
    696         self.pd_param_tcl.SetToolTipString(pd_param_tip) 
    697  
    698         self.param_sizer.AddMany([(pd_param_txt, 0, wx.LEFT, 10), 
    699                                   (self.pd_param_tcl, 1, wx.EXPAND | wx.ALL, 10)]) 
    700681 
    701682    def _layout_function(self): 
     
    899880            description = self.desc_tcl.GetValue() 
    900881            param_str = self.param_tcl.GetText() 
    901             pd_param_str = self.pd_param_tcl.GetText() 
    902882            func_str = self.function_tcl.GetText() 
    903883            # No input for the model function 
     
    905885                if func_str.count('return') > 0: 
    906886                    self.write_file(self.fname, name, description, param_str, 
    907                                     pd_param_str, func_str) 
     887                                    func_str) 
    908888                    try: 
    909889                        result, msg = check_model(self.fname), None 
     
    945925        self.warning = msg 
    946926 
    947     def write_file(self, fname, name, desc_str, param_str, pd_param_str, func_str): 
     927    def write_file(self, fname, name, desc_str, param_str, func_str): 
    948928        """ 
    949929        Write content in file 
     
    952932        :param desc_str: content of the description strings 
    953933        :param param_str: content of params; Strings 
    954         :param pd_param_str: content of params requiring polydispersity; Strings 
    955934        :param func_str: content of func; Strings 
    956935        """ 
     
    966945        # Write out parameters 
    967946        param_names = []    # to store parameter names 
    968         pd_params = [] 
    969947        out_f.write('parameters = [ \n') 
    970948        out_f.write('#   ["name", "units", default, [lower, upper], "type", "description"],\n') 
     
    973951            out_f.write("    ['%s', '', %s, [-inf, inf], '', '%s'],\n" 
    974952                        % (pname, pvalue, desc)) 
    975         for pname, pvalue, desc in self.get_param_helper(pd_param_str): 
    976             param_names.append(pname) 
    977             pd_params.append(pname) 
    978             out_f.write("    ['%s', '', %s, [-inf, inf], 'volume', '%s'],\n" 
    979                         % (pname, pvalue, desc)) 
    980953        out_f.write('    ]\n') 
    981954 
    982955        # Write out function definition 
     956        out_f.write('\n') 
    983957        out_f.write('def Iq(%s):\n' % ', '.join(['x'] + param_names)) 
    984958        out_f.write('    """Absolute scattering"""\n') 
     
    990964            out_f.write('    import numpy as np') 
    991965        for func_line in func_str.split('\n'): 
    992             out_f.write('%s%s\n' % (spaces4, func_line)) 
     966            out_f.write('%s%s\n' % ('    ', func_line)) 
    993967        out_f.write('## uncomment the following if Iq works for vector x\n') 
    994968        out_f.write('#Iq.vectorized = True\n') 
    995  
    996         # If polydisperse, create place holders for form_volume, ER and VR 
    997         if pd_params: 
    998             out_f.write('\n') 
    999             out_f.write(CUSTOM_TEMPLATE_PD % {'args': ', '.join(pd_params)}) 
    1000969 
    1001970        # Create place holder for Iqxy 
     
    11281097description = """%(description)s""" 
    11291098 
    1130 ''' 
    1131  
    1132 CUSTOM_TEMPLATE_PD = '''\ 
    1133 def form_volume(%(args)s): 
    1134     """ 
    1135     Volume of the particles used to compute absolute scattering intensity 
    1136     and to weight polydisperse parameter contributions. 
    1137     """ 
    1138     return 0.0 
    1139  
    1140 def ER(%(args)s): 
    1141     """ 
    1142     Effective radius of particles to be used when computing structure factors. 
    1143  
    1144     Input parameters are vectors ranging over the mesh of polydispersity values. 
    1145     """ 
    1146     return 0.0 
    1147  
    1148 def VR(%(args)s): 
    1149     """ 
    1150     Volume ratio of particles to be used when computing structure factors. 
    1151  
    1152     Input parameters are vectors ranging over the mesh of polydispersity values. 
    1153     """ 
    1154     return 1.0 
    11551099''' 
    11561100 
  • src/sas/sasgui/perspectives/calculator/pyconsole.py

    r4627657 re2663b7  
    2828    Check that the model on the path can run. 
    2929    """ 
     30    # TODO: fix model caching 
     31    # model_test.run_one() is directly forcing a reload of the module, but 
     32    # sasview_model is caching models that have already been loaded. 
     33    # If the sasview load happens before the test, then the module is 
     34    # reloaded out from under it, which causes the global variables in 
     35    # the model function definitions to be cleared (at least in python 2.7). 
     36    # To fix the proximal problem of models failing on test, perform the 
     37    # run_one() tests first.  To fix the deeper problem we should either 
     38    # remove caching from sasmodels.sasview_model.load_custom_model() or 
     39    # add caching to sasmodels.custom.load_custom_kernel_module().  Another 
     40    # option is to add a runTests method to SasviewModel which runs the 
     41    # test suite directly from the model info structure.  Probably some 
     42    # combination of options: 
     43    #    (1) have this function (check_model) operate on a loaded model 
     44    #    so that caching isn't needed in sasview_models.load_custom_model 
     45    #    (2) add the runTests method to SasviewModel so that tests can 
     46    #    be run on a loaded module. 
     47    # 
     48    # Also, note that the model test suite runs the equivalent of the 
     49    # "try running the model" block below, and doesn't need to be run 
     50    # twice.  The reason for duplicating the block here is to generate 
     51    # an exception that show_model_output can catch.  Need to write the 
     52    # runTests method so that it returns success flag as well as output 
     53    # string so that the extra test is not necessary. 
     54 
     55    # check the model's unit tests run 
     56    from sasmodels.model_test import run_one 
     57    result = run_one(path) 
     58 
     59    # remove cached version of the model, if any 
     60    from sasmodels import sasview_model 
     61    sasview_model.MODEL_BY_PATH.pop(path, None) 
     62 
    3063    # try running the model 
    31     from sasmodels.sasview_model import load_custom_model 
    32     Model = load_custom_model(path) 
     64    Model = sasview_model.load_custom_model(path) 
    3365    model = Model() 
    3466    q =  np.array([0.01, 0.1]) 
     
    3668    qx, qy =  np.array([0.01, 0.01]), np.array([0.1, 0.1]) 
    3769    Iqxy = model.evalDistribution([qx, qy]) 
    38  
    39     # check the model's unit tests run 
    40     from sasmodels.model_test import run_one 
    41     result = run_one(path) 
    4270 
    4371    return result 
  • src/sas/sasgui/perspectives/calculator/resolution_calculator_panel.py

    r7432acb r1cf490b6  
    1818matplotlib.use('WXAgg') 
    1919from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas 
    20 from matplotlib.backends.backend_wxagg import NavigationToolbar2Wx as Toolbar 
     20from matplotlib.backends.backend_wxagg import NavigationToolbar2WxAgg as Toolbar 
    2121from matplotlib.backend_bases import FigureManagerBase 
    2222# Wx-Pylab magic for displaying plots within an application's window. 
  • src/sas/sasgui/perspectives/calculator/slit_length_calculator_panel.py

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

    r1f4d708 r8a51dea0  
    641641        # get the strings for report 
    642642        report_str, text_str = self.state.report(fig_urls=refs) 
    643  
    644643        # Show the dialog 
    645644        report_list = [report_str, text_str, images] 
    646         dialog = ReportDialog(report_list, None, wx.ID_ANY, "") 
     645        dialog = ReportDialog(report_list, imgRAM, refs, None, wx.ID_ANY, "") 
    647646        dialog.Show() 
    648647 
     
    677676            refs.append('memory:' + name) 
    678677            imgRAM.AddFile(name, canvas.bitmap, wx.BITMAP_TYPE_PNG) 
    679  
    680678            # append figs 
    681679            images.append(fig) 
     
    14721470            # we need to check here ourselves. 
    14731471            if not is_modified: 
    1474                 is_modified = (self._check_value_enter(self.fittable_param) 
    1475                                or self._check_value_enter(self.fixed_param) 
    1476                                or self._check_value_enter(self.parameters)) 
     1472                is_modified = self._check_value_enter(self.fittable_param) 
     1473                is_modified = self._check_value_enter( 
     1474                    self.fixed_param) or is_modified 
     1475                is_modified = self._check_value_enter( 
     1476                    self.parameters) or is_modified 
    14771477 
    14781478            # Here we should check whether the boundaries have been modified. 
     
    15361536                        data=[self.data]) 
    15371537            # Check the values 
    1538             is_modified = (self._check_value_enter(self.fittable_param) 
    1539                            or self._check_value_enter(self.fixed_param) 
    1540                            or self._check_value_enter(self.parameters)) 
     1538            is_modified = self._check_value_enter(self.fittable_param) 
     1539            is_modified = self._check_value_enter(self.fixed_param) or is_modified 
     1540            is_modified = self._check_value_enter(self.parameters) or is_modified 
    15411541 
    15421542            # If qmin and qmax have been modified, update qmin and qmax and 
     
    23242324 
    23252325            # Update value in model if it has changed 
    2326             if value != self.model.getParam(name): 
     2326            if (value != self.model.getParam(name) or 
     2327                    (np.isnan(value) and np.isnan(self.model.getParam(name)))): 
    23272328                self.model.setParam(name, value) 
    23282329                is_modified = True 
     
    25512552            # draw 
    25522553            self._draw_model() 
     2554            self.Layout() 
    25532555            self.Refresh() 
    25542556        except Exception: 
  • src/sas/sasgui/perspectives/fitting/fitpage.py

    ra7c6f38 rdabcaf7  
    706706 
    707707                        ix = 3 
    708                         ctl2 = wx.TextCtrl(self, wx.ID_ANY, 
    709                                            size=(_BOX_WIDTH / 1.3, 20), 
    710                                            style=0) 
     708                        ctl2 = BGTextCtrl(self, wx.ID_ANY, 
     709                                           size=(_BOX_WIDTH / 1.3, 20)) 
    711710 
    712711                        self.sizer4_4.Add(ctl2, (iy, ix), (1, 1), 
     
    19981997        self.on_smear_helper() 
    19991998        self.on_set_focus(None) 
     1999        self.Layout() 
    20002000        self.Refresh() 
    20012001        # update model plot with new data information 
     
    28922892                        text2.Hide() 
    28932893                    ix += 1 
    2894                     ctl2 = wx.TextCtrl(self, wx.ID_ANY, 
    2895                                        size=(_BOX_WIDTH / 1.2, 20), style=0) 
     2894                    ctl2 = BGTextCtrl(self, wx.ID_ANY, 
     2895                                       size=(_BOX_WIDTH / 1.2, 20)) 
    28962896                    sizer.Add(ctl2, (iy, ix), (1, 1), 
    28972897                              wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
  • src/sas/sasgui/perspectives/fitting/media/fitting_help.rst

    r47ace50 r9258c43c  
    180180*checked*\ . 
    181181 
    182 Also note that the 'Fit Parameters' have been split into two sections: those 
    183 which can be polydisperse (shape and orientation parameters) and those which are 
    184 not (eg, scattering length densities). 
    185  
    186182A model file generated by this option can be viewed and further modified using 
    187183the :ref:`Advanced_Plugin_Editor` . 
    188184 
    189 **SasView version 4.2** made it possible to specify whether a plugin created with 
    190 the *New Plugin Model* dialog is actually a form factor P(Q) or a structure factor 
    191 S(Q). To do this, simply add one or other of the following lines under the *import* 
    192 statements. 
     185Note that the New Plugin Model Feature currently does not allow for parameters 
     186to be polydisperse.  However they can be edited in the Advanced Editor. 
     187 
     188 
     189**SasView version 4.2** made it possible to specify whether a plugin created 
     190with the *New Plugin Model* dialog is actually a form factor P(Q) or a structure 
     191factor S(Q). To do this, simply add one or other of the following lines under 
     192the *import* statements. 
    193193 
    194194For a form factor:: 
     
    200200     structure_factor = True 
    201201 
    202 If the plugin is a structure factor it is *also* necessary to add two variables to 
    203 the parameter list:: 
     202If the plugin is a structure factor it is *also* necessary to add two variables 
     203to the parameter list:: 
    204204 
    205205     parameters = [ 
  • src/sas/sasview/__init__.py

    r3ca67dc ra8bbba2  
    1 __version__ = "4.2.0" 
     1__version__ = "4.2.0-beta" 
    22__build__ = "GIT_COMMIT" 
  • src/sas/sasview/sasview.py

    r20fa5fe r1270e3c  
    4343        from sas.sasgui.guiframe.gui_manager import SasViewApp 
    4444        self.gui = SasViewApp(0) 
     45        if sys.platform == "darwin": 
     46            self.check_sasmodels_compiler() 
    4547        # Set the application manager for the GUI 
    4648        self.gui.set_manager(self) 
     
    130132        self.gui.MainLoop() 
    131133 
     134    def check_sasmodels_compiler(self): 
     135        """ 
     136        Checking c compiler for sasmodels and raises xcode command line 
     137        tools for installation 
     138        """ 
     139        #wx should be importable at this stage 
     140        import wx 
     141        import subprocess 
     142        #Generic message box created becuase standard MessageBox is not moveable 
     143        class GenericMessageBox(wx.Dialog): 
     144            def __init__(self, parent, text, title = ''): 
     145 
     146                wx.Dialog.__init__(self, parent, -1, title = title, 
     147                               size = (360,200), pos=(20,60), 
     148                               style = wx.STAY_ON_TOP | wx.DEFAULT_DIALOG_STYLE) 
     149                panel = wx.Panel(self, -1) 
     150                top_row_sizer = wx.BoxSizer(wx.HORIZONTAL) 
     151 
     152                error_bitmap = wx.ArtProvider.GetBitmap( 
     153                    wx.ART_ERROR, wx.ART_MESSAGE_BOX 
     154                ) 
     155                error_bitmap_ctrl = wx.StaticBitmap(panel, -1) 
     156                error_bitmap_ctrl.SetBitmap(error_bitmap) 
     157                label = wx.StaticText(panel, -1, text) 
     158                top_row_sizer.Add(error_bitmap_ctrl, flag=wx.ALL, border=10) 
     159                top_row_sizer.Add(label, flag=wx.ALIGN_CENTER_VERTICAL) 
     160 
     161                #Create the OK button in the bottom row. 
     162                ok_button = wx.Button(panel, wx.ID_OK ) 
     163                self.Bind(wx.EVT_BUTTON, self.on_ok, source=ok_button) 
     164                ok_button.SetFocus() 
     165                ok_button.SetDefault() 
     166 
     167                sizer = wx.BoxSizer(wx.VERTICAL) 
     168                sizer.Add(top_row_sizer) 
     169                sizer.Add(ok_button, flag=wx.ALIGN_CENTER | wx.ALL, border=5) 
     170                panel.SetSizer(sizer) 
     171 
     172            def on_ok(self, event): 
     173                self.Destroy() 
     174 
     175        logger = logging.getLogger(__name__) 
     176        try: 
     177            subprocess.check_output(["cc","--version"], stderr=subprocess.STDOUT) 
     178        except subprocess.CalledProcessError as exc: 
     179            dlg = GenericMessageBox(parent=None, 
     180            text='No compiler installed. Please install command line\n' 
     181                'developers tools by clicking \"Install\" in another winodw\n\n' 
     182                'Alternatively click \"Not Now\" and use OpenCL\n' 
     183                 'compiler, which can be set up from menu Fitting->OpenCL Options\n\n', 
     184            title = 'Compiler Info') 
     185            dlg.Show() 
     186            logger.error("No compiler installed. %s\n"%(exc)) 
     187            logger.error(traceback.format_exc()) 
    132188 
    133189def setup_logging(): 
  • test/corfunc/test/utest_corfunc.py

    rf53d684 r6ef75fa6  
    7474        while True: 
    7575            time.sleep(0.001) 
    76             if not self.calculator.transform_isrunning(): 
     76            if (not self.calculator.transform_isrunning() and 
     77                self.transformation is not None): 
    7778                break 
    7879 
    79     def transform_callback(self, transforms): 
    80         transform1, transform3, idf = transforms 
     80        transform1, transform3, idf = self.transformation 
    8181        self.assertIsNotNone(transform1) 
    8282        self.assertAlmostEqual(transform1.y[0], 1) 
    8383        self.assertAlmostEqual(transform1.y[-1], 0, 5) 
     84 
     85    def transform_callback(self, transforms): 
    8486        self.transformation = transforms 
    8587 
  • test/sasdataloader/test/utest_abs_reader.py

    rfa749b7 rbd5c3b1  
    5353 
    5454        self.assertEqual(self.data.y_unit, 'cm^{-1}') 
    55         self.assertEqual(self.data.x[0], 0.002618) 
    56         self.assertEqual(self.data.x[1], 0.007854) 
    57         self.assertEqual(self.data.x[2], 0.01309) 
     55        self.assertEqual(self.data.x[0], 0.008082) 
     56        self.assertEqual(self.data.x[1], 0.0275) 
     57        self.assertEqual(self.data.x[2], 0.02762) 
    5858        self.assertEqual(self.data.x[126], 0.5828) 
    5959 
  • test/sasdataloader/test/utest_generic_file_reader_class.py

    rf53d684 r4a8d55c  
    88import numpy as np 
    99 
    10 from sas.sascalc.dataloader.data_info import DataInfo, plottable_1D 
     10from sas.sascalc.dataloader.data_info import DataInfo, plottable_1D, Data1D 
     11from sas.sascalc.dataloader.loader import Loader 
     12from sas.sascalc.dataloader.loader_exceptions import NoKnownLoaderException 
    1113from sas.sascalc.dataloader.file_reader_base_class import FileReader 
    1214 
     
    2426        self.bad_file = find("ACB123.txt") 
    2527        self.good_file = find("123ABC.txt") 
     28        self.generic_reader = Loader() 
     29        self.deprecated_file_type = find("FEB18012.ASC") 
    2630 
    2731    def test_bad_file_path(self): 
    28         output = self.reader.read(self.bad_file) 
    29         self.assertEqual(output, []) 
     32        self.assertRaises(NoKnownLoaderException, self.reader.read, 
     33                          self.bad_file) 
    3034 
    3135    def test_good_file_path(self): 
     
    3640        self.assertEqual(len(output), 1) 
    3741        self.assertEqual(output[0].meta_data["blah"], '123ABC exists!') 
     42 
     43    def test_old_file_types(self): 
     44        f = self.generic_reader.load(self.deprecated_file_type) 
     45        last_f = f[0] 
     46        if hasattr(last_f, "errors"): 
     47            self.assertEquals(len(last_f.errors), 1) 
     48        else: 
     49            self.fail("Errors did not propogate to the file properly.") 
     50 
     51    def test_same_file_unknown_extensions(self): 
     52        # Five files, all with the same content, but different file extensions 
     53        no_ext = find("test_data//TestExtensions") 
     54        not_xml = find("test_data//TestExtensions.notxml") 
     55        # Deprecated extensions 
     56        asc_dep = find("test_data//TestExtensions.asc") 
     57        nxs_dep = find("test_data//TestExtensions.nxs") 
     58        # Native extension as a baseline 
     59        xml_native = find("test_data//TestExtensions.xml") 
     60        # Load the files and check contents 
     61        no_ext_load = self.generic_reader.load(no_ext) 
     62        asc_load = self.generic_reader.load(asc_dep) 
     63        nxs_load = self.generic_reader.load(nxs_dep) 
     64        not_xml_load = self.generic_reader.load(not_xml) 
     65        xml_load = self.generic_reader.load(xml_native) 
     66        self.check_unknown_extension(no_ext_load[0]) 
     67        self.check_unknown_extension(asc_load[0]) 
     68        self.check_unknown_extension(nxs_load[0]) 
     69        self.check_unknown_extension(not_xml_load[0]) 
     70        self.check_unknown_extension(xml_load[0]) 
     71        # Be sure the deprecation warning is passed with the file 
     72        self.assertEquals(len(asc_load[0].errors), 1) 
     73        self.assertEquals(len(nxs_load[0].errors), 1) 
     74 
     75    def check_unknown_extension(self, data): 
     76        self.assertTrue(isinstance(data, Data1D)) 
     77        self.assertEquals(len(data.x), 138) 
     78        self.assertEquals(data.sample.ID, "TK49 c10_SANS") 
     79        self.assertEquals(data.meta_data["loader"], "CanSAS XML 1D") 
    3880 
    3981    def tearDown(self): 
Note: See TracChangeset for help on using the changeset viewer.