Skip to main content

HyperCTui User Interface to run svmbir code with AI

Project description

Anaconda-Server Badge pre-commit.ci status codecov

HyperCTui

A user interface to run supervised machine learning-based iterative reconstruction (SVMBIR) code with AI assistance for CT image reconstruction and analysis.

Quick Start

Installation

Using Pip

pip install hyperctui

The package requires tomopy to function, which can be installed either with conda or directly from source Github. Make sure you install tomopy before running the application if installed with pip.

Using Pixi (Recommended)

# Install pixi if you don't have it already
curl -fsSL https://pixi.sh/install.sh | bash

# Create a new environment with hyperctui
pixi init --name my-hyperctui-project
cd my-hyperctui-project
pixi add hyperctui

# Start the application
pixi run hyperctui

Using Conda

conda install -c neutronimaging hyperctui

Development Guide

Setting Up Development Environment

# Clone the repository
git clone https://github.com/ornlneutronimaging/HyperCTui.git
cd HyperCTui

# Set up development environment with pixi
pixi install

# Start the application
pixi run hyperctui

# Activate the environment
pixi shell

Development Workflow

# Run tests
pixi run test

# Run linting checks
pixi run ruff check .

# Format code
pixi run ruff format .

# Build the package
pixi run build-pypi

Adding Dependencies

To add new dependencies:

  1. Add Python dependencies to [project.dependencies] in pyproject.toml, or use pixi add --pypi <package-name>.

    • For example, to add numpy, run:

      pixi add --pypi numpy
      
  2. Add pixi/conda dependencies to [tool.pixi.dependencies] in pyproject.toml, or use pixi add <package-name>.

    • For example, to add scipy, run:

      pixi add scipy
      
  3. Run pixi install to update your environment.

Contribution Guidelines

For Neutron Data Project Developers at ORNL

  • Contact the project maintainer for developer access to the repository
  • Always create feature branches based off the next branch
  • All tests must pass before merging your changes
  • Submit a pull request for review, linking any related issues

For External Developers

  • Please fork the repository and make your suggested edits there
  • Submit a pull request from your fork to our next branch
  • Ensure all tests pass before submitting your PR

Coding Style

  • Run pixi run pre-commit install at least once in your checkout repository to ensure pre-commit hooks are installed locally
  • These hooks will automatically check and fix many common style issues
  • We follow PEP 8 guidelines with certain exceptions defined in our configuration files

Type Hinting and Documentation

  • We prefer using type hinting for all function parameters and return values:

    def process_image(image_data: np.ndarray, factor: float = 1.0) -> np.ndarray:
        """Process the given image data.
    
        Parameters
        ----------
        image_data : np.ndarray
            The input image as a numpy array
        factor : float, optional
            Scaling factor to apply, by default 1.0
    
        Returns
        -------
        np.ndarray
            The processed image
        """
    
  • Use NumPy style docstrings for all public methods and functions

Testing

  • New features should have corresponding unit tests
  • We do not force Test-Driven Development (TDD), but we highly recommend it
  • Aim for high test coverage, especially for critical functionality
  • Tests are automatically run on PR submission

How to Use

The application can be started with hyperctui in the Python environment it is installed, for development environment managed by pixi, use:

pixi run hyperctui

Known Issues

  1. When using pixi install for the first time, you might see the following error messages. The solution is to increase your file limit with ulimit -n 65535 and then run pixi install again.
Too many open files (os error 24) at path

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hyperctui-1.1.1.tar.gz (754.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hyperctui-1.1.1-py3-none-any.whl (784.8 kB view details)

Uploaded Python 3

File details

Details for the file hyperctui-1.1.1.tar.gz.

File metadata

  • Download URL: hyperctui-1.1.1.tar.gz
  • Upload date:
  • Size: 754.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for hyperctui-1.1.1.tar.gz
Algorithm Hash digest
SHA256 0275a2606b47288a0a355409db4770c6f9be9481d85edab49eb0eed0709d7000
MD5 79051f2ce36125b3e595ffcbd26c6fb7
BLAKE2b-256 4d068a82c90da1df04552b21f58e5d6f30ee076c2cb02a4a68d656a5eade9680

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyperctui-1.1.1.tar.gz:

Publisher: package.yml on ornlneutronimaging/HyperCTui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hyperctui-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: hyperctui-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 784.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for hyperctui-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 13f2cf8c6d4c6a12a4e333b312b45ef4a47797d189c9a79375b5a8f407ff0ea5
MD5 6439f73956485502c2754eb8e71a23b8
BLAKE2b-256 62926c2e092d38a642b34722534f65986099386ab06a8190e47ee1009e30d676

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyperctui-1.1.1-py3-none-any.whl:

Publisher: package.yml on ornlneutronimaging/HyperCTui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page