Skip to main content

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, and numba.


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

  • numpy
  • matplotlib
  • astropy
  • basemap
  • numba
  • requests

License

This project is licensed under the MIT License.

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

vlbisim-0.1.1.tar.gz (12.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vlbisim-0.1.1-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

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

Hashes for vlbisim-0.1.1.tar.gz
Algorithm Hash digest
SHA256 4a05d9d7742c07ba0907168cfa55f507565619e76131a39283650934a1828424
MD5 6f3b50743ae09b0e757884c89dfdfd8e
BLAKE2b-256 71030cd0e77fbcece346a042426da778eaa0ea2ea21d907177bde28d14cc33ec

See more details on using hashes here.

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

Hashes for vlbisim-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 81ab1eb7386538b03b406985330eb12eabf6f2da38dea9713f0818e1b2b66eba
MD5 3d424a87ecbd9966046049eeb89561ab
BLAKE2b-256 d5e3383f202b2a86afb424e6dba44c2d36f4311a5af785b70de05e73756632c8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page