{
"cells": [
{
"cell_type": "markdown",
"id": "858af913-07e5-4b3f-8462-20ddb3fe6680",
"metadata": {},
"source": [
"# Selecting Data\n",
"\n",
"This notebook shows how to select data in dysh.\n",
"By selecting data, you can narrow down which scans or integrations the subsequent calibration routines will operate on.\n",
"We call such narrowing down a \"selection rule.\"\n",
"You create selection rules through methods of [``GBTFITSLoad``](https://dysh.readthedocs.io/en/latest/reference/modules/dysh.fits.html#module-dysh.fits.gbtfitsload.GBTFITSLoad), which uses an instance of [``Selection``](https://dysh.readthedocs.io/en/latest/reference/modules/dysh.util.html#dysh.util.selection.Selection) as an attribute called ``selection``.\n",
"You can create multiple selection rules that will be logically ANDed to create a final rule at calibration time.\n",
"\n",
"## Dysh commands\n",
"\n",
"The following dysh commands are introduced (leaving out all the function arguments):\n",
"\n",
" filename = dysh_data()\n",
" sdf = GBTFITSLoad()\n",
" sdf.select()\n",
" sb = sdf.getps()\n",
" ta = sb.timeaverage()\n",
" ta.baseline()\n",
" ta.average()\n",
" ta.plot()\n",
" ta_plt.savefig()\n",
"\n",
"## Loading Modules\n",
"We start by loading the modules we will use in this notebook. "
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "126a61c2-8730-4194-a39a-3728f611dbd7",
"metadata": {},
"outputs": [],
"source": [
"# These modules are required for the notebook (no plotting is done)\n",
"import astropy.units as u\n",
"from astropy.time import Time\n",
"from dysh.log import init_logging\n",
"from dysh.fits.gbtfitsload import GBTFITSLoad\n",
"from dysh.log import init_logging\n",
"\n",
"# These modules are used for file I/O\n",
"from dysh.util.files import dysh_data\n",
"from pathlib import Path"
]
},
{
"cell_type": "markdown",
"id": "ab4b2cbd-7987-4a68-9f6f-ffea3c0ecafb",
"metadata": {},
"source": [
"## Setup\n",
"We start the dysh logging, so we get more information about what is happening.\n",
"This is only needed if working on a notebook.\n",
"If using the CLI through the dysh command, then logging is setup for you."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "1b386a84-da2c-4d00-94ca-f980c9e49675",
"metadata": {},
"outputs": [],
"source": [
"init_logging(2)\n",
"\n",
"# also create a local \"output\" directory where temporary notebook files can be stored.\n",
"output_dir = Path.cwd() / \"output\"\n",
"output_dir.mkdir(exist_ok=True)"
]
},
{
"cell_type": "markdown",
"id": "42421919-e8e3-42b9-8080-4b68dcef38f4",
"metadata": {},
"source": [
"## Data Retrieval\n",
"\n",
"Download the example SDFITS data, if necessary.\n",
"\n",
"The code below will download an SDFITS file from [](http://www.gb.nrao.edu/dysh/example_data) and put it in a data directory.\n",
"\n",
"\n",
"The code below will download an SDFITS file from http://www.gb.nrao.edu/dysh/example_data and put it in a data directory.\n",
"The data directory must exist where this notebook is being run from, otherwise the downloaded SDFITS will be named data.\n",
"The example will work either way, but be aware if you find a new file named data after running it."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "41e76282-545a-4573-9bb7-38af50aa2a89",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"19:59:30.771 I Resolving example=survey -> hi-survey/data/AGBT04A_008_02.raw.acs/AGBT04A_008_02.raw.acs.fits\n"
]
}
],
"source": [
"# hi-survey/data/AGBT04A_008_02.raw.acs/AGBT04A_008_02.raw.acs.fits\n",
"filename = dysh_data(example=\"survey\")"
]
},
{
"cell_type": "markdown",
"id": "493fadee-e596-4d2d-af68-86793f2148f9",
"metadata": {},
"source": [
"## Data Loading\n",
"\n",
"Next, we use [``GBTFITSLoad``](https://dysh.readthedocs.io/en/latest/reference/modules/dysh.fits.html#module-dysh.fits.gbtfitsload.GBTFITSLoad) to load the data, and then its [``summary``](https://dysh.readthedocs.io/en/latest/reference/modules/dysh.fits.html#module-dysh.fits.gbtfitsload.GBTFITSLoad.summary) method to inspect its contents.\n",
"We add the UTC column to the ``summary``."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "9efd592a-c289-4219-82f1-a62cbfc72f04",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
" \n",
" \n",
" | SCAN | \n",
" OBJECT | \n",
" VELOCITY | \n",
" PROC | \n",
" PROCSEQN | \n",
" RESTFREQ | \n",
" DOPFREQ | \n",
" # IF | \n",
" # POL | \n",
" # INT | \n",
" # FEED | \n",
" AZIMUTH | \n",
" ELEVATION | \n",
" UTC | \n",
"
\n",
" \n",
" \n",
" \n",
" | 220 | \n",
" 3C286 | \n",
" 0.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.400000 | \n",
" 1.400000 | \n",
" 1 | \n",
" 2 | \n",
" 6 | \n",
" 1 | \n",
" 185.2806 | \n",
" 82.0246 | \n",
" 2004-04-22 04:51:41.035000192 | \n",
"
\n",
" \n",
" | 221 | \n",
" 3C286 | \n",
" 0.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.400000 | \n",
" 1.400000 | \n",
" 1 | \n",
" 2 | \n",
" 6 | \n",
" 1 | \n",
" 187.2136 | \n",
" 81.9980 | \n",
" 2004-04-22 04:52:56.034999936 | \n",
"
\n",
" \n",
" | 222 | \n",
" 3C286 | \n",
" 0.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.400000 | \n",
" 1.400000 | \n",
" 1 | \n",
" 2 | \n",
" 6 | \n",
" 1 | \n",
" 193.8331 | \n",
" 81.8413 | \n",
" 2004-04-22 04:57:18.034999936 | \n",
"
\n",
" \n",
" | 223 | \n",
" 3C286 | \n",
" 0.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.400000 | \n",
" 1.400000 | \n",
" 1 | \n",
" 2 | \n",
" 6 | \n",
" 1 | \n",
" 195.6766 | \n",
" 81.7788 | \n",
" 2004-04-22 04:58:33.035000192 | \n",
"
\n",
" \n",
" | 224 | \n",
" 3C286 | \n",
" 0.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.400000 | \n",
" 1.400000 | \n",
" 1 | \n",
" 2 | \n",
" 6 | \n",
" 1 | \n",
" 195.5182 | \n",
" 80.2910 | \n",
" 2004-04-22 05:00:06.034999936 | \n",
"
\n",
" \n",
" | 225 | \n",
" 3C286 | \n",
" 0.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.400000 | \n",
" 1.400000 | \n",
" 1 | \n",
" 2 | \n",
" 5 | \n",
" 1 | \n",
" 199.9358 | \n",
" 81.6005 | \n",
" 2004-04-22 05:01:31.028000128 | \n",
"
\n",
" \n",
" | 226 | \n",
" 3C286 | \n",
" 0.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.400000 | \n",
" 1.400000 | \n",
" 1 | \n",
" 2 | \n",
" 6 | \n",
" 1 | \n",
" 200.8333 | \n",
" 80.0265 | \n",
" 2004-04-22 05:04:25.035000192 | \n",
"
\n",
" \n",
" | 227 | \n",
" 3C286 | \n",
" 0.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.400000 | \n",
" 1.400000 | \n",
" 1 | \n",
" 2 | \n",
" 6 | \n",
" 1 | \n",
" 205.9471 | \n",
" 81.2609 | \n",
" 2004-04-22 05:05:57.035000192 | \n",
"
\n",
" \n",
" | 228 | \n",
" B1328+254 | \n",
" 0.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.400000 | \n",
" 1.400000 | \n",
" 1 | \n",
" 2 | \n",
" 6 | \n",
" 1 | \n",
" 207.5257 | \n",
" 73.9844 | \n",
" 2004-04-22 05:17:26.034999936 | \n",
"
\n",
" \n",
" | 229 | \n",
" B1328+254 | \n",
" 0.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.400000 | \n",
" 1.400000 | \n",
" 1 | \n",
" 2 | \n",
" 6 | \n",
" 1 | \n",
" 210.9600 | \n",
" 75.1584 | \n",
" 2004-04-22 05:18:54.034999936 | \n",
"
\n",
" \n",
" | 230 | \n",
" B1345+125 | \n",
" 0.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.400000 | \n",
" 1.400000 | \n",
" 1 | \n",
" 2 | \n",
" 18 | \n",
" 1 | \n",
" 193.2738 | \n",
" 62.0703 | \n",
" 2004-04-22 05:27:20.118333440 | \n",
"
\n",
" \n",
" | 231 | \n",
" B1345+125 | \n",
" 0.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.400000 | \n",
" 1.400000 | \n",
" 1 | \n",
" 2 | \n",
" 18 | \n",
" 1 | \n",
" 195.6794 | \n",
" 63.3244 | \n",
" 2004-04-22 05:30:43.118333440 | \n",
"
\n",
" \n",
" | 244 | \n",
" B1345+125 | \n",
" 0.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.400000 | \n",
" 1.400000 | \n",
" 1 | \n",
" 2 | \n",
" 18 | \n",
" 1 | \n",
" 200.9543 | \n",
" 60.9284 | \n",
" 2004-04-22 05:45:21.118333440 | \n",
"
\n",
" \n",
" | 245 | \n",
" B1345+125 | \n",
" 0.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.400000 | \n",
" 1.400000 | \n",
" 1 | \n",
" 2 | \n",
" 18 | \n",
" 1 | \n",
" 203.5311 | \n",
" 62.0587 | \n",
" 2004-04-22 05:48:43.118333440 | \n",
"
\n",
" \n",
" | 246 | \n",
" B1345+125 | \n",
" 0.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.400000 | \n",
" 1.400000 | \n",
" 1 | \n",
" 2 | \n",
" 18 | \n",
" 1 | \n",
" 204.3408 | \n",
" 60.3930 | \n",
" 2004-04-22 05:52:26.006111104 | \n",
"
\n",
" \n",
" | 247 | \n",
" B1345+125 | \n",
" 0.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.400000 | \n",
" 1.400000 | \n",
" 1 | \n",
" 2 | \n",
" 18 | \n",
" 1 | \n",
" 206.9763 | \n",
" 61.4655 | \n",
" 2004-04-22 05:55:48.006111232 | \n",
"
\n",
" \n",
" | 248 | \n",
" B1345+125 | \n",
" 0.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.370000 | \n",
" 1.370000 | \n",
" 1 | \n",
" 2 | \n",
" 18 | \n",
" 1 | \n",
" 208.0408 | \n",
" 59.6983 | \n",
" 2004-04-22 06:00:27.118333440 | \n",
"
\n",
" \n",
" | 249 | \n",
" B1345+125 | \n",
" 0.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.370000 | \n",
" 1.370000 | \n",
" 1 | \n",
" 2 | \n",
" 18 | \n",
" 1 | \n",
" 210.7215 | \n",
" 60.7060 | \n",
" 2004-04-22 06:03:49.118333440 | \n",
"
\n",
" \n",
" | 250 | \n",
" B1345+125 | \n",
" 0.0 | \n",
" Track | \n",
" 1 | \n",
" 1.370000 | \n",
" 1.370000 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 215.2430 | \n",
" 59.6119 | \n",
" 2004-04-22 06:08:15.013333504 | \n",
"
\n",
" \n",
" | 251 | \n",
" B1345+125 | \n",
" 0.0 | \n",
" Track | \n",
" 1 | \n",
" 1.370000 | \n",
" 1.370000 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 215.9692 | \n",
" 59.4175 | \n",
" 2004-04-22 06:09:57.013333120 | \n",
"
\n",
" \n",
" | 263 | \n",
" U8091 | \n",
" 213.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 241.1339 | \n",
" 50.6393 | \n",
" 2004-04-22 06:31:44.201666816 | \n",
"
\n",
" \n",
" | 264 | \n",
" U8091 | \n",
" 213.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 240.9795 | \n",
" 50.7395 | \n",
" 2004-04-22 06:37:07.201666688 | \n",
"
\n",
" \n",
" | 265 | \n",
" U8091 | \n",
" 213.0 | \n",
" Track | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 243.4807 | \n",
" 49.8234 | \n",
" 2004-04-22 06:40:42.013332992 | \n",
"
\n",
" \n",
" | 266 | \n",
" U8249 | \n",
" 2541.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 10 | \n",
" 1 | \n",
" 241.7065 | \n",
" 50.2801 | \n",
" 2004-04-22 06:45:34.062999936 | \n",
"
\n",
" \n",
" | 267 | \n",
" U8249 | \n",
" 2541.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 242.6892 | \n",
" 49.6343 | \n",
" 2004-04-22 06:49:17.011333376 | \n",
"
\n",
" \n",
" | 268 | \n",
" U8249 | \n",
" 2541.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 242.5451 | \n",
" 49.7333 | \n",
" 2004-04-22 06:54:41.011333248 | \n",
"
\n",
" \n",
" | 269 | \n",
" U8249 | \n",
" 2541.0 | \n",
" Track | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 244.9435 | \n",
" 48.0787 | \n",
" 2004-04-22 06:58:18.013332992 | \n",
"
\n",
" \n",
" | 270 | \n",
" U8503 | \n",
" 4676.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 270.1741 | \n",
" 60.2485 | \n",
" 2004-04-22 07:05:18.201666816 | \n",
"
\n",
" \n",
" | 271 | \n",
" U8503 | \n",
" 4676.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 269.9396 | \n",
" 60.5449 | \n",
" 2004-04-22 07:10:40.201666816 | \n",
"
\n",
" \n",
" | 272 | \n",
" U8091 | \n",
" 213.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 253.5780 | \n",
" 41.4420 | \n",
" 2004-04-22 07:21:01.011333376 | \n",
"
\n",
" \n",
" | 273 | \n",
" U8091 | \n",
" 213.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 253.4586 | \n",
" 41.5517 | \n",
" 2004-04-22 07:26:24.011333632 | \n",
"
\n",
" \n",
" | 274 | \n",
" U8091 | \n",
" 213.0 | \n",
" Track | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 255.5793 | \n",
" 39.5541 | \n",
" 2004-04-22 07:31:11.013333504 | \n",
"
\n",
" \n",
" | 275 | \n",
" U8249 | \n",
" 2541.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 266.5469 | \n",
" 46.8377 | \n",
" 2004-04-22 07:36:10.011333376 | \n",
"
\n",
" \n",
" | 276 | \n",
" U8249 | \n",
" 2541.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 266.3738 | \n",
" 47.0388 | \n",
" 2004-04-22 07:41:31.011333376 | \n",
"
\n",
" \n",
" | 277 | \n",
" U8249 | \n",
" 2541.0 | \n",
" Track | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 267.9426 | \n",
" 45.1863 | \n",
" 2004-04-22 07:45:11.013333504 | \n",
"
\n",
" \n",
" | 278 | \n",
" U9965 | \n",
" 4524.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 221.5582 | \n",
" 67.7182 | \n",
" 2004-04-22 07:52:57.011333248 | \n",
"
\n",
" \n",
" | 279 | \n",
" U9965 | \n",
" 4524.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 221.2070 | \n",
" 67.8070 | \n",
" 2004-04-22 07:58:27.011333632 | \n",
"
\n",
" \n",
" | 280 | \n",
" U9965 | \n",
" 4524.0 | \n",
" Track | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 222.9262 | \n",
" 67.3657 | \n",
" 2004-04-22 08:01:49.013333120 | \n",
"
\n",
" \n",
" | 281 | \n",
" U10351 | \n",
" 891.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 221.2955 | \n",
" 77.4668 | \n",
" 2004-04-22 08:09:01.011333376 | \n",
"
\n",
" \n",
" | 282 | \n",
" U10351 | \n",
" 891.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 220.4924 | \n",
" 77.5922 | \n",
" 2004-04-22 08:14:38.011333248 | \n",
"
\n",
" \n",
" | 283 | \n",
" U10351 | \n",
" 891.0 | \n",
" Track | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 227.9032 | \n",
" 76.2644 | \n",
" 2004-04-22 08:18:33.013333120 | \n",
"
\n",
" \n",
" | 284 | \n",
" U9007 | \n",
" 4618.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 248.6632 | \n",
" 38.3497 | \n",
" 2004-04-22 08:26:53.011333376 | \n",
"
\n",
" \n",
" | 285 | \n",
" U9007 | \n",
" 4618.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 248.5549 | \n",
" 38.4433 | \n",
" 2004-04-22 08:32:14.011333248 | \n",
"
\n",
" \n",
" | 286 | \n",
" U9007 | \n",
" 4618.0 | \n",
" Track | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 250.5574 | \n",
" 36.6787 | \n",
" 2004-04-22 08:36:03.013333504 | \n",
"
\n",
" \n",
" | 287 | \n",
" U9007 | \n",
" 5257.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 234.2956 | \n",
" 48.0209 | \n",
" 2004-04-22 08:41:26.011333248 | \n",
"
\n",
" \n",
" | 288 | \n",
" U9007 | \n",
" 5257.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 234.1669 | \n",
" 48.0937 | \n",
" 2004-04-22 08:46:50.011333376 | \n",
"
\n",
" \n",
" | 289 | \n",
" U9803 | \n",
" 5257.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 264.9610 | \n",
" 57.9997 | \n",
" 2004-04-22 08:56:18.011333120 | \n",
"
\n",
" \n",
" | 290 | \n",
" U9803 | \n",
" 5257.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 264.7276 | \n",
" 58.2483 | \n",
" 2004-04-22 09:01:40.011333504 | \n",
"
\n",
" \n",
" | 291 | \n",
" U9803 | \n",
" 5257.0 | \n",
" Track | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 266.5221 | \n",
" 56.2884 | \n",
" 2004-04-22 09:05:54.013332992 | \n",
"
\n",
" \n",
" | 292 | \n",
" U10351 | \n",
" 891.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 252.1644 | \n",
" 67.0847 | \n",
" 2004-04-22 09:11:13.011333248 | \n",
"
\n",
" \n",
" | 293 | \n",
" U10351 | \n",
" 891.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 251.8134 | \n",
" 67.3038 | \n",
" 2004-04-22 09:16:38.011333248 | \n",
"
\n",
" \n",
" | 294 | \n",
" U10351 | \n",
" 891.0 | \n",
" Track | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 255.3764 | \n",
" 64.9184 | \n",
" 2004-04-22 09:23:31.013333504 | \n",
"
\n",
" \n",
" | 295 | \n",
" U10629 | \n",
" 2980.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 233.9472 | \n",
" 66.8551 | \n",
" 2004-04-22 09:29:00.011333248 | \n",
"
\n",
" \n",
" | 296 | \n",
" U10629 | \n",
" 2980.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 233.5991 | \n",
" 66.9846 | \n",
" 2004-04-22 09:34:28.011333504 | \n",
"
\n",
" \n",
" | 297 | \n",
" U10629 | \n",
" 2980.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 238.3584 | \n",
" 65.0614 | \n",
" 2004-04-22 09:40:00.011333632 | \n",
"
\n",
" \n",
" | 298 | \n",
" U10629 | \n",
" 2980.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 238.0441 | \n",
" 65.2006 | \n",
" 2004-04-22 09:45:27.011333504 | \n",
"
\n",
" \n",
" | 299 | \n",
" U10629 | \n",
" 2980.0 | \n",
" Track | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 241.4405 | \n",
" 63.6131 | \n",
" 2004-04-22 09:49:02.013332992 | \n",
"
\n",
" \n",
" | 300 | \n",
" U11017 | \n",
" 4644.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 235.4605 | \n",
" 76.2074 | \n",
" 2004-04-22 09:54:06.011333248 | \n",
"
\n",
" \n",
" | 301 | \n",
" U11017 | \n",
" 4644.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 234.7726 | \n",
" 76.3879 | \n",
" 2004-04-22 09:59:39.011333376 | \n",
"
\n",
" \n",
" | 302 | \n",
" U11017 | \n",
" 4644.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 241.5197 | \n",
" 74.3514 | \n",
" 2004-04-22 10:05:11.011333504 | \n",
"
\n",
" \n",
" | 303 | \n",
" U11017 | \n",
" 4644.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 240.9590 | \n",
" 74.5471 | \n",
" 2004-04-22 10:10:43.011333632 | \n",
"
\n",
" \n",
" | 304 | \n",
" U11017 | \n",
" 4644.0 | \n",
" Track | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 242.6641 | \n",
" 73.9425 | \n",
" 2004-04-22 10:14:13.013333120 | \n",
"
\n",
" \n",
" | 305 | \n",
" U11017 | \n",
" 4644.0 | \n",
" Track | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 1 | \n",
" 1 | \n",
" 242.9359 | \n",
" 73.8408 | \n",
" 2004-04-22 10:14:48 | \n",
"
\n",
" \n",
" | 306 | \n",
" U11017 | \n",
" 4644.0 | \n",
" Track | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 246.0511 | \n",
" 72.5738 | \n",
" 2004-04-22 10:16:10.013332992 | \n",
"
\n",
" \n",
" | 307 | \n",
" U11461 | \n",
" 3122.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 168.0531 | \n",
" 59.8975 | \n",
" 2004-04-22 10:25:22.011333120 | \n",
"
\n",
" \n",
" | 308 | \n",
" U11461 | \n",
" 3122.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 167.8894 | \n",
" 59.8843 | \n",
" 2004-04-22 10:30:53.011333376 | \n",
"
\n",
" \n",
" | 309 | \n",
" U11461 | \n",
" 3122.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 173.4698 | \n",
" 60.2443 | \n",
" 2004-04-22 10:36:22.011333248 | \n",
"
\n",
" \n",
" | 310 | \n",
" U11461 | \n",
" 3122.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 173.3111 | \n",
" 60.2376 | \n",
" 2004-04-22 10:41:54.011333120 | \n",
"
\n",
" \n",
" | 311 | \n",
" U11461 | \n",
" 3122.0 | \n",
" Track | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 178.1207 | \n",
" 60.3802 | \n",
" 2004-04-22 10:45:45.013333120 | \n",
"
\n",
" \n",
" | 312 | \n",
" U11578 | \n",
" 4601.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 156.3573 | \n",
" 58.8036 | \n",
" 2004-04-22 10:52:22.011333248 | \n",
"
\n",
" \n",
" | 313 | \n",
" U11578 | \n",
" 4601.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 156.1796 | \n",
" 58.7731 | \n",
" 2004-04-22 10:57:50.011333248 | \n",
"
\n",
" \n",
" | 314 | \n",
" U11578 | \n",
" 4601.0 | \n",
" Track | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 160.4469 | \n",
" 59.4464 | \n",
" 2004-04-22 11:01:18.999999872 | \n",
"
\n",
" \n",
" | 315 | \n",
" U11578 | \n",
" 4601.0 | \n",
" Track | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 161.0040 | \n",
" 59.5231 | \n",
" 2004-04-22 11:02:30.013332992 | \n",
"
\n",
" \n",
" | 316 | \n",
" U11627 | \n",
" 4864.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 157.8065 | \n",
" 55.3372 | \n",
" 2004-04-22 11:07:12.011333632 | \n",
"
\n",
" \n",
" | 317 | \n",
" U11627 | \n",
" 4864.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 157.6549 | \n",
" 55.3107 | \n",
" 2004-04-22 11:12:39.011333504 | \n",
"
\n",
" \n",
" | 318 | \n",
" U11627 | \n",
" 4864.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 162.4625 | \n",
" 56.0655 | \n",
" 2004-04-22 11:18:07.011333248 | \n",
"
\n",
" \n",
" | 319 | \n",
" U11627 | \n",
" 4864.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 162.3199 | \n",
" 56.0465 | \n",
" 2004-04-22 11:23:36.011333376 | \n",
"
\n",
" \n",
" | 320 | \n",
" U11627 | \n",
" 4864.0 | \n",
" Track | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 166.7983 | \n",
" 56.5802 | \n",
" 2004-04-22 11:28:00.013333376 | \n",
"
\n",
" \n",
" | 321 | \n",
" U11992 | \n",
" 3592.0 | \n",
" Track | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 124.4762 | \n",
" 54.3242 | \n",
" 2004-04-22 11:32:01.013333120 | \n",
"
\n",
" \n",
" | 322 | \n",
" U11992 | \n",
" 3592.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 125.6320 | \n",
" 54.9128 | \n",
" 2004-04-22 11:35:30.011333120 | \n",
"
\n",
" \n",
" | 323 | \n",
" U11992 | \n",
" 3592.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 125.4565 | \n",
" 54.8251 | \n",
" 2004-04-22 11:40:55.011333504 | \n",
"
\n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sdfits = GBTFITSLoad(filename)\n",
"sdfits.summary(add_columns=[\"UTC\"])"
]
},
{
"cell_type": "markdown",
"id": "2a1ce21a-2dbb-4672-aadf-0774f2b3e8db",
"metadata": {},
"source": [
"## Using Selection\n",
"\n",
"Now we show various ways in which [``GBTFITSLoad.selection``](https://dysh.readthedocs.io/en/latest/reference/modules/dysh.fits.html#dysh.fits.gbtfitsload.GBTFITSLoad.selection) can be used to select data.\n",
"\n",
"### Select by column value\n",
"\n",
"One way of selecting data is by specifying a value for an SDFITS column name. (The column name case insensitive, but the value is not). \n",
"For example, we can select data which has OBJECT=\"U8249\" or OBJECT=\"U8249\" using the following.\n",
"\n",
"**Note** Selecting values in a list will logically OR those values. So `object=[\"U8249\",\"U11017\"]` will select scans with either object. But multiple keywords (columns) will be logically ANDed (see below)."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "72e0e07f-ccaa-4a02-8685-7641136fafc4",
"metadata": {},
"outputs": [],
"source": [
"sdfits.select(object=[\"U8249\",\"U11017\"])"
]
},
{
"cell_type": "markdown",
"id": "61173765-201b-4079-8ca4-5294a2a8f089",
"metadata": {},
"source": [
"We can view the contents of the selection using its `show` method.\n",
"This displays the selection as a table.\n",
"The `# Selected` column gives the number of records (integrations) selected by each selection rule. \n",
"Each time we create a new selection, it is assigned a unique id and tag."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "fd4d1a79-6c10-49f8-a10c-0012ce93d7cb",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" ID TAG OBJECT # SELECTED\n",
"--- --------- ------------------ ----------\n",
" 0 4d8020b72 ['U8249','U11017'] 572\n"
]
}
],
"source": [
"sdfits.selection.show()"
]
},
{
"cell_type": "markdown",
"id": "5c974128-e99d-4967-b404-5d8f29ec1723",
"metadata": {},
"source": [
"We can also specify the tag name to have a more meaningful value. "
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "c5e0ca48-6b76-414d-8dac-50daab9ddbae",
"metadata": {},
"outputs": [],
"source": [
"sdfits.select(proc=\"OffOn\", tag='proc onoff')"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "fc0e2a0f-0011-4189-9d5f-2352891b43f6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" ID TAG OBJECT PROC # SELECTED\n",
"--- ---------- ------------------ ----- ----------\n",
" 0 4d8020b72 ['U8249','U11017'] 572\n",
" 1 proc onoff OffOn 3540\n"
]
}
],
"source": [
"sdfits.selection.show()"
]
},
{
"cell_type": "markdown",
"id": "75e62980-d381-4358-90a1-2c6789aa5d40",
"metadata": {},
"source": [
"### Combining Selections\n",
"\n",
"Once we have multiple selection rules in the ``Selection`` object, we can combine them into a single selection using the ``final`` property. \n",
"This will return a [``pandas.DataFrame``](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html)."
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "454b8b20-5bb2-4146-9da5-85afc639e4e8",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" OBJECT | \n",
" BANDWID | \n",
" DATE-OBS | \n",
" DURATION | \n",
" EXPOSURE | \n",
" TSYS | \n",
" TDIM7 | \n",
" TUNIT7 | \n",
" CTYPE1 | \n",
" CRVAL1 | \n",
" ... | \n",
" SITELAT | \n",
" SITEELEV | \n",
" EXTNAME | \n",
" FITSINDEX | \n",
" UTC | \n",
" CHAN | \n",
" PROC | \n",
" OBSTYPE | \n",
" SUBOBSMODE | \n",
" INTNUM | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" U8249 | \n",
" 12500000.0 | \n",
" 2004-04-22T06:44:49.00 | \n",
" 5.005 | \n",
" 4.779488 | \n",
" 1.0 | \n",
" (32768,1,1,1) | \n",
" Counts | \n",
" FREQ-OBS | \n",
" 1.408421e+09 | \n",
" ... | \n",
" 38.43312 | \n",
" 824.595 | \n",
" SINGLE DISH | \n",
" 0 | \n",
" 2004-04-22 06:44:49.000 | \n",
" None | \n",
" OffOn | \n",
" PSWITCHOFF | \n",
" TPWCAL | \n",
" 0 | \n",
"
\n",
" \n",
" | 1 | \n",
" U8249 | \n",
" 12500000.0 | \n",
" 2004-04-22T06:44:49.00 | \n",
" 5.005 | \n",
" 4.779488 | \n",
" 1.0 | \n",
" (32768,1,1,1) | \n",
" Counts | \n",
" FREQ-OBS | \n",
" 1.408421e+09 | \n",
" ... | \n",
" 38.43312 | \n",
" 824.595 | \n",
" SINGLE DISH | \n",
" 0 | \n",
" 2004-04-22 06:44:49.000 | \n",
" None | \n",
" OffOn | \n",
" PSWITCHOFF | \n",
" TPWCAL | \n",
" 0 | \n",
"
\n",
" \n",
" | 2 | \n",
" U8249 | \n",
" 12500000.0 | \n",
" 2004-04-22T06:44:49.00 | \n",
" 5.005 | \n",
" 4.779488 | \n",
" 1.0 | \n",
" (32768,1,1,1) | \n",
" Counts | \n",
" FREQ-OBS | \n",
" 1.408421e+09 | \n",
" ... | \n",
" 38.43312 | \n",
" 824.595 | \n",
" SINGLE DISH | \n",
" 0 | \n",
" 2004-04-22 06:44:49.000 | \n",
" None | \n",
" OffOn | \n",
" PSWITCHOFF | \n",
" TPWCAL | \n",
" 0 | \n",
"
\n",
" \n",
" | 3 | \n",
" U8249 | \n",
" 12500000.0 | \n",
" 2004-04-22T06:44:49.00 | \n",
" 5.005 | \n",
" 4.779488 | \n",
" 1.0 | \n",
" (32768,1,1,1) | \n",
" Counts | \n",
" FREQ-OBS | \n",
" 1.408421e+09 | \n",
" ... | \n",
" 38.43312 | \n",
" 824.595 | \n",
" SINGLE DISH | \n",
" 0 | \n",
" 2004-04-22 06:44:49.000 | \n",
" None | \n",
" OffOn | \n",
" PSWITCHOFF | \n",
" TPWCAL | \n",
" 0 | \n",
"
\n",
" \n",
" | 4 | \n",
" U8249 | \n",
" 12500000.0 | \n",
" 2004-04-22T06:44:59.01 | \n",
" 5.005 | \n",
" 4.779488 | \n",
" 1.0 | \n",
" (32768,1,1,1) | \n",
" Counts | \n",
" FREQ-OBS | \n",
" 1.408421e+09 | \n",
" ... | \n",
" 38.43312 | \n",
" 824.595 | \n",
" SINGLE DISH | \n",
" 0 | \n",
" 2004-04-22 06:44:59.010 | \n",
" None | \n",
" OffOn | \n",
" PSWITCHOFF | \n",
" TPWCAL | \n",
" 1 | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 515 | \n",
" U11017 | \n",
" 12500000.0 | \n",
" 2004-04-22T10:12:48.02 | \n",
" 10.000 | \n",
" 9.596709 | \n",
" 1.0 | \n",
" (32768,1,1,1) | \n",
" Counts | \n",
" FREQ-OBS | \n",
" 1.398806e+09 | \n",
" ... | \n",
" 38.43312 | \n",
" 824.595 | \n",
" SINGLE DISH | \n",
" 0 | \n",
" 2004-04-22 10:12:48.020 | \n",
" None | \n",
" OffOn | \n",
" PSWITCHON | \n",
" TPNOCAL | \n",
" 27 | \n",
"
\n",
" \n",
" | 516 | \n",
" U11017 | \n",
" 12500000.0 | \n",
" 2004-04-22T10:12:58.02 | \n",
" 10.000 | \n",
" 9.596709 | \n",
" 1.0 | \n",
" (32768,1,1,1) | \n",
" Counts | \n",
" FREQ-OBS | \n",
" 1.398806e+09 | \n",
" ... | \n",
" 38.43312 | \n",
" 824.595 | \n",
" SINGLE DISH | \n",
" 0 | \n",
" 2004-04-22 10:12:58.020 | \n",
" None | \n",
" OffOn | \n",
" PSWITCHON | \n",
" TPNOCAL | \n",
" 28 | \n",
"
\n",
" \n",
" | 517 | \n",
" U11017 | \n",
" 12500000.0 | \n",
" 2004-04-22T10:12:58.02 | \n",
" 10.000 | \n",
" 9.596709 | \n",
" 1.0 | \n",
" (32768,1,1,1) | \n",
" Counts | \n",
" FREQ-OBS | \n",
" 1.398806e+09 | \n",
" ... | \n",
" 38.43312 | \n",
" 824.595 | \n",
" SINGLE DISH | \n",
" 0 | \n",
" 2004-04-22 10:12:58.020 | \n",
" None | \n",
" OffOn | \n",
" PSWITCHON | \n",
" TPNOCAL | \n",
" 28 | \n",
"
\n",
" \n",
" | 518 | \n",
" U11017 | \n",
" 12500000.0 | \n",
" 2004-04-22T10:13:08.02 | \n",
" 10.000 | \n",
" 9.596709 | \n",
" 1.0 | \n",
" (32768,1,1,1) | \n",
" Counts | \n",
" FREQ-OBS | \n",
" 1.398806e+09 | \n",
" ... | \n",
" 38.43312 | \n",
" 824.595 | \n",
" SINGLE DISH | \n",
" 0 | \n",
" 2004-04-22 10:13:08.020 | \n",
" None | \n",
" OffOn | \n",
" PSWITCHON | \n",
" TPNOCAL | \n",
" 29 | \n",
"
\n",
" \n",
" | 519 | \n",
" U11017 | \n",
" 12500000.0 | \n",
" 2004-04-22T10:13:08.02 | \n",
" 10.000 | \n",
" 9.596709 | \n",
" 1.0 | \n",
" (32768,1,1,1) | \n",
" Counts | \n",
" FREQ-OBS | \n",
" 1.398806e+09 | \n",
" ... | \n",
" 38.43312 | \n",
" 824.595 | \n",
" SINGLE DISH | \n",
" 0 | \n",
" 2004-04-22 10:13:08.020 | \n",
" None | \n",
" OffOn | \n",
" PSWITCHON | \n",
" TPNOCAL | \n",
" 29 | \n",
"
\n",
" \n",
"
\n",
"
520 rows × 94 columns
\n",
"
"
],
"text/plain": [
" OBJECT BANDWID DATE-OBS DURATION EXPOSURE TSYS \\\n",
"0 U8249 12500000.0 2004-04-22T06:44:49.00 5.005 4.779488 1.0 \n",
"1 U8249 12500000.0 2004-04-22T06:44:49.00 5.005 4.779488 1.0 \n",
"2 U8249 12500000.0 2004-04-22T06:44:49.00 5.005 4.779488 1.0 \n",
"3 U8249 12500000.0 2004-04-22T06:44:49.00 5.005 4.779488 1.0 \n",
"4 U8249 12500000.0 2004-04-22T06:44:59.01 5.005 4.779488 1.0 \n",
".. ... ... ... ... ... ... \n",
"515 U11017 12500000.0 2004-04-22T10:12:48.02 10.000 9.596709 1.0 \n",
"516 U11017 12500000.0 2004-04-22T10:12:58.02 10.000 9.596709 1.0 \n",
"517 U11017 12500000.0 2004-04-22T10:12:58.02 10.000 9.596709 1.0 \n",
"518 U11017 12500000.0 2004-04-22T10:13:08.02 10.000 9.596709 1.0 \n",
"519 U11017 12500000.0 2004-04-22T10:13:08.02 10.000 9.596709 1.0 \n",
"\n",
" TDIM7 TUNIT7 CTYPE1 CRVAL1 ... SITELAT SITEELEV \\\n",
"0 (32768,1,1,1) Counts FREQ-OBS 1.408421e+09 ... 38.43312 824.595 \n",
"1 (32768,1,1,1) Counts FREQ-OBS 1.408421e+09 ... 38.43312 824.595 \n",
"2 (32768,1,1,1) Counts FREQ-OBS 1.408421e+09 ... 38.43312 824.595 \n",
"3 (32768,1,1,1) Counts FREQ-OBS 1.408421e+09 ... 38.43312 824.595 \n",
"4 (32768,1,1,1) Counts FREQ-OBS 1.408421e+09 ... 38.43312 824.595 \n",
".. ... ... ... ... ... ... ... \n",
"515 (32768,1,1,1) Counts FREQ-OBS 1.398806e+09 ... 38.43312 824.595 \n",
"516 (32768,1,1,1) Counts FREQ-OBS 1.398806e+09 ... 38.43312 824.595 \n",
"517 (32768,1,1,1) Counts FREQ-OBS 1.398806e+09 ... 38.43312 824.595 \n",
"518 (32768,1,1,1) Counts FREQ-OBS 1.398806e+09 ... 38.43312 824.595 \n",
"519 (32768,1,1,1) Counts FREQ-OBS 1.398806e+09 ... 38.43312 824.595 \n",
"\n",
" EXTNAME FITSINDEX UTC CHAN PROC OBSTYPE \\\n",
"0 SINGLE DISH 0 2004-04-22 06:44:49.000 None OffOn PSWITCHOFF \n",
"1 SINGLE DISH 0 2004-04-22 06:44:49.000 None OffOn PSWITCHOFF \n",
"2 SINGLE DISH 0 2004-04-22 06:44:49.000 None OffOn PSWITCHOFF \n",
"3 SINGLE DISH 0 2004-04-22 06:44:49.000 None OffOn PSWITCHOFF \n",
"4 SINGLE DISH 0 2004-04-22 06:44:59.010 None OffOn PSWITCHOFF \n",
".. ... ... ... ... ... ... \n",
"515 SINGLE DISH 0 2004-04-22 10:12:48.020 None OffOn PSWITCHON \n",
"516 SINGLE DISH 0 2004-04-22 10:12:58.020 None OffOn PSWITCHON \n",
"517 SINGLE DISH 0 2004-04-22 10:12:58.020 None OffOn PSWITCHON \n",
"518 SINGLE DISH 0 2004-04-22 10:13:08.020 None OffOn PSWITCHON \n",
"519 SINGLE DISH 0 2004-04-22 10:13:08.020 None OffOn PSWITCHON \n",
"\n",
" SUBOBSMODE INTNUM \n",
"0 TPWCAL 0 \n",
"1 TPWCAL 0 \n",
"2 TPWCAL 0 \n",
"3 TPWCAL 0 \n",
"4 TPWCAL 1 \n",
".. ... ... \n",
"515 TPNOCAL 27 \n",
"516 TPNOCAL 28 \n",
"517 TPNOCAL 28 \n",
"518 TPNOCAL 29 \n",
"519 TPNOCAL 29 \n",
"\n",
"[520 rows x 94 columns]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sdfits.selection.final"
]
},
{
"cell_type": "markdown",
"id": "5666395f-3b8a-420e-9e15-a69c57f82f90",
"metadata": {},
"source": [
"In this particular case, we wind up with 520 integrations. This is a selection of objects U8249 or U11017 AND proc OnOff. Because keywords in the same selection rule are logically ANDed, this could also have been accomplished via\n",
"\n",
"`sdfits.select(object=[\"U8249\",\"U11017\"], proc=\"OffOn\")`\n",
"\n",
"(Try it yourself)."
]
},
{
"cell_type": "markdown",
"id": "9571b2b8-ffb2-4cf8-b058-09c898389189",
"metadata": {},
"source": [
"You can also see a summary of the selected data, using the ``selected`` argument of [``summary``](https://dysh.readthedocs.io/en/latest/reference/modules/dysh.fits.html#module-dysh.fits.gbtfitsload.GBTFITSLoad.summary):"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "1521b0f9-7b93-4502-9031-da49dc99a147",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" | SCAN | \n",
" OBJECT | \n",
" VELOCITY | \n",
" PROC | \n",
" PROCSEQN | \n",
" RESTFREQ | \n",
" DOPFREQ | \n",
" # IF | \n",
" # POL | \n",
" # INT | \n",
" # FEED | \n",
" AZIMUTH | \n",
" ELEVATION | \n",
"
\n",
" \n",
" \n",
" \n",
" | 266 | \n",
" U8249 | \n",
" 2541.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 10 | \n",
" 1 | \n",
" 241.7065 | \n",
" 50.2801 | \n",
"
\n",
" \n",
" | 267 | \n",
" U8249 | \n",
" 2541.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 242.6892 | \n",
" 49.6343 | \n",
"
\n",
" \n",
" | 268 | \n",
" U8249 | \n",
" 2541.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 242.5451 | \n",
" 49.7333 | \n",
"
\n",
" \n",
" | 275 | \n",
" U8249 | \n",
" 2541.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 266.5469 | \n",
" 46.8377 | \n",
"
\n",
" \n",
" | 276 | \n",
" U8249 | \n",
" 2541.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 266.3738 | \n",
" 47.0388 | \n",
"
\n",
" \n",
" | 300 | \n",
" U11017 | \n",
" 4644.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 235.4605 | \n",
" 76.2074 | \n",
"
\n",
" \n",
" | 301 | \n",
" U11017 | \n",
" 4644.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 234.7726 | \n",
" 76.3879 | \n",
"
\n",
" \n",
" | 302 | \n",
" U11017 | \n",
" 4644.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 241.5197 | \n",
" 74.3514 | \n",
"
\n",
" \n",
" | 303 | \n",
" U11017 | \n",
" 4644.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 240.9590 | \n",
" 74.5471 | \n",
"
\n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sdfits.summary(selected=True)\n"
]
},
{
"cell_type": "markdown",
"id": "6f4cb3ef-f1ab-42bf-8a29-cfd29929cca9",
"metadata": {},
"source": [
"### Remove selection rules\n",
"You can remove a selection rule by `id` or `tag`.\n",
"Multiple rows with the same tag will all be removed."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "43fe5ffb-2821-4ee4-9f29-ec245168ae55",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" ID TAG PROC # SELECTED\n",
"--- ---------- ----- ----------\n",
" 1 proc onoff OffOn 3540\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: AstropyDeprecationWarning: Calling `Table.loc/iloc/loc_indices[index_id, item]` to select `item` from index\n",
"`index_id` is deprecated. Instead select the index using the syntax\n",
"`Table.loc/iloc/loc_indices.with_index(index_id)[item]`.\n",
" [astropy.table.index]\n"
]
}
],
"source": [
"sdfits.selection.remove(id=0)\n",
"sdfits.selection.show()"
]
},
{
"cell_type": "markdown",
"id": "b6b25468-efca-4bd1-91ef-a34e6eb502f5",
"metadata": {},
"source": [
"To remove all selection rules use [``clear_selection``](https://dysh.readthedocs.io/en/latest/reference/modules/dysh.fits.html#dysh.fits.GBTFITSLoad.clear_selection).\n",
"After using it, the ``Selection`` will show no selection rules."
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "a771e05c-9532-4139-b4a8-3b7f25c639e1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" ID TAG OBJECT BANDWID DATE-OBS ... SUBOBSMODE FITSINDEX CHAN UTC # SELECTED\n",
"--- --- ------ ------- -------- ... ---------- --------- ---- --- ----------\n"
]
}
],
"source": [
"sdfits.clear_selection()\n",
"sdfits.selection.show()"
]
},
{
"cell_type": "markdown",
"id": "97ca64ec-ca06-47c6-a0a4-caf09db3a440",
"metadata": {},
"source": [
"### Select by Range\n",
"\n",
"It is also possible to define a selection given a range of values using [``select_range``](https://dysh.readthedocs.io/en/latest/reference/modules/dysh.util.html#dysh.util.selection.Selection.select_range).\n",
"In this case the selection must be specified using either a list, ``[]``, or a tuple, ``()``, with a start and an end value. Ranges are considered inclusive of both ends.\n",
"Lower limits are give by ``(value,None)`` or ``(value,)``.\n",
"Upper limits are given by ``(None,value)``, since ``(,value)`` is not valid Python.\n",
"For coordinates the default unit is taken to be degrees.\n",
"Other units can be explicitly given.\n",
"Both ``()`` and ``[]`` are valid for indicated ranges, but only tuples can be a lower limit ``(value,)``.\n",
"\n",
"For example to select only rows where the right ascension is greater than 114 degrees:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "6c627654-19bc-4151-b2de-222efb3e4398",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" ID TAG CRVAL2 # SELECTED\n",
"--- ----------- ------------------- ----------\n",
" 0 RA>=114 deg [np.float64(114.0)] 3766\n"
]
}
],
"source": [
"sdfits.select_range(ra=(114,), tag=\"RA>=114 deg\")\n",
"sdfits.selection.show()"
]
},
{
"cell_type": "markdown",
"id": "eda04fe5-98f3-40c6-8f03-2658c023216d",
"metadata": {},
"source": [
"(Right Ascension is the FITS CRVAL2 column).\n",
"\n",
"To select rows where the elevation is below 80 degrees:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "50faf345-a76d-4b45-a743-d9610565122d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" ID TAG CRVAL2 ELEVATIO # SELECTED\n",
"--- ----------- ------------------- --------- ----------\n",
" 0 RA>=114 deg [np.float64(114.0)] 3766\n",
" 1 EL<80 [None,80] 3582\n"
]
}
],
"source": [
"sdfits.select_range(elevation=[None,80], tag=\"EL<80\")\n",
"sdfits.selection.show()"
]
},
{
"cell_type": "markdown",
"id": "4c387a31-c0cb-45f3-b512-36b6af576cd2",
"metadata": {},
"source": [
"(Note elevation column is ELEVATIO because the FITS standard only allow 8 characters for column names).\n",
"\n",
"We can check that the selections were applied properly by inspecting the final result and a subset of its columns. "
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "f19448b1-3eda-49af-bebe-b38b0f1213f0",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" OBJECT | \n",
" CRVAL2 | \n",
" ELEVATIO | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 3C286 | \n",
" 202.784508 | \n",
" 79.997019 | \n",
"
\n",
" \n",
" | 1 | \n",
" 3C286 | \n",
" 202.784508 | \n",
" 79.997019 | \n",
"
\n",
" \n",
" | 2 | \n",
" 3C286 | \n",
" 202.784508 | \n",
" 79.997019 | \n",
"
\n",
" \n",
" | 3 | \n",
" 3C286 | \n",
" 202.784508 | \n",
" 79.997019 | \n",
"
\n",
" \n",
" | 4 | \n",
" B1328+254 | \n",
" 202.066324 | \n",
" 74.023075 | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 3577 | \n",
" U11992 | \n",
" 335.197517 | \n",
" 55.157387 | \n",
"
\n",
" \n",
" | 3578 | \n",
" U11992 | \n",
" 335.197520 | \n",
" 55.183819 | \n",
"
\n",
" \n",
" | 3579 | \n",
" U11992 | \n",
" 335.197520 | \n",
" 55.183819 | \n",
"
\n",
" \n",
" | 3580 | \n",
" U11992 | \n",
" 335.197546 | \n",
" 55.210211 | \n",
"
\n",
" \n",
" | 3581 | \n",
" U11992 | \n",
" 335.197546 | \n",
" 55.210211 | \n",
"
\n",
" \n",
"
\n",
"
3582 rows × 3 columns
\n",
"
"
],
"text/plain": [
" OBJECT CRVAL2 ELEVATIO\n",
"0 3C286 202.784508 79.997019\n",
"1 3C286 202.784508 79.997019\n",
"2 3C286 202.784508 79.997019\n",
"3 3C286 202.784508 79.997019\n",
"4 B1328+254 202.066324 74.023075\n",
"... ... ... ...\n",
"3577 U11992 335.197517 55.157387\n",
"3578 U11992 335.197520 55.183819\n",
"3579 U11992 335.197520 55.183819\n",
"3580 U11992 335.197546 55.210211\n",
"3581 U11992 335.197546 55.210211\n",
"\n",
"[3582 rows x 3 columns]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sdfits.selection.final[[\"OBJECT\",\"CRVAL2\",\"ELEVATIO\"]]"
]
},
{
"cell_type": "markdown",
"id": "b7313f50-6a0b-450a-a714-f23b6c0cdb99",
"metadata": {},
"source": [
"It is also possible to use units during selection.\n",
"For example"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "2e187bff-c9eb-4391-a709-d80f60a90f1a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" ID TAG CRVAL2 ... ELEVATIO # SELECTED\n",
"--- ----------------- ------------------- ... --------- ----------\n",
" 0 RA>=114 deg [np.float64(114.0)] ... 3766\n",
" 1 EL<80 ... [None,80] 3582\n",
" 2 14.23<=DEC<=14.25 ... 132\n"
]
}
],
"source": [
"sdfits.select_range(dec=[854, 855] * u.arcmin, tag=\"14.23<=DEC<=14.25\")\n",
"sdfits.selection.show()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "25f790c7-ddd3-4825-b6ec-e03635de6833",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" | SCAN | \n",
" OBJECT | \n",
" VELOCITY | \n",
" PROC | \n",
" PROCSEQN | \n",
" RESTFREQ | \n",
" DOPFREQ | \n",
" # IF | \n",
" # POL | \n",
" # INT | \n",
" # FEED | \n",
" AZIMUTH | \n",
" ELEVATION | \n",
"
\n",
" \n",
" \n",
" \n",
" | 321 | \n",
" U11992 | \n",
" 3592.0 | \n",
" Track | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 1 | \n",
" 124.4762 | \n",
" 54.3242 | \n",
"
\n",
" \n",
" | 322 | \n",
" U11992 | \n",
" 3592.0 | \n",
" OffOn | \n",
" 1 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 125.6320 | \n",
" 54.9128 | \n",
"
\n",
" \n",
" | 323 | \n",
" U11992 | \n",
" 3592.0 | \n",
" OffOn | \n",
" 2 | \n",
" 1.420405 | \n",
" 1.420405 | \n",
" 1 | \n",
" 2 | \n",
" 30 | \n",
" 1 | \n",
" 125.4565 | \n",
" 54.8251 | \n",
"
\n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sdfits.summary(selected=True)"
]
},
{
"cell_type": "markdown",
"id": "b84e82b3-f17d-4ca0-a9d1-fa63f4207c1e",
"metadata": {},
"source": [
"### Select Within a Range\n",
"\n",
"It is also possible to specify the midpoint and a range to make a selection.\n",
"In this case we use [``select_within``](https://dysh.readthedocs.io/en/latest/reference/modules/dysh.util.html#dysh.util.selection.Selection.select_within) and specify the mean value and the +- range.\n",
"\n",
"For example to select between elevation of 50-10 and 50+10 we would use"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "9c0b64e5-0f7c-4c92-a103-c650938d4d53",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" ID TAG CRVAL2 ... ELEVATIO # SELECTED\n",
"--- ----------------- ------------------- ... --------- ----------\n",
" 0 RA>=114 deg [np.float64(114.0)] ... 3766\n",
" 1 EL<80 ... [None,80] 3582\n",
" 2 14.23<=DEC<=14.25 ... 132\n",
" 3 EL=50+/-10 ... [40,60] 1694\n"
]
}
],
"source": [
"sdfits.select_within(elevation=(50,10), tag=\"EL=50+/-10\")\n",
"sdfits.selection.show()"
]
},
{
"cell_type": "markdown",
"id": "e6c8562e-3a1f-46f1-ba32-d7b0b1f2ad33",
"metadata": {},
"source": [
"Which shows a selection between 40 and 60 degrees of elevation."
]
},
{
"cell_type": "markdown",
"id": "a4b5d4e3-fe74-49d4-8a96-0cf6bad8d038",
"metadata": {},
"source": [
"Now, when you do a [``getps``](https://dysh.readthedocs.io/en/latest/reference/modules/dysh.fits.html#dysh.fits.GBTFITSLoad.getps) it will operate only on the selected data.\n",
"\n",
"(Currently, you can't preselect [``ifnum``](https://dysh.readthedocs.io/en/latest/reference/glossary.html#term-ifnum), [``plnum``](https://dysh.readthedocs.io/en/latest/reference/glossary.html#term-plnum), or [``fdnum``](https://dysh.readthedocs.io/en/latest/reference/glossary.html#term-fdnum); they must be provided as method arguments)."
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "f624409e-1862-4e04-beff-33a51ce386bc",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"19:59:32.055 I Using TSYS column\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "3c9ba15dbbe74dca87ce7f6393ad0211",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"VBox(children=(HBox(children=(Button(description='Clear All Regions', style=ButtonStyle(), tooltip='Clear all …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sb = sdfits.getps(ifnum=0, plnum=0, fdnum=0)\n",
"sb.timeaverage().plot(ymin=-.1, ymax=.1, xmin=1.404E9, xmax=1.406E9);"
]
},
{
"cell_type": "markdown",
"id": "1c7c7215-fe5e-4792-9f95-9589aabda054",
"metadata": {},
"source": [
"### Using Aliases\n",
"\n",
"[``Selection``](https://dysh.readthedocs.io/en/latest/reference/modules/dysh.util.html#dysh.util.selection.Selection) knows about certain aliases for column names.\n",
"For example, the SDFITS column ELEVATIO can also be selected using ELEVATION.\n",
"The aliases are defined in the ``aliases`` attribute of ``Selection``."
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "28b372be-4e93-49b5-85c8-eafbf2a0d881",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'FREQ': 'CRVAL1',\n",
" 'RA': 'CRVAL2',\n",
" 'DEC': 'CRVAL3',\n",
" 'GLON': 'CRVAL2',\n",
" 'GLAT': 'CRVAL3',\n",
" 'GALLON': 'CRVAL2',\n",
" 'GALLAT': 'CRVAL3',\n",
" 'ELEVATION': 'ELEVATIO',\n",
" 'SOURCE': 'OBJECT',\n",
" 'POL': 'PLNUM',\n",
" 'SUBREF': 'SUBREF_STATE'}"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sdfits.selection.aliases"
]
},
{
"cell_type": "markdown",
"id": "ca77655a-b48c-48b9-9f26-a3697a9d723b",
"metadata": {},
"source": [
"It is also possible to add your own aliases.\n",
"For example to use target and az as aliases for OBJECT and AZIMUTH we would use"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "59eccb75-8ce7-45fb-9ada-ee65128c5fb7",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"{'FREQ': 'CRVAL1',\n",
" 'RA': 'CRVAL2',\n",
" 'DEC': 'CRVAL3',\n",
" 'GLON': 'CRVAL2',\n",
" 'GLAT': 'CRVAL3',\n",
" 'GALLON': 'CRVAL2',\n",
" 'GALLAT': 'CRVAL3',\n",
" 'ELEVATION': 'ELEVATIO',\n",
" 'SOURCE': 'OBJECT',\n",
" 'POL': 'PLNUM',\n",
" 'SUBREF': 'SUBREF_STATE',\n",
" 'TARGET': 'OBJECT',\n",
" 'AZ': 'AZIMUTH'}"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sdfits.selection.alias({'target':'object','az':'azimuth'})\n",
"sdfits.selection.aliases"
]
},
{
"cell_type": "markdown",
"id": "16cd927d-fa71-4e1d-bed8-68a4a3eef9d1",
"metadata": {},
"source": [
"Then you can select using your aliases:"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "d9d3ebf7-1b21-49b1-b44f-f9ec1e78e89d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" ID TAG OBJECT ... ELEVATIO # SELECTED\n",
"--- ----------------- ------ ... --------- ----------\n",
" 0 RA>=114 deg ... 3766\n",
" 1 EL<80 ... [None,80] 3582\n",
" 2 14.23<=DEC<=14.25 ... 132\n",
" 3 EL=50+/-10 ... [40,60] 1694\n",
" 4 9eba1ed60 U8249 ... 304\n"
]
}
],
"source": [
"sdfits.select(target=\"U8249\")\n",
"sdfits.selection.show()"
]
},
{
"cell_type": "markdown",
"id": "7d387de3-4cf8-40cc-a846-5b216454cd43",
"metadata": {},
"source": [
"Notice that this will only affect the aliases for this particular instance of a [``GBTFITSLoad``](https://dysh.readthedocs.io/en/latest/reference/modules/dysh.fits.html#module-dysh.fits.gbtfitsload.GBTFITSLoad).\n",
"Any new [``GBTFITSLoad``](https://dysh.readthedocs.io/en/latest/reference/modules/dysh.fits.html#module-dysh.fits.gbtfitsload.GBTFITSLoad) objects will not know about these aliases."
]
},
{
"cell_type": "markdown",
"id": "7279270f-8cc5-458c-817a-803dd808045f",
"metadata": {},
"source": [
"### Empty Selections\n",
"\n",
"Any selection that results in no data being selected is ignored.\n",
"You will get a warning message in this case."
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "012adfe6-6900-438c-b45e-681cabd62993",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"19:59:32.771 W Your selection rule resulted in no data being selected. Ignoring.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" ID TAG OBJECT ... ELEVATIO # SELECTED\n",
"--- ----------------- ------ ... --------- ----------\n",
" 0 RA>=114 deg ... 3766\n",
" 1 EL<80 ... [None,80] 3582\n",
" 2 14.23<=DEC<=14.25 ... 132\n",
" 3 EL=50+/-10 ... [40,60] 1694\n",
" 4 9eba1ed60 U8249 ... 304\n"
]
}
],
"source": [
"sdfits.selection.select(target='foobar')\n",
"sdfits.selection.show()"
]
},
{
"cell_type": "markdown",
"id": "3a716b3e-d624-486e-b7b2-2fe8fd967312",
"metadata": {},
"source": [
"### Time Selections\n",
"\n",
"UTC time ranges can be selected with [``astropy.time.Time``](https://docs.astropy.org/en/stable/api/astropy.time.Time.html#astropy.time.Time) objects.\n",
"This checks against the UTC timestamp column.\n",
"For LST, use ``select_range(lst=[number1,number2])``.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "093a7b37-935c-4f42-b5ff-599b74bbf6d6",
"metadata": {},
"outputs": [],
"source": [
"# clear the selection for this demonstration\n",
"sdfits.clear_selection()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "48ffada1-3ef7-422c-8e2f-59ace6161f57",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" ID TAG ... # SELECTED\n",
"--- ---------- ... ----------\n",
" 0 time range ... 216\n"
]
}
],
"source": [
"sdfits.select_range(utc=(Time(\"2004-04-22T05:27:20.12\", scale=\"utc\"),\n",
" Time(\"2004-04-22T05:48:43.12\", scale=\"utc\")),\n",
" tag=\"time range\")\n",
"sdfits.selection.show()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "17cca444-0498-4bd4-b52f-986f014f19c7",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SCAN | \n",
" OBJECT | \n",
" UTC | \n",
" LST | \n",
" PLNUM | \n",
" IFNUM | \n",
" FDNUM | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 230 | \n",
" B1345+125 | \n",
" 2004-04-22 05:27:25.130 | \n",
" 51035.015413 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 1 | \n",
" 230 | \n",
" B1345+125 | \n",
" 2004-04-22 05:27:25.130 | \n",
" 51035.015413 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2 | \n",
" 230 | \n",
" B1345+125 | \n",
" 2004-04-22 05:27:25.130 | \n",
" 51035.015413 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 3 | \n",
" 230 | \n",
" B1345+125 | \n",
" 2004-04-22 05:27:25.130 | \n",
" 51035.015413 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 4 | \n",
" 230 | \n",
" B1345+125 | \n",
" 2004-04-22 05:27:35.140 | \n",
" 51045.056730 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 211 | \n",
" 245 | \n",
" B1345+125 | \n",
" 2004-04-22 05:48:28.100 | \n",
" 52301.445514 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 212 | \n",
" 245 | \n",
" B1345+125 | \n",
" 2004-04-22 05:48:38.110 | \n",
" 52311.486833 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 213 | \n",
" 245 | \n",
" B1345+125 | \n",
" 2004-04-22 05:48:38.110 | \n",
" 52311.486833 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 214 | \n",
" 245 | \n",
" B1345+125 | \n",
" 2004-04-22 05:48:38.110 | \n",
" 52311.486833 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 215 | \n",
" 245 | \n",
" B1345+125 | \n",
" 2004-04-22 05:48:38.110 | \n",
" 52311.486833 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
216 rows × 7 columns
\n",
"
"
],
"text/plain": [
" SCAN OBJECT UTC LST PLNUM IFNUM \\\n",
"0 230 B1345+125 2004-04-22 05:27:25.130 51035.015413 1 0 \n",
"1 230 B1345+125 2004-04-22 05:27:25.130 51035.015413 1 0 \n",
"2 230 B1345+125 2004-04-22 05:27:25.130 51035.015413 0 0 \n",
"3 230 B1345+125 2004-04-22 05:27:25.130 51035.015413 0 0 \n",
"4 230 B1345+125 2004-04-22 05:27:35.140 51045.056730 1 0 \n",
".. ... ... ... ... ... ... \n",
"211 245 B1345+125 2004-04-22 05:48:28.100 52301.445514 0 0 \n",
"212 245 B1345+125 2004-04-22 05:48:38.110 52311.486833 1 0 \n",
"213 245 B1345+125 2004-04-22 05:48:38.110 52311.486833 1 0 \n",
"214 245 B1345+125 2004-04-22 05:48:38.110 52311.486833 0 0 \n",
"215 245 B1345+125 2004-04-22 05:48:38.110 52311.486833 0 0 \n",
"\n",
" FDNUM \n",
"0 0 \n",
"1 0 \n",
"2 0 \n",
"3 0 \n",
"4 0 \n",
".. ... \n",
"211 0 \n",
"212 0 \n",
"213 0 \n",
"214 0 \n",
"215 0 \n",
"\n",
"[216 rows x 7 columns]"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sdfits.selection.final[[\"SCAN\",\"OBJECT\",\"UTC\", \"LST\",\"PLNUM\",\"IFNUM\",\"FDNUM\"]]"
]
},
{
"cell_type": "markdown",
"id": "88044ad7-11d2-43f4-834f-cd7aba37787b",
"metadata": {},
"source": [
"### Channel Selection\n",
"\n",
"You can selection a contiguous range of channels using [``select_channel``](https://dysh.readthedocs.io/en/latest/reference/modules/dysh.util.html#dysh.util.selection.Selection.select_channel), and the integrations will be trimmed to that channel range during calibration. The final spectrum will have the input channel range. As with [``select_range``](https://dysh.readthedocs.io/en/latest/reference/modules/dysh.util.html#dysh.util.selection.Selection.select_range), channel ranges are inclusive at both ends."
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "91871580-d678-44ea-828d-c823e92c8746",
"metadata": {},
"outputs": [],
"source": [
"sdfits.select_channel([2000,6000], tag=\"channels\")"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "dfbb03ba-4eb0-40f0-b5e3-f2ce4ba23c8b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" ID TAG ... # SELECTED\n",
"--- ---------- ... ----------\n",
" 0 time range ... 216\n",
" 1 channels ... 3766\n"
]
}
],
"source": [
"sdfits.selection.show()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "9fadaa78-52c4-4bd7-be63-5dd84a0a7478",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"19:59:33.096 I Ignoring 9 blanked integration(s).\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "4f1cb2a74d584676baee87d078155068",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"VBox(children=(HBox(children=(Button(description='Clear All Regions', style=ButtonStyle(), tooltip='Clear all …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sb = sdfits.getps(ifnum=0, plnum=1, fdnum=0)\n",
"sb.timeaverage().plot(xaxis_unit=\"channel\");"
]
},
{
"cell_type": "markdown",
"id": "663681b2-c3e4-46d1-ba6c-44b8374b54e3",
"metadata": {},
"source": [
"The resulting [``Spectrum``](https://dysh.readthedocs.io/en/latest/reference/modules/dysh.spectra.html#dysh.spectra.spectrum.Spectrum) only has 4000 channels, as specified by the channel selection.\n",
"\n",
"Note that you can only have one channel selection rule at a time."
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "d3588cb3-83aa-4521-a325-2c9b8bb032a1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"You can only have one channel selection rule. Remove the old rule before creating a new one.\n"
]
}
],
"source": [
"try: \n",
" sdfits.select_channel([60,70])\n",
"except Exception as e:\n",
" print(e)"
]
},
{
"cell_type": "markdown",
"id": "86608116-e842-4b16-8b4c-b1157574527a",
"metadata": {},
"source": [
"## Final Stats\n",
"\n",
"Finally, at the end we compute some statistics over a spectrum, merely as a checksum if the notebook is reproducible.\n",
"\n",
"This particular case has a mixed number of scanblocks, so we just pick the first.\n"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "c72974d1-aa5e-4abf-ba39-ebc7d2a4f681",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"19:59:33.635 I rms is OK \n"
]
}
],
"source": [
"sb.timeaverage().check_stats(0.05038713 * u.K)"
]
}
],
"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.13.9"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}