diff --git a/controls/DataAnalysisTool/Tool/GUI.asv b/controls/DataAnalysisTool/Tool/GUI.asv
new file mode 100644
index 0000000000000000000000000000000000000000..831028acb356e56ec500e969d0c4dc1a83f8b775
--- /dev/null
+++ b/controls/DataAnalysisTool/Tool/GUI.asv
@@ -0,0 +1,784 @@
+function varargout = GUI(varargin)
+% GUI MATLAB code for GUI.fig
+%      GUI, by itself, creates a new GUI or raises the existing
+%      singleton*.
+%
+%      H = GUI returns the handle to a new GUI or the handle to
+%      the existing singleton*.
+%
+%      GUI('CALLBACK',hObject,eventData,handles,...) calls the local
+%      function named CALLBACK in GUI.M with the given input arguments.
+%
+%      GUI('Property','Value',...) creates a new GUI or raises the
+%      existing singleton*.  Starting from the left, property value pairs are
+%      applied to the GUI before GUI_OpeningFcn gets called.  An
+%      unrecognized property name or invalid value makes property application
+%      stop.  All inputs are passed to 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 GUI
+
+% Last Modified by GUIDE v2.5 24-Mar-2015 21:23:27
+
+% Begin initialization code - DO NOT EDIT
+gui_Singleton = 1;
+gui_State = struct('gui_Name',       mfilename, ...
+                   'gui_Singleton',  gui_Singleton, ...
+                   'gui_OpeningFcn', @GUI_OpeningFcn, ...
+                   'gui_OutputFcn',  @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 GUI is made visible.
+function 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 GUI (see VARARGIN)
+
+% Choose default command line output for GUI
+handles.output = hObject;
+
+handles.filepath = hObject;
+handles.filepath = mfilename('fullpath');
+handles.filepath = strrep(handles.filepath, 'GUI', '');
+addpath(handles.filepath);
+cd(handles.filepath);
+if (~exist(handles.filepath,'file'))
+     error(strcat(handles.filepath, ' does not exist'))
+end
+
+if(~isfield(handles, 'axes'))
+    for i = 1:12
+        eval(['handles.axes{' num2str(i) '} = handles.axes' num2str(i) ';']);
+        eval(['handles = rmfield(handles,''axes' num2str(i) ''');']);
+        eval(['handles.togglebuttons{' num2str(i) '} = handles.togglebutton' num2str(i) ';']);
+        eval(['handles = rmfield(handles,''togglebutton' num2str(i) ''');']);
+        eval(['handles.radiobutton{' num2str(i) '} = handles.radiobutton' num2str(i) ';']);
+        eval(['handles = rmfield(handles,''radiobutton' num2str(i) ''');']);
+    end
+    for i = 13:16
+        eval(['handles.radiobutton{' num2str(i) '} = handles.radiobutton' num2str(i) ';']);
+        eval(['handles = rmfield(handles,''radiobutton' num2str(i) ''');']);
+    end
+end
+handles.main = hObject;
+handles.main = struct();
+
+if(evalin('base','exist(''main'')'))
+    handles.main = importData(hObject, eventdata, handles);
+    handles = loadOptions(hObject, eventdata, handles);
+    previewPlot(hObject, eventdata, handles);
+    if(~isfield(handles.main.params.file,'pathName'))
+        handles.main.params.file.name = '';
+        handles.main.params.file.path = handles.filepath;
+        handles.main.params.file.pathName = handles.filepath;
+    end
+else
+    handles.main.params.file.name = '';
+    handles.main.params.file.path = handles.filepath;
+    handles.main.params.file.pathName = handles.filepath;
+end
+
+handles.pause_play_timer = timer('BusyMode', 'queue', 'ExecutionMode',...
+    'fixedRate', 'Period', 5.0);
+set(handles.pause_play_timer, 'TimerFcn', @(hObject, event) pushbutton2_Callback(hObject, eventdata, guidata(hObject)));
+cd(handles.main.params.file.path);
+load_listbox(hObject, eventdata, handles)
+guidata(hObject, handles);
+% Update handles structure
+%findobj('tag', 'figure\*');
+
+
+% UIWAIT makes GUI wait for user response (see UIRESUME)
+% uiwait(handles.figure1);
+
+
+% --- Outputs from this function are returned to the command line.
+function varargout = 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 when user attempts to close figure1.
+function figure1_CloseRequestFcn(hObject, eventdata, handles)
+% hObject    handle to figure1 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+
+cd(handles.filepath);
+% Hint: delete(hObject) closes the figure
+delete(hObject);
+
+
+function uipanel1_SelectionChangeFcn(hObject, eventdata, handles)
+if(isfield(handles.main,'expData'))
+previewPlot(hObject, eventdata, handles)
+end
+
+
+% --- Executes when selected object is changed in uipanel3.
+function uipanel3_SelectionChangeFcn(hObject, eventdata, handles)
+% hObject    handle to the selected object in uipanel3 
+% 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)
+handles = guidata(hObject);
+
+handles.main.params.plotting.separatePlot = 0;           % to generate separate plots
+handles.main.params.plotting.multiPlot = 0;              % to super impose multiple quantities on the same plot
+handles.main.params.plotting.subPlot = 0; 
+
+switch get(get(handles.uipanel3,'SelectedObject'),'Tag')
+case 'radiobutton14',  handles.main.params.plotting.separatePlot = 1;
+case 'radiobutton15',  handles.main.params.plotting.subPlot = 1; 
+case 'radiobutton16',  handles.main.params.plotting.multiPlot = 1;
+    otherwise
+        error('You must select a radio button to indicate what field''s options you are changing.')
+end
+exportData(hObject, eventdata, handles);
+previewPlot(hObject, eventdata, handles);
+guidata(hObject,handles);
+
+function pause_play_Timer(hObject, eventdata, handles)
+% hObject handle to pushbutton_pause
+% eventdata reserved - to be defeined in a future version of MATLAB
+% handles structure with handles and user data (see GUIDATA)
+handles = guidata(hObject);
+handles = updateOptions(hObject, eventdata, handles);;
+
+if (handles.pause
+
+
+% --- 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)
+handles = guidata(hObject);
+
+handles = updateOptions(hObject, eventdata, handles);;
+
+if(handles.main.params.plotting.clearFigs)
+    set(handles.figure1, 'HandleVisibility', 'off');
+    close all;
+    set(handles.figure1, 'HandleVisibility', 'on');
+end
+handles.main.params.plotting.toPlot = handles.main.params.plotting.toPlot(~cellfun('isempty',handles.main.params.plotting.toPlot));
+if(~isempty(handles.main.params.plotting.toPlot))
+    if(handles.main.params.plotting.subPlot)  %% plot on one figure using multiple subplots
+        counter = 1;
+        x = ceil(sqrt(length(handles.main.params.plotting.toPlot)));
+        y = x - floor((x ^ 2 - length(handles.main.params.plotting.toPlot))/x);
+        figure_handle = figure;
+    else if(handles.main.params.plotting.multiPlot)
+            figure_handle = figure;
+        end
+    end
+
+    tempData{1} = handles.main.expData.data{1};
+    tempParams{1} = handles.main.expData.params{1};
+    tempUnit{1} = handles.main.expData.unit{1};
+    tempName{1} = handles.main.expData.datafields{1};
+    if(isfield(handles.main.params.plotting,'toPlot'))
+        for m = 1:length(handles.main.params.plotting.toPlot)
+            for n = 1:length(handles.main.expData.datafields)
+                if(strcmp(handles.main.expData.datafields{n},handles.main.params.plotting.toPlot{m}))
+                    tempData{m+1} = handles.main.expData.data{n};
+                    tempParams{m+1} = handles.main.expData.params{n};
+                    tempUnit{m+1} = handles.main.expData.unit{n};
+                    tempName{m+1} =  handles.main.expData.datafields{n};
+                end
+            end
+        end
+    end
+
+
+    for i=1:length(handles.main.params.plotting.toPlot)
+        if(strcmp(tempName{i},'Marker'))
+            
+        else
+            if(handles.main.params.plotting.subPlot)
+                subplot(x,y,counter);
+                counter = counter + 1;
+
+            else if(handles.main.params.plotting.separatePlot)
+                figure_handle = figure;
+                whitebg(tempParams{1}.backgnd);
+                else
+                    hold on;
+                end
+                whitebg('white');
+            end
+
+
+            if(strcmp(get(get(handles.uipanel1,'SelectedObject'),'Tag'), 'radiobutton13'))
+                whitebg(tempParams{1}.backgnd);
+                plot(tempData{1},tempData{i+1},'LineStyle',tempParams{1}.style,'Marker',tempParams{1}.marker,'Color',tempParams{1}.color);
+                set(gca,'Color',tempParams{1}.backgnd);
+                set(gcf,'Color',tempParams{1}.backgnd);
+                grid ON;
+                title(tempName{i+1})
+                xlabel(strcat(tempName{1},'(', tempUnit{1},')'));
+                ylabel(tempUnit{i+1});
+            else
+                plot(tempData{1},tempData{i+1},'LineStyle',tempParams{i+1}.style,'Marker',tempParams{i+1}.marker,'Color',tempParams{i+1}.color);
+                if(handles.main.params.plotting.subPlot||handles.main.params.plotting.separatePlot)
+                    set(gca,'Color',tempParams{i+1}.backgnd);
+                end
+                grid ON;
+                xlabel(strcat(tempName{1},'(', tempUnit{1},')'));
+                if(~handles.main.params.plotting.multiPlot)
+                    ylabel(tempUnit{i+1});
+                    title(tempName{i+1})
+                else
+                    hold off;
+                end
+
+            end
+            
+            if(isfield(handles.main.expData,'Marker'))
+                marks = find(handles.main.expData.Marker.data);
+                l = length(marks);
+                for n = 1:l
+                    x = handles.main.expData.data{1}(marks(n));
+                    line([x x], get(gca,'YLim'),'Color',[rand(1) rand(1) rand(1)]);
+                    y = get(gca,'YLim');
+                    y = y(1)+(1/l)*n*(y(2)-y(1));
+                    text('String',strcat('M',num2str(n),'>'),'Position',[x,y],'HorizontalAlignment','right')
+                end
+            end
+        end
+    end
+    all_ha = findobj( figure_handle, 'type', 'axes', 'tag', '' );
+    linkaxes( all_ha, 'x' );
+else
+    error('You must select fields to plot first.')
+end
+guidata(hObject,handles);
+
+% --- Executes on button press in checkbox1.
+function checkbox1_Callback(hObject, eventdata, handles)
+% hObject    handle to checkbox1 (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 checkbox1
+handles = guidata(hObject);
+
+button_state = get(hObject,'Value');
+if button_state == get(hObject,'Max')
+	handles.main.params.plotting.clearFigs = 1;
+elseif button_state == get(hObject,'Min')
+	handles.main.params.plotting.clearFigs = 0;
+end
+handles = updateOptions(hObject, eventdata, handles);
+guidata(hObject,handles);
+
+
+
+% --- 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)
+handles = guidata(hObject);
+switch get(get(handles.uipanel1,'SelectedObject'),'Tag')
+case 'radiobutton1',  i = 2;
+case 'radiobutton2',  i = 3;
+case 'radiobutton3',  i = 4;
+case 'radiobutton4',  i = 5;
+case 'radiobutton5',  i = 6;
+case 'radiobutton6',  i = 7;
+case 'radiobutton7',  i = 8;
+case 'radiobutton8',  i = 9;
+case 'radiobutton9',  i = 10;
+case 'radiobutton10',  i = 11;
+case 'radiobutton11',  i = 12;
+case 'radiobutton12',  i = 13;
+case 'radiobutton13',  i = 1;
+    otherwise
+        error('You must select a radio button to indicate what field''s options you are changing before pressing this button.')
+end
+
+color = get(handles.listbox1,'String');
+color = color{get(handles.listbox1,'Value')};
+style = get(handles.listbox2,'String');
+style = style{get(handles.listbox2,'Value')};
+marker = get(handles.listbox3,'String');
+marker = marker{get(handles.listbox3,'Value')};
+bg = get(handles.listbox4,'String');
+bg = bg{get(handles.listbox4,'Value')};
+handles.main.expData.params{i}.color = color;
+handles.main.expData.params{i}.style = style;
+handles.main.expData.params{i}.marker = marker;
+handles.main.expData.params{i}.backgnd = bg;
+exportData(hObject, eventdata, handles);
+previewPlot(hObject, eventdata, handles);
+handles = updateOptions(hObject, eventdata, handles);
+guidata(hObject,handles);
+
+% --- 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)
+if  isdir(handles.main.params.file.pathName)
+        cd (handles.main.params.file.pathName);
+        handles.main.params.file.path = cd;
+        handles.main.params.file.pathName = cd;
+        addpath(cd);
+        load_listbox(hObject, eventdata, handles);
+end
+
+% --- Executes on selection change in listbox5.
+function listbox5_Callback(hObject, eventdata, handles)
+% hObject    handle to listbox5 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+
+% Hints: contents = cellstr(get(hObject,'String')) returns listbox5 contents as cell array
+%        contents{get(hObject,'Value')} returns selected item from listbox5
+handles = guidata(hObject);
+get(handles.figure1,'SelectionType');
+if strcmp(get(handles.figure1,'SelectionType'),'open')
+    index_selected = get(handles.listbox5,'Value');
+    file_list = get(handles.listbox5,'String');
+    [path, handles.main.params.file.name, ext] = fileparts(file_list{index_selected});
+    handles.main.params.file.name = strcat(handles.main.params.file.name,ext);
+    handles.main.params.file.pathName = strcat(handles.main.params.file.path,'/', handles.main.params.file.name);
+    if  isdir(handles.main.params.file.pathName)
+        cd (handles.main.params.file.pathName);
+        handles.main.params.file.path = cd;
+        handles.main.params.file.pathName = cd;
+        addpath(cd);
+        load_listbox(hObject, eventdata, handles);
+    else
+        cd(handles.main.params.file.path);
+        switch ext
+            case '.txt'
+            
+                if(isfield(handles.main.params,'plotting'))
+                    if(isfield(handles.main,'expData'))
+                        handles.main.expData = parse_log(handles.main.params.file.pathName,handles.main.params,handles.main.expData);
+                    else
+                        handles.main.expData = parse_log(handles.main.params.file.pathName,handles.main.params);
+                    end
+                else
+                    handles.main.params = set_params(hObject, eventdata, handles);
+                    handles.main.expData = parse_log(handles.main.params.file.pathName,handles.main.params);
+                end
+                handles.main = generateGuiData(hObject, eventdata, handles);
+                exportData(hObject, eventdata, handles);
+                handles.main = importData(hObject, eventdata, handles);
+                handles = updateOptions(hObject, eventdata, handles);
+                handles = loadOptions(hObject, eventdata, handles);
+                set(handles.text5,'string',strcat('Current Log:', handles.main.params.file.pathName));
+                previewPlot(hObject, eventdata, handles);
+                                
+            case '.mat'
+                handles.main = importData(hObject, eventdata, handles);
+                handles = updateOptions(hObject, eventdata, handles);
+                handles = loadOptions(hObject, eventdata, handles);
+                set(handles.text5,'string',strcat('Current Log:', handles.main.params.file.pathName));
+                previewPlot(hObject, eventdata, handles);
+                
+            otherwise
+            try
+                open(handles.main.params.file.pathName,handles.main.params);
+            catch ex
+                errordlg(ex.getReport('basic'),'File Type Error','modal');
+            end
+            
+        end
+    end
+end
+
+guidata(hObject,handles);
+
+
+
+
+%% Extra Functions
+% Used by above
+
+
+function previewPlot(hObject, eventdata, handles)
+%handles.datafields = fieldnames(handles.main.expData);
+if(~isnan(handles.main.expData.Time.data))
+    if(strcmp(get(get(handles.uipanel1,'SelectedObject'),'Tag'), 'radiobutton13'))
+        whitebg(handles.main.expData.params{1}.backgnd);
+        for i = 1:length(handles.main.expData.data)-1
+                if(~isnan(handles.main.expData.data{i}(1,1)) && i<=12)
+                    plot(handles.axes{i},handles.main.expData.data{1},handles.main.expData.data{i+1},'LineStyle',handles.main.expData.params{1}.style,'Marker',handles.main.expData.params{1}.marker,'Color',handles.main.expData.params{1}.color);
+                    set(handles.axes{i},'Color',handles.main.expData.params{1}.backgnd);
+                    set(handles.togglebuttons{i},'string',handles.main.expData.datafields{i+1},'enable','on');
+                    grid(handles.axes{i}, 'on');
+                    xlabel(handles.axes{i},strcat(handles.main.expData.datafields{1},'(', handles.main.expData.unit{1},')'));
+                    ylabel(handles.axes{i},handles.main.expData.unit{i+1});
+                    if(isfield(handles.main.expData,'Marker'))
+                        marks = find(handles.main.expData.Marker.data);
+                        for j = 1:length(marks)
+                            line([handles.main.expData.data{1}(marks(j)) handles.main.expData.data{1}(marks(j))], get(handles.axes{i},'YLim'),'Color','red','Parent',handles.axes{i})
+                        end
+                        
+                    end
+                end
+        end
+    else
+        whitebg('white');
+        for i = 1:length(handles.main.expData.data)-1
+            if(~isnan(handles.main.expData.data{i}(1,1)) && (i<=12))
+                plot(handles.axes{i},handles.main.expData.data{1},handles.main.expData.data{i+1},'LineStyle',handles.main.expData.params{i+1}.style,'Marker',handles.main.expData.params{i+1}.marker,'Color',handles.main.expData.params{i+1}.color);
+                if(~handles.main.params.plotting.multiPlot)
+                    set(handles.axes{i},'Color',handles.main.expData.params{i+1}.backgnd);
+                end
+                set(handles.togglebuttons{i},'string',handles.main.expData.datafields{i+1},'enable','on');
+                grid(handles.axes{i}, 'on');
+                xlabel(handles.axes{i},strcat(handles.main.expData.datafields{1},'(', handles.main.expData.unit{1},')'));
+                ylabel(handles.axes{i},handles.main.expData.unit{i+1});
+                if(isfield(handles.main.expData,'Marker'))
+                        marks = find(handles.main.expData.Marker.data);
+                        for j = 1:length(marks)
+                            line([handles.main.expData.data{1}(marks(j)) handles.main.expData.data{1}(marks(j))], get(handles.axes{i},'YLim'),'Color','red','Parent',handles.axes{i})
+                        end
+                        
+                end
+            end
+        end
+    end
+    for i = length(handles.main.expData.data):12
+                plot(handles.axes{i},0,0);
+                set(handles.axes{i},'Color','white');
+                grid(handles.axes{i}, 'off');
+                set(handles.togglebuttons{i},'string','no data','enable','off');
+                set(handles.togglebuttons{i},'value',0);
+                handles.main.params.plotting.toPlot{i} = [];
+    end
+    setbgcolor(hObject, eventdata, handles);
+end
+guidata(hObject, handles);
+
+
+
+function main = importData(hObject, eventdata, handles)
+
+main = evalin('base' , 'main');
+handles.main = main;
+handles.main = generateGuiData(hObject, eventdata, handles);
+
+if(~isfield(handles.main.params,'plotting'))
+    handles.main.params = set_params(hObject, eventdata, handles);
+end
+if(~isfield(handles.main.params.plotting,'separatePlot'))
+    handles.main.params.plotting.separatePlot = 1;           % to generate separate plots
+end
+if(~isfield(handles.main.params.plotting,'multiPlot'))
+    handles.main.params.plotting.multiPlot = 0;              % to super impose multiple quantities on the same plot
+end
+if(~isfield(handles.main.params.plotting,'subPlot'))
+    handles.main.params.plotting.subPlot = 0;           % to generate sub plots for multiple quantities
+end
+if(~isfield(handles.main.params.plotting,'clearFigs'))
+    handles.main.params.plotting.clearFigs = 1;
+end
+main = handles.main;
+guidata(hObject, handles);
+
+
+
+function main = generateGuiData(hObject, eventdata, handles)
+n = length(fieldnames(handles.main.expData));
+handles.main.expData.datafields = fieldnames(handles.main.expData);
+for i = 1:n
+eval(['handles.main.expData.data{i} = handles.main.expData.', handles.main.expData.datafields{i}, '.data;']); %%
+eval(['handles.main.expData.unit{i} = handles.main.expData.', handles.main.expData.datafields{i}, '.unit;']); %%
+eval(['handles.main.expData.params{i} = handles.main.expData.', handles.main.expData.datafields{i}, '.params;']);
+end
+main = handles.main;
+guidata(hObject, handles);
+
+
+
+function exportData(hObject, eventdata, handles)
+
+handles.main.expData.datafields = fieldnames(handles.main.expData);
+for i = 1:length(handles.main.expData.data)
+eval(['handles.main.expData.', handles.main.expData.datafields{i}, '.data = handles.main.expData.data{i};']); %%
+eval(['handles.main.expData.', handles.main.expData.datafields{i}, '.unit = handles.main.expData.unit{i};']); %%
+eval(['handles.main.expData.', handles.main.expData.datafields{i}, '.params = handles.main.expData.params{i};']);
+end
+handles.main.expData = rmfield(handles.main.expData, 'datafields');
+handles.main.expData = rmfield(handles.main.expData, 'data');
+handles.main.expData = rmfield(handles.main.expData, 'unit');
+handles.main.expData = rmfield(handles.main.expData, 'params');
+
+assignin('base', 'main', handles.main);
+
+
+
+function setbgcolor(hObject, eventdata, handles)
+
+bgcolor = get(handles.figure1,'color');
+set(handles.uipanel1,'BackgroundColor', bgcolor);
+set(handles.uipanel2,'BackgroundColor', bgcolor);
+set(handles.uipanel3,'BackgroundColor', bgcolor);
+for i = 1:16
+    set(handles.radiobutton{i},'BackgroundColor', bgcolor);
+end
+for i = 1:6
+    eval(['set(handles.text', num2str(i) , ',''BackgroundColor'', bgcolor);'])
+end
+set(handles.checkbox1,'BackgroundColor', bgcolor);
+guidata(hObject, handles);
+
+
+
+function load_listbox(hObject, eventdata, handles)
+dir_struct = dir(cd);
+[sorted_names,sorted_index] = sortrows({dir_struct.name}');
+handles.file_names = sorted_names;
+handles.is_dir = [dir_struct.isdir];
+handles.sorted_index = sorted_index;
+guidata(handles.figure1,handles)
+set(handles.listbox5,'String',handles.file_names,'Value',1)
+set(handles.text5,'string',strcat('Current Log:', handles.main.params.file.pathName))
+cd(handles.filepath);
+guidata(hObject, handles);
+
+
+
+function params = set_params(hObject, eventdata, handles)
+handles.main.params.plotting.plot = 1;               % switch to choose plotting
+handles.main.params.plotting.separatePlot = 1;           % to generate separate plots
+handles.main.params.plotting.multiPlot = 0;              % to super impose multiple quantities on the same plot
+handles.main.params.plotting.subPlot = 0;           % to generate sub plots for multiple quantities
+handles.main.params.plotting.clearFigs = 1;
+handles.main.params.plotting.separateData = {};     % column numbers to plot on separate figures
+handles.main.params.plotting.toPlot = {};
+                                                        % if empty & plot = 1, all the columns will be plotted                                               
+handles.main.params.plotting.multiData = {};         % if empty but switch is on, use separateData values
+handles.main.params.plotting.subData = {};      % if empty but switch is on, use multiData values
+handles.main.params.plotting.color = 'black'; % one character for color of the plotting line
+handles.main.params.plotting.marker = 'none'; % one character for the maker of the plotting line
+handles.main.params.plotting.style = '-'; % one character for the style of the plotting line
+handles.main.params.plotting.backgnd = 'white'; % rgb array for background color of the plot
+params = handles.main.params;
+
+
+
+function handles = loadOptions(hObject, eventdata, handles)
+handles = guidata(hObject);
+set(handles.radiobutton{14},'Value',0)
+set(handles.radiobutton{15},'Value',0)
+set(handles.radiobutton{16},'Value',0)
+if(handles.main.params.plotting.separatePlot)
+    set(handles.radiobutton{14},'Value',1)
+else if(handles.main.params.plotting.subPlot)
+        set(handles.radiobutton{15},'Value',1)
+    else if(handles.main.params.plotting.multiPlot)
+            set(handles.radiobutton{16},'Value',1)
+        else
+            set(handles.radiobutton{14},'Value',1);
+            handles.main.params.plotting.separatePlot = 1;
+        end
+    end
+end
+if(handles.main.params.plotting.clearFigs)
+    set(handles.checkbox1,'Value',1)
+else
+    set(handles.checkbox1,'Value',0)
+end
+
+for n = 2:length(handles.main.expData.datafields)
+    if(n<=13)
+        set(handles.togglebuttons{n-1}, 'Value', 0);
+    end
+end
+if(isfield(handles.main.params.plotting,'toPlot'))
+    for m = 1:length(handles.main.params.plotting.toPlot)
+        for n = 2:length(handles.main.expData.datafields)
+            if(strcmp(handles.main.expData.datafields{n},handles.main.params.plotting.toPlot{m}))
+                set(handles.togglebuttons{n-1}, 'Value', 1);
+            end
+        end
+    end
+end
+exportData(hObject, eventdata, handles);
+guidata(hObject, handles);
+
+
+
+function handles = updateOptions(hObject, eventdata, handles)
+
+handles = guidata(hObject);
+
+uipanel3_SelectionChangeFcn(hObject, eventdata, handles);
+
+if(get(handles.checkbox1,'Value'))
+    handles.main.params.plotting.clearFigs = 1;
+else
+    handles.main.params.plotting.clearFigs = 0;
+end
+
+handles.main.params.plotting.toPlot = {};
+for i = 1:length(handles.main.expData.datafields)-1
+    if(i<=12)
+        button_state = get(handles.togglebuttons{i},'Value');
+    end
+    if button_state == 1
+        handles.main.params.plotting.toPlot = {handles.main.params.plotting.toPlot{:}, handles.main.expData.datafields{i+1}};
+    else
+        handles.main.params.plotting.toPlot(strcmp(handles.main.expData.datafields{i+1},handles.main.params.plotting.toPlot)) = [];
+    end
+end
+handles.main.params.plotting.toPlot = handles.main.params.plotting.toPlot(~cellfun('isempty',handles.main.params.plotting.toPlot));
+
+exportData(hObject, eventdata, handles);
+guidata(hObject, handles);
+
+
+
+%% unused functions
+function uipanel1_ButtonDownFcn(hObject, eventdata, handles)
+function togglebutton7_CreateFcn(hObject, eventdata, handles)
+function listbox5_CreateFcn(hObject, eventdata, handles)
+function listbox1_Callback(hObject, eventdata, handles)
+function listbox1_CreateFcn(hObject, eventdata, handles)
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+function listbox2_Callback(hObject, eventdata, handles)
+function listbox2_CreateFcn(hObject, eventdata, handles)
+function listbox3_Callback(hObject, eventdata, handles)
+function listbox3_CreateFcn(hObject, eventdata, handles)
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+function listbox4_Callback(hObject, eventdata, handles)
+function listbox4_CreateFcn(hObject, eventdata, handles)
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+
+
+%% bulky functions (repetative)
+
+%--- Executes on button press in togglebutton1.
+function togglebutton1_Callback(hObject, eventdata, handles)
+% hObject    handle to togglebutton1 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+handles = guidata(hObject);
+handles = updateOptions(hObject, eventdata, handles);
+guidata(hObject,handles);
+% --- Executes on button press in togglebutton2.
+function togglebutton2_Callback(hObject, eventdata, handles)
+% hObject    handle to togglebutton2 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+handles = guidata(hObject);
+handles = updateOptions(hObject, eventdata, handles);
+guidata(hObject,handles);
+% --- Executes on button press in togglebutton3.
+function togglebutton3_Callback(hObject, eventdata, handles)
+% hObject    handle to togglebutton3 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+handles = guidata(hObject);
+handles = updateOptions(hObject, eventdata, handles);
+guidata(hObject,handles);
+% --- Executes on button press in togglebutton4.
+function togglebutton4_Callback(hObject, eventdata, handles)
+% hObject    handle to togglebutton4 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+handles = guidata(hObject);
+handles = updateOptions(hObject, eventdata, handles);
+guidata(hObject,handles);
+% --- Executes on button press in togglebutton5.
+function togglebutton5_Callback(hObject, eventdata, handles)
+% hObject    handle to togglebutton5 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+handles = guidata(hObject);
+handles = updateOptions(hObject, eventdata, handles);
+guidata(hObject,handles);
+% --- Executes on button press in togglebutton6.
+function togglebutton6_Callback(hObject, eventdata, handles)
+% hObject    handle to togglebutton6 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+handles = guidata(hObject);
+handles = updateOptions(hObject, eventdata, handles);
+guidata(hObject,handles);
+% --- Executes on button press in togglebutton7.
+function togglebutton7_Callback(hObject, eventdata, handles)
+% hObject    handle to togglebutton7 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+handles = guidata(hObject);
+handles = updateOptions(hObject, eventdata, handles);
+guidata(hObject,handles);
+% --- Executes on button press in togglebutton8.
+function togglebutton8_Callback(hObject, eventdata, handles)
+% hObject    handle to togglebutton8 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)clc
+handles = guidata(hObject);
+handles = updateOptions(hObject, eventdata, handles);
+guidata(hObject,handles);
+% --- Executes on button press in togglebutton9.
+function togglebutton9_Callback(hObject, eventdata, handles)
+% hObject    handle to togglebutton9 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+handles = guidata(hObject);
+handles = updateOptions(hObject, eventdata, handles);
+guidata(hObject,handles);
+% --- Executes on button press in togglebutton10.
+function togglebutton10_Callback(hObject, eventdata, handles)
+% hObject    handle to togglebutton10 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+handles = guidata(hObject);
+handles = updateOptions(hObject, eventdata, handles);
+guidata(hObject,handles);
+% --- Executes on button press in togglebutton11.
+function togglebutton11_Callback(hObject, eventdata, handles)
+% hObject    handle to togglebutton11 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+handles = guidata(hObject);
+handles = updateOptions(hObject, eventdata, handles);
+guidata(hObject,handles);
+% --- Executes on button press in togglebutton12.
+function togglebutton12_Callback(hObject, eventdata, handles)
+% hObject    handle to togglebutton12 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+handles = guidata(hObject);
+handles = updateOptions(hObject, eventdata, handles);
+guidata(hObject,handles);
diff --git a/controls/DataAnalysisTool/Tool/GUI.fig b/controls/DataAnalysisTool/Tool/GUI.fig
index 0e62ff281260cd9f294eff1374daa9c160bab03e..cbbcff33b682e326691c4bffc93b94c4dde630a0 100644
Binary files a/controls/DataAnalysisTool/Tool/GUI.fig and b/controls/DataAnalysisTool/Tool/GUI.fig differ
diff --git a/controls/DataAnalysisTool/Tool/GUI.m b/controls/DataAnalysisTool/Tool/GUI.m
index 3794047e00cc08f8ad91d60cbe691a2839368fa4..95016c85f4251c7337a1c7b9b799a0bb79b8d0ae 100644
--- a/controls/DataAnalysisTool/Tool/GUI.m
+++ b/controls/DataAnalysisTool/Tool/GUI.m
@@ -95,6 +95,11 @@ else
     handles.main.params.file.path = handles.filepath;
     handles.main.params.file.pathName = handles.filepath;
 end
+
+handles.pause_or_play = 0;
+handles.pause_play_timer = timer('BusyMode', 'queue', 'ExecutionMode',...
+    'fixedRate', 'Period', 5.0);
+set(handles.pause_play_timer, 'TimerFcn', @(hObject, event) pushbutton2_Callback(hObject, eventdata, guidata(hObject)));
 cd(handles.main.params.file.path);
 load_listbox(hObject, eventdata, handles)
 guidata(hObject, handles);
@@ -158,6 +163,22 @@ exportData(hObject, eventdata, handles);
 previewPlot(hObject, eventdata, handles);
 guidata(hObject,handles);
 
+function pause_play_timer(hObject, eventdata, handles)
+% hObject handle to pushbutton_pause
+% eventdata reserved - to be defeined in a future version of MATLAB
+% handles structure with handles and user data (see GUIDATA)
+handles = guidata(hObject);
+handles = updateOptions(hObject, eventdata, handles);;
+
+if (handles.pause_or_play == 0)
+    handles.pause_or_play = 1;
+    start(handles.pause_play_timer);
+else
+   handles.pause_or_play = 0;
+   stop(handles.pause_play_timer);
+end
+guidata(hObject, handles);
+
 
 % --- Executes on button press in pushbutton2.
 function pushbutton2_Callback(hObject, eventdata, handles)