Mind Reading
Jump to navigation
Jump to search
Determine Targets
Classifying Task vs Baseline Blocks
If the goal is simply to distinguish task block from rest periods, use findBlockBoundaries
as follows:
b=bookends{1}; %creating targets for first run, so use first set of bookends s=zeros(1,b(end)); %1 zero for each volume -- default=baseline for block=1:size(b,1) s(b(block,1):b(block,2))=1; %block volumes get a '1' end
Classifying Task Blocks
If blocks are associated with different tasks to be classified, the schedule vector, s can be created similarly, but with some modification. Here's some examples.
TR=2.047; %the fMRI TR is 2.047 seconds in this example t=cell2mat({expinfo.data.timestamp}); vols=floor(t/TR)+1; %convert the timestamps into volume numbers cond=double(cell2mat({expinfo.data.conditon})); %what condition is each trial? %p.s., note the typo on "conditon" b=double(cell2mat({expinfo.data.block})); %what block is each trial? bnums=unique(b); %what are the different blocks? lookup=[0,1;0,2]; %condition codes that make up each block condition bcodes=[1,2];%code assigned to each block condition schedule=zeros(1,vols(end));%blank schedule preallocated for each volume
%%This loop will iterate through all the numbered blocks and use the lookup %%table to determine which block code to assign each block, depending on %%the individual trial conditions present in that block. %%Then, all individual volumes that belong to that block will get assigned %%that condition code. Anything not assigned a block code will remain '0' %%(or 'rest'/'baseline') for i=1:length(bnums) idx=find(b==bnums(i));%get indices of current block codes=unique(cond(idx));%what conditions are represented in this block? blockcondition=bcodes(ismember(lookup, codes, 'rows'));%lookup the blockcode (in bcodes) that matches the conditions in this block firstvol=vols(idx(1)); lastvol=vols(idx(end)); schedule(firstvol:lastvol)=blockcondition; end