{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2022-07-03T06:02:55.016427Z", "iopub.status.busy": "2022-07-03T06:02:55.015694Z", "iopub.status.idle": "2022-07-03T06:02:58.882655Z", "shell.execute_reply": "2022-07-03T06:02:58.881809Z" }, "scrolled": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib\n", "import matplotlib.pyplot as plt\n", "from matplotlib.ticker import FormatStrFormatter\n", "import matplotlib.patches as mpatches\n", "import matplotlib.gridspec as gridspec\n", "import numpy as np\n", "from pyuvdata import UVCal, UVData\n", "import os\n", "import sys\n", "import glob\n", "import uvtools as uvt\n", "from astropy.time import Time\n", "from astropy.coordinates import EarthLocation, AltAz, Angle\n", "from astropy.coordinates import SkyCoord as sc\n", "import pandas\n", "import warnings \n", "import copy\n", "from hera_notebook_templates import utils\n", "import hera_qm\n", "from hera_mc import cm_hookup\n", "import h5py\n", "import importlib\n", "from scipy import stats\n", "from IPython.display import display, HTML\n", "#warnings.filterwarnings('ignore')\n", "\n", "%matplotlib inline\n", "%config InlineBackend.figure_format = 'retina'\n", "display(HTML(\"\"))" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2022-07-03T06:02:58.894667Z", "iopub.status.busy": "2022-07-03T06:02:58.894258Z", "iopub.status.idle": "2022-07-03T06:02:58.900798Z", "shell.execute_reply": "2022-07-03T06:02:58.900045Z" }, "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DATA_PATH = \"/mnt/sn1/2459763\"\n", "APRIORI_STATUSES = dish_maintenance,dish_ok,RF_maintenance,RF_ok,digital_ok,digital_maintenance,calibration_maintenance,calibration_triage,calibration_ok\n", "JULIANDATE = 2459763\n", "Date = 7-2-2022\n" ] } ], "source": [ "#get data location\n", "data_path = os.environ['DATA_PATH']\n", "print(f'DATA_PATH = \"{data_path}\"')\n", "statuses = os.environ['APRIORI_STATUSES']\n", "print(f'APRIORI_STATUSES = {statuses}')\n", "JD = os.environ['JULIANDATE']\n", "print(f'JULIANDATE = {JD}')\n", "utc = Time(JD, format='jd').datetime\n", "print(f'Date = {utc.month}-{utc.day}-{utc.year}')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2022-07-03T06:02:58.904988Z", "iopub.status.busy": "2022-07-03T06:02:58.904784Z", "iopub.status.idle": "2022-07-03T06:03:07.096955Z", "shell.execute_reply": "2022-07-03T06:03:07.096411Z" }, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "19 sum files found between JDs 2459763.25307 and 2459763.47928\n", "19 diff files found between JDs 2459763.25307 and 2459763.47928\n", "12 sum auto files found between JDs 2459763.25307 and 2459763.47861\n", "12 diff auto files found between JDs 2459763.25307 and 2459763.47861\n" ] }, { "ename": "UnboundLocalError", "evalue": "local variable 'hhfile' referenced before assignment", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m~/anaconda/envs/RTP/lib/python3.7/site-packages/hera_notebook_templates/utils.py\u001b[0m in \u001b[0;36mload_data\u001b[0;34m(data_path, JD)\u001b[0m\n\u001b[1;32m 209\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 210\u001b[0;31m \u001b[0muvd_hh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhhfile1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mskip_bad_files\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 211\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda/envs/RTP/lib/python3.7/site-packages/pyuvdata/uvdata/uvdata.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, filename, axis, file_type, allow_rephase, phase_center_radec, unphase_to_drift, phase_frame, phase_epoch, orig_phase_frame, phase_use_ant_pos, antenna_nums, antenna_names, ant_str, bls, frequencies, freq_chans, times, polarizations, blt_inds, time_range, keep_all_metadata, read_data, phase_type, correct_lat_lon, use_model, data_column, pol_order, data_array_dtype, nsample_array_dtype, use_cotter_flags, remove_dig_gains, remove_coarse_band, correct_cable_len, correct_van_vleck, cheby_approx, flag_small_sig_ants, propagate_coarse_flags, flag_init, edge_width, start_flag, end_flag, flag_dc_offset, remove_flagged_ants, phase_to_pointing_center, skip_bad_files, multidim_index, background_lsts, run_check, check_extra, run_check_acceptability, strict_uvw_antpos_check, isource, irec, isb, corrchunk, pseudo_cont, lsts, lst_range, calc_lst, fix_old_proj, fix_use_ant_pos, make_multi_phase, ignore_name)\u001b[0m\n\u001b[1;32m 11616\u001b[0m \u001b[0mfix_old_proj\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfix_old_proj\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m> 11617\u001b[0;31m \u001b[0mfix_use_ant_pos\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfix_use_ant_pos\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11618\u001b[0m )\n", "\u001b[0;32m~/anaconda/envs/RTP/lib/python3.7/site-packages/pyuvdata/uvdata/uvdata.py\u001b[0m in \u001b[0;36mread_uvh5\u001b[0;34m(self, filename, axis, antenna_nums, antenna_names, ant_str, bls, frequencies, freq_chans, times, time_range, lsts, lst_range, polarizations, blt_inds, keep_all_metadata, read_data, data_array_dtype, multidim_index, background_lsts, run_check, check_extra, run_check_acceptability, strict_uvw_antpos_check, fix_old_proj, fix_use_ant_pos)\u001b[0m\n\u001b[1;32m 10761\u001b[0m \u001b[0mfix_old_proj\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfix_old_proj\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m> 10762\u001b[0;31m \u001b[0mfix_use_ant_pos\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfix_use_ant_pos\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10763\u001b[0m )\n", "\u001b[0;32m~/anaconda/envs/RTP/lib/python3.7/site-packages/pyuvdata/uvdata/uvh5.py\u001b[0m in \u001b[0;36mread_uvh5\u001b[0;34m(self, filename, antenna_nums, antenna_names, ant_str, bls, frequencies, freq_chans, times, time_range, lsts, lst_range, polarizations, blt_inds, keep_all_metadata, read_data, data_array_dtype, multidim_index, background_lsts, run_check, check_extra, run_check_acceptability, strict_uvw_antpos_check, fix_old_proj, fix_use_ant_pos)\u001b[0m\n\u001b[1;32m 940\u001b[0m \u001b[0mfix_old_proj\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 941\u001b[0;31m \u001b[0mfix_use_ant_pos\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 942\u001b[0m )\n", "\u001b[0;32m~/anaconda/envs/RTP/lib/python3.7/site-packages/pyuvdata/uvdata/uvh5.py\u001b[0m in \u001b[0;36m_get_data\u001b[0;34m(self, dgrp, antenna_nums, antenna_names, ant_str, bls, frequencies, freq_chans, times, time_range, lsts, lst_range, polarizations, blt_inds, data_array_dtype, keep_all_metadata, multidim_index, run_check, check_extra, run_check_acceptability, strict_uvw_antpos_check, fix_old_proj, fix_use_ant_pos)\u001b[0m\n\u001b[1;32m 729\u001b[0m \u001b[0mrun_check_acceptability\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mrun_check_acceptability\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 730\u001b[0;31m \u001b[0mstrict_uvw_antpos_check\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mstrict_uvw_antpos_check\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 731\u001b[0m )\n", "\u001b[0;32m~/anaconda/envs/RTP/lib/python3.7/site-packages/pyuvdata/uvdata/uvdata.py\u001b[0m in \u001b[0;36mcheck\u001b[0;34m(self, check_extra, run_check_acceptability, check_freq_spacing, strict_uvw_antpos_check)\u001b[0m\n\u001b[1;32m 2477\u001b[0m raise ValueError(\n\u001b[0;32m-> 2478\u001b[0;31m \u001b[0;34m\"Ntimes must be equal to the number of unique \"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2479\u001b[0m \u001b[0;34m\"times in the time_array\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mValueError\u001b[0m: Ntimes must be equal to the number of unique times in the time_array", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[0;31mUnboundLocalError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_18785/907787969.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Load in data\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mHHfiles\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdifffiles\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mHHautos\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdiffautos\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0muvdx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0muvdy\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata_path\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mJD\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0muvd\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mUVData\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0munread\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda/envs/RTP/lib/python3.7/site-packages/hera_notebook_templates/utils.py\u001b[0m in \u001b[0;36mload_data\u001b[0;34m(data_path, JD)\u001b[0m\n\u001b[1;32m 210\u001b[0m \u001b[0muvd_hh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhhfile1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mskip_bad_files\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 211\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 212\u001b[0;31m \u001b[0mhhfile\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 213\u001b[0m \u001b[0;32mcontinue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 214\u001b[0m \u001b[0munread\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mUnboundLocalError\u001b[0m: local variable 'hhfile' referenced before assignment" ] } ], "source": [ "# Load in data\n", "HHfiles, difffiles, HHautos, diffautos, uvdx, uvdy = utils.load_data(data_path,JD)\n", " \n", "uvd = UVData()\n", "unread = True\n", "readInd=0\n", "while unread and readInd10.9 Jy. Note that the map is clipped at the northern horizon." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2022-07-03T06:03:07.099777Z", "iopub.status.busy": "2022-07-03T06:03:07.099583Z", "iopub.status.idle": "2022-07-03T06:03:07.111257Z", "shell.execute_reply": "2022-07-03T06:03:07.110819Z" } }, "outputs": [ { "ename": "NameError", "evalue": "name 'uvd' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_18785/3107717104.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0msources\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgather_source_list\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot_sky_map\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0muvd\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mdec_pad\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m55\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mra_pad\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m55\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mclip\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0msources\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msources\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mNameError\u001b[0m: name 'uvd' is not defined" ] } ], "source": [ "sources = utils.gather_source_list()\n", "utils.plot_sky_map(uvd,dec_pad=55,ra_pad=55,clip=False,sources=sources)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## LST Coverage" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Shows the LSTs (in hours) and JDs for which data is collected. Green represents data, red means no data." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2022-07-03T06:03:07.113741Z", "iopub.status.busy": "2022-07-03T06:03:07.113558Z", "iopub.status.idle": "2022-07-03T06:03:07.121825Z", "shell.execute_reply": "2022-07-03T06:03:07.121387Z" }, "scrolled": false }, "outputs": [ { "ename": "NameError", "evalue": "name 'uvd' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_18785/2564091942.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot_lst_coverage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0muvd\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mNameError\u001b[0m: name 'uvd' is not defined" ] } ], "source": [ "utils.plot_lst_coverage(uvd)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Autocorrelations for a single file" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This plot shows autocorrelations for one timestamp of each antenna that is active and each polarization. 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." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2022-07-03T06:03:07.124185Z", "iopub.status.busy": "2022-07-03T06:03:07.124002Z", "iopub.status.idle": "2022-07-03T06:03:07.132345Z", "shell.execute_reply": "2022-07-03T06:03:07.131911Z" }, "scrolled": false }, "outputs": [ { "ename": "NameError", "evalue": "name 'uvdx' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_18785/946744323.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m### plot autos\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot_autos\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0muvdx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0muvdy\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mNameError\u001b[0m: name 'uvdx' is not defined" ] } ], "source": [ "### plot autos\n", "utils.plot_autos(uvdx, uvdy)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Waterfalls of Autocorrelation Amplitudes for each Antenna and Each polarization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "These plots show autocorrelation waterfalls of each antenna that is active and whose status qualifies for this notebook. 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." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2022-07-03T06:03:07.134809Z", "iopub.status.busy": "2022-07-03T06:03:07.134627Z", "iopub.status.idle": "2022-07-03T06:03:07.142845Z", "shell.execute_reply": "2022-07-03T06:03:07.142415Z" }, "scrolled": false }, "outputs": [ { "ename": "NameError", "evalue": "name 'uvd' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_18785/412326573.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot_wfs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0muvd\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mNameError\u001b[0m: name 'uvd' is not defined" ] } ], "source": [ "utils.plot_wfs(uvd, pol = 0)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2022-07-03T06:03:07.145156Z", "iopub.status.busy": "2022-07-03T06:03:07.144973Z", "iopub.status.idle": "2022-07-03T06:03:07.153414Z", "shell.execute_reply": "2022-07-03T06:03:07.152947Z" }, "scrolled": false }, "outputs": [ { "ename": "NameError", "evalue": "name 'uvd' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_18785/2409074146.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot_wfs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0muvd\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mNameError\u001b[0m: name 'uvd' is not defined" ] } ], "source": [ "utils.plot_wfs(uvd, pol = 1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Correlation Metrics" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first plot shows the correlation metric (described below) for a set of baseline types, as calculated at several times throughout the night. It is expected that longer baselines (darker color) will exhibit lower values than the short baselines. \n", "\n", "The matrices show the phase correlation between antennas. Using the even and odd visibilities, each pixel is calculated as (even/abs(even)) * (conj(odd)/abs(odd)), and then averaged across time and frequency. If the phases are noise-like, this value will average down to zero. If the antennas are well correlated, the phases should not be noise-like, and this value should average to 1. The lines denoting node boundaries are intended to help confirm that inter-node correlations are functioning - if they aren't, this plot will appear block-diagonal.\n", "\n", "This metric has shown to be LST locked - when comparing to other nights, be sure to compare for the same LST. It is expected that some LSTs will look much better or worse than others.\n", "\n", "Note: Within each node, the order of antennas is determined by snap, and within that by snap input number. " ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2022-07-03T06:03:07.155785Z", "iopub.status.busy": "2022-07-03T06:03:07.155599Z", "iopub.status.idle": "2022-07-03T06:03:07.164506Z", "shell.execute_reply": "2022-07-03T06:03:07.164069Z" }, "scrolled": false }, "outputs": [ { "ename": "NameError", "evalue": "name 'uvd' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_18785/276258673.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mbadAnts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mbadAnts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotNodeAveragedSummary\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0muvd\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mHHfiles\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mJD\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0muse_ants\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mmat_pols\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'xx'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'yy'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'xy'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'yx'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mNameError\u001b[0m: name 'uvd' is not defined" ] } ], "source": [ "badAnts = []\n", "badAnts = utils.plotNodeAveragedSummary(uvd,HHfiles,JD,use_ants,mat_pols=['xx','yy','xy','yx'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Visibility amplitude spectra for a set of redundant baselines, labeled by inter vs. intranode baselines. The red and blue should exhibit the same bandpass shape - if the red are consistently different from the blue, this indicates an issue with internode correlations.\n", "\n", "Note: antennas that were identified as bad by the correlation matrix have been removed from this plot." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2022-07-03T06:03:07.166940Z", "iopub.status.busy": "2022-07-03T06:03:07.166758Z", "iopub.status.idle": "2022-07-03T06:03:07.176036Z", "shell.execute_reply": "2022-07-03T06:03:07.175550Z" }, "scrolled": false }, "outputs": [ { "ename": "NameError", "evalue": "name 'HHfiles' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_18785/4102263869.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotVisibilitySpectra\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mHHfiles\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mHHfiles\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m//\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mJD\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0muse_ants\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbadAnts\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mNameError\u001b[0m: name 'HHfiles' is not defined" ] } ], "source": [ "utils.plotVisibilitySpectra(HHfiles[len(HHfiles)//2+1], JD, use_ants, badAnts=[])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Even and Odd File Checks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A waterfall showing the ratio between the even and odd visibilities. The purpose of this is to highlight xengine failures, which will cause this value to fall to zero or go to infinity. If things are working properly, this value should be stable at 1. The boundaries between different x-engines are shown by the vertical white lines." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2022-07-03T06:03:07.178458Z", "iopub.status.busy": "2022-07-03T06:03:07.178275Z", "iopub.status.idle": "2022-07-03T06:03:07.189141Z", "shell.execute_reply": "2022-07-03T06:03:07.188666Z" }, "scrolled": false }, "outputs": [ { "ename": "NameError", "evalue": "name 'HHautos' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_18785/2471927149.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mHHautos\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdiffautos\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0muvd_diff\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mUVData\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0muvd_diff\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdiffautos\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mskip_bad_files\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mantenna_nums\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0muse_ants\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mrat\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotEvenOddWaterfalls\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0muvd\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0muvd_diff\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mNameError\u001b[0m: name 'HHautos' is not defined" ] } ], "source": [ "if len(HHautos) == len(diffautos):\n", " uvd_diff = UVData()\n", " uvd_diff.read(diffautos[::10], skip_bad_files=True, antenna_nums=use_ants)\n", " rat = utils.plotEvenOddWaterfalls(uvd,uvd_diff)\n", "else:\n", " uvd_diff = UVData()\n", " use_diffs = [f for f in diffautos if '%s/zen.%s.%s.sum.autos.uvh5' % (data_path,f.split('.')[1],f.split('.')[2]) in HHautos[::10]]\n", " uvd_diff.read(use_diffs, skip_bad_files=True, antenna_nums = use_ants)\n", " uvd_sum = uvd.select(times=np.unique(uvd_diff.time_array),inplace=False)\n", " rat = utils.plotEvenOddWaterfalls(uvd_sum,uvd_diff)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Crossed Antenna Check" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "These are differences between different panels of the correlation matrices shown above (see panel titles for specifics). Antennas showing as consistently blue are ones which are correlating stronger in the cross pols than in the auto pols, indicating that the antenna polarizations are likely crossed." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2022-07-03T06:03:07.191547Z", "iopub.status.busy": "2022-07-03T06:03:07.191368Z", "iopub.status.idle": "2022-07-03T06:03:07.200642Z", "shell.execute_reply": "2022-07-03T06:03:07.200210Z" }, "scrolled": false }, "outputs": [ { "ename": "NameError", "evalue": "name 'uvd' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_18785/3454784400.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m crossedAnts = utils.plotNodeAveragedSummary(uvd,HHfiles,JD,use_ants,mat_pols=['xx','yy','xy','yx'],plotRatios=True,\n\u001b[0m\u001b[1;32m 2\u001b[0m plotSummary=False)\n", "\u001b[0;31mNameError\u001b[0m: name 'uvd' is not defined" ] } ], "source": [ "crossedAnts = utils.plotNodeAveragedSummary(uvd,HHfiles,JD,use_ants,mat_pols=['xx','yy','xy','yx'],plotRatios=True,\n", " plotSummary=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Antenna Positions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Antennas outlined in black here have been identified by the correlation matrix as bad antennas. Antennas with a colorful outline correspond to their status as identified by ant_metrics (see above plot). Faded antennas are those not meeting the apriori status requirement for this notebook run. Gold stars are node box locations." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2022-07-03T06:03:07.203091Z", "iopub.status.busy": "2022-07-03T06:03:07.202910Z", "iopub.status.idle": "2022-07-03T06:03:07.212497Z", "shell.execute_reply": "2022-07-03T06:03:07.212055Z" }, "scrolled": false }, "outputs": [ { "ename": "NameError", "evalue": "name 'HHfiles' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_18785/1660276027.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0muvd1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mUVData\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0muvd1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mHHfiles\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mreadInd\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mskip_bad_files\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot_antenna_positions\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0muvd1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbadAnts\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbadAnts\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0muse_ants\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0muse_ants\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mNameError\u001b[0m: name 'HHfiles' is not defined" ] } ], "source": [ "uvd1 = UVData()\n", "uvd1.read(HHfiles[readInd], skip_bad_files=True)\n", "utils.plot_antenna_positions(uvd1, badAnts=badAnts,use_ants=use_ants)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Observer Inspection Plots" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Antennas of status digital_OK or better that are flagged as bad by any of the above metrics are plotted here so observers can inspect their failures in more detail. Additionally, a 'good' template has been used to identify outliers. The upper line plots are averages over the whole observation, and the lower line plots are slices of a single time in the middle of the observation. These plots are recommended diagnostics for demoting antennas to lower statuses or reporting issues. If the plots below look OK, check other plots in notebook to hunt why the antenna was flagged. NOTE: The colorbar/power scales in these plots are NOT locked between antennas OR polarizations so that the detail will be visible on all plots. Be sure to check for reasonable power levels, as this may be the reason the antenna was flagged for inspection." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2022-07-03T06:03:07.214965Z", "iopub.status.busy": "2022-07-03T06:03:07.214786Z", "iopub.status.idle": "2022-07-03T06:03:07.223999Z", "shell.execute_reply": "2022-07-03T06:03:07.223561Z" }, "scrolled": false }, "outputs": [ { "ename": "NameError", "evalue": "name 'uvd' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_18785/645298669.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0md\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtempAnts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mflag_by_template\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0muvd\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mHHautos\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mJD\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0muse_ants\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0muse_ants\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mpols\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'XX'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'YY'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mplotMap\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mNameError\u001b[0m: name 'uvd' is not defined" ] } ], "source": [ "d, tempAnts = utils.flag_by_template(uvd,HHautos,JD,use_ants=use_ants,pols=['XX','YY'],plotMap=False)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2022-07-03T06:03:07.226330Z", "iopub.status.busy": "2022-07-03T06:03:07.226146Z", "iopub.status.idle": "2022-07-03T06:03:07.234879Z", "shell.execute_reply": "2022-07-03T06:03:07.234447Z" }, "scrolled": true }, "outputs": [ { "ename": "NameError", "evalue": "name 'uvd' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_18785/3963504066.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m inspectAnts = utils.plot_inspect_ants(uvd,JD,badAnts=badAnts,use_ants=use_ants,\n\u001b[0m\u001b[1;32m 2\u001b[0m tempAnts=tempAnts,crossedAnts=crossedAnts)\n", "\u001b[0;31mNameError\u001b[0m: name 'uvd' is not defined" ] } ], "source": [ "inspectAnts = utils.plot_inspect_ants(uvd,JD,badAnts=badAnts,use_ants=use_ants,\n", " tempAnts=tempAnts,crossedAnts=crossedAnts)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Mean-Subtracted Waterfalls" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here the mean value in each frequency bin has been subtracted out. This effectively subtracts out the bandpass shape, making time variations more visible." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "execution": { "iopub.execute_input": "2022-07-03T06:03:07.237234Z", "iopub.status.busy": "2022-07-03T06:03:07.237052Z", "iopub.status.idle": "2022-07-03T06:03:07.245652Z", "shell.execute_reply": "2022-07-03T06:03:07.245213Z" }, "scrolled": false }, "outputs": [ { "ename": "NameError", "evalue": "name 'uvd' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_18785/4075540537.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot_wfs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0muvd\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mmean_sub\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mjd\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mJD\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot_wfs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0muvd\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mmean_sub\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mjd\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mJD\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mNameError\u001b[0m: name 'uvd' is not defined" ] } ], "source": [ "utils.plot_wfs(uvd,0,mean_sub=True,jd=JD)\n", "utils.plot_wfs(uvd,1,mean_sub=True,jd=JD)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.9" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }