Skip to main content

Python based tool for Hough/Radon based EBSD indexing

Project description


Python based tool for Hough/Radon based EBSD orientation indexing.

Build status Documentation status PyPI version

The pattern processing is based on a GPU pipeline, and is based on the work of S. I. Wright and B. L. Adams. Metallurgical Transactions A-Physical Metallurgy and Materials Science, 23(3):759–767, 1992, and N. Krieger Lassen. Automated Determination of Crystal Orientations from Electron Backscattering Patterns. PhD thesis, The Technical University of Denmark, 1994.

The band indexing is achieved through triplet voting using the methods outlined by A. Morawiec. Acta Crystallographica Section A Foundations and Advances, 76(6):719–734, 2020.

Additionally NLPAR pattern processing is included (original distribution NLPAR; P. T. Brewick, S. I. Wright, and D. J. Rowenhorst. Ultramicroscopy, 200:50–61, May 2019.).

Documentation with a user guide, API reference, changelog, and contributing guide is available at


In order to avoid potential conflicts with other system python packages, it is strongly recommended to use a virtual environment, such as venv or conda environments.

The package can be installed from the Python Package Index (pip) or from source on all operating systems:

pip install pyebsdindex

Installing with optional GPU support via pyopencl:

pip install pyebsdindex[gpu]

Please refer to the pyopencl installation documentation in case installation fails.

Installing the package from source with optional dependencies for running tests

git clone
cd PyEBSDIndex
pip install --editable .[tests]

Also, if you want to run the example jupyter notebooks in the documentation, you will need to install jypterlab:

pip install jupyterlab


conda install jupyterlab

Additional installation notes


The latest versions of pyopencl installed from conda-forge do not automatically include linking to the MacOS OpenCL framework. If using a conda environment, it may be necessary to install:

conda install -c conda-forge ocl_icd_wrapper_apple

Apple in recent installs has switched to zsh as the default shell. It should be noted that zsh sees [...] as a pattern. Thus commands like:

pip install pyebsdindex[gpu]

Will return an error. "zsh: no matches found: [gpu]". The solution is to put the comand within '...' such as:

pip install 'pyebsdindex[gpu]'

MacOS with Apple Silicon

The Ray package used for distributed multi-processing only experimentally supports Apple's ARM64 architecture. More info is available here. In brief, to run on Apple ARM64, PyEBSDIndex should be installed in a conda environment. Assuming that Ray has already been installed (perhaps as a dependency) one has activated the conda environment in the terminal, run the commands below (the first two commands are to guarantee that grpcio is fully removed, they may send a message that the packages are not installed.):

pip uninstall ray
pip uninstall grpcio
conda install -c conda-forge grpcio
pip install 'ray[default]'

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

pyebsdindex-0.1rc2.tar.gz (94.9 kB view hashes)

Uploaded Source

Built Distribution

pyebsdindex-0.1rc2-py3-none-any.whl (111.6 kB view hashes)

Uploaded Python 3

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