Imaging, analysis, and simulation software for radio interferometry
Project description
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 achael@outlook.com 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 Image, Movie, Array, Obsdata, Imager, and Caltable classes, 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.
Installation
The latest stable version (1.3.1) is available on PyPi. Simply install pip and run
pip install ehtim
A major eht-imaging revision is being 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:
pip install .
Installing with pip will update most of the required libraries automatically (numpy, scipy, matplotlib, astropy, ephem, future, h5py, and pandas).
NFFT Installation
If you want to use fast fourier transforms in this version of eht-imaging, you will also need to separately install NFFT and its pyNFFT wrapper. The unstable dev branch version has replaced pyNFFT with the actively maintained finufft library.
Note that, unfortunately, pyNFFT is only supported for python versions <=3.11 and numpy versions <=1.26.4
The simplest way to install pyNFFT is to use conda to install both NFFT and pyNFFT:
conda install -c conda-forge pynfft
Alternatively, first install NFFT manually following the instructions on the readme, making sure to use the --enable-openmp flag in compilation. Then install pynfft, with pip, following the readme instructions to link the installation to where you installed NFFT. Finally, reinstall ehtim.
For M1 Macs and later (MacOS >= v12.0), install the updated Mac version of pynfft and follow the instructions on the readme to manually install fftw, nfft and then pynfft.
Other Optional Dependencies
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 a few image analysis functions). However, the vast majority of the code will work without these dependencies.
Documentation and Tutorials
Documentation is here.
A tutorial jupyter notebook for imaging can be found in the repo at tutorials/ehtim_tutorial.ipynb
Slides for the included tutorial walk through the basic steps of reconstructing EHT images with the code
Scripts in the examples directory contain several older simple example workflows but have not been recently validated.
Citation
If you use ehtim in your publication, please cite Chael+ 2018.
The latest version is also available as a static doi on Zenodo.
Selected publications that use ehtim
Let us know if you use eht-imaging 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, Johnson 2016
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
Testing GR 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, EHTC et al. 2019
EHT-HOPS Pipeline for Millimeter VLBI Data Reduction, Blackburn 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, 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
Verification of Radiative Transfer Schemes for the EHT, Gold et al. 2020
Closure Traces: Novel Calibration-insensitive Quantities for Radio Astronomy, Broderick and Pesce. 2020
Evaluation of New Submillimeter VLBI Sites for the Event Horizon Telescope, Raymond et al. 2021
Imaging VGOS Observations and Investigating Source Structure Effects, Xu et al. 2021
A D-term Modeling Code (DMC) for Simultaneous Calibration and Full-Stokes Imaging of VLBI Data, Pesce et al. 2021
Using space-VLBI to probe gravity around Sgr A*, Fromm et al. 2021
Persistent Non-Gaussian Structure in the Image of Sagittarius A* at 86 GHz, Issaoun et al. 2021
First M87 Event Horizon Telescope Results. VII. Polarization of the Ring, EHTC et al. 2021
Event Horizon Telescope observations of the jet launching and collimation in Centaurus A, Janssen et al. 2021
RadioAstron discovers a mini-cocoon around the restarted parsec-scale jet in 3C 84 Savolainen et al. 2021
Unravelling the Innermost Jet Structure of OJ 287 with the First GMVA+ALMA Observations, Zhao et al. 2022
First Sagittarius A* Event Horizon Telescope Results. III: Imaging of the Galactic Center Supermassive Black Hole, EHTC et al. 2022
Resolving the Inner Parsec of the Blazar J1924-2914 with the Event Horizon Telescope, Issaoun et al. 2022
The Event Horizon Telescope Image of the Quasar NRAO 530, Jorstad et al. 2023
First M87 Event Horizon Telescope Results. IX. Detection of Near-horizon Circular Polarization, EHTC et al. 2023
Filamentary structures as the origin of blazar jet radio variability, Fuentes et al. 2023
The persistent shadow of the supermassive black hole of M 87. I. Observations, calibration, imaging, and analysis, EHTC 2023
Fundamental Physics Opportunities with the Next-Generation Event Horizon Telescope, Ayzenberg et al. 2023
Parsec-scale evolution of the gigahertz-peaked spectrum quasar PKS 0858-279, Kosogorov et al. 2024
Atmospheric Limitations for High-frequency Ground-based Very Long Baseline Interferometry, Pesce et a. 2024
Evidence of a toroidal magnetic field in the core of 3C 84, Paraschos et al. 2024
First Sagittarius A* Event Horizon Telescope Results. VII. Polarization of the Ring, EHTC et al. 2024
Towards an astronomical use of new-generation geodetic observations. I. From the correlator to full-polarization images, Perez-Diez et al. 2024,
Discovery of Limb Brightening in the Parsec-scale Jet of NGC 315 through Global Very Long Baseline Interferometry Observations and Its Implications for Jet Models, Park et al. 2024
Kilogauss magnetic field and jet dynamics in the quasar NRAO 530, Lisakov et al. 2024
Evolution, speed, and precession of the parsec-scale jet in the 3C 84 radio galaxy, Foschi et al. 2024
Origin of the ring ellipticity in the black hole images of M87*, Dahale et al. 2025
Revealing a ribbon-like jet in OJ 287 with RadioAstron, Traianou et al. 2025
Revisiting 3C 279 jet morphology with space VLBI at 26 microarcsecond resolution, Toscano et al. 2025
Horizon-scale variability of M87* from 2017-2021 EHT obesrvations, EHTC et al. 2025
Probing the disk-jet coupling in M 87, Saiz-Perez et al. 2025
Probing jet base emission of M87* with the 2021 Event Horizon Telescope observations, Saurabh et al.
Radio properties of the quasi-periodic eruption source RXJ1301.9+2747 at parsec scales, von Fellenberg et al.
Spatially resolved polarization swings in the supermassive binary black hole candidate OJ 287 with first Event Horizon Telescope observations, Gomez et al. 2026
Locating the missing large-scale emission in the jet of M87* with short EHT baselines, Georgiev et al. 2026
Evidence of a non-equipartition energy regime in 1803+784, Perez-Diez et al. 2026
Where within the 3c 84 jet are gamma-rays produced? Paraschos et al. 2026
Ring Asymmetry and Spin in M87*, Bernshteyn et al. 2026
License
ehtim is licensed under GPLv3. See LICENSE.txt for more details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ehtim-1.3.2.tar.gz.
File metadata
- Download URL: ehtim-1.3.2.tar.gz
- Upload date:
- Size: 399.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d90fb35fd7f462e3988ee026b1d3468f7195db6dab5d52a556208cf7ffb802e
|
|
| MD5 |
bbc4adb7b36ecc2fccdfcba2c49a5e29
|
|
| BLAKE2b-256 |
668fd9a49fd5d39a826a89723391a7bcc59f1084c093b847178911b424bee46f
|
Provenance
The following attestation bundles were made for ehtim-1.3.2.tar.gz:
Publisher:
publish.yml on achael/eht-imaging
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ehtim-1.3.2.tar.gz -
Subject digest:
2d90fb35fd7f462e3988ee026b1d3468f7195db6dab5d52a556208cf7ffb802e - Sigstore transparency entry: 1842128332
- Sigstore integration time:
-
Permalink:
achael/eht-imaging@c8c7a89ea96da0c3f0217e95c41ce8d3e7ca8765 -
Branch / Tag:
refs/tags/v1.3.2 - Owner: https://github.com/achael
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c8c7a89ea96da0c3f0217e95c41ce8d3e7ca8765 -
Trigger Event:
release
-
Statement type:
File details
Details for the file ehtim-1.3.2-py3-none-any.whl.
File metadata
- Download URL: ehtim-1.3.2-py3-none-any.whl
- Upload date:
- Size: 411.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39403ff040e7828fbfbb3344f24a9bf7ce4802f141a68c56c5918e8f5a17d3af
|
|
| MD5 |
d53c226687d2dd3b97b73fabe093bbc2
|
|
| BLAKE2b-256 |
f189d4b7b30ee76c86e24a62f3379a3f9f8a7210831ab1047515898b6afa2591
|
Provenance
The following attestation bundles were made for ehtim-1.3.2-py3-none-any.whl:
Publisher:
publish.yml on achael/eht-imaging
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ehtim-1.3.2-py3-none-any.whl -
Subject digest:
39403ff040e7828fbfbb3344f24a9bf7ce4802f141a68c56c5918e8f5a17d3af - Sigstore transparency entry: 1842128673
- Sigstore integration time:
-
Permalink:
achael/eht-imaging@c8c7a89ea96da0c3f0217e95c41ce8d3e7ca8765 -
Branch / Tag:
refs/tags/v1.3.2 - Owner: https://github.com/achael
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c8c7a89ea96da0c3f0217e95c41ce8d3e7ca8765 -
Trigger Event:
release
-
Statement type: