tr-epr-simulation/load_bruker.m

67 lines
2.7 KiB
Matlab
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

function [Data,params] = load_bruker(path)
%LOAD_MATLAB imports TR-EPR data recorded with Bruker's xEPR
% Usage: ['data_as_double','struct_with_parameters'] = load_bruker('C:/full/path/to/file.mat')
%
% Imports data recorded by xEPR, where x axis is time and y axis is
% magnetic field.
% PATH can be either pointing to .DSC or .DTA, but both need to be there
% and in the same folder. PATH must also contain forwardslashes only.
% The params struct contains metadata of the measurement and is displayed
% in the command window when calling the function.
%
% Note that this funtion is dependent on easyspin.
%
% Example for params output:
% params =
%
% struct with fields: Units
%
% Field_Center: 3500 G
% Field_Sweep: 2700 G
% Field_Step: 5 G
% Accumulations: 100 -
% laser_shotreprate: 20 -
% Field_Start: 2150 G
% Field_End: 4850 G
% Field_Vector: [1×540 double] G
% mwFreq: 9.6845 GHz
% mwPower: 0.2000 W
% QValue: 22800 -
% mwAtten: 30 dB
% mwFreqs: [681×1 double] GHz
% TimeBase: [1×10001 double] s
% Path: '/some/path/' -
% Name: 'example_data' -
%correct \ for /
corrpath = replace(path,"\","/");
%load Bruker data with help of easyspin
[bruker_axes,Data,bruker_params] = eprload(corrpath);
%assign metadata to custom params struct
params.Field_Center = bruker_params.YMIN + 0.5*bruker_params.YWID;
params.Field_Sweep = bruker_params.YWID;
params.Field_Step = bruker_params.YWID / (bruker_params.YPTS-1);
params.Accumulations = bruker_params.AVGS;
params.laser_shotreprate = "NOT RECORDED";
params.Field_Start = bruker_params.YMIN;
params.Field_End = bruker_params.YMIN + bruker_params.YWID;
params.Field_Vector = cell2mat(bruker_axes(1,2));
params.mwFreq = bruker_params.MWFQ / 1e9;
params.mwPower = bruker_params.MWPW * 1e3;
params.QValue = "NOT RECORDED";
params.mwAtten = str2double(extractBefore(string(bruker_params.PowerAtten),' '));
params.mwFreqs = "NOT RECORDED";
params.TimeBase = (bruker_params.XMIN:(bruker_params.XWID/bruker_params.XPTS):(bruker_params.XMIN+bruker_params.XWID)) .* 1e-9;
%get filename for further documentation and exporting figures
[datapath,dataname,~] = fileparts(corrpath);
params.Path = datapath;
params.Name = dataname;
%echo what information is contained in the structure called 'params'
params
end