Mind Reading: Difference between revisions

From CCN Wiki
Jump to navigation Jump to search
Line 3: Line 3:
If the goal is simply to distinguish task block from rest periods, use <code>findBlockBoundaries</code> as follows:
If the goal is simply to distinguish task block from rest periods, use <code>findBlockBoundaries</code> as follows:
  b=bookends{1}; %creating targets for first run, so use first set of bookends
  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
  schedule=zeros(1,b(end)); %1 zero for each volume -- default=baseline
  for block=1:size(b,1)
  for block=1:size(b,1)
   s(b(block,1):b(block,2))=1; %block volumes get a '1'
   schedule(b(block,1):b(block,2))=1; %block volumes get a '1'
  end
  end



Revision as of 17:21, 11 July 2016

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
schedule=zeros(1,b(end)); %1 zero for each volume -- default=baseline
for block=1:size(b,1)
 schedule(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, schedule 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