In [1]:
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.ticker import FormatStrFormatter
import matplotlib.patches as mpatches
import matplotlib.gridspec as gridspec
import numpy as np
from pyuvdata import UVCal, UVData, UVFlag
import pyuvdata
import os
import sys
import glob
import uvtools as uvt
from astropy.time import Time
from astropy.coordinates import EarthLocation, SkyCoord, AltAz, Angle
import pandas
import warnings 
import copy
from hera_notebook_templates import utils
import hera_qm
from hera_mc import cm_hookup
import h5py
import importlib
from scipy import stats
import scipy
import pandas as pd
from IPython.display import display, HTML
#warnings.filterwarnings('ignore')

%matplotlib inline
%config InlineBackend.figure_format = 'retina'
In [2]:
#get data location
JD = os.environ['JULIANDATE']
data_path = os.environ['DATA_PATH']
nb_outdir = os.environ['NB_OUTDIR']
utc = Time(JD, format='jd').datetime
print(f'JD = {JD}')
print(f'Date = {utc.month}-{utc.day}-{utc.year}')
print(f'data_path = "{data_path}"')
JD = 2459743
Date = 6-12-2022
data_path = "/mnt/sn1/2459743"
In [3]:
# Load in data
HHfiles, difffiles, uvdx, uvdy = utils.load_data_ds(data_path,JD)
    
uvd = UVData()
uvd_diff = UVData()
uvd.read(HHfiles[0])
use_ants = [int(ant) for ant in uvd.get_ants()]
bls = [(ant, ant) for ant in use_ants]
uvd.read(HHfiles[::10], skip_bad_files=True, bls=bls)
uvd_diff.read(difffiles[::10], skip_bad_files=True, bls=bls)
lsts = uvd.lst_array

flagfile = glob.glob(os.path.join(HHfiles[0].split('zen')[0],'zen.{}*total_stage_1_threshold_flags.h5'.format(JD)))
uvf = UVFlag()
uvf.read(flagfile)
bls = [(ant, ant) for ant in uvd.get_ants()]
times_uvf = np.unique(uvf.time_array)
times_uvd = np.unique(uvd.time_array)
idx_times = [np.where(time_uvd == times_uvf)[0][0] for time_uvd in times_uvd]
uvd.flag_array[:,0,:,:] = np.repeat(uvf.flag_array[idx_times], len(bls), axis=0)
1850 sum files found between JDs 2459743.25303 and 2459743.66664
1850 diff files found between JDs 2459743.25303 and 2459743.66664

LST Coverage¶

Shows the LSTs (in hours) and JDs for which data is collected. Green represents data, red means no data.

In [4]:
utils.plot_lst_coverage(uvd)

Delay spectrum¶

Delay spectrum CLEANed using uvtools.dspec.high_pass_fourier_filter with 7th-order Blackman-Harris window function. Odd/even visibilities are used to remove noise bias.

In [5]:
_data_cleaned_sq, d_even, d_odd = utils.clean_ds(bls, uvd, uvd_diff, N_threads=14)

Waterfalls of delay spectra for autocorrelation¶

These plots show autocorrelation delay spectrum waterfalls of each antenna that is active and whose status qualifies for this notebook. For nn/ee polarization, the autocorrelation delay spectrum is normalized by the max of the delay spectrum. For ne polarization, the autocorrelation delay spectrum is normalized by max(sqrt(|nn| |ee|)). ne and en are the same for autocorrelations, and thus only ne is shown here. The delay spectra are presented in dB with 10log10($|\tilde{V}|$).

For each node, antennas are ordered by SNAP number, and within that by SNAP input number. The antenna number label color corresponds to the a priori status of that antenna.

nn polarization¶

In [6]:
utils.plot_wfds(uvd, _data_cleaned_sq, 0)

ee polarization¶

In [7]:
utils.plot_wfds(uvd, _data_cleaned_sq, 1)

ne polarization¶

In [8]:
utils.plot_wfds(uvd, _data_cleaned_sq, 2)

Analysis of 2700ns features in delay spectra¶

This plot shows the relative amplitude at 2700 ns feature. The relative amplitude is calculated in dB with the mean amplitude at 2500-3000 ns compared to the mean amplitude at 2000-2500 ns. Larger values of relative feature amplitude indicate higher probability of detecting the peak at 2700 ns. Antennas in the same node are grouped by the shaded region.

In [9]:
utils.plot_antFeatureMap_2700ns(uvd, _data_cleaned_sq, JD, pol='nn')
In [10]:
utils.plot_antFeatureMap_2700ns(uvd, _data_cleaned_sq, JD, pol='ee')

This plot shows a matrix representing the 2700ns feature correlation of each baseline. The color bar indicates the amplitude of 2700ns (mean amplitude of 2500-3000ns delay spectrum) in dB which is the same as that in the above plot.

In [11]:
# utils.CorrMatrix_2700ns(uvd, HHfiles, difffiles, flagfile, JD, N_threads=14)

Analysis of noise floor in delay spectra¶

This plot shows the ratio of delay spectrum to noise floor (averaged over 1000-4000ns). Near 1 indicates the delay spectrum reaches to the noise floor, which may mean good.

In [12]:
utils.plot_antFeatureMap_noise(uvd_diff, d_even, d_odd, JD, pol='nn')
In [13]:
utils.plot_antFeatureMap_noise(uvd_diff, d_even, d_odd, JD, pol='ee')
In [14]:
# get the ratio of delay spectum to noise for different freqeuncy bands and pols
ds_noise_ratio = utils.get_ds_noise_ratio(uvd, uvd_diff, bls)

nodes, antDict, inclNodes = utils.generate_nodeDict(uvd)
ants = uvd.get_ants()
# build dataframe
to_show = {'Ant': ants, 'Node': [int(antDict[ant]['node']) for ant in ants], 'Snap': [int(antDict[ant]['snapLocs'][0]) for ant in ants]}
df = pd.DataFrame(to_show)
 
cols_ratio = []
for key in ds_noise_ratio.keys():
    if(key[0] == 40):
        col = r'Full '
    else:
        col = r'{}-{} MHz '.format(key[0], key[1])
    col += key[2]
    df[col] = ds_noise_ratio[key]
    cols_ratio.append(col)
    

# sort by node number and then by antenna number within nodes
df.sort_values(['Node', 'Ant'], ascending=True)

ratio_cut = 3
# style dataframe
table = df.style.hide_index() \
          .applymap(lambda val: 'color: red' if val > ratio_cut else '', subset=cols_ratio) \
          .set_table_styles([dict(selector="th",props=[('max-width', f'70pt')])])

This table shows the ratio of the delay spectrum to the noise level from diff files for different frequency bands and pols. The ratio > 3 is colored in red

In [15]:
HTML(table.render())
Out[15]:
Ant Node Snap Full nn Full ee 50-85 MHz nn 50-85 MHz ee 120-155 MHz nn 120-155 MHz ee 155-190 MHz nn 155-190 MHz ee 190-225 MHz nn 190-225 MHz ee
0 0 0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1 0 0 nan nan nan nan nan nan nan nan nan nan
2 0 0 nan nan nan nan nan nan nan nan nan nan
3 1 2 nan nan nan nan nan nan nan nan nan nan
4 1 2 nan nan nan nan nan nan nan nan nan nan
5 1 2 nan nan nan nan nan nan nan nan nan nan
7 2 0 1.509074 1.152432 1.910090 1.789909 2.290736 1.965017 1.947024 2.022961 2.394097 2.553660
8 2 0 1.464569 19.789146 3.343837 57.613215 2.840432 77.677548 3.122094 81.929844 3.469509 101.210509
9 2 0 1.140630 1.134175 1.877720 1.574287 2.327716 2.293382 3.282824 2.394629 2.212343 2.024393
10 2 1 1.098387 1.369065 1.677988 1.491515 2.003656 2.229632 2.183475 4.497367 2.537907 5.587530
11 0 1 nan nan nan nan nan nan nan nan nan nan
12 0 1 nan nan nan nan nan nan nan nan nan nan
13 0 1 nan nan nan nan nan nan nan nan nan nan
14 0 2 nan nan nan nan nan nan nan nan nan nan
15 1 3 nan nan nan nan nan nan nan nan nan nan
16 1 3 nan nan nan nan nan nan nan nan nan nan
17 1 3 nan nan nan nan nan nan nan nan nan nan
18 1 0 nan nan nan nan nan nan nan nan nan nan
19 2 1 1.203972 1.236236 1.857227 1.655054 1.941248 2.228352 2.230766 2.064297 3.187076 6.802930
20 2 1 0.939667 1.043412 1.661037 1.650120 1.714129 1.715406 1.543508 1.985366 2.012253 2.482316
21 2 2 1.351724 1.004846 1.558883 1.367104 1.913449 1.520873 2.337349 1.821813 2.206824 3.360293
23 0 2 nan nan nan nan nan nan nan nan nan nan
24 0 2 nan nan nan nan nan nan nan nan nan nan
25 0 3 nan nan nan nan nan nan nan nan nan nan
26 0 3 nan nan nan nan nan nan nan nan nan nan
27 1 0 nan nan nan nan nan nan nan nan nan nan
28 1 0 nan nan nan nan nan nan nan nan nan nan
29 1 1 nan nan nan nan nan nan nan nan nan nan
30 1 1 nan nan nan nan nan nan nan nan nan nan
31 2 2 1.131695 1.218263 1.763071 1.952232 1.645896 1.954695 2.342502 3.578464 2.510404 6.710705
32 2 2 2.479385 3.860074 1.996871 1.565819 4.218719 3.773205 17.855897 23.530222 22.656152 27.483317
33 2 3 42.776523 1.075527 7.804987 1.383536 211.389886 1.680274 1.683813 1.894591 1.906436 2.554783
36 3 3 nan nan nan nan nan nan nan nan nan nan
37 3 1 nan nan nan nan nan nan nan nan nan nan
38 3 1 nan nan nan nan nan nan nan nan nan nan
39 0 3 nan nan nan nan nan nan nan nan nan nan
40 4 1 1.219155 1.275189 1.945963 1.922203 1.908425 2.456971 2.130824 2.572646 2.593107 4.566569
41 4 3 1.267329 1.866289 2.294544 2.800167 1.917096 5.114342 2.070120 2.517763 1.995484 2.506655
42 4 0 1.437628 1.201968 1.812563 1.707390 3.980631 2.974100 2.464117 2.701812 4.221878 8.971854
45 5 0 4.765339 1.221552 28.241839 1.801129 6.663086 1.679908 4.142756 2.289095 4.508816 1.908331
46 5 0 2.970603 2.553936 1.929574 1.720369 6.071608 5.038013 2.869506 3.211725 9.409355 18.870009
50 3 3 nan nan nan nan nan nan nan nan nan nan
51 3 2 nan nan nan nan nan nan nan nan nan nan
52 3 3 nan nan nan nan nan nan nan nan nan nan
53 3 2 nan nan nan nan nan nan nan nan nan nan
54 4 0 1.416837 1.347279 1.862472 1.856293 2.979671 2.820020 2.029040 3.165743 3.356483 6.214055
55 4 2 1.342533 1.167514 1.969417 1.786490 1.943344 1.733057 4.803364 4.383557 3.063055 2.526021
56 4 1 1.380371 1.385754 1.955922 1.767892 2.467805 2.646847 2.572850 2.292558 3.060376 3.032872
57 4 3 1.772048 1.670734 3.737625 2.470876 4.705119 3.222315 2.468651 2.408766 3.015484 3.695868
65 3 0 nan nan nan nan nan nan nan nan nan nan
66 3 0 nan nan nan nan nan nan nan nan nan nan
67 3 0 nan nan nan nan nan nan nan nan nan nan
68 3 1 nan nan nan nan nan nan nan nan nan nan
69 4 1 1.220343 1.020834 1.726524 2.098043 1.862570 1.986799 2.394917 2.687449 3.125601 3.685067
70 4 2 2.700017 2.219436 2.073641 1.838799 3.770366 4.127503 7.710905 8.454421 3.559355 4.993816
71 4 2 2.003584 1.279788 3.856330 2.449204 3.423504 2.467870 3.060206 2.197706 3.656970 2.184199
72 4 0 2.109024 2.793121 2.600851 2.857587 7.132564 11.022049 3.141828 3.831597 17.629393 19.036299
73 5 0 1.343389 1.730288 1.803589 1.818634 2.917796 2.666100 2.765874 3.274526 3.681263 6.475944
81 7 0 2.632376 2.185339 2.558972 2.100767 3.375570 2.607383 4.915710 2.952601 44.608345 8.038922
82 7 0 1.477816 1.297903 1.672631 1.554102 2.066677 2.941333 2.356740 2.271534 7.766269 7.389163
83 7 0 4.831333 4.999041 20.524913 23.495668 5.346946 7.142982 6.086912 2.509659 9.101321 2.214837
84 8 3 nan nan nan nan nan nan nan nan nan nan
85 8 0 nan nan nan nan nan nan nan nan nan nan
86 8 0 nan nan nan nan nan nan nan nan nan nan
87 8 2 nan nan nan nan nan nan nan nan nan nan
88 9 0 nan nan nan nan nan nan nan nan nan nan
89 9 2 nan nan nan nan nan nan nan nan nan nan
90 9 0 nan nan nan nan nan nan nan nan nan nan
91 9 1 nan nan nan nan nan nan nan nan nan nan
92 10 0 153.262838 259.648303 320.037916 1194.333252 4.084289 560.614164 3.172957 123.590909 5.101893 137.615936
93 10 0 106.729557 229.361694 235.724121 572.818221 1.771691 5.565264 0.586179 2.527212 0.604588 2.310421
94 10 0 140.283073 143.998059 322.309208 405.647387 2.566447 4.856547 0.967670 1.804454 1.014240 1.884548
98 7 2 4.347654 6.156851 17.791249 26.377246 5.440981 13.924488 6.883782 2.906659 5.615758 2.727998
99 7 2 1.342240 1.220147 1.460014 1.847939 1.966795 2.126561 2.159346 1.990783 6.329604 3.882166
100 7 1 7.669835 6.627836 27.813260 26.999889 11.765868 30.540502 4.998167 4.204209 6.931783 4.085962
101 8 2 nan nan nan nan nan nan nan nan nan nan
102 8 0 nan nan nan nan nan nan nan nan nan nan
103 8 1 nan nan nan nan nan nan nan nan nan nan
104 8 1 nan nan nan nan nan nan nan nan nan nan
105 9 1 nan nan nan nan nan nan nan nan nan nan
106 9 3 nan nan nan nan nan nan nan nan nan nan
107 9 0 nan nan nan nan nan nan nan nan nan nan
108 9 1 nan nan nan nan nan nan nan nan nan nan
109 10 1 268.023223 195.688622 388.770285 1186.053597 4.928027 78.473912 5.431529 23.064807 1.787322 603.802900
110 10 1 161.906682 122.156306 405.428106 300.276511 3.847792 3.774724 8.150891 33.105331 1.945053 3.812589
111 10 1 169.468428 209.172799 395.988972 566.604434 3.476829 3.234011 2.100044 1.440398 1.482485 0.966178
112 10 2 133.046264 167.386697 297.963076 649.409682 7.102604 55.653346 15.763864 47.263826 1.829599 45.220470
116 7 2 10.536802 5.325269 8.700682 14.310923 34.569620 8.569611 7.318531 2.885880 8.914100 4.695312
119 7 1 2.548542 3.005931 2.100595 28.371116 7.279513 7.282862 3.236240 1.899307 20.191665 2.144476
120 8 1 nan nan nan nan nan nan nan nan nan nan
121 8 3 nan nan nan nan nan nan nan nan nan nan
122 8 2 nan nan nan nan nan nan nan nan nan nan
123 8 3 nan nan nan nan nan nan nan nan nan nan
124 9 2 nan nan nan nan nan nan nan nan nan nan
125 9 3 nan nan nan nan nan nan nan nan nan nan
126 9 3 nan nan nan nan nan nan nan nan nan nan
127 10 2 158.833425 153.414119 398.637590 375.418513 6.564854 6.255282 1.344285 1.177027 1.858535 1.250924
128 10 2 374.143726 259.543800 589.883737 759.197108 6.202298 7.013319 0.859745 1.512630 0.773071 1.357824
129 10 3 130.425490 139.630594 265.135442 955.755085 5.000619 147.267405 6.666401 181.008254 1.030548 109.853525
130 10 3 127.837963 147.659062 326.295186 380.508710 6.871672 8.103450 1.551866 2.573253 1.455800 1.128364
135 12 2 1.341080 1.327427 1.664670 1.788155 2.316512 2.797759 2.384994 2.478781 2.403125 3.593982
136 12 2 1.678460 1.280140 3.230365 1.724037 1.957921 1.720171 5.715320 3.179247 4.311526 3.416057
138 7 1 1.497178 1.090492 1.719146 1.661241 2.681335 1.874950 2.288701 2.549353 26.666561 28.888536
140 13 2 1.345848 1.177468 1.823277 1.865050 2.206142 2.007071 2.309248 2.294532 2.847878 4.695655
141 13 2 3.019295 1.397488 8.202018 1.923861 10.034972 2.356764 5.521900 2.065565 5.243341 3.817212
142 13 2 6.227462 1.424296 10.242543 2.215235 4.949319 2.322271 3.252530 2.442056 4.782103 2.271225
143 14 2 1.396089 1.031291 2.408365 1.705421 2.540479 2.007577 2.694558 2.410517 4.749398 11.943645
144 14 3 1.800148 1.391540 1.861347 1.405752 3.269661 1.992769 2.174911 2.035304 3.406010 2.674546
145 14 3 1.298399 1.761704 2.808403 4.007220 1.916974 2.438898 1.989868 1.981738 2.972341 2.208961
150 15 1 4.777277 6.311475 25.148876 63.548850 6.253886 9.670632 5.208897 11.736056 6.865236 15.685176
155 12 2 3.914498 4.675615 11.689789 27.637295 3.789937 5.304593 3.704048 8.937784 4.267663 2.075134
156 12 3 nan nan nan nan nan nan nan nan nan nan
157 12 3 nan nan nan nan nan nan nan nan nan nan
158 12 3 nan nan nan nan nan nan nan nan nan nan
160 13 3 2.771548 2.204562 1.525969 2.098568 3.472998 3.157730 2.681471 2.334070 2.967748 3.689179
161 13 0 2.871927 1.268211 1.779501 1.554878 3.509096 2.357142 2.794417 1.878333 2.488843 3.395257
162 13 0 2.167970 2.090599 2.115256 2.135070 2.834136 2.450907 3.028668 2.597468 8.045948 19.122779
163 14 2 1.518203 1.299161 1.653979 1.719801 2.710160 1.983186 2.906240 2.312596 3.917917 7.674597
164 14 2 1.519124 1.439981 1.869538 1.756496 3.568761 2.634346 2.819622 5.256795 2.853088 4.211107
165 14 0 9.624104 6.890173 12.126632 13.948942 32.734349 12.329278 7.709704 7.336249 32.038851 21.692212
166 14 0 3.230627 2.251686 2.258584 2.200400 4.575824 4.924834 6.683832 4.580451 4.038792 4.576806
167 15 1 5.118678 9.808144 2.170122 54.183063 5.190590 3.962484 3.678798 2.855898 3.194792 2.642692
168 15 2 1.670940 1.114067 3.233273 2.257379 2.359776 1.835395 4.700575 4.033459 7.627576 3.867053
169 15 2 1.293347 7.072718 2.745284 35.866844 2.288795 6.807543 3.247859 5.498971 3.772787 13.829702
170 15 2 2.043718 14.483541 2.742299 78.970804 3.670173 6.862026 5.996467 14.382662 6.848008 11.155754
176 12 0 1.026817 0.987982 1.658082 1.751568 1.942326 1.870180 2.299287 2.347212 3.159384 2.859353
177 12 0 1.237192 1.150345 1.649031 1.579053 1.897535 1.851281 1.988917 1.827834 4.473795 4.904607
178 12 0 1.284694 1.163521 1.678030 1.644344 2.218757 2.230105 2.400445 2.997463 2.310727 2.290746
179 12 1 1.970411 1.232861 1.578421 1.715088 3.577803 2.061451 7.370732 2.977945 4.299733 7.366908
180 13 3 3.079596 6.150529 18.978892 2.026573 3.833150 14.209784 3.547797 12.492378 4.590393 28.239890
181 13 3 1.453691 1.218232 2.326110 1.210710 2.681103 2.204264 2.705261 1.517686 3.063326 1.508538
182 13 0 1.258139 1.748968 3.407405 2.105301 3.842541 4.861000 2.156820 2.413108 1.705264 2.794487
183 13 1 1.352686 1.261054 1.938590 1.642879 2.981093 2.379910 2.185103 1.776861 2.431073 2.509268
184 14 0 1.128992 1.195814 1.653360 1.793817 1.892334 1.800350 2.186202 2.583839 2.568226 3.819626
185 14 1 2.096284 3.169684 2.755179 3.644695 2.796712 3.598504 5.377258 7.817421 7.933085 5.392737
186 14 1 1.315720 1.135041 1.746415 2.359880 1.786095 1.980097 2.134084 2.529097 3.059719 5.811210
187 14 1 1.733012 2.203692 1.727039 2.392661 2.722941 3.091951 5.672313 8.084815 13.333682 13.998401
189 15 3 1.611519 1.531978 1.775586 1.653574 1.997196 2.615800 2.023364 3.236984 3.671703 8.542076
190 15 3 2.383132 2.657355 1.086053 0.981248 3.289389 3.941074 2.398138 2.594041 4.484895 4.463746
191 15 3 1.258516 1.236336 1.700574 1.796407 2.447413 2.486240 3.450490 3.692969 2.103663 3.297238
220 18 2 nan nan nan nan nan nan nan nan nan nan
221 18 2 nan nan nan nan nan nan nan nan nan nan
222 18 2 nan nan nan nan nan nan nan nan nan nan
320 3 2 nan nan nan nan nan nan nan nan nan nan
321 2 3 0.993582 1.093155 1.743512 5.354085 1.875987 1.913974 1.828932 1.865003 1.869451 1.758427
323 2 3 2.145871 1.828921 9.465684 10.667539 3.699736 4.728573 1.917546 1.733663 1.870551 2.431170
324 4 3 0.858085 1.205108 1.874685 3.433705 1.778383 2.784098 1.981808 1.813397 1.805221 1.766643
325 9 2 nan nan nan nan nan nan nan nan nan nan
329 12 1 1.397136 4.670519 6.662039 41.298835 1.784046 2.140284 1.824803 2.564729 1.840404 2.112613
333 12 1 1.160883 2.021365 1.902518 3.479301 2.061598 4.627013 1.744481 1.847706 1.933198 1.596976
In [16]:
csv_file = os.path.join(nb_outdir, 'ds_noise_ratio_{}.csv'.format(JD))
df.to_csv(csv_file, index=False)

Delay spectrum and autocorrelation plot per baseline per polarization for a given frequency (sub-)band¶

Left panel: time averaged delay spectum of autocorrelation in dB with 10*log10($|\tilde{V}|$) (blue) and noise from diff file representing the expected variance of the delay spectrum (red). The time-averaging is performed by 1. binning three time integrations of each even and odd visibility, 2. Fouier transform the binned even and odd visibilities, and 3. multiply the even and odd delay spectra at alternating time bin and average the squared delay spectrum along the time axis. This helps to reduce the noise bias. Both autocorrelation delay spectrum and diff delay spectrum are averaged in the same way

Right panel: time averaged autocorrelations w/o (orange) and w/ xRFI flags (blue). Flagged one is shifted from the unflagged one for clarity

In [17]:
utils.interactive_plots_dspec(bls, uvd, uvd_diff, JD)
In [ ]: