Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Step -1.0: healvis validation #25

Open
aelanman opened this issue Aug 28, 2019 · 2 comments
Open

Step -1.0: healvis validation #25

aelanman opened this issue Aug 28, 2019 · 2 comments
Assignees
Labels
formal-test A formal Validation Test simcmp:fg:gsm Simulator Component: Global Sky Model simulator:healvis Uses the healvis simulator simulator:pyuvsim Uses the pyuvsim simulator status:active A formal test that is being actively worked on

Comments

@aelanman
Copy link
Contributor

Validation of healvis simulator against pyuvsim and against analytic models. This issue is to begin the process of defining the tests and conditions for success.

Setup


Telesope:

  • Unique baseline types from a 37 element hexagonal layout with exact spacing.
  • 20 channels with width 97 kHz
  • 24 hours of LST at 10 min cadence
  • Located at the equator at the prime meridian.

Sky model:

  • A Gaussian blob with FWHM of 20°, centered at (ra,dec) = (0,0) in the ICRS frame.
  • Beyond a radius of 10°, all pixel values are zero.
  • 1Jy at all frequencies.
  • Nside 128 resolution.

Source model conversion

pyuvsim and healvis handle sources differently:

  • healvis takes in a source model as a set of HEALpix maps representing surface brightness temperature in Kelvin, where each pixel value is assumed to represent a sample of a uniform facet of the sky. One HEALPix map is used for each frequency channel.
  • pyuvsim accepts only flat-spectrum point sources in Jy.

The input model is defined as 1 Jy at all frequencies. For healvis, this means each pixel value is scaled by 1/(Ων), for pixel area Ω in steradians and frequency ν in Hz. The healvis model therefore has a spectral dependence so that the pyuvsim model can be spectrally-flat.

Comparison


uvsim_healvis_diff

The above plot shows the difference of corresponding visibilities in pyuvsim and healvis in the complex plane. Deviations appear to reach as high as 10% in some cases. A few potential sources of this error have been investigated but so far the cause is unknown.

Selecting only the first time step and coloring each point by the frequency gives the following:

singletime_uvsim-healvis_err_wfreq

Clearly, the error is specific to each baseline and varies with frequency. However, it doesn't seem to have a regular behavior with baseline angle or length.

Replacing the healvis alt/az calculation with the astropy equivalent (which is what pyuvsim uses) yields the same discrepancies (or, very very nearly).

Comparison with Analytic Models


Steven and I have come up with a handful of exact solutions for the visibility of a diffuse sky. For instance, the very simple (and unphysical...) case of a uniform beam with a uniform sky model yields a sinc-function visibility:

analytic_comparison_monopole

In the above, the visibilities simulated for a random layout of 80 antennas are binned in baseline length (u). This solution is real, so the imaginary component is expected to be zero. This plot is to illustrate the similarity, since the binning introduces some discrepancies, especially for mostly empty bins.

Direction Forward


The cause of the remaining discrepancy between pyuvsim and healvis needs to be tracked down and understood. The frequency dependence suggests that some error in the fringe term is introducing a frequency-dependent phase.

Comparing the two codes has already revealed a difference azimuth conventions between the two codes, which can lead to some errors when using beams with azimuthal dependence. Fixing it, there is still a slight disagreement in azimuth with astropy, which is maximized at the southern horizon where it reaches about half an arcminute.

Coming up with a good way to analytic models will also help. This can also test the limits of the point-source approximation, which pyuvsim cannot evaluate.

@steven-murray
Copy link
Contributor

This is great!

Some thoughts:

  • For the analytic plot, do you have to bin? Couldn't you just plot each baseline individually?
  • Could you plot that spiral plot also for a single frequency, colouring by time? And colouring by baseline length/angle?
  • For pyuvsim, are you just using each pixel centre as a point source?
  • Does healvis make the same point source approximation as pyuvsim?

@steven-murray steven-murray added this to the H1C IDR2 milestone Sep 27, 2019
@steven-murray steven-murray added simcmp:fg:gsm Simulator Component: Global Sky Model simulator:pyuvsim Uses the pyuvsim simulator simulator:healvis Uses the healvis simulator formal-test A formal Validation Test labels Sep 27, 2019
@steven-murray steven-murray added the status:active A formal test that is being actively worked on label Oct 28, 2019
@piyanatk piyanatk changed the title Step -1.0 Step -1.0: healvis validation Jan 13, 2020
@steven-murray
Copy link
Contributor

It may be wise to step back from this a bit, and get a proper reference sim done in pyuvsim (see RadioAstronomySoftwareGroup/pyuvsim#254).

Then we have something formal to compare to.

@steven-murray steven-murray removed this from the H1C IDR2 milestone Oct 12, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
formal-test A formal Validation Test simcmp:fg:gsm Simulator Component: Global Sky Model simulator:healvis Uses the healvis simulator simulator:pyuvsim Uses the pyuvsim simulator status:active A formal test that is being actively worked on
Projects
None yet
Development

No branches or pull requests

3 participants