Python3 package to read and analyze NenuFAR Time-Frequency data from UnDySPuTeD.
nenupytf
can be installed via pip
, the recommended tool for installing Python packages:
pip install nenupytf
Keep you up-to-date with the latest release and get the newest functionalities by regularly updating the package:
pip install nenupytf --upgrade
Prior to diving within the large data volume, one can quickly get a summary of the observation content with the command:
nenupytf-info --obs /path/to/observation_directory/
The output would look something like:
--------------- nenupytf ---------------
Info on /path/to/observation_directory/OBS_XXX_XXX_0.spectra
Lane: 0
Time: 2019-10-13T07:20:55.0000000 -- 2019-10-13T07:25:54.4404020
Frequency: 39.0625 -- 76.5625 MHz
Beams: [0]
----------------------------------------
displaying for each lane, the time and frequency range as well as the beam indices.
On can also display these informations on individual files by printing the instance of a Lane
object:
from nenupytf.read import Lane
l = Lane('OBS_XXX_XXX_0.spectra')
print(l)
To select data from a specific file:
from nenupytf.read import Lane
l = Lane('OBS_XXX_XXX_0.spectra')
time_select = ['2019-10-13 07:25:50.4404020', '2019-10-13 07:25:54.4404020']
freq_select = [50, 54.97]
spec = l.select(time=time_select, freq=freq_select, beam=0, stokes='I')
The select()
methods, returns a SpecData
object, storing the time (in astropy.time.Time
format), the frequency in MHz, and the Dynamic Spectrum (which is a 2D array). Besides, a SpecData
object enables several cleaning or analysis methods specific to dynamic spectra.
Averaging on time and frequency may allow to see a full picture of the data. However it may take some time to process!
from nenupytf.read import Lane
l = Lane('OBS_XXX_XXX_0.spectra')
spec = l.average()
Of course, one can specify every parameter such as in the select()
method. Besides, average()
accepts df
and dt
, respectively the time bin (in seconds) and the frequency bin (in MHz):
from nenupytf.read import Lane
l = Lane('OBS_XXX_XXX_0.spectra')
time_select = ['2019-10-13 07:25:50.4404020', '2019-10-13 08:00:00.000']
freq_select = [30, 60]
t, f, d = l.average(df=2, dt=3, time=time_select, freq=freq_select, beam=0, stokes='I')
To display a plot of the selection, simply run:
nenupytf-plot --obs /path/to/observation_directory/ --lane 0 --time 2019-10-13T07:25:50.4404020 2019-10-13T07:25:54.4404020 --freq 50 54.97 --stokes I