Skip to main content

fftvis: A Non-Uniform Fast Fourier Transform-based Visibility Simulator

Tests codecov Black Formatting

fftvis is a fast Python package designed for simulating interferometric visibilities using the Non-Uniform Fast Fourier Transform (NUFFT). It provides a convenient and efficient way to generate simulated visibilities.

Features

  • Utilizes the Flatiron Institute NUFFT (finufft) algorithm for fast visibility simulations that agree with similar methods (matvis) to high precision.
  • Designed to be a near drop-in replacement to matvis with a ~10-100x improvement in runtime
  • Extensible design that allows for easy addition of new backends
  • Support for polarized beam patterns and polarized sky models
  • Support for per-antenna beams w/ functionality to support representing per-antenna beams with a linear basis. See the example notebook for details.

Current Limitations

  • GPU backend exists only as a stub implementation (coming soon!)
  • Diffuse sky models must be pixelized

Installation

You can install fftvis via pip:

pip install fftvis

Basic Usage

from fftvis import simulate_vis

# Simulate visibilities with the CPU backend (default)
vis = simulate_vis(
    ants=antenna_positions,
    fluxes=source_fluxes,
    ra=source_ra,
    dec=source_dec,
    freqs=frequencies,
    times=observation_times,
    beam=beam_model,
    polarized=True,
    backend="cpu"  # Use "gpu" for GPU acceleration when implemented
)

Architecture

fftvis is structured with a modular design:

  • Core: Contains abstract interfaces and base classes that define the API
  • CPU: Contains the CPU-specific implementation
  • GPU: Contains the GPU implementation (currently stubbed for future development)
  • Wrapper: Provides a high-level API for backward compatibility

This modular design makes the package more maintainable and extensible, allowing for the addition of new backends and optimizations without affecting the user API.

Contributing

Contributions to fftvis are welcome! If you find any issues, have feature requests, or want to contribute improvements, please open an issue or submit a pull request on the GitHub repository: fftvis on GitHub

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

This package relies on the finufft implementation provided by finufft library. Special thanks to the contributors and maintainers of open-source libraries used in this project.

Citation

If you use fftvis in your research, please cite our paper published in RAS Techniques and Instruments:

fftvis: a non-uniform Fast Fourier Transform based interferometric visibility simulator Tyler A. Cox, Steven G. Murray, Aaron R. Parsons, Joshua S. Dillon, Kartik Mandar, Zachary E. Martinot, Robert Pascua, Piyanat Kittiwisit, and James E. Aguirre.
RAS Techniques and Instruments, Volume 4, 2025, rzaf056.
DOI: 10.1093/rasti/rzaf056 | arXiv: 2506.02130

BibTeX

@article{2025RASTI...4af056C,
  author        = {Cox, Tyler A. and Murray, Steven G. and Parsons, Aaron R. and Dillon, Joshua S. and Mandar, Kartik and Martinot, Zachary E. and Pascua, Robert and Kittiwisit, Piyanat and Aguirre, James E.},
  title         = "{fftvis: a non-uniform Fast Fourier Transform based interferometric visibility simulator}",
  journal       = {RAS Techniques and Instruments},
  year          = {2025},
  month         = {jan},
  volume        = {4},
  pages         = {rzaf056},
  doi           = {10.1093/rasti/rzaf056},
  archivePrefix = {arXiv},
  eprint        = {2506.02130},
  primaryClass  = {astro-ph.IM},
  adsurl        = {https://ui.adsabs.harvard.edu/abs/2025RASTI...4af056C}
}

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fftvis-1.1.1.tar.gz (1.9 MB view details)

Uploaded Source

Built Distribution

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

fftvis-1.1.1-py3-none-any.whl (46.5 kB view details)

Uploaded Python 3

File details

Details for the file fftvis-1.1.1.tar.gz.

File metadata

  • Download URL: fftvis-1.1.1.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fftvis-1.1.1.tar.gz
Algorithm Hash digest
SHA256 4d1b0f9bc7ed6f65d450c44faf8fb39e43c4fe96e9a02e79fc167815fefa7e8e
MD5 5c5307c49c70f1e6d3a443e000990217
BLAKE2b-256 be0a7b0388581c3a407a7aeba8c9dcd8aca6109c32b5c013da89c40a792de49e

See more details on using hashes here.

File details

Details for the file fftvis-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: fftvis-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 46.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fftvis-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b29d62e167929f3ce804c260f4c85b7cd03fdf22a9a81e04508b365dd6fcff78
MD5 49fda861bac6f1aa724c3abd846bdc0f
BLAKE2b-256 702c384f965f524334cac6d82bce5d2c43d3398ce7d7cd4c5f033f8e27df7834

See more details on using hashes here.

Release history Release notifications | RSS feed

1.1.2

2 files

This release

1.1.1 This release

2 files

1.1.0

2 files

1.0.0

2 files

0.1.0

2 files

0.0.7

2 files

0.0.6

2 files

0.0.4

2 files

0.0.2

2 files

0.0.1

2 files

Supported by

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