diff --git a/.github/workflows/bump_version.yml b/.github/workflows/bump_version.yml
index 0ab3e332..74f6cfaf 100644
--- a/.github/workflows/bump_version.yml
+++ b/.github/workflows/bump_version.yml
@@ -1,13 +1,16 @@
+---
name: Bump version
on:
push:
branches:
- master
+
jobs:
build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@master
+ - name: Checkout main branch
+ uses: actions/checkout@v4
- name: Update changelog
uses: release-drafter/release-drafter@v5
@@ -15,6 +18,9 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ # Can replace the below with (until pipeline description) with
+ # khanlab/actions/.github/workflows/workflow-version_task-semverGithub.yml
+ # after adding PAT token
- name: Get previous release version
run: |
echo "PREV_VER=$(cat pyproject.toml | grep -o -E '(version\s=\s)([[:punct:]])([0-9]+\.[0-9]+\.[0-9]+.+)([[:punct:]])' | cut -d ' ' -f 3 | tr -d '"')" >> $GITHUB_ENV
@@ -35,28 +41,27 @@ jobs:
run: |
echo "NEW_BUMP=$(($BUMP_VER + 1))" >> $GITHUB_ENV
- - name: Update version in pyproject
- uses: jacobtomlinson/gha-find-replace@master
+ - name: Update version in pyproject.toml
+ uses: jacobtomlinson/gha-find-replace@v3
with:
- include: 'pyproject.toml'
+ include: "pyproject.toml"
find: 'version = "(?:([0-9]+\.[0-9]+\.[0-9]+.+)|([0-9]+\.[0-9]+\.[0-9]+))"'
replace: 'version = "${{ steps.release-drafter.outputs.name }}-pre.${{ env.NEW_BUMP }}"'
- name: Update version in pipeline_description (not actually used)
- uses: jacobtomlinson/gha-find-replace@master
+ uses: jacobtomlinson/gha-find-replace@v3
with:
- include: 'hippunfold/pipeline_description.json'
+ include: "hippunfold/pipeline_description.json"
find: '"Version": "(?:([0-9]+\.[0-9]+\.[0-9]+.+)|([0-9]+\.[0-9]+\.[0-9]+))"'
replace: '"Version": "${{ steps.release-drafter.outputs.name }}-pre.${{ env.NEW_BUMP }}"'
- name: Update version in config/snakebids.yml
- uses: jacobtomlinson/gha-find-replace@master
+ uses: jacobtomlinson/gha-find-replace@v3
with:
- include: 'hippunfold/config/snakebids.yml'
+ include: "hippunfold/config/snakebids.yml"
find: 'version: "(?:([0-9]+\.[0-9]+\.[0-9]+.+)|([0-9]+\.[0-9]+\.[0-9]+))"'
replace: 'version: "${{ steps.release-drafter.outputs.name }}-pre.${{ env.NEW_BUMP }}"'
-
- name: Commit updates
env:
SNAKEBIDS_VERSION: ${{ steps.release-drafter.outputs.name }}-pre.${{ env.NEW_BUMP }}
@@ -66,10 +71,7 @@ jobs:
git diff-index --quiet HEAD || git commit -m "Bump version to $SNAKEBIDS_VERSION" -a
- name: Push changes
- uses: ad-m/github-push-action@master
+ uses: ad-m/github-push-action@v0.8.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
tags: false
-
-
-
diff --git a/.github/workflows/dags.yml b/.github/workflows/dags.yml
index e3f27d3d..4be2bc88 100644
--- a/.github/workflows/dags.yml
+++ b/.github/workflows/dags.yml
@@ -1,31 +1,26 @@
+---
name: Generate DAG visualizations
-
on:
workflow_dispatch:
inputs:
- author:
- description: "Author"
- required: true
- default: "github-actions[bot] (user publishing release)"
- date:
- description: "Date"
- required: true
- default: "YYYY-MM-DD"
comments:
description: "Comments"
jobs:
generate_dag:
runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python-version: ["3.9"]
steps:
- name: Print author
run: |
- echo "Author: ${{ github.event.inputs.author }}"
- echo "Date: ${{ github.event.inputs.date }}"
+ echo "Author: ${{ github.triggering_actor }}"
echo "Comments: ${{ github.event.inputs.comments }}"
- - uses: actions/checkout@master
+ - name: Checkout main branch
+ uses: actions/checkout@v3
with:
ref: refs/heads/master
@@ -33,34 +28,32 @@ jobs:
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
+
- name: Install non-python dependencies
run: |
sudo apt-get install -y graphviz-dev graphviz
+
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install snakebids
- - name: Set-up env for hippunfold
+ - name: Set-up env for hippunfold
run: |
echo "HIPPUNFOLD_CACHE_DIR=`pwd`/test_data/fake_models" >> $GITHUB_ENV
echo "HIPPUNFOLD=./hippunfold/run.py" >> $GITHUB_ENV
+
- name: Generate rulegraph single T2w bids
run: |
$HIPPUNFOLD test_data/bids_singleT2w test_out participant -np --modality T2w --rulegraph | dot -Tsvg > docs/images/rulegraph_T2w.svg
- name: Commit updates
- env:
- LATEST_VERSION: ${{ steps.release-drafter.outputs.name }}
run: |
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
- git diff-index --quiet HEAD || git add docs/images || commit -m "Add updated dags [skip ci]"
+ git diff-index --quiet HEAD || git add docs/images || commit -m "Add updated dags [skip ci]"
- name: Push changes
- uses: ad-m/github-push-action@master
+ uses: ad-m/github-push-action@v0.8.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
-
-
-
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index fb1fcfe9..f832ef4a 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -1,16 +1,8 @@
+---
name: Deploy workflow
-
on:
workflow_dispatch:
inputs:
- author:
- description: "Author"
- required: true
- default: "github-actions[bot] (user publishing release)"
- date:
- description: "Date"
- required: true
- default: "YYYY-MM-DD"
comments:
description: "Comments"
branch:
@@ -25,11 +17,10 @@ jobs:
steps:
- name: Print author
run: |
- echo "Author: ${{ github.event.inputs.author }}"
- echo "Date: ${{ github.event.inputs.date }}"
+ echo "Author: ${{ github.triggering_actor }}"
echo "Comments: ${{ github.event.inputs.comments }}"
- - uses: actions/checkout@master
+ - uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.branch }}
@@ -37,10 +28,13 @@ jobs:
uses: release-drafter/release-drafter@v5
id: release-drafter
with:
- commitish: ${{ github.event.inputs.branch }}
+ commitish: ${{ github.event.inputs.branch }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ # Can replace the below with (until pipeline description) with
+ # khanlab/actions/.github/workflows/workflow-version_task-publishGithub.yml
+ # after adding PAT token
- name: Set new release version
env:
RD_RELEASE: ${{ steps.release-drafter.outputs.name }}
@@ -52,27 +46,26 @@ jobs:
fi
- name: Update version in pyproject.toml
- uses: jacobtomlinson/gha-find-replace@master
+ uses: jacobtomlinson/gha-find-replace@v3
with:
- include: 'pyproject.toml'
+ include: "pyproject.toml"
find: 'version = "(?:([0-9]+\.[0-9]+\.[0-9]+.+)|([0-9]+\.[0-9]+\.[0-9]+))"'
replace: 'version = "${{ env.NEW_RELEASE }}"'
- name: Update version in pipeline_description (not actually used)
- uses: jacobtomlinson/gha-find-replace@master
+ uses: jacobtomlinson/gha-find-replace@v3
with:
- include: 'hippunfold/pipeline_description.json'
+ include: "hippunfold/pipeline_description.json"
find: '"Version": "(?:([0-9]+\.[0-9]+\.[0-9]+.+)|([0-9]+\.[0-9]+\.[0-9]+))"'
replace: '"Version": "${{ env.NEW_RELEASE }}"'
- name: Update version in config/snakebids.yml
- uses: jacobtomlinson/gha-find-replace@master
+ uses: jacobtomlinson/gha-find-replace@v3
with:
- include: 'hippunfold/config/snakebids.yml'
+ include: "hippunfold/config/snakebids.yml"
find: 'version: "(?:([0-9]+\.[0-9]+\.[0-9]+.+)|([0-9]+\.[0-9]+\.[0-9]+))"'
replace: 'version: "${{ env.NEW_RELEASE }}"'
-
- name: Commit updates
env:
LATEST_VERSION: ${{ env.NEW_RELEASE }}
@@ -82,7 +75,7 @@ jobs:
git diff-index --quiet HEAD || git commit -m "Bump version to $LATEST_VERSION" -a
- name: Push changes
- uses: ad-m/github-push-action@master
+ uses: ad-m/github-push-action@v0.8.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
@@ -92,5 +85,3 @@ jobs:
publish: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
-
diff --git a/.github/workflows/manual_release_drafter.yml b/.github/workflows/manual_release_drafter.yml
index 1d7294f4..2a8a214c 100644
--- a/.github/workflows/manual_release_drafter.yml
+++ b/.github/workflows/manual_release_drafter.yml
@@ -1,12 +1,8 @@
+---
name: Manual release-drafter update
-
on:
workflow_dispatch:
inputs:
- author:
- description: "Author"
- required: true
- default: "github-actions[bot] (user publishing release)"
comments:
description: "Update release drafter notes"
@@ -16,11 +12,11 @@ jobs:
steps:
- name: Print workflow information
run: |
- echo "Author: ${{ github.event.inputs.author }}"
- echo "Date: ${{ github.event.inputs.date }}"
+ echo "Author: ${{ github.triggering_actor }}"
echo "Comments: ${{ github.event.inputs.comments }}"
- - uses: actions/checkout@master
+ - name: Checkout main branch
+ uses: actions/checkout@v4
- name: Update changelog
uses: release-drafter/release-drafter@v5
diff --git a/.github/workflows/push_container.yml b/.github/workflows/push_container.yml
index f0acba28..3b2c3388 100644
--- a/.github/workflows/push_container.yml
+++ b/.github/workflows/push_container.yml
@@ -1,53 +1,18 @@
+---
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: Publish Docker image
-
-on:
+on:
workflow_dispatch:
release:
types: [published]
jobs:
push_to_registries:
- name: Push Docker image to multiple registries
- runs-on: ubuntu-latest
- permissions:
- packages: write
- contents: read
- steps:
- - name: Check out the repo
- uses: actions/checkout@master
-
- - name: Log in to Docker Hub
- uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
- with:
- username: ${{ secrets.DOCKER_USERNAME }}
- password: ${{ secrets.DOCKER_PASSWORD }}
-
- - name: Log in to the Container registry
- uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
- with:
- registry: ghcr.io
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Extract metadata (tags, labels) for Docker
- id: meta
- uses: docker/metadata-action@v4
- with:
- images: |
- ${{ github.repository }}
- ghcr.io/${{ github.repository }}
- flavor: |
- latest=auto
-
- - name: Build and push Docker images
- uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
- with:
- context: .
- push: true
- tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
+ uses: khanlab/actions/.github/workflows/workflow-release_task-deployDocker.yml@v0.3.2
+ secrets:
+ DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
+ DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
diff --git a/.github/workflows/python-testing.yml b/.github/workflows/python-testing.yml
index af0efacb..88734d54 100644
--- a/.github/workflows/python-testing.yml
+++ b/.github/workflows/python-testing.yml
@@ -1,189 +1,136 @@
+---
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
-name: Python package
-
+name: Lint and test workflow
on:
push:
workflow_dispatch:
-# branches: [ main ]
-# pull_request:
-# branches: [ main ]
jobs:
-
quality:
runs-on: ubuntu-latest
+
steps:
- - name: Clone repo
- uses: actions/checkout@master
- - name: Setup Python
- uses: actions/setup-python@v4
- with:
- python-version: '3.8'
- - uses: actions/cache@v3
- with:
- path: ~/.cache/pip
- key: ${{ runner.os }}-pip-3.8
- restore-keys: ${{ runner.os }}-pip-3.8
- name: Install non-python dependencies
run: |
sudo apt-get install -y graphviz-dev
- #----------------------------------------------
- # ----- install & configure poetry -----
- #----------------------------------------------
- - name: Install Poetry
- uses: snok/install-poetry@v1
- with:
- virtualenvs-create: true
- virtualenvs-in-project: true
- - name: Disable Poetry modern installation
- run: |
- poetry config installer.modern-installation false
- #----------------------------------------------
- #----------------------------------------------
- # load cached venv if cache exists
- #----------------------------------------------
- - name: Load cached venv
- id: cached-poetry-dependencies
- uses: actions/cache@v3
+
+ - name: Setup Python environment
+ uses: khanlab/actions/.github/actions/action-setup_task-installPyProject@v0.3.2
with:
- path: .venv
- key: venv-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }}-3.8
- #----------------------------------------------
- # install dependencies if cache does not exist
- #----------------------------------------------
- - name: Install dependencies
- if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
- run: poetry install --no-interaction --no-root
- #----------------------------------------------
- # install your root project, if required
- #----------------------------------------------
- - name: Install library
- run: poetry install --no-interaction
-
- #----------------------------------------------
- # run python style checks
- #----------------------------------------------
+ python-version: "3.9"
+
- name: isort
run: poetry run isort hippunfold/*.py -c
+
- name: Black
run: poetry run black hippunfold --check
+
- name: snakefmt
run: poetry run snakefmt hippunfold --check
-
- test:
+ test:
runs-on: ubuntu-latest
- needs: [ 'quality' ]
+ needs: ["quality"]
strategy:
matrix:
- python-version: ['3.8']
+ python-version: ["3.7", "3.8", "3.9"]
+
steps:
- - uses: actions/checkout@master
- - name: Set up Python ${{ matrix.python-version }}
- uses: actions/setup-python@v3
- with:
- python-version: ${{ matrix.python-version }}
- - uses: actions/cache@v3
- with:
- path: ~/.cache/pip
- key: ${{ runner.os }}-pip-${{ matrix.python-version }}
- restore-keys: ${{ runner.os }}-pip-${{ matrix.python-version }}
- - name: Install non-python dependencies
- run: |
- sudo apt-get install -y graphviz-dev
- #----------------------------------------------
- # ----- install & configure poetry -----
- #----------------------------------------------
- - name: Install Poetry
- uses: snok/install-poetry@v1
- with:
- virtualenvs-create: true
- virtualenvs-in-project: true
- - name: Disable Poetry modern installation
- run: |
- poetry config installer.modern-installation false
- #----------------------------------------------
- # load cached venv if cache exists
- #----------------------------------------------
- - name: Load cached venv
- id: cached-poetry-dependencies
- uses: actions/cache@v3
- with:
- path: .venv
- key: venv-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }}-${{ matrix.python-version }}
- #----------------------------------------------
- # install dependencies if cache does not exist
- #----------------------------------------------
- - name: Install dependencies
- if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
- run: poetry install --no-interaction --no-root
- #----------------------------------------------
- # install your root project, if required
- #----------------------------------------------
- - name: Install library
- run: poetry install --no-interaction
- - name: Set-up env for hippunfold
- run: |
- echo "HIPPUNFOLD_CACHE_DIR=`pwd`/test_data/fake_models" >> $GITHUB_ENV
- - name: Test single T2w bids
- run: |
- poetry run hippunfold test_data/bids_singleT2w test_out participant -np --modality T2w
- - name: Test running on existing folder
- run: |
- mkdir test_newout
- poetry run hippunfold test_data/bids_singleT2w test_newout participant -np --modality T2w
- - name: Test single T2w bids, right hemi
- run: |
- poetry run hippunfold test_data/bids_singleT2w test_out participant -np --modality T2w --hemi R
- - name: Test single T2w bids, left hemi
- run: |
- poetry run hippunfold test_data/bids_singleT2w test_out participant -np --modality T2w --hemi L
- - name: Test multiple T2w bids
- run: |
- poetry run hippunfold test_data/bids_multiT2w test_out participant -np --modality T2w
- - name: Test T1w bids
- run: |
- poetry run hippunfold test_data/bids_T1w test_out participant -np --modality T1w
- - name: Test hipp b500 bids
- run: |
- poetry run hippunfold test_data/bids_hippb500 test_out participant -np --modality hippb500
- - name: Test T1w multi-session/longitudinal bids
- run: |
- poetry run hippunfold test_data/bids_T1w_longitudinal test_out participant -np --modality T1w
- - name: Test single T2w multi-session/longitudinal bids
- run: |
- poetry run hippunfold test_data/bids_singleT2w_longitudinal test_out participant -np --modality T2w
- - name: Test manual seg T2w bids
- run: |
- poetry run hippunfold test_data/bids_segT2w test_out participant -np --modality segT2w
- - name: Test cropseg bids, with path override
- run: |
- poetry run hippunfold . test_out participant -np --modality cropseg --path_cropseg test_data/data_cropseg/sub-{subject}_hemi-{hemi}_dseg.nii.gz
- - name: Test cropseg bids, with path override, left hemi
- run: |
- poetry run hippunfold . test_out participant -np --modality cropseg --path_cropseg test_data/data_cropseg_1hemi/sub-{subject}_hemi-{hemi}_dseg.nii.gz --hemi L
- - name: Test T2w with T1w template registration
- run: |
- poetry run hippunfold test_data/bids_singleT2w test_out participant -np --modality T2w --t1_reg_template
- - name: Test T2w with T1w output space
- run: |
- poetry run hippunfold test_data/bids_singleT2w test_out participant -np --modality T2w --output_space T1w
- - name: Test modality T2w with myelin map
- run: |
- poetry run hippunfold test_data/bids_singleT2w test_out participant -np --modality T2w --generate-myelin-map
- - name: Test modality T1w with myelin map
- run: |
- poetry run hippunfold test_data/bids_singleT2w test_out participant -np --modality T1w --generate-myelin-map
- - name: Test modality T1w with magdeburg atlas
- run: |
- poetry run hippunfold test_data/bids_T1w test_out participant -np --modality T1w --atlas magdeburg
- - name: Test modality T1w with freesurfer atlas
- run: |
- poetry run hippunfold test_data/bids_T1w test_out participant -np --modality T1w --atlas freesurfer
+
+ - name: Install non-python dependencies
+ run: |
+ sudo apt-get install -y graphviz-dev
+
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v3
+ with:
+ python-version: ${{ matrix.python-version }}
+
+ - name: Setup Python environments
+ uses: khanlab/actions/.github/actions/action-setup_task-installPyProject@v0.3.2
+ with:
+ python-version: ${{ matrix.python-version }}
+ install-library: true
+
+ - name: Setup env for hippunfold
+ run: |
+ echo "HIPPUNFOLD_CACHE_DIR=`pwd`/test_data/fake_models" >> $GITHUB_ENV
+
+ - name: Test single T2w bids
+ run: |
+ poetry run hippunfold test_data/bids_singleT2w test_out participant -np --modality T2w
+
+ - name: Test running on existing folder
+ run: |
+ mkdir test_newout
+ poetry run hippunfold test_data/bids_singleT2w test_newout participant -np --modality T2w
+
+ - name: Test single T2w bids, right hemi
+ run: |
+ poetry run hippunfold test_data/bids_singleT2w test_out participant -np --modality T2w --hemi R
+ - name: Test single T2w bids, left hemi
+ run: |
+ poetry run hippunfold test_data/bids_singleT2w test_out participant -np --modality T2w --hemi L
+
+ - name: Test multiple T2w bids
+ run: |
+ poetry run hippunfold test_data/bids_multiT2w test_out participant -np --modality T2w
+
+ - name: Test T1w bids
+ run: |
+ poetry run hippunfold test_data/bids_T1w test_out participant -np --modality T1w
+
+ - name: Test hipp b500 bids
+ run: |
+ poetry run hippunfold test_data/bids_hippb500 test_out participant -np --modality hippb500
+ - name: Test T1w multi-session/longitudinal bids
+ run: |
+ poetry run hippunfold test_data/bids_T1w_longitudinal test_out participant -np --modality T1w
+
+ - name: Test single T2w multi-session/longitudinal bids
+ run: |
+ poetry run hippunfold test_data/bids_singleT2w_longitudinal test_out participant -np --modality T2w
+ - name: Test manual seg T2w bids
+ run: |
+ poetry run hippunfold test_data/bids_segT2w test_out participant -np --modality segT2w
+ - name: Test cropseg bids, with path override
+ run: |
+ poetry run hippunfold . test_out participant -np --modality cropseg --path_cropseg test_data/data_cropseg/sub-{subject}_hemi-{hemi}_dseg.nii.gz
+
+ - name: Test cropseg bids, with path override, left hemi
+ run: |
+ poetry run hippunfold . test_out participant -np --modality cropseg --path_cropseg test_data/data_cropseg_1hemi/sub-{subject}_hemi-{hemi}_dseg.nii.gz --hemi L
+ - name: Test T2w with T1w template registration
+ run: |
+ poetry run hippunfold test_data/bids_singleT2w test_out participant -np --modality T2w --t1_reg_template
+
+ - name: Test T2w with T1w output space
+ run: |
+ poetry run hippunfold test_data/bids_singleT2w test_out participant -np --modality T2w --output_space T1w
+
+ - name: Test modality T2w with myelin map
+ run: |
+ poetry run hippunfold test_data/bids_singleT2w test_out participant -np --modality T2w --generate-myelin-map
+
+ - name: Test modality T1w with myelin map
+ run: |
+ poetry run hippunfold test_data/bids_singleT2w test_out participant -np --modality T1w --generate-myelin-map
+
+ - name: Test modality T1w with magdeburg atlas
+ run: |
+ poetry run hippunfold test_data/bids_T1w test_out participant -np --modality T1w --atlas magdeburg
+
+ - name: Test modality T1w with freesurfer atlas
+ run: |
+ poetry run hippunfold test_data/bids_T1w test_out participant -np --modality T1w --atlas freesurfer
+
+ - name: Test modality T1w with bigbrain and freesurfer atlas
+ run: |
+ poetry run hippunfold test_data/bids_T1w test_out participant -np --modality T1w --atlas bigbrain freesurfer
diff --git a/README.md b/README.md
index fcdc6d03..37fb51d7 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
[![Documentation Status](https://readthedocs.org/projects/hippunfold/badge/?version=latest)](https://hippunfold.readthedocs.io/en/latest/?badge=latest)
![Docker Pulls](https://img.shields.io/docker/pulls/khanlab/hippunfold)
![Version](https://img.shields.io/github/v/tag/khanlab/hippunfold?label=version)
+
**Full Documentation:** [here](https://hippunfold.readthedocs.io/en/latest/?badge=latest)
@@ -8,7 +9,6 @@
This tool aims to automatically model the topological folding structure
of the human hippocampus, and computationally unfold it.
-https://raw.githubusercontent.com//khanlab/hippunfold/master/docs/images/subfields_foldunfold.png
![Hippo Fold Unfold](https://raw.githubusercontent.com//khanlab/hippunfold/master/docs/images/subfields_foldunfold.png)
This is especially useful for:
@@ -24,7 +24,7 @@ Major changes include the addition of unfolded space registration to a reference
*Note: this replaces the default workflow, however you can revert to the legacy workflow, disabling unfolded space registration, by setting `--atlas bigbrain` or `--no-unfolded-reg`*
-Read more in our [preprinted manuscript](https://www.biorxiv.org/content/10.1101/2023.03.30.534978v1)
+Read more in our [ manuscript](https://doi.org/10.7554/eLife.88404.3)
Also the ability to specify a new **experimental** UNet model that is contrast-agnostic using [synthseg](https://github.com/BBillot/SynthSeg) and trained using more detailed segmentations. This generally produces more detailed results but has not been extensively tested yet.
@@ -45,11 +45,22 @@ For plotting, mapping fMRI, DWI or other data, and manipulating surfaces, see [h
For statistical testing (spin tests) in unfolded space, see [here](https://github.com/Bradley-Karat/Hippo_Spin_Testing)
-## Relevant papers:
-- DeKraker, J., Palomero-Gallagher, N., Kedo, O., Ladbon-Bernasconi, N., Muenzing, S. E., Axer, M., ... & Evans, A. C. (2023). Evaluation of surface-based hippocampal registration using ground-truth subfield definitions. bioRxiv, 2023-03. [link](https://www.biorxiv.org/content/10.1101/2023.03.30.534978v1)
+## Publications
+
+### HippUnfold methods paper
+
- DeKraker, J., Haast, R. A., Yousif, M. D., Karat, B., Lau, J. C., Köhler, S., & Khan, A. R. (2022). Automated hippocampal unfolding for morphometry and subfield segmentation with HippUnfold. Elife, 11, e77945. [link](https://doi.org/10.7554/eLife.77945)
-- DeKraker J, Ferko KM, Lau JC, Köhler S, Khan AR. Unfolding the hippocampus: An intrinsic coordinate system for subfield segmentations and quantitative mapping. Neuroimage. 2018 Feb 15;167:408-418. doi: 10.1016/j.neuroimage.2017.11.054. Epub 2017 Nov 23. PMID: 29175494. [link](https://pubmed.ncbi.nlm.nih.gov/29175494/)
-- DeKraker J, Lau JC, Ferko KM, Khan AR, Köhler S. Hippocampal subfields revealed through unfolding and unsupervised clustering of laminar and morphological features in 3D BigBrain. Neuroimage. 2020 Feb 1;206:116328. doi: 10.1016/j.neuroimage.2019.116328. Epub 2019 Nov 1. PMID: 31682982. [link](https://pubmed.ncbi.nlm.nih.gov/31682982/)
+ - **Please cite this if you use any version of HippUnfold)**
+
+### Unfolded space registration and multihist7 atlas
+- DeKraker Jordan, Palomero-Gallagher Nicola, Kedo Olga, Ladbon-Bernasconi Neda, Muenzing Sascha E.A., Axer Markus, Amunts Katrin, Khan Ali R., Bernhardt Boris, Evans Alan C. (2023) Evaluation of surface-based hippocampal registration using ground-truth subfield definitions eLife 12:RP88404 [link](https://doi.org/10.7554/eLife.88404.3)
+ - **Please cite this if you use HippUnfold version >= 1.3.0)**
+
+### Commentary on surface-based hippocampal segmentation
- DeKraker J, Köhler S, Khan AR. Surface-based hippocampal subfield segmentation. Trends Neurosci. 2021 Nov;44(11):856-863. doi: 10.1016/j.tins.2021.06.005. Epub 2021 Jul 22. PMID: 34304910. [link](https://pubmed.ncbi.nlm.nih.gov/34304910/)
+### Related papers
+- DeKraker J, Ferko KM, Lau JC, Köhler S, Khan AR. Unfolding the hippocampus: An intrinsic coordinate system for subfield segmentations and quantitative mapping. Neuroimage. 2018 Feb 15;167:408-418. doi: 10.1016/j.neuroimage.2017.11.054. Epub 2017 Nov 23. PMID: 29175494. [link](https://pubmed.ncbi.nlm.nih.gov/29175494/)
+- DeKraker J, Lau JC, Ferko KM, Khan AR, Köhler S. Hippocampal subfields revealed through unfolding and unsupervised clustering of laminar and morphological features in 3D BigBrain. Neuroimage. 2020 Feb 1;206:116328. doi: 10.1016/j.neuroimage.2019.116328. Epub 2019 Nov 1. PMID: 31682982. [link](https://pubmed.ncbi.nlm.nih.gov/31682982/)
+- Karat BG, DeKraker J, Hussain U, Köhler S, Khan AR. Mapping the macrostructure and microstructure of the in vivo human hippocampus using diffusion MRI. Hum Brain Mapp. 2023 Nov;44(16):5485-5503. Epub 2023 Aug 24. PMID: 37615057; PMCID: PMC10543110.[link](https://doi.org/10.1002/hbm.26461)
diff --git a/docs/requirements.txt b/docs/requirements.txt
index d4962a84..713e48d4 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -4,3 +4,4 @@ sphinx_rtd_theme>=1.0.0
snakebids>=0.4.0
myst-parser
sphinxcontrib.asciinema
+pulp<2.8.0
diff --git a/hippunfold/config/snakebids.yml b/hippunfold/config/snakebids.yml
index 65ce94c9..537722da 100644
--- a/hippunfold/config/snakebids.yml
+++ b/hippunfold/config/snakebids.yml
@@ -128,7 +128,7 @@ parse_args:
--version:
help: 'Print the version of HippUnfold'
action: version
- version: "1.4.2-pre.29"
+ version: "1.4.2-pre.33"
--modality:
diff --git a/hippunfold/pipeline_description.json b/hippunfold/pipeline_description.json
index a91e1e09..98c8da8f 100644
--- a/hippunfold/pipeline_description.json
+++ b/hippunfold/pipeline_description.json
@@ -5,7 +5,7 @@
"GeneratedBy": [
{
"Name": "hippunfold",
- "Version": "1.4.2-pre.29",
+ "Version": "1.4.2-pre.33",
"CodeURL": "https://github.com/khanlab/hippunfold",
"Author": "Jordan DeKraker & Ali Khan",
"AuthorEmail": "ali.khan@uwo.ca"
diff --git a/pyproject.toml b/pyproject.toml
index 0d4d4527..a5c9fe54 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "hippunfold"
-version = "1.4.2-pre.29"
+version = "1.4.2-pre.33"
description = "BIDS App for Hippocampal AutoTop (automated hippocampal unfolding and subfield segmentation)"
authors = ["Jordan DeKraker & Ali Khan "]