attachment:cburt_watcher.m of CburtWatcher - CBU Base Wiki
location: attachment:cburt_watcher.m of CburtWatcher

Attachment 'cburt_watcher.m'

Download

   1 % Run watchport.py before this script
   2 function [cburt]=cburt_watcher(cburt,waitforincoming)
   3 
   4 % randomise
   5 rand('state',sum(100*clock))
   6 
   7 % Directory conventions
   8 try
   9     cburt.directory_conventions.incomingmetapath;
  10 catch
  11     cburt.directory_conventions.incomingmetapath='/realtime/scratch/incomingmeta';
  12 end;
  13 try
  14     cburt.directory_conventions.incomingdata;
  15 catch
  16     cburt.directory_conventions.incomingdata='/realtime/scratch/incoming';
  17 end;
  18 
  19 try
  20     cburt.directory_conventions.processeddata;
  21 catch
  22     cburt.directory_conventions.processeddata='/realtime/scratch/processed';
  23 end;
  24 
  25 try
  26     cburt.directory_conventions.rois;
  27 catch
  28     cburt.directory_conventions.rois='/realtime/scratch/rois';
  29 end;
  30 
  31 % Some options
  32 cburt.options.cburt_diagnostics.maximagesacross=16;
  33 try
  34     waitforincoming;
  35 catch
  36     waitforincoming=true;
  37 end;
  38 
  39 showv1=false;
  40 
  41 % ffa ROIs to be summarised
  42 cburt.rois=[];
  43 cburt=cburt_addroi(cburt,'left_ffa','left_ffa_10mm.nii');
  44 cburt=cburt_addroi(cburt,'right_ffa','right_ffa_10mm.nii');
  45 if (showv1)
  46     cburt=cburt_addroi(cburt,'left_v1','v1_left.nii');
  47     cburt=cburt_addroi(cburt,'right_v1','v1_right.nii');
  48 end;
  49 % %  ppa ROIs to be summarised
  50 % cburt.rois=[];
  51 % cburt=cburt_addroi(cburt,'left_ppa','left_ppa_10mm.nii');
  52 % cburt=cburt_addroi(cburt,'right_ppa','right_ppa_10mm.nii');
  53 % if (showv1)
  54 %     cburt=cburt_addroi(cburt,'left_v1','v1_left.nii');
  55 %     cburt=cburt_addroi(cburt,'right_v1','v1_right.nii');
  56 % end;
  57 
  58 
  59 %cburt.rois(3).filename='ifs_left.nii';
  60 %cburt.rois(4).filename='ifs_right.nii';
  61 %
  62 % List of actions to be trigger by the arrival of different kinds of data
  63 cburt.actions=[];
  64 action.shortname='localiser';
  65 action.protocolname='^CBU_Localiser.*';
  66 action.imgtype='ORIGINAL\PRIMARY\M\ND';
  67 action.onstart={};
  68 action.onreceived={'cburt_convert','cburt_diagnostics'};
  69 action.ontrigger={};
  70 action.onend={};
  71 cburt.actions=[cburt.actions action];
  72 
  73 action.shortname='structural';
  74 action.protocolname='^CBU_MPRAGE.*';
  75 action.imgtype='ORIGINAL\PRIMARY\M\ND\NORM';
  76 action.onstart={};
  77 action.onreceived={'cburt_convert_multipledcm_loadheader'};
  78 action.ontrigger={};
  79 action.onend={'cburt_convert_multipledcm_doit','cburt_normalise','cburt_roi_inversenormalise'};
  80 cburt.actions=[cburt.actions action];
  81 
  82 action.shortname='epinomoco';
  83 action.protocolname='^CBU_EPI.*';
  84 action.imgtype='ORIGINAL\PRIMARY\M\ND\MOSAIC';
  85 action.onstart={'cburt_dai_adaptive_setup'};
  86 action.onreceived={'cburt_convert','cburt_realign','cburt_roi_summarise','cburt_model_removespikes'};
  87 action.ontrigger={'cburt_dai_estimate'};
  88 action.onend={'cburt_dai_finalfigure','cburt_dumpfigures'};
  89 cburt.actions=[cburt.actions action];
  90 
  91 
  92 %% MODEL SETUP
  93 cburt.model.highpassperiod=128; % filter out frequencies with period below
  94 cburt.model.TR=1; % seconds
  95 cburt.model.ndummies=20;
  96 cburt.model.outliercutoff=0.5; % proportion of modal value
  97 cburt.model.globalrescale=0; % rescale by global signal?
  98 
  99 % Pre-prepared stimulus lists
 100 cburt.model.runspecificstimuli=false;
 101 
 102 cburt.model.gapbetweenblocks=24; % in TRs - also at end
 103 cburt.model.numstimperblock=[92 48 24 12 6 3]; %round(92*((0.7).^[0:11])); %[92 48 24 12 6 3]; %
 104 cburt.model.totalnumstim=max(cburt.model.numstimperblock); %92;
 105 cburt.model.nullevery=4; % 4 stimuli per null
 106 cburt.model.numstimincludingnulls=floor((cburt.model.nullevery+1)/cburt.model.nullevery*(cburt.model.numstimperblock-0.0001));
 107 
 108 blockstart=cburt.model.ndummies;
 109 cburt.model.trigger=[];
 110 for i=1:length(cburt.model.numstimincludingnulls)
 111 	cburt.model.trigger=[cburt.model.trigger blockstart + 6*([1:cburt.model.numstimincludingnulls(i)]-1) - 19]; 
 112 			% ...5 seconds before stimulus should be played
 113 	blockstart=blockstart+6*cburt.model.numstimincludingnulls(i)+cburt.model.gapbetweenblocks;
 114 end;
 115 cburt.model.maxscans=blockstart;
 116 
 117 % High pass filter with butterworth order 3
 118 nyquistfreq=0.5/cburt.model.TR;
 119 [cburt.model.filter.hpf_b cburt.model.filter.hpf_a]=butter(3,1/(cburt.model.highpassperiod*nyquistfreq),'high');
 120 
 121 
 122 fprintf('Maximum number of scans is %d\n',cburt.model.maxscans);
 123 
 124 if (showv1)
 125     cburt.model.contrast=[1 1 0 0]';
 126 else
 127     cburt.model.contrast=[1 1]'; % cburt.model.contrast=[1 1 -1 -1]';
 128 end;    
 129 cburt.model.stimlistfilename=fullfile(cburt.directory_conventions.incomingmetapath,'stimlist.txt');
 130 
 131 cburt.model.addrealignmentparms=2;
 132 
 133 %% LOAD IMAGES FOR DISPLAY
 134 global imgs
 135 load thumbnails.mat
 136 
 137 %% STIMULI - LOAD; ADAPT?
 138 if (~isfield(cburt.model,'loadstimuli'))
 139     cburt.model.loadstimuli=1;
 140 end;
 141 
 142 if (~isfield(cburt.model,'adaptstimuli'))
 143     cburt.model.adaptstimuli=1;
 144     cburt.model.loadstimuli=1;
 145 end;
 146 
 147 %% COMMUNICATION
 148 if (~isfield(cburt,'communication') || ~isfield(cburt.communication,'tostimulus'))
 149     cburt.communication.tostimulus.on=true;
 150     cburt.communication.tostimulus.port=6001;
 151     cburt=cburt_checkcommunications(cburt);
 152 end;
 153 
 154 
 155 %% RESTART ANALYSIS
 156 if (~isfield(cburt,'incoming') || ~isfield(cburt.incoming,'series'))
 157     cburt.incoming.series=[];
 158 end;
 159 
 160 if (~isfield(cburt.incoming,'dealtwith'))
 161     cburt.incoming.dealtwith=[];
 162 end;
 163 
 164 cburt.model.numstimulilistsused=0;
 165 
 166 
 167 
 168 %% WARNINGS
 169 if (~cburt.model.adaptstimuli)
 170     fprintf('WARNING: not adapting stimuli\n');
 171 end;
 172 if (~cburt.communication.tostimulus.on)
 173     fprintf('WARNING: not communicating with stimulus delivery machine\n');
 174 end;
 175 
 176 
 177 %% Lets go
 178 process=true;
 179 while(process)
 180     fn=dir(cburt.directory_conventions.incomingmetapath);
 181     for i=1:length(fn)
 182         if (length(fn(i).name)>6 && strcmp(fn(i).name(1:6),'series'))
 183             ind=str2num(fn(i).name(7:12));
 184             if (~any(cburt.incoming.dealtwith==ind))
 185                 fprintf('Data series %s %06d\n',fn(i).name,ind);
 186                 cburt=cburt_processseries(cburt,fullfile(cburt.directory_conventions.incomingmetapath,fn(i).name));
 187                 cburt.incoming.dealtwith=[cburt.incoming.dealtwith ind];
 188             end;
 189         end;
 190     end;
 191     process=waitforincoming;
 192 end;

Attached Files

To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.
  • [get | view] (2009-05-11 14:54:19, 5.7 KB) [[attachment:cburt_watcher.m]]
 All files | Selected Files: delete move to page copy to page

You are not allowed to attach a file to this page.