0xCoto / Virgo

📡 Virgo: A Versatile Spectrometer for Radio Astronomy
https://virgo.readthedocs.io/en/latest/
GNU General Public License v3.0
144 stars 22 forks source link
astronomy astrophysics radio radio-astronomy radio-telescope rf rfi-mitigation sdr spectrometer telescope virgo

Virgo: A Versatile Spectrometer for Radio Astronomy

Virgo Spectrometer

About Virgo

Virgo is an easy-to-use open-source spectrometer and radiometer based on Python and GNU Radio (GR) that is conveniently applicable to any radio telescope working with a GR-supported software-defined radio (SDR). In addition to data acquisition, Virgo also carries out automated analysis of the recorded samples, producing an averaged spectrum, a calibrated spectrum, a dynamic spectrum (waterfall), a time series (power vs time) and a total power distribution plot.

Lastly, an important set of utilities is provided to observers, making the package for a great tool for planning (radio) observations, estimating the system sensitivity of an instrument, and many more.

Statement of Need

Designed to be used by students, educators and amateurs in the field of radio astronomy, Virgo has already been adopted by a number of small and large-aperture radio telescopes, permitting both spectral and continuum observations with great success. These instruments include the ISEC TLM-18 (18m), the ACRO RT-320 (3.2m), the JRT (1.9m), and the PICTOR Telescope (1.5m), among others.

Although the hardware aspect of a radio telescope is generally handled by newcomers with relative ease, the skill set needed to integrate a complete software pipeline to support observations is not something most users are equipped with. Virgo tackles this problem by providing non-experts with a tool to collect and interpret data from radio telescopes, without requiring expertise in digital signal processing and software engineering. An example use case is classroom experiments in which students build a small-aperture antenna connected to a low-noise amplifier followed by an SDR, and with the help of Virgo, obtain data to map out the galactic distribution of neutral hydrogen and/or derive the rotation curve of the Milky Way.

Key Features


Telescopes based on the Virgo Spectrometer

Example Observation

Example Observation

Observation of galactic clouds of neutral hydrogen toward the constellation of Cygnus (α = 20h, δ = 40° , l = 77° , b = 3°), observed by the TLM-18 Telescope in New Jersey, U.S. with Virgo. The average spectrum (top left), the calibrated spectrum (top center), the dynamic spectrum (top right) and the time series along with the total power distribution (bottom) are all plotted by the software automatically.

Example Source Location Prediction

Example HI Profile Retrieval

Example HI Profile Retrieval

Example HI Map

Example HI map plot

The red dot indicates the position of the telescope's beam in the sky.

Data Acquisition Flowgraph

Virgo is a four-tap WOLA Fourier transform spectrometer. The raw I/Q samples are processed in real time using GNU Radio, with the amount of data stored to file being drastically reduced for further analysis. The following flowgraph handles the acquisition and early-stage processing of the data:

alt text

Example radio map acquired and processed with the help of Virgo (PICTOR Northern HI Survey)

alt text

Installation

To use Virgo, make sure Python and GNU Radio (with gr-osmosdr) are installed on your machine.

For Debian/Ubuntu and derivates, the installation is straightforward:

sudo apt install gnuradio gr-osmosdr

Note: The GNU Radio and gr-osmosdr dependencies are only required for acquiring data with the necessary hardware (software-defined radio). They are not required for planning observations, analyzing data, running calculations or any other functionalities provided by the package. For more information, please refer to the Dependencies section.

Once Python and GNU Radio are installed on your system, run

pip install astro-virgo

Documentation

To learn how to use Virgo, please read through the documentation here.

If you believe something is not clarified in the documentation page, you are encouraged to create an issue (or send me an e-mail and I'll be happy to help.

Contributing

If you wish to contribute to the package (either with code, ideas or further documentation), please read through the Contributor Guidelines.

Credits

Virgo was created by Apostolos Spanakis-Misirlis.

Contact: 0xcoto@protonmail.com


Special thanks to Dr. Cameron Van Eck, Paul Boven and Dr. Cees Bassa for their valuable contributions.