Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/djarecka/fmriprep-fake


https://github.com/djarecka/fmriprep-fake

Last synced: 27 days ago
JSON representation

Awesome Lists containing this project

README

        

# fmriprep-fake

This repository is used to build a BIDS App called `fmriprep-fake`. This BIDS App can generate derivatives that mimic the derivatives from fMRIPrep.

The built Docker image can be found on Docker Hub: [djarecka/fmriprep_fake](https://hub.docker.com/r/djarecka/fmriprep_fake). Some versions can be found in another Docker Hub repository: [`chenyingzhao/fmriprep_fake`](https://hub.docker.com/r/chenyingzhao/fmriprep_fake).

This BIDS App takes three positional arguments: `bids_dir`, `output_dir` and `analysis_level` (that has to be 'participant').

It also takes several optional named arguments:
* `--participant-label`: e.g. 'sub-111'
* `--bids-filter-file`:
* This is used to extract sessions if available under "bold" item;
* e.g., `{"bold": {"datatype": "func", "suffix": "bold", "session": "baseline"}}`
* `--output-layout`: choices are:
* `bids` (default): latest fMRIPrep output layout, for fMRIPrep `21.0+`
* `legacy`: previous fMRIPrep output layout, for fMRIPrep `< 21.0`

More arguments can be added too, however, currently `fmriprep-fake` does not consider them and won't change output files based on them.

## Example of usage and output

### when run without sessions (without `--bids-filter-file`)
`docker run --rm -v :/out_tmp
djarecka/fmriprep_fake:0.1.0 inp /out_tmp participant --participant-label=sub-1`

Output layout:

```bash
out_tmp/
├── dataset_description.json
├── desc-aparcaseg_dseg.tsv
├── desc-aseg_dseg.tsv
├── logs
│   ├── CITATION.bib
│   ├── CITATION.html
│   ├── CITATION.md
│   └── CITATION.tex
├── sourcedata
│   └── freesurfer
│   ├── fsaverage
│   │   └── mri
│   │   └── brain.mgz
│   └── sub-1
│   └── mri
│   └── orig.mgz
├── sub-1
│   ├── anat
│   │   └── sub-1_desc-brain_mask.nii.gz
│   ├── figures
│   │   └── sub-1_desc-sdc_bold.svg
│   ├── fmap
│   │   └── sub-1_acq-task_run-1_fmapid-auto00000_desc-coeff_fieldmap.nii.gz
│   └── func
│   └── sub-1_task-nback_space-T1w_desc-brain_mask.nii.gz
└── sub-1.html
```

### when run with sessions (with `--bids-filter-file`)
`docker run --rm -v :/out_tmp -v :/code
djarecka/fmriprep_fake:0.1.0 inp /out_tmp participant --participant-label=sub-1
--bids-filter-file=/code/`

Output layout:

```bash
out_tmp/
├── dataset_description.json
├── desc-aparcaseg_dseg.tsv
├── desc-aseg_dseg.tsv
├── logs
│   ├── CITATION.bib
│   ├── CITATION.html
│   ├── CITATION.md
│   └── CITATION.tex
├── sourcedata
│   └── freesurfer
│   ├── fsaverage
│   │   └── mri
│   │   └── brain.mgz
│   └── sub-1
│   └── mri
│   └── orig.mgz
├── sub-1
│   ├── figures
│   │   └── sub-1_ses-baseline_desc-sdc_bold.svg
│   └── ses-baseline
│   ├── anat
│   │   └── sub-1_ses-baseline_desc-brain_mask.nii.gz
│   ├── fmap
│   │   └── sub-1_ses-baseline_acq-task_run-1_fmapid-auto00000_desc-coeff_fieldmap.nii.gz
│   └── func
│   └── sub-1_ses-baseline_task-nback_space-T1w_desc-brain_mask.nii.gz
└── sub-1.html
```

### when generating legacy output layout (using `--output-layout legacy`)
With legacy output layout, we expect two folders will be generated: `fmriprep` and `freesurfer`.

Here, we use updated version `0.1.2`:

`docker run --rm -v :/out_tmp -v :/code
chenyingzhao/fmriprep_fake:0.1.2 inp /out_tmp participant --participant-label=sub-01 --output-layout legacy`

Output layout:

```
out_tmp/
├── fmriprep
│ ├── dataset_description.json
│ ├── desc-aparcaseg_dseg.tsv
│ ├── desc-aseg_dseg.tsv
│ ├── logs
│ │ ├── CITATION.bib
│ │ ├── CITATION.html
│ │ ├── CITATION.md
│ │ └── CITATION.tex
│ ├── sub-01
│ │ ├── anat
│ │ │ └── sub-01_desc-brain_mask.nii.gz
│ │ ├── figures
│ │ │ └── sub-01_desc-sdc_bold.svg
│ │ ├── fmap
│ │ │ └── sub-01_acq-task_run-1_fmapid-auto00000_desc-coeff_fieldmap.nii.gz
│ │ ├── func
│ │ │ └── sub-01_task-nback_space-T1w_desc-brain_mask.nii.gz
│ │ └── log
│ │ └── 20230713_154731
│ │ └── fmriprep.toml
│ └── sub-01.html
└── freesurfer
├── fsaverage
│ └── mri
│ └── brain.mgz
└── sub-01
└── mri
└── orig.mgz
```

## For developers
* [prep_docker.sh](prep_docker.sh): Build the Docker image
* Please increment `version_tag` number;
* Please change `dockerhub_username` to the appropriate user account.
* Note that currently we use multi-architecture build, so that the built Docker image can be run on both Mac M1 system and Linux system. For more details, please see comments in this file.
* [Dockerfile](Dockerfile)
* The Dockerfile used for building the Docker image.
* [test.sh](test.sh): Used for testing out the key python script of this BIDS App, [fake_script.py](fake_script.py)
* Please change the variables under `[FIX ME]`.
* Example usage can be found in the beginning of this file.

## Docker image version history
* 0.1.2 (available at [`chenyingzhao/fmriprep_fake`](https://hub.docker.com/r/chenyingzhao/fmriprep_fake)):
* added `--output-layout` argument, which accepts `bids` and `legacy` output layouts.
* see [PR #3](https://github.com/djarecka/fmriprep-fake/pull/3) for more.
* 0.1.1 (⚠️ DEPRECATED; available at [`chenyingzhao/fmriprep_fake`](https://hub.docker.com/r/chenyingzhao/fmriprep_fake)):
* added another folder layer in output directory: `fmriprepfake`
* changed Dockerfile base image from `python:3.8` to `python:3.8.16-bullseye`
as seems the former one is not directly available anymore/currently shares tag with the latter one.
* Above version is DEPRECATED as it does not follow any fMRIPrep's output layout.