Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/run-ipynb.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ jobs:

call-testing-linux:
uses: nrao/gh-actions-templates-public/.github/workflows/run-ipynb-template.yml@main
secrets: inherit
secrets: inherit
296 changes: 14 additions & 282 deletions docs/airflow_tutorial.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -33,103 +33,20 @@
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"/Users/jsteeb\n"
]
}
],
"source": [
"import os\n",
"#dags_folder = \"/Users/jsteeb/Dropbox/graphviper/docs/airflow_dags\"\n",
"dags_folder = \"~\"\n",
"dags_folder = os.path.expanduser(dags_folder)\n",
"print(dags_folder)"
]
],
"outputs": [],
"execution_count": null
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[\u001b[38;2;128;05;128m2025-10-07 10:42:23,368\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m viperlog: \u001b[0m Module path: \u001b[38;2;50;50;205m/Users/jsteeb/Dropbox/toolviper/src/toolviper\u001b[0m \n",
"[\u001b[38;2;128;05;128m2025-10-07 10:42:23,370\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m viperlog: \u001b[0m Downloading from [cloudflare] .... \n"
]
},
{
"data": {
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"> \n",
" <span style=\"font-weight: bold\"> Download List </span> \n",
" ────────────────────────────────── \n",
" <span style=\"color: #800080; text-decoration-color: #800080\">Antennae_North.cal.lsrk.split.ms</span> \n",
" \n",
"</pre>\n"
],
"text/plain": [
" \n",
" \u001b[1m \u001b[0m\u001b[1mDownload List \u001b[0m\u001b[1m \u001b[0m \n",
" ────────────────────────────────── \n",
" \u001b[35mAntennae_North.cal.lsrk.split.ms\u001b[0m \n",
" \n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[\u001b[38;2;128;05;128m2025-10-07 10:42:23,373\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m viperlog: \u001b[0m File exists: Antennae_North.cal.lsrk.split.ms \n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "491bd20147564a299b47ee17706cd642",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Output()"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
],
"text/plain": []
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[\u001b[38;2;128;05;128m2025-10-07 10:42:24,419\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m viperlog: \u001b[0m Updated partition scheme used: ['DATA_DESC_ID', 'OBS_MODE', 'OBSERVATION_ID'] \n",
"[\u001b[38;2;128;05;128m2025-10-07 10:42:24,421\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m viperlog: \u001b[0m Number of partitions: 4 \n",
"[\u001b[38;2;128;05;128m2025-10-07 10:42:24,421\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m viperlog: \u001b[0m OBSERVATION_ID [0], DDI [0], STATE [23, 24, 25, 30, 31, 32, 33, 34, 37], FIELD [0, 1, 2], SCAN [9, 17, 21, 25], EPHEMERIS [None] \n",
"[\u001b[38;2;128;05;128m2025-10-07 10:42:24,613\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m viperlog: \u001b[0m OBSERVATION_ID [1], DDI [0], STATE [23, 24, 25, 30, 31, 32, 33, 34, 37], FIELD [0, 1, 2], SCAN [26, 34, 38, 42], EPHEMERIS [None] \n",
"[\u001b[38;2;128;05;128m2025-10-07 10:42:24,761\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m viperlog: \u001b[0m OBSERVATION_ID [2], DDI [0], STATE [32, 33, 34], FIELD [0, 1, 2], SCAN [43], EPHEMERIS [None] \n",
"[\u001b[38;2;128;05;128m2025-10-07 10:42:24,909\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m viperlog: \u001b[0m OBSERVATION_ID [3], DDI [0], STATE [39, 40, 41, 46, 47, 48, 49, 50, 53], FIELD [0, 1, 2], SCAN [48, 56, 60, 64], EPHEMERIS [None] \n"
]
}
],
"source": [
"from toolviper.utils.data import download\n",
"\n",
Expand All @@ -149,192 +66,13 @@
" persistence_mode=\"w\",\n",
" main_chunksize=chunks_on_disk,\n",
")"
]
],
"outputs": [],
"execution_count": null
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>name</th>\n",
" <th>scan_intents</th>\n",
" <th>shape</th>\n",
" <th>execution_block_UID</th>\n",
" <th>polarization</th>\n",
" <th>scan_name</th>\n",
" <th>spw_name</th>\n",
" <th>spw_intents</th>\n",
" <th>field_name</th>\n",
" <th>source_name</th>\n",
" <th>line_name</th>\n",
" <th>field_coords</th>\n",
" <th>session_reference_UID</th>\n",
" <th>scheduling_block_UID</th>\n",
" <th>project_UID</th>\n",
" <th>start_frequency</th>\n",
" <th>end_frequency</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Antennae_North.cal.lsrk.split_0</td>\n",
" <td>[OBSERVE_TARGET#ON_SOURCE]</td>\n",
" <td>(50, 45, 8, 2)</td>\n",
" <td>uid://A002/X1ff7b0/Xb</td>\n",
" <td>[XX, YY]</td>\n",
" <td>[17, 21, 25, 9]</td>\n",
" <td>spw_0</td>\n",
" <td>UNSPECIFIED</td>\n",
" <td>[NGC4038 - Antennae North_0, NGC4038 - Antennae North_1, NGC4038 - Antennae North_2]</td>\n",
" <td>[NGC4038 - Antennae North_0]</td>\n",
" <td>[]</td>\n",
" <td>Multi-Phase-Center</td>\n",
" <td>---</td>\n",
" <td>uid://A002/X1fd4e7/X64d</td>\n",
" <td>T.B.D.</td>\n",
" <td>3.439281e+11</td>\n",
" <td>3.440067e+11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Antennae_North.cal.lsrk.split_1</td>\n",
" <td>[OBSERVE_TARGET#ON_SOURCE]</td>\n",
" <td>(50, 55, 8, 2)</td>\n",
" <td>uid://A002/X207fe4/X3a</td>\n",
" <td>[XX, YY]</td>\n",
" <td>[26, 34, 38, 42]</td>\n",
" <td>spw_0</td>\n",
" <td>UNSPECIFIED</td>\n",
" <td>[NGC4038 - Antennae North_0, NGC4038 - Antennae North_1, NGC4038 - Antennae North_2]</td>\n",
" <td>[NGC4038 - Antennae North_0]</td>\n",
" <td>[]</td>\n",
" <td>Multi-Phase-Center</td>\n",
" <td>---</td>\n",
" <td>uid://A002/X1fd4e7/X64d</td>\n",
" <td>T.B.D.</td>\n",
" <td>3.439281e+11</td>\n",
" <td>3.440067e+11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Antennae_North.cal.lsrk.split_2</td>\n",
" <td>[OBSERVE_TARGET#ON_SOURCE]</td>\n",
" <td>(15, 55, 8, 2)</td>\n",
" <td>uid://A002/X207fe4/X3b9</td>\n",
" <td>[XX, YY]</td>\n",
" <td>[43]</td>\n",
" <td>spw_0</td>\n",
" <td>UNSPECIFIED</td>\n",
" <td>[NGC4038 - Antennae North_0, NGC4038 - Antennae North_1, NGC4038 - Antennae North_2]</td>\n",
" <td>[NGC4038 - Antennae North_0]</td>\n",
" <td>[]</td>\n",
" <td>Multi-Phase-Center</td>\n",
" <td>---</td>\n",
" <td>uid://A002/X1fd4e7/X64d</td>\n",
" <td>T.B.D.</td>\n",
" <td>3.439281e+11</td>\n",
" <td>3.440067e+11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Antennae_North.cal.lsrk.split_3</td>\n",
" <td>[OBSERVE_TARGET#ON_SOURCE, CALIBRATE_WVR#ON_SOURCE]</td>\n",
" <td>(50, 77, 8, 2)</td>\n",
" <td>uid://A002/X2181fb/X49</td>\n",
" <td>[XX, YY]</td>\n",
" <td>[48, 56, 60, 64]</td>\n",
" <td>spw_0</td>\n",
" <td>UNSPECIFIED</td>\n",
" <td>[NGC4038 - Antennae North_0, NGC4038 - Antennae North_1, NGC4038 - Antennae North_2]</td>\n",
" <td>[NGC4038 - Antennae North_0]</td>\n",
" <td>[]</td>\n",
" <td>Multi-Phase-Center</td>\n",
" <td>---</td>\n",
" <td>uid://A002/X1fd4e7/X64d</td>\n",
" <td>T.B.D.</td>\n",
" <td>3.439281e+11</td>\n",
" <td>3.440067e+11</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" name \\\n",
"0 Antennae_North.cal.lsrk.split_0 \n",
"1 Antennae_North.cal.lsrk.split_1 \n",
"2 Antennae_North.cal.lsrk.split_2 \n",
"3 Antennae_North.cal.lsrk.split_3 \n",
"\n",
" scan_intents shape \\\n",
"0 [OBSERVE_TARGET#ON_SOURCE] (50, 45, 8, 2) \n",
"1 [OBSERVE_TARGET#ON_SOURCE] (50, 55, 8, 2) \n",
"2 [OBSERVE_TARGET#ON_SOURCE] (15, 55, 8, 2) \n",
"3 [OBSERVE_TARGET#ON_SOURCE, CALIBRATE_WVR#ON_SOURCE] (50, 77, 8, 2) \n",
"\n",
" execution_block_UID polarization scan_name spw_name \\\n",
"0 uid://A002/X1ff7b0/Xb [XX, YY] [17, 21, 25, 9] spw_0 \n",
"1 uid://A002/X207fe4/X3a [XX, YY] [26, 34, 38, 42] spw_0 \n",
"2 uid://A002/X207fe4/X3b9 [XX, YY] [43] spw_0 \n",
"3 uid://A002/X2181fb/X49 [XX, YY] [48, 56, 60, 64] spw_0 \n",
"\n",
" spw_intents \\\n",
"0 UNSPECIFIED \n",
"1 UNSPECIFIED \n",
"2 UNSPECIFIED \n",
"3 UNSPECIFIED \n",
"\n",
" field_name \\\n",
"0 [NGC4038 - Antennae North_0, NGC4038 - Antennae North_1, NGC4038 - Antennae North_2] \n",
"1 [NGC4038 - Antennae North_0, NGC4038 - Antennae North_1, NGC4038 - Antennae North_2] \n",
"2 [NGC4038 - Antennae North_0, NGC4038 - Antennae North_1, NGC4038 - Antennae North_2] \n",
"3 [NGC4038 - Antennae North_0, NGC4038 - Antennae North_1, NGC4038 - Antennae North_2] \n",
"\n",
" source_name line_name field_coords \\\n",
"0 [NGC4038 - Antennae North_0] [] Multi-Phase-Center \n",
"1 [NGC4038 - Antennae North_0] [] Multi-Phase-Center \n",
"2 [NGC4038 - Antennae North_0] [] Multi-Phase-Center \n",
"3 [NGC4038 - Antennae North_0] [] Multi-Phase-Center \n",
"\n",
" session_reference_UID scheduling_block_UID project_UID start_frequency \\\n",
"0 --- uid://A002/X1fd4e7/X64d T.B.D. 3.439281e+11 \n",
"1 --- uid://A002/X1fd4e7/X64d T.B.D. 3.439281e+11 \n",
"2 --- uid://A002/X1fd4e7/X64d T.B.D. 3.439281e+11 \n",
"3 --- uid://A002/X1fd4e7/X64d T.B.D. 3.439281e+11 \n",
"\n",
" end_frequency \n",
"0 3.440067e+11 \n",
"1 3.440067e+11 \n",
"2 3.440067e+11 \n",
"3 3.440067e+11 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from toolviper.utils.data import download\n",
"\n",
Expand All @@ -352,21 +90,13 @@
" scan_intents=intents,\n",
")\n",
"display(ps.xr_ps.summary())"
]
],
"outputs": [],
"execution_count": null
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'map': {'node_task': <function my_func at 0x1683c0040>, 'input_params': [{'test_input': 42, 'chunk_indices': (np.int64(0),), 'parallel_dims': ['frequency'], 'data_selection': {'Antennae_North.cal.lsrk.split_0': {'frequency': slice(np.int64(0), np.int64(3), None)}, 'Antennae_North.cal.lsrk.split_1': {'frequency': slice(np.int64(0), np.int64(3), None)}, 'Antennae_North.cal.lsrk.split_2': {'frequency': slice(np.int64(0), np.int64(3), None)}, 'Antennae_North.cal.lsrk.split_3': {'frequency': slice(np.int64(0), np.int64(3), None)}}, 'task_coords': {'frequency': {'data': array([3.43928097e+11, 3.43939328e+11, 3.43950560e+11]), 'dims': 'frequency', 'attrs': {'units': 'Hz', 'type': 'spectral_coord', 'velocity_frame': 'lsrk'}}}, 'task_id': 0, 'input_data': None, 'date_time': None}, {'test_input': 42, 'chunk_indices': (np.int64(1),), 'parallel_dims': ['frequency'], 'data_selection': {'Antennae_North.cal.lsrk.split_0': {'frequency': slice(np.int64(3), np.int64(6), None)}, 'Antennae_North.cal.lsrk.split_1': {'frequency': slice(np.int64(3), np.int64(6), None)}, 'Antennae_North.cal.lsrk.split_2': {'frequency': slice(np.int64(3), np.int64(6), None)}, 'Antennae_North.cal.lsrk.split_3': {'frequency': slice(np.int64(3), np.int64(6), None)}}, 'task_coords': {'frequency': {'data': array([3.43961791e+11, 3.43973023e+11, 3.43984254e+11]), 'dims': 'frequency', 'attrs': {'units': 'Hz', 'type': 'spectral_coord', 'velocity_frame': 'lsrk'}}}, 'task_id': 1, 'input_data': None, 'date_time': None}, {'test_input': 42, 'chunk_indices': (np.int64(2),), 'parallel_dims': ['frequency'], 'data_selection': {'Antennae_North.cal.lsrk.split_0': {'frequency': slice(np.int64(6), np.int64(8), None)}, 'Antennae_North.cal.lsrk.split_1': {'frequency': slice(np.int64(6), np.int64(8), None)}, 'Antennae_North.cal.lsrk.split_2': {'frequency': slice(np.int64(6), np.int64(8), None)}, 'Antennae_North.cal.lsrk.split_3': {'frequency': slice(np.int64(6), np.int64(8), None)}}, 'task_coords': {'frequency': {'data': array([3.43995486e+11, 3.44006717e+11]), 'dims': 'frequency', 'attrs': {'units': 'Hz', 'type': 'spectral_coord', 'velocity_frame': 'lsrk'}}}, 'task_id': 2, 'input_data': None, 'date_time': None}]}, 'reduce': {'mode': 'single_node', 'node_task': <function my_sum at 0x17532f880>, 'input_params': {'test_input': 5}}}\n"
]
}
],
"source": [
"%load_ext autoreload\n",
"%autoreload 2\n",
Expand Down Expand Up @@ -453,14 +183,16 @@
"\n",
"generate_airflow_workflow(viper_graph,filename=os.path.join(dags_folder,'map_reduce_4.py'),dag_name='map_reduce_4')\n",
"\n"
]
],
"outputs": [],
"execution_count": null
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"source": [],
"outputs": [],
"source": []
"execution_count": null
}
],
"metadata": {
Expand Down
Loading
Loading