-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathpspm_get_scr.m
88 lines (83 loc) · 2.24 KB
/
pspm_get_scr.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
function [sts, data] = pspm_get_scr(import)
% ● Description
% pspm_get_scr is a common function for importing scr data
% ● Format
% [sts, data] = pspm_get_scr(import)
% ● Arguments
% import: import job structure with mandatory fields
% .sr:
% .data:
% .transfer: transfer parameters, either a struct with fields .Rs, .c,
% .offset, .recsys, or a file containing variables 'Rs' 'c',
% 'offset', 'recsys'.
% ● History
% Introduced in PsPM 3.0
% Written in 2008-2015 by Dominik R Bach (Wellcome Trust Centre for Neuroimaging)
% Maintained in 2022 by Teddy Chao (UCL)
% initialise
global settings
if isempty(settings)
pspm_init;
end
sts = -1;
% check transfer parameters
if isfield(import, 'transfer')
transferparams = import.transfer;
else
transferparams = 'none';
end;
clear c Rs offset recsys
if isfield(import, 'units')
dataunits = import.units;
else
dataunits='unknown';
end
if isstruct(transferparams)
try
c=transferparams.c;
catch
warning('ID:no_conversion_constant', '/nNo conversion constant given'); return;
end;
try
Rs=transferparams.Rs;
catch
Rs=0; end;
try
offset=transferparams.offset;
catch
offset=0;
end;
try
recsys=transferparams.recsys;
catch
recsys='conductance';
end;
dataunits = 'uS';
elseif ischar(transferparams)
if strcmp(transferparams, 'none')
c=1; Rs=0; offset=0; recsys='conductance';
elseif exist(transferparams)==2
load(transferparams);
if ~exist('c'), warning('ID:no_conversion_constant', '/nNo conversion constant given'); return; end;
if ~exist('Rs'), Rs=0; end;
if ~exist('offset'), offset=0; end;
if ~exist('recsys'), recsys='conductance'; end;
dataunits = 'uS';
else
warning('ID:nonexistent_file', '/nTransfer file doesn''t exist'); return;
end;
else
warning('/nWrong format for transfer parameters'); return;
end;
% convert data
inputdata = double(import.data);
data.data = pspm_transfer_function(inputdata, c, Rs, offset, recsys);
data.data = data.data(:);
% add header
data.header.chantype = 'scr';
data.header.units = dataunits;
data.header.sr = import.sr;
data.header.transfer = struct('Rs', Rs, 'offset', offset, 'c', c, 'recsys', recsys);
% check status
sts = 1;
return