pumpia 0.1.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.
- pumpia-0.1.0/.github/workflows/main.yml +34 -0
- pumpia-0.1.0/.github/workflows/publish.yml +32 -0
- pumpia-0.1.0/.gitignore +116 -0
- pumpia-0.1.0/LICENSE +29 -0
- pumpia-0.1.0/PKG-INFO +52 -0
- pumpia-0.1.0/README.md +25 -0
- pumpia-0.1.0/docs/Makefile +20 -0
- pumpia-0.1.0/docs/make.bat +35 -0
- pumpia-0.1.0/docs/source/components/components.rst +35 -0
- pumpia-0.1.0/docs/source/components/images.rst +10 -0
- pumpia-0.1.0/docs/source/components/manager.rst +4 -0
- pumpia-0.1.0/docs/source/components/rois.rst +14 -0
- pumpia-0.1.0/docs/source/components/viewers.rst +14 -0
- pumpia-0.1.0/docs/source/conf.py +31 -0
- pumpia-0.1.0/docs/source/file_handling/dicom_tags.rst +10 -0
- pumpia-0.1.0/docs/source/file_handling/dicoms.rst +10 -0
- pumpia-0.1.0/docs/source/file_handling/file_handling.rst +29 -0
- pumpia-0.1.0/docs/source/index.rst +46 -0
- pumpia-0.1.0/docs/source/usage/collections.rst +7 -0
- pumpia-0.1.0/docs/source/usage/context.rst +35 -0
- pumpia-0.1.0/docs/source/usage/example.rst +138 -0
- pumpia-0.1.0/docs/source/usage/module_ios/groups.rst +3 -0
- pumpia-0.1.0/docs/source/usage/module_ios/module_ios.rst +55 -0
- pumpia-0.1.0/docs/source/usage/module_ios/roi_ios.rst +15 -0
- pumpia-0.1.0/docs/source/usage/module_ios/simple.rst +29 -0
- pumpia-0.1.0/docs/source/usage/module_ios/viewer_ios.rst +13 -0
- pumpia-0.1.0/docs/source/usage/modules.rst +6 -0
- pumpia-0.1.0/docs/source/usage/usage.rst +69 -0
- pumpia-0.1.0/docs/source/utilities/array_utils.rst +36 -0
- pumpia-0.1.0/docs/source/utilities/feature_utils.rst +16 -0
- pumpia-0.1.0/docs/source/utilities/string_validators.rst +14 -0
- pumpia-0.1.0/docs/source/utilities/tk_utilities.rst +5 -0
- pumpia-0.1.0/docs/source/utilities/utilities.rst +28 -0
- pumpia-0.1.0/docs/source/widgets/entry_boxes.rst +10 -0
- pumpia-0.1.0/docs/source/widgets/scrolled_window.rst +4 -0
- pumpia-0.1.0/docs/source/widgets/widgets.rst +18 -0
- pumpia-0.1.0/pumpia/__init__.py +0 -0
- pumpia-0.1.0/pumpia/contrib/__init__.py +0 -0
- pumpia-0.1.0/pumpia/contrib/example/__init__.py +0 -0
- pumpia-0.1.0/pumpia/contrib/example/collection.py +61 -0
- pumpia-0.1.0/pumpia/contrib/example/example.py +136 -0
- pumpia-0.1.0/pumpia/contrib/example/module.py +72 -0
- pumpia-0.1.0/pumpia/file_handling/__init__.py +0 -0
- pumpia-0.1.0/pumpia/file_handling/dicom_structures.py +985 -0
- pumpia-0.1.0/pumpia/file_handling/dicom_tags.py +775 -0
- pumpia-0.1.0/pumpia/image_handling/__init__.py +0 -0
- pumpia-0.1.0/pumpia/image_handling/image_structures.py +714 -0
- pumpia-0.1.0/pumpia/image_handling/image_validators.py +24 -0
- pumpia-0.1.0/pumpia/image_handling/roi_structures.py +2423 -0
- pumpia-0.1.0/pumpia/module_handling/__init__.py +0 -0
- pumpia-0.1.0/pumpia/module_handling/context.py +118 -0
- pumpia-0.1.0/pumpia/module_handling/in_outs/__init__.py +0 -0
- pumpia-0.1.0/pumpia/module_handling/in_outs/groups.py +30 -0
- pumpia-0.1.0/pumpia/module_handling/in_outs/roi_ios.py +324 -0
- pumpia-0.1.0/pumpia/module_handling/in_outs/simple.py +632 -0
- pumpia-0.1.0/pumpia/module_handling/in_outs/viewer_ios.py +102 -0
- pumpia-0.1.0/pumpia/module_handling/manager.py +893 -0
- pumpia-0.1.0/pumpia/module_handling/module_collections.py +793 -0
- pumpia-0.1.0/pumpia/module_handling/modules.py +844 -0
- pumpia-0.1.0/pumpia/utilities/__init__.py +0 -0
- pumpia-0.1.0/pumpia/utilities/array_utils.py +557 -0
- pumpia-0.1.0/pumpia/utilities/dicom_utils.py +82 -0
- pumpia-0.1.0/pumpia/utilities/feature_utils.py +401 -0
- pumpia-0.1.0/pumpia/utilities/string_validators.py +101 -0
- pumpia-0.1.0/pumpia/utilities/tkinter_utils.py +83 -0
- pumpia-0.1.0/pumpia/utilities/typing.py +6 -0
- pumpia-0.1.0/pumpia/widgets/__init__.py +0 -0
- pumpia-0.1.0/pumpia/widgets/context_managers.py +988 -0
- pumpia-0.1.0/pumpia/widgets/entry_boxes.py +553 -0
- pumpia-0.1.0/pumpia/widgets/scrolled_window.py +216 -0
- pumpia-0.1.0/pumpia/widgets/tables.py +305 -0
- pumpia-0.1.0/pumpia/widgets/typing.py +39 -0
- pumpia-0.1.0/pumpia/widgets/variables.py +54 -0
- pumpia-0.1.0/pumpia/widgets/viewers.py +1493 -0
- pumpia-0.1.0/pyproject.toml +37 -0
- pumpia-0.1.0/requirements.txt +5 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: documentation
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
release:
|
|
6
|
+
types: [published]
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
docs:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v4
|
|
16
|
+
- uses: actions/setup-python@v5
|
|
17
|
+
with:
|
|
18
|
+
python-version: '3.12'
|
|
19
|
+
- name: Install pumpia dependencies
|
|
20
|
+
run: |
|
|
21
|
+
pip install -r requirements.txt
|
|
22
|
+
- name: Install dependencies
|
|
23
|
+
run: |
|
|
24
|
+
pip install sphinx sphinx_rtd_theme
|
|
25
|
+
- name: Sphinx build
|
|
26
|
+
run: |
|
|
27
|
+
sphinx-build docs/source docs/_build
|
|
28
|
+
- name: Deploy to GitHub Pages
|
|
29
|
+
uses: peaceiris/actions-gh-pages@v4
|
|
30
|
+
with:
|
|
31
|
+
publish_branch: gh-pages
|
|
32
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
33
|
+
publish_dir: docs/_build
|
|
34
|
+
force_orphan: true
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: Upload Python Package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
release:
|
|
6
|
+
types: [published]
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
deploy:
|
|
13
|
+
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
- name: Set up Python
|
|
19
|
+
uses: actions/setup-python@v5
|
|
20
|
+
with:
|
|
21
|
+
python-version: '3.12'
|
|
22
|
+
- name: Install dependencies
|
|
23
|
+
run: |
|
|
24
|
+
python -m pip install --upgrade pip
|
|
25
|
+
pip install build
|
|
26
|
+
- name: Build package
|
|
27
|
+
run: python -m build
|
|
28
|
+
- name: Publish package
|
|
29
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
30
|
+
with:
|
|
31
|
+
user: __token__
|
|
32
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
pumpia-0.1.0/.gitignore
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Editor temporary/working/backup files #
|
|
2
|
+
#########################################
|
|
3
|
+
.#*
|
|
4
|
+
[#]*#
|
|
5
|
+
*~
|
|
6
|
+
*$
|
|
7
|
+
*.bak
|
|
8
|
+
*.diff
|
|
9
|
+
.idea/
|
|
10
|
+
*.iml
|
|
11
|
+
*.ipr
|
|
12
|
+
*.iws
|
|
13
|
+
*.org
|
|
14
|
+
.project
|
|
15
|
+
pmip
|
|
16
|
+
*.rej
|
|
17
|
+
.settings/
|
|
18
|
+
.*.sw[nop]
|
|
19
|
+
.sw[nop]
|
|
20
|
+
*.tmp
|
|
21
|
+
*.vim
|
|
22
|
+
.vscode
|
|
23
|
+
tags
|
|
24
|
+
cscope.out
|
|
25
|
+
# gnu global
|
|
26
|
+
GPATH
|
|
27
|
+
GRTAGS
|
|
28
|
+
GSYMS
|
|
29
|
+
GTAGS
|
|
30
|
+
.cache
|
|
31
|
+
.mypy_cache/
|
|
32
|
+
|
|
33
|
+
# Compiled source #
|
|
34
|
+
###################
|
|
35
|
+
*.a
|
|
36
|
+
*.com
|
|
37
|
+
*.class
|
|
38
|
+
*.dll
|
|
39
|
+
*.exe
|
|
40
|
+
*.o
|
|
41
|
+
*.o.d
|
|
42
|
+
*.py[ocd]
|
|
43
|
+
*.so
|
|
44
|
+
*.mod
|
|
45
|
+
|
|
46
|
+
# Packages #
|
|
47
|
+
############
|
|
48
|
+
# it's better to unpack these files and commit the raw source
|
|
49
|
+
# git has its own built in compression methods
|
|
50
|
+
*.7z
|
|
51
|
+
*.bz2
|
|
52
|
+
*.bzip2
|
|
53
|
+
*.dmg
|
|
54
|
+
*.gz
|
|
55
|
+
*.iso
|
|
56
|
+
*.jar
|
|
57
|
+
*.rar
|
|
58
|
+
*.tar
|
|
59
|
+
*.tbz2
|
|
60
|
+
*.tgz
|
|
61
|
+
*.zip
|
|
62
|
+
|
|
63
|
+
# Python files #
|
|
64
|
+
################
|
|
65
|
+
# meson build/installation directories
|
|
66
|
+
build
|
|
67
|
+
build-install
|
|
68
|
+
# meson python output
|
|
69
|
+
.mesonpy-native-file.ini
|
|
70
|
+
# sphinx build directory
|
|
71
|
+
_build
|
|
72
|
+
# dist directory is where sdist/wheel end up
|
|
73
|
+
dist
|
|
74
|
+
doc/build
|
|
75
|
+
doc/docenv
|
|
76
|
+
doc/cdoc/build
|
|
77
|
+
# Egg metadata
|
|
78
|
+
*.egg-info
|
|
79
|
+
# The shelf plugin uses this dir
|
|
80
|
+
./.shelf
|
|
81
|
+
.cache
|
|
82
|
+
pip-wheel-metadata
|
|
83
|
+
.python-version
|
|
84
|
+
|
|
85
|
+
# Logs and databases #
|
|
86
|
+
######################
|
|
87
|
+
*.log
|
|
88
|
+
*.sql
|
|
89
|
+
*.sqlite
|
|
90
|
+
|
|
91
|
+
# Patches #
|
|
92
|
+
###########
|
|
93
|
+
*.patch
|
|
94
|
+
*.diff
|
|
95
|
+
|
|
96
|
+
# OS generated files #
|
|
97
|
+
######################
|
|
98
|
+
.DS_Store*
|
|
99
|
+
.VolumeIcon.icns
|
|
100
|
+
.fseventsd
|
|
101
|
+
Icon?
|
|
102
|
+
.gdb_history
|
|
103
|
+
ehthumbs.db
|
|
104
|
+
Thumbs.db
|
|
105
|
+
.directory
|
|
106
|
+
|
|
107
|
+
# pytest generated files #
|
|
108
|
+
##########################
|
|
109
|
+
/.pytest_cache
|
|
110
|
+
|
|
111
|
+
# doc build generated files #
|
|
112
|
+
#############################
|
|
113
|
+
doc/source/savefig/
|
|
114
|
+
doc/source/**/generated/
|
|
115
|
+
doc/source/release/notes-towncrier.rst
|
|
116
|
+
doc/source/.jupyterlite.doit.db
|
pumpia-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025, Zack Ravetz
|
|
4
|
+
All rights reserved.
|
|
5
|
+
|
|
6
|
+
Redistribution and use in source and binary forms, with or without
|
|
7
|
+
modification, are permitted provided that the following conditions are met:
|
|
8
|
+
|
|
9
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
10
|
+
list of conditions and the following disclaimer.
|
|
11
|
+
|
|
12
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
and/or other materials provided with the distribution.
|
|
15
|
+
|
|
16
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
17
|
+
contributors may be used to endorse or promote products derived from
|
|
18
|
+
this software without specific prior written permission.
|
|
19
|
+
|
|
20
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
21
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
22
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
23
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
24
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
25
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
26
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
27
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
28
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
pumpia-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pumpia
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A simple to use framework for making user interfaces for image analysis.
|
|
5
|
+
Project-URL: Homepage, https://github.com/Principle-Five/PumpIA
|
|
6
|
+
Project-URL: Source, https://github.com/Principle-Five/PumpIA
|
|
7
|
+
Project-URL: Issues, https://github.com/Principle-Five/PumpIA/issues
|
|
8
|
+
Author: Zack Ravetz et al.
|
|
9
|
+
License-Expression: BSD-3-Clause
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Classifier: Intended Audience :: Science/Research
|
|
12
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering
|
|
18
|
+
Classifier: Topic :: Scientific/Engineering :: Image Processing
|
|
19
|
+
Classifier: Topic :: Software Development
|
|
20
|
+
Requires-Python: >=3.12
|
|
21
|
+
Requires-Dist: matplotlib==3.*
|
|
22
|
+
Requires-Dist: numpy==2.*
|
|
23
|
+
Requires-Dist: pillow==11.*
|
|
24
|
+
Requires-Dist: pydicom==3.*
|
|
25
|
+
Requires-Dist: scipy==1.*
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
|
|
28
|
+
Introduction
|
|
29
|
+
------------
|
|
30
|
+
|
|
31
|
+
PumpIA is a python framework designed to allow users to visualise the analysis of images through a user interface.
|
|
32
|
+
It does not do any image analysis itself, but rather provides a platform for users to write their own analysis code and view the results.
|
|
33
|
+
This means that the full power of python and its libraries are available to the user.
|
|
34
|
+
|
|
35
|
+
Requirements
|
|
36
|
+
------------
|
|
37
|
+
PumpIA has been designed to use the minimum number of dependencies, so the user interface relies on tkinter.
|
|
38
|
+
PumpIA has the following dependencies:
|
|
39
|
+
|
|
40
|
+
* numpy
|
|
41
|
+
* scipy
|
|
42
|
+
* pillow
|
|
43
|
+
* pydicom
|
|
44
|
+
* matplotlib
|
|
45
|
+
|
|
46
|
+
Installation
|
|
47
|
+
------------
|
|
48
|
+
|
|
49
|
+
PumpIA requires python 3.12 or greater.
|
|
50
|
+
To use PumpIA, install it using pip:
|
|
51
|
+
|
|
52
|
+
pip install pumpia
|
pumpia-0.1.0/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Introduction
|
|
2
|
+
------------
|
|
3
|
+
|
|
4
|
+
PumpIA is a python framework designed to allow users to visualise the analysis of images through a user interface.
|
|
5
|
+
It does not do any image analysis itself, but rather provides a platform for users to write their own analysis code and view the results.
|
|
6
|
+
This means that the full power of python and its libraries are available to the user.
|
|
7
|
+
|
|
8
|
+
Requirements
|
|
9
|
+
------------
|
|
10
|
+
PumpIA has been designed to use the minimum number of dependencies, so the user interface relies on tkinter.
|
|
11
|
+
PumpIA has the following dependencies:
|
|
12
|
+
|
|
13
|
+
* numpy
|
|
14
|
+
* scipy
|
|
15
|
+
* pillow
|
|
16
|
+
* pydicom
|
|
17
|
+
* matplotlib
|
|
18
|
+
|
|
19
|
+
Installation
|
|
20
|
+
------------
|
|
21
|
+
|
|
22
|
+
PumpIA requires python 3.12 or greater.
|
|
23
|
+
To use PumpIA, install it using pip:
|
|
24
|
+
|
|
25
|
+
pip install pumpia
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Minimal makefile for Sphinx documentation
|
|
2
|
+
#
|
|
3
|
+
|
|
4
|
+
# You can set these variables from the command line, and also
|
|
5
|
+
# from the environment for the first two.
|
|
6
|
+
SPHINXOPTS ?=
|
|
7
|
+
SPHINXBUILD ?= sphinx-build
|
|
8
|
+
SOURCEDIR = source
|
|
9
|
+
BUILDDIR = build
|
|
10
|
+
|
|
11
|
+
# Put it first so that "make" without argument is like "make help".
|
|
12
|
+
help:
|
|
13
|
+
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
|
14
|
+
|
|
15
|
+
.PHONY: help Makefile
|
|
16
|
+
|
|
17
|
+
# Catch-all target: route all unknown targets to Sphinx using the new
|
|
18
|
+
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
|
19
|
+
%: Makefile
|
|
20
|
+
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
@ECHO OFF
|
|
2
|
+
|
|
3
|
+
pushd %~dp0
|
|
4
|
+
|
|
5
|
+
REM Command file for Sphinx documentation
|
|
6
|
+
|
|
7
|
+
if "%SPHINXBUILD%" == "" (
|
|
8
|
+
set SPHINXBUILD=sphinx-build
|
|
9
|
+
)
|
|
10
|
+
set SOURCEDIR=source
|
|
11
|
+
set BUILDDIR=_build
|
|
12
|
+
|
|
13
|
+
%SPHINXBUILD% >NUL 2>NUL
|
|
14
|
+
if errorlevel 9009 (
|
|
15
|
+
echo.
|
|
16
|
+
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
|
|
17
|
+
echo.installed, then set the SPHINXBUILD environment variable to point
|
|
18
|
+
echo.to the full path of the 'sphinx-build' executable. Alternatively you
|
|
19
|
+
echo.may add the Sphinx directory to PATH.
|
|
20
|
+
echo.
|
|
21
|
+
echo.If you don't have Sphinx installed, grab it from
|
|
22
|
+
echo.https://www.sphinx-doc.org/
|
|
23
|
+
exit /b 1
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
if "%1" == "" goto help
|
|
27
|
+
|
|
28
|
+
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
|
29
|
+
goto end
|
|
30
|
+
|
|
31
|
+
:help
|
|
32
|
+
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
|
33
|
+
|
|
34
|
+
:end
|
|
35
|
+
popd
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Core Components
|
|
2
|
+
===============
|
|
3
|
+
|
|
4
|
+
Most people will want to use PumpIA through the :doc:`modules </usage/modules>` and :doc:`collections </usage/collections>` as described in :doc:`usage </usage/usage>`,
|
|
5
|
+
however the core components and how they iteract are described for anyone who wants more control over them, or who wants to embed them in their own program.
|
|
6
|
+
|
|
7
|
+
:doc:`manager`
|
|
8
|
+
--------------
|
|
9
|
+
This is the central piece of the program, it controls the loading of all images and links all the other components together.
|
|
10
|
+
Use the manager to get the treeviews and widgets for the controls within the program.
|
|
11
|
+
Users can right click on different entries in treeviews for different options.
|
|
12
|
+
There is typically only one manager per program.
|
|
13
|
+
|
|
14
|
+
:doc:`viewers`
|
|
15
|
+
--------------
|
|
16
|
+
These are the widgets which show the images.
|
|
17
|
+
There are a few different kinds depending on if the image loaded should be limited.
|
|
18
|
+
Viewers have multiple shortcuts to make it easier for the end user.
|
|
19
|
+
|
|
20
|
+
:doc:`images`
|
|
21
|
+
-------------
|
|
22
|
+
Different classes which represent images and collections of images.
|
|
23
|
+
Also see :doc:`file handling </file_handling/file_handling>`.
|
|
24
|
+
|
|
25
|
+
:doc:`rois`
|
|
26
|
+
-----------
|
|
27
|
+
These represent regions of interest of different shapes.
|
|
28
|
+
|
|
29
|
+
Contents
|
|
30
|
+
--------
|
|
31
|
+
.. toctree::
|
|
32
|
+
manager
|
|
33
|
+
viewers
|
|
34
|
+
images
|
|
35
|
+
rois
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
Images
|
|
2
|
+
======
|
|
3
|
+
|
|
4
|
+
.. autoclass:: pumpia.image_handling.image_structures.BaseImageSet
|
|
5
|
+
|
|
6
|
+
.. autoclass:: pumpia.image_handling.image_structures.ArrayImage
|
|
7
|
+
|
|
8
|
+
.. autoclass:: pumpia.image_handling.image_structures.FileImageSet
|
|
9
|
+
|
|
10
|
+
.. autoclass:: pumpia.image_handling.image_structures.ImageCollection
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
Regions of Interest
|
|
2
|
+
-------------------
|
|
3
|
+
|
|
4
|
+
.. autoclass:: pumpia.image_handling.roi_structures.BaseROI
|
|
5
|
+
|
|
6
|
+
.. autoclass:: pumpia.image_handling.roi_structures.Angle
|
|
7
|
+
|
|
8
|
+
.. autoclass:: pumpia.image_handling.roi_structures.PointROI
|
|
9
|
+
|
|
10
|
+
.. autoclass:: pumpia.image_handling.roi_structures.EllipseROI
|
|
11
|
+
|
|
12
|
+
.. autoclass:: pumpia.image_handling.roi_structures.RectangleROI
|
|
13
|
+
|
|
14
|
+
.. autoclass:: pumpia.image_handling.roi_structures.LineROI
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
Viewers
|
|
2
|
+
=======
|
|
3
|
+
|
|
4
|
+
.. autoclass:: pumpia.widgets.viewers.BaseViewer
|
|
5
|
+
|
|
6
|
+
.. autoclass:: pumpia.widgets.viewers.Viewer
|
|
7
|
+
|
|
8
|
+
.. autoclass:: pumpia.widgets.viewers.ArrayViewer
|
|
9
|
+
|
|
10
|
+
.. autoclass:: pumpia.widgets.viewers.MonochromeViewer
|
|
11
|
+
|
|
12
|
+
.. autoclass:: pumpia.widgets.viewers.DicomViewer
|
|
13
|
+
|
|
14
|
+
.. autoclass:: pumpia.widgets.viewers.MonochromeDicomViewer
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
|
|
4
|
+
sys.path.insert(0, str(Path(__file__).resolve().parent.parent.parent))
|
|
5
|
+
|
|
6
|
+
# Configuration file for the Sphinx documentation builder.
|
|
7
|
+
#
|
|
8
|
+
# For the full list of built-in configuration values, see the documentation:
|
|
9
|
+
# https://www.sphinx-doc.org/en/master/usage/configuration.html
|
|
10
|
+
|
|
11
|
+
# -- Project information -----------------------------------------------------
|
|
12
|
+
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
|
|
13
|
+
|
|
14
|
+
project = 'PumpIA'
|
|
15
|
+
copyright = '2025, Zack Ravetz'
|
|
16
|
+
author = 'Zack Ravetz'
|
|
17
|
+
|
|
18
|
+
# -- General configuration ---------------------------------------------------
|
|
19
|
+
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
|
|
20
|
+
|
|
21
|
+
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.autosummary', 'sphinx.ext.coverage', 'sphinx.ext.napoleon', 'sphinx.ext.autosectionlabel']
|
|
22
|
+
coverage_modules = ("pumpia",)
|
|
23
|
+
templates_path = ['_templates']
|
|
24
|
+
exclude_patterns = []
|
|
25
|
+
autosectionlabel_prefix_document = True
|
|
26
|
+
|
|
27
|
+
# -- Options for HTML output -------------------------------------------------
|
|
28
|
+
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
|
|
29
|
+
|
|
30
|
+
html_theme = 'sphinx_rtd_theme'
|
|
31
|
+
html_static_path = ['_static']
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
DICOM File Handling
|
|
2
|
+
===================
|
|
3
|
+
|
|
4
|
+
.. autoclass:: pumpia.file_handling.dicom_structures.Patient
|
|
5
|
+
|
|
6
|
+
.. autoclass:: pumpia.file_handling.dicom_structures.Study
|
|
7
|
+
|
|
8
|
+
.. autoclass:: pumpia.file_handling.dicom_structures.Series
|
|
9
|
+
|
|
10
|
+
.. autoclass:: pumpia.file_handling.dicom_structures.Instance
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
File Handling
|
|
2
|
+
=============
|
|
3
|
+
|
|
4
|
+
The :doc:`manager </components/manager>` is used to handle files and make sure all components have access to the loaded ones.
|
|
5
|
+
|
|
6
|
+
:doc:`dicoms`
|
|
7
|
+
-------------
|
|
8
|
+
Loaded DICOMS can be accessed through the ``patients`` attribute of the manager.
|
|
9
|
+
This provides a set of all patients loaded from DICOM files.
|
|
10
|
+
|
|
11
|
+
Four classes are used to group and handle DICOM files:
|
|
12
|
+
|
|
13
|
+
* Patient
|
|
14
|
+
* Study
|
|
15
|
+
* Series
|
|
16
|
+
* Instance
|
|
17
|
+
|
|
18
|
+
The DICOM file path and pydicom Dataset can be accessed through either `Series` or `Instance`.
|
|
19
|
+
For `Series` these will be for the current instance defined by the ``current_slice`` attribute.
|
|
20
|
+
|
|
21
|
+
:doc:`dicom_tags`
|
|
22
|
+
-----------------
|
|
23
|
+
DICOM tag handling is different to pydicom to allow for the handling of classic and enhanced DICOM files.
|
|
24
|
+
|
|
25
|
+
Contents
|
|
26
|
+
--------
|
|
27
|
+
.. toctree::
|
|
28
|
+
dicoms
|
|
29
|
+
dicom_tags
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
PumpIA documentation
|
|
2
|
+
====================
|
|
3
|
+
|
|
4
|
+
Introduction
|
|
5
|
+
------------
|
|
6
|
+
|
|
7
|
+
PumpIA is a python framework designed to allow users to visualise the analysis of images through a user interface.
|
|
8
|
+
It does not do any image analysis itself, but rather provides a platform for users to write their own analysis code and view the results.
|
|
9
|
+
This means that the full power of python and its libraries are available to the user.
|
|
10
|
+
|
|
11
|
+
Requirements
|
|
12
|
+
------------
|
|
13
|
+
PumpIA has been designed to use the minimum number of dependencies, so the user interface relies on `tkinter <https://docs.python.org/3/library/tkinter.html>`_.
|
|
14
|
+
PumpIA has the following dependencies:
|
|
15
|
+
|
|
16
|
+
* `numpy <https://numpy.org/>`_
|
|
17
|
+
* `scipy <https://scipy.org/>`_
|
|
18
|
+
* `pillow <https://pillow.readthedocs.io/en/stable/>`_
|
|
19
|
+
* `pydicom <https://pydicom.github.io/pydicom/stable/>`_
|
|
20
|
+
* `matplotlib <https://matplotlib.org/>`_
|
|
21
|
+
|
|
22
|
+
See `pydicom: Compression of Pixel Data <https://pydicom.github.io/pydicom/stable/tutorials/pixel_data/compressing.html#compression-of-pixel-data>`_ for information on how to install the required libraries for reading compressed dicom files.
|
|
23
|
+
|
|
24
|
+
Installation
|
|
25
|
+
------------
|
|
26
|
+
|
|
27
|
+
PumpIA requires `python <https://www.python.org>`_ 3.12 or greater.
|
|
28
|
+
To use PumpIA, install it using pip:
|
|
29
|
+
|
|
30
|
+
.. code-block:: console
|
|
31
|
+
|
|
32
|
+
(.venv) $ pip install pumpia
|
|
33
|
+
|
|
34
|
+
Contents
|
|
35
|
+
--------
|
|
36
|
+
|
|
37
|
+
.. toctree::
|
|
38
|
+
:includehidden:
|
|
39
|
+
:titlesonly:
|
|
40
|
+
:maxdepth: 2
|
|
41
|
+
|
|
42
|
+
components/components
|
|
43
|
+
usage/usage
|
|
44
|
+
file_handling/file_handling
|
|
45
|
+
utilities/utilities
|
|
46
|
+
widgets/widgets
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Context
|
|
2
|
+
=======
|
|
3
|
+
.. autoclass:: pumpia.module_handling.context.BaseContext
|
|
4
|
+
|
|
5
|
+
.. autoclass:: pumpia.module_handling.context.PhantomContext
|
|
6
|
+
|
|
7
|
+
.. autoclass:: pumpia.module_handling.context.BoundBoxContext
|
|
8
|
+
|
|
9
|
+
.. autoclass:: pumpia.module_handling.context.SimpleContext
|
|
10
|
+
|
|
11
|
+
Context Managers
|
|
12
|
+
----------------
|
|
13
|
+
|
|
14
|
+
.. autoclass:: pumpia.widgets.context_managers.BaseContextManager
|
|
15
|
+
|
|
16
|
+
.. autoclass:: pumpia.widgets.context_managers.SimpleContextManager
|
|
17
|
+
|
|
18
|
+
.. autoclass:: pumpia.widgets.context_managers.PhantomContextManager
|
|
19
|
+
|
|
20
|
+
.. autoclass:: pumpia.widgets.context_managers.ManualPhantomManager
|
|
21
|
+
|
|
22
|
+
.. autoclass:: pumpia.widgets.context_managers.AutoPhantomManager
|
|
23
|
+
|
|
24
|
+
Context Manager Generators
|
|
25
|
+
--------------------------
|
|
26
|
+
|
|
27
|
+
.. autoclass:: pumpia.widgets.context_managers.BaseContextManagerGenerator
|
|
28
|
+
|
|
29
|
+
.. autoclass:: pumpia.widgets.context_managers.SimpleContextManagerGenerator
|
|
30
|
+
|
|
31
|
+
.. autoclass:: pumpia.widgets.context_managers.PhantomContextManagerGenerator
|
|
32
|
+
|
|
33
|
+
.. autoclass:: pumpia.widgets.context_managers.ManualPhantomManagerGenerator
|
|
34
|
+
|
|
35
|
+
.. autoclass:: pumpia.widgets.context_managers.AutoPhantomManagerGenerator
|