All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog
- PET: Updated entities list, remobved some nore more required json metadata
- PET/ECAT: Degraded warning of non-decodable bytes string to debug
- plugins/template: Fixed (finally) the import of classes in template
- bidsmap: Accepting non-bids modality with a warning
- bidsmap: Runs loaded from template are now unchecked
- README.md: liknks points to GitHub repo
- MRI/jsonNIFTY, PET/jsonNIFTY: fixed crash when trying to load generic json NIFTY file
- MRI/hmriNIFTY: removed requirement of presence of
MrPhoenixProtocol
- Splitted bloated README
- Version naming schema for post-release fixes
plugins
: added__init__.py
to tools so plugin tools will be properly installed
baseModule
: removed spanning messages about testing files in scan folders
bidsMeta
: Fixed not reseted bidsSession list ofsubjects.tsv
columnsplugins.tools
: Fixed faulty import ofbaseModule
- Rearranged imports to be importable as module
- Moved
version.txt
andbidsversion.txt
to bidsme sub-folder - Moved heuristics folder to bidsme directory
bidsme
now is installable with pip, and importable as modulesetup.py
scripts for setuptoolstools.info.reseterrors()
function to reset error counters
tests
directory, to be reintegrated later- reload participants definition warning
- map: by default
bidsme map
will stop after first recording producing error/warnings. Added a CLI parameter--process-all
to process all recordings in one go. - BaseModule: more explicit messages for testing validity of files at DEBUG level
- map: check for several files ending up with same bidsified name
- Support for CT in PET data type
- Small misprint that forbids the dump of DICOM header in PET
- few adjustements in parcing DICOM header
- map: checks for
IntendedFor
field wasn't running in multisession datasets - BidsSession: bug when
sub_values
not intended forparticipants.tsv
are - EEG, *NIFTI: Fixed returnvalue for copyRawFile
- PET: Updated recommended and required sidecar metadata checked for changes
- hmriNIFTI: fixed incorrect PhaseEncodingDirectionSign default value
- bug with option
--skip-existin-session
not working in preparation
- duplicated entries in
participant.tsv
wasn't saved in__duplicates.tsv
- NRI/hmriNIFTI: fixed error while retrieving
afFree
andadFree
firlds when they are not defined in json file
- DICOM: fixed crash if patient age is not defined
- DICOM: persons name is decoded correctly
- DICOM: if DS or IS not defined, returned value is None
- MRI/DICOM and PET/DICOM: support for extentions
.ima
and.IMA
- MRI/DICOM:
MRAcquisitionType
metafield - MRI: set of recommended fields for qMRI
- DICOM: added exception if decoding a particular value from header produces an error
- MRI: misspell in the name of
RepetitionTimeExcitation
- participants.tsv table is managed using bidsMeta.BidsTable class
- MRI/NIFTI and PET/NIFTI: incorrect parameter for
retrieveFormDict
- jsonNIFTI, hmriNIFTI: file parts parcing for compressed files
- bidsify: Allow conflicting values for
participants.tsv
. These values will be reported in__duplicated.tsv
and must be merged manually withparticipants.tsv
- baseModule: Set index before loading file. If loading crashes, now it should report correct file
- hMRI: test for
CSASeriesHeaderInfo
,CSAImageHeaderInfo
andMrPhoenixProtocol
in Siemens files. Should detect corrupted files before processing them
- Extra try/catch to protect running main loop, should stop crashes in case of corrupt data
- baseModule: Bidsified file is compressed only if he wasn't compressed before, the correct extention
.gz
is added to scans.tsv content - mapper: IntendedFor fields are checked from subject folder, the widecar characters are disallowed
- MPM parameters updated
- MRI:
RepititionTimeExitation
json field for all modalities - hmriNIFTI: Support of zipped (
.nii.gz
) data files - baseModule:isValidFile incorporates the file extention check before calling
_isValidFile
. The list of valid extentions must be given in_file_extentions
static variable in subclass - bidsmap: Introduced models, that allows to choose different set of entities and json fields for given modality
- baseModule: moved
zip
field toswitches
dictionary - baseModule: renamed and inverted
isBidsValid
toexportHeader
and moved it toswitches
- Moved
BidsSession
andbidsMeta
tobidsMeta
folder, should remove conflict withbids
package
- baseModule: testAuxiliary no longer prodices warning if unable to retrieve asked field
- Improved bidsmap template
- base:getField: can have multiple prefixes, that are executed from right to left
- mapper.py:implemented check for
IntendedFor
JSON fields. If duringmap
bidsified file exists, mapper checks if all files in IntendedFor also exist
- MRI:hmriNIFTI: B1FAValues vector is no longer sorted
- mapper.py: subject demographics are now copied into
sub_values
dictionary - hmriNIFTI: field
B1mapNominalFAValues
are now calculated correctly
- Bug when SequenceEndEP called without outfolder parameter in bidsification step
- Several flake8 issues
- Fixed mandatory requirement for mne module
- plugins/tools/General: ExtractBval function to extract bval/vec from DWI recording
- plugin/tools/General: storeSource function that allows store prepared data into bidsified folder
- plugins/tools/Nibabel: Convert3Dto4D function to merge 3D nii files into 4D
- Removed miliseconds in acqTime output, as BIDS requires
- EEG/EDF implementation using mne interface. Channels and events incorporated
- EEG/BV implementation using mne interface.
- map: map sanity checking, detecting duplicated provenance an examples
- bidsmap: warning if bids value is not string, and forcefull convertion into string
- baseModule: New public boolean switch
zip
, which is set toFalse
by default. If in plugin (inRecordingEP
or inSequenceEP
) is set toTrue
, then data file will be zipped during bidsification (provided is zipping is implemented for given type) - plugins: tools to use in pligins. To import use
import plugins.tools.General.<toolname>
- Reloading participant template now produce warning instead of raising exception, this should allow multiple execution in same session
- _formats:dummy Fixed conditional imports
- baseModule: added a dummy class that's loads instead of format subclass if dependancy module is not loaded
- PET: new module for PET images
- PET: DICOM file format
- PET: ECAT file format
- BaseModule: custom attributes, that can be set by
recording.custom[<name>]
, and accessed from bidsmap using<<custom:name>>
- baseModule: moved pure virtual methodes to
Module/abstract.py
, abstractmethode are now declared using ABC module - baseModule: acquisition time is now stored in
_acqTime
attribute, so it can be directly set bysetAcqTime(datetime)
function. The value from header is retrieved via_getAcqTime
virtual function - DICOM: when exporting header, if
AcquisitionDateTime
field is not defined it is exported using the current recording acquisition time - DICOM: common dicom operations (DataElement transformation, tag search etc.)
are moved to
_dicom_common.py
- selector: dictionary of aviable classes is now ordered
- bidsmeNIFTI: changed the way the header is written
- header is automatically created if
isBidsValid
is set to false - pyDicom is an optional dependency
- PET:ECAT Magic string test now "MATRIX" instead of "MATRIX72"
- PET:ECAT frames headers are now exported into json
- PET:ECAT FramesStart and Duration are now in s instead of ms
- baseModule: fixed
copyRawFile
function to return correct path to copied file - baseModule: fixed access values from participants and scans tables
- prepare: session.getPath returns correct session path is run with no-session option
- DICOM: unittests
- MRI: renamed MRI classes to DICOM, hmriNIFTI, bidsmeNIFTI, jsonNIFTI and NIFTI
- MRI: moved json fields definitions to separate file
_<ClassName>
- MRI: streamlined json metafields loading
- folder recording will no longer automatically fail
isValidFile
- scans.tsv show acqTime with microseconds
- DICOM: empty value for Time and DateTime fields
- baseModule: virtual dump function returned exception instead of raising it
- prepare: fixed manual setting for path in series
- prepare: now directories in folder with data files will no longer crash, but still produce warning
- map: in case of multiple checked runs, now the first one is used to set up modality and labels
- map: bug where 0 or '' values to check are not retained for bidsmap file
- bug during attribute checking where retrieved attribute was cleaned
- Modules:
common.py
file with often used functions for modules implementations common.py
:action_value
function that apply a given action to value, used for transformation of metadata from headerscommon.py
:retrieveFormDict
function that implements search of value from path in standard dictionary- unittests for
common.py
- meta-fileds are not longer checked for pre-defined value if present in bidsmap
- MRI: fixed misspell in
FlipAngle
metafield - Hidden files wasn't skipped prpoerly
- MRI: fixed order of entities for
anat
modality - map: crash if
<<bids:xxx>>
used if corresponding entity not set
- MRI: headNIFTI -- NIFTI file format with bidsme-extracted DICOM-header
- map:
unknown.yaml
file now replicates standardbidsmap.yaml
structure with the only modality__unknown__
. Copiyng directly fromunknown.yaml
, and filling attributes, bids and suffix should now suffice for bidsmap - map: If bids section is empty for matched run, it will be filled by predefined entities, provide the modality is defined in Bids standard
participants.tsv
wasn't filled in preparation step
map
,process
andbidsify
looks for given bidsmap file first in order: in destination code folder, local folder, and user configuration folder- in bidsmap
Options
dictionary is removed, andversion
entry is replaced by__bids__
, that refers to version of BIDS and no more to version of software, thebidsignore
is dropped
- Map attributes now accepts dynamic fields, if corresponding attribute is included in brackets
- EEG:BrainVision: removed
PatientId
,SessionId
andRecordingNumber
from attributes - EEG:BrainVision: functions
getSubId
andgetSesId
returnsNone
- If subject Id and session Id is set to None, the corresponding values
are extracted from file name, assumming it is formatted following BIDS
(fields
sub
andses
respectively) - If map attributes dictionary is empty, it will match all recordings
- If map attribute is not found in recording, it will fail match
- If map attribute is
None
then it will match all values - BidsSession: BidsSession class can be initialized with subject and session values. If these values are set, corresponding attributes will be locked
- Preparation: if subject or session values are
None
, they are calculated for each recording in serie
- EEG:BrainVision: fixed
_loadFile
function name - EEG:BrainVision: added
acq
to template map - EEG:BrainVision: Fixed TaskName and SamplingFrequency json fields
- Reimplementation of required, recommended and optional metadata JSON fields
- added
acq
toeeg
modality (present in BIDS 1.2.0)
ieeg
andmeg
modalities toEEG
module
- Gitlab CI