Imaging, analysis, and simulation software for radio interferometry
Python modules for simulating and manipulating VLBI data and producing images with regularized maximum likelihood methods. This version is an early release so please raise an issue, submit a pull request, or email [email protected] if you have trouble or need help for your application.
The package contains several primary classes for loading, simulating, and manipulating VLBI data. The main classes are the
Caltableclasses, which provide tools for loading images and data, producing simulated data from realistic u-v tracks, calibrating, inspecting, and plotting data, and producing images from data sets in various polarizations using various data terms and regularizing functions.
The latest stable version (
1.2.2) is available on
PyPi. Simply install pip and run
.. code-block:: bash
pip install ehtim
Incremental updates are developed on the
dev branch_. To use the very latest (unstable) code, checkout the dev branch, change to the main eht-imaging directory, and run:
.. code-block:: bash
pip install .
Installing with pip will update most of the required libraries automatically (
If you want to use fast fourier transforms, you will also need to separately install
NFFT_ and its
pynfft wrapper. The simplest way is to use
conda_ to install both:
.. code-block:: bash
conda install -c conda-forge pynfft
Alternatively, first install NFFT manually following the instructions on the
readme, making sure to use the
--enable-openmpflag in compilation. Then install
pynfft, with pip, following the readme instructions to link the installation to where you installed NFFT. Finally, reinstall ehtim.
Certain eht-imaging functions require other external packages that are not automatically installed. In addition to pynfft, these include
networkx_ (for image comparison functions),
requests_ (for dynamical imaging), and
scikit-image_ (for Hough transforms). However, the vast majority of the code will work without these dependencies.
A full tutorial is in progress, but here are some ways to learn to use the code:
Start with the script examples/example.py, which contains a series of sample commands to load an image and array, generate data, and produce an image with various imaging algorithms.
Slides_ from the EHT2016 data generation and imaging workshop contain a tutorial on generating data with the VLBI imaging
website_, loading into the library, and producing an image.
If you use ehtim in your publication, please cite
Let us know if you use ehtim in your publication and we'll list it here!
High-Resolution Linear Polarimetric Imaging for the Event Horizon Telescope,
Chael et al. 2016_
Computational Imaging for VLBI Image Reconstruction,
Bouman et al. 2016_
Stochastic Optics: A Scattering Mitigation Framework for Radio Interferometric Imaging,
Reconstructing Video from Interferometric Measurements of Time-Varying Sources,
Bouman et al. 2017_
Dynamical Imaging with Interferometry,
Johnson et al. 2017_
Interferometric Imaging Directly with Closure Phases and Closure Amplitudes,
Chael et al. 2018_
A Model for Anisotropic Interstellar Scattering and its Application to Sgr A*,
Psaltis et al. 2018_
The Currrent Ability to Test Theories of Gravity with Black Hole Shadows,
Mizuno et al. 2018_
The Scattering and Intrinsic Structure of Sagittarius A* at Radio Wavelengths,
Johnson et al. 2018_
How to tell an accreting boson star from a black hole,
Olivares et al. 2018_
Testing General Relativity with the Black Hole Shadow Size and Asymmetry of Sagittarius A*: Limitations from Interstellar Scattering,
Zhu et al. 2018_
The Size, Shape, and Scattering of Sagittarius A* at 86 GHz: First VLBI with ALMA,
Issaoun et al. 2019a_
First M87 Event Horizon Telescope Results IV: Imaging the Central Supermassive Black Hole,
The Event Horizon Telescope Collaboration 2019_
VLBI Imaging of black holes via second moment regularization,
Issaoun et al. 2019b_
Using evolutionary algorithms to model relativistic jets: Application to NGC 1052,
Fromm et al. 2019_
EHT-HOPS Pipeline for Millimeter VLBI Data Reduction,
Blackburn et al. 2019_
Multi-wavelength torus-jet model for Sagittarius A*,
Vincent et al. 2019_
Discriminating Accretion States via Rotational Symmetry in Simulated Polarimetric Images of M87,
Palumbo et al. 2020_
SYMBA: An end-to-end VLBI synthetic data generation pipeline. Simulating Event Horizon Telescope observations of M87,
Roelofs et al. 2020_
Monitoring the Morphology of M87* in 2009-2017 with the Event Horizon Telescope,
Wielgus et al. 2020_
EHT imaging of the archetypal blazar 3C 279 at extreme 20 microarcsecond resolution,
Kim et al. 2020_
The oifitsnew code used for reading/writing .oifits files is a slightly modified version of Paul Boley's package at
. The oifits read/write functionality is still being developed and may not work with all versions of python or astropy.
The documentation is styled after
ehtim is licensed under GPLv3. See LICENSE.txt for more details.