{ "cells": [ { "cell_type": "markdown", "id": "8ad557e4-5fbf-41d3-8a10-98da53634057", "metadata": {}, "source": [ "## Creating a STAC Collection for a Virtual Icechunk Store\n", "\n", "There is a virtual icechunk store that is publicly available at: s3://nasa-waterinsight/virtual-zarr-store/NLDAS-3-icechunk/\n", "\n", "This notebook goes through the current thinking for how you would set up a STAC collection that points to that virtual icechunk store and provides all the information a user needs to interact with the virtual zarr store programmatically or via a web UI. " ] }, { "cell_type": "code", "execution_count": 1, "id": "6eb787d3-2e2c-4f72-9aed-12022fa6f5c9", "metadata": {}, "outputs": [], "source": [ "import json\n", "import datetime\n", "\n", "import icechunk\n", "import pystac\n", "import xstac\n", "import zarr\n", "\n", "import xarray as xr" ] }, { "cell_type": "markdown", "id": "c68fe3f7", "metadata": {}, "source": [ "Zarr can emit a lot of warnings about Numcodecs not being including in the Zarr version 3 specification yet -- let's suppress those." ] }, { "cell_type": "code", "execution_count": 2, "id": "ac29867a-c95e-4956-b370-dceb0dd1bd94", "metadata": {}, "outputs": [], "source": [ "import warnings\n", "\n", "warnings.filterwarnings(\n", " \"ignore\",\n", " message=\"Numcodecs codecs are not in the Zarr version 3 specification*\",\n", " category=UserWarning,\n", ")" ] }, { "cell_type": "markdown", "id": "647e3459-3e2f-4749-bc06-82f6e7fc1581", "metadata": {}, "source": [ "These are the PRs that need to land before you can open the virtual icechunk store with zarr directly:\n", "\n", "- https://github.com/zarr-developers/zarr-python/pull/3369\n", "- https://github.com/earth-mover/icechunk/pull/1161\n", "\n", "Until then:" ] }, { "cell_type": "code", "execution_count": 3, "id": "da9704f0-40ac-4b85-9706-6cc60ebffcb5", "metadata": {}, "outputs": [], "source": [ "storage = icechunk.s3_storage(\n", " bucket=\"nasa-waterinsight\",\n", " prefix=\"virtual-zarr-store/NLDAS-3-icechunk/\",\n", " region=\"us-west-2\",\n", " anonymous=True,\n", ")" ] }, { "cell_type": "markdown", "id": "798eb3c1-8a4e-444f-92c5-a4e0e1257f24", "metadata": {}, "source": [ "The `bucket` and `prefix` are from the icechunk href. The `anonymous=True` needs to come from somewhere else." ] }, { "cell_type": "code", "execution_count": 4, "id": "bba627a9-a2be-4cfd-94b7-02848c15841f", "metadata": {}, "outputs": [], "source": [ "config = icechunk.RepositoryConfig.default()\n", "config.set_virtual_chunk_container(\n", " icechunk.VirtualChunkContainer(\n", " \"s3://nasa-waterinsight/NLDAS3/forcing/daily/\",\n", " icechunk.s3_store(region=\"us-west-2\")\n", " )\n", ")\n", "virtual_credentials = icechunk.containers_credentials(\n", " {\n", " \"s3://nasa-waterinsight/NLDAS3/forcing/daily/\": icechunk.s3_anonymous_credentials()\n", " }\n", ")" ] }, { "cell_type": "markdown", "id": "eb811ca5-a483-495e-9dc8-1c5b67fadc7f", "metadata": {}, "source": [ "Here we need the `href` for the internal storage bucket(s) (composed of `bucket` and `prefix`) and we need the `region` of that bucket. Then we need some way of providing credentials." ] }, { "cell_type": "code", "execution_count": 5, "id": "f9f8b4b0-e6f5-4da0-a7f6-d08676cf2401", "metadata": {}, "outputs": [], "source": [ "repo = icechunk.Repository.open(\n", " storage=storage,\n", " config=config,\n", " authorize_virtual_chunk_access=virtual_credentials,\n", ")\n", "\n", "session = repo.readonly_session(snapshot_id='YTNGFY4WY9189GEH1FNG')" ] }, { "cell_type": "markdown", "id": "efd51ed6-0017-4819-9460-2c2012d49b8e", "metadata": {}, "source": [ "Since icechunk manages versions (like git) we need some way of knowing which `branch`, `tag` or `snapshot_id` (similar to `commit`) to use. " ] }, { "cell_type": "code", "execution_count": 6, "id": "cda06847-3d50-4acc-b19a-e10b5c60851a", "metadata": {}, "outputs": [], "source": [ "ds = xr.open_zarr(session.store, consolidated=False, zarr_format=3)" ] }, { "cell_type": "markdown", "id": "8d7279e4-d0dc-4943-a1c0-e0e1b051517a", "metadata": {}, "source": [ "Last of all we need a way of specifying that we are looking at icechunk here as well as the standard fields: `consolidated`, `zarr_format` that are already included in the [STAC Zarr extension](https://github.com/stac-extensions/zarr).\n", "\n", "Note that it is possible that these last two are not actually required. Xarray should know that for icechunk stores `consolidated` is always false and similarly xarray should be able to infer the zarr format from the store itself." ] }, { "cell_type": "code", "execution_count": 7, "id": "ecdeb03b-9f11-4288-ba89-6a6f746d8ba8", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset> Size: 51TB\n",
       "Dimensions:   (time: 8399, lat: 6500, lon: 11700)\n",
       "Coordinates:\n",
       "  * time      (time) datetime64[ns] 67kB 2001-01-02 2001-01-03 ... 2024-01-01\n",
       "  * lat       (lat) float64 52kB 7.005 7.015 7.025 7.035 ... 71.97 71.98 71.99\n",
       "  * lon       (lon) float64 94kB -169.0 -169.0 -169.0 ... -52.03 -52.01 -52.0\n",
       "Data variables:\n",
       "    Tair_max  (time, lat, lon) float64 5TB dask.array<chunksize=(1, 500, 900), meta=np.ndarray>\n",
       "    Wind_E    (time, lat, lon) float64 5TB dask.array<chunksize=(1, 500, 900), meta=np.ndarray>\n",
       "    PSurf     (time, lat, lon) float64 5TB dask.array<chunksize=(1, 500, 900), meta=np.ndarray>\n",
       "    SWdown    (time, lat, lon) float64 5TB dask.array<chunksize=(1, 500, 900), meta=np.ndarray>\n",
       "    Qair      (time, lat, lon) float64 5TB dask.array<chunksize=(1, 500, 900), meta=np.ndarray>\n",
       "    Tair_min  (time, lat, lon) float64 5TB dask.array<chunksize=(1, 500, 900), meta=np.ndarray>\n",
       "    Rainf     (time, lat, lon) float64 5TB dask.array<chunksize=(1, 500, 900), meta=np.ndarray>\n",
       "    Wind_N    (time, lat, lon) float64 5TB dask.array<chunksize=(1, 500, 900), meta=np.ndarray>\n",
       "    LWdown    (time, lat, lon) float64 5TB dask.array<chunksize=(1, 500, 900), meta=np.ndarray>\n",
       "    Tair      (time, lat, lon) float64 5TB dask.array<chunksize=(1, 500, 900), meta=np.ndarray>\n",
       "Attributes: (12/17)\n",
       "    missing_value:          -9999.0\n",
       "    time_definition:        daily\n",
       "    shortname:              NLDAS_FOR0010_D_3.0\n",
       "    title:                  NLDAS Forcing Data L4 Daily 0.01 x 0.01 degree V3...\n",
       "    version:                3.0 beta\n",
       "    institution:            NASA GSFC\n",
       "    ...                     ...\n",
       "    websites:               https://ldas.gsfc.nasa.gov/nldas/v3/ ; https://li...\n",
       "    MAP_PROJECTION:         EQUIDISTANT CYLINDRICAL\n",
       "    SOUTH_WEST_CORNER_LAT:  7.005000114440918\n",
       "    SOUTH_WEST_CORNER_LON:  -168.9949951171875\n",
       "    DX:                     0.009999999776482582\n",
       "    DY:                     0.009999999776482582
" ], "text/plain": [ " Size: 51TB\n", "Dimensions: (time: 8399, lat: 6500, lon: 11700)\n", "Coordinates:\n", " * time (time) datetime64[ns] 67kB 2001-01-02 2001-01-03 ... 2024-01-01\n", " * lat (lat) float64 52kB 7.005 7.015 7.025 7.035 ... 71.97 71.98 71.99\n", " * lon (lon) float64 94kB -169.0 -169.0 -169.0 ... -52.03 -52.01 -52.0\n", "Data variables:\n", " Tair_max (time, lat, lon) float64 5TB dask.array\n", " Wind_E (time, lat, lon) float64 5TB dask.array\n", " PSurf (time, lat, lon) float64 5TB dask.array\n", " SWdown (time, lat, lon) float64 5TB dask.array\n", " Qair (time, lat, lon) float64 5TB dask.array\n", " Tair_min (time, lat, lon) float64 5TB dask.array\n", " Rainf (time, lat, lon) float64 5TB dask.array\n", " Wind_N (time, lat, lon) float64 5TB dask.array\n", " LWdown (time, lat, lon) float64 5TB dask.array\n", " Tair (time, lat, lon) float64 5TB dask.array\n", "Attributes: (12/17)\n", " missing_value: -9999.0\n", " time_definition: daily\n", " shortname: NLDAS_FOR0010_D_3.0\n", " title: NLDAS Forcing Data L4 Daily 0.01 x 0.01 degree V3...\n", " version: 3.0 beta\n", " institution: NASA GSFC\n", " ... ...\n", " websites: https://ldas.gsfc.nasa.gov/nldas/v3/ ; https://li...\n", " MAP_PROJECTION: EQUIDISTANT CYLINDRICAL\n", " SOUTH_WEST_CORNER_LAT: 7.005000114440918\n", " SOUTH_WEST_CORNER_LON: -168.9949951171875\n", " DX: 0.009999999776482582\n", " DY: 0.009999999776482582" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ds" ] }, { "cell_type": "markdown", "id": "6841dee1-9c22-4888-9d15-bd827385fd1a", "metadata": {}, "source": [ "Ok! We have the xarray dataset lazily opened by accessing only the virtual icechunk store! Now the goal is to create a STAC collection that describes that virtual icechunk store and contains all the information we need for accessing it (all the inputs to the functions above).\n", "\n", "## Extract metadata for STAC collection\n", "\n", "Now let's see how [xstac](https://github.com/stac-utils/xstac) can help us extract the variables and represent them using the [Datacube STAC Extension](https://github.com/stac-extensions/datacube/). \n", "\n", "
\n", " \n", "This section takes inspiration from https://github.com/stac-utils/xstac/blob/main/examples/nasa-nex-gddp-cmip6/generate.py\n", "\n", "
" ] }, { "cell_type": "markdown", "id": "bfdff137-e99d-4d4f-8d36-4aceb398404b", "metadata": {}, "source": [ "We'll start with some of the hard-coded values that will need to be provided for any given dataset. As much as possible these should be lifted directly from the `xr.Dataset` attrs." ] }, { "cell_type": "code", "execution_count": 8, "id": "cb7c3205-1ffa-4062-b083-1348877466cc", "metadata": {}, "outputs": [], "source": [ "collection_id = \"nldas-3\"\n", "description = (\n", " \"NLDAS-3 provides a fine-scale (1 km) meteorological forcing (precipitation) in \"\n", " \"both retrospective and near real-time over North and Central America, including \"\n", " \"Alaska, Hawaii, and Puerto Rico, by leveraging high-quality gauge, satellite, \"\n", " \"and model datasets through advanced data assimilation methods. Read more: \"\n", " \"https://ldas.gsfc.nasa.gov/nldas/v3\"\n", ")\n", "providers = [\n", " pystac.Provider(\n", " name=\"NLDAS\",\n", " roles=[\"producer\", \"processor\", \"licensor\"],\n", " url=\"https://ldas.gsfc.nasa.gov/nldas\"\n", " )\n", "]" ] }, { "cell_type": "markdown", "id": "8e44e1c7-9cdc-4ff0-a308-d28bd8fa7a4f", "metadata": {}, "source": [ "I want to draw special attention to how we can use the [Storage STAC Extension](https://github.com/stac-extensions/storage) to capture that this particular bucket can be accessed anonymously. We can also capture the `region` within this blob." ] }, { "cell_type": "code", "execution_count": 9, "id": "0c8e2e68-1f32-491a-8e73-af87ae8b3d31", "metadata": {}, "outputs": [], "source": [ "storage_schemes = {\n", " \"aws-s3-nasa-waterinsight\": {\n", " \"type\": \"aws-s3\",\n", " \"platform\": \"https://{bucket}.s3.{region}.amazonaws.com\",\n", " \"bucket\": \"nasa-waterinsight\",\n", " \"region\": \"us-west-2\",\n", " \"anonymous\": True,\n", " }\n", "}" ] }, { "cell_type": "markdown", "id": "c55df85c-5021-4512-9cb0-2314c6c9422b", "metadata": {}, "source": [ "Now let's configure some metadata that can be gotten from the `xr.Dataset` itself." ] }, { "cell_type": "code", "execution_count": 10, "id": "dac18a22-044b-4961-b118-1d1c654038b3", "metadata": {}, "outputs": [], "source": [ "title = ds.attrs[\"title\"]\n", "extents = pystac.Extent(\n", " spatial=pystac.SpatialExtent(bboxes=[list(ds.rio.bounds())]),\n", " temporal=pystac.TemporalExtent(\n", " intervals=[\n", " datetime.datetime.fromisoformat(str(ds.time.min().values)),\n", " datetime.datetime.fromisoformat(str(ds.time.max().values))\n", " ]\n", " ),\n", ")" ] }, { "cell_type": "markdown", "id": "2de6fc38-a5ea-4310-9d5d-91a4fc907ad8", "metadata": {}, "source": [ "Now that we have all those values set, create a `pystac.Collection`:" ] }, { "cell_type": "code", "execution_count": 11, "id": "b35fce44-fb43-463e-8b91-b1ff04c45775", "metadata": {}, "outputs": [], "source": [ "template = pystac.Collection(\n", " collection_id,\n", " description=description,\n", " extent=extents,\n", " extra_fields={\"storage:schemes\": storage_schemes, \"item_assets\": {}},\n", " providers=providers,\n", " title=title,\n", " stac_extensions=[\n", " \"https://stac-extensions.github.io/storage/v2.0.0/schema.json\",\n", " ]\n", ")" ] }, { "cell_type": "markdown", "id": "19306ff8-c2d2-4ba2-ae34-88577b86faf2", "metadata": {}, "source": [ "Now that we have a preliminary version of the STAC Collection we can pass it off to `xstac` to pull out the variables and dims using the [Datacube STAC Extension](https://github.com/stac-extensions/datacube/)." ] }, { "cell_type": "code", "execution_count": 12, "id": "e1d8e728-e34d-46f7-92a7-1c98bc52ca45", "metadata": {}, "outputs": [], "source": [ "collection = xstac.xarray_to_stac(\n", " ds,\n", " template,\n", " temporal_dimension=\"time\",\n", " x_dimension=\"lon\",\n", " y_dimension=\"lat\",\n", " reference_system=4326,\n", " validate=False,\n", ")" ] }, { "cell_type": "markdown", "id": "f1092100-914f-4d34-ae2a-2f69af27cdd4", "metadata": {}, "source": [ "With that collection in hand we can create an asset that points to the virtual icechunk store and add it as a collection-level asset.\n", "\n", "### Add collection-level assets\n", "\n", "The main concern of the asset is how to access the data. So we need the asset to contain all the information we need to pass into icechunk functions when opening the virtual icechunk store." ] }, { "cell_type": "code", "execution_count": 13, "id": "718be1f5-5b50-4e3f-be49-77c407ce3fa3", "metadata": {}, "outputs": [], "source": [ "snapshot_id = \"YTNGFY4WY9189GEH1FNG\"\n", "virtual_href = \"s3://nasa-waterinsight/virtual-zarr-store/NLDAS-3-icechunk/\"\n", "\n", "name = \"nldas-3\"\n", "virtual_key = f\"{name}@{snapshot_id}\"\n", "storage_ref = \"aws-s3-nasa-waterinsight\"\n", "\n", "collection.add_asset(\n", " virtual_key,\n", " pystac.Asset(\n", " virtual_href,\n", " title=\"NLDAS-3 Virtual Zarr Store\",\n", " media_type=\"application/vnd.zarr+icechunk\", # I made this up: discussion https://earthmover-community.slack.com/archives/C07NQCBSTB7/p1756918042834049\n", " roles=[\"data\", \"references\", \"virtual\", \"latest-version\"],\n", " extra_fields={\n", " \"zarr:consolidated\": False,\n", " \"zarr:zarr_format\": 3,\n", " \"icechunk:snapshot_id\": snapshot_id,\n", " \"storage:refs\": [storage_ref],\n", " }\n", " )\n", ")" ] }, { "cell_type": "markdown", "id": "0e48ad05-dc20-4e2b-834f-5eeaafd203bb", "metadata": {}, "source": [ " We also need to specify how to access the legacy files which potentially sit in their own bucket. We can use the [Virtual Assets STAC Extension](https://github.com/stac-extensions/virtual-assets) to capture that." ] }, { "cell_type": "code", "execution_count": 14, "id": "72d0c142-853c-4046-874e-f79ab56dc9aa", "metadata": {}, "outputs": [], "source": [ "legacy_href = \"s3://nasa-waterinsight/NLDAS3/forcing/daily/\"\n", "legacy_key = \"nldas-3-legacy-bucket\"\n", "\n", "collection.add_asset(\n", " legacy_key,\n", " pystac.Asset(\n", " legacy_href,\n", " title=\"NLDAS-3 Legacy Bucket\",\n", " media_type=\"application/x-netcdf\",\n", " roles=[\"data\"],\n", " extra_fields={\n", " \"storage:refs\": [storage_ref],\n", " }\n", " )\n", ")\n", "\n", "collection.assets[virtual_key].extra_fields[\"vrt:hrefs\"] = [\n", " {\n", " \"key\": legacy_key,\n", " \"href\": f\"https://raw.githubusercontent.com/NASA-IMPACT/dse-virtual-zarr-workshop/refs/heads/main/docs/examples/collection.json#/assets/{legacy_key}\"\n", " },\n", "]" ] }, { "cell_type": "markdown", "id": "a683ac57-00e0-4baf-8f42-037342585a06", "metadata": {}, "source": [ "We can also add information about how to render each variable. This uses the [Render STAC Extension](https://github.com/stac-extensions/render) and specifies how applications (for instance titiler) should represent each variable visually." ] }, { "cell_type": "code", "execution_count": 15, "id": "ef0c5caa-9244-4f64-89ec-1a8890f1f53b", "metadata": {}, "outputs": [], "source": [ "renders = {}\n", "for k in ds:\n", " if k.startswith(\"LW\"):\n", " colormap_name = \"inferno\"\n", " elif k.startswith(\"PS\"):\n", " colormap_name = \"viridis\"\n", " elif k.startswith(\"Q\"):\n", " colormap_name = \"plasma\"\n", " elif k.startswith(\"Rain\"):\n", " colormap_name = \"cfastie\"\n", " elif k.startswith(\"SW\"):\n", " colormap_name = \"magma\"\n", " elif k.startswith(\"T\"):\n", " colormap_name = \"RdYlBu_r\"\n", " elif k.startswith(\"Wind\"):\n", " colormap_name = \"PuOr\"\n", " \n", " renders[k] = {\n", " \"title\": ds[k].attrs[\"long_name\"],\n", " \"assets\": [\"nldas-3\"],\n", " \"resampling\": \"average\",\n", " \"colormap_name\": colormap_name,\n", " \"rescale\": [[ds[k].attrs[\"vmin\"], ds[k].attrs[\"vmax\"]]],\n", " \"backend\": \"xarray\",\n", " }\n", "\n", "collection.extra_fields[\"renders\"] = renders" ] }, { "cell_type": "markdown", "id": "66f2bb8e-3a9a-4e59-a374-6517ae682ba7", "metadata": {}, "source": [ "Last of all we will add the Zarr STAC Extension and the Render STAC Extension to the list of `stac_extensions`. We need to do this after adding the asset because they relies on there being assets in the collection. " ] }, { "cell_type": "code", "execution_count": 16, "id": "fad6a53e-b60a-49b5-884d-28dc4c5198c1", "metadata": {}, "outputs": [], "source": [ "collection.stac_extensions = list(set(\n", " collection.stac_extensions + [\n", " \"https://stac-extensions.github.io/render/v2.0.0/schema.json\",\n", " \"https://stac-extensions.github.io/virtual-assets/v1.0.0/schema.json\",\n", " \"https://stac-extensions.github.io/zarr/v1.1.0/schema.json\",\n", " \"https://stac-extensions.github.io/version/v1.2.0/schema.json\",\n", " ]\n", "))" ] }, { "cell_type": "markdown", "id": "e1a9fcfd-6168-42b8-a07d-4779414c73d5", "metadata": {}, "source": [ "Validate the collection" ] }, { "cell_type": "code", "execution_count": 17, "id": "fe18f898-15a4-469e-8b89-aff723989553", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['https://schemas.stacspec.org/v1.1.0/collection-spec/json-schema/collection.json',\n", " 'https://stac-extensions.github.io/datacube/v2.2.0/schema.json',\n", " 'https://stac-extensions.github.io/storage/v2.0.0/schema.json',\n", " 'https://stac-extensions.github.io/version/v1.2.0/schema.json',\n", " 'https://stac-extensions.github.io/zarr/v1.1.0/schema.json',\n", " 'https://stac-extensions.github.io/virtual-assets/v1.0.0/schema.json',\n", " 'https://stac-extensions.github.io/render/v2.0.0/schema.json']" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collection.validate()" ] }, { "cell_type": "markdown", "id": "e882e6de-b3c2-45ea-bb55-680f630dbf09", "metadata": {}, "source": [ "Dump the collection to json" ] }, { "cell_type": "code", "execution_count": 18, "id": "85820cb0-9d57-49f4-999a-1cfcf6ae020d", "metadata": {}, "outputs": [], "source": [ "with open(\"collection.json\", \"w\") as f:\n", " json.dump(collection.to_dict(), f, indent=2)" ] }, { "cell_type": "markdown", "id": "0b772418-42e9-4bb5-ab82-fe26db51d357", "metadata": {}, "source": [ "## Read the virtual icechunk using collection-level asset\n", "\n", "Let's create a function that opens the virtual icechunk store as a virtual asset using only the STAC metadata. Don't worry too much about the function itself. Ideally this will end up living in xpystac (here is the issue for that: https://github.com/stac-utils/xpystac/issues/53) so you don't need to interact with it at all. The key takeaway is that the only input to this function is the virtual asset." ] }, { "cell_type": "markdown", "id": "3a4c19c4-cfd5-4876-8f81-373d81f6c59a", "metadata": {}, "source": [ "Now let's read the collection in from where we stored it in the json, find the latest version of the icechunk store, and lazily open it as an `xarray.Dataset`" ] }, { "cell_type": "code", "execution_count": 19, "id": "6d971a6b-9384-481f-96e2-12aca5c8c45f", "metadata": {}, "outputs": [], "source": [ "collection = pystac.Collection.from_file(\"collection.json\")" ] }, { "cell_type": "code", "execution_count": 20, "id": "5c77a3ef-72a3-4411-b85f-f06c4bc911f8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'nldas-3@YTNGFY4WY9189GEH1FNG': }" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "assets = collection.get_assets(role=\"latest-version\")\n", "assets" ] }, { "cell_type": "code", "execution_count": 21, "id": "242d992b-4c7f-4e80-bd99-e67494c3a6e0", "metadata": {}, "outputs": [], "source": [ "asset = next(iter(assets.values()))" ] }, { "cell_type": "markdown", "id": "51121ac4-d55e-4e58-b024-10013f33c8c9", "metadata": {}, "source": [ "Make sure you can actually access underlying data:" ] }, { "cell_type": "code", "execution_count": 22, "id": "e35e09c7-00f2-49eb-8be3-753715f4edf4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 1.05 s, sys: 423 ms, total: 1.47 s\n", "Wall time: 5.2 s\n" ] } ], "source": [ "%%time\n", "\n", "cape_rain = ds.Rainf.sel(\n", " time=\"2023-07-16\",\n", " lat=slice(41.48, 42.10),\n", " lon=slice(-70.84, -69.77)\n", ").compute()" ] }, { "cell_type": "code", "execution_count": 23, "id": "4a8d59bc-ca28-4d8a-aeb3-570941055ee7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cape_rain.plot()" ] }, { "cell_type": "code", "execution_count": 24, "id": "b9a7a1be-39e0-4646-b257-c2781b8ae426", "metadata": {}, "outputs": [], "source": [ "#import hvplot.xarray" ] }, { "cell_type": "code", "execution_count": 25, "id": "02a223a5-0faf-4cdb-8201-25db59fad015", "metadata": {}, "outputs": [], "source": [ "#cape_rain.hvplot(x='lon', y='lat', geo=True, rasterize=True, tiles='OSM', cmap='turbo', alpha=0.7)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.8" } }, "nbformat": 4, "nbformat_minor": 5 }