MATLAB: Can u help me to solve this code error

guiMATLAB

function varargout = untitled(varargin)
% UNTITLED M-file for untitled.fig
% UNTITLED, by itself, creates a new UNTITLED or raises the existing
% singleton*.
%




% H = UNTITLED returns the handle to a new UNTITLED or the handle to
% the existing singleton*.
%
% UNTITLED('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in UNTITLED.M with the given input arguments.
%
% UNTITLED('Property','Value',...) creates a new UNTITLED or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before untitled_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to untitled_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 untitled
% Last Modified by GUIDE v2.5 08-May-2016 00:27:00
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @untitled_OpeningFcn, ...
'gui_OutputFcn', @untitled_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 untitled is made visible.
function untitled_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 untitled (see VARARGIN)
% Choose default command line output for untitled
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes untitled wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = untitled_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;
% --- Executes on button press in radiobutton1.
function radiobutton1_Callback(hObject, eventdata, handles)
% hObject handle to radiobutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of radiobutton1
[Score, Alignment] = nwalign(humanProteinORF,...
mouseProteinORF);
showalignment(Alignment)
% --- Executes on button press in radiobutton2.
function radiobutton2_Callback(hObject, eventdata, handles)
% hObject handle to radiobutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of radiobutton2
[GlobalScore, GlobalAlignment] = nwalign(humanProtein,...
mouseProtein)
showalignment(GlobalAlignment);
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
humanHEXA = getgenbank('NM_000520')
humanProtein = nt2aa(humanHEXA.Sequence,'frame',3)
% --- 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)
mouseHEXA = getgenbank('AK080777')
mouseProtein = nt2aa(mouseHEXA.Sequence)
% --- Executes on button press in checkbox2.
function checkbox2_Callback(hObject, eventdata, handles)
% hObject handle to checkbox2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
seqdotplot(mouseProtein,humanProtein,4,3)
ylabel('Mouse hexosaminidase A (alpha subunit)')
xlabel('Human hexosaminidase A (alpha subunit)')
% Hint: get(hObject,'Value') returns toggle state of checkbox2

Best Answer

Mohmd - you have two push button callbacks as follows
function pushbutton1_Callback(hObject, eventdata, handles)
humanHEXA = getgenbank('NM_000520')
humanProtein = nt2aa(humanHEXA.Sequence,'frame',3)
function pushbutton2_Callback(hObject, eventdata, handles)
mouseHEXA = getgenbank('AK080777')
mouseProtein = nt2aa(mouseHEXA.Sequence)
where each defines local variables humanProtein and mouseProtein respectively. Your checkbox callbox is defined as
function checkbox2_Callback(hObject, eventdata, handles)
seqdotplot(mouseProtein,humanProtein,4,3)
ylabel('Mouse hexosaminidase A (alpha subunit)')
xlabel('Human hexosaminidase A (alpha subunit)')
The first line of code (after the signature) references two undefined variables, the mouseProtein and humnaProtein. This is probably the source of your error: your code is referencing variables that have been defined locally in other callbacks. When using GUIDE to design your GUI, if you create a local variable in one callback function that you want to reference in another callback function, you need to save this variables as user-defined data within the handles structure. To do this, change your pushbutton callbacks as follows
function pushbutton1_Callback(hObject, eventdata, handles)
humanHEXA = getgenbank('NM_000520');
handles.humanProtein = nt2aa(humanHEXA.Sequence,'frame',3);
guidata(hObject,handles);
function pushbutton2_Callback(hObject, eventdata, handles)
mouseHEXA = getgenbank('AK080777');
handles.mouseProtein = nt2aa(mouseHEXA.Sequence);
guidata(hObject,handles);
In the above, we save each local variables as a field within handles and then save the updated structure using guidata. Now, in your checkbox callback, you would do
function checkbox2_Callback(hObject, eventdata, handles)
if isfield(handles,'mouseProtein') && isfield(handles,'humanProtein')
seqdotplot(handles.mouseProtein,handles.humanProtein,4,3);
ylabel('Mouse hexosaminidase A (alpha subunit)');
xlabel('Human hexosaminidase A (alpha subunit)');
end
In the above, we check to see if the handles structure has the two fields that we are interested in using isfield. If both exist, then we get each variable by accessing the desired field within that structure.
Try the above and see what happens!