function varargout = astra_data_gui(varargin) % ASTRA_DATA_GUI M-file for ASTRA_DATA_GUI.fig % ASTRA_DATA_GUI, by itself, creates a new ASTRA_DATA_GUI or raises the existing % singleton*. % % H = ASTRA_DATA_GUI returns the handle to a new ASTRA_DATA_GUI or the handle to % the existing singleton*. % % ASTRA_DATA_GUI('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in ASTRA_DATA_GUI.M with the given input arguments. % % ASTRA_DATA_GUI('Property','Value',...) creates a new ASTRA_DATA_GUI or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before ASTRA_DATA_GUI_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to ASTRA_DATA_GUI_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help ASTRA_DATA_GUI % Last Modified by GUIDE v2.5 05-Mar-2012 14:34:03 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @astra_data_gui_OpeningFcn, ... 'gui_OutputFcn', @astra_data_gui_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before astra_data_gui is made visible. function astra_data_gui_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to astra_data_gui (see VARARGIN) % Choose default command line output for astra_data_gui handles.output = hObject; handles.data = []; % Update handles structure guidata(hObject, handles); % UIWAIT makes astra_data_gui wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = astra_data_gui_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % Use this function to display a figure using the gui from any m-file % example: % Handle = astra_data_gui(); % astra_data_gui('loadVolume',guihandles(Handle),'rand(30,30,30)',15); function loadVolume(handles,name,figure_number) set(handles.txt_var, 'String', name); set(handles.figure_number, 'String', num2str(figure_number)); btn_load_Callback(handles.txt_var, [], handles); function txt_var_Callback(hObject, eventdata, handles) %#ok<*DEFNU> % hObject handle to txt_var (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of txt_var as text % str2double(get(hObject,'String')) returns contents of txt_var as a double % --- Executes during object creation, after setting all properties. function txt_var_CreateFcn(hObject, eventdata, handles) % hObject handle to txt_var (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on button press in btn_load. function btn_load_Callback(hObject, eventdata, handles) % hObject handle to btn_load (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) s = get(handles.txt_var, 'String'); data = evalin('base', s); handles.data = data; guidata(hObject, handles); % Set Default Stuff set(handles.sld_slice, 'Min',1); set(handles.sld_slice, 'Max', size(data,3)); set(handles.sld_slice, 'SliderStep', [1/(size(data,3)-2) 1/(size(data,3)-2)]); set(handles.sld_slice, 'Value', size(data,3)/2); sliderValue = floor(get(handles.sld_slice, 'Value')); set(handles.txt_slice, 'String', num2str(sliderValue)); set(handles.txt_min, 'String', num2str(1)); set(handles.txt_max, 'String', num2str(size(data,3))); set(handles.sld_magnification, 'Min',1); set(handles.sld_magnification, 'Max', 400); set(handles.sld_magnification, 'SliderStep', [1/(400-2) 1/(400-2)]); set(handles.sld_magnification, 'Value', 100); sliderValue3 = floor(get(handles.sld_magnification, 'Value')); set(handles.txt_mag, 'String', num2str(sliderValue3)); figure_number = floor(str2double(get(handles.figure_number, 'String'))); if(isnan(figure_number) || figure_number < 1) set(handles.figure_number, 'String', num2str(10)); end showimage(handles); % --- SHOW IMAGE function showimage(handles) sliderValue = floor(get(handles.sld_slice, 'Value')); magnification = floor(get(handles.sld_magnification, 'Value')); figure_number = floor(str2double(get(handles.figure_number, 'String'))); image_matrix = handles.data; if get(handles.btn_x, 'Value') == 1 figure(figure_number), imshow(sliceExtractor((image_matrix(:,:,:)), 'y', sliderValue),[],'InitialMagnification', magnification); ylabel('y') xlabel('z') set(gcf,'Name','ASTRA DATA GUI') elseif get(handles.btn_y, 'Value') == 1 figure(figure_number), imshow(sliceExtractor((image_matrix(:,:,:)), 'x', sliderValue),[],'InitialMagnification', magnification); ylabel('x') xlabel('z') set(gcf,'Name','ASTRA DATA GUI') else figure(figure_number), imshow(sliceExtractor((image_matrix(:,:,:)), 'z', sliderValue),[],'InitialMagnification', magnification); ylabel('x') xlabel('y') set(gcf,'Name','ASTRA DATA GUI') end % --- Executes on slider movement. function sld_slice_Callback(hObject, eventdata, handles) % hObject handle to sld_slice (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) sliderValue = floor(get(handles.sld_slice, 'Value')); set(handles.txt_slice, 'String', num2str(sliderValue)); showimage(handles); % --- Executes during object creation, after setting all properties. function sld_slice_CreateFcn(hObject, eventdata, handles) % hObject handle to sld_slice (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background. if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end % --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton3. function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton4. function pushbutton4_Callback(hObject, eventdata, handles) % hObject handle to pushbutton4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) function txt_slice_Callback(hObject, eventdata, handles) % hObject handle to txt_slice (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) slice = str2double(get(handles.txt_slice, 'String')); max = str2num(get(handles.txt_max,'String')); min = str2num(get(handles.txt_min,'String')); if(slice > max) set(handles.txt_slice, 'String', num2str(max)); set(handles.sld_slice, 'Value', max); elseif(slice < min) set(handles.txt_slice, 'String', num2str(min)); set(handles.sld_slice, 'Value', min); else set(handles.sld_slice, 'Value', slice); end showimage(handles); % --- Executes during object creation, after setting all properties. function txt_slice_CreateFcn(hObject, eventdata, handles) % hObject handle to txt_slice (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on slider movement. function sld_magnification_Callback(hObject, eventdata, handles) % hObject handle to sld_slice2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider sliderValue3 = floor(get(handles.sld_magnification, 'Value')); set(handles.txt_mag, 'String', num2str(sliderValue3)); if(~isempty(handles.data)) showimage(handles); end % --- Executes during object creation, after setting all properties. function sld_magnification_CreateFcn(hObject, eventdata, handles) % hObject handle to sld_slice2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background. if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function txt_mag_Callback(hObject, eventdata, handles) % hObject handle to txt_slice2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) magnification = str2double(get(handles.txt_mag, 'String')); if(magnification > 400) set(handles.txt_mag, 'String', num2str(400)); set(handles.sld_magnification, 'Value', 400); elseif(magnification < 1) set(handles.txt_mag, 'String', num2str(1)); set(handles.sld_magnification, 'Value', 1); else set(handles.sld_magnification, 'Value', magnification); end if(~isempty(handles.data)) showimage(handles); end % --- Executes during object creation, after setting all properties. function txt_mag_CreateFcn(hObject, eventdata, handles) % hObject handle to txt_slice2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on slider movement. function figure_number_Callback(hObject, eventdata, handles) % hObject handle to sld_slice2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider number = floor(str2double(get(handles.figure_number, 'String'))); if(number < 1) set(handles.figure_number, 'String', num2str(1)); else set(handles.figure_number, 'String', num2str(number)); end if(~isempty(handles.data)) showimage(handles); end % --- Executes during object creation, after setting all properties. function figure_number_CreateFcn(hObject, eventdata, handles) % hObject handle to sld_slice2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background. if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end % --- Executes when selected object is changed in btn_dir. function btn_dir_SelectionChangeFcn(hObject, eventdata, handles) % hObject handle to the selected object in btn_dir % eventdata structure with the following fields (see UIBUTTONGROUP) % EventName: string 'SelectionChanged' (read only) % OldValue: handle of the previously selected object or empty if none was selected % NewValue: handle of the currently selected object % handles structure with handles and user data (see GUIDATA) data = handles.data; if(hObject == handles.btn_x) set(handles.btn_x, 'Value', 1); set(handles.btn_y, 'Value', 0); set(handles.btn_z, 'Value', 0); elseif(hObject == handles.btn_y) set(handles.btn_x, 'Value', 0); set(handles.btn_y, 'Value', 1); set(handles.btn_z, 'Value', 0); elseif(hObject == handles.btn_z) set(handles.btn_x, 'Value', 0); set(handles.btn_y, 'Value', 0); set(handles.btn_z, 'Value', 1); end if get(handles.btn_x, 'Value') == 1 set(handles.sld_slice, 'Min',1); set(handles.sld_slice, 'Max', size(data,1)); set(handles.sld_slice, 'SliderStep', [1/(size(data,1)-2) 1/(size(data,1)-2)]); set(handles.sld_slice, 'Value', size(data,1)/2); sliderValue = get(handles.sld_slice, 'Value'); set(handles.txt_slice, 'String', num2str(sliderValue)); set(handles.txt_min, 'String', num2str(1)); set(handles.txt_max, 'String', num2str(size(data,1))); elseif get(handles.btn_y, 'Value') == 1 set(handles.sld_slice, 'Min',1); set(handles.sld_slice, 'Max', size(data,2)); set(handles.sld_slice, 'SliderStep', [1/(size(data,2)-2) 1/(size(data,2)-2)]); set(handles.sld_slice, 'Value', size(data,2)/2); sliderValue = get(handles.sld_slice, 'Value'); set(handles.txt_slice, 'String', num2str(sliderValue)); set(handles.txt_min, 'String', num2str(1)); set(handles.txt_max, 'String', num2str(size(data,2))); else set(handles.sld_slice, 'Min',1); set(handles.sld_slice, 'Max', size(data,3)); set(handles.sld_slice, 'SliderStep', [1/(size(data,3)-2) 1/(size(data,3)-2)]); set(handles.sld_slice, 'Value', size(data,3)/2); sliderValue = get(handles.sld_slice, 'Value'); set(handles.txt_slice, 'String', num2str(sliderValue)); set(handles.txt_min, 'String', num2str(1)); set(handles.txt_max, 'String', num2str(size(data,3))); end showimage(handles);