sas.qtgui.Utilities.MuMag package

Subpackages

Submodules

sas.qtgui.Utilities.MuMag.MuMag module

class sas.qtgui.Utilities.MuMag.MuMag.MuMag(parent=None)

Bases: QMainWindow, Ui_MuMagTool

Main widget for the MuMag tool

__doc__ = ' Main widget for the MuMag tool '
__init__(self, /, parent: PySide6.QtWidgets.QWidget | None = None, flags: PySide6.QtCore.Qt.WindowType = Default(Qt.WindowFlags), *, iconSize: PySide6.QtCore.QSize | None = None, toolButtonStyle: PySide6.QtCore.Qt.ToolButtonStyle | None = None, animated: bool | None = None, documentMode: bool | None = None, tabShape: PySide6.QtWidgets.QTabWidget.TabShape | None = None, dockNestingEnabled: bool | None = None, dockOptions: PySide6.QtWidgets.QMainWindow.DockOption | None = None, unifiedTitleAndToolBarOnMac: bool | None = None) None

Initialize self. See help(type(self)) for accurate signature.

__module__ = 'sas.qtgui.Utilities.MuMag.MuMag'
get_fit_parameters() FitParameters

Get an object containing all the parameters needed for doing the fitting

hide_everything()

Hide all plots, disable tabs

importData()

Callback for the import data button

onFit()
onHelp()
onSave()

Save button pressed

show_fit_results()

Show the results of the fit in the widget

show_input_data()

Plot Experimental Data: Generate Figure

staticMetaObject = PySide6.QtCore.QMetaObject("MuMag" inherits "QMainWindow": )
sas.qtgui.Utilities.MuMag.MuMag.main()

Show a demo of the slider

sas.qtgui.Utilities.MuMag.MuMagLib module

class sas.qtgui.Utilities.MuMag.MuMagLib.MuMagLib

Bases: object

Library for methods supporting MuMag

__dict__ = mappingproxy({'__module__': 'sas.qtgui.Utilities.MuMag.MuMagLib', '__doc__': ' Library for methods supporting MuMag', 'logger': <Logger MuMag (WARNING)>, 'mu_0': 1.2566370614359173e-06, 'directory_popup': <staticmethod(<function MuMagLib.directory_popup>)>, 'import_data': <staticmethod(<function MuMagLib.import_data>)>, 'nice_log_plot_bounds': <staticmethod(<function MuMagLib.nice_log_plot_bounds>)>, 'simple_fit': <staticmethod(<function MuMagLib.simple_fit>)>, 'sweep_exchange_A': <staticmethod(<function MuMagLib.sweep_exchange_A>)>, 'least_squares_perpendicular': <staticmethod(<function MuMagLib.least_squares_perpendicular>)>, 'least_squares_parallel': <staticmethod(<function MuMagLib.least_squares_parallel>)>, 'refine_exchange_A': <staticmethod(<function MuMagLib.refine_exchange_A>)>, 'uncertainty': <staticmethod(<function MuMagLib.uncertainty>)>, '_filename_string': <staticmethod(<function MuMagLib._filename_string>)>, 'save_data': <staticmethod(<function MuMagLib.save_data>)>, '__dict__': <attribute '__dict__' of 'MuMagLib' objects>, '__weakref__': <attribute '__weakref__' of 'MuMagLib' objects>, '__annotations__': {}})
__doc__ = ' Library for methods supporting MuMag'
__module__ = 'sas.qtgui.Utilities.MuMag.MuMagLib'
__weakref__

list of weak references to the object

static _filename_string(datum: ExperimentalData)

Get the filename string associated with a bit of experimental data

static directory_popup()
static import_data(directory)

Import experimental data and get information from filenames

static least_squares_parallel(data: list[ExperimentalData], A)

Least squares fitting for a given exchange stiffness, A, parallel case

We are fitting the equation:

I_sim = I_res + response_H * S_H

= (I_res, S_H) . (1, response_H) = (I_res, S_H) . least_squares_x

finding I_res and S_H for each q value

static least_squares_perpendicular(data: list[ExperimentalData], A) LeastSquaresOutputPerpendicular

Least squares fitting for a given exchange stiffness, A, perpendicular case

We are fitting the equation:

I_sim = I_res + response_H * S_H + response_M * S_M

= (I_res, S_H, S_M) . (1, response_H, response_M) = (I_res, S_H, S_M) . least_squares_x

finding I_res, S_H, and S_M for each q value

logger = <Logger MuMag (WARNING)>
mu_0 = 1.2566370614359173e-06
static nice_log_plot_bounds(data: list[ndarray])

Get nice bounds for the loglog plots

Returns:

(lower, upper) bounds appropriate to pass to plt.xlim/ylim

static refine_exchange_A(data: list[ExperimentalData], exchange_A_initial: float, geometry: ExperimentGeometry, epsilon: float = 0.0001) LeastSquaresOutputPerpendicular | LeastSquaresOutputParallel

Refines the A parameter using Jarratt’s method of successive parabolic interpolation

static save_data(data: FitResults, directory: str)

Save the data

static simple_fit(data: list[ExperimentalData], parameters: FitParameters)

Main fitting (“simple fit”)

static sweep_exchange_A(parameters: FitParameters, data: list[ExperimentalData]) SweepOutput

Sweep over Exchange Stiffness A for perpendicular SANS geometry to get an initial estimate which can then be refined

static uncertainty(data: list[ExperimentalData], A_opt: float, geometry: ExperimentGeometry) float

Calculate the uncertainty for the optimal exchange stiffness A

sas.qtgui.Utilities.MuMag.datastructures module

class sas.qtgui.Utilities.MuMag.datastructures.ExperimentGeometry(value)

Bases: Enum

Type of experiment

PARALLEL = 1
PERPENDICULAR = 2
__doc__ = ' Type of experiment '
__module__ = 'sas.qtgui.Utilities.MuMag.datastructures'
class sas.qtgui.Utilities.MuMag.datastructures.ExperimentalData(scattering_curve: Data1D, applied_field: float, saturation_magnetisation: float, demagnetising_field: float)

Bases: object

Datapoint used as input for the MuMag tool

__annotations__ = {'applied_field': <class 'float'>, 'demagnetising_field': <class 'float'>, 'saturation_magnetisation': <class 'float'>, 'scattering_curve': <class 'sas.qtgui.Plotting.PlotterData.Data1D'>}
__dataclass_fields__ = {'applied_field': Field(name='applied_field',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'demagnetising_field': Field(name='demagnetising_field',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'saturation_magnetisation': Field(name='saturation_magnetisation',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'scattering_curve': Field(name='scattering_curve',type=<class 'sas.qtgui.Plotting.PlotterData.Data1D'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False)
__dict__ = mappingproxy({'__module__': 'sas.qtgui.Utilities.MuMag.datastructures', '__annotations__': {'scattering_curve': <class 'sas.qtgui.Plotting.PlotterData.Data1D'>, 'applied_field': <class 'float'>, 'saturation_magnetisation': <class 'float'>, 'demagnetising_field': <class 'float'>}, '__doc__': ' Datapoint used as input for the MuMag tool', 'restrict_by_index': <function ExperimentalData.restrict_by_index>, '__dict__': <attribute '__dict__' of 'ExperimentalData' objects>, '__weakref__': <attribute '__weakref__' of 'ExperimentalData' objects>, '__dataclass_params__': _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False), '__dataclass_fields__': {'scattering_curve': Field(name='scattering_curve',type=<class 'sas.qtgui.Plotting.PlotterData.Data1D'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'applied_field': Field(name='applied_field',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'saturation_magnetisation': Field(name='saturation_magnetisation',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'demagnetising_field': Field(name='demagnetising_field',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}, '__init__': <function ExperimentalData.__init__>, '__repr__': <function ExperimentalData.__repr__>, '__eq__': <function ExperimentalData.__eq__>, '__hash__': None, '__match_args__': ('scattering_curve', 'applied_field', 'saturation_magnetisation', 'demagnetising_field')})
__doc__ = ' Datapoint used as input for the MuMag tool'
__eq__(other)

Return self==value.

__hash__ = None
__init__(scattering_curve: Data1D, applied_field: float, saturation_magnetisation: float, demagnetising_field: float) None
__match_args__ = ('scattering_curve', 'applied_field', 'saturation_magnetisation', 'demagnetising_field')
__module__ = 'sas.qtgui.Utilities.MuMag.datastructures'
__repr__()

Return repr(self).

__weakref__

list of weak references to the object

applied_field: float
demagnetising_field: float
restrict_by_index(max_index: int)

Remove all points from data up to given index

saturation_magnetisation: float
scattering_curve: Data1D
exception sas.qtgui.Utilities.MuMag.datastructures.FitFailure

Bases: Exception

Fit failed

__doc__ = ' Fit failed '
__module__ = 'sas.qtgui.Utilities.MuMag.datastructures'
__weakref__

list of weak references to the object

class sas.qtgui.Utilities.MuMag.datastructures.FitParameters(q_max: float, min_applied_field: float, exchange_A_min: float, exchange_A_max: float, exchange_A_n: int, experiment_geometry: ExperimentGeometry)

Bases: object

Input parameters for the fit

__annotations__ = {'exchange_A_max': <class 'float'>, 'exchange_A_min': <class 'float'>, 'exchange_A_n': <class 'int'>, 'experiment_geometry': <enum 'ExperimentGeometry'>, 'min_applied_field': <class 'float'>, 'q_max': <class 'float'>}
__dataclass_fields__ = {'exchange_A_max': Field(name='exchange_A_max',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'exchange_A_min': Field(name='exchange_A_min',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'exchange_A_n': Field(name='exchange_A_n',type=<class 'int'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'experiment_geometry': Field(name='experiment_geometry',type=<enum 'ExperimentGeometry'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'min_applied_field': Field(name='min_applied_field',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'q_max': Field(name='q_max',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False)
__dict__ = mappingproxy({'__module__': 'sas.qtgui.Utilities.MuMag.datastructures', '__annotations__': {'q_max': <class 'float'>, 'min_applied_field': <class 'float'>, 'exchange_A_min': <class 'float'>, 'exchange_A_max': <class 'float'>, 'exchange_A_n': <class 'int'>, 'experiment_geometry': <enum 'ExperimentGeometry'>}, '__doc__': ' Input parameters for the fit', '__dict__': <attribute '__dict__' of 'FitParameters' objects>, '__weakref__': <attribute '__weakref__' of 'FitParameters' objects>, '__dataclass_params__': _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False), '__dataclass_fields__': {'q_max': Field(name='q_max',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'min_applied_field': Field(name='min_applied_field',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'exchange_A_min': Field(name='exchange_A_min',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'exchange_A_max': Field(name='exchange_A_max',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'exchange_A_n': Field(name='exchange_A_n',type=<class 'int'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'experiment_geometry': Field(name='experiment_geometry',type=<enum 'ExperimentGeometry'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}, '__init__': <function FitParameters.__init__>, '__repr__': <function FitParameters.__repr__>, '__eq__': <function FitParameters.__eq__>, '__hash__': None, '__match_args__': ('q_max', 'min_applied_field', 'exchange_A_min', 'exchange_A_max', 'exchange_A_n', 'experiment_geometry')})
__doc__ = ' Input parameters for the fit'
__eq__(other)

Return self==value.

__hash__ = None
__init__(q_max: float, min_applied_field: float, exchange_A_min: float, exchange_A_max: float, exchange_A_n: int, experiment_geometry: ExperimentGeometry) None
__match_args__ = ('q_max', 'min_applied_field', 'exchange_A_min', 'exchange_A_max', 'exchange_A_n', 'experiment_geometry')
__module__ = 'sas.qtgui.Utilities.MuMag.datastructures'
__repr__()

Return repr(self).

__weakref__

list of weak references to the object

exchange_A_max: float
exchange_A_min: float
exchange_A_n: int
experiment_geometry: ExperimentGeometry
min_applied_field: float
q_max: float
class sas.qtgui.Utilities.MuMag.datastructures.FitResults(parameters: FitParameters, input_data: list[ExperimentalData], sweep_data: SweepOutput, refined_fit_data: LeastSquaresOutputParallel | LeastSquaresOutputPerpendicular, optimal_exchange_A_uncertainty: float)

Bases: object

Output the MuMag fit

__annotations__ = {'input_data': list[sas.qtgui.Utilities.MuMag.datastructures.ExperimentalData], 'optimal_exchange_A_uncertainty': <class 'float'>, 'parameters': <class 'sas.qtgui.Utilities.MuMag.datastructures.FitParameters'>, 'refined_fit_data': sas.qtgui.Utilities.MuMag.datastructures.LeastSquaresOutputParallel | sas.qtgui.Utilities.MuMag.datastructures.LeastSquaresOutputPerpendicular, 'sweep_data': <class 'sas.qtgui.Utilities.MuMag.datastructures.SweepOutput'>}
__dataclass_fields__ = {'input_data': Field(name='input_data',type=list[sas.qtgui.Utilities.MuMag.datastructures.ExperimentalData],default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'optimal_exchange_A_uncertainty': Field(name='optimal_exchange_A_uncertainty',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'parameters': Field(name='parameters',type=<class 'sas.qtgui.Utilities.MuMag.datastructures.FitParameters'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'refined_fit_data': Field(name='refined_fit_data',type=sas.qtgui.Utilities.MuMag.datastructures.LeastSquaresOutputParallel | sas.qtgui.Utilities.MuMag.datastructures.LeastSquaresOutputPerpendicular,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'sweep_data': Field(name='sweep_data',type=<class 'sas.qtgui.Utilities.MuMag.datastructures.SweepOutput'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False)
__dict__ = mappingproxy({'__module__': 'sas.qtgui.Utilities.MuMag.datastructures', '__annotations__': {'parameters': <class 'sas.qtgui.Utilities.MuMag.datastructures.FitParameters'>, 'input_data': list[sas.qtgui.Utilities.MuMag.datastructures.ExperimentalData], 'sweep_data': <class 'sas.qtgui.Utilities.MuMag.datastructures.SweepOutput'>, 'refined_fit_data': sas.qtgui.Utilities.MuMag.datastructures.LeastSquaresOutputParallel | sas.qtgui.Utilities.MuMag.datastructures.LeastSquaresOutputPerpendicular, 'optimal_exchange_A_uncertainty': <class 'float'>}, '__doc__': ' Output the MuMag fit ', '__dict__': <attribute '__dict__' of 'FitResults' objects>, '__weakref__': <attribute '__weakref__' of 'FitResults' objects>, '__dataclass_params__': _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False), '__dataclass_fields__': {'parameters': Field(name='parameters',type=<class 'sas.qtgui.Utilities.MuMag.datastructures.FitParameters'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'input_data': Field(name='input_data',type=list[sas.qtgui.Utilities.MuMag.datastructures.ExperimentalData],default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'sweep_data': Field(name='sweep_data',type=<class 'sas.qtgui.Utilities.MuMag.datastructures.SweepOutput'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'refined_fit_data': Field(name='refined_fit_data',type=sas.qtgui.Utilities.MuMag.datastructures.LeastSquaresOutputParallel | sas.qtgui.Utilities.MuMag.datastructures.LeastSquaresOutputPerpendicular,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'optimal_exchange_A_uncertainty': Field(name='optimal_exchange_A_uncertainty',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}, '__init__': <function FitResults.__init__>, '__repr__': <function FitResults.__repr__>, '__eq__': <function FitResults.__eq__>, '__hash__': None, '__match_args__': ('parameters', 'input_data', 'sweep_data', 'refined_fit_data', 'optimal_exchange_A_uncertainty')})
__doc__ = ' Output the MuMag fit '
__eq__(other)

Return self==value.

__hash__ = None
__init__(parameters: FitParameters, input_data: list[ExperimentalData], sweep_data: SweepOutput, refined_fit_data: LeastSquaresOutputParallel | LeastSquaresOutputPerpendicular, optimal_exchange_A_uncertainty: float) None
__match_args__ = ('parameters', 'input_data', 'sweep_data', 'refined_fit_data', 'optimal_exchange_A_uncertainty')
__module__ = 'sas.qtgui.Utilities.MuMag.datastructures'
__repr__()

Return repr(self).

__weakref__

list of weak references to the object

input_data: list[ExperimentalData]
optimal_exchange_A_uncertainty: float
parameters: FitParameters
refined_fit_data: LeastSquaresOutputParallel | LeastSquaresOutputPerpendicular
sweep_data: SweepOutput
class sas.qtgui.Utilities.MuMag.datastructures.LeastSquaresOutput(exchange_A: float, exchange_A_chi_sq: float, q: ndarray, I_simulated: ndarray, I_residual: ndarray, S_H: ndarray, I_residual_stdev: ndarray, S_H_stdev: ndarray)

Bases: object

Output from least squares method

I_residual: ndarray
I_residual_stdev: ndarray
I_simulated: ndarray
S_H: ndarray
S_H_stdev: ndarray
__annotations__ = {'I_residual': <class 'numpy.ndarray'>, 'I_residual_stdev': <class 'numpy.ndarray'>, 'I_simulated': <class 'numpy.ndarray'>, 'S_H': <class 'numpy.ndarray'>, 'S_H_stdev': <class 'numpy.ndarray'>, 'exchange_A': <class 'float'>, 'exchange_A_chi_sq': <class 'float'>, 'q': <class 'numpy.ndarray'>}
__dataclass_fields__ = {'I_residual': Field(name='I_residual',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'I_residual_stdev': Field(name='I_residual_stdev',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'I_simulated': Field(name='I_simulated',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'S_H': Field(name='S_H',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'S_H_stdev': Field(name='S_H_stdev',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'exchange_A': Field(name='exchange_A',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'exchange_A_chi_sq': Field(name='exchange_A_chi_sq',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'q': Field(name='q',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False)
__dict__ = mappingproxy({'__module__': 'sas.qtgui.Utilities.MuMag.datastructures', '__annotations__': {'exchange_A': <class 'float'>, 'exchange_A_chi_sq': <class 'float'>, 'q': <class 'numpy.ndarray'>, 'I_simulated': <class 'numpy.ndarray'>, 'I_residual': <class 'numpy.ndarray'>, 'S_H': <class 'numpy.ndarray'>, 'I_residual_stdev': <class 'numpy.ndarray'>, 'S_H_stdev': <class 'numpy.ndarray'>}, '__doc__': ' Output from least squares method', '__dict__': <attribute '__dict__' of 'LeastSquaresOutput' objects>, '__weakref__': <attribute '__weakref__' of 'LeastSquaresOutput' objects>, '__dataclass_params__': _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False), '__dataclass_fields__': {'exchange_A': Field(name='exchange_A',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'exchange_A_chi_sq': Field(name='exchange_A_chi_sq',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'q': Field(name='q',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'I_simulated': Field(name='I_simulated',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'I_residual': Field(name='I_residual',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'S_H': Field(name='S_H',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'I_residual_stdev': Field(name='I_residual_stdev',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'S_H_stdev': Field(name='S_H_stdev',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}, '__init__': <function LeastSquaresOutput.__init__>, '__repr__': <function LeastSquaresOutput.__repr__>, '__eq__': <function LeastSquaresOutput.__eq__>, '__hash__': None, '__match_args__': ('exchange_A', 'exchange_A_chi_sq', 'q', 'I_simulated', 'I_residual', 'S_H', 'I_residual_stdev', 'S_H_stdev')})
__doc__ = ' Output from least squares method'
__eq__(other)

Return self==value.

__hash__ = None
__init__(exchange_A: float, exchange_A_chi_sq: float, q: ndarray, I_simulated: ndarray, I_residual: ndarray, S_H: ndarray, I_residual_stdev: ndarray, S_H_stdev: ndarray) None
__match_args__ = ('exchange_A', 'exchange_A_chi_sq', 'q', 'I_simulated', 'I_residual', 'S_H', 'I_residual_stdev', 'S_H_stdev')
__module__ = 'sas.qtgui.Utilities.MuMag.datastructures'
__repr__()

Return repr(self).

__weakref__

list of weak references to the object

exchange_A: float
exchange_A_chi_sq: float
q: ndarray
class sas.qtgui.Utilities.MuMag.datastructures.LeastSquaresOutputParallel(exchange_A: float, exchange_A_chi_sq: float, q: ndarray, I_simulated: ndarray, I_residual: ndarray, S_H: ndarray, I_residual_stdev: ndarray, S_H_stdev: ndarray)

Bases: LeastSquaresOutput

Output from least squares method for parallel case

__annotations__ = {}
__dataclass_fields__ = {'I_residual': Field(name='I_residual',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'I_residual_stdev': Field(name='I_residual_stdev',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'I_simulated': Field(name='I_simulated',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'S_H': Field(name='S_H',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'S_H_stdev': Field(name='S_H_stdev',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'exchange_A': Field(name='exchange_A',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'exchange_A_chi_sq': Field(name='exchange_A_chi_sq',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'q': Field(name='q',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False)
__doc__ = ' Output from least squares method for parallel case'
__eq__(other)

Return self==value.

__hash__ = None
__init__(exchange_A: float, exchange_A_chi_sq: float, q: ndarray, I_simulated: ndarray, I_residual: ndarray, S_H: ndarray, I_residual_stdev: ndarray, S_H_stdev: ndarray) None
__match_args__ = ('exchange_A', 'exchange_A_chi_sq', 'q', 'I_simulated', 'I_residual', 'S_H', 'I_residual_stdev', 'S_H_stdev')
__module__ = 'sas.qtgui.Utilities.MuMag.datastructures'
__repr__()

Return repr(self).

class sas.qtgui.Utilities.MuMag.datastructures.LeastSquaresOutputPerpendicular(exchange_A: float, exchange_A_chi_sq: float, q: ndarray, I_simulated: ndarray, I_residual: ndarray, S_H: ndarray, I_residual_stdev: ndarray, S_H_stdev: ndarray, S_M: ndarray, S_M_stdev: ndarray)

Bases: LeastSquaresOutput

Output from least squares method for perpendicular case

S_M: ndarray
S_M_stdev: ndarray
__annotations__ = {'S_M': <class 'numpy.ndarray'>, 'S_M_stdev': <class 'numpy.ndarray'>}
__dataclass_fields__ = {'I_residual': Field(name='I_residual',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'I_residual_stdev': Field(name='I_residual_stdev',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'I_simulated': Field(name='I_simulated',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'S_H': Field(name='S_H',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'S_H_stdev': Field(name='S_H_stdev',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'S_M': Field(name='S_M',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'S_M_stdev': Field(name='S_M_stdev',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'exchange_A': Field(name='exchange_A',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'exchange_A_chi_sq': Field(name='exchange_A_chi_sq',type=<class 'float'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'q': Field(name='q',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False)
__doc__ = ' Output from least squares method for perpendicular case'
__eq__(other)

Return self==value.

__hash__ = None
__init__(exchange_A: float, exchange_A_chi_sq: float, q: ndarray, I_simulated: ndarray, I_residual: ndarray, S_H: ndarray, I_residual_stdev: ndarray, S_H_stdev: ndarray, S_M: ndarray, S_M_stdev: ndarray) None
__match_args__ = ('exchange_A', 'exchange_A_chi_sq', 'q', 'I_simulated', 'I_residual', 'S_H', 'I_residual_stdev', 'S_H_stdev', 'S_M', 'S_M_stdev')
__module__ = 'sas.qtgui.Utilities.MuMag.datastructures'
__repr__()

Return repr(self).

exception sas.qtgui.Utilities.MuMag.datastructures.LoadFailure

Bases: Exception

File loading failed

__doc__ = ' File loading failed '
__module__ = 'sas.qtgui.Utilities.MuMag.datastructures'
__weakref__

list of weak references to the object

class sas.qtgui.Utilities.MuMag.datastructures.SweepOutput(exchange_A_checked: ndarray, exchange_A_chi_sq: ndarray, optimal: T)

Bases: Generic[T]

Results from brute force optimisiation of the chi squared for the exchange A parameter

__annotations__ = {'exchange_A_checked': <class 'numpy.ndarray'>, 'exchange_A_chi_sq': <class 'numpy.ndarray'>, 'optimal': ~T}
__dataclass_fields__ = {'exchange_A_checked': Field(name='exchange_A_checked',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'exchange_A_chi_sq': Field(name='exchange_A_chi_sq',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'optimal': Field(name='optimal',type=~T,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False)
__dict__ = mappingproxy({'__module__': 'sas.qtgui.Utilities.MuMag.datastructures', '__annotations__': {'exchange_A_checked': <class 'numpy.ndarray'>, 'exchange_A_chi_sq': <class 'numpy.ndarray'>, 'optimal': ~T}, '__doc__': '\n    Results from brute force optimisiation of the chi squared for the exchange A parameter\n    ', '__orig_bases__': (typing.Generic[~T],), '__dict__': <attribute '__dict__' of 'SweepOutput' objects>, '__weakref__': <attribute '__weakref__' of 'SweepOutput' objects>, '__parameters__': (~T,), '__dataclass_params__': _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False), '__dataclass_fields__': {'exchange_A_checked': Field(name='exchange_A_checked',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'exchange_A_chi_sq': Field(name='exchange_A_chi_sq',type=<class 'numpy.ndarray'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'optimal': Field(name='optimal',type=~T,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}, '__init__': <function SweepOutput.__init__>, '__repr__': <function SweepOutput.__repr__>, '__eq__': <function SweepOutput.__eq__>, '__hash__': None, '__match_args__': ('exchange_A_checked', 'exchange_A_chi_sq', 'optimal')})
__doc__ = '\n    Results from brute force optimisiation of the chi squared for the exchange A parameter\n    '
__eq__(other)

Return self==value.

__hash__ = None
__init__(exchange_A_checked: ndarray, exchange_A_chi_sq: ndarray, optimal: T) None
__match_args__ = ('exchange_A_checked', 'exchange_A_chi_sq', 'optimal')
__module__ = 'sas.qtgui.Utilities.MuMag.datastructures'
__orig_bases__ = (typing.Generic[~T],)
__parameters__ = (~T,)
__repr__()

Return repr(self).

__weakref__

list of weak references to the object

exchange_A_checked: ndarray
exchange_A_chi_sq: ndarray
optimal: T

sas.qtgui.Utilities.MuMag.models module

sas.qtgui.Utilities.MuMag.models.LorentzianModelPAR(q, A, M_s, H_0, H_dem, a_H, l_c)

Lorentzian Model for the generation of clean synthetic test data for parallel SANS geometry

sas.qtgui.Utilities.MuMag.models.LorentzianModelPERP(q, A, M_s, H_0, H_dem, a_H, a_M, l_c)

Lorentzian Model for the generation of clean synthetic test data for perpendicular SANS geometry

sas.qtgui.Utilities.MuMag.models.LorentzianNoisyModelPERP(q, A, M_s, H_0, H_dem, a_H, a_M, l_c, beta)

Lorentzian Model for the generation of noisy synthetic test data for perpendicular SANS geometry

sas.qtgui.Utilities.MuMag.models.SANS_Model_PAR(q, S_H, I_res, M_s, H_0, H_dem, A)

1D-Cross-Section of the parallel model

sas.qtgui.Utilities.MuMag.models.SANS_Model_PERP(q, S_H, S_M, I_res, M_s, H_0, H_dem, A)

1D-Cross-Section of the perendicular model

Module contents