% Copyright (C) 2016 William Craelius (craelius@rci.rutgers.edu) % This program is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by % the Free Software Foundation, either version 3 of the License, or % any later version. % This program is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. % % You should have received a copy of the GNU General Public License % along with this program. If not, see . function varargout = CHARIS_GUI(varargin) % CHARIS_GUI Version 1.0 % CHARIS_GUI MATLAB code for CHARIS_GUI.fig % CHARIS_GUI, by itself, creates a new CHARIS_GUI or raises the existing % singleton*. % % H = CHARIS_GUI returns the handle to a new CHARIS_GUI or the handle to % the existing singleton*. % % CHARIS_GUI('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in CHARIS_GUI.M with the given input arguments. % % CHARIS_GUI('Property','Value',...) creates a new CHARIS_GUI or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before CHARIS_GUI_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to CHARIS_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 CHARIS_GUI % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @CHARIS_GUI_OpeningFcn, ... 'gui_OutputFcn', @CHARIS_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 CHARIS_GUI is made visible. function CHARIS_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 CHARIS_GUI (see VARARGIN) % Choose default command line output for CHARIS_GUI handles.output = hObject; % Update handles structure guidata(hObject, handles); % --- Outputs from this function are returned to the command line. function varargout = CHARIS_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; % --- 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) global ICP global ABP global ECG global Time global OrigTable global count global PatientData global eventTimes PatientData=[]; count=0; ICP=[]; ABP=[]; ECG=[]; Time=[]; eventTimes=[]; set(handles.text42,'String',' ') % Get PRx Data edit8=str2num(char(get(handles.edit8,'String')));edit9=str2num(char(get(handles.edit9,'String')));edit10=str2num(char(get(handles.edit10,'String'))); dirOriginal=pwd; % Load Source Files set(handles.text42,'String','Data can be loaded from LVMs, source files, or from CHARIS Data.mat'); choice=questdlg('Has data for this patient already been extracted from the LVMs into source files (.mat) or a CHARIS Data.mat?','Find Source Files','Yes','No','Yes'); switch choice case 'Yes' SaveFolder=1; case 'No' SaveFolder=0; case 'Cancel' cd(dirOriginal) end if SaveFolder==1 set(handles.text42,'String','Select folder containing source files (.mat) or the CHARIS Data.mat'); fprintf('Select folder with the desired source files (.mat)\n '); dirRawLocation = uigetdir('Select folder with source files (.mat)\n C:\...\PatientFolder\Source Channels \n'); cd(dirRawLocation) found=0; found2=0; count1=0; count2=0; % Count files for CHARIS Data files = dir('*.mat'); for i=1:length(files) if strncmpi(files(i).name,'CHARIS',5)==1 count1=count1+1; end end % Multiple CHARIS found if count1>1 str=sprintf('CHARIS parts 1-%d detected. Type a number to load desired part.\nCHARIS files are ordered as they are ordered in the folder.',count1); whichPart1=inputdlg(str); partLoad1=str2num(whichPart1{1,1}); for i=1:length(files) if strncmpi(files(i).name,'CHARIS',5)==1 count2=count2+1; if count2==partLoad1 load(files(i).name); cd(dirOriginal) found=1; end end end else %Only 1 CHARIS found for i=1:length(files) if strncmpi(files(i).name,'CHARIS',5)==1 load(files(i).name); cd(dirOriginal) found=1; end end end if found==0 for i=1:length(files) if strncmpi(files(i).name,'Time Part',9)==1 found2=1; count2=count2+1; end end end % No CHARIS Data found. Source Parts found (.mat) if found2==1 str1=sprintf('Source Parts 1-%d detected. Type a number to load desired part.\nSource Parts are ordered as they are ordered in the folder.',count2); whichPart=inputdlg(str1); partLoad=str2num(whichPart{1,1}); for i=1:length(files) strT=sprintf('Time Part %d',partLoad); strA=sprintf('ABP Part %d',partLoad); strI=sprintf('ICP Part %d',partLoad); strE=sprintf('ECG Part %d',partLoad); if strncmpi(files(i).name,strA,10)==1 ABP=importdata(files(i).name); elseif strncmpi(files(i).name,strI,10)==1 ICP=importdata(files(i).name); elseif strncmpi(files(i).name,strE,10)==1 ECG=importdata(files(i).name); elseif strncmpi(files(i).name,strT,11)==1 Time=importdata(files(i).name); end end cd(dirOriginal) end % No CHARIS data found and no source files found if found==0&&found2==0 for i=1:length(files) if strncmpi(files(i).name,'ABP',3)==1 ABP=importdata(files(i).name); elseif strncmpi(files(i).name,'ICP',3)==1 ICP=importdata(files(i).name); elseif strncmpi(files(i).name,'ECG',3)==1 ECG=importdata(files(i).name); elseif strncmpi(files(i).name,'Time',4)==1 Time=importdata(files(i).name); end end end set(handles.text42,'String','Finished Loading Source Files') else set(handles.text42,'String','Select folder containing LVM files.'); dirName = uigetdir('Select folder containing LVM files.'); set(handles.text42,'String','Select or create a folder for the source files.'); dirRawSave = uigetdir('Select or create a folder for the source files.'); set(handles.text42,'String','Compiling Data'); cd(dirName) lvmFiles = dir('*.lvm'); numfiles = length(lvmFiles); roundUp=ceil(numfiles/100); %Make sure that this is the correct column tempMatrix = importLVMfile(lvmFiles(1).name, 25, 180024); SaveABP=0; SaveICP=0; SaveECG=0; while SaveABP==0||SaveICP==0||SaveECG==0 if SaveABP==0 figure plot(tempMatrix(:,edit8)); set(handles.text42,'String','Examine the figure for ABP data and then close figure to continue.'); uiwait(gcf) figure plot(tempMatrix(:,edit8)); choice=questdlg('Is this ABP data?','Find ABP Column','Yes','No','Yes'); switch choice case 'Yes' SaveABP=1; case 'No' SaveABP=0; edit8=inputdlg('Set new ABP Channel (Channels are 2-9)'); edit9=str2num(edit9{1,1}); set(handles.edit8,'String',edit8) case 'Cancel' break end close end if SaveICP==0 figure plot(tempMatrix(:,edit9)); set(handles.text42,'String','Examine figure for ICP data and then close figure to continue.'); uiwait(gcf) figure plot(tempMatrix(:,edit9)); choice=questdlg('Is this ICP data?','Find ICP Column','Yes','No','Yes'); switch choice case 'Yes' SaveICP=1; case 'No' SaveICP=0; edit9=inputdlg('Set new ICP Channel (Channels are 2-9)'); edit9=str2num(edit9{1,1}); set(handles.edit9,'String',edit9) case 'Cancel' break end close end if SaveECG==0 figure plot(tempMatrix(:,edit10)); set(handles.text42,'String','Examine figure for ECG and then close figure to continue.'); uiwait(gcf) figure plot(tempMatrix(:,edit10)); choice=questdlg('Is this ECG data?','Find ECG Column','Yes','No','Yes'); switch choice case 'Yes' SaveECG=1; case 'No' SaveECG=0; edit10=inputdlg('Set new ECG Channel (Channels are 2-9)'); edit10=str2num(edit10{1,1}); set(handles.edit10,'String',edit10) case 'Cancel' break end close end end cd(dirOriginal) if numfiles>=100 set(handles.text42,'String','Over 100 files detected. Source files will be split into 100-file parts to improve performance'); h=waitbar(0,'Please Wait (Files exceed 100)'); for i=1:roundUp if i==roundUp; indTop=numfiles; indBot=roundUp*100-100+1; else indTop=i*100; indBot=indTop-100+1; end [Time1] = CHARISGUIcollectData(indBot,indTop,1,dirName); waitbar(((i-1)*4+1)/(roundUp*4)) [ABP1] = CHARISGUIcollectData(indBot,indTop,edit8,dirName); waitbar(((i-1)*4+2)/(roundUp*4)) [ICP1] = CHARISGUIcollectData(indBot,indTop,edit9,dirName); waitbar(((i-1)*4+3)/(roundUp*4)) [ECG1] = CHARISGUIcollectData(indBot,indTop,edit10,dirName); waitbar(((i-1)*4+4)/(roundUp*4)) cd(dirRawSave) ECG1=cell2mat(ECG1); ICP1=cell2mat(ICP1).*100; ABP1=cell2mat(ABP1); Time1=cell2mat(Time1); str1=sprintf('ECG Part %d.mat',i); str2=sprintf('ICP Part %d.mat',i); str3=sprintf('ABP Part %d.mat',i); str4=sprintf('Time Part %d.mat',i); save(str1,'ECG1'); save(str2,'ICP1'); save(str3,'ABP1'); save(str4,'Time1'); if i==1 Time=Time1; ABP=ABP1; ICP=ICP1; ECG=ECG1; end cd(dirOriginal) end close(h) else h=waitbar(0,'Please wait...'); [Time] = CHARISGUIcollectData(1,numfiles,1,dirName); waitbar(1/4) [ABP] = CHARISGUIcollectData(1,numfiles,edit8,dirName); waitbar(2/4) [ICP] = CHARISGUIcollectData(1,numfiles,edit9,dirName); waitbar(3/4) [ECG] = CHARISGUIcollectData(1,numfiles,edit10,dirName); waitbar(4/4) close(h) cd(dirRawSave) ECG=cell2mat(ECG); ICP=cell2mat(ICP).*100; ABP=cell2mat(ABP); Time=cell2mat(Time); save('ECG.mat','ECG'); save('ICP.mat','ICP'); save('ABP.mat','ABP'); save('Time.mat','Time'); set(handles.text42,'String','Finished Compiling'); end end if isequal(length(Time),length(ABP))==0 if length(Time)>length(ABP) fix=zeros(length(Time)-length(ABP),1); ABP=[ABP;fix]; elseif length(ABP)>length(Time) ABP=ABP(1:length(Time)); end end if isequal(length(Time),length(ICP))==0 if length(Time)>length(ICP) fix=zeros(length(Time)-length(ICP),1); ICP=[ICP;fix]; elseif length(ICP)>length(Time) ICP=ICP(1:length(Time)); end end if isequal(length(Time),length(ECG))==0 if length(Time)>length(ECG) fix=zeros(length(Time)-length(ECG),1); ECG=[ECG;fix]; elseif length(ECG)>length(Time) ECG=ECG(1:length(Time)); end end cd(dirOriginal); cla(handles.axes1) cla(handles.axes2) cla(handles.axes3) cla(handles.axes4) set(handles.axes1, 'Xdir', 'normal') set(handles.axes2, 'Xdir', 'normal') set(handles.axes3, 'Xdir', 'normal') set(handles.axes4, 'Xdir', 'normal') if length(Time)==length(ICP) plot(handles.axes1,Time,ICP); end set(handles.text1, 'String', 'Raw ICP'); set(handles.text2, 'String', 'Time in seconds'); set(handles.text3, 'String', 'mmHg'); if length(Time)==length(ABP) plot(handles.axes2,Time,ABP); end set(handles.text4, 'String', 'Raw ABP'); set(handles.text10, 'String', 'Time in seconds'); set(handles.text11, 'String', 'mmHg'); if length(Time)==length(ECG) plot(handles.axes3,Time,ECG); end set(handles.text12, 'String', 'Raw ECG'); set(handles.text13, 'String', 'Time in seconds'); set(handles.text14, 'String', 'mV'); set(handles.uitable1,'Data',[Time,ABP,ICP,ECG]) OrigTable=[Time,ABP,ICP,ECG]; % --- 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) global PatientData global PRx global PacketAvg_Time global ICP global ABP global ECG global Time global eventTimes global critStr global ICPevent_index ICPevent_index=[]; tableData=get(handles.uitable1,'Data'); edit1 = get(handles.edit1,'String'); edit2=str2num(char(get(handles.edit2,'String'))); edit3=str2num(char(get(handles.edit3,'String'))); edit4=str2num(char(get(handles.edit4,'String'))); edit5=str2num(char(get(handles.edit5,'String'))); set(handles.edit17,'String',edit1); critStr1=get(handles.edit2,'String'); critStr2=get(handles.edit3,'String'); critStr3=get(handles.edit4,'String'); critStr4=get(handles.edit5,'String'); edit6=edit5*12; set(handles.text42,'String','Finding Events') critStr=sprintf('Patient ID: %s \n ICP Threshold: %s mmHg \n Event Length: %s minutes \n Pre-Event: %s minutes \n Examined: %s minutes', edit1,critStr1,critStr2,critStr3,critStr4); [PatientData,PRxEventTimes,PTM]=CHARISGUIReportPRxEvents(edit1,edit2,edit3,edit4,edit6,tableData(:,3), tableData(:,1),PRx,PacketAvg_Time); eventTimes=PatientData.eventTimes; [row,col]=size(eventTimes); if row==0 str=sprintf('Events: %d',row); set(handles.text42, 'String', str); else cla(handles.axes1) cla(handles.axes2) cla(handles.axes3) cla(handles.axes4) set(handles.axes1, 'Xdir', 'normal') set(handles.axes2, 'Xdir', 'normal') set(handles.axes3, 'Xdir', 'normal') set(handles.axes4, 'Xdir', 'normal') str=sprintf('Events: %d',row); set(handles.text42, 'String', str); cla(handles.axes1) plot(handles.axes1,Time,ICP); set(handles.text1, 'String', 'ICP'); set(handles.text2, 'String', 'Time in seconds'); set(handles.text3, 'String', 'mmHg'); for i=1:length(eventTimes) if isempty(find(Time==eventTimes(i)))==0 TimeIndex(i,1)=find(Time==eventTimes(i)); else Time=round(Time(:,1)*(10^2))/(10^2); TimeIndex(i,1)=find(Time==eventTimes(i)); end ICPevent_index(:,i)=ICP(TimeIndex(i,1)-edit5*60/0.02:TimeIndex(i,1)); end ICPindex=ICP(TimeIndex); hold(handles.axes1,'on') h=scatter(handles.axes1,eventTimes,ICPindex,'ro'); set(h,'MarkerEdgeColor','r','MarkerFaceColor','r') end cla(handles.axes2) plot(handles.axes2,Time,ABP); set(handles.text4, 'String', 'ABP'); set(handles.text10, 'String', 'Time in seconds'); set(handles.text11, 'String', 'mmHg'); if exist('eventTimes')==1 for i=1:length(eventTimes) TimeIndex(i,1)=find(Time==eventTimes(i)); end ABPindex=ABP(TimeIndex); hold(handles.axes2,'on') h=scatter(handles.axes2,eventTimes,ABPindex,'ro'); set(h,'MarkerEdgeColor','r','MarkerFaceColor','r') hold(handles.axes2,'off') end cla(handles.axes3) plot(handles.axes3,Time,ECG); set(handles.text12, 'String', 'ECG'); set(handles.text13, 'String', 'Time in seconds'); set(handles.text14, 'String', 'mV'); if exist('eventTimes')==1 for i=1:length(eventTimes) TimeIndex(i,1)=find(Time==eventTimes(i)); end ECGindex=ECG(TimeIndex); hold(handles.axes3,'on') h=scatter(handles.axes3,eventTimes,ECGindex,'ro'); set(h,'MarkerEdgeColor','r','MarkerFaceColor','r') hold(handles.axes3,'off') end set(handles.text42,'String','Finished Finding Events') cla(handles.axes4) function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) handles.edit1 = get(hObject,'String'); % --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (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 function edit2_Callback(hObject, eventdata, handles) % hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) input = str2double(get(hObject,'string')); if isnan(input) errordlg('You must enter a numeric value','Invalid Input','modal') uicontrol(hObject) return else display(input); end % --- Executes during object creation, after setting all properties. function edit2_CreateFcn(hObject, eventdata, handles) % hObject handle to edit2 (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 function edit3_Callback(hObject, eventdata, handles) % hObject handle to edit3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) str2double(get(hObject,'String')); % --- Executes during object creation, after setting all properties. function edit3_CreateFcn(hObject, eventdata, handles) % hObject handle to edit3 (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 function edit4_Callback(hObject, eventdata, handles) % hObject handle to edit4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) str2double(get(hObject,'String')) % --- Executes during object creation, after setting all properties. function edit4_CreateFcn(hObject, eventdata, handles) % hObject handle to edit4 (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 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) global ICP global ABP global ECG global Time global PacketAvg_ICP global PacketAvg_ABP global PRx global count global eventTimes global PacketAvg_Time count=count+1; tableData=get(handles.uitable1,'Data'); listed=get(handles.listbox2,'String'); selected=get(handles.listbox2,'Value'); graphed=get(handles.listbox3,'Value'); if graphed==1 graph=handles.axes1; elseif graphed==2 graph=handles.axes2; elseif graphed==3 graph=handles.axes3; elseif graphed==4 graph=handles.axes4; end if strcmp(listed(selected),'Raw ICP')==1 cla(graph) set(graph, 'Xdir', 'normal') plot(graph,Time,ICP) if graphed==1 %Title set(handles.text1, 'String', 'Raw ICP'); %X values set(handles.text2, 'String', 'Time in seconds'); %Y values set(handles.text3, 'String', 'mmHg'); elseif graphed==2 set(handles.text4, 'String', 'Raw ICP'); set(handles.text10, 'String', 'Time in seconds'); set(handles.text11, 'String', 'mmHg'); elseif graphed==3 set(handles.text12, 'String', 'Raw ICP'); set(handles.text13, 'String', 'Time in seconds'); set(handles.text14, 'String', 'mmHg'); elseif graphed==4 set(handles.text15, 'String', 'Raw ICP'); set(handles.text16, 'String', 'Time in seconds'); set(handles.text17, 'String', 'mmHg'); end if exist('eventTimes')==1 for i=1:length(eventTimes) TimeIndex(i,1)=find(Time==eventTimes(i)); end ICPindex=ICP(TimeIndex); hold(graph,'on') h=scatter(graph,eventTimes,ICPindex,'ro'); set(h,'MarkerEdgeColor','r','MarkerFaceColor','r') end elseif strcmp(listed(selected),'Raw ABP')==1 cla(graph) set(graph, 'Xdir', 'normal') plot(graph,Time,ABP) if graphed==1 %Title set(handles.text1, 'String', 'Raw ABP'); %X values set(handles.text2, 'String', 'Time in seconds'); %Y values set(handles.text3, 'String', 'mmHg'); elseif graphed==2 set(handles.text4, 'String', 'Raw ABP'); set(handles.text10, 'String', 'Time in seconds'); set(handles.text11, 'String', 'mmHg'); elseif graphed==3 set(handles.text12, 'String', 'Raw ABP'); set(handles.text13, 'String', 'Time in seconds'); set(handles.text14, 'String', 'mmHg'); elseif graphed==4 set(handles.text15, 'String', 'Raw ABP'); set(handles.text16, 'String', 'Time in seconds'); set(handles.text17, 'String', 'mmHg'); end if exist('eventTimes')==1 for i=1:length(eventTimes) TimeIndex(i,1)=find(Time==eventTimes(i)); end ABPindex=ABP(TimeIndex); hold(graph,'on') h=scatter(graph,eventTimes,ABPindex,'ro'); set(h,'MarkerEdgeColor','r','MarkerFaceColor','r') end elseif strcmp(listed(selected),'Raw ECG')==1 cla(graph) set(graph, 'Xdir', 'normal') plot(graph,Time,ECG) if graphed==1 %Title set(handles.text1, 'String', 'Raw ECG'); %X values set(handles.text2, 'String', 'Time in seconds'); %Y values set(handles.text3, 'String', 'mV'); elseif graphed==2 set(handles.text4, 'String', 'Raw ECG'); set(handles.text10, 'String', 'Time in seconds'); set(handles.text11, 'String', 'mV'); elseif graphed==3 set(handles.text12, 'String', 'Raw ECG'); set(handles.text13, 'String', 'Time in seconds'); set(handles.text14, 'String', 'mV'); elseif graphed==4 set(handles.text15, 'String', 'Raw ECG'); set(handles.text16, 'String', 'Time in seconds'); set(handles.text17, 'String', 'mV'); end for i=1:length(eventTimes) TimeIndex(i,1)=find(Time==eventTimes(i)); end if exist('eventTimes')==1 ECGindex=ECG(TimeIndex); hold(graph,'on') h=scatter(graph,eventTimes,ECGindex,'ro'); set(h,'MarkerEdgeColor','r','MarkerFaceColor','r') end elseif strcmp(listed(selected),'Packeted ABP')==1 cla(graph) set(graph, 'Xdir', 'normal') % ABP packeted data plot. plot(graph, PacketAvg_ABP.*100,'r.-'); if graphed==1 %Title set(handles.text1, 'String', 'Packeted ABP'); %X values set(handles.text2, 'String', 'Seconds'); %Y values set(handles.text3, 'String', ''); elseif graphed==2 set(handles.text4, 'String', 'Packeted ABP'); set(handles.text10, 'String', 'Seconds'); set(handles.text11, 'String', ''); elseif graphed==3 set(handles.text12, 'String', 'Packeted ABP'); set(handles.text13, 'String', 'Seconds'); set(handles.text14, 'String', ''); elseif graphed==4 set(handles.text15, 'String', 'Packeted ABP'); set(handles.text16, 'String', 'Seconds'); set(handles.text17, 'String', ''); end elseif strcmp(listed(selected),'Packeted ICP')==1 cla(graph) set(graph, 'Xdir', 'normal') % ICP packeted data plot. plot(graph,PacketAvg_ICP.*100,'k.-'); if graphed==1 %Title set(handles.text1, 'String', 'Packeted ICP'); %X values set(handles.text2, 'String', 'Seconds'); %Y values set(handles.text3, 'String', 'mmHg'); elseif graphed==2 set(handles.text4, 'String', 'Packeted ICP'); set(handles.text10, 'String', 'Seconds'); set(handles.text11, 'String', 'mmHg'); elseif graphed==3 set(handles.text12, 'String', 'Packeted ICP'); set(handles.text13, 'String', 'Seconds'); set(handles.text14, 'String', 'mmHg'); elseif graphed==4 set(handles.text15, 'String', 'Packeted ICP'); set(handles.text16, 'String', 'Seconds'); set(handles.text17, 'String', 'mmHg'); end elseif strcmp(listed(selected),'PRx 5 Minute Packet')==1 cla(graph) set(graph, 'Xdir', 'normal') plot(graph,PacketAvg_Time,PRx(:,1), 'b.-'); hold on; hold off; if graphed==1 %Title set(handles.text1, 'String', 'PRx 5 Minute Packet'); %X values set(handles.text2, 'String', ''); %Y values set(handles.text3, 'String', ''); elseif graphed==2 set(handles.text4, 'String', 'PRx 5 Minute Packet'); set(handles.text10, 'String', ''); set(handles.text11, 'String', ''); elseif graphed==3 set(handles.text12, 'String', 'PRx 5 Minute Packet'); set(handles.text13, 'String', ''); set(handles.text14, 'String', ''); elseif graphed==4 set(handles.text15, 'String', 'PRx 5 Minute Packet'); set(handles.text16, 'String', ''); set(handles.text17, 'String', ''); end elseif strcmp(listed(selected),'PRx 10 Minute Packet')==1 cla(graph) set(graph, 'Xdir', 'normal') plot(graph,PacketAvg_Time,PRx(:,2), 'b.-'); hold on; hold off; if graphed==1 %Title set(handles.text1, 'String', 'PRx 10 Minute Packet'); %X values set(handles.text2, 'String', ''); %Y values set(handles.text3, 'String', ''); elseif graphed==2 set(handles.text4, 'String', 'PRx 10 Minute Packet'); set(handles.text10, 'String', ''); set(handles.text11, 'String', ''); elseif graphed==3 set(handles.text12, 'String', 'PRx 10 Minute Packet'); set(handles.text13, 'String', ''); set(handles.text14, 'String', ''); elseif graphed==4 set(handles.text15, 'String', 'PRx 10 Minute Packet'); set(handles.text16, 'String', ''); set(handles.text17, 'String', ''); end elseif strcmp(listed(selected),'PRx 20 Minute Packet')==1 cla(graph) set(graph, 'Xdir', 'normal') plot(graph,PRx(:,3), 'b.-'); hold on; hold off; if graphed==1 %Title set(handles.text1, 'String', 'PRx 20 Minute Packet'); %X values set(handles.text2, 'String', ''); %Y values set(handles.text3, 'String', ''); elseif graphed==2 set(handles.text4, 'String', 'PRx 20 Minute Packet'); set(handles.text10, 'String', ''); set(handles.text11, 'String', ''); elseif graphed==3 set(handles.text12, 'String', 'PRx 20 Minute Packet'); set(handles.text13, 'String', ''); set(handles.text14, 'String', ''); elseif graphed==4 set(handles.text15, 'String', 'PRx 20 Minute Packet'); set(handles.text16, 'String', ''); set(handles.text17, 'String', ''); end elseif strcmp(listed(selected),'Event Finder')==1 cla(graph) set(graph, 'Xdir', 'normal') plot(graph,PRx(:,3), 'b.-'); hold on; hold off; if graphed==1 %Title set(handles.text1, 'String', 'PRx 20 Minute Packet'); %X values set(handles.text2, 'String', ''); %Y values set(handles.text3, 'String', ''); elseif graphed==2 set(handles.text4, 'String', 'PRx 20 Minute Packet'); set(handles.text10, 'String', ''); set(handles.text11, 'String', ''); elseif graphed==3 set(handles.text12, 'String', 'PRx 20 Minute Packet'); set(handles.text13, 'String', ''); set(handles.text14, 'String', ''); elseif graphed==4 set(handles.text15, 'String', 'PRx 20 Minute Packet'); set(handles.text16, 'String', ''); set(handles.text17, 'String', ''); end end function edit5_Callback(hObject, eventdata, handles) % hObject handle to edit5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes during object creation, after setting all properties. function edit5_CreateFcn(hObject, eventdata, handles) % hObject handle to edit5 (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 selection change in listbox2. function listbox2_Callback(hObject, eventdata, handles) % hObject handle to listbox2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes during object creation, after setting all properties. function listbox2_CreateFcn(hObject, eventdata, handles) % hObject handle to listbox2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: listbox 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 selection change in listbox3. function listbox3_Callback(hObject, eventdata, handles) % hObject handle to listbox3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes during object creation, after setting all properties. function listbox3_CreateFcn(hObject, eventdata, handles) % hObject handle to listbox3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: listbox 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 pushbutton6. function pushbutton6_Callback(hObject, eventdata, handles) % hObject handle to pushbutton6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) cla(handles.axes1) cla(handles.axes2) cla(handles.axes3) cla(handles.axes4) set(handles.text1, 'String', ''); set(handles.text2, 'String', ''); set(handles.text3, 'String', ' '); set(handles.text4, 'String', ''); set(handles.text10, 'String', ''); set(handles.text11, 'String', ' '); set(handles.text12, 'String', ''); set(handles.text13, 'String', ''); set(handles.text14, 'String', ' '); set(handles.text15, 'String', ''); set(handles.text16, 'String', ''); set(handles.text17, 'String', ' '); function edit8_Callback(hObject, eventdata, handles) % hObject handle to edit8 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes during object creation, after setting all properties. function edit8_CreateFcn(hObject, eventdata, handles) % hObject handle to edit8 (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 function edit9_Callback(hObject, eventdata, handles) % hObject handle to edit9 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes during object creation, after setting all properties. function edit9_CreateFcn(hObject, eventdata, handles) % hObject handle to edit9 (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 function edit10_Callback(hObject, eventdata, handles) % hObject handle to edit10 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes during object creation, after setting all properties. function edit10_CreateFcn(hObject, eventdata, handles) % hObject handle to edit10 (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 pushbutton8. function pushbutton8_Callback(hObject, eventdata, handles) % hObject handle to pushbutton8 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global PRx global PacketAvg_Time global PacketAvg_ABP global PacketAvg_ICP global ICP global ABP global Time h=waitbar(0,'Please Wait...'); edit8=str2num(char(get(handles.edit8,'String')));edit9=str2num(char(get(handles.edit9,'String'))); SelectedHours=100000000000000000; set(handles.text42,'String','Please select LVM folder') [PRx,PacketAvg_Time,PacketAvg_ABP,PacketAvg_ICP]=CHARISGUIpacketAve2(1,SelectedHours,ABP,ICP,Time,1); waitbar(1/2) cla(handles.axes1); cla(handles.axes2); cla(handles.axes3); cla(handles.axes4); % ABP packeted data plot. plot(handles.axes1,PacketAvg_Time, PacketAvg_ABP.*100,'r.-'); set(handles.text3,'String','Seconds') set(handles.text1,'String','Packeted ABP') % ICP packeted data plot. plot(handles.axes2,PacketAvg_Time,PacketAvg_ICP.*100,'k.-'); set(handles.text4,'String','Packeted ICP') set(handles.text11,'String','Seconds') % 5 minutes plot(handles.axes3,PacketAvg_Time,PRx(:,1), 'b.-'); hold on; hold off set(handles.text12,'String','PRx 5 Minute Packet') set(handles.text13,'String','') % 10 minutes plot(handles.axes4,PacketAvg_Time,PRx(:,2), 'b.-'); hold on; hold off set(handles.text15,'String','PRx 10 Minute Packet'); set(handles.text16,'String','') set(handles.text42,'String','Finished Packet Averaging All') waitbar(1) close(h) % --- Executes on button press in pushbutton12. function pushbutton12_Callback(hObject, eventdata, handles) % hObject handle to pushbutton12 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global PRx global PacketAvg_Time global PacketAvg_ABP global PacketAvg_ICP global ICP global ABP global ECG global Time global PatientData global eventTimes global critStr global ICPevent_index set(handles.text42, 'String', 'Please select a folder to save CHARIS Data.mat'); edit17=get(handles.edit17,'String'); dirNewSave = uigetdir('Select a folder to save CHARIS Data.mat'); olddir=pwd; cd(dirNewSave) str1=sprintf('CHARIS Data %s (All Data).mat',edit17); save(str1,'PRx','PacketAvg_Time','PacketAvg_ABP','PacketAvg_ICP','ICP','ABP','ECG','Time','ICPevent_index','eventTimes'); str3=sprintf('Patient Object %s.mat',edit17); save(str3,'PatientData'); fileStr=sprintf('Patient %s Criteria.txt',edit17); fid=fopen(fileStr,'wt'); fprintf(fid,critStr); fclose(fid); cd(olddir) set(handles.text42,'String', 'Finished Saving Data') function SICUNI62101405051824 = importLVMfile(filename, startRow, endRow) %% Initialize variables. delimiter = '\t'; if nargin<=2 startRow = 25; endRow = inf; end %% Format string for each line of text: % column1: double (%f) % column2: double (%f) % column3: double (%f) % column4: double (%f) % column5: double (%f) % column6: double (%f) % column7: double (%f) % column8: double (%f) % column9: double (%f) % For more information, see the TEXTSCAN documentation. formatSpec = '%f%f%f%f%f%f%f%f%f%*s%*s%*s%*s%[^\n\r]'; %% Open the text file. fileID = fopen(filename,'r'); %% Read columns of data according to format string. % This call is based on the structure of the file used to generate this % code. If an error occurs for a different file, try regenerating the code % from the Import Tool. dataArray = textscan(fileID, formatSpec, endRow(1)-startRow(1)+1, 'Delimiter', delimiter, 'EmptyValue' ,NaN,'HeaderLines', startRow(1)-1, 'ReturnOnError', false); for block=2:length(startRow) frewind(fileID); dataArrayBlock = textscan(fileID, formatSpec, endRow(block)-startRow(block)+1, 'Delimiter', delimiter, 'EmptyValue' ,NaN,'HeaderLines', startRow(block)-1, 'ReturnOnError', false); for col=1:length(dataArray) dataArray{col} = [dataArray{col};dataArrayBlock{col}]; end end %% Close the text file. fclose(fileID); %% Create output variable SICUNI62101405051824 = [dataArray{1:end-1}];