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_MuMagToolMain widget for the MuMag tool
- 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:
objectLibrary for methods supporting MuMag
- 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(*values)¶
Bases:
EnumType of experiment
- PARALLEL = 1¶
- PERPENDICULAR = 2¶
- class sas.qtgui.Utilities.MuMag.datastructures.ExperimentalData(scattering_curve: Data1D, applied_field: float, saturation_magnetisation: float, demagnetising_field: float)¶
Bases:
objectDatapoint used as input for the MuMag tool
- applied_field: float¶
- demagnetising_field: float¶
- restrict_by_index(max_index: int)¶
Remove all points from data up to given index
- saturation_magnetisation: float¶
- exception sas.qtgui.Utilities.MuMag.datastructures.FitFailure¶
Bases:
ExceptionFit failed
- 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:
objectInput parameters for the fit
- 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:
objectOutput the MuMag fit
- 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:
objectOutput from least squares method
- I_residual: ndarray¶
- I_residual_stdev: ndarray¶
- I_simulated: ndarray¶
- S_H: ndarray¶
- S_H_stdev: ndarray¶
- 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:
LeastSquaresOutputOutput from least squares method for parallel case
- 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:
LeastSquaresOutputOutput from least squares method for perpendicular case
- S_M: ndarray¶
- S_M_stdev: ndarray¶
- exception sas.qtgui.Utilities.MuMag.datastructures.LoadFailure¶
Bases:
ExceptionFile loading failed
- 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
- 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