Observation Simulations
>>> from nenupy.astro.target import FixedTarget
>>> from nenupy.astro.skymodel import HpxGSM
>>> from nenupy.instru import NenuFAR
>>> from astropy.time import Time, TimeDelta
>>> import astropy.units as u
>>> import numpy as np
Time profile
>>> vira = FixedTarget.from_name("Vir A")
>>> vira_transit = vira.next_meridian_transit(Time("2021-01-01 00:00:00"))
>>> vira_transit
<Time object: scale='utc' format='iso' value=2021-01-01 05:38:42.551>
>>> dt = TimeDelta(2*60, format="sec")
>>> times = vira_transit - TimeDelta(1800, format="sec") + np.arange(31)*dt
>>> vira_transit_pointing = Pointing.target_transit(
target=vira,
t_min=Time("2021-01-01 00:00:00"),
duration=TimeDelta(7200, format="sec"),
azimuth=180*u.deg
)
>>> analog_pointing = Pointing.target_tracking(
target=vira,
time=times,
duration=dt,
)
>>> whole_sky = HpxSky(
resolution=0.5*u.deg,
frequency=50*u.MHz,
polarization=Polarization.NW,
time=times
)
>>> nenufar = NenuFAR()
>>> beam = nenufar.beam(
sky=whole_sky,
pointing=vira_transit_pointing,
analog_pointing=analog_pointing
)
>>> skymodel = HpxGSM.shaped_like(beam)
>>> sky_through_beam = beam * skymodel
>>> print(sky_through_beam)
<class 'nenupy.astro.sky.HpxSky'> instance
value: (12, 1, 1, 196608)
* time: (12,)
* frequency: (1,)
* polarization: (1,)
* coordinates: (196608,)
>>> profile = np.nanmean(sky_through_beam.value, axis=(1, 2, 3))
>>> plt.plot(times.datetime, 10*np.log10(t_profile))
>>> plt.ylabel("Amplitude (dB)")
>>> plt.xlabel(f"Time (since {times[0].isot})")
>>> plt.title(f"Vir A transit simulation ({beam.frequency[0]})")