Framework Changes#
Algorithms#
New features#
(#41439) The Fit v1 algorithm now supports custom step sizes to control the perturbation applied to each parameter during fitting. Set
StepSizeMethodtoCustomand pass the step size using theCustomStepSizesparameter.(#41714) ConvertToMD v1 now supports using time-series log values at event times as coordinates for additional dimensions when
UseLogTimesis enabled and the log names are specified in theOtherDimensionsproperty.(#41402) ConvertToMD v1 now supports the
UseLogTimesoption, which uses neutron event times in coordinate calculations instead of the average log time.(#41427) FileFinder and
MultipleFilePropertynow resolve multi-run hint strings (ranges and lists) in a single batched archive lookup for HFIR and SNS data, replacing the previous per-run network round trips to ONCat.(#41457) Stitch1DMany v1 has a new
OutputWorkspaceSuffixesproperty, which allows users to specify custom suffixes for the child workspaces in the output group when stitching workspace groups.(#41510) HFIRPowderReduction v1 now attempts to autopopulate the sample absorption parameters if correct data is found in sample run files.
(#41601) Stitch1D and Stitch1DMany have a
UseValidDataOnlyoption. Whentrue, ignores the contribution of invalid signal values to overlap bins when another workspace has valid data in the same bin. Whenfalse(default), the previous behaviour is maintained, where presence of invalid data in an overlap bin from either workspace results in the same invalid value in the output workspace.(#41778) Added the VesuvioTransmission v1 algorithm to evaluate the transmission spectrum on the
VESUVIOspectrometer for measured sample and empty run numbers.(#41618) SumSpectra v1 has been optimized for better performance.
(#41757) HFIRPowderReduction v1 now has an
IDFFilenameproperty to optionally override the instrument geometry from the sample file, and loads MIDAS data with LoadEventAsWorkspace2D v1.(#41802) MDNormDirectSC v1 can now handle MDEvent workspaces created by ConvertToMD v1 with
UseLogTimes=True.(#41806) FitPeaks v1 has a new
StrictConvergenceflag to control whether fits that stop when the parameter step size falls below the stopping threshold are considered successful. The default isTrue, preserving the previous behaviour.(#41806) FitPeaks v1 now supports the
Unweighted least squarescost function.(#41806) FitPeaks v1 has a new
PositionToleranceModeproperty to control howPositionToleranceis applied. The defaultCheckmode preserves the previous behaviour of discarding fits whose peak positions fall outside the specified tolerance. The newConstrainmode applies the tolerances as constraints during fitting and requiresConstrainPeakPositionsto be disabled.(#41806) FitPeaks v1 has a new
CalculateUnconstrainedErrorsproperty to control whether fit errors are recalculated without constraints after fitting. The default isFalse.(#41806) FitPeaks v1 has a new
PositionToleranceFractionalproperty to specify whether thePositionToleranceis treated as a fraction of the peak window (True) or as an absolute value (False, the default).(#41853) A new SaveMDToAscii v1 algorithm to save an
MDHistoWorkspaceto a plain ASCII file, with configurable exclusion of integrated dimensions, normalization, column separator and numeric precision.(#41867) EstimatePeakIntensities v1 now allows parallel, fit-free estimation of peak intensities within specified windows, using a skew-seeded background estimation.
(#41892) Parallelisation has been added to ConvertToMD v1 and improved in MDNormDirectSC v1.
(#42028) RenameWorkspace can now assign a name to a workspace object that is not already in the Analysis Data Service (ADS). In this case, the workspace will be added to the ADS.
(#42124) HFIRGoniometerIndependentBackground v1 has new options for duration- and monitor-count normalization. Backgrounds can now be calculated from exposure-normalized rotations and either retained in normalized units or restored to the per-rotation exposure scale. WAND (HB2C) and DEMAND (HB3A) sample-log naming conventions are supported.
(#42124) HFIRGoniometerIndependentBackground v1 no longer accepts a negative
BackgroundLevel. The property is a percentile and must be between 0 and 100.(#42126) MDNorm now supports continuous rotation data (generated by ConvertToMD with
useLogTimes).(#41749) SaveDaveGrp v1 has a new
ToQsInQENSDataproperty that enables savingQvalues instead of spectrum numbers in the.grpfile, calculated using GetQsInQENSData v1.(#42513) The memory checks performed by Rebin v1, BinMD v1 and SliceMD v1 can now be disabled by setting
algorithms.memorycheck = Offin the properties file. This is useful when the system-reported available memory does not reflect the memory actually available to Mantid.
Bugfixes#
(#41427) FileFinder now recognises compound file extensions (e.g.
.nxs.h5) listed inFacilities.xmlwhen expanding multi-run hints. This allows ranges such asCNCS100:105.nxs.h5to resolve correctly, rather than being misinterpreted as a stem ending in.nxsplus an.h5extension. As a consequence, hints that explicitly specify an extension (e.g.BSS_24234_event.nxsorSXD30904.raw.md5) no longer silently resolve to files with a different extension. To use the facility’s preferred extensions, specify the run number without an extension.(#41559) In
BeamProfileFactorythe auto-generated beam profile dimensions are now correct when the sample bounding box is offset from the origin. The beam half-extent is now taken from the furthest sample face on either side, so the beam remains valid for samples that are translated or rotated into a negative half-space.(#41559) EstimateScatteringVolumeCentreOfMass now accounts for the workspace’s goniometer when determining the shape’s centre of mass. Previously, the goniometer was ignored, resulting in incorrect values for shapes that are not rotationally symmetric.
(#41631) CreateDetectorTable has been significantly optimised for large workspaces with many spectra. This should also improve the performance of the new Instrument View, which uses this algorithm when opening.
(#41707) ExtractSpectra no longer gives an error when the argument
DetectorListis used on focused workspaces where a workspace index maps to several detector IDs.(#41806) FitPeaks v1, the
PeakParameterValueTableinput option now reads and applies row-per-spectrum parameter starting values. Previously this functionality was declared but not applied.(#41883) CopySample v1 no longer causes a crash when called with
CopyShape = False,CopyMaterial = Trueand an input workspace that is subsequently overwritten.(#41886) SaveYDA v1 now correctly distinguishes between spectra and bin centre axes when saving data.
(#42075) Unreadable instrument geometry cache files are now recreated automatically, preventing instrument loading failures.
(#42115) In HFIRPowderReduction v1, the
OutputWorkspacefield now has a default based on the IPTS and run number.OutputDirectorynow browses to a directory and the user can manually set the file name by typing it in the box.(#42134) CylinderAbsorptionCW v1 no longer has a
MultipleScatteringcheckbox, and theAttenuationXSectionproperty has been renamed toAbsorptionXSection.(#42207) SavePlot1D v1 no longer fails when run with Plotly 7.0 or later. The
plotlyandplotly-fulloutput types used plotly interfaces that were deprecated and then removed.(#42256) BinaryOperateMasks v1 no longer throws a spurious validation error when acting upon input workspaces with non-default detector mapping.
(#42397) Loading an instrument through
InstrumentFileFindernow consistently selects parameter files matching the search string when multiple candidates have the same validity date. This prevents parameters from being loaded from less suitable files.
Deprecated#
(#41906) The
DPDFreductionalgorithm has been deprecated and has no direct replacement.
Removed#
(#41830) Removed
SofQWCentreandSofQWPolygon(deprecated since release 6.12.0).(#41781) Removed the deprecated
BayesQuasiandBayesStretchalgorithms, which were based on thequasielasticbayeslibrary. Users should now use the newquickbayesreplacements, BayesQuasi2 v1 and BayesStretch2 v1, respectively.
Fit Functions#
New features#
(#41422) The Levenberg-Marquardt minimizer now supports Poisson deviance as a cost function.
Bugfixes#
(#41380) fitting parameters defined in an Instrument Parameter File no longer overwrite each other when they have the same name but belong to different functions (e.g.
Bk2BkExpConvPV:GammaandIkedaCarpenterPV:Gamma).
Data Objects#
New features#
(#41719) Sample Environment is now saved in the Nexus File.
(#41901)
getInstrumentName()can now be used on workspaces orExperimentInfoobjects to get the name of the underlying instrument. Use this instead ofgetInstrument().getName().(#42206)
InstrumentMetadatais now accessible from workspaces andExperimentInfoobjects through the methodsinstrumentValidFromDate(),instrumentValidToDate(),instrumentFilename(),instrumentXmlText(),instrumentDefaultView()andinstrumentDefaultAxis().(#42245) Instrument parameters are now stored in the Instrument 2.0
ParameterInfostore and accessed in C++ throughComponentInfo. Parameter values and the Python instrument API are unchanged.IComponent::getParameterNamesByComponent()and direct iteration overParameterMaphave been removed; see Instrument Access via SpectrumInfo, DetectorInfo, ComponentInfo for the replacements.
Bugfixes#
(#41794) Fixed a boundary-condition bug in
MDGridBoxsplitting that could cause events exactly on a child box’s upper boundary to be dropped during serial or threaded splitting.(#42494) Fixed sample log filtering that could prevent files from loading. Each sample log is now filtered only by its own invalid values, preventing invalid values in one log from incorrectly affecting other logs.
Live Data#
New features#
(#42089) Live-data algorithms have a new optional
Facilityproperty, which determines the facility against which theInstrumentproperty is resolved. IfFacilityis not set, the Mantid default facility is used. TheFacilityandInstrumentproperties are now validated together, and mismatches are reported against the offending property rather than raising an exception.
Bugfixes#
(#41606) The
SNSLiveEventDataListenerstate machine has been refactored to simplify its structure, remove race conditions, and make all state transitions explicit. These changes primarily add to theILiveListenerinterface and deprecate itsrunStatusmethod, while leaving mostILiveListenerimplementations largely unchanged.(#41722) The socket-read poll in
SNSLiveEventDataListenerhas been refactored to detect peer disconnections cleanly and improve responsiveness. This is expected to fix several cases where the live-data system hung when the ADARA server changed state.(#42089) Resolving
Instrumentno longer falls back to searching other facilities if the instrument is not found at the resolved facility. This fallback made instrument names shared between facilities ambiguous and undermined the purpose of having a default facility. Scripts that rely on finding an instrument outside the default facility must now specify itsFacility.
Python#
New features#
(#41559) The
MeshObjectclass now exposesgetBoundingBoxto python.(#41890)
MDHistoWorkspacenow providessetNumEventsArrayto overwrite the number-of-events array from a numpy array, mirroring the existingsetSignalArrayandsetErrorSquaredArraymethods. Manual updates through these array setters clear any link to the originalMDEventWorkspaceso downstream rebinning or slicing cannot bypass the manually-set values.(#41922) The dimensions of an
IMDHistoWorkspacecan now have theirnameandunitsedited from Python usinggetDimension(i).setName(...)andgetDimension(i).setUnits(...). Unit editing is supported for HKL and general frames; an HKL dimension acceptsr.l.u.or an inverse-Angstrom-style label such asin 2.5 A^-1. This is useful for relabelling the dimensions produced byMDNormfor unusual projections.(#42012) Added
mantid.api.MinimizerStatus, which exposes the status strings reported by function minimizers through a fit’sOutputStatusand provides anisConvergedmethod, so Python callers no longer have to hard code the wording. By default, the tolerance-limited stopping conditions count as converged alongsidesuccess; passstrict=Truefor an exact match.(#42028) Output workspace properties of the generic type
Workspacenow return aWorkspaceGroupobject when an algorithm is automatically dispatched over an input workspace group. Previously, the property value would be set to equal theWorkspaceGroupname, but the workspace component would be null.(#42205)
ComponentInfonow provides access to grid spacing, pixel counts and detector-ID numbering for rectangular detector grids through methods such aspixelGridNXandpixelGridXStep. TheisGridDetectormethod can be used to check whether a component has such a grid.(#42306) Instrument parameters can now be read and written from Python through
ComponentInfo, using methods such ashasParameter,getNumberParameter, andaddDouble. These replace the equivalent methods onInstrumentand its components. The optionalindexargument defaults to the instrument itself, as incomponent_info.getNumberParameter("x-pixel-size").(#41739) The
Instrumentclass now exposesgetXmlTextto python.
Bugfixes#
(#41876) Fixed a crash where a
Peakretrieved from aPeaksWorkspacein Python could reference deleted memory after the owning workspace is deleted. Peaks now keep their owning workspace alive for as long as they are in use.
Deprecated#
(#41756)
MatrixWorkspacenow exposes the preferredHistogramdata accessors to python:x(),y(),e(),dx()(read-only numpy wrappers) andmutableX(),mutableY(),mutableE(),mutableDx()(writable numpy wrappers). The legacyreadX(),readY(),readE(),readDx(),dataX(),dataY(),dataE(),dataDx()methods are now deprecated and emit aDeprecationWarningnaming the replacement, but continue to work and return the same data. By default, these warnings are shown for deprecated calls made directly from user scripts or interactive sessions, but are filtered out for calls from imported modules. Run Python with-W defaultto show all occurrences, or-W errorto raise them as exceptions. Thedx()andmutableDx()methods preserve the behaviour ofreadDx()anddataDx(): initialize missing X-error data to zeros, so they can be called without first checkinghasDx(). See the Transition to the HistogramData module concept page for more information on theHistogramdata model.(#41768)
ComponentInfonow exposessolidAngle(index, observer)andcomponentType(index)(returning aComponentType) to python. These provide index-based replacements forIDetector.solidAngleand theRectangularDetector/GridDetectortype checks, as part of the migration to theComponentInfo/DetectorInfoaccess layers.(#42181)
PanelSurfaceCalculator.getSideBySideViewPos()no longer takes an instrument parameter.
Dependencies#
New features#
(#41974) Upgraded Python to 3.13. See the Python 3.13 release notes for more details.
Bugfixes#
(#42067) Fixed an issue that could cause Matplotlib font-cache problems when running Mantid Workbench on Linux systems with shared home directories.