Virgo Spectrometer

joss python pypi astropy license

About

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 via python virgo.py, or as a module (see Usage)