Releases: bachlab/PsPM
Releases · bachlab/PsPM
v6.1.2
Bug fixes
- GUI
- A bug that made channel actions in EMG pre-processing unrecognised has been fixed.
- A bug, which sometimes made DCM not run from the GUI, has been fixed.
pspm_convert_hb2hp
- A bug, which incorrectly selected heart rate channels, has been fixed.
pspm_dcm
- A bug, which could lead to a wrong sample rate being used if more than one SCR channel existed in the file, has been fixed.
pspm_glm
- A bug, which leads to markers being taken from the first marker channel but markervalues from the last, has been fixed.
v6.1.1
- New features
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
- Missing data epochs from file and data can be combined.
pspm_glm
pspm_glm
now allows a two-element vector and construct the dictionary accordingly. Previously it only allows scalar values in model.window.
- New functions
pspm_check_model
- The function checks the fields of models.
pspm_combine_markerchannels
- The function allows users to use the
GLM
optionmarkervalues
to create onsets definition from channels distributed across multiple channels.
- The function allows users to use the
pspm_tam
TAM
stands for Trial Average Model. The function allows to fit models on trial-averaged data.
- Adjustments
pspm_pupil_pp
- From then on, pupil preprocessing functions create channels of type
pupil
rather thanpupil_pp
.
- From then on, pupil preprocessing functions create channels of type
pspm_split_sessions
- Markers at beginning or end of file are no longer dropped, as marker duplication is not an issue here.
- Bug fixes
pspm_con
- A bug caused by the new
varargout
logic of pspm_load1 has been fixed.
- A bug caused by the new
pspm_dcm
- A bug that leads dropping sub-threshold missing data periods has been fixed.
pspm_get_spike
- A minor bug caused by a non-existing variable has been fixed.
pspm_scr_pp
- A bug that could change the original file if it saves epochs to
missing_epoch.mat
has been fixed.
- A bug that could change the original file if it saves epochs to
- Improvements
pspm_extract_segments
- Now
pspm_extract_segments
process the data after excluding the missing data information that is provided in the model structure.
- Now
pspm_dcm
- Processed data are now initialised as data matrix with NaN before inserting data of variable size.
pspm_glm
- A warning has been added if any duration in onset definition is above 0 and modality is not
sps
.
- A warning has been added if any duration in onset definition is above 0 and modality is not
pspm_overwrite
- The logic of overwriting files in PsPM has been updated. Specifically, the overwriting operation is applicable only if there has been a file with the proposed name of the output file. A warning will be provided if the user chooses not to overwrite the file, since the output of PsPM will not be saved.
pspm_split_sessions
- A misleading warning provided by
pspm_split_sessions
when it processes a missing epoch file has been fixed. - The help text of
split_sessions
in the GUI has been updated.
- A misleading warning provided by
- UI improvements
- PsPM's UI in Linux environment has been improved.
v6.1.0
General
- Minimum version of MATLAB
- The minimum version of MATLAB required for running PsPM is MATLAB 7.1 or R14 Service Pack 3 (https://uk.mathworks.com/content/dam/mathworks/mathworks-dot-com/support/sysreq/files/SystemRequirements-Release14-ServicePack3_SupportedCompilers.pdf).
- Entering PsPM
- Entering PsPM is now hybrid based on the version of MATLAB, namely through AppDesigner or Guide. PsPM will be entered through AppDesigner when supported and through Guide for older versions of MATLAB. To call PsPM, users should still use the command
pspm
in the Command Window of MATLAB, where the appropriate way of entering PsPM will be recognised automatically. - Users can still use their preferred way to enter PsPM. To enter PsPM through AppDesigner, please type
pspm_appdesigner
. To enter PsPM through Guide, which is the classic entrance, please typepspm_guide
. - The AppDesigner version of PsPM UI is newly introduced by MATLAB and the encouraged way for launching PsPM, and it has no functionality difference than the Guide version of PsPM UI.
- Both AppDesigner and Guide are designed and tested for Windows, macOS (either Intel or Apple Silicon) and Linux. Issues of opening PsPM through either of the two UI systems are encouraged to be reported to PsPM developing group at GitHub.
- Entering PsPM is now hybrid based on the version of MATLAB, namely through AppDesigner or Guide. PsPM will be entered through AppDesigner when supported and through Guide for older versions of MATLAB. To call PsPM, users should still use the command
- Introducing
pspm_options
- A new function
pspm_options
is introduced to PsPM for controlling the default and acceptable values of the structoptions
used by most PsPM functions. The default values of the fields in the structoptions
for various functions can be directly checked by searching inpspm_options
. - The default values in
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 andpspm_options
will always respect the users' specification with the highest priority. However, the user's specification needs to satisfy the condition set inpspm_options
, and invalid values may be reported as errors.
- A new function
- UI Improvements
- The UI for the following features has been improved and tested
- Launchpad (AppDesigner)
- Launchpad (Guide)
- Batch editor
- Display data
- Contrast manager
- The UI for the following features has been improved and tested
- Help text
- The help text has been updated for all PsPM functions. Help text can be checked by right clicking the functions.
Bug Fixes
- UI
- A bug that used to make PsPM crash when Pupil size convert and Gaze convert in Data Preprocessing were selected has been fixed.
- A bug that leads to error when PsPM is started offline has been fixed.
- A bug that leads to incorrect x labels in
pspm_rev_dcm
has been fixed.
pspm_convert_...
- A bug that leads PsPM to crash, which is caused by outdated UI calling for
pspm_convert_...
functions, has been fixed.
- A bug that leads PsPM to crash, which is caused by outdated UI calling for
pspm_get_eyelink
- A bug that causes issues when importing eye link data that is scanned at both left and right sides has been fixed.
pspm_glm
- A bug that incorrectly identifies the NaNs in the input data has been fixed.
pspm_sf
- A bug that has lead to incorrect input datafile assigning has been fixed.
- A bug that leads PsPM crash when
pspm_sf
is analysing data with missing epochs has been fixed. - A bug that leads to error when
pspm_sf
analyses data wheretime unit
is defined asmarker
has been fixed.
pspm_split_sessions
pspm_split_sessions
now considersmarker_chan_num
when callingpspm_trim
.
New Features and Improvements
channel
- We have generalised the
channel
related variables throughout PsPM, which are given aschan/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
- We have generalised the
import_eyelink
- Improved
import_eyelink
for adding some support for importing eyelink data converted by higher version of .EDF files.
- Improved
pspm_con2
pspm_con2
is now usingpspm_overwrite
.
pspm_dcm
andpspm_dcm_inv
.flexevents
and.fixevents
are now fields ofmodel
instead ofoptions
.pspm_dcm
now usespspm_get_timing
to handle missing epochs.- Improved missing epoch support
- The field
.missing
is now allocated fromoptions
tomodel
. .missing_data
is used to load missing epoch data that was loaded from dcm, as an optional field.
- The field
- The index is changed so that the first event will not be excluded when at time 0 in session.
pspm_extract_segments
- The first channel is always referred by
marker_chan
as default.
- The first channel is always referred by
pspm_glm
- The fallback for
options.exclude_missing
has been set forpspm_glm
, which is not to exclude any missing epochs. - A bug that leads to incorrect missing epoch checking has been fixed.
- Help text was updated.
marker_chan_num
now refers to the first marker channel as default.pspm_glm
now usespspm_get_timing
to handle missing epochs .
- The fallback for
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
- The default value is set to be
[1,2]
, meaning the first channel will be merged as the default option.
- The default value is set to be
pspm_prepdata
pspm_prepdata
now uses interpolation to handle data withNaN
.- Data that begins and/or ends with
NaN
will be filled with the first/last non-NaN
values in those positions.
- Data that begins and/or ends with
pspm_sf
pspm_sf
now supports missing epochs.- Now allow input with
NaN
that indicates missing epochs. - Missing epochs can be specified with options.missing or the automatic
NaN
detection. - Missing epochs will be verified with
options.missingthresh
. - When the missing epochs are longer than 2s, the result out will be converted to
[]
. - The UI of SF analysis now allows using missing epochs from files or not to define any missing epochs.
- Now allow input with
pspm_sf
now usespspm_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 usespspm_interp1
for interpolating data.
pspm_text
- The Matlab file that stores the information of help text
pspm_text.mat
will be stored inside the source folder of PsPM and will be deleted when PsPM is quit.
- The Matlab file that stores the information of help text
pspm_trim
marker_chan_num
now refers to the first marker channel as default.
Minor Adjustments
pspm_sf
,pspm_glm
andpspm_dcm
- The option
marker_chan_num_event
is removed. - In default, the first marker channel / event channel is always selected and no users' customisation is allowed.
- The last data channel / wave channel is always selected.
- The option
Reference document
- New document PsPM Reference for checking the default values and restrictions of
options
fields.
v6.0.0
New features
- PsPM now support a developer mode, which allows
- Minimised terminal output.
- Automagical parameter selection for testing.
- Always overwrite files.
pspm_extract_segments
- now allows an option z-score for normalisation.
pspm_find_valid_fixations
- now allows processing preprocessed left/right/combined pupil data.
pspm_gaze_pp
- now allows preprocessing gaze signals.
pspm_overwrite
- now handles the behaviour of overwrite if not defined by the user, and is used where applicable.
pspm_time2index
- now processes adjustable conversion from time to index globally.
pspm_update_chantype
- now allows generalised behaviour of updating channel types.
Bug fix
- General
- A bug which may lead to failure of PsPM path searching has been fixed.
- A bug which may display figures in the GUI has been fixed.
pspm_bf_spsrf_box
- now uses correct parameter settings.
pspm_convert_ppu2hb
- terminates if only one pulse is detected.
pspm_data_editor
- now able to show figures when import a datafile correctly.
pspm_dcm
- now handles missing epochs that start at 0 correctly.
- now processes variables properly to make length consistent.
pspm_display
- now display plots with correct x-axis ranges.
pspm_glm
- now applies correct variable settings.
- now produces results correctly when facing many short missing epochs.
pspm_interpolate
- now returns results correctly when applying forced extrapolation.
pspm_resp_pp
- now allows replace as the channel action properly.
pspm_scr_pp
- now uses inconsistent variables when delivering missing epochs.
- now writes data out properly when epochs are removed.
- now properly handles data if the first channel is not
scr
.
pspm_sf
- now refer to model file correctly.
pspm_split_sessions
- now processes missing files with an epoch starting at 0s properly.
- now properly catches edge cases.
ValidSamplesModel
- now properly throw warnings if histogram counts are zeros.
Improvements
- General
- now supports loading
ppg
data. - now displays improved terminal output text.
- now supports loading
pspm_con1
- now assesses the statistics in the arguments for throwing warnings when detecting invalid values.
pspm_data_editor
- now displays the x and y axis label and text according to the input data.
- now sorts the epoch list according to the start data point.
pspm_get_marker
- now detect and update the field
flank
when applicable.
- now detect and update the field
pspm_import
- now detect and update the field
flank
when applicable.
- now detect and update the field
pspm_load_data
- now checks whether the input has an empty channel.
- now autofills some variables.
pspm_pupil_pp
- now calls
pspm_load_data
to load single channels.
- now calls
pspm_rev_glm
- now display normalised data for visualisation purpose only.
pspm_write_channel
- now checks whether the input has an empty channel.
GUI
- "Edit defaults" in the GUI is now working properly.
- GUI typeface is now generalised across the software.
Discussion Page
PsPM now has a discussion page for users to ask questions about the usage of the software.
v5.1.1
New Functions
pspm_bf_data
- New function template to allow users creating their own basis functions from a data vector.
UI Improvements
- PsPM now has an improved GUI for the main screen and
pspm_display
. - PsPM now uses system specific design for Windows, macOS and Linux.
- A bug that affects GUI display has been fixed.
Bugfixes
pspm_dcm
- A bug of channel and data referring that leads to incorrect missing epoch processing has been fixed.
pspm_dcm
now handles empty epochs correctly.
pspm_scr_pp
- A bug that throws warning when GUI is called has been fixed.
pspm_split_sessions
- A bug that leads to GUI crash has been fixed.
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.
v5.1.0
New Features
- PsPM now has an improved GUI with a more eye-friendly colour and typeface.
- PsPM now has an alternative GUI built by using
.mlapp
, which has a more modern appearance across different platforms consistently.
New Functions
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.
Changes
- General
- Dialogs have been rewritten for avoiding endless loops.
- In the menu, pre-processing has been reconstructed, where pupil size convert and gaze convert are now under pupil and eye tracking.
- PsPM now always generates test data inside the PsPM folder.
pspm_interpolate
pspm_interpolate
now processes data ending withNaN
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 usingpspm_trim
for processing data.
Bugfixes
pspm_glm
- A bug that leads to the failure of selecting left/right eye has been fixed.
pspm_load1
andpspm_dcm
- A bug that leads to the failure of exporting statistics has been fixed.
pspm_resp_pp
- A bug that leads to the failure of opening batch for respiration data processing has been fixed.
pspm_scr_pp
- A bug that leads to incorrect matrix construction has been fixed.
v5.0.0
New Features
- Allow
pspm_data_editor
to load an epoch file. - Allow
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. - Allow
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. - Allow
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. - Add the possibility to select the flank in the 'Import' module of the GUI of PsPM.
- Add the possibility to import DSV (delimiter separated values) as well as CSV (comma separated values) data files.
Changes
- Split the data convert functionality in tools into the 'Gaze Convert' and 'Pupil Size convert' in the data preprocessing section.
- Factor out blink/saccade edge filtering logic out of
pspm_get_eyelink
topspm_blink_saccade_filt
. - Deprecate edge filtering functionality in
pspm_get_eyelink
. - Make
pspm_pupil_correct_eyelink
use the last gaze channel when there are multiple gaze x (similarly y) channels in the file. - Make
pspm_extract_segments
return NaN percentages and not ratios.
Bugfixes
- Scale DCM plot XTick by sample rate.
- Correct index offset when dealing with the descending flank for continuous markers.
- Allow
pspm_display
to plot any type of marker channels. - Fix
pspm_display
behaviour when user tries to load data with less channels than the data he/she is currently displaying. - Fix
pspm_split_sessions
behaviour when the intertrial interval in the data is random. Add an optionrandomITI
(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. - Remove
startsWith
andendsWith
from all functions for a better backward compatibility. - Fix bug in
pspm_trim
which was wrongly defining the starting trimming point index.
v4.3.0
New Features
- In
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.
Changes
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.- In
pspm_get_eyelink
,import.flank
set to'all'
. - The test of
pspm_extract_segments
was adapted to the new feature. - External functions and libraries were regrouped in one folder called
ext
.
Bugfixes
- Fix a bux in
pspm_bf_lcrf_gm
andpspm_bf_ldrf_gm
where the offset was wrongly implemented. - Fix a bug in
pspm_compute_visual_angle
where there was an error in the conversion factor of pixels wrt. to mm.
v4.2.1
New Functions
- Three new tests (
pspm_hb2hp_test.m
,pspm_filtfilt_test.m
,pspm_butter_test.m
)
Changes
pspm_display
andpspm_ecg_editor
do not perform filtering anymore.- Treatment of missing data in DCM is now the same regardless of whether they are specified as NaN or via model.missing.
- Eyelink import parameter blink/saccade edge discard factor default value has been set to 0. This means no extra samples are discarded around blinks/saccades.
Bugfixes
- Fix a bug in
pspm_hb2hp
where the function crashed when there is no heartbeat left after lower and upper bound filtering of the heartbeat periods. - Fix a bug in
import_eyelink
which imported more markers than the number of markers in the actual .asc file. - Fix a bug in
pspm_display
which crashed when trying to plot ECG signal that contains NaN. - Fix a bug in
pspm_prepdata
which returned only NaN when input signal contained some NaN values. - Fix a bug in
pspm_version
which crashed when MATLAB was invoked with-nojvm
. - Fix a bug in
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. - Fix a bug in import_viewpoint which created a new session for every marker containing a
+
somewhere, e.g.:CS+
. - Fix a bug in
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. - Fix a bug in
pspm_filtfilt
which crashed when the filter parameters were of dimension one.
v4.2.0
New Functions
- A new pupil data preprocessing function
- A new pupil foreshortening error correction function
- A new QRS detection algorithm for fMRI environments
New Features
- Previously, Eyelink import used to discard 50 ms worth of samples
from each side of every blink or saccade period. This behaviour is
preserved; however, sample discard duration can now be set by the
user. - Channel processing functions now store extensive historical data in
PsPM files. This data can be printed in table format using the new
utilityfunction pspm_format_history_from_file
- Pupil channel is now loaded according to a new precedence order.
Refer to GLM documentation in this manual to learn more.
Changes
- Eyelink import now returns times and dates in a slightly different
format. - Newest version of PsPM is now obtained from the version string in
pspm.sourceforge.net, not from the download link zip file name - GLM now uses the LAST channel of a specified modality in a PsPM
file. - Nonlinear SCR model (DCM) now does not use the inter-trial interval
duration value (ITI) of the last trial when computing session
specific minimum ITI values. Previously, using these last ITI values
would lead to abnormally small overall min ITI values in some input
files, thereby causing the inference and PCA sections to use less
data for all trials. Now, we prevent this from happening. - Eyelink import parameter blink/saccade edge discard factor default
value has been set to 0. This means no extra samples are discarded
around blinks/saccades.
Bugfixes
- Fix a bug in
pspm_extract_segments
where trial onsets were not
assigned to conditions correctly - Fix a bug in Viewpoint import where files in DOS format were being
parsed incorrectly - Fix a bug in Eyelink import where blink/saccade periods where
misaligned, causing the function to discard useful data and return
noise instead
Improvements
- New utility functions to make PsPM more compatible across different
operating systems - An optimized Eyelink import function that is significantly faster
and more memory efficient than previous versions - An optimized SMI event import function that is significantly faster
than the previous version - Multiple new tests to validate the correctness of the functions
- API unification: Now all preprocessing functions use
channel_action
variable to choose what to do with the new channel.