diff --git a/python/cucim/.appveyor.yml b/python/cucim/.appveyor.yml deleted file mode 100644 index 71d045008..000000000 --- a/python/cucim/.appveyor.yml +++ /dev/null @@ -1,78 +0,0 @@ -version: '{branch}-{build}' -build: off -environment: - matrix: - - TOXENV: check - TOXPYTHON: C:\Python36\python.exe - PYTHON_HOME: C:\Python36 - PYTHON_VERSION: '3.6' - PYTHON_ARCH: '32' - - TOXENV: py27,codecov - TOXPYTHON: C:\Python27\python.exe - PYTHON_HOME: C:\Python27 - PYTHON_VERSION: '2.7' - PYTHON_ARCH: '32' - - TOXENV: py27,codecov - TOXPYTHON: C:\Python27-x64\python.exe - PYTHON_HOME: C:\Python27-x64 - PYTHON_VERSION: '2.7' - PYTHON_ARCH: '64' - WINDOWS_SDK_VERSION: v7.0 - - TOXENV: py35,codecov - TOXPYTHON: C:\Python35\python.exe - PYTHON_HOME: C:\Python35 - PYTHON_VERSION: '3.5' - PYTHON_ARCH: '32' - - TOXENV: py35,codecov - TOXPYTHON: C:\Python35-x64\python.exe - PYTHON_HOME: C:\Python35-x64 - PYTHON_VERSION: '3.5' - PYTHON_ARCH: '64' - - TOXENV: py36,codecov - TOXPYTHON: C:\Python36\python.exe - PYTHON_HOME: C:\Python36 - PYTHON_VERSION: '3.6' - PYTHON_ARCH: '32' - - TOXENV: py36,codecov - TOXPYTHON: C:\Python36-x64\python.exe - PYTHON_HOME: C:\Python36-x64 - PYTHON_VERSION: '3.6' - PYTHON_ARCH: '64' - - TOXENV: py37,codecov - TOXPYTHON: C:\Python37\python.exe - PYTHON_HOME: C:\Python37 - PYTHON_VERSION: '3.7' - PYTHON_ARCH: '32' - - TOXENV: py37,codecov - TOXPYTHON: C:\Python37-x64\python.exe - PYTHON_HOME: C:\Python37-x64 - PYTHON_VERSION: '3.7' - PYTHON_ARCH: '64' - - TOXENV: py38,codecov - TOXPYTHON: C:\Python38\python.exe - PYTHON_HOME: C:\Python38 - PYTHON_VERSION: '3.8' - PYTHON_ARCH: '32' - - TOXENV: py38,codecov - TOXPYTHON: C:\Python38-x64\python.exe - PYTHON_HOME: C:\Python38-x64 - PYTHON_VERSION: '3.8' - PYTHON_ARCH: '64' -init: - - ps: echo $env:TOXENV - - ps: ls C:\Python* -install: - - '%PYTHON_HOME%\python -mpip install --progress-bar=off tox -rci/requirements.txt' - - '%PYTHON_HOME%\Scripts\virtualenv --version' - - '%PYTHON_HOME%\Scripts\easy_install --version' - - '%PYTHON_HOME%\Scripts\pip --version' - - '%PYTHON_HOME%\Scripts\tox --version' -test_script: - - cmd /E:ON /V:ON /C .\ci\appveyor-with-compiler.cmd %PYTHON_HOME%\Scripts\tox -on_failure: - - ps: dir "env:" - - ps: get-content .tox\*\log\* - -### To enable remote debugging uncomment this (also, see: http://www.appveyor.com/docs/how-to/rdp-to-build-worker): -# on_finish: -# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) diff --git a/python/cucim/.cookiecutterrc b/python/cucim/.cookiecutterrc deleted file mode 100644 index 437fca81c..000000000 --- a/python/cucim/.cookiecutterrc +++ /dev/null @@ -1,70 +0,0 @@ -# This file exists so you can easily regenerate your project. -# -# `cookiepatcher` is a convenient shim around `cookiecutter` -# for regenerating projects (it will generate a .cookiecutterrc -# automatically for any template). To use it: -# -# pip install cookiepatcher -# cookiepatcher gh:ionelmc/cookiecutter-pylibrary cucim -# -# See: -# https://pypi.org/project/cookiepatcher -# -# Alternatively, you can run: -# -# cookiecutter --overwrite-if-exists --config-file=cucim/.cookiecutterrc gh:ionelmc/cookiecutter-pylibrary - -default_context: - - _extensions: ['jinja2_time.TimeExtension'] - _template: 'https://github.com/ionelmc/cookiecutter-pylibrary' - allow_tests_inside_package: 'no' - appveyor: 'yes' - c_extension_function: 'longest' - c_extension_module: '_cucim' - c_extension_optional: 'no' - c_extension_support: 'no' - c_extension_test_pypi: 'no' - c_extension_test_pypi_username: '' - codacy: 'no' - codacy_projectid: '[Get ID from https://app.codacy.com/app/rapidsai/cucim/settings]' - codeclimate: 'no' - codecov: 'yes' - command_line_interface: 'click' - command_line_interface_bin_name: 'cucim' - coveralls: 'no' - coveralls_token: '[Required for Appveyor, take it from https://coveralls.io/github/rapidsai/cucim]' - distribution_name: 'cucim' - email: '' - full_name: 'cuCIM Developers' - landscape: 'no' - license: 'Apache Software License 2.0' - linter: 'flake8' - package_name: 'cucim' - pre_commit: 'yes' - project_name: 'cucim' - project_short_description: 'A CUDA-accerlated image processing library' - pypi_badge: 'yes' - pypi_disable_upload: 'no' - release_date: 'today' - repo_hosting: 'github.com' - repo_hosting_domain: 'github.com' - repo_name: 'cucim' - repo_username: '' - requiresio: 'yes' - scrutinizer: 'no' - setup_py_uses_setuptools_scm: 'no' - setup_py_uses_test_runner: 'no' - sphinx_docs: 'yes' - sphinx_docs_hosting: 'https://cucim.readthedocs.io/' - sphinx_doctest: 'yes' - sphinx_theme: 'sphinx-rtd-theme' - test_matrix_configurator: 'no' - test_matrix_separate_coverage: 'no' - test_runner: 'pytest' - travis: 'yes' - travis_osx: 'no' - version: '0.0.0' - website: 'https://rapids.ai/' - year_from: '2021' - year_to: '2021' diff --git a/python/cucim/.gitignore b/python/cucim/.gitignore deleted file mode 100644 index dfe58380d..000000000 --- a/python/cucim/.gitignore +++ /dev/null @@ -1,71 +0,0 @@ -*.py[cod] -__pycache__ - -# C extensions -*.so - -# Packages -*.egg -*.egg-info -dist -build -eggs -.eggs -parts -bin -var -sdist -wheelhouse -develop-eggs -.installed.cfg -lib -lib64 -venv*/ -pyvenv*/ -pip-wheel-metadata/ - -# Installer logs -pip-log.txt - -# Unit test / coverage reports -.coverage -.tox -.coverage.* -.pytest_cache/ -nosetests.xml -coverage.xml -htmlcov - -# Translations -*.mo - -# Mr Developer -.mr.developer.cfg -.project -.pydevproject -.idea -*.iml -*.komodoproject - -# Complexity -output/*.html -output/*/index.html - -# Sphinx -docs/_build - -.DS_Store -*~ -.*.sw[po] -.build -.ve -.env -.cache -.pytest -.benchmarks -.bootstrap -.appveyor.token -*.bak - -# Mypy Cache -.mypy_cache/ diff --git a/python/cucim/.readthedocs.yml b/python/cucim/.readthedocs.yml deleted file mode 100644 index 59ff5c04f..000000000 --- a/python/cucim/.readthedocs.yml +++ /dev/null @@ -1,10 +0,0 @@ -# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details -version: 2 -sphinx: - configuration: docs/conf.py -formats: all -python: - install: - - requirements: docs/requirements.txt - - method: pip - path: . diff --git a/python/cucim/.travis.yml b/python/cucim/.travis.yml deleted file mode 100644 index 09858acea..000000000 --- a/python/cucim/.travis.yml +++ /dev/null @@ -1,57 +0,0 @@ -language: python -dist: xenial -cache: false -env: - global: - - LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so - - SEGFAULT_SIGNALS=all - - LANG=en_US.UTF-8 -matrix: - include: - - python: '3.6' - env: - - TOXENV=check - - python: '3.6' - env: - - TOXENV=docs - - env: - - TOXENV=py27,codecov - python: '2.7' - - env: - - TOXENV=py35,codecov - python: '3.5' - - env: - - TOXENV=py36,codecov - python: '3.6' - - env: - - TOXENV=py37,codecov - python: '3.7' - - env: - - TOXENV=py38,codecov - python: '3.8' - - env: - - TOXENV=pypy,codecov - python: 'pypy' - - env: - - TOXENV=pypy3,codecov - - TOXPYTHON=pypy3 - python: 'pypy3' -before_install: - - python --version - - uname -a - - lsb_release -a || true -install: - - python -mpip install --progress-bar=off tox -rci/requirements.txt - - virtualenv --version - - easy_install --version - - pip --version - - tox --version -script: - - tox -v -after_failure: - - cat .tox/log/* - - cat .tox/*/log/* -notifications: - email: - on_success: never - on_failure: always diff --git a/python/cucim/AUTHORS.md b/python/cucim/AUTHORS.md deleted file mode 100644 index c16398d00..000000000 --- a/python/cucim/AUTHORS.md +++ /dev/null @@ -1,7 +0,0 @@ -# Authors - -* Gigon Bae (gigony) -* Gregory R. Lee (grlee77) -* Benjamin Zaitlen (quasiben) -* John Kirkham (jakirkham) -* Ray Douglass (raydouglass) diff --git a/python/cucim/CONTRIBUTING.md b/python/cucim/CONTRIBUTING.md deleted file mode 100644 index 77f80ae8a..000000000 --- a/python/cucim/CONTRIBUTING.md +++ /dev/null @@ -1,96 +0,0 @@ -# Contributing - -Contributions are welcome, and they are greatly appreciated! Every -little bit helps, and credit will always be given. - -# Bug reports - -When [reporting a bug](https://github.com/rapidsai/cucim/issues) please include: - - * Your operating system name and version. - * Any details about your local setup that might be helpful in troubleshooting. - * Detailed steps to reproduce the bug. - -# Documentation improvements - -cucim could always use more documentation, whether as part of the -official cucim docs, in docstrings, or even on the web in blog posts, -articles, and such. - -# Feature requests and feedback - -The best way to send feedback is to file an issue at https://github.com/rapidsai/cucim/issues. - -If you are proposing a feature: - -* Explain in detail how it would work. -* Keep the scope as narrow as possible, to make it easier to implement. -* Remember that this is a volunteer-driven project, and that code contributions are welcome :) - -# Development - -To set up `cucim` for local development: - -1. Fork [cucim](https://github.com/rapidsai/cucim) - (look for the "Fork" button). - -2. Clone your fork locally: - - ```bash - git clone git@github.com:YOURGITHUBNAME/cucim.git - ``` - -3. Create a branch for local development:: - - ```bash - git checkout -b name-of-your-bugfix-or-feature - ``` - - Now you can make your changes locally. - -4. When you're done making changes run all the checks and docs builder with [tox](https://tox.readthedocs.io/en/latest/install.html) one command:: - - ```bash - tox - ``` - -5. Commit your changes and push your branch to GitHub: - - ```bash - git add . - git commit -m "Your detailed description of your changes." - git push origin name-of-your-bugfix-or-feature - ``` - -6. Submit a pull request through the GitHub website. - -## Pull Request Guidelines - -If you need some code review or feedback while you're developing the code just make the pull request. - -For merging, you should: - -1. Include passing tests (run `tox`). - - If you don't have all the necessary python versions available locally you can rely on Travis - it will [run the tests](https://travis-ci.org/rapidsai/cucim/pull_requests) for each change you add in the pull request. - - It will be slower though ... -2. Update documentation when there's new API, functionality etc. -3. Add a note to `CHANGELOG.md`` about the changes. -4. Add yourself to `AUTHORS.md`. - - -## Tips - - -To run a subset of tests:: - -```bash -tox -e envname -- pytest -k test_myfeature -``` - -To run all the test environments in *parallel*:: - -```bash -tox -p auto -``` diff --git a/python/cucim/CONTRIBUTING.md b/python/cucim/CONTRIBUTING.md new file mode 120000 index 000000000..f939e75f2 --- /dev/null +++ b/python/cucim/CONTRIBUTING.md @@ -0,0 +1 @@ +../../CONTRIBUTING.md \ No newline at end of file diff --git a/python/cucim/MANIFEST.in b/python/cucim/MANIFEST.in index 756e96d3c..61881e2c1 100644 --- a/python/cucim/MANIFEST.in +++ b/python/cucim/MANIFEST.in @@ -1,24 +1,13 @@ # https://packaging.python.org/guides/using-manifest-in/ -graft docs -graft src -graft ci -graft tests - -include .bumpversion.cfg -include .coveragerc -include .cookiecutterrc include .editorconfig -include VERSION -include AUTHORS.md +include src/cucim/VERSION include CHANGELOG.md include CONTRIBUTING.md -include ../../LICENSE -include ../../LICENSE-3rdparty.md +include LICENSE +include LICENSE-3rdparty.md include README.md -include tox.ini .travis.yml .appveyor.yml .readthedocs.yml - include src/cucim/clara/*.so* recursive-include src/cucim *.py *.pyi *.cu *.h *.npy *.txt *.md diff --git a/python/cucim/README.md b/python/cucim/README.md deleted file mode 100755 index 27a5d7fbb..000000000 --- a/python/cucim/README.md +++ /dev/null @@ -1,113 +0,0 @@ -#
 cuCIM
- -[RAPIDS](https://rapids.ai) cuCIM is an open-source, accelerated computer vision and image processing software library for multidimensional images used in biomedical, geospatial, material and life science, and remote sensing use cases. - -cuCIM offers: - -- Enhanced Image Processing Capabilities for large and n-dimensional tag image file format (TIFF) files -- Accelerated performance through Graphics Processing Unit (GPU)-based image processing and computer vision primitives -- A Straightforward Pythonic Interface with Matching Application Programming Interface (API) for Openslide - -cuCIM supports the following formats: - -- Aperio ScanScope Virtual Slide (SVS) -- Philips TIFF -- Generic Tiled, Multi-resolution RGB TIFF files with the following compression schemes: - - No Compression - - JPEG - - JPEG2000 - - Lempel-Ziv-Welch (LZW) - - Deflate - -**NOTE:** For the latest stable [README.md](https://github.com/rapidsai/cucim/blob/main/README.md) ensure you are on the `main` branch. - -- [GTC 2022 Accelerating Storage IO to GPUs with Magnum IO [S41347]](https://events.rainfocus.com/widget/nvidia/gtcspring2022/sessioncatalog/session/1634960000577001Etxp) - - cuCIM's GDS API examples: -- [SciPy 2021 cuCIM - A GPU image I/O and processing library](https://www.scipy2021.scipy.org/) - - [video](https://youtu.be/G46kOOM9xbQ) -- [GTC 2021 cuCIM: A GPU Image I/O and Processing Toolkit [S32194]](https://www.nvidia.com/en-us/on-demand/search/?facet.mimetype[]=event%20session&layout=list&page=1&q=cucim&sort=date) - - [video](https://www.nvidia.com/en-us/on-demand/session/gtcspring21-s32194/) - -**[Developer Page](https://developer.nvidia.com/multidimensional-image-processing)** - -**Blogs** -- [Enhanced Image Analysis with Multidimensional Image Processing](https://developer.nvidia.com/blog/enhanced-image-analysis-with-multidimensional-image-processing/) -- [Accelerating Scikit-Image API with cuCIM: n-Dimensional Image Processing and IO on GPUs](https://developer.nvidia.com/blog/cucim-rapid-n-dimensional-image-processing-and-i-o-on-gpus/) -- [Accelerating Digital Pathology Pipelines with NVIDIA Clara™ Deploy](https://developer.nvidia.com/blog/accelerating-digital-pathology-pipelines-with-nvidia-clara-deploy-2/) - -**Webinars** - -- [cuCIM: a GPU Image IO and Processing Library](https://www.youtube.com/watch?v=G46kOOM9xbQ) - -**[Documentation](https://docs.rapids.ai/api/cucim/stable)** - -**Release notes** are available on our [wiki page](https://github.com/rapidsai/cucim/wiki/Release-Notes). - -## Install cuCIM - -### Conda - -#### [Conda (stable)](https://anaconda.org/rapidsai/cucim) - -> conda create -n cucim -c rapidsai -c conda-forge cucim cudatoolkit=`` - -`` should be 11.0+ (e.g., `11.0`, `11.2`, etc.) - -#### [Conda (nightlies)](https://anaconda.org/rapidsai-nightly/cucim) - -> conda create -n cucim -c rapidsai-nightly -c conda-forge cucim cudatoolkit=`` - -`` should be 11.0+ (e.g., `11.0`, `11.2`, etc) - -### [PyPI](https://pypi.org/project/cucim/) - -```bash -pip install cucim - -# Install dependencies for `cucim.skimage` (assuming that CUDA 11.0 is used for CuPy) -pip install scipy scikit-image cupy-cuda110 -``` - -### Notebooks - -Please check out our [Welcome](notebooks/Welcome.ipynb) notebook ([NBViewer](https://nbviewer.jupyter.org/github/rapidsai/cucim/blob/branch-24.02/notebooks/Welcome.ipynb)) - -#### Downloading sample images - -To download images used in the notebooks, please execute the following commands from the repository root folder to copy sample input images into `notebooks/input` folder: - -(You will need [Docker](https://www.docker.com/) installed in your system) - -```bash -./run download_testdata -``` -or - -```bash -mkdir -p notebooks/input -tmp_id=$(docker create gigony/svs-testdata:little-big) -docker cp $tmp_id:/input notebooks -docker rm -v ${tmp_id} -``` - -## Build/Install from Source - -See build [instructions](CONTRIBUTING.md#setting-up-your-build-environment). - -## Contributing Guide - -Contributions to cuCIM are more than welcome! -Please review the [CONTRIBUTING.md](https://github.com/rapidsai/cucim/blob/main/CONTRIBUTING.md) file for information on how to contribute code and issues to the project. - -## Acknowledgments - -Without awesome third-party open source software, this project wouldn't exist. - -Please find [LICENSE-3rdparty.md](LICENSE-3rdparty.md) to see which third-party open source software -is used in this project. - -## License - -Apache-2.0 License (see [LICENSE](LICENSE) file). - -Copyright (c) 2020-2022, NVIDIA CORPORATION. diff --git a/python/cucim/README.md b/python/cucim/README.md new file mode 120000 index 000000000..fe8400541 --- /dev/null +++ b/python/cucim/README.md @@ -0,0 +1 @@ +../../README.md \ No newline at end of file diff --git a/python/cucim/VERSION b/python/cucim/VERSION new file mode 120000 index 000000000..558194c5a --- /dev/null +++ b/python/cucim/VERSION @@ -0,0 +1 @@ +../../VERSION \ No newline at end of file diff --git a/python/cucim/ci/appveyor-with-compiler.cmd b/python/cucim/ci/appveyor-with-compiler.cmd deleted file mode 100644 index 289585fc1..000000000 --- a/python/cucim/ci/appveyor-with-compiler.cmd +++ /dev/null @@ -1,23 +0,0 @@ -:: Very simple setup: -:: - if WINDOWS_SDK_VERSION is set then activate the SDK. -:: - disable the WDK if it's around. - -SET COMMAND_TO_RUN=%* -SET WIN_SDK_ROOT=C:\Program Files\Microsoft SDKs\Windows -SET WIN_WDK="c:\Program Files (x86)\Windows Kits\10\Include\wdf" -ECHO SDK: %WINDOWS_SDK_VERSION% ARCH: %PYTHON_ARCH% - -IF EXIST %WIN_WDK% ( - REM See: https://connect.microsoft.com/VisualStudio/feedback/details/1610302/ - REN %WIN_WDK% 0wdf -) -IF "%WINDOWS_SDK_VERSION%"=="" GOTO main - -SET DISTUTILS_USE_SDK=1 -SET MSSdk=1 -"%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Setup\WindowsSdkVer.exe" -q -version:%WINDOWS_SDK_VERSION% -CALL "%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Bin\SetEnv.cmd" /x64 /release - -:main -ECHO Executing: %COMMAND_TO_RUN% -CALL %COMMAND_TO_RUN% || EXIT 1 diff --git a/python/cucim/ci/bootstrap.py b/python/cucim/ci/bootstrap.py deleted file mode 100755 index 05dbf0b3f..000000000 --- a/python/cucim/ci/bootstrap.py +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import os -import subprocess -import sys -from os.path import abspath, dirname, exists, join - -base_path = dirname(dirname(abspath(__file__))) - - -def check_call(args): - print("+", *args) - subprocess.check_call(args) - - -def exec_in_env(): - env_path = join(base_path, ".tox", "bootstrap") - if sys.platform == "win32": - bin_path = join(env_path, "Scripts") - else: - bin_path = join(env_path, "bin") - if not exists(env_path): - import subprocess - - print("Making bootstrap env in: {0} ...".format(env_path)) - try: - check_call([sys.executable, "-m", "venv", env_path]) - except subprocess.CalledProcessError: - try: - check_call([sys.executable, "-m", "virtualenv", env_path]) - except subprocess.CalledProcessError: - check_call(["virtualenv", env_path]) - print("Installing `jinja2` into bootstrap environment...") - check_call([join(bin_path, "pip"), "install", "jinja2", "tox"]) - python_executable = join(bin_path, "python") - if not os.path.exists(python_executable): - python_executable += ".exe" - - print("Re-executing with: {0}".format(python_executable)) - print("+ exec", python_executable, __file__, "--no-env") - os.execv(python_executable, [python_executable, __file__, "--no-env"]) - - -def main(): - import jinja2 - - print("Project path: {0}".format(base_path)) - - jinja = jinja2.Environment( - loader=jinja2.FileSystemLoader(join(base_path, "ci", "templates")), - trim_blocks=True, - lstrip_blocks=True, - keep_trailing_newline=True, - ) - - tox_environments = [ - line.strip() - # 'tox' need not be installed globally, but must be importable - # by the Python that is running this script. - # This uses sys.executable the same way that the call in - # cookiecutter-pylibrary/hooks/post_gen_project.py - # invokes this bootstrap.py itself. - for line in subprocess.check_output( - [sys.executable, "-m", "tox", "--listenvs"], universal_newlines=True - ).splitlines() - ] - tox_environments = [ - line for line in tox_environments if line.startswith("py") - ] - - for name in os.listdir(join("ci", "templates")): - with open(join(base_path, name), "w") as fh: - fh.write( - jinja.get_template(name).render( - tox_environments=tox_environments - ) - ) - print("Wrote {}".format(name)) - print("DONE.") - - -if __name__ == "__main__": - args = sys.argv[1:] - if args == ["--no-env"]: - main() - elif not args: - exec_in_env() - else: - print("Unexpected arguments {0}".format(args), file=sys.stderr) - sys.exit(1) diff --git a/python/cucim/ci/requirements.txt b/python/cucim/ci/requirements.txt deleted file mode 100644 index a0f53e12a..000000000 --- a/python/cucim/ci/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -virtualenv>=16.6.0 -pip>=19.1.1 -setuptools>=18.0.1 -six>=1.14.0 -lazy_loader>=0.1 diff --git a/python/cucim/ci/templates/.appveyor.yml b/python/cucim/ci/templates/.appveyor.yml deleted file mode 100644 index bb4a05599..000000000 --- a/python/cucim/ci/templates/.appveyor.yml +++ /dev/null @@ -1,49 +0,0 @@ -version: '{branch}-{build}' -build: off -environment: - matrix: - - TOXENV: check - TOXPYTHON: C:\Python36\python.exe - PYTHON_HOME: C:\Python36 - PYTHON_VERSION: '3.6' - PYTHON_ARCH: '32' -{% for env in tox_environments %} -{% if env.startswith(('py2', 'py3')) %} - - TOXENV: {{ env }},codecov{{ "" }} - TOXPYTHON: C:\Python{{ env[2:4] }}\python.exe - PYTHON_HOME: C:\Python{{ env[2:4] }} - PYTHON_VERSION: '{{ env[2] }}.{{ env[3] }}' - PYTHON_ARCH: '32' -{% if 'nocov' in env %} - WHEEL_PATH: .tox/dist -{% endif %} - - TOXENV: {{ env }},codecov{{ "" }} - TOXPYTHON: C:\Python{{ env[2:4] }}-x64\python.exe - PYTHON_HOME: C:\Python{{ env[2:4] }}-x64 - PYTHON_VERSION: '{{ env[2] }}.{{ env[3] }}' - PYTHON_ARCH: '64' -{% if 'nocov' in env %} - WHEEL_PATH: .tox/dist -{% endif %} -{% if env.startswith('py2') %} - WINDOWS_SDK_VERSION: v7.0 -{% endif %} -{% endif %}{% endfor %} -init: - - ps: echo $env:TOXENV - - ps: ls C:\Python* -install: - - '%PYTHON_HOME%\python -mpip install --progress-bar=off tox -rci/requirements.txt' - - '%PYTHON_HOME%\Scripts\virtualenv --version' - - '%PYTHON_HOME%\Scripts\easy_install --version' - - '%PYTHON_HOME%\Scripts\pip --version' - - '%PYTHON_HOME%\Scripts\tox --version' -test_script: - - cmd /E:ON /V:ON /C .\ci\appveyor-with-compiler.cmd %PYTHON_HOME%\Scripts\tox -on_failure: - - ps: dir "env:" - - ps: get-content .tox\*\log\* - -### To enable remote debugging uncomment this (also, see: http://www.appveyor.com/docs/how-to/rdp-to-build-worker): -# on_finish: -# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) diff --git a/python/cucim/ci/templates/.travis.yml b/python/cucim/ci/templates/.travis.yml deleted file mode 100644 index cb15bd09c..000000000 --- a/python/cucim/ci/templates/.travis.yml +++ /dev/null @@ -1,47 +0,0 @@ -language: python -dist: xenial -cache: false -env: - global: - - LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so - - SEGFAULT_SIGNALS=all - - LANG=en_US.UTF-8 -matrix: - include: - - python: '3.6' - env: - - TOXENV=check - - python: '3.6' - env: - - TOXENV=docs -{%- for env in tox_environments %}{{ '' }} - - env: - - TOXENV={{ env }},codecov -{%- if env.startswith('pypy3') %}{{ '' }} - - TOXPYTHON=pypy3 - python: 'pypy3' -{%- elif env.startswith('pypy') %}{{ '' }} - python: 'pypy' -{%- else %}{{ '' }} - python: '{{ '{0[2]}.{0[3]}'.format(env) }}' -{%- endif %}{{ '' }} -{%- endfor %}{{ '' }} -before_install: - - python --version - - uname -a - - lsb_release -a || true -install: - - python -mpip install --progress-bar=off tox -rci/requirements.txt - - virtualenv --version - - easy_install --version - - pip --version - - tox --version -script: - - tox -v -after_failure: - - cat .tox/log/* - - cat .tox/*/log/* -notifications: - email: - on_success: never - on_failure: always diff --git a/python/cucim/docs/_static/css/custom.css b/python/cucim/docs/_static/css/custom.css deleted file mode 100644 index 87f612eaf..000000000 --- a/python/cucim/docs/_static/css/custom.css +++ /dev/null @@ -1,20 +0,0 @@ -/* -https: //github.com/pandas-dev/pydata-sphinx-theme/blob/master/pydata_sphinx_theme/static/css/theme.css -https: //pydata-sphinx-theme.readthedocs.io/en/latest/user_guide/customizing.html#customizing-the-css -*/ - -/* To fix a bug: `.col-xl-2` and `.bd-toc` conflicts in the following HTML of right navbar in the theme. - - `.col-xl-2` has `position: relative` - - `.bd-toc` has `position: sticky` - -
- -*/ -div.bd-toc { - position: sticky; -} - -/* Set max width of container */ -div.container-xl { - max-width: 1400px; -} diff --git a/python/cucim/docs/_static/images/RAPIDS_cuCIM.png b/python/cucim/docs/_static/images/RAPIDS_cuCIM.png deleted file mode 100644 index aa7ed8cdc..000000000 Binary files a/python/cucim/docs/_static/images/RAPIDS_cuCIM.png and /dev/null differ diff --git a/python/cucim/docs/api_reference/cucim.CuImage.rst b/python/cucim/docs/api_reference/cucim.CuImage.rst deleted file mode 100644 index e66690f20..000000000 --- a/python/cucim/docs/api_reference/cucim.CuImage.rst +++ /dev/null @@ -1,5 +0,0 @@ -cucim.CuImage -------------- - -.. autoclass:: cucim.CuImage - :members: diff --git a/python/cucim/docs/api_reference/cucim.clara.filesystem.CuFileDriver.rst b/python/cucim/docs/api_reference/cucim.clara.filesystem.CuFileDriver.rst deleted file mode 100644 index 9c7e0fa84..000000000 --- a/python/cucim/docs/api_reference/cucim.clara.filesystem.CuFileDriver.rst +++ /dev/null @@ -1,5 +0,0 @@ -cucim.clara.filesystem.CuFileDriver ------------------------------------ - -.. autoclass:: cucim.clara.filesystem.CuFileDriver - :members: diff --git a/python/cucim/docs/api_reference/cucim.clara.filesystem.rst b/python/cucim/docs/api_reference/cucim.clara.filesystem.rst deleted file mode 100644 index 995fc0860..000000000 --- a/python/cucim/docs/api_reference/cucim.clara.filesystem.rst +++ /dev/null @@ -1,5 +0,0 @@ -cucim.clara.filesystem ----------------------- - -.. automodule:: cucim.clara.filesystem - :members: diff --git a/python/cucim/docs/api_reference/cucim.clara.io.Device.rst b/python/cucim/docs/api_reference/cucim.clara.io.Device.rst deleted file mode 100644 index 5e5cd0b3c..000000000 --- a/python/cucim/docs/api_reference/cucim.clara.io.Device.rst +++ /dev/null @@ -1,5 +0,0 @@ -cucim.clara.io.Device ---------------------- - -.. autoclass:: cucim.clara.io.Device - :members: diff --git a/python/cucim/docs/api_reference/cucim.clara.io.rst b/python/cucim/docs/api_reference/cucim.clara.io.rst deleted file mode 100644 index 230d12541..000000000 --- a/python/cucim/docs/api_reference/cucim.clara.io.rst +++ /dev/null @@ -1,4 +0,0 @@ -cucim.clara.io --------------- - -.. autoclass:: cucim.clara.io.DeviceType diff --git a/python/cucim/docs/api_reference/cucim.rst b/python/cucim/docs/api_reference/cucim.rst deleted file mode 100644 index f67c1fc3a..000000000 --- a/python/cucim/docs/api_reference/cucim.rst +++ /dev/null @@ -1,9 +0,0 @@ -cucim ------ - -.. testsetup:: - - from cucim import * - -.. automodule:: cucim - :members: diff --git a/python/cucim/docs/api_reference/index.md b/python/cucim/docs/api_reference/index.md deleted file mode 100644 index 951c37970..000000000 --- a/python/cucim/docs/api_reference/index.md +++ /dev/null @@ -1,28 +0,0 @@ -# API Reference - - -```{toctree} -:glob: -:hidden: - -cucim -cucim.CuImage -cucim.clara.io -cucim.clara.io.Device -cucim.clara.filesystem -cucim.clara.filesystem.CuFileDriver - -``` - -## Python API - -```{toctree} -:maxdepth: 2 - -cucim -cucim.CuImage -cucim.clara.io -cucim.clara.io.Device -cucim.clara.filesystem -cucim.clara.filesystem.CuFileDriver -``` diff --git a/python/cucim/docs/conf.py b/python/cucim/docs/conf.py deleted file mode 100644 index 0dbe8b296..000000000 --- a/python/cucim/docs/conf.py +++ /dev/null @@ -1,131 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import os - -# Versioning -with open("../../../VERSION") as f: - version_long = f.readline().strip() - -extensions = [ - "sphinx.ext.autodoc", - "sphinx.ext.autosummary", - "sphinx.ext.coverage", - "sphinx.ext.doctest", - "sphinx.ext.extlinks", - "sphinx.ext.ifconfig", - "sphinx.ext.napoleon", - "sphinx.ext.todo", - "sphinx.ext.viewcode", - "sphinx.ext.intersphinx", - "sphinxcontrib.bibtex", - "myst_nb", - "sphinx_copybutton", - "sphinx_togglebutton", - "sphinx_panels", - "ablog", - "sphinxemoji.sphinxemoji", -] -# source_suffix = { -# '.rst': 'restructuredtext', -# '.ipynb': 'myst-nb', -# '.myst': 'myst-nb', -# } -master_doc = "index" -project = "cuCIM" -year = "2020-2021" -author = "NVIDIA" -copyright = "{0}, {1}".format(year, author) -version = release = version_long - -pygments_style = "trac" -templates_path = ["."] -extlinks = { - "issue": ("https://github.com/rapidsai/cucim/issues/%s", "#"), - "pr": ("https://github.com/rapidsai/cucim/pull/%s", "PR #"), -} -# on_rtd is whether we are on readthedocs.org -on_rtd = os.environ.get("READTHEDOCS", None) == "True" - -if not on_rtd: # only set the theme if we're building docs locally - html_theme = "pydata_sphinx_theme" # 'sphinx_book_theme' - # https://github.com/pandas-dev/pydata-sphinx-theme - # https://pydata-sphinx-theme.readthedocs.io/en/latest/user_guide/index.html - -html_use_smartypants = True -html_last_updated_fmt = "%b %d, %Y" -html_split_index = False -# html_sidebars = { -# '**': ['searchbox.html', 'globaltoc.html', 'sourcelink.html'], -# } -html_short_title = "%s-%s" % (project, version) - -napoleon_use_ivar = True -napoleon_use_rtype = False -napoleon_use_param = False - -html_show_sourcelink = True - -# Options for linkcheck builder -# -# Reference -# : https://www.sphinx-doc.org/en/master/usage/configuration.html?highlight=linkcheck#options-for-the-linkcheck-builder) # noqa -linkcheck_ignore = [r"^\/", r"^\.\."] - -# Options for sphinx.ext.todo -# (reference: https://www.sphinx-doc.org/en/master/usage/extensions/todo.html) - -todo_include_todos = True - -# Options for sphinxemoji.sphinxemoji -# (reference: https://sphinxemojicodes.readthedocs.io/en/stable/#supported-codes) # noqa - - -# Options for myst -# (reference: https://myst-parser.readthedocs.io/en/latest/index.html) - -# https://myst-parser.readthedocs.io/en/latest/using/syntax-optional.html#markdown-figures # noqa -myst_enable_extensions = ["colon_fence"] - -# Options for pydata-sphinx-theme -# (reference: https://pydata-sphinx-theme.readthedocs.io/en/latest/user_guide/configuring.html) # noqa - -html_static_path = ["_static"] -html_css_files = [ - "css/custom.css", -] - -html_theme_options = { - "external_links": [ - { - "name": "Submit Issue", - "url": "https://github.com/rapidsai/cucim/issues/new/choose", # noqa - } - ] -} - -# Options for Sphinx Book Theme -# (reference: https://github.com/executablebooks/sphinx-book-theme/blob/master/setup.py) # noqa - -# html_theme_options = { -# "repository_url": "https://github.com/rapidsai/cucim", -# "use_repository_button": True, -# "use_issues_button": True, -# #"use_edit_page_button": True, -# "repository_branch": "dev", -# #"path_to_docs": "python/cucim/docs", -# "home_page_in_toc": True, -# } - -# Options for myst-nb -# (reference: https://myst-nb.readthedocs.io/en/latest/) - -# Prevent the following error -# MyST NB Configuration Error: -# `nb_render_priority` not set for builder: doctest -nb_render_priority = {"doctest": ()} - -# Prevent creating jupyter_execute folder in dist -# https://myst-nb.readthedocs.io/en/latest/use/execute.html#executing-in-temporary-folders # noqa -execution_in_temp = True -jupyter_execute_notebooks = "off" diff --git a/python/cucim/docs/development/index.md b/python/cucim/docs/development/index.md deleted file mode 100644 index 459110d34..000000000 --- a/python/cucim/docs/development/index.md +++ /dev/null @@ -1 +0,0 @@ -# Development diff --git a/python/cucim/docs/getting_started/index.md b/python/cucim/docs/getting_started/index.md deleted file mode 100644 index 5aad28dc5..000000000 --- a/python/cucim/docs/getting_started/index.md +++ /dev/null @@ -1,172 +0,0 @@ -# Getting Started - -```{toctree} -:glob: -:hidden: - -../notebooks/Basic_Usage.ipynb -../notebooks/Accessing_File_with_GDS.ipynb -../notebooks/File-access_Experiments_on_TIFF.ipynb -../notebooks/Multi-thread_and_Multi-process_Tests.ipynb -../notebooks/Working_with_DALI.ipynb -../notebooks/Working_with_Albumentation.ipynb -``` - -## Installation - -Please download the latest SDK package (`cuCIM-v24.02.00-linux.tar.gz`). - -Untar the downloaded file. - -```bash -mkdir -p cuCIM-v24.02.00 -tar -xzvf cuCIM-v24.02.00-linux.tar.gz -C cuCIM-v24.02.00 - -cd cuCIM-v24.02.00 -``` - -## Run command - -Executing `./run` command would show you available commands: - -```bash -./run -``` -``` -USAGE: ./run [command] [arguments]... - -Global Arguments - -Command List - help ---------------------------- Print detailed description for a given argument (command name) - Example - download_testdata --------------- Download test data from Docker Hub - launch_notebooks ---------------- Launch jupyter notebooks - Build - build_train --------------------- Build Clara Train Docker image with cuCIM (& OpenSlide) - build_examples ------------------ Build cuCIM C++ examples -``` - -`./run help ` would show you detailed information about the command. - -```bash -./run help build_train -``` -``` -Build Clara Train Docker image with cuCIM (& OpenSlide) - -Build image from docker/Dockerfile-claratrain - -Arguments: - $1 - docker image name (default:cucim-train) -``` - -### download_testdata - -It downloads test data from DockerHub (`gigony/svs-testdata:little-big`) and make it available at `notebooks/input` folder. - -The folder has the following four files. - -- `TUPAC-TR-488.svs` -- `TUPAC-TR-467.svs` -- `image.tif` -- `image2.tif` - -#### Test Dataset - -`TUPAC-TR-488.svs` and `TUPAC-TR-467.svs` are from the dataset -of Tumor Proliferation Assessment Challenge 2016 (TUPAC16 | MICCAI Grand Challenge). - -- Website: -- Data link: - -#### Converted files - -- `image.tif` : 256x256 multi-resolution/tiled TIF conversion of TUPAC-TR-467.svs -- `image2.tif` : 256x256 multi-resolution/tiled TIF conversion of TUPAC-TR-488.svs - - -### launch_notebooks - -It launches a **Jupyter Lab** instance so that the user can experiment with cuCIM. - -After executing the command, type a password for the instance and open a web browser to access the instance. - -```bash -./run launch_notebooks -``` - -```bash -... -Port 10001 would be used...(http://172.26.120.129:10001) -2021-02-13 01:12:44 $ docker run --runtime nvidia --gpus all -it --rm -v /home/repo/cucim/notebooks:/notebooks -p 10001:10001 cucim-jupyter -c echo -n 'Enter New Password: '; jupyter lab --ServerApp.password="$(python3 -u -c "from jupyter_server.auth import passwd;pw=input();print(passwd(pw));" | egrep 'sha|argon')" --ServerApp.root_dir=/notebooks --allow-root --port=10001 --ip=0.0.0.0 --no-browser -Enter New Password: -[I 2021-02-13 01:12:47.981 ServerApp] dask_labextension | extension was successfully linked. -[I 2021-02-13 01:12:47.981 ServerApp] jupyter_server_proxy | extension was successfully linked. -... -``` - -### build_train - -It builds an image from the Clara Deploy SDK image. The image would install other useful python package as well as cu -CIM wheel file. - -`nvcr.io/nvidian/dlmed/clara-train-sdk:v3.1-ga-qa-5` is used and `docker/Dockerfile-claratrain` has the recipe of the image. - -You will need to have a permission to access `nvidian/dlmed` group in NGC. - -```bash -./run build_train - -docker run -it --rm cucim-train /bin/bash -``` - -### build_examples - -It builds C++ examples at `examples/cpp` folder by using `cmake` in `cucim-cmake` image that is built in runtime. - -After the execution, it would copy built file into `bin` folder and show how to execute it. - -```bash -./run build_examples -``` - -```bash -... - -Execute the binary with the following commands: - # Set library path - export LD_LIBRARY_PATH=/ssd/repo/cucim/dist/install/lib:$LD_LIBRARY_PATH - # Execute - ./bin/tiff_image notebooks/input/image.tif . -``` - -Its execution would show some metadata information and create two files -- `output.ppm` and `output2.ppm`. - -`.ppm` file can be viewed by `eog` in Ubuntu. -``` -$ ./bin/tiff_image notebooks/input/image.tif . -[Plugin: cucim.kit.cuslide] Loading... -[Plugin: cucim.kit.cuslide] Loading the dynamic library from: cucim.kit.cuslide@24.02.00.so -[Plugin: cucim.kit.cuslide] loaded successfully. Version: 0 -Initializing plugin: cucim.kit.cuslide (interfaces: [cucim::io::IImageFormat v0.1]) (impl: cucim.kit.cuslide) -is_loaded: true -device: cpu -metadata: {"key": "value"} -dims: YXC -shape: (26420, 19920, 3) -size('XY'): (19920, 26420) -channel_names: (R, G, B) - -is_loaded: true -device: cpu -metadata: {"key": "value"} -dims: YXC -shape: (1024, 1024, 3) -size('XY'): (1024, 1024) -channel_names: (R, G, B) -[Plugin: cucim.kit.cuslide] Unloaded. - -$ eog output.ppm -$ eog output2.ppm -``` diff --git a/python/cucim/docs/index.md b/python/cucim/docs/index.md deleted file mode 100644 index 6789e7961..000000000 --- a/python/cucim/docs/index.md +++ /dev/null @@ -1,86 +0,0 @@ - - -```{toctree} -:maxdepth: 3 -:hidden: - -getting_started/index -api_reference/index -release_notes/index -roadmap/index -``` - - - -# cuCIM Documentation - -Current latest version is [Version 24.02.00](release_notes/v24.02.00.md). - -**cuCIM** a toolkit to provide GPU accelerated I/O, image processing & computer vision primitives for N-Dimensional images with a focus on biomedical imaging. - -:::{figure-md} fig-cucim-architecture -:class: myclass - -cuCIM Architecture - -RAPIDS cuCIM Architecture -::: - - - - - - diff --git a/python/cucim/docs/release_notes/index.md b/python/cucim/docs/release_notes/index.md deleted file mode 100644 index 84183cc4d..000000000 --- a/python/cucim/docs/release_notes/index.md +++ /dev/null @@ -1,60 +0,0 @@ -# Release Notes - -```{toctree} -:glob: -:hidden: -:maxdepth: 2 - -v0.19.0 -v0.18.3 -v0.18.2 -v0.18.1 -v0.18.0 -v0.3.0 -v0.2.0 -v0.1.1 -v0.1.0 -``` - -## Version 0.19 - -```{toctree} -:maxdepth: 2 - -v0.19.0 -``` - -## Version 0.18 - -```{toctree} -:maxdepth: 2 - -v0.18.3 -v0.18.2 -v0.18.1 -v0.18.0 -``` - -## Version 0.3 - -```{toctree} -:maxdepth: 2 - -v0.3.0 -``` - -## Version 0.2 - -```{toctree} -:maxdepth: 2 - -v0.2.0 -``` -## Version 0.1 - -```{toctree} -:maxdepth: 2 - -v0.1.1 -v0.1.0 -``` diff --git a/python/cucim/docs/release_notes/v0.1.0.md b/python/cucim/docs/release_notes/v0.1.0.md deleted file mode 100644 index 0d2f40150..000000000 --- a/python/cucim/docs/release_notes/v0.1.0.md +++ /dev/null @@ -1,24 +0,0 @@ -# Version 0.1.0 (October 28, 2020) - -## What are provided in the package? - -- API Documents -- C++ & Python library packages -- Example project (using CMake. For C++) -- Example code in a Jupyter notebook (with a docker image) - -## Features - -For v1, we have a limited feature focusing on generic tiled/multi-resolution TIFF file format (Jpeg-compressed RGB image). - -- Loading part of the image using read_region() API -- Saving the loaded image in .ppm format (loadable by 'eog' viewer in Ubuntu or PIL library in Python) - -## Limitations - -- The following feature is not implemented yet - - Accessing image data through container() API (in C++) or as a numpy array (using `__array_interface__` in Python) -- Errors are not handled properly yet (e.g., loading non-existing file would cause a crash) -- Some metadata (e.g., physical size) is hard-coded for now -- C++ library is forced to set `_GLIBCXX_USE_CXX11_ABI` to 0 due to [Dual ABI](https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html) problem - - Will package CXX11 ABI library separately later diff --git a/python/cucim/docs/release_notes/v0.1.1.md b/python/cucim/docs/release_notes/v0.1.1.md deleted file mode 100644 index 7ed9b5832..000000000 --- a/python/cucim/docs/release_notes/v0.1.1.md +++ /dev/null @@ -1,18 +0,0 @@ -# Version 0.1.1 (November 3, 2020) - -## What's new? - -The following features are implemented. -- Access image data through `container()` API (in C++) or as a numpy array (using `__array_interface__` in Python) - - [Example](../notebooks/Basic_Usage.html#array-interface-support) -- Remove hard-coded metadata for `resolutions` - - [Example](../notebooks/Basic_Usage.html#see-metadata) -- Sort resolution levels (level 0: the largest resolution) for `CuImage::read_region()` method - - Add `TIFF::level_ifd(size_t level_index)` method -- Pass SWIPAT - -## Fixes - -- Fix a crash that occurs when opening a non-existing file -- Fix an error that occurs when loading a TIFF image that has `TIFFTAG_JPEGTABLES` tag - - `Quantization table 0x00 was not defined` message can be shown diff --git a/python/cucim/docs/release_notes/v0.18.0.md b/python/cucim/docs/release_notes/v0.18.0.md deleted file mode 100644 index f4d16f682..000000000 --- a/python/cucim/docs/release_notes/v0.18.0.md +++ /dev/null @@ -1,7 +0,0 @@ -# Version 0.18.0 (March 16, 2021) - -## What's new? - -- The namespace of the project is changed from `cuimage` to `cucim` and project name is now `cuCIM` -- Support Deflate(zlib) compression in Generic TIFF Format. - - [libdeflate](https://github.com/ebiggers/libdeflate) library is used to decode the deflate-compressed data. diff --git a/python/cucim/docs/release_notes/v0.18.1.md b/python/cucim/docs/release_notes/v0.18.1.md deleted file mode 100644 index 0a1d15001..000000000 --- a/python/cucim/docs/release_notes/v0.18.1.md +++ /dev/null @@ -1,7 +0,0 @@ -# Version 0.18.1 (March 17, 2021) - -## What's new? - -- Disable using cuFile - - Remove warning messages when libcufile.so is not available. - - `[warning] CuFileDriver cannot be open. Falling back to use POSIX file IO APIs.` diff --git a/python/cucim/docs/release_notes/v0.18.2.md b/python/cucim/docs/release_notes/v0.18.2.md deleted file mode 100644 index 44b81fba3..000000000 --- a/python/cucim/docs/release_notes/v0.18.2.md +++ /dev/null @@ -1,13 +0,0 @@ -# Version 0.18.2 (March 29, 2021) - -## What's new? - -- Use the white background only for Philips TIFF file. - - Generic TIFF file would have the black background by default. - -## Fixes - -- Fix upside-downed image for TIFF file if the image is not RGB & tiled image with JPEG/Deflate-compressed tiles. - - Use slow path if the image is not RGB & tiled image with JPEG/Deflate-compressed tiles. - - Show an error message if the out-of-boundary cases are requested with the slow path. - - `ValueError: Cannot handle the out-of-boundary cases for a non-RGB image or a non-Jpeg/Deflate-compressed image.` diff --git a/python/cucim/docs/release_notes/v0.18.3.md b/python/cucim/docs/release_notes/v0.18.3.md deleted file mode 100644 index c3dead3c1..000000000 --- a/python/cucim/docs/release_notes/v0.18.3.md +++ /dev/null @@ -1,5 +0,0 @@ -# Version 0.18.3 (April 16, 2021) - -## Fixes - -- Fix memory leaks that occur when reading completely out-of-boundary regions. diff --git a/python/cucim/docs/release_notes/v0.19.0.md b/python/cucim/docs/release_notes/v0.19.0.md deleted file mode 100644 index 00b2b5083..000000000 --- a/python/cucim/docs/release_notes/v0.19.0.md +++ /dev/null @@ -1,7 +0,0 @@ -# Version 0.19.0 (April 19, 2021) - -## What's new? - -- The first release of cuClaraImage + [cupyimg](https://github.com/mritools/cupyimg) as a single project `cuCIM`. - - `cucim.skimage` package is added from `cupyimg`. - - CuPy (>=9.0.0b3), scipy, scikit-image is required to use cuCIM's scikit-image-compatible API. diff --git a/python/cucim/docs/release_notes/v0.2.0.md b/python/cucim/docs/release_notes/v0.2.0.md deleted file mode 100644 index e5817c379..000000000 --- a/python/cucim/docs/release_notes/v0.2.0.md +++ /dev/null @@ -1,32 +0,0 @@ -# Version 0.2.0 (December 18, 2020) - -## What's new? - -The following features are implemented. -- Make it work without CUDA runtime installed - - CUDA 11.0 runtime is embedded in the .whl file -- Develop a wrapper for cufile API - - Refer to `Accessing File with GDS` (/notebooks/Accessing_File_with_GDS.html) notebook - - Did some experiments on accessing TIFF files (see `File-access Experiments on TIFF File` (/notebooks/File-access_Experiments_on_TIFF.html) notebook) -- Support loading [Philips TIFF](https://openslide.org/formats/philips/) files - - Loading multi-resolution images and associated images (such as 'macro' and 'label') from TIFF Image File Directory (IFD) are available - - Please see `Basic Usage` (/notebooks/Basic_Usage.html#associated-images) notebook to know how to access the associated images. - - ```{admonition} Characteristic of Philips TIFF format - As specified in [Philips format](https://openslide.org/formats/philips/), - - "slides may omit pixel data for TIFF tiles not in an ROI; this is represented as a TileOffset of 0 and a TileByteCount of 0. When such tiles are downsampled into a tile that does contain pixel data, their contents are rendered as white pixels." - - For the above reason, some Philips TIFF images can actually hold important information (‘tiles that are not ROIs or tissues’) which can expedite pre-processing by discarding unnecessarily tiles. Due to feature parity with Openslide, cuClaraImage also renders such tiles as white pixels. Please let us know and suggest APIs for getting the information if such non-ROI region information is useful to you. - ``` - - The following tasks remain for feature-parity with OpenSlide - - Support Philips TIFF associated image from metadata - - Expose XML metadata of the Philips TIFF file as JSON -- Provide an example/plan for the interoperability with DALI - - Created a notebook for the feasibility and plan (see `Working with DALI` (/notebooks/Working_with_DALI.html) notebook) - -## Fixes/Improvements - -- Fix again for the error that occurs when loading a TIFF image that has `TIFFTAG_JPEGTABLES` tag - - `ERROR in line 126 while reading JPEG header tables: Not a JPEG file: starts with 0x01 0x00` message can be shown -- Force-reinstall cucim Python package in the Tox environment whenever `gen_docs` or `gen_docs_dev` command is executed diff --git a/python/cucim/docs/release_notes/v0.3.0.md b/python/cucim/docs/release_notes/v0.3.0.md deleted file mode 100644 index bac97083b..000000000 --- a/python/cucim/docs/release_notes/v0.3.0.md +++ /dev/null @@ -1,53 +0,0 @@ -# Version 0.3.0 (February 16, 2021) - -## What's new? - -- A new name and namespace (currently `cuClaraImage` and `cucim`) will be picked in `v0.4.0` once it's finalized -- Add metadata and associated images for Philips TIFF Format - - Support Philips TIFF associated image from XML metadata -- Expose metadata of the image as JSON - - `raw_metadata` property returns the image description of the first IFD in the TIFF image - - `resolution_dim_start` property of `CuImage` is removed - - `physical_pixel_size` property is renamed to `spacing` - - `ndim`/`origin`/`direction`/`coord_sys`/`spacing_units` properties are added - - Please see `Basic Usage` (/notebooks/Basic_Usage.html#see-metadata) notebook to know how to access metadata. -- Support reading out of boundary region - - `read_region()` method now accepts a region that is out of the image boundary - - `size` parameter accepts values that are up to the size of the highest-resolution image - - The out of the boundary area would be filled with the white color -- Showcase the interoperability with DALI - - Please see `Working with DALI` (/notebooks/Working_with_DALI.html) notebook - -## Fixes/Improvements - -- Fix wrong parameter interpretation (`size` in `read_region()` method). Now only `location` is level-0 based coordinates (using the level-0 reference frame). `size` is output image size. (Thanks `@Behrooz Hashemian`!) -- Static link with cufile when [libcufile.a is available](https://docs.google.com/document/d/1DQ_T805dlTcDU9bGW32E2ak5InX8iUcNI7Tq_lXAtLc/edit?ts=5f90bc5f) -- Implemented but disabled for now -- Fix a memory leak for cuslide::tiff::TIFF object (248 bytes) in CuImage class. -- Fix incorrect method visibility in a plugin file (.so) -- Replace malloc with better allocator for small-sized memory - - Use a custom allocator(pmr) for metadata data -- Copy data using `std::vector::insert()` instead of `std::vector::push_back()` - - Small improvement (when opening TIFF file), but benchmark result showed that time for assigning 50000 tile offset/size (uint64_t) is reduced from 118 us to 8 us -- Parameterize input library/image for testing -- Update test input path - - Add test data under `test_data/private` : See `test_data/README.md` file. -- Setup development environment with VSCode (in addition to CLion) -- Use a VSCode plugin for local test execution - - Now it uses `matepek.vscode-catch2-test-adapter` extension - - -- Prevent relative path problem of .so with no DT_SONAME -- Refactoring - - Add Development environment for VSCode - - Update run script - - Add settings for VSCode - - Refactor CMakeLists.txt - - Add definition `_GLIBCXX_USE_CXX11_ABI=0` to all sub directories - - Compile multiple architectures for CUDA Kernels - - Parameterize input files for tests - - Add `test_data` folder for test data - - plugin folder is from `CUCIM_TEST_PLUGIN_PATH` environment variable now (with static plugin name (cucim.kit.cuslide@0.3.0.so)) - - Move cucim_malloc() to memory_manager.cu - -## Limitations - -- Some metadata (`origin`/`direction`/`coord_sys`/`spacing`/`spacing_units`) doesn't have correct values for now. diff --git a/python/cucim/docs/requirements.txt b/python/cucim/docs/requirements.txt deleted file mode 100644 index f211153ad..000000000 --- a/python/cucim/docs/requirements.txt +++ /dev/null @@ -1,23 +0,0 @@ -Sphinx==4.5.0 -sphinx-autobuild -myst-parser -sphinx-book-theme -numpy -matplotlib -ipywidgets -pandas -nbclient -myst-nb -sphinx-togglebutton -sphinx-copybutton -plotly<5 -sphinxcontrib-bibtex<2.0.0 # https://github.com/executablebooks/jupyter-book/issues/1137 -sphinx-thebe -sphinx-panels -ablog -docutils==0.16 # 0.17 causes error. https://github.com/executablebooks/MyST-Parser/issues/343 -pydata_sphinx_theme -sphinxemoji -cupy-cuda110 -scipy -scikit-image diff --git a/python/cucim/docs/roadmap/index.md b/python/cucim/docs/roadmap/index.md deleted file mode 100644 index 7ac8596a0..000000000 --- a/python/cucim/docs/roadmap/index.md +++ /dev/null @@ -1,370 +0,0 @@ -# Roadmap - - - - - - -```{eval-rst} -The following list is on the road |:smile:| -``` - -## cuCIM - -### {fa}`calendar-alt,text-info mr-1` `v0.1` - -- {fa}`check,text-success mr-1` Abstract C++ API -- [v0.1.0](../release_notes/v0.1.0.md) -- {fa}`check,text-success mr-1` Benchmark with openslide (for generic tiff file) : link -- [v0.1.0](../release_notes/v0.1.0.md) -- {fa}`check,text-success mr-1` Usage with C++ API -- [v0.1.0](../release_notes/v0.1.0.md) -- {fa}`check,text-success mr-1` Implement Python API -- [v0.1.0](../release_notes/v0.1.0.md) -- {fa}`check,text-success mr-1` Usage with Python API -- [v0.1.0](../release_notes/v0.1.0.md) - 1. Setup document/build system - 1. Package it -- {fa}`check,text-success mr-1` Sort resolution levels (level 0: the largest resolution) for `CuImage::read_region()` method -- [v0.1.1](../release_notes/v0.1.1.md) -- {fa}`check,text-success mr-1` Fix a crash that occurs when opening a non-existing file -- [v0.1.1](../release_notes/v0.1.1.md) -- {fa}`check,text-success mr-1` Fix an error that occurs when loading a TIFF image that has `TIFFTAG_JPEGTABLES` tag -- [v0.1.1](../release_notes/v0.1.1.md) - - `Quantization table 0x00 was not defined` message can be shown -- {fa}`check,text-success mr-1` Sort resolution levels (level 0: the largest resolution) for `CuImage::read_region()` method -- [v0.1.1](../release_notes/v0.1.1.md) -- {fa}`check,text-success mr-1` Pass SWIPAT -- [v0.1.1](../release_notes/v0.1.1.md) -- {fa}`check,text-success mr-1` Ignore link check for relative link with header that starts with `/` or `..` -- [v0.1.1](../release_notes/v0.1.1.md) - -### {fa}`calendar-alt,text-info mr-1` `v0.2` - -- {fa}`check,text-success mr-1` Make it work with various CUDA versions -- [v0.2.0](../release_notes/v0.2.0.md) -- {fa}`check,text-success mr-1` Develop a wrapper for cufile API -- [v0.2.0](../release_notes/v0.2.0.md) -- {fa}`check,text-success mr-1` Support loading [Philips TIFF](https://openslide.org/formats/philips/) files - - {fa}`check,text-success mr-1` Support Philips TIFF multi-resolution images -- [v0.2.0](../release_notes/v0.2.0.md) - - {fa}`check,text-success mr-1` Support Philips TIFF associated image from IFD -- [v0.2.0](../release_notes/v0.2.0.md) -- {fa}`check,text-success mr-1` Provide an example/plan for the interoperability with DALI -- [v0.2.0](../release_notes/v0.2.0.md) -- {fa}`check,text-success mr-1` Fix again for the error that occurs when loading a TIFF image that has `TIFFTAG_JPEGTABLES` tag -- [v0.2.0](../release_notes/v0.2.0.md) -- {fa}`check,text-success mr-1` Force-reinstall cucim Python package in the Tox environment whenever `gen_docs` or `gen_docs_dev` command is executed -- [v0.2.0](../release_notes/v0.2.0.md) - -### {fa}`calendar-alt,text-info mr-1` `v0.3` - -- {fa}`check,text-success mr-1` Add metadata and associated images for Philips TIFF Format - - {fa}`check,text-success mr-1` Support Philips TIFF associated image from XML metadata -- [v0.3.0](../release_notes/v0.3.0.md) -- {fa}`check,text-success mr-1` Expose metadata of the image as JSON -- [v0.3.0](../release_notes/v0.3.0.md) -- {fa}`check,text-success mr-1` Support reading out of boundary region -- [v0.3.0](../release_notes/v0.3.0.md) -- {fa}`check,text-success mr-1` Showcase the interoperability with DALI -- [v0.3.0](../release_notes/v0.3.0.md) - - -### {fa}`calendar-alt,text-info mr-1` `v0.18` - -- {fa}`check,text-success mr-1` Support Deflate(zlib)-compressed RGB Tiff Image -- [v0.18.0](../release_notes/v0.18.0.md) -- {fa}`check,text-success mr-1` Change the namespaces (`cuimage` to `cucim`) -- [v0.18.0](../release_notes/v0.18.0.md) - -### {fa}`calendar-alt,text-info mr-1` `v0.19` - -- Refactor the cupyimg package to incorporate it in the adaption layer of cuCIM. Change the namespaces -- Support `__cuda_array_interface__` and DLPack object in Python API -- Support loading data to CUDA memory -- Implement cache mechanism for tile-based image formats - -### {fa}`calendar-alt,text-info mr-1` `v0.20` - -- Make use of nvJPEG to decode TIFF Files -- Support .svs format with nvJPEG2000 -- Design a plug-in mechanism for developing CUDA based 2D/3D imaging filters -- Implement a filter (example: Otsu Thresholding) -- Support loading MHD files - -### {fa}`calendar-alt,text-info mr-1` `v0.21` - -- Support JPEG, Jpeg 2000, PNG, BMP formats -- Support MIRAX/3DHISTECH (.mrxs) format -- Support LEICA (.scn) format - -### {fa}`calendar-alt,text-info mr-1` `v0.22` - -- Design a CT bone segmentation filter -- Provide a robust CI/CD system -- Define KPIs and publish report -- Update project to use the latest [Carbonite SDK](https://docs.omniverse.nvidia.com/kit/docs/carbonite/latest/docs/carb/Framework.html) for supporting plug-in architecture - -## TODOs - -### Image Format - -#### Generic TIFF(.tif) - -- {fa}`check,text-success mr-1` Access image data through container() API (in C++) or as a numpy array (using `__array_interface__` in Python) -- [v0.1.1](../release_notes/v0.1.1.md) -- {fa}`check,text-success mr-1` Fix a crash that occurs when opening a non-existing file -- [v0.1.1](../release_notes/v0.1.1.md) -- {fa}`check,text-success mr-1` Fix an error that occurs when loading a TIFF image that has `TIFFTAG_JPEGTABLES` tag -- [v0.1.1](../release_notes/v0.1.1.md) - - `Quantization table 0x00 was not defined` message can be shown -- {fa}`check,text-success mr-1` Fix again for the error that occurs when loading a TIFF image that has `TIFFTAG_JPEGTABLES` tag -- [v0.2.0](../release_notes/v0.2.0.md) - - `ERROR in line 126 while reading JPEG header tables: Not a JPEG file: starts with 0x01 0x00` message can be shown -- {fa}`check,text-success mr-1` Expose metadata of the TIFF file as JSON -- [v0.3.0](../release_notes/v0.3.0.md) -- {fa}`check,text-success mr-1` Support reading out of boundary region -- [v0.3.0](../release_notes/v0.3.0.md) -- {fa}`check,text-success mr-1` Support Deflate(zlib)-compressed RGB Tiff Image -- [v0.18.0](../release_notes/v0.18.0.md) -- Implement cache mechanism for tile-based image formats -- [v0.19.1](../release_notes/v0.19.1.md) -- Use CuFileDriver class for reading files -- Make use of nvJPEG to decode TIFF Files -- [v0.20.0](../release_notes/v0.20.0.md) - -- Remove hard-coded metadata (Fill correct values for `cucim::io::format::ImageMetadataDesc`) - - {fa}`check,text-success mr-1` `resolutions` -- [v0.1.1](../release_notes/v0.1.1.md) - - `metadata` -- Check if the `tile_rester` memory is freed by jpeg-turbo or not - - {fa}`check,text-success mr-1` `cpp/plugins/cucim.kit.cuslide/src/cuslide/tiff/ifd.cpp:365` in `IFD::read_region_tiles_libjpeg()` -- [v0.3.0](../release_notes/v0.3.0.md) - - `cpp/plugins/cucim.kit.cuslide/src/cuslide/cuslide.cpp:123` in `parser_parse` -- [v0.19.1](../release_notes/v0.19.1.md) -- Fill correct metadata information for `CuImage::read_region()` - - `cpp/src/cucim.cpp:417` -- [v0.19.1](../release_notes/v0.19.1.md) -- Check and use `ifd->samples_per_pixel()` once we can get RGB data instead of RGBA - - `cpp/plugins/cucim.kit.cuslide/src/cuslide/tiff/ifd.cpp:280` in `IFD::read_region_tiles_libjpeg()` -- [v0.19.1](../release_notes/v0.19.1.md) -- Consider endianness of the .tif file - - `cpp/plugins/cucim.kit.cuslide/src/cuslide/tiff/ifd.cpp:329` in `IFD::read_region_tiles_libjpeg()` -- Consider tile's depth tag - - `cpp/plugins/cucim.kit.cuslide/src/cuslide/tiff/ifd.cpp:329` in `IFD::read_region_tiles_libjpeg()` -- Make `file_handle_` object to pointer - - `cpp/plugins/cucim.kit.cuslide/src/cuslide/tiff/tiff.cpp:50` in `TIFF::TIFF()` -- Remove assumption of sub-resolution dims to 2 - - `cpp/plugins/cucim.kit.cuslide/src/cuslide/tiff/tiff.cpp:140` in `TIFF::read()` - -#### [Philips TIFF](https://openslide.org/formats/philips/) (.tif) - -- {fa}`check,text-success mr-1` Support Philips TIFF multi-resolution images -- [v0.2.0](../release_notes/v0.2.0.md) -- {fa}`check,text-success mr-1` Support Philips TIFF associated image from IFD -- [v0.2.0](../release_notes/v0.2.0.md) -- {fa}`check,text-success mr-1` Support Philips TIFF associated image from XML metadata -- [v0.3.0](../release_notes/v0.3.0.md) -- {fa}`check,text-success mr-1` Expose XML metadata of the Philips TIFF file as JSON -- [v0.3.0](../release_notes/v0.3.0.md) - -#### .mhd - -- Support loading MHD files -- [v0.20.0](../release_notes/v0.20.0.md) - -#### .svs - -- Support .svs format with nvJPEG2000 -- [v0.20.0](../release_notes/v0.20.0.md) - -#### .png - -- Support .png with [libspng](https://github.com/randy408/libspng/) -- [v0.21.0](../release_notes/v0.21.0.md) - - **libspng** is faster than **libpng** (but doesn't support encoding) - -#### .jpg - -- Support .jpg with libjpeg-turbo and nvJPEG -- [v0.21.0](../release_notes/v0.21.0.md) - -#### .jp2/.j2k - -- Support .jp2/.j2k files with OpenJpeg and nvJPEG2000 -- [v0.21.0](../release_notes/v0.21.0.md) - -#### .bmp - -- Support .bmp file natively -- [v0.21.0](../release_notes/v0.21.0.md) - -#### .mrxs - -- Support MIRAX/3DHISTECH (.mrxs) format -- [v0.21.0](../release_notes/v0.21.0.md) - -#### .scn - -- Support LEICA (.scn) format -- [v0.21.0](../release_notes/v0.21.0.md) - -#### .dcm - -- Support DICOM format -- Support reading segmentation image instead of main pixel array - - `examples/cpp/dicom_image/main.cpp:37` - -#### .iSyntax - -- Support Philips iSyntax format - - - - - -### Image Filter - -#### Basic Filter - -- Design a plug-in mechanism for developing CUDA based 2D/3D imaging filters -- [v0.20.0](../release_notes/v0.20.0.md) -- Implement a filter (example: Otsu Thresholding) -- [v0.20.0](../release_notes/v0.20.0.md) - -#### Medical-specific Filter - -- Design a CT bone segmentation filter -- [v0.22.0](../release_notes/v0.22.0.md) - -### Performance Improvements - -- {fa}`check,text-success mr-1` Copy data using `std::vector::insert()` instead of `std::vector::push_back()` -- [v0.3.0](../release_notes/v0.3.0.md) - - `cpp/plugins/cucim.kit.cuslide/src/cuslide/tiff/ifd.cpp:78` in `IFD::IFD()` - - `cpp/plugins/cucim.kit.cuslide/src/cuslide/tiff/ifd.cpp:98` in `IFD::IFD()` - - Benchmark result showed that time for assigning 50000 tile offset/size (uint64_t) is reduced from 118 us to 8 us. -- {fa}`check,text-success mr-1` Replace malloc with better allocator for small-sized memory -- [v0.3.0](../release_notes/v0.3.0.md) - - Use a custom allocator(pmr) for metadata data. -- Try to use `__array_struct__`. Access to array interface could be faster - - - - Check the performance difference between python int vs python long later - - `python/pybind11/cucim_py.cpp:234` in `get_array_interface()` -- Check performance - - `cpp/plugins/cucim.kit.cuslide/src/cuslide/tiff/ifd.cpp:122` in `IFD::read()` : string concatenation - -### GPUDirect-Storage (GDS) Support - -- {fa}`check,text-success mr-1` Develop a wrapper for cufile API -- [v0.2.0](../release_notes/v0.2.0.md) -- {fa}`check,text-success mr-1` Static link with cufile when [libcufile.a is available](https://docs.google.com/document/d/1DQ_T805dlTcDU9bGW32E2ak5InX8iUcNI7Tq_lXAtLc/edit?ts=5f90bc5f) -- [v0.3.0](../release_notes/v0.3.0.md) - -### Interoperability - -- {fa}`check,text-success mr-1` Provide an example/plan for the interoperability with DALI -- [v0.2.0](../release_notes/v0.2.0.md) -- {fa}`check,text-success mr-1` Showcase the interoperability with DALI -- [v0.3.0](../release_notes/v0.3.0.md) -- Support `__cuda_array_interface__` and DLPack object in Python API -- [v0.19.1](../release_notes/v0.19.1.md) - - https://docs.cupy.dev/en/stable/reference/interoperability.html#dlpack - - https://github.com/pytorch/pytorch/pull/11984 -- Refactor the cupyimg package to incorporate it in the adaption layer of cuCIM. Change the namespaces -- [v0.19.0](../release_notes/v0.19.0.md) - - Implement/expose `scikit-image`-like image loading APIs (such as `imread`) and filtering APIs for cuCIM library by using cuCIM's APIs -- Support DALI's CPU/GPU Tensor: -- Support loading data to CUDA memory -- [v0.19.1](../release_notes/v0.19.1.md) -- Consider adding `to_xxx()` methods in Python API - - `examples/python/tiff_image/main.py:125` -- Support byte-like object for CuImage object so that the following method works -- [v0.19.1](../release_notes/v0.19.1.md) - ```python - from PIL import Image - ... - #np_img_arr = np.asarray(region) - #Image.fromarray(np_img_arr) - - Image.fromarray(region) - # /usr/local/lib/python3.6/dist-packages/PIL/Image.py in frombytes(self, data, decoder_name, *args) - # 792 d = _getdecoder(self.mode, decoder_name, args) - # 793 d.setimage(self.im) - # --> 794 s = d.decode(data) - # 795 - # 796 if s[0] >= 0: - # TypeError: a bytes-like object is required, not 'cucim._cucim.CuImage' - ``` -- Provide universal cucim adaptors for DALI (for cucim::io::format::IImageFormat and cucim::filter::IImageFilter interfaces) -- Support pretty display for IPython(Jupyter Notebook) - - https://ipython.readthedocs.io/en/stable/config/integrating.html#integrating-your-objects-with-ipython - -### Pipeline - -- Use app_dp_sample pipeline to convert input image(.svs) of Nuclei segmentation pipeline(app_dp_nuclei) to .tif image - - Load .tif file using cuCIM for Nuclei segmentation pipeline - -### Python API - -- Feature parity with OpenSlide -- Add context manager for CuImage class (for `close()` method) -- [v0.19.1](../release_notes/v0.19.1.md) - -### C++ API - -- Design filtering API (which can embrace CuPy/CVCore/CuPyImg/OpenCV/scikit-image/dask-image) -- Feature parity with OpenSlide - -- {fa}`check,text-success mr-1` Sort resolution levels (level 0: the largest resolution) for `CuImage::read_region()` method -- [v0.1.1](../release_notes/v0.1.1.md) - - Add `TIFF::level_ifd(size_t level_index)` method -- {fa}`check,text-success mr-1` Support `metadata` and `raw_metadata` properties/methods -- [v0.3.0](../release_notes/v0.3.0.md) - - Implement `CuImage::metadata()` with JSON library (Folly or Modern JSON) - - `cpp/src/cucim.cpp:238` -- `ImageMetadataDesc` struct - - {fa}`check,text-success mr-1` `resolution_dim_start` field: Reconsider its use (may not be needed) -- [v0.3.0](../release_notes/v0.3.0.md) - - `cpp/include/cucim/io/format/image_format.h:53` - - `channel_names` field : `S`, `T`, and other dimension can have names so need to be generalized - - `cpp/include/cucim/io/format/image_format.h:51` -- `numpy_dtype()` method - - Consider bfloat16: - - Consider other byte-order (currently, we assume `little-endian`) - - `cpp/plugins/cucim.kit.cuslide/src/cuslide/tiff/tiff.cpp:53) - - `cpp/include/cucim/memory/dlpack.h:41` -- `checker_is_valid()` method - - Add `buf_size` parameter and implement the method - - `cpp/plugins/cucim.kit.cuslide/src/cuslide/cuslide.cpp:68` - -- Consider default case (how to handle -1 index?) - - `cpp/src/io/device.cpp` in `Device::Device()` -- Implement `Device::parse_type()` - - `cpp/src/io/device.cpp:81` -- Implement `Device::validate_device()` - - `cpp/src/io/device.cpp:116` - -- Check illegal characters for `DimIndices::DimIndices()` - - `cpp/src/cucim.cpp:35` - - `cpp/src/cucim.cpp:46` - -- Implement `detect_format()` method - - `cpp/src/cucim.cpp:103` -- Detect available format for the file path - - Also consider if the given file path is folder path (DICOM case) - - `cpp/src/cucim.cpp:117` in `CuImage::CuImage()` -- Implement `CuImage::CuImage(const filesystem::Path& path, const std::string& plugin_name)` - - `cpp/src/cucim.cpp:128` -- Implement `CuImage::dtype()` - - Support string conversion like Device class - - `cpp/src/cucim.cpp:283` - -### Build - -- Check if `CMAKE_EXPORT_PACKAGE_REGISTRY` is duplicate and remove it - - `cucim/cpp/plugins/cucim.kit.cuslide/CMakeLists.txt:255` -- Install other dependencies for libtiff so that other compression methods are available - - `cucim/Dockerfile:32` -- {fa}`check,text-success mr-1` Setup development environment with VSCode (in addition to CLion) -- [v0.3.0](../release_notes/v0.3.0.md) -- Use prebuilt libraries for dependencies - -### Test - -- {fa}`check,text-success mr-1` Parameterize input library/image -- [v0.3.0](../release_notes/v0.3.0.md) - - `/ssd/repo/cucim/cpp/tests/test_read_region.cpp:69` in `Verify read_region` - - `/ssd/repo/cucim/cpp/tests/test_cufile.cpp:79` in `Verify libcufile usage` -- {fa}`check,text-success mr-1` Use a VSCode plugin for local test execution -- [v0.3.0](../release_notes/v0.3.0.md) - - `matepek.vscode-catch2-test-adapter` extension - - - -### Platform - -- Support Windows (currently only Linux package is available) - -### Package & CI/CD - -- {fa}`check,text-success mr-1` Make it work with various CUDA versions -- [v0.2.0](../release_notes/v0.2.0.md) - - Currently, it is linked to CUDA 11.0 library - - Refer to PyTorch's PyPi package - - The PyPi package embeds CUDA runtime library. - - https://github.com/pytorch/pytorch/issues/47268#issuecomment-721996861 -- Move to Github Project -- Move `tox` setup from python folder to the project root folder -- Setup Conda recipe -- Setup automated test cases -- Provide a robust CI/CD system -- [v0.22.0](../release_notes/v0.22.0.md) -- Define KPIs and publish report -- [v0.22.0](../release_notes/v0.22.0.md) - -- Add license files to the package -- Package a separate CXX11 ABI library - - Currently, C++ library is forced to set `_GLIBCXX_USE_CXX11_ABI` to 0 due to [Dual ABI](https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html) problem - - `cpp/CMakeLists.txt:98` -- Support CPack - - `CMakeLists.txt:177` - -### Documentation - -- {fa}`check,text-success mr-1` Pass SWIPAT -- [v0.1.1](../release_notes/v0.1.1.md) -- Refine README.md and relevant documents for the project -- Move Sphinx docs to the project root folder -- Add C++ API document -- Add C++ examples to Jupyter Notebook - - Can install C++ Kernel: -- {fa}`check,text-success mr-1` Ignore link check for relative link with header that starts with `/` or `..` -- [v0.1.1](../release_notes/v0.1.1.md) - - `python/cucim/docs/conf.py:71` - - -- {fa}`check,text-success mr-1` Force-reinstall cucim Python package in the Tox environment whenever `gen_docs` or `gen_docs_dev` command is executed -- [v0.2.0](../release_notes/v0.2.0.md) - - -- Simplify method signatures in Python API Docs - - `cucim._cucim.CuImage` -> `cucim.CuImage` -- Use new feature to reference a cross-link with header (from v0.13.0 of [myst-parser](https://pypi.org/project/myst-parser/)) - - - - - - - -### Plugin-system (Carbonite) - -- Update project to use the latest [Carbonite SDK](https://docs.omniverse.nvidia.com/kit/docs/carbonite/latest/docs/carb/Framework.html) for supporting plug-in architecture -- [v0.22.0](../release_notes/v0.22.0.md) - - Migrate to use Carbonite SDK as it is - - Update to use Minimal Carbonite SDK - -- Handle errors and log error message once switched to use Carbonite SDK's built-in error routine - - `cpp/plugins/cucim.kit.cuslide/src/cuslide/tiff/ifd.cpp` : when reading field info - - `cpp/plugins/cucim.kit.cuslide/src/cuslide/tiff/ifd.cpp` in `IFD::read()` : memory size check if `out_buf->data` has high-enough memory -- Get plugin name from file_path - - `cpp/src/core/cucim_plugin.cpp:53` in `Plugin::Plugin()` -- Generalize `CuImage::ensure_init()` - - 'LINUX' path separator is used. Need to make it generalize once filesystem library is available - - `cucim/cpp/src/cucim.cpp:520` diff --git a/python/cucim/docs/spelling_wordlist.txt b/python/cucim/docs/spelling_wordlist.txt deleted file mode 100644 index f95eb78d8..000000000 --- a/python/cucim/docs/spelling_wordlist.txt +++ /dev/null @@ -1,11 +0,0 @@ -builtin -builtins -classmethod -staticmethod -classmethods -staticmethods -args -kwargs -callstack -Changelog -Indices diff --git a/python/cucim/docs/user_guide/index.md b/python/cucim/docs/user_guide/index.md deleted file mode 100644 index cd3d45227..000000000 --- a/python/cucim/docs/user_guide/index.md +++ /dev/null @@ -1 +0,0 @@ -# User Guide diff --git a/python/cucim/tox.ini b/python/cucim/tox.ini deleted file mode 100644 index 04fe6475b..000000000 --- a/python/cucim/tox.ini +++ /dev/null @@ -1,111 +0,0 @@ -[testenv:bootstrap] -deps = - jinja2 - matrix - tox -skip_install = true -commands = - python ci/bootstrap.py --no-env -passenv = - * -; a generative tox configuration, see: https://tox.readthedocs.io/en/latest/config.html#generative-envlist - -[tox] -envlist = - clean, - check, - docs, - docs-dev, - release, - {py35,py36,py37,py38,py39,pypy,pypy3}, - report -ignore_basepython_conflict = true - -[testenv] -basepython = - pypy: {env:TOXPYTHON:pypy} - pypy3: {env:TOXPYTHON:pypy3} - py35: {env:TOXPYTHON:python3.5} - py36: {env:TOXPYTHON:python3.6} - py37: {env:TOXPYTHON:python3.7} - py38: {env:TOXPYTHON:python3.8} - py39: {env:TOXPYTHON:python3.9} - {bootstrap,clean,check,report,docs,docs-dev,release,codecov}: {env:TOXPYTHON:python3} -setenv = - PYTHONPATH={toxinidir}/tests - PYTHONUNBUFFERED=yes -passenv = - * -usedevelop = false -deps = - pytest - pytest-travis-fold - pytest-cov -commands = - {posargs:pytest --cov --cov-report=term-missing -vv tests} - -[testenv:check] -deps = - docutils - check-manifest - black - ruff - readme-renderer - pygments - isort - twine -skip_install = true - -; https://packaging.python.org/guides/making-a-pypi-friendly-readme/#validating-restructuredtext-markup -commands = - twine check dist/*.whl - check-manifest {toxinidir} - ruff . - black --check . - isort --verbose --check-only --diff --filter-files . - -[testenv:docs] -; Installing from `sdist` package instead of `setup.py develop` (https://tox.readthedocs.io/en/latest/config.html#conf-usedevelop) -usedevelop = false -deps = - -r{toxinidir}/docs/requirements.txt -commands = - sphinx-build -E -b doctest docs {posargs:-dist/docs} - sphinx-build -E -b html docs {posargs:-dist/docs} - sphinx-build -b linkcheck docs {posargs:-dist/docs} - -[testenv:docs-dev] -; Installing from `sdist` package instead of `setup.py develop` (https://tox.readthedocs.io/en/latest/config.html#conf-usedevelop) -usedevelop = false -deps = - -r{toxinidir}/docs/requirements.txt -commands = - ; https://pypi.org/project/sphinx-autobuild/ - sphinx-autobuild {posargs:---host 0.0.0.0 --port 9999 docs dist/docs} - -[testenv:release] -usedevelop = false -allowlist_externals = /bin/bash -commands = - /bin/bash -c "{posargs}" - -[testenv:codecov] -deps = - codecov -skip_install = true -commands = - codecov [] - -[testenv:report] -deps = - coverage -skip_install = true -commands = - coverage report - coverage html - -[testenv:clean] -commands = coverage erase -skip_install = true -deps = - coverage