Skip to main content

Python wrapper for ImageJ

Project description

Python wrapper for ImageJ

pyimagej provides a set of wrapper functions for integration between ImageJ and Python.

It also provides a high-level entry point imagej.IJ for invoking ImageJ Server APIs; see "ImageJ Server" below for details.

Installation

  1. Install Conda:

  2. Activate the conda-forge channel:

    conda config --add channels conda-forge
    conda config --set channel_priority strict
    
  3. Install pyimagej into a new conda environment:

    conda create -n pyimagej pyimagej openjdk=8
    
  4. Whenever you want to use pyimagej, activate its environment:

    conda activate pyimagej
    

Installation asides

  • If you want to use scikit-image in conjunction, as demonstrated below, you can install it also via:

    conda install scikit-image
    
  • The above command installs pyimagej with OpenJDK 8; if you leave off the openjdk=8 it will install OpenJDK 11 by default, which should also work, but is less well tested and may have more rough edges.

  • It is possible to dynamically install pyimagej from within a Jupyter notebook:

    import sys
    !conda install --yes --prefix {sys.prefix} -c conda-forge pyimagej openjdk=8
    
  • If you would prefer to install pyimagej via pip, more legwork is required. See this thread for hints.

Usage

Quick start

See this Jupyter notebook.

Creating the ImageJ gateway

Newest available version

If you want to launch the newest available release version of ImageJ:

import imagej
ij = imagej.init()

This invocation will automatically download and cache the newest release of net.imagej:imagej.

Explicitly specified version

You can specify a particular version, to facilitate reproducibility:

import imagej
ij = imagej.init('2.0.0-rc-68')
ij.getVersion()

With graphical capabilities

If you want to have support for the graphical user interface:

import imagej
ij = imagej.init(headless=False)
ij.ui().showUI()

Note there are issues with Java AWT via Python on macOS; see this article for a workaround.

Including ImageJ 1.x support

By default, the ImageJ gateway will not include the legacy layer for backwards compatibility with ImageJ 1.x. You can enable the legacy layer as follows:

import imagej
ij = imagej.init('net.imagej:imagej+net.imagej:imagej-legacy')

Including Fiji plugins

By default, the ImageJ gateway will include base ImageJ2 functionality only, without additional plugins such as those that ship with the Fiji distribution of ImageJ.

You can create an ImageJ gateway including Fiji plugins as follows:

import imagej
ij = imagej.init('sc.fiji:fiji')

From a local installation

If you have an installation of ImageJ2 such as Fiji, you can wrap an ImageJ gateway around it:

import imagej
ij = imagej.init('/Applications/Fiji.app')

Replace /Applications/Fiji.app with the actual location of your installation.

With more memory available to Java

Java's virtual machine (the JVM) has a "max heap" value limiting how much memory it can use. You can increase the value as follows:

import scyjava_config
scyjava_config.add_options('-Xmx6g')
import imagej
ij = imagej.init()

Replace 6g with the amount of memory Java should have. You can also pass other JVM arguments.

Using the ImageJ gateway

Once you have your ImageJ gateway, you can start using it. Here is an example:

# Import an image with scikit-image.
import skimage
from skimage import io
# NB: Blood vessel image from: https://www.fi.edu/heart/blood-vessels
img = io.imread('https://www.fi.edu/sites/fi.live.franklinds.webair.com/files/styles/featured_large/public/General_EduRes_Heart_BloodVessels_0.jpg')
import numpy as np
img = np.mean(img, axis=2)

# Invoke ImageJ's Frangi vesselness op.
vessels = np.zeros(img.shape, dtype=img.dtype)
ij.op().filter().frangiVesselness(ij.py.to_java(vessels), ij.py.to_java(img), [1, 1], 20)

See also test/test_imagej.py for other examples of usage.

ImageJ Server

Requirements

The imagej.server module has its own requirements:

  • requests is required to communicate with the ImageJ server.
  • pillow is required for the imagej.server.IJ.show() function. In addition, display or xv must be available to view the image.

Usage

There is a short usage example here.

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

pyimagej-0.5.0.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

pyimagej-0.5.0-py2-none-any.whl (8.9 kB view details)

Uploaded Python 2

File details

Details for the file pyimagej-0.5.0.tar.gz.

File metadata

  • Download URL: pyimagej-0.5.0.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.16

File hashes

Hashes for pyimagej-0.5.0.tar.gz
Algorithm Hash digest
SHA256 8774772b5d5c8189e8ba6a217713f10ff3a5815e7005ee0933822f52650243d0
MD5 389264bbc1ea555616475cc1a4ccfe2f
BLAKE2b-256 22266a7417193a9975acd9528c47f6e9a650dea15c50b45b809e0da930050c1b

See more details on using hashes here.

File details

Details for the file pyimagej-0.5.0-py2-none-any.whl.

File metadata

  • Download URL: pyimagej-0.5.0-py2-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.16

File hashes

Hashes for pyimagej-0.5.0-py2-none-any.whl
Algorithm Hash digest
SHA256 d93b4ca9f61887ac26fd478ce8bf5c1b2d274907dab38bc6da9da221c33d1522
MD5 d819c36aa9384c6ffd45aef2187a2fea
BLAKE2b-256 c8e10baf96a878bb70f4fe21e8c1103e94aa5a5d3c17433f4034019bb4e96274

See more details on using hashes here.

Supported by

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