diff --git a/.circleci/config.yml b/.circleci/config.yml index 16cd09ac..ffe2747c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,26 +6,32 @@ jobs: machine: image: ubuntu-2204:2022.10.2 + parameters: + dh_orga: + type: string + default: cpplab + dh_repo: + type: string + default: bidspm steps: - checkout - - run: make fix_submodule + - run: + name: update submodules + command: make fix_submodule - restore_cache: keys: - my_cache - run: - name: Build Docker image + name: build Docker image command: | set -eux -o pipefail - # make sure we have a lowercase repo - user_name=cpplab - repo_name=$(echo "${CIRCLE_PROJECT_REPONAME}" | tr '[:upper:]' '[:lower:]') if [[ -e "${HOME}/docker/image.tar" ]]; then docker load -i "${HOME}/docker/image.tar" fi git describe --tags --always > version - docker build -t "${user_name}/${repo_name}" . + docker build -t << parameters.dh_orga >>/<< parameters.dh_repo >> . mkdir -p "${HOME}/docker" - docker save "${user_name}/${repo_name}" > "${HOME}/docker/image.tar" + docker save << parameters.dh_orga >>/<< parameters.dh_repo >> > "${HOME}/docker/image.tar" docker images - persist_to_workspace: root: /home/circleci @@ -38,7 +44,7 @@ jobs: steps: - checkout - run: - name: Install dependencies + name: install dependencies command: | sudo apt-get update sudo apt-get install -y python3 git-annex @@ -49,7 +55,7 @@ jobs: keys: - my_cache - run: - name: Get ds000001 + name: get ds000001 command: | # Git set up: to keep datalad warnings away git config --global --add user.name "Ford Escort" @@ -75,26 +81,35 @@ jobs: - data/ds000001 - data/ds000001-fmriprep - default_model: + fast: + # run actions that run quickly machine: image: ubuntu-2204:2022.10.2 - + parameters: + dh_orga: + type: string + default: cpplab + dh_repo: + type: string + default: bidspm steps: - attach_workspace: at: /tmp/workspace - - run: docker load -i /tmp/workspace/docker/image.tar + - run: + name: load docker image + command: docker load -i /tmp/workspace/docker/image.tar - - run: mkdir -p ${HOME}/outputs/ds000001/derivatives + - run: + name: create output directory + command: mkdir -p /home/circleci/outputs/ds000001/derivatives - run: name: default model subject level command: | - user_name=cpplab - repo_name=$(echo "${CIRCLE_PROJECT_REPONAME}" | tr '[:upper:]' '[:lower:]') docker run -ti --rm \ -v /tmp/workspace/data/ds000001:/bids_dataset \ - -v ${HOME}/outputs:/outputs \ - ${user_name}/${repo_name} \ + -v /home/circleci/outputs:/outputs \ + << parameters.dh_orga >>/<< parameters.dh_repo >> \ /bids_dataset \ /outputs/ds000001 \ subject \ @@ -103,17 +118,15 @@ jobs: --space MNI152NLin2009cAsym \ --verbosity 3 - cat ${HOME}/outputs/ds000001/derivatives/models/*.json + cat /home/circleci/outputs/ds000001/derivatives/models/*.json - run: name: default model dataset level command: | - user_name=cpplab - repo_name=$(echo "${CIRCLE_PROJECT_REPONAME}" | tr '[:upper:]' '[:lower:]') docker run -ti --rm \ -v /tmp/workspace/data/ds000001:/bids_dataset \ - -v ${HOME}/outputs:/outputs \ - ${user_name}/${repo_name} \ + -v /home/circleci/outputs:/outputs \ + << parameters.dh_orga >>/<< parameters.dh_repo >> \ /bids_dataset \ /outputs/ds000001 \ dataset \ @@ -122,28 +135,58 @@ jobs: --space MNI152NLin2009cAsym \ --verbosity 3 - cat ${HOME}/outputs/ds000001/derivatives/models/*.json + cat /home/circleci/outputs/ds000001/derivatives/models/*.json + + - store_artifacts: + path: /home/circleci/outputs + + - run: + name: create roi + command: | + docker run -ti --rm \ + -v /tmp/workspace/data/ds000001:/bids_dataset \ + -v /home/circleci/outputs:/outputs \ + << parameters.dh_orga >>/<< parameters.dh_repo >> \ + /outputs/ds000001 \ + /outputs/ds000001 \ + dataset \ + --action create_roi \ + --roi_atlas wang \ + --roi_name V1v V1d \ + --space IXI549Space \ + --verbosity 3 + + - store_artifacts: + path: /home/circleci/outputs stats: machine: image: ubuntu-2204:2022.10.2 - + parameters: + dh_orga: + type: string + default: cpplab + dh_repo: + type: string + default: bidspm steps: - attach_workspace: at: /tmp/workspace - - run: docker load -i /tmp/workspace/docker/image.tar + - run: + name: load docker image + command: docker load -i /tmp/workspace/docker/image.tar - - run: mkdir -p ${HOME}/outputs/ds000001/derivatives + - run: + name: create output directory + command: mkdir -p /home/circleci/outputs/ds000001/derivatives - run: name: smooth command: | - user_name=cpplab - repo_name=$(echo "${CIRCLE_PROJECT_REPONAME}" | tr '[:upper:]' '[:lower:]') docker run -ti --rm \ -v /tmp/workspace/data/ds000001-fmriprep:/bids_dataset \ - -v ${HOME}/outputs:/outputs \ - ${user_name}/${repo_name} \ + -v /home/circleci/outputs:/outputs \ + << parameters.dh_orga >>/<< parameters.dh_repo >> \ /bids_dataset \ /outputs/ds000001 \ subject \ @@ -160,14 +203,12 @@ jobs: - run: name: stats subject level command: | - user_name=cpplab - repo_name=$(echo "${CIRCLE_PROJECT_REPONAME}" | tr '[:upper:]' '[:lower:]') docker run -ti --rm \ -v /tmp/workspace/data/ds000001:/bids_dataset \ - -v ${HOME}/outputs:/outputs \ + -v /home/circleci/outputs:/outputs \ -v ~/project/demos/openneuro/models:/models \ -v ~/project/demos/openneuro/options:/options \ - ${user_name}/${repo_name} \ + << parameters.dh_orga >>/<< parameters.dh_repo >> \ /bids_dataset \ /outputs/ds000001 \ subject \ @@ -185,14 +226,12 @@ jobs: - run: name: stats group level command: | - user_name=cpplab - repo_name=$(echo "${CIRCLE_PROJECT_REPONAME}" | tr '[:upper:]' '[:lower:]') docker run -ti --rm \ -v /tmp/workspace/data/ds000001:/bids_dataset \ - -v ${HOME}/outputs:/outputs \ + -v /home/circleci/outputs:/outputs \ -v ~/project/demos/openneuro/models:/models \ -v ~/project/demos/openneuro/options:/options \ - ${user_name}/${repo_name} \ + << parameters.dh_orga >>/<< parameters.dh_repo >> \ /bids_dataset \ /outputs/ds000001 \ dataset \ @@ -206,16 +245,27 @@ jobs: --verbosity 3 \ --options /options/ds000001.json + - store_artifacts: + path: /home/circleci/outputs/ds000001/derivatives/bidspm-stats + deploy: machine: image: ubuntu-2204:2022.10.2 - + parameters: + dh_orga: + type: string + default: cpplab + dh_repo: + type: string + default: bidspm steps: - attach_workspace: at: /tmp/workspace - - run: docker load -i /tmp/workspace/docker/image.tar + - run: + name: load docker image + command: docker load -i /tmp/workspace/docker/image.tar - run: name: push to dockerhub command: | @@ -223,21 +273,20 @@ jobs: if [[ -n "${DOCKER_TOKEN}" ]]; then - # make sure we have a lowercase repo user_name=remigau - repo_name=$(echo "${CIRCLE_PROJECT_REPONAME}" | tr '[:upper:]' '[:lower:]') - echo "${DOCKER_TOKEN}" | docker login -u "${DOCKER_USER}" --password-stdin + echo "${DOCKER_TOKEN}" | docker login -u "${user_name}" --password-stdin - : "Pushing to DockerHub ${user_name}/${repo_name}:unstable" - docker tag "${user_name}/${repo_name}" "${user_name}/${repo_name}:unstable" - docker push "${user_name}/${repo_name}:unstable" + : Pushing to DockerHub << parameters.dh_orga >>/<< parameters.dh_repo >>:unstable + docker tag << parameters.dh_orga >>/<< parameters.dh_repo >> << parameters.dh_orga >>/<< parameters.dh_repo >>:unstable + docker push << parameters.dh_orga >>/<< parameters.dh_repo >>:unstable if [[ -n "${CIRCLE_TAG}" ]]; then - : "Pushing to DockerHub ${user_name}/${repo_name}:${CIRCLE_TAG}" - docker push "${user_name}/${repo_name}:latest" - docker tag "${user_name}/${repo_name}" "${user_name}/${repo_name}:${CIRCLE_TAG}" - docker push "${user_name}/${repo_name}:${CIRCLE_TAG}" + : Pushing to DockerHub << parameters.dh_orga >>/<< parameters.dh_repo >>:"${CIRCLE_TAG}" + docker tag << parameters.dh_orga >>/<< parameters.dh_repo >> << parameters.dh_orga >>/<< parameters.dh_repo >>:latest + docker push << parameters.dh_orga >>/<< parameters.dh_repo >>:latest + docker tag << parameters.dh_orga >>/<< parameters.dh_repo >> << parameters.dh_orga >>/<< parameters.dh_repo >>:"${CIRCLE_TAG}" + docker push << parameters.dh_orga >>/<< parameters.dh_repo >>:"${CIRCLE_TAG}" fi else @@ -250,7 +299,7 @@ workflows: jobs: - build - get_data - - default_model: + - fast: requires: - build - get_data @@ -263,5 +312,6 @@ workflows: - DOCKER_HUB requires: - build + - fast # VS Code Extension Version: 1.5.1 diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml deleted file mode 100644 index 254724b1..00000000 --- a/.github/workflows/docker.yml +++ /dev/null @@ -1,109 +0,0 @@ ---- -name: docker - -on: - push: - branches: [main] - tags: ['*'] - pull_request: - branches: ['*'] - release: - types: [published] - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -permissions: - contents: read - -env: - USER_NAME: cpplab - REPO_NAME: bidspm - # DATA: /home/runner/work/giga_connectome/giga_connectome/giga_connectome/data/test_data - IMAGE: /home/runner/work/bidspm/docker - IS_TAGGED: ${{ github.ref_type == 'tag' }} - IS_MAIN: ${{ github.ref == 'refs/heads/main' }} - -jobs: - docker-build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - fetch-depth: 0 - - - name: Build the Docker image - run: | - docker build . --file Dockerfile --tag ${{env.USER_NAME}}/${{env.REPO_NAME}} - mkdir -p ${{ env.IMAGE }} - docker save "${{env.USER_NAME}}/${{env.REPO_NAME}}" > "${{ env.IMAGE }}/image.tar" - docker images - - - name: Upload docker artifacts - uses: actions/upload-artifact@v4 - with: - name: docker - path: ${{ env.IMAGE }} - - docker-run: - runs-on: ubuntu-latest - needs: [docker-build] - steps: - - name: Restore docker image - uses: actions/download-artifact@v4 - with: - name: docker - path: ${{ env.IMAGE }} - - - name: Test the Docker image - run: | - docker load -i ${{ env.IMAGE }}/image.tar - docker run --rm \ - ${{env.USER_NAME}}/${{env.REPO_NAME}} \ - --help - docker run --rm \ - ${{env.USER_NAME}}/${{env.REPO_NAME}} \ - --version - - docker-push: - runs-on: ubuntu-latest - needs: [docker-run] - steps: - - name: Log in to Docker Hub - uses: docker/login-action@v3.2.0 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Restore docker image - uses: actions/download-artifact@v4 - with: - name: docker - path: ${{ env.IMAGE }} - - - name: Load image - run: docker load -i ${{ env.IMAGE }}/image.tar - - - name: Push unstable to dockerhub on tags or on main - if: ${{ env.IS_MAIN == 'true' || env.IS_TAGGED == 'true' }} - run: | - echo "Pushing unstable versions to DockerHub" - unstable="${{env.USER_NAME}}/${{env.REPO_NAME}}:unstable" - docker tag "${{env.USER_NAME}}/${{env.REPO_NAME}}" "${unstable}" - docker push "${unstable}" - - - name: Push stable release to dockerhub on tags only - if: ${{ env.IS_TAGGED == 'true' }} - run: | - echo "Pushing stable and latest versions to DockerHub for latest and ${{ github.ref_name }}" - - unstable="${{env.USER_NAME}}/${{env.REPO_NAME}}:unstable" - latest="${{env.USER_NAME}}/${{env.REPO_NAME}}:latest" - docker tag "${unstable}" "${latest}" - docker push "${latest}" - - tagged_release="${{env.USER_NAME}}/${{env.REPO_NAME}}:${{ github.ref_name }}" - docker tag "${unstable}" "${tagged_release}" - docker push "${tagged_release}" diff --git a/src/bidspm/bidspm.py b/src/bidspm/bidspm.py index 7e3eef7b..62fd4e6f 100755 --- a/src/bidspm/bidspm.py +++ b/src/bidspm/bidspm.py @@ -74,7 +74,8 @@ def append_common_arguments( else None ) - cmd += f"{new_line}'fwhm', {fwhm}" + if fwhm: + cmd += f"{new_line}'fwhm', {fwhm}" if participant_label: cmd += f"{new_line}'participant_label', {participant_label}" if skip_validation: @@ -200,6 +201,7 @@ def create_roi( cmd=cmd, participant_label=participant_label, bids_filter_file=bids_filter_file, + fwhm=None, ) cmd += f"{new_line}'roi_atlas', '{roi_atlas}'" cmd += f"{new_line}'roi_name', {roi_name}"