function main(model,task,subtask) disp('RUN'); switch task case 'pre' preprocess(model,subtask); case 'decode' decode(model,subtask); case 'plot' decode_plot(model,subtask); end end % disp('all warnings OFF') % warn = warning('off','all'); function preprocess(model,task) % parse the GUI and pass parameters as structure timeLine = getTimeLineParams(model); subjects = getSubjectCellList(model); classDef = parseClassDef(model); mask = ['^' cell2mat(getImageFileMask(model)) '.*\.img$']; psthOpts = struct; psthOpts.colBias = getColumnBiasRemoveOption(model); psthOpts.psthNorm = getPsthNormalizationMethod(model); switch task case 'COORD' disp('COORD'); out = struct; out.header = struct; out.header.type = 'COORD'; out.header.timeline = timeLine; out.header.classDef = classDef; coordargs = struct; coordargs.subjects = subjects; coordargs.timeline = timeLine; coordargs.basedir = model.baseDir; coordargs.sessionList = 1:3; coordargs.eventList = classDef.eventMatrix; coordargs.coords = parseCoordinateTextField(model); coordargs.mask = mask; coordargs.radius = getSearchlightRadius(model); coordargs.psthOpts = psthOpts; out.subjectdata = runCoordTable(coordargs); assignin('base','preprocessedData',out); case 'ROI' disp('ROI'); out = struct; out.header = struct; out.header.type = 'ROI'; out.header.timeline = timeLine; out.header.classDef = classDef; roiargs = struct; roiargs.subjects = subjects; roiargs.timeline = timeLine; roiargs.classes = classDef; roiargs.mask = mask; roiargs.basedir = model.baseDir; roiargs.sessionList = 1:3; roiargs.eventList = classDef.eventMatrix; roiargs.psthOpts = psthOpts; out.subjectdata = runROIImageMaskMode(roiargs); assignin('base','preprocessedData',out); case 'FBS' disp('not implemented') end end function decode(model,task) preprocessedData = evalin('base','preprocessedData'); if(~(isa(preprocessedData,'struct'))) display('you need to preprocess some data before this step'); return end header = preprocessedData.header; header.frameShift = getFrameShiftParams(model); data = preprocessedData.subjectdata; switch task case 'SVM' disp('SVM'); svmopts = getSvmArgs(model,1); header.svmrnd = getSvmRnd(model); decode = calculateMultiSubjectDecodePerformance(header,data,svmopts); decode.header = header; assignin('base','decode',decode); case 'XSVM' disp('XSVM') svmopts = getSvmArgs(model,0); decode = xsvm_subject_loop(header,data,svmopts); decode.header = header; assignin('base','decode',decode); case 'SOM' display('SOM'); somopts = ''; decode = som_combined_subject_batch(header,data,somopts); decode.header = header; assignin('base','decode',decode); case 'X-SOM' disp('not implemented') end % disp('warings restored'); % warning('on',warn); end function decode_plot(model,type) decode = evalin('base','decode'); preprocessed = evalin('base','preprocessedData'); plotDecodePerformance(type,decode,preprocessed.subjectdata); end