Skip to content

Instantly share code, notes, and snippets.

@adamfil
Created October 12, 2022 00:14
Show Gist options
  • Save adamfil/e820881c453638559bac13c718a33528 to your computer and use it in GitHub Desktop.
Save adamfil/e820881c453638559bac13c718a33528 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "5J1WMvwA7azD",
"outputId": "3fdf8ba5-4eb0-4e34-e15e-4a3ea61df2d5"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"--2022-10-11 20:11:14-- https://repo.anaconda.com/miniconda/Miniconda3-py38_4.8.2-Linux-x86_64.sh\n",
"Resolving repo.anaconda.com (repo.anaconda.com)... 2606:4700::6810:8203, 2606:4700::6810:8303, 104.16.131.3, ...\n",
"Connecting to repo.anaconda.com (repo.anaconda.com)|2606:4700::6810:8203|:443... connected.\n",
"HTTP request sent, awaiting response... 200 OK\n",
"Length: 89817099 (86M) [application/x-sh]\n",
"Saving to: ‘mini.sh’\n",
"\n",
"mini.sh 100%[===================>] 85.66M 11.6MB/s in 7.4s \n",
"\n",
"2022-10-11 20:11:21 (11.6 MB/s) - ‘mini.sh’ saved [89817099/89817099]\n",
"\n",
"PREFIX=/usr/local\n",
"./mini.sh: line 392: /usr/local/conda.exe: Permission denied\n",
"chmod: cannot access '/usr/local/conda.exe': No such file or directory\n",
"Unpacking payload ...\n",
"./mini.sh: line 404: /usr/local/conda.exe: No such file or directory\n",
"./mini.sh: line 406: /usr/local/conda.exe: No such file or directory\n",
"Collecting package metadata (current_repodata.json): ...working... done\n",
"Solving environment: ...working... done\n",
"\n",
"## Package Plan ##\n",
"\n",
" environment location: /home/filipovicha/anaconda3\n",
"\n",
" added / updated specs:\n",
" - jupyter\n",
"\n",
"\n",
"The following packages will be SUPERSEDED by a higher-priority channel:\n",
"\n",
" conda conda-forge::conda-22.9.0-py39hf3d152~ --> pkgs/main::conda-22.9.0-py39h06a4308_0 None\n",
"\n",
"\n",
"Preparing transaction: ...working... done\n",
"Verifying transaction: ...working... done\n",
"Executing transaction: ...working... done\n",
"Retrieving notices: ...working... done\n",
"Collecting package metadata (current_repodata.json): ...working... done\n",
"Solving environment: ...working... done\n",
"\n",
"## Package Plan ##\n",
"\n",
" environment location: /home/filipovicha/anaconda3\n",
"\n",
" added / updated specs:\n",
" - google-colab\n",
"\n",
"\n",
"The following packages will be UPDATED:\n",
"\n",
" conda pkgs/main::conda-22.9.0-py39h06a4308_0 --> conda-forge::conda-22.9.0-py39hf3d152e_1 None\n",
"\n",
"\n",
"Preparing transaction: ...working... done\n",
"Verifying transaction: ...working... done\n",
"Executing transaction: ...working... done\n",
"Retrieving notices: ...working... done\n",
"Installed kernelspec py38 in /home/filipovicha/.local/share/jupyter/kernels/py38\n"
]
}
],
"source": [
"# Hack to get Python 3.8 on Google Colab from https://stackoverflow.com/a/71512702 (Since Google Colab is 3.7.14 and the minimum for our packages is >= 3.8)\n",
"!wget -O mini.sh https://repo.anaconda.com/miniconda/Miniconda3-py38_4.8.2-Linux-x86_64.sh\n",
"!chmod +x mini.sh\n",
"!bash ./mini.sh -b -f -p /usr/local\n",
"!conda install -q -y jupyter\n",
"!conda install -q -y google-colab -c conda-forge\n",
"!python -m ipykernel install --name \"py38\" --user"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "1y6HnnE479sW",
"outputId": "114fef7d-8249-45c5-a7b6-6bc400c0320b"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"User Current Version:- 3.9.12 (main, Apr 5 2022, 06:56:58) \n",
"[GCC 7.5.0]\n"
]
}
],
"source": [
"# Confirm that the Python Package that was installed above is 3.8.1 (not 3.7.14, after running the cell above you may have to refresh the page and run this)\n",
"import sys\n",
"print(\"User Current Version:-\", sys.version)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "kJSgEVQGdkDx",
"outputId": "b9452eb5-75bc-4823-8335-fac3126b7546"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"--2022-10-11 20:11:43-- https://dist.ipfs.tech/kubo/v0.16.0/kubo_v0.16.0_linux-amd64.tar.gz\n",
"Resolving dist.ipfs.tech (dist.ipfs.tech)... 2602:fea2:3::1, 209.94.78.1\n",
"Connecting to dist.ipfs.tech (dist.ipfs.tech)|2602:fea2:3::1|:443... connected.\n",
"HTTP request sent, awaiting response... 200 OK\n",
"Length: 34418406 (33M) [application/gzip]\n",
"Saving to: ‘kubo_v0.16.0_linux-amd64.tar.gz.7’\n",
"\n",
"kubo_v0.16.0_linux- 100%[===================>] 32.82M 5.62MB/s in 7.0s \n",
"\n",
"2022-10-11 20:11:50 (4.68 MB/s) - ‘kubo_v0.16.0_linux-amd64.tar.gz.7’ saved [34418406/34418406]\n",
"\n",
"kubo/LICENSE\n",
"kubo/LICENSE-APACHE\n",
"kubo/LICENSE-MIT\n",
"kubo/README.md\n",
"kubo/install.sh\n",
"kubo/ipfs\n"
]
}
],
"source": [
"# Download Local Instance of IPFS Node taken from https://colab.research.google.com/drive/1yxm_edDArlSqAKALYNkQgymYRNOIOitz?usp=sharing#scrollTo=5qQrcL4cFTd4\n",
"# Only should need to run this the first time\n",
"!wget https://dist.ipfs.tech/kubo/v0.16.0/kubo_v0.16.0_linux-amd64.tar.gz\n",
"!tar -xvzf kubo_v0.16.0_linux-amd64.tar.gz\n",
"# !./go-ipfs/ipfs init"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "4aTxUdlXn8To",
"outputId": "f6eb70a6-85da-4310-fee7-ecabdcba18d4"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"bash: /content/kubo/install.sh: No such file or directory\r\n"
]
}
],
"source": [
"# Only should need to run this the first time\n",
"!bash /content/kubo/install.sh"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "cC2nRutbpOnl",
"outputId": "049bad95-5b89-4262-e59f-a44f3a7ce7c1"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ipfs version 0.16.0\r\n"
]
}
],
"source": [
"!ipfs --version"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "44uULupr_h_g",
"outputId": "e2b100ec-99a3-4c12-9c28-0d034874fff5"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"generating ED25519 keypair...done\r\n",
"peer identity: 12D3KooWRismUABpt3KPGGMbNUUsxR2bsSNjXb9oUT98u9PNRVbB\r\n",
"initializing IPFS node at /home/filipovicha/snap/ipfs/common\r\n",
"Error: ipfs configuration file already exists!\r\n",
"Reinitializing would overwrite your keys.\r\n",
"\r\n"
]
}
],
"source": [
"# If you get an error running the xarray/iplstore code in the last cell with something about connection error, it's because the IPFS node cannot be reached\n",
"# as it's probably not running (The Colab notebook often shuts off the node so you may have to periodically rerun commands). Run this cell to start the IPFS node again in that case\n",
"!ipfs init"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "vq5xpA5ornSn",
"outputId": "bdd0660d-5509-4658-d24a-b4d1aa8f7c3a"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello and Welcome to IPFS!\r\n",
"\r\n",
"██╗██████╗ ███████╗███████╗\r\n",
"██║██╔══██╗██╔════╝██╔════╝\r\n",
"██║██████╔╝█████╗ ███████╗\r\n",
"██║██╔═══╝ ██╔══╝ ╚════██║\r\n",
"██║██║ ██║ ███████║\r\n",
"╚═╝╚═╝ ╚═╝ ╚══════╝\r\n",
"\r\n",
"If you're seeing this, you have successfully installed\r\n",
"IPFS and are now interfacing with the ipfs merkledag!\r\n",
"\r\n",
" -------------------------------------------------------\r\n",
"| Warning: |\r\n",
"| This is alpha software. Use at your own discretion! |\r\n",
"| Much is missing or lacking polish. There are bugs. |\r\n",
"| Not yet secure. Read the security notes for more. |\r\n",
" -------------------------------------------------------\r\n",
"\r\n",
"Check out some of the other files in this directory:\r\n",
"\r\n",
" ./about\r\n",
" ./help\r\n",
" ./quick-start <-- usage examples\r\n",
" ./readme <-- this file\r\n",
" ./security-notes\r\n"
]
}
],
"source": [
"# Test to see if you can cat the README from IPFS\n",
"!ipfs cat /ipfs/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/readme\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"id": "yUU_fbMKArO9"
},
"outputs": [],
"source": [
"#Emergency uncomment if the ipfs installation gets corrupted\n",
"#import shutil\n",
"#shutil.rmtree('/root/.ipfs')"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "OR_E8c-seepI",
"outputId": "74cfb5d4-84fa-41fb-857d-2e7b8f5e21c2"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Initializing daemon...\n",
"Kubo version: 0.16.0-38117db6f\n",
"Repo version: 12\n",
"System version: amd64/linux\n",
"Golang version: go1.19\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Error: lock /home/filipovicha/snap/ipfs/common/repo.lock: someone else has the lock\n",
"2022/10/11 20:12:35 failed to sufficiently increase receive buffer size (was: 208 kiB, wanted: 2048 kiB, got: 416 kiB). See https://github.com/lucas-clemente/quic-go/wiki/UDP-Receive-Buffer-Size for details.\n",
"Error: lock /home/filipovicha/snap/ipfs/common/repo.lock: someone else has the lock\n",
"Error: lock /home/filipovicha/snap/ipfs/common/repo.lock: someone else has the lock\n",
"Error: lock /home/filipovicha/snap/ipfs/common/repo.lock: someone else has the lock\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Swarm listening on /ip4/10.0.0.80/tcp/4001\n",
"Swarm listening on /ip4/10.0.0.80/udp/4001/quic\n",
"Swarm listening on /ip4/127.0.0.1/tcp/4001\n",
"Swarm listening on /ip4/127.0.0.1/udp/4001/quic\n",
"Swarm listening on /ip4/172.17.0.1/tcp/4001\n",
"Swarm listening on /ip4/172.17.0.1/udp/4001/quic\n",
"Swarm listening on /ip6/2607:fea8:86a1:7400:12e9:f4c4:b83c:f25d/tcp/4001\n",
"Swarm listening on /ip6/2607:fea8:86a1:7400:12e9:f4c4:b83c:f25d/udp/4001/quic\n",
"Swarm listening on /ip6/2607:fea8:86a1:7400:3191:d6c7:7ac9:a8ae/tcp/4001\n",
"Swarm listening on /ip6/2607:fea8:86a1:7400:3191:d6c7:7ac9:a8ae/udp/4001/quic\n",
"Swarm listening on /ip6/2607:fea8:86a1:7400::f2b8/tcp/4001\n",
"Swarm listening on /ip6/2607:fea8:86a1:7400::f2b8/udp/4001/quic\n",
"Swarm listening on /ip6/::1/tcp/4001\n",
"Swarm listening on /ip6/::1/udp/4001/quic\n",
"Swarm listening on /p2p-circuit\n",
"Swarm announcing /ip4/10.0.0.80/tcp/4001\n",
"Swarm announcing /ip4/10.0.0.80/udp/4001/quic\n",
"Swarm announcing /ip4/127.0.0.1/tcp/4001\n",
"Swarm announcing /ip4/127.0.0.1/udp/4001/quic\n",
"Swarm announcing /ip6/2607:fea8:86a1:7400::f2b8/tcp/4001\n",
"Swarm announcing /ip6/2607:fea8:86a1:7400::f2b8/udp/4001/quic\n",
"Swarm announcing /ip6/::1/tcp/4001\n",
"Swarm announcing /ip6/::1/udp/4001/quic\n",
"API server listening on /ip4/127.0.0.1/tcp/5001\n",
"WebUI: http://127.0.0.1:5001/webui\n",
"Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8082\n",
"Daemon is ready\n",
"ipfs is ready\n"
]
}
],
"source": [
"# Setup IPFS\n",
"import os\n",
"import time\n",
"\n",
"!ipfs config Addresses.Gateway /ip4/127.0.0.1/tcp/8082\n",
"get_ipython().system_raw('ipfs daemon &')\n",
"\n",
"ready = os.popen('ipfs stats bw').read()\n",
"while not ready:\n",
" time.sleep(0.1)\n",
" ready = os.popen('ipfs stats bw').read()\n",
"\n",
"print('ipfs is ready')"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "RbTn3qOmfFAe",
"outputId": "41515c3b-49c0-45bc-b60d-1e6931faadef"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"connect 12D3KooWG7itEPAHut3xsVo7CwyD8sKeQXKgQizotNhPsToCssXQ success\r\n"
]
}
],
"source": [
"# Peer to dClimate IPFS Node\n",
"!ipfs swarm connect /ip4/45.55.32.80/tcp/4001/ipfs/12D3KooWG7itEPAHut3xsVo7CwyD8sKeQXKgQizotNhPsToCssXQ"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "xsv82YMGfNGD",
"outputId": "1e09c137-93b0-402a-d509-d92332e43100"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"/ipfs/bafyreie7n7z4xd6go645fbrmyzrdrnaypx6ky4r4iekieyjzlmvo2aqgzm\r\n"
]
}
],
"source": [
"# Test IPNS Resolution for key pertaining to cpc_precip_global-daily\n",
"!ipfs name resolve k2k4r8nyvzboy94mj0eebx9e4ux8qbwoej4q7d6wz1jwagx4rjk76kmw"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"id": "-_QsKhwffvyT"
},
"outputs": [],
"source": [
"# List of Datasets\n",
"# k2k4r8nyvzboy94mj0eebx9e4ux8qbwoej4q7d6wz1jwagx4rjk76kmw cpc_precip_global-daily \n",
"# k2k4r8kxoxk8iqosvvqy1t5otrwof2qsxd5v2z407ty9gv670iacdymf cpc_temp_max-daily \n",
"# k2k4r8ltdnckeztcxpbtgqnpqah9dabympud0y8ovykw719o962b22vc cpc_temp_min-daily \n",
"# k2k4r8myzcstpd8iuk2ebepyiyc3b9f6wh8j3jm813mrzougcmoxrqmi era5_2m_temp-hourly \n",
"# k2k4r8l6plbm4r3ks757u8avo5n8t0ghszkwx3uu61cid363lx45n5kl era5_precip-hourly \n",
"# k2k4r8m9jocq1v3oyzmrsc8jf02cltb0qru4sahl67wknb8lxazyb97c era5_surface_solar_radiation_downwards-hourly \n",
"# k2k4r8pdgrs5c91efkc0umcm0a55yq3bpy87bj3llx1bfzxtddd5zk46 era5_wind_10m_u-hourly \n",
"# k2k4r8ncjbyjz2tpq2hfhryjmp7l4laln1s0k1g3izbj4u6pqy9xgnlm era5_wind_10m_v-hourly \n",
"# k2k4r8pqw7k628p6lo1495rugo3o6a73k0h9e4tbhr0vxs6pp1gc1x5o prism-precip-daily"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "9s7oJ4085IuQ",
"outputId": "e9e1aeac-2114-4b96-819e-410bbdad8aea"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting git+https://github.com/dClimate/ipldstore.git\n",
" Cloning https://github.com/dClimate/ipldstore.git to /tmp/pip-req-build-2lqtgl61\n",
" Running command git clone --filter=blob:none --quiet https://github.com/dClimate/ipldstore.git /tmp/pip-req-build-2lqtgl61\n",
" Resolved https://github.com/dClimate/ipldstore.git to commit 28a172dc52b09facea141b9e17464c6a3462ae49\n",
" Installing build dependencies ... \u001b[?25ldone\n",
"\u001b[?25h Getting requirements to build wheel ... \u001b[?25ldone\n",
"\u001b[?25h Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n",
"\u001b[?25hRequirement already satisfied: pure-protobuf>=2.1.0 in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from ipldstore==0.0.post50) (2.1.1)\n",
"Requirement already satisfied: requests in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from ipldstore==0.0.post50) (2.27.1)\n",
"Requirement already satisfied: typing-extensions in /home/filipovicha/.local/lib/python3.9/site-packages (from ipldstore==0.0.post50) (4.0.1)\n",
"Requirement already satisfied: cbor2 in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from ipldstore==0.0.post50) (5.4.3)\n",
"Requirement already satisfied: typing-validation in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from ipldstore==0.0.post50) (0.0.1.post7)\n",
"Requirement already satisfied: zarr in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from ipldstore==0.0.post50) (2.12.0)\n",
"Requirement already satisfied: dag-cbor>=0.2.2 in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from ipldstore==0.0.post50) (0.2.2)\n",
"Requirement already satisfied: multiformats in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from ipldstore==0.0.post50) (0.1.4.post3)\n",
"Requirement already satisfied: aiohttp in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from ipldstore==0.0.post50) (3.8.1)\n",
"Requirement already satisfied: numcodecs in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from ipldstore==0.0.post50) (0.10.2)\n",
"Requirement already satisfied: charset-normalizer<3.0,>=2.0 in /home/filipovicha/.local/lib/python3.9/site-packages (from aiohttp->ipldstore==0.0.post50) (2.0.9)\n",
"Requirement already satisfied: yarl<2.0,>=1.0 in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from aiohttp->ipldstore==0.0.post50) (1.6.3)\n",
"Requirement already satisfied: aiosignal>=1.1.2 in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from aiohttp->ipldstore==0.0.post50) (1.2.0)\n",
"Requirement already satisfied: frozenlist>=1.1.1 in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from aiohttp->ipldstore==0.0.post50) (1.2.0)\n",
"Requirement already satisfied: attrs>=17.3.0 in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from aiohttp->ipldstore==0.0.post50) (21.4.0)\n",
"Requirement already satisfied: multidict<7.0,>=4.5 in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from aiohttp->ipldstore==0.0.post50) (5.2.0)\n",
"Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from aiohttp->ipldstore==0.0.post50) (4.0.2)\n",
"Requirement already satisfied: bases in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from multiformats->ipldstore==0.0.post50) (0.2.1)\n",
"Requirement already satisfied: entrypoints in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from numcodecs->ipldstore==0.0.post50) (0.4)\n",
"Requirement already satisfied: numpy>=1.7 in /home/filipovicha/.local/lib/python3.9/site-packages (from numcodecs->ipldstore==0.0.post50) (1.21.5)\n",
"Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from requests->ipldstore==0.0.post50) (1.26.9)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from requests->ipldstore==0.0.post50) (2021.10.8)\n",
"Requirement already satisfied: idna<4,>=2.5 in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from requests->ipldstore==0.0.post50) (3.3)\n",
"Requirement already satisfied: asciitree in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from zarr->ipldstore==0.0.post50) (0.3.3)\n",
"Requirement already satisfied: fasteners in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from zarr->ipldstore==0.0.post50) (0.17.3)\n",
"\n",
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip available: \u001b[0m\u001b[31;49m22.1.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m22.2.2\u001b[0m\n",
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n"
]
}
],
"source": [
"!pip install git+https://github.com/dClimate/ipldstore.git"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 449
},
"id": "V6mtiH5J9gtK",
"outputId": "3994ec7f-60b5-4f80-ea58-369b7de1e09d"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: xarray in /home/filipovicha/anaconda3/lib/python3.9/site-packages (0.20.1)\n",
"Requirement already satisfied: pandas>=1.1 in /home/filipovicha/.local/lib/python3.9/site-packages (from xarray) (1.1.5)\n",
"Requirement already satisfied: numpy>=1.18 in /home/filipovicha/.local/lib/python3.9/site-packages (from xarray) (1.21.5)\n",
"Requirement already satisfied: pytz>=2017.2 in /home/filipovicha/.local/lib/python3.9/site-packages (from pandas>=1.1->xarray) (2021.3)\n",
"Requirement already satisfied: python-dateutil>=2.7.3 in /home/filipovicha/.local/lib/python3.9/site-packages (from pandas>=1.1->xarray) (2.8.2)\n",
"Requirement already satisfied: six>=1.5 in /home/filipovicha/anaconda3/lib/python3.9/site-packages (from python-dateutil>=2.7.3->pandas>=1.1->xarray) (1.16.0)\n",
"\n",
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip available: \u001b[0m\u001b[31;49m22.1.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m22.2.2\u001b[0m\n",
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n"
]
}
],
"source": [
"!pip install xarray"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"import nest_asyncio\n",
"nest_asyncio.apply()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 870
},
"id": "1Wd5aM966AGh",
"outputId": "7f0f4054-0e86-4293-b961-d00a632d7017"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/filipovicha/anaconda3/lib/python3.9/site-packages/xarray/backends/cfgrib_.py:27: UserWarning: Failed to load cfgrib - most likely there is a problem accessing the ecCodes library. Try `import cfgrib` to get the full error message\n",
" warnings.warn(\n",
"/home/filipovicha/anaconda3/lib/python3.9/site-packages/xarray/backends/plugins.py:65: RuntimeWarning: Engine 'cfgrib' loading failed:\n",
"Cannot find the ecCodes library\n",
" warnings.warn(f\"Engine {name!r} loading failed:\\n{ex}\", RuntimeWarning)\n"
]
}
],
"source": [
"import ipldstore\n",
"import xarray as xr\n",
"\n",
"DEFAULT_HOST = \"http://127.0.0.1:5001/api/v0\"\n",
"VALID_TIME_SPANS = [\"daily\", \"hourly\", \"weekly\"]\n",
"\n",
"m = ipldstore.get_ipfs_mapper()\n",
"m.set_root(\"bafyreiefcojbjvqz5k6qvokms62nwlwvwnzglddrq7eq7ioxc2a27nefv4\")\n",
"\n",
"# Wrapping this async is necessary because of this error https://stackoverflow.com/questions/55409641/asyncio-run-cannot-be-called-from-a-running-event-loop-when-using-jupyter-no\n",
"async def main():\n",
" ds = xr.open_zarr(m)\n",
" return ds\n",
"\n",
"xar = await main()\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
"<defs>\n",
"<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
"<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"</symbol>\n",
"<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
"<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"</symbol>\n",
"</defs>\n",
"</svg>\n",
"<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
" *\n",
" */\n",
"\n",
":root {\n",
" --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
" --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
" --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
" --xr-background-color: var(--jp-layout-color0, white);\n",
" --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
" --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
"}\n",
"\n",
"html[theme=dark],\n",
"body.vscode-dark {\n",
" --xr-font-color0: rgba(255, 255, 255, 1);\n",
" --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
" --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
" --xr-border-color: #1F1F1F;\n",
" --xr-disabled-color: #515151;\n",
" --xr-background-color: #111111;\n",
" --xr-background-color-row-even: #111111;\n",
" --xr-background-color-row-odd: #313131;\n",
"}\n",
"\n",
".xr-wrap {\n",
" display: block;\n",
" min-width: 300px;\n",
" max-width: 700px;\n",
"}\n",
"\n",
".xr-text-repr-fallback {\n",
" /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
" display: none;\n",
"}\n",
"\n",
".xr-header {\n",
" padding-top: 6px;\n",
" padding-bottom: 6px;\n",
" margin-bottom: 4px;\n",
" border-bottom: solid 1px var(--xr-border-color);\n",
"}\n",
"\n",
".xr-header > div,\n",
".xr-header > ul {\n",
" display: inline;\n",
" margin-top: 0;\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-obj-type,\n",
".xr-array-name {\n",
" margin-left: 2px;\n",
" margin-right: 10px;\n",
"}\n",
"\n",
".xr-obj-type {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-sections {\n",
" padding-left: 0 !important;\n",
" display: grid;\n",
" grid-template-columns: 150px auto auto 1fr 20px 20px;\n",
"}\n",
"\n",
".xr-section-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-section-item input {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-item input + label {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label {\n",
" cursor: pointer;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label:hover {\n",
" color: var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-summary {\n",
" grid-column: 1;\n",
" color: var(--xr-font-color2);\n",
" font-weight: 500;\n",
"}\n",
"\n",
".xr-section-summary > span {\n",
" display: inline-block;\n",
" padding-left: 0.5em;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-summary-in + label:before {\n",
" display: inline-block;\n",
" content: '►';\n",
" font-size: 11px;\n",
" width: 15px;\n",
" text-align: center;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label:before {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label:before {\n",
" content: '▼';\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label > span {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-summary,\n",
".xr-section-inline-details {\n",
" padding-top: 4px;\n",
" padding-bottom: 4px;\n",
"}\n",
"\n",
".xr-section-inline-details {\n",
" grid-column: 2 / -1;\n",
"}\n",
"\n",
".xr-section-details {\n",
" display: none;\n",
" grid-column: 1 / -1;\n",
" margin-bottom: 5px;\n",
"}\n",
"\n",
".xr-section-summary-in:checked ~ .xr-section-details {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-array-wrap {\n",
" grid-column: 1 / -1;\n",
" display: grid;\n",
" grid-template-columns: 20px auto;\n",
"}\n",
"\n",
".xr-array-wrap > label {\n",
" grid-column: 1;\n",
" vertical-align: top;\n",
"}\n",
"\n",
".xr-preview {\n",
" color: var(--xr-font-color3);\n",
"}\n",
"\n",
".xr-array-preview,\n",
".xr-array-data {\n",
" padding: 0 5px !important;\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-array-data,\n",
".xr-array-in:checked ~ .xr-array-preview {\n",
" display: none;\n",
"}\n",
"\n",
".xr-array-in:checked ~ .xr-array-data,\n",
".xr-array-preview {\n",
" display: inline-block;\n",
"}\n",
"\n",
".xr-dim-list {\n",
" display: inline-block !important;\n",
" list-style: none;\n",
" padding: 0 !important;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list li {\n",
" display: inline-block;\n",
" padding: 0;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list:before {\n",
" content: '(';\n",
"}\n",
"\n",
".xr-dim-list:after {\n",
" content: ')';\n",
"}\n",
"\n",
".xr-dim-list li:not(:last-child):after {\n",
" content: ',';\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-has-index {\n",
" font-weight: bold;\n",
"}\n",
"\n",
".xr-var-list,\n",
".xr-var-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-var-item > div,\n",
".xr-var-item label,\n",
".xr-var-item > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-even);\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-var-item > .xr-var-name:hover span {\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-var-list > li:nth-child(odd) > div,\n",
".xr-var-list > li:nth-child(odd) > label,\n",
".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-odd);\n",
"}\n",
"\n",
".xr-var-name {\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-var-dims {\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-var-dtype {\n",
" grid-column: 3;\n",
" text-align: right;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-preview {\n",
" grid-column: 4;\n",
"}\n",
"\n",
".xr-var-name,\n",
".xr-var-dims,\n",
".xr-var-dtype,\n",
".xr-preview,\n",
".xr-attrs dt {\n",
" white-space: nowrap;\n",
" overflow: hidden;\n",
" text-overflow: ellipsis;\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-var-name:hover,\n",
".xr-var-dims:hover,\n",
".xr-var-dtype:hover,\n",
".xr-attrs dt:hover {\n",
" overflow: visible;\n",
" width: auto;\n",
" z-index: 1;\n",
"}\n",
"\n",
".xr-var-attrs,\n",
".xr-var-data {\n",
" display: none;\n",
" background-color: var(--xr-background-color) !important;\n",
" padding-bottom: 5px !important;\n",
"}\n",
"\n",
".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
".xr-var-data-in:checked ~ .xr-var-data {\n",
" display: block;\n",
"}\n",
"\n",
".xr-var-data > table {\n",
" float: right;\n",
"}\n",
"\n",
".xr-var-name span,\n",
".xr-var-data,\n",
".xr-attrs {\n",
" padding-left: 25px !important;\n",
"}\n",
"\n",
".xr-attrs,\n",
".xr-var-attrs,\n",
".xr-var-data {\n",
" grid-column: 1 / -1;\n",
"}\n",
"\n",
"dl.xr-attrs {\n",
" padding: 0;\n",
" margin: 0;\n",
" display: grid;\n",
" grid-template-columns: 125px auto;\n",
"}\n",
"\n",
".xr-attrs dt,\n",
".xr-attrs dd {\n",
" padding: 0;\n",
" margin: 0;\n",
" float: left;\n",
" padding-right: 10px;\n",
" width: auto;\n",
"}\n",
"\n",
".xr-attrs dt {\n",
" font-weight: normal;\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-attrs dt:hover span {\n",
" display: inline-block;\n",
" background: var(--xr-background-color);\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-attrs dd {\n",
" grid-column: 2;\n",
" white-space: pre-wrap;\n",
" word-break: break-all;\n",
"}\n",
"\n",
".xr-icon-database,\n",
".xr-icon-file-text2 {\n",
" display: inline-block;\n",
" vertical-align: middle;\n",
" width: 1em;\n",
" height: 1.5em !important;\n",
" stroke-width: 0;\n",
" stroke: currentColor;\n",
" fill: currentColor;\n",
"}\n",
"</style><pre class='xr-text-repr-fallback'>&lt;xarray.Dataset&gt;\n",
"Dimensions: (latitude: 400, longitude: 1440, time: 15218)\n",
"Coordinates:\n",
" * latitude (latitude) float32 -49.88 -49.62 -49.38 ... 49.38 49.62 49.88\n",
" * longitude (longitude) float32 -179.9 -179.6 -179.4 ... 179.4 179.6 179.9\n",
" * time (time) datetime64[ns] 1981-01-01 1981-01-02 ... 2022-08-31\n",
"Data variables:\n",
" precip (time, latitude, longitude) float32 dask.array&lt;chunksize=(500, 40, 40), meta=np.ndarray&gt;\n",
"Attributes: (12/24)\n",
" CDI: Climate Data Interface version 1.9.9rc1 (https://m...\n",
" CDO: Climate Data Operators version 1.9.9rc1 (https://m...\n",
" EPSG: 4326\n",
" name: chirps_final_25\n",
" tags: [&#x27;Precipitation&#x27;]\n",
" title: CHIRPS Version 2.0\n",
" ... ...\n",
" spatial precision: 1e-05\n",
" spatial resolution: 0.25\n",
" dataset description: Climate Hazards center InfraRed Precipitation with...\n",
" temporal resolution: daily\n",
" unit of measurement: mm\n",
" provider description: The Climate Hazards Center is an alliance of multi...</pre><div class='xr-wrap' hidden><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-3bec943c-3434-410d-ae50-0b12c8e7a03e' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-3bec943c-3434-410d-ae50-0b12c8e7a03e' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span class='xr-has-index'>latitude</span>: 400</li><li><span class='xr-has-index'>longitude</span>: 1440</li><li><span class='xr-has-index'>time</span>: 15218</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-efa3416e-b04f-483b-bcb4-4100479d08a2' class='xr-section-summary-in' type='checkbox' checked><label for='section-efa3416e-b04f-483b-bcb4-4100479d08a2' class='xr-section-summary' >Coordinates: <span>(3)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>latitude</span></div><div class='xr-var-dims'>(latitude)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>-49.88 -49.62 ... 49.62 49.88</div><input id='attrs-7e2888cf-ba1f-421f-958a-a6fa83ef4e07' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-7e2888cf-ba1f-421f-958a-a6fa83ef4e07' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-05824de0-0232-48dd-a935-0bdc744f7011' class='xr-var-data-in' type='checkbox'><label for='data-05824de0-0232-48dd-a935-0bdc744f7011' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>axis :</span></dt><dd>Y</dd><dt><span>units :</span></dt><dd>degrees_north</dd><dt><span>long_name :</span></dt><dd>latitude</dd><dt><span>standard_name :</span></dt><dd>latitude</dd></dl></div><div class='xr-var-data'><pre>array([-49.875, -49.625, -49.375, ..., 49.375, 49.625, 49.875],\n",
" dtype=float32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>longitude</span></div><div class='xr-var-dims'>(longitude)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>-179.9 -179.6 ... 179.6 179.9</div><input id='attrs-d2601cd8-3615-44dc-a717-e34218c22416' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-d2601cd8-3615-44dc-a717-e34218c22416' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-6f83c38d-400b-4ffd-8476-2bb7a7d4268f' class='xr-var-data-in' type='checkbox'><label for='data-6f83c38d-400b-4ffd-8476-2bb7a7d4268f' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>axis :</span></dt><dd>X</dd><dt><span>units :</span></dt><dd>degrees_east</dd><dt><span>long_name :</span></dt><dd>longitude</dd><dt><span>standard_name :</span></dt><dd>longitude</dd></dl></div><div class='xr-var-data'><pre>array([-179.875, -179.625, -179.375, ..., 179.375, 179.625, 179.875],\n",
" dtype=float32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>time</span></div><div class='xr-var-dims'>(time)</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>1981-01-01 ... 2022-08-31</div><input id='attrs-e08cde12-bff5-41f1-b51a-7c43a4a94ffe' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-e08cde12-bff5-41f1-b51a-7c43a4a94ffe' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-4ef9c19e-7136-4f75-a7bd-11cad84779cb' class='xr-var-data-in' type='checkbox'><label for='data-4ef9c19e-7136-4f75-a7bd-11cad84779cb' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>axis :</span></dt><dd>T</dd><dt><span>standard_name :</span></dt><dd>time</dd></dl></div><div class='xr-var-data'><pre>array([&#x27;1981-01-01T00:00:00.000000000&#x27;, &#x27;1981-01-02T00:00:00.000000000&#x27;,\n",
" &#x27;1981-01-03T00:00:00.000000000&#x27;, ..., &#x27;2022-08-29T00:00:00.000000000&#x27;,\n",
" &#x27;2022-08-30T00:00:00.000000000&#x27;, &#x27;2022-08-31T00:00:00.000000000&#x27;],\n",
" dtype=&#x27;datetime64[ns]&#x27;)</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-305b294b-3477-4c5d-b8c7-74d10cc3ca56' class='xr-section-summary-in' type='checkbox' checked><label for='section-305b294b-3477-4c5d-b8c7-74d10cc3ca56' class='xr-section-summary' >Data variables: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>precip</span></div><div class='xr-var-dims'>(time, latitude, longitude)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(500, 40, 40), meta=np.ndarray&gt;</div><input id='attrs-c60c8965-d413-4acb-a341-3a916a7a0f5f' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-c60c8965-d413-4acb-a341-3a916a7a0f5f' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-3116fc67-623f-49fb-9699-7bf0e8c134d7' class='xr-var-data-in' type='checkbox'><label for='data-3116fc67-623f-49fb-9699-7bf0e8c134d7' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>units :</span></dt><dd>mm/day</dd><dt><span>long_name :</span></dt><dd>Climate Hazards group InfraRed Precipitation with Stations</dd><dt><span>time_step :</span></dt><dd>day</dd><dt><span>standard_name :</span></dt><dd>convective precipitation rate</dd><dt><span>geostatial_lat_max :</span></dt><dd>50.0</dd><dt><span>geostatial_lat_min :</span></dt><dd>-50.0</dd><dt><span>geostatial_lon_max :</span></dt><dd>180.0</dd><dt><span>geostatial_lon_min :</span></dt><dd>-180.0</dd></dl></div><div class='xr-var-data'><table>\n",
" <tr>\n",
" <td>\n",
" <table>\n",
" <thead>\n",
" <tr>\n",
" <td> </td>\n",
" <th> Array </th>\n",
" <th> Chunk </th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" \n",
" <tr>\n",
" <th> Bytes </th>\n",
" <td> 32.65 GiB </td>\n",
" <td> 3.05 MiB </td>\n",
" </tr>\n",
" \n",
" <tr>\n",
" <th> Shape </th>\n",
" <td> (15218, 400, 1440) </td>\n",
" <td> (500, 40, 40) </td>\n",
" </tr>\n",
" <tr>\n",
" <th> Count </th>\n",
" <td> 11161 Tasks </td>\n",
" <td> 11160 Chunks </td>\n",
" </tr>\n",
" <tr>\n",
" <th> Type </th>\n",
" <td> float32 </td>\n",
" <td> numpy.ndarray </td>\n",
" </tr>\n",
" </tbody>\n",
" </table>\n",
" </td>\n",
" <td>\n",
" <svg width=\"168\" height=\"151\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n",
"\n",
" <!-- Horizontal lines -->\n",
" <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n",
" <line x1=\"10\" y1=\"3\" x2=\"80\" y2=\"73\" />\n",
" <line x1=\"10\" y1=\"6\" x2=\"80\" y2=\"76\" />\n",
" <line x1=\"10\" y1=\"9\" x2=\"80\" y2=\"79\" />\n",
" <line x1=\"10\" y1=\"12\" x2=\"80\" y2=\"82\" />\n",
" <line x1=\"10\" y1=\"15\" x2=\"80\" y2=\"85\" />\n",
" <line x1=\"10\" y1=\"18\" x2=\"80\" y2=\"88\" />\n",
" <line x1=\"10\" y1=\"21\" x2=\"80\" y2=\"92\" />\n",
" <line x1=\"10\" y1=\"24\" x2=\"80\" y2=\"95\" />\n",
" <line x1=\"10\" y1=\"27\" x2=\"80\" y2=\"98\" />\n",
" <line x1=\"10\" y1=\"30\" x2=\"80\" y2=\"101\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Vertical lines -->\n",
" <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"30\" style=\"stroke-width:2\" />\n",
" <line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"32\" />\n",
" <line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"37\" />\n",
" <line x1=\"19\" y1=\"9\" x2=\"19\" y2=\"39\" />\n",
" <line x1=\"23\" y1=\"13\" x2=\"23\" y2=\"44\" />\n",
" <line x1=\"28\" y1=\"18\" x2=\"28\" y2=\"49\" />\n",
" <line x1=\"30\" y1=\"20\" x2=\"30\" y2=\"51\" />\n",
" <line x1=\"35\" y1=\"25\" x2=\"35\" y2=\"56\" />\n",
" <line x1=\"40\" y1=\"30\" x2=\"40\" y2=\"60\" />\n",
" <line x1=\"42\" y1=\"32\" x2=\"42\" y2=\"63\" />\n",
" <line x1=\"47\" y1=\"37\" x2=\"47\" y2=\"67\" />\n",
" <line x1=\"49\" y1=\"39\" x2=\"49\" y2=\"70\" />\n",
" <line x1=\"54\" y1=\"44\" x2=\"54\" y2=\"74\" />\n",
" <line x1=\"58\" y1=\"48\" x2=\"58\" y2=\"79\" />\n",
" <line x1=\"61\" y1=\"51\" x2=\"61\" y2=\"81\" />\n",
" <line x1=\"65\" y1=\"55\" x2=\"65\" y2=\"86\" />\n",
" <line x1=\"70\" y1=\"60\" x2=\"70\" y2=\"90\" />\n",
" <line x1=\"72\" y1=\"62\" x2=\"72\" y2=\"93\" />\n",
" <line x1=\"77\" y1=\"67\" x2=\"77\" y2=\"97\" />\n",
" <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"101\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Colored Rectangle -->\n",
" <polygon points=\"10.0,0.0 80.58823529411765,70.58823529411765 80.58823529411765,101.19358123289851 10.0,30.605345938780864\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n",
"\n",
" <!-- Horizontal lines -->\n",
" <line x1=\"10\" y1=\"0\" x2=\"48\" y2=\"0\" style=\"stroke-width:2\" />\n",
" <line x1=\"12\" y1=\"2\" x2=\"50\" y2=\"2\" />\n",
" <line x1=\"16\" y1=\"6\" x2=\"55\" y2=\"6\" />\n",
" <line x1=\"19\" y1=\"9\" x2=\"57\" y2=\"9\" />\n",
" <line x1=\"23\" y1=\"13\" x2=\"62\" y2=\"13\" />\n",
" <line x1=\"28\" y1=\"18\" x2=\"66\" y2=\"18\" />\n",
" <line x1=\"30\" y1=\"20\" x2=\"69\" y2=\"20\" />\n",
" <line x1=\"35\" y1=\"25\" x2=\"73\" y2=\"25\" />\n",
" <line x1=\"40\" y1=\"30\" x2=\"78\" y2=\"30\" />\n",
" <line x1=\"42\" y1=\"32\" x2=\"80\" y2=\"32\" />\n",
" <line x1=\"47\" y1=\"37\" x2=\"85\" y2=\"37\" />\n",
" <line x1=\"49\" y1=\"39\" x2=\"87\" y2=\"39\" />\n",
" <line x1=\"54\" y1=\"44\" x2=\"92\" y2=\"44\" />\n",
" <line x1=\"58\" y1=\"48\" x2=\"96\" y2=\"48\" />\n",
" <line x1=\"61\" y1=\"51\" x2=\"99\" y2=\"51\" />\n",
" <line x1=\"65\" y1=\"55\" x2=\"103\" y2=\"55\" />\n",
" <line x1=\"70\" y1=\"60\" x2=\"108\" y2=\"60\" />\n",
" <line x1=\"72\" y1=\"62\" x2=\"110\" y2=\"62\" />\n",
" <line x1=\"77\" y1=\"67\" x2=\"115\" y2=\"67\" />\n",
" <line x1=\"80\" y1=\"70\" x2=\"118\" y2=\"70\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Vertical lines -->\n",
" <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n",
" <line x1=\"11\" y1=\"0\" x2=\"81\" y2=\"70\" />\n",
" <line x1=\"13\" y1=\"0\" x2=\"83\" y2=\"70\" />\n",
" <line x1=\"15\" y1=\"0\" x2=\"85\" y2=\"70\" />\n",
" <line x1=\"17\" y1=\"0\" x2=\"88\" y2=\"70\" />\n",
" <line x1=\"19\" y1=\"0\" x2=\"90\" y2=\"70\" />\n",
" <line x1=\"21\" y1=\"0\" x2=\"92\" y2=\"70\" />\n",
" <line x1=\"23\" y1=\"0\" x2=\"94\" y2=\"70\" />\n",
" <line x1=\"25\" y1=\"0\" x2=\"96\" y2=\"70\" />\n",
" <line x1=\"28\" y1=\"0\" x2=\"98\" y2=\"70\" />\n",
" <line x1=\"29\" y1=\"0\" x2=\"99\" y2=\"70\" />\n",
" <line x1=\"31\" y1=\"0\" x2=\"101\" y2=\"70\" />\n",
" <line x1=\"33\" y1=\"0\" x2=\"103\" y2=\"70\" />\n",
" <line x1=\"35\" y1=\"0\" x2=\"106\" y2=\"70\" />\n",
" <line x1=\"37\" y1=\"0\" x2=\"108\" y2=\"70\" />\n",
" <line x1=\"39\" y1=\"0\" x2=\"110\" y2=\"70\" />\n",
" <line x1=\"41\" y1=\"0\" x2=\"112\" y2=\"70\" />\n",
" <line x1=\"44\" y1=\"0\" x2=\"114\" y2=\"70\" />\n",
" <line x1=\"46\" y1=\"0\" x2=\"116\" y2=\"70\" />\n",
" <line x1=\"48\" y1=\"0\" x2=\"118\" y2=\"70\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Colored Rectangle -->\n",
" <polygon points=\"10.0,0.0 48.28845059173565,0.0 118.8766858858533,70.58823529411765 80.58823529411765,70.58823529411765\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n",
"\n",
" <!-- Horizontal lines -->\n",
" <line x1=\"80\" y1=\"70\" x2=\"118\" y2=\"70\" style=\"stroke-width:2\" />\n",
" <line x1=\"80\" y1=\"73\" x2=\"118\" y2=\"73\" />\n",
" <line x1=\"80\" y1=\"76\" x2=\"118\" y2=\"76\" />\n",
" <line x1=\"80\" y1=\"79\" x2=\"118\" y2=\"79\" />\n",
" <line x1=\"80\" y1=\"82\" x2=\"118\" y2=\"82\" />\n",
" <line x1=\"80\" y1=\"85\" x2=\"118\" y2=\"85\" />\n",
" <line x1=\"80\" y1=\"88\" x2=\"118\" y2=\"88\" />\n",
" <line x1=\"80\" y1=\"92\" x2=\"118\" y2=\"92\" />\n",
" <line x1=\"80\" y1=\"95\" x2=\"118\" y2=\"95\" />\n",
" <line x1=\"80\" y1=\"98\" x2=\"118\" y2=\"98\" />\n",
" <line x1=\"80\" y1=\"101\" x2=\"118\" y2=\"101\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Vertical lines -->\n",
" <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"101\" style=\"stroke-width:2\" />\n",
" <line x1=\"81\" y1=\"70\" x2=\"81\" y2=\"101\" />\n",
" <line x1=\"83\" y1=\"70\" x2=\"83\" y2=\"101\" />\n",
" <line x1=\"85\" y1=\"70\" x2=\"85\" y2=\"101\" />\n",
" <line x1=\"88\" y1=\"70\" x2=\"88\" y2=\"101\" />\n",
" <line x1=\"90\" y1=\"70\" x2=\"90\" y2=\"101\" />\n",
" <line x1=\"92\" y1=\"70\" x2=\"92\" y2=\"101\" />\n",
" <line x1=\"94\" y1=\"70\" x2=\"94\" y2=\"101\" />\n",
" <line x1=\"96\" y1=\"70\" x2=\"96\" y2=\"101\" />\n",
" <line x1=\"98\" y1=\"70\" x2=\"98\" y2=\"101\" />\n",
" <line x1=\"99\" y1=\"70\" x2=\"99\" y2=\"101\" />\n",
" <line x1=\"101\" y1=\"70\" x2=\"101\" y2=\"101\" />\n",
" <line x1=\"103\" y1=\"70\" x2=\"103\" y2=\"101\" />\n",
" <line x1=\"106\" y1=\"70\" x2=\"106\" y2=\"101\" />\n",
" <line x1=\"108\" y1=\"70\" x2=\"108\" y2=\"101\" />\n",
" <line x1=\"110\" y1=\"70\" x2=\"110\" y2=\"101\" />\n",
" <line x1=\"112\" y1=\"70\" x2=\"112\" y2=\"101\" />\n",
" <line x1=\"114\" y1=\"70\" x2=\"114\" y2=\"101\" />\n",
" <line x1=\"116\" y1=\"70\" x2=\"116\" y2=\"101\" />\n",
" <line x1=\"118\" y1=\"70\" x2=\"118\" y2=\"101\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Colored Rectangle -->\n",
" <polygon points=\"80.58823529411765,70.58823529411765 118.8766858858533,70.58823529411765 118.8766858858533,101.19358123289851 80.58823529411765,101.19358123289851\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n",
"\n",
" <!-- Text -->\n",
" <text x=\"99.732461\" y=\"121.193581\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >1440</text>\n",
" <text x=\"138.876686\" y=\"85.890908\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,138.876686,85.890908)\">400</text>\n",
" <text x=\"35.294118\" y=\"85.899464\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,35.294118,85.899464)\">15218</text>\n",
"</svg>\n",
" </td>\n",
" </tr>\n",
"</table></div></li></ul></div></li><li class='xr-section-item'><input id='section-a059696c-3f30-428b-8b59-e99f2190ef3b' class='xr-section-summary-in' type='checkbox' ><label for='section-a059696c-3f30-428b-8b59-e99f2190ef3b' class='xr-section-summary' >Attributes: <span>(24)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>CDI :</span></dt><dd>Climate Data Interface version 1.9.9rc1 (https://mpimet.mpg.de/cdi)</dd><dt><span>CDO :</span></dt><dd>Climate Data Operators version 1.9.9rc1 (https://mpimet.mpg.de/cdo)</dd><dt><span>EPSG :</span></dt><dd>4326</dd><dt><span>name :</span></dt><dd>chirps_final_25</dd><dt><span>tags :</span></dt><dd>[&#x27;Precipitation&#x27;]</dd><dt><span>title :</span></dt><dd>CHIRPS Version 2.0</dd><dt><span>created :</span></dt><dd>2022-09-22T19:42:28Z</dd><dt><span>license :</span></dt><dd>Creative Commons Attribution 3.0</dd><dt><span>updated :</span></dt><dd>2022-09-22 18:46:23.882203</dd><dt><span>revision :</span></dt><dd>final</dd><dt><span>publisher :</span></dt><dd>Climate Hazards Group, University of California at Santa Barbara</dd><dt><span>date range :</span></dt><dd>[&#x27;1981010100&#x27;, &#x27;2022083100&#x27;]</dd><dt><span>provider url :</span></dt><dd>http://chg.geog.ucsb.edu/</dd><dt><span>missing value :</span></dt><dd>-9999</dd><dt><span>update cadence :</span></dt><dd>monthly</dd><dt><span>climate variable :</span></dt><dd>total precipitation</dd><dt><span>terms of service :</span></dt><dd>To the extent possible under the law, Pete Peterson has waived all copyright and related or neighboring rights to CHIRPS. CHIRPS data is in the public domain as registered with Creative Commons.</dd><dt><span>data download url :</span></dt><dd>https://data.chc.ucsb.edu/products/CHIRPS-2.0</dd><dt><span>spatial precision :</span></dt><dd>1e-05</dd><dt><span>spatial resolution :</span></dt><dd>0.25</dd><dt><span>dataset description :</span></dt><dd>Climate Hazards center InfraRed Precipitation with Station data (CHIRPS) is a 30+ year quasi-global rainfall data set. Spanning 50°S-50°N (and all longitudes), starting in 1981 to near-present, CHIRPS incorporates 0.05° resolution satellite imagery with in-situ station data to create gridded rainfall time series for trend analysis and seasonal drought monitoring. For more information about CHIRPS data, visit http://chg.geog.ucsb.edu/data/chirps/index.html or http://chg-wiki.geog.ucsb.edu/wiki/CHIRPS_FAQ. For full technical documentation visit http://pubs.usgs.gov/ds/832/</dd><dt><span>temporal resolution :</span></dt><dd>daily</dd><dt><span>unit of measurement :</span></dt><dd>mm</dd><dt><span>provider description :</span></dt><dd>The Climate Hazards Center is an alliance of multidisciplinary scientists and food security analysts utilizing climate and crop models, satellite-based earth observations, and socioeconomic data sets to predict and monitor droughts and food shortages among the world&#x27;s most vulnerable populations. Through partnerships with USAID, USGS, and FEWS NET, the CHC provides early warning to save lives and secure livelihoods.</dd></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.Dataset>\n",
"Dimensions: (latitude: 400, longitude: 1440, time: 15218)\n",
"Coordinates:\n",
" * latitude (latitude) float32 -49.88 -49.62 -49.38 ... 49.38 49.62 49.88\n",
" * longitude (longitude) float32 -179.9 -179.6 -179.4 ... 179.4 179.6 179.9\n",
" * time (time) datetime64[ns] 1981-01-01 1981-01-02 ... 2022-08-31\n",
"Data variables:\n",
" precip (time, latitude, longitude) float32 dask.array<chunksize=(500, 40, 40), meta=np.ndarray>\n",
"Attributes: (12/24)\n",
" CDI: Climate Data Interface version 1.9.9rc1 (https://m...\n",
" CDO: Climate Data Operators version 1.9.9rc1 (https://m...\n",
" EPSG: 4326\n",
" name: chirps_final_25\n",
" tags: ['Precipitation']\n",
" title: CHIRPS Version 2.0\n",
" ... ...\n",
" spatial precision: 1e-05\n",
" spatial resolution: 0.25\n",
" dataset description: Climate Hazards center InfraRed Precipitation with...\n",
" temporal resolution: daily\n",
" unit of measurement: mm\n",
" provider description: The Climate Hazards Center is an alliance of multi..."
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"xar"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"#define query (single point)\n",
"from datetime import datetime\n",
"LAT = 40\n",
"LONG = -119.010\n",
"START = \"2022-05-10T00:00:00.000000000\"\n",
"FINISH = \"2022-08-31T00:00:00.000000000\""
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"#find_closest function to find closest lat/long in our xarray\n",
"import numpy as np\n",
"def find_closest(A, target):\n",
" #A must be sorted\n",
" idx = A.searchsorted(target)\n",
" idx = np.clip(idx, 1, len(A)-1)\n",
" left = A[idx-1]\n",
" right = A[idx]\n",
" idx -= target - left < right - target\n",
" return idx"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"#gives id of closest lat/long\n",
"latlong = [find_closest(xar.coords['latitude'].values, LAT), find_closest(xar.coords['longitude'].values, LONG)]\n",
"#gives id of daterange\n",
"daterange = [np.where(xar.coords['time'].values.astype('str') == START)[0][0],np.where(xar.coords['time'].values.astype('str') == FINISH)[0][0]]"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"#take subset corresponding to query \n",
"query = xar.isel(latitude=latlong[0], longitude=latlong[1], time=slice(daterange[0], daterange[1]))"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7fd68f355520>]"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1008x504 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import matplotlib as plt \n",
"plt.rcParams['figure.figsize'] = [14, 7]\n",
"plt.pyplot.plot(query.time.values, query.precip.values)\n"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"#define query (min/max lat/long)\n",
"from datetime import datetime\n",
"MIN_LAT = 36\n",
"MAX_LAT = 39.7\n",
"MIN_LONG = -106.510\n",
"MAX_LONG = -103.74\n",
"START = \"2022-05-10T00:00:00.000000000\"\n",
"FINISH = \"2022-08-31T00:00:00.000000000\""
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"import itertools\n",
"#gives ids of valid lats/longs\n",
"lats = np.where(np.logical_and(xar.coords['latitude']>=MIN_LAT, xar.coords['latitude']<=MAX_LAT))[0].tolist()\n",
"longs = np.where(np.logical_and(xar.coords['longitude']>=MIN_LONG, xar.coords['longitude']<=MAX_LONG))[0].tolist()\n",
"#gives id of daterange\n",
"daterange = [np.where(xar.coords['time'].values.astype('str') == START)[0][0],np.where(xar.coords['time'].values.astype('str') == FINISH)[0][0]]"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"#take subset corresponding to query \n",
"query = xar.isel(latitude=lats, longitude=longs, time=slice(daterange[0], daterange[1]))"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"query = query.mean(dim=[\"latitude\", \"longitude\"])"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7fd679122580>]"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1008x504 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.pyplot.plot(query.time.values, query.precip.values)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"colab": {
"collapsed_sections": [],
"provenance": []
},
"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.9.12"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment