--- a
+++ b/LV_evaluation_code/eval1.m
@@ -0,0 +1,147 @@
+%eval.m
+%   Demonstration of how to use compare_contours.m and write_results.m and
+%   evaluate a batch of contours.
+%
+%   Copyright: Imaging Research, Sunnybrook Health Sciences Centre, Toronto, ON, Canada
+%   Author: Perry Radau and Yingli Lu
+%   Email: perry.radau@gmail.com
+%   Version: 1.0
+%   Date: 2009/06/29
+clc
+clear all
+warning off all
+addpath 'functions'
+%all studies with SC* prefix under the root_folder directory will be processed.
+folder_prefix = 'SC*'; %This prefix is used for all studies.
+process_all = true; %Set this to false if you want to only calc results for first two studies.
+%DICOM folder name
+para.dicom_foldername = 'DICOM';
+%manual contour folder name
+para.manual_contour_foldername = 'contours-manual';
+para.manual_contour_subfoldername = 'IRCCI-expert';
+%auto contour folder name
+para.auto_contour_foldername = 'contours-auto';
+para.auto_contour_subfoldername = 'auto2';
+%para.auto_contour_subfoldername = 'BIL_HS';
+
+%If set to 1,normal is calculated based on auto contours, manual constour is the reference
+%contour. If set to 0, normal is calculated based on manual contours, auto contour is the reference contour
+para.auto_based_noraml = 1; 
+
+%distance figure folder name
+para.distance_figure_foldername = 'distance_figure';
+%DIDOM file name prefix 
+para.name_prefix = 'IM-0001-'; %according to the IM-0001-XXXX naming standard
+para.digit_length=4; %IM-0001-XXXX, XXXX is 4 digits
+%contour mode
+para.inside_contour_mode = 'icontour';
+para.outside_contour_mode = 'ocontour';
+%save distance figure if set to 1
+para.save_figure = 1;
+%segmentation mode
+para.auto_seg_mode='auto';
+para.manual_seg_mode ='manual';
+%for average distance
+para.init_value = -999;
+para.dist_limit = 5; %mm. If a contour's average distance larger than this number, it will be considered as bad contour
+
+%Keep checking directory until valid
+count = 0;
+while (true)
+    %root_folder = input('Enter root folder: ', 's');
+    root_folder=uigetdir;
+    results_folder = fullfile(root_folder,'results');
+    dirs = dir([root_folder filesep folder_prefix]);
+    if ~isempty(dirs)
+        break;
+    end
+    %check path for input files
+    disp('Invalid root folder, retry.');
+    count = count + 1;
+    if (count >= 3)
+        return;
+    end
+end
+
+%initialize
+all_compare_result = cell(length(dirs),1);
+
+if (process_all)
+    num_studies = length(dirs);
+else 
+    num_studies =3;%use this for testing.
+end
+    
+for i = 1:num_studies
+    display(['Processing: ' dirs(i).name]);
+    %full dicom folder. The DICOM images must be in this folder.
+    dicom_folder = [root_folder filesep dirs(i).name filesep para.dicom_foldername];
+    % 
+    %full manual contour folder.The last subfolder indicates which expert
+    %drew the manual contours.
+    manual_contour_folder = [root_folder filesep dirs(i).name filesep para.manual_contour_foldername filesep para.manual_contour_subfoldername];
+    
+    if ~exist(manual_contour_folder,'dir')
+           display(['Missing manual contour folder:', manual_contour_folder]);
+           return;
+    end
+    
+    %full auto contour folder.The last subfolder indicates which algorithm
+    %was used.
+    auto_contour_folder = [root_folder filesep dirs(i).name filesep para.auto_contour_foldername filesep para.auto_contour_subfoldername];
+    if ~exist(auto_contour_folder,'dir')
+           display(['Missing auto contour folder:', auto_contour_folder]);
+           continue;
+    end
+    %compare
+    compare_result = compare_contours(dicom_folder, manual_contour_folder, auto_contour_folder,para);
+    %record results. 
+    %The '_i' indicates inner contour, 
+    %The '_o' indicates outer contour. 
+    %The '_pic' means Papillary Included in the LV Cavity,
+    %The '_pim' means Papillary Included in the Myocardium
+
+    if ~isempty(compare_result)
+        all_compare_result{i}.patient_id = dirs(i).name;
+        all_compare_result{i}.auto_number_i = compare_result.auto_number_i;
+        all_compare_result{i}.auto_number_o=  compare_result.auto_number_o;
+        all_compare_result{i}.manual_number_i = compare_result.manual_number_i;
+        all_compare_result{i}.manual_number_o = compare_result.manual_number_o;
+        all_compare_result{i}.detect_percent_i = compare_result.detect_percent_i;
+        all_compare_result{i}.detect_percent_o = compare_result.detect_percent_o;
+        all_compare_result{i}.good_percent_i = compare_result.good_percent_i;
+        all_compare_result{i}.good_percent_o = compare_result.good_percent_o;
+        
+        all_compare_result{i}.auto_ef_pic = compare_result.auto_ef_pic;
+        all_compare_result{i}.auto_ef_pim = compare_result.auto_ef_pim;
+        all_compare_result{i}.auto_lvm_pic= compare_result.auto_lvm_pic;
+        all_compare_result{i}.auto_lvm_pim= compare_result.auto_lvm_pim;
+        
+        all_compare_result{i}.manual_lvm_pic = compare_result.manual_lvm_pic;
+        all_compare_result{i}.manual_lvm_pim = compare_result.manual_lvm_pim;
+        all_compare_result{i}.manual_ef_pic = compare_result.manual_ef_pic;
+        all_compare_result{i}.manual_ef_pim = compare_result.manual_ef_pim;
+        
+        all_compare_result{i}.avg_dist_i = compare_result.avg_dist_i;
+        all_compare_result{i}.avg_dist_o = compare_result.avg_dist_o;
+        all_compare_result{i}.avg_dm_i = compare_result.avg_dm_i;
+        all_compare_result{i}.avg_dm_o = compare_result.avg_dm_o;
+
+        % manual and auto volumes
+        all_compare_result{i}.auto_edv_pic= compare_result.auto_edv_pic;
+        all_compare_result{i}.auto_edv_pim= compare_result.auto_edv_pim;       
+        all_compare_result{i}.manual_edv_pic = compare_result.manual_edv_pic;
+        all_compare_result{i}.manual_edv_pim = compare_result.manual_edv_pim;
+
+        all_compare_result{i}.auto_esv_pic= compare_result.auto_esv_pic;
+        all_compare_result{i}.auto_esv_pim= compare_result.auto_esv_pim;       
+        all_compare_result{i}.manual_esv_pic = compare_result.manual_esv_pic;
+        all_compare_result{i}.manual_esv_pim = compare_result.manual_esv_pim;
+       
+   end
+end
+
+%write result to xls(excel) file
+write_results(results_folder, all_compare_result);
+
+disp('Done!');