- Remove grants from .zenodo.json for now #766 (@yarikoptic)
- Yaroslav Halchenko (@yarikoptic)
- Revert "Add CITATION.cff validation to lint workflow" #765 (@yarikoptic)
- Yaroslav Halchenko (@yarikoptic)
- Replace CITATION.cff with .zenodo.json for correct (split) affiliations on Zenodo #764 (@yarikoptic)
- Codespell tuneup: no dedicated workflow (part of tox -e lint), and fix few freshly detected typos #762 (@yarikoptic)
- Yaroslav Halchenko (@yarikoptic)
- Specify license in CITATION.cff #760 (@yarikoptic)
- Replace one rogue markdown ref to
ref <url>
_ RST #759 (@yarikoptic)
- Yaroslav Halchenko (@yarikoptic)
- Add CITATION.cff based on JOSS paper.md #758 (@yarikoptic)
- Add Jpeg2000 to Docker container #747 (@jennan)
- Austin Macdonald (@asmacdo)
- Maxime Rio (@jennan)
- Yaroslav Halchenko (@yarikoptic)
- Handle cases where dates/times in DICOM are empty strings, not Nones (e.g. after some anonymization) #756 (@jennan @yarikoptic)
- Maxime Rio (@jennan)
- Yaroslav Halchenko (@yarikoptic)
- Add support for a custom seqinfo to extract from DICOMs any additional metadata desired for a heuristic #581 (@yarikoptic @bpinsard)
- codespell: ignore "build" folder which might be on the system #581 (@yarikoptic)
- Basile (@bpinsard)
- Yaroslav Halchenko (@yarikoptic)
- properly remove GE multiecho bvals/bvecs #728 (@bpinsard)
- datalad sensitive marking fixes #739 (@bpinsard)
- Reject "Missing images" in sensor-dicoms #735 (@chaselgrove)
- Adding workflow figure (@TheChymera)
- Added figures to master branch (@TheChymera)
- auto 11.0.5 is needed to avoid hitting some "Error: fatal: ... not an integer" bug #746 (@yarikoptic)
- Fix - auto is in ~/, not in the PATH #745 (@yarikoptic)
- Make it possible to review auto version -v output during release + adjust that workflow step description #743 (@yarikoptic)
- gh-actions: Bump codecov/codecov-action from 3 to 4 #736 (@dependabot[bot] @yarikoptic)
- gh-actions: Bump actions/setup-python from 4 to 5 #723 (@dependabot[bot])
- Adjust wording on heuristics page -- do not claim creating some skeleton #741 (@yarikoptic)
- Document how to release and add changelog entries #737 (@asmacdo @yarikoptic)
- Add dianne tutorials #734 (@asmacdo @yarikoptic)
- Add documentation building instructions #730 (@asmacdo)
- Allowing RTD to access images under the same path as README #734 (@TheChymera)
- Using environment figure in about section #730 (@TheChymera)
- Make README more concrete #724 (@asmacdo)
- @chaselgrove
- @dependabot[bot]
- Austin Macdonald (@asmacdo)
- Basile (@bpinsard)
- Horea Christian (@TheChymera)
- Yaroslav Halchenko (@yarikoptic)
- Drop Python 3.7 support #722 (@yarikoptic)
- ReproIn: give an informative assertion message when multiple values are found #718 (@yarikoptic)
- Convert assertion into a warning that we would not use dicom dir template option #709 (@yarikoptic)
- Do not demand --files for all commands, even those which do not care about it (like populate-intended-for) #708 (@yarikoptic)
- Add script to sensor dicoms -- for the error where dcm2niix might or might not fail but issues an Error (@yarikoptic)
- Ran pre-commit on everything, black decided to adjust some formatting #721 (@yarikoptic)
- Make sensor-dicoms use gnu-getopt if present (on OSX) #721 (@yarikoptic)
- Yaroslav Halchenko (@yarikoptic)
- gh-actions: Bump actions/checkout from 3 to 4 #703 (@dependabot[bot])
- Fix inconsistent behavior of existing session when using -d compared to --files option: raise an AssertionError instead of just a warning #682 (@neurorepro)
- Various tiny enhancements flake etc demanded #702 (@yarikoptic)
- Boost claimed BIDS version to 1.8.0 from 1.4.1 #699 (@yarikoptic)
- Point to Courtois-neuromod heuristic #702 (@yarikoptic)
- Add codespell to lint tox env #706 (@yarikoptic)
- test-compare-two-versions.sh: also ignore differences in HeudiconvVersion field in jsons since we have it there now #685 (@yarikoptic)
- Add description of placeholders which could be used in the produced templates #681 (@yarikoptic)
- @dependabot[bot]
- Michael (@neurorepro)
- Yaroslav Halchenko (@yarikoptic)
- Make .subsecond optional in BIDS/DICOM datetime entries #675 (@yarikoptic)
- gh-actions: Bump codespell-project/actions-codespell from 1 to 2 #677 (@dependabot[bot])
- Replace (no longer used) Travis badge with GitHub action one (for test) #677 (@yarikoptic)
- @dependabot[bot]
- Yaroslav Halchenko (@yarikoptic)
- Add type annotations #656 (@jwodder @yarikoptic)
- ENH: Support extracting DICOMs from ZIP files (and possibly other archives) by switching to use shutil.unpack_archive instead of tarfile module functionality #471 (@HippocampusGirl @psadil)
- Allow filling of acq_time when AcquisitionDate AcquisitionTime missing #614 (@psadil)
- BF(?): make _setter images be taken as scouts - only DICOMs are saved #570 (@yarikoptic)
- Adjust .mailmap to account for mapping various folks with multiple emails so that git shortlog -sn -e provides entries without duplicates #570 (@yarikoptic)
- Make an
embed_dicom_and_nifti_metadata()
annotation work on Python 3.7 #673 (@jwodder) - Merge branch 'feature_dicom_compresslevel' #673 (@yarikoptic)
- Update heudiconv/dicoms.py #669 (@octomike)
- Don't call
logging.basicConfig()
in__init__.py
#659 (@jwodder)
- Mailmapping more contributors (@yarikoptic)
- Adjust comment and remove trailing space flipping linting (@yarikoptic)
- Declare
custom_grouping
return type instead of casting #671 (@jwodder) - Use
pydicom.dcmread()
instead ofpydicom.read_file()
#668 (@jwodder) - Add
sample_nifti.json
to.gitignore
#663 (@jwodder) - Write command arguments as lists of strings instead of splitting strings on whitespace #664 (@jwodder)
- Add & apply pre-commit and lint job #658 (@jwodder)
- Fix some strings with \ (make them raw or double-), improve pytest config: move to tox.ini, make unknown warnings into errors #660 (@jwodder)
- Replace py.path with pathlib #654 (@jwodder)
- Replace third-party
mock
library with stdlib'sunittest.mock
#661 (@jwodder) - Remove kludgy support for older versions of pydicom and dcmstack #662 (@jwodder)
- Remove use of
six
#655 (@jwodder)
- John T. Wodder II (@jwodder)
- Lea Waller (@HippocampusGirl)
- Michael (@octomike)
- Patrick Sadil (@psadil)
- Yaroslav Halchenko (@yarikoptic)
- [DATALAD RUNCMD] produce updated dockerfile #652 (@yarikoptic)
- Yaroslav Halchenko (@yarikoptic)
- Re-add explicit instructions to install dcm2niix "manually" and remove it from install_requires #651 (@yarikoptic)
- Contributing guide. #641 (@TheChymera)
- Reword and correct punctuation on installation.rst #643 (@yarikoptic @candleindark)
- Horea Christian (@TheChymera)
- Isaac To (@candleindark)
- Yaroslav Halchenko (@yarikoptic)
- strip non-alphanumeric from session ids too #647 (@keithcallenberg @yarikoptic)
- Docker images: tag also as "unstable", strip "v" prefix, and avoid building in non-release workflow for releases. #642 (@yarikoptic)
- add install link to README #640 (@asmacdo)
- Setting git author and email in test environment #631 (@TheChymera)
- Duecredit dcm2niix #622 (@yarikoptic)
- Do not issue warning if cannot parse _task entity #621 (@yarikoptic)
- Provide codespell config and workflow #619 (@yarikoptic)
- BF: Use .get in group_dicoms_into_seqinfos to not puke if SeriesDescription is missing #622 (@yarikoptic)
- DOC: do provide short version for sphinx #609 (@yarikoptic)
- DOC: add clarification on where docs/requirements.txt should be "installed" from (@yarikoptic)
- fix minor typo (@yarikoptic)
- DOC: fixed the comment. Original was copy/pasted from DataLad (@yarikoptic)
- dcm2niix explicitly noted as a (PyPI) dependency and removed from being installed via apt-get etc #628 (@TheChymera @yarikoptic)
- Reword number of intended ideas in README.rst #639 (@candleindark)
- Add a bash anon-cmd to be used to incrementally anonymize sids #615 (@yarikoptic)
- Reword and correct punctuation on usage.rst #644 (@candleindark @yarikoptic)
- Clarify the infotodict function #645 (@yarikoptic)
- Added distribution badges #632 (@TheChymera)
- Capitalize sentences and end sentences with period #629 (@candleindark)
- Tune up .mailmap to harmonize Pablo, Dae and Mathias #629 (@yarikoptic)
- Add HOWTO 101 section, with references to ReproIn to README.rst #623 (@yarikoptic)
- minor fix -- Fix use of code:: directive #623 (@yarikoptic)
- Add 3.11 to be tested etc #635 (@yarikoptic)
- Austin Macdonald (@asmacdo)
- Horea Christian (@TheChymera)
- Isaac To (@candleindark)
- Keith Callenberg (@keithcallenberg)
- Yaroslav Halchenko (@yarikoptic)
- DOC: Various fixes to make RTD build the docs again #608 (@yarikoptic)
- John T. Wodder II (@jwodder)
- Yaroslav Halchenko (@yarikoptic)
- Fix certificate issue as indicated in #595 #597 (@neurorepro)
- BF docker build: use python3.9 (not 3.7 which gets upgraded to 3.9) and newer dcm2niix #596 (@yarikoptic)
- Fixup miniconda spec for neurodocker so it produces dockerfile now #596 (@yarikoptic)
- Update GitHub Actions action versions #601 (@jwodder)
- Set action step outputs via $GITHUB_OUTPUT #600 (@jwodder)
- DOC: codespell fix a few typos in code comments #605 (@yarikoptic)
- John T. Wodder II (@jwodder)
- Michael (@neurorepro)
- Yaroslav Halchenko (@yarikoptic)
- install dcmstack straight from github until it is released #593 (@yarikoptic)
- DOC: provide rudimentary How to contribute section in README.rst (@yarikoptic)
- Check out a full clone when testing (@jwodder)
- Convert Travis workflow to GitHub Actions (@jwodder)
- BF(docker): replace old -tipsy with -y -all for conda clean as neurodocker does now (@yarikoptic)
- adjusted script for neurodocker although it does not work (@yarikoptic)
- 0.9 of dcmstack was released, no need for github version #594 (@yarikoptic)
- Minor face-lifts to ReproIn: align doc and code better to BIDS terms, address deprecation warnings etc #569 (@yarikoptic)
- John T. Wodder II (@jwodder)
- Yaroslav Halchenko (@yarikoptic)
- BF: add recently tests data missing from distribution #567 (@yarikoptic)
- Yaroslav Halchenko (@yarikoptic)
- Make versioningit write version to file; make setup.py read version as fallback #566 (@jwodder)
- BF: add fetch-depth: 0 to get all tags into docker builds of master #566 (@yarikoptic)
- John T. Wodder II (@jwodder)
- Yaroslav Halchenko (@yarikoptic)
- Remove .git/ from .dockerignore so that versioning works while building docker image #564 (@yarikoptic)
- Yaroslav Halchenko (@yarikoptic)
- RF: drop Python 3.6 (EOLed), fix dcm2niix version in neurodocker script #555 (@yarikoptic)
- ENH: Adds populate_intended_for for fmaps #482 (@pvelasco @yarikoptic [email protected] @neurorepro)
- bids_ME heuristic: add test for the dataset that raised #541, add support for MEGRE #547 (@pvelasco @yarikoptic)
- reproin heuristic: specify POPULATE_INTENDED_FOR_OPTS #546 (@yarikoptic)
- FIX: Convert sets to lists for filename updaters #461 (@tsalo)
- Added new infofilestyle compatible with BIDS #12 (@chrisgorgo)
- try a simple fix for wrongly ordered files in tar file #535 (@bpinsard)
- BF: Fix the order of the 'echo' entity in the filename #542 (@pvelasco)
- ENH: add HeudiconvVersion to sidecar .json files #529 (@yarikoptic)
- BF (TST): make anonymize_script actually output anything and map deterministically #511 (@yarikoptic)
- Rename DICOMCONVERT_README.md to README.md #4 (@satra)
- Dockerfile - use bullseye for the base and fresh dcm2niix (@yarikoptic)
- Run codespell on some obvious typos #563 (@yarikoptic)
- Set up auto #558 (@jwodder @yarikoptic)
- BF(TST): use caplog to control logging level, use python3 in shebang #553 (@yarikoptic)
- BF(TST): use caplog instead of capfd for testing if we log a warning #534 (@yarikoptic)
- Travis - Use bionic for the base #533 (@yarikoptic)
- Basile (@bpinsard)
- Chris Gorgolewski (@chrisgorgo)
- DBIC BIDS Team ([email protected])
- John T. Wodder II (@jwodder)
- Michael (@neurorepro)
- Pablo Velasco (@pvelasco)
- Satrajit Ghosh (@satra)
- Taylor Salo (@tsalo)
- Yaroslav Halchenko (@yarikoptic)
Various improvements and compatibility/support (dcm2niix, datalad) changes.
- Add "AcquisitionTime" to the seqinfo (#487)
- Add support for saving the Phoenix Report in the sourcedata folder (#489)
- Python 3.5 EOLed, supported (tested) versions now: 3.6 - 3.9
- In reprorin heuristic, allow for having multiple accessions since now there is
-g all
grouping (#508) - For BIDS, produce a singular
scans.json
at the top level, and not one per sub/ses (generates too many identical files) (#507)
- Compatibility with DataLad 0.15.0. Minimal version is 0.13.0 now.
- Try to open top level BIDS .json files a number of times for adjustment, so in the case of competition across parallel processes, they just end up with the last one "winning over" (#523)
- Don't fail if etelemetry.get_project returns None (#501)
- Consistently use
n/a
for age/sex, also handle ?M for months (#500) - To avoid crashing on unrelated derivatives files etc, make
find_files
to take list of topdirs (excludingderivatives/
etc), and look for _bold only under sub-* directories (#496) - Ensure bvec/bval files are only created for dwi output (#491)
- In reproin heuristic, old hardcoded sequence renamings and filters (#508)
Various improvements and compatibility/support (dcm2niix, datalad, duecredit) changes. Major change is placement of output files to the target output directory during conversion.
- #454 zenodo referencing in README.rst and support for ducredit for heudiconv and reproin heuristic
- #445 more tutorial references in README.md
- #485 placed files during conversion right away into the target
directory (with a
_heudiconv???
suffix, renamed into ultimate target name later on), which avoids hitting file size limits of /tmp (#481) and helped to avoid a regression in dcm2nixx 1.0.20201102 - #477 replaced
rec-<magnitude|phase>
withpart-<mag|phase>
now hat BIDSsupports the part entity - #473 made default for CogAtlasID to be a TODO URL
- #459 made AcquisitionTime used for acq_time scans file field
- #451 retained sub-second resolution in scans files
- #442 refactored code so there is now heudiconv.main.workflow for more convenient use as a Python module
- minimal version of nipype set to 1.2.3 to guarantee correct handling of DWI files (#480)
heudiconvDCM*
temporary directories are removed now (#462)- compatibility with DataLad 0.13 (#464)
- #443 pathlib as a dependency (we are Python3 only now)
- Centralized saving of .json files. Indentation of some files could
change now from previous versions where it could have used
3
spaces. Now indentation should be consistently2
for .json files we produce/modify (#436) (note: dcm2niix uses tabs for indentation) - ReproIn heuristic: support SBRef and phase data (#387)
- Set the "TaskName" field in .json sidecar files for multi-echo data (#420)
- Provide an informative exception if command needs heuristic to be specified (#437)
embed_nifti
was refactored intoembed_dicom_and_nifti_metadata
which would no longer create.nii
file if it does not exist already (#432)
- Skip datalad-based tests if no datalad available (#430)
- Search heuristic file path first so we do not pick up a python module if name conflicts (#434)
- Python 2 support/testing
-g
option obtained two new modes:all
andcustom
. In case ofall
, all provided DICOMs will be treated as coming from a single scanning session.custom
instructs to use.grouping
value (could be a DICOM attribute or a callable)provided by the heuristic (#359).- Stop before reading pixels data while gathering metadata from DICOMs (#404)
- reproin heuristic:
- In addition to original "md5sum of the study_description"
protocols2fix
could now have (and applied after md5sum matching ones) 1). a regular expression searched in study_description, 2). an empty string as "catch all". This features could be used to easily provide remapping into reproin naming (documentation is to come to http://github.com/ReproNim/reproin) (#425)
- In addition to original "md5sum of the study_description"
- Use nan, not None for absent echo value in sorting
- reproin heuristic: case seqinfos into a list to be able to modify from overloaded heuristic (#419)
- No spurious errors from the logger upon a warning about
etelemetry
absence (#407)
This is largely a bug fix. Metadata and order of _key-value
fields in BIDS
could change from the result of converting using previous versions, thus minor
version boost.
14 people contributed to this release -- thanks
everyone!
- Use etelemetry to inform about most
recent available version of heudiconv. Please set
NO_ET
environment variable if you want to disable it (#369) - BIDS:
--bids
flag became an option. It can (optionally) acceptnotop
value to avoid creation of top level files (CHANGES
,dataset_description.json
, etc) as a workaround during parallel execution to avoid race conditions etc. (#344)- Generate basic
.json
files with descriptions of the fields forparticipants.tsv
and_scans.tsv
files (#376) - Use
filelock
while writing top level files. UseHEUDICONV_FILELOCK_TIMEOUT
environment to change the default timeout value (#348) _PDT2
was added as a suffix for multi-echo (really "multi-modal") sequences (#345)
- Calls to
dcm2niix
would include full output path to make it easier to discern in the logs what file it is working on (#351) - With recent datalad (>= 0.10), created DataLad dataset will use
--fake-dates
functionality of DataLad to not leak data conversion dates, which might be close to actual data acquisition/patient visit (#352) - Support multi-echo EPI
_phase
data (#373 fixes #368) - Log location of a bad .json file to ease troubleshooting (#379)
- Add basic pypi classifiers for the package (#380)
- Sorting
_scans.tsv
files lacking valid dates field should not cause a crash (#337) - Multi-echo files detection based number of echos (#339)
- BIDS
- ReproIn heuristic
- All heuristics saved under
.heudiconv/
underheuristic.py
name, to avoid discrepancy during reconversion (#354 fixes #353) - Do not crash (with TypeError) while trying to sort absent file list (#360)
- heudiconv requires nipype >= 1.0.0 (#364) and blacklists
1.2.[12]
(#375)
This release includes fixes to BIDS multi-echo conversions, the re-implementation of queuing support (currently just SLURM), as well as some bugfixes.
Starting today, we will (finally) push versioned releases to DockerHub.
Finally, to more accurately reflect on-going development, the latest
tag has been renamed to unstable
.
- Readthedocs documentation (#327)
- Update Docker dcm2niix to v.1.0.20190410 (#334)
- Allow usage of
--files
with basic heuristics. This requires use of--subject
flag, and is limited to one subject. (#293)
- Improve support for multiple
--queue-args
(#328) - Fixed an issue where generated BIDS sidecar files were missing additional
information - treating all conversions as if the
--minmeta
flag was used (#306) - Re-enable SLURM queuing support (#304)
- BIDS multi-echo support for EPI + T1 images (#293)
- Correctly handle the case when
outtype
of heuristic has "dicom" before '.nii.gz'. Previously would have lead to absent additional metadata extraction etc (#310)
--sbargs
argument was renamed to--queue-args
(#304)
Minor hot bugfix release
- Do not shorten spaces in the dates while pretty printing .json
A variety of bugfixes
- Reproin heuristic:
__dup
indices would now be assigned incrementally individually per each sequence, so there is a chance to properly treat associate for multi-file (e.g.fmap
) sequences - Reproin heuristic: also split StudyDescription by space not only by ^
tests/
moved underheudiconv/tests
to ease maintenance and facilitate testing of an installed heudiconv- Protocol name will also be accessed from private Siemens csa.tProtocolName header field if not present in public one
- nipype>=0.12.0 is required now
- Multiple files produced by dcm2niix are first sorted to guarantee correct order e.g. of magnitude files in fieldmaps, which otherwise resulted in incorrect according to BIDS ordering of them
- Aggregated top level .json files now would contain only the fields with the same values from all scanned files. In prior versions, those files were not regenerated after an initial conversion
- Unicode handling in anonimization scripts
Bugfix release
- Video tutorial / updated slides
- Helper to set metadata restrictions correctly
- Usage is now shown when run without arguments
- New fields to Seqinfo
- series_uid
- Reproin heuristic support for xnat
- Dockerfile updated to use
dcm2niix v1.0.20180622
- Conversion table will be regenerated if heurisic has changed
- Do not touch existing BIDS files
- events.tsv
- task JSON
- Python 2.7.8 and older installation
- Support for updated packages
Datalad
0.10pydicom
1.0.2
- Later versions of
pydicom
are prioritized first - JSON pretty print should not remove spaces
- Phasediff fieldmaps behavior
- ensure phasediff exists
- support for single magnitude acquisitions
The first release after major refactoring:
- Refactored into a proper
heudiconv
Python moduleheuristics
is now aheudiconv.heuristics
submodule- you can specify shipped heuristics by name (e.g.
-f reproin
) without providing full path to their files - you need to use
--files
(not just positional argument(s)) if not using--dicom_dir_templates
or--subjects
to point to data files or directories with input DICOMs
Dockerfile
is generated by neurodocker- Logging verbosity reduced
- Increased leniency with missing DICOM fields
dbic_bids
heuristic renamed into reproin
- LICENSE with Apache 2.0 license for the project
- CHANGELOG.md
- Regression testing on real data (using datalad)
- A dedicated ReproIn project
with details about ReproIn setup/specification and operation using
reproin
heuristic shipped with heudiconv - utils/test-compare-two-versions.sh helper to compare conversions with two different versions of heudiconv
- Support for converters other than
dcm2niix
, which is now the default. Explicitly specify-c none
to only prepare conversion specification files without performing actual conversion
- Compatibility with Nipype 1.0, PyDicom 1.0, and upcoming DataLad 0.10
- Consistency with converted files permissions
- Ensured subject id for BIDS conversions will be BIDS compliant
- Re-add
seqinfo
fields as column names in generateddicominfo
- More robust sanity check of the regex reformatted .json file to avoid numeric precision issues
- Many other various issues
A usable release to support DBIC use-case
- more testing
- Dockerfile updates (added pigz, progressed forward dcm2niix)
- correct date/time in BIDS
_scans
files - sort entries in
_scans
by date and then filename
A somewhat working release on the way to support DBIC use-case
- more tests
- grouping of dicoms by series if provided
- many more features and fixes
An initial release on the way to support DBIC use-case
- basic Python project assets (
setup.py
, etc) - basic tests
- datalad support
- dbic_bids heuristic
--dbg
command line flag to enterpdb
environment upon failure
- Better Python3 support
- Better PEP8 compliance
Initial version