Getting Started
Introduction to the VLBI Imaging Problem
Very-long baseline interferometry (VLBI) is capable of taking the highest resolution images in the world, achieving angular resolutions of ~20 μas. In 2019 the first ever image of a black hole was produced by the Event Horizon Telescope (EHT). However, the EHT is a very sparse interferometer. This makes imaging uncertain. This is because VLBI doesn't measure an actual image, but rather the Fourier transform of the on-sky image. Futhermore, the EHT only have ~7 dishes at any one time. This makes the Fourier sampling very sparse/incomplete. As a result, there is no single image that can explain the data. Traditional imaging methods get around this with curated imaging algorithms, such as DIFMAP and regularized-maximum-likelihood. However, these methods still ignore the inherent uncertainty in the image reconstruction. Comrade
instead views the imaging problem as a Bayesian inverse problem.
Namely, there isn't a single image capable of explaining the source structure but a family. Comrade
is a Julia software package that views the imaging problem as a classical Bayesian inverse problem.
Due to the high resolution VLBI data can be quite complicated. As such there is a variety of possible source structures. As such, Comrade
provides a number of
To get started with Comrade
using Comrade
#load ehtim
load_ehtim()
# To load some data we can use
obs = ehtim.obsdata.load_uvfits("FILENAME")
# Extract various data products from the EHTIM object
dvis = extract_vis(obs)
dcp = extract_cphase(obs)
dlcamp = extract_lcamp(obs)
# Just want the array configuration?
ac = arrayconfig(data)
# Want to construct a elliptical Gaussian
m1 = rotated(stretched(Gaussian(), 20.0, 10.0), π/4)
m2 = ExtendedRing(20.0, 10.0)
mtot = m1+m2
# plot the model
plot(mtot)
# Lets make an image!
img = intensitymap(mtot, 80.0, 80.0, 128, 128)
# plot the image
plot(img)
# Now construct a model image wrapper
# Since Extended ring doesn't have a simple FT we need to specify an image to hold it.
# In the future this will be automated.
mimage = modelimage(mtot, img)
#Now evaluate the visibilities
vis = visibilities(mimage, ac)