A matlab suite for Psycho-Physiological Modelling
Bug fixes
pspm_convert_hb2hp
pspm_dcm
pspm_glm
pspm_bf_psrf_2_fc
pspm_bf_psrf_2_fc
allows to set the time delay between CS and US now. It used to set a basis function for the CS and for the US response with a time delay of 3.5 s as standard.pspm_dcm
pspm_glm
pspm_glm
now allows a two-element vector and construct the dictionary accordingly. Previously it only allows scalar values in model.window.pspm_check_model
pspm_combine_markerchannels
GLM
option markervalues
to create onsets definition from channels distributed across multiple channels.pspm_tam
TAM
stands for Trial Average Model. The function allows to fit models on trial-averaged data.pspm_pupil_pp
pupil
rather than pupil_pp
.pspm_split_sessions
pspm_con
varargout
logic of pspm_load1 has been fixed.pspm_dcm
pspm_get_spike
pspm_scr_pp
missing_epoch.mat
has been fixed.pspm_extract_segments
pspm_extract_segments
process the data after excluding the missing data information that is provided in the model structure.pspm_dcm
pspm_glm
sps
.pspm_overwrite
pspm_split_sessions
pspm_split_sessions
when it processes a missing epoch file has been fixed.split_sessions
in the GUI has been updated.pspm
in the Command Window of MATLAB, where the appropriate way of entering PsPM will be recognised automatically.pspm_appdesigner
. To enter PsPM through Guide, which is the classic entrance, please type pspm_guide
.pspm_options
pspm_options
is introduced to PsPM for controlling the default and acceptable values of the struct options
used by most PsPM functions. The default values of the fields in the struct options
for various functions can be directly checked by searching in pspm_options
.pspm_options
have been checked and tested for PsPM. If preferred values are different from defaults, users can specify them when calling the corresponding PsPM functions, and the corresponding functions and pspm_options
will always respect the users' specification with the highest priority. However, the user's specification needs to satisfy the condition set in pspm_options
, and invalid values may be reported as errors.pspm_rev_dcm
has been fixed.pspm_convert_...
pspm_convert_...
functions, has been fixed.pspm_get_eyelink
pspm_glm
pspm_sf
pspm_sf
is analysing data with missing epochs has been fixed.pspm_sf
analyses data where time unit
is defined as marker
has been fixed.pspm_split_sessions
pspm_split_sessions
now considers marker_chan_num
when calling pspm_trim
.channel
channel
related variables throughout PsPM, which are given as
chan/channel
→ channel
chans/channels
→ channels
channel_units/channels_units/chan_units/chans_units
→ channel_units
chan_combine
→ channel_combine
chan_action
→ channel_action
channels_header
→ channel_header
chantype
→ channeltype
import_eyelink
import_eyelink
for adding some support for importing eyelink data converted by higher version of .EDF files.pspm_con2
pspm_con2
is now using pspm_overwrite
.pspm_dcm
and pspm_dcm_inv
.flexevents
and .fixevents
are now fields of model
instead of options
.pspm_dcm
now uses pspm_get_timing
to handle missing epochs..missing
is now allocated from options
to model
..missing_data
is used to load missing epoch data that was loaded from dcm, as an optional field.pspm_extract_segments
marker_chan
as default.pspm_glm
options.exclude_missing
has been set for pspm_glm
, which is not to exclude any missing epochs.marker_chan_num
now refers to the first marker channel as default.pspm_glm
now uses pspm_get_timing
to handle missing epochs .pspm_interp1
pspm_interp1
now considers the data where no valid values are detected and interpolation is not possible, and warnings will be reported in this case.pspm_merge
[1,2]
, meaning the first channel will be merged as the default option.pspm_prepdata
pspm_prepdata
now uses interpolation to handle data with NaN
.
NaN
will be filled with the first/last non-NaN
values in those positions.pspm_sf
pspm_sf
now supports missing epochs.
NaN
that indicates missing epochs.NaN
detection.options.missingthresh
.[]
.pspm_sf
now uses pspm_get_timing
to handle missing epochs.marker_chan_num
now refers to the first marker channel as default.pspm_sf_dcm
pspm_sf_dcm
now uses pspm_interp1
for interpolating data.pspm_text
pspm_text.mat
will be stored inside the source folder of PsPM and will be deleted when PsPM is quit.pspm_trim
marker_chan_num
now refers to the first marker channel as default.pspm_sf
, pspm_glm
and pspm_dcm
marker_chan_num_event
is removed.options
fields.pspm_extract_segments
pspm_find_valid_fixations
pspm_gaze_pp
pspm_overwrite
pspm_time2index
pspm_update_chantype
pspm_bf_spsrf_box
pspm_convert_ppu2hb
pspm_data_editor
pspm_dcm
pspm_display
pspm_glm
pspm_interpolate
pspm_resp_pp
pspm_scr_pp
scr
.pspm_sf
pspm_split_sessions
ValidSamplesModel
ppg
data.pspm_con1
pspm_data_editor
pspm_get_marker
flank
when applicable.pspm_import
flank
when applicable.pspm_load_data
pspm_pupil_pp
pspm_load_data
to load single channels.pspm_rev_glm
pspm_write_channel
PsPM now has a discussion page for users to ask questions about the usage of the software.
pspm_bf_data
pspm_display
.pspm_dcm
pspm_dcm
now handles empty epochs correctly.pspm_scr_pp
pspm_split_sessions
pspm_split_sessions
now accepts correct number of data files and missing epoch files in the GUI.pspm_split_sessions
now processes missing epochs correctly..mlapp
, which has a more modern appearance across different platforms consistently.pspm_scr_pp
pspm_scr_pp
replaces the classic pspm_simple_qa.pspm_scr_pp
now allows users to detect clipping, where the results can be exported together with the original outcome.pspm_scr_pp
now allows users to just write artefact epochs and leave data unchanged.pspm_interpolate
pspm_interpolate
now processes data ending with NaN
well without throwing warnings.pspm_find_sounds
pspm_find_sounds
now throws warning when some data was excluded due to the strict parameter setting.pspm_split_sessions
pspm_split_sessions
is now using pspm_trim
for processing data.pspm_glm
pspm_load1
and pspm_dcm
pspm_resp_pp
pspm_scr_pp
pspm_data_editor
to load an epoch file.pspm_simple_qa
to suppress classification of discretisation oscillations as artefacts, to expand artefact windows, and to automatically remove small data islands embedded in artefacts.pspm_simple_qa
to store the epochs of data that are filtered out into an output .mat
file. The accompanying GUI editor is available under 'Artefact removal' in the tools section.pspm_convert_gaze_distance
to convert from distance units to degrees or scanpath speed. The accompanying GUI editor is available under 'Gaze Convert' in the data preprocessing section.pspm_get_eyelink
to pspm_blink_saccade_filt
.pspm_get_eyelink
.pspm_pupil_correct_eyelink
use the last gaze channel when there are multiple gaze x (similarly y) channels in the file.pspm_extract_segments
return NaN percentages and not ratios.pspm_display
to plot any type of marker channels.pspm_display
behaviour when user tries to load data with less channels than the data he/she is currently displaying.pspm_split_sessions
behaviour when the intertrial interval in the data is random. Add an option randomITI
(0 or 1) which in the latter case it forces the function to evaluate the mean marker distance using all the markers and not per session. Default value: 0.startsWith
and endsWith
from all functions for a better backward compatibility.pspm_trim
which was wrongly defining the starting trimming point index.pspm_get_events
, import.flank
can be now set to 'all'
what would import all markers and data related to them.pspm_display
allows now to display pupil size units and the gaze x & y coordinate units on the y-axis.pspm_extract_segments
can be used now with raw data and thus be called easily within another function.pspm_version
has a new URL and thus do not send any warning about version checks anymore.import_eyelink
do not import markers which are outside the session end time (END
marker).import_eyelink
sends a warning whenever two markers have the same timestamp.pspm_get_eyelink
, import.flank
set to 'all'
.pspm_extract_segments
was adapted to the new feature.ext
.pspm_bf_lcrf_gm
and pspm_bf_ldrf_gm
where the offset was wrongly implemented.pspm_compute_visual_angle
where there was an error in the conversion factor of pixels wrt. to mm.pspm_hb2hp_test.m
, pspm_filtfilt_test.m
, pspm_butter_test.m
)pspm_display
and pspm_ecg_editor
do not perform filtering anymore.pspm_hb2hp
where the function crashed when there is no heartbeat left after lower and upper bound filtering of the heartbeat periods.import_eyelink
which imported more markers than the number of markers in the actual .asc file.pspm_display
which crashed when trying to plot ECG signal that contains NaN.pspm_prepdata
which returned only NaN when input signal contained some NaN values.pspm_version
which crashed when MATLAB was invoked with -nojvm
.pspm_get_viewpoint
which returned +,=,+
lines in the marker list and which crashed when given a viewpoint data file containing multiple sessions separated with +,=
type of markers.+
somewhere, e.g.: CS+
.pspm_get_events
which was not able to locate a marker if it occurred on the first or last sample in a given data file.pspm_filtfilt
which crashed when the filter parameters were of dimension one.CNT data import has not been not tested -- please contact the developers with sample data files.
Previous versions of PsPM have used a bi-directional high pass filter of 0.0159 for all SCR analyses. We have recently shown a better predictive validity for GLM with a unidirectional filter of 0.05 Hz [@Bach:2013aa]. This also implies that different filters are used for different models. These are now set as defaults, and the way the default settings are implemented has changed. It is now possible to alter the filter settings in the model definition, although we discourage this.
A matching pursuit algorithm is now implemented to approximate the number of spontaneous fluctuations (SF) in skin conductance [@Bach:2015aa].
Parametric modulators (pmods) are z-normalised before being entered into the design matrix. This is to account for possibly very large or very small numbers -- a badly scaled design matrix can cause induced instability in the inversion. The parameter estimates of the pmods were not transformed back in previous versions, i. e. the parameter estimates of the pmods were independent of the scaling of the pmods. This is appropriate as long as they are the same for all datasets, or if analysis is done strictly on a within-subject level. Some researchers have reported designs in which inference was to be drawn on parameter estimates of pmods on a between-group level, and where the pmods systematically differed between these groups. To account for this possibility, the parameter estimates are now transformed back, such that they refer to the pmods in their original scaling/units.
Previous versions of PsPM contained an option to include a parametric modulator across all event types, to account for confounds across all conditions. For example, in an experiment with 5 conditions, one could have included 5 regressors, plus one reaction time confound across all events, without including an associated regressor that contains the event onsets for all these events. This option was removed.
Previous versions of PsPM filtered the design matrix after orthogonalisation of basis sets. This can introduce unwanted dependencies between regressors. PsPM 3.0 filters the regressors first, then orthogonalises the basis sets.
Some minor changes have been made to the data format. In particular, marker channels from previous versions can not be read with the current version - such data files have to be re-imported. Model files have changed drastically, and model files from previous versions can not be read with the current version of the software.
The VBA toolbox (http://mbb-team.github.io/VBA-toolbox/) was updated in October 2014 [@Daunizeau:2014aa]. This update incorporates bugfixes in this toolbox and slightly changed the model estimates in our test models. In terms of predictive validity, we noted that there was no consistent benefit of the old or new version of this code (Figure [fig:VBA]{reference-type="ref" reference="fig:VBA"}).
<insert_image_here> Model comparison between old and new versions of the VBA toolbox, based on two delay fear conditioning datasets. The log Bayes factor quantifies the difference between negative log likelihood (nLL) of parameter estimates obtained from model inversion using the old and new version of VBA. A difference in nLL above 3 indicates significant differences in model evidence which is not exceeded for either data set. Analysis and figure contributed by Matthias Staib.