Contributing#
Feel free to open issues to report a bug and ask for improvements.
If you want to contribute, have a look at our contributing guidelines that are meant to guide you and help you get started. If something is not clear or you get stuck: it is more likely we did not do good enough a job at explaining things. So do not hesitate to open an issue, just to ask for clarification.
Installation#
To install bidspm and make changes to it, it is recommend to install the python package in editable mode with all its development dependencies.
pip install -e .[dev]
Initialisation#
To facilitate running tests, make sure you initialize bidspm in dev mode, from the MATLAB command line:
bidspm dev
You can also run all the tests with:
bidspm run_tests
Style guidelines#
We use camelCase to name functions and variables for the vast majority of the
code in this repository.
Scripts names in general and as well functions related to the demos use a
snake_case.
Constant are written in UPPERCASE.
Input arguments ordering#
From more general to more specific
BIDS > opt > subject > session > run
BIDS(output fromgetDataorbids.layout) restrict the set of possible analysis one can run to this BIDS data setoptrestricts this set even furthersubject/session/runeven more
% OK
varargout = getInfo(BIDS, opt, subLabel, info, varargin)
% not OK
varargout = getInfo(subLabel, BIDS, opt, info, varargin)
Output arguments ordering#
Try to return them in order of importance first and in order of appearance otherwise.
Exceptions#
If function creates or modifies a batch then matlabbatch is the first argin
and first argout.
If a function performs an “action” to be chosen from a one of several strings
(with a switch statement), this string comes as first argin or second if
matlabbatch is first.
% OK
varargout = getInfo('filename', BIDS, opt, subID, varargin)
[matlabbatch, voxDim] = setBatchRealign(matlabbatch, [action = 'realign',] BIDS, opt, subID)
% not OK
% 'filename' is the name of the "action" or the info to get in this case
% batch and action should go first
varargout = getInfo(BIDS, opt, subID, 'filename', varargin)
[matlabbatch, voxDim] = setBatchRealign(BIDS, opt, subID, matlabbatch, [action = 'realign'])
Updating the FAQ#
The FAQ is rendered with FAQtory.
New questions must be added to docs/questions and the main FAQ.md can be
created with:
make update_faq
release protocol#
[ ] create a dedicated branch for the release candidate
[ ] update version in
citation.cff[ ] documentation related
[ ] ensure the documentation is up to date
[ ] make sure the doc builds correctly and fix any error
[ ] update jupyter books
[ ] update binder
[ ] update docker recipes
[ ] update changelog
[ ] run
make release[ ] open a pull request (PR) from this release candidate branch targeting the default branch
[ ] fix any remaining failing continuous integration (test, markdown and code linting…)
[ ] merge to default branch
[ ] create a tagged release
[ ] build and push docker images if necessary
[ ] after release
[ ] set version in
citation.cffto dev