From b7ee92fdaf37d60d093a8ec21c94772ef6754514 Mon Sep 17 00:00:00 2001 From: bergi Date: Wed, 8 Nov 2023 15:50:50 +0100 Subject: [PATCH 01/19] start web-building CI --- .github/workflows/build-frontend.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 .github/workflows/build-frontend.yml diff --git a/.github/workflows/build-frontend.yml b/.github/workflows/build-frontend.yml new file mode 100644 index 0000000..ce28497 --- /dev/null +++ b/.github/workflows/build-frontend.yml @@ -0,0 +1,26 @@ +name: Build frontend + +on: + push: + branches: ["development"] + pull_request: + branches: ["development"] + +jobs: + build: + runs-on: ubuntu-latest + +strategy: + matrix: + node-version: [17.x] + + steps: + - uses: actions/checkout@v3 + - name: Build using node ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: 'yarn' + - run: yarn + - run: yarn build + From 717e737db0468d68baecb1d0c5765a2268b68651 Mon Sep 17 00:00:00 2001 From: bergi Date: Wed, 8 Nov 2023 15:56:26 +0100 Subject: [PATCH 02/19] update action --- .github/workflows/build-frontend.yml | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build-frontend.yml b/.github/workflows/build-frontend.yml index ce28497..373c08b 100644 --- a/.github/workflows/build-frontend.yml +++ b/.github/workflows/build-frontend.yml @@ -9,18 +9,12 @@ on: jobs: build: runs-on: ubuntu-latest - -strategy: - matrix: - node-version: [17.x] - steps: - - uses: actions/checkout@v3 - - name: Build using node ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - cache: 'yarn' - - run: yarn - - run: yarn build - + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: actions/setup-node@v3 + with: + node-version: 17.9.1 + - name: build + run: ./build-frontend.sh From a9f42e201dd96daeaa58dc23fd2948ff5749b26e Mon Sep 17 00:00:00 2001 From: bergi Date: Wed, 8 Nov 2023 16:02:38 +0100 Subject: [PATCH 03/19] add package.json :facepalm: --- frontend/package.json | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 frontend/package.json diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..0aebddf --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,40 @@ +{ + "source": "src/index.html", + "scripts": { + "start": "parcel", + "build": "parcel build --no-source-maps --no-cache --detailed-report" + }, + "config": { + "root": "./src", + "dist": "./dist" + }, + "devDependencies": { + "@parcel/transformer-inline-string": "2.8.0", + "@parcel/transformer-sass": "2.8.0", + "buffer": "^5.5.0", + "parcel": "^2.8.0", + "process": "^0.11.10" + }, + "dependencies": { + "@ant-design/icons": "^4.8.0", + "@lagunovsky/redux-react-router": "^4.3.0", + "@reduxjs/toolkit": "^1.9.0", + "antd": "^5.0.0", + "axios": "^1.1.3", + "history": "^5.3.0", + "moment": "^2.29.4", + "plotly.js": "^2.24.3", + "react": "^18.2.0", + "react-dnd": "^16.0.1", + "react-dnd-html5-backend": "^16.0.1", + "react-dom": "^18.2.0", + "react-markdown": "^8.0.4", + "react-plotly.js": "^2.6.0", + "react-redux": "^8.0.5", + "react-router": "^6.4.3", + "react-router-dom": "^6.4.3", + "redux": "^4.2.0", + "redux-toolkit-saga": "^1.2.0", + "three": "^0.147.0" + } +} From b57ca246f223eaa9431addbd308ca48eb9319b6b Mon Sep 17 00:00:00 2001 From: bergi Date: Wed, 8 Nov 2023 16:04:23 +0100 Subject: [PATCH 04/19] update CI action --- .github/workflows/build-frontend.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-frontend.yml b/.github/workflows/build-frontend.yml index 373c08b..0442edc 100644 --- a/.github/workflows/build-frontend.yml +++ b/.github/workflows/build-frontend.yml @@ -17,4 +17,8 @@ jobs: with: node-version: 17.9.1 - name: build - run: ./build-frontend.sh + run: | + cd frontend + yarn + cd .. + ./build-frontend.sh From f62a9d28bc9386351be5306c3388c8bed2b2aca5 Mon Sep 17 00:00:00 2001 From: bergi Date: Wed, 8 Nov 2023 16:26:27 +0100 Subject: [PATCH 05/19] update requirements.txt --- requirements.txt | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/requirements.txt b/requirements.txt index 3b991c1..210ddb4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,13 +1,14 @@ # h5py==3.1.0 # requires extra package for mac python docker image -matplotlib==3.6.3 -nibabel==3.2.2 -nilearn==0.9.2 -Pillow==8.4.0 -pymongo==4.1.1 -python-decouple==3.6 -requests==2.27.1 -scipy==1.5.4 -tornado==6.2 -tqdm==4.64.1 +matplotlib==3.7.3 +nibabel==5.1.0 # 3.2.2 +nilearn==0.10.2 +numpy==1.24.4 +Pillow==10.1.0 +pymongo==4.6.0 +python-decouple==3.8 +requests==2.31.0 +scipy==1.10.1 +tornado==6.3.3 +tqdm==4.66.1 xlrd==2.0.1 https://github.com/JamesRitchie/scikit-rvm/archive/master.zip From 78f5758ce857a997559ed1aeb149b4356612a0e1 Mon Sep 17 00:00:00 2001 From: bergi Date: Wed, 8 Nov 2023 16:49:11 +0100 Subject: [PATCH 06/19] add unittest workflow --- .github/workflows/tests.yml | 47 +++++++++++++++++++++++++++++++++++++ bad/config.py | 2 +- bad/process/processdb.py | 4 ++-- 3 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/tests.yml diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..aa6401f --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,47 @@ +# 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: test + +on: + push: + branches: ["main", "development"] + pull_request: + branches: ["main", "development"] + +jobs: + + test-ubuntu: + + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.8", "3.9", "3.10"] + mongodb-version: ["3.6"] + + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + + - name: Start MongoDB + uses: supercharge/mongodb-github-action@1.10.0 + with: + mongodb-version: ${{ matrix.mongodb-version }} + + - name: Install python dependencies + run: | + python -m pip install --upgrade pip + python -m venv env + source env/bin/activate + pip install -r requirements.txt + + - name: Run tests + run: | + source env/bin/activate + ./run_tests.sh diff --git a/bad/config.py b/bad/config.py index 04c6773..f9fae9b 100644 --- a/bad/config.py +++ b/bad/config.py @@ -26,7 +26,7 @@ def _to_bool(x: str) -> bool: DATA_PATH: Path = config("BAD_DATA_PATH", default=Path("~/").expanduser(), cast=Path) TEMP_PATH: Path = config( "BAD_TEMP_PATH", - default=str(Path(tempfile.gettempdir()) / "brainage-pipeline"), + default=str(Path(tempfile.gettempdir()) / "brainage-designer"), cast=Path, ) diff --git a/bad/process/processdb.py b/bad/process/processdb.py index 027ce84..13a35cd 100644 --- a/bad/process/processdb.py +++ b/bad/process/processdb.py @@ -4,10 +4,10 @@ import signal import uuid import traceback -from typing import Mapping, Any, Optional, Union, Sequence +from typing import Mapping, Any, Optional, Union, Sequence, List import pymongo -from pymongo.database import Collection, List +from pymongo.database import Collection from bad.db import DatabaseMixin from bad import logger From 5ede3c9eeee1d5c5319d92a96f5f1bd3388d6dd8 Mon Sep 17 00:00:00 2001 From: bergi Date: Wed, 8 Nov 2023 16:50:33 +0100 Subject: [PATCH 07/19] fix workflow --- .github/workflows/tests.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index aa6401f..68a2a8f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -30,9 +30,9 @@ jobs: python-version: ${{ matrix.python-version }} - name: Start MongoDB - uses: supercharge/mongodb-github-action@1.10.0 - with: - mongodb-version: ${{ matrix.mongodb-version }} + uses: supercharge/mongodb-github-action@1.10.0 + with: + mongodb-version: ${{ matrix.mongodb-version }} - name: Install python dependencies run: | From 99aabec5c9ff085af19aba2c140f1788bcd76de4 Mon Sep 17 00:00:00 2001 From: bergi Date: Wed, 8 Nov 2023 16:54:26 +0100 Subject: [PATCH 08/19] upgrade mongo version for CI --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 68a2a8f..0ac13a1 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -17,7 +17,7 @@ jobs: strategy: matrix: python-version: ["3.8", "3.9", "3.10"] - mongodb-version: ["3.6"] + mongodb-version: ["4.2"] steps: - uses: actions/checkout@v2 From 0e1e5facd8db670e5b165ab50603648a9085cfe4 Mon Sep 17 00:00:00 2001 From: bergi Date: Wed, 8 Nov 2023 17:01:24 +0100 Subject: [PATCH 09/19] tests: put scikit-rvm requirement after requirements.txt since it does not have requirements by itself and pip will install it before numpy which crashes --- .github/workflows/tests.yml | 1 + requirements.txt | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0ac13a1..6da76f7 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -40,6 +40,7 @@ jobs: python -m venv env source env/bin/activate pip install -r requirements.txt + pip install https://github.com/JamesRitchie/scikit-rvm/archive/master.zip - name: Run tests run: | diff --git a/requirements.txt b/requirements.txt index 210ddb4..9fa868b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,4 +11,4 @@ scipy==1.10.1 tornado==6.3.3 tqdm==4.66.1 xlrd==2.0.1 -https://github.com/JamesRitchie/scikit-rvm/archive/master.zip +# https://github.com/JamesRitchie/scikit-rvm/archive/master.zip \ No newline at end of file From 89cd2c70d8323173a4efcd95c55a8b0d74f5be19 Mon Sep 17 00:00:00 2001 From: bergi Date: Wed, 8 Nov 2023 17:04:25 +0100 Subject: [PATCH 10/19] tests: fix test call :facepalm: --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6da76f7..4a4d74d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -45,4 +45,4 @@ jobs: - name: Run tests run: | source env/bin/activate - ./run_tests.sh + ./run-tests.sh From 02af471f0b0c115710ef96985e0563cb2fab7aa9 Mon Sep 17 00:00:00 2001 From: bergi Date: Wed, 8 Nov 2023 17:07:57 +0100 Subject: [PATCH 11/19] tests: properly skip CAT12 tests --- tests/modules/test_cat12.py | 4 ++-- tests/modules/test_cat12_preprocess.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/modules/test_cat12.py b/tests/modules/test_cat12.py index 1ff64cf..9823fc5 100644 --- a/tests/modules/test_cat12.py +++ b/tests/modules/test_cat12.py @@ -10,8 +10,8 @@ from tests.base import BadTestCase -@unittest.skipIf(not config.CAT12_PATH.exists(), "CAT12 package not at it's place") -@unittest.skipIf(not config.MATLAB_PATH.exists(), "matlab not at it's place") +@unittest.skipIf(not config.CAT12_PATH or not config.CAT12_PATH.exists(), "CAT12 package not at it's place") +@unittest.skipIf(not config.MATLAB_PATH or not config.MATLAB_PATH.exists(), "matlab not at it's place") class TestCat12Modules(BadTestCase): def test_cat12_version(self): diff --git a/tests/modules/test_cat12_preprocess.py b/tests/modules/test_cat12_preprocess.py index 726c63b..64752d8 100644 --- a/tests/modules/test_cat12_preprocess.py +++ b/tests/modules/test_cat12_preprocess.py @@ -8,8 +8,8 @@ from tests.base import BadTestCase -@unittest.skipIf(not config.CAT12_PATH.exists(), "CAT12 package not at it's place") -@unittest.skipIf(not config.MATLAB_PATH.exists(), "matlab not at it's place") +@unittest.skipIf(not config.CAT12_PATH or not config.CAT12_PATH.exists(), "CAT12 package not at it's place") +@unittest.skipIf(not config.MATLAB_PATH or not config.MATLAB_PATH.exists(), "matlab not at it's place") class TestCat12PreprocessModule(BadTestCase): @BadTestCase.tag_long() From b1e9812a490d944f24c8e77eed3a213fc26188b8 Mon Sep 17 00:00:00 2001 From: bergi Date: Wed, 8 Nov 2023 17:13:35 +0100 Subject: [PATCH 12/19] tests: skip CAT12 tests for real --- tests/modules/test_cat12.py | 4 ++-- tests/modules/test_cat12_preprocess.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/modules/test_cat12.py b/tests/modules/test_cat12.py index 9823fc5..3d996bd 100644 --- a/tests/modules/test_cat12.py +++ b/tests/modules/test_cat12.py @@ -10,8 +10,8 @@ from tests.base import BadTestCase -@unittest.skipIf(not config.CAT12_PATH or not config.CAT12_PATH.exists(), "CAT12 package not at it's place") -@unittest.skipIf(not config.MATLAB_PATH or not config.MATLAB_PATH.exists(), "matlab not at it's place") +@unittest.skipIf(len(str(config.CAT12_PATH)) <= 1 or not config.CAT12_PATH.exists(), "CAT12 package not at it's place") +@unittest.skipIf(len(str(config.MATLAB_PATH)) <= 1 or not config.MATLAB_PATH.exists(), "matlab not at it's place") class TestCat12Modules(BadTestCase): def test_cat12_version(self): diff --git a/tests/modules/test_cat12_preprocess.py b/tests/modules/test_cat12_preprocess.py index 64752d8..4a026dd 100644 --- a/tests/modules/test_cat12_preprocess.py +++ b/tests/modules/test_cat12_preprocess.py @@ -8,8 +8,8 @@ from tests.base import BadTestCase -@unittest.skipIf(not config.CAT12_PATH or not config.CAT12_PATH.exists(), "CAT12 package not at it's place") -@unittest.skipIf(not config.MATLAB_PATH or not config.MATLAB_PATH.exists(), "matlab not at it's place") +@unittest.skipIf(len(str(config.CAT12_PATH)) <= 1 or not config.CAT12_PATH.exists(), "CAT12 package not at it's place") +@unittest.skipIf(len(str(config.MATLAB_PATH)) <= 1 or not config.MATLAB_PATH.exists(), "matlab not at it's place") class TestCat12PreprocessModule(BadTestCase): @BadTestCase.tag_long() From 260c73fd2117e5948e61db3924a4c680254c201e Mon Sep 17 00:00:00 2001 From: bergi Date: Mon, 13 Nov 2023 15:42:55 +0100 Subject: [PATCH 13/19] frontend-CI: add commit and push steps to workflow --- .github/workflows/build-frontend.yml | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-frontend.yml b/.github/workflows/build-frontend.yml index 0442edc..7a5282e 100644 --- a/.github/workflows/build-frontend.yml +++ b/.github/workflows/build-frontend.yml @@ -1,10 +1,8 @@ -name: Build frontend +name: build frontend on: push: branches: ["development"] - pull_request: - branches: ["development"] jobs: build: @@ -16,9 +14,29 @@ jobs: - uses: actions/setup-node@v3 with: node-version: 17.9.1 - - name: build + - name: switch to frontend branch + run: | + echo switching to branch ${GITHUB_HEAD_REF}-frontend + git checkout ${GITHUB_HEAD_REF}-frontend || git checkout -b ${GITHUB_HEAD_REF}-frontend + git merge ${GITHUB_HEAD_REF}-frontend + - name: build frontend run: | cd frontend yarn cd .. ./build-frontend.sh + - name: config git user + run: | + curl -s -u ${GITHUB_ACTOR}:${{ secrets.GITHUB_TOKEN }} https://api.github.com/users/${GITHUB_ACTOR} > ${GITHUB_ACTOR}.json + git config user.email "$(cat ${GITHUB_ACTOR}.json | jq -r .email)" + git config user.name "frontend-bot" + - name: commit changes + run: | + git add -f bad/static/brain* + git add -f bad/static/index* + git status + git commit -m"build frontend" + - name: push changes + run: | + git push -u origin ${GITHUB_HEAD_REF}-frontend || (git pull --rebase --no-edit && git push -u origin ${GITHUB_HEAD_REF}-frontend) + \ No newline at end of file From 2aabc0e15c77c352a0259c537d3d3805c9f2d483 Mon Sep 17 00:00:00 2001 From: bergi Date: Mon, 13 Nov 2023 15:45:15 +0100 Subject: [PATCH 14/19] frontend-CI: fix indentation --- .github/workflows/build-frontend.yml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build-frontend.yml b/.github/workflows/build-frontend.yml index 7a5282e..af9b3d8 100644 --- a/.github/workflows/build-frontend.yml +++ b/.github/workflows/build-frontend.yml @@ -30,13 +30,12 @@ jobs: curl -s -u ${GITHUB_ACTOR}:${{ secrets.GITHUB_TOKEN }} https://api.github.com/users/${GITHUB_ACTOR} > ${GITHUB_ACTOR}.json git config user.email "$(cat ${GITHUB_ACTOR}.json | jq -r .email)" git config user.name "frontend-bot" - - name: commit changes - run: | - git add -f bad/static/brain* - git add -f bad/static/index* - git status - git commit -m"build frontend" - - name: push changes - run: | - git push -u origin ${GITHUB_HEAD_REF}-frontend || (git pull --rebase --no-edit && git push -u origin ${GITHUB_HEAD_REF}-frontend) - \ No newline at end of file + - name: commit changes + run: | + git add -f bad/static/brain* + git add -f bad/static/index* + git status + git commit -m"build frontend" + - name: push changes + run: | + git push -u origin ${GITHUB_HEAD_REF}-frontend || (git pull --rebase --no-edit && git push -u origin ${GITHUB_HEAD_REF}-frontend) From 8cfbd4794f52a2018b7d04a453c165e626c48ed7 Mon Sep 17 00:00:00 2001 From: bergi Date: Mon, 13 Nov 2023 15:50:52 +0100 Subject: [PATCH 15/19] frontend-CI: change ref variable name --- .github/workflows/build-frontend.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-frontend.yml b/.github/workflows/build-frontend.yml index af9b3d8..2973fe8 100644 --- a/.github/workflows/build-frontend.yml +++ b/.github/workflows/build-frontend.yml @@ -16,9 +16,9 @@ jobs: node-version: 17.9.1 - name: switch to frontend branch run: | - echo switching to branch ${GITHUB_HEAD_REF}-frontend - git checkout ${GITHUB_HEAD_REF}-frontend || git checkout -b ${GITHUB_HEAD_REF}-frontend - git merge ${GITHUB_HEAD_REF}-frontend + echo switching to branch ${GITHUB_REF_NAME}-frontend + git checkout ${GITHUB_REF_NAME}-frontend || git checkout -b ${GITHUB_REF_NAME}-frontend + git merge ${GITHUB_REF_NAME}-frontend - name: build frontend run: | cd frontend @@ -38,4 +38,4 @@ jobs: git commit -m"build frontend" - name: push changes run: | - git push -u origin ${GITHUB_HEAD_REF}-frontend || (git pull --rebase --no-edit && git push -u origin ${GITHUB_HEAD_REF}-frontend) + git push -u origin ${GITHUB_REF_NAME}-frontend || (git pull --rebase --no-edit && git push -u origin ${GITHUB_REF_NAME}-frontend) From f0a46fe6c0a04dcd87140da985db91cbed8209bf Mon Sep 17 00:00:00 2001 From: bergi Date: Mon, 13 Nov 2023 15:59:58 +0100 Subject: [PATCH 16/19] frontend-CI: use push action --- .github/workflows/build-frontend.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-frontend.yml b/.github/workflows/build-frontend.yml index 2973fe8..439b502 100644 --- a/.github/workflows/build-frontend.yml +++ b/.github/workflows/build-frontend.yml @@ -36,6 +36,9 @@ jobs: git add -f bad/static/index* git status git commit -m"build frontend" - - name: push changes - run: | - git push -u origin ${GITHUB_REF_NAME}-frontend || (git pull --rebase --no-edit && git push -u origin ${GITHUB_REF_NAME}-frontend) + - name: Push changes + uses: ad-m/github-push-action@master + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + branch: ${GITHUB_REF_NAME}-frontend + \ No newline at end of file From 8f90b386db9ee48016ddc7ab51117d9e2aebaf9d Mon Sep 17 00:00:00 2001 From: bergi Date: Mon, 13 Nov 2023 16:10:07 +0100 Subject: [PATCH 17/19] frontend-CI: revert to own push step --- .github/workflows/build-frontend.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-frontend.yml b/.github/workflows/build-frontend.yml index 439b502..44e5fb0 100644 --- a/.github/workflows/build-frontend.yml +++ b/.github/workflows/build-frontend.yml @@ -36,9 +36,7 @@ jobs: git add -f bad/static/index* git status git commit -m"build frontend" - - name: Push changes - uses: ad-m/github-push-action@master - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - branch: ${GITHUB_REF_NAME}-frontend - \ No newline at end of file + - name: push changes + run: | + git push -u origin ${GITHUB_REF_NAME}-frontend + From 7345a294c4bd38d4ee5e9bd95907ea457435e3ba Mon Sep 17 00:00:00 2001 From: bergi Date: Thu, 16 Nov 2023 14:45:55 +0100 Subject: [PATCH 18/19] update README with github-based installation steps --- README.md | 105 ++++++++++++++++++++++++++++++- docs/img/screenshot-analysis.png | Bin 0 -> 113988 bytes 2 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 docs/img/screenshot-analysis.png diff --git a/README.md b/README.md index 00ec5f2..e3d2f6e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,106 @@ # BrainAGE Designer +**Brain** **A**ge **G**ap **E**stimation framework with browser-based user interface. + +![screenshot](docs/img/screenshot-analysis.png) + +Some of the features: + +- all experiments are controlled from the web-UI +- supports arbitrary preprocessing pipelines +- fine control over analysis / model creation +- all experiments are stored to database for revisiting them later + + ## Installation +### Requirements + +- [Python](https://www.python.org/) 3.8 or later +- [MongoDB](https://www.mongodb.com/) 3.6 or later +- [Matlab Runtime](https://www.mathworks.com/products/compiler/matlab-runtime.html) v93 (optional) + +### Download + +Using the git command-line tool: + +```shell +cd /my/projects # or where you want to place it +git clone https://github.com/defgsus/brainage-designer.git +cd brainage-designer +git checkout development-frontend +``` + +or you can download [a zip file](https://github.com/defgsus/brainage-designer/archive/refs/heads/development-frontend.zip) +and extract it. + +### Running on localhost + +```shell +# create new python environment +python -m venv env +# activate +source env/bin/activate +# install python packages +pip install -r requirements.txt +pip install https://github.com/JamesRitchie/scikit-rvm/archive/master.zip +``` + +[Install MongoDB](https://www.mongodb.com/docs/manual/installation/) + +Start server and worker: + +```shell +./start-server.sh +``` + +visit [http://localhost:9009](http://localhost:9009) + +#### Configuration + +The local setup can be configure by creating a `.env` file +in the root directory. It can have the following entries: + +```shell +# enable debugging mode (mainly for web-server, more text output) +BAD_DEBUG=true + +# -- directories -- + +# the root path below which everything can be accessed +BAD_DATA_PATH=/home/me +# temporary directory to use +TEMP_PATH=/tmp/brainage-designer + +# -- matlab -- + +# path to the matlab runtime +MATLAB_PATH=/home/me/MATLAB_Runtime/v93 +# path to the matlab-based CAT12 toolbox +CAT12_PATH=/home/me/CAT12.8.1_r2042_R2017b_MCR_Linux + +# -- API server -- + +# change the address of the API (and frontend) server +SERVER_HOST=localhost +SERVER_PORT=9009 + +# -- mongodb -- + +# rename the database +DATABASE_NAME=brainage-designer +# location of the mongodb server +DATABASE_HOST=localhost +DATABASE_PORT=27017 +# to handle authentication with mongodb +DATABASE_USER=brainage-user +DATABASE_PASSWORD=brainage-password +``` + + + +## Installation via 'Docker' + Install a recent version of [Docker Engine](https://docs.docker.com/engine/install/) or the **Docker Desktop** if you can't help it. @@ -46,13 +145,13 @@ docker run -ti -p 80:9009 brainage-designer ``` -## development +# Development ### prepare environments ```shell -# for python the typical -virtualenv -p python3 env +# for python the typical.. +python -m venv env source env/bin/activate pip install -r requirements.txt diff --git a/docs/img/screenshot-analysis.png b/docs/img/screenshot-analysis.png new file mode 100644 index 0000000000000000000000000000000000000000..85876ed2e632c5460b4041f59ee49085b41e11e4 GIT binary patch literal 113988 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 OO<6(XMX8)Q_`d*xN@pnm literal 0 HcmV?d00001 From 5189e806af0f92d9e8bfb72e21f2e0dd475ba029 Mon Sep 17 00:00:00 2001 From: bergi Date: Fri, 17 Nov 2023 13:39:05 +0100 Subject: [PATCH 19/19] add frontend build step to main branch --- ...ld-frontend.yml => build-frontend-dev.yml} | 0 .github/workflows/build-frontend-main.yml | 36 +++++++++++++++++++ README.md | 3 ++ 3 files changed, 39 insertions(+) rename .github/workflows/{build-frontend.yml => build-frontend-dev.yml} (100%) create mode 100644 .github/workflows/build-frontend-main.yml diff --git a/.github/workflows/build-frontend.yml b/.github/workflows/build-frontend-dev.yml similarity index 100% rename from .github/workflows/build-frontend.yml rename to .github/workflows/build-frontend-dev.yml diff --git a/.github/workflows/build-frontend-main.yml b/.github/workflows/build-frontend-main.yml new file mode 100644 index 0000000..49ab72a --- /dev/null +++ b/.github/workflows/build-frontend-main.yml @@ -0,0 +1,36 @@ +name: build frontend + +on: + push: + branches: ["main"] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: actions/setup-node@v3 + with: + node-version: 17.9.1 + - name: build frontend + run: | + cd frontend + yarn + cd .. + ./build-frontend.sh + - name: config git user + run: | + curl -s -u ${GITHUB_ACTOR}:${{ secrets.GITHUB_TOKEN }} https://api.github.com/users/${GITHUB_ACTOR} > ${GITHUB_ACTOR}.json + git config user.email "$(cat ${GITHUB_ACTOR}.json | jq -r .email)" + git config user.name "frontend-bot" + - name: commit changes + run: | + git add -f bad/static/brain* + git add -f bad/static/index* + git status + git commit -m"build frontend" + - name: push changes + run: | + git push diff --git a/README.md b/README.md index e3d2f6e..3a9f67a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # BrainAGE Designer +[![test](https://github.com/defgsus/brainage-designer/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/defgsus/brainage-designer/actions/workflows/tests.yml) +[![test](https://github.com/defgsus/brainage-designer/actions/workflows/build-frontend-main.yml/badge.svg?branch=main)](https://github.com/defgsus/brainage-designer/actions/workflows/build-frontend-main.yml) + **Brain** **A**ge **G**ap **E**stimation framework with browser-based user interface. ![screenshot](docs/img/screenshot-analysis.png)