diff --git a/.gitignore b/.gitignore index ada8be9..1a68963 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,6 @@ Cargo.lock **/*.rs.bk # MSVC Windows builds of rustc generate these, which store debugging information -*.pdb \ No newline at end of file +*.pdb + +.DS_Store \ No newline at end of file diff --git a/README.md b/README.md index 01c9c08..c0ffe57 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,17 @@ A lightweight, fast and easy to use server for the [lsdb server test branch](htt --- +#### TODO list: + +- [ ] Accept lower case column names +- [ ] Get columns by index +- [ ] Exclude columns by name +- [ ] Fix `_hipscat_index` parquet schema + ### Configuring the server +`lsdb-server` works with [lsdb server test branch](https://github.com/Schwarzam/lsdb/tree/server-test) if you have the hips partitioned catalogs in your server. + Generate the hips using [hipscat-import](https://lsdb.readthedocs.io/en/latest/tutorials/import_catalogs.html). --- @@ -48,3 +57,4 @@ server { ``` --- + diff --git a/benchmark/test.ipynb b/benchmark/test.ipynb index 1bc6b00..04f6c9c 100644 --- a/benchmark/test.ipynb +++ b/benchmark/test.ipynb @@ -12,415 +12,2311 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting git+https://github.com/Schwarzam/lsdb@server-test\n", + " Cloning https://github.com/Schwarzam/lsdb (to revision server-test) to /private/var/folders/rd/8h7ybv_n2d18q3t1xryryq6r0000gp/T/pip-req-build-d2ee_1n6\n", + " Running command git clone --filter=blob:none --quiet https://github.com/Schwarzam/lsdb /private/var/folders/rd/8h7ybv_n2d18q3t1xryryq6r0000gp/T/pip-req-build-d2ee_1n6\n", + " Running command git checkout -b server-test --track origin/server-test\n", + " Switched to a new branch 'server-test'\n", + " branch 'server-test' set up to track 'origin/server-test'.\n", + " Resolved https://github.com/Schwarzam/lsdb to commit 52aebf033c38958d20b620517335da29878ccd76\n", + " Installing build dependencies ... \u001b[?25ldone\n", + "\u001b[?25h Getting requirements to build wheel ... \u001b[?25ldone\n", + "\u001b[?25h Installing backend dependencies ... \u001b[?25ldone\n", + "\u001b[?25h Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n", + "\u001b[?25hRequirement already satisfied: dask<=2024.2.1 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (2024.2.0)\n", + "Requirement already satisfied: hipscat>=0.2.8 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from lsdb==0.1.7.dev38+g52aebf0) (0.2.9)\n", + "Requirement already satisfied: pyarrow in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from lsdb==0.1.7.dev38+g52aebf0) (15.0.2)\n", + "Requirement already satisfied: deprecated in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from lsdb==0.1.7.dev38+g52aebf0) (1.2.13)\n", + "Requirement already satisfied: scipy in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from lsdb==0.1.7.dev38+g52aebf0) (1.9.3)\n", + "Requirement already satisfied: lsst-sphgeom in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from lsdb==0.1.7.dev38+g52aebf0) (26.2024.1400)\n", + "Requirement already satisfied: click>=8.1 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (8.1.3)\n", + "Requirement already satisfied: cloudpickle>=1.5.0 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (3.0.0)\n", + "Requirement already satisfied: fsspec>=2021.09.0 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (2023.9.2)\n", + "Requirement already satisfied: packaging>=20.0 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (23.0)\n", + "Requirement already satisfied: partd>=1.2.0 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (1.4.1)\n", + "Requirement already satisfied: pyyaml>=5.3.1 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (5.4.1)\n", + "Requirement already satisfied: toolz>=0.10.0 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (0.12.0)\n", + "Requirement already satisfied: importlib-metadata>=4.13.0 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (6.0.0)\n", + "Requirement already satisfied: pyarrow-hotfix in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (0.6)\n", + "Requirement already satisfied: lz4>=4.3.2 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (4.3.3)\n", + "Requirement already satisfied: astropy in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from hipscat>=0.2.8->lsdb==0.1.7.dev38+g52aebf0) (6.0.0)\n", + "Requirement already satisfied: healpy in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from hipscat>=0.2.8->lsdb==0.1.7.dev38+g52aebf0) (1.16.6)\n", + "Requirement already satisfied: numba>=0.58 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from hipscat>=0.2.8->lsdb==0.1.7.dev38+g52aebf0) (0.59.1)\n", + "Requirement already satisfied: numpy in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from hipscat>=0.2.8->lsdb==0.1.7.dev38+g52aebf0) (1.23.0)\n", + "Requirement already satisfied: pandas in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from hipscat>=0.2.8->lsdb==0.1.7.dev38+g52aebf0) (1.5.1)\n", + "Requirement already satisfied: typing-extensions>=4.3.0 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from hipscat>=0.2.8->lsdb==0.1.7.dev38+g52aebf0) (4.8.0)\n", + "Requirement already satisfied: wrapt<2,>=1.10 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from deprecated->lsdb==0.1.7.dev38+g52aebf0) (1.14.1)\n", + "Requirement already satisfied: hpgeom>=0.8.0 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from lsst-sphgeom->lsdb==0.1.7.dev38+g52aebf0) (1.2.2)\n", + "Requirement already satisfied: zipp>=0.5 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from importlib-metadata>=4.13.0->dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (3.11.0)\n", + "Requirement already satisfied: llvmlite<0.43,>=0.42.0dev0 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from numba>=0.58->hipscat>=0.2.8->lsdb==0.1.7.dev38+g52aebf0) (0.42.0)\n", + "Requirement already satisfied: locket in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from partd>=1.2.0->dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (1.0.0)\n", + "Requirement already satisfied: pyerfa>=2.0 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from astropy->hipscat>=0.2.8->lsdb==0.1.7.dev38+g52aebf0) (2.0.0.1)\n", + "Requirement already satisfied: astropy-iers-data>=0.2023.10.30.0.29.53 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from astropy->hipscat>=0.2.8->lsdb==0.1.7.dev38+g52aebf0) (0.2024.2.19.0.28.47)\n", + "Requirement already satisfied: distributed==2024.2.0 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (2024.2.0)\n", + "Requirement already satisfied: bokeh>=2.4.2 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (3.4.0)\n", + "Requirement already satisfied: jinja2>=2.10.3 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (3.1.2)\n", + "Requirement already satisfied: msgpack>=1.0.0 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from distributed==2024.2.0->dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (1.0.5)\n", + "Requirement already satisfied: psutil>=5.7.2 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from distributed==2024.2.0->dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (5.9.4)\n", + "Requirement already satisfied: sortedcontainers>=2.0.5 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from distributed==2024.2.0->dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (2.4.0)\n", + "Requirement already satisfied: tblib>=1.6.0 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from distributed==2024.2.0->dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (3.0.0)\n", + "Requirement already satisfied: tornado>=6.0.4 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from distributed==2024.2.0->dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (6.4)\n", + "Requirement already satisfied: urllib3>=1.24.3 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from distributed==2024.2.0->dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (1.26.14)\n", + "Requirement already satisfied: zict>=3.0.0 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from distributed==2024.2.0->dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (3.0.0)\n", + "Requirement already satisfied: python-dateutil>=2.8.1 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from pandas->hipscat>=0.2.8->lsdb==0.1.7.dev38+g52aebf0) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from pandas->hipscat>=0.2.8->lsdb==0.1.7.dev38+g52aebf0) (2022.7.1)\n", + "Requirement already satisfied: matplotlib in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from healpy->hipscat>=0.2.8->lsdb==0.1.7.dev38+g52aebf0) (3.7.1)\n", + "Requirement already satisfied: contourpy>=1.2 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from bokeh>=2.4.2->dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (1.2.1)\n", + "Requirement already satisfied: pillow>=7.1.0 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from bokeh>=2.4.2->dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (10.1.0)\n", + "Requirement already satisfied: xyzservices>=2021.09.1 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from bokeh>=2.4.2->dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (2024.4.0)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from jinja2>=2.10.3->dask<=2024.2.1->dask[complete]<=2024.2.1->lsdb==0.1.7.dev38+g52aebf0) (2.1.1)\n", + "Requirement already satisfied: six>=1.5 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from python-dateutil>=2.8.1->pandas->hipscat>=0.2.8->lsdb==0.1.7.dev38+g52aebf0) (1.16.0)\n", + "Requirement already satisfied: cycler>=0.10 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from matplotlib->healpy->hipscat>=0.2.8->lsdb==0.1.7.dev38+g52aebf0) (0.11.0)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from matplotlib->healpy->hipscat>=0.2.8->lsdb==0.1.7.dev38+g52aebf0) (4.25.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from matplotlib->healpy->hipscat>=0.2.8->lsdb==0.1.7.dev38+g52aebf0) (1.4.2)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from matplotlib->healpy->hipscat>=0.2.8->lsdb==0.1.7.dev38+g52aebf0) (3.0.9)\n", + "Requirement already satisfied: importlib-resources>=3.2.0 in /Users/gustavo/miniconda3/lib/python3.9/site-packages (from matplotlib->healpy->hipscat>=0.2.8->lsdb==0.1.7.dev38+g52aebf0) (5.8.0)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], "source": [ - "%pip install --quiet git+https://github.com/Schwarzam/lsdb@server-test" + "%pip install git+https://github.com/Schwarzam/lsdb@server-test" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 46, "metadata": {}, "outputs": [], "source": [ "import splusdata\n", - "import lsdb" + "import lsdb\n", + "\n", + "# Explore the HiPSCat catalogs and plot sky maps\n", + "from hipscat.catalog import Catalog\n", + "from hipscat.inspection import plot_pixels" ] }, { - "cell_type": "code", - "execution_count": 9, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "cat_link = \"https://splus.cloud/HIPS/catalogs/dr4/dual_r/\"\n", - "margin_link = \"https://splus.cloud/HIPS/catalogs/dr4/dual_r_2arcsec\"" + "## Exploring splus dual's hipscat" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 47, "metadata": {}, "outputs": [], "source": [ - "conn = splusdata.Core()" + "cat_link = \"https://splus.cloud/HIPS/catalogs/dr4/dual/\"\n", + "margin_link = \"https://splus.cloud/HIPS/catalogs/dr4/dual_2arcsec\"" ] }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 67, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ - "def squery1(conn):\n", - " return conn.query(\"\"\"\n", - " SELECT * FROM \"dr4_dual\".\"dr4_dual_r\"\n", - " WHERE 1 = CONTAINS( POINT('ICRS', ra, dec), \n", - " CIRCLE('ICRS', 0.1, 0.1, 0.1)) \n", - " \"\"\", publicdata=True)\n", - "\n", - "def squery2(conn):\n", - " return conn.query(\"\"\"\n", - " SELECT id, ra, dec, r_auto, e_r_auto FROM \"dr4_dual\".\"dr4_dual_r\"\n", - " WHERE 1 = CONTAINS( POINT('ICRS', ra, dec), \n", - " CIRCLE('ICRS', 0.1, 0.1, 0.1)) \n", - " \"\"\", publicdata=True)\n", - "\n", - "def squery3(conn):\n", - " return conn.query(\"\"\"\n", - " SELECT * FROM \"dr4_dual\".\"dr4_dual_r\"\n", - " WHERE 1 = CONTAINS( POINT('ICRS', ra, dec), \n", - " CIRCLE('ICRS', 0.1, 0.1, 3)) \n", - " \"\"\", publicdata=True)\n", - "\n", - "def squery4(conn):\n", - " return conn.query(\"\"\"\n", - " SELECT id, ra, dec, r_auto, e_r_auto FROM \"dr4_dual\".\"dr4_dual_r\"\n", - " WHERE 1 = CONTAINS( POINT('ICRS', ra, dec), \n", - " CIRCLE('ICRS', 0.1, 0.1, 3)) \n", - " \"\"\", publicdata=True)\n", - " \n", - "def squery5(conn):\n", - " return conn.query(\"\"\"\n", - " SELECT id, ra, dec, r_auto, e_r_auto FROM \"dr4_dual\".\"dr4_dual_r\"\n", - " WHERE 1 = CONTAINS( POINT('ICRS', ra, dec), \n", - " CIRCLE('ICRS', 0.1, 0.1, 3)) \n", - " AND r_auto < 15\n", - " \"\"\", publicdata=True)\n", - "\n", - "def squery6(conn):\n", - " return conn.query(\"\"\"\n", - " SELECT * FROM \"dr4_dual\".\"dr4_dual_r\"\n", - " WHERE 1 = CONTAINS( POINT('ICRS', ra, dec), \n", - " CIRCLE('ICRS', 0.1, 0.1, 20)) \n", - " \"\"\", publicdata=True)\n", + "# Read the HiPSCat catalog metadata, it does not load any data, just healpix pixels and other metadata\n", + "splus_hipscat_catalog = Catalog.read_from_hipscat(cat_link)\n", + "plot_pixels(splus_hipscat_catalog)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Creating cluster client (optional)\n", "\n", - "def squery7(conn):\n", - " return conn.query(\"\"\"\n", - " SELECT id, ra, dec, r_auto, e_r_auto FROM \"dr4_dual\".\"dr4_dual_r\"\n", - " WHERE 1 = CONTAINS( POINT('ICRS', ra, dec), \n", - " CIRCLE('ICRS', 0.1, 0.1, 20)) \n", - " \"\"\", publicdata=True)\n", - " \n", - "def squery8(conn):\n", - " return conn.query(\"\"\"\n", - " SELECT id, ra, dec, r_auto, e_r_auto FROM \"dr4_dual\".\"dr4_dual_r\"\n", - " WHERE 1 = CONTAINS( POINT('ICRS', ra, dec), \n", - " CIRCLE('ICRS', 0.1, 0.1, 20)) \n", - " AND r_auto < 15\n", - " \"\"\", publicdata=True)" + "This dask client is optional, but it can be useful to monitor the progress of the computation." ] }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 49, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/gustavo/miniconda3/lib/python3.9/site-packages/distributed/node.py:182: UserWarning: Port 8787 is already in use.\n", + "Perhaps you already have a cluster running?\n", + "Hosting the HTTP server on port 55457 instead\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "
\n", + "
\n", + "

Client

\n", + "

Client-c53f99d4-12f2-11ef-82b7-56385136253b

\n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "
Connection method: Cluster objectCluster type: distributed.LocalCluster
\n", + " Dashboard: http://127.0.0.1:55457/status\n", + "
\n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "

Cluster Info

\n", + "
\n", + "
\n", + "
\n", + "
\n", + "

LocalCluster

\n", + "

028ad827

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + " \n", + "
\n", + " Dashboard: http://127.0.0.1:55457/status\n", + " \n", + " Workers: 4\n", + "
\n", + " Total threads: 8\n", + " \n", + " Total memory: 16.00 GiB\n", + "
Status: runningUsing processes: True
\n", + "\n", + "
\n", + " \n", + "

Scheduler Info

\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "

Scheduler

\n", + "

Scheduler-08cad5a8-04e3-41d6-a945-ce5a69defa39

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " Comm: tcp://127.0.0.1:55458\n", + " \n", + " Workers: 4\n", + "
\n", + " Dashboard: http://127.0.0.1:55457/status\n", + " \n", + " Total threads: 8\n", + "
\n", + " Started: Just now\n", + " \n", + " Total memory: 16.00 GiB\n", + "
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "

Workers

\n", + "
\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "

Worker: 0

\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + "
\n", + " Comm: tcp://127.0.0.1:55469\n", + " \n", + " Total threads: 2\n", + "
\n", + " Dashboard: http://127.0.0.1:55474/status\n", + " \n", + " Memory: 4.00 GiB\n", + "
\n", + " Nanny: tcp://127.0.0.1:55461\n", + "
\n", + " Local directory: /var/folders/rd/8h7ybv_n2d18q3t1xryryq6r0000gp/T/dask-scratch-space/worker-t5xnroeq\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "

Worker: 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", + " Comm: tcp://127.0.0.1:55471\n", + " \n", + " Total threads: 2\n", + "
\n", + " Dashboard: http://127.0.0.1:55476/status\n", + " \n", + " Memory: 4.00 GiB\n", + "
\n", + " Nanny: tcp://127.0.0.1:55462\n", + "
\n", + " Local directory: /var/folders/rd/8h7ybv_n2d18q3t1xryryq6r0000gp/T/dask-scratch-space/worker-g_wsy9zk\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "

Worker: 2

\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + "
\n", + " Comm: tcp://127.0.0.1:55470\n", + " \n", + " Total threads: 2\n", + "
\n", + " Dashboard: http://127.0.0.1:55475/status\n", + " \n", + " Memory: 4.00 GiB\n", + "
\n", + " Nanny: tcp://127.0.0.1:55463\n", + "
\n", + " Local directory: /var/folders/rd/8h7ybv_n2d18q3t1xryryq6r0000gp/T/dask-scratch-space/worker-p_29vw56\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "

Worker: 3

\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + "
\n", + " Comm: tcp://127.0.0.1:55472\n", + " \n", + " Total threads: 2\n", + "
\n", + " Dashboard: http://127.0.0.1:55473/status\n", + " \n", + " Memory: 4.00 GiB\n", + "
\n", + " Nanny: tcp://127.0.0.1:55464\n", + "
\n", + " Local directory: /var/folders/rd/8h7ybv_n2d18q3t1xryryq6r0000gp/T/dask-scratch-space/worker-l1tc83qt\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "\n", + "
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "\n", + "
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "def lquery1():\n", - " splus_margin = lsdb.read_hipscat(margin_link)\n", - " splus_hips = lsdb.read_hipscat(\n", - " cat_link,\n", - " margin_cache=splus_margin\n", - " )\n", - " \n", - " res = splus_hips.cone_search(\n", - " 0.1,\n", - " 0.1,\n", - " 3600 * 0.1\n", - " )\n", - " \n", - " table = res.compute()\n", - " return table\n", - " \n", - "def lquery2():\n", - " splus_margin = lsdb.read_hipscat(margin_link)\n", - " splus_hips = lsdb.read_hipscat(\n", - " cat_link,\n", - " margin_cache=splus_margin,\n", - " cols=[\"ID\", \"RA\", \"DEC\", \"r_auto\", \"e_r_auto\"]\n", - " )\n", - " \n", - " res = splus_hips.cone_search(\n", - " 0.1,\n", - " 0.1,\n", - " 3600 * 0.1\n", - " )\n", - " \n", - " table = res.compute()\n", - " return table\n", - "\n", - "def lquery3():\n", - " splus_margin = lsdb.read_hipscat(margin_link)\n", - " splus_hips = lsdb.read_hipscat(\n", - " cat_link,\n", - " margin_cache=splus_margin\n", - " )\n", - " \n", - " res = splus_hips.cone_search(\n", - " 0.1,\n", - " 0.1,\n", - " 3600 * 3\n", - " )\n", - " \n", - " table = res.compute()\n", - " return table\n", - " \n", - "def lquery4():\n", - " splus_margin = lsdb.read_hipscat(margin_link)\n", - " splus_hips = lsdb.read_hipscat(\n", - " cat_link,\n", - " margin_cache=splus_margin,\n", - " cols=[\"ID\", \"RA\", \"DEC\", \"r_auto\", \"e_r_auto\"]\n", - " )\n", - " \n", - " res = splus_hips.cone_search(\n", - " 0.1,\n", - " 0.1,\n", - " 3600 * 3\n", - " )\n", - " \n", - " table = res.compute()\n", - " return table\n", - " \n", - "def lquery5():\n", - " splus_margin = lsdb.read_hipscat(margin_link)\n", - " splus_hips = lsdb.read_hipscat(\n", - " cat_link,\n", - " margin_cache=splus_margin,\n", - " cols=[\"ID\", \"RA\", \"DEC\", \"r_auto\", \"e_r_auto\"],\n", - " query = [\"r_auto < 15\"]\n", - " )\n", - " \n", - " res = splus_hips.cone_search(\n", - " 0.1,\n", - " 0.1,\n", - " 3600 * 3\n", - " )\n", - " \n", - " table = res.compute()\n", - " return table\n", + "from dask.distributed import Client\n", "\n", - "def lquery6():\n", - " splus_margin = lsdb.read_hipscat(margin_link)\n", - " splus_hips = lsdb.read_hipscat(\n", - " cat_link,\n", - " margin_cache=splus_margin\n", - " )\n", - " \n", - " res = splus_hips.cone_search(\n", - " 0.1,\n", - " 0.1,\n", - " 3600 * 20\n", - " )\n", - " \n", - " table = res.compute()\n", - " return table\n", - "\n", - "def lquery7():\n", - " splus_margin = lsdb.read_hipscat(margin_link)\n", - " splus_hips = lsdb.read_hipscat(\n", - " cat_link,\n", - " margin_cache=splus_margin,\n", - " cols=[\"ID\", \"RA\", \"DEC\", \"r_auto\", \"e_r_auto\"]\n", - " )\n", - " \n", - " res = splus_hips.cone_search(\n", - " 0.1,\n", - " 0.1,\n", - " 3600 * 20\n", - " )\n", - " \n", - " table = res.compute()\n", - " return table\n", + "client = Client(n_workers=4, memory_limit=\"auto\")\n", + "client" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exploring the data \n", "\n", - "def lquery8():\n", - " splus_margin = lsdb.read_hipscat(margin_link)\n", - " splus_hips = lsdb.read_hipscat(\n", - " cat_link,\n", - " margin_cache=splus_margin,\n", - " cols=[\"ID\", \"RA\", \"DEC\", \"r_auto\", \"e_r_auto\"],\n", - " query = [\"r_auto < 15\"]\n", - " )\n", - " \n", - " res = splus_hips.cone_search(\n", - " 0.1,\n", - " 0.1,\n", - " 3600 * 20\n", - " )\n", - " \n", - " table = res.compute()\n", - " return table" + "Lets print the columns of the data and the first few rows." ] }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 68, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "['ID',\n", + " 'RA',\n", + " 'DEC',\n", + " 'A',\n", + " 'B',\n", + " 'BACKGROUND',\n", + " 'BACKGROUND_J0378',\n", + " 'BACKGROUND_J0395',\n", + " 'BACKGROUND_J0410',\n", + " 'BACKGROUND_J0430',\n", + " 'BACKGROUND_J0515',\n", + " 'BACKGROUND_J0660',\n", + " 'BACKGROUND_J0861',\n", + " 'BACKGROUND_g',\n", + " 'BACKGROUND_i',\n", + " 'BACKGROUND_r',\n", + " 'BACKGROUND_u',\n", + " 'BACKGROUND_z',\n", + " 'CLASS_STAR',\n", + " 'DET_ID_dual',\n", + " 'EBV_SCH',\n", + " 'ELLIPTICITY',\n", + " 'ELONGATION',\n", + " 'FLUX_RADIUS_20',\n", + " 'FLUX_RADIUS_50',\n", + " 'FLUX_RADIUS_70',\n", + " 'FLUX_RADIUS_90',\n", + " 'FWHM',\n", + " 'FWHM_J0378',\n", + " 'FWHM_J0395',\n", + " 'FWHM_J0410',\n", + " 'FWHM_J0430',\n", + " 'FWHM_J0515',\n", + " 'FWHM_J0660',\n", + " 'FWHM_J0861',\n", + " 'FWHM_g',\n", + " 'FWHM_i',\n", + " 'FWHM_n',\n", + " 'FWHM_n_J0378',\n", + " 'FWHM_n_J0395',\n", + " 'FWHM_n_J0410',\n", + " 'FWHM_n_J0430',\n", + " 'FWHM_n_J0515',\n", + " 'FWHM_n_J0660',\n", + " 'FWHM_n_J0861',\n", + " 'FWHM_n_g',\n", + " 'FWHM_n_i',\n", + " 'FWHM_n_r',\n", + " 'FWHM_n_u',\n", + " 'FWHM_n_z',\n", + " 'FWHM_r',\n", + " 'FWHM_u',\n", + " 'FWHM_z',\n", + " 'Field',\n", + " 'ID_DEC',\n", + " 'ID_RA',\n", + " 'ISOarea',\n", + " 'J0378_ID_dual',\n", + " 'J0378_PStotal',\n", + " 'J0378_aper_3',\n", + " 'J0378_aper_6',\n", + " 'J0378_auto',\n", + " 'J0378_iso',\n", + " 'J0378_petro',\n", + " 'J0395_ID_dual',\n", + " 'J0395_PStotal',\n", + " 'J0395_aper_3',\n", + " 'J0395_aper_6',\n", + " 'J0395_auto',\n", + " 'J0395_iso',\n", + " 'J0395_petro',\n", + " 'J0410_ID_dual',\n", + " 'J0410_PStotal',\n", + " 'J0410_aper_3',\n", + " 'J0410_aper_6',\n", + " 'J0410_auto',\n", + " 'J0410_iso',\n", + " 'J0410_petro',\n", + " 'J0430_ID_dual',\n", + " 'J0430_PStotal',\n", + " 'J0430_aper_3',\n", + " 'J0430_aper_6',\n", + " 'J0430_auto',\n", + " 'J0430_iso',\n", + " 'J0430_petro',\n", + " 'J0515_ID_dual',\n", + " 'J0515_PStotal',\n", + " 'J0515_aper_3',\n", + " 'J0515_aper_6',\n", + " 'J0515_auto',\n", + " 'J0515_iso',\n", + " 'J0515_petro',\n", + " 'J0660_ID_dual',\n", + " 'J0660_PStotal',\n", + " 'J0660_aper_3',\n", + " 'J0660_aper_6',\n", + " 'J0660_auto',\n", + " 'J0660_iso',\n", + " 'J0660_petro',\n", + " 'J0861_ID_dual',\n", + " 'J0861_PStotal',\n", + " 'J0861_aper_3',\n", + " 'J0861_aper_6',\n", + " 'J0861_auto',\n", + " 'J0861_iso',\n", + " 'J0861_petro',\n", + " 'KRON_RADIUS',\n", + " 'MU_MAX_INST',\n", + " 'MU_MAX_J0378',\n", + " 'MU_MAX_J0395',\n", + " 'MU_MAX_J0410',\n", + " 'MU_MAX_J0430',\n", + " 'MU_MAX_J0515',\n", + " 'MU_MAX_J0660',\n", + " 'MU_MAX_J0861',\n", + " 'MU_MAX_g',\n", + " 'MU_MAX_i',\n", + " 'MU_MAX_r',\n", + " 'MU_MAX_u',\n", + " 'MU_MAX_z',\n", + " 'MU_THRESHOLD_INST',\n", + " 'MU_THRESHOLD_J0378',\n", + " 'MU_THRESHOLD_J0395',\n", + " 'MU_THRESHOLD_J0410',\n", + " 'MU_THRESHOLD_J0430',\n", + " 'MU_THRESHOLD_J0515',\n", + " 'MU_THRESHOLD_J0660',\n", + " 'MU_THRESHOLD_J0861',\n", + " 'MU_THRESHOLD_g',\n", + " 'MU_THRESHOLD_i',\n", + " 'MU_THRESHOLD_r',\n", + " 'MU_THRESHOLD_u',\n", + " 'MU_THRESHOLD_z',\n", + " 'PETRO_RADIUS',\n", + " 'PHOT_ID_DEC_dual',\n", + " 'PHOT_ID_RA_dual',\n", + " 'PHOT_ID_dual',\n", + " 'SEX_FLAGS_DET',\n", + " 'SEX_FLAGS_J0378',\n", + " 'SEX_FLAGS_J0395',\n", + " 'SEX_FLAGS_J0410',\n", + " 'SEX_FLAGS_J0430',\n", + " 'SEX_FLAGS_J0515',\n", + " 'SEX_FLAGS_J0660',\n", + " 'SEX_FLAGS_J0861',\n", + " 'SEX_FLAGS_g',\n", + " 'SEX_FLAGS_i',\n", + " 'SEX_FLAGS_r',\n", + " 'SEX_FLAGS_u',\n", + " 'SEX_FLAGS_z',\n", + " 'SEX_NUMBER_DET',\n", + " 'SEX_NUMBER_J0378',\n", + " 'SEX_NUMBER_J0395',\n", + " 'SEX_NUMBER_J0410',\n", + " 'SEX_NUMBER_J0430',\n", + " 'SEX_NUMBER_J0515',\n", + " 'SEX_NUMBER_J0660',\n", + " 'SEX_NUMBER_J0861',\n", + " 'SEX_NUMBER_g',\n", + " 'SEX_NUMBER_i',\n", + " 'SEX_NUMBER_r',\n", + " 'SEX_NUMBER_u',\n", + " 'SEX_NUMBER_z',\n", + " 'THETA',\n", + " 'THRESHOLD',\n", + " 'THRESHOLD_J0378',\n", + " 'THRESHOLD_J0395',\n", + " 'THRESHOLD_J0410',\n", + " 'THRESHOLD_J0430',\n", + " 'THRESHOLD_J0515',\n", + " 'THRESHOLD_J0660',\n", + " 'THRESHOLD_J0861',\n", + " 'THRESHOLD_g',\n", + " 'THRESHOLD_i',\n", + " 'THRESHOLD_r',\n", + " 'THRESHOLD_u',\n", + " 'THRESHOLD_z',\n", + " 'X',\n", + " 'Y',\n", + " 'calib_strat',\n", + " 'e_J0378_PStotal',\n", + " 'e_J0378_aper_3',\n", + " 'e_J0378_aper_6',\n", + " 'e_J0378_auto',\n", + " 'e_J0378_iso',\n", + " 'e_J0378_petro',\n", + " 'e_J0395_PStotal',\n", + " 'e_J0395_aper_3',\n", + " 'e_J0395_aper_6',\n", + " 'e_J0395_auto',\n", + " 'e_J0395_iso',\n", + " 'e_J0395_petro',\n", + " 'e_J0410_PStotal',\n", + " 'e_J0410_aper_3',\n", + " 'e_J0410_aper_6',\n", + " 'e_J0410_auto',\n", + " 'e_J0410_iso',\n", + " 'e_J0410_petro',\n", + " 'e_J0430_PStotal',\n", + " 'e_J0430_aper_3',\n", + " 'e_J0430_aper_6',\n", + " 'e_J0430_auto',\n", + " 'e_J0430_iso',\n", + " 'e_J0430_petro',\n", + " 'e_J0515_PStotal',\n", + " 'e_J0515_aper_3',\n", + " 'e_J0515_aper_6',\n", + " 'e_J0515_auto',\n", + " 'e_J0515_iso',\n", + " 'e_J0515_petro',\n", + " 'e_J0660_PStotal',\n", + " 'e_J0660_aper_3',\n", + " 'e_J0660_aper_6',\n", + " 'e_J0660_auto',\n", + " 'e_J0660_iso',\n", + " 'e_J0660_petro',\n", + " 'e_J0861_PStotal',\n", + " 'e_J0861_aper_3',\n", + " 'e_J0861_aper_6',\n", + " 'e_J0861_auto',\n", + " 'e_J0861_iso',\n", + " 'e_J0861_petro',\n", + " 'e_g_PStotal',\n", + " 'e_g_aper_3',\n", + " 'e_g_aper_6',\n", + " 'e_g_auto',\n", + " 'e_g_iso',\n", + " 'e_g_petro',\n", + " 'e_i_PStotal',\n", + " 'e_i_aper_3',\n", + " 'e_i_aper_6',\n", + " 'e_i_auto',\n", + " 'e_i_iso',\n", + " 'e_i_petro',\n", + " 'e_r_PStotal',\n", + " 'e_r_aper_3',\n", + " 'e_r_aper_6',\n", + " 'e_r_auto',\n", + " 'e_r_iso',\n", + " 'e_r_petro',\n", + " 'e_u_PStotal',\n", + " 'e_u_aper_3',\n", + " 'e_u_aper_6',\n", + " 'e_u_auto',\n", + " 'e_u_iso',\n", + " 'e_u_petro',\n", + " 'e_z_PStotal',\n", + " 'e_z_aper_3',\n", + " 'e_z_aper_6',\n", + " 'e_z_auto',\n", + " 'e_z_iso',\n", + " 'e_z_petro',\n", + " 'g_ID_dual',\n", + " 'g_PStotal',\n", + " 'g_aper_3',\n", + " 'g_aper_6',\n", + " 'g_auto',\n", + " 'g_iso',\n", + " 'g_petro',\n", + " 'i_ID_dual',\n", + " 'i_PStotal',\n", + " 'i_aper_3',\n", + " 'i_aper_6',\n", + " 'i_auto',\n", + " 'i_iso',\n", + " 'i_petro',\n", + " 'r_ID_dual',\n", + " 'r_PStotal',\n", + " 'r_aper_3',\n", + " 'r_aper_6',\n", + " 'r_auto',\n", + " 'r_iso',\n", + " 'r_petro',\n", + " 's2n_DET_PStotal',\n", + " 's2n_DET_aper_3',\n", + " 's2n_DET_aper_6',\n", + " 's2n_DET_auto',\n", + " 's2n_DET_iso',\n", + " 's2n_DET_petro',\n", + " 's2n_J0378_PStotal',\n", + " 's2n_J0378_aper_3',\n", + " 's2n_J0378_aper_6',\n", + " 's2n_J0378_auto',\n", + " 's2n_J0378_iso',\n", + " 's2n_J0378_petro',\n", + " 's2n_J0395_PStotal',\n", + " 's2n_J0395_aper_3',\n", + " 's2n_J0395_aper_6',\n", + " 's2n_J0395_auto',\n", + " 's2n_J0395_iso',\n", + " 's2n_J0395_petro',\n", + " 's2n_J0410_PStotal',\n", + " 's2n_J0410_aper_3',\n", + " 's2n_J0410_aper_6',\n", + " 's2n_J0410_auto',\n", + " 's2n_J0410_iso',\n", + " 's2n_J0410_petro',\n", + " 's2n_J0430_PStotal',\n", + " 's2n_J0430_aper_3',\n", + " 's2n_J0430_aper_6',\n", + " 's2n_J0430_auto',\n", + " 's2n_J0430_iso',\n", + " 's2n_J0430_petro',\n", + " 's2n_J0515_PStotal',\n", + " 's2n_J0515_aper_3',\n", + " 's2n_J0515_aper_6',\n", + " 's2n_J0515_auto',\n", + " 's2n_J0515_iso',\n", + " 's2n_J0515_petro',\n", + " 's2n_J0660_PStotal',\n", + " 's2n_J0660_aper_3',\n", + " 's2n_J0660_aper_6',\n", + " 's2n_J0660_auto',\n", + " 's2n_J0660_iso',\n", + " 's2n_J0660_petro',\n", + " 's2n_J0861_PStotal',\n", + " 's2n_J0861_aper_3',\n", + " 's2n_J0861_aper_6',\n", + " 's2n_J0861_auto',\n", + " 's2n_J0861_iso',\n", + " 's2n_J0861_petro',\n", + " 's2n_g_PStotal',\n", + " 's2n_g_aper_3',\n", + " 's2n_g_aper_6',\n", + " 's2n_g_auto',\n", + " 's2n_g_iso',\n", + " 's2n_g_petro',\n", + " 's2n_i_PStotal',\n", + " 's2n_i_aper_3',\n", + " 's2n_i_aper_6',\n", + " 's2n_i_auto',\n", + " 's2n_i_iso',\n", + " 's2n_i_petro',\n", + " 's2n_r_PStotal',\n", + " 's2n_r_aper_3',\n", + " 's2n_r_aper_6',\n", + " 's2n_r_auto',\n", + " 's2n_r_iso',\n", + " 's2n_r_petro',\n", + " 's2n_u_PStotal',\n", + " 's2n_u_aper_3',\n", + " 's2n_u_aper_6',\n", + " 's2n_u_auto',\n", + " 's2n_u_iso',\n", + " 's2n_u_petro',\n", + " 's2n_z_PStotal',\n", + " 's2n_z_aper_3',\n", + " 's2n_z_aper_6',\n", + " 's2n_z_auto',\n", + " 's2n_z_iso',\n", + " 's2n_z_petro',\n", + " 'u_ID_dual',\n", + " 'u_PStotal',\n", + " 'u_aper_3',\n", + " 'u_aper_6',\n", + " 'u_auto',\n", + " 'u_iso',\n", + " 'u_petro',\n", + " 'z_ID_dual',\n", + " 'z_PStotal',\n", + " 'z_aper_3',\n", + " 'z_aper_6',\n", + " 'z_auto',\n", + " 'z_iso',\n", + " 'z_petro',\n", + " 'Norder',\n", + " 'Dir',\n", + " 'Npix']" + ] + }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import time\n", - "\n", - "def compare_functions(l_funcs, s_funcs, n):\n", - " for i in range(1, n+1):\n", - " # Construct the function names dynamically\n", - " l_func_name = f\"lsdb query {i}\"\n", - " s_func_name = f\"splus query {i}\"\n", - " \n", - " # Get the functions from the provided dictionaries (or use getattr if they're in a module)\n", - " l_func = l_funcs[l_func_name]\n", - " s_func = s_funcs[s_func_name]\n", - " \n", - " # Time and call the l_func\n", - " start_time = time.time()\n", - " l_data = l_func()\n", - " l_duration = time.time() - start_time\n", - " l_size = len(l_data) # Adjust this line depending on how the data size is determined\n", + "splus_hips = lsdb.read_hipscat(cat_link)\n", + "list(splus_hips.columns)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDRADECABBACKGROUNDBACKGROUND_J0378BACKGROUND_J0395BACKGROUND_J0410BACKGROUND_J0430...z_ID_dualz_PStotalz_aper_3z_aper_6z_autoz_isoz_petroNorderDirNpix
_hipscat_index
17960009728DR4_3_STRIPE82-0065_002248645.0045930.0061210.0007350.0006910.006137-0.000024-0.0011260.000159-0.001306...iDR4_3_STRIPE82-0065_dual_002248624.35306924.66947724.11281499.00000021.77354899.000000000
34741420032DR4_3_STRIPE82-0065_003083444.9953600.0059610.0006960.000637-0.010784-0.000893-0.002218-0.002334-0.003556...iDR4_3_STRIPE82-0065_dual_003083499.00000099.00000099.00000099.00000023.92312899.000000000
116719091712DR4_3_STRIPE82-0066_000004445.0049590.0200760.0003810.000193-0.0009070.0014010.0021040.0036110.003085...iDR4_3_STRIPE82-0066_dual_000004413.64454713.94285613.67313013.68436514.16649513.730668000
118560391168DR4_3_STRIPE82-0066_000006545.0043050.0210580.0004670.000328-0.0014000.0015110.0020800.0036100.003364...iDR4_3_STRIPE82-0066_dual_000006516.17189016.47020016.17221114.32064416.06783514.785735000
226395947008DR4_3_STRIPE82-0066_000006645.0043230.0262510.0001340.000078-0.004885-0.000505-0.001117-0.0015400.000583...iDR4_3_STRIPE82-0066_dual_000006621.34007621.63838622.20061323.08605422.60215221.080063000
265293922304DR4_3_STRIPE82-0066_000019145.0031190.0331590.0000780.000075-0.001825-0.0001690.0002930.0003980.000090...iDR4_3_STRIPE82-0066_dual_000019121.30273821.60104821.14264321.41023122.87374121.151049000
272013197312DR4_3_STRIPE82-0066_000025645.0026690.0350060.0002460.000194-0.0010880.0002020.0006730.0019150.000283...iDR4_3_STRIPE82-0066_dual_000025620.05493520.35324520.23088119.81267420.13762719.916756000
317743693824DR4_3_STRIPE82-0066_000011645.0189020.0298320.0002550.000144-0.003727-0.000867-0.001326-0.001959-0.001836...iDR4_3_STRIPE82-0066_dual_000011620.92069221.21900220.70852321.01131221.08166121.724323000
339080118272DR4_3_STRIPE82-0066_000021745.0189780.0341760.0001700.000103-0.0007940.0002260.000020-0.0000770.002091...iDR4_3_STRIPE82-0066_dual_000021720.88337121.18168120.28149220.25428621.60194420.227455000
350811586560DR4_3_STRIPE82-0066_000018045.0334530.0328880.0001060.000065-0.003834-0.000069-0.0004260.000972-0.000884...iDR4_3_STRIPE82-0066_dual_000018022.50717722.80548721.06231521.94145823.35566721.907001000
374974971904DR4_3_STRIPE82-0066_000035445.0397130.0393050.0001080.0000650.0012880.0007980.0008650.0031100.001169...iDR4_3_STRIPE82-0066_dual_000035421.74510022.04340999.00000099.00000023.73514722.870132000
376413618176DR4_3_STRIPE82-0066_000035945.0367780.0394180.0001460.0001420.0023030.0006610.0008740.0035460.001513...iDR4_3_STRIPE82-0066_dual_000035920.39804820.69635820.61910820.47217220.76494020.649361000
379097972736DR4_3_STRIPE82-0066_000021645.0291700.0342210.0001210.000048-0.0033040.000211-0.0002170.000539-0.000258...iDR4_3_STRIPE82-0066_dual_000021622.16142822.45973823.91275824.48472424.48472423.095573000
404553203712DR4_3_STRIPE82-0066_000040645.0304480.0411260.0001740.0001070.0016230.0006160.0014980.0028790.003282...iDR4_3_STRIPE82-0066_dual_000040621.73176022.03006921.12874621.17424822.28751821.030199000
413784866816DR4_3_STRIPE82-0066_000013645.0133020.0304950.0002000.000177-0.003387-0.000658-0.001392-0.002072-0.000434...iDR4_3_STRIPE82-0066_dual_000013620.80257021.10088020.10228320.41978821.04962320.137424000
414195908608DR4_3_STRIPE82-0066_000013445.0123040.0303970.0001940.000097-0.003389-0.000635-0.001226-0.002009-0.000961...iDR4_3_STRIPE82-0066_dual_000013421.34646021.64477021.03297821.12719921.98126220.326939000
442079641600DR4_3_STRIPE82-0066_000033345.0128950.0386520.0000780.0000740.0011390.0005460.0008300.0030120.003089...iDR4_3_STRIPE82-0066_dual_000033322.46732522.76563599.00000099.00000022.63932299.000000000
486228885504DR4_3_STRIPE82-0066_000041545.0251710.0413520.0002050.0001410.0013370.0007450.0014060.0028340.003441...iDR4_3_STRIPE82-0066_dual_000041521.54655621.84486621.34455322.12732921.64098422.335365000
488011464704DR4_3_STRIPE82-0066_000044945.0239730.0424960.0001810.0001630.0014610.0005800.0014430.0026350.003342...iDR4_3_STRIPE82-0066_dual_000044919.76623320.06454320.06990420.11535320.00616819.958126000
491970887680DR4_3_STRIPE82-0066_000042545.0174590.0415960.0001130.0000680.0020570.0006100.0010350.0026800.004225...iDR4_3_STRIPE82-0066_dual_000042521.62858021.92688921.01354021.62500422.24419021.929218000
\n", + "

20 rows × 368 columns

\n", + "
" + ], + "text/plain": [ + " ID RA DEC A \\\n", + "_hipscat_index \n", + "17960009728 DR4_3_STRIPE82-0065_0022486 45.004593 0.006121 0.000735 \n", + "34741420032 DR4_3_STRIPE82-0065_0030834 44.995360 0.005961 0.000696 \n", + "116719091712 DR4_3_STRIPE82-0066_0000044 45.004959 0.020076 0.000381 \n", + "118560391168 DR4_3_STRIPE82-0066_0000065 45.004305 0.021058 0.000467 \n", + "226395947008 DR4_3_STRIPE82-0066_0000066 45.004323 0.026251 0.000134 \n", + "265293922304 DR4_3_STRIPE82-0066_0000191 45.003119 0.033159 0.000078 \n", + "272013197312 DR4_3_STRIPE82-0066_0000256 45.002669 0.035006 0.000246 \n", + "317743693824 DR4_3_STRIPE82-0066_0000116 45.018902 0.029832 0.000255 \n", + "339080118272 DR4_3_STRIPE82-0066_0000217 45.018978 0.034176 0.000170 \n", + "350811586560 DR4_3_STRIPE82-0066_0000180 45.033453 0.032888 0.000106 \n", + "374974971904 DR4_3_STRIPE82-0066_0000354 45.039713 0.039305 0.000108 \n", + "376413618176 DR4_3_STRIPE82-0066_0000359 45.036778 0.039418 0.000146 \n", + "379097972736 DR4_3_STRIPE82-0066_0000216 45.029170 0.034221 0.000121 \n", + "404553203712 DR4_3_STRIPE82-0066_0000406 45.030448 0.041126 0.000174 \n", + "413784866816 DR4_3_STRIPE82-0066_0000136 45.013302 0.030495 0.000200 \n", + "414195908608 DR4_3_STRIPE82-0066_0000134 45.012304 0.030397 0.000194 \n", + "442079641600 DR4_3_STRIPE82-0066_0000333 45.012895 0.038652 0.000078 \n", + "486228885504 DR4_3_STRIPE82-0066_0000415 45.025171 0.041352 0.000205 \n", + "488011464704 DR4_3_STRIPE82-0066_0000449 45.023973 0.042496 0.000181 \n", + "491970887680 DR4_3_STRIPE82-0066_0000425 45.017459 0.041596 0.000113 \n", + "\n", + " B BACKGROUND BACKGROUND_J0378 BACKGROUND_J0395 \\\n", + "_hipscat_index \n", + "17960009728 0.000691 0.006137 -0.000024 -0.001126 \n", + "34741420032 0.000637 -0.010784 -0.000893 -0.002218 \n", + "116719091712 0.000193 -0.000907 0.001401 0.002104 \n", + "118560391168 0.000328 -0.001400 0.001511 0.002080 \n", + "226395947008 0.000078 -0.004885 -0.000505 -0.001117 \n", + "265293922304 0.000075 -0.001825 -0.000169 0.000293 \n", + "272013197312 0.000194 -0.001088 0.000202 0.000673 \n", + "317743693824 0.000144 -0.003727 -0.000867 -0.001326 \n", + "339080118272 0.000103 -0.000794 0.000226 0.000020 \n", + "350811586560 0.000065 -0.003834 -0.000069 -0.000426 \n", + "374974971904 0.000065 0.001288 0.000798 0.000865 \n", + "376413618176 0.000142 0.002303 0.000661 0.000874 \n", + "379097972736 0.000048 -0.003304 0.000211 -0.000217 \n", + "404553203712 0.000107 0.001623 0.000616 0.001498 \n", + "413784866816 0.000177 -0.003387 -0.000658 -0.001392 \n", + "414195908608 0.000097 -0.003389 -0.000635 -0.001226 \n", + "442079641600 0.000074 0.001139 0.000546 0.000830 \n", + "486228885504 0.000141 0.001337 0.000745 0.001406 \n", + "488011464704 0.000163 0.001461 0.000580 0.001443 \n", + "491970887680 0.000068 0.002057 0.000610 0.001035 \n", + "\n", + " BACKGROUND_J0410 BACKGROUND_J0430 ... \\\n", + "_hipscat_index ... \n", + "17960009728 0.000159 -0.001306 ... \n", + "34741420032 -0.002334 -0.003556 ... \n", + "116719091712 0.003611 0.003085 ... \n", + "118560391168 0.003610 0.003364 ... \n", + "226395947008 -0.001540 0.000583 ... \n", + "265293922304 0.000398 0.000090 ... \n", + "272013197312 0.001915 0.000283 ... \n", + "317743693824 -0.001959 -0.001836 ... \n", + "339080118272 -0.000077 0.002091 ... \n", + "350811586560 0.000972 -0.000884 ... \n", + "374974971904 0.003110 0.001169 ... \n", + "376413618176 0.003546 0.001513 ... \n", + "379097972736 0.000539 -0.000258 ... \n", + "404553203712 0.002879 0.003282 ... \n", + "413784866816 -0.002072 -0.000434 ... \n", + "414195908608 -0.002009 -0.000961 ... \n", + "442079641600 0.003012 0.003089 ... \n", + "486228885504 0.002834 0.003441 ... \n", + "488011464704 0.002635 0.003342 ... \n", + "491970887680 0.002680 0.004225 ... \n", + "\n", + " z_ID_dual z_PStotal z_aper_3 \\\n", + "_hipscat_index \n", + "17960009728 iDR4_3_STRIPE82-0065_dual_0022486 24.353069 24.669477 \n", + "34741420032 iDR4_3_STRIPE82-0065_dual_0030834 99.000000 99.000000 \n", + "116719091712 iDR4_3_STRIPE82-0066_dual_0000044 13.644547 13.942856 \n", + "118560391168 iDR4_3_STRIPE82-0066_dual_0000065 16.171890 16.470200 \n", + "226395947008 iDR4_3_STRIPE82-0066_dual_0000066 21.340076 21.638386 \n", + "265293922304 iDR4_3_STRIPE82-0066_dual_0000191 21.302738 21.601048 \n", + "272013197312 iDR4_3_STRIPE82-0066_dual_0000256 20.054935 20.353245 \n", + "317743693824 iDR4_3_STRIPE82-0066_dual_0000116 20.920692 21.219002 \n", + "339080118272 iDR4_3_STRIPE82-0066_dual_0000217 20.883371 21.181681 \n", + "350811586560 iDR4_3_STRIPE82-0066_dual_0000180 22.507177 22.805487 \n", + "374974971904 iDR4_3_STRIPE82-0066_dual_0000354 21.745100 22.043409 \n", + "376413618176 iDR4_3_STRIPE82-0066_dual_0000359 20.398048 20.696358 \n", + "379097972736 iDR4_3_STRIPE82-0066_dual_0000216 22.161428 22.459738 \n", + "404553203712 iDR4_3_STRIPE82-0066_dual_0000406 21.731760 22.030069 \n", + "413784866816 iDR4_3_STRIPE82-0066_dual_0000136 20.802570 21.100880 \n", + "414195908608 iDR4_3_STRIPE82-0066_dual_0000134 21.346460 21.644770 \n", + "442079641600 iDR4_3_STRIPE82-0066_dual_0000333 22.467325 22.765635 \n", + "486228885504 iDR4_3_STRIPE82-0066_dual_0000415 21.546556 21.844866 \n", + "488011464704 iDR4_3_STRIPE82-0066_dual_0000449 19.766233 20.064543 \n", + "491970887680 iDR4_3_STRIPE82-0066_dual_0000425 21.628580 21.926889 \n", + "\n", + " z_aper_6 z_auto z_iso z_petro Norder Dir Npix \n", + "_hipscat_index \n", + "17960009728 24.112814 99.000000 21.773548 99.000000 0 0 0 \n", + "34741420032 99.000000 99.000000 23.923128 99.000000 0 0 0 \n", + "116719091712 13.673130 13.684365 14.166495 13.730668 0 0 0 \n", + "118560391168 16.172211 14.320644 16.067835 14.785735 0 0 0 \n", + "226395947008 22.200613 23.086054 22.602152 21.080063 0 0 0 \n", + "265293922304 21.142643 21.410231 22.873741 21.151049 0 0 0 \n", + "272013197312 20.230881 19.812674 20.137627 19.916756 0 0 0 \n", + "317743693824 20.708523 21.011312 21.081661 21.724323 0 0 0 \n", + "339080118272 20.281492 20.254286 21.601944 20.227455 0 0 0 \n", + "350811586560 21.062315 21.941458 23.355667 21.907001 0 0 0 \n", + "374974971904 99.000000 99.000000 23.735147 22.870132 0 0 0 \n", + "376413618176 20.619108 20.472172 20.764940 20.649361 0 0 0 \n", + "379097972736 23.912758 24.484724 24.484724 23.095573 0 0 0 \n", + "404553203712 21.128746 21.174248 22.287518 21.030199 0 0 0 \n", + "413784866816 20.102283 20.419788 21.049623 20.137424 0 0 0 \n", + "414195908608 21.032978 21.127199 21.981262 20.326939 0 0 0 \n", + "442079641600 99.000000 99.000000 22.639322 99.000000 0 0 0 \n", + "486228885504 21.344553 22.127329 21.640984 22.335365 0 0 0 \n", + "488011464704 20.069904 20.115353 20.006168 19.958126 0 0 0 \n", + "491970887680 21.013540 21.625004 22.244190 21.929218 0 0 0 \n", + "\n", + "[20 rows x 368 columns]" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## Note that this can take a while to run because \n", + "# lsdb is downloading a full catalog from the \n", + "# HiPSCat server and then printing the first 20 rows\n", + "splus_hips.head(20)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Now here is where lsdb shines\n", "\n", - " # Time and call the s_func\n", - " start_time = time.time()\n", - " s_data = s_func(conn)\n", - " s_duration = time.time() - start_time\n", - " s_size = len(s_data) # Adjust this line depending on how the data size is determined\n", - " \n", - " # Compare sizes and print results\n", - " print(f\"Comparison of {l_func_name} and {s_func_name}:\")\n", - " print(f\"Time taken by {l_func_name}: {l_duration:.4f} seconds\")\n", - " print(f\"Size of data from {l_func_name}: {l_size}\")\n", - " print(f\"Time taken by {s_func_name}: {s_duration:.4f} seconds\")\n", - " print(f\"Size of data from {s_func_name}: {s_size}\")\n", - " print(f\"Are the sizes equal? {'Yes' if l_size == s_size else 'No'}\\n\")\n" + "Lets do a cone search around the coordinates of the galaxy and plot the results." ] }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 75, "metadata": {}, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Comparison of lsdb query 1 and splus query 1:\n", - "Time taken by lsdb query 1: 20.0564 seconds\n", - "Size of data from lsdb query 1: 619\n", - "Time taken by splus query 1: 55.9220 seconds\n", - "Size of data from splus query 1: 619\n", - "Are the sizes equal? Yes\n", - "\n", - "Comparison of lsdb query 2 and splus query 2:\n", - "Time taken by lsdb query 2: 3.9362 seconds\n", - "Size of data from lsdb query 2: 619\n", - "Time taken by splus query 2: 55.8640 seconds\n", - "Size of data from splus query 2: 619\n", - "Are the sizes equal? Yes\n", - "\n", - "Comparison of lsdb query 3 and splus query 3:\n", - "Time taken by lsdb query 3: 20.1758 seconds\n", - "Size of data from lsdb query 3: 397692\n", - "Time taken by splus query 3: 89.8850 seconds\n", - "Size of data from splus query 3: 397704\n", - "Are the sizes equal? No\n", - "\n", - "Comparison of lsdb query 4 and splus query 4:\n", - "Time taken by lsdb query 4: 3.7042 seconds\n", - "Size of data from lsdb query 4: 397692\n", - "Time taken by splus query 4: 63.6690 seconds\n", - "Size of data from splus query 4: 397704\n", - "Are the sizes equal? No\n", - "\n", - "Comparison of lsdb query 5 and splus query 5:\n", - "Time taken by lsdb query 5: 0.6604 seconds\n", - "Size of data from lsdb query 5: 4527\n", - "Time taken by splus query 5: 35.6202 seconds\n", - "Size of data from splus query 5: 4527\n", - "Are the sizes equal? Yes\n", - "\n", - "Comparison of lsdb query 6 and splus query 6:\n", - "Time taken by lsdb query 6: 23.9238 seconds\n", - "Size of data from lsdb query 6: 3075320\n", - "Time taken by splus query 6: 83.2587 seconds\n", - "Size of data from splus query 6: 800000\n", - "Are the sizes equal? No\n", - "\n", - "Comparison of lsdb query 7 and splus query 7:\n", - "Time taken by lsdb query 7: 4.5558 seconds\n", - "Size of data from lsdb query 7: 3075320\n", - "Time taken by splus query 7: 35.9408 seconds\n", - "Size of data from splus query 7: 800000\n", - "Are the sizes equal? No\n", - "\n", - "Comparison of lsdb query 8 and splus query 8:\n", - "Time taken by lsdb query 8: 0.8417 seconds\n", - "Size of data from lsdb query 8: 33616\n", - "Time taken by splus query 8: 35.9334 seconds\n", - "Size of data from splus query 8: 33616\n", - "Are the sizes equal? Yes\n", - "\n" + "2024-05-15 22:33:38,662 - distributed.worker.memory - WARNING - Worker is at 86% memory usage. Pausing worker. Process memory: 3.44 GiB -- Worker memory limit: 4.00 GiB\n", + "2024-05-15 22:33:38,889 - distributed.client - WARNING - Couldn't gather 1 keys, rescheduling (('repartitiontofewer-5fc1f77d370674b2be0c3ff79cfff2c5', 0),)\n", + "2024-05-15 22:34:12,830 - distributed.client - WARNING - Couldn't gather 1 keys, rescheduling (('repartitiontofewer-5fc1f77d370674b2be0c3ff79cfff2c5', 0),)\n", + "2024-05-15 22:34:48,880 - distributed.worker.memory - WARNING - Worker is at 89% memory usage. Pausing worker. Process memory: 3.57 GiB -- Worker memory limit: 4.00 GiB\n", + "2024-05-15 22:34:48,881 - distributed.worker.memory - WARNING - Unmanaged memory use is high. This may indicate a memory leak or the memory may not be released to the OS; see https://distributed.dask.org/en/latest/worker-memory.html#memory-not-released-back-to-the-os for more information. -- Unmanaged memory: 3.57 GiB -- Worker memory limit: 4.00 GiB\n", + "2024-05-15 22:34:49,305 - distributed.worker.memory - WARNING - Worker is at 26% memory usage. Resuming worker. Process memory: 1.05 GiB -- Worker memory limit: 4.00 GiB\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-05-15 22:33:38,778 - distributed.nanny.memory - WARNING - Worker tcp://127.0.0.1:55472 (pid=9639) exceeded 95% memory budget. Restarting...\n", + "2024-05-15 22:33:38,868 - distributed.scheduler - WARNING - Removing worker 'tcp://127.0.0.1:55472' caused the cluster to lose already computed task(s), which will be recomputed elsewhere: {('repartitiontofewer-5fc1f77d370674b2be0c3ff79cfff2c5', 0)} (stimulus_id='handle-worker-cleanup-1715823218.868317')\n", + "2024-05-15 22:33:38,885 - distributed.scheduler - ERROR - Couldn't gather keys: {('repartitiontofewer-5fc1f77d370674b2be0c3ff79cfff2c5', 0): 'waiting'}\n", + "2024-05-15 22:33:38,890 - distributed.nanny - WARNING - Restarting worker\n", + "2024-05-15 22:34:12,669 - distributed.nanny.memory - WARNING - Worker tcp://127.0.0.1:55471 (pid=9637) exceeded 95% memory budget. Restarting...\n", + "2024-05-15 22:34:12,812 - distributed.scheduler - WARNING - Removing worker 'tcp://127.0.0.1:55471' caused the cluster to lose already computed task(s), which will be recomputed elsewhere: {('repartitiontofewer-5fc1f77d370674b2be0c3ff79cfff2c5', 0)} (stimulus_id='handle-worker-cleanup-1715823252.812156')\n", + "2024-05-15 22:34:12,826 - distributed.scheduler - ERROR - Couldn't gather keys: {('repartitiontofewer-5fc1f77d370674b2be0c3ff79cfff2c5', 0): 'waiting'}\n", + "2024-05-15 22:34:12,832 - distributed.nanny - WARNING - Restarting worker\n" ] } ], "source": [ - "l_queries = {\n", - " \"lsdb query 1\": lquery1,\n", - " \"lsdb query 2\": lquery2,\n", - " \"lsdb query 3\": lquery3,\n", - " \"lsdb query 4\": lquery4,\n", - " \"lsdb query 5\": lquery5,\n", - " \"lsdb query 6\": lquery6,\n", - " \"lsdb query 7\": lquery7,\n", - " \"lsdb query 8\": lquery8\n", - "}\n", + "splus_margin = lsdb.read_hipscat(margin_link)\n", + "splus_hips = lsdb.read_hipscat(\n", + " cat_link,\n", + " margin_cache=splus_margin,\n", + " cols = [\"ID\", \"RA\", \"DEC\", # Try messing with the columns\n", + " \"r_auto\", \"e_r_auto\",\n", + " \"g_auto\", \"e_g_auto\",\n", + " \"i_auto\", \"e_i_auto\",\n", + " \"z_auto\", \"e_z_auto\",\n", + " \"u_auto\", \"e_u_auto\",\n", + " \"J0378_auto\", \"e_J0378_auto\",\n", + " \"J0395_auto\", \"e_J0395_auto\",\n", + " \"J0410_auto\", \"e_J0410_auto\",\n", + " \"J0430_auto\", \"e_J0430_auto\",\n", + " \"J0515_auto\", \"e_J0515_auto\",\n", + " \"J0660_auto\", \"e_J0660_auto\",\n", + " \"J0861_auto\", \"e_J0861_auto\",\n", + " ],\n", + " query=[\"r_auto < 20\"] # Try messing with this query\n", + ")\n", "\n", - "s_queries = {\n", - " \"splus query 1\": squery1,\n", - " \"splus query 2\": squery2,\n", - " \"splus query 3\": squery3,\n", - " \"splus query 4\": squery4,\n", - " \"splus query 5\": squery5,\n", - " \"splus query 6\": squery6,\n", - " \"splus query 7\": squery7,\n", - " \"splus query 8\": squery8\n", - "}\n", + "res = splus_hips.cone_search(\n", + " 0.1,\n", + " 0.1,\n", + " 100 * 3600\n", + ")\n", "\n", - "compare_functions(l_queries, s_queries, 8)" + "table = res.compute()" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + "
IDRADECr_autoe_r_autog_autoe_g_autoi_autoe_i_autoz_auto...J0410_autoe_J0410_autoJ0430_autoe_J0430_autoJ0515_autoe_J0515_autoJ0660_autoe_J0660_autoJ0861_autoe_J0861_auto
0DR4_3_STRIPE82-0066_000004445.0049590.02007614.1599010.00139515.0680980.00220213.8461670.00133113.684365...15.9864310.38796716.7880445.88565716.3864333.07981816.3854240.90600813.8870400.729198
1DR4_3_STRIPE82-0066_000006545.0043050.02105815.0055940.62919115.9792920.84000314.5624290.55279814.320644...99.00000099.00000099.00000099.00000099.00000099.00000017.2972666.14339115.2256535.427844
2DR4_3_STRIPE82-0066_000056244.9638750.04362318.1806550.01628419.0542260.02766417.8689000.01762017.746120...19.7668860.17966919.5018180.13632618.8422740.06778218.0948830.02029117.6088500.041634
3DR4_3_STRIPE82-0066_000119044.9982930.06635719.5195810.04632920.0373630.05865819.4169410.06222219.710333...20.3312020.27317620.1872620.23238519.7637180.14099019.6345210.06979319.2141190.161537
4DR4_3_STRIPE82-0066_000095145.0482410.04827015.0403780.00216915.8578190.00332114.7131200.00204814.542634...16.5555880.01398116.3817370.01197915.6641830.00671614.9307610.00258214.5755990.004178
..................................................................
22550DR4_3_STRIPE82-0107_0066498314.983428-0.02001618.5072290.02771419.7774070.06192017.3391930.01450816.804287...20.2705290.33899321.6306061.07657919.8620910.18789418.0722980.02067316.9452950.020787
22551DR4_3_STRIPE82-0107_0059542315.003648-0.00677119.1815070.04663420.6501600.12537517.8248860.02055117.253719...21.2144450.74282999.00000099.00000020.2257770.24204818.8249130.03658517.4270060.029403
22552DR4_3_STRIPE82-0107_0063040315.005031-0.00576519.2826080.05736219.9026470.07237419.2138650.07935519.130104...19.8778800.24865619.6691270.18786419.5411050.14744719.3079260.06243818.9381710.127325
22553DR4_3_STRIPE82-0107_0057005314.990403-0.00837117.7535100.01326419.0859680.03027017.0702970.01037616.785967...19.9753680.22568221.1361120.59375318.9466500.07243817.4811990.01178816.8615070.017233
22554DR4_3_STRIPE82-0107_0061315314.999048-0.00256219.6818390.06183120.5560280.09827719.1762100.05743719.240551...21.5314240.84564921.0508420.49632520.4350240.24900219.5594010.05951919.1010740.109786
\n", + "

11355394 rows × 27 columns

\n", + "
" + ], + "text/plain": [ + " ID RA DEC r_auto e_r_auto \\\n", + "0 DR4_3_STRIPE82-0066_0000044 45.004959 0.020076 14.159901 0.001395 \n", + "1 DR4_3_STRIPE82-0066_0000065 45.004305 0.021058 15.005594 0.629191 \n", + "2 DR4_3_STRIPE82-0066_0000562 44.963875 0.043623 18.180655 0.016284 \n", + "3 DR4_3_STRIPE82-0066_0001190 44.998293 0.066357 19.519581 0.046329 \n", + "4 DR4_3_STRIPE82-0066_0000951 45.048241 0.048270 15.040378 0.002169 \n", + "... ... ... ... ... ... \n", + "22550 DR4_3_STRIPE82-0107_0066498 314.983428 -0.020016 18.507229 0.027714 \n", + "22551 DR4_3_STRIPE82-0107_0059542 315.003648 -0.006771 19.181507 0.046634 \n", + "22552 DR4_3_STRIPE82-0107_0063040 315.005031 -0.005765 19.282608 0.057362 \n", + "22553 DR4_3_STRIPE82-0107_0057005 314.990403 -0.008371 17.753510 0.013264 \n", + "22554 DR4_3_STRIPE82-0107_0061315 314.999048 -0.002562 19.681839 0.061831 \n", + "\n", + " g_auto e_g_auto i_auto e_i_auto z_auto ... J0410_auto \\\n", + "0 15.068098 0.002202 13.846167 0.001331 13.684365 ... 15.986431 \n", + "1 15.979292 0.840003 14.562429 0.552798 14.320644 ... 99.000000 \n", + "2 19.054226 0.027664 17.868900 0.017620 17.746120 ... 19.766886 \n", + "3 20.037363 0.058658 19.416941 0.062222 19.710333 ... 20.331202 \n", + "4 15.857819 0.003321 14.713120 0.002048 14.542634 ... 16.555588 \n", + "... ... ... ... ... ... ... ... \n", + "22550 19.777407 0.061920 17.339193 0.014508 16.804287 ... 20.270529 \n", + "22551 20.650160 0.125375 17.824886 0.020551 17.253719 ... 21.214445 \n", + "22552 19.902647 0.072374 19.213865 0.079355 19.130104 ... 19.877880 \n", + "22553 19.085968 0.030270 17.070297 0.010376 16.785967 ... 19.975368 \n", + "22554 20.556028 0.098277 19.176210 0.057437 19.240551 ... 21.531424 \n", + "\n", + " e_J0410_auto J0430_auto e_J0430_auto J0515_auto e_J0515_auto \\\n", + "0 0.387967 16.788044 5.885657 16.386433 3.079818 \n", + "1 99.000000 99.000000 99.000000 99.000000 99.000000 \n", + "2 0.179669 19.501818 0.136326 18.842274 0.067782 \n", + "3 0.273176 20.187262 0.232385 19.763718 0.140990 \n", + "4 0.013981 16.381737 0.011979 15.664183 0.006716 \n", + "... ... ... ... ... ... \n", + "22550 0.338993 21.630606 1.076579 19.862091 0.187894 \n", + "22551 0.742829 99.000000 99.000000 20.225777 0.242048 \n", + "22552 0.248656 19.669127 0.187864 19.541105 0.147447 \n", + "22553 0.225682 21.136112 0.593753 18.946650 0.072438 \n", + "22554 0.845649 21.050842 0.496325 20.435024 0.249002 \n", + "\n", + " J0660_auto e_J0660_auto J0861_auto e_J0861_auto \n", + "0 16.385424 0.906008 13.887040 0.729198 \n", + "1 17.297266 6.143391 15.225653 5.427844 \n", + "2 18.094883 0.020291 17.608850 0.041634 \n", + "3 19.634521 0.069793 19.214119 0.161537 \n", + "4 14.930761 0.002582 14.575599 0.004178 \n", + "... ... ... ... ... \n", + "22550 18.072298 0.020673 16.945295 0.020787 \n", + "22551 18.824913 0.036585 17.427006 0.029403 \n", + "22552 19.307926 0.062438 18.938171 0.127325 \n", + "22553 17.481199 0.011788 16.861507 0.017233 \n", + "22554 19.559401 0.059519 19.101074 0.109786 \n", + "\n", + "[11355394 rows x 27 columns]" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Explore the HiPSCat catalogs and plot sky maps\n", - "from hipscat.catalog import Catalog\n", - "from hipscat.inspection import plot_pixels" + "table" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 63, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "text/html": [ + "
\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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDRADECr_autoe_r_autog_autoe_g_autoi_autoe_i_autoz_autoe_z_autou_autoe_u_auto
0DR4_3_STRIPE82-0003_00000851.554405-1.37103418.42962613.66453819.18516211.47321317.8755864.67982616.4773583.99647799.00000099.000000
1DR4_3_STRIPE82-0003_00004381.595159-1.35843018.0008140.01602818.5264740.02178617.8031160.01796317.7415290.02950019.8957120.108585
2DR4_3_STRIPE82-0003_00001341.256873-1.37069018.2685620.01993719.5372850.05125616.8289470.00820916.2302530.00816899.00000099.000000
3DR4_3_STRIPE82-0003_00003071.223286-1.36122319.9662270.11774521.5898630.44150419.4710770.10582319.0394480.12871521.8284260.842669
4DR4_3_STRIPE82-0003_00002461.380513-1.36513419.2015250.03995920.3341100.09318918.6637590.03432918.3108040.04438821.9185500.600922
..........................................
7669DR4_3_STRIPE82-0170_0042098358.4757511.40812619.6849800.07476720.7387120.16215119.9952600.14712119.7334710.21609121.0304220.303724
7670DR4_3_STRIPE82-0170_0043705358.3747941.39384515.8884360.00346616.4541490.00487115.7098530.00358115.6859490.00518118.2106650.021596
7671DR4_3_STRIPE82-0170_0043676358.3859981.39791814.8696380.00201115.3904370.00277114.7137710.00201114.6895050.00266317.0876620.010229
7672DR4_3_STRIPE82-0170_0043514358.3589271.40127519.1203540.02855519.9446320.04943618.8170220.03118718.7435050.05243122.3295440.584440
7673DR4_3_STRIPE82-0170_0040903358.3985571.40599219.5475710.04496720.1155830.06295219.2155740.04885819.2156560.08933520.6954880.147480
\n", + "

40256 rows × 13 columns

\n", + "
" + ], "text/plain": [ - "
" + " ID RA DEC r_auto e_r_auto \\\n", + "0 DR4_3_STRIPE82-0003_0000085 1.554405 -1.371034 18.429626 13.664538 \n", + "1 DR4_3_STRIPE82-0003_0000438 1.595159 -1.358430 18.000814 0.016028 \n", + "2 DR4_3_STRIPE82-0003_0000134 1.256873 -1.370690 18.268562 0.019937 \n", + "3 DR4_3_STRIPE82-0003_0000307 1.223286 -1.361223 19.966227 0.117745 \n", + "4 DR4_3_STRIPE82-0003_0000246 1.380513 -1.365134 19.201525 0.039959 \n", + "... ... ... ... ... ... \n", + "7669 DR4_3_STRIPE82-0170_0042098 358.475751 1.408126 19.684980 0.074767 \n", + "7670 DR4_3_STRIPE82-0170_0043705 358.374794 1.393845 15.888436 0.003466 \n", + "7671 DR4_3_STRIPE82-0170_0043676 358.385998 1.397918 14.869638 0.002011 \n", + "7672 DR4_3_STRIPE82-0170_0043514 358.358927 1.401275 19.120354 0.028555 \n", + "7673 DR4_3_STRIPE82-0170_0040903 358.398557 1.405992 19.547571 0.044967 \n", + "\n", + " g_auto e_g_auto i_auto e_i_auto z_auto e_z_auto \\\n", + "0 19.185162 11.473213 17.875586 4.679826 16.477358 3.996477 \n", + "1 18.526474 0.021786 17.803116 0.017963 17.741529 0.029500 \n", + "2 19.537285 0.051256 16.828947 0.008209 16.230253 0.008168 \n", + "3 21.589863 0.441504 19.471077 0.105823 19.039448 0.128715 \n", + "4 20.334110 0.093189 18.663759 0.034329 18.310804 0.044388 \n", + "... ... ... ... ... ... ... \n", + "7669 20.738712 0.162151 19.995260 0.147121 19.733471 0.216091 \n", + "7670 16.454149 0.004871 15.709853 0.003581 15.685949 0.005181 \n", + "7671 15.390437 0.002771 14.713771 0.002011 14.689505 0.002663 \n", + "7672 19.944632 0.049436 18.817022 0.031187 18.743505 0.052431 \n", + "7673 20.115583 0.062952 19.215574 0.048858 19.215656 0.089335 \n", + "\n", + " u_auto e_u_auto \n", + "0 99.000000 99.000000 \n", + "1 19.895712 0.108585 \n", + "2 99.000000 99.000000 \n", + "3 21.828426 0.842669 \n", + "4 21.918550 0.600922 \n", + "... ... ... \n", + "7669 21.030422 0.303724 \n", + "7670 18.210665 0.021596 \n", + "7671 17.087662 0.010229 \n", + "7672 22.329544 0.584440 \n", + "7673 20.695488 0.147480 \n", + "\n", + "[40256 rows x 13 columns]" ] }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "# Read the HiPSCat catalog metadata, it does not load any data, just healpix pixels and other metadata\n", - "splus_hipscat_catalog = Catalog.read_from_hipscat(cat_link)\n", - "plot_pixels(splus_hipscat_catalog)" + "res = splus_hips.box(\n", + " [-2, 2], ## RA range\n", + " [-2, 2], ## DEC range,\n", + ")\n", + "\n", + "res.compute()" ] }, {