Releases: bachlab/PsPM
Releases · bachlab/PsPM
v7.0.0
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_fcpspm_bf_psrf_2_fcallows 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_glmpspm_glmnow 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
GLMoptionmarkervaluesto create onsets definition from channels distributed across multiple channels.
- The function allows users to use the
pspm_tamTAMstands 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
pupilrather 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
varargoutlogic 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.mathas been fixed.
- A bug that could change the original file if it saves epochs to
- Improvements
pspm_extract_segments- Now
pspm_extract_segmentsprocess 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_sessionswhen it processes a missing epoch file has been fixed. - The help text of
split_sessionsin 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
pspmin 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_optionsis introduced to PsPM for controlling the default and acceptable values of the structoptionsused by most PsPM functions. The default values of the fields in the structoptionsfor various functions can be directly checked by searching inpspm_options. - The default values in
pspm_optionshave 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_optionswill 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_dcmhas 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_sfis analysing data with missing epochs has been fixed. - A bug that leads to error when
pspm_sfanalyses data wheretime unitis defined asmarkerhas been fixed.
pspm_split_sessionspspm_split_sessionsnow considersmarker_chan_numwhen callingpspm_trim.
New Features and Improvements
channel- We have generalised the
channelrelated variables throughout PsPM, which are given aschan/channel→channelchans/channels→channelschannel_units/channels_units/chan_units/chans_units→channel_unitschan_combine→channel_combinechan_action→channel_actionchannels_header→channel_headerchantype→channeltype
- We have generalised the
import_eyelink- Improved
import_eyelinkfor adding some support for importing eyelink data converted by higher version of .EDF files.
- Improved
pspm_con2pspm_con2is now usingpspm_overwrite.
pspm_dcmandpspm_dcm_inv.flexeventsand.fixeventsare now fields ofmodelinstead ofoptions.pspm_dcmnow usespspm_get_timingto handle missing epochs.- Improved missing epoch support
- The field
.missingis now allocated fromoptionstomodel. .missing_datais 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_chanas default.
- The first channel is always referred by
pspm_glm- The fallback for
options.exclude_missinghas 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_numnow refers to the first marker channel as default.pspm_glmnow usespspm_get_timingto handle missing epochs .
- The fallback for
pspm_interp1pspm_interp1now 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_prepdatapspm_prepdatanow uses interpolation to handle data withNaN.- Data that begins and/or ends with
NaNwill be filled with the first/last non-NaNvalues in those positions.
- Data that begins and/or ends with
pspm_sfpspm_sfnow supports missing epochs.- Now allow input with
NaNthat indicates missing epochs. - Missing epochs can be specified with options.missing or the automatic
NaNdetection. - 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_sfnow usespspm_get_timingto handle missing epochs.marker_chan_numnow refers to the first marker channel as default.
pspm_sf_dcmpspm_sf_dcmnow usespspm_interp1for interpolating data.
pspm_text- The Matlab file that stores the information of help text
pspm_text.matwill 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_trimmarker_chan_numnow refers to the first marker channel as default.
Minor Adjustments
pspm_sf,pspm_glmandpspm_dcm- The option
marker_chan_num_eventis 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
optionsfields.
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
ppgdata. - 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
flankwhen applicable.
- now detect and update the field
pspm_import- now detect and update the field
flankwhen 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_datato 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_dcmnow 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_sessionsnow accepts correct number of data files and missing epoch files in the GUI.pspm_split_sessionsnow 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_pppspm_scr_ppreplaces the classic pspm_simple_qa.pspm_scr_ppnow allows users to detect clipping, where the results can be exported together with the original outcome.pspm_scr_ppnow 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_interpolatepspm_interpolatenow processes data ending withNaNwell without throwing warnings.
pspm_find_soundspspm_find_soundsnow throws warning when some data was excluded due to the strict parameter setting.
pspm_split_sessionspspm_split_sessionsis now usingpspm_trimfor processing data.
Bugfixes
pspm_glm- A bug that leads to the failure of selecting left/right eye has been fixed.
pspm_load1andpspm_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_editorto load an epoch file. - Allow
pspm_simple_qato suppress classification of discretisation oscillations as artefacts, to expand artefact windows, and to automatically remove small data islands embedded in artefacts. - Allow
pspm_simple_qato store the epochs of data that are filtered out into an output.matfile. The accompanying GUI editor is available under 'Artefact removal' in the tools section. - Allow
pspm_convert_gaze_distanceto 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_eyelinktopspm_blink_saccade_filt. - Deprecate edge filtering functionality in
pspm_get_eyelink. - Make
pspm_pupil_correct_eyelinkuse the last gaze channel when there are multiple gaze x (similarly y) channels in the file. - Make
pspm_extract_segmentsreturn 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_displayto plot any type of marker channels. - Fix
pspm_displaybehaviour when user tries to load data with less channels than the data he/she is currently displaying. - Fix
pspm_split_sessionsbehaviour 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
startsWithandendsWithfrom all functions for a better backward compatibility. - Fix bug in
pspm_trimwhich was wrongly defining the starting trimming point index.
v4.3.0
New Features
- In
pspm_get_events,import.flankcan be now set to'all'what would import all markers and data related to them. pspm_displayallows now to display pupil size units and the gaze x & y coordinate units on the y-axis.pspm_extract_segmentscan be used now with raw data and thus be called easily within another function.
Changes
pspm_versionhas a new URL and thus do not send any warning about version checks anymore.import_eyelinkdo not import markers which are outside the session end time (ENDmarker).import_eyelinksends a warning whenever two markers have the same timestamp.- In
pspm_get_eyelink,import.flankset to'all'. - The test of
pspm_extract_segmentswas adapted to the new feature. - External functions and libraries were regrouped in one folder called
ext.
Bugfixes
- Fix a bux in
pspm_bf_lcrf_gmandpspm_bf_ldrf_gmwhere the offset was wrongly implemented. - Fix a bug in
pspm_compute_visual_anglewhere 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_displayandpspm_ecg_editordo 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_hb2hpwhere the function crashed when there is no heartbeat left after lower and upper bound filtering of the heartbeat periods. - Fix a bug in
import_eyelinkwhich imported more markers than the number of markers in the actual .asc file. - Fix a bug in
pspm_displaywhich crashed when trying to plot ECG signal that contains NaN. - Fix a bug in
pspm_prepdatawhich returned only NaN when input signal contained some NaN values. - Fix a bug in
pspm_versionwhich crashed when MATLAB was invoked with-nojvm. - Fix a bug in
pspm_get_viewpointwhich 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_eventswhich 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_filtfiltwhich crashed when the filter parameters were of dimension one.