A simple simulator for VLBI
Project description
vlbisim
vlbisim is a Python package for simulating Very Long Baseline Interferometry (VLBI) observations. It allows users to define telescope arrays, simulate uv-coverage for astronomical sources, visualize baseline distributions, and create synthetic dirty images. The package supports major VLBI arrays such as VLBA, EHT, ngVLA, EVN, and user-defined custom arrays.
Features
- Define and configure telescopes with latitude, longitude, elevation, and visibility limits.
- Calculate uv-coverage for arbitrary telescope arrays and sources.
- Simulate interferometric observations with customizable observation times and scan durations.
- Plot uv-coverage with baseline highlighting options.
- Generate synthetic dirty images from uv-coverage.
- Visualize telescope locations on world maps and globes.
- Supports major VLBI arrays, including VLBA, EHT, ngVLA, GMVA, EVN, MeerKAT, SKA, and others.
Installation
pip install vlbisim
Note: Some features require additional dependencies such as
numpy,matplotlib,astropy,basemap, andnumba.
Usage
Importing the package
from vlbisim import Telescope, getArray, simulateUV, plotUVdata, plotMap
Define telescopes
# Create a single telescope
t1 = Telescope(lat=50.524778, lon=6.883972, name="Effelsberg", elev_lim=15)
# Load a pre-defined array
vlba = getArray("VLBA")
Simulate uv-coverage
# Define source coordinates [RA, Dec] in degrees
source = [180.0, 45.0]
# Simulate uv-coverage
uv_coverage = simulateUV(vlba, source, n_iter=100, obsstart=0, obsend=24, make_plot=True)
Plot uv-coverage
plotUVdata(uv_coverage, highlight_baselines=[0, 1, 2])
Plot telescope array on a world map
plotMap(vlba, llcrnrlat=-90, urcrnrlat=90, llcrnrlon=-180, urcrnrlon=180)
Additional Utilities
SplitScans: Split long observations into shorter scans.combine_telescopes: Merge multiple arrays.getHighlightBaselines: Highlight specific baselines in plots.plotGlobe: Visualize telescope arrays on a 3D globe.get_elevation: Fetch telescope elevation using Open-Meteo API.
Examples
# Combine two arrays
full_array = combine_telescopes([getArray("VLBA"), getArray("EVN")])
# Split observation into scans
uv_scans = SplitScans(full_array, source=[180,45], obstart=0, obsend=24, scan_time=2, n_scans=12)
# Animate uv-coverage and save as mp4
simulateUV(full_array, source, make_movie=True, output_name="uvout.mp4")
Dependencies
numpymatplotlibastropybasemapnumbarequests
License
This project is licensed under the MIT License.
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 vlbisim-0.1.1.tar.gz.
File metadata
- Download URL: vlbisim-0.1.1.tar.gz
- Upload date:
- Size: 12.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a05d9d7742c07ba0907168cfa55f507565619e76131a39283650934a1828424
|
|
| MD5 |
6f3b50743ae09b0e757884c89dfdfd8e
|
|
| BLAKE2b-256 |
71030cd0e77fbcece346a042426da778eaa0ea2ea21d907177bde28d14cc33ec
|
File details
Details for the file vlbisim-0.1.1-py3-none-any.whl.
File metadata
- Download URL: vlbisim-0.1.1-py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
81ab1eb7386538b03b406985330eb12eabf6f2da38dea9713f0818e1b2b66eba
|
|
| MD5 |
3d424a87ecbd9966046049eeb89561ab
|
|
| BLAKE2b-256 |
d5e3383f202b2a86afb424e6dba44c2d36f4311a5af785b70de05e73756632c8
|