diff --git a/doc/PsPM_Developers_Guide.pdf b/doc/PsPM_Developers_Guide.pdf index c93e12f36..dce39e770 100644 Binary files a/doc/PsPM_Developers_Guide.pdf and b/doc/PsPM_Developers_Guide.pdf differ diff --git a/doc/PsPM_Developers_Guide.tex b/doc/PsPM_Developers_Guide.tex index 6679a50b3..a49173e7e 100644 --- a/doc/PsPM_Developers_Guide.tex +++ b/doc/PsPM_Developers_Guide.tex @@ -57,7 +57,7 @@ \title{Developer's Guide} \maketitle \begin{center} -Version 5.1.0 +Version 5.1.1 \par\end{center} \medskip{} @@ -4465,6 +4465,8 @@ \section{List of functions} \hline pspm\_bf\_brf & Saurabh Khemka \& Dominik Bach & - & -\tabularnewline \hline +pspm\_bf\_data & Dominik Bach & x & x\tabularnewline +\hline pspm\_bf\_FIR & Dominik Bach & - & -\tabularnewline \hline pspm\_bf\_Fourier & Dominik Bach & - & -\tabularnewline @@ -4751,6 +4753,8 @@ \section{List of functions} \hline pspm\_trim & Dominik Bach & x & x\tabularnewline \hline +pspm\_ui & Dadi Zhao & x & x\tabularnewline +\hline pspm\_version & Tobias Moser & - & -\tabularnewline \hline pspm\_write\_channel & Tobias Moser & x & x\tabularnewline diff --git a/doc/PsPM_Manual.pdf b/doc/PsPM_Manual.pdf index 17f73c601..52f20394b 100644 Binary files a/doc/PsPM_Manual.pdf and b/doc/PsPM_Manual.pdf differ diff --git a/doc/PsPM_Manual.tex b/doc/PsPM_Manual.tex index a6033c206..ae1de3bf9 100644 --- a/doc/PsPM_Manual.tex +++ b/doc/PsPM_Manual.tex @@ -77,7 +77,7 @@ \title{PsPM: Psychophysiological Modelling} \maketitle \begin{center} -Version 5.1.0 +Version 5.1.1 \par\end{center} \medskip{} @@ -5037,7 +5037,7 @@ \subsection{Split Sessions} \subsubsection*{Data File} -Choose the data file, in which you want to split sessions. +Choose one data file, in which you want to split sessions, and only one data file is accepted. \subsubsection*{Marker Channel} @@ -5058,6 +5058,15 @@ \subsubsection*{Split behaviour} \item Marker: Split sessions according to given marker id's. \end{itemize} +\subsubsection*{Missing epoch} +Choose whether you would like to add a missing epochs file, where you would like to split sessions. +\begin{itemize} +\item No missing epochs file +\item Add missing epochs file. \\ +In this option, you can choose one missing epochs file, in which you want to split sessions, and only one missing epochs file is accepted. +\end{itemize} + + \subsubsection*{Overwrite Existing File} Choose ``yes'' if you want to overwrite existing file(s) with the @@ -7167,6 +7176,39 @@ \subsubsection*{Bugfixes} \end{itemize} \end{itemize} +\subsection*{PsPM Version 5.1.1} +\subsubsection*{New Functions} +\begin{itemize} +\item \texttt{pspm\_bf\_data} +\begin{itemize} +\item New function template to allow users creating their own basis functions (bf) from a data vector. +\end{itemize} +\end{itemize} +\subsubsection*{UI Improvements} +\begin{itemize} +\item PsPM now has an improved GUI for the main screen and \texttt{pspm\_display}. +\item PsPM now uses system specific design for Windows, macOS and Linux. +\item A bug that affects GUI display has been fixed. +\end{itemize} +\subsubsection*{Bugfixes} +\begin{itemize} +\item \texttt{pspm\_dcm} +\begin{itemize} +\item A bug of channel and data referring that leads to incorrect missing epoch processing has been fixed. +\item \texttt{pspm\_dcm} now handles empty epochs correctly. +\end{itemize} +\item \texttt{pspm\_scr\_pp} +\begin{itemize} +\item A bug that throws warning when using GUI has been fixed. +\end{itemize} +\item \texttt{pspm\_split\_sessions} +\begin{itemize} +\item A bug which leads to GUI crash has been fixed. +\item \texttt{pspm\_split\_sessions} now accepts correct number of data files and missing epoch files in the GUI. +\item \texttt{pspm\_split\_sessions} now processes missing epochs correctly. +\end{itemize} +\end{itemize} + \clearpage \newpage \part{Acknowledgements} diff --git a/doc/release_notes.pdf b/doc/release_notes.pdf index 0c6de0ea5..ac64d697b 100644 Binary files a/doc/release_notes.pdf and b/doc/release_notes.pdf differ diff --git a/doc/release_notes.tex b/doc/release_notes.tex index fcd398d01..4b745b660 100644 --- a/doc/release_notes.tex +++ b/doc/release_notes.tex @@ -69,7 +69,7 @@ framexleftmargin=1pt, frame=l} \renewcommand{\lstlistingname}{Listing} -\title{PsPM 5.1.0 Release notes} +\title{PsPM Release Notes\\ ~\\ Version 5.1.1} \begin{document} \maketitle @@ -717,8 +717,7 @@ \subsection*{Bugfixes} \begin{itemize} \item pspm\_glm \begin{itemize} -\item A bug that leads to the failure of selecting left/right eye has been -fixed. +\item A bug that leads to the failure of selecting left/right eye has been fixed. \end{itemize} \item pspm\_load1 and pspm\_dcm \begin{itemize} @@ -735,6 +734,38 @@ \subsection*{Bugfixes} \end{itemize} \end{itemize} +\section{PsPM Version 5.1.1} +\subsection*{New Functions} +\begin{itemize} +\item \texttt{pspm\_bf\_data} +\begin{itemize} +\item New function template to allow users creating their own basis functions (bf) from a data vector. +\end{itemize} +\end{itemize} +\subsection*{UI Improvements} +\begin{itemize} +\item PsPM now has an improved GUI for the main screen and \texttt{pspm\_display}. +\item PsPM now uses system specific design for Windows, macOS and Linux. +\item A bug that affects GUI display has been fixed. +\end{itemize} +\subsection*{Bugfixes} +\begin{itemize} +\item \texttt{pspm\_dcm} +\begin{itemize} +\item A bug of channel and data referring that leads to incorrect missing epoch processing has been fixed. +\item \texttt{pspm\_dcm} now handles empty epochs correctly. +\end{itemize} +\item \texttt{pspm\_scr\_pp} +\begin{itemize} +\item A bug that throws warning when using GUI has been fixed. +\end{itemize} +\item \texttt{pspm\_split\_sessions} +\begin{itemize} +\item A bug which leads to GUI crash has been fixed. +\item \texttt{pspm\_split\_sessions} now accepts correct number of data files and missing epoch files in the GUI. +\item \texttt{pspm\_split\_sessions} now processes missing epochs correctly. +\end{itemize} +\end{itemize} \bibliographystyle{pnas2009} \bibliography{PsPM} diff --git a/src/pspm.fig b/src/pspm.fig index d047fca09..732e9633f 100644 Binary files a/src/pspm.fig and b/src/pspm.fig differ diff --git a/src/pspm.m b/src/pspm.m index c9c3b8495..935794558 100644 --- a/src/pspm.m +++ b/src/pspm.m @@ -1,37 +1,10 @@ function varargout = pspm(varargin) - % tag_PsPM is the main GUI for tag_PsPM - %__________________________________________________________________________ - % tag_PsPM 5.1 - % (C) 2008-2021 Dominik R Bach (Wellcome Trust Centre for Neuroimaging) - - % $Id: tag_pspm.m 636 2019-03-15 07:56:42Z lciernik $ - % $Rev: 636 $ - - % this code was mainly produced by GUIDE - % PsPM_GUI M-file for PsPM_GUI.fig - % PsPM_GUI, by itself, creates a new tag_PsPM or raises the existing - % singleton*. - % - % H = tag_pspm returns the handle to a new tag_PsPM or the handle to - % the existing singleton*. - % - % tag_PsPM('CALLBACK',hObject,eventData,handles,...) calls the local - % function named CALLBACK in tag_PsPM.M with the given input arguments. - % - % tag_PsPM('Property','Value',...) creates a new tag_PsPM or raises the - % existing singleton*. Starting from the left, property value pairs are - % applied to the GUI before PsPM_OpeningFunction gets called. An - % unrecognized property name or invalid value makes property application - % stop. All inputs are passed to PsPM_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 tag_PsPM - - % Last Modified by GUIDE v2.5 07-Jul-2021 16:18:18 + + % pspm.m handles the main GUI for PsPM + % PsPM Version 5.1.1 + % (C) 2008-2021 Dominik R Bach (Wellcome Centre for Human Neuroimaging) + % Updated 22-07-2021 Teddy (WCHN, UCL) + % initialise % ------------------------------------------------------------------------- global settings; @@ -289,22 +262,22 @@ function tag_first_level_models_list_Callback(hObject, ~, ~) selected = get(hObject,'Value'); switch selected - case 1 + case 1 % SCR cfg_add_module('pspm.first_level.scr.glm_scr'); case 2 cfg_add_module('pspm.first_level.hp.glm_hp_e'); case 3 cfg_add_module('pspm.first_level.hp.glm_hp_fc'); case 4 - cfg_add_module('pspm.first_level.ps.glm_ps_fc'); - case 5 cfg_add_module('pspm.first_level.resp.glm_ra_e'); - case 6 + case 5 cfg_add_module('pspm.first_level.resp.glm_ra_fc'); + case 6 + cfg_add_module('pspm.first_level.resp.glm_rfr_e'); case 7 cfg_add_module('pspm.first_level.resp.glm_rp_e'); case 8 - cfg_add_module('pspm.first_level.resp.glm_rfr_e'); + cfg_add_module('pspm.first_level.ps.glm_ps_fc'); case 9 cfg_add_module('pspm.first_level.sebr.glm_sebr'); case 10 @@ -325,30 +298,30 @@ function tag_data_preprocessing_list_Callback(hObject, ~, ~) selected = get(hObject,'Value'); switch selected case 1 - cfg_add_module('pspm.data_preprocessing.pp_heart_period.pp_heart_data'); + cfg_add_module('pspm.data_preprocessing.pp_scr');%pp_scr case 2 + cfg_add_module('pspm.data_preprocessing.pp_heart_period.pp_heart_data'); + case 3 %cfg_add_module('tag_pspm.data_preprocessing.pp_heart_period.ecg_editor'); pspm_ecg_editor(); - case 3 - cfg_add_module('pspm.data_preprocessing.resp_pp'); case 4 - cfg_add_module('pspm.data_preprocessing.pp_pupil.process_illuminance'); + cfg_add_module('pspm.data_preprocessing.resp_pp'); case 5 - cfg_add_module('pspm.data_preprocessing.pp_pupil.find_valid_fixations'); + cfg_add_module('pspm.data_preprocessing.pp_pupil.process_illuminance'); case 6 - cfg_add_module('pspm.data_preprocessing.pp_pupil.pupil_correct'); + cfg_add_module('pspm.data_preprocessing.pp_pupil.find_valid_fixations'); case 7 - cfg_add_module('pspm.data_preprocessing.pp_pupil.pupil_preprocess'); + cfg_add_module('pspm.data_preprocessing.pp_pupil.pupil_correct'); case 8 - cfg_add_module('pspm.data_preprocessing.pupil_size_convert'); + cfg_add_module('pspm.data_preprocessing.pp_pupil.pupil_preprocess'); case 9 - cfg_add_module('pspm.data_preprocessing.gaze_convert'); + cfg_add_module('pspm.data_preprocessing.pupil_size_convert'); case 10 - cfg_add_module('pspm.data_preprocessing.pp_emg.find_sounds'); + cfg_add_module('pspm.data_preprocessing.gaze_convert'); case 11 - cfg_add_module('pspm.data_preprocessing.pp_emg.pp_emg_data'); + cfg_add_module('pspm.data_preprocessing.pp_emg.find_sounds'); case 12 - cfg_add_module('pspm.data_preprocessing.pp_scr');%pp_scr + cfg_add_module('pspm.data_preprocessing.pp_emg.pp_emg_data'); end end diff --git a/src/pspm_cfg/pspm_cfg_data_preprocessing.m b/src/pspm_cfg/pspm_cfg_data_preprocessing.m index de15748b2..693b053f5 100644 --- a/src/pspm_cfg/pspm_cfg_data_preprocessing.m +++ b/src/pspm_cfg/pspm_cfg_data_preprocessing.m @@ -13,12 +13,10 @@ cfg = cfg_repeat; cfg.name = 'Data Preprocessing'; cfg.tag = 'data_preprocessing'; -cfg.values = {pspm_cfg_pp_heart_period, ... +cfg.values = {pspm_cfg_pp_scr,... + pspm_cfg_pp_heart_period, ... pspm_cfg_resp_pp, ... pspm_cfg_pp_pupil, ... - pspm_cfg_pupil_size_convert, ... - pspm_cfg_gaze_convert, ... - pspm_cfg_pp_emg, ... - pspm_cfg_pp_scr}; + pspm_cfg_pp_emg}; cfg.forcestruct = true; -cfg.help = {'Help: Data preprocessing'}; \ No newline at end of file +cfg.help = {'Help: Data preprocessing'}; diff --git a/src/pspm_cfg/pspm_cfg_gaze_convert.m b/src/pspm_cfg/pspm_cfg_gaze_convert.m index 3b3845567..eacdeb102 100644 --- a/src/pspm_cfg/pspm_cfg_gaze_convert.m +++ b/src/pspm_cfg/pspm_cfg_gaze_convert.m @@ -11,7 +11,7 @@ % Initialise global settings -if isempty(settings), pspm_init; end +%if isempty(settings), pspm_init; end %% Datafile datafile = cfg_files; @@ -131,7 +131,7 @@ chan_action.val = {'add'}; chan_action.values = {'replace', 'add'}; chan_action.labels = {'Replace channel', 'Add channel'}; -chan_action.help = {['Choose whether to ''replace'' the given channel ', ... +chan_action.help = {['Choose whether to ''replace'' the given channel ', ... 'or ''add'' the converted data as a new channel.']}; %% Executable branch @@ -141,4 +141,4 @@ pp_gaze_convert.val = {datafile, conversion, chan_action}; pp_gaze_convert.prog = @pspm_cfg_run_gaze_convert; pp_gaze_convert.help = {['Provides conversion functions for the specified ', ... - 'data (e.g. gaze data).']}; \ No newline at end of file + 'data (e.g. gaze data).']}; diff --git a/src/pspm_display.fig b/src/pspm_display.fig index ce8b28799..2c5664ffc 100644 Binary files a/src/pspm_display.fig and b/src/pspm_display.fig differ diff --git a/src/pspm_display.m b/src/pspm_display.m index 8d971de48..f31932402 100644 --- a/src/pspm_display.m +++ b/src/pspm_display.m @@ -15,7 +15,7 @@ % v0.1 - Jan-2014 % v0.2 - Apr-2014 % v0.3 - Jun-2014: shortcuts added, small bugfixes - % Last Modified by GUIDE v2.5 08-Jul-2021 03:27:10 + % Last Modified by GUIDE v2.5 13-Jul-2021 12:06:46 % Updated 5 July 2021 by Teddy @@ -170,8 +170,8 @@ function push_next_Callback(hObject, eventdata, handles) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) - x1=str2num(get(handles.ed_start_x,'String')); - x2=str2num(get(handles.ed_winsize_x,'String')); + x1=str2num(get(handles.edit_start_x,'String')); + x2=str2num(get(handles.edit_winsize_x,'String')); y=get(handles.display_plot,'YLim'); @@ -179,9 +179,9 @@ function push_next_Callback(hObject, eventdata, handles) axis([x1 x2 y(1) y(2)]) - set(handles.ed_start_x,'String',num2str(x1)); - set(handles.ed_y_min,'String',num2str(y(1))); - set(handles.ed_y_max,'String',num2str(y(2))); + set(handles.edit_start_x,'String',num2str(x1)); + set(handles.edit_y_min,'String',num2str(y(1))); + set(handles.edit_y_max,'String',num2str(y(2))); set(handles.button_all,'Value',0); end @@ -194,20 +194,20 @@ function push_back_Callback(hObject, eventdata, handles) % handles structure with handles and user data (see GUIDATA) - x1=str2num(get(handles.ed_start_x,'String')); - x2=str2num(get(handles.ed_winsize_x,'String')); + x1=str2num(get(handles.edit_start_x,'String')); + x2=str2num(get(handles.edit_winsize_x,'String')); x1=x1-x2; x2=x1+x2; - set(handles.ed_start_x,'String',num2str(x1)); + set(handles.edit_start_x,'String',num2str(x1)); y=get(handles.display_plot,'YLim'); axis([x1 x2 y(1) y(2)]) - set(handles.ed_start_x,'String',num2str(x1)); - set(handles.ed_y_min,'String',num2str(y(1))); - set(handles.ed_y_max,'String',num2str(y(2))); + set(handles.edit_start_x,'String',num2str(x1)); + set(handles.edit_y_min,'String',num2str(y(1))); + set(handles.edit_y_max,'String',num2str(y(2))); set(handles.button_all,'Value',0); end @@ -252,19 +252,19 @@ function radio_integrated_Callback(hObject, eventdata, handles) end -function ed_winsize_x_Callback(hObject, eventdata, handles) - % hObject handle to ed_winsize_x (see GCBO) +function edit_winsize_x_Callback(hObject, eventdata, handles) + % hObject handle to edit_winsize_x (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 ed_winsize_x as text - % str2double(get(hObject,'String')) returns contents of ed_winsize_x as a double - x1=str2num(get(handles.ed_start_x,'String')); + % Hints: get(hObject,'String') returns contents of edit_winsize_x as text + % str2double(get(hObject,'String')) returns contents of edit_winsize_x as a double + x1=str2num(get(handles.edit_start_x,'String')); - x2=str2num(get(handles.ed_winsize_x,'String'))+x1; + x2=str2num(get(handles.edit_winsize_x,'String'))+x1; - y1=str2num(get(handles.ed_y_min,'String')); - y2=str2num(get(handles.ed_y_max,'String')); + y1=str2num(get(handles.edit_y_min,'String')); + y2=str2num(get(handles.edit_y_max,'String')); if y1 >= y2 warning(sprintf(' Ymin ( current input: %d ) must be smaller than Ymax ( current input: %d ) ! ',y1,y2)); @@ -277,8 +277,8 @@ function ed_winsize_x_Callback(hObject, eventdata, handles) end % --- Executes during object creation, after setting all properties. -function ed_winsize_x_CreateFcn(hObject, eventdata, handles) - % hObject handle to ed_winsize_x (see GCBO) +function edit_winsize_x_CreateFcn(hObject, eventdata, handles) + % hObject handle to edit_winsize_x (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called @@ -290,18 +290,18 @@ function ed_winsize_x_CreateFcn(hObject, eventdata, handles) end -function ed_y_min_Callback(hObject, eventdata, handles) - % hObject handle to ed_y_min (see GCBO) +function edit_y_min_Callback(hObject, eventdata, handles) + % hObject handle to edit_y_min (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 ed_y_min as text - % str2double(get(hObject,'String')) returns contents of ed_y_min as a double - x1=str2num(get(handles.ed_start_x,'String')); - x2=str2num(get(handles.ed_winsize_x,'String'))+x1; + % Hints: get(hObject,'String') returns contents of edit_y_min as text + % str2double(get(hObject,'String')) returns contents of edit_y_min as a double + x1=str2num(get(handles.edit_start_x,'String')); + x2=str2num(get(handles.edit_winsize_x,'String'))+x1; - y1=str2num(get(handles.ed_y_min,'String')); - y2=str2num(get(handles.ed_y_max,'String')); + y1=str2num(get(handles.edit_y_min,'String')); + y2=str2num(get(handles.edit_y_max,'String')); if y1 >= y2 warning(sprintf(' Ymin ( current input: %d ) must be smaller than Ymax ( current input: %d ) ! ',y1,y2)); @@ -314,8 +314,8 @@ function ed_y_min_Callback(hObject, eventdata, handles) end % --- Executes during object creation, after setting all properties. -function ed_y_min_CreateFcn(hObject, eventdata, handles) - % hObject handle to ed_y_min (see GCBO) +function edit_y_min_CreateFcn(hObject, eventdata, handles) + % hObject handle to edit_y_min (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called @@ -327,18 +327,18 @@ function ed_y_min_CreateFcn(hObject, eventdata, handles) end -function ed_start_x_Callback(hObject, eventdata, handles) - % hObject handle to ed_start_x (see GCBO) +function edit_start_x_Callback(hObject, eventdata, handles) + % hObject handle to edit_start_x (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 ed_start_x as text - % str2double(get(hObject,'String')) returns contents of ed_start_x as a double - x1=str2num(get(handles.ed_start_x,'String')); - x2=str2num(get(handles.ed_winsize_x,'String'))+x1; + % Hints: get(hObject,'String') returns contents of edit_start_x as text + % str2double(get(hObject,'String')) returns contents of edit_start_x as a double + x1=str2num(get(handles.edit_start_x,'String')); + x2=str2num(get(handles.edit_winsize_x,'String'))+x1; - y1=str2num(get(handles.ed_y_min,'String')); - y2=str2num(get(handles.ed_y_max,'String')); + y1=str2num(get(handles.edit_y_min,'String')); + y2=str2num(get(handles.edit_y_max,'String')); if y1 >= y2 warning(sprintf(' Ymin ( current input: %d ) must be smaller than Ymax ( current input: %d ) ! ',y1,y2)); @@ -350,8 +350,8 @@ function ed_start_x_Callback(hObject, eventdata, handles) end % --- Executes during object creation, after setting all properties. -function ed_start_x_CreateFcn(hObject, eventdata, handles) - % hObject handle to ed_start_x (see GCBO) +function edit_start_x_CreateFcn(hObject, eventdata, handles) + % hObject handle to edit_start_x (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called @@ -371,17 +371,17 @@ function button_autoscale_Callback(hObject, eventdata, handles) axis('auto') y=get(handles.display_plot,'ylim'); - x=str2num(get(handles.ed_start_x,'String')); + x=str2num(get(handles.edit_start_x,'String')); x(2)=x(1)+15; axis([x(1) x(2) y(1) y(2)]) - set(handles.ed_start_x,'String',num2str(x(1))); - set(handles.ed_winsize_x,'String',num2str(x(2)-x(1))); - set(handles.ed_y_min,'String',num2str(y(1))); - set(handles.ed_y_max,'String',num2str(y(2))); + set(handles.edit_start_x,'String',num2str(x(1))); + set(handles.edit_winsize_x,'String',num2str(x(2)-x(1))); + set(handles.edit_y_min,'String',num2str(y(1))); + set(handles.edit_y_max,'String',num2str(y(2))); set(handles.button_all,'Value',0); end @@ -396,10 +396,10 @@ function button_all_Callback(hObject, eventdata, handles) y=get(handles.display_plot,'ylim'); x=get(handles.display_plot,'xlim'); - set(handles.ed_start_x,'String',num2str(x(1))); - set(handles.ed_winsize_x,'String',num2str(x(2)-x(1))); - set(handles.ed_y_min,'String',num2str(y(1))); - set(handles.ed_y_max,'String',num2str(y(2))); + set(handles.edit_start_x,'String',num2str(x(1))); + set(handles.edit_winsize_x,'String',num2str(x(2)-x(1))); + set(handles.edit_y_min,'String',num2str(y(1))); + set(handles.edit_y_max,'String',num2str(y(2))); set(handles.button_autoscale,'Value',0); end @@ -632,19 +632,19 @@ function radio_wnone_Callback(hObject, eventdata, handles) end -function ed_y_max_Callback(hObject, eventdata, handles) - % hObject handle to ed_y_max (see GCBO) +function edit_y_max_Callback(hObject, eventdata, handles) + % hObject handle to edit_y_max (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 ed_y_max as text - % str2double(get(hObject,'String')) returns contents of ed_y_max as a double + % Hints: get(hObject,'String') returns contents of edit_y_max as text + % str2double(get(hObject,'String')) returns contents of edit_y_max as a double - x1=str2num(get(handles.ed_start_x,'String')); - x2=str2num(get(handles.ed_winsize_x,'String'))+x1; + x1=str2num(get(handles.edit_start_x,'String')); + x2=str2num(get(handles.edit_winsize_x,'String'))+x1; - y1=str2num(get(handles.ed_y_min,'String')); - y2=str2num(get(handles.ed_y_max,'String')); + y1=str2num(get(handles.edit_y_min,'String')); + y2=str2num(get(handles.edit_y_max,'String')); if y1 >= y2 warning(sprintf(' Ymin ( current input: %d ) must be smaller than Ymax ( current input: %d ) ! ',y1,y2)); @@ -657,8 +657,8 @@ function ed_y_max_Callback(hObject, eventdata, handles) end % --- Executes during object creation, after setting all properties. -function ed_y_max_CreateFcn(hObject, eventdata, handles) - % hObject handle to ed_y_max (see GCBO) +function edit_y_max_CreateFcn(hObject, eventdata, handles) + % hObject handle to edit_y_max (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called @@ -914,10 +914,10 @@ function ed_y_max_CreateFcn(hObject, eventdata, handles) x=get(handles.display_plot,'xlim'); y=get(handles.display_plot,'ylim'); x(2)=x(2)-x(1); - set(handles.ed_y_min,'String',num2str(y(1))) - set(handles.ed_y_max,'String',num2str(y(2))) - set(handles.ed_start_x,'String',num2str(x(1))) - set(handles.ed_winsize_x,'String',num2str(x(2))) + set(handles.edit_y_min,'String',num2str(y(1))) + set(handles.edit_y_max,'String',num2str(y(2))) + set(handles.edit_start_x,'String',num2str(x(1))) + set(handles.edit_winsize_x,'String',num2str(x(2))) % ------------------------------------------------------------------------- end diff --git a/src/pspm_msg.txt b/src/pspm_msg.txt index d15c8ea09..ee6fad160 100644 --- a/src/pspm_msg.txt +++ b/src/pspm_msg.txt @@ -1,7 +1,7 @@ $___________________________________________________________________________ Welcome to PsPM -- PsychoPhysiological Modelling (incorporating SCRalyze) -Version 5.1.0 (16.06.2021) +Version 5.1.1 (22.07.2021) $ ------------------------------------------ (c) 2008-2021 diff --git a/src/pspm_quit.m b/src/pspm_quit.m index 91f9c2811..e9f042df1 100644 --- a/src/pspm_quit.m +++ b/src/pspm_quit.m @@ -23,5 +23,5 @@ disp(' '); disp('Thanks for using PsPM.'); disp('_____________________________________________________________________________________________'); -disp('PsPM 5.1.0 (c) 2008-2021 Dominik R. Bach'); +disp('PsPM 5.1.1 (c) 2008-2021 Dominik R. Bach'); disp('University of Zurich, CH -- University College London, UK'); diff --git a/src/pspm_ui.m b/src/pspm_ui.m index f8790cd5f..02c53bd07 100644 --- a/src/pspm_ui.m +++ b/src/pspm_ui.m @@ -8,40 +8,53 @@ function pspm_ui(hObject,handles,window) FontSizeTitle = 11; FontSizeText = 10; FontSizeCaption = 9; - FontSizeAttr = 7.5; + FontSizeAttr = 9; + DisplayUnit = 'points'; FontNameText = 'Segoe UI'; FontNameEmph = 'Segoe UI'; - MainWeight = 0.65; - MainHeight = 0.65; + MainWeight = 500; + MainHeight = 500*0.8; + DisplayWeight = 250; + DisplayHeight = 250/5; + SwitchResize = 'off'; elseif ismac FontSizeTitle = 16; FontSizeText = 14; FontSizeCaption = 12; - FontSizeAttr = 10; + FontSizeAttr = 13; FontNameText = 'Helvetica Neue'; - FontNameEmph = 'Helvetica-Light'; - MainWeight = 0.2819; % adjust width - MainHeight = 0.4425; % adjust height + FontNameEmph = 'Helvetica-Neue-Light'; + DisplayUnit = 'points'; + MainWeight = 750; + MainHeight = 750*0.8; DisplayWeight = 190; DisplayHeight = 60; + SwitchResize = 'off'; else FontSizeTitle = 11; FontSizeText = 10; FontSizeCaption = 9; - FontSizeAttr = 8; + FontSizeAttr = 10; FontNameText = 'DejaVu Sans'; FontNameEmph = 'DejaVu Sans'; - MainWeight = 0.5; - MainHeight = 0.5; + DisplayUnit = 'points'; + MainWeight = 650; + MainHeight = 650*0.8; + DisplayWeight = 190; + DisplayHeight = 60; + SwitchResize = 'on'; end switch window case 'main' + handles.figure1.Units = DisplayUnit; handles.tag_attribution.FontName = FontNameText; handles.tag_attribution.FontSize = FontSizeAttr; - handles.tag_attribution.String = ['Version 5.1.1',newline,... - 'Build ',datestr(now,'ddmmyyyy'),' with MATLAB 2021a',newline,... - 'The PsPM Team, University College London']; + %handles.tag_attribution.Visible = 'off'; + handles.tag_attribution.HorizontalAlignment = 'center'; + attribution_disp_text = sprintf(['Version 5.1.1, Build ',datestr(now,'ddmmyyyy'),' with MATLAB 2021a, ',... + 'The PsPM Team, University College London']); + handles.tag_attribution.String = attribution_disp_text; handles.tag_batch.FontName = FontNameText; handles.tag_batch.FontSize = FontSizeTitle; handles.tag_contrast_manager.FontName = FontNameText; @@ -87,7 +100,7 @@ function pspm_ui(hObject,handles,window) handles.tag_tools_title.FontSize = FontSizeCaption; hObject.Position(3) = MainWeight; hObject.Position(4) = MainHeight; - hObject.Resize = 'off'; + hObject.Resize = SwitchResize; case 'display' handles.button_all.FontName = FontNameText; handles.button_all.FontSize = FontSizeTitle; @@ -147,7 +160,7 @@ function pspm_ui(hObject,handles,window) handles.text_y_min.FontSize = FontSizeText; hObject.Position(3) = DisplayWeight; hObject.Position(4) = DisplayHeight; - set(hObject,'Resize','on'); + hObject.Resize = 'on'; end end diff --git a/src/tlAddEpoch_image.png b/src/tlAddEpoch_image.png deleted file mode 100644 index acb140807..000000000 Binary files a/src/tlAddEpoch_image.png and /dev/null differ diff --git a/src/tlNavigate_image.png b/src/tlNavigate_image.png deleted file mode 100644 index 8f272c2a7..000000000 Binary files a/src/tlNavigate_image.png and /dev/null differ diff --git a/src/tlNext_image.png b/src/tlNext_image.png deleted file mode 100644 index 74ce266ee..000000000 Binary files a/src/tlNext_image.png and /dev/null differ diff --git a/src/tlPrevious_image.png b/src/tlPrevious_image.png deleted file mode 100644 index 63c0dec99..000000000 Binary files a/src/tlPrevious_image.png and /dev/null differ diff --git a/src/tlRemoveEpoch_image.png b/src/tlRemoveEpoch_image.png deleted file mode 100644 index 66faf800f..000000000 Binary files a/src/tlRemoveEpoch_image.png and /dev/null differ diff --git a/src/tlZoomin_image.png b/src/tlZoomin_image.png deleted file mode 100644 index ba6f29b24..000000000 Binary files a/src/tlZoomin_image.png and /dev/null differ diff --git a/src/tlZoomout_image.png b/src/tlZoomout_image.png deleted file mode 100644 index 686bc42aa..000000000 Binary files a/src/tlZoomout_image.png and /dev/null differ diff --git a/src/uitoggletool5_image.png b/src/uitoggletool5_image.png deleted file mode 100644 index 204a88e82..000000000 Binary files a/src/uitoggletool5_image.png and /dev/null differ diff --git a/src/uitoggletool6_image.png b/src/uitoggletool6_image.png deleted file mode 100644 index 25ebc7d31..000000000 Binary files a/src/uitoggletool6_image.png and /dev/null differ diff --git a/src/uitoggletool7_image.png b/src/uitoggletool7_image.png deleted file mode 100644 index f2b09e03f..000000000 Binary files a/src/uitoggletool7_image.png and /dev/null differ diff --git a/src/uitoggletool8_image.png b/src/uitoggletool8_image.png deleted file mode 100644 index 93444c9f3..000000000 Binary files a/src/uitoggletool8_image.png and /dev/null differ