Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
201 commits
Select commit Hold shift + click to select a range
b68a844
RF(possibly BK): removing session embedding into seqinfo, preparing f…
yarikoptic Oct 9, 2016
da386da
ENH: verify that whatever is given from groupping into seqinfo comes …
yarikoptic Oct 9, 2016
d88d448
ENH: allow to group using StudyInstanceUID
yarikoptic Oct 9, 2016
6bef1ed
RF: make group_dicom_into_seqinfos return a dict
yarikoptic Oct 9, 2016
2727bae
RF: make group_dicom_into_seqinfos return a dict
yarikoptic Oct 9, 2016
1995cde
ENH+RF: first somewhat working dbic bids heuristic
yarikoptic Oct 9, 2016
4004b44
ENH: dbic-bids heuristics adjustment, dump into sourcedata mimicing h…
yarikoptic Oct 12, 2016
29ce45f
ENH: deal with multiple files generated for fieldmap by passing seqin…
yarikoptic Oct 13, 2016
e55166b
Somewhat working version laying files out for a sample study which in…
yarikoptic Oct 13, 2016
dba4e07
ENH: generate participant file etc
yarikoptic Oct 14, 2016
f886e92
ENH: let's try to use pytest
yarikoptic Oct 14, 2016
da8e8b5
ENH+BF: few basic tests and a little bugfix already ;-)
yarikoptic Oct 14, 2016
b16081e
TST+BF: testing initialization of datalad dataset there
yarikoptic Oct 14, 2016
6f17ecf
ENH: notes on annex/datalad, try to install datalad via pip on elderl…
yarikoptic Oct 14, 2016
77f607d
ENH: setup git user on travis so git does not complain
yarikoptic Oct 14, 2016
2f8ed08
RF: modality -> seqtype
yarikoptic Oct 14, 2016
0a45c0c
Fixups for datalad'ing the datasets, having no spurious _run, and nor…
yarikoptic Oct 14, 2016
9efd82e
ENH: reproducible dicoms (yet to test) by mocking out time.time and p…
yarikoptic Oct 19, 2016
3c45bbf
[DATALAD] new dataset
yarikoptic Oct 20, 2016
a2b03ce
BF: workaround for datalad issue with create/save dance + removing tr…
yarikoptic Oct 20, 2016
4d2c633
Adjusted description a bit (might still not correspond fully) and a v…
yarikoptic Oct 20, 2016
1d548ec
NF: added a single sample dicom file (fieldmap only phase from dartmo…
yarikoptic Oct 20, 2016
1f8d248
ENH+BF: make dicoms reproducible, simplify API etc
yarikoptic Oct 20, 2016
3412225
ENH(TST): very basic smoke tests for converall and dbic_bids heuristics
yarikoptic Oct 21, 2016
9684513
RF+BF+ENH (BIG:-/): --overwrite (to remove safety protection for over…
yarikoptic Oct 21, 2016
dc88b2c
RF: just removed if True block and dedented
yarikoptic Oct 21, 2016
b9f54b8
BF: now we do need all shebang to run tests (nipype, nibabel, dcmstac…
yarikoptic Oct 21, 2016
6719c97
dcmstack is not yet on pypi
yarikoptic Oct 22, 2016
bcb473b
BF: pip install nipype for testing
yarikoptic Oct 31, 2016
4ed95db
and configparser
yarikoptic Oct 31, 2016
223c3c8
added forgotten dcm2niix
yarikoptic Oct 31, 2016
a4c40ce
Sanitize labels, always have sid lowercase
mvdoc Nov 1, 2016
1393006
Merge pull request #3 from mvdoc/mvdoc-enh-dbic2
yarikoptic Nov 1, 2016
e99c97d
For now disable py3 testing
yarikoptic Nov 1, 2016
0aba701
Add some initial hacks for existing protocols
mvdoc Nov 2, 2016
45393d1
Namedtuples are immutable
mvdoc Nov 2, 2016
b4d77a6
Add forgotten key and rename better
mvdoc Nov 2, 2016
1da83fb
Do not change series_id otherwise heudiconv doesn't know what to do
mvdoc Nov 2, 2016
5b3ad98
Refactor fix_dbic_protocol, add tests
mvdoc Nov 2, 2016
b7864a9
Use md5 hash to store substitutions
mvdoc Nov 2, 2016
3bad1f0
Forgot to hash in infotodict
mvdoc Nov 2, 2016
eb6f0aa
Allow split of PI-student with dash as well
mvdoc Nov 2, 2016
1a5df62
BF: pattern comes first
mvdoc Nov 2, 2016
a41ca4c
Add fix for canceled runs
mvdoc Nov 3, 2016
44503a6
Add tests
mvdoc Nov 3, 2016
8079d74
Allow zero at the beginning or not
mvdoc Nov 3, 2016
2ac967a
BF: regex could match too many different runs
mvdoc Nov 3, 2016
f3dd773
Fix comment
mvdoc Nov 3, 2016
ff1d2e6
Add ad-hoc substitutions for old protocol names, discard files that d…
mvdoc Nov 3, 2016
912e036
NF: add filtering based on filename
mvdoc Nov 3, 2016
d7f96ed
Add filtering also under get_study_sessions
mvdoc Nov 3, 2016
56530b5
Modify replacement
mvdoc Nov 3, 2016
a2fe685
Do not complain if magnitude is not present for one of the first studies
mvdoc Nov 3, 2016
0314c57
Rename test directory because it should start with a number
mvdoc Nov 3, 2016
8cc9814
Fix directory for test
mvdoc Nov 3, 2016
994610f
Fix on phasediff for one of the first studies
mvdoc Nov 3, 2016
913a55c
Fix on phasediff for one of the first studies
mvdoc Nov 3, 2016
e3d973e
Fix logic for phasediff in some study: always increase runnr
mvdoc Nov 3, 2016
3e94ff5
One line less
mvdoc Nov 3, 2016
660f286
Use os.path.split to split fn
mvdoc Nov 4, 2016
cd16ede
Maybe this time I got the logic right for phasediff
mvdoc Nov 4, 2016
1a8c1e7
Some minor fixups
mvdoc Nov 4, 2016
a511081
Add some more cancel runs
mvdoc Nov 4, 2016
8b79eba
Add filtering of dicom for one particular studyinstanceid
mvdoc Nov 4, 2016
40347c6
Add more ad hoc fixes for known protocols
mvdoc Nov 4, 2016
9c321d8
Fix accession number in filter_files
mvdoc Nov 4, 2016
cd99ede
Really fix that
mvdoc Nov 4, 2016
53c2fec
Another fix for logic of phasediff
mvdoc Nov 5, 2016
1272721
Add one more StudyInstanceUID to skip
mvdoc Nov 5, 2016
a994d7f
Add seqtype_label for dwi sequences as well
mvdoc Nov 6, 2016
2466cef
Filter out files for one study that had no study description
mvdoc Nov 6, 2016
766d5fe
Avoid increasing run number if sequence is derived
mvdoc Nov 6, 2016
f4e8e85
Skip derived sequences completely
mvdoc Nov 6, 2016
f9d376b
Be more verbose about skipping derived
mvdoc Nov 6, 2016
591f901
BF, XXX: add ad-hoc fix in heudiconv for one study that had two Study…
mvdoc Nov 6, 2016
4677849
Rename one more sequence
mvdoc Nov 6, 2016
2f5d328
Avoid fixing up in heudiconv.py, we'll do it manually later
mvdoc Nov 7, 2016
48fa3fc
ENH/BF: allow for accessions starting with phantom-, sanitize subject…
yarikoptic Nov 8, 2016
6498946
ENH: remove _ and - during sanitization, do that to angio suffixes
yarikoptic Nov 8, 2016
52cfa74
Impose session naming for one protocol
mvdoc Nov 13, 2016
85b4705
Be verbose
mvdoc Nov 13, 2016
be95291
Fix hash
mvdoc Nov 13, 2016
3558645
dbic_bids: if the same template has multiple entries -- canceled runs
yarikoptic Nov 22, 2016
4fe14fb
RF: lower some log messages to DEBUG level (yet to figure out nipype)…
yarikoptic Nov 23, 2016
37045b4
another accession # to ignore (that was Matteo's change ;) )
yarikoptic Nov 29, 2016
05359d2
RF+ENH: instead of dropping duplicate sequences, keep them with __dup…
yarikoptic Nov 29, 2016
aa67c29
ENH+BF: unlink files before overriding, use __dup- prefix for the suffix
yarikoptic Nov 29, 2016
af20de7
BF: one little heuristic to generally fix anat_T1w -> anat-T1w
yarikoptic Jan 10, 2017
0ed5a71
ENH: some canceled runs for ontrack study + minor re-formatting
yarikoptic Jan 10, 2017
823661f
BF(TST): we are sanitizing values, so - gets removed as well atm
yarikoptic Jan 10, 2017
320df07
RF: make marked canceled runs handling independent of "fixes"
yarikoptic Jan 10, 2017
c354bdb
initial version of the singularity env definition file
yarikoptic Jan 31, 2017
48be771
tune up singularity def to have /afs /inbox mount points and to not w…
yarikoptic Feb 7, 2017
ff33235
this is aint a dataset
yarikoptic Feb 7, 2017
a47fb0a
ENH+RF: post-treat info file to remove abundant info, make json dump…
yarikoptic Feb 8, 2017
1b8e71b
ENH: could work just with --command option for quick application (+en…
yarikoptic Feb 8, 2017
8e82315
BF: explicitly repr study_session_info for exception msg
yarikoptic Feb 8, 2017
2841762
Merge remote-tracking branch 'smaug-mvdoc/mvdoc-fixup-protocols' into…
yarikoptic Feb 8, 2017
4e8a265
ENH: load heuristic only if not processing custom command
yarikoptic Feb 8, 2017
c420d21
permissive permissions on created /afs and /inbox (is my umask hautin…
yarikoptic Feb 10, 2017
982470c
skeleton record for future task file creation
yarikoptic Feb 13, 2017
b4592ee
respect session from cmdline if was provided and none was specified i…
yarikoptic Feb 13, 2017
28e4d9d
ls command to list information about what studies are available under…
yarikoptic Feb 15, 2017
978b2cc
minor: comment on a problem
yarikoptic Feb 16, 2017
0809c8b
ask for some DICOM fields allowing them not to be specified, allow st…
mvdoc Feb 17, 2017
f86568a
(re)Populate task and events files
yarikoptic Feb 17, 2017
7496c93
Merge remote-tracking branch 'smaug-mvdoc/mvdoc-fixup-protocols' into…
yarikoptic Feb 17, 2017
d4b4b19
ENH: just to avoid all the possible whining from TempDir ;-)
yarikoptic Feb 17, 2017
5f8fe45
skip one run in A000297 (was canceled), include study hash in ls output
yarikoptic Feb 21, 2017
a5dcfca
allow for empty age (N/A), skip studies with unknown locator, skip ru…
mvdoc Feb 21, 2017
c4607c1
Merge remote-tracking branch 'smaug-mvdoc/mvdoc-fixup-protocols' into…
yarikoptic Feb 21, 2017
b26cdfe
singularity def - deploy bids-validator etc
yarikoptic Feb 27, 2017
7354832
Merge remote-tracking branch 'smaug/mvdoc-fixup-protocols' into mvdoc…
yarikoptic Feb 27, 2017
b122901
Convert tabs to spaces
mvdoc Mar 2, 2017
173d4ca
Allow to group according to accession number instead studyuid
mvdoc Mar 2, 2017
369c943
Give more debug information
mvdoc Mar 2, 2017
c14ca8c
Get only unique session markers if we have common ones
mvdoc Mar 2, 2017
7c97196
Add option for grouping by studyUID or accession_number
mvdoc Mar 2, 2017
fb9c62e
BF+ENH: some tabs, do .format on target protocol_name,description, re…
yarikoptic Mar 2, 2017
6e65e3f
Merge remote-tracking branch 'gh-dartmouth-pbs/enh/groupbyaccession' …
yarikoptic Mar 3, 2017
d566746
ENH: rename hardi_64 in all studies
Mar 3, 2017
3663cee
ENH: dbic bids validator config to skip .heudiconv and .datalad labs
Mar 3, 2017
1927f56
BF: avoid growing number of annex thining + chmod file before writing
Mar 3, 2017
e10babf
Merge remote-tracking branch 'bids-rolando/enh/groupbyaccession' into…
yarikoptic Mar 3, 2017
6d588e5
Merge pull request #8 from mvdoc/mvdoc-fixup-protocols
yarikoptic Mar 3, 2017
a2ad180
ENH: "lower" effective nipype logging to WARN in our INFO level, use …
yarikoptic Mar 3, 2017
3feb6d4
Check that seqtype_label exists, ignore some files for validator
Mar 4, 2017
5f5b400
Start adding small monitoring script
mvdoc Mar 4, 2017
9ec5dd6
Add argument parser
mvdoc Mar 4, 2017
74dc957
Add database logging
mvdoc Mar 4, 2017
42f7ff1
Add initial test
mvdoc Mar 4, 2017
6fe0e27
Add more tests
mvdoc Mar 5, 2017
5052c08
Rename test
mvdoc Mar 5, 2017
45c87a7
Heudiconv outputs info on what subject is being processed, gets captu…
mvdoc Mar 5, 2017
f16e165
Add accession number to database
mvdoc Mar 5, 2017
071d863
Add logdir option
mvdoc Mar 5, 2017
e18fefd
Rename monitor file, make logdir
mvdoc Mar 5, 2017
cd658fc
Make heudiconv_monitor executable
mvdoc Mar 5, 2017
410103b
Automatically configure logging
mvdoc Mar 5, 2017
71102e7
Use json instead of eval
mvdoc Mar 5, 2017
195e993
ls instead of echoing to debug
mvdoc Mar 5, 2017
6864fde
Merge pull request #19 from mvdoc/enh/monitor
mvdoc Mar 5, 2017
0849ca3
Merge origin
Mar 5, 2017
d5f54a3
add dcmtk for dcmdump
yarikoptic Mar 7, 2017
c3d27a3
BF+TST: in case of a provided template, do not output groupped dicti…
yarikoptic Mar 9, 2017
75b0768
Merge remote-tracking branch 'origin/enh-dbic2' into enh-dbic2
Mar 9, 2017
79f1a0d
BF: added "read bit" to make chmodded files readable
Mar 28, 2017
df60713
fixups for one of the studies
Apr 3, 2017
f910e4a
ENH: few more skipped runs for a study and run0 -> run-0 for another
Apr 4, 2017
87354ee
ENH: support _ses-{date}
yarikoptic Apr 4, 2017
366556a
ENH: decide on having motion correction done also using ImageType and…
yarikoptic Apr 4, 2017
2d68d1c
BF+ENH: fix seqinfo entries twice -- once first when figuring out ses…
yarikoptic Apr 6, 2017
f0c43e5
RF/BF: to use datalad >= 0.5.1 where we need to add stuff explicitly
yarikoptic Apr 6, 2017
9b8600d
ENH: simplify a bit adding files
yarikoptic Apr 6, 2017
69caae3
BF: few more ignores and renames
Apr 24, 2017
993cd43
ENH/BF(?): provide outdir into get_study_sessions
Apr 24, 2017
e5b3a70
BF: do not 'fix' anat-scout sequence for qa so we retain the date ses…
yarikoptic Apr 24, 2017
f30dae9
Do not regenerate dataset_description.json
Apr 24, 2017
f64dd8f
RF: centralized access to study_description so we could patch easily …
Apr 28, 2017
edf305f
ENH: primarily notes planning
yarikoptic May 5, 2017
65ff1b2
more ignores for our heuristic validator
May 13, 2017
f4f0d27
adjusted validator config to ignore .datalad/.gitattributes file
May 17, 2017
1ea21de
one more note
yarikoptic May 17, 2017
a616ab4
fix: resolved conflicts; slurm support removed for now
satra May 27, 2017
dad3ebf
fix: change from series_number to series_id
satra May 27, 2017
e4b1eb8
fix: change template to use {subject} format
satra May 27, 2017
c8b6c65
ref: update Dockerfile
satra May 27, 2017
d663c98
ENH: do not crash if no magnitude file was generated so we cannot ext…
May 31, 2017
783ecb0
Merge remote-tracking branch 'gh-satra/yarik/pr' into enh-dbic2
May 31, 2017
dd7751c
Merge pull request #26 from satra/yarik/pr
yarikoptic May 31, 2017
0f6fccc
Merge remote-tracking branch 'bids-rolando/enh-dbic2' into enh-dbic2
yarikoptic May 31, 2017
f55553d
TST: enable travis Python 3 tests
matthew-brett May 31, 2017
52a83ee
BF: fix Python 3 errors causing test failures
matthew-brett Jun 6, 2017
85215c9
MAINT: tell git to ignore some common cruft
matthew-brett Jun 6, 2017
2cb6a89
MAINT: move dcmstack source into requirements.txt
matthew-brett Jun 6, 2017
7801ded
MAINT: rdflib is requirement of nipype
matthew-brett Jun 6, 2017
e96bfc1
Merge pull request #27 from matthew-brett/fix-travis-testing
yarikoptic Jun 6, 2017
c6b3997
Merge branch 'enh-dbic2' into enh-privat
yarikoptic Jun 22, 2017
6348fc1
BF: add missing import re in embedder
mvdoc Jun 24, 2017
25e77d5
Add more requirements
mvdoc Jun 24, 2017
84c273c
BF: do not test with bids flag if using convertall
mvdoc Jun 24, 2017
16000e8
NF: save scan_keys tsv file
mvdoc Jun 24, 2017
ec813e9
Simplify parsing of date
mvdoc Jun 24, 2017
c604256
Name variables that make sense
mvdoc Jun 24, 2017
a3beffc
Add randomly generated column to avoid figuring out date from hash
mvdoc Jun 24, 2017
12c00aa
Extract function to get row info and add test
mvdoc Jun 24, 2017
4024047
Remove forgotten pdb
mvdoc Jun 24, 2017
d7b8df4
Fix dbic_bids.py compatibility with python 3.x
mvdoc Jun 24, 2017
f48fc9b
Update dcmstack source to fix missing importsys
mvdoc Jun 24, 2017
079e63d
Clean up requirements and setup.py
mvdoc Jun 24, 2017
463d902
Reload scans keys if existing, start adding tests
mvdoc Jun 24, 2017
382a815
ENH: add metadata for sensitive materials
yarikoptic Jun 24, 2017
802eb58
Merge remote-tracking branch 'gh-mvdoc/enh-anonym' into enh-privat
yarikoptic Jun 24, 2017
652d53c
BF: forgotten nipype
mvdoc Jun 24, 2017
97fbd33
Add test for add_rows_to_scans_keys_file
mvdoc Jun 25, 2017
a169e0b
ENH: add .gitattributes only if was missing
yarikoptic Jul 10, 2017
25729f4
ENH: addressing Matthew's comments -- should be no functional changes
yarikoptic Jul 10, 2017
0393eb4
Merge remote-tracking branch 'origin/master' into enh-dbic2
yarikoptic Jul 10, 2017
4cdb33d
BF: we need nipype for core and pytest not nose for testing
yarikoptic Jul 10, 2017
b55b892
BF: fixup for recent RF fl -> files which collided with use of files …
yarikoptic Jul 10, 2017
7b6f732
Merge remote-tracking branch 'gh-mvdoc/enh-anonym' into enh-dbic2
yarikoptic Jul 10, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[run]
include = tests/*
bin/*
setup.py
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
*.pyc
.cache/
.coverage
*.egg-info/
24 changes: 16 additions & 8 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
language: python
python:
- 2.7
- 3.3
- 3.4
- 3.5
- 3.6

cache:
- apt
Expand All @@ -17,17 +17,25 @@ env:

before_install:
# The ultimate one-liner setup for NeuroDebian repository
# which might be needed later for tools
#- bash <(wget -q -O- http://neuro.debian.net/_files/neurodebian-travis.sh)
#- travis_retry sudo apt-get update -qq
# for now even remove requirements.txt since dependencies aren't avail
- echo '' > requirements.txt
- bash <(wget -q -O- http://neuro.debian.net/_files/neurodebian-travis.sh)
- travis_retry sudo apt-get update -qq
- travis_retry sudo apt-get install git-annex-standalone dcm2niix
# Install in our own virtualenv
- python -m pip install --upgrade pip
- pip install --upgrade virtualenv
- virtualenv --python=python venv
- source venv/bin/activate
- python --version # just to check
- pip install -r dev-requirements.txt
- pip install codecov
- pip install datalad
- pip install codecov pytest

install:
- git config --global user.email "[email protected]"
- git config --global user.name "Travis Almighty"

script:
- nosetests -s -v --with-doctest --doctest-tests --with-cov --cover-package . --logging-level=INFO tests
- coverage run `which py.test` -s -v tests heuristics

after_success:
- codecov
31 changes: 26 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,31 @@ FROM continuumio/miniconda

MAINTAINER <[email protected]>

RUN apt-get update && apt-get upgrade -y && apt-get install -y g++ && apt-get clean -y && apt-get autoclean -y && apt-get autoremove -y
RUN cd /tmp && git clone https://github.com/neurolabusc/dcm2niix.git && cd dcm2niix/console/ && git checkout 60bab318ee738b644ebb1396bbb8cbe1b006218f && g++ -O3 -I. main_console.cpp nii_dicom.cpp jpg_0XC3.cpp ujpeg.cpp nifti1_io_core.cpp nii_ortho.cpp nii_dicom_batch.cpp nii_foreign.cpp -o dcm2niix -DmyDisableOpenJPEG -DmyDisableJasper && cp dcm2niix /usr/local/bin/
RUN conda install -y -c conda-forge nipype && pip install https://github.com/moloney/dcmstack/archive/c12d27d2c802d75a33ad70110124500a83e851ee.zip && pip install https://github.com/nipy/nipype/archive/dd1ed4f0d5735c69c1743f29875acf09d23a62e0.zip
RUN curl -O https://raw.githubusercontent.com/nipy/heudiconv/master/bin/heudiconv && chmod +x heudiconv && cp heudiconv /usr/local/bin/
RUN curl -O https://raw.githubusercontent.com/nipy/heudiconv/master/heuristics/convertall.py && chmod +x convertall.py
RUN apt-get update && apt-get upgrade -y && \
apt-get install -y g++ pkg-config make && \
apt-get clean -y && apt-get autoclean -y && apt-get autoremove -y
RUN (wget -O- http://neuro.debian.net/lists/jessie.us-nh.full | tee /etc/apt/sources.list.d/neurodebian.sources.list) && \
apt-key adv --recv-keys --keyserver hkp://pool.sks-keyservers.net:80 0xA5D32F012649A5A9 && \
apt-get update -qq && apt-get install -y git-annex-standalone && \
apt-get clean -y && apt-get autoclean -y && apt-get autoremove -y
RUN conda install -y -c conda-forge nipype && \
conda install cmake && \
pip install https://github.com/moloney/dcmstack/archive/c12d27d2c802d75a33ad70110124500a83e851ee.zip && \
pip install datalad && \
conda clean -tipsy && rm -rf ~/.pip/
RUN cd /tmp && git clone https://github.com/neurolabusc/dcm2niix.git && \
cd dcm2niix && \
git checkout 60bab318ee738b644ebb1396bbb8cbe1b006218f && \
mkdir build && cd build && cmake -DBATCH_VERSION=ON .. && \
make && make install && \
cd / && rm -rf /tmp/dcm2niix

COPY bin/heudiconv /usr/local/bin/heudiconv
RUN chmod +x /usr/local/bin/heudiconv
RUN mkdir /heuristics
COPY heuristics/convertall.py /heuristics
RUN chmod +x /heuristics/convertall.py
RUN git config --global user.email "[email protected]" && \
git config --global user.name "Docker Almighty"

ENTRYPOINT ["/usr/local/bin/heudiconv"]
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ function `infotodict`, which takes a single argument `seqinfo`.

* total_files_till_now
* example_dcm_file
* series_number
* series_id
* dcm_dir_name
* unspecified2
* unspecified3
Expand Down
Loading