diff --git a/doc/#PsPM_Developers_Guide.lyx# b/doc/#PsPM_Developers_Guide.lyx# new file mode 100644 index 00000000..3477d743 --- /dev/null +++ b/doc/#PsPM_Developers_Guide.lyx# @@ -0,0 +1,39948 @@ +#LyX 2.4 created this file. For more info see https://www.lyx.org/ +\lyxformat 620 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass article +\begin_preamble +\definecolor{colKeys}{rgb}{0,0,1} +\definecolor{colIdentifier}{rgb}{0,0,0} +\definecolor{colComments}{rgb}{0.53, 0.66, 0.42} +\definecolor{colString}{rgb}{0.87, 0.36, 0.51} +\definecolor{barColor}{rgb}{0.43, 0.5, 0.5} +% Added by lyx2lyx +\renewcommand{\textendash}{--} +\renewcommand{\textemdash}{---} +\renewcommand*\l@subsection{\@dottedtocline{2}{3.8em}{3.2 em}} +\renewcommand*\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}} +\usepackage{bera} +\usepackage{enumitem} \setlist[itemize]{noitemsep} +\end_preamble +\use_default_options true +\maintain_unincluded_children no +\language english +\language_package default +\inputencoding utf8 +\fontencoding auto +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_roman_osf false +\font_sans_osf false +\font_typewriter_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize 10 +\spacing single +\use_hyperref false +\papersize default +\use_geometry true +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_formatted_ref 0 +\use_minted 0 +\use_lineno 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\leftmargin 1in +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style english +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tablestyle default +\listings_params "language=Matlab,float=hbp,basicstyle={\footnotesize\ttfamily},identifierstyle={\color{colIdentifier}},keywordstyle={\color{colKeys}},stringstyle={\color{colString}},commentstyle={\itshape\color{colComments}},columns=fixed,tabsize=2,extendedchars=true,showspaces=false,showstringspaces=false,captionpos=t,backgroundcolor={\color{white}},framexleftmargin=1pt,frame=l" +\tracking_changes false +\output_changes false +\change_bars false +\postpone_fragile_content false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\docbook_table_output 0 +\docbook_mathml_prefix 1 +\end_header + +\begin_body + +\begin_layout Title +PsPM: + Psychophysiological Modelling +\end_layout + +\begin_layout Title +Developer's Guide +\end_layout + +\begin_layout Standard +\align center +Version 7.0 +\end_layout + +\begin_layout Standard +\begin_inset VSpace defskip +\end_inset + + +\end_layout + +\begin_layout Standard +\align center +by the PsPM team +\begin_inset Foot +status open + +\begin_layout Plain Layout +\noindent +If you have comments on or error corrections to this documentation, + please send them to the PsPM team or post them on: + +\begin_inset CommandInset href +LatexCommand href +name "bachlab.org/pspm" +target "http://bachlab.org/pspm" +literal "false" + +\end_inset + + +\end_layout + +\end_inset + + +\size larger +: +\end_layout + +\begin_layout Standard +\align center +Dominik R Bach, + Giuseppe Castegnetti, + Laure Ciernik, + Samuel Gerster, + Saurabh Khemka, + Christoph Korn, + Samuel Maxwell, + Tobias Moser, + Philipp C Paulus, + Ivan Rojkov, + Matthias Staib, + Eshref Yozdemir, + Teddy Zhao and collaborators +\end_layout + +\begin_layout Standard +\align center +\begin_inset Newpage newpage +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset CommandInset toc +LatexCommand tableofcontents + +\end_inset + + +\begin_inset Newpage newpage +\end_inset + + +\end_layout + +\begin_layout Section +Introduction +\end_layout + +\begin_layout Quote +Contributed by Teddy Zhao in July 2024 +\end_layout + +\begin_layout Standard +PsychoPhysiological Modelling, + abbreviated as PsPM, + is a software package for model-based analysis of psychophysiological signals. + PsPM can be accessed through either graphical user interface (GUI) or command lines. + PsPM is written in MATLAB language, + thus it supports cross platform usages, + either Windows, + macOS or Linux, + and can be easily utilised in customised shell scripts. + PsPM is actively updated and maintained by bringing new features and fixing bugs, + thus the latest version of PsPM is always encouraged for users. + The recommended version of MATLAB for running PsPM is MATLAB 2024a (version 24), + and the earliest version of MATLAB (https://uk.mathworks.com/support/requirements/previous-releases.html) that could be used for running PsPM version 7.0 is MATLAB 2019a (version 9.6). +\end_layout + +\begin_layout Section +General +\end_layout + +\begin_layout Quote +Contributed by Dominik R Bach and Teddy Zhao +\end_layout + +\begin_layout Quote +Reviewed and revised by Teddy Zhao in March 2023 +\end_layout + +\begin_layout Subsection +Data files +\end_layout + +\begin_layout Standard +In PsPM, + data and information is stored as +\family typewriter +struct +\family default + variables and saved as +\family typewriter +mat +\family default + files. + A data +\family typewriter +struct +\family default + may contain mutiple cells, + and each cell contains a struct with channel specific fields, + +\family typewriter +infos +\family default + and +\family typewriter +data +\family default +. + Specifically, + +\family typewriter +infos +\family default + is a +\family typewriter +struct +\family default + variable with general information, + and +\family typewriter +data +\family default + is a +\family typewriter +cell array +\family default + with the data for each channel. + Both +\family typewriter +infos +\family default + and +\family typewriter +data +\family default + have the following mandatory subfields, + whilst +\family typewriter +infos +\family default + may have some optional subfields that can be defined if necessary, + as is shown in +\series bold +Table 1 +\series default +. +\end_layout + +\begin_layout Standard +\noindent +\align center + +\series bold +Table 1 +\series default + Description of data fields in PsPM +\end_layout + +\begin_layout Standard +\noindent +\align center +\begin_inset Tabular + + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Field +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Subfield +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Description +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Mandantory +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +infos +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +duration +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +The duration of the acquired data, + normally defined in seconds +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +data +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +header.channeltype +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +The type of the corresponding channel, + as defined in the settings. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +header.sr +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +the sample rate (or frequency) in 1/second (or Hz), + or timestamp units in seconds +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +header.units +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +the unit of data, + or the `events' +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +data +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +the actual data +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Optional +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +infos +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +sourcefile +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +importfile +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +importdate +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +sourcetype +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +recdate +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +rectime +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +In most cases, + only the subfield +\family typewriter +data +\family default + in the field +\family typewriter +data +\family default + will be modified since new results have been generated and are expected to replace the old data. + All the other fields, + for both +\family typewriter +data +\family default + and +\family typewriter +infos +\family default +, + the content will be kept unchanged. + However, + some data manipulation functions, + for example +\family typewriter +pspm_trim +\family default +, + will update +\family typewriter +infos +\family default + to record some file history. + Please check the specific descriptions of each function for understanding how +\family typewriter +data +\family default + and +\family typewriter +infos +\family default + will be updated. +\end_layout + +\begin_layout Subsection +How to add a new import data type +\end_layout + +\begin_layout Subsubsection +Add function +\end_layout + +\begin_layout Subparagraph + +\series bold +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_get_xxx +\family default + (where +\family typewriter +xxx +\family default + is the data type name). +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + import, + sourceinfo] = pspm_get_xxx(datafile, + import). +\end_layout + +\begin_layout Standard +The function needs to take an import job and add, + for each job. +\end_layout + +\begin_layout Subparagraph +Fields +\end_layout + +\begin_layout Itemize +Mandatory +\end_layout + +\begin_deeper +\begin_layout Description +\noindent +\align block + +\family typewriter +.data +\family default + - the actual data for this channel (column vector) +\end_layout + +\begin_layout Description +\noindent +\align block + +\family typewriter +.sr +\family default + - the sample rate for this channel (only if +\family typewriter +.autosr +\family default + enabled in +\family typewriter +pspm_init +\family default +) +\end_layout + +\end_deeper +\begin_layout Itemize +Optional +\end_layout + +\begin_deeper +\begin_layout Description +\noindent +\align block + +\family typewriter +.marker +\family default + For marker channels ( +\family typewriter +timestamps +\family default + or +\family typewriter +continuous +\family default +, + see +\family typewriter +pspm_get_marker +\family default +) +\end_layout + +\begin_layout Description +\noindent +\align block + +\family typewriter +.markerinfo +\family default + See +\family typewriter +pspm_get_marker +\end_layout + +\begin_layout Description +\noindent +\align block + +\family typewriter +.minfreq +\family default + Minimum frequency for pulse channels +\end_layout + +\begin_layout Description +\noindent +\align block + +\family typewriter +.units +\family default + If data units are defined by the recording software +\end_layout + +\begin_layout Description +\noindent +\align block + +\family typewriter +sts +\family default + Set as -1 if import is unsuccessful +\end_layout + +\begin_layout Description +\noindent +\align block + +\family typewriter +sourceinfo +\family default + Contains information on the source file, + with field +\end_layout + +\begin_deeper +\begin_layout Description +\noindent +\align block + +\family typewriter +.chan +\family default + A cell of string descriptions of the imported source channels, + e. + g. + names, + or numbers any optional fields that will be added to +\family typewriter +infos.source +\family default + (e. + g. + recording date & time, + and others) +\family typewriter + +\end_layout + +\end_deeper +\end_deeper +\begin_layout Subparagraph + +\series bold +Notes for multiple blocks +\end_layout + +\begin_layout Standard +File formats that support multiple block storage within one file can return cell arrays +\family typewriter +import{1:blkno} +\family default + and +\family typewriter +sourceinfo{1:blkno} +\family default +. + PsPM will save individual files for each block, + with a filename +\family typewriter +pspm_fn_blk0x.mat +\family default +. +\end_layout + +\begin_layout Subsubsection +Add information to settings +\end_layout + +\begin_layout Standard +The file pspm_init contains a block that defines possible import data types. + Add a new field here +\begin_inset Newline newline +\end_inset + + +\family typewriter + +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +% Description of data type +\end_layout + +\begin_layout Plain Layout + +% --------------------------------------------- +\end_layout + +\begin_layout Plain Layout + +defaults.import.datatypes(1) = ... + +\end_layout + +\begin_layout Plain Layout + +struct(`short', + `xxx', + ... + % short name for internal purposes +\end_layout + +\begin_layout Plain Layout + +`long', + `Datatype description', + ... + % long name for GUI +\end_layout + +\begin_layout Plain Layout + +`ext', + `*', + ... + % data file extension +\end_layout + +\begin_layout Plain Layout + +`funct', + @pspm_get_xxx, + ... + % import function +\end_layout + +\begin_layout Plain Layout + +`chantypes', + {{defaults.chantypes.type}}, + ... + % allowed channel types +\end_layout + +\begin_layout Plain Layout + +`chandescription', + `channel', + ... + % description of channels for GUI +\end_layout + +\begin_layout Plain Layout + +`multioption', + 1, + ... + % import of multiple channels for GUI +\end_layout + +\begin_layout Plain Layout + +`searchoption', + 1, + ... + % allow channel name search for GUI +\end_layout + +\begin_layout Plain Layout + +`automarker', + 0, + ... + % marker not stored in separate channel +\end_layout + +\begin_layout Plain Layout + +`autosr', + 1); + % sample rate automatically assigned +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subparagraph + +\series bold +Good to know +\end_layout + +\begin_layout Itemize +The ``long'' definition is used in the GUI – make sure it's readable. +\end_layout + +\begin_layout Itemize +If no event channels can be imported, + change +\family typewriter +.chantypes +\family default +. +\end_layout + +\begin_layout Itemize +If channels have searchable names in the import file, + set +\family typewriter +.searchoption +\family default + = 1. +\end_layout + +\begin_layout Itemize +If no channel number needs to be assigned for the marker channel, + set +\family typewriter +.automarker = 1 +\family default +. +\end_layout + +\begin_layout Itemize +If sample rate is contained in import file and determined during import, + set +\family typewriter +.autosr = 1 +\family default +. +\end_layout + +\begin_layout Itemize +If you need external functions – put them into a folder in the `import' subdirectory and add/remove this path within the +\family typewriter +pspm_get_xxx +\family default + function. +\end_layout + +\begin_layout Subsection +How to add a new channel type +\end_layout + +\begin_layout Subsubsection +Add function +\end_layout + +\begin_layout Subparagraph + +\series bold +Function +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_get_xxx +\family default + (where +\family typewriter +xxx +\family default + is the channel type) +\end_layout + +\begin_layout Subparagraph + +\series bold +Format +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + data] = pspm_get_channeltype(import) +\end_layout + +\begin_layout Subparagraph + +\series bold +Arguments +\end_layout + +\begin_layout Description + +\family typewriter +data +\family default + Data cell of structure readable by +\family typewriter +pspm_load_data +\family default +. +\end_layout + +\begin_layout Subparagraph + +\series bold +Good to know +\end_layout + +\begin_layout Standard +For event channels, + use the function +\family typewriter +pspm_get_events +\family default + to convert various event formats into time stamps (see +\family typewriter +pspm_get_marker +\family default + or +\family typewriter +pspm_get_hb +\family default + as an example) +\end_layout + +\begin_layout Subsubsection +Add information to settings +\end_layout + +\begin_layout Standard +Add information on the new channel type and import function to +\end_layout + +\begin_layout Standard + +\family typewriter +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +defaults.chantypes(k).type = `xxx';% channel type name +\end_layout + +\begin_layout Plain Layout + +defaults.chantypes(k).import = @pspm_get_xxx; + % conversion function +\end_layout + +\begin_layout Plain Layout + +defaults.chantypes(k).data = `xxx'; + % `wave' or `events' +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection +How to add a new GLM type +\end_layout + +\begin_layout Subsubsection +Add information to settings (Example SCR) +\end_layout + +\begin_layout Standard + +\family typewriter +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +defaults.glm(1) = ... + +\end_layout + +\begin_layout Plain Layout + +struct(`modality', + `scr', + ... + % modality name +\end_layout + +\begin_layout Plain Layout + +`cbf', + struct(`fhandle', + @pspm_bf_scrf, + `args', + 1), + ... + +\end_layout + +\begin_layout Plain Layout + +% default basis function/set +\end_layout + +\begin_layout Plain Layout + +`filter', + struct(`lpfreq', + 5, + `lporder', + 1, + ... + +\end_layout + +\begin_layout Plain Layout + +`hpfreq', + 0.05, + `hporder', + 1, + `down', + 10, + `direction', + `uni')); + +\end_layout + +\begin_layout Plain Layout + +% default filter settings +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Add default basis function +\end_layout + +\begin_layout Subparagraph + +\series bold +Function +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_bf_xxx +\end_layout + +\begin_layout Subparagraph + +\series bold +Arguments +\end_layout + +\begin_layout Standard +vector of arguments, + first element is time resolution, + further arguments as defined in +\family typewriter +defaults.glm(n).cbf.args +\family default +. +\end_layout + +\begin_layout Subsection +Warning IDs in PsPM +\end_layout + +\begin_layout Subsubsection +General +\end_layout + +\begin_layout Itemize + +\family typewriter +invalid_input +\end_layout + +\begin_layout Itemize + +\family typewriter +invalid_channeltype +\end_layout + +\begin_layout Itemize + +\family typewriter +nonexistent_file +\end_layout + +\begin_layout Itemize + +\family typewriter +channel_not_contained_in_file +\end_layout + +\begin_layout Itemize + +\family typewriter +obsolete_function +\end_layout + +\begin_layout Itemize + +\family typewriter +not_allowed_channeltype +\end_layout + +\begin_layout Itemize + +\family typewriter +invalid_data_structure +\end_layout + +\begin_layout Itemize + +\family typewriter +no_matching_channels +\end_layout + +\begin_layout Itemize + +\family typewriter +unknown_action +\end_layout + +\begin_layout Itemize + +\family typewriter +missing_data +\end_layout + +\begin_layout Itemize + +\family typewriter +out_of_range +\end_layout + +\begin_layout Subsubsection +Function specific +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm_load1 +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +not_saving_data +\end_layout + +\end_deeper +\begin_layout Itemize + +\family typewriter +pspm_interpolate +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +option_disabled +\end_layout + +\end_deeper +\begin_layout Itemize + +\family typewriter +pspm_trim +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +marker_out_of_range +\end_layout + +\end_deeper +\begin_layout Itemize + +\family typewriter +pspm_find_channel +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +multiple_matching_channels +\end_layout + +\end_deeper +\begin_layout Itemize + +\family typewriter +pspm_find_sounds +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +no_marker_chan +\end_layout + +\begin_layout Itemize + +\family typewriter +no_sound_chan +\end_layout + +\end_deeper +\begin_layout Itemize + +\family typewriter +pspm_get_scr +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +no_conversion_constant +\end_layout + +\end_deeper +\begin_layout Itemize + +\family typewriter +pspm_pp +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +invalid_freq +\end_layout + +\end_deeper +\begin_layout Itemize + +\family typewriter +pspm_prepdata +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +no_low_pass_filtering +\end_layout + +\begin_layout Itemize + +\family typewriter +downsampling_failed +\end_layout + +\begin_layout Itemize + +\family typewriter +nonint_sr +\end_layout + +\end_deeper +\begin_layout Itemize + +\family typewriter +pspm_get_timing +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +invalid_vector_size +\end_layout + +\begin_layout Itemize + +\family typewriter +event_names_dont_match +\end_layout + +\begin_layout Itemize + +\family typewriter +no_numeric_vector +\end_layout + +\begin_layout Itemize + +\family typewriter +no_integers +\end_layout + +\end_deeper +\begin_layout Itemize + +\family typewriter +pspm_down +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +rate_below_minimum +\end_layout + +\end_deeper +\begin_layout Standard +\begin_inset Newpage pagebreak +\end_inset + + +\end_layout + +\begin_layout Section +Help text +\end_layout + +\begin_layout Quote +Contributed by Teddy Zhao in September 2024 +\end_layout + +\begin_layout Subsection +Introduction +\end_layout + +\begin_layout Standard +Help text refers to the descriptive text that is included in the initial couple of lines of source code. + Such text is designed to be written by developers and used as references for developers and users. + Although written in the source code, + the text can be read by PsPM functions, + such as +\family typewriter +pspm_help +\family default +, + for exporting to documents that will be part of PsPM reference website. + The help text needs to be carefully written to make sure they are accurate and up to date. +\end_layout + +\begin_layout Standard +Typically, + the help text shall be written into sections as +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +Description The general introduction of a function. + This is normally describing the use of the function and how it works, + such as importing a specific type of data and how information is read and managed. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +Format The format of a function as how it can be called. + If the function has some variable arguments, + then the details can be listed as multiple lines. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +Arguments The list of input variables of a function with their descriptions. + Every individual input variable shall be lead by a star mark. + Structs and their subfields shall be managed with table symbols. + An example of how this is managed is given below. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +Outputs The list of output variables of a function with their descriptions, + similar to Arguments. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +Developer's_notes This section can be used as a paragraph of technical notes for the function. + Such information is typically useful for developing the function, + and it is relatively more useful for developers than for users. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +History The section includes some notes about who has contributed to a function, + which may be useful for future checking. +\end_layout + +\begin_layout Standard +The aforementioned sections are normally required for all the functions, + but may be depending on the actual situation. + For example, + a function that does not have outputs may not need the section +\shape italic +Outputs +\shape default +. +\end_layout + +\begin_layout Subsection +Management +\end_layout + +\begin_layout Standard +Three PsPM functions manage the help text, + namely +\family typewriter +pspm_help +\family default +, + +\family typewriter +pspm_doc +\family default +, + and +\family typewriter +pspm_doc_gen +\family default +. +\end_layout + +\begin_layout Subsubsection +pspm_help +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_help +\family default + is used to obtain the help text from source code and generate a struct of such content. + Whilst there is a suggested structure of the help text, + it is not required by +\family typewriter +pspm_help +\family default + that every section needs to present. + The input of +\family typewriter +pspm_help +\family default + needs to refer to only one function, + and multiple functions cannot be processed with +\family typewriter +pspm_help +\family default + in one time. + The function may be written as the path, + full name, + or simply the name without extra name. + For example, + the input can be written as +\family typewriter +~/Documents/pspm/src/pspm_dcm.m +\family default +, + +\family typewriter +pspm_dcm.m +\family default +, + or +\family typewriter +pspm_dcm +\family default +, + and all of them will let +\family typewriter +pspm_help +\family default + to understand it will process +\family typewriter +pspm_dcm +\family default +. + The output of +\family typewriter +pspm_help +\family default + is a struct. + It has the following rules which may need to pay attention to. +\end_layout + +\begin_layout Paragraph +General +\end_layout + +\begin_layout Enumerate +It is expected that the source code is written with UTF-8 encoding. + This is determined by considering the compatibility between Windows and Unix computers and the requirement of special characters that are used for structuring the parameters. +\end_layout + +\begin_layout Enumerate +The help text must start from the line following the function definition line, + and no empty line is permitted between the definition and help text or inside help text. + Following the help text, + there must be an empty line that divide the help text and the main code. +\end_layout + +\begin_layout Enumerate +Every line of help text must start with the comment symbol (%) that is used in Matlab language system. + A space following this comment symbol is required to increase readability of help text. +\end_layout + +\begin_layout Enumerate +It is common practice that one line of code shall not be too long and start a new line if necessary. + It is useful to make sure sentences have a full stop if they are expected to be shown to PsPM users. +\end_layout + +\begin_layout Enumerate +Although not mandatory, + it is recommended that the help text shall be written in an understandable way instead of highly technical way so that users can understand what the text mean without too much references. +\end_layout + +\begin_layout Enumerate +Wherever applicable, + please add the full name of some terms and the abbreviation following that. + Most academic paper writing rules are useful when considering writing styles here, + although PsPM's help text may not be as strict as publications. +\end_layout + +\begin_layout Enumerate +The output struct of pspm_help consists of the full fields, + from +\shape italic +Description +\shape default + to +\shape italic +History +\shape default +. +\end_layout + +\begin_layout Paragraph +Description +\end_layout + +\begin_layout Enumerate +\align block + +\shape italic +Description +\shape default + is normally written as one or multiple full sentences. + The first sentence normally explain the purpose of the function. + For example, + +\family typewriter +pspm_glm +\family default + retains its explaination as +\shape italic +pspm_glm specifies a within-subject general linear convolution model (GLM) of predicted signals and calculates amplitude estimates for these responses +\shape default +. + Further refinement of the functionality can be written following the main sentence. + +\end_layout + +\begin_layout Enumerate +\align block +It is not recommended to add specific details of the function that are used by developers only in +\shape italic +Description +\shape default +, + and such content may be put in +\shape italic +Developer's notes +\shape default +. + This may be used as the cutoff to determine if specific content can be put in +\shape italic +Description +\shape default + or +\shape italic +Developer's notes +\shape default +. +\end_layout + +\begin_layout Enumerate + +\shape italic +Description +\shape default + can be written into multiple paragraphs if they are not really relevant enough. + These paragraph settings will be reflected in the exported markdown documents. +\end_layout + +\begin_layout Subsubsection +pspm_doc +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_help +\family default + is used to generate the help text of a specific function into a markdown document. + To use +\family typewriter +pspm_help +\family default + for generating help text, + the easiest way is to run +\family typewriter +pspm_help('pspm_glm') +\family default +directly in the command line window, + then the help text from +\family typewriter +pspm_glm +\family default + will be generated as a markdown file in the current folder. + The variable +\begin_inset Quotes eld +\end_inset + +options +\begin_inset Quotes erd +\end_inset + + can be customised for specifying the location, + for example. +\end_layout + +\begin_layout Subsubsection +pspm_doc_gen +\end_layout + +\begin_layout Standard +The function +\family typewriter +pspm_text +\family default + handles the text of warning messages in PsPM. + Any help text that is used in PsPM is encouraged to be written in +\family typewriter +pspm_text +\family default + and called when it is to be displayed. + This is to help make GUI help text and warning messages consistent throughout PsPM. + When PsPM is started, + the function +\family typewriter +pspm_text +\family default + will create a file +\family typewriter +pspm_text.mat +\family default + that contains such text. + When the GUI or other places of PsPM require displaying such text, + PsPM will read text from this +\family typewriter +pspm_text.mat +\family default + and then display text at the corresponding places. + When PsPM quits, + the file +\family typewriter +pspm_text.mat +\family default + will be deleted. +\end_layout + +\begin_layout Subsection +Format +\end_layout + +\begin_layout Subsubsection +Typical example +\end_layout + +\begin_layout LyX-Code +\noindent +● Description +\end_layout + +\begin_layout LyX-Code +\noindent +General introduction of the function. +\end_layout + +\begin_layout LyX-Code +\noindent +● Format +\end_layout + +\begin_layout LyX-Code +\noindent + [output1, + output2, + output3] = pspm_xxx(varargin); +\end_layout + +\begin_layout LyX-Code +\noindent + [output1, + output2, + output3] = pspm_xxx(input1, + input2); +\end_layout + +\begin_layout LyX-Code +\noindent +● Arguments +\end_layout + +\begin_layout LyX-Code +\noindent + * input1 : + description of input1. +\end_layout + +\begin_layout LyX-Code +\noindent + * input2 : + description of input2. +\end_layout + +\begin_layout LyX-Code +\noindent + ┌─input3 +\end_layout + +\begin_layout LyX-Code +\noindent + ├─.subfield1 : + description of subfield1. +\end_layout + +\begin_layout LyX-Code +\noindent + └─.subfield2 : + description of subfield2. +\end_layout + +\begin_layout LyX-Code +\noindent +● Outputs +\end_layout + +\begin_layout LyX-Code +\noindent + * output1 : + description of output1. +\end_layout + +\begin_layout LyX-Code +\noindent + * output2 : + description of output2. +\end_layout + +\begin_layout LyX-Code +\noindent + ┌─output3 +\end_layout + +\begin_layout LyX-Code +\noindent + ├─.subfield1 : + description of subfield1. +\end_layout + +\begin_layout LyX-Code +\noindent + └─.subfield2 : + description of subfield2. +\end_layout + +\begin_layout LyX-Code +\noindent +● Developer's notes +\end_layout + +\begin_layout LyX-Code +\noindent + A few sentences of technical information for this function. +\end_layout + +\begin_layout LyX-Code +\noindent +● History +\end_layout + +\begin_layout LyX-Code +\noindent + Introduced in PsPM version 7.0. +\end_layout + +\begin_layout LyX-Code +\noindent + Written in 2024 by Developer A (University). +\end_layout + +\begin_layout Subsubsection +Index of commonly used symbols +\end_layout + +\begin_layout Description +● Used for leading new sessions, + such as +\begin_inset Quotes eld +\end_inset + +Description +\begin_inset Quotes erd +\end_inset + +. +\end_layout + +\begin_layout Description +* Used for listing variables. +\end_layout + +\begin_layout Description +: + Used for dividing variables and their descriptions. +\end_layout + +\begin_layout Description +┌ Table symbols are used for structs. + Because structs often have multiple levels of subfields, + please make sure +\begin_inset Quotes eld +\end_inset + +┌ +\begin_inset Quotes erd +\end_inset + + leads to the name of the struct, + +\begin_inset Quotes eld +\end_inset + +├ +\begin_inset Quotes erd +\end_inset + + leads to the first to the last but one subfield, + and +\begin_inset Quotes eld +\end_inset + +└ +\begin_inset Quotes erd +\end_inset + + leads to the last subfield. +\end_layout + +\begin_layout Standard +\begin_inset Newpage pagebreak +\end_inset + + +\end_layout + +\begin_layout Section +Data formats +\end_layout + +\begin_layout Subsection +Supported channel types +\end_layout + +\begin_layout Standard +\noindent +\align center +\begin_inset Tabular + + + + + + + + + + + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Data format +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +SCR +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +ECG +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Heart Rate +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Heart Beat +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Heart Period +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Respiration +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Pupil Size +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Marker +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Custom +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Sound channel +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Pulse oxymeter +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Gaze x/y, + l/r +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +CED Spike +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +MATLAB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Text +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Biopach AcqKnowledge +\begin_inset Foot +status open + +\begin_layout Plain Layout +Biopach Acqknowledge is supported by both PsPM's internal importing function and the python package +\begin_inset Quotes eld +\end_inset + +Bioread +\begin_inset Quotes erd +\end_inset + +. + However, + only Biopach AcqKnowledge that is of a version no later than version 3.9.0 is supported by PsPM's internal function. + Any version of Biopach AcqKnowledge is supported by the python package +\begin_inset Quotes eld +\end_inset + +Bioread +\begin_inset Quotes erd +\end_inset + +. +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Biopac AcqKnowledge (exported) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Labchart (any Version, + Windows only) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Labchart exported +\end_layout + +\begin_layout Plain Layout +( +\begin_inset Formula $\leq$ +\end_inset + + v7.1) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Labchart exported +\end_layout + +\begin_layout Plain Layout +( +\begin_inset Formula $\geq$ +\end_inset + + v7.2) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +VarioPort +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Biograph Infiniti (exported) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Mindmedia Biotrace (exported) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Brain Vision +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Windaq (wdq) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Observer XT compatible +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +NeuroScan +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +BioSemi +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Eyelink +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +European Data Format +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Philips Scanphyslog +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +SMI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +ViewPoint +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsection +Further settings +\end_layout + +\begin_layout Standard +\align center +\begin_inset Tabular + + + + + + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Data format +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Datatype +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +File extension +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Manufacturer +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Import multiple channels +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Search channel names +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Automarker +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Ask for sampling rate +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +CED Spike +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +spike +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.smr +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +CED +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +CED Spike +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +spike +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.smrx +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +CED +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +MATLAB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +mat +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.mat +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Text +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +txt +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.txt +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Biopach AcqKnowledge ( +\begin_inset Formula $\leq$ +\end_inset + + v3.9.0) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +acq +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.acq +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Biopac +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Biopac AcqKnowledge (exported) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +acqmat +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.mat +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Biopac +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Labchart (any Version, + Windows only) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +labchart +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.adicht +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +ADInstruments +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Labchart exported +\end_layout + +\begin_layout Plain Layout +( +\begin_inset Formula $\leq$ +\end_inset + + v7.1) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +labchartmat_ext +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.mat +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +ADInstruments +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Labchart exported +\end_layout + +\begin_layout Plain Layout +( +\begin_inset Formula $\geq$ +\end_inset + + v7.2) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +labchartmat_in +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.mat +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +ADInstruments +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +VarioPort +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +vario +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.vpd +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Becker MediTec +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Biograph Infiniti (exported) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +biograph +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.txt +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Thought Technology +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Mindmedia Biotrace (exported) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +biotrace +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.txt +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +MindMedia +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Brain Vision +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +brainvision +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.eeg +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +BrainProducts +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Windaq (wdq) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +windaq +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.wdq +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Dataq +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Observer XT compatible +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +observer +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.any +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Noldus +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +NeuroScan +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +cnt +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.cnt +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +BioSemi +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +biosemi +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.bdf +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Eyelink +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +txt +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.asc +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +European Data Format +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +edf +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.edf +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +European Data Format +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Philips Scanphyslog +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +txt +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.log +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Philips +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +SMI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +txt +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.txt +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +SensoMotoric Instruments +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +ViewPoint +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +txt +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +.txt +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Arrington Research +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✓ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +Note: + Automarkers means no channel number has to be specified because markers are always at the same place. +\end_layout + +\begin_layout Standard +\begin_inset Newpage pagebreak +\end_inset + + +\end_layout + +\begin_layout Section +GUI +\end_layout + +\begin_layout Quote +Contributed by Gabriel Gräni and Teddy Zhao. +\end_layout + +\begin_layout Quote +Revised by Teddy Zhao in Feburary 2022. +\end_layout + +\begin_layout Subsection +MATLABbatch: + Getting started +\end_layout + +\begin_layout Enumerate +Add the trunk folder to the MATLAB path. +\end_layout + +\begin_layout Enumerate +Type +\family typewriter +pspm_init +\family default + into the command window (after the execution of the command the folders +\family typewriter +pspm_cfg +\family default + and MATLABbatch should be added to the MATLAB path) +\end_layout + +\begin_layout Enumerate +Start MATLABbatch by the typing +\family typewriter +cfg_ui +\family default + into the command window +\end_layout + +\begin_layout Enumerate +If the item PsPM exists in the menu bar of MATLABbatch you can skip steps 5 to 7 and continue at step 8 +\end_layout + +\begin_layout Enumerate +Select → File → Add Application +\end_layout + +\begin_layout Enumerate +Navigate to the folder +\family typewriter +pspm_cfg +\family default + on the left hand side of the window and select the file +\family typewriter +pspm_cfg.m +\family default + on the right hand side → Press the button Done +\end_layout + +\begin_layout Enumerate +A new item, + called PsPM, + will appear in the upper menu bar. +\end_layout + +\begin_layout Enumerate +By selecting PsPM the desired action can be selected (at the moment, + there is only Data Preparation → {Import, + Trim} available) +\end_layout + +\begin_layout Subsubsection +Example function: + Trim +\end_layout + +\begin_layout Standard +This example demonstrates how MATLABbatch can be used to execute a function. + For all other functions MATLABbatch behaves in the same manner. +\end_layout + +\begin_layout Itemize +Select a file by pressing the Select Files Button (under Datafile) +\end_layout + +\begin_layout Itemize +Select Reference and choose an item in the lower part of the window +\end_layout + +\begin_layout Itemize +Fill in the desired values in the fields which are marked with "<-X" +\end_layout + +\begin_layout Itemize +After you have chosen a file and filled in all values correctly, + you will see a green arrow on the upper left part of the window +\end_layout + +\begin_layout Itemize +By pressing on the green arrow the selected file will be trimmed according to the filled in values +\end_layout + +\begin_layout Subsubsection +Path definition +\end_layout + +\begin_layout Standard +Since version 7.0, + +\family typewriter +pspm_init +\family default + will conttol the path of PsPM by temporarily freezing the unrelated paths. + This is because users reported that they had pre-defined paths and these paths caused issues when running PsPM. + The current solution is, + PsPM will remember the paths that users have defined but are not used by PsPM, + and it will remove such paths from MATLAB before starting up PsPM. + Then PsPM will load its own required paths to MATLAB and check these paths can work properly. + After running PsPM, + if users would like to exit from PsPM, + PsPM will remove its own paths and added back the users' defined paths to MATLAB. +\end_layout + +\begin_layout Standard +The paths required for running PsPM are +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm/pspm_cfg +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm/ext/spm +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm/ext/matlabbatch +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm/ext/matlabbatch/cfg_basicio +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm/ext/vba +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm/ext/vba/subfunctions +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm/ext/vba/stats&plots +\end_layout + +\begin_layout Subsection +MATLABbatch: + How to +\end_layout + +\begin_layout Subsubsection +Preliminaries +\end_layout + +\begin_layout Itemize +Add folder of MATLABbatch to the MATLAB path +\end_layout + +\begin_layout Itemize +Add first application and then load the batch in order to execute a function +\end_layout + +\begin_layout Subsubsection +Some notes for creating a new application +\end_layout + +\begin_layout Itemize +Leafs (items) are specified first +\end_layout + +\begin_layout Itemize +Assigning child items to +\family typewriter +.val +\family default + or +\family typewriter +.values +\family default + fields of their parent items +\end_layout + +\begin_layout Itemize +Root node of a tree is specified last +\end_layout + +\begin_layout Itemize +Some examples of items: + +\begin_inset Separator latexpar +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +cfg_item +\family default + +\begin_inset Newline newline +\end_inset + + +\family typewriter + +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +item1= cfg_item; + % Defines generic configuration item +\end_layout + +\begin_layout Plain Layout + +item1.name= `Def 1'; + % The display name +\end_layout + +\begin_layout Plain Layout + +item1.tag = `def1'; + % The name appearing in the harvested job +\end_layout + +\begin_layout Plain Layout + +% structure. + This name must be unique +\end_layout + +\begin_layout Plain Layout + +% among all items in the val field of the +\end_layout + +\begin_layout Plain Layout + +% superior node +\end_layout + +\begin_layout Plain Layout + +item1.val = {true}; + % Value of item (optional) +\end_layout + +\begin_layout Plain Layout + +item1.help = {`Help...'}; + % Help text +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Itemize + +\family typewriter +cfg_entry +\family default + +\begin_inset Newline newline +\end_inset + + +\family typewriter + +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +entry1 = cfg_entry; + % Defines entry configuration item +\end_layout + +\begin_layout Plain Layout + +entry1.name = `Input'; + +\end_layout + +\begin_layout Plain Layout + +entry1.tag = `input'; + +\end_layout + +\begin_layout Plain Layout + +entry1.strtye = `r'; + % Type of values which can be entered +\end_layout + +\begin_layout Plain Layout + +entry1.num = [1 1]; + % Expected dimension of the input +\end_layout + +\begin_layout Plain Layout + +entry1.help = {`Help...'}; + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Itemize + +\family typewriter +cfg_choice +\family default + +\begin_inset Newline newline +\end_inset + + +\family typewriter + +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +choice = cfg_item; + % Defines choice configuration item +\end_layout + +\begin_layout Plain Layout + +choice.name = `Choice'; +\end_layout + +\begin_layout Plain Layout + +choice.tag = `choice'; +\end_layout + +\begin_layout Plain Layout + +choice.values = {item1, + entry1}; + % Defines which items will be +\end_layout + +\begin_layout Plain Layout + +% selectable in the choice menu. + +\end_layout + +\begin_layout Plain Layout + +choice.help = {`Help...'}; + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Itemize + +\family typewriter +cfg_exbranch +\family default + +\begin_inset Newline newline +\end_inset + + +\family typewriter + +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +fct = cfg_exbranch; + % Defines the branch that has information +\end_layout + +\begin_layout Plain Layout + +% about how to run this module fct.name = `Trim'; + +\end_layout + +\begin_layout Plain Layout + +fct.tag = `trim'; + +\end_layout + +\begin_layout Plain Layout + +fct.val = {choice}; + % The items that belong to this branch. + +\end_layout + +\begin_layout Plain Layout + +% All items must be filled before this +\end_layout + +\begin_layout Plain Layout + +% branch can run or produce virtual +\end_layout + +\begin_layout Plain Layout + +% outputs +\end_layout + +\end_inset + + +\begin_inset Newline newline +\end_inset + + +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +fct.prog = @cfg_run_fct; + % A function handle that will be called +\end_layout + +\begin_layout Plain Layout + +% with the harvested job to run the +\end_layout + +\begin_layout Plain Layout + +% computation +\end_layout + +\begin_layout Plain Layout + +trim.vout = @cfg_vout_fct; + % A function handle that will be +\end_layout + +\begin_layout Plain Layout + +% called with the harvested job to +\end_layout + +\begin_layout Plain Layout + +% determine virtual outputs +\end_layout + +\begin_layout Plain Layout + +trim.help = {Help...'}; + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Itemize +There exists a number of other item classes. + Here is a list of the most important classes: + +\family typewriter +cfg_item +\family default +, + +\family typewriter +cfg_entry +\family default +, + +\family typewriter +cfg_choice +\family default +, + +\family typewriter +cfg_menu +\family default +, + +\family typewriter +cfg_exbranch +\family default +, + +\family typewriter +cfg_files +\family default +, + +\family typewriter +cfg_branch +\family default +, + +\family typewriter +cfg_repeat +\family default +. +\begin_inset Newline newline +\end_inset + +For more information call the help function in MATLAB (e.g. + +\family typewriter +help cfg_item +\family default +) +\end_layout + +\end_deeper +\begin_layout Subparagraph +Note +\end_layout + +\begin_layout Standard +The inputs to each module have to be described in a tree-like structure. +\end_layout + +\begin_layout Standard +During data entry, + there is no way to change the tree structure based on input data. + Add application to the configuration tree by default +\end_layout + +\begin_layout Subsubsection +Add application to the configuration tree by default +\end_layout + +\begin_layout Standard +In the following it is shown how an application can be added to the menu bar of MATLABbatch by default (without adding it every time MATLABbatch is started) +\end_layout + +\begin_layout Itemize +Start MATLABbatch and add the appliaction +\family typewriter +cfg_confgui +\family default + in the folder +\family typewriter +MATLABbatch/cfg_confgui +\family default + . +\end_layout + +\begin_layout Itemize +Put Generate code into the Module list by selecting ConfGUI → Generate code in the menu bar +\end_layout + +\begin_layout Itemize +Fill out all the input fields on the right side: + +\begin_inset Separator latexpar +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Itemize +Output filename: + This file will contain the whole menu structure, + validity constraints and links to run time code of the appliaction. +\end_layout + +\begin_layout Itemize +Output directory: + All files which are created by the ConfGUI will be stored into this directory (chose a directory which is added to the MATLAB path) +\end_layout + +\begin_layout Itemize +Root node of config: + Name of the root node of the appliaction's configuration tree +\end_layout + +\begin_layout Itemize +Options: + +\begin_inset Separator latexpar +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Enumerate +Create Defaults File: + +\family typewriter +Yes +\end_layout + +\begin_layout Enumerate +Create +\family typewriter +mlbatch_appcfg +\family default + File: + +\family typewriter +Yes +\end_layout + +\begin_layout Enumerate +Create Code for +\family typewriter +addpath(): + No +\family default + +\end_layout + +\end_deeper +\end_deeper +\begin_layout Itemize +Finally press the green arrow on the upper left side of the batch editor +\end_layout + +\begin_layout Itemize +As no error occurred 3 new files ( +\family typewriter +{Output filename}.m +\family default +, + +\family typewriter +{Output filename}_def.m +\family default +, + +\family typewriter +cfg_mlbatch_appcfg.m +\family default +) should be created and added into the folder { +\family typewriter +Output directory +\family default +}. +\end_layout + +\begin_layout Itemize +Each time MATLABbatch is started, + it will search for any +\family typewriter +cfg_mlbatch_appcfg.m +\family default + file (this file contains the names of the configuration files) and will add the corresponding application to the batch editor. + +\end_layout + +\begin_layout Subsubsection +Add modules to module list +\end_layout + +\begin_layout Subparagraph +Example +\end_layout + +\begin_layout Standard +Module Import and Trim will be added to the module list +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard + +\family typewriter +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +arg1 = `scr.prep.import_data'; + +\end_layout + +\begin_layout Plain Layout + +arg2 = `scr.prep.trim'; + +\end_layout + +\begin_layout Plain Layout + +mod_cfg_id1 = cfg_util(`tag2mod_cfg_id',arg1); + +\end_layout + +\begin_layout Plain Layout + +mod_cfg_id2 = cfg_util(`tag2mod_cfg_id',arg2); + +\end_layout + +\begin_layout Plain Layout + +cjob = cfg_util(`initjob'); + +\end_layout + +\begin_layout Plain Layout + +mod_job_id1 = cfg_util(`addtojob', + cjob, + mod_cfg_id1); + +\end_layout + +\begin_layout Plain Layout + +mod_job_id2 = cfg_util(`addtojob', + cjob, + mod_cfg_id2); + +\end_layout + +\begin_layout Plain Layout + +cfg_util(`harvest', + cjob, + mod_job_id1); + +\end_layout + +\begin_layout Plain Layout + +cfg_util(`harvest', + cjob, + mod_job_id2); + +\end_layout + +\begin_layout Plain Layout + +cfg_ui(`local_showjob', + cfg_ui, + cjob); + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Changes +\end_layout + +\begin_layout Itemize +In the function +\family typewriter +private/cfg_onscreen +\family default + at line 36 figure(fg); + is commented out in order to prevent the appearance of the GUI for a short time if the function +\family typewriter +cfg_ui(`Visible', + `off') +\family default + is called. +\end_layout + +\begin_layout Subsection +MATLABbatch: + changing help texts and fieldnames +\end_layout + +\begin_layout Subsubsection +File structure of MATLABbatch GUI +\end_layout + +\begin_layout Standard +There exist two files per function: + 1 configuration file and 1 run file. + The configuration file defines the structure of the corresponding function in the MATLABbatch GUI whereas the run file firstly gathers all entered values and secondly calls the corresponding SCR function. + Both types of files are located in the subfolder +\family typewriter +pspm_cfg +\family default +. + The name of a configuration or a run file consists of two parts. + The prefix of a configuration filename is called +\family typewriter +pspm_cfg_ +\family default + whereas the filename of a run file begins with +\family typewriter +pspm_cfg_run +\family default +. + The second part of the filename is named after the function name (eg. + for the function +\family typewriter +pspm_import.m +\family default + → +\family typewriter +pspm_cfg_import.m +\family default +, + +\family typewriter +pspm_cfg_run_import.m +\family default +). +\end_layout + +\begin_layout Subsubsection +Edit help texts and fieldname +\end_layout + +\begin_layout Standard +In order to change any help text or fieldname in a MATLABbatch GUI function the corresponding configuration file has to be opened. + For each item in a MATLABbatch GUI function a struct variable which contains several struct fields is defined in the configuration file. + +\end_layout + +\begin_layout Itemize +Help text The field +\family typewriter +.help +\family default + defines the help text of the item which can be edited in order to change the help text. + As soon as MATLABbatch has been closed and opened again, + the changes in the help text will be visible in MATLABbatch GUI. +\end_layout + +\begin_layout Itemize +Fieldname The fieldname of an MATLABbatch GUI item is defined by the struct field +\family typewriter +.tag +\family default +. + In case a fieldname of an item should be changed be careful to verify if no other item, + which has the same root node, + hold the same fieldname. + Otherwise MATLABbatch will not work properly. + After the fieldname of an item has been changed the run file ( +\family typewriter +pspm_cfg_run_functionname.m +\family default +) of the corresponding function has to be adapted as well in order to ensure that the function call in the run file is done properly. +\end_layout + +\begin_layout Subsection +Python support +\end_layout + +\begin_layout Standard +PsPM provides some features that are enabled by using Python packages, + namly HeartPy and Bioread, + and descriptions in the GUI. + This is controled through +\family typewriter +pspm_cfg_python +\family default +. + Any PsPM functions or features that require Python-enabled features need to call +\family typewriter +pspm_cfg_python +\family default + to show Python path specification in the GUI, + so that users can select appropriate Python location for calling the packages. +\end_layout + +\begin_layout Subsubsection +Python packages +\end_layout + +\begin_layout Standard +The Python packages that are used by PsPM are Bioread and HeartPy, + until PsPM version 7.0. + This is to support the features of importing .acq data for Bioread and process PPG data for HeartPy. + The tested competible version of these packages are Python 3.11, + Bioread 3.0.1, + and HeartPy 1.2.7. + Because some packages may have dependence on other packages such as numpy, + here is a list of Python packages that work on both Windows and macOS +\end_layout + +\begin_layout Standard +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +Pillow==10.1.0 +\end_layout + +\begin_layout Plain Layout + +aigpy==2022.7.8.1 +\end_layout + +\begin_layout Plain Layout + +bioread==3.0.1 +\end_layout + +\begin_layout Plain Layout + +certifi==2023.11.17 +\end_layout + +\begin_layout Plain Layout + +charset-normalizer==3.3.2 +\end_layout + +\begin_layout Plain Layout + +colorama==0.4.6 +\end_layout + +\begin_layout Plain Layout + +contourpy==1.2.0 +\end_layout + +\begin_layout Plain Layout + +cycler==0.12.1 +\end_layout + +\begin_layout Plain Layout + +docopt==0.6.2 +\end_layout + +\begin_layout Plain Layout + +fonttools==4.45.1 +\end_layout + +\begin_layout Plain Layout + +heartpy==1.2.7 +\end_layout + +\begin_layout Plain Layout + +idna==3.4 +\end_layout + +\begin_layout Plain Layout + +kiwisolver==1.4.5 +\end_layout + +\begin_layout Plain Layout + +matplotlib==3.8.2 +\end_layout + +\begin_layout Plain Layout + +mutagen==1.47.0 +\end_layout + +\begin_layout Plain Layout + +numpy==1.26.2 +\end_layout + +\begin_layout Plain Layout + +packaging==23.2 +\end_layout + +\begin_layout Plain Layout + +pip==24.0 +\end_layout + +\begin_layout Plain Layout + +prettytable==3.9.0 +\end_layout + +\begin_layout Plain Layout + +pycryptodome==3.19.0 +\end_layout + +\begin_layout Plain Layout + +pydub==0.25.1 +\end_layout + +\begin_layout Plain Layout + +pyparsing==3.1.1 +\end_layout + +\begin_layout Plain Layout + +python-dateutil==2.8.2 +\end_layout + +\begin_layout Plain Layout + +requests==2.31.0 +\end_layout + +\begin_layout Plain Layout + +scipy==1.11.4 +\end_layout + +\begin_layout Plain Layout + +setuptools==68.2.2 +\end_layout + +\begin_layout Plain Layout + +six==1.16.0 +\end_layout + +\begin_layout Plain Layout + +urllib3==2.1.0 +\end_layout + +\begin_layout Plain Layout + +wcwidth==0.2.12 +\end_layout + +\begin_layout Plain Layout + +wheel==0.41.3 +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +HeartPy for processing PPG data +\end_layout + +\begin_layout Standard +The package +\family typewriter +HeartPy +\family default + (stylised to be in line with its official website) (https://pypi.org/project/heartpy/) is designed for analysing PPG signals and used for processing PPG data in PsPM. +\end_layout + +\begin_layout Standard +The process of using HeartPy to process PPG data is described as following. + Initially, + PsPM will check if python has been installed in the computer, + and this is done by using the function +\family typewriter +pspm_check_python +\family default +. + In this process, + +\family typewriter +pspm_check_python +\family default + requires a path of python that is provided by the user so that it can determine if python has been installed there. + Secondly, + PsPM checks if HeartPy package has been installed in the defined python path, + and this is handled with +\family typewriter +pspm_check_python_modules +\family default +. + If both python and +\family typewriter +HeartPy +\family default + have been installed, + it is then safe to use function family +\family typewriter +py.heartpy +\family default + to do analysis. + The details of available functions that are provided by +\family typewriter +HeartPy +\family default + can be found at https://python-heart-rate-analysis-toolkit.readthedocs.io/en/latest/heartpy.heartpy.html. + The details about how PPG data are processed can be found at +\family typewriter +pspm_convert_ppg2hb +\family default +. +\end_layout + +\begin_layout Subsubsection +Bioread for importing biopac data +\end_layout + +\begin_layout Standard +The package +\family typewriter +Bioread +\family default + (https://pypi.org/project/bioread/) supports reading biopac files in any version, + and it has been included in PsPM for importing biopac files since version 7.0. + +\family typewriter +Bioread-based +\family default + importing is set as an alternative method in parallel to previous methods, + and it is managed in +\family typewriter +acqread_python +\family default +. + Users have to specify the functionality of importing biopac data with python to use this method, + but they can also call the function +\family typewriter +acqread_python +\family default + in command line or scripts to directly use this feature. + The method of checking python and +\family typewriter +Bioread +\family default + is identical to what has been checked for +\family typewriter +HeartPy +\family default +. + The generic flowchart of +\family typewriter +acqread_python +\family default + is to get the main content and other metadata from original files and then save such information to the corresponding places for meeting PsPM's data storage requirements. + Further information is available in +\family typewriter +acqread_python +\family default + that is under the path +\family typewriter +src/Import/acq +\family default +. +\end_layout + +\begin_layout Subsection +GUI development progress +\end_layout + +\begin_layout Standard +MATLAB GUIDE +\begin_inset Flex URL +status open + +\begin_layout Plain Layout + +https://uk.mathworks.com/help/matlab/migrate-guide-apps.html +\end_layout + +\end_inset + + was originally used as the framework for designing the GUI of PsPM. + However, + the framework suffers from the risk that plots may be unexpectedly displayed on such figures since they need to be called by users' command lines. + At the same time, + GUIDE based GUI will lose support from Mathworks in a future release of MATLAB. + Consequently, + PsPM is currently slowly being migrated to the new UI designing framework, + MATLAB AppDesigner. + Instead of creating .fig files, + the new AppDesigner frameworks will create .mlapp files. + The +\family typewriter +.mlapp +\family default + file can be created natively through the new MATLAB GUI guide. + Alternatively, + it can be generated by converting the classic GUIDE based .fig file through the feature +\shape italic +migration +\shape default +. +\end_layout + +\begin_layout Standard +The main GUI has been recreated by using AppDesigner in PsPM version 6.1, + where the function lists inherted from the legacy of GUIDE-based GUI. + The code has been re-sorted out in MATLAB by following the coding style of AppDesigner. + A typical button corresponds to the function shown below +\begin_inset Newline linebreak +\end_inset + + +\family typewriter + +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +function +\end_layout + +\begin_layout Plain Layout + +button_Callback(app, + event) +\end_layout + +\begin_layout Plain Layout + +switch event.Value +\end_layout + +\begin_layout Plain Layout + +case 'A' +\end_layout + +\begin_layout Plain Layout + +action; + +\end_layout + +\begin_layout Plain Layout + +end +\end_layout + +\begin_layout Plain Layout + +end +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +The new GUI is currently using the colour +\family typewriter +#7f2534 +\family default + for stylishing. + The main typeface for UI design is Segoe UI, + San Francisco (or Helvetica Neue for Yosemite, + Lucida Grande for pre-Yosemite) and DejaVu Sans for Windows, + macOS, + and Linux, + respectively. +\end_layout + +\begin_layout Standard +\begin_inset Newpage pagebreak +\end_inset + + +\end_layout + +\begin_layout Section +Test environment +\end_layout + +\begin_layout Quote +Contributed by Linus Rüttimann, + Tobias Moser and Teddy Zhao. +\end_layout + +\begin_layout Quote +Revised and updated by Teddy Zhao in Feburary 2022. +\end_layout + +\begin_layout Subsubsection +Unittest: + General implementation +\end_layout + +\begin_layout Standard +In PsPM the MATLAB Unit Testing Framework is used for testing of functions. + For each tested function there is a MATLAB class with the name +\family typewriter +functionname_test +\family default +, + which contains the unittests for that specific function. + Additionally there is a documentation page for each of the test classes, + where information about the unittests can be found. +\end_layout + +\begin_layout Standard +To run the unittests of a test class, + an object of the class has to be created +\end_layout + +\begin_layout Standard +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +testCase = functionname_test. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +where +\family typewriter +testCase +\family default + is an arbitrary object name and +\family typewriter +funtionname_test +\family default + is the name of a test class. + Then all the unittest that are contained in the test class can be run with +\end_layout + +\begin_layout Standard + +\family typewriter +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +testCase.run. +\end_layout + +\end_inset + + +\family default +A specific unittest can be run with +\end_layout + +\begin_layout Standard + +\family typewriter +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +testCase.run(unittest_name'). +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Remember that a new test class object must be generated each time the test class has been changed. +\end_layout + +\begin_layout Subsubsection +parameterised test classes +\end_layout + +\begin_layout Standard +Parmeterised test classes is a feature provided by the MATLAB test case class. + A test class is parameterised when it has +\end_layout + +\begin_layout Itemize +Test parameters defined (within the property section) +\end_layout + +\begin_layout Itemize +Test methods implementing the defined test parameters +\end_layout + +\begin_layout Standard +Each function implementing test parameters will be called multiple times with each possible parameter combination (which is determined by MATLAB). + Thus parameterised classes allow to write single tests for different parameter combinations. + If one of the following test cases is a parameterised test class, + it will be mentioned accordingly. +\end_layout + +\begin_layout Subsection +Align Channels +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_align_channels_test +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + data, + duration] = pspm_align_channels(data, + induration) +\end_layout + +\begin_layout Subsubsection +Setup +\end_layout + +\begin_layout Standard +This test uses data stored in +\family typewriter +ImportTestData/ecg2hb/tpspm_s102_s1.mat +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_input(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings given invalid inputs. +\end_layout + +\begin_layout Paragraph +Lower optional duration +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +lower_optional_duration(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Passes an optional duration that is less than the maximum duration of all channels in the input to +\family typewriter +pspm_align_channels +\family default +. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Assert that lower optional duration has no effect on the output. +\end_layout + +\begin_layout Enumerate +Check if all of the returned channels have the same duration. +\end_layout + +\begin_layout Paragraph +Same optional duration +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +same_optional_duration(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Passes an optional duration that is equal to the maximum duration of all channels in the input to +\family typewriter +pspm_align_channels +\family default + and does the exact same checks as in lower duration case. +\end_layout + +\begin_layout Paragraph +Higher optional duration +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +higher_optional_duration(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Passes an optional duration that is higher than the maximum duration of all channels. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Assert that durations of all returned channels is the same as the passed optional duration. +\end_layout + +\begin_layout Paragraph +Max duration is passed in marker channel +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +max_duration_is_given_in_events(this) +\end_layout + +\begin_layout Subparagraph + +\series bold +Description +\end_layout + +\begin_layout Standard +Passes the maximum duration in marker channel to pspm_align_channels. +\end_layout + +\begin_layout Subparagraph + +\series bold +Tests +\end_layout + +\begin_layout Enumerate +Assert that all returned channels are aligned to the maximum duration passed in marker channel. +\end_layout + +\begin_layout Paragraph +Various case checks +\end_layout + +\begin_layout Subparagraph +Function names +\end_layout + +\begin_layout Description + +\family typewriter +only_one_channel_longer_others_same(this) +\end_layout + +\begin_layout Description + +\family typewriter +only_one_channel_shorter_others_same(this) +\end_layout + +\begin_layout Description + +\family typewriter +increasing_channel_lengths(this) +\end_layout + +\begin_layout Description + +\family typewriter +two_same_others_shorter(this) +\end_layout + +\begin_layout Subparagraph + +\series bold +Description +\end_layout + +\begin_layout Standard +In each of these cases check if the returned channels have the same duration that is equal to the maximum duration of all input channels. +\end_layout + +\begin_layout Subsection +Butter +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_butter_test +\end_layout + +\begin_layout Subparagraph + +\series bold +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + b, + a] = pspm_butter(order, + freqratio, + pass) +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_input(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the input arguments are invalid and if the signal processing toolbox is installed. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_butter() [no input] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_butter(1,1,`abc') [pass not equal to `high' or `low'] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_butter(2,1) [`Signal processing toolbox is missing' #1] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:toolbox_missing +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_butter(1,1) [`Signal processing toolbox is missing' #2] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:toolbox_missing +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsection +pspm_bf +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_bf_test +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +[bs, + x] = pspm_bf_ +\end_layout + +\begin_layout Subsubsection +Setup +\end_layout + +\begin_layout Standard +This test class is parameterised. +\end_layout + +\begin_layout Paragraph + +\series bold +Method setup parameters +\end_layout + +\begin_layout Standard +These parameters define which function should be tested +\series bold +. +\end_layout + +\begin_layout Description + +\series bold +Basis +\begin_inset space \space{} +\end_inset + +function +\series default +Specifies the basis functions to test (without the +\family typewriter +pspm_bf_ prefix +\family default +). + The current basis function to test is then called via +\family typewriter +this.bf() +\family default +; +\end_layout + +\begin_layout Paragraph +Test parameters +\end_layout + +\begin_layout Standard +These are parameters which define what kind of data or option should be passed to each basis function. +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Time res log +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Specifies for the basic test different time resolutions (argument +\family typewriter +`td' +\family default +) which a basis function should be able to handle (as long as +\family typewriter +td <= duration +\family default +). + The values are logarithmic and have to be translated before passed to the basis function. +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_input(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the input arguments are invalid. + +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +this.bf() [no parameters] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +this.bf(dur+1) [pass `td' > duration of function] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +this.bf(0) [invalid time resolution] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Basic +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_basic(this, + time_res_log) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test for different requirements to verify whether the current basis function is valid or not. +\end_layout + +\begin_layout Subparagraph* +Tests +\end_layout + +\begin_layout Enumerate +Test with +\family typewriter +td = 0.1 +\family default +, + verify that no warning is issued and determine the duration +\end_layout + +\begin_layout Enumerate +Test with +\family typewriter +td = 0.01 +\family default + and check if the new duration is equal to the duration calculated before. +\end_layout + +\begin_layout Enumerate +Test if function runs through without warning and that the time vector begins at +\family typewriter +<= 0 +\family default +. +\end_layout + +\begin_layout Enumerate +Test if the function runs through without warning with +\family typewriter +td = 10^time_res_log +\family default + (as long as +\family typewriter +td < duration +\family default +) +\end_layout + +\begin_layout Subsection +pspm_convert_unit +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_convert_unit_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + converted] = pspm_convert_unit(data, + from, + to) +\end_layout + +\begin_layout Subsubsection +Setup +\end_layout + +\begin_layout Subparagraph +Constants +\end_layout + +\begin_layout Standard + +\family typewriter +inch_to_cm = 2.54 +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_input(testCase) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Pass invalid from or to metrics and check if warnings are issued. +\end_layout + +\begin_layout Paragraph +Valid input +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +valid_input(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Pass various valid inputs and compare results to manually calculated ones. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +If empty input data is passed, + result is also empty. +\end_layout + +\begin_layout Enumerate +Convert single cm value to m. +\end_layout + +\begin_layout Enumerate +Various unit conversion checks: +\end_layout + +\begin_deeper +\begin_layout Enumerate +Conversion between same units ( +\family typewriter +cm +\family default + to +\family typewriter +cm +\family default +) +\end_layout + +\begin_layout Enumerate + +\family typewriter +mm +\family default + to +\family typewriter +km +\family default + and +\family typewriter +km +\family default + to +\family typewriter +mm +\family default + conversions +\end_layout + +\begin_layout Enumerate + +\family typewriter +inch +\family default + to +\family typewriter +cm +\family default + conversions +\end_layout + +\end_deeper +\begin_layout Enumerate +Negative value conversions +\end_layout + +\begin_layout Enumerate +Convert single dimensional array with multiple elements. +\end_layout + +\begin_layout Enumerate +Convert each element in 3D array. +\end_layout + +\begin_layout Subsection +pspm_ecg2hb +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_ecg2hb_test +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +[sts,pt_debug] = pspm_ecg2hb(fn, + chan, + options) +\end_layout + +\begin_layout Subsubsection +Setup +\end_layout + +\begin_layout Subparagraph +Constants +\end_layout + +\begin_layout Itemize + +\family typewriter +testdata{0}.chan_struct = struct(`nr', + 1, + `name', + `ecg'); +\end_layout + +\begin_layout Itemize + +\family typewriter +testdata{0}.filename = `ImportTestData +\backslash +ecg2hb +\backslash +test_ecg77.mat'; +\end_layout + +\begin_layout Itemize + +\family typewriter +testdata{0}.num_channels = 1 +\end_layout + +\begin_layout Itemize + +\family typewriter +testdata{1}.chan_struct = struct(`nr', + 3, + `name', + `ecg'); +\end_layout + +\begin_layout Itemize + +\family typewriter +testdata{1}.filename = `ImportTestData +\backslash +ecg2hb +\backslash +tpspm_s102_s1.mat'; +\end_layout + +\begin_layout Itemize + +\family typewriter +testdata{1}.num_channels = 5 +\end_layout + +\begin_layout Itemize + +\family typewriter +backup_suffix = `_backup'; +\end_layout + +\begin_layout Itemize + +\family typewriter +options = struct(`semi', + 0); +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input arguments +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_input(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Pass invalid input arguments and check if the warnings are as expected. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_ecg2hb() [no arguments] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_ecg2hb(1) [invalid file name] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_ecg2hb(this.fn, + `bla') [invalid channel (text)] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_ecg2hb(this.fn, + 1) [invalid channel type] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:not_allowed_channeltype +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +o.twthresh = `bla'; + pspm_ecg2hb(this.fn, + this.chan.nr, + o) [invalid twthresh (text)] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +o.minHR = 202; + pspm_ecg2hb(this.fn, + this.chan.nr, + o) [invalid minHR (> default_maxHR)] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +o.minHR = 202; + o.maxHR = 19; + pspm_ecg2hb(this.fn, + this.chan.nr, + o) [invalid minHR > maxHR] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +o.maxHR = 19; + pspm_ecg2hb(this.fn, + this.chan.nr, + o) [invalid maxHR (< default_minHR)] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +o.debugmode = 5; + pspm_ecg2hb(this.fn, + this.chan.nr, + o) [invalid debugmode (not in [0,1])] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +o.semi = 5; + pspm_ecg2hb(this.fn, + this.chan.nr, + o) [invalid semi (not in [0,1])] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Valid input arguments +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +valid_input(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Pass valid input arguments and check if there are no warnings. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_ecg2hb(this.fn, + this.chan.nr, + this.options) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_ecg2hb(this.fn, + this.chan.name, + this.options) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +this.test_added_data() +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Other Methods +\end_layout + +\begin_layout Paragraph +Test for added data +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_added_data() +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Check if added hb channels show an expected behaviour. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Standard +(for each channel) +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Tested Value +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected Value +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Sampling rate +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +1 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Unit +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +'events' +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Channel type +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +'hb' +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Amount of data points in data +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +> 1 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Heartbeat indices are monotonically increasing +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +True +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Maximum number of heartbeats per second +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +< 5 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Data is distributed equally (standard deviation) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +< 2s +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Time between end of recording and last data point +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +< 60s +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsection +pspm_filtfilt +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_filtfilt_test +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +y = pspm_filtfilt(b,a,x) +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_input(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the input arguments are invalid. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_filtfilt() [no input] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_filtfilt([1:10],[1:20],[1:10]) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +[data length less than 3 times filter order] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsection +pspm_find_channel +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_find_channel_test +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +chan = pspm_find_channel(headercell, + chantype) +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input arguments +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_inputargs(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the input arguments are invalid. +\end_layout + +\begin_layout Subparagraph +Setup +\end_layout + +\begin_layout Standard + +\family typewriter +headercell = {`heart', + `scr', + `pupil'}; +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_channel(`str',`scr') [no headercell] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_channel(headercell, + `str') +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:not_allowed_channeltype +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_channel(headercell, + 4) [no string chantype] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Valid Input Arguments +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +valid_inputargs(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for correct return value if the input arguments are valid +\end_layout + +\begin_layout Subparagraph +Setup +\end_layout + +\begin_layout Standard + +\family typewriter +headercell = {`heart', + `scr', + `pupil', + `mark', + `gsr', + `eda'}; +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Exp. + Output +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_channel(headercell, + `pupil') +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +3 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_channel(headercell, + `resp') +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:no_matching_channels +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_channel(headercell, + `scr') +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +-1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:multiple_matching_channels +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_channel(headercell, + {`mark', + `str', + `bla'}) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +4 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_channel(headercell, + {`call', + `str', + `me'}) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +no matching channel, + but no warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_channel(headercell, + {`scr', + `gsr', + `eda'}) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +-1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +multiple matching channels, + but no warning +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsection +pspm_extract_segments +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_extract_segments_test +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + out] = pspm_extract_segments(varargin) +\end_layout + +\begin_layout Subsubsection +Setup +\end_layout + +\begin_layout Standard +This test class is parameterised. + For manual mode tests, + the test data is generated by the function itself and when needed, + files will be written to +\family typewriter +testdatafile.mat +\family default +. + For auto mode tests, + the test data must be in +\family typewriter +ImportTestData/fitted_models +\family default + folder with names as specified in the tests. +\end_layout + +\begin_layout Subparagraph +Test parameters +\end_layout + +\begin_layout Standard +These are parameters which define what kind of data should be passed to +\family typewriter +pspm_extract_segments +\family default + in auto mode tests and which options should be set. +\end_layout + +\begin_layout Description + +\family typewriter +nan_output +\family default + This option defines whether the user wants to output the +\family typewriter +NaN +\family default + ratios of the trials for each condition. + If so, + we values can be printed on the screen (on MATLAB command window) or written to a created file. +\end_layout + +\begin_layout Description + +\family typewriter +nan_ratio +\family default + Defines ratio of +\family typewriter +NaN +\family default + values in the generated test data +\end_layout + +\begin_layout Description + +\family typewriter +nr_trail +\family default + Number of trails in the generated test data +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_input(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the input arguments are invalid. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_extract_segments() +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_extract_segments(`a',`b') +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_extract_segments(`manual',fn,0) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_extract_segments(`manual',struct(`a',10),0,timing) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_extract_segments(`manual',[1,3],logical(32),timing) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_extract_segments(`manual',fn,`a',timing) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_extract_segments(`manual',fn,{`a'},timing) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_extract_segments(`auto',{1}) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_extract_segments(`auto',`some') +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Test manual mode with indicated length +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_manual_length(this,nr_trial,nan_ratio) +\end_layout + +\begin_layout Subparagraph +Desctiption +\end_layout + +\begin_layout Standard +Checks for equality of produced segments by +\family typewriter +pspm_extract_segments +\family default + with manually computed segments. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate segments form test data. +\end_layout + +\begin_layout Enumerate +Test if function call wirked WarningFree +\end_layout + +\begin_layout Enumerate +Test if variable +\family typewriter +segments +\family default + existis in output +\end_layout + +\begin_layout Enumerate +Test if correct number of segments were produced +\end_layout + +\begin_layout Enumerate +Test each segment holds correct data +\end_layout + +\begin_layout Paragraph +Test manual mode with durations +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_manual_duration(this,nr_trial,nan_ratio) +\end_layout + +\begin_layout Subparagraph +Desctiption +\end_layout + +\begin_layout Standard +Checks for equality of produced segments by +\family typewriter +pspm_extract_segments +\family default + with manually computed segments. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate segments form test data. +\end_layout + +\begin_layout Enumerate +Test if function call wirked WarningFree +\end_layout + +\begin_layout Enumerate +Test if variable `segments' existis in output +\end_layout + +\begin_layout Enumerate +Test if correct number of segments were produced +\end_layout + +\begin_layout Enumerate +Test each segment holds correct data +\end_layout + +\begin_layout Paragraph +Test auto mode with GLM using marker onsets +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_auto_mode_glm_with_markers(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Runs +\family typewriter +pspm_extract_segments +\family default + with a particular GLM model stored in +\end_layout + +\begin_layout Standard + +\family typewriter +ImportTestData/fitted_models +\family default + and compares the results to manually calculated results. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Test if length of the returned cell array (from now on called +\family typewriter +segments +\family default +) is the same as the number of conditions +\end_layout + +\begin_layout Enumerate +Test if shape of data arrays in each element of +\family typewriter +segments +\family default + agrees with the passed durations and number of onsets. +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +segments.trial_idx +\family default + agrees with input data. +\end_layout + +\begin_layout Enumerate +Test if statistics calculated manually from +\family typewriter +segments.data +\family default + is the same as +\family typewriter +segments.mean +\family default + and +\family typewriter +segments.std +\family default +. +\end_layout + +\begin_layout Enumerate +Compute each statistic field in each element of +\family typewriter +segments +\family default + manually using the input data and compare the results to +\family typewriter +segments +\family default +. +\end_layout + +\begin_layout Paragraph +Test auto mode with GLM using second onsets +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_auto_mode_glm_with_seconds(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Do the exact same tests as in +\family typewriter +test_auto_mode_glm_with_markers +\family default + but this time using seconds to specify onsets. +\end_layout + +\begin_layout Paragraph +Test auto mode with DCM +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_auto_mode_dcm(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Runs +\family typewriter +pspm_extract_segments +\family default + with a particular DCM model stored in +\end_layout + +\begin_layout Standard + +\family typewriter +ImportTestData/fitted_models +\family default + and compares the results to manually calculated results. + In order to get meaningful condition statistic information this test function assigns the same trial name to certain groups of trials. +\end_layout + +\begin_layout Subparagraph +Note +\end_layout + +\begin_layout Standard +Since in DCM case onsets are calculated using trial start and end seconds of DCM trials, + there is no second/marker distinction in DCM test. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Standard +Do the exact same tests as in +\family typewriter +test_auto_mode_glm_with_markers +\family default + by adapting the computation steps to DCM case. +\end_layout + +\begin_layout Subsection +pspm_find_sounds +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_find_sounds_test +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + infos] = pspm_find_sounds(file, + options) +\end_layout + +\begin_layout Subsubsection +Setup +\end_layout + +\begin_layout Standard +This test class is parameterised. + The test data is generated by the function itself and when needed, + files will be written to +\family typewriter +testdatafile.mat +\family default +. +\end_layout + +\begin_layout Subparagraph +Test parameters +\end_layout + +\begin_layout Standard +These are parameters which define what kind of data should be passed to pspm_find_sounds and which options should be set. +\begin_inset Newline newline +\end_inset + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Channel output +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Specifies whether +\family typewriter +`all' +\family default + found markers or only +\family typewriter +`corrected' +\family default + markers should be returned. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Max delay +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Varies the max delay option and defines how far away a marker at most can be. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Min delay +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Varies the min delay option and defines how far away a marker at least should be. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Threshold +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Defines the minimum size of a marker to be recognized as a marker event. + Passed in percent of the maximum amplitude of the recorded data. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Resample +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Defines whether the function should resample (and interpolate) the data to a higher sample rate in order to get more exact marker findings. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Channel action +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Defines whether a newly created marker channel should replace the existing marker channel or should be added as a new marker channel. +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_input(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the input arguments are invalid. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_sounds(`') +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:file_not_found +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_sounds(fn) [invalid pspm file] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_sounds(fn) [pspm file without a `snd' channel] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:no_sound_chan +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_sounds(fn, + o) [invalid values for positive integer fields] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_sounds(fn, + o) [invalid values for positive numeric fields] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_sounds(fn, + o) [invalid values for logic fields] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_sounds(fn, + o) [invalid channel ids for channel fields] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:out_of_range +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_sounds(fn, + o) [enabled diagnostics without a marker channel] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:no_marker_chan +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_sounds(fn, + o) [invalid values for channelaction] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_sounds(fn, + o) [invalid values for roi] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_sounds(fn, + o) [maxdelay < mindelay] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Test add channel +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_add_channel(this, + channeloutput, + max_delay, + resample, + channelaction) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test add channel with different options. + Diagnostics is always enabled, + Channel output, + Max delay, + Resample and Channel action are varied. + Once +\family typewriter +pspm_find_sounds +\family default + is complete, + the function tests if the returned data has the expected format. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate data with channel +\family typewriter +snd +\family default + and +\family typewriter +marker +\family default +; + and count amount of reference markers +\end_layout + +\begin_layout Enumerate +Set +\end_layout + +\begin_deeper +\begin_layout Enumerate + +\family typewriter +options +\family default + according to test parameters +\end_layout + +\begin_layout Enumerate + +\family typewriter +diagnostics +\family default + to +\family typewriter +1 +\end_layout + +\end_deeper +\begin_layout Enumerate +Test if function runs through without warning +\end_layout + +\begin_layout Enumerate +Test if returned data has the correct format +\end_layout + +\begin_layout Enumerate +Test if channels has been added or replaced +\end_layout + +\begin_layout Enumerate +Test if added channel has correct amount of data +\end_layout + +\begin_layout Paragraph +Test region count +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_region_count(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test region of interest in combination with expected sound count. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Enumerate +Generate data with channel `snd' and `marker' +\end_layout + +\begin_layout Enumerate +Test if function finds the function finds all markers in the whole file +\end_layout + +\begin_layout Enumerate +Test if function finds all the markers in the whole file with initial threshold 1 +\end_layout + +\begin_layout Enumerate +Test if function finds half of the markers in half of the file +\end_layout + +\begin_layout Paragraph +Test threshold +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_threshold(this, + threshold) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Vary the threshold option and test whether the functions returnes the expected data. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate data with channel +\family typewriter +`snd' +\family default + and +\family typewriter +`marker' +\end_layout + +\begin_layout Enumerate +Set +\end_layout + +\begin_deeper +\begin_layout Enumerate + +\family typewriter +threshold +\family default + according to test parameter +\end_layout + +\begin_layout Enumerate + +\family typewriter +diagnostics +\family default + to +\family typewriter +1 +\end_layout + +\end_deeper +\begin_layout Enumerate +Test if function runs through without warning +\end_layout + +\begin_layout Enumerate +Test if returned data has the correct format +\end_layout + +\begin_layout Paragraph +Test plot +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_plot(this, + threshold) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test if the plot functions returne the expected data and runs through without warning. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate data with channel +\family typewriter +snd +\family default + and +\family typewriter +marker +\end_layout + +\begin_layout Enumerate +Set +\end_layout + +\begin_deeper +\begin_layout Enumerate + +\family typewriter +plot +\family default + to +\family typewriter +1 +\end_layout + +\begin_layout Enumerate + +\family typewriter +diagnostics +\family default + to +\family typewriter +1 +\end_layout + +\end_deeper +\begin_layout Enumerate +Test if function runs through without warning +\end_layout + +\begin_layout Enumerate +Test if returned data has the correct format +\end_layout + +\begin_layout Subsection +pspm_find_valid_fixations +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_find_valid_fixations_test +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + out_file] = pspm_find_valid_fixations(fn, + options) +\end_layout + +\begin_layout Subsubsection +Setup +\end_layout + +\begin_layout Standard +This test class is parameterised. + The test data is generated by the function itself and when needed, + files will be written to +\family typewriter +testdatafile.mat +\family default +. +\end_layout + +\begin_layout Paragraph +Test parameters +\end_layout + +\begin_layout Standard +These are parameters which define what kind of data should be passed to +\family typewriter +pspm_find_valid_fixations +\family default + and which options should be set. +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Distance +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Used for gaze validation; + defines the distance between eyes and screen. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Aspect used +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Used for gaze validation; + defines the aspect ratio set in the software. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Aspect actual +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Used for gaze validation; + defines the aspect ratio of the hardware. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Screen size +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Used for gaze validation; + defines the size of the screen in inches. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Eyes +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Is used for data generation and tells the function for which eyes data should be generated. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Channel action +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Defines whether to +\family typewriter +`add' +\family default + or +\family typewriter +`replace' +\family default + existing channels. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Newfile +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Defines whether to create a new file or extend the existing file. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Overwrite +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Defines whether to overwrite the existing file or not. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Interpolate +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Defines whether to interpolate +\family typewriter +NaN +\family default + values in validated channels or not. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Missing +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Defines whether to create a channel which holds information about which positions have been set to +\family typewriter +NaN +\family default + (and may have been interpolated afterwards). +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Work eye +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Defines which eyes should be used for fixation validation. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Work chans +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Defines which channels should be set to NaN during invalid fixations. +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_input(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the input arguments are invalid. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations() +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations(`a') +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations(fn, + options) [invalid options.validate_fixations] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations(fn, + options) [invalid options.box_degree] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations(fn, + options) [invalid options.screen_settings] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations(fn, + options) [missing fields for options.screen_settings] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations(fn, + options) [invalid options.aspect_actual] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations(fn, + options) [invalid options.aspect_used] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations(fn, + options) [invalid options.bitmap] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations(fn, + options) [invalid options.display_size] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations(fn, + options) [invalid options.display_size] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations(fn, + options) [invalid options.fixation_point] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations(fn, + options) [invalid options.channel_action] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations(fn, + options) [invalid options.newfile] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations(fn, + options) [invalid options.overwrite] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations(fn, + options) [invalid options.interpolate] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations(fn, + options) [invalid options.missing] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations(fn, + options) [invalid eyes] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations(fn, + options) [invalid options.channels] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Test work chans +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_work_chans(this, + work_chans) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Tests whether the option +\family typewriter +`channels' +\family default + actually works on the specified channels or not. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate data with +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +distance 500 +\end_layout + +\begin_layout Description + +\family typewriter +aspect_used 16:9 +\end_layout + +\begin_layout Description + +\family typewriter +aspect_actual 4:3 +\end_layout + +\begin_layout Description + +\family typewriter +screen_size 20 +\end_layout + +\begin_layout Description + +\family typewriter +eyes `lr' +\end_layout + +\end_deeper +\begin_layout Enumerate +Set options with +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +overwrite 1 +\end_layout + +\begin_layout Description + +\family typewriter +channels work_chans +\end_layout + +\begin_layout Description + +\family typewriter +channel_action `add' +\end_layout + +\end_deeper +\begin_layout Enumerate +Test if function runs through without warning +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\end_layout + +\begin_layout Enumerate +Test if specified +\family typewriter +work_chans +\family default + are added as new processed channels +\end_layout + +\begin_layout Paragraph +Test work eye +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_work_eye(this, + work_eye) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test whether the option +\family typewriter +`eyes' +\family default + actually works on the specified eyes or not. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate data with +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +distance 500 +\end_layout + +\begin_layout Description + +\family typewriter +aspect_used 16:9 +\end_layout + +\begin_layout Description + +\family typewriter +aspect_actual 4:3 +\end_layout + +\begin_layout Description + +\family typewriter +screen_size 20 +\end_layout + +\begin_layout Description + +\family typewriter +eyes `lr' +\end_layout + +\end_deeper +\begin_layout Enumerate +Set options with +\end_layout + +\begin_deeper +\begin_layout Description +overwrite 1 +\end_layout + +\begin_layout Description +eyes work_eye +\end_layout + +\begin_layout Description +channel_action `add' +\end_layout + +\end_deeper +\begin_layout Enumerate +Test if function runs through without warning +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\end_layout + +\begin_layout Enumerate +Test if specified eyes have been processed accordingly and test if not specified eyes have ignored. +\end_layout + +\begin_layout Paragraph +Test missing +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_missing(this, + missing) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test whether for each a a new missing channel is created if missing is specified as true. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate data with +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +distance 500 +\end_layout + +\begin_layout Description + +\family typewriter +aspect_used 16:9 +\end_layout + +\begin_layout Description + +\family typewriter +aspect_actual 4:3 +\end_layout + +\begin_layout Description + +\family typewriter +screen_size 20 +\end_layout + +\begin_layout Description + +\family typewriter +eyes `lr' +\end_layout + +\end_deeper +\begin_layout Enumerate +Set options with +\begin_inset Separator latexpar +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +overwrite 1 +\end_layout + +\begin_layout Description + +\family typewriter +missing missing +\end_layout + +\begin_layout Description + +\family typewriter +channel_action `add' +\end_layout + +\end_deeper +\begin_layout Enumerate +Test if function runs through without warning +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\end_layout + +\begin_layout Enumerate +Depending on the status of +\family typewriter +`missing' +\family default +, + test if there are any missing channels or if there is no missing channel +\end_layout + +\begin_layout Paragraph +Test interpolate +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_interpolate(this, + interpolate) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test whether data is interpolated during periods which are set to +\family typewriter +NaN +\family default + by the function. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate data with +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +distance 500 +\end_layout + +\begin_layout Description + +\family typewriter +aspect_used 16:9 +\end_layout + +\begin_layout Description + +\family typewriter +aspect_actual 4:3 +\end_layout + +\begin_layout Description + +\family typewriter +screen_size 20 +\end_layout + +\begin_layout Description + +\family typewriter +eyes `lr' +\end_layout + +\end_deeper +\begin_layout Enumerate +Set options with +\end_layout + +\begin_deeper +\begin_layout Description +overwrite 1 +\end_layout + +\begin_layout Description +interpolate interpolate +\end_layout + +\begin_layout Description +channel_action `add' +\end_layout + +\end_deeper +\begin_layout Enumerate +Test if function runs through without warning +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\end_layout + +\begin_layout Enumerate +Depending on the status of +\family typewriter +`interpolate' +\family default + test whether there are some +\family typewriter +NaN +\family default + values or if +\family typewriter +NaN +\family default + periods have been interpolated accordingly. +\end_layout + +\begin_layout Paragraph +Test overwrite +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_overwrite(this, + overwrite) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test if files are overwritten, + if specified with +\family typewriter +`overwrite' +\family default + option. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate data with +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +distance 500 +\end_layout + +\begin_layout Description + +\family typewriter +aspect_used 16:9 +\end_layout + +\begin_layout Description + +\family typewriter +aspect_actual 4:3 +\end_layout + +\begin_layout Description + +\family typewriter +screen_size 20 +\end_layout + +\begin_layout Description + +\family typewriter +eyes `lr' +\end_layout + +\end_deeper +\begin_layout Enumerate +Set options with +\begin_inset Separator latexpar +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +overwrite 1 +\end_layout + +\begin_layout Description + +\family typewriter +interpolate interpolate +\end_layout + +\begin_layout Description + +\family typewriter +channel_action `add' +\end_layout + +\end_deeper +\begin_layout Enumerate +Test if function runs through without warning +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\end_layout + +\begin_layout Enumerate +Test if file has been overwritten or not (tests, + if there are any new channels). +\end_layout + +\begin_layout Paragraph +Test channel action +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_channel_action(this, + channel_action) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test if channels are added or replaced (according to +\family typewriter +channel_action +\family default +). +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate data with +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +distance 500 +\end_layout + +\begin_layout Description + +\family typewriter +aspect_used 16:9 +\end_layout + +\begin_layout Description + +\family typewriter +aspect_actual 4:3 +\end_layout + +\begin_layout Description + +\family typewriter +screen_size 20 +\end_layout + +\begin_layout Description + +\family typewriter +eyes `lr' +\end_layout + +\end_deeper +\begin_layout Enumerate +Set options with +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +overwrite 1 +\end_layout + +\begin_layout Description + +\family typewriter +channel_action channel_action +\end_layout + +\end_deeper +\begin_layout Enumerate +Test if function runs through without warning +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\end_layout + +\begin_layout Enumerate +Test if channels have been added or replaced (tests, + if there are any new channels). +\end_layout + +\begin_layout Paragraph +Test newfile +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_newfile(this, + newfile) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test whether the output is written to a newfile or to the input file. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate data with +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +distance 500 +\end_layout + +\begin_layout Description + +\family typewriter +aspect_used 16:9 +\end_layout + +\begin_layout Description + +\family typewriter +aspect_actual 4:3 +\end_layout + +\begin_layout Description + +\family typewriter +screen_size 20 +\end_layout + +\begin_layout Description + +\family typewriter +eyes `lr' +\end_layout + +\end_deeper +\begin_layout Enumerate +Set options with +\end_layout + +\begin_deeper +\begin_layout Enumerate + +\family typewriter +overwrite = 1 +\end_layout + +\begin_layout Enumerate +if +\family typewriter +newfile +\family default + enabled +\end_layout + +\begin_deeper +\begin_layout Enumerate +search for new file name +\end_layout + +\begin_layout Enumerate +set options.newfile to new file name +\end_layout + +\end_deeper +\begin_layout Enumerate +if +\family typewriter +newfile +\family default + is disabled, + set +\family typewriter +options.newfile +\family default + to +\family typewriter +`' +\end_layout + +\end_deeper +\begin_layout Enumerate +Test if function runs through without warning +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\end_layout + +\begin_layout Enumerate +Test if returned outputfile equals the specified newfile or not (depending on the value of +\family typewriter +`newfile' +\family default +) +\end_layout + +\begin_layout Paragraph +Test gaze validation +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_gaze_validation(this, + distance, + screen_size, + aspect_actual, + aspect_used, + eyes) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test whether gaze validation is done correctly. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate data with the according function parameters +\end_layout + +\begin_layout Enumerate +Iterate to returned degree values generated by the generation function +\begin_inset Separator latexpar +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Enumerate +set function options +\end_layout + +\begin_deeper +\begin_layout Enumerate +overewrite = 1 +\end_layout + +\begin_layout Enumerate +validate_fixation =1 +\end_layout + +\begin_layout Enumerate +screen_settings and distance to function call settings +\end_layout + +\begin_layout Enumerate +missing = 1 +\end_layout + +\end_deeper +\begin_layout Enumerate +depending on the specified degree, + test whether function runs through without warnings or not +\end_layout + +\begin_layout Enumerate +load outputfile and test if (according to degree expectation) gaze validation has been done or not +\end_layout + +\end_deeper +\begin_layout Paragraph +Test bitmap validtion +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_bitmap_validation(this, + distance, + resolution, + eyes) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test whether bitmap validation is done correctly. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate data with the according function parameters +\end_layout + +\begin_layout Enumerate +Iterate to returned bitmaps generated by the generation function +\end_layout + +\begin_deeper +\begin_layout Enumerate +Set function options +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +missing 1 +\end_layout + +\end_deeper +\begin_layout Enumerate +Depending on the specified number of valid fixations in the bitmap, + test whether function runs through without warnings or not. +\end_layout + +\begin_layout Enumerate +Load outputfile and test if (according to bitmap expectation) bitmap validation has been done or not. +\end_layout + +\end_deeper +\begin_layout Subsection +pspm_gaze_pp +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_gaze_pp_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_gaze_pp +\family default + preprocesses gaze signals, + gaze +\family typewriter +x +\family default + and gaze y channels at % the same time. +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph* +Invalid input +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_input(this). +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Check if the input is valid. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Test if input as a number is invalid. +\end_layout + +\begin_layout Enumerate +Test if input as a string is invalid. +\end_layout + +\begin_layout Enumerate +Test if combining two identical channels is invalid. +\end_layout + +\begin_layout Enumerate +Test if combining an invalid channel is invalid. +\end_layout + +\begin_layout Paragraph* +Preprocessed channel +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +preprocessed_channel(this). +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Check if preprocessing a single channel is successful. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +gaze_x_r +\family default + can be pre-processed successfully. +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +gaze_x_l +\family default + can be pre-processed successfully. +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +gaze_y_r +\family default + can be pre-processed successfully. +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +gaze_y_l +\family default + can be pre-processed successfully. +\end_layout + +\begin_layout Paragraph* +Check upsampling rate +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +upsampling_rate(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Check the upsampling rate after +\family typewriter +gaze_pp +\family default +. +\end_layout + +\begin_layout Paragraph* +Check channel combining +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +channel_combining(this). +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test if combing two appropriate channels is successful. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Test if combing +\family typewriter +gaze_x_r +\family default + and +\family typewriter +gaze_x_l +\family default + is successful. +\end_layout + +\begin_layout Enumerate +Test if combing +\family typewriter +gaze_y_r +\family default + and +\family typewriter +gaze_y_l +\family default + is successful. +\end_layout + +\begin_layout Subsection +pspm_get_ecg +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_get_ecg_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + data] = pspm_get_ecg(import) +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Test +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test(this) +\family default +. +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test if all fields are returned correctly. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\family default +. +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.data +\family default + is equal to +\family typewriter +import.data +\family default +. +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.chantype +\family default + is +\family typewriter +‘ecg' +\family default +. +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.units +\family default + is equal to +\family typewriter +import.units +\family default +. +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.sr +\family default + is equal to +\family typewriter +import.sr +\family default +. +\end_layout + +\begin_layout Subsection +pspm_get_events +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_get_events_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + import] = pspm_get_events(import) +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Check warnings +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +check_warnings(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the field +\family typewriter +‘.markers' +\family default + is missing or contains invalid content. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +Missing marker field +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:nonexistent_field +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +import.marker = ‘foo' +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_field_content +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Timestamps +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +timestamps(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for correct output if the input is timestamp data. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\family default +. +\end_layout + +\begin_layout Enumerate +Test if the length of the output data is equal to the length of the input data. +\end_layout + +\begin_layout Paragraph +Continuous +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +continuous(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for correct output if the input is continuous data. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Perform three tests with different settings +\begin_inset Separator latexpar +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Standard +Tests: +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\family default +. +\end_layout + +\begin_layout Enumerate +Test if the length of the field +\family typewriter +`markerinfo' +\family default + is equal to the length of the output data. +\end_layout + +\begin_layout Enumerate +Test if the length of the output data is equal to the expected number of pulses in the input data. +\end_layout + +\begin_layout Standard +Settings +\end_layout + +\begin_layout Enumerate + +\family typewriter +flank=`both' +\family default + (default) +\end_layout + +\begin_layout Enumerate + +\family typewriter +flank=`both' +\family default + & +\family typewriter +data offset=50 +\end_layout + +\begin_layout Enumerate + +\family typewriter +flank=`ascending' +\end_layout + +\begin_layout Enumerate + +\family typewriter +flank=`descending' +\end_layout + +\begin_layout Enumerate +inverted input signal +\end_layout + +\begin_layout Enumerate +signal with angular flanks +\end_layout + +\begin_layout Enumerate +check with +\end_layout + +\end_deeper +\begin_layout Enumerate +Additional test for setting (b): + Test if +\family typewriter +data offset +\family default + has been removed in the output data. +\end_layout + +\begin_layout Enumerate +Additional test for setting (c) and (d): + Test if positions returned by output data correspond to flank changes in the input data. +\end_layout + +\begin_layout Enumerate +Test if markerinfo is not set if it has been set before. +\end_layout + +\begin_layout Subsection +pspm_get_eyelink +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_get_eyelink_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + data] = pspm_get_eyelink(import) +\end_layout + +\begin_layout Subsubsection +Methods +\end_layout + +\begin_layout Paragraph +Set import values +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[import_struct, + channel typles] = set_import_values(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Helperfunction, + which creates an import data set and the expected channel data set +\end_layout + +\begin_layout Paragraph +Verify basic data structure +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +verify_basic_data_structure(this, + data, + sourceinfo, + channel_types) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Tests if the returned data structure is valid and match a given expected pattern. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Test if all channels are numeric +\end_layout + +\begin_layout Enumerate +Test if recorded time and date have a valid format +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +blink channels +\family default + have correct unit +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +pupil channels +\family default + have either +\family typewriter +`diameter' +\family default + or +\family typewriter +`area' +\family default + as unit +\end_layout + +\begin_layout Enumerate +Test if channels labeled with +\family typewriter +`position' +\family default + have unit +\family typewriter +`pixel' +\end_layout + +\begin_layout Enumerate +Test if channels labeled with +\family typewriter +`blink' +\family default + have unit +\family typewriter +`blink' +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +test_multi_session +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_multi_session(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test if the returned data structure fits into the pattern of a multi session data set. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Calls +\family typewriter +`set_import_values(this)' +\family default + to get import data set and expected channel data set. +\end_layout + +\begin_layout Enumerate +passses returned sets to +\family typewriter +`verify_basic_data_structure()' +\family default +. +\end_layout + +\begin_layout Paragraph +test_two_eyes +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_two_eyes(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test if the returned data structure fits into the pattern of a two eyes data set. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Calls +\family typewriter +`set_import_values(this)' +\family default + to get import data set and expected channel data set. +\end_layout + +\begin_layout Enumerate +Passes returned sets to +\family typewriter +`verify_basic_data_structure()' +\family default +. +\end_layout + +\begin_layout Paragraph +test_one_eye +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_one_eye(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test if the returned data structure fits into the pattern of a one eye data set. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Create an import data set and the expected channel data set an pass it to +\family typewriter +`verify_basic_data_structure()' +\family default +. +\end_layout + +\begin_layout Paragraph +test_track_dist +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard +test_track_dist(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test if the returned data structure fits into the pattern of a two eyes data with +\family typewriter +eyelink_trackdist +\family default + set. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Call +\family typewriter +`set_import_values(this)' +\family default + to get import data set and expected channel data set. +\end_layout + +\begin_layout Enumerate +Overwrite some import data and channel data. +\end_layout + +\begin_layout Enumerate +Pass returned sets to +\family typewriter +`verify_basic_data_structure()' +\family default +. +\end_layout + +\begin_layout Subsection +pspm_get_hb +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_get_hb_test +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + data] = pspm_get_hb(import) +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Test +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test if all fields are returned correctly. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\family default +. +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.data +\family default + is equal +\family typewriter +import.data +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.chantype +\family default + is +\family typewriter +‘hb' +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.units +\family default + is +\family typewriter +‘events' +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.sr==1 +\family default + +\end_layout + +\begin_layout Subsection +pspm_get_hr +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_get_hr_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + data] = pspm_get_hr(import) +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Test +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test if all fields are returned correctly. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\family default +. +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.data +\family default + is equal +\family typewriter +import.data +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.chantype +\family default + is +\family typewriter +‘hr' +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.units +\family default + is equal +\family typewriter +import.units +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.sr +\family default + is equal +\family typewriter +import.sr +\end_layout + +\begin_layout Subsection +pspm_get_marker +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_get_marker_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + data] = pspm_get_marker(import) +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Test +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test if all fields are returned correctly. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\family default +. +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.data +\family default + is equal to +\family typewriter +import.data +\family default +. +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.chantype +\family default + is +\family typewriter +‘marker' +\family default +. +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.units +\family default + is +\family typewriter +‘events' +\family default +. +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.sr==1 +\family default +. +\end_layout + +\begin_layout Subsection +pspm_get_pupil +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_get_pupil_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + data] = pspm_get_pupil(import) +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Test +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test if all fields are returned correctly +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\family default +. +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.data +\family default + is equal +\family typewriter +import.data +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.chantype +\family default + is +\family typewriter +‘pupil' +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.units +\family default + is equal to +\family typewriter +import.units +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.sr +\family default +is equal +\family typewriter +import.sr +\end_layout + +\begin_layout Subsection +pspm_get_resp +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_get_resp_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + data] = pspm_get_resp(import) +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Test +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard + +\family typewriter +Test if all fields are returned correctly +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.data +\family default + is equal +\family typewriter +import.data +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.chantype +\family default + is +\family typewriter +‘resp' +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.units +\family default + is equal +\family typewriter +import.units +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.sr +\family default + is equal +\family typewriter +import.sr +\end_layout + +\begin_layout Subsection +pspm_get_scr +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_get_scr_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + data] = pspm_get_scr(import) +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Standard +There are three test functions. + One for the case that no transfer parameters are defined, + one for the case that the transfer parameters are defined in a struct and one for the case that they are defined in a .mat file. + They are all performing the following tests, + plus eventually some individual tests. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\end_layout + +\begin_layout Enumerate +Test if the field +\family typewriter +data.data +\family default + exists +\end_layout + +\begin_layout Enumerate +Test if the field +\family typewriter +data.data +\family default + is not empty +\end_layout + +\begin_layout Enumerate +Test if the field +\family typewriter +data.header.units +\family default + exists +\end_layout + +\begin_layout Enumerate +Test if the field +\family typewriter +data.header.sr +\family default + exists +\end_layout + +\begin_layout Enumerate +Test if the field +\family typewriter +data.header.chantype +\family default + exists +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.sr +\family default + is equal to +\family typewriter +import.sr +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +data.header.chantype +\family default + is +\family typewriter +‘scr' +\end_layout + +\begin_layout Paragraph +No transfer parameters +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +no_transferparams(testCase) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test if all fields are returned correctly, + if no transfer parameters are defined. +\end_layout + +\begin_layout Subparagraph +Additional Tests +\end_layout + +\begin_layout Standard +No additional tests +\end_layout + +\begin_layout Paragraph +Struct transfer parameters +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +stuct_transferparams(testCase) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test if all fields are returned correctly, + if the transfer parameters are defined in a struct. +\end_layout + +\begin_layout Subparagraph +Additional Tests +\end_layout + +\begin_layout Enumerate +Check for warning if the conversion constant +\family typewriter +(import.transfer.c) +\family default + is not defined +\end_layout + +\begin_layout Enumerate +Checks that there are no warnings if +\family typewriter +import.transfer.Rs +\family default + or +\family typewriter +import.transfer.offset +\family default + is not defined. + +\end_layout + +\begin_layout Paragraph +File transfer parameters +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +file_transferparams(testCase) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test if all fields are returned correctly, + if the transfer parameters are defined in a +\family typewriter +.mat +\family default + file. +\end_layout + +\begin_layout Subparagraph +Additional Tests +\end_layout + +\begin_layout Enumerate +Check for warning if the transfer parameter file doesn't exist. + +\end_layout + +\begin_layout Subsection +pspm_get_timing +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_get_timing_test +\end_layout + +\begin_layout Subparagraph +Functions +\end_layout + +\begin_layout Itemize + +\family typewriter +[sts, + multi] = pspm_get_timing(`onsets', + intiming, + timeunits) +\end_layout + +\begin_layout Itemize + +\family typewriter +[sts, + events] = pspm_get_timing(`markervalues', + markerinfo, + names) +\end_layout + +\begin_layout Itemize + +\family typewriter +[sts, + epochs] = pspm_get_timing(`epochs', + epochs) +\end_layout + +\begin_layout Itemize + +\family typewriter +[sts, + events] = pspm_get_timing(`events', + events) +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input arguments +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_inputargs(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the input arguments are invalid. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_timing(`epochs') [missing input var] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_timing(`onsets', + `str') [no timeunits var] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_timing(`foo') [unknown format] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_timing(`onsets', + intiming, + `samples') [two sessions with nonmatching number of conditions] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:number_of_elements_dont_match +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_timing(`onsets', + intiming, + `samples') [two sessions with nonmatching condition names] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:event_names_dont_match +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_timing(`onsets', + intiming, + `samples') [intiming.onsets{1} is no numeric vector] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:no_numeric_vector +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_timing(`epochs', + fn_mat, + `samples') [epochs is not an integer array] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:no_integers +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_timing(`markervalues', + markerinfo) [no markervalue and no name ] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_timing(`markervalues', + markerinfo, + markervalue, + names) [markervalue is not of numeric type nor a cell array] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_timing(`markervalues', + markerinfo, + markervalue, + names) [markervalue and names are not of the same length] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Case Epochs +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +case_epochs(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks the function in +\family typewriter +‘epochs' +\family default + mode. +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + epochs] = pspm_get_timing(`epochs', + epochs) +\end_layout + +\begin_layout Paragraph +Test 1 (matfile input) +\end_layout + +\begin_layout Subparagraph +Input +\end_layout + +\begin_layout Standard + +\family typewriter +mat +\family default + file with variable: + +\family typewriter +epochs = [1 4; + 2 5; + 3 6] +\end_layout + +\begin_layout Standard +Check if +\family typewriter +sts==1 +\family default + and if the return value is equal the input array. + +\end_layout + +\begin_layout Subsubsection* +Test 2 (spm input) +\end_layout + +\begin_layout Subparagraph +Input +\end_layout + +\begin_layout Standard + +\family typewriter +mat +\family default + file with variable: + +\family typewriter +onsets{1} = [1 2 3]'; + onsets{2} = [4 5 6]' +\family default +; +\end_layout + +\begin_layout Standard +Check if +\family typewriter +sts==1 +\family default + and if the return value is equal +\family typewriter +[onsets{1}, + onsets{2}] +\family default +. + +\end_layout + +\begin_layout Subsubsection* +Test 3 (textfile input) +\end_layout + +\begin_layout Subparagraph +Input +\end_layout + +\begin_layout Standard +textfile with variable: + +\family typewriter +epochs = [1 4; + 2 5; + 3 6] +\end_layout + +\begin_layout Standard +Check if +\family typewriter +sts==1 +\family default + and if the return value is equal the input array. + +\end_layout + +\begin_layout Subsubsection* +Test 4 (matrix input) +\end_layout + +\begin_layout Subparagraph +Input +\end_layout + +\begin_layout Standard +matrix: + +\family typewriter +epochs = [1 4; + 2 5; + 3 6] +\end_layout + +\begin_layout Standard +Check if +\family typewriter +sts==1 +\family default + and if the return value is equal the input array. + +\end_layout + +\begin_layout Paragraph +Case onsets +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +case_onsets(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks the function in +\family typewriter +‘onsets' +\family default + mode. +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + multi] = pspm_get_timing(`onsets', + intiming, + timeunits) +\end_layout + +\begin_layout Paragraph +Test 1 +\end_layout + +\begin_layout Subparagraph +Input +\end_layout + +\begin_layout Standard +A +\family typewriter +.mat +\family default + file with the following variables +\end_layout + +\begin_layout Itemize + +\family typewriter +names = {`name1', + `name2'}; +\end_layout + +\begin_layout Itemize + +\family typewriter +onsets = {[1 2], + [3 4]}; +\end_layout + +\begin_layout Itemize + +\family typewriter +pmod.name = {`name3', + `name4'}; +\end_layout + +\begin_layout Itemize + +\family typewriter +pmod.param = {[2 3], + [4 5]}; +\end_layout + +\begin_layout Itemize + +\family typewriter +pmod.poly = {2, + 2}; +\end_layout + +\begin_layout Itemize + +\family typewriter +save(fn_mat, + `names', + `onsets', + `pmod'); +\end_layout + +\begin_layout Subparagraph +Function call +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + outtiming] = pspm_get_timing(`onsets', + fn_mat, + `samples'); +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Standard +Check if +\family typewriter +sts==1 +\family default +, + if onsets and names are unchanged and if +\end_layout + +\begin_layout Standard + +\family typewriter +outtiming.pmod.param == {[2 3], + [4 9], + [4 5], + [16 25]} +\end_layout + +\begin_layout Paragraph +Test 2 +\end_layout + +\begin_layout Subparagraph +Input +\end_layout + +\begin_layout Standard +A +\family typewriter +.mat +\family default + file with the variables +\end_layout + +\begin_layout Itemize + +\family typewriter +names = {`name1', + `name2'}; +\end_layout + +\begin_layout Itemize + +\family typewriter +onsets = {[1 2 3], + [3 4 5]}; + durations = {[3 4 5]', + [5 6 7]'}; +\end_layout + +\begin_layout Itemize + +\family typewriter +pmod.name = {`name3', + `name4'}; +\end_layout + +\begin_layout Itemize + +\family typewriter +pmod.param = {[2 3 4], + [4 5 6]}; +\end_layout + +\begin_layout Itemize + +\family typewriter +pmod.poly = {2, + 1}; +\end_layout + +\begin_layout Subparagraph +Function call +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + outtiming] = pspm_get_timing(`onsets', + fn_mat, + `samples'); +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Standard +Check if +\family typewriter +sts==1 +\family default +, + if onsets, + names and durations are unchanged and if +\family typewriter +outtiming.pmod.param == {[2 3 4], + [4 9 16], + [4 5 6]} +\family default +. +\end_layout + +\begin_layout Paragraph +Case events +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +case_events(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks the function in +\family typewriter +‘events' +\family default + mode. +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + epochs] = pspm_get_timing(`events', + events) +\end_layout + +\begin_layout Standard +Check the function if input is a one element cell array and a multiple element cell array. +\end_layout + +\begin_layout Standard +Check for warnings ( +\family typewriter +ID:invalid_vector_size +\family default +) if elements have more than two columns and if not all elements have the same number of rows. +\end_layout + +\begin_layout Subsection +pspm_get_ +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Standard +The datatype import functions are all tested in a similar way. + The individual testclasses must inherit the class +\family typewriter +‘pspm_get_superclass' +\family default +, + from which they inherit the main test function +\family typewriter +‘valid_datafile' +\family default +. + They also have to implement the property +\family typewriter +‘fhandle' +\family default +, + which is a function handle to the specific import function. +\end_layout + +\begin_layout Standard +The tests are performed with the sampledata files that are listed in the SampleDataMasterList.docx file (as at 18.11.2013). +\end_layout + +\begin_layout Subparagraph +Superclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_get_superclass +\end_layout + +\begin_layout Subparagraph +Testclasses +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm_get_acq_test +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm_get_acqmat_test +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm_get_biograph_test +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm_get_biosemi_test +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm_get_biotrace_test +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm_get_brainvis_test +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm_get_edf +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm_get_labchartmat_ext_test +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm_get_labchartmat_in_test +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm_get_mat_test +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm_get_obs_test +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm_get_smr_test +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm_get_smrx_test +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm_get_superclass +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm_get_txt_test +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm_get_vario_test +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm_get_eyelink_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + import, + sourceinfo] = pspm_get_(datafile, + import) +\end_layout + +\begin_layout Subsubsection +Notes +\end_layout + +\begin_layout Subsubsection +Setup +\end_layout + +\begin_layout Paragraph +Define testcases +\end_layout + +\begin_layout Standard +In this method the testcases are defined and the testdata is generated (if needed). + Each testcase is a cell in the cellarray +\family typewriter +‘testcases' +\family default +. + Each testcase has the following fields: +\end_layout + +\begin_layout Itemize + +\family typewriter +.pth +\family default +: + the path to the samplefile +\end_layout + +\begin_layout Itemize + +\family typewriter +.import +\family default +: + the input variable +\end_layout + +\begin_layout Standard +For datatypes which support blocks there has to be an additional field: +\end_layout + +\begin_layout Itemize + +\family typewriter +.numofblocks +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Valid datafile +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +valid_datafile(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +The main test function, + for tests with valid inputdata. + It tests all testcases equally. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\family default +. +\end_layout + +\begin_layout Enumerate +If the datatype supports blocks, + test if the number of blocks is correct. +\end_layout + +\begin_layout Enumerate +Test if number of elements of the returned +\family typewriter +‘import' +\family default + variable is correct. +\end_layout + +\begin_layout Enumerate +Test if each importjob has a field +\family typewriter +‘data' +\family default +, + that is a numeric vector. +\end_layout + +\begin_layout Enumerate +Test if each importjob has a field +\family typewriter +‘sr' +\family default +, + that is a number. +\end_layout + +\begin_layout Enumerate +Test if each importjob has a field +\family typewriter +‘type' +\family default +. +\end_layout + +\begin_layout Enumerate +Test if all event importjobs have a field +\family typewriter +‘marker' +\family default +. +\end_layout + +\begin_layout Enumerate +Test if all importjobs have duration below +\family typewriter +1h +\family default +. +\end_layout + +\begin_layout Enumerate +Test if all importjobs have a samplerate between +\family typewriter +1 +\family default + and +\family typewriter +10000 +\family default + for continuous channels or between +\family typewriter +10^-6 +\family default + and +\family typewriter +1 +\family default + for timestamp channels. + +\end_layout + +\begin_layout Paragraph +Invalid datafile +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_datafile(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +The main test function, + for tests with invalid inputdata. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Standard +If the datatype supports multiple channels: + Check for warning when trying to import a channel, + that is not contained in the file ( +\family typewriter +`ID:channel_not_contained_in_file' +\family default +). + +\end_layout + +\begin_layout Subsection +pspm_get_acq +\end_layout + +\begin_layout Standard +In this section we describe the testcases specific to +\family typewriter +pspm_get_acq +\family default + apart from generic +\family typewriter +pspm_get +\family default + tests. +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_get_acq_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[tss, + import, + sourceinfo] = pspm_get_acq(datafile, + import) +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +get_acq should return the exact same data as Acqknowledge exported mat file +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +get_acq_returns_same_data_as_acqknowledge_exported_mat(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +The data obtained by using +\family typewriter +pspm_get_acq +\family default + should be identical with the data obtained by using export +\family typewriter +.mat +\family default + file functionality in Acqknowledge software. +\end_layout + +\begin_layout Subparagraph +Steps +\end_layout + +\begin_layout Enumerate +Load data stored in +\family typewriter +ImportTestData/acq/impedance_acq.acq +\family default + and +\family typewriter +ImportTestData/acq/impedance_mat.mat +\family default + separately. +\end_layout + +\begin_layout Enumerate +Compare the first channel of +\family typewriter +impedance_mat +\family default + with the first channel of data obtained by calling +\family typewriter +pspm_get_acq +\family default + on +\family typewriter +impedance_acq +\family default +. +\end_layout + +\begin_layout Subsection +pspm_glm +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_glm_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +glm = pspm_glm(model, + options) +\end_layout + +\begin_layout Standard +There are seven testcase functions. + One invalid input arguments test and test 1 to 6. + Tests 1 to 5 are of the same kind. + There are one or multiple testcases per test function, + have a look at the testcase description for more information. + In these tests only Kronecker delta functions are used as basis functions, + furthermore all conditions, + pmods and nuisance regressors are pairwise orthogonal. + The data is also not down sampled and not filtered. + With these limitations it's easy to calculate the data vectors and the expected stats. + For each testcase it is then tested: +\end_layout + +\begin_layout Itemize +If +\family typewriter +numel(glm.names) +\family default + has the expected value. +\end_layout + +\begin_layout Itemize +If +\family typewriter +numel(glm.stats) +\family default + has the expected value. +\end_layout + +\begin_layout Itemize +If +\family typewriter +glm.stats +\family default + has the expected value (with a tolerance of +\family typewriter +1% +\family default +). +\end_layout + +\begin_layout Standard +In test 6 the default basis functions are used, + and not all conditions and pmods are orthogonal. + The data is down sampled and low and high pass filtered. + In exchange the stats are not tested for correct values, + just for the correct number of elements. + The properties +\family typewriter +`shiftbf' +\family default + and +\family typewriter +`norm' +\family default + are TestParameters, + which means that this testclass is parameterised. + All functions implmementing these parameters (Test 1 to Test 5) are called several times with all the different values and combinations of the mentioned parameters. +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Subsubsection* +Invalid input arguments +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_input (this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the input arguments are invalid. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_glm(model) [no timeunits field] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_glm(model) [no timeunits var] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_glm(model) with model.timeunits = ‘foo' [no valid timeunits field] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_glm(model) with model.timing = zeros(10,2) [no valid timing field] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_glm(model) with model.modality = `foo' [no valid modality field] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_glm(model) with model.channel = `scr' [no valid channel field] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_glm(model) with model.norm = `no' [no valid norm field] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_glm(model) with model.filt.down = `none' [filt.down is not numeric] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_glm(model) with model.bf.fhandle = `foohandle' [non existing bf] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_fhandle +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_glm(model) with numel(model.datafile) != numel(model.timing) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:number_of_elements_dont_match +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_glm(model) with model.missing is struct [non valid missing field] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_glm(model) with numel(model.datafile) != numel(model.missing) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:number_of_elements_dont_match +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_glm(model) with model.nuisance is struct [non valid nuisance field] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_glm(model) with numel(model.datafile) != numel(model.nuisance) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:number_of_elements_dont_match +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_glm(model) with no R variable in the nuisance file +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_glm(model) with R variable in the nuisance file that has not the same length as the datafile +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:number_of_elements_dont_match +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Test 1 +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +test1(this, + shiftbf) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Basic test with one basis function, + one session, + no nuisance regressors, + no missings and one condition. + Timeunits are seconds. +\end_layout + +\begin_layout Subparagraph +Testcases +\end_layout + +\begin_layout Enumerate +no pmods +\end_layout + +\begin_layout Enumerate +one pmod +\end_layout + +\begin_layout Enumerate +two pmods +\end_layout + +\begin_layout Paragraph +Test 2 +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +test2(this, + shiftbf) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test with one basis function, + one session, + no nuisance regressors, + no missings and two conditions. + Timeunits are seconds. +\end_layout + +\begin_layout Subparagraph +Testcases +\end_layout + +\begin_layout Enumerate +no pmods +\end_layout + +\begin_layout Enumerate +first condition: + no pmods; + second condition: + one pmod +\end_layout + +\begin_layout Enumerate +first condition: + one pmod; + second condition: + two pmods +\end_layout + +\begin_layout Paragraph +Test 3 +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard +test3(this, + shiftbf) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test with one basis function, + one session, + two nuisance regressors (1Hz cosinus, + 1Hz sinus), + no missings, + one condition and no pmods. + Timeunits are seconds. +\end_layout + +\begin_layout Subparagraph +Testcases +\end_layout + +\begin_layout Standard +Only one testcase. + +\end_layout + +\begin_layout Paragraph +Test 4 +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +test4(this, + shiftbf) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test with one basis function, + two sessions, + no nuisance regressors, + no missings and one condition. +\end_layout + +\begin_layout Subparagraph +Testcases +\end_layout + +\begin_layout Enumerate +timeunits are seconds +\end_layout + +\begin_layout Enumerate +timeunits are samples +\end_layout + +\begin_layout Enumerate +timeunits are markers +\end_layout + +\begin_layout Paragraph +Test 5 +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +test5(this, + shiftbf) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test with two basis functions, + one session, + no nuisance regressors and one condition. + Timeunits are seconds. +\end_layout + +\begin_layout Subparagraph +Testcases +\end_layout + +\begin_layout Enumerate +no missings +\end_layout + +\begin_layout Enumerate +with missings +\end_layout + +\begin_layout Paragraph +Test 6 +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +test6(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test with default basis function and non-orthogonal conditions and pmods. +\end_layout + +\begin_layout Subparagraph +Testcase +\end_layout + +\begin_layout Standard +Default basis functions, + no nuisance regressors, + no missings, + two sessions and two conditions. + Timeunits are seconds. +\end_layout + +\begin_layout Itemize +first condition: + two pmods (with pmod(1).poly{1} = 2 and pmod(1).poly{2} = 3) +\end_layout + +\begin_layout Itemize +second condition: + no pmods +\end_layout + +\begin_layout Paragraph +Test 7 +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard +test_extract_missing(this, + cutoff, + nan_percent) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test with one basis function, + one session, + no nuisance regressors, + no missings and three conditions. + Timeunits are seconds. +\end_layout + +\begin_layout Subparagraph +Testcases +\end_layout + +\begin_layout Standard +for all combinations of the test parameters +\family typewriter +cutoff +\family default + and +\family typewriter +nan_percent +\family default +. +\end_layout + +\begin_layout Itemize + +\family typewriter +glm +\family default + vector +\family typewriter +stats_missing +\family default + has the appropriate length according to the number of conditions. +\end_layout + +\begin_layout Itemize +percentages in +\family typewriter +glm +\family default + vector +\family typewriter +stats_missing +\family default + contains the expected value. +\end_layout + +\begin_layout Itemize + +\family typewriter +glm +\family default + vector +\family typewriter +stats_exclude +\family default + has the appropriate length according to the number of conditions. +\end_layout + +\begin_layout Itemize + +\family typewriter +glm +\family default + vector +\family typewriter +stats_exclude +\family default + contains the expected condistion which should be excluded. +\end_layout + +\begin_layout Subsection +pspm_hb2hp +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_hb2hp_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + infos] = pspm_hb2hp(fn, + sr, + chan, + options) +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_input(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the input arguments are invalid. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_hb2hp() [no input] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_hb2hp(2) [not a string filename] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_hb2hp(`abc') [no sample rate] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_hb2hp(`abc',`abc') [not a string sample rate] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_hb2hp(`abc',2,`abc') [not a numeric chanel] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_hb2hp(files{1},100) [call of pspm_load_data fails] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_hb2hp(files{2}, + 100) [not enough points for interp1] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:too_strict_limits +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_hb2hp(files{3},100,[],options) [pspm_write_channel fails] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsection +pspm_import +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_import_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +outfile = pspm_import(datafile, + datatype, + import, + options) +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input arguments +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_inputargs(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the input arguments are invalid. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Test No. +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_import(datafile, + datatype) [no import variable] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_import(datafile, + datatype, + ‘foo') [no cell/struct import var.] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +3 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_import(datafile, + ‘foo', + import) [invalid channeltype] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_channeltype +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +4 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_import(5, + datatype, + import) [no char filename] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Invalid import variable structure +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_import_struct(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the structure of the import variable is invalid. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Test No. +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Multiple channel, + though not supported +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +ID:invalid_import_struct +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Not allowed channeltype +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +ID:invalid_import_struct +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +3 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +No sr given, + though autosr is not supported +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +ID:invalid_import_struct +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +4 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Nonexistent file +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +ID:nonexistent_file +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +One datafile +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +one_datafile(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks the function, + if datafile is a string (import of one datafile) and all inputs are correct. + The outfile is checked with the +\family typewriter +pspm_load_data +\family default + function. + The tests are performed with a spike samplefile and a labchartmat_in samplefile (to check the handling of blocks). + +\end_layout + +\begin_layout Paragraph +Multiple datafiles +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +multiple_datafiles(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks the function, + if datafile is a cell array of strings (import of multiple datafiles) and all inputs are correct. + The outfiles are tested with the +\family typewriter +pspm_load_data +\family default + function. + +\end_layout + +\begin_layout Subsection +pspm_interpolate +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_interpolate_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + outdata] = pspm_interpolate(indata, + options) +\end_layout + +\begin_layout Subsubsection +Setup +\end_layout + +\begin_layout Standard +This test class is parameterised. + The test data is generated by the function itself and when needed, + files will be written to +\family typewriter +datafile.mat +\family default +. +\end_layout + +\begin_layout Paragraph +Test parameters +\end_layout + +\begin_layout Standard +These are parameters which define what kind of data should be passed to +\family typewriter +pspm_interpolate +\family default + and which options should be set. +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Amount +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Specifies how many elements indata (for +\family typewriter +pspm_interpolate +\family default +) should have. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Datatype +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Specifies what type of data should be generated. +\end_layout + +\begin_layout Description + +\family typewriter +struct +\family default + a valid data struct will be generated +\end_layout + +\begin_layout Description + +\family typewriter +inline +\family default + a numeric vector will be generated +\end_layout + +\begin_layout Description + +\family typewriter +file +\family default + a valid scr file will be generated +\end_layout + +\begin_layout Description + +\family typewriter +all +\family default + all types will sequentially be generated until amount is reached +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Chans +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +If datatype is not inline this specifies how many and which type of data channels the generated data should have. + In a second field it also defines which of these channels should be interpolated (this will be passed later in options.channels). +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Nan method +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Specifies how +\family typewriter +NaN +\family default + values will be put into the data. +\end_layout + +\begin_layout Description + +\family typewriter +start +\family default + range is +\family typewriter +1+offset: +\end_layout + +\begin_layout Description + +\family typewriter +center +\family default + range is +\family typewriter +: +\end_layout + +\begin_layout Description + +\family typewriter +end +\family default + range is +\family typewriter +:end-offset +\end_layout + +\begin_layout Plain Layout +The offset is +\family typewriter +1 +\family default + if +\family typewriter +`extrap' +\family default +is not defined. + This is needed because if there is no data at the end or beginning of the data, + the function is unable to interpolate (unless extrapolation is activated). +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Extrap +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Is either true or false and activates or deactivates the extrapolation. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Interp method +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Specifies the interpolation method. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Newfile +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +True or false and tells the function to either create a file or add the data as new channel. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Overwrite +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +True or false and tells the function to either overwrite an existing file or not. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Replace channel +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +True or false and tells the function to either replace the given channels with the interpolated data or to add the interpolated data as new channel. +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_input(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the input arguments are invalid. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Test No. +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_interpolate() [no arguments] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:missing_data +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_interpolate({{}}) [data is not char, + struct, + numeric] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +3 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_interpolate({}) [data empty] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:missing_data +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +4 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_interpolate(struct()) [invalid struct] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +5 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_interpolate(invalid_data) [file which does not exist] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:nonexistent_file +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +6 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_interpolate(valid_data, + options) [options.channels is larger than valid_data] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +7 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_interpolate(valid_data, + options) [options.channels is not numeric] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +8 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_interpolate(valid_data, + options) [options.method is invalid] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +9 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_interpolate(valid_data, + options) [options.newfile is invalid] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +10 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_interpolate(valid_data, + options) [options.extrapolate is invalid] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +11 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_interpolate(valid_data, + options) [options.overwrite is invalid] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +12 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_interpolate(valid_data, + options) [options.replace_channels is invalid] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +13 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_interpolate(invalid_data, + options) [try to interpolate an events channel] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_channeltype +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +14 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_interpolate(invalid_data) [try to interpolate with nan from beginning and without extrapolation] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:option_disabled +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +15 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_interpolate(invalid_data, + options) [try to interpolate with nan from beginning and with extrapolation] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:out_of_range +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +16 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_interpolate(invalid_data) [try to interpolate with nan from end and without extrapolation] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:option_disabled +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +17 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_interpolate(invalid_data, + options) [try to interpolate with nan from end and with extrapolation] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:out_of_range +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Test datatypes +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_datatypes(this, + datatype, + amount, + chans) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Tries to interpolate with different datatypes, + amount of data, + channels. +\end_layout + +\begin_layout Subparagraph +Steps +\end_layout + +\begin_layout Enumerate +Generate data with datatype, + amount, + `center', + chans, + false +\end_layout + +\begin_layout Enumerate +Test if function issues no warnings +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\end_layout + +\begin_layout Enumerate +Test if size of outdata equals the size of the data +\end_layout + +\begin_layout Enumerate +Test if channels to be interpolated have no more +\family typewriter +NaN +\family default +s +\end_layout + +\begin_layout Enumerate +Test if channels not to be interpolated still contain +\family typewriter +NaN +\family default +s +\end_layout + +\begin_layout Paragraph +Test interpolation variations +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_interpolation_variations(this, + interp_method, + extrap, + nan_method) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Tries to interpolate with different interpolation methods while varying +\family typewriter +options.extrapolate +\family default + and the +\family typewriter +nan_method +\family default +. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate data with +\family typewriter +`inline', + 1, + nan_method, + {{`scr'}, + []}, + extrap +\end_layout + +\begin_layout Enumerate +Test if function issues no warnings +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\end_layout + +\begin_layout Enumerate +Test if size of outdata equals the size of the data +\end_layout + +\begin_layout Enumerate +Test if data has no more +\family typewriter +NaN +\family default +s +\end_layout + +\begin_layout Subparagraph + +\shape italic +\emph on +Special case +\end_layout + +\begin_layout Standard +When extrapolation is on and +\family typewriter +nan_method +\family default + is +\family typewriter +`start' +\family default + and +\family typewriter +interp_method +\family default + is +\family typewriter +`previous' +\family default + or nan_method is +\family typewriter +`end' +\family default + and +\family typewriter +interp_method +\family default + is +\family typewriter +`next' +\family default +. + This should issue a warning because this is not possible (e.g. + interpolate with previous value when first +\family typewriter +NaN +\family default + is at the beginning of the data set). +\end_layout + +\begin_layout Enumerate +Generate data as above +\end_layout + +\begin_layout Enumerate +Test if function issues a warning. +\end_layout + +\begin_layout Paragraph +Test no nan +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_no_nan(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test whether function works even if there is nothing to interpolate. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate data struct() with +\family typewriter +pspm_test_data_gen() +\end_layout + +\begin_layout Enumerate +Test if function issues no warnings +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\end_layout + +\begin_layout Enumerate +Test if size of outdata equals the size of data +\end_layout + +\begin_layout Enumerate +Test if outdata equals data +\end_layout + +\begin_layout Enumerate +Test if data has no +\family typewriter +NaN +\family default +s +\end_layout + +\begin_layout Paragraph +Test write +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_write(this, + newfile) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Vary the option newfile and test whether new file is created correctly or data is correctly added to a new channel. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate data with +\family typewriter +`file' +\family default +, + +\family typewriter +2 +\family default +, + +\family typewriter +`center' +\family default +, + +\family typewriter +{{`scr', + `scr', + `scr'}, + [1,3]} +\family default +, + +\family typewriter +false +\end_layout + +\begin_layout Enumerate +Test if function issues no warnings +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\end_layout + +\begin_layout Enumerate +Test if size of +\family typewriter +outdata +\family default + equals the size of +\family typewriter +data +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +outdata +\family default + does not equal +\family typewriter +data +\end_layout + +\begin_layout Subparagraph +New files only +\end_layout + +\begin_layout Enumerate +Test if new file exists +\end_layout + +\begin_layout Enumerate +Load old and new file and test if size of data is equal +\end_layout + +\begin_layout Enumerate +Verify that interpolated channels in the new file are +\family typewriter +NaN +\family default + free +\end_layout + +\begin_layout Subparagraph +Added to existing file only +\end_layout + +\begin_layout Enumerate +Test if all returned values are numeric (new channel ids) +\end_layout + +\begin_layout Enumerate +Verify that the added channels are +\family typewriter +NaN +\family default + free +\end_layout + +\begin_layout Enumerate +Test if added channels match the size of the original data channels +\end_layout + +\begin_layout Paragraph +Test overwrite +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_overwrite(this, + overwrite) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Vary overwrite and test whether files are overwritten or not. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate data with +\family typewriter +`file' +\family default +, + +\family typewriter +2 +\family default +, + +\family typewriter +`center' +\family default +, + +\family typewriter +{{`scr', + `scr', + `scr'}, + [1,2,3]} +\family default +, + +\family typewriter +false +\end_layout + +\begin_layout Enumerate +Create files with expected filenames +\end_layout + +\begin_layout Enumerate +Test if function issues no warning +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\end_layout + +\begin_layout Enumerate +According to overwrite test if file has been overwritten or not +\end_layout + +\begin_layout Paragraph +Test replace channel +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_replace_channel(this, + replace_channels) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Vary +\family typewriter +replace_channel +\family default + and test wether channels are overwritten or not. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate data with +\family typewriter +`file' +\family default +, + +\family typewriter +2 +\family default +, + +\family typewriter +`center' +\family default +, + +\family typewriter +{{`scr', + `scr', + `scr'}, + [1,2,3]} +\family default +, + false +\end_layout + +\begin_layout Enumerate +Test if function issues no warnings +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\end_layout + +\begin_layout Enumerate +Test if size of +\family typewriter +outdata +\family default + equals the size of +\family typewriter +data +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +outdata +\family default + does not equal +\family typewriter +data +\end_layout + +\begin_layout Enumerate +According to +\family typewriter +replace_channel +\family default + test whether returned channel ids correspond to replaced channels or correspond to added channels. +\end_layout + +\begin_layout Subsubsection +Other methods +\end_layout + +\begin_layout Subsubsection* +Generate data +\end_layout + +\begin_layout Standard +Has all of the Test parameters as parameter implemented and accordingly generates the data. + It calls put nan to insert NaN values into the data. + The generated data is returned as data to the calling function. + Also all return values are stored in the property testdata (for cleanup data). +\end_layout + +\begin_layout Subsubsection* +Cleanup data +\end_layout + +\begin_layout Standard +Sits in MethodTeardown and is called once the test class has finished all tests. + It then removes all the datafiles which can be found in the property `testdata'. +\end_layout + +\begin_layout Subsubsection* +Verify NaN free +\end_layout + +\begin_layout Standard +Helper function to verify whether the data is NaN free or not. + It copes with two states. + Either a channel should have been interpolated, + then it shouldn't contain any NaN values or a channel should not have been interpolated, + then the channel should still contain NaN values. +\end_layout + +\begin_layout Subsection +pspm_load1 +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_load1_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + data, + mdltype] = pspm_load1(fn, + action, + savedata, + options) +\end_layout + +\begin_layout Subsubsection +Setup +\end_layout + +\begin_layout Standard +The datafile +\family typewriter +fn +\family default + is referring to a datafile which was generated with +\family typewriter +pspm_load1_test.generate_testdata(this) +\family default +. + The function is part of the test object and generates models for all of the available model types (defined in +\family typewriter +settings.first +\family default +). + The models are created with data generated with +\family typewriter +pspm_testdata_gen +\family default +. + Two files belong to each model: + +\family typewriter +model_.mat (fn) +\family default + and +\family typewriter +dummy_.mat (dfn) +\family default +. + The model file on the one hand is the actual model file while on the other hand, + the dummy file is a copy of the model file, + used by the test to manipulate the test data. +\end_layout + +\begin_layout Paragraph +Generated aquisition data (pspm_testdata_gen) +\end_layout + +\begin_layout Standard + +\family typewriter +data{1}.chantype = `scr'; +\end_layout + +\begin_layout Standard + +\family typewriter +data{2}.chantype = `hb'; +\end_layout + +\begin_layout Standard +The duration of the channels is +\family typewriter +100s +\family default +. +\end_layout + +\begin_layout Paragraph +Generated GLM model +\end_layout + +\begin_layout Standard + +\family typewriter +model.timing{1}.names = {`a';'b';'c'}; +\end_layout + +\begin_layout Standard + +\family typewriter +model.timing{1}.onsets = {[10, + 20, + 30], + [15, + 25, + 35], + [18, + 28, + 38]}; + +\end_layout + +\begin_layout Paragraph +Generated DCM & SF model +\end_layout + +\begin_layout Standard + +\family typewriter +model.timing{1} = [10,20; + 23,38; + 40,70;]; +\end_layout + +\begin_layout Standard + +\family typewriter +model.condition{1}.name = {`a';'b'}; +\end_layout + +\begin_layout Standard + +\family typewriter +model.condition{1}.index = [1;2]; +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid model structure (general) +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_model_tructure_general(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Tries to pass invalid data structures, + and tests for certain warnings. + Applys to all available modeltypes. +\end_layout + +\begin_layout Standard +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +empty model file +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +missing field +\family typewriter +`modelfile' +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +missing field +\family typewriter +`modeltype' +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +missing field +\family typewriter +`modality' +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +missing field +\family typewriter +`stats' +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +missing field +\family typewriter +`names' +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Invalid model structure (specific) +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_model_structure_general(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Tries to pass invalid data structures, + and tests for certain warnings. + Model specific. +\end_layout + +\begin_layout Subparagraph +Tests for GLM +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +field +\family typewriter +`stats' +\family default + is not an +\family typewriter +n x 1 +\family default + vector +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +unequal amount of numbers and parameters in field +\family typewriter +`stats' +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +options.zscored = 1 & action = `cond' +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Subparagraph +Tests for DCM & SF +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +unequal size for fields in +\family typewriter +`trlnames' +\family default + and rows in +\family typewriter +`stats' +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +missing field +\family typewriter +`trlnames' +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +unequal size for fields in +\family typewriter +`names' +\family default + and columns in +\family typewriter +`stats' +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +action = `recon' +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Subparagraph +Tests for DCM +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +options.zscored = 1 & pspm_load1(dfn, + `none', + {}, + options) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +options.zscored = 1 & pspm_load1(dfn, + `cond', + {}, + options) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +options.zscored = 1 & pspm_load1(dfn, + `stats', + {}, + options) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +- +\end_layout + +\end_inset + + + + +\end_inset + + +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Subparagraph +Tests for GLM & SF +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +options.zscored = 1 & pspm_load1(dfn, + `cond', + {}, + options) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Action `none' +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +test_action_none(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test for all modeltypes if action +\family typewriter +`none' +\family default + matches the expected behaviour. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Basic function test +\end_layout + +\begin_layout Enumerate +Test if returned data is empty. +\end_layout + +\begin_layout Paragraph +Action `stats' +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +test_action_stats(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test for all modeltypes if action +\family typewriter +`stats' +\family default + matches the expected behaviour. +\end_layout + +\begin_layout Subparagraph +Tests for all +\end_layout + +\begin_layout Enumerate +Basic function test +\end_layout + +\begin_layout Enumerate +Returned data contains field +\family typewriter +`stats' +\end_layout + +\begin_layout Enumerate +Returned data contains field +\family typewriter +`names' +\end_layout + +\begin_layout Subparagraph +Tests for DCM & SF +\end_layout + +\begin_layout Enumerate +Returned data contains field +\family typewriter +`trlnames' +\end_layout + +\begin_layout Enumerate +Returned data contains field +\family typewriter +`condnames' +\end_layout + +\begin_layout Paragraph +Action `cond' +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +test_action_cond(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test for all modeltypes if action +\family typewriter +`cond' +\family default + matches the expected behaviour. +\end_layout + +\begin_layout Subparagraph +Tests for all +\end_layout + +\begin_layout Enumerate +Basic function test +\end_layout + +\begin_layout Enumerate +Returned data contains field +\family typewriter +`stats' +\end_layout + +\begin_layout Enumerate +Returned data contains field +\family typewriter +`names' +\end_layout + +\begin_layout Subparagraph +Tests for DCM & SF +\end_layout + +\begin_layout Enumerate +Returned data contains field +\family typewriter +`trlnames' +\end_layout + +\begin_layout Enumerate +Returned data contains field +\family typewriter +`condnames' +\end_layout + +\begin_layout Paragraph +Action `recon' +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +test_action_recon(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test for all modeltypes if action +\family typewriter +`recon' +\family default + matches the expected behaviour. +\end_layout + +\begin_layout Subparagraph +Tests for GLM +\end_layout + +\begin_layout Enumerate +Basic function test +\end_layout + +\begin_layout Enumerate +Returned data contains field +\family typewriter +`stats' +\end_layout + +\begin_layout Enumerate +Returned data contains field +\family typewriter +`names' +\end_layout + +\begin_layout Standard +Tests for +\family typewriter +DCM & SF +\family default + already done in specific structure test. +\end_layout + +\begin_layout Paragraph +Action `savecon' +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +test_action_savecon(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test for all modeltypes if action +\family typewriter +`savecon' +\family default + matches the expected behaviour. + Generates a number, + passes it within the +\family typewriter +`savecon' +\family default + struct and tests if the number is returned correctly. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Basic function test +\end_layout + +\begin_layout Enumerate +Returned data contains field +\family typewriter +`con' +\end_layout + +\begin_layout Enumerate +Field +\family typewriter +`con' +\family default + contains field +\family typewriter +`test' +\end_layout + +\begin_layout Enumerate +Field +\family typewriter +`con.test' +\family default + is equal to the randomly generated number +\end_layout + +\begin_layout Paragraph +Action `con' +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +test_action_con(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test for all modeltypes if action `con' matches the expected behaviour. + Tests if the in `savecon' generated field test is still returned. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Basic function test +\end_layout + +\begin_layout Enumerate +Returned data contains field +\family typewriter +`con' +\end_layout + +\begin_layout Enumerate +Field +\family typewriter +`con' +\family default + contains field +\family typewriter +`test' +\family default +. +\end_layout + +\begin_layout Paragraph +Action `all' +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +test_action_all(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test for all modeltypes if action +\family typewriter +`all' +\family default + matches the expected behaviour. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Basic function test +\end_layout + +\begin_layout Enumerate +Returned data is not empty. +\end_layout + +\begin_layout Paragraph +Action `save' +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +test_action_save(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test for all modeltypes if action +\family typewriter +`save' +\family default + matches the expected behaviour. + Test with +\family typewriter +options.overwrite = 1 +\family default +. + Generates random number and writes it into field +\family typewriter +`test' +\family default + in model structure. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Basic function test +\end_layout + +\begin_layout Enumerate +Model structure contains field +\family typewriter +`test' +\end_layout + +\begin_layout Enumerate +Field +\family typewriter +`test' +\family default + in model structure equals to the randomly generated number. +\end_layout + +\begin_layout Paragraph +Options +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +test_options(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Test for all modeltypes if options passed with options structure cause the expected behaviour. + Does also work with a randomly generated number in +\family typewriter +.test +\family default + to test whether the data is written or not. +\end_layout + +\begin_layout Subparagraph +Tests for all +\end_layout + +\begin_layout Enumerate + +\family typewriter +overwrite = 0 +\family default + returns warning +\family typewriter +ID:not_saving_data +\family default + and field +\family typewriter +`test' +\family default + in model struct does not match generated number +\end_layout + +\begin_layout Enumerate + +\family typewriter +overwrite = 1 +\family default + field +\family typewriter +`test' +\family default + in returned model struct does match generated number +\end_layout + +\begin_layout Subparagraph +Tests for DCM +\end_layout + +\begin_layout Standard +with +\family typewriter +overwrite = 1 +\end_layout + +\begin_layout Enumerate + +\family typewriter +zscored = 0 & action = `stats' +\end_layout + +\begin_deeper +\begin_layout Enumerate +Basic function test +\end_layout + +\begin_layout Enumerate +Returned +\family typewriter +data.stats +\family default + is not zscored +\end_layout + +\end_deeper +\begin_layout Enumerate + +\family typewriter +zscored = 1 & action = `stats' +\end_layout + +\begin_deeper +\begin_layout Enumerate +Basic function test +\end_layout + +\begin_layout Enumerate +Returned +\family typewriter +data.stats +\family default + is zscored +\end_layout + +\end_deeper +\begin_layout Enumerate + +\family typewriter +zscored = 0 & action = `cond' +\end_layout + +\begin_deeper +\begin_layout Enumerate +Basic function test +\end_layout + +\begin_layout Enumerate +Returned data is different when callng with +\family typewriter +zscroed = 1 & action = `cond' +\family default + (should not zscore, + when not specified) +\end_layout + +\end_deeper +\begin_layout Subsubsection +Other methods +\end_layout + +\begin_layout Paragraph +Remove testdata +\end_layout + +\begin_layout Standard +Removes all the test data generated by the test class. + It is called once the class is finished with testing. + +\end_layout + +\begin_layout Paragraph +Basic function test +\end_layout + +\begin_layout Standard +Is called in each test after the tested function has been called. + It does two checks: +\end_layout + +\begin_layout Itemize +Returned modeltype matches the modeltype stored in the returned model structure +\end_layout + +\begin_layout Itemize +Returned status +\family typewriter +sts==1 +\end_layout + +\begin_layout Subsection +pspm_load_data +\end_layout + +\begin_layout Quote +Reviewed and updated by Teddy on 19 April 2022 +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_load_data_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + infos, + data, + filestruct] = pspm_load_data(fn, + chan) +\end_layout + +\begin_layout Subsubsection +Setup +\end_layout + +\begin_layout Standard +If not otherwise declared, + the input variable fn is referring to a datafile which was generated with +\family typewriter +pspm_testdata_gen +\family default + and consists out of the following channels: +\end_layout + +\begin_layout Description + +\family typewriter +data{1}.chantype `scr'; +\end_layout + +\begin_layout Description + +\family typewriter +data{2}.chantype `marker'; +\end_layout + +\begin_layout Description + +\family typewriter +data{3}.chantype `hr'; +\end_layout + +\begin_layout Description + +\family typewriter +data{4}.chantype `hb'; +\end_layout + +\begin_layout Description + +\family typewriter +data{5}.chantype `marker'; + +\end_layout + +\begin_layout Description + +\family typewriter +data{6}.chantype `resp'; +\end_layout + +\begin_layout Description + +\family typewriter +data{7}.chantype `scr'; +\end_layout + +\begin_layout Standard +The duration of the channels is +\family typewriter +10s +\family default +. + +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input arguments +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_inputargs(testCase) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the input arguments are invalid. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +# +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Issue +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +No filename +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +/ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +No char filename +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +3 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Negative channel number +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +fn, + -1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +4 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +No allowed ch type +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +fn, + `foobar' +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +5 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Missing field in foo struct +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +fn, + foo +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +6 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Invalid channel option +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +fn, + {1} +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +7 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Struct has no infos field +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +struct +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +8 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Nonexisting channel +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +fn, + 250 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Invalid datafile +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_datafile(testCase) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the datafile is invalid. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +# +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Issue +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +non-existent datafile +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:nonexistent_file +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +missing ‘infos' variable +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +3 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +missing ‘data' variable +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +4 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +missing ‘data' field in ‘data{2}' +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +5 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +missing ‘header' field ‘data{3}' +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +6 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +missing ‘sr' field in ‘data{7}.header' +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +7 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +data{4} is a nx2 vector (instead of a nx1 vector) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +8 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +the length of data{1}.data is incompatible with the duration +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +9 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +An entry of data{2}.data is larger than ‘duration' +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +10 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +data{5} has an non-existent chantype (‘scanner') +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +11 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +duplicates (9) with struct chan input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Return all channels +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +valid_datafile_0(testCase) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks the function, + if all channels shall be returned ( +\family typewriter +chan = 0 +\family default +). + +\end_layout + +\begin_layout Paragraph +Return all channels (struct input) +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +valid_datafile_1(testCase) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks the function, + if all channels shall be returned ( +\family typewriter +chan = 0 +\family default +) and the input is a struct. + +\end_layout + +\begin_layout Paragraph +Return one channel +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +valid_datafile_2(testCase) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks the function, + if only one channel shall be returned ( +\family typewriter +chan = 2 +\family default +). + +\end_layout + +\begin_layout Paragraph +Return multiple channels +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +valid_datafile_3(testCase) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks the function, + if multiple channels shall be returned ( +\family typewriter +chan = [3 5] +\family default +). + +\end_layout + +\begin_layout Paragraph +Return scr channels +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +valid_datafile_4(testCase) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks the function, + if only the scr channels shall be returned. + +\end_layout + +\begin_layout Paragraph +Return event channels +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +valid_datafile_5(testCase) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks the function, + if only the event channels shall be returned. + +\end_layout + +\begin_layout Paragraph +Save data +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +valid_datafile_6(testCase) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks the function, + if data is to be saved ( +\family typewriter +chan struct +\family default +). + +\end_layout + +\begin_layout Subsection +pspm_pp +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_pp_test +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +newfile = pspm_pp(`median', + datafile, + n, + channelnumber) +\family default + or +\family typewriter +newfile = pspm_pp(`butter', + datafile, + freq, + channelnumber) +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_input(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the input arguments are invalid. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\noindent +\align center +\begin_inset Tabular + + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +# +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Issue +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Parameters of the function +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +No frequency +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +`butter', + `file' +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +No valid first argument +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +`foo', + `file', + 100 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +3 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Freq below +\family typewriter +20 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +`butter', + `file', + 19 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Median test +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +median_test(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks medianfilter functionality +\end_layout + +\begin_layout Subparagraph +Setup +\end_layout + +\begin_layout Standard +Testfile with +\family typewriter +3 +\family default + channels ( +\family typewriter +scr +\family default +, + +\family typewriter +hb +\family default +, + +\family typewriter +scr +\family default +). +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Filter one channel +\family typewriter +[Input: + newfile = pspm_pp(`median', + testfile, + 50, + 3)] +\end_layout + +\begin_deeper +\begin_layout Standard +i. + Check if +\family typewriter +sts == 1 +\family default +, + when data is loaded with +\family typewriter +pspm_load_data +\family default +. + +\end_layout + +\begin_layout Standard +ii. + Check if newfile has the same number of channels as testfile +\end_layout + +\end_deeper +\begin_layout Enumerate +Filter multiple channel +\family typewriter +[Input: + newfile = pspm_pp(`median', + testfile, + 50)] +\end_layout + +\begin_deeper +\begin_layout Standard +i. + Check if +\family typewriter +sts == 1 +\family default +, + when data is loaded with +\family typewriter +pspm_load_data +\family default +. + +\end_layout + +\begin_layout Standard +ii. + Check if newfile has the same number of channels as testfile +\end_layout + +\end_deeper +\begin_layout Paragraph +Butterworth filter test +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +butter_test(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks Butterworth filter functionality +\end_layout + +\begin_layout Subparagraph +Setup +\end_layout + +\begin_layout Standard +Testfile with 3 channels ( +\family typewriter +scr +\family default +, + +\family typewriter +hb +\family default +, + +\family typewriter +scr +\family default +). +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Filter one channel +\family typewriter +[Input: + newfile = pspm_pp(`butter', + testfile, + 40, + 3)] +\end_layout + +\begin_deeper +\begin_layout Standard +i. + Check if +\family typewriter +sts == 1, + +\family default + when data is loaded with +\family typewriter +pspm_load_data +\family default +. + +\end_layout + +\begin_layout Standard +ii. + Check if newfile has the same number of channels as testfile +\end_layout + +\end_deeper +\begin_layout Enumerate +Filter multiple channel +\family typewriter +[Input: + newfile = pspm_pp(`butter', + testfile, + 40)] +\end_layout + +\begin_deeper +\begin_layout Standard +i. + Check if +\family typewriter +sts == 1 +\family default +, + when data is loaded with +\family typewriter +pspm_load_data +\family default +. + +\end_layout + +\begin_layout Standard +ii. + Check if newfile has the same number of channels as testfile +\end_layout + +\end_deeper +\begin_layout Subsection +pspm_prepdata +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_prepdata_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + outdata, + newsr] = pspm_prepdata(data, + filt) +\family default + +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_input(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the input arguments are invalid. +\end_layout + +\begin_layout Subparagraph +\noindent +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Subparagraph +\noindent +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_prepdata([1 NaN 3], + filt) [NaN values in data] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_prepdata([1 2 3]) [no filt variable] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_prepdata(data, + filt) [filt has no hporder field] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_prepdata(`foo', + filt) [no numeric data] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_prepdata(data, + filt) [with lpfreq = `foo' (not valid)] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Hipassfilter test +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +hipassfilter_test(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks hipassfilter functionality (without downsampling) +\end_layout + +\begin_layout Subparagraph +Setup +\end_layout + +\begin_layout Description + +\family typewriter +data rand(1000,1) +\end_layout + +\begin_layout Description + +\family typewriter +filt.sr 100 +\end_layout + +\begin_layout Description + +\family typewriter +filt.lpfreq `none' +\end_layout + +\begin_layout Description + +\family typewriter +filt.lporder 1 +\end_layout + +\begin_layout Description + +\family typewriter +filt.hpfreq 20 +\end_layout + +\begin_layout Description + +\family typewriter +filt.hporder 1 +\end_layout + +\begin_layout Description + +\family typewriter +filt.down `none' +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Unidirectional tests +\family typewriter +[filt.direction = ‘uni'] +\end_layout + +\begin_deeper +\begin_layout Standard +i. + Check if +\family typewriter +sts == 1 +\end_layout + +\begin_layout Standard +ii. + Check if +\family typewriter +newsr == filt.sr +\end_layout + +\begin_layout Standard +iii. + Check if +\family typewriter +outdata +\family default + is empty +\end_layout + +\begin_layout Standard +iv. + Check if +\family typewriter +length(outdata) == length(data) +\end_layout + +\end_deeper +\begin_layout Enumerate +Unidirectional tests +\family typewriter +[filt.direction = ‘bi'] +\end_layout + +\begin_deeper +\begin_layout Standard +i. + Check if +\family typewriter +sts == 1 +\end_layout + +\begin_layout Standard +ii. + Check if +\family typewriter +newsr == filt.sr +\end_layout + +\begin_layout Standard +iii. + Check if +\family typewriter +outdata +\family default + is empty +\end_layout + +\begin_layout Standard +iv. + Check if +\family typewriter +length(outdata) == length(data) +\end_layout + +\end_deeper +\begin_layout Paragraph +Lowpassfilter test +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +lowpassfilter_test(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks hipassfilter functionality (without downsampling) +\end_layout + +\begin_layout Subparagraph +Setup +\end_layout + +\begin_layout Description + +\family typewriter +data rand(1000,1) +\end_layout + +\begin_layout Description + +\family typewriter +filt.sr 100 +\end_layout + +\begin_layout Description + +\family typewriter +filt.lpfreq 40 +\end_layout + +\begin_layout Description + +\family typewriter +filt.lporder 1 +\end_layout + +\begin_layout Description + +\family typewriter +filt.hpfreq `none' +\end_layout + +\begin_layout Description + +\family typewriter +filt.hporder 1 +\end_layout + +\begin_layout Description + +\family typewriter +filt.down `none' +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Standard +Same tests as in +\family typewriter +hipassfilter_test +\family default +. + Additionally there is a check for a warning if +\family typewriter +filt.lpfreq +\family default + is higher (or equal) than the nyquist frequency +\end_layout + +\begin_layout Standard +\noindent +\align center +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_prepdata(data, + filt) [filt.sr = 100; + filt.lpfreq = 60] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:no_low_pass_filtering +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Bandpassfilter test +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +bandpassfilter_test(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks bandpassfilter functionality (without downsampling). +\end_layout + +\begin_layout Subparagraph +Setup +\end_layout + +\begin_layout Description + +\family typewriter +data rand(1000,1) +\end_layout + +\begin_layout Description + +\family typewriter +filt.sr 200 +\end_layout + +\begin_layout Description + +\family typewriter +filt.lpfreq 99 +\end_layout + +\begin_layout Description + +\family typewriter +filt.lporder 1 +\end_layout + +\begin_layout Description + +\family typewriter +filt.hpfreq 20 +\end_layout + +\begin_layout Description + +\family typewriter +filt.hporder 1 +\end_layout + +\begin_layout Description + +\family typewriter +filt.down `none' +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Standard +Same tests as in hipassfilter_test. + +\end_layout + +\begin_layout Paragraph +Integer samplerate ratio downsampling test +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard +int_sr_ratio_downsample_test(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks downsampling functionality, + if the ratio between filt.sr and filt.down is an integer. +\end_layout + +\begin_layout Subparagraph +Setup +\end_layout + +\begin_layout Description + +\family typewriter +ratio 2 % ratio between filt.sr and filt.down +\end_layout + +\begin_layout Description + +\family typewriter +filt.down 100 +\end_layout + +\begin_layout Description + +\family typewriter +filt.sr ratio*filt.down +\end_layout + +\begin_layout Description + +\family typewriter +filt.lpfreq 40 +\end_layout + +\begin_layout Description + +\family typewriter +filt.lporder 1 +\end_layout + +\begin_layout Description + +\family typewriter +filt.hpfreq `none' +\end_layout + +\begin_layout Description + +\family typewriter +filt.hporder 1 +\end_layout + +\begin_layout Description + +\family typewriter +filt.direction `uni' +\end_layout + +\begin_layout Standard +and +\family typewriter +data = rand(filt.sr * 10,1) +\family default +. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Check if +\family typewriter +sts == 1 +\end_layout + +\begin_layout Enumerate +Check if +\family typewriter +newsr == filt.down +\end_layout + +\begin_layout Enumerate +Check if +\family typewriter +outdata +\family default + is empty +\end_layout + +\begin_layout Enumerate +Check if +\family typewriter +ratio*length(outdata) == length(data) +\end_layout + +\begin_layout Subsection +pspm_process_illuminance +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_process_illuminance_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + out] = pspm_process_illuminance(ldata, + sr, + options) +\end_layout + +\begin_layout Subsubsection +Setup +\end_layout + +\begin_layout Standard +This test class is parameterised. + The test data is generated by the function itself and when needed, + files will be written to +\family typewriter +datafile.mat +\family default +. +\end_layout + +\begin_layout Paragraph +Test parameters +\end_layout + +\begin_layout Standard +These are parameters which define what kind of data should be passed to +\family typewriter +pspm_process_illuminance +\family default + and which options should be set. +\end_layout + +\begin_layout Description + +\family typewriter +\series medium +bf_dur +\family roman +\shape up +\size normal +\emph off +\bar no +\strikeout off +\xout off +\uuline off +\uwave off +\noun off +\color none + Defines the duration of the basis function. +\end_layout + +\begin_layout Description + +\family typewriter +\series medium +bf_offset +\family roman +\shape up +\size normal +\emph off +\bar no +\strikeout off +\xout off +\uuline off +\uwave off +\noun off +\color none + Defines the offset of the basis function. +\end_layout + +\begin_layout Description + +\family typewriter +\series medium +dur +\family roman +\shape up +\size normal +\emph off +\bar no +\strikeout off +\xout off +\uuline off +\uwave off +\noun off +\color none + Defines the duration of the generated dataset. +\end_layout + +\begin_layout Description + +\family typewriter +\series medium +sr +\family roman +\shape up +\size normal +\emph off +\bar no +\strikeout off +\xout off +\uuline off +\uwave off +\noun off +\color none + Defines the samplerate of the generated dataset. +\end_layout + +\begin_layout Description + +\family typewriter +\series medium +n_times +\family roman +\shape up +\size normal +\emph off +\bar no +\strikeout off +\xout off +\uuline off +\uwave off +\noun off +\color none + Defines how many datasets should be generated. +\end_layout + +\begin_layout Description + +\family typewriter +\series medium +mode +\family roman +\shape up +\size normal +\emph off +\bar no +\strikeout off +\xout off +\uuline off +\uwave off +\noun off +\color none + Defines the whether the dataset should be written to a file, + kept as inline variable or should be a mix of both. + Can be either +\family typewriter +\series default +\shape default +\size default +\emph default +\bar default +\strikeout default +\xout default +\uuline default +\uwave default +\noun default +\color inherit +`file' +\family roman +\series medium +\shape up +\size normal +\emph off +\bar no +\strikeout off +\xout off +\uuline off +\uwave off +\noun off +\color none +, + +\family typewriter +\series default +\shape default +\size default +\emph default +\bar default +\strikeout default +\xout default +\uuline default +\uwave default +\noun default +\color inherit +`inline' +\family roman +\series medium +\shape up +\size normal +\emph off +\bar no +\strikeout off +\xout off +\uuline off +\uwave off +\noun off +\color none + or +\family typewriter +\series default +\shape default +\size default +\emph default +\bar default +\strikeout default +\xout default +\uuline default +\uwave default +\noun default +\color inherit +`mixed' +\family default +. +\end_layout + +\begin_layout Description + +\family typewriter +\series medium +overwrite +\family roman +\shape up +\size normal +\emph off +\bar no +\strikeout off +\xout off +\uuline off +\uwave off +\noun off +\color none + Defines whether existing files should be overwritten or not. +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_input(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the input arguments are invalid. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\noindent +\align center +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Test No. +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_process_illuminance() [no arguments] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_process_illuminance([]) [empty data] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:missing_data +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +3 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_process_illuminance(1:10) [missing samplerate] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +4 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_process_illuminance(1:10, + `a') [invalid ssamplerate] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +5 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_process_illuminance({1:10}, + 1) [cell, + no cell] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +6 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_process_illuminance(1:10, + {1}) [no cell, + cell] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +7 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_process_illuminance({1:10, + 10:10}, + {1}) [different sized cells] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +8 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_process_illuminance({1:10, + `a'},{1,2}) [invalid file] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:non_existent_file +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +9 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_process_illuminance({1:10, + 1:10}, + {1, + `a'}) [invalid samplerate] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +10 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_process_illuminance({1:10}, + {1}, + `o') [wrong options] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +11 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_process_illuminance({1:10}, + {1}, + opt)[wrong transfer settings] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +12 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_process_illuminance({1:10}, + {1}, + opt)[wrong duration] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +13 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_process_illuminance({1:10}, + {1}, + opt)[wrong offset] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +14 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_process_illuminance({1:10}, + {1}, + opt)[wrong outputfile] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +15 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_process_illuminance({1:10}, + {1}, + opt)[format of ldata and opt.fn differs] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +16 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_process_illuminance({1:10}, + {1}, + opt)[opt.overwrite is not boolean] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Test options +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_options(this, + sr, + dur, + bf_dur, + bf_offset) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Tries out different combination options to process the generated illuminance data. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate data with +\family typewriter +sr +\family default + and +\family typewriter +dur +\end_layout + +\begin_layout Enumerate +Set options according to +\family typewriter +bf_dur +\family default + and +\family typewriter +bf_offset +\end_layout + +\begin_layout Enumerate +Set expected warning according to +\family typewriter +sr*dur +\family default + and +\family typewriter +sr*bf_dur +\end_layout + +\begin_deeper +\begin_layout Enumerate +expect empty data if +\family typewriter +sr*dur < 1 +\end_layout + +\begin_layout Enumerate +expect invalid_input if +\family typewriter +sr*bf_dur < 1 +\end_layout + +\begin_layout Enumerate +otherwise expect no warning +\end_layout + +\end_deeper +\begin_layout Enumerate +Test if issued warning equals expected warning +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts +\family default + equals expected value +\end_layout + +\begin_layout Enumerate +Test if amount of data elements of input and output data is equal +\end_layout + +\begin_layout Paragraph +Test multi +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_multi(this, + n_times, + mode) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Generates n sets of illuminance data and passes it to +\family typewriter +pspm_process_illuminance +\family default +. +\end_layout + +\begin_layout Subparagraph +Steps +\end_layout + +\begin_layout Enumerate +Generate data with +\family typewriter +10 +\family default + ( +\family typewriter +sr +\family default +), + 100 ( +\family typewriter +dur +\family default +), + +\family typewriter +n_times +\family default + ( +\family typewriter +amount +\family default +), + mode +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +pspm_process_illuminance +\family default + issues no warning +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\end_layout + +\begin_layout Enumerate +For +\family typewriter +n_times == 1 +\family default +, + test if out has +\family typewriter +10×100 +\family default + data points +\end_layout + +\begin_layout Enumerate +For +\family typewriter +n_times +\begin_inset space \space{} +\end_inset + +~= 1 +\family default +, + test if output has same size as input +\end_layout + +\begin_layout Paragraph +Test overwrite +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_overwrite(this, + overwrite) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Generate illuminance file and test overwrite behaviour. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Generate data with +\family typewriter +10 +\family default + ( +\family typewriter +sr +\family default +), + +\family typewriter +100 +\family default + ( +\family typewriter +dur +\family default +), + +\family typewriter +1 +\family default + ( +\family typewriter +amount +\family default +), + +\family typewriter +`file' +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +pspm_process_illuminance +\family default + issues no warning +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +sts==1 +\end_layout + +\begin_layout Enumerate +Test if existing file was overwriten or not +\end_layout + +\begin_layout Subsubsection +Other methods +\end_layout + +\begin_layout Paragraph +Generate lx +\end_layout + +\begin_layout Standard +Has some of the Test parameters as parameter implemented and accordingly generates the +\family typewriter +lx +\family default + data. + According to the calling arguments the output is a cell of files and data vectors. + All generated files will be stored in the property +\family typewriter +`datafiles' +\family default +. + They will be removed once all tests have finished. +\end_layout + +\begin_layout Paragraph +Cleanup +\end_layout + +\begin_layout Standard +Located in MethodTeardown and is called once the test class has finished all tests. + It then removes all the datafiles which can be found in the property +\family typewriter +`datafiles' +\family default +. +\end_layout + +\begin_layout Subsection +pspm_pulse_convert +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_pulse_convert_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +[sts, + wavedata] = pspm_pulse_convert(pulsedata, + resamplingrate, + samplingrate) +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_input(testCase) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Pass invalid input arguments and test if the error message is correct. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\noindent +\align center +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_pulse_convert() +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_pulse_convert(10^-3 * (1:10000)') +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_pulse_convert(10^-3 * (1:10000)', + 10000) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Valid input +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +valid_input(testCase) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Pass generated, + valid data and test if function issues no warning. +\end_layout + +\begin_layout Subparagraph +Steps +\end_layout + +\begin_layout Enumerate +Test function without downsampling the data +\end_layout + +\begin_layout Enumerate +Test function with downsampling the data +\end_layout + +\begin_layout Subsection +pspm_ren +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_ren_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +out_newfilename = pspm_ren(filename, + newfilename) +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_input (this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the input arguments are invalid. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\noindent +\align center +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_ren(`fn') [no newfilename] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_ren({`fn1', + `fn2'}, + {`rfn1', + `rfn2', + `rfn3'}) [non same size cell arrays] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Char Valid Input +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +char_valid_input (this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks the function if the input variables are of type char. + It uses +\family typewriter +pspm_load_data +\family default + to check the files. +\end_layout + +\begin_layout Subparagraph +Steps +\end_layout + +\begin_layout Enumerate +Check if +\family typewriter +out_newefilename = newfilename +\end_layout + +\begin_layout Enumerate +Check if +\family typewriter +sts==1 +\family default + (of +\family typewriter +pspm_load_data output +\family default +) +\end_layout + +\begin_layout Enumerate +Check if the field +\family typewriter +‘infos.rendata' +\family default + exists +\end_layout + +\begin_layout Enumerate +Check if the field +\family typewriter +‘infos.newname' +\family default + exists +\end_layout + +\begin_layout Enumerate +Check if the original file has been deleted +\end_layout + +\begin_layout Paragraph +Cell Valid Input +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +cell_valid_input (this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks the function if the input variables are of type cell. + It uses +\family typewriter +pspm_load_data +\family default + to check the files. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Standard +The inputs are two-element cell arrays. + For both elements the same tests as in the +\family typewriter +char_valid_input +\family default + function are performed individually. +\end_layout + +\begin_layout Subsection +pspm_resp_pp +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_resp_pp_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +sts = pspm_resp_pp(fn, + sr, + chan, + options) +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Regression Test against Revision r660 +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +compare_results_to_results_obtained_from_r660_version(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +In r660, + there was a bug found in +\family typewriter +pspm_resp_pp +\family default + that caused it to crash with index out of bounds error on inputs containing some edgecase. + This test specifically checks whether the fixed version returns the same results as the version before the bugfix on data that didn't cause a crash. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Check if the returned channel types have the same name and ordering +\end_layout + +\begin_layout Enumerate +Check if the returned data is the same +\end_layout + +\begin_layout Subsection +pspm_scr_pp +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_scr_pp_test +\end_layout + +\begin_layout Subparagraph +Properties +\end_layout + +\begin_layout Standard +... +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard +... +\end_layout + +\begin_layout Subsection +pspm_split_sessions +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_split_sessions_test +\end_layout + +\begin_layout Subparagraph +Properties +\end_layout + +\begin_layout Standard + +\family typewriter +expected_number_of_files = 3 +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +newdatafile = pspm_split_sessions(datafile, + markerchannel, + options) +\end_layout + +\begin_layout Subsubsection +Setup +\end_layout + +\begin_layout Standard +For the tests a testdatafile with three channels is used (duration is +\family typewriter +100s +\family default +). + The markerchannel data is +\end_layout + +\begin_layout Standard + +\family typewriter +data = [1 4 9 12 30 31 34 41 43 59 65 72 74 80 89 96]' +\family default +. +\begin_inset Newline newline +\end_inset + +Hence if +\family typewriter +MAXSN==10 +\family default + and +\family typewriter +BRK2NORM==3 +\family default + (default values), + the datafiles should be split into 3 files. + If different values are being used, + update the property +\family typewriter +‘expected_number_of_files' +\family default + of the testclass object accordingly. + +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_input (this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the input arguments are invalid. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline newline +\end_inset + + +\end_layout + +\begin_layout Standard +\noindent +\align center +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_split_sessions() [no filename] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_split_sessions (2) [no string filename] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_split_sessions (‘fn', + ‘foo') [no numeric marker channel no.] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +One datafile +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +one_datafile(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks the function if the variable +\family typewriter +‘datafile' +\family default + is of type char (one datafile). + The markerchannel number is not assigned explicitly. +\end_layout + +\begin_layout Subparagraph +Steps +\end_layout + +\begin_layout Enumerate +Check if the file has been split into +\family typewriter +‘expected_number_of_files' +\family default + files For each output file the following tests are performed: +\end_layout + +\begin_layout Enumerate +Check if +\family typewriter +sts == 1 +\family default +, + when data is loaded with +\family typewriter +pspm_load_data +\family default +. +\end_layout + +\begin_layout Enumerate +Check if number of channels is correct. +\end_layout + +\begin_layout Enumerate +Check it the field +\family typewriter +infos.slitdate +\family default + exists +\end_layout + +\begin_layout Enumerate +Check if the field +\family typewriter +infos.splitsn +\family default + exists +\end_layout + +\begin_layout Enumerate +Check if the field +\family typewriter +infos.splitfile +\family default + exists. + +\end_layout + +\begin_layout Paragraph +Multiple datafiles +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +multiple_datafiles(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks the function if the variable +\family typewriter +‘datafile' +\family default + is of type cell (two datafiles). + The markerchannel number is assigned explicitly. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Standard +For both datafiles the same tests as in the +\family typewriter +one_datafile +\family default + function are performed individually. + Additionally it is tested if the number of input files does match the number of output files. + +\end_layout + +\begin_layout Subsection +pspm_trim +\end_layout + +\begin_layout Standard +Reviewed and updated by Teddy on 19 April 2022 +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_trim_test +\end_layout + +\begin_layout Subparagraph +Function +\end_layout + +\begin_layout Standard + +\family typewriter +newdatafile = pspm_trim(datafile, + from, + to, + reference, + options) +\end_layout + +\begin_layout Subsubsection +Setup +\end_layout + +\begin_layout Standard +If not otherwise declared, + the input variable fn is referring to a datafile which was generated with +\family typewriter +pspm_testdata_gen +\family default + and consists of the following channels +\end_layout + +\begin_layout Description + +\family typewriter +data{1}.chantype `scr' +\end_layout + +\begin_layout Description + +\family typewriter +data{2}.chantype `marker' +\end_layout + +\begin_layout Description + +\family typewriter +data{3}.chantype `hr' +\end_layout + +\begin_layout Description + +\family typewriter +data{4}.chantype `hb' +\end_layout + +\begin_layout Description + +\family typewriter +data{5}.chantype `marker' +\end_layout + +\begin_layout Description + +\family typewriter +data{6}.chantype `resp' +\end_layout + +\begin_layout Description + +\family typewriter +data{7}.chantype `scr' +\end_layout + +\begin_layout Standard +The duration of the data recording is +\family typewriter +10s +\family default +. + +\end_layout + +\begin_layout Subsubsection +Testcases +\end_layout + +\begin_layout Paragraph +Invalid input arguments +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +invalid_inputargs(testCase) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks for warnings, + if the input arguments are invalid. +\end_layout + +\begin_layout Subparagraph +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + +\begin_layout Standard +\noindent +\align center +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_trim(testCase.fn, + [1 2], + 5, + `marker') [invalid from parameter] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_trim(testCase.fn, + 0, + `bla', + `marker') [invalid to parameter] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_trim(testCase.fn, + 0, + `[]', + `marker') [invalid to parameter] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_trim(fn, + 0, + 5) [no reference] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_trim(fn, + 0, + 5, + 6) [no char or 2-element numeric reference] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_trim(fn, + 0, + 5, + ‘bla') [invalid char reference] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_trim(fn, + 0, + 5, + [-1 5]) [invalid numeric start reference] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_trim(fn, + 0, + 5, + [5 4]) [invalid numeric start/end reference] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Testing 'marker' as reference +\end_layout + +\begin_layout Itemize + +\series bold +Function name +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +marker_tests(testCase) +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Description +\end_layout + +\begin_deeper +\begin_layout Itemize +A wrapper function for tests with +\family typewriter +reference = `marker' +\family default +. + It executes the methods +\family typewriter +markertest_k +\family default +, + where the testcases are defined. + +\end_layout + +\end_deeper +\begin_layout Subparagraph +markertest_1 +\end_layout + +\begin_layout Itemize + +\series bold +Description +\end_layout + +\begin_deeper +\begin_layout Itemize +from and to are set so that the trimming points are out of the range +\family typewriter +[0,duration] +\family default +. + Hence the data should not be trimmed. +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Expected warning +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +ID: + marker_out_of_range +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Input +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +pspm_trim(fn, + -20, + 20, + `marker') +\end_layout + +\end_deeper +\begin_layout Subparagraph +markertest_2 +\end_layout + +\begin_layout Itemize + +\series bold +Description +\end_layout + +\begin_deeper +\begin_layout Itemize +from and to are set so that the trimming points are exactly +\family typewriter +(0, + duration) +\family default +. + Hence the data should not be trimmed. +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Input +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +from -1 * marker(1) +\end_layout + +\begin_layout Itemize + +\family typewriter +to duration - marker(end) +\end_layout + +\begin_layout Itemize +then +\family typewriter +pspm_trim(fn, + from, + to, + `marker') +\end_layout + +\end_deeper +\begin_layout Subparagraph +markertest_3 +\end_layout + +\begin_layout Itemize + +\series bold +Description +\end_layout + +\begin_deeper +\begin_layout Itemize +from and to are set so that the trimming points in the range [0,duration]. +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Input +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +pspm_trim(fn, + 1, + -2, + `marker') +\end_layout + +\end_deeper +\begin_layout Paragraph +Testing 'file' as reference +\end_layout + +\begin_layout Itemize + +\series bold +Function name +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +file_tests(testCase) +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Description +\end_layout + +\begin_deeper +\begin_layout Itemize +A wrapper function for tests with +\family typewriter +reference = ‘file' +\family default +. + It executes the methods +\family typewriter +filetest_k +\family default +, + where the testcases are defined. + +\end_layout + +\end_deeper +\begin_layout Subparagraph +filetest_1 +\end_layout + +\begin_layout Itemize + +\series bold +Description +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +from +\family default + and +\family typewriter +to +\family default + are set so that the trimming points are out of the range +\family typewriter +[0,duration] +\family default +. + Hence the data should not be trimmed. +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Expected warning +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +ID: + marker_out_of_range +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Input +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +pspm_trim(fn, + -12.5, + 50, + `marker') +\end_layout + +\end_deeper +\begin_layout Subparagraph +filetest_2 +\end_layout + +\begin_layout Itemize + +\series bold +Description +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +from +\family default + and +\family typewriter +to +\family default + are set so that the trimming points are exactly +\family typewriter +(0, + duration) +\family default +. + Hence the data should not be trimmed. +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Input +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +pspm_trim(fn, + 0 , + duration, + `marker') +\end_layout + +\end_deeper +\begin_layout Subparagraph +filetest_3 +\end_layout + +\begin_layout Itemize + +\series bold +Description +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +from +\family default + and +\family typewriter +to +\family default + are set so that the trimming points in the range +\family typewriter +[0, + duration] +\family default +. +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Input +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +pspm_trim(fn,2.1, + duration – 2.5, + `marker') +\end_layout + +\end_deeper +\begin_layout Paragraph +Numeric reference tests +\end_layout + +\begin_layout Itemize + +\series bold +Function name +\end_layout + +\begin_deeper +\begin_layout Itemize + +\family typewriter +num_tests(testCase) +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Description +\end_layout + +\begin_deeper +\begin_layout Itemize +A wrapper function for tests with +\family typewriter +reference = [a b] +\family default + ( +\family typewriter +a, + b +\family default + are two integers with +\family typewriter +a + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Input +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Expected warning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_write_channel() [no parameter] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_write_channel(1) [fn is a number] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_write_channel(`some_file', + []) [no action passed] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:unknown_action +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_write_channel(`some_file', + [], + `') [empty action passed] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:unknown_action +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +options.channel = `some invalid channel'pspm_write_channel(`some_file', + [], + `add', + options) [invalid channel] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +options.channel = -1pspm_write_channel(`some_file', + [], + `add', + options) [negative channel] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +options.channel = 0pspm_write_channel(`some_file', + [], + `delete', + options) [no channel and no data given] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +options.channel = 0pspm_write_channel(`some_file', + [], + `add', + options) [empty newdata] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +options.channel = 0pspm_write_channel(`some_file', + 1:3, + `add', + options) [newdata is not cell and not struct] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +options.channel = 1:5pspm_write_channel(this.testdatafile, + [], + `delete', + options) [more given channels than in file exist] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_input +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +options.channel = `ecg'; + pspm_write_channel(this.testdatafile, + [], + `delete', + options) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:no_matching_channels +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_write_channel(this.testdatafile, + gen_data.data{1}, + `add') [generated data has the wrong format (two rows in one channel)] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +ID:invalid_data_structure +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Action `add' +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_add(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks if action +\family typewriter +`add' +\family default + behaves as expected. + A new channel with +\family typewriter +chantype = `hb' +\family default +, + +\family typewriter +sr = 200 +\family default + and +\family typewriter +duration = 500 +\family default + is generated. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Load condition before and after and pass it to +\family typewriter +`Verify write' +\end_layout + +\begin_layout Paragraph +Action `add transposed' +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_add_transposed(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks if action +\family typewriter +`add' +\family default + behaves as expected, + when data has the wrong dimensions. + A new channel with +\family typewriter +chantype = `rs' +\family default +, + +\family typewriter +sr = 200 +\family default + and +\family typewriter +duration = 500 +\family default + is generated. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Transpose generated data +\end_layout + +\begin_layout Enumerate +Load condition before and after and pass it to +\family typewriter +`Verify write' +\end_layout + +\begin_layout Paragraph +Action `replace'/'add' +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_replace_add(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks if action +\family typewriter +`replace' +\family default + behaves as expected. + A new channel with +\family typewriter +chantype = `hr' +\family default +, + +\family typewriter +sr = 10 +\family default + and +\family typewriter +duration = 500 +\family default + is generated. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Running +\family typewriter +pspm_write_channel +\family default + with +\family typewriter +action = `replace' +\family default + should issue +\family typewriter +`ID:no_matching_channels' +\family default + (channeltype should not exist before) and then instead add the channel +\end_layout + +\begin_layout Enumerate +Load condition before and after and pass it to +\family typewriter +`Verify write' +\end_layout + +\begin_layout Paragraph +Action `replace' +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_replace(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks if action +\family typewriter +`replace' +\family default + behaves as expected. + A new channel with +\family typewriter +chantype = `hr' +\family default +, + +\family typewriter +sr = 20 +\family default + and +\family typewriter +duration = 500 +\family default + is generated. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Load condition before and after and pass it to +\family typewriter +`Verify write' +\end_layout + +\begin_layout Enumerate +Test if +\family typewriter +`hr' +\family default + channel has sample rate +\family typewriter +20 +\end_layout + +\begin_layout Paragraph +Action `delete' (one channel) +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_delete_single(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks if action +\family typewriter +`delete' +\family default + behaves as expected. + In this test only one channel will be deleted. + To test the delete algorithm there will be +\family typewriter +7 +\family default + channels added which are then also used for +\family typewriter +test_delete_multi(this) +\family default +. + The particular channels are then identified by the sample rate which corresponds to the channel +\family typewriter +id * 10 +\family default +. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Delete channel with +\family typewriter +chantype = `hr' +\family default + in newdata.header.chantype +\end_layout + +\begin_deeper +\begin_layout Enumerate +Verify write +\end_layout + +\begin_layout Enumerate +Ensure only one channel has been deleted +\end_layout + +\begin_layout Enumerate +Test if there is no more channel with +\family typewriter +chantype = `hr' +\end_layout + +\end_deeper +\begin_layout Enumerate +Delete channel with channel number in +\family typewriter +options.channel +\end_layout + +\begin_deeper +\begin_layout Enumerate +Verify Write +\end_layout + +\begin_layout Enumerate +Ensure only one channel has been deleted +\end_layout + +\end_deeper +\begin_layout Enumerate +Test the delete algorithm +\end_layout + +\begin_deeper +\begin_layout Enumerate +Remove +\family typewriter +`resp' +\family default + channel with +\family typewriter +options.delete = `last' +\end_layout + +\begin_deeper +\begin_layout Enumerate +Verify write +\end_layout + +\begin_layout Enumerate +Ensure only one channel has been deleted +\end_layout + +\begin_layout Enumerate +Test if last channel was deleted +\end_layout + +\end_deeper +\begin_layout Enumerate +Remove +\family typewriter +`resp' +\family default + channel with +\family typewriter +options.delete = `first' +\end_layout + +\begin_deeper +\begin_layout Enumerate +Verify write +\end_layout + +\begin_layout Enumerate +Ensure only one channel has been deleted +\end_layout + +\begin_layout Enumerate +Test if last entry was not deleted +\end_layout + +\end_deeper +\end_deeper +\begin_layout Paragraph +Action `delete' (multiple channels) +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +test_delete_multi(this) +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard +Checks if action +\family typewriter +`delete' +\family default + behaves as expected. + In this test only multiple channels will be deleted. + This test relys on the changes made to the testdatafile by other test functions in this class. + +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +Delete channel 1 and 2 from testdatafile +\end_layout + +\begin_deeper +\begin_layout Enumerate +Verify write +\end_layout + +\begin_layout Enumerate +Ensure two channels have been deleted +\end_layout + +\end_deeper +\begin_layout Enumerate +Delete all +\family typewriter +`resp' +\family default + channels from +\family typewriter +testdatafil +\family default +e +\end_layout + +\begin_deeper +\begin_layout Enumerate +Verify write +\end_layout + +\begin_layout Enumerate +Test if datafile contains no more +\family typewriter +`resp' +\family default + channels +\end_layout + +\end_deeper +\begin_layout Subsubsection +Other methods +\end_layout + +\begin_layout Paragraph +Verify write +\end_layout + +\begin_layout Standard +Is called after +\family typewriter +pspm_write_channel +\family default + has been called ( +\family typewriter +action = `add' +\family default + or +\family typewriter +action = `replace' +\family default +) and tests if data was written and a new history entry was made. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate +if +\family typewriter +action == `add' +\family default +, + test if there is a new channel +\end_layout + +\begin_layout Enumerate +if +\family typewriter +action == `replace' +\family default +, + test if there is still the same amount of channels +\end_layout + +\begin_layout Enumerate +if +\family typewriter +action == `delete' +\family default +, + test if there have been as many channels deleted as given in outinfos.channel +\end_layout + +\begin_layout Enumerate +test if history has a new entry +\end_layout + +\begin_layout Enumerate +search for channels with same chantype as added channel (should be only one channel) +\end_layout + +\begin_layout Enumerate +test if number of data elements in new channel and added channel is equal +\end_layout + +\begin_layout Enumerate +test if new channel and added channel have same +\family typewriter +`sr' +\family default +. +\end_layout + +\begin_layout Subsection +Python +\end_layout + +\begin_layout Subsubsection +Overview +\end_layout + +\begin_layout Subparagraph +Testclass +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_check_python_test +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_check_python_module_test +\end_layout + +\begin_layout Subparagraph +Format +\end_layout + +\begin_layout Standard + +\family typewriter +out = pspm_cfg_python(package_name) +\end_layout + +\begin_layout Standard + +\family typewriter +sts = pspm_check_python(valid_python_path) +\end_layout + +\begin_layout Standard + +\family typewriter +sts = pspm_check_python_modules(package_name) +\end_layout + +\begin_layout Subparagraph +Note +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_cfg_python +\family default + is a UI controller function that handles python path. + The function can be called by other UI functions if Python is required for performing relavent processing. + The function will ask users to define the path for python that has been installed in the system. +\end_layout + +\begin_layout Subsubsection +Test for python +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_check_python +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_check_python_test +\family default + is a test function that checks the installation of python in the system by using +\family typewriter +pspm_check_python +\family default +, + and the path of the python package that has been installed is detected by +\family typewriter +pspm_py_find_location.py +\family default +. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate + +\family typewriter +test_current_python_environment +\end_layout + +\begin_deeper +\begin_layout Enumerate +ensure a Python environment is already configured +\end_layout + +\end_deeper +\begin_layout Enumerate + +\family typewriter +test_set_new_python_environment +\end_layout + +\begin_deeper +\begin_layout Enumerate +Automatically detect the python installed in the system and test if it can be checked successfully by +\family typewriter +pspm_check_python +\family default +. +\end_layout + +\end_deeper +\begin_layout Enumerate +test_set_invalid_python_environment +\end_layout + +\begin_deeper +\begin_layout Enumerate +Use an invalid python path to check if +\family typewriter +pspm_check_python returns invalid results +\family default +. +\end_layout + +\end_deeper +\begin_layout Enumerate + +\family typewriter +test_python_environment_already_set +\end_layout + +\begin_deeper +\begin_layout Enumerate +Test when the specified Python environment is already set as the current. +\end_layout + +\end_deeper +\begin_layout Subsubsection +Test for python modules +\end_layout + +\begin_layout Subparagraph +Function name +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_check_python_module_test +\end_layout + +\begin_layout Subparagraph +Description +\end_layout + +\begin_layout Standard + +\family typewriter +pspm_check_python_module_test +\family default + manages to check the modules that is installed in the system by using +\family typewriter +pspm_check_python_modules +\family default +. + Currently, + it only tests the module +\family typewriter + +\begin_inset Quotes eld +\end_inset + +math +\begin_inset Quotes erd +\end_inset + +. +\end_layout + +\begin_layout Subparagraph +Tests +\end_layout + +\begin_layout Enumerate + +\family typewriter +test_python_environment_with_modules +\end_layout + +\begin_deeper +\begin_layout Enumerate +To test the package +\begin_inset Quotes eld +\end_inset + +math +\begin_inset Quotes erd +\end_inset + + that has been installed can be checked successfully by using +\family typewriter +pspm_check_python_modules +\family default +. +\end_layout + +\end_deeper +\begin_layout Standard +\begin_inset Newpage pagebreak +\end_inset + + +\end_layout + +\begin_layout Section +External functions and tools +\end_layout + +\begin_layout Subsection +VB (Variational Bayes) inversion algorithm by Jean Daunizeau +\end_layout + +\begin_layout Paragraph +Updated October 2014 +\end_layout + +\begin_layout Description +VBA_ReDisplay.m Fixed try-catch syntax in various places by adding a comma after +\begin_inset Quotes eld +\end_inset + +try +\begin_inset Quotes erd +\end_inset + + to avoid warning in MATLAB > 2007 +\end_layout + +\begin_layout Description +VBA_inv.m In line 42, + added warning off/on to suppress the warning +\family typewriter +Matrix is singular, + close to singular or badly scaled. + Results may be inaccurate. + RCOND = NaN +\family default +. +\end_layout + +\begin_layout Paragraph +Updated October 2016 +\end_layout + +\begin_layout Description +VBA_ReDisplay.m Fixed try-catch syntax in various places by adding a comma after +\begin_inset Quotes eld +\end_inset + +try +\begin_inset Quotes erd +\end_inset + + to avoid warning in MATLAB > 2007 +\end_layout + +\begin_layout Description +VBA_inv.m In line 48: + added warning off/on to suppress the warning +\begin_inset Quotes eld +\end_inset + + +\family typewriter +Matrix is singular, + close to singular or badly scaled. + Results may be inaccurate. + RCOND = NaN +\family default +. +\begin_inset Quotes erd +\end_inset + + +\end_layout + +\begin_layout Description +VBA_NLStateSpaceModel.m Added resetting warning to preceeding state. +\end_layout + +\begin_layout Standard +\begin_inset Newpage pagebreak +\end_inset + + +\end_layout + +\begin_layout Section +GitHub actions +\end_layout + +\begin_layout Quote +Contributed by Teddy Zhao +\end_layout + +\begin_layout Quote +Updated in March 2022 +\end_layout + +\begin_layout Standard +\begin_inset CommandInset href +LatexCommand href +name "GitHub Actions" +target "https://docs.github.com/en/actions" +literal "false" + +\end_inset + + is a Continuous Integration (CI) environment for testing GitHub repository, + which is now used for testing and maintaining PsPM. + GitHub Actions is deeply implemented in GitHub, + thus there is no further website or facility needed for running GitHub Actions for PsPM. +\end_layout + +\begin_layout Subsection +Repositories +\end_layout + +\begin_layout Standard +Until March 2022, + code and test data are seperately stored in GitHub, + in +\emph on + +\begin_inset CommandInset href +LatexCommand href +name "PsPM" +target "https://github.com/bachlab/PsPM" +literal "false" + +\end_inset + + +\emph default +and +\emph on + +\begin_inset CommandInset href +LatexCommand href +name "PsPM-data" +target "https://github.com/bachlab/PsPM-data" +literal "false" + +\end_inset + + +\emph default +, + respectively. + Both of +\emph on +PsPM +\emph default + and +\emph on +PsPM-data +\emph default + are under the +\emph on + +\begin_inset CommandInset href +LatexCommand href +name "bachlab" +target "https://github.com/bachlab" +literal "false" + +\end_inset + + +\emph default + account. + +\emph on +PsPM +\emph default + is a public repository allowing group members and public visitors to check the code and propose issues. + +\emph on +PsPM-data +\emph default + is a private repository allowing only group members to check the data and propose issues. + This is because +\emph on +PsPM-data +\emph default + has some research data that may not be appropriate for public vistors. + It could be a good idea to find another cloud storage service with University's approval to store research data. + +\emph on + PsPM-data +\emph default + has all the required test data for running testsuit of +\emph on +PsPM +\emph default +. + To run testsuit of +\emph on +PsPM +\emph default +, + it must be gauranteed that +\emph on +PsPM-data +\emph default + is accessible. +\end_layout + +\begin_layout Subsection +Workflow +\end_layout + +\begin_layout Standard +To guide the actions of GitHub Actions, + a workflow script as a +\family typewriter +.yaml +\family default + file is required, + which should be storaged at +\family typewriter +~/bachlab/PsPM/.github/workflow +\family default +. + The workflow has been prepared and tested to be running well for maintaining +\emph on +PsPM +\emph default +. + The explainations of key scripts are show below. +\end_layout + +\begin_layout Subparagraph +Step 1 +\end_layout + +\begin_layout Standard +Import +\family typewriter +PsPM +\end_layout + +\begin_layout Standard +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +- name: + Check out repository code +\end_layout + +\begin_layout Plain Layout + + uses: + actions/checkout@v2 +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This step imports the source code of +\emph on +PsPM +\emph default + to the server, + in our case, + a Ubuntu server. +\end_layout + +\begin_layout Subparagraph +Step 2 +\end_layout + +\begin_layout Standard +Import +\family typewriter +PsPM-data +\end_layout + +\begin_layout Standard +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +- name: + Add test data +\end_layout + +\begin_layout Plain Layout + + uses: + actions/checkout@v2 +\end_layout + +\begin_layout Plain Layout + + with: +\end_layout + +\begin_layout Plain Layout + + repository: + bachlab/PsPM-data +\end_layout + +\begin_layout Plain Layout + + token: + ${{ secrets.PSPM_PAT }} +\end_layout + +\begin_layout Plain Layout + + path: + ImportTestData +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This step imports the test data in +\emph on +PsPM-data +\emph default + to the server. + The details of the token is introduced in the next section. +\end_layout + +\begin_layout Subparagraph +Step 3 +\end_layout + +\begin_layout Standard +Setup MATLAB +\end_layout + +\begin_layout Standard +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +- name: + Setup MATLAB +\end_layout + +\begin_layout Plain Layout + + uses: + matlab-actions/setup-matlab@v1.0.1 +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subparagraph +Step 4 +\end_layout + +\begin_layout Standard +Setup testing script +\end_layout + +\begin_layout Standard +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +- name: + Run script +\end_layout + +\begin_layout Plain Layout + + id: + pspm_test_main +\end_layout + +\begin_layout Plain Layout + + uses: + matlab-actions/run-command@v1 +\end_layout + +\begin_layout Plain Layout + + with: +\end_layout + +\begin_layout Plain Layout + + command: + addpath(`test'), + addpath(`src'), + pspm_test_github_actions +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +The script of testing +\emph on +PsPM +\emph default + has been optimised for GitHub Actions, + which is saved as +\family typewriter +pspm_test_github_actions +\family default +. + Further modifications should be done here. +\end_layout + +\begin_layout Subparagraph +Step 5 +\end_layout + +\begin_layout Standard +Save records +\end_layout + +\begin_layout Standard +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +- name: + Check status +\end_layout + +\begin_layout Plain Layout + + id: + check_status +\end_layout + +\begin_layout Plain Layout + + uses: + andstor/file-existence-action@v1 +\end_layout + +\begin_layout Plain Layout + + with: +\end_layout + +\begin_layout Plain Layout + + files: + "success.txt" +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This step return a document +\family typewriter +success.txt +\family default + if the script does not return any error, + indicating the code has passed the test suit. +\end_layout + +\begin_layout Subparagraph +Step 6 +\end_layout + +\begin_layout Standard +Reture success +\end_layout + +\begin_layout Standard +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +- name: + Return running success +\end_layout + +\begin_layout Plain Layout + + if: + ${{ steps.check_status.outputs.files_exists == `true' }} +\end_layout + +\begin_layout Plain Layout + + run: + exit 0 +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subparagraph +Step 7 +\end_layout + +\begin_layout Standard +Return failure +\end_layout + +\begin_layout Standard +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +- name: + Return running failure +\end_layout + +\begin_layout Plain Layout + + if: + ${{ steps.check_status.outputs.files_exists != `true' }} +\end_layout + +\begin_layout Plain Layout + + run: + exit 1 +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection +Token +\end_layout + +\begin_layout Standard +Tokens are required to perform GitHub Actions for +\emph on +PsPM +\emph default + as the data repository is stored as private. + The steps for generating and implementing tokens are described as below. +\end_layout + +\begin_layout Subparagraph +Step 1 +\end_layout + +\begin_layout Standard +Generate a Personal Access Token (PAT) at https://github.com/settings/tokens, + name it as +\family typewriter +PSPM_PAT +\family default + with required priviliges. +\end_layout + +\begin_layout Subparagraph +Step 2 +\end_layout + +\begin_layout Standard +In the YAML file, + the script for running GitHub Actions, + make sure the PAT file has been mentioned appropriately, + like +\end_layout + +\begin_layout Standard +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +token: + ${{ secrets.PSPM_PAT }} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subparagraph +Step 3 +\end_layout + +\begin_layout Standard +In the settings of +\emph on +PsPM +\emph default + repository, + which can be found at https://github.com/bachlab/PsPM/settings/secrets/actions, + make sure +\emph on +Repository Secrets +\emph default +, + which is under +\emph on +Actions Secrets +\emph default +, + has contained +\family typewriter +PSPM_PAT +\family default +. + This operation requires your privilige to access the setting profiles of the correspoding repository. +\end_layout + +\begin_layout Subparagraph +Step 4 +\end_layout + +\begin_layout Standard +Similar to Step 3, + in the settings of +\emph on +PsPM-data +\emph default + repository, + which can be found at https://github.com/bachlab/PsPM-data/settings/secrets/actions, + make sure +\emph on +Repository Secrets +\emph default +, + which is under +\emph on +Actions Secrets +\emph default +, + has contained +\family typewriter +PSPM_PAT +\family default +. + This operation requires your privilige to access the setting profiles of the correspoding repository. +\end_layout + +\begin_layout Standard +Now the script should be running ok. + Please note the PAT must be updated regularly due to security concerns. +\end_layout + +\begin_layout Standard +\begin_inset Newpage pagebreak +\end_inset + + +\end_layout + +\begin_layout Section +List of functions +\end_layout + +\begin_layout Quote +Updated 27 October 2024 +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Function name +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Main author(s) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Initially +\end_layout + +\begin_layout Plain Layout +introduced +\end_layout + +\begin_layout Plain Layout +PsPM version +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Lastly +\end_layout + +\begin_layout Plain Layout +updated +\end_layout + +\begin_layout Plain Layout +PsPM version +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Test function +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Test document +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +f_SCR +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB & JD +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +f_SF +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +g_SCR +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB & TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +scr +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_align_channels +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.1.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_bf_data +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +5.1.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.1.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_bf_FIR +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_bf_hprf +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_bf_hprf_e +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_bf_hprf_f +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_bf_hprf_fc +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_bf_hprf_fc_f +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_bf_lcrf_gm +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_bf_ldrf_gm +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_bf_ldrf_gu +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_bf_psrf_erl +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_bf_psrf_fc +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_rarf_e +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_rarf_fc +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_rfrrf_e +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_rprf_e +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_bf_scrf +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_bf_scrf_f +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_bf_sebrf +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_bf_spsrf_box +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +LC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_bf_spsrf_gamma +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +LC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_butter +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.1.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_check_data +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_check_model +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.1.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_check_python_models +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_check_python +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_combine_markerchannels +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.1.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.1.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_area2diameter +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.1.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_au2unit +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_ecg2hb +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +EY +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_ecg2hb_amri +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +EY +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_gaze +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +SM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_hb2hp +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_pixel2unit_core +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +LC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_ppg2hb +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +SG & TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_unit +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_visangle2sps_core +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +LC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_visual_angle_core +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_data_editor +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_dcm_inv +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_dcm +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_denoise_spike +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_display +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +PCP +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_doc +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_doc_gen +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_downsample +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_ecg_editor +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_emg_pp +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_epochs2logical +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.1.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_export +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_extract_segments +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.3 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_extract_segments_core +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_eye +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_filtfilt +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_channel +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_eye +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +5.1.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_sounds +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +SG +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_format_history +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +EY +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_format_history_from_file +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +EY +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_gaze_pp +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_acq_bioread +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_acq_python +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_acq +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_acqmat +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_biograph +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_biosemi +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_biotrace +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_blink_l +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +LC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.0.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_blink_r +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +LC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.0.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_brainvis +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_cnt +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_custom +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_ecg +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_edf +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_emg +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_events +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_eyelink +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +CK & TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +5.1.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_gaze_x_l +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_gaze_y_l +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_gaze_x_r +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_gaze_y_r +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_hb +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_hp +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_hr +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_labchart +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_labchartmat_ext +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_labchartmat_in +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_marker +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_markerinfo +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_mat +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_obs +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +LR +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_physlog +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_ppg +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_pupil +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_pupil_l +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_pupil_r +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_resp +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_rf +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_saccade_l +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +LC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.0.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_saccade_r +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +LC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.0.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_scr +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_smi +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +EY +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_smr +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_smrx +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_sound +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_sps +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +LC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_sps_l +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +LC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_sps_r +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +LC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_timing +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_txt +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_vario +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_viewpoint +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +EY +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_wdq +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_wdq_n +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_glm_recon +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_glm +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_guide +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +1.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.1 (terminated) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_help_init +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_help_text +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_help +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_import +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_init +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_interp1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_interpolate +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_jobman +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +GG +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_leaky_integrator +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_load_channel +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.1.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_load_data +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_load_gaze +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_load1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_logical2epochs +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +BA +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_merge +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_multi_channel +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_multi2index +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_options +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_overwrite +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_path +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +EY +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_pp +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_prepdata +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_process_illuminance +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_pull_zenodo +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_pulse_convert +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_pupil_correct +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +EY +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_pupil_correct_eyelink +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +EY +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +5.1.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_pupil_pp +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +EY & TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_pupil_pp_options +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +EY +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_quit +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_remove_epochs +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_rename +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_resp_pp +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_rev_con +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_rev_dcm +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_rev_glm +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_review +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +GG +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_scr_pp +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +5.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_select_channels +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_sf_auc +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_sf_dcm +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_sf_mp +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_sf_scl +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_sf_theta +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_sf +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_show_arms +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_show_forum +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_show_help_doc +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_split_sessions +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +LR +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_struct2vec +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_tam +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_time2index +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_transfer_function +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_trim +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_ui_app +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_ui +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_update_channeltype +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_version +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_write_channel +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Contributors +\end_layout + +\begin_layout Description +DB Dominik Bach +\end_layout + +\begin_layout Description +BA Bernhard Agoué von Raußendorf +\end_layout + +\begin_layout Description +LC Laure Ciernik +\end_layout + +\begin_layout Description +JD Jean Daunizeau +\end_layout + +\begin_layout Description +SG Samuel Gerster +\end_layout + +\begin_layout Description +GG Gabriel Graeni +\end_layout + +\begin_layout Description +SK Saurabh Khemka +\end_layout + +\begin_layout Description +CK Christoph Korn +\end_layout + +\begin_layout Description +TM Tobias Moser +\end_layout + +\begin_layout Description +PCP Philipp C Paulus +\end_layout + +\begin_layout Description +LR Linus Rüttimann +\end_layout + +\begin_layout Description +EY Eshref Yozdemir +\end_layout + +\begin_layout Description +TZ Teddy Zhao +\end_layout + +\end_body +\end_document diff --git a/doc/PsPM_Developers_Guide.lyx b/doc/PsPM_Developers_Guide.lyx index 7c7624a3..2381adc4 100644 --- a/doc/PsPM_Developers_Guide.lyx +++ b/doc/PsPM_Developers_Guide.lyx @@ -6885,6 +6885,73 @@ After you have chosen a file and filled in all values correctly, By pressing on the green arrow the selected file will be trimmed according to the filled in values \end_layout +\begin_layout Subsubsection +Path definition +\end_layout + +\begin_layout Standard +Since version 7.0, + +\family typewriter +pspm_init +\family default + will conttol the path of PsPM by temporarily freezing the unrelated paths. + This is because users reported that they had pre-defined paths and these paths caused issues when running PsPM. + The current solution is, + PsPM will remember the paths that users have defined but are not used by PsPM, + and it will remove such paths from MATLAB before starting up PsPM. + Then PsPM will load its own required paths to MATLAB and check these paths can work properly. + After running PsPM, + if users would like to exit from PsPM, + PsPM will remove its own paths and added back the users' defined paths to MATLAB. +\end_layout + +\begin_layout Standard +The paths required for running PsPM are +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm/pspm_cfg +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm/ext/spm +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm/ext/matlabbatch +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm/ext/matlabbatch/cfg_basicio +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm/ext/vba +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm/ext/vba/subfunctions +\end_layout + +\begin_layout Itemize + +\family typewriter +pspm/ext/vba/stats&plots +\end_layout + \begin_layout Subsection MATLABbatch: How to @@ -8751,7 +8818,7 @@ Checks for warnings, \end_layout -\begin_layout Standard +\begin_layout Subparagraph Tests \begin_inset Newline linebreak \end_inset @@ -9222,6 +9289,10 @@ Pass invalid input arguments and check if the warnings are as expected. \begin_layout Subparagraph Tests +\begin_inset Newline linebreak +\end_inset + + \end_layout \begin_layout Standard @@ -9542,6 +9613,10 @@ Pass valid input arguments and check if there are no warnings. \begin_layout Subparagraph Tests +\begin_inset Newline linebreak +\end_inset + + \end_layout \begin_layout Standard @@ -9674,7 +9749,11 @@ Check if added hb channels show an expected behaviour. \end_layout \begin_layout Subparagraph -Tests (for each channel) +Tests +\end_layout + +\begin_layout Standard +(for each channel) \begin_inset Newline linebreak \end_inset @@ -10010,7 +10089,13 @@ ID:invalid_input \begin_layout Plain Layout \family typewriter -pspm_filtfilt([1:10],[1:20],[1:10]) [data length less than 3 times filter order] +pspm_filtfilt([1:10],[1:20],[1:10]) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +[data length less than 3 times filter order] \end_layout \end_inset @@ -10661,7 +10746,7 @@ Tests \begin_inset Tabular - + @@ -11034,6 +11119,10 @@ Runs pspm_extract_segments \family default with a particular GLM model stored in +\end_layout + +\begin_layout Standard + \family typewriter ImportTestData/fitted_models \family default @@ -11146,6 +11235,10 @@ Runs pspm_extract_segments \family default with a particular DCM model stored in +\end_layout + +\begin_layout Standard + \family typewriter ImportTestData/fitted_models \family default @@ -16919,8 +17012,8 @@ Tests \begin_inset Tabular - - + + \begin_inset Text @@ -18238,7 +18331,7 @@ Checks for warnings, if the structure of the import variable is invalid. \end_layout -\begin_layout Standard +\begin_layout Subparagraph Tests \begin_inset Newline linebreak \end_inset @@ -18520,10 +18613,6 @@ These are parameters which define what kind of data should be passed to pspm_interpolate \family default and which options should be set. -\begin_inset Newline linebreak -\end_inset - - \end_layout \begin_layout Standard @@ -20437,10 +20526,6 @@ Tries to pass invalid data structures, \begin_layout Subparagraph Tests for GLM -\begin_inset Newline linebreak -\end_inset - - \end_layout \begin_layout Standard @@ -20560,10 +20645,6 @@ ID:invalid_input \begin_layout Subparagraph Tests for DCM & SF -\begin_inset Newline linebreak -\end_inset - - \end_layout \begin_layout Standard @@ -20709,10 +20790,6 @@ ID:invalid_input \begin_layout Subparagraph Tests for DCM -\begin_inset Newline linebreak -\end_inset - - \end_layout \begin_layout Standard @@ -20835,10 +20912,6 @@ options.zscored = 1 & pspm_load1(dfn, \begin_layout Subparagraph Tests for GLM & SF -\begin_inset Newline linebreak -\end_inset - - \end_layout \begin_layout Standard @@ -22054,7 +22127,7 @@ Tests - + @@ -23275,7 +23348,7 @@ Function name invalid_input(this) \end_layout -\begin_layout Standard +\begin_layout Subparagraph Description \end_layout @@ -23284,6 +23357,15 @@ Checks for warnings, if the input arguments are invalid. \end_layout +\begin_layout Subparagraph +\noindent +Tests +\begin_inset Newline linebreak +\end_inset + + +\end_layout + \begin_layout Subparagraph \noindent \begin_inset Tabular @@ -23446,11 +23528,6 @@ ID:invalid_input \end_layout -\begin_layout Standard -\noindent -Tests -\end_layout - \begin_layout Paragraph Hipassfilter test \end_layout @@ -29104,12 +29181,18 @@ Now the script should be running ok. List of functions \end_layout +\begin_layout Quote +Updated 27 October 2024 +\end_layout + \begin_layout Standard \begin_inset Tabular - + - - + + + + @@ -29117,7 +29200,7 @@ List of functions \begin_inset Text \begin_layout Plain Layout -Function Name +Function name \end_layout \end_inset @@ -29126,87 +29209,99 @@ Function Name \begin_inset Text \begin_layout Plain Layout -Main Author(s) +Main author(s) \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -Test Function +Initially +\end_layout + +\begin_layout Plain Layout +introduced +\end_layout + +\begin_layout Plain Layout +PsPM version \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -Test Document +Lastly +\end_layout + +\begin_layout Plain Layout +updated +\end_layout + +\begin_layout Plain Layout +PsPM version \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -f_SCR +Test function \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB & JD +Test document \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +f_SCR \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +DB & JD \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -f_SF +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +? \end_layout \end_inset @@ -29237,7 +29332,7 @@ DB \begin_layout Plain Layout \family typewriter -g_SCR +f_SF \end_layout \end_inset @@ -29251,82 +29346,78 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +g_SCR \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -scr +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +? \end_layout \end_inset @@ -29335,7 +29426,7 @@ DB \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset @@ -29344,7 +29435,7 @@ x \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset @@ -29357,7 +29448,7 @@ x \begin_layout Plain Layout \family typewriter -pspm_align_channels +pspm \end_layout \end_inset @@ -29366,87 +29457,83 @@ pspm_align_channels \begin_inset Text \begin_layout Plain Layout -DB +DB & TZ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +7.0 \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_axpos +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +✔ \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +scr \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_bf_brf +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -SK & DB +7.0 \end_layout \end_inset @@ -29455,7 +29542,7 @@ SK & DB \begin_inset Text \begin_layout Plain Layout -- +✔ \end_layout \end_inset @@ -29464,7 +29551,7 @@ SK & DB \begin_inset Text \begin_layout Plain Layout -- +✔ \end_layout \end_inset @@ -29477,7 +29564,7 @@ SK & DB \begin_layout Plain Layout \family typewriter -pspm_bf_FIR +pspm_align_channels \end_layout \end_inset @@ -29491,82 +29578,78 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.1 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +6.1.2 \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_bf_Fourier +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +✔ \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_bf_data \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_bf_hprf +5.1.1 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +6.1.2 \end_layout \end_inset @@ -29597,7 +29680,7 @@ DB \begin_layout Plain Layout \family typewriter -pspm_bf_hprf_e +pspm_bf_FIR \end_layout \end_inset @@ -29606,87 +29689,83 @@ pspm_bf_hprf_e \begin_inset Text \begin_layout Plain Layout -TM +DB \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_bf_hprf_fc +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_bf_hprf \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +TM \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_bf_hprf_fc_f +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +? \end_layout \end_inset @@ -29711,18 +29790,18 @@ TM - + \begin_inset Text \begin_layout Plain Layout \family typewriter -pspm_bf_lcrf_gm +pspm_bf_hprf_e \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -29731,87 +29810,83 @@ TM \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_bf_ldrf_gm +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +- \end_layout \end_inset - + + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_bf_hprf_f \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +TM \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_bf_ldrf_gu +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -29820,7 +29895,7 @@ TM \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -29837,7 +29912,7 @@ TM \begin_layout Plain Layout \family typewriter -pspm_bf_psrf_fc +pspm_bf_hprf_fc \end_layout \end_inset @@ -29851,82 +29926,78 @@ TM \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_rarf_e +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_bf_hprf_fc_f \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +TM \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_rarf_fc +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +? \end_layout \end_inset @@ -29957,7 +30028,7 @@ TM \begin_layout Plain Layout \family typewriter -pspm_rfrrf_e +pspm_bf_lcrf_gm \end_layout \end_inset @@ -29971,82 +30042,78 @@ TM \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_rprf_e +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_bf_ldrf_gm \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +TM \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_bf_scrf_f +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +? \end_layout \end_inset @@ -30077,7 +30144,7 @@ DB \begin_layout Plain Layout \family typewriter -pspm_bf_scrf +pspm_bf_ldrf_gu \end_layout \end_inset @@ -30086,87 +30153,83 @@ pspm_bf_scrf \begin_inset Text \begin_layout Plain Layout -DB +TM \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_bf_spsrf_box +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -LC +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_bf_psrf_erl \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +TM \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_bf_spsrf_gamma +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -LC +? \end_layout \end_inset @@ -30191,102 +30254,98 @@ LC - + \begin_inset Text \begin_layout Plain Layout \family typewriter -pspm_butter +pspm_bf_psrf_fc \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +TM \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -X +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -X +? \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_con1 +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_rarf_e \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +TM \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_con2 +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +? \end_layout \end_inset @@ -30317,7 +30376,7 @@ DB \begin_layout Plain Layout \family typewriter -pspm_contrast +pspm_rarf_fc \end_layout \end_inset @@ -30326,87 +30385,83 @@ pspm_contrast \begin_inset Text \begin_layout Plain Layout -DB +TM \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_convert_area2diameter +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_rfrrf_e \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +TM \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_convert_au2mm +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +? \end_layout \end_inset @@ -30437,7 +30492,7 @@ TM \begin_layout Plain Layout \family typewriter -pspm_convert_illum2lum +pspm_rprf_e \end_layout \end_inset @@ -30451,82 +30506,78 @@ TM \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_convert_lux2cdm2 +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_bf_scrf \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_convert_mm2visdeg +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +? \end_layout \end_inset @@ -30557,7 +30608,7 @@ TM \begin_layout Plain Layout \family typewriter -pspm_convert_pixel2unit_core +pspm_bf_scrf_f \end_layout \end_inset @@ -30566,92 +30617,88 @@ pspm_convert_pixel2unit_core \begin_inset Text \begin_layout Plain Layout -LC +DB \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_convert_unit +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +- \end_layout \end_inset - + + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_bf_sebrf \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +TM \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_convert_visangle2sps +3.1 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -LC +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -30660,7 +30707,7 @@ LC \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -30671,22 +30718,22 @@ LC - + \begin_inset Text \begin_layout Plain Layout \family typewriter -pspm_convert_visual_angle_core +pspm_bf_spsrf_box \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +LC \end_layout \end_inset @@ -30695,7 +30742,7 @@ DB \begin_inset Text \begin_layout Plain Layout -- +4.0 \end_layout \end_inset @@ -30704,69 +30751,65 @@ DB \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_data_editor +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_bf_spsrf_gamma \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +LC \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_dcm_inv +4.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +? \end_layout \end_inset @@ -30797,7 +30840,7 @@ DB \begin_layout Plain Layout \family typewriter -pspm_dcm +pspm_butter \end_layout \end_inset @@ -30811,87 +30854,83 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +6.1.2 \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_denoise_spike +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +✔ \end_layout \end_inset - + + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_check_data \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_display +7.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -PCP +7.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -30900,7 +30939,7 @@ PCP \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -30911,18 +30950,18 @@ PCP - + \begin_inset Text \begin_layout Plain Layout \family typewriter -pspm_down +pspm_check_model \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -30931,78 +30970,1100 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +6.1.1 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +7.0 \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_downsample +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +✔ \end_layout \end_inset - + + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_check_python_models \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_ecg2hb +7.0 \end_layout \end_inset - + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_check_python +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_combine_markerchannels +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.1.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.1.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_area2diameter +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.1.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_au2unit +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_ecg2hb +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +EY +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_ecg2hb_amri +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +EY +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_gaze +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +SM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_hb2hp +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_pixel2unit_core +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +LC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_ppg2hb +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +SG & TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_unit +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_visangle2sps_core +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +LC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_convert_visual_angle_core +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_data_editor +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_dcm_inv +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_dcm +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_denoise_spike +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_display +\end_layout + +\end_inset + + \begin_inset Text \begin_layout Plain Layout @@ -31011,11 +32072,3277 @@ PCP \end_inset + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_doc +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_doc_gen +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_downsample +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_ecg_editor +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_emg_pp +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_epochs2logical +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.1.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_export +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_extract_segments +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.3 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_extract_segments_core +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_eye +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_filtfilt +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_channel +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_eye +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +5.1.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_sounds +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +SG +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_find_valid_fixations +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_format_history +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +EY +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_format_history_from_file +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +EY +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_gaze_pp +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_acq_bioread +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_acq_python +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_acq +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_acqmat +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_biograph +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_biosemi +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_biotrace +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_blink_l +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +LC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.0.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_blink_r +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +LC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.0.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_brainvis +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_cnt +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_custom +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_ecg +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_edf +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_emg +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_events +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_eyelink +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +CK & TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +5.1.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_gaze_x_l +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_gaze_y_l +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_gaze_x_r +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_gaze_y_r +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_hb +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_hp +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_hr +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_labchart +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_labchartmat_ext +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_labchartmat_in +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_marker +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_markerinfo +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_mat +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_obs +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +LR +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_physlog +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_ppg +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_pupil +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_pupil_l +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_pupil_r +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_resp +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_get_rf +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- \end_layout \end_inset @@ -31024,7 +35351,7 @@ x \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset @@ -31037,7 +35364,7 @@ x \begin_layout Plain Layout \family typewriter -pspm_ecg2hb_amri +pspm_get_saccade_l \end_layout \end_inset @@ -31046,7 +35373,25 @@ pspm_ecg2hb_amri \begin_inset Text \begin_layout Plain Layout -EY +LC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.0.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? \end_layout \end_inset @@ -31055,7 +35400,7 @@ EY \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset @@ -31077,7 +35422,7 @@ x \begin_layout Plain Layout \family typewriter -pspm_ecg_editor +pspm_get_saccade_r \end_layout \end_inset @@ -31086,7 +35431,25 @@ pspm_ecg_editor \begin_inset Text \begin_layout Plain Layout -TM +LC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +4.0.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? \end_layout \end_inset @@ -31117,7 +35480,7 @@ TM \begin_layout Plain Layout \family typewriter -pspm_exp +pspm_get_scr \end_layout \end_inset @@ -31129,13 +35492,31 @@ pspm_exp DB \end_layout +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + \end_inset \begin_inset Text \begin_layout Plain Layout -x +✔ \end_layout \end_inset @@ -31144,7 +35525,7 @@ x \begin_inset Text \begin_layout Plain Layout -- +✔ \end_layout \end_inset @@ -31157,7 +35538,7 @@ x \begin_layout Plain Layout \family typewriter -pspm_extract_segments +pspm_get_smi \end_layout \end_inset @@ -31166,7 +35547,25 @@ pspm_extract_segments \begin_inset Text \begin_layout Plain Layout -TM +EY +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? \end_layout \end_inset @@ -31175,7 +35574,7 @@ TM \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset @@ -31184,25 +35583,25 @@ x \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout \family typewriter -pspm_filtfilt +pspm_get_smr \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -31211,82 +35610,194 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout \family typewriter -pspm_find_channel +pspm_get_smrx \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +TZ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\family typewriter +pspm_get_sound +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_get_sps \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +LC \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_find_data_epochs +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +? \end_layout \end_inset @@ -31317,7 +35828,7 @@ TM \begin_layout Plain Layout \family typewriter -pspm_find_sounds +pspm_get_sps_l \end_layout \end_inset @@ -31326,105 +35837,101 @@ pspm_find_sounds \begin_inset Text \begin_layout Plain Layout -SG +LC \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_find_valid_fixations +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +- \end_layout \end_inset - + + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_get_sps_r \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +LC \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_acq_bioread +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset @@ -31437,7 +35944,7 @@ x \begin_layout Plain Layout \family typewriter -pspm_get_acq +pspm_get_timing \end_layout \end_inset @@ -31451,82 +35958,78 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_acqmat +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +✔ \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_get_txt \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_biograph +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +? \end_layout \end_inset @@ -31535,7 +36038,7 @@ DB \begin_inset Text \begin_layout Plain Layout -x +✔ \end_layout \end_inset @@ -31544,7 +36047,7 @@ x \begin_inset Text \begin_layout Plain Layout -x +✔ \end_layout \end_inset @@ -31557,7 +36060,7 @@ x \begin_layout Plain Layout \family typewriter -pspm_get_biosemi +pspm_get_vario \end_layout \end_inset @@ -31571,82 +36074,78 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_biotrace +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +✔ \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_get_viewpoint \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +EY \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_blink_l +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +? \end_layout \end_inset @@ -31677,7 +36176,7 @@ TM \begin_layout Plain Layout \family typewriter -pspm_get_blink_r +pspm_get_wdq \end_layout \end_inset @@ -31686,7 +36185,25 @@ pspm_get_blink_r \begin_inset Text \begin_layout Plain Layout -TM +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? \end_layout \end_inset @@ -31717,7 +36234,7 @@ TM \begin_layout Plain Layout \family typewriter -pspm_get_brainvis +pspm_get_wdq_n \end_layout \end_inset @@ -31726,87 +36243,83 @@ pspm_get_brainvis \begin_inset Text \begin_layout Plain Layout -DB +TM \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_cell +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +✔ \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_glm_recon \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_cnt +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +? \end_layout \end_inset @@ -31837,7 +36350,7 @@ DB \begin_layout Plain Layout \family typewriter -pspm_get_custom +pspm_glm \end_layout \end_inset @@ -31846,7 +36359,25 @@ pspm_get_custom \begin_inset Text \begin_layout Plain Layout -TM +DB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +7.0 \end_layout \end_inset @@ -31855,7 +36386,7 @@ TM \begin_inset Text \begin_layout Plain Layout -- +✔ \end_layout \end_inset @@ -31864,109 +36395,105 @@ TM \begin_inset Text \begin_layout Plain Layout -- +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout \family typewriter -pspm_get_ecg +pspm_guide \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +TZ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +1.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +6.1 (terminated) \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_edf +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_help_init \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +TZ \end_layout \end_inset - - - - + + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_events +7.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +7.0 \end_layout \end_inset @@ -31975,7 +36502,7 @@ DB \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset @@ -31984,7 +36511,7 @@ x \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset @@ -31997,7 +36524,7 @@ x \begin_layout Plain Layout \family typewriter -pspm_get_eyelink +pspm_help_text \end_layout \end_inset @@ -32006,92 +36533,88 @@ pspm_get_eyelink \begin_inset Text \begin_layout Plain Layout -CK & TM +TZ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +6.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +7.0 \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_gaze_x_l +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +- \end_layout \end_inset - + + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_help \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +TZ \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_gaze_y_l +7.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +7.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -32100,7 +36623,7 @@ TM \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -32117,7 +36640,7 @@ TM \begin_layout Plain Layout \family typewriter -pspm_get_gaze_x_r +pspm_import \end_layout \end_inset @@ -32126,87 +36649,83 @@ pspm_get_gaze_x_r \begin_inset Text \begin_layout Plain Layout -TM +DB \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_gaze_y_r +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +✔ \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_init \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_hb +3.1 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +7.0 \end_layout \end_inset @@ -32215,7 +36734,7 @@ DB \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset @@ -32224,109 +36743,105 @@ x \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout \family typewriter -pspm_get_hp +pspm_interp1 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +TZ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +6.1 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_hr +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +✔ \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_interpolate \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +TM \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_labchartmat_ext +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +? \end_layout \end_inset @@ -32335,7 +36850,7 @@ DB \begin_inset Text \begin_layout Plain Layout -x +✔ \end_layout \end_inset @@ -32344,7 +36859,7 @@ x \begin_inset Text \begin_layout Plain Layout -x +✔ \end_layout \end_inset @@ -32357,7 +36872,7 @@ x \begin_layout Plain Layout \family typewriter -pspm_get_labchartmat_in +pspm_jobman \end_layout \end_inset @@ -32366,92 +36881,88 @@ pspm_get_labchartmat_in \begin_inset Text \begin_layout Plain Layout -DB +GG \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_marker +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +- \end_layout \end_inset - + + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_leaky_integrator \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +? \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_markerinfo +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -32460,7 +36971,7 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -32471,18 +36982,18 @@ DB - + \begin_inset Text \begin_layout Plain Layout \family typewriter -pspm_get_mat +pspm_load_channel \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -32491,82 +37002,78 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +6.1.2 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +7.0 \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_obs +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -LR +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_load_data \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_physlog +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +? \end_layout \end_inset @@ -32575,7 +37082,7 @@ TM \begin_inset Text \begin_layout Plain Layout -- +✔ \end_layout \end_inset @@ -32584,7 +37091,7 @@ TM \begin_inset Text \begin_layout Plain Layout -- +✔ \end_layout \end_inset @@ -32597,7 +37104,7 @@ TM \begin_layout Plain Layout \family typewriter -pspm_get_pupil +pspm_load_gaze \end_layout \end_inset @@ -32611,82 +37118,78 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +6.2 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout -\family typewriter -pspm_get_pupil_l \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM + \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_load1 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_pupil_r +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +? \end_layout \end_inset @@ -32695,7 +37198,7 @@ TM \begin_inset Text \begin_layout Plain Layout -- +✔ \end_layout \end_inset @@ -32704,7 +37207,7 @@ TM \begin_inset Text \begin_layout Plain Layout -- +✔ \end_layout \end_inset @@ -32717,7 +37220,7 @@ TM \begin_layout Plain Layout \family typewriter -pspm_get_resp +pspm_logical2epochs \end_layout \end_inset @@ -32726,87 +37229,83 @@ pspm_get_resp \begin_inset Text \begin_layout Plain Layout -DB +BA \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +7.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +7.0 \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_rf +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_merge \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_saccade_l +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -LC +? \end_layout \end_inset @@ -32831,107 +37330,103 @@ LC - + \begin_inset Text \begin_layout Plain Layout \family typewriter -pspm_get_saccade_r +pspm_multi_channel \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -LC +DB \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_scr +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +- \end_layout \end_inset - + + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_multi2index \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_smi +6.2 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -EY +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -32940,7 +37435,7 @@ EY \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -32951,93 +37446,89 @@ EY - + \begin_inset Text \begin_layout Plain Layout \family typewriter -pspm_get_sps +pspm_options \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -LC +TZ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +6.1 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +7.0 \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_smr +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_overwrite \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +TZ \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_smrx +6.0 \end_layout \end_inset @@ -33046,12 +37537,12 @@ pspm_get_smrx \begin_inset Text \begin_layout Plain Layout -TZ +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -33060,7 +37551,7 @@ TZ \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -33077,7 +37568,7 @@ TZ \begin_layout Plain Layout \family typewriter -pspm_get_sound +pspm_path \end_layout \end_inset @@ -33086,7 +37577,25 @@ pspm_get_sound \begin_inset Text \begin_layout Plain Layout -TM +EY +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? \end_layout \end_inset @@ -33095,7 +37604,7 @@ TM \begin_inset Text \begin_layout Plain Layout -- +✔ \end_layout \end_inset @@ -33117,7 +37626,7 @@ TM \begin_layout Plain Layout \family typewriter -pspm_get_timing +pspm_pp \end_layout \end_inset @@ -33131,220 +37640,212 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_txt +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +✔ \end_layout \end_inset - + + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_prepdata \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_vario +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout \family typewriter -pspm_get_viewpoint +pspm_process_illuminance \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -EY +TM \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.1 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_wdq +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +- \end_layout \end_inset - + + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_pull_zenodo \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_get_wdq_n +7.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +7.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset @@ -33357,7 +37858,7 @@ x \begin_layout Plain Layout \family typewriter -pspm_glm_recon +pspm_pulse_convert \end_layout \end_inset @@ -33371,82 +37872,78 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_glm +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_pupil_correct \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +EY \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_hb2hp +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +? \end_layout \end_inset @@ -33455,7 +37952,7 @@ DB \begin_inset Text \begin_layout Plain Layout -x +✔ \end_layout \end_inset @@ -33464,109 +37961,105 @@ x \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout \family typewriter -pspm_hb2hr +pspm_pupil_correct_eyelink \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +EY \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +5.1.2 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_import +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_pupil_pp \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +EY & TZ \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_init +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +? \end_layout \end_inset @@ -33575,7 +38068,7 @@ DB \begin_inset Text \begin_layout Plain Layout -- +✔ \end_layout \end_inset @@ -33597,7 +38090,7 @@ DB \begin_layout Plain Layout \family typewriter -pspm_interpolate +pspm_pupil_pp_options \end_layout \end_inset @@ -33606,87 +38099,83 @@ pspm_interpolate \begin_inset Text \begin_layout Plain Layout -TM +EY \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_jobman +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -GG +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_quit \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_job_create +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +? \end_layout \end_inset @@ -33711,107 +38200,103 @@ DB - + \begin_inset Text \begin_layout Plain Layout \family typewriter -pspm_load_data +pspm_remove_epochs \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +TM \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +4.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +? \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_load1 +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +- \end_layout \end_inset - + + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_rename \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_load_single_chan +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -EY +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -33820,7 +38305,7 @@ EY \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -33837,7 +38322,7 @@ EY \begin_layout Plain Layout \family typewriter -pspm_merge +pspm_resp_pp \end_layout \end_inset @@ -33851,82 +38336,78 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_overwrite +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TZ +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_rev_con \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_path +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -EY +? \end_layout \end_inset @@ -33935,7 +38416,7 @@ EY \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset @@ -33957,7 +38438,7 @@ x \begin_layout Plain Layout \family typewriter -pspm_peakscore +pspm_rev_dcm \end_layout \end_inset @@ -33971,82 +38452,78 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_pp +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_rev_glm \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +DB \end_layout \end_inset - - - + \begin_inset Text -\begin_layout Plain Layout - -\family typewriter -pspm_ppg2hb +\begin_layout Plain Layout +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -SG +? \end_layout \end_inset @@ -34077,7 +38554,7 @@ SG \begin_layout Plain Layout \family typewriter -pspm_predval +pspm_review \end_layout \end_inset @@ -34086,87 +38563,83 @@ pspm_predval \begin_inset Text \begin_layout Plain Layout -DB +GG \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_prepdata +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_scr_pp \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +TZ \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_process_illuminance +5.1 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +? \end_layout \end_inset @@ -34175,7 +38648,7 @@ TM \begin_inset Text \begin_layout Plain Layout -x +✔ \end_layout \end_inset @@ -34184,109 +38657,105 @@ x \begin_inset Text \begin_layout Plain Layout -- +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout \family typewriter -pspm_pulse_convert +pspm_select_channels \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +6.2 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_pupil_correct_eyelink +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -EY +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_sf_auc \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_pupil_correct +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -EY +? \end_layout \end_inset @@ -34295,7 +38764,7 @@ EY \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset @@ -34317,7 +38786,7 @@ x \begin_layout Plain Layout \family typewriter -pspm_pupil_pp +pspm_sf_dcm \end_layout \end_inset @@ -34326,87 +38795,83 @@ pspm_pupil_pp \begin_inset Text \begin_layout Plain Layout -EY +DB \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_pupil_pp_options +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -EY +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_sf_mp \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_quit +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +? \end_layout \end_inset @@ -34437,7 +38902,7 @@ DB \begin_layout Plain Layout \family typewriter -pspm_ren +pspm_sf_scl \end_layout \end_inset @@ -34451,82 +38916,78 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_resp_pp +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_sf_theta \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_rev_con +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +? \end_layout \end_inset @@ -34557,7 +39018,7 @@ DB \begin_layout Plain Layout \family typewriter -pspm_rev_dcm +pspm_sf \end_layout \end_inset @@ -34569,6 +39030,24 @@ pspm_rev_dcm DB \end_layout +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + \end_inset @@ -34597,7 +39076,7 @@ DB \begin_layout Plain Layout \family typewriter -pspm_rev_glm +pspm_show_arms \end_layout \end_inset @@ -34611,87 +39090,83 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.0 \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_rev2 +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +- \end_layout \end_inset - + + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_show_forum \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +TZ \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_review +5.1 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -GG +5.1 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -34700,7 +39175,7 @@ GG \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -34711,102 +39186,98 @@ GG - + \begin_inset Text \begin_layout Plain Layout \family typewriter -pspm_segment_mean +pspm_show_help_doc \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +TZ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +5.1 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +5.1 \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_scr_pp +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TZ +- \end_layout \end_inset + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_split_sessions \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +LR & TZ \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_sf_auc +5.1.1 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +? \end_layout \end_inset @@ -34815,7 +39286,7 @@ DB \begin_inset Text \begin_layout Plain Layout -- +✔ \end_layout \end_inset @@ -34824,25 +39295,25 @@ DB \begin_inset Text \begin_layout Plain Layout -- +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout \family typewriter -pspm_sf_dcm +pspm_struct2vec \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -34851,87 +39322,83 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +7.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +7.0 \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_sf_mp +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +- \end_layout \end_inset - + + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_tam \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_sf_scl +7.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +7.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -34940,7 +39407,7 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -34957,7 +39424,7 @@ DB \begin_layout Plain Layout \family typewriter -pspm_sf_theta +pspm_time2index \end_layout \end_inset @@ -34966,92 +39433,88 @@ pspm_sf_theta \begin_inset Text \begin_layout Plain Layout -DB +TZ & DB \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +5.1.2 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +7.0 \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_sf +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +✔ \end_layout \end_inset - + + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_transfer_function \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_sf_get_theta +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +? \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -35060,7 +39523,7 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -35077,7 +39540,7 @@ DB \begin_layout Plain Layout \family typewriter -pspm_show_arms +pspm_trim \end_layout \end_inset @@ -35091,227 +39554,219 @@ DB \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +? \end_layout \end_inset - - \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_spike_convert +✔ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +✔ \end_layout \end_inset - + + + \begin_inset Text \begin_layout Plain Layout -- + +\family typewriter +pspm_ui_app \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +TZ \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_split_sessions +6.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -LR +7.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout \family typewriter -pspm_transfer_function +pspm_ui \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +TZ \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +5.1 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +7.0 \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_time2index +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TZ +- \end_layout \end_inset - + + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_update_channeltype \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +DB \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_trim +6.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -DB +7.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout @@ -35322,91 +39777,87 @@ pspm_version \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +DB \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.1 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -- +3.1 \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -pspm_write_channel +- \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -TM +- \end_layout \end_inset - + + + \begin_inset Text \begin_layout Plain Layout -x + +\family typewriter +pspm_write_channel \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -x +TM \end_layout \end_inset - - - + \begin_inset Text \begin_layout Plain Layout - -\family typewriter -set_blinks_saccades_to_nan +3.0 \end_layout \end_inset - + \begin_inset Text \begin_layout Plain Layout -EY +7.0 \end_layout \end_inset @@ -35415,7 +39866,7 @@ EY \begin_inset Text \begin_layout Plain Layout -x +✔ \end_layout \end_inset @@ -35424,7 +39875,7 @@ x \begin_inset Text \begin_layout Plain Layout -- +✔ \end_layout \end_inset @@ -35445,6 +39896,10 @@ Contributors DB Dominik Bach \end_layout +\begin_layout Description +BA Bernhard Agoué von Raußendorf +\end_layout + \begin_layout Description LC Laure Ciernik \end_layout diff --git a/doc/PsPM_Developers_Guide.pdf b/doc/PsPM_Developers_Guide.pdf index 4a0b462b..3e936feb 100644 Binary files a/doc/PsPM_Developers_Guide.pdf and b/doc/PsPM_Developers_Guide.pdf differ diff --git a/src/pspm_check_data.m b/src/pspm_check_data.m index 0b849180..b0ae0870 100644 --- a/src/pspm_check_data.m +++ b/src/pspm_check_data.m @@ -8,6 +8,9 @@ % [sts, data] = pspm_check_data(data, infos) % ● Developer's notes % This code is taken from pspm_load_data; it could be improved using cellfun. +% ● History +% Introducted in Version 7.0 +% Written by Dominik R Bach (Bonn) global settings if isempty(settings)