All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog
- Bug where cropping recording by event didn't worked for upper limit
- Misspelled function in
searchEvent
- Added errors 50 and 51 for recording parameters and invalid subject id
- Added check for empty subject id, with error 51 if it fails
- Added trap for invalid xml in recording.esrc for Embla format
- Fixed bug in
eegBidsCreator.py
where the duplicated recordings are removed due to change in exception system
- Fixed bug in
tools.plugins
wherefile
global variable wasn't correctly set
- The warnings in
.ini
file (like spaces in channel names) are silenced in eegBidsCreator, but still be shown incheck_configuration.py
- Streamlined plugin managment
- Custom Exception. All expected exceptions should (in theory) inherit from the class
Data_example
folder
GPL2.0+
license and headers
- CLI arguments for plugin initialized as empty list instead of None value
- Configuration file parameters to plugin are passed now using configparser.SectionProxy
- in brainvision, storing data using float32 will store an integer with corresponding scale
- moved EDF+ annotation at the end of channels for compatibility with FASST
[EDF]/EDFplus
boolean option to swich between output EDF+ and EDF formats
- usage of incorrect 'µ' character in unit prefixes
- run now can be defined by hand in cfi/cli. Doing so is incomaptible with split runs options
- Directory exists error when directory was created between check and creation by other processus
- Local file are no longer removed if
OverideDuplicated == True
and duplicated files are found. An exception will still occure
DataStructure.Generic.Recording.InputPath
becomesGetInputPath
for clarity and consistency
- library for BIDS fields used in .tsv files. New class
tools.json.fieldEntry
is defined with a list of field definitions. New fields can be added via AddField.DumpDescription
creates a descriptive json file, while GetHeader and GetLine generates the header and individual lines for .tsv files - fieldEntry is defined for participants.tsv and events.tsv files
- scan id functions and fieldLibrary moved to BIDS/BIDS.py
-p --patient
and[GENERAL]PatientId
options to manually set the id of subject. It follows usual priority rule: file < cfi < cli
- Sidecar Json created without run label
- post_processing adapted to use field description files
- Forced utf-8 encoding for output files for non-unicode systems
- The end time of a run will no longer crash at second==59
- Forcing delete on outData in case of exception, making it release the output files
- Lack of run label for plugin-defined runs if SlitRuns is deactivated in configuration
- Misspelled name of Embla channel, now class id EmbChannel
__getvalue__
retrieve now data only within given sequence and becomes_getValue
__getValueVector__
becomes now_getValueVector
and retrieves only raw data without oversamplingGetvalue
accepts now datetime, timedelta and index parameters to retrieve data pointsGetvaluevector
accepts date and timedelta to retrieve the data. main algo moved to Generic Channel, and use reimplementation of_getValueVector
to access data from diskGetIndexTime
now uses_getLocalIndex
subroutine for index and sequence retrieval- Streamlined output path treatment and locking mechanism.
- Run now can be only a number
- SetReferenceTime do not recalculate reference times if RefTime is defined and parameter passed is None
- A warning if a Calibration function is used in Embla channel
- Set of Channel function to pass from measurement time to local/global indexes and vice-versa
- Several docstrings
- Checks for BIDS compliance in ID labels.
- Virtual static IsBalidInput function to Generic.Record, wich will allow to detect the input format
- InputPath() function to Generic.Record returning the path to input folder
- Embla Record class now inherits from Generic record. All Embla specific functions are moved to DataStructure.Embla.Record
- Added GenRecord.IsValidInput static function. Will return true if input is of a given format
- Added SearchEvent, RSearchEvent SearchEventTime, and RSearchEventTime which implements a search algorithm for an event
- Incorrect path for source data
- The call to ch_dict where this dictionary doesn't exists
- An option
[BIDS]OriginalTypes
, which allow to change the original channel types to BIDS accepted ones. - List of channels triggering a particular event in channels.tsv file
- Measurement units prefixes now follows SI as suggested in BIDS, except if conversion is performed into EDF, then prefixes follows EDF+ standard.
- JSON file creation functions are moved to
tools.json
- EventsEP plugin takes now the recording instead of event list
- IncludeSegmentStart now correctly adds new events
- If converted to BV or MEEG, the times in
scans.tsv
are correctly rounded to seconds
rmdir
becomes rrm and accepts a switchkeepRoot
. If set toTrue
, the root directory, passed torrm
will be also removed.- temporary directory now uses only the name of script instead of a full path
- configuration and log files will now be saved at
sourcedata
getValue
andgetValue
will raiseNotImplementedError
is called from Generic/Channel functions- temporary directory will not have full executable path in its name
participants.json
withparticipants.tsv
fields description will be created, if it is missing- tools.create_directory function that checks if given directory exists and creates one if not. Also controls if directory contains files needed to be removed.
post_processing.py
script which will scan given bids folder, remove duplicates from lists, add headers and clean up files- Plugin file, if loaded will be saved in
code
directory - Option
[BIDS]IncludeAuxiliary
to save the auxiliary files inauxiliaryfiles
folder. This is not BIDS compliant. bidsignore
file that silence the known incompatibilities with bids standardtools.create_directory
function, that creates directories if these not existing, and checks for files following a pattern inside.
- Sample column in
events.tsv
. It is an optional column in any way
Examples
folder with some examples, validation and performance scriptsdoc
folder containing presentations and other documentation- packed executables for Linux and Windows in
bin
folder - Anonymization by date and name
- Restriction of memory usage
- Copying of auxiliary files
- If there no conversion, the original embla files are copied to output
- Plugin system
- Conversion to MEEG (SPM12) format
- White and Black lists for channels and events
- Splitting to runs can be now done by sequences, event and its duration or opening and closing events
- Exception treatment. Now they are captured and show trace
- Generic functions and parameters reading moved to separate module in
tools
directory - Rearranged config file and cli parameters
- Events from blacklisted channels will no more produce a warning
- Error if unable to create default temporary directory
- Wrong sample number for events.tsv
- Lengths restrictions in EDF header
- Duplicated events behaviour in EDF file
- BrainVision '%' symbol incorrect behaviour
- BrainVision event association to channel
- Exact times printed out at INFO log level