diff --git a/src/Administrator_Input_Screen.m b/src/Administrator_Input_Screen.m index 621474a9..48804bb9 100644 --- a/src/Administrator_Input_Screen.m +++ b/src/Administrator_Input_Screen.m @@ -39,7 +39,8 @@ function Administrator_Input_Screen_OpeningFcn(hObject, eventdata, handles, vara % that the window of this GUI is positioned to the exact center of the % screen regardsless of the screen size of aspect ratio. %-------------------------------------------------------------------------- - + ExecutableFolder = GetExecutableFolder(); + cd(ExecutableFolder); handles.output = hObject; modes=get(handles.ModeSelectionPopUpMenu,'String'); %#ok @@ -51,7 +52,8 @@ function Administrator_Input_Screen_OpeningFcn(hObject, eventdata, handles, vara handles.myData.wsi_files = []; handles.myData.graphics = struct; - addpath('gui_graphics', 'icc_profiles', 'tasks','stages/Prior','stages/Ludl'); + %addpath('gui_graphics', 'icc_profiles', 'tasks','stages/Prior','stages/Ludl'); + addpath('icc_profiles', 'tasks','stages/Prior','stages/Ludl'); handles.myData.sourcedir = [cd, '\']; diff --git a/src/Camera_stage_review.m b/src/Camera_stage_review.m index bed812ca..42cff879 100644 --- a/src/Camera_stage_review.m +++ b/src/Camera_stage_review.m @@ -54,6 +54,8 @@ function Camera_stage_review_OpeningFcn(hObject, eventdata, handles, varargin) % varargin command line arguments to Camera_stage_review (see VARARGIN) % Choose default command line output for Camera_stage_review + ExecutableFolder = GetExecutableFolder(); + cd(ExecutableFolder); desc = {'\bfWelcome'... ,'Please choose the camera format'}; welcome_page(handles,desc ); diff --git a/src/GUI.m b/src/GUI.m index 38b6a6b0..8794a10d 100644 --- a/src/GUI.m +++ b/src/GUI.m @@ -180,7 +180,8 @@ function GUI_OpeningFcn(hObj, eventdata, handles, varargin) % The mode_index and the filename for the test are extracted from the % cell structure varargin. varargin stores the input arguments for the % whole Matlab application - addpath('gui_graphics', 'icc_profiles', 'tasks','stages/Prior','stages/Ludl'); + %addpath('gui_graphics', 'icc_profiles', 'tasks','stages/Prior','stages/Ludl'); + addpath('icc_profiles', 'tasks','stages/Prior','stages/Ludl'); handles_old = varargin{1}; handles.Administrator_Input_Screen = handles_old.Administrator_Input_Screen; myData = handles_old.myData; @@ -189,10 +190,10 @@ function GUI_OpeningFcn(hObj, eventdata, handles, varargin) handles.current = struct; % The images used in the GUI are loaded into the memory and into the % structure myData - myData.graphics.zooming_allowed=imread('zooming_allowed.bmp'); - myData.graphics.zooming_not_allowed=imread('zooming_not_allowed.bmp'); - myData.graphics.moving_allowed=imread('moving_allowed.bmp'); - myData.graphics.moving_not_allowed=imread('moving_not_allowed.bmp'); +% myData.graphics.zooming_allowed=imread('zooming_allowed.bmp'); +% myData.graphics.zooming_not_allowed=imread('zooming_not_allowed.bmp'); +% myData.graphics.moving_allowed=imread('moving_allowed.bmp'); +% myData.graphics.moving_not_allowed=imread('moving_not_allowed.bmp'); % save myData handles.myData = myData; @@ -364,21 +365,21 @@ function Initiate_GUI_Elements(handles) % The image objects for the indicators for panning and zooming are % created - handles.zooming_indication=... - image(myData.graphics.zooming_not_allowed,'Parent',handles.ZoomingInfoImage); - set(handles.zooming_indication,'visible','off'); - handles.moving_indication=... - image(myData.graphics.moving_not_allowed,'Parent',handles.PanningInfoImage); - set(handles.moving_indication,'visible','off'); - - set(handles.ZoomingInfoImage, ... - 'xtick', [], ... - 'ytick', [], ... - 'Visible','off'); - set(handles.PanningInfoImage, ... - 'xtick', [], ... - 'ytick', [], ... - 'Visible','off'); +% handles.zooming_indication=... +% image(myData.graphics.zooming_not_allowed,'Parent',handles.ZoomingInfoImage); +% set(handles.zooming_indication,'visible','off'); +% handles.moving_indication=... +% image(myData.graphics.moving_not_allowed,'Parent',handles.PanningInfoImage); +% set(handles.moving_indication,'visible','off'); +% +% set(handles.ZoomingInfoImage, ... +% 'xtick', [], ... +% 'ytick', [], ... +% 'Visible','off'); +% set(handles.PanningInfoImage, ... +% 'xtick', [], ... +% 'ytick', [], ... +% 'Visible','off'); % Foreground color, background color and the background color of the % axes is adjusted in accordance with the settings acquired from the @@ -484,14 +485,19 @@ function NextButtonPressed(hObj, eventdata, handles) %#ok taskinfo.duration = etime(handles.myData.EndTime, handles.myData.StartTime)+taskinfo.duration; handles.myData.tasks_out{handles.myData.iter} = taskinfo; guidata(handles.GUI, handles); - % Close out completed task + st = dbstack; - if ~strcmp(st(2).name,'Backbutton_Callback') + % exort output file + if ~strcmp(st(2).name,'Backbutton_Callback') + taskinfo.calling_function = st(1).name; handles.myData.taskinfo = taskinfo; guidata(handles.GUI, handles); taskinfo.task_handle(handles.GUI); handles = guidata(handles.GUI); + exportOutput(handles.GUI); + handles = guidata(handles.GUI); + end % If the completed task was a 'finish' task, then return switch taskinfo.id @@ -569,10 +575,12 @@ function NextButtonPressed(hObj, eventdata, handles) %#ok moveEndTime = clock; taskinfo.durationMove = etime(moveEndTime, moveStartTime); %auto fast register - autoRegStartTime = clock; - Fast_Register_Button_Callback(hObj, eventdata, handles); - autoRegEndTime = clock; - taskinfo.durationAutoReg = etime(autoRegEndTime,autoRegStartTime); + if myData.settings.autoreg == 1 + autoRegStartTime = clock; + Fast_Register_Button_Callback(hObj, eventdata, handles); + autoRegEndTime = clock; + taskinfo.durationAutoReg = etime(autoRegEndTime,autoRegStartTime); + end end end @@ -644,7 +652,43 @@ function abortbutton_Callback(hObject, eventdata, handles) %#ok % hObject handle to abortbutton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) - + % Save and export current task information +% myData=handles.myData; +% taskinfo = myData.tasks_out{myData.iter}; +% guidata(handles.GUI, handles); +% switch taskinfo.id +% case 'finish' +% +% close all force +% return +% +% end +% st = dbstack; +% taskinfo.calling_function = st(1).name; +% handles.myData.taskinfo = taskinfo; +% guidata(handles.GUI, handles); +% taskinfo.task_handle(handles.GUI); +% handles = guidata(handles.GUI); +% +% % Save and export rest task information +% while(handles.myData.iter<=handles.myData.ntasks) +% handles.myData.iter = handles.myData.iter+1; +% guidata(handles.GUI, handles); +% taskinfo = handles.myData.tasks_out{handles.myData.iter}; +% taskinfo.calling_function = st(1).name; +% handles.myData.taskinfo = taskinfo; +% guidata(handles.GUI,handles); +% taskinfo.task_handle(handles.GUI); +% handles = guidata(handles.GUI); +% % If the current task is 'finish' task, then return +% switch taskinfo.id +% case 'finish' +% Update_GUI_Elements(handles); +% return +% +% end +% end +% fclose(handles.myData.fid); close all force catch ME @@ -836,70 +880,70 @@ function GUI_WindowButtonMotionFcn(hObject, eventdata, handles) % handles structure with handles and user data (see GUIDATA) end -function winBtnMotionFcn(hObj,eventdata,handles) %#ok -try - %---------------------------------------------------------------------- - % winBtnMotionFcn (nested under winBtnDownFcn) - % This function is called when click-n-drag (panning) is happening - %---------------------------------------------------------------------- - pt = get(handles.ImageAxes, 'currentpoint'); - - % Update axes limits and automatically set ticks - % Set aspect ratios - set(handles.ImageAxes, ... - 'xlim', get(handles.ImageAxes, 'xlim') + ... - (handles.panning_Zooming_Tool.xy(1,1)-(pt(1,1)+pt(2,1))/2), ... - 'ylim', get(handles.ImageAxes, 'ylim') + ... - (handles.panning_Zooming_Tool.xy(1,2)-(pt(1,2)+pt(2,2))/2), ... - 'cameraviewanglemode', 'auto', ... - 'plotboxaspectratio', handles.panning_Zooming_Tool.pbar); - - guidata(hObj, handles); -catch ME - error_show(ME) -end -end +% function winBtnMotionFcn(hObj,eventdata,handles) %#ok +% try +% %---------------------------------------------------------------------- +% % winBtnMotionFcn (nested under winBtnDownFcn) +% % This function is called when click-n-drag (panning) is happening +% %---------------------------------------------------------------------- +% pt = get(handles.ImageAxes, 'currentpoint'); +% +% % Update axes limits and automatically set ticks +% % Set aspect ratios +% set(handles.ImageAxes, ... +% 'xlim', get(handles.ImageAxes, 'xlim') + ... +% (handles.panning_Zooming_Tool.xy(1,1)-(pt(1,1)+pt(2,1))/2), ... +% 'ylim', get(handles.ImageAxes, 'ylim') + ... +% (handles.panning_Zooming_Tool.xy(1,2)-(pt(1,2)+pt(2,2))/2), ... +% 'cameraviewanglemode', 'auto', ... +% 'plotboxaspectratio', handles.panning_Zooming_Tool.pbar); +% +% guidata(hObj, handles); +% catch ME +% error_show(ME) +% end +% end -function zoomMotionFcn(hObj,eventdata,handles) %#ok -try - %---------------------------------------------------------------------- - % zoomMotionFcn (nested under winBtnDownFcn) - % This performs the click-n-drag zooming function. The pointer - % location relative to the initial point determines the amount of - % zoom (in or out). - %---------------------------------------------------------------------- - C = 50; - pt = get(handles.GUI, 'currentpoint'); - r = C ^ (10*(handles.panning_Zooming_Tool.initPt(2) ... - - pt(2)) / handles.panning_Zooming_Tool.figPos(4)); - newLimSpan = r * handles.panning_Zooming_Tool.curPt2; - dTemp = diff(newLimSpan); %#ok - pt(1) = handles.panning_Zooming_Tool.initPt(1); - - % Determine new limits based on r - lims = handles.panning_Zooming_Tool.curPt + newLimSpan; - - % Update axes limits and automatically set ticks - % Set aspect ratios - set(handles.ImageAxes, ... - 'xlim', lims(:,1), ... - 'ylim', lims(:,2), ... - 'cameraviewanglemode', 'auto', ... - 'plotboxaspectratio', handles.panning_Zooming_Tool.pbar); - - % Update zoom indicator line - set(handles.ZoomLine, ... - 'xdata', [handles.panning_Zooming_Tool.initPt(1), ... - pt(1)]/handles.panning_Zooming_Tool.figPos(3), ... - 'ydata', [handles.panning_Zooming_Tool.initPt(2), ... - pt(2)]/handles.panning_Zooming_Tool.figPos(4)); - - guidata(hObj, handles); - -catch ME - error_show(ME) -end -end +% function zoomMotionFcn(hObj,eventdata,handles) %#ok +% try +% %---------------------------------------------------------------------- +% % zoomMotionFcn (nested under winBtnDownFcn) +% % This performs the click-n-drag zooming function. The pointer +% % location relative to the initial point determines the amount of +% % zoom (in or out). +% %---------------------------------------------------------------------- +% C = 50; +% pt = get(handles.GUI, 'currentpoint'); +% r = C ^ (10*(handles.panning_Zooming_Tool.initPt(2) ... +% - pt(2)) / handles.panning_Zooming_Tool.figPos(4)); +% newLimSpan = r * handles.panning_Zooming_Tool.curPt2; +% dTemp = diff(newLimSpan); %#ok +% pt(1) = handles.panning_Zooming_Tool.initPt(1); +% +% % Determine new limits based on r +% lims = handles.panning_Zooming_Tool.curPt + newLimSpan; +% +% % Update axes limits and automatically set ticks +% % Set aspect ratios +% set(handles.ImageAxes, ... +% 'xlim', lims(:,1), ... +% 'ylim', lims(:,2), ... +% 'cameraviewanglemode', 'auto', ... +% 'plotboxaspectratio', handles.panning_Zooming_Tool.pbar); +% +% % Update zoom indicator line +% set(handles.ZoomLine, ... +% 'xdata', [handles.panning_Zooming_Tool.initPt(1), ... +% pt(1)]/handles.panning_Zooming_Tool.figPos(3), ... +% 'ydata', [handles.panning_Zooming_Tool.initPt(2), ... +% pt(2)]/handles.panning_Zooming_Tool.figPos(4)); +% +% guidata(hObj, handles); +% +% catch ME +% error_show(ME) +% end +% end function GUI_WindowButtonUpFcn(hObj, eventdata, handles) %#ok try @@ -1178,3 +1222,49 @@ function Reticlebutton_Callback(hObject, eventdata, handles) end +function exportOutput(hObj) +try + handles = guidata(hObj); + st = dbstack; + myData = handles.myData; + exportIter = 1; + while exportIter <= myData.finshedTask+1 + + taskinfo = myData.tasks_out{exportIter}; + taskinfo.currentWorking = -1; + % handles.myData.tasks_out{handles.myData.iter} = taskinfo; + taskinfo.calling_function = st(1).name; + handles.myData.taskinfo = taskinfo; + guidata(handles.GUI, handles); + taskinfo.task_handle(handles.GUI); + handles = guidata(handles.GUI); + exportIter = exportIter +1; + end + + + while(exportIter<=handles.myData.ntasks+1) + + taskinfo = handles.myData.tasks_out{exportIter}; + if exportIter <= handles.myData.iter + taskinfo.currentWorking = 1; + else + taskinfo.currentWorking = 0; + end + taskinfo.calling_function = st(1).name; + handles.myData.taskinfo = taskinfo; + guidata(handles.GUI,handles); + taskinfo.task_handle(handles.GUI); + handles = guidata(handles.GUI); + exportIter = exportIter+1; + % If the current task is 'finish' task, then return + switch taskinfo.id + case 'finish' + Update_GUI_Elements(handles); + return + end + end + fclose(handles.myData.fid); +catch ME + error_show(ME) +end +end \ No newline at end of file diff --git a/src/GetExecutableFolder.m b/src/GetExecutableFolder.m new file mode 100644 index 00000000..92b52d51 --- /dev/null +++ b/src/GetExecutableFolder.m @@ -0,0 +1,18 @@ +function [executableFolder] = GetExecutableFolder() +try + if isdeployed + % User is running an executable in standalone mode. + [status, result] = system('set PATH'); + executableFolder = char(regexpi(result, 'Path=(.*?);', 'tokens', 'once')); +% fprintf(1, '\nIn function GetExecutableFolder(), currentWorkingDirectory = %s\n', executableFolder); + else + % User is running an m-file from the MATLAB integrated development environment (regular MATLAB). + executableFolder = pwd; + end +catch ME + errorMessage = sprintf('Error in function %s() at line %d.\n\nError Message:\n%s', ... + ME.stack(1).name, ME.stack(1).line, ME.message); + uiwait(warndlg(errorMessage)); +end +return; +end diff --git a/src/Load_Input_File.m b/src/Load_Input_File.m index dd4e00cc..ab1a256a 100644 --- a/src/Load_Input_File.m +++ b/src/Load_Input_File.m @@ -330,6 +330,15 @@ end tline = fgets(fid); [setting_name, setting_value]=strread(tline, '%s %d', 'delimiter', '='); + name = 'autoreg'; + if strcmp(strtrim(setting_name),name)==1 + settings.autoreg=setting_value; + else + io_error(name); + return; + end + tline = fgets(fid); + [setting_name, setting_value]=strread(tline, '%s %d', 'delimiter', '='); name = 'saveimages'; if strcmp(strtrim(setting_name),name)==1 settings.saveimages=setting_value; @@ -407,6 +416,8 @@ % tasks_in structure will hold all the input tasks tasks_in = []; ntasks = 0; + % new variable to track how many task has been done. + handles.myData.finshedTask = 0; while ~feof(fid) % Read and store the taskinfo @@ -436,9 +447,14 @@ end % The file is closed fclose(fid); - + % if some tasks are done, use given order. + myData.finshedTask = handles.myData.finshedTask; + if handles.myData.finshedTask >0 + settings.taskorder = 2; + end % Create a random order if settings.taskorder == 0 + rng('shuffle'); order_vector = randperm(ntasks); for i=1:ntasks order = order_vector(i); diff --git a/src/exportXML_ROIandCircle.m b/src/exportXML_ROIandCircle.m index f1f330d3..32b484ed 100644 --- a/src/exportXML_ROIandCircle.m +++ b/src/exportXML_ROIandCircle.m @@ -17,8 +17,6 @@ x4Square = Left; y4Square = Top + roi_h; - % circle parameter for 22mm eyepiecefield. Under 40X diameter is 550um - % circle parameter for 23mm eyepiecefield. Under 40X diameter is 576um diameter = 550; lengthCircleM = pi*diameter; lengthCircle = lengthCircleM/scan_scale; diff --git a/src/gui_graphics/moving_allowed.bmp b/src/gui_graphics/moving_allowed.bmp deleted file mode 100644 index 86aa8224..00000000 Binary files a/src/gui_graphics/moving_allowed.bmp and /dev/null differ diff --git a/src/gui_graphics/moving_not_allowed.bmp b/src/gui_graphics/moving_not_allowed.bmp deleted file mode 100644 index 5532a32f..00000000 Binary files a/src/gui_graphics/moving_not_allowed.bmp and /dev/null differ diff --git a/src/gui_graphics/zooming_allowed.bmp b/src/gui_graphics/zooming_allowed.bmp deleted file mode 100644 index 9d211fd7..00000000 Binary files a/src/gui_graphics/zooming_allowed.bmp and /dev/null differ diff --git a/src/gui_graphics/zooming_not_allowed.bmp b/src/gui_graphics/zooming_not_allowed.bmp deleted file mode 100644 index 17fe4116..00000000 Binary files a/src/gui_graphics/zooming_not_allowed.bmp and /dev/null differ diff --git a/src/inputfilesDevelopment/WSIczitest-axioplan2i.dapsi b/src/inputfilesDevelopment/WSIczitest-axioplan2i.dapsi index 992daee4..99369457 100644 --- a/src/inputfilesDevelopment/WSIczitest-axioplan2i.dapsi +++ b/src/inputfilesDevelopment/WSIczitest-axioplan2i.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -56,6 +58,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 3 taskorder = 0 diff --git a/src/inputfilesDevelopment/WSItiftest-axioplan2i .dapsi b/src/inputfilesDevelopment/WSItiftest-axioplan2i .dapsi index c05ff818..6165c92f 100644 --- a/src/inputfilesDevelopment/WSItiftest-axioplan2i .dapsi +++ b/src/inputfilesDevelopment/WSItiftest-axioplan2i .dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -56,6 +58,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 3 taskorder = 0 diff --git a/src/inputfilesDevelopment/manySmallROI.dapsi b/src/inputfilesDevelopment/manySmallROI.dapsi index 34c12e1c..ac3aeebf 100644 --- a/src/inputfilesDevelopment/manySmallROI.dapsi +++ b/src/inputfilesDevelopment/manySmallROI.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -115,6 +117,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 3 taskorder = 1 diff --git a/src/inputfilesDevelopment/philips-olympus-prior.dapsi b/src/inputfilesDevelopment/philips-olympus-prior.dapsi index c45300f0..0101436b 100644 --- a/src/inputfilesDevelopment/philips-olympus-prior.dapsi +++ b/src/inputfilesDevelopment/philips-olympus-prior.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -50,6 +52,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 1 taskorder = 0 diff --git a/src/inputfilesDevelopment/philipsSampleBigTiff.dapsi b/src/inputfilesDevelopment/philipsSampleBigTiff.dapsi index 539a7062..e24bcd14 100644 --- a/src/inputfilesDevelopment/philipsSampleBigTiff.dapsi +++ b/src/inputfilesDevelopment/philipsSampleBigTiff.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -58,6 +60,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 3 taskorder = 1 diff --git a/src/inputfilesDevelopment/test_newformat_registration.dapsi b/src/inputfilesDevelopment/test_newformat_registration.dapsi new file mode 100644 index 00000000..7e88dac0 --- /dev/null +++ b/src/inputfilesDevelopment/test_newformat_registration.dapsi @@ -0,0 +1,77 @@ +Author: +Date: +Time: + +For the Hamamatsu scanning at 20x + scan_scale = .4558 +For the Hamamatsu scanning at 40x + scan_scale = .2279 + +Point Grey Grashopper Color (GRAS-03K2C-C) + cam_format = RGB24_640x480 + cam_pixel_size = 7.4um +Point Grey Flea2 Color (FL2G-50S5C-C): Full resolution, full format + cam_format = F7_RGB24_2448x2048 + cam_pixel_size = 3.45 +Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 + cam_format = RGB24_1024x768 + cam_pixel_size = 6.9 + +Reminder: +taskorder=2 user specified order +taskorder=1 listed order +taskorder=0 random order +saveimages = 1 save WSI and camera images +saveimages = 2 only save WSI image +saveimages = 3 only save camera image +saveimages = 4 don't save WSI and camera images + + +Input File Task Formats +task_checkMof4,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_count, TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_mark1, TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_mark1_out,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_radio1of4,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_slider,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_mitotic_expert,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag +task_mitotic_train, TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag,ExpertCheckBoxes1-8,Expert_Score +task_mitotic_counts,TaskID,TaskOrder,Slot,MoveFlag,ZoomFlag + +SETTINGS +NUMBER_OF_WSI = 3 +wsi_slot_1 = C:\000_whole_slides\Halsey\CCB030148HE.svs +rgb_lut_slot_1 = icc_profiles\rgb_lut_gamma_inv1p8.txt +scan_scale_1 = 0.2503 +wsi_slot_2 = C:\000_whole_slides\Halsey\CCB030148pHH3.svs +rgb_lut_slot_2 = icc_profiles\rgb_lut_gamma_inv1p8.txt +scan_scale_2 = 0.2503 +wsi_slot_3 = C:\000_whole_slides\mariosOvarianCancer\Case8_hama.ndpi +rgb_lut_slot_3 = icc_profiles\rgb_lut_gamma_inv1p8.txt +scan_scale_3 = 0.2253 +label_pos = 6 +reticleID = KR-871 +cam_kind = Firewire +cam_format = RGB24_1024x768 +cam_pixel_size = 6.9 +mag_cam = 1.0 +mag_lres = 5 +mag_hres = 40 +stage_label = SCAN8Praparate_Ludl5000 +BG_Color_RGB = 0.55 = 0.55 = 0.55 +FG_Color_RGB = 0.00 = 0.00 = 0.00 +AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 +FontSize = 13 +autoreg = 1 +saveimages = 3 +taskorder = 0 + +BODY +start +finish +registration_test,1st0001,-1,1,4466.5,6236.5,799,799 +registration_test,11st0001,-1,2,8154,4084,799,799 +registration_test,30th0001,-1,3,145107.5,72024.5,799,799 +registration_test,2st0001,-1,1,5466.5,6236.5,799,799 +registration_test,12st0001,-1,2,9154,4084,799,799 +registration_test,31th0001,-1,3,145107.5,72024.5,799,799 diff --git a/src/inputfilesDevelopment/test_newformat_registration2.dapsi b/src/inputfilesDevelopment/test_newformat_registration2.dapsi new file mode 100644 index 00000000..5d39de20 --- /dev/null +++ b/src/inputfilesDevelopment/test_newformat_registration2.dapsi @@ -0,0 +1,73 @@ +Author: +Date: +Time: + +For the Hamamatsu scanning at 20x + scan_scale = .4558 +For the Hamamatsu scanning at 40x + scan_scale = .2279 + +Point Grey Grashopper Color (GRAS-03K2C-C) + cam_format = RGB24_640x480 + cam_pixel_size = 7.4um +Point Grey Flea2 Color (FL2G-50S5C-C): Full resolution, full format + cam_format = F7_RGB24_2448x2048 + cam_pixel_size = 3.45 +Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 + cam_format = RGB24_1024x768 + cam_pixel_size = 6.9 + +Reminder: +taskorder=2 user specified order +taskorder=1 listed order +taskorder=0 random order +saveimages = 1 save WSI and camera images +saveimages = 2 only save WSI image +saveimages = 3 only save camera image +saveimages = 4 don't save WSI and camera images + + +Input File Task Formats +task_checkMof4,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_count, TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_mark1, TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_mark1_out,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_radio1of4,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_slider,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_mitotic_expert,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag +task_mitotic_train, TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag,ExpertCheckBoxes1-8,Expert_Score +task_mitotic_counts,TaskID,TaskOrder,Slot,MoveFlag,ZoomFlag + +SETTINGS +NUMBER_OF_WSI = 3 +wsi_slot_1 = C:\000_whole_slides\Halsey\CCB030148HE.svs +rgb_lut_slot_1 = icc_profiles\rgb_lut_gamma_inv1p8.txt +scan_scale_1 = 0.2503 +wsi_slot_2 = C:\000_whole_slides\Halsey\CCB030148pHH3.svs +rgb_lut_slot_2 = icc_profiles\rgb_lut_gamma_inv1p8.txt +scan_scale_2 = 0.2503 +wsi_slot_3 = C:\000_whole_slides\mariosOvarianCancer\Case8_hama.ndpi +rgb_lut_slot_3 = icc_profiles\rgb_lut_gamma_inv1p8.txt +scan_scale_3 = 0.2253 +label_pos = 6 +reticleID = KR-871 +cam_kind = Firewire +cam_format = RGB24_1024x768 +cam_pixel_size = 6.9 +mag_cam = 1.0 +mag_lres = 5 +mag_hres = 40 +stage_label = SCAN8Praparate_Ludl5000 +BG_Color_RGB = 0.55 = 0.55 = 0.55 +FG_Color_RGB = 0.00 = 0.00 = 0.00 +AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 +FontSize = 13 +autoreg = 1 +saveimages = 3 +taskorder = 0 + +BODY +start +finish +mitotic_counts,1st0001,-1,1,1,1 +mitotic_counts,2nd0001,-1,1,1,1 \ No newline at end of file diff --git a/src/inputfilesDevelopment/test_newformat_registrationAll.dapsi b/src/inputfilesDevelopment/test_newformat_registrationAll.dapsi new file mode 100644 index 00000000..863ae826 --- /dev/null +++ b/src/inputfilesDevelopment/test_newformat_registrationAll.dapsi @@ -0,0 +1,79 @@ +Author: +Date: +Time: + +For the Hamamatsu scanning at 20x + scan_scale = .4558 +For the Hamamatsu scanning at 40x + scan_scale = .2279 + +Point Grey Grashopper Color (GRAS-03K2C-C) + cam_format = RGB24_640x480 + cam_pixel_size = 7.4um +Point Grey Flea2 Color (FL2G-50S5C-C): Full resolution, full format + cam_format = F7_RGB24_2448x2048 + cam_pixel_size = 3.45 +Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 + cam_format = RGB24_1024x768 + cam_pixel_size = 6.9 + +Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV +taskorder=2 user specified order +taskorder=1 listed order +taskorder=0 random order +saveimages = 1 save WSI and camera images +saveimages = 2 only save WSI image +saveimages = 3 only save camera image +saveimages = 4 don't save WSI and camera images + + +Input File Task Formats +task_checkMof4,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_count, TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_mark1, TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_mark1_out,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_radio1of4,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_slider,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_mitotic_expert,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag +task_mitotic_train, TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag,ExpertCheckBoxes1-8,Expert_Score +task_mitotic_counts,TaskID,TaskOrder,Slot,MoveFlag,ZoomFlag + +SETTINGS +NUMBER_OF_WSI = 1 +wsi_slot_1 = C:\000_whole_slides\tissue40x-8B.ndpi +rgb_lut_slot_1 = icc_profiles\rgb_lut_gamma_inv1p8.txt +scan_scale_1 = 0.2279 +label_pos = 12 +reticleID = KR-871 +cam_kind = USB +cam_format = F7_RGB_1224x1024_Mode1 +cam_pixel_size = 6.9 +mag_cam = 0.5 +mag_lres = 10 +mag_hres = 40 +stage_label = BioPrecision2-LE2_Ludl6000 +BG_Color_RGB = 0.55 = 0.55 = 0.55 +FG_Color_RGB = 0.00 = 0.00 = 0.00 +AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 +FontSize = 13 +autoreg = 1 +saveimages = 3 +taskorder = 0 + +BODY +start +finish +radio1of4,1st0001,-1,1,038459,16192,300,300,300,300,Qtext_radio1of1,1,1,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +count,2nd0001,-1,1,027728,11381,300,300,300,300,Qtext_count,1,1,description +slider,3rd0001,-1,1,19220,49879,300,300,300,300,Qtext_slider,1,1,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +mark1,4th0001,-1,1,041163,33208,300,700,300,700,Qtext_select_region,1,1,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +mark1_out,5th0001,-1,1,041163,33208,700,700,700,700,Qtext_select_region,1,1,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +mitotic_train,6th0001,-1,1,041163,33208,700,700,700,700,1,1,0,1,0,1,0,1,0,0,83 +mitotic_expert,7th0001,-1,1,041163,33208,700,700,700,700,1,1 +registration_test,8th0001,-1,1,19220,49879,799,799 +count_imagescope,10th0001,-1,1,027728,11381,300,300,300,300,Qtext_count,1,1,description +slider_imagescope,11th0001,-1,1,19220,49879,300,300,300,300,Qtext_slider,1,1,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +checkMof4,12th0001,-1,1,19220,49879,300,300,300,300,Qtext_slider,1,1,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +count2_imagescope,13th0001,-1,1,027728,11381,300,300,300,300,Qtext_count,1,1,description \ No newline at end of file diff --git a/src/inputfilesDevelopment/thorlabs20x-8B-axioplan2i-ludl-ImageScope.dapsi b/src/inputfilesDevelopment/thorlabs20x-8B-axioplan2i-ludl-ImageScope.dapsi new file mode 100644 index 00000000..19e94720 --- /dev/null +++ b/src/inputfilesDevelopment/thorlabs20x-8B-axioplan2i-ludl-ImageScope.dapsi @@ -0,0 +1,70 @@ +Author: +Date: +Time: + +For the Hamamatsu scanning at 20x + scan_scale = .4558 +For the Hamamatsu scanning at 40x + scan_scale = .2279 + +Point Grey Grashopper Color (GRAS-03K2C-C) + cam_format = RGB24_640x480 + cam_pixel_size = 7.4um +Point Grey Flea2 Color (FL2G-50S5C-C): Full resolution, full format + cam_format = F7_RGB24_2448x2048 + cam_pixel_size = 3.45 +Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 + cam_format = RGB24_1024x768 + cam_pixel_size = 6.9 + +Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV +taskorder=2 user specified order +taskorder=1 listed order +taskorder=0 random order +saveimages = 1 save WSI and camera images +saveimages = 2 only save WSI image +saveimages = 3 only save camera image +saveimages = 4 don't save WSI and camera images + + +Input File Task Formats +task_checkMof4,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_count, TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_mark1, TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_mark1_out,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_radio1of4,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_slider,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_mitotic_expert,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag +task_mitotic_train, TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag,ExpertCheckBoxes1-8,Expert_Score +task_mitotic_counts,TaskID,TaskOrder,Slot,MoveFlag,ZoomFlag + +SETTINGS +NUMBER_OF_WSI = 1 +wsi_slot_1 = C:\000_whole_slides\100113_ThorLabs_20x.ndpi +rgb_lut_slot_1 = icc_profiles\rgb_lut_identity.txt +scan_scale_1 = 0.4558 +label_pos = 6 +reticleID = KR-871 +cam_kind = Firewire +cam_format = RGB24_1024x768 +cam_pixel_size = 6.9 +mag_cam = 1.0 +mag_lres = 5 +mag_hres = 40 +stage_label = SCAN8Praparate_Ludl5000 +BG_Color_RGB = 0.55 = 0.55 = 0.55 +FG_Color_RGB = 0.00 = 0.00 = 0.00 +AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 +FontSize = 13 +autoreg = 1 +saveimages = 3 +taskorder = 0 + +BODY +start +finish +count2_imagescope,1st0001,-1,1,33607,13795,600,600,600,600,Qtext_count,1,1,Please count mitotic in this area +count2_imagescope,2nd0001,-1,1,44243,14014,600,600,600,600,Qtext_count,1,1,Please count mitotic in this area +count2_imagescope,3rd0001,-1,1,49968,14266,600,600,600,600,Qtext_count,1,1,Please count mitotic in this area \ No newline at end of file diff --git a/src/inputfilesDevelopment/thorlabs20x-axioplan2i-ludl.dapsi b/src/inputfilesDevelopment/thorlabs20x-axioplan2i-ludl.dapsi index b9fd3b28..738c16e5 100644 --- a/src/inputfilesDevelopment/thorlabs20x-axioplan2i-ludl.dapsi +++ b/src/inputfilesDevelopment/thorlabs20x-axioplan2i-ludl.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -50,6 +52,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 4 taskorder = 0 diff --git a/src/inputfilesDevelopment/thorlabs20x-olympus-ludl.dapsi b/src/inputfilesDevelopment/thorlabs20x-olympus-ludl.dapsi index 122c41fc..b2cd1764 100644 --- a/src/inputfilesDevelopment/thorlabs20x-olympus-ludl.dapsi +++ b/src/inputfilesDevelopment/thorlabs20x-olympus-ludl.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -50,6 +52,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 2 taskorder = 0 diff --git a/src/inputfilesDevelopment/tissue40x-8B-axioplan2i-ludl-ImageScope.dapsi b/src/inputfilesDevelopment/tissue40x-8B-axioplan2i-ludl-ImageScope.dapsi new file mode 100644 index 00000000..e86b6649 --- /dev/null +++ b/src/inputfilesDevelopment/tissue40x-8B-axioplan2i-ludl-ImageScope.dapsi @@ -0,0 +1,72 @@ +Author: +Date: +Time: + +For the Hamamatsu scanning at 20x + scan_scale = .4558 +For the Hamamatsu scanning at 40x + scan_scale = .2279 + +Point Grey Grashopper Color (GRAS-03K2C-C) + cam_format = RGB24_640x480 + cam_pixel_size = 7.4um +Point Grey Flea2 Color (FL2G-50S5C-C): Full resolution, full format + cam_format = F7_RGB24_2448x2048 + cam_pixel_size = 3.45 +Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 + cam_format = RGB24_1024x768 + cam_pixel_size = 6.9 + +Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV +taskorder=2 user specified order +taskorder=1 listed order +taskorder=0 random order +saveimages = 1 save WSI and camera images +saveimages = 2 only save WSI image +saveimages = 3 only save camera image +saveimages = 4 don't save WSI and camera images + + +Input File Task Formats +task_checkMof4,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_count, TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_mark1, TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_mark1_out,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,Qtext,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_radio1of4,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_slider,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag,Q_Op1,Q_Op2,Q_Op3,Q_Op4 +task_mitotic_expert,TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag +task_mitotic_train, TaskID,TaskOrder,Slot,ROI_X,ROI_Y,ROI_W,ROI_H,IMG_W,IMG_H,MoveFlag,ZoomFlag,ExpertCheckBoxes1-8,Expert_Score +task_mitotic_counts,TaskID,TaskOrder,Slot,MoveFlag,ZoomFlag + +SETTINGS +NUMBER_OF_WSI = 1 +wsi_slot_1 = C:\000_whole_slides\tissue40x-8B.ndpi +rgb_lut_slot_1 = icc_profiles\rgb_lut_gamma_inv1p8.txt +scan_scale_1 = 0.2279 +label_pos = 6 +reticleID = KR-871 +cam_kind = Firewire +cam_format = RGB24_1024x768 +cam_pixel_size = 6.9 +mag_cam = 1.0 +mag_lres = 5 +mag_hres = 40 +stage_label = SCAN8Praparate_Ludl5000 +BG_Color_RGB = 0.55 = 0.55 = 0.55 +FG_Color_RGB = 0.00 = 0.00 = 0.00 +AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 +FontSize = 13 +autoreg = 1 +saveimages = 3 +taskorder = 0 + +BODY +start +finish +count2_imagescope,1st0001,-1,1,038459,16192,219,219,219,219,Qtext_count,1,1,Please count mitotic in this area +count2_imagescope,2nd0001,-1,1,027728,11381,439,439,439,439,Qtext_count,1,1,Please count mitotic in this area +count2_imagescope,3rd0001,-1,1,19220,49879,658,658,658,658,Qtext_count,1,1,Please count mitotic in this area +count2_imagescope,4th0001,-1,1,041163,33208,878,878,878,878,Qtext_count,1,1,Please count mitotic in this area +count2_imagescope,5th0001,-1,1,041163,33208,1097,1097,1097,1097,Qtext_count,1,1,Please count mitotic in this area diff --git a/src/inputfilesDevelopment/tissue40x-8B-axioplan2i-ludl.dapsi b/src/inputfilesDevelopment/tissue40x-8B-axioplan2i-ludl.dapsi index ec1ee60a..3aaf9046 100644 --- a/src/inputfilesDevelopment/tissue40x-8B-axioplan2i-ludl.dapsi +++ b/src/inputfilesDevelopment/tissue40x-8B-axioplan2i-ludl.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -56,6 +58,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 3 taskorder = 0 diff --git a/src/inputfilesDevelopment/tissue40x-8B-olympus-ludl.dapsi b/src/inputfilesDevelopment/tissue40x-8B-olympus-ludl.dapsi index 95301c1c..0da38ff7 100644 --- a/src/inputfilesDevelopment/tissue40x-8B-olympus-ludl.dapsi +++ b/src/inputfilesDevelopment/tissue40x-8B-olympus-ludl.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -50,6 +52,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 1 taskorder = 0 diff --git a/src/inputfilesDevelopment/tissue40x-8B-olympus-prior.dapsi b/src/inputfilesDevelopment/tissue40x-8B-olympus-prior.dapsi index a8d6150f..3c406dc9 100644 --- a/src/inputfilesDevelopment/tissue40x-8B-olympus-prior.dapsi +++ b/src/inputfilesDevelopment/tissue40x-8B-olympus-prior.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -50,6 +52,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 1 taskorder = 0 diff --git a/src/inputfilesSamples/sample_input_ndpi.dapsi b/src/inputfilesSamples/sample_input_ndpi.dapsi index 31d3d905..40750c33 100644 --- a/src/inputfilesSamples/sample_input_ndpi.dapsi +++ b/src/inputfilesSamples/sample_input_ndpi.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -58,6 +60,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 3 taskorder = 0 diff --git a/src/inputfilesSamples/sample_input_svs.dapsi b/src/inputfilesSamples/sample_input_svs.dapsi index bb16930c..09284df3 100644 --- a/src/inputfilesSamples/sample_input_svs.dapsi +++ b/src/inputfilesSamples/sample_input_svs.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -59,6 +61,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 3 taskorder = 0 diff --git a/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE1.dapsi b/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE1.dapsi index aab39a70..9a09c373 100644 --- a/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE1.dapsi +++ b/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE1.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -65,6 +67,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 3 taskorder = 0 diff --git a/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE1_ndpi.dapsi b/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE1_ndpi.dapsi index 1ebccccb..331faab2 100644 --- a/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE1_ndpi.dapsi +++ b/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE1_ndpi.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -65,6 +67,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 3 taskorder = 0 diff --git a/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE1_svs.dapsi b/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE1_svs.dapsi index 6bb7ad0f..9a9176d0 100644 --- a/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE1_svs.dapsi +++ b/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE1_svs.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -65,6 +67,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 3 taskorder = 0 diff --git a/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE2.dapsi b/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE2.dapsi index da7ad40e..9050afd2 100644 --- a/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE2.dapsi +++ b/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE2.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -65,6 +67,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 3 taskorder = 0 diff --git a/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE2_ndpi.dapsi b/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE2_ndpi.dapsi index 9d6e38f2..0c36f3d9 100644 --- a/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE2_ndpi.dapsi +++ b/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE2_ndpi.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -65,6 +67,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 3 taskorder = 0 diff --git a/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE2_svs.dapsi b/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE2_svs.dapsi index 42944e52..61172e1c 100644 --- a/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE2_svs.dapsi +++ b/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE2_svs.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -65,6 +67,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 3 taskorder = 0 diff --git a/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE3.dapsi b/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE3.dapsi index f43b03d8..0c66ec5e 100644 --- a/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE3.dapsi +++ b/src/inputfilesStudies/20170607mitoticFigureStudy/MC_HE3.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -56,6 +58,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 3 taskorder = 0 diff --git a/src/inputfilesStudies/20170607mitoticFigureStudy/Scoring_HE.dapsi b/src/inputfilesStudies/20170607mitoticFigureStudy/Scoring_HE.dapsi index 14ab7d20..474c4030 100644 --- a/src/inputfilesStudies/20170607mitoticFigureStudy/Scoring_HE.dapsi +++ b/src/inputfilesStudies/20170607mitoticFigureStudy/Scoring_HE.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -56,6 +58,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 1 taskorder = 0 diff --git a/src/inputfilesStudies/20170607registrationAccuracyStudy/PHH3_CCB030148_HE_Reg.dapsi b/src/inputfilesStudies/20170607registrationAccuracyStudy/PHH3_CCB030148_HE_Reg.dapsi index 9c94662a..537f6a58 100644 --- a/src/inputfilesStudies/20170607registrationAccuracyStudy/PHH3_CCB030148_HE_Reg.dapsi +++ b/src/inputfilesStudies/20170607registrationAccuracyStudy/PHH3_CCB030148_HE_Reg.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -56,6 +58,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 3 taskorder = 1 diff --git a/src/inputfilesStudies/20170607registrationAccuracyStudy/PHH3_CCB030148_pHH3_Reg.dapsi b/src/inputfilesStudies/20170607registrationAccuracyStudy/PHH3_CCB030148_pHH3_Reg.dapsi index b8332b8d..d24e5480 100644 --- a/src/inputfilesStudies/20170607registrationAccuracyStudy/PHH3_CCB030148_pHH3_Reg.dapsi +++ b/src/inputfilesStudies/20170607registrationAccuracyStudy/PHH3_CCB030148_pHH3_Reg.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -56,6 +58,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 3 taskorder = 1 diff --git a/src/inputfilesStudies/20170607registrationAccuracyStudy/Registration_findROI2.dapsi b/src/inputfilesStudies/20170607registrationAccuracyStudy/Registration_findROI2.dapsi index 5ddda06b..79a7fd7b 100644 --- a/src/inputfilesStudies/20170607registrationAccuracyStudy/Registration_findROI2.dapsi +++ b/src/inputfilesStudies/20170607registrationAccuracyStudy/Registration_findROI2.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -59,6 +61,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 3 taskorder = 1 diff --git a/src/inputfilesStudies/20170607registrationAccuracyStudy/Registration_test1_dog.dapsi b/src/inputfilesStudies/20170607registrationAccuracyStudy/Registration_test1_dog.dapsi index 87e6ade6..4cd997ef 100644 --- a/src/inputfilesStudies/20170607registrationAccuracyStudy/Registration_test1_dog.dapsi +++ b/src/inputfilesStudies/20170607registrationAccuracyStudy/Registration_test1_dog.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -59,6 +61,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 3 taskorder = 1 diff --git a/src/inputfilesStudies/20170607registrationAccuracyStudy/Registration_test2_human.dapsi b/src/inputfilesStudies/20170607registrationAccuracyStudy/Registration_test2_human.dapsi index afcbbb2b..1f0d873e 100644 --- a/src/inputfilesStudies/20170607registrationAccuracyStudy/Registration_test2_human.dapsi +++ b/src/inputfilesStudies/20170607registrationAccuracyStudy/Registration_test2_human.dapsi @@ -18,6 +18,8 @@ Point Grey Flea2 Color (FL2G-50S5C-C): Standard format, aspect ratio = 1.33 cam_pixel_size = 6.9 Reminder: +autoreg = 1 do local automatic registration for each task/FOV +autoreg = 0 don't local automatic registration for each task/FOV taskorder=2 user specified order taskorder=1 listed order taskorder=0 random order @@ -56,6 +58,7 @@ BG_Color_RGB = 0.55 = 0.55 = 0.55 FG_Color_RGB = 0.00 = 0.00 = 0.00 AxesBG_Color_RGB = 0.10 = 0.20 = 0.10 FontSize = 13 +autoreg = 1 saveimages = 3 taskorder = 1 diff --git a/src/tasks/task_checkMof4.m b/src/tasks/task_checkMof4.m index d1669289..dd9ca3ba 100644 --- a/src/tasks/task_checkMof4.m +++ b/src/tasks/task_checkMof4.m @@ -16,6 +16,10 @@ function task_checkMof4(hObj) handles = guidata(hObj); taskinfo = handles.myData.taskinfo; taskinfo.rotateback = 0; + taskinfo.checkboxresult=zeros(1,4); + if length(taskinfo.desc)>17 + myData.finshedTask = myData.finshedTask + 1; + end case {'Update_GUI_Elements', ... 'ResumeButtonPressed'} % Initialize task elements @@ -27,20 +31,10 @@ function task_checkMof4(hObj) taskmgt_default(handles, 'on'); handles = guidata(hObj); - set(handles.checkbox1,'FontSize', myData.settings.FontSize,... - 'BackgroundColor',myData.settings.BG_color,... - 'ForegroundColor',myData.settings.FG_color); - set(handles.checkbox2,'FontSize', myData.settings.FontSize,... - 'BackgroundColor',myData.settings.BG_color,... - 'ForegroundColor',myData.settings.FG_color); - set(handles.checkbox3,'FontSize', myData.settings.FontSize,... - 'BackgroundColor',myData.settings.BG_color,... - 'ForegroundColor',myData.settings.FG_color); - set(handles.checkbox4,'FontSize', myData.settings.FontSize,... - 'BackgroundColor',myData.settings.BG_color,... - 'ForegroundColor',myData.settings.FG_color); - - handles.radiobutton1 = uicontrol(... + + + % checkbox + handles.checkbox1 = uicontrol(... 'Parent', handles.task_panel, ... 'FontSize', handles.myData.settings.FontSize, ... 'Units', 'Characters', ... @@ -48,11 +42,11 @@ function task_checkMof4(hObj) 'ForegroundColor', handles.myData.settings.FG_color, ... 'BackgroundColor', handles.myData.settings.BG_color, ... 'Position', [10,6,25,2], ... - 'Style', 'radiobutton', ... - 'Tag', 'radiobutton1', ... + 'Style', 'checkbox', ... + 'Callback',@checkbox1_Callback, ... 'String', taskinfo.q_op1); - handles.radiobutton2 = uicontrol(... + handles.checkbox2 = uicontrol(... 'Parent', handles.task_panel, ... 'FontSize', handles.myData.settings.FontSize, ... 'Units', 'Characters', ... @@ -60,11 +54,11 @@ function task_checkMof4(hObj) 'ForegroundColor', handles.myData.settings.FG_color, ... 'BackgroundColor', handles.myData.settings.BG_color, ... 'Position', [35,6,25,2], ... - 'Style', 'radiobutton', ... - 'Tag', 'radiobutton2', ... + 'Style', 'checkbox', ... + 'Callback',@checkbox2_Callback, ... 'String', taskinfo.q_op2); - - handles.radiobutton3 = uicontrol(... + + handles.checkbox3 = uicontrol(... 'Parent', handles.task_panel, ... 'FontSize', handles.myData.settings.FontSize, ... 'Units', 'Characters', ... @@ -72,11 +66,11 @@ function task_checkMof4(hObj) 'ForegroundColor', handles.myData.settings.FG_color, ... 'BackgroundColor', handles.myData.settings.BG_color, ... 'Position', [60,6,25,2], ... - 'Style', 'radiobutton', ... - 'Tag', 'radiobutton3', ... + 'Style', 'checkbox', ... + 'Callback',@checkbox3_Callback, ... 'String', taskinfo.q_op3); - - handles.radiobutton4 = uicontrol(... + + handles.checkbox4 = uicontrol(... 'Parent', handles.task_panel, ... 'FontSize', handles.myData.settings.FontSize, ... 'Units', 'Characters', ... @@ -84,13 +78,77 @@ function task_checkMof4(hObj) 'ForegroundColor', handles.myData.settings.FG_color, ... 'BackgroundColor', handles.myData.settings.BG_color, ... 'Position', [85,6,25,2], ... - 'Style', 'radiobutton', ... - 'Tag', 'radiobutton4', ... + 'Style', 'checkbox', ... + 'Callback',@checkbox4_Callback, ... 'String', taskinfo.q_op4); + + +% old code - set(handles.task_panel, ... - 'SelectionChangeFcn', @radiobutton_Callback, ... - 'SelectedObject', []); +% set(handles.checkbox1,'FontSize', myData.settings.FontSize,... +% 'BackgroundColor',myData.settings.BG_color,... +% 'ForegroundColor',myData.settings.FG_color); +% set(handles.checkbox2,'FontSize', myData.settings.FontSize,... +% 'BackgroundColor',myData.settings.BG_color,... +% 'ForegroundColor',myData.settings.FG_color); +% set(handles.checkbox3,'FontSize', myData.settings.FontSize,... +% 'BackgroundColor',myData.settings.BG_color,... +% 'ForegroundColor',myData.settings.FG_color); +% set(handles.checkbox4,'FontSize', myData.settings.FontSize,... +% 'BackgroundColor',myData.settings.BG_color,... +% 'ForegroundColor',myData.settings.FG_color); +% +% handles.radiobutton1 = uicontrol(... +% 'Parent', handles.task_panel, ... +% 'FontSize', handles.myData.settings.FontSize, ... +% 'Units', 'Characters', ... +% 'HorizontalAlignment', 'left', ... +% 'ForegroundColor', handles.myData.settings.FG_color, ... +% 'BackgroundColor', handles.myData.settings.BG_color, ... +% 'Position', [10,6,25,2], ... +% 'Style', 'radiobutton', ... +% 'Tag', 'radiobutton1', ... +% 'String', taskinfo.q_op1); +% +% handles.radiobutton2 = uicontrol(... +% 'Parent', handles.task_panel, ... +% 'FontSize', handles.myData.settings.FontSize, ... +% 'Units', 'Characters', ... +% 'HorizontalAlignment', 'left', ... +% 'ForegroundColor', handles.myData.settings.FG_color, ... +% 'BackgroundColor', handles.myData.settings.BG_color, ... +% 'Position', [35,6,25,2], ... +% 'Style', 'radiobutton', ... +% 'Tag', 'radiobutton2', ... +% 'String', taskinfo.q_op2); +% +% handles.radiobutton3 = uicontrol(... +% 'Parent', handles.task_panel, ... +% 'FontSize', handles.myData.settings.FontSize, ... +% 'Units', 'Characters', ... +% 'HorizontalAlignment', 'left', ... +% 'ForegroundColor', handles.myData.settings.FG_color, ... +% 'BackgroundColor', handles.myData.settings.BG_color, ... +% 'Position', [60,6,25,2], ... +% 'Style', 'radiobutton', ... +% 'Tag', 'radiobutton3', ... +% 'String', taskinfo.q_op3); +% +% handles.radiobutton4 = uicontrol(... +% 'Parent', handles.task_panel, ... +% 'FontSize', handles.myData.settings.FontSize, ... +% 'Units', 'Characters', ... +% 'HorizontalAlignment', 'left', ... +% 'ForegroundColor', handles.myData.settings.FG_color, ... +% 'BackgroundColor', handles.myData.settings.BG_color, ... +% 'Position', [85,6,25,2], ... +% 'Style', 'radiobutton', ... +% 'Tag', 'radiobutton4', ... +% 'String', taskinfo.q_op4); +% +% set(handles.task_panel, ... +% 'SelectionChangeFcn', @radiobutton_Callback, ... +% 'SelectedObject', []); case {'NextButtonPressed', ... 'PauseButtonPressed',... @@ -103,41 +161,103 @@ function task_checkMof4(hObj) set(handles.iH,'visible','off'); set(handles.ImageAxes,'visible','off'); - delete(handles.radiobutton1); - delete(handles.radiobutton2); - delete(handles.radiobutton3); - delete(handles.radiobutton4); - handles = rmfield(handles, 'radiobutton1'); - handles = rmfield(handles, 'radiobutton1'); - handles = rmfield(handles, 'radiobutton1'); - handles = rmfield(handles, 'radiobutton1'); - + delete(handles.checkbox1); + delete(handles.checkbox2); + delete(handles.checkbox3); + delete(handles.checkbox4); + handles = rmfield(handles, 'checkbox1'); + handles = rmfield(handles, 'checkbox2'); + handles = rmfield(handles, 'checkbox3'); + handles = rmfield(handles, 'checkbox4'); + %old +% delete(handles.radiobutton1); +% delete(handles.radiobutton2); +% delete(handles.radiobutton3); +% delete(handles.radiobutton4); +% handles = rmfield(handles, 'radiobutton1'); +% handles = rmfield(handles, 'radiobutton1'); +% handles = rmfield(handles, 'radiobutton1'); +% handles = rmfield(handles, 'radiobutton1'); +% taskimage_archive(handles); - - case 'Save_Results' % Save the results for this task - - fprintf(taskinfo.fid, [... - taskinfo.task, ',', ... - taskinfo.id, ',', ... - num2str(taskinfo.order), ',', ... - num2str(taskinfo.slot), ',',... - num2str(taskinfo.roi_x), ',',... - num2str(taskinfo.roi_y), ',', ... - num2str(taskinfo.roi_w), ',', ... - num2str(taskinfo.roi_h), ',', ... - num2str(taskinfo.img_w), ',', ... - num2str(taskinfo.img_h), ',', ... - taskinfo.text, ',', ... - num2str(taskinfo.moveflag), ',', ... - num2str(taskinfo.zoomflag), ',', ... - taskinfo.q_op1, ',', ... - taskinfo.q_op2, ',', ... - taskinfo.q_op3, ',', ... - taskinfo.q_op4, ',', ... - num2str(taskinfo.duration), ',', ... - num2str(taskinfo.buttonID), ',', ... - taskinfo.button_desc]); - fprintf(taskinfo.fid,'\r\n'); + case 'exportOutput' % export current task information and reuslt + if taskinfo.currentWorking ==1 % write finish task in current study + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + taskinfo.text, ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',', ... + taskinfo.q_op1, ',', ... + taskinfo.q_op2, ',', ... + taskinfo.q_op3, ',', ... + taskinfo.q_op4, ',', ... + num2str(taskinfo.duration), ',', ... + num2str(taskinfo.checkboxresult(1)),',',... + num2str(taskinfo.checkboxresult(2)),',',... + num2str(taskinfo.checkboxresult(3)),',',... + num2str(taskinfo.checkboxresult(4))]); + elseif taskinfo.currentWorking ==0 % write undone task + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + taskinfo.text, ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',', ... + taskinfo.q_op1, ',', ... + taskinfo.q_op2, ',', ... + taskinfo.q_op3, ',', ... + taskinfo.q_op4]); + else % write done task from previous study + desc = taskinfo.desc; + for i = 1 : length(desc)-1 + fprintf(myData.fid,[desc{i},',']); + end + fprintf(myData.fid,[desc{length(desc)}]); + end + fprintf(myData.fid,'\r\n'); + handles.myData.taskinfo = taskinfo; + guidata(handles.GUI, handles); +% case 'Save_Results' % Save the results for this task +% +% fprintf(taskinfo.fid, [... +% taskinfo.task, ',', ... +% taskinfo.id, ',', ... +% num2str(taskinfo.order), ',', ... +% num2str(taskinfo.slot), ',',... +% num2str(taskinfo.roi_x), ',',... +% num2str(taskinfo.roi_y), ',', ... +% num2str(taskinfo.roi_w), ',', ... +% num2str(taskinfo.roi_h), ',', ... +% num2str(taskinfo.img_w), ',', ... +% num2str(taskinfo.img_h), ',', ... +% taskinfo.text, ',', ... +% num2str(taskinfo.moveflag), ',', ... +% num2str(taskinfo.zoomflag), ',', ... +% taskinfo.q_op1, ',', ... +% taskinfo.q_op2, ',', ... +% taskinfo.q_op3, ',', ... +% taskinfo.q_op4, ',', ... +% num2str(taskinfo.duration), ',', ... +% num2str(taskinfo.buttonID), ',', ... +% taskinfo.button_desc]); +% fprintf(taskinfo.fid,'\r\n'); end @@ -151,27 +271,17 @@ function task_checkMof4(hObj) end end -function radiobutton_Callback(hObj, eventdata) +function checkbox1_Callback(hObj, eventdata) try handles = guidata(findobj('Tag','GUI')); taskinfo = handles.myData.tasks_out{handles.myData.iter}; - - taskinfo.button_desc = get(eventdata.NewValue, 'Tag'); - switch taskinfo.button_desc - case 'radiobutton1' - taskinfo.buttonID = 1; - case 'radiobutton2' - taskinfo.buttonID = 2; - case 'radiobutton3' - taskinfo.buttonID = 3; - case 'radiobutton4' - taskinfo.buttonID = 4; + if (get(hObj,'Value') == get(hObj,'Max')) + taskinfo.checkboxresult(1)=1; + else + taskinfo.checkboxresult(1)=0; end - - % Enable next button set(handles.NextButton,'Enable','on'); - % Pack the results handles.myData.tasks_out{handles.myData.iter} = taskinfo; guidata(handles.GUI, handles); @@ -179,41 +289,133 @@ function radiobutton_Callback(hObj, eventdata) catch ME error_show(ME) end +end +function checkbox2_Callback(hObj, eventdata) +try + + handles = guidata(findobj('Tag','GUI')); + taskinfo = handles.myData.tasks_out{handles.myData.iter}; + if (get(hObj,'Value') == get(hObj,'Max')) + taskinfo.checkboxresult(2)=1; + else + taskinfo.checkboxresult(2)=0; + end + set(handles.NextButton,'Enable','on'); + % Pack the results + handles.myData.tasks_out{handles.myData.iter} = taskinfo; + guidata(handles.GUI, handles); + +catch ME + error_show(ME) +end end -%% GUI callbacks tasks +function checkbox3_Callback(hObj, eventdata) +try + + handles = guidata(findobj('Tag','GUI')); + taskinfo = handles.myData.tasks_out{handles.myData.iter}; + + if (get(hObj,'Value') == get(hObj,'Max')) + taskinfo.checkboxresult(3)=1; + else + taskinfo.checkboxresult(3)=0; + end + set(handles.NextButton,'Enable','on'); + % Pack the results -function checkbox1_Callback(hObj, eventdata, handles) %#ok<*INUSL,DEFNU> -%-------------------------------------------------------------------------- -% This function is executed when the user changes the value of a -% checkbox. All this function does is calling Update_Next_Button. -%-------------------------------------------------------------------------- -Update_Next_Button(handles) -guidata(hObj, handles); + handles.myData.tasks_out{handles.myData.iter} = taskinfo; + guidata(handles.GUI, handles); + +catch ME + error_show(ME) end -function checkbox2_Callback(hObj, eventdata, handles) %#ok -%-------------------------------------------------------------------------- -% This function is executed when the user changes the value of a -% checkbox. All this function does is calling Update_Next_Button. -%-------------------------------------------------------------------------- -Update_Next_Button(handles); -guidata(hObj, handles); end -function checkbox3_Callback(hObj, eventdata, handles) %#ok -%-------------------------------------------------------------------------- -% This function is executed when the user changes the value of a -% checkbox. All this function does is calling Update_Next_Button. -%-------------------------------------------------------------------------- -Update_Next_Button(handles); -guidata(hObj, handles); + +function checkbox4_Callback(hObj, eventdata) +try + + handles = guidata(findobj('Tag','GUI')); + taskinfo = handles.myData.tasks_out{handles.myData.iter}; + if (get(hObj,'Value') == get(hObj,'Max')) + taskinfo.checkboxresult(4)=1; + else + taskinfo.checkboxresult(4)=0; + end + set(handles.NextButton,'Enable','on'); + % Pack the results + handles.myData.tasks_out{handles.myData.iter} = taskinfo; + guidata(handles.GUI, handles); + +catch ME + error_show(ME) end -function checkbox4_Callback(hObj, eventdata, handles) %#ok -%-------------------------------------------------------------------------- -% This function is executed when the user changes the value of a -% checkbox. All this function does is calling Update_Next_Button. -%-------------------------------------------------------------------------- -Update_Next_Button(handles); -guidata(hObj, handles); end +%% old +% function radiobutton_Callback(hObj, eventdata) +% try +% +% handles = guidata(findobj('Tag','GUI')); +% taskinfo = handles.myData.tasks_out{handles.myData.iter}; +% +% taskinfo.button_desc = get(eventdata.NewValue, 'Tag'); +% switch taskinfo.button_desc +% case 'radiobutton1' +% taskinfo.buttonID = 1; +% case 'radiobutton2' +% taskinfo.buttonID = 2; +% case 'radiobutton3' +% taskinfo.buttonID = 3; +% case 'radiobutton4' +% taskinfo.buttonID = 4; +% end +% +% % Enable next button +% set(handles.NextButton,'Enable','on'); +% +% % Pack the results +% handles.myData.tasks_out{handles.myData.iter} = taskinfo; +% guidata(handles.GUI, handles); +% +% catch ME +% error_show(ME) +% end +% +% end +% +% %% GUI callbacks tasks +% +% function checkbox1_Callback(hObj, eventdata, handles) %#ok<*INUSL,DEFNU> +% %-------------------------------------------------------------------------- +% % This function is executed when the user changes the value of a +% % checkbox. All this function does is calling Update_Next_Button. +% %-------------------------------------------------------------------------- +% Update_Next_Button(handles) +% guidata(hObj, handles); +% end +% function checkbox2_Callback(hObj, eventdata, handles) %#ok +% %-------------------------------------------------------------------------- +% % This function is executed when the user changes the value of a +% % checkbox. All this function does is calling Update_Next_Button. +% %-------------------------------------------------------------------------- +% Update_Next_Button(handles); +% guidata(hObj, handles); +% end +% function checkbox3_Callback(hObj, eventdata, handles) %#ok +% %-------------------------------------------------------------------------- +% % This function is executed when the user changes the value of a +% % checkbox. All this function does is calling Update_Next_Button. +% %-------------------------------------------------------------------------- +% Update_Next_Button(handles); +% guidata(hObj, handles); +% end +% function checkbox4_Callback(hObj, eventdata, handles) %#ok +% %-------------------------------------------------------------------------- +% % This function is executed when the user changes the value of a +% % checkbox. All this function does is calling Update_Next_Button. +% %-------------------------------------------------------------------------- +% Update_Next_Button(handles); +% guidata(hObj, handles); +% end diff --git a/src/tasks/task_count.m b/src/tasks/task_count.m index 1b998739..ab9d0aac 100644 --- a/src/tasks/task_count.m +++ b/src/tasks/task_count.m @@ -29,6 +29,9 @@ function task_count(hObj) taskinfo.zoomflag = str2double(desc{13}); taskinfo.description = char(desc{14}); taskinfo.rotateback = 0; + if length(taskinfo.desc)>14 + myData.finshedTask = myData.finshedTask + 1; + end case {'Update_GUI_Elements', ... 'ResumeButtonPressed'} % Initialize task elements @@ -88,27 +91,71 @@ function task_count(hObj) handles = rmfield(handles, 'editCount'); %taskimage_archive(handles); - - case 'Save_Results' % Save the results for this task - - fprintf(taskinfo.fid, [... - taskinfo.task, ',', ... - taskinfo.id, ',', ... - num2str(taskinfo.order), ',', ... - num2str(taskinfo.slot), ',',... - num2str(taskinfo.roi_x), ',',... - num2str(taskinfo.roi_y), ',', ... - num2str(taskinfo.roi_w), ',', ... - num2str(taskinfo.roi_h), ',', ... - num2str(taskinfo.img_w), ',', ... - num2str(taskinfo.img_h), ',', ... - taskinfo.text, ',', ... - num2str(taskinfo.moveflag), ',', ... - num2str(taskinfo.zoomflag), ',', ... - taskinfo.description, ',', ... - num2str(taskinfo.duration), ',', ... - num2str(taskinfo.score)]); - fprintf(taskinfo.fid,'\r\n'); + case 'exportOutput' % export current task information and reuslt + if taskinfo.currentWorking ==1 % write finish task in current study + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + taskinfo.text, ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',', ... + taskinfo.description, ',', ... + num2str(taskinfo.duration), ',', ... + num2str(taskinfo.score)]); + elseif taskinfo.currentWorking ==0 % write undone task + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + taskinfo.text, ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',', ... + taskinfo.description]); + else % write done task from previous study + desc = taskinfo.desc; + for i = 1 : length(desc)-1 + fprintf(myData.fid,[desc{i},',']); + end + fprintf(myData.fid,[desc{length(desc)}]); + end + fprintf(myData.fid,'\r\n'); + handles.myData.taskinfo = taskinfo; + guidata(handles.GUI, handles); +% case 'Save_Results' % Save the results for this task +% +% fprintf(taskinfo.fid, [... +% taskinfo.task, ',', ... +% taskinfo.id, ',', ... +% num2str(taskinfo.order), ',', ... +% num2str(taskinfo.slot), ',',... +% num2str(taskinfo.roi_x), ',',... +% num2str(taskinfo.roi_y), ',', ... +% num2str(taskinfo.roi_w), ',', ... +% num2str(taskinfo.roi_h), ',', ... +% num2str(taskinfo.img_w), ',', ... +% num2str(taskinfo.img_h), ',', ... +% taskinfo.text, ',', ... +% num2str(taskinfo.moveflag), ',', ... +% num2str(taskinfo.zoomflag), ',', ... +% taskinfo.description, ',', ... +% num2str(taskinfo.duration), ',', ... +% num2str(taskinfo.score)]); +% fprintf(taskinfo.fid,'\r\n'); end diff --git a/src/tasks/task_count_imagescope.m b/src/tasks/task_count_imagescope.m index 623917a1..60e1263e 100644 --- a/src/tasks/task_count_imagescope.m +++ b/src/tasks/task_count_imagescope.m @@ -29,6 +29,9 @@ function task_count(hObj) taskinfo.zoomflag = str2double(desc{13}); taskinfo.description = char(desc{14}); taskinfo.rotateback = 0; + if length(taskinfo.desc)>14 + myData.finshedTask = myData.finshedTask + 1; + end % %generate WSI file % wsi_info = handles.myData.wsi_files{taskinfo.slot}; % wsi_scan_scale = handles.myData.settings.scan_scale; @@ -36,7 +39,6 @@ function task_count(hObj) % Top = taskinfo.roi_y-(taskinfo.roi_h/2); % exportXML(wsi_info.fullname,wsi_scan_scale, taskinfo.id,handles.myData.workdir,... % Left, Top, taskinfo.roi_w, taskinfo.roi_h); - aaa=1; case {'Update_GUI_Elements', ... 'ResumeButtonPressed'} % Initialize task elements @@ -112,27 +114,71 @@ function task_count(hObj) handles = rmfield(handles, 'editCount'); taskimage_archive(handles); - - case 'Save_Results' % Save the results for this task - - fprintf(taskinfo.fid, [... - taskinfo.task, ',', ... - taskinfo.id, ',', ... - num2str(taskinfo.order), ',', ... - num2str(taskinfo.slot), ',',... - num2str(taskinfo.roi_x), ',',... - num2str(taskinfo.roi_y), ',', ... - num2str(taskinfo.roi_w), ',', ... - num2str(taskinfo.roi_h), ',', ... - num2str(taskinfo.img_w), ',', ... - num2str(taskinfo.img_h), ',', ... - taskinfo.text, ',', ... - num2str(taskinfo.moveflag), ',', ... - num2str(taskinfo.zoomflag), ',', ... - taskinfo.description, ',', ... - num2str(taskinfo.duration), ',', ... - num2str(taskinfo.score)]); - fprintf(taskinfo.fid,'\r\n'); + case 'exportOutput' % export current task information and reuslt + if taskinfo.currentWorking ==1 % write finish task in current study + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + taskinfo.text, ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',', ... + taskinfo.description, ',', ... + num2str(taskinfo.duration), ',', ... + num2str(taskinfo.score)]); + elseif taskinfo.currentWorking ==0 % write undone task + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + taskinfo.text, ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',', ... + taskinfo.description]); + else % write done task from previous study + desc = taskinfo.desc; + for i = 1 : length(desc)-1 + fprintf(myData.fid,[desc{i},',']); + end + fprintf(myData.fid,[desc{length(desc)}]); + end + fprintf(myData.fid,'\r\n'); + handles.myData.taskinfo = taskinfo; + guidata(handles.GUI, handles); +% case 'Save_Results' % Save the results for this task +% +% fprintf(taskinfo.fid, [... +% taskinfo.task, ',', ... +% taskinfo.id, ',', ... +% num2str(taskinfo.order), ',', ... +% num2str(taskinfo.slot), ',',... +% num2str(taskinfo.roi_x), ',',... +% num2str(taskinfo.roi_y), ',', ... +% num2str(taskinfo.roi_w), ',', ... +% num2str(taskinfo.roi_h), ',', ... +% num2str(taskinfo.img_w), ',', ... +% num2str(taskinfo.img_h), ',', ... +% taskinfo.text, ',', ... +% num2str(taskinfo.moveflag), ',', ... +% num2str(taskinfo.zoomflag), ',', ... +% taskinfo.description, ',', ... +% num2str(taskinfo.duration), ',', ... +% num2str(taskinfo.score)]); +% fprintf(taskinfo.fid,'\r\n'); end diff --git a/src/tasks/task_finish.m b/src/tasks/task_finish.m index c46065fc..7d7972fa 100644 --- a/src/tasks/task_finish.m +++ b/src/tasks/task_finish.m @@ -42,13 +42,12 @@ function task_finish(hObj) delete(handles.myData.stage.handle); end end - Save_Results(handles); - + % Save_Results(handles); return case 'Save_Results' % Save the results for this task - fprintf(taskinfo.fid, '%s\r\n', taskinfo.id); + fprintf(myData.fid, '%s\r\n', taskinfo.id); end @@ -62,126 +61,126 @@ function task_finish(hObj) end end -function Save_Results(handles) -try - - % SAVE THE DATA - % The filename of the newly created file will be the name of the - % pathologist. Gaps in the string are replaced by the - % '_' symbol. - - myData = handles.myData; - wsi_files = myData.wsi_files; - tasks_out = myData.tasks_out; - settings = myData.settings; - n_wsi = settings.n_wsi; - - outputfile=myData.outputfile; - full_outputfile = [myData.workdir,'Output_Files\',outputfile]; - - % The path to the file is composed from the filename and the current - % application path. File at this path is then opened. - fid = fopen(full_outputfile,'w+'); - - % The header part of the input file is written into the output file - % first - fprintf(fid,'Comments from the input file:\r\n'); - for i=1:1:size(myData.InputFileHeader) - fprintf(fid,myData.InputFileHeader{i,:}); - end - - %The settings obtained from the input file are again written into the - %the output file. - fprintf(fid,'SETTINGS\r\n'); - - desc = ['NUMBER_OF_WSI=', num2str(n_wsi)]; - fprintf(fid, '%s \r\n',desc); - - % Read in the file names of the WSI corresponding to the slots - for i=1:n_wsi - desc = ['wsi_slot_',num2str(i,'%d'),'=', ... - wsi_files{i}.fullname]; - fprintf(fid,'%s \r\n',desc); - desc = ['rgb_lut_slot_',num2str(i,'%d'),'=', ... - wsi_files{i}.rgb_lutfilename]; - fprintf(fid,'%s \r\n',desc); - desc = ['rgb_lut_slot_',num2str(i,'%d'),'=', ... - num2str( wsi_files{i}.scan_scale)]; - fprintf(fid,'%s \r\n',desc); - end - - fprintf(fid,strcat('label_pos','=',num2str(settings.label_pos),'\r\n')); - fprintf(fid,strcat('reticleID','=',num2str(settings.reticleID),'\r\n')); - fprintf(fid,strcat('cam_format','=',settings.cam_format,'\r\n')); - fprintf(fid,strcat('cam_pixel_size','=',num2str(settings.cam_pixel_size),'\r\n')); - fprintf(fid,strcat('mag_cam','=',num2str(settings.mag_cam),'\r\n')); - fprintf(fid,strcat('mag_lres','=',num2str(settings.mag_lres),'\r\n')); - fprintf(fid,strcat('mag_hres','=',num2str(settings.mag_hres),'\r\n')); - %fprintf(fid,strcat('scan_scale','=',num2str(settings.scan_scale),'\r\n')); - fprintf(fid,strcat('stage_label','=',num2str(myData.stage.label),'\r\n')); - desc = ['BG_Color_RGB=',... - num2str(myData.settings.BG_color(1)),'=',... - num2str(myData.settings.BG_color(2)),'=',... - num2str(myData.settings.BG_color(3)),... - '\r\n']; - fprintf(fid,desc); - desc = ['FG_Color_RGB=',... - num2str(myData.settings.FG_color(1)),'=',... - num2str(myData.settings.FG_color(2)),'=',... - num2str(myData.settings.FG_color(3)),... - '\r\n']; - fprintf(fid,desc); - desc = ['AxesBG_Color_RGB=',... - num2str(myData.settings.Axes_BG(1)),'=',... - num2str(myData.settings.Axes_BG(2)),'=',... - num2str(myData.settings.Axes_BG(3)),... - '\r\n']; - fprintf(fid,desc); - fprintf(fid,strcat('FontSize','=',num2str(myData.settings.FontSize),'\r\n')); - fprintf(fid,strcat('saveimages','=',num2str(myData.settings.saveimages),'\r\n')); - fprintf(fid,strcat('taskorder','=',num2str(myData.settings.taskorder),'\r\n')); - fprintf(fid,'\r\n'); - - fprintf(fid,'BODY\r\n'); - - % The arrays containing information about the evaluation task and the - % answers of the evaluator are saved into the file that was opened. - - st = dbstack; - calling_function = st(1).name; - - % Write the 'start' task output according to taskinfo.task_handle - taskinfo = myData.task_start; - taskinfo.fid = fid; - taskinfo.calling_function = calling_function; - handles.myData.taskinfo = taskinfo; - guidata(handles.GUI, handles); - taskinfo.task_handle(handles.GUI); - - % Write the 'finish' task output according to taskinfo.task_handle - taskinfo = myData.task_finish; - taskinfo.fid = fid; - taskinfo.calling_function = calling_function; - handles.myData.taskinfo = taskinfo; - guidata(handles.GUI, handles); - taskinfo.task_handle(handles.GUI); - - % Write each task output according to taskinfo.task_handle - for iter = 2:myData.ntasks+1 - - taskinfo = tasks_out{iter}; - taskinfo.fid = fid; - taskinfo.calling_function = calling_function; - handles.myData.taskinfo = taskinfo; - guidata(handles.GUI, handles); - taskinfo.task_handle(handles.GUI); - - end - - fclose(fid); - fileattrib(strcat(myData.workdir,'Output_Files\',outputfile),'-w') - -catch ME - error_show(ME) -end -end \ No newline at end of file +% function Save_Results(handles) +% try +% +% % SAVE THE DATA +% % The filename of the newly created file will be the name of the +% % pathologist. Gaps in the string are replaced by the +% % '_' symbol. +% +% myData = handles.myData; +% wsi_files = myData.wsi_files; +% tasks_out = myData.tasks_out; +% settings = myData.settings; +% n_wsi = settings.n_wsi; +% +% outputfile=myData.outputfile; +% full_outputfile = [myData.workdir,'Output_Files\',outputfile]; +% +% % The path to the file is composed from the filename and the current +% % application path. File at this path is then opened. +% fid = fopen(full_outputfile,'w+'); +% +% % The header part of the input file is written into the output file +% % first +% fprintf(fid,'Comments from the input file:\r\n'); +% for i=1:1:size(myData.InputFileHeader) +% fprintf(fid,myData.InputFileHeader{i,:}); +% end +% +% %The settings obtained from the input file are again written into the +% %the output file. +% fprintf(fid,'SETTINGS\r\n'); +% +% desc = ['NUMBER_OF_WSI=', num2str(n_wsi)]; +% fprintf(fid, '%s \r\n',desc); +% +% % Read in the file names of the WSI corresponding to the slots +% for i=1:n_wsi +% desc = ['wsi_slot_',num2str(i,'%d'),'=', ... +% wsi_files{i}.fullname]; +% fprintf(fid,'%s \r\n',desc); +% desc = ['rgb_lut_slot_',num2str(i,'%d'),'=', ... +% wsi_files{i}.rgb_lutfilename]; +% fprintf(fid,'%s \r\n',desc); +% desc = ['rgb_lut_slot_',num2str(i,'%d'),'=', ... +% num2str( wsi_files{i}.scan_scale)]; +% fprintf(fid,'%s \r\n',desc); +% end +% +% fprintf(fid,strcat('label_pos','=',num2str(settings.label_pos),'\r\n')); +% fprintf(fid,strcat('reticleID','=',num2str(settings.reticleID),'\r\n')); +% fprintf(fid,strcat('cam_format','=',settings.cam_format,'\r\n')); +% fprintf(fid,strcat('cam_pixel_size','=',num2str(settings.cam_pixel_size),'\r\n')); +% fprintf(fid,strcat('mag_cam','=',num2str(settings.mag_cam),'\r\n')); +% fprintf(fid,strcat('mag_lres','=',num2str(settings.mag_lres),'\r\n')); +% fprintf(fid,strcat('mag_hres','=',num2str(settings.mag_hres),'\r\n')); +% %fprintf(fid,strcat('scan_scale','=',num2str(settings.scan_scale),'\r\n')); +% fprintf(fid,strcat('stage_label','=',num2str(myData.stage.label),'\r\n')); +% desc = ['BG_Color_RGB=',... +% num2str(myData.settings.BG_color(1)),'=',... +% num2str(myData.settings.BG_color(2)),'=',... +% num2str(myData.settings.BG_color(3)),... +% '\r\n']; +% fprintf(fid,desc); +% desc = ['FG_Color_RGB=',... +% num2str(myData.settings.FG_color(1)),'=',... +% num2str(myData.settings.FG_color(2)),'=',... +% num2str(myData.settings.FG_color(3)),... +% '\r\n']; +% fprintf(fid,desc); +% desc = ['AxesBG_Color_RGB=',... +% num2str(myData.settings.Axes_BG(1)),'=',... +% num2str(myData.settings.Axes_BG(2)),'=',... +% num2str(myData.settings.Axes_BG(3)),... +% '\r\n']; +% fprintf(fid,desc); +% fprintf(fid,strcat('FontSize','=',num2str(myData.settings.FontSize),'\r\n')); +% fprintf(fid,strcat('saveimages','=',num2str(myData.settings.saveimages),'\r\n')); +% fprintf(fid,strcat('taskorder','=',num2str(myData.settings.taskorder),'\r\n')); +% fprintf(fid,'\r\n'); +% +% fprintf(fid,'BODY\r\n'); +% +% % The arrays containing information about the evaluation task and the +% % answers of the evaluator are saved into the file that was opened. +% +% st = dbstack; +% calling_function = st(1).name; +% +% % Write the 'start' task output according to taskinfo.task_handle +% taskinfo = myData.task_start; +% taskinfo.fid = fid; +% taskinfo.calling_function = calling_function; +% handles.myData.taskinfo = taskinfo; +% guidata(handles.GUI, handles); +% taskinfo.task_handle(handles.GUI); +% +% % Write the 'finish' task output according to taskinfo.task_handle +% taskinfo = myData.task_finish; +% taskinfo.fid = fid; +% taskinfo.calling_function = calling_function; +% handles.myData.taskinfo = taskinfo; +% guidata(handles.GUI, handles); +% taskinfo.task_handle(handles.GUI); +% +% % Write each task output according to taskinfo.task_handle +% for iter = 2:myData.ntasks+1 +% +% taskinfo = tasks_out{iter}; +% taskinfo.fid = fid; +% taskinfo.calling_function = calling_function; +% handles.myData.taskinfo = taskinfo; +% guidata(handles.GUI, handles); +% taskinfo.task_handle(handles.GUI); +% +% end +% +% fclose(fid); +% fileattrib(strcat(myData.workdir,'Output_Files\',outputfile),'-w') +% +% catch ME +% error_show(ME) +% end +% end \ No newline at end of file diff --git a/src/tasks/task_mark1.m b/src/tasks/task_mark1.m index 61e3d806..8b4aa7b6 100644 --- a/src/tasks/task_mark1.m +++ b/src/tasks/task_mark1.m @@ -17,6 +17,9 @@ function task_mark1(hObj) handles = guidata(hObj); taskinfo = handles.myData.taskinfo; taskinfo.rotateback = 0; + if length(taskinfo.desc)>17 + myData.finshedTask = myData.finshedTask + 1; + end case {'Update_GUI_Elements', ... 'ResumeButtonPressed'} % Initialize task elements @@ -213,31 +216,83 @@ function task_mark1(hObj) handles = rmfield(handles, 'textWSIY'); taskimage_archive(handles); - - case 'Save_Results' % Save the results for this task - - fprintf(taskinfo.fid, [... - taskinfo.task, ',', ... - taskinfo.id, ',', ... - num2str(taskinfo.order), ',', ... - num2str(taskinfo.slot), ',',... - num2str(taskinfo.roi_x), ',',... - num2str(taskinfo.roi_y), ',', ... - num2str(taskinfo.roi_w), ',', ... - num2str(taskinfo.roi_h), ',', ... - num2str(taskinfo.img_w), ',', ... - num2str(taskinfo.img_h), ',', ... - taskinfo.text, ',', ... - num2str(taskinfo.moveflag), ',', ... - num2str(taskinfo.zoomflag), ',', ... - taskinfo.q_op1, ',', ... - taskinfo.q_op2, ',', ... - taskinfo.q_op3, ',', ... - taskinfo.q_op4, ',', ... - num2str(taskinfo.duration), ',', ... - num2str(taskinfo.xy_marks(1)), ',', ... - num2str(taskinfo.xy_marks(2))]); - fprintf(taskinfo.fid,'\r\n'); + + case 'exportOutput' % export current task information and reuslt + if taskinfo.currentWorking ==1 % write finish task in current study + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + taskinfo.text, ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',', ... + taskinfo.q_op1, ',', ... + taskinfo.q_op2, ',', ... + taskinfo.q_op3, ',', ... + taskinfo.q_op4, ',', ... + num2str(taskinfo.duration), ',', ... + num2str(taskinfo.xy_marks(1)), ',', ... + num2str(taskinfo.xy_marks(2))]); + elseif taskinfo.currentWorking ==0 % write undone task + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + taskinfo.text, ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',', ... + taskinfo.q_op1, ',', ... + taskinfo.q_op2, ',', ... + taskinfo.q_op3, ',', ... + taskinfo.q_op4]); + else % write done task from previous study + desc = taskinfo.desc; + for i = 1 : length(desc)-1 + fprintf(myData.fid,[desc{i},',']); + end + fprintf(myData.fid,[desc{length(desc)}]); + end + fprintf(myData.fid,'\r\n'); + handles.myData.taskinfo = taskinfo; + guidata(handles.GUI, handles); +% case 'Save_Results' % Save the results for this task +% +% fprintf(taskinfo.fid, [... +% taskinfo.task, ',', ... +% taskinfo.id, ',', ... +% num2str(taskinfo.order), ',', ... +% num2str(taskinfo.slot), ',',... +% num2str(taskinfo.roi_x), ',',... +% num2str(taskinfo.roi_y), ',', ... +% num2str(taskinfo.roi_w), ',', ... +% num2str(taskinfo.roi_h), ',', ... +% num2str(taskinfo.img_w), ',', ... +% num2str(taskinfo.img_h), ',', ... +% taskinfo.text, ',', ... +% num2str(taskinfo.moveflag), ',', ... +% num2str(taskinfo.zoomflag), ',', ... +% taskinfo.q_op1, ',', ... +% taskinfo.q_op2, ',', ... +% taskinfo.q_op3, ',', ... +% taskinfo.q_op4, ',', ... +% num2str(taskinfo.duration), ',', ... +% num2str(taskinfo.xy_marks(1)), ',', ... +% num2str(taskinfo.xy_marks(2))]); +% fprintf(taskinfo.fid,'\r\n'); end diff --git a/src/tasks/task_mark1_out.m b/src/tasks/task_mark1_out.m index f0530a19..a526f9e1 100644 --- a/src/tasks/task_mark1_out.m +++ b/src/tasks/task_mark1_out.m @@ -17,6 +17,9 @@ function task_mark1_out(hObj) handles = guidata(hObj); taskinfo = handles.myData.taskinfo; taskinfo.rotateback = 0; + if length(taskinfo.desc)>17 + myData.finshedTask = myData.finshedTask + 1; + end case {'Update_GUI_Elements', ... 'ResumeButtonPressed'} % Initialize task elements @@ -215,31 +218,83 @@ function task_mark1_out(hObj) handles = rmfield(handles, 'textWSIY'); taskimage_archive(handles); + case 'exportOutput' % export current task information and reuslt + if taskinfo.currentWorking ==1 % write finish task in current study + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + taskinfo.text, ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',', ... + taskinfo.q_op1, ',', ... + taskinfo.q_op2, ',', ... + taskinfo.q_op3, ',', ... + taskinfo.q_op4, ',', ... + num2str(taskinfo.duration), ',', ... + num2str(taskinfo.xy_marks(1)), ',', ... + num2str(taskinfo.xy_marks(2))]); + elseif taskinfo.currentWorking ==0 % write undone task + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + taskinfo.text, ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',', ... + taskinfo.q_op1, ',', ... + taskinfo.q_op2, ',', ... + taskinfo.q_op3, ',', ... + taskinfo.q_op4]); + else % write done task from previous study + desc = taskinfo.desc; + for i = 1 : length(desc)-1 + fprintf(myData.fid,[desc{i},',']); + end + fprintf(myData.fid,[desc{length(desc)}]); + end + fprintf(myData.fid,'\r\n'); + handles.myData.taskinfo = taskinfo; + guidata(handles.GUI, handles); - case 'Save_Results' % Save the results for this task - - fprintf(taskinfo.fid, [... - taskinfo.task, ',', ... - taskinfo.id, '-1', ',', ... - num2str(taskinfo.order), ',', ... - num2str(taskinfo.slot), ',',... - num2str(taskinfo.xy_marks(1)), ',',... - num2str(taskinfo.xy_marks(2)), ',', ... - num2str(taskinfo.roi_w), ',', ... - num2str(taskinfo.roi_h), ',', ... - num2str(taskinfo.img_w), ',', ... - num2str(taskinfo.img_h), ',', ... - taskinfo.text, ',', ... - num2str(taskinfo.moveflag), ',', ... - num2str(taskinfo.zoomflag), ',', ... - taskinfo.q_op1, ',', ... - taskinfo.q_op2, ',', ... - taskinfo.q_op3, ',', ... - taskinfo.q_op4, ',', ... - num2str(taskinfo.duration), ',', ... - num2str(taskinfo.xy_marks(1)), ',', ... - num2str(taskinfo.xy_marks(2))]); - fprintf(taskinfo.fid,'\r\n'); +% case 'Save_Results' % Save the results for this task +% +% fprintf(taskinfo.fid, [... +% taskinfo.task, ',', ... +% taskinfo.id, '-1', ',', ... +% num2str(taskinfo.order), ',', ... +% num2str(taskinfo.slot), ',',... +% num2str(taskinfo.xy_marks(1)), ',',... +% num2str(taskinfo.xy_marks(2)), ',', ... +% num2str(taskinfo.roi_w), ',', ... +% num2str(taskinfo.roi_h), ',', ... +% num2str(taskinfo.img_w), ',', ... +% num2str(taskinfo.img_h), ',', ... +% taskinfo.text, ',', ... +% num2str(taskinfo.moveflag), ',', ... +% num2str(taskinfo.zoomflag), ',', ... +% taskinfo.q_op1, ',', ... +% taskinfo.q_op2, ',', ... +% taskinfo.q_op3, ',', ... +% taskinfo.q_op4, ',', ... +% num2str(taskinfo.duration), ',', ... +% num2str(taskinfo.xy_marks(1)), ',', ... +% num2str(taskinfo.xy_marks(2))]); +% fprintf(taskinfo.fid,'\r\n'); end diff --git a/src/tasks/task_mitotic_counts.m b/src/tasks/task_mitotic_counts.m index 31d86325..1fad9b08 100644 --- a/src/tasks/task_mitotic_counts.m +++ b/src/tasks/task_mitotic_counts.m @@ -23,8 +23,8 @@ function task_mitotic_counts( hObj ) taskinfo.order = str2double(desc{3}); taskinfo.slot = str2double(desc{4}); wsi_files = myData.wsi_files{taskinfo.slot}; - taskinfo.roi_w = wsi_files.wsi_w; - taskinfo.roi_h = wsi_files.wsi_h; + taskinfo.roi_w = max(wsi_files.wsi_w); + taskinfo.roi_h = max(wsi_files.wsi_h); taskinfo.roi_x = taskinfo.roi_w/2+1; taskinfo.roi_y = taskinfo.roi_h/2+1; mp = get(0, 'MonitorPositions'); @@ -40,7 +40,9 @@ function task_mitotic_counts( hObj ) taskinfo.moveflag = str2double(desc{5}); taskinfo.zoomflag = str2double(desc{6}); taskinfo.rotateback = 0; - + if length(taskinfo.desc)>12 + myData.finshedTask = myData.finshedTask + 1; + end case {'Update_GUI_Elements', ... 'ResumeButtonPressed'} % Initialize task elements @@ -246,36 +248,87 @@ function task_mitotic_counts( hObj ) handles = rmfield(handles, 'editCount10'); handles = rmfield(handles, 'editCase'); - - case 'Save_Results' % Save the results for this task - - fprintf(taskinfo.fid, [... - taskinfo.task, ',', ... - taskinfo.id, ',', ... - num2str(taskinfo.order), ',', ... - num2str(taskinfo.slot), ',',... - num2str(taskinfo.roi_x), ',',... - num2str(taskinfo.roi_y), ',', ... - num2str(taskinfo.roi_w), ',', ... - num2str(taskinfo.roi_h), ',', ... - num2str(taskinfo.img_w), ',', ... - num2str(taskinfo.img_h), ',', ... - 'mitotic_counts', ',', ... - num2str(taskinfo.moveflag), ',', ... - num2str(taskinfo.zoomflag), ',', ... - num2str(taskinfo.duration), ',', ... - taskinfo.caseid,',',... - taskinfo.score1,',',... - taskinfo.score2,',',... - taskinfo.score3,',',... - taskinfo.score4,',',... - taskinfo.score5,',',... - taskinfo.score6,',',... - taskinfo.score7,',',... - taskinfo.score8,',',... - taskinfo.score9,',',... - taskinfo.score10,]); - fprintf(taskinfo.fid,'\r\n'); + case 'exportOutput' % export current task information and reuslt + if taskinfo.currentWorking ==1 % write finish task in current study + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + 'mitotic_counts', ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',', ... + num2str(taskinfo.duration), ',', ... + taskinfo.caseid,',',... + taskinfo.score1,',',... + taskinfo.score2,',',... + taskinfo.score3,',',... + taskinfo.score4,',',... + taskinfo.score5,',',... + taskinfo.score6,',',... + taskinfo.score7,',',... + taskinfo.score8,',',... + taskinfo.score9,',',... + taskinfo.score10]); + elseif taskinfo.currentWorking ==0 % write undone task + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag)]); + else % write done task from previous study + desc = taskinfo.desc; + for i = 1 : length(desc)-1 + fprintf(myData.fid,[desc{i},',']); + end + fprintf(myData.fid,[desc{length(desc)}]); + end + fprintf(myData.fid,'\r\n'); + handles.myData.taskinfo = taskinfo; + guidata(handles.GUI, handles); +% case 'Save_Results' % Save the results for this task +% +% fprintf(taskinfo.fid, [... +% taskinfo.task, ',', ... +% taskinfo.id, ',', ... +% num2str(taskinfo.order), ',', ... +% num2str(taskinfo.slot), ',',... +% num2str(taskinfo.roi_x), ',',... +% num2str(taskinfo.roi_y), ',', ... +% num2str(taskinfo.roi_w), ',', ... +% num2str(taskinfo.roi_h), ',', ... +% num2str(taskinfo.img_w), ',', ... +% num2str(taskinfo.img_h), ',', ... +% 'mitotic_counts', ',', ... +% num2str(taskinfo.moveflag), ',', ... +% num2str(taskinfo.zoomflag), ',', ... +% num2str(taskinfo.duration), ',', ... +% taskinfo.caseid,',',... +% taskinfo.score1,',',... +% taskinfo.score2,',',... +% taskinfo.score3,',',... +% taskinfo.score4,',',... +% taskinfo.score5,',',... +% taskinfo.score6,',',... +% taskinfo.score7,',',... +% taskinfo.score8,',',... +% taskinfo.score9,',',... +% taskinfo.score10,]); +% fprintf(taskinfo.fid,'\r\n'); end diff --git a/src/tasks/task_mitotic_expert.m b/src/tasks/task_mitotic_expert.m index c90414fa..72d32fd9 100644 --- a/src/tasks/task_mitotic_expert.m +++ b/src/tasks/task_mitotic_expert.m @@ -34,6 +34,9 @@ function task_mitotic_expert( hObj ) taskinfo.zoomflag = str2double(desc{12}); taskinfo.checkboxresult=zeros(1,8); taskinfo.rotateback = 0; + if length(taskinfo.desc)>12 + myData.finshedTask = myData.finshedTask + 1; + end case {'Update_GUI_Elements', ... 'ResumeButtonPressed'} % Initialize task elements % reset checkboxes results @@ -359,38 +362,89 @@ function task_mitotic_expert( hObj ) handles =rmfield(handles, 'Next_Part'); taskimage_archive(handles); - - case 'Save_Results' % Save the results for this task -% templarge=length(taskinfo.checkboxresult); -% taskinfo.checkboxresult= padarray(taskinfo.checkboxresult,[0,8- templarge],'post'); - fprintf(taskinfo.fid, [... - taskinfo.task, ',', ... - taskinfo.id, ',', ... - num2str(taskinfo.order), ',', ... - num2str(taskinfo.slot), ',',... - num2str(taskinfo.roi_x), ',',... - num2str(taskinfo.roi_y), ',', ... - num2str(taskinfo.roi_w), ',', ... - num2str(taskinfo.roi_h), ',', ... - num2str(taskinfo.img_w), ',', ... - num2str(taskinfo.img_h), ',', ... - taskinfo.text, ',', ... - num2str(taskinfo.moveflag), ',', ... - num2str(taskinfo.zoomflag), ',', ... - num2str(taskinfo.duration), ',', ... - num2str(taskinfo.checkboxresult(1)),',',... - num2str(taskinfo.checkboxresult(2)),',',... - num2str(taskinfo.checkboxresult(3)),',',... - num2str(taskinfo.checkboxresult(4)),',',... - num2str(taskinfo.checkboxresult(5)),',',... - num2str(taskinfo.checkboxresult(6)),',',... - num2str(taskinfo.checkboxresult(7)),',',... - num2str(taskinfo.checkboxresult(8)),',',... - num2str(taskinfo.score),'\r\n'... - taskinfo.task, ',', ... - taskinfo.id, ',', ... - 'Desc:',taskinfo.inputtext]); - fprintf(taskinfo.fid,'\r\n'); + + case 'exportOutput' % export current task information and reuslt + if taskinfo.currentWorking ==1 % write finish task in current study + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + taskinfo.text, ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',', ... + num2str(taskinfo.duration), ',', ... + num2str(taskinfo.checkboxresult(1)),',',... + num2str(taskinfo.checkboxresult(2)),',',... + num2str(taskinfo.checkboxresult(3)),',',... + num2str(taskinfo.checkboxresult(4)),',',... + num2str(taskinfo.checkboxresult(5)),',',... + num2str(taskinfo.checkboxresult(6)),',',... + num2str(taskinfo.checkboxresult(7)),',',... + num2str(taskinfo.checkboxresult(8)),',',... + num2str(taskinfo.score),... + ',Desc:',taskinfo.inputtext]); + elseif taskinfo.currentWorking ==0 % write undone task + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag)]); + else % write done task from previous study + desc = taskinfo.desc; + for i = 1 : length(desc)-1 + fprintf(myData.fid,[desc{i},',']); + end + fprintf(myData.fid,[desc{length(desc)}]); + end + fprintf(myData.fid,'\r\n'); + handles.myData.taskinfo = taskinfo; + guidata(handles.GUI, handles); +% case 'Save_Results' % Save the results for this task +% % templarge=length(taskinfo.checkboxresult); +% % taskinfo.checkboxresult= padarray(taskinfo.checkboxresult,[0,8- templarge],'post'); +% fprintf(taskinfo.fid, [... +% taskinfo.task, ',', ... +% taskinfo.id, ',', ... +% num2str(taskinfo.order), ',', ... +% num2str(taskinfo.slot), ',',... +% num2str(taskinfo.roi_x), ',',... +% num2str(taskinfo.roi_y), ',', ... +% num2str(taskinfo.roi_w), ',', ... +% num2str(taskinfo.roi_h), ',', ... +% num2str(taskinfo.img_w), ',', ... +% num2str(taskinfo.img_h), ',', ... +% taskinfo.text, ',', ... +% num2str(taskinfo.moveflag), ',', ... +% num2str(taskinfo.zoomflag), ',', ... +% num2str(taskinfo.duration), ',', ... +% num2str(taskinfo.checkboxresult(1)),',',... +% num2str(taskinfo.checkboxresult(2)),',',... +% num2str(taskinfo.checkboxresult(3)),',',... +% num2str(taskinfo.checkboxresult(4)),',',... +% num2str(taskinfo.checkboxresult(5)),',',... +% num2str(taskinfo.checkboxresult(6)),',',... +% num2str(taskinfo.checkboxresult(7)),',',... +% num2str(taskinfo.checkboxresult(8)),',',... +% num2str(taskinfo.score),'\r\n'... +% taskinfo.task, ',', ... +% taskinfo.id, ',', ... +% 'Desc:',taskinfo.inputtext]); +% fprintf(taskinfo.fid,'\r\n'); end diff --git a/src/tasks/task_mitotic_train.m b/src/tasks/task_mitotic_train.m index f161c221..49ec009c 100644 --- a/src/tasks/task_mitotic_train.m +++ b/src/tasks/task_mitotic_train.m @@ -44,6 +44,9 @@ function task_mitotic_train( hObj ) taskinfo.expertsc = char(desc{21}); taskinfo.checkboxresult=zeros(1,8); taskinfo.rotateback = 0; + if length(taskinfo.desc)>21 + myData.finshedTask = myData.finshedTask + 1; + end case {'Update_GUI_Elements', ... 'ResumeButtonPressed'} % Initialize task elements @@ -355,35 +358,95 @@ function task_mitotic_train( hObj ) handles =rmfield(handles, 'expert_result'); taskimage_archive(handles); - - case 'Save_Results' % Save the results for this task -% templarge=length(taskinfo.checkboxresult); -% taskinfo.checkboxresult= padarray(taskinfo.checkboxresult,[0,8- templarge],'post'); - fprintf(taskinfo.fid, [... - taskinfo.task, ',', ... - taskinfo.id, ',', ... - num2str(taskinfo.order), ',', ... - num2str(taskinfo.slot), ',',... - num2str(taskinfo.roi_x), ',',... - num2str(taskinfo.roi_y), ',', ... - num2str(taskinfo.roi_w), ',', ... - num2str(taskinfo.roi_h), ',', ... - num2str(taskinfo.img_w), ',', ... - num2str(taskinfo.img_h), ',', ... - taskinfo.text, ',', ... - num2str(taskinfo.moveflag), ',', ... - num2str(taskinfo.zoomflag), ',', ... - num2str(taskinfo.duration), ',', ... - num2str(taskinfo.checkboxresult(1)),',',... - num2str(taskinfo.checkboxresult(2)),',',... - num2str(taskinfo.checkboxresult(3)),',',... - num2str(taskinfo.checkboxresult(4)),',',... - num2str(taskinfo.checkboxresult(5)),',',... - num2str(taskinfo.checkboxresult(6)),',',... - num2str(taskinfo.checkboxresult(7)),',',... - num2str(taskinfo.checkboxresult(8)),',',... - num2str(taskinfo.score)]); - fprintf(taskinfo.fid,'\r\n'); + + case 'exportOutput' % export current task information and reuslt + if taskinfo.currentWorking ==1 % write finish task in current study + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + taskinfo.text, ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',', ... + num2str(taskinfo.duration), ',', ... + num2str(taskinfo.checkboxresult(1)),',',... + num2str(taskinfo.checkboxresult(2)),',',... + num2str(taskinfo.checkboxresult(3)),',',... + num2str(taskinfo.checkboxresult(4)),',',... + num2str(taskinfo.checkboxresult(5)),',',... + num2str(taskinfo.checkboxresult(6)),',',... + num2str(taskinfo.checkboxresult(7)),',',... + num2str(taskinfo.checkboxresult(8)),',',... + num2str(taskinfo.score)]); + + elseif taskinfo.currentWorking ==0 % write undone task + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',',... + num2str(taskinfo.expertcb1), ',',... + num2str(taskinfo.expertcb2), ',', ... + num2str(taskinfo.expertcb3), ',', ... + num2str(taskinfo.expertcb4), ',', ... + num2str(taskinfo.expertcb5), ',', ... + num2str(taskinfo.expertcb6), ',', ... + num2str(taskinfo.expertcb7), ',', ... + num2str(taskinfo.expertcb8),',',... + num2str(taskinfo.expertsc)]); + else % write done task from previous study + desc = taskinfo.desc; + for i = 1 : length(desc)-1 + fprintf(myData.fid,[desc{i},',']); + end + fprintf(myData.fid,[desc{length(desc)}]); + end + fprintf(myData.fid,'\r\n'); + handles.myData.taskinfo = taskinfo; + guidata(handles.GUI, handles); +% case 'Save_Results' % Save the results for this task +% % templarge=length(taskinfo.checkboxresult); +% % taskinfo.checkboxresult= padarray(taskinfo.checkboxresult,[0,8- templarge],'post'); +% fprintf(taskinfo.fid, [... +% taskinfo.task, ',', ... +% taskinfo.id, ',', ... +% num2str(taskinfo.order), ',', ... +% num2str(taskinfo.slot), ',',... +% num2str(taskinfo.roi_x), ',',... +% num2str(taskinfo.roi_y), ',', ... +% num2str(taskinfo.roi_w), ',', ... +% num2str(taskinfo.roi_h), ',', ... +% num2str(taskinfo.img_w), ',', ... +% num2str(taskinfo.img_h), ',', ... +% taskinfo.text, ',', ... +% num2str(taskinfo.moveflag), ',', ... +% num2str(taskinfo.zoomflag), ',', ... +% num2str(taskinfo.duration), ',', ... +% num2str(taskinfo.checkboxresult(1)),',',... +% num2str(taskinfo.checkboxresult(2)),',',... +% num2str(taskinfo.checkboxresult(3)),',',... +% num2str(taskinfo.checkboxresult(4)),',',... +% num2str(taskinfo.checkboxresult(5)),',',... +% num2str(taskinfo.checkboxresult(6)),',',... +% num2str(taskinfo.checkboxresult(7)),',',... +% num2str(taskinfo.checkboxresult(8)),',',... +% num2str(taskinfo.score)]); +% fprintf(taskinfo.fid,'\r\n'); end diff --git a/src/tasks/task_radio1of4.m b/src/tasks/task_radio1of4.m index 2a629fdc..5e385808 100644 --- a/src/tasks/task_radio1of4.m +++ b/src/tasks/task_radio1of4.m @@ -16,6 +16,9 @@ function task_radio1of4(hObj) handles = guidata(hObj); taskinfo = handles.myData.taskinfo; taskinfo.rotateback = 0; + if length(taskinfo.desc)>17 + myData.finshedTask = myData.finshedTask + 1; + end case {'Update_GUI_Elements', ... 'ResumeButtonPressed'} % Initialize task elements @@ -98,31 +101,83 @@ function task_radio1of4(hObj) handles = rmfield(handles, 'radiobutton4'); taskimage_archive(handles); - - case 'Save_Results' % Save the results for this task - fprintf(taskinfo.fid, [... - taskinfo.task, ',', ... - taskinfo.id, ',', ... - num2str(taskinfo.order), ',', ... - num2str(taskinfo.slot), ',',... - num2str(taskinfo.roi_x), ',',... - num2str(taskinfo.roi_y), ',', ... - num2str(taskinfo.roi_w), ',', ... - num2str(taskinfo.roi_h), ',', ... - num2str(taskinfo.img_w), ',', ... - num2str(taskinfo.img_h), ',', ... - taskinfo.text, ',', ... - num2str(taskinfo.moveflag), ',', ... - num2str(taskinfo.zoomflag), ',', ... - taskinfo.q_op1, ',', ... - taskinfo.q_op2, ',', ... - taskinfo.q_op3, ',', ... - taskinfo.q_op4, ',', ... - num2str(taskinfo.duration), ',', ... - num2str(taskinfo.buttonID), ',', ... - taskinfo.button_desc]); - fprintf(taskinfo.fid,'\r\n'); + case 'exportOutput' % export current task information and reuslt + if taskinfo.currentWorking ==1 % write finish task in current study + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + taskinfo.text, ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',', ... + taskinfo.q_op1, ',', ... + taskinfo.q_op2, ',', ... + taskinfo.q_op3, ',', ... + taskinfo.q_op4, ',', ... + num2str(taskinfo.duration), ',', ... + num2str(taskinfo.buttonID), ',', ... + taskinfo.button_desc]); + elseif taskinfo.currentWorking ==0 % write undone task + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + taskinfo.text, ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',', ... + taskinfo.q_op1, ',', ... + taskinfo.q_op2, ',', ... + taskinfo.q_op3, ',', ... + taskinfo.q_op4]); + else % write done task from previous study + desc = taskinfo.desc; + for i = 1 : length(desc)-1 + fprintf(myData.fid,[desc{i},',']); + end + fprintf(myData.fid,[desc{length(desc)}]); + end + fprintf(myData.fid,'\r\n'); + handles.myData.taskinfo = taskinfo; + guidata(handles.GUI, handles); +% case 'Save_Results' % Save the results for this task +% +% fprintf(taskinfo.fid, [... +% taskinfo.task, ',', ... +% taskinfo.id, ',', ... +% num2str(taskinfo.order), ',', ... +% num2str(taskinfo.slot), ',',... +% num2str(taskinfo.roi_x), ',',... +% num2str(taskinfo.roi_y), ',', ... +% num2str(taskinfo.roi_w), ',', ... +% num2str(taskinfo.roi_h), ',', ... +% num2str(taskinfo.img_w), ',', ... +% num2str(taskinfo.img_h), ',', ... +% taskinfo.text, ',', ... +% num2str(taskinfo.moveflag), ',', ... +% num2str(taskinfo.zoomflag), ',', ... +% taskinfo.q_op1, ',', ... +% taskinfo.q_op2, ',', ... +% taskinfo.q_op3, ',', ... +% taskinfo.q_op4, ',', ... +% num2str(taskinfo.duration), ',', ... +% num2str(taskinfo.buttonID), ',', ... +% taskinfo.button_desc]); +% fprintf(taskinfo.fid,'\r\n'); end diff --git a/src/tasks/task_registration_test.m b/src/tasks/task_registration_test.m index a5c60f88..7e4d999c 100644 --- a/src/tasks/task_registration_test.m +++ b/src/tasks/task_registration_test.m @@ -22,16 +22,19 @@ function task_registration_test(hObj) taskinfo.roi_y = str2double(desc{6}); taskinfo.roi_w = str2double(desc{7}); taskinfo.roi_h = str2double(desc{8}); - taskinfo.img_w = str2double(desc{9}); - taskinfo.img_h = str2double(desc{10}); - taskinfo.text = char(desc{11}); - taskinfo.moveflag = str2double(desc{12}); - taskinfo.zoomflag = str2double(desc{13}); - taskinfo.description = char(desc{14}); + taskinfo.img_w = taskinfo.roi_w; + taskinfo.img_h = taskinfo.roi_h; + taskinfo.text = 'Measure registration distance'; taskinfo.rotateback = 0; taskinfo.done(1)=0; taskinfo.done(2)=0; taskinfo.done(3)=0; + taskinfo.stagePosition{1}='0,0'; + taskinfo.stagePosition{2}='0,0'; + taskinfo.stagePosition{3}='0,0'; + if length(desc)>8 + myData.finshedTask = myData.finshedTask + 1; + end case {'Update_GUI_Elements', ... 'ResumeButtonPressed'} % Initialize task elements @@ -182,7 +185,38 @@ function task_registration_test(hObj) % Make count task response box active uicontrol(handles.autoReg); - case {'NextButtonPressed', ... +% case 'NextButtonPressed' % Clean up the task elements +% % Hide image and management buttons +% +% taskmgt_default(handles, 'off'); +% handles = guidata(hObj); +% taskinfo = handles.myData.taskinfo; +% +% +% set(handles.iH,'visible','off'); +% set(handles.ImageAxes,'visible','off'); +% delete(handles.textCount1); +% delete(handles.textCount2); +% delete(handles.textCount3); +% delete(handles.autoReg); +% delete(handles.fastReg); +% delete(handles.bestReg); +% delete(handles.autoUnfocusPhoto); +% delete(handles.autoFocusPhoto); +% delete(handles.fastPhoto); +% delete(handles.bestPhoto); +% handles = rmfield(handles, 'textCount1'); +% handles = rmfield(handles, 'textCount2'); +% handles = rmfield(handles, 'textCount3'); +% handles = rmfield(handles, 'autoReg'); +% handles = rmfield(handles, 'fastReg'); +% handles = rmfield(handles, 'bestReg'); +% handles = rmfield(handles, 'autoUnfocusPhoto'); +% handles = rmfield(handles, 'autoFocusPhoto'); +% handles = rmfield(handles, 'fastPhoto'); +% handles = rmfield(handles, 'bestPhoto'); +% % taskimage_archive(handles); + case {'NextButtonPressed',... 'PauseButtonPressed',... 'Backbutton_Callback'} % Clean up the task elements @@ -190,6 +224,8 @@ function task_registration_test(hObj) taskmgt_default(handles, 'off'); handles = guidata(hObj); + taskinfo = handles.myData.taskinfo; + set(handles.iH,'visible','off'); set(handles.ImageAxes,'visible','off'); @@ -213,12 +249,20 @@ function task_registration_test(hObj) handles = rmfield(handles, 'autoFocusPhoto'); handles = rmfield(handles, 'fastPhoto'); handles = rmfield(handles, 'bestPhoto'); + % case 'abortbutton_Callback' % export undo task without results - % taskimage_archive(handles); - - case 'Save_Results' % Save the results for this task + +% case 'Save_Results' % export task result if this task finished before +% desc = taskinfo.desc; +% for i = 1 : length(desc)-1 +% fprintf(myData.fid,[desc{i},',']); +% end +% fprintf(myData.fid,[desc{length(desc)}]); +% fprintf(myData.fid,'\r\n'); - fprintf(taskinfo.fid, [... + case 'exportOutput' % export current task information and reuslt + if taskinfo.currentWorking ==1 % write finish task in current study + fprintf(myData.fid, [... taskinfo.task, ',', ... taskinfo.id, ',', ... num2str(taskinfo.order), ',', ... @@ -227,12 +271,7 @@ function task_registration_test(hObj) num2str(taskinfo.roi_y), ',', ... num2str(taskinfo.roi_w), ',', ... num2str(taskinfo.roi_h), ',', ... - num2str(taskinfo.img_w), ',', ... - num2str(taskinfo.img_h), ',', ... taskinfo.text, ',', ... - num2str(taskinfo.moveflag), ',', ... - num2str(taskinfo.zoomflag), ',', ... - taskinfo.description, ',', ... num2str(taskinfo.durationMove), ',', ... num2str(taskinfo.durationAutoReg), ',', ... num2str(taskinfo.duration), ',', ... @@ -242,7 +281,48 @@ function task_registration_test(hObj) taskinfo.stagePosition{2},',',... taskinfo.regResult{3},',',... taskinfo.stagePosition{3}]); - fprintf(taskinfo.fid,'\r\n'); + elseif taskinfo.currentWorking ==0 % write undone task + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h)]); + else % write done task from previous study + desc = taskinfo.desc; + for i = 1 : length(desc)-1 + fprintf(myData.fid,[desc{i},',']); + end + fprintf(myData.fid,[desc{length(desc)}]); + end + fprintf(myData.fid,'\r\n'); + handles.myData.taskinfo = taskinfo; + guidata(handles.GUI, handles); +% case 'Save_Results' % Save the results for this task +% +% fprintf(taskinfo.fid, [... +% taskinfo.task, ',', ... +% taskinfo.id, ',', ... +% num2str(taskinfo.order), ',', ... +% num2str(taskinfo.slot), ',',... +% num2str(taskinfo.roi_x), ',',... +% num2str(taskinfo.roi_y), ',', ... +% num2str(taskinfo.roi_w), ',', ... +% num2str(taskinfo.roi_h), ',', ... +% taskinfo.text, ',', ... +% num2str(taskinfo.durationMove), ',', ... +% num2str(taskinfo.durationAutoReg), ',', ... +% num2str(taskinfo.duration), ',', ... +% taskinfo.regResult{1}, ',', ... +% taskinfo.stagePosition{1},',',... +% taskinfo.regResult{2}, ',', ... +% taskinfo.stagePosition{2},',',... +% taskinfo.regResult{3},',',... +% taskinfo.stagePosition{3}]); +% fprintf(taskinfo.fid,'\r\n'); end diff --git a/src/tasks/task_slider.m b/src/tasks/task_slider.m index ef8133b5..2c201fc1 100644 --- a/src/tasks/task_slider.m +++ b/src/tasks/task_slider.m @@ -16,6 +16,9 @@ function task_slider(hObj) handles = guidata(hObj); taskinfo = handles.myData.taskinfo; taskinfo.rotateback = 0; + if length(taskinfo.desc)>17 + myData.finshedTask = myData.finshedTask + 1; + end case {'Update_GUI_Elements', ... 'ResumeButtonPressed'} % Initialize task elements @@ -142,30 +145,80 @@ function task_slider(hObj) handles = rmfield(handles, 'textscore'); taskimage_archive(handles); - - case 'Save_Results' % Save the results for this task - - fprintf(taskinfo.fid, [... - taskinfo.task, ',', ... - taskinfo.id, ',', ... - num2str(taskinfo.order), ',', ... - num2str(taskinfo.slot), ',',... - num2str(taskinfo.roi_x), ',',... - num2str(taskinfo.roi_y), ',', ... - num2str(taskinfo.roi_w), ',', ... - num2str(taskinfo.roi_h), ',', ... - num2str(taskinfo.img_w), ',', ... - num2str(taskinfo.img_h), ',', ... - taskinfo.text, ',', ... - num2str(taskinfo.moveflag), ',', ... - num2str(taskinfo.zoomflag), ',', ... - taskinfo.q_op1, ',', ... - taskinfo.q_op2, ',', ... - taskinfo.q_op3, ',', ... - taskinfo.q_op4, ',', ... - num2str(taskinfo.duration), ',', ... - num2str(taskinfo.score)]); - fprintf(taskinfo.fid,'\r\n'); + case 'exportOutput' % export current task information and reuslt + if taskinfo.currentWorking ==1 % write finish task in current study + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + taskinfo.text, ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',', ... + taskinfo.q_op1, ',', ... + taskinfo.q_op2, ',', ... + taskinfo.q_op3, ',', ... + taskinfo.q_op4, ',', ... + num2str(taskinfo.duration), ',', ... + num2str(taskinfo.score)]); + elseif taskinfo.currentWorking ==0 % write undone task + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + taskinfo.text, ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',', ... + taskinfo.q_op1, ',', ... + taskinfo.q_op2, ',', ... + taskinfo.q_op3, ',', ... + taskinfo.q_op4]); + else % write done task from previous study + desc = taskinfo.desc; + for i = 1 : length(desc)-1 + fprintf(myData.fid,[desc{i},',']); + end + fprintf(myData.fid,[desc{length(desc)}]); + end + fprintf(myData.fid,'\r\n'); + handles.myData.taskinfo = taskinfo; + guidata(handles.GUI, handles); +% case 'Save_Results' % Save the results for this task +% +% fprintf(taskinfo.fid, [... +% taskinfo.task, ',', ... +% taskinfo.id, ',', ... +% num2str(taskinfo.order), ',', ... +% num2str(taskinfo.slot), ',',... +% num2str(taskinfo.roi_x), ',',... +% num2str(taskinfo.roi_y), ',', ... +% num2str(taskinfo.roi_w), ',', ... +% num2str(taskinfo.roi_h), ',', ... +% num2str(taskinfo.img_w), ',', ... +% num2str(taskinfo.img_h), ',', ... +% taskinfo.text, ',', ... +% num2str(taskinfo.moveflag), ',', ... +% num2str(taskinfo.zoomflag), ',', ... +% taskinfo.q_op1, ',', ... +% taskinfo.q_op2, ',', ... +% taskinfo.q_op3, ',', ... +% taskinfo.q_op4, ',', ... +% num2str(taskinfo.duration), ',', ... +% num2str(taskinfo.score)]); +% fprintf(taskinfo.fid,'\r\n'); end diff --git a/src/tasks/task_slider_imagescope.m b/src/tasks/task_slider_imagescope.m index 715d9815..a16642ff 100644 --- a/src/tasks/task_slider_imagescope.m +++ b/src/tasks/task_slider_imagescope.m @@ -16,6 +16,9 @@ function task_slider(hObj) handles = guidata(hObj); taskinfo = handles.myData.taskinfo; taskinfo.rotateback = 0; + if length(taskinfo.desc)>17 + myData.finshedTask = myData.finshedTask + 1; + end case {'Update_GUI_Elements', ... 'ResumeButtonPressed'} % Initialize task elements @@ -157,30 +160,80 @@ function task_slider(hObj) handles = rmfield(handles, 'textscore'); taskimage_archive(handles); - - case 'Save_Results' % Save the results for this task - - fprintf(taskinfo.fid, [... - taskinfo.task, ',', ... - taskinfo.id, ',', ... - num2str(taskinfo.order), ',', ... - num2str(taskinfo.slot), ',',... - num2str(taskinfo.roi_x), ',',... - num2str(taskinfo.roi_y), ',', ... - num2str(taskinfo.roi_w), ',', ... - num2str(taskinfo.roi_h), ',', ... - num2str(taskinfo.img_w), ',', ... - num2str(taskinfo.img_h), ',', ... - taskinfo.text, ',', ... - num2str(taskinfo.moveflag), ',', ... - num2str(taskinfo.zoomflag), ',', ... - taskinfo.q_op1, ',', ... - taskinfo.q_op2, ',', ... - taskinfo.q_op3, ',', ... - taskinfo.q_op4, ',', ... - num2str(taskinfo.duration), ',', ... - num2str(taskinfo.score)]); - fprintf(taskinfo.fid,'\r\n'); + case 'exportOutput' % export current task information and reuslt + if taskinfo.currentWorking ==1 % write finish task in current study + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + taskinfo.text, ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',', ... + taskinfo.q_op1, ',', ... + taskinfo.q_op2, ',', ... + taskinfo.q_op3, ',', ... + taskinfo.q_op4, ',', ... + num2str(taskinfo.duration), ',', ... + num2str(taskinfo.score)]); + elseif taskinfo.currentWorking ==0 % write undone task + fprintf(myData.fid, [... + taskinfo.task, ',', ... + taskinfo.id, ',', ... + num2str(taskinfo.order), ',', ... + num2str(taskinfo.slot), ',',... + num2str(taskinfo.roi_x), ',',... + num2str(taskinfo.roi_y), ',', ... + num2str(taskinfo.roi_w), ',', ... + num2str(taskinfo.roi_h), ',', ... + num2str(taskinfo.img_w), ',', ... + num2str(taskinfo.img_h), ',', ... + taskinfo.text, ',', ... + num2str(taskinfo.moveflag), ',', ... + num2str(taskinfo.zoomflag), ',', ... + taskinfo.q_op1, ',', ... + taskinfo.q_op2, ',', ... + taskinfo.q_op3, ',', ... + taskinfo.q_op4]); + else % write done task from previous study + desc = taskinfo.desc; + for i = 1 : length(desc)-1 + fprintf(myData.fid,[desc{i},',']); + end + fprintf(myData.fid,[desc{length(desc)}]); + end + fprintf(myData.fid,'\r\n'); + handles.myData.taskinfo = taskinfo; + guidata(handles.GUI, handles); +% case 'Save_Results' % Save the results for this task +% +% fprintf(taskinfo.fid, [... +% taskinfo.task, ',', ... +% taskinfo.id, ',', ... +% num2str(taskinfo.order), ',', ... +% num2str(taskinfo.slot), ',',... +% num2str(taskinfo.roi_x), ',',... +% num2str(taskinfo.roi_y), ',', ... +% num2str(taskinfo.roi_w), ',', ... +% num2str(taskinfo.roi_h), ',', ... +% num2str(taskinfo.img_w), ',', ... +% num2str(taskinfo.img_h), ',', ... +% taskinfo.text, ',', ... +% num2str(taskinfo.moveflag), ',', ... +% num2str(taskinfo.zoomflag), ',', ... +% taskinfo.q_op1, ',', ... +% taskinfo.q_op2, ',', ... +% taskinfo.q_op3, ',', ... +% taskinfo.q_op4, ',', ... +% num2str(taskinfo.duration), ',', ... +% num2str(taskinfo.score)]); +% fprintf(taskinfo.fid,'\r\n'); end diff --git a/src/tasks/task_start.m b/src/tasks/task_start.m index fb4a218c..fbae3bf0 100644 --- a/src/tasks/task_start.m +++ b/src/tasks/task_start.m @@ -56,6 +56,8 @@ function task_start(hObj) case 'NextButtonPressed' % Clean up the task elements + + handles = guidata(findobj('Tag','GUI')); set(handles.NextButton, 'Visible', 'off'); delete(handles.edit_readerID); @@ -63,9 +65,14 @@ function task_start(hObj) handles = rmfield(handles, 'edit_readerID'); handles = rmfield(handles, 'text_readerID'); - case 'Save_Results' % Save the results for this task - - fprintf(taskinfo.fid, '%s\r\n', taskinfo.id); + case 'exportOutput' % export current task information and reuslt + Save_Results(handles); + handles = guidata(findobj('Tag','GUI')); + myData.fid = handles.myData.fid; + myData.iter = handles.myData.iter; + case 'Save_Results' % Save the results for this task + + fprintf(myData.fid, '%s\r\n', taskinfo.id); end @@ -135,4 +142,133 @@ function edit_readerID_Callback(hObj, eventdata, handles) error_show(ME) end -end \ No newline at end of file +end +% start generate output file: +% 1. free command +% 2. setting +% 3. finished task +function Save_Results(handles) +try + + % SAVE THE DATA + % The filename of the newly created file will be the name of the + % pathologist. Gaps in the string are replaced by the + % '_' symbol. + + myData = handles.myData; + wsi_files = myData.wsi_files; + %tasks_out = myData.tasks_out; + settings = myData.settings; + n_wsi = settings.n_wsi; + + outputfile=myData.outputfile; + full_outputfile = [myData.workdir,'Output_Files\',outputfile]; + + % The path to the file is composed from the filename and the current + % application path. File at this path is then opened. + fid = fopen(full_outputfile,'w+'); + + % The header part of the input file is written into the output file + % first + fprintf(fid,'Comments from the input file:\r\n'); + for i=1:1:size(myData.InputFileHeader) + fprintf(fid,myData.InputFileHeader{i,:}); + end + + %The settings obtained from the input file are again written into the + %the output file. + fprintf(fid,'SETTINGS\r\n'); + + desc = ['NUMBER_OF_WSI=', num2str(n_wsi)]; + fprintf(fid, '%s \r\n',desc); + + % Read in the file names of the WSI corresponding to the slots + for i=1:n_wsi + desc = ['wsi_slot_',num2str(i,'%d'),'=', ... + wsi_files{i}.fullname]; + fprintf(fid,'%s \r\n',desc); + desc = ['rgb_lut_slot_',num2str(i,'%d'),'=', ... + wsi_files{i}.rgb_lutfilename]; + fprintf(fid,'%s \r\n',desc); + desc = ['scan_scale_',num2str(i,'%d'),'=', ... + num2str( wsi_files{i}.scan_scale)]; + fprintf(fid,'%s \r\n',desc); + end + + fprintf(fid,strcat('label_pos','=',num2str(settings.label_pos),'\r\n')); + fprintf(fid,strcat('reticleID','=',num2str(settings.reticleID),'\r\n')); + fprintf(fid,strcat('cam_kind','=',num2str(settings.cam_kind),'\r\n')); + fprintf(fid,strcat('cam_format','=',settings.cam_format,'\r\n')); + fprintf(fid,strcat('cam_pixel_size','=',num2str(settings.cam_pixel_size),'\r\n')); + fprintf(fid,strcat('mag_cam','=',num2str(settings.mag_cam),'\r\n')); + fprintf(fid,strcat('mag_lres','=',num2str(settings.mag_lres),'\r\n')); + fprintf(fid,strcat('mag_hres','=',num2str(settings.mag_hres),'\r\n')); + + fprintf(fid,strcat('stage_label','=',num2str(myData.stage.label),'\r\n')); + desc = ['BG_Color_RGB=',... + num2str(myData.settings.BG_color(1)),'=',... + num2str(myData.settings.BG_color(2)),'=',... + num2str(myData.settings.BG_color(3)),... + '\r\n']; + fprintf(fid,desc); + desc = ['FG_Color_RGB=',... + num2str(myData.settings.FG_color(1)),'=',... + num2str(myData.settings.FG_color(2)),'=',... + num2str(myData.settings.FG_color(3)),... + '\r\n']; + fprintf(fid,desc); + desc = ['AxesBG_Color_RGB=',... + num2str(myData.settings.Axes_BG(1)),'=',... + num2str(myData.settings.Axes_BG(2)),'=',... + num2str(myData.settings.Axes_BG(3)),... + '\r\n']; + fprintf(fid,desc); + fprintf(fid,strcat('FontSize','=',num2str(myData.settings.FontSize),'\r\n')); + fprintf(fid,strcat('autoreg','=',num2str(myData.settings.autoreg),'\r\n')); + fprintf(fid,strcat('saveimages','=',num2str(myData.settings.saveimages),'\r\n')); + fprintf(fid,strcat('taskorder','=',num2str(myData.settings.taskorder),'\r\n')); + fprintf(fid,'\r\n'); + + fprintf(fid,'BODY\r\n'); + + % The arrays containing information about the evaluation task and the + % answers of the evaluator are saved into the file that was opened. + + st = dbstack; + calling_function = st(1).name; + + % Write the 'start' task output according to taskinfo.task_handle + taskinfo = myData.task_start; + + taskinfo.calling_function = calling_function; + handles.myData.taskinfo = taskinfo; + handles.myData.fid = fid; + guidata(handles.GUI, handles); + taskinfo.task_handle(handles.GUI); + + % Write the 'finish' task output according to taskinfo.task_handle + taskinfo = myData.task_finish; + taskinfo.calling_function = calling_function; + handles.myData.taskinfo = taskinfo; + guidata(handles.GUI, handles); + taskinfo.task_handle(handles.GUI); + myData.iter = myData.iter+1; + + % Write finished tasks + while myData.iter <= myData.finshedTask+1 + taskinfo = myData.tasks_out{myData.iter}; + % handles.myData.tasks_out{handles.myData.iter} = taskinfo; + taskinfo.calling_function = st(1).name; + handles.myData.taskinfo = taskinfo; + guidata(handles.GUI, handles); + taskinfo.task_handle(handles.GUI); + handles = guidata(handles.GUI); + myData.iter = myData.iter +1; + end + myData.iter = myData.iter -1; + handles.myData.iter = myData.iter; + guidata(handles.GUI, handles); +catch ME + error_show(ME) +end +end \ No newline at end of file diff --git a/src/tasks/taskmgt_default.m b/src/tasks/taskmgt_default.m index e1c82067..a7660ab5 100644 --- a/src/tasks/taskmgt_default.m +++ b/src/tasks/taskmgt_default.m @@ -4,23 +4,23 @@ function taskmgt_default(handles, on_off) myData = handles.myData; taskinfo = myData.taskinfo; - % Moving allowed? - if taskinfo.moveflag==1 - set(handles.moving_indication, ... - 'CData',myData.graphics.moving_allowed); - else - set(handles.moving_indication, ... - 'CData',myData.graphics.moving_not_allowed); - end - - % Zooming allowed? - if taskinfo.zoomflag==1 - set(handles.zooming_indication, ... - 'CData',myData.graphics.zooming_allowed); - else - set(handles.zooming_indication, ... - 'CData',myData.graphics.zooming_not_allowed); - end +% % Moving allowed? +% if taskinfo.moveflag==1 +% set(handles.moving_indication, ... +% 'CData',myData.graphics.moving_allowed); +% else +% set(handles.moving_indication, ... +% 'CData',myData.graphics.moving_not_allowed); +% end +% +% % Zooming allowed? +% if taskinfo.zoomflag==1 +% set(handles.zooming_indication, ... +% 'CData',myData.graphics.zooming_allowed); +% else +% set(handles.zooming_indication, ... +% 'CData',myData.graphics.zooming_not_allowed); +% end % Show management buttons if strcmpi(handles.myData.mode_desc,'MicroRT') @@ -28,16 +28,16 @@ function taskmgt_default(handles, on_off) set(handles.Fast_Register_Button, 'Visible',on_off); set(handles.videobutton, 'Visible',on_off); end - set(handles.moving_indication,'visible',on_off); - - set(handles.zooming_indication,'visible',on_off); +% set(handles.moving_indication,'visible',on_off); +% +% set(handles.zooming_indication,'visible',on_off); set(handles.NextButton, 'Visible',on_off); set(handles.ResetViewButton, 'Visible',on_off); set(handles.PauseButton, 'Visible',on_off); set(handles.ResumeButton, 'Visible', on_off, ... 'Enable', 'off'); set(handles.Reticlebutton, 'Visible', on_off); - if handles.myData.iter > 2 + if handles.myData.iter > handles.myData.finshedTask+2 set(handles.Backbutton,'visible',on_off); end