0001 function [names,vals] = fmri_regress_stim(pinfo,minfo,sess)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025 regid = pinfo.regid;
0026
0027
0028 names = {regid};
0029 vals = [];
0030
0031
0032 ccm = parse_fh(minfo.cond_cue_map);
0033 cue = ccm(regid);
0034 resp_params = extract_resp_params_v2(cue,pinfo,minfo,sess);
0035 pc = set_var_col_const(pinfo.vars);
0036
0037 if isempty(resp_params)
0038 return
0039 end
0040
0041
0042
0043 sfilt.include.all = minfo.response_filter;
0044 sinfo = ensemble_filter(pinfo,sfilt);
0045 onsets = sinfo.data{pc.RUN_REL_TIME}/1000;
0046
0047
0048 if isfield(minfo,'music_dur')
0049
0050 durs = ones(size(onsets))*minfo.music_dur;
0051 elseif isfield(minfo,'music_dur_db') && minfo.music_dur_db
0052 sids = sinfo.data{pc.EVENT_CODE};
0053 durs = fmri_stim_duration(pinfo,minfo,sids);
0054 end
0055
0056
0057 if ~isempty(strfind(regid,'timespan'))
0058 [onsets,durs,resp_params] = ...
0059 fmri_regress_timespan(pinfo,minfo,onsets,durs,resp_params);
0060 end
0061
0062
0063 if isfield(minfo,'stim') && isfield(minfo.stim,regid)
0064 rinfo = minfo.stim.(regid);
0065
0066
0067 if isfield(rinfo,'dummy_regs')
0068
0069 sv = rinfo.dummy_regs.seg_vals;
0070 ns = length(sv);
0071 if isfield(rinfo.dummy_regs,'seg_names')
0072 sn = rinfo.dummy_regs.seg_names;
0073 else
0074 sn = {};
0075 for k=1:ns, sn{k} = sprintf('%s_%d',regid,k); end
0076 end
0077 vals = [];
0078 names = {};
0079 for k=1:length(sv)
0080 li = ismember(resp_params,sv{k});
0081 if isempty(li), continue, end
0082 lval = fmri_convolve_regress(onsets(li),durs(li),ones(length(li),1),...
0083 pinfo.scanner.TR,pinfo.scanner.dt,pinfo.scanner.actual_nvol);
0084 vals = [vals lval];
0085 names = [names sn{k}];
0086 end
0087
0088
0089 return
0090 end
0091 end
0092
0093
0094 vals = fmri_convolve_regress(onsets,durs,resp_params,pinfo.scanner.TR,...
0095 pinfo.scanner.dt,pinfo.scanner.actual_nvol);