{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Recipe to show the interactively edit the Sky model on the notebook \n", "\n", "Example showing how to transform the gammapy model to a pandas dataframe, a widely used tabular format and modifying the parameters interactively on the notebook. \n", "Plain text models in the XML or yaml format can not be sorted or filtered. Here we propose to use `qgrid` to explore and edit the Model. \n", "\n", "\n", "*Qgrid is a Jupyter notebook widget which uses SlickGrid to render pandas DataFrames within a Jupyter notebook. This allows you to explore your DataFrames with intuitive scrolling, sorting, and filtering controls, as well as edit your DataFrames by double clicking cells.* [Github](https://github.com/quantopian/qgrid) \n", "\n", "\n", "See GIF movie demo [here](https://github.com/quantopian/qgrid/blob/master/docs/images/filtering_demo.gif).\n", "\n", "Qgrid can be installed via conda: \n", "`conda install -c conda-forge qgrid` \n", "Works using Jupyter notebook.\n", "Currently doesn't work using Jupyter Lab 3.0. \n", "\n", "There are alternatives to qgrid like [ipysheet](https://github.com/QuantStack/ipysheet) or [ipyaggrid](https://dgothrek.gitlab.io/ipyaggrid)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2021-11-24T21:35:29.686884Z", "iopub.status.busy": "2021-11-24T21:35:29.686057Z", "iopub.status.idle": "2021-11-24T21:35:30.598619Z", "shell.execute_reply": "2021-11-24T21:35:30.597049Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "08ce2794b221465a9a196c840c3eb7cc", "version_major": 2, "version_minor": 0 }, "text/plain": [ "QgridWidget(grid_options={'fullWidthRows': True, 'syncColumnCellResize': True, 'forceFitColumns': True, 'defau…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from gammapy.modeling.models import Models\n", "from astropy.table import Table\n", "\n", "# read gammapy models\n", "models = Models.read(\"$GAMMAPY_DATA/tests/models/gc_example_models.yaml\")\n", "df = models.to_parameters_table().to_pandas()\n", "\n", "import qgrid\n", "\n", "qgrid_widget = qgrid.show_grid(df, grid_options={\"maxVisibleRows\": 10})\n", "qgrid_widget\n", "# You can sort, filter, freeze/thaw parameters\n", "# e.g show all spectral indices, only parameters of a given source, only the spatial parameters, etc\n", "# all changes values are recorded and will need to be loaded in the gammapy model in a separated cell." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load the changed parameters and verify that the model has been updated " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2021-11-24T21:35:30.607481Z", "iopub.status.busy": "2021-11-24T21:35:30.607117Z", "iopub.status.idle": "2021-11-24T21:35:30.608612Z", "shell.execute_reply": "2021-11-24T21:35:30.608787Z" } }, "outputs": [ { "data": { "text/html": [ "
Table length=23\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", "
modeltypenamevalueuniterrorminmaxfrozenlink
str18str8str9float64str14int64float64float64boolstr18
gcspectralindex2.0000e+000.000e+00nannanFalse
gcspectralamplitude3.0000e-12cm-2 s-1 TeV-10.000e+00nannanFalse
gcspectralreference1.0000e+00TeV0.000e+00nannanTruereference@lQO8TIDg
gcspectrallambda_1.0000e-01TeV-10.000e+00nannanFalse
gcspectralalpha1.0000e+000.000e+00nannanTrue
gcspatiallon_00.0000e+00deg0.000e+00nannanFalse
gcspatiallat_00.0000e+00deg0.000e+00-9.000e+019.000e+01False
gll_iem_v06_cutoutspectralnorm1.0000e+000.000e+00nannanFalse
gll_iem_v06_cutoutspectraltilt0.0000e+000.000e+00nannanTrue
gll_iem_v06_cutoutspectralreference1.0000e+00TeV0.000e+00nannanTrue
gc-bkgspectralnorm1.0000e+000.000e+00nannanFalse
gc-bkgspectraltilt0.0000e+000.000e+00nannanTrue
gc-bkgspectralreference1.0000e+00TeV0.000e+00nannanTrue
g09spectralindex2.0000e+000.000e+00nannanFalse
g09spectralamplitude3.0000e-12cm-2 s-1 TeV-10.000e+00nannanFalse
g09spectralreference1.0000e+00TeV0.000e+00nannanTruereference@lQO8TIDg
g09spectrallambda_1.0000e-01TeV-10.000e+00nannanFalse
g09spectralalpha1.0000e+000.000e+00nannanTrue
g09spatiallon_09.0000e-01deg0.000e+00nannanFalse
g09spatiallat_01.0000e-01deg0.000e+00-9.000e+019.000e+01False
g09-bkgspectralnorm1.0000e+000.000e+00nannanFalse
g09-bkgspectraltilt0.0000e+000.000e+00nannanTrue
g09-bkgspectralreference1.0000e+00TeV0.000e+00nannanTrue
" ], "text/plain": [ "\n", " model type name value unit error min max frozen link \n", " str18 str8 str9 float64 str14 int64 float64 float64 bool str18 \n", "------------------ -------- --------- ---------- -------------- --------- ---------- --------- ------ ------------------\n", " gc spectral index 2.0000e+00 0.000e+00 nan nan False \n", " gc spectral amplitude 3.0000e-12 cm-2 s-1 TeV-1 0.000e+00 nan nan False \n", " gc spectral reference 1.0000e+00 TeV 0.000e+00 nan nan True reference@lQO8TIDg\n", " gc spectral lambda_ 1.0000e-01 TeV-1 0.000e+00 nan nan False \n", " gc spectral alpha 1.0000e+00 0.000e+00 nan nan True \n", " gc spatial lon_0 0.0000e+00 deg 0.000e+00 nan nan False \n", " gc spatial lat_0 0.0000e+00 deg 0.000e+00 -9.000e+01 9.000e+01 False \n", "gll_iem_v06_cutout spectral norm 1.0000e+00 0.000e+00 nan nan False \n", "gll_iem_v06_cutout spectral tilt 0.0000e+00 0.000e+00 nan nan True \n", "gll_iem_v06_cutout spectral reference 1.0000e+00 TeV 0.000e+00 nan nan True \n", " gc-bkg spectral norm 1.0000e+00 0.000e+00 nan nan False \n", " gc-bkg spectral tilt 0.0000e+00 0.000e+00 nan nan True \n", " gc-bkg spectral reference 1.0000e+00 TeV 0.000e+00 nan nan True \n", " g09 spectral index 2.0000e+00 0.000e+00 nan nan False \n", " g09 spectral amplitude 3.0000e-12 cm-2 s-1 TeV-1 0.000e+00 nan nan False \n", " g09 spectral reference 1.0000e+00 TeV 0.000e+00 nan nan True reference@lQO8TIDg\n", " g09 spectral lambda_ 1.0000e-01 TeV-1 0.000e+00 nan nan False \n", " g09 spectral alpha 1.0000e+00 0.000e+00 nan nan True \n", " g09 spatial lon_0 9.0000e-01 deg 0.000e+00 nan nan False \n", " g09 spatial lat_0 1.0000e-01 deg 0.000e+00 -9.000e+01 9.000e+01 False \n", " g09-bkg spectral norm 1.0000e+00 0.000e+00 nan nan False \n", " g09-bkg spectral tilt 0.0000e+00 0.000e+00 nan nan True \n", " g09-bkg spectral reference 1.0000e+00 TeV 0.000e+00 nan nan True " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qgrid_df = qgrid_widget.get_changed_df() # get changed values\n", "models.update_parameters_from_table(\n", " Table.from_pandas(qgrid_df)\n", ") # update model with changed values\n", "models.to_parameters_table() # print model to verify that values were updated" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2021-11-24T21:35:30.610592Z", "iopub.status.busy": "2021-11-24T21:35:30.610260Z", "iopub.status.idle": "2021-11-24T21:35:30.612116Z", "shell.execute_reply": "2021-11-24T21:35:30.612406Z" }, "tags": [ "nbsphinx-thumbnail" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Display thumbnails for nbsphinx-thumbnail\n", "from IPython.display import Image\n", "\n", "display(Image(filename=\"edit-interactive.png\"))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.9.0" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "08ce2794b221465a9a196c840c3eb7cc": { "model_module": "qgrid", "model_module_version": "^1.1.3", "model_name": "QgridModel", "state": { "_columns": { "error": { "cssClass": "integer", "defaultSortAsc": true, "editable": true, "field": "error", "id": "error", "maxWidth": null, "minWidth": 30, "name": "error", "position": 7, "resizable": true, "sortable": true, "toolTip": "", "type": "integer", "width": null }, "frozen": { "cssClass": "boolean", "defaultSortAsc": true, "editable": true, "field": "frozen", "id": "frozen", "maxWidth": null, "minWidth": 30, "name": "frozen", "position": 10, "resizable": true, "sortable": true, "toolTip": "", "type": "boolean", "width": null }, "index": { "cssClass": "integer", "defaultSortAsc": true, "editable": true, "field": "index", "first_index": true, "id": "index", "index_display_text": "", "is_index": true, "level": 0, "maxWidth": null, "minWidth": 30, "name": "index", "position": 0, "resizable": true, "sortable": true, "toolTip": "", "type": "integer", "width": null }, "link": { "cssClass": "string", "defaultSortAsc": true, "editable": true, "field": "link", "id": "link", "maxWidth": null, "minWidth": 30, "name": "link", "position": 11, "resizable": true, "sortable": true, "toolTip": "", "type": "string", "width": null }, "max": { "cssClass": "number", "defaultSortAsc": true, "editable": true, "field": "max", "id": "max", "maxWidth": null, "minWidth": 30, "name": "max", "position": 9, "resizable": true, "sortable": true, "toolTip": "", "type": "number", "width": null }, "min": { "cssClass": "number", "defaultSortAsc": true, "editable": true, "field": "min", "id": "min", "maxWidth": null, "minWidth": 30, "name": "min", "position": 8, "resizable": true, "sortable": true, "toolTip": "", "type": "number", "width": null }, "model": { "cssClass": "string", "defaultSortAsc": true, "editable": true, "field": "model", "id": "model", "maxWidth": null, "minWidth": 30, "name": "model", "position": 2, "resizable": true, "sortable": true, "toolTip": "", "type": "string", "width": null }, "name": { "cssClass": "string", "defaultSortAsc": true, "editable": true, "field": "name", "id": "name", "maxWidth": null, "minWidth": 30, "name": "name", "position": 4, "resizable": true, "sortable": true, "toolTip": "", "type": "string", "width": null }, "qgrid_unfiltered_index": { "cssClass": "integer", "defaultSortAsc": true, "editable": true, "field": "qgrid_unfiltered_index", "id": "qgrid_unfiltered_index", "maxWidth": null, "minWidth": 30, "name": "qgrid_unfiltered_index", "position": 1, "resizable": true, "sortable": true, "toolTip": "", "type": "integer", "width": null }, "type": { "cssClass": "string", "defaultSortAsc": true, "editable": true, "field": "type", "id": "type", "maxWidth": null, "minWidth": 30, "name": "type", "position": 3, "resizable": true, "sortable": true, "toolTip": "", "type": "string", "width": null }, "unit": { "cssClass": "string", "defaultSortAsc": true, "editable": true, "field": "unit", "id": "unit", "maxWidth": null, "minWidth": 30, "name": "unit", "position": 6, "resizable": true, "sortable": true, "toolTip": "", "type": "string", "width": null }, "value": { "cssClass": "number", "defaultSortAsc": true, "editable": true, "field": "value", "id": "value", "maxWidth": null, "minWidth": 30, "name": "value", "position": 5, "resizable": true, "sortable": true, "toolTip": "", "type": "number", "width": null } }, "_df_json": "{\"schema\":{\"fields\":[{\"name\":\"index\",\"type\":\"integer\"},{\"name\":\"qgrid_unfiltered_index\",\"type\":\"integer\"},{\"name\":\"model\",\"type\":\"string\"},{\"name\":\"type\",\"type\":\"string\"},{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"number\"},{\"name\":\"unit\",\"type\":\"string\"},{\"name\":\"error\",\"type\":\"integer\"},{\"name\":\"min\",\"type\":\"number\"},{\"name\":\"max\",\"type\":\"number\"},{\"name\":\"frozen\",\"type\":\"boolean\"},{\"name\":\"link\",\"type\":\"string\"}],\"primaryKey\":[\"index\"],\"pandas_version\":\"0.20.0\"},\"data\":[{\"index\":0,\"qgrid_unfiltered_index\":0,\"model\":\"gc\",\"type\":\"spectral\",\"name\":\"index\",\"value\":2.0,\"unit\":\"\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":false,\"link\":\"\"},{\"index\":1,\"qgrid_unfiltered_index\":1,\"model\":\"gc\",\"type\":\"spectral\",\"name\":\"amplitude\",\"value\":0.0,\"unit\":\"cm-2 s-1 TeV-1\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":false,\"link\":\"\"},{\"index\":2,\"qgrid_unfiltered_index\":2,\"model\":\"gc\",\"type\":\"spectral\",\"name\":\"reference\",\"value\":1.0,\"unit\":\"TeV\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":true,\"link\":\"reference@lQO8TIDg\"},{\"index\":3,\"qgrid_unfiltered_index\":3,\"model\":\"gc\",\"type\":\"spectral\",\"name\":\"lambda_\",\"value\":0.1,\"unit\":\"TeV-1\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":false,\"link\":\"\"},{\"index\":4,\"qgrid_unfiltered_index\":4,\"model\":\"gc\",\"type\":\"spectral\",\"name\":\"alpha\",\"value\":1.0,\"unit\":\"\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":true,\"link\":\"\"},{\"index\":5,\"qgrid_unfiltered_index\":5,\"model\":\"gc\",\"type\":\"spatial\",\"name\":\"lon_0\",\"value\":0.0,\"unit\":\"deg\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":false,\"link\":\"\"},{\"index\":6,\"qgrid_unfiltered_index\":6,\"model\":\"gc\",\"type\":\"spatial\",\"name\":\"lat_0\",\"value\":0.0,\"unit\":\"deg\",\"error\":0,\"min\":-90.0,\"max\":90.0,\"frozen\":false,\"link\":\"\"},{\"index\":7,\"qgrid_unfiltered_index\":7,\"model\":\"gll_iem_v06_cutout\",\"type\":\"spectral\",\"name\":\"norm\",\"value\":1.0,\"unit\":\"\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":false,\"link\":\"\"},{\"index\":8,\"qgrid_unfiltered_index\":8,\"model\":\"gll_iem_v06_cutout\",\"type\":\"spectral\",\"name\":\"tilt\",\"value\":0.0,\"unit\":\"\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":true,\"link\":\"\"},{\"index\":9,\"qgrid_unfiltered_index\":9,\"model\":\"gll_iem_v06_cutout\",\"type\":\"spectral\",\"name\":\"reference\",\"value\":1.0,\"unit\":\"TeV\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":true,\"link\":\"\"},{\"index\":10,\"qgrid_unfiltered_index\":10,\"model\":\"gc-bkg\",\"type\":\"spectral\",\"name\":\"norm\",\"value\":1.0,\"unit\":\"\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":false,\"link\":\"\"},{\"index\":11,\"qgrid_unfiltered_index\":11,\"model\":\"gc-bkg\",\"type\":\"spectral\",\"name\":\"tilt\",\"value\":0.0,\"unit\":\"\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":true,\"link\":\"\"},{\"index\":12,\"qgrid_unfiltered_index\":12,\"model\":\"gc-bkg\",\"type\":\"spectral\",\"name\":\"reference\",\"value\":1.0,\"unit\":\"TeV\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":true,\"link\":\"\"},{\"index\":13,\"qgrid_unfiltered_index\":13,\"model\":\"g09\",\"type\":\"spectral\",\"name\":\"index\",\"value\":2.0,\"unit\":\"\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":false,\"link\":\"\"},{\"index\":14,\"qgrid_unfiltered_index\":14,\"model\":\"g09\",\"type\":\"spectral\",\"name\":\"amplitude\",\"value\":0.0,\"unit\":\"cm-2 s-1 TeV-1\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":false,\"link\":\"\"},{\"index\":15,\"qgrid_unfiltered_index\":15,\"model\":\"g09\",\"type\":\"spectral\",\"name\":\"reference\",\"value\":1.0,\"unit\":\"TeV\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":true,\"link\":\"reference@lQO8TIDg\"},{\"index\":16,\"qgrid_unfiltered_index\":16,\"model\":\"g09\",\"type\":\"spectral\",\"name\":\"lambda_\",\"value\":0.1,\"unit\":\"TeV-1\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":false,\"link\":\"\"},{\"index\":17,\"qgrid_unfiltered_index\":17,\"model\":\"g09\",\"type\":\"spectral\",\"name\":\"alpha\",\"value\":1.0,\"unit\":\"\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":true,\"link\":\"\"},{\"index\":18,\"qgrid_unfiltered_index\":18,\"model\":\"g09\",\"type\":\"spatial\",\"name\":\"lon_0\",\"value\":0.9,\"unit\":\"deg\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":false,\"link\":\"\"},{\"index\":19,\"qgrid_unfiltered_index\":19,\"model\":\"g09\",\"type\":\"spatial\",\"name\":\"lat_0\",\"value\":0.1,\"unit\":\"deg\",\"error\":0,\"min\":-90.0,\"max\":90.0,\"frozen\":false,\"link\":\"\"},{\"index\":20,\"qgrid_unfiltered_index\":20,\"model\":\"g09-bkg\",\"type\":\"spectral\",\"name\":\"norm\",\"value\":1.0,\"unit\":\"\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":false,\"link\":\"\"},{\"index\":21,\"qgrid_unfiltered_index\":21,\"model\":\"g09-bkg\",\"type\":\"spectral\",\"name\":\"tilt\",\"value\":0.0,\"unit\":\"\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":true,\"link\":\"\"},{\"index\":22,\"qgrid_unfiltered_index\":22,\"model\":\"g09-bkg\",\"type\":\"spectral\",\"name\":\"reference\",\"value\":1.0,\"unit\":\"TeV\",\"error\":0,\"min\":null,\"max\":null,\"frozen\":true,\"link\":\"\"}]}", "_df_range": [ 0, 100 ], "_dom_classes": [], "_editable_rows": {}, "_index_col_name": "qgrid_unfiltered_index", "_interval_columns": [], "_model_module": "qgrid", "_model_module_version": "^1.1.3", "_model_name": "QgridModel", "_multi_index": false, "_row_count": 23, "_row_styles": {}, "_sort_ascending": true, "_sort_field": null, "_view_count": null, "_view_module": "qgrid", "_view_module_version": "^1.1.3", "_view_name": "QgridView", "_viewport_range": [ 0, 100 ], "grid_options": { "autoEdit": false, "boldIndex": true, "defaultColumnWidth": 150, "editable": true, "enableColumnReorder": false, "enableTextSelectionOnCells": true, "explicitInitialization": true, "filterable": true, "forceFitColumns": true, "fullWidthRows": true, "highlightSelectedCell": false, "highlightSelectedRow": true, "maxVisibleRows": 10, "minVisibleRows": 8, "rowHeight": 28, "sortable": true, "syncColumnCellResize": true }, "id": "ebb57f27-6ee0-459b-8ed5-c77e761c91ee", "layout": "IPY_MODEL_1815937605eb4cb7a87867fec5f22230", "precision": 5, "show_toolbar": false } }, "1815937605eb4cb7a87867fec5f22230": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }