Virgo Spectrometer

joss python pypi astropy license


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.

Key Features

  • 4-tap weighted overlap-add (WOLA) Fourier transform spectrometer

    • Reduced FFT sidelobes

    • Plain FT filterbank pipeline also supported for observatories with limited computational resources

  • Adjustable SDR parameters

    • Device arguments

    • RF/IF/BB Gain

  • Header file

    • Observation parameters automatically passed to corresponding .header file

    • Includes logged MJD (at observation t0)

  • Spectral line support

    • Spectrum calibration

      • y axis is automatically rescaled to S:N units with line masking

      • Optional automatic slope correction (based on linear regression) for poorly-calibrated spectra

    • Supports median operation for RFI mitigation on the frequency-domain (adjustable n-factor)

    • RFI channel masking

    • Adjustable frest for the observation of any spectral line (not just HI)

    • Secondary axes for relative velocity automatically adjusted accordingly

    • Prevention against strong narrowband RFI rescaling subplot

    • The average spectra, calibration spectra and calibrated spectra are optionally saved as a csv file for further analysis

  • Continuum support

    • Supports median operation for time-varying RFI mitigation (adjustable n-factor)

    • Total power distribution (histogram) displayed, both for raw and clean data

      • Best Gaussian fits computed automatically

    • Prevention against strong short-duration RFI rescaling subplot

    • Time series optionally saved as a csv file for further analysis

  • Pulsars

    • Incoherent dedispersion support for giant pulse search (and FRB follow-up, assuming DM is known)

  • Dynamic spectrum (waterfall)

    • Optionally saved as a FITS file for further advanced/custom analysis

  • Decibel support

    • Power units optionally displayed in dB

  • Observation planning toolkit

    • Predict source altitude & azimuth vs time

    • Quickly convert galactic to equatorial and Alt/Az to RA/Dec

    • Plot telescope position on the 21 cm all-sky survey

    • Simulate 21 cm profiles based on the LAB HI survey

  • Basic calculation toolkit for system sensitivity & performance. Computes:

    • Antenna gain (in dBi, linear or K/Jy)

    • Effective aperture

    • Half-power beamwidth

    • Noise figure to noise temperature and vice versa

    • Antenna gain-to-noise-temperature (G/T)

    • System equivalent flux density (SEFD)

    • Radiometer equation (S:N estimation)

  • Built-in tool for conducting rapid RFI surveys

  • Argument-parsing support

  • Works directly from the command line virgo -h, or as a Python module (see Usage)