Mind Reading: Difference between revisions
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
	
| Line 15: | Line 15: | ||
|   vols=floor(t/TR)+1; %convert the timestamps into volume numbers |   vols=floor(t/TR)+1; %convert the timestamps into volume numbers | ||
|   cond=double(cell2mat({expinfo.data.conditon})); %what condition is each trial?   |   cond=double(cell2mat({expinfo.data.conditon})); %what condition is each trial?   | ||
|   %p.s., note the typo on " |   %p.s., note the typo on "conditon" | ||
|   b=double(cell2mat({expinfo.data.block})); %what block is each trial? |   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 | |||
Revision as of 18:20, 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
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