Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix crash when opening and closing Indirect Data Reduction multiple times #37410

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
a57b4af
6.11 release notes skeleton
jhaigh0 May 10, 2024
1dbb347
create MVP tabs passing the unique_ptr of the model
adriazalvarez May 10, 2024
e3460e4
Initialize elwin presenter passing model pointer
adriazalvarez May 10, 2024
afbd907
Initialize moments presenter passing model pointer
adriazalvarez May 10, 2024
3e3773f
Initialize Iqt presenter passing model pointer
adriazalvarez May 10, 2024
d627fbb
Initialize sqw presenter passing model pointer
adriazalvarez May 10, 2024
013c71e
Initialize symmetrise presenter passing model pointer
adriazalvarez May 10, 2024
9ab025d
Initialize tab widgets explicitly
adriazalvarez May 10, 2024
710cc46
Convert to const some members of sqw and moments models
adriazalvarez May 10, 2024
47d0d9c
added section to packaging documentation
jhaigh0 May 13, 2024
ba7f7f4
review suggestions
jhaigh0 May 13, 2024
7b514e6
Update dev-docs/source/Packaging.rst
jhaigh0 May 13, 2024
64d5743
Add note about missing wavelength tooltips
cailafinn May 13, 2024
dd2f39d
Remove qt connection from IETPresenter to DataReductionTab
robertapplin Apr 25, 2024
6fb4e7d
Remove validate from slots section
robertapplin Apr 25, 2024
7ba5945
Move algorithm runner into DataReductionTab
robertapplin Apr 25, 2024
17b0dbb
Execute ISISEnergyTransfer algorithm using algorithm runner
robertapplin Apr 25, 2024
582f8d0
Handle algorithm complete and error for ISISIET algorithm
robertapplin Apr 25, 2024
8ba329f
Make possible to execute queue of algorithms
robertapplin Apr 25, 2024
661303c
IETPresenter is no longer a QObject
robertapplin Apr 25, 2024
c7047eb
Store last executed algorithm in AlgorithmRunner
robertapplin Apr 26, 2024
4664706
Tidy up changes in IET Presenter
robertapplin Apr 26, 2024
a1f923b
Rename AlgorithmRunner to QtAlgorithmRunner because it uses Qt signals
robertapplin Apr 26, 2024
29070be
Move AlgorithmRunner to MantidQtWidgets common
robertapplin Apr 26, 2024
4964ff0
Remove unused includes and functions
robertapplin Apr 26, 2024
f6972d0
Update failing tests after introducing AlgorithmRunner
robertapplin Apr 26, 2024
1a05c17
Create basics of FittingPresenter
robertapplin Apr 30, 2024
ae2b710
Move FittingModel and FitPropertyBrowser to FittingPresenter
robertapplin Apr 30, 2024
526cc0e
Subscribe FittingPresenter to FitPropertyBrowser
robertapplin Apr 30, 2024
f6ac1dc
Make updateFitStatus a private method
robertapplin Apr 30, 2024
9239c44
Pass AlgorithmRunner into FittingPresenter
robertapplin May 2, 2024
0a8b6d8
Move call of fit algorithm to FittingPresenter
robertapplin May 2, 2024
c01f212
Create IFitPlotModel class and change ownership to FittingModel
robertapplin May 2, 2024
bfb1991
Combine addOutput methods into one method
robertapplin May 2, 2024
9c7e22d
Combine cleanFailedRun methods
robertapplin May 2, 2024
4503ed0
Remove unused updateSingleFitOutput function
robertapplin May 2, 2024
934b396
Tidy up changes for running single fits
robertapplin May 2, 2024
8781a1e
Move class methods to correct private or public sections
robertapplin May 2, 2024
1c8f060
Get Inelastic tests to build again
robertapplin May 3, 2024
6e862c8
Pass FitData raw pointer directly to FitPlotModel
robertapplin May 3, 2024
2be5db9
Update FitPlotPresenterTest
robertapplin May 3, 2024
8e0a5ff
Pass FitOutput directly into FitPlotModel
robertapplin May 3, 2024
8d4dcc4
Create FittingPresenterTest file
robertapplin May 3, 2024
1e046a7
Add tests for FittingPresenter
robertapplin May 3, 2024
112e833
Fix non-virtual destructor and other warnings
robertapplin May 7, 2024
e336403
Add log compression option to AlignAndFocusPowder
rosswhitfield May 14, 2024
41f5e26
set doc tests to false on dev docs only
jhaigh0 May 13, 2024
f444b1b
Update reduction docs with missing info
adriazalvarez May 16, 2024
d1c7b79
Fix typo in elwin instructions
adriazalvarez May 17, 2024
d34cc98
Clarify file numbers produced
cailafinn May 15, 2024
9021cb6
Fix workspace counts
cailafinn May 16, 2024
f85b698
Add missing commas
cailafinn May 17, 2024
ac196d0
Update FDA testing instructions
robertapplin May 20, 2024
6187fa7
Update HIFI test instructions
robertapplin May 20, 2024
6166d8a
Update PSI instructions to give location of dolly 1529
robertapplin May 20, 2024
8faaf84
Use ADS Observer class to observe ADS in output options
robertapplin May 23, 2024
1e0dc9e
Store presenter as unique ptr to ensure it gets destructed
robertapplin May 23, 2024
b51691c
Store presenters as unique ptrs in Data Manipulation Interface class
robertapplin May 23, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 35 additions & 9 deletions Framework/WorkflowAlgorithms/src/AlignAndFocusPowder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include "MantidKernel/ConfigService.h"
#include "MantidKernel/DateTimeValidator.h"
#include "MantidKernel/EnabledWhenProperty.h"
#include "MantidKernel/EnumeratedString.h"
#include "MantidKernel/InstrumentInfo.h"
#include "MantidKernel/ListValidator.h"
#include "MantidKernel/PropertyManager.h"
Expand Down Expand Up @@ -70,6 +71,7 @@ const std::string RESONANCE_UPPER_LIMITS("ResonanceFilterUpperLimits");
const std::string COMPRESS_TOF_TOL("CompressTolerance");
const std::string COMPRESS_WALL_TOL("CompressWallClockTolerance");
const std::string COMPRESS_WALL_START("CompressStartTime");
const std::string COMPRESS_MODE("CompressBinningMode");
const std::string L1("PrimaryFlightPath");
const std::string SPEC_IDS("SpectrumIDs");
const std::string L2("L2");
Expand All @@ -89,6 +91,11 @@ void getTofRange(const MatrixWorkspace_const_sptr &wksp, double &tmin, double &t
wksp->getXMinMax(tmin, tmax);
}
}

const std::vector<std::string> binningModeNames{"Default", "Linear", "Logarithmic"};
enum class BinningMode { DEFAULT, LINEAR, LOGARITHMIC, enum_count };
typedef Mantid::Kernel::EnumeratedString<BinningMode, &binningModeNames> BINMODE;

} // anonymous namespace

// Register the class into the algorithm factory
Expand Down Expand Up @@ -186,24 +193,25 @@ void AlignAndFocusPowder::init() {
"Maximum values to filter absorption resonance. This must have same number of values as "
"ResonanceFilterLowerLimits. Default behavior is to not filter.");

declareProperty(std::make_unique<PropertyWithValue<double>>(PropertyNames::COMPRESS_TOF_TOL, 1e-5, mustBePositive,
Direction::Input),
"Compress events (in "
"microseconds) within this "
"tolerance. (Default 1e-5)");
declareProperty(std::make_unique<PropertyWithValue<double>>(PropertyNames::COMPRESS_TOF_TOL, 1e-5, Direction::Input),
"Compress events (in microseconds) within this tolerance. (Default 1e-5). If negative then do "
"logorithmic compression.");
declareProperty(std::make_unique<PropertyWithValue<double>>(PropertyNames::COMPRESS_WALL_TOL, EMPTY_DBL(),
mustBePositive, Direction::Input),
"The tolerance (in seconds) on the wall-clock time for comparison. Unset "
"means compressing all wall-clock times together disabling pulsetime "
"resolution.");

auto dateValidator = std::make_shared<DateTimeValidator>();
dateValidator->allowEmpty(true);
declareProperty(PropertyNames::COMPRESS_WALL_START, "", dateValidator,
"An ISO formatted date/time string specifying the timestamp for "
"starting filtering. Ignored if WallClockTolerance is not specified. "
"Default is start of run",
Direction::Input);
declareProperty(PropertyNames::COMPRESS_MODE, binningModeNames[size_t(BinningMode::DEFAULT)],
std::make_shared<Mantid::Kernel::StringListValidator>(binningModeNames),
"Optional. Binning behavior can be specified in the usual way through sign of tolerance "
"('Default'); or can be set to one of the allowed binning modes. ");
declareProperty(PropertyNames::LORENTZ, false,
"Multiply each spectrum by "
"sin(theta) where theta is "
Expand Down Expand Up @@ -382,8 +390,14 @@ void AlignAndFocusPowder::exec() {
tmax = getProperty(PropertyNames::TOF_MAX);
m_preserveEvents = getProperty(PropertyNames::PRESERVE_EVENTS);
m_resampleX = getProperty(PropertyNames::RESAMPLEX);
const double compressEventsTolerance = getProperty(PropertyNames::COMPRESS_TOF_TOL);
double compressEventsTolerance = getProperty(PropertyNames::COMPRESS_TOF_TOL);
const double wallClockTolerance = getProperty(PropertyNames::COMPRESS_WALL_TOL);
const BINMODE mode = getPropertyValue(PropertyNames::COMPRESS_MODE);
if (mode == BinningMode::LINEAR)
compressEventsTolerance = std::fabs(compressEventsTolerance);
else if (mode == BinningMode::LOGARITHMIC)
compressEventsTolerance = -1. * std::fabs(compressEventsTolerance);

// determine some bits about d-space and binning
if (m_resampleX != 0) {
// ignore the normal rebin parameters
Expand Down Expand Up @@ -1223,7 +1237,7 @@ bool AlignAndFocusPowder::shouldCompressUnfocused(const double compressTolerance
if (hasWallClockTolerance)
return false;
// compressing isn't an option
if (compressTolerance <= 0)
if (compressTolerance == 0)
return false;

if (const auto eventWS = std::dynamic_pointer_cast<const EventWorkspace>(m_outputW)) {
Expand All @@ -1242,7 +1256,19 @@ bool AlignAndFocusPowder::shouldCompressUnfocused(const double compressTolerance

// assume one frame although this is generically wrong
// there are 3 fields in weighted events no time
const double sizeWeightedEventsEstimate = WEIGHTED_NOTIME_EVENT_BYTE_SIZE * tofRange / compressTolerance;
double sizeWeightedEventsEstimate;
if (compressTolerance > 0) // linear
sizeWeightedEventsEstimate = WEIGHTED_NOTIME_EVENT_BYTE_SIZE * tofRange / compressTolerance;
else { // log
if (tofmin_wksp < 0)
return false; // log compression cannot have negative TOF values

if (tofmin_wksp == 0)
tofmin_wksp = compressTolerance;

sizeWeightedEventsEstimate =
WEIGHTED_NOTIME_EVENT_BYTE_SIZE * log(tofmax_wksp / tofmin_wksp) / log1p(abs(compressTolerance));
}

double numEvents = static_cast<double>(eventWS->getNumberEvents());
const auto eventType = eventWS->getEventType();
Expand Down
34 changes: 34 additions & 0 deletions Framework/WorkflowAlgorithms/test/AlignAndFocusPowderTest.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ class AlignAndFocusPowderTest : public CxxTest::TestSuite {
AnalysisDataService::Instance().remove(m_inputWS);

// Test the output
auto eventWS = std::dynamic_pointer_cast<EventWorkspace>(m_outWS);
TS_ASSERT_EQUALS(eventWS->getNumberEvents(), 870622);
// [99] 1920.2339999999983, 41
TS_ASSERT_DELTA(m_outWS->x(0)[99], 1920.23400, 0.0001);
TS_ASSERT_EQUALS(m_outWS->y(0)[99], 41.);
Expand Down Expand Up @@ -421,6 +423,38 @@ class AlignAndFocusPowderTest : public CxxTest::TestSuite {
AnalysisDataService::Instance().remove(m_outputWS);
}

void testEventWksp_preserveEvents_logCompressTolerance() {
// Setup the event workspace
setUp_EventWorkspace("EventWksp_preserveEvents_logCompressTolerance");

// Set the inputs for doTestEventWksp
m_preserveEvents = true;
m_useGroupAll = false;
m_useResamplex = true;
m_compressTolerance = "-1e-5";

// Run the main test function
doTestEventWksp();

// Reset inputs to default values
m_compressTolerance = "0";

// Test the input
docheckEventInputWksp();
AnalysisDataService::Instance().remove(m_inputWS);

// Test the output: expected result shall be same as testEventWksp_preserveEvents but have fewer events
auto eventWS = std::dynamic_pointer_cast<EventWorkspace>(m_outWS);
TS_ASSERT_EQUALS(eventWS->getNumberEvents(), 451436);
// [99] 1920.2339999999983, 41
TS_ASSERT_DELTA(m_outWS->x(0)[99], 1920.23400, 0.0001);
TS_ASSERT_EQUALS(m_outWS->y(0)[99], 41.);
// [899] 673.0, 15013.033999999987
TS_ASSERT_DELTA(m_outWS->x(0)[899], 15013.03400, 0.0001);
TS_ASSERT_EQUALS(m_outWS->y(0)[899], 673.0);
AnalysisDataService::Instance().remove(m_outputWS);
}

void testEventWksp_preserveEvents_removePromptPulse() {
// Setup the event workspace
setUp_EventWorkspace("EventWksp_preserveEvents_removePromptPulse");
Expand Down
7 changes: 6 additions & 1 deletion buildconfig/Jenkins/Conda/conda-buildscript
Original file line number Diff line number Diff line change
Expand Up @@ -117,10 +117,15 @@ create_and_activate_mantid_developer_env

# Check whether this is an incremental build that only changes rst files
if [ -d $BUILD_DIR ]; then
if ${SCRIPT_DIR}/../check_for_changes dev-docs-only || ${SCRIPT_DIR}/../check_for_changes user-docs-only; then
if ${SCRIPT_DIR}/../check_for_changes user-docs-only; then
ENABLE_BUILD_CODE=false
ENABLE_UNIT_TESTS=false
ENABLE_SYSTEM_TESTS=false
elif ${SCRIPT_DIR}/../check_for_changes dev-docs-only; then
ENABLE_BUILD_CODE=false
ENABLE_UNIT_TESTS=false
ENABLE_SYSTEM_TESTS=false
ENABLE_DOC_TESTS=false
fi
rm -rf ${BUILD_DIR}/bin ${BUILD_DIR}/ExternalData ${BUILD_DIR}/Testing
find $WORKSPACE \( -iname 'TEST-*.xml' -o -name 'Test.xml' \) -delete
Expand Down
55 changes: 54 additions & 1 deletion dev-docs/source/Packaging.rst
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,59 @@ The ``--package-suffix`` argument is an optional string to append to the name
of the final package. We generally pick ``Unstable`` for installers not built
by the CI pipeline to indicate it has been built outside of the standard process.

.. _build_packages_from_branch:

Build packages from branch using Jenkins
----------------------------------------

Developers can build packages to test branches using the ``build_packages_from_branch`` `Jenkins job <build_packages_from_branch_job_>`_. This job provides the ability to,

- Run system tests on Windows, Mac, Linux, or all three.
- Build a packages on Windows, Mac, Linux, or all three.
- Publish the package(s) to a given Anaconda channel and label.
- Publish the package(s) to a given Github repository under a specified tag.

for a given branch of mantid. The branch can be from the main mantid repo or from a remote.

Options
#######

- ``BUILD_DEVEL`` [``none``, ``all``, ``linux-64``, ``win-64``, ``osx-64``]: Run the system tests for this OS.
- ``BUILD_PACKAGE`` [``none``, ``all``, ``linux-64``, ``win-64``, ``osx-64``]: Build a package on this OS.
- ``PACKAGE_SUFFIX``: String to append onto the standalone package name, useful for distinguishing builds. By default this is ``Unstable``.
- ``PUBLISH_TO_ANACONDA``: Set true to publish to the given Anaconda channel and label.
- ``PUBLISH_TO_GITHUB``: Set true to publish to the Github repository using the specified tag.
- ``ANACONDA_CHANNEL``: Anaconda channel to upload the package to. By default this is ``mantid``.
- ``ANACONDA_CHANNEL_LABEL``: Label attached to the uploaded package. By default this is ``unstable``.
- ``GITHUB_RELEASES_REPO``: Repository to store the release. By Default this is ``mantidproject/mantid``.
- ``GITHUB_RELEASES_TAG``: Name of the tag for the release; only to be used for release candidate builds.
- ``ANACONDA_TOKEN_CREDENTIAL_ID`` [``anaconda-cloud-token``, ``anaconda-token-ornl``]: One of two credentials to use for publishing to Anaconda.
- ``GH_ORGANIZATION_OR_USERNAME``: Name of the organisation or Github user name who owns the repository with the code to build. By default this is ``mantidproject``, if you are building from a fork this will need to change to your username.
- ``BRANCH_NAME``: Name of the branch to build the packages from.

Example
#######

Say I've implemented a new file searching method on a branch ``1234_new_file_search`` and I want to test this on IDAaaS, one of the easiest ways to do this would be to build the packages and upload them to Anaconda using the pipeline. These are the steps I'd take to do this.

1. Go to the ``build_packages_from_branch`` `Jenkins job <build_packages_from_branch_job_>`_.
2. If needed click ``login`` in the top right of the window.
3. Go to ``Build with parameters`` in the side bar.
4. Fill out the following options:

- ``BUILD_DEVEL`` = ``none``
- ``BUILD_PACKAGE`` = ``linux-64``
- ``PUBLISH_TO_ANACONDA`` = true
- ``ANACONDA_CHANNEL_LABEL`` = ``new_file_system_test``
- ``ANACONDA_TOKEN_CREDENTIAL_ID`` = ``anaconda-cloud-token``
- ``BRANCH_NAME`` = ``1234_new_file_search``

5. Click ``Build``. This will take you back to the main job page, the build just set off will be the most recent (highest number) build on the left hand side. It is a good idea to make note of the build number / copy the link somewhere safe. If the build is for testing a pr, make sure to add the link to the testing instructions.
6. Once the job has successfully completed, check `the Mantid Anaconda page <mantid-conda-org_>`_ to make sure it has uploaded.
7. Head to IDAaaS (or any linux system) and run ``mamba install -c mantid/label/new_file_system_test mantidworkbench`` in a new environment to install the test package.

Most often, you won't need to upload the packages to Anaconda, this is most useful in cases where installing standalone packages is inconvenient. Standalone package builds created by the jenkins job can be found under the jenkins job build artifacts, this is near the top of the page. Say you built a package for Windows using the jenkins job, you should find a ``mantidworkbench`` exe file in the build artifacts.


.. _conda: https://conda.io
.. _mantid-conda-recipes: https://github.com/mantidproject/mantid/tree/main/conda
Expand All @@ -130,4 +183,4 @@ by the CI pipeline to indicate it has been built outside of the standard process
.. _download-page: https://download.mantidproject.org
.. _nsis: https://sourceforge.net/projects/nsis/
.. _dmg: https://en.wikipedia.org/wiki/Apple_Disk_Image
.. _standalone-scripts: https://github.com/mantidproject/mantid/blob/main/installers/conda
.. _build_packages_from_branch_job: https://builds.mantidproject.org/job/build_packages_from_branch/
7 changes: 4 additions & 3 deletions dev-docs/source/Testing/Indirect/DataReductionTests.rst
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Data reduction
#. Enter ``Input Runs`` 26173
#. Click ``Run``
#. This should generate a workspace with ``_calib`` at the end, delete this workspace
#. Change the ``Scale by factor`` value to 0.5
#. Check the ``Scale by factor`` checkbox and change the value of the scale to 0.5.
#. Click ``Run``
#. This should generate a workspace with ``_calib`` at the end
#. Check the ``Create RES`` box
Expand All @@ -41,6 +41,7 @@ Data reduction
#. Make sure that you keep the ``_calib`` workspace, it is needed for the next test
#. Enter ``Input Runs`` 59057-59059 and check ``Sum Files``
#. Set ``Reflection`` to 004
#. Click ``Run``
#. This should produce a new ``_calib`` workspace, with ``004`` in the name.
#. Before moving on, set ``Reflection`` to 002

Expand All @@ -57,13 +58,13 @@ Data reduction
#. Check the ``Use Calib File`` box
#. Change ``File`` to ``Workspace`` and choose the ``_calib`` workspace previously created (55878 from the previous test)
#. Click ``Run``
#. In the main GUI right-click on the ``iris26184_multi_graphite002_red`` workspace
#. In the main GUI right-click on the ``iris26184-26185_multi_graphite002_red`` workspace
#. Choose ``Plot spectrum``, note the number of spectra, should be 51
#. Click ``Cancel``
#. In the ``Data reduction`` GUI, change the ``Detector Grouping`` to Groups
#. Set ``Groups`` to 5
#. Click ``Run``
#. In the main GUI right-click on the ``iris26184_multi_graphite002_red`` workspace
#. In the main GUI right-click on the ``iris26184-26185_multi_graphite002_red`` workspace
#. Choose ``Plot spectrum``, note the number of spectra, should be 6
#. Choose ``Plot All``, this should result in a plot of all 6 spectra
#. Open ``Interfaces`` > ``Inelastic`` > ``Data Manipulation`` and go to the ``S(Q, W)`` tab
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Elwin tab
#. Add the loaded workspaces
#. Click ``Run``
#. This should result in three new workspaces again, this time with file ranges as their name
#. In the main GUI right-click on ``MAR27691-27698_graphite002_red_elwin_eq2`` and choose ``Plot Spectrum``, choose ``Plot All``
#. In the main GUI right-click on ``MAR27691-27698_red_elwin_eq2`` and choose ``Plot Spectrum``, choose ``Plot All``
#. This should plot two lines of :math:`ln(Counts(microAmp.hour))^{-1}` vs :math:`Q2`

.. _elwin_inelastic_test:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ Group 2: PSI data

This group tests bin data from the PSI facility and introduces background corrections.
Test instructions can be found at :ref:`Muon_Analysis_PSI-ref`.
You will need the following run:
You will need the following file from the unit test data:

- dolly 1529
- deltat_tdc_dolly_1529.bin

Group 3: HIFI data
^^^^^^^^^^^^^^^^^^
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Loading Data Test
- Open Muon Analysis
- On the **Home** tab set the instrument to **PSI**
- The load current run button should be greyed out
- Load **dolly 1529** using the **Browse** button
- Load **deltat_tdc_dolly_1529.bin** from the unit test data using the **Browse** button
- Set `Rebin` to `Fixed` and enter a value of `5`
- You will get 4 lines that all curve upwards
- If you tick the `Plot raw` option the data will change
Expand Down
4 changes: 2 additions & 2 deletions dev-docs/source/Testing/MuonAnalysis_test_guides/Muon_FDA.rst
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ FFT Test
- Change *Instrument* to **MUSR**, found in the *Home* tab
- In the loading bar enter ``62260``
- Go to the **Transform** tab
- Set the workspace to "MUSR00062260; Group; bkwd; Asym; FD"
- Set the workspace to "MUSR00062260; Group; bkwd; Asymmetry; FD"
- Click the calculate FFT button and a plot will appear
- The plot window will show a broad peak
- In the **Fitting** tab it will contain 3 workspace ending in `Re_unit_MHz` (real), `Im_unit_MHz` (imaginary) and `mod_unit_MHz` (modulus)
Expand All @@ -36,7 +36,7 @@ FFT Test
- The "padding" adds zeros to the end of the time domain data set, to improve the sampling of the FFT
- Set the xrange for the plot to be from ``0`` to ``2`` by changing the x min and x max values below the plot
- Set the "padding" to zero and press calculate
- The plots should be a nice peak, but it will have lots of straight lines
- The plot should still have a peak, but it will be less smooth
- Set the "padding" to ``50`` and press calculate
- The plot will now be nice and smooth
- At the top of the plotting window change the unit from "Frequency" to "Field", the data will have different x axis
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ HIFI Transverse Field Simultaneous Fitting
- Click **Undo Fits**
- Click the value for the **Frequency** parameter; A ``...`` should appear
next to it, click it. A new window should appear
- Enter values for each run in the table as from ``0.0`` to ``1.1`` in
steps of ``0.1``
- Enter a value of ``0.01`` for the first run in the table
- For each of the other runs in the table, enter values from ``0.1`` to ``1.1`` in steps of ``0.1``
- Click **Ok**
- Click **Fit**
- This time the fit should work with a significantly lower value for **Chi-squared** (``<10``)
Expand Down Expand Up @@ -83,6 +83,7 @@ HIFI MultiPeriod Data
- Go to the **Sequential Fitting** tab
- Press ``Sequentially fit all``
- When its complete the table should update
- It is ok if some of the rows say "Failed". This happens because these rows need more iterations to converge. However, if you go to the Fitting tab and cycle through the datasets, you can see that the fits are still reasonably good.
- Selecting rows will show you the data and fit for those rows
- Go to the **Grouping** tab
- The ``Period`` column in the group table will show a series of numbers (1, 2, 3 or 4)
Expand Down
8 changes: 6 additions & 2 deletions dev-docs/source/Testing/SANSGUI/ISISSANSGUITests.rst
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,10 @@ Processing
#. In the workspaces list, there should be a series of new workspaces; four
group workspaces and four 1D workspaces.
#. Check your default save directory. For each reduction two banks (HAB/main) should
be saved. In total there should be 12 workspaces (6 CanSAS ``.xml`` and 6 NXcanSAS ``.h5``) saved. For each row and
file type there should be a reduced file (with no suffix), a sample, and a can workspace.
be saved. In total, there should be 20 workspaces saved. For each row, file type, and bank, there should be a
reduced file (with no suffix) and a ``sample`` file. The ``first_time`` line should also produce a ``can`` workspace
for each file type and bank. This is because both workspaces have the same ``can`` input run numbers and so the
reduction only calculates it once.
#. Double-click the 1D workspaces and you should get a single line plot.
#. Clear the newly created files and workspaces to make the next test easier
#. Change the contents of the first cell in the first row to ``74045`` and click
Expand Down Expand Up @@ -263,3 +265,5 @@ Display
have clear tooltips.
#. In the settings, hover over a random selection of buttons and text boxes to check tooltips are still there.
Users rely on the tooltips a lot and really do notice each missing one.
*Note: The* ``Wavelength`` *section of the settings is missing its tooltips. We and the users are aware of this so an
issue should not be made when it is discovered.*
Loading
Loading