AxonDeepSeg 5.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- axondeepseg-5.4.0/.github/ISSUE_TEMPLATE/bug_report.md +30 -0
- axondeepseg-5.4.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
- axondeepseg-5.4.0/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- axondeepseg-5.4.0/.github/pull_request_template.md +22 -0
- axondeepseg-5.4.0/.github/workflows/pipy_install_tests.yaml +124 -0
- axondeepseg-5.4.0/.github/workflows/run_tests.yaml +128 -0
- axondeepseg-5.4.0/.gitignore +67 -0
- axondeepseg-5.4.0/.readthedocs.yml +22 -0
- axondeepseg-5.4.0/AxonDeepSeg/__init__.py +20 -0
- axondeepseg-5.4.0/AxonDeepSeg/ads_napari/Settings_menu_ui.ui +83 -0
- axondeepseg-5.4.0/AxonDeepSeg/ads_napari/__init__.py +5 -0
- axondeepseg-5.4.0/AxonDeepSeg/ads_napari/_widget.py +1341 -0
- axondeepseg-5.4.0/AxonDeepSeg/ads_napari/napari.yaml +11 -0
- axondeepseg-5.4.0/AxonDeepSeg/ads_napari/settings_menu_ui.py +78 -0
- axondeepseg-5.4.0/AxonDeepSeg/ads_utils.py +252 -0
- axondeepseg-5.4.0/AxonDeepSeg/apply_model.py +192 -0
- axondeepseg-5.4.0/AxonDeepSeg/download_model.py +145 -0
- axondeepseg-5.4.0/AxonDeepSeg/download_tests.py +77 -0
- axondeepseg-5.4.0/AxonDeepSeg/integrity_test.py +91 -0
- axondeepseg-5.4.0/AxonDeepSeg/logo_ads-alpha.png +0 -0
- axondeepseg-5.4.0/AxonDeepSeg/logo_ads-alpha_small.png +0 -0
- axondeepseg-5.4.0/AxonDeepSeg/model_cards.yaml +49 -0
- axondeepseg-5.4.0/AxonDeepSeg/morphometrics/__init__.py +0 -0
- axondeepseg-5.4.0/AxonDeepSeg/morphometrics/aggregate.py +278 -0
- axondeepseg-5.4.0/AxonDeepSeg/morphometrics/compute_morphometrics.py +692 -0
- axondeepseg-5.4.0/AxonDeepSeg/morphometrics/launch_morphometrics_computation.py +382 -0
- axondeepseg-5.4.0/AxonDeepSeg/params.py +95 -0
- axondeepseg-5.4.0/AxonDeepSeg/postprocessing.py +171 -0
- axondeepseg-5.4.0/AxonDeepSeg/qa/__init__.py +0 -0
- axondeepseg-5.4.0/AxonDeepSeg/qa/custom_matplotlibrc +14 -0
- axondeepseg-5.4.0/AxonDeepSeg/qa/generate_report_demo.py +42 -0
- axondeepseg-5.4.0/AxonDeepSeg/qa/metrics_qa.py +255 -0
- axondeepseg-5.4.0/AxonDeepSeg/qa/report_template.html +1237 -0
- axondeepseg-5.4.0/AxonDeepSeg/segment.py +308 -0
- axondeepseg-5.4.0/AxonDeepSeg/testing/__init__.py +0 -0
- axondeepseg-5.4.0/AxonDeepSeg/testing/launch_performance_metrics.py +39 -0
- axondeepseg-5.4.0/AxonDeepSeg/testing/segmentation_scoring.py +348 -0
- axondeepseg-5.4.0/AxonDeepSeg/version.txt +1 -0
- axondeepseg-5.4.0/AxonDeepSeg/visualization/__init__.py +0 -0
- axondeepseg-5.4.0/AxonDeepSeg/visualization/colorization.py +114 -0
- axondeepseg-5.4.0/AxonDeepSeg/visualization/merge_masks.py +39 -0
- axondeepseg-5.4.0/AxonDeepSeg/visualization/simulate_axons.py +110 -0
- axondeepseg-5.4.0/AxonDeepSeg.egg-info/PKG-INFO +133 -0
- axondeepseg-5.4.0/AxonDeepSeg.egg-info/SOURCES.txt +95 -0
- axondeepseg-5.4.0/AxonDeepSeg.egg-info/dependency_links.txt +1 -0
- axondeepseg-5.4.0/AxonDeepSeg.egg-info/entry_points.txt +10 -0
- axondeepseg-5.4.0/AxonDeepSeg.egg-info/requires.txt +27 -0
- axondeepseg-5.4.0/AxonDeepSeg.egg-info/top_level.txt +1 -0
- axondeepseg-5.4.0/CHANGELOG.md +425 -0
- axondeepseg-5.4.0/CONTRIBUTING.rst +268 -0
- axondeepseg-5.4.0/LICENSE +21 -0
- axondeepseg-5.4.0/MANIFEST.ini +6 -0
- axondeepseg-5.4.0/PKG-INFO +133 -0
- axondeepseg-5.4.0/README.md +78 -0
- axondeepseg-5.4.0/custom_matplotlibrc +14 -0
- axondeepseg-5.4.0/docs/Makefile +20 -0
- axondeepseg-5.4.0/docs/make.bat +36 -0
- axondeepseg-5.4.0/docs/source/CHANGELOG.md +425 -0
- axondeepseg-5.4.0/docs/source/_extensions/__init__.py +0 -0
- axondeepseg-5.4.0/docs/source/_extensions/model_cards_ext.py +90 -0
- axondeepseg-5.4.0/docs/source/_static/.gitkeep +0 -0
- axondeepseg-5.4.0/docs/source/_static/css/custom.css +11 -0
- axondeepseg-5.4.0/docs/source/_static/logo_ads-alpha.png +0 -0
- axondeepseg-5.4.0/docs/source/_static/logo_ads-alpha.svg +439 -0
- axondeepseg-5.4.0/docs/source/_static/logo_ads.pdf +0 -0
- axondeepseg-5.4.0/docs/source/_static/logo_ads.png +0 -0
- axondeepseg-5.4.0/docs/source/_templates/.gitkeep +0 -0
- axondeepseg-5.4.0/docs/source/conf.py +193 -0
- axondeepseg-5.4.0/docs/source/documentation.rst +917 -0
- axondeepseg-5.4.0/docs/source/index.rst +72 -0
- axondeepseg-5.4.0/docs/source/license_contributors.rst +17 -0
- axondeepseg-5.4.0/docs/source/requirements.txt +5 -0
- axondeepseg-5.4.0/install_ads +717 -0
- axondeepseg-5.4.0/install_ads.bat +234 -0
- axondeepseg-5.4.0/pyproject.toml +88 -0
- axondeepseg-5.4.0/pytest.ini +5 -0
- axondeepseg-5.4.0/setup.cfg +4 -0
- axondeepseg-5.4.0/test/ads_napari/__init__.py +0 -0
- axondeepseg-5.4.0/test/ads_napari/test_widget.py +434 -0
- axondeepseg-5.4.0/test/morphometrics/test_aggregate.py +53 -0
- axondeepseg-5.4.0/test/morphometrics/test_compute_morphometrics.py +1099 -0
- axondeepseg-5.4.0/test/morphometrics/test_launch_morphometrics_computation.py +400 -0
- axondeepseg-5.4.0/test/test_ads_utils.py +300 -0
- axondeepseg-5.4.0/test/test_apply_model.py +156 -0
- axondeepseg-5.4.0/test/test_download_models.py +142 -0
- axondeepseg-5.4.0/test/test_download_tests.py +116 -0
- axondeepseg-5.4.0/test/test_integrity_test.py +17 -0
- axondeepseg-5.4.0/test/test_model_cards.py +30 -0
- axondeepseg-5.4.0/test/test_params.py +34 -0
- axondeepseg-5.4.0/test/test_postprocessing.py +118 -0
- axondeepseg-5.4.0/test/test_segment.py +297 -0
- axondeepseg-5.4.0/test/testing/test_launch_performance_metrics.py +30 -0
- axondeepseg-5.4.0/test/testing/test_segmentation_scoring.py +181 -0
- axondeepseg-5.4.0/test/visualization/test_colorization.py +85 -0
- axondeepseg-5.4.0/test/visualization/test_merge_masks.py +51 -0
- axondeepseg-5.4.0/test/visualization/test_simulate_axons.py +186 -0
- axondeepseg-5.4.0/tox.ini +32 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Create a report to help us fix a software bug
|
|
4
|
+
title: ''
|
|
5
|
+
labels: category:BUG
|
|
6
|
+
assignees: ''
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
<!-- Use this form to report software defects (inaccurate/erratic behavior, crashes, etc.).
|
|
10
|
+
If you have questions about using the software or are encountering difficulties with installation, please create a topic in the forum (see the "Discussions" tab at the top of this page). -->
|
|
11
|
+
|
|
12
|
+
**Describe the bug**
|
|
13
|
+
A clear and concise description of what the bug is.
|
|
14
|
+
Feel free to add screenshots to illustrate the problem!
|
|
15
|
+
|
|
16
|
+
**To Reproduce**
|
|
17
|
+
<!--
|
|
18
|
+
Please try to reproduce your issue using "./AxonDeepSeg/data_test" as inputs, and to provide a sequence of commands that can reproduce it.
|
|
19
|
+
If this is not possible, try to isolate a minimal input on which the issue happens (e.g. one file among a dataset) and provide this file publicly. If the data can't be shared publicly, please coordinate with @jcohenadad in private.
|
|
20
|
+
-->
|
|
21
|
+
Steps to reproduce the behavior:
|
|
22
|
+
|
|
23
|
+
1. Go to '...'
|
|
24
|
+
2. Click on '....'
|
|
25
|
+
3. Scroll down to '....'
|
|
26
|
+
4. See "Error 1955: Out of Time"
|
|
27
|
+
|
|
28
|
+
**Platform (please complete the following information):**
|
|
29
|
+
- OS: [e.g. Mac OS "Flaming Flamingo", Fedora 99, Ubuntu 48.04]
|
|
30
|
+
- AxonDeepSeg version number [e.g. 3.2.0, git master, etc.]
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Describe a well-defined idea of a how a new functionality should work
|
|
4
|
+
title: ''
|
|
5
|
+
labels: category:FEATURE
|
|
6
|
+
assignees: ''
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
<!--
|
|
10
|
+
Use this form to describe a well-defined new feature that should be added to the software.
|
|
11
|
+
If your idea is not fully fleshed out yet, consider brainstorming with us by creating a topic in the forum (see the "Discussions" tab at the top of this page) before making a formal feature request here.
|
|
12
|
+
-->
|
|
13
|
+
**Describe the problem**
|
|
14
|
+
If possible, provide references to any discussions or theoretical work to help the reader better understand the feature.
|
|
15
|
+
Feel free to add screenshots and mockups to illustrate the problem!
|
|
16
|
+
|
|
17
|
+
**Proposed solution**
|
|
18
|
+
A clear and concise description of what you want to happen, ideally as a result of an existing discussion or design work.
|
|
19
|
+
|
|
20
|
+
Provide a "usage scenario", imagining how the feature would be used in practice (ideally inputs, a sequence of commands, and the desired outcome).
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
## Checklist
|
|
2
|
+
|
|
3
|
+
- [ ] I've given this PR a concise, self-descriptive, and meaningful title
|
|
4
|
+
- [ ] I've linked relevant issues in the PR body
|
|
5
|
+
- [ ] I've applied [the relevant labels](https://intranet.neuro.polymtl.ca/geek-tips/contributing#pr-labels-a-href-pr-labels-id-pr-labels-a) to this PR
|
|
6
|
+
- [ ] I've added relevant tests for my contribution
|
|
7
|
+
- [ ] I've updated the documentation and/or added correct docstrings
|
|
8
|
+
- [ ] I've assigned a reviewer
|
|
9
|
+
- [ ] I've consulted [ADS's internal developer documentation](https://github.com/neuropoly/axondeepseg/wiki/Guidelines-for-contribution) to ensure my contribution is in line with any relevant design decisions
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
<!--- For the title, please observe the following rules:
|
|
13
|
+
- Provide a concise and self-descriptive title
|
|
14
|
+
- Do not include the applicable issue number in the title, do it in the PR body
|
|
15
|
+
- If the PR is not ready for review, convert it to a draft.
|
|
16
|
+
-->
|
|
17
|
+
|
|
18
|
+
## Description
|
|
19
|
+
<!-- describe what the PR is about. Explain the approach and possible drawbacks.It's ok to repeat some text from the related issue. -->
|
|
20
|
+
|
|
21
|
+
## Linked issues
|
|
22
|
+
<!-- If the PR fixes any issues, indicate it here with issue-closing keywords: e.g. Resolves #XX, Fixes #XX, Addresses #XX. Note that if you want multiple issues to be autoclosed on PR merge, you must use the issue-closing verb before each relevant issue: e.g. Resolves #1, Resolves #2 -->
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
|
|
2
|
+
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
|
|
3
|
+
|
|
4
|
+
# Official DOc on GitHub Workflow Syntax: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
|
|
5
|
+
|
|
6
|
+
# Conda based env testing: https://github.com/conda-incubator/setup-miniconda
|
|
7
|
+
name: Run tests on pypi install
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
|
|
11
|
+
# Trigger the workflow on push but only for the master branch
|
|
12
|
+
push:
|
|
13
|
+
branches:
|
|
14
|
+
- master
|
|
15
|
+
- 'release/**'
|
|
16
|
+
|
|
17
|
+
# Trigger current workflow on PR from ANY branch
|
|
18
|
+
pull_request:
|
|
19
|
+
types: [opened, reopened, synchronize]
|
|
20
|
+
branches:
|
|
21
|
+
- 'release/**'
|
|
22
|
+
|
|
23
|
+
# Cron based trigger
|
|
24
|
+
schedule:
|
|
25
|
+
# https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#onschedule
|
|
26
|
+
# i.e. this runs every day at 4:33AM for the master branch.
|
|
27
|
+
- cron: '33 4 * * *'
|
|
28
|
+
|
|
29
|
+
env:
|
|
30
|
+
# Even when given -y, apt will still sometimes hang at a prompt if a package
|
|
31
|
+
# has clarifications to ask; DEBIAN_FRONTEND=noninteractive prevents that,
|
|
32
|
+
# This will be defined for non-debian platforms below too, but there's no harm in that.
|
|
33
|
+
# (TravisCI quietly defined this on all their platforms, but we have to give it manually on GithubCI.)
|
|
34
|
+
DEBIAN_FRONTEND: 'noninteractive'
|
|
35
|
+
|
|
36
|
+
jobs:
|
|
37
|
+
pypi_package_tests:
|
|
38
|
+
name: PyPi Package test for Python ${{ matrix.python-version }} on ${{ matrix.os }}
|
|
39
|
+
|
|
40
|
+
# Matrix driven OS
|
|
41
|
+
runs-on: ${{ matrix.os }}
|
|
42
|
+
|
|
43
|
+
# Defining matrix for OS and Python
|
|
44
|
+
strategy:
|
|
45
|
+
fail-fast: false
|
|
46
|
+
matrix:
|
|
47
|
+
os: [ "ubuntu-latest", "macos-latest", "windows-latest"]
|
|
48
|
+
python-version: [ "3.11", "3.12"]
|
|
49
|
+
|
|
50
|
+
# Main steps for the test to be reproduced across OS x Python
|
|
51
|
+
steps:
|
|
52
|
+
# Step 1: Checkout code.
|
|
53
|
+
- uses: actions/checkout@v2
|
|
54
|
+
- uses: actions/setup-python@v5
|
|
55
|
+
with:
|
|
56
|
+
python-version: ${{ matrix.python-version }}
|
|
57
|
+
|
|
58
|
+
# Step 2: Install environment.
|
|
59
|
+
- name: Install Latest pypi version of AxonDeepSeg
|
|
60
|
+
run: |
|
|
61
|
+
pip install --upgrade pip
|
|
62
|
+
pip install axondeepseg==5.4.0 --no-cache-dir
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
# Step 2a: Modify MKL_THREADING_LAYER (Ubuntu only)
|
|
66
|
+
# See https://github.com/pytorch/pytorch/issues/37377#issuecomment-629530272
|
|
67
|
+
- name: Set MKL_THREADING_LAYER
|
|
68
|
+
if: matrix.os == 'ubuntu-latest'
|
|
69
|
+
run: |
|
|
70
|
+
echo "MKL_THREADING_LAYER=GNU" >> $GITHUB_ENV
|
|
71
|
+
|
|
72
|
+
# Step 3: Full PyTest
|
|
73
|
+
- name: Test with pytest (Unix)
|
|
74
|
+
if: ${{ (matrix.os == 'ubuntu-latest') || (matrix.os == 'macos-latest' && matrix.python-version == '3.11') }}
|
|
75
|
+
run: |
|
|
76
|
+
|
|
77
|
+
git pull --all
|
|
78
|
+
|
|
79
|
+
git checkout $( git tag | tail -1)
|
|
80
|
+
|
|
81
|
+
rm -rf ./AxonDeepSeg/
|
|
82
|
+
|
|
83
|
+
python -c "import AxonDeepSeg.download_tests as download_tests; download_tests.main()"
|
|
84
|
+
python -c "import AxonDeepSeg.download_tests as download_tests; download_tests.main(['-d', './test/'])"
|
|
85
|
+
python -c "import AxonDeepSeg.download_model as download_model; download_model.main()"
|
|
86
|
+
python -c "import AxonDeepSeg.download_model as download_model; download_model.main(['-d', './AxonDeepSeg/models'])"
|
|
87
|
+
|
|
88
|
+
pytest ./ -v
|
|
89
|
+
echo "All done!"
|
|
90
|
+
exit 0
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
- name: Test with pytest (Windows)
|
|
95
|
+
if: runner.os == 'Windows'
|
|
96
|
+
shell: cmd
|
|
97
|
+
run: |
|
|
98
|
+
|
|
99
|
+
for /f %%i in ('git tag') do set LATEST_TAG=%%i
|
|
100
|
+
git checkout %LATEST_TAG%
|
|
101
|
+
|
|
102
|
+
rmdir ./AxonDeepSeg/
|
|
103
|
+
|
|
104
|
+
python -c "import AxonDeepSeg.download_tests as download_tests; download_tests.main()"
|
|
105
|
+
python -c "import AxonDeepSeg.download_tests as download_tests; download_tests.main(['-d', './test/'])"
|
|
106
|
+
python -c "import AxonDeepSeg.download_model as download_model; download_model.main()"
|
|
107
|
+
python -c "import AxonDeepSeg.download_model as download_model; download_model.main(['-d', './AxonDeepSeg/models'])"
|
|
108
|
+
|
|
109
|
+
pytest.exe ./ -v
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
# This step is MANDATORY and used to indicate matrix completion to coveralls.io
|
|
113
|
+
# See here: https://coveralls-python.readthedocs.io/en/latest/usage/configuration.html#github-actions-support
|
|
114
|
+
finish:
|
|
115
|
+
needs: [pypi_package_tests]
|
|
116
|
+
if: ${{ always() }}
|
|
117
|
+
runs-on: ubuntu-latest
|
|
118
|
+
steps:
|
|
119
|
+
- uses: actions/setup-python@v5
|
|
120
|
+
with:
|
|
121
|
+
python-version: '3.x'
|
|
122
|
+
- name: Pypi install test finished
|
|
123
|
+
run: echo "Tests comlete!"
|
|
124
|
+
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
|
|
2
|
+
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
|
|
3
|
+
|
|
4
|
+
# Official DOc on GitHub Workflow Syntax: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
|
|
5
|
+
|
|
6
|
+
# Conda based env testing: https://github.com/conda-incubator/setup-miniconda
|
|
7
|
+
name: Run tests
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
|
|
11
|
+
# Trigger the workflow on push but only for the master branch
|
|
12
|
+
push:
|
|
13
|
+
branches:
|
|
14
|
+
- master
|
|
15
|
+
|
|
16
|
+
# Trigger current workflow on PR from ANY branch
|
|
17
|
+
pull_request:
|
|
18
|
+
branches:
|
|
19
|
+
- '**'
|
|
20
|
+
|
|
21
|
+
# Cron based trigger
|
|
22
|
+
schedule:
|
|
23
|
+
# https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#onschedule
|
|
24
|
+
# i.e. this runs every day at 4:33AM for the master branch.
|
|
25
|
+
- cron: '33 4 * * *'
|
|
26
|
+
|
|
27
|
+
env:
|
|
28
|
+
# Even when given -y, apt will still sometimes hang at a prompt if a package
|
|
29
|
+
# has clarifications to ask; DEBIAN_FRONTEND=noninteractive prevents that,
|
|
30
|
+
# This will be defined for non-debian platforms below too, but there's no harm in that.
|
|
31
|
+
# (TravisCI quietly defined this on all their platforms, but we have to give it manually on GithubCI.)
|
|
32
|
+
DEBIAN_FRONTEND: 'noninteractive'
|
|
33
|
+
VISPY_GL_BACKEND: 'osmesa'
|
|
34
|
+
|
|
35
|
+
jobs:
|
|
36
|
+
ultra_matrix_test:
|
|
37
|
+
name: Matrix Test of Python ${{ matrix.python-version }} on ${{ matrix.os }}
|
|
38
|
+
|
|
39
|
+
# Matrix driven OS
|
|
40
|
+
runs-on: ${{ matrix.os }}
|
|
41
|
+
|
|
42
|
+
# Default shell for ALL subsequent steps.
|
|
43
|
+
defaults:
|
|
44
|
+
run:
|
|
45
|
+
shell: bash -l {0}
|
|
46
|
+
|
|
47
|
+
# Defining matrix for OS and Python
|
|
48
|
+
strategy:
|
|
49
|
+
fail-fast: false
|
|
50
|
+
matrix:
|
|
51
|
+
os: [ "ubuntu-latest", "macos-latest", "windows-latest"]
|
|
52
|
+
python-version: [ ">=3.11" ]
|
|
53
|
+
|
|
54
|
+
# Main steps for the test to be reproduced across OS x Python
|
|
55
|
+
steps:
|
|
56
|
+
# Step 0: Checkout code.
|
|
57
|
+
- uses: actions/checkout@v2
|
|
58
|
+
|
|
59
|
+
# Step 1: List main repo by time modified, and print path
|
|
60
|
+
- name: List all current repository files and modification date
|
|
61
|
+
# Parameters.
|
|
62
|
+
run: |
|
|
63
|
+
ls -lasth
|
|
64
|
+
pwd
|
|
65
|
+
|
|
66
|
+
# Step 2: Install environment.
|
|
67
|
+
- name: Install ADS from release branch (Unix)
|
|
68
|
+
if: runner.os != 'Windows'
|
|
69
|
+
run: ./install_ads -y
|
|
70
|
+
- name: Install ADS from release branch (Windows)
|
|
71
|
+
if: runner.os == 'Windows'
|
|
72
|
+
shell: cmd
|
|
73
|
+
run: install_ads.bat
|
|
74
|
+
|
|
75
|
+
# Step 2a: Modify MKL_THREADING_LAYER (Ubuntu only)
|
|
76
|
+
# See https://github.com/pytorch/pytorch/issues/37377#issuecomment-629530272
|
|
77
|
+
- name: Set MKL_THREADING_LAYER
|
|
78
|
+
if: matrix.os == 'ubuntu-latest'
|
|
79
|
+
run: |
|
|
80
|
+
echo "MKL_THREADING_LAYER=GNU" >> $GITHUB_ENV
|
|
81
|
+
|
|
82
|
+
# Step 2b: Add ADS to the PATH
|
|
83
|
+
- name: Update environment variables
|
|
84
|
+
# NB: I'm not sure what GHA's syntax is for cmd.exe, so we use bash just for this one change
|
|
85
|
+
# In a user install, the user would perform this step using the Windows PATH-changing GUI.
|
|
86
|
+
run: |
|
|
87
|
+
if [ "$RUNNER_OS" == "Windows" ]; then
|
|
88
|
+
echo "${GITHUB_WORKSPACE}" >> $ADS_DIR
|
|
89
|
+
echo "${GITHUB_WORKSPACE}\bin" >> $GITHUB_PATH
|
|
90
|
+
else
|
|
91
|
+
# NB: install_ads edits ~/.bashrc, but those environment changes don't get passed to subsequent steps in GH Actions.
|
|
92
|
+
# So, we filter through the .bashrc and pass the values to $GITHUB_ENV and $GITHUB_PATH.
|
|
93
|
+
# Relevant documentation: https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#environment-files
|
|
94
|
+
cat ~/.bashrc | grep "export ADS_DIR" | cut -d " " -f 2 >> $GITHUB_ENV
|
|
95
|
+
cat ~/.bashrc | grep "export PATH" | grep -o "/.*" | cut -d ':' -f 1 >> $GITHUB_PATH
|
|
96
|
+
fi
|
|
97
|
+
|
|
98
|
+
# Step 3: Full PyTest
|
|
99
|
+
- name: Test with pytest (Unix)
|
|
100
|
+
if: runner.os != 'Windows'
|
|
101
|
+
run: |
|
|
102
|
+
source ads_conda/bin/activate ads_conda/envs/venv_ads
|
|
103
|
+
pytest ./test/ -v --cov AxonDeepSeg/ --cov-report=lcov
|
|
104
|
+
- name: Test with pytest (Windows)
|
|
105
|
+
if: runner.os == 'Windows'
|
|
106
|
+
shell: cmd
|
|
107
|
+
run: |
|
|
108
|
+
CALL ads_conda\Scripts\activate.bat ads_conda\envs\venv_ads
|
|
109
|
+
pytest.exe ./test/ -v --cov AxonDeepSeg/ --cov-report=lcov
|
|
110
|
+
# Step 4: Submnit to coveralls
|
|
111
|
+
- name: Submit to coveralls
|
|
112
|
+
uses: coverallsapp/github-action@v2
|
|
113
|
+
with:
|
|
114
|
+
flag-name: ${{ matrix.os }}
|
|
115
|
+
parallel: true
|
|
116
|
+
|
|
117
|
+
# This step is MANDATORY and used to indicate matrix completion to coveralls.io
|
|
118
|
+
# See here: https://coveralls-python.readthedocs.io/en/latest/usage/configuration.html#github-actions-support
|
|
119
|
+
finish:
|
|
120
|
+
needs: [ultra_matrix_test]
|
|
121
|
+
if: ${{ always() }}
|
|
122
|
+
runs-on: ubuntu-latest
|
|
123
|
+
steps:
|
|
124
|
+
- name: Coveralls Finished
|
|
125
|
+
uses: coverallsapp/github-action@v2
|
|
126
|
+
with:
|
|
127
|
+
github-token: ${{ secrets.github_token }}
|
|
128
|
+
parallel-finished: true
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Can ignore ADS specific files/folders
|
|
2
|
+
AxonDeepSeg\.egg-info/
|
|
3
|
+
|
|
4
|
+
AxonDeepSeg/.adsconfig
|
|
5
|
+
|
|
6
|
+
build/
|
|
7
|
+
|
|
8
|
+
dist/
|
|
9
|
+
|
|
10
|
+
config/
|
|
11
|
+
|
|
12
|
+
\.idea/
|
|
13
|
+
|
|
14
|
+
*.pyc
|
|
15
|
+
|
|
16
|
+
*.png
|
|
17
|
+
|
|
18
|
+
data/
|
|
19
|
+
|
|
20
|
+
guidelines/.ipynb_checkpoints/
|
|
21
|
+
|
|
22
|
+
summaries/
|
|
23
|
+
|
|
24
|
+
trainingset/
|
|
25
|
+
|
|
26
|
+
guidelines/test_weights\.ipynb
|
|
27
|
+
|
|
28
|
+
notebooks/\.ipynb_checkpoints/
|
|
29
|
+
|
|
30
|
+
notebooks/test_weights\.ipynb
|
|
31
|
+
|
|
32
|
+
AxonDeepSeg/models
|
|
33
|
+
|
|
34
|
+
models/
|
|
35
|
+
|
|
36
|
+
test/__test_files__
|
|
37
|
+
|
|
38
|
+
tmp/
|
|
39
|
+
|
|
40
|
+
*.log
|
|
41
|
+
|
|
42
|
+
# Files generated by the new SCT-based install script
|
|
43
|
+
/bin
|
|
44
|
+
/ads_conda
|
|
45
|
+
/install_ads_log.txt
|
|
46
|
+
|
|
47
|
+
# Generated image files
|
|
48
|
+
AxonDeepSeg/data_test/AxonDeepSeg*
|
|
49
|
+
|
|
50
|
+
# Python-related temp files
|
|
51
|
+
.coverage
|
|
52
|
+
.pytest_cache/
|
|
53
|
+
.ipynb_checkpoints/
|
|
54
|
+
|
|
55
|
+
# OS-related files/folders
|
|
56
|
+
__MACOSX/
|
|
57
|
+
.DS_Store
|
|
58
|
+
.vscode/
|
|
59
|
+
|
|
60
|
+
axondeepseg.log
|
|
61
|
+
|
|
62
|
+
Pipfile
|
|
63
|
+
|
|
64
|
+
*.egg-info/
|
|
65
|
+
qa_test/
|
|
66
|
+
|
|
67
|
+
docs/source/_generated_models.rst
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# .readthedocs.yml
|
|
2
|
+
# Read the Docs configuration file
|
|
3
|
+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
|
4
|
+
|
|
5
|
+
# Required
|
|
6
|
+
version: 2
|
|
7
|
+
|
|
8
|
+
build:
|
|
9
|
+
os: "ubuntu-22.04"
|
|
10
|
+
tools:
|
|
11
|
+
python: "3.12"
|
|
12
|
+
|
|
13
|
+
# Install Sphinx/RTD requirements
|
|
14
|
+
python:
|
|
15
|
+
install:
|
|
16
|
+
- requirements: docs/source/requirements.txt
|
|
17
|
+
|
|
18
|
+
# Build documentation in the docs/ directory with Sphinx
|
|
19
|
+
sphinx:
|
|
20
|
+
configuration: docs/source/conf.py
|
|
21
|
+
fail_on_warning: true
|
|
22
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import sys
|
|
3
|
+
|
|
4
|
+
__name__ = "AxonDeepSeg"
|
|
5
|
+
|
|
6
|
+
version_file = os.path.abspath(os.path.join(__file__, os.pardir, "version.txt"))
|
|
7
|
+
with open(version_file, 'r') as f:
|
|
8
|
+
__version__ = f.read().rstrip()
|
|
9
|
+
|
|
10
|
+
# make sure repo directory (two directories up) is on path (to access config.py)
|
|
11
|
+
__repo_dir__ = os.path.abspath(os.path.join(__file__, os.pardir, os.pardir))
|
|
12
|
+
sys.path.append(__repo_dir__)
|
|
13
|
+
|
|
14
|
+
# verify that the repo was downloaded with `git clone`
|
|
15
|
+
if os.path.exists(os.path.join(__repo_dir__, ".git")):
|
|
16
|
+
import subprocess
|
|
17
|
+
__git_sha1__ = subprocess.check_output(["git", "-C", __repo_dir__, "rev-parse", "HEAD"]).decode("utf-8").rstrip()
|
|
18
|
+
else:
|
|
19
|
+
__git_sha1__ = "unknown commit"
|
|
20
|
+
__version_string__ = f"AxonDeepSeg v{__version__} - {__git_sha1__}"
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<ui version="4.0">
|
|
3
|
+
<class>Settings_menu_ui</class>
|
|
4
|
+
<widget class="QWidget" name="Settings_menu_ui">
|
|
5
|
+
<property name="windowModality">
|
|
6
|
+
<enum>Qt::WindowModal</enum>
|
|
7
|
+
</property>
|
|
8
|
+
<property name="geometry">
|
|
9
|
+
<rect>
|
|
10
|
+
<x>0</x>
|
|
11
|
+
<y>0</y>
|
|
12
|
+
<width>399</width>
|
|
13
|
+
<height>209</height>
|
|
14
|
+
</rect>
|
|
15
|
+
</property>
|
|
16
|
+
<property name="windowTitle">
|
|
17
|
+
<string>Settings menu</string>
|
|
18
|
+
</property>
|
|
19
|
+
<layout class="QVBoxLayout" name="verticalLayout">
|
|
20
|
+
<item>
|
|
21
|
+
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
|
22
|
+
<item>
|
|
23
|
+
<widget class="QLabel" name="label_5">
|
|
24
|
+
<property name="text">
|
|
25
|
+
<string>GPU ID</string>
|
|
26
|
+
</property>
|
|
27
|
+
</widget>
|
|
28
|
+
</item>
|
|
29
|
+
<item>
|
|
30
|
+
<widget class="QSpinBox" name="gpu_id_spinBox"/>
|
|
31
|
+
</item>
|
|
32
|
+
</layout>
|
|
33
|
+
</item>
|
|
34
|
+
<item>
|
|
35
|
+
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
|
36
|
+
<item>
|
|
37
|
+
<widget class="QLabel" name="label_4">
|
|
38
|
+
<property name="text">
|
|
39
|
+
<string>Axon Shape</string>
|
|
40
|
+
</property>
|
|
41
|
+
</widget>
|
|
42
|
+
</item>
|
|
43
|
+
<item>
|
|
44
|
+
<widget class="QComboBox" name="axon_shape_comboBox">
|
|
45
|
+
<item>
|
|
46
|
+
<property name="text">
|
|
47
|
+
<string>circle</string>
|
|
48
|
+
</property>
|
|
49
|
+
</item>
|
|
50
|
+
<item>
|
|
51
|
+
<property name="text">
|
|
52
|
+
<string>ellipse</string>
|
|
53
|
+
</property>
|
|
54
|
+
</item>
|
|
55
|
+
</widget>
|
|
56
|
+
</item>
|
|
57
|
+
</layout>
|
|
58
|
+
</item>
|
|
59
|
+
<item>
|
|
60
|
+
<widget class="QPushButton" name="done_button">
|
|
61
|
+
<property name="text">
|
|
62
|
+
<string>Done</string>
|
|
63
|
+
</property>
|
|
64
|
+
</widget>
|
|
65
|
+
</item>
|
|
66
|
+
<item>
|
|
67
|
+
<spacer name="verticalSpacer">
|
|
68
|
+
<property name="orientation">
|
|
69
|
+
<enum>Qt::Vertical</enum>
|
|
70
|
+
</property>
|
|
71
|
+
<property name="sizeHint" stdset="0">
|
|
72
|
+
<size>
|
|
73
|
+
<width>20</width>
|
|
74
|
+
<height>40</height>
|
|
75
|
+
</size>
|
|
76
|
+
</property>
|
|
77
|
+
</spacer>
|
|
78
|
+
</item>
|
|
79
|
+
</layout>
|
|
80
|
+
</widget>
|
|
81
|
+
<resources/>
|
|
82
|
+
<connections/>
|
|
83
|
+
</ui>
|