0001 function dmri_fiber_tck_file_worker_start(data_dir, worker_number)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 worker_dir = fullfile(data_dir, ['worker', num2str(worker_number)]);
0031 mkdir(worker_dir);
0032 log_file = fullfile(worker_dir, 'log.txt');
0033 diary_flush(log_file);
0034
0035 try
0036 parcel_mm_file = fullfile(data_dir, filesep, 'parcel_mm_coord.mat');
0037
0038
0039 finished_dir = fullfile(data_dir, filesep, 'finished');
0040 processed_dir = fullfile(data_dir, filesep, 'processed');
0041
0042 while(exist(worker_dir, 'dir') == 7)
0043
0044 d = dir(finished_dir);
0045
0046 for k=1:length(d)
0047 name = d(k).name;
0048 if strcmp(name, '.') || strcmp(name, '..')
0049 continue;
0050 end
0051
0052
0053 [ret, warn] = mkdir(fullfile(processed_dir, filesep, name));
0054
0055
0056
0057 if isempty(warn)
0058
0059 log_write(sprintf('%s.tck processing start\n', name));
0060
0061 tck_filename = ['parcel', name, '.tck'];
0062 output_fiber_file = fullfile(data_dir, filesep, ['parcel_fiber', name, '.mat']);
0063
0064 if exist(fullfile(data_dir, tck_filename), 'file') ~= 2
0065 error(sprintf('%s not found.', tck_filename));
0066 end
0067 save_connection(data_dir, tck_filename, parcel_mm_file, output_fiber_file);
0068 log_write(sprintf('%s.tck processing end\n', name));
0069
0070
0071 ret = rmdir(fullfile(finished_dir, filesep, name));
0072 diary_flush(log_file);
0073 else
0074
0075
0076 end
0077
0078 if exist(worker_dir, 'dir') ~= 7, break; end
0079 pause(0.01);
0080 end
0081 pause(1);
0082 end
0083 catch
0084 errinfo = lasterror;
0085 log_write(errinfo.message);
0086 diary_flush;
0087 rethrow(errinfo);
0088 end
0089 diary_flush;
0090 exit;
0091
0092 function log_write(message)
0093 fprintf('%s:%s', datestr(now, 31), message);
0094
0095 function diary_flush(diary_file)
0096 diary off;
0097 if exist('diary_file', 'var') && ~isempty(diary_file)
0098 diary(diary_file);
0099 end
0100