Skip to content

Commit 86c32f5

Browse files
committed
chore: remove napari_tools folder
1 parent 83f17ca commit 86c32f5

File tree

3 files changed

+3426
-0
lines changed

3 files changed

+3426
-0
lines changed

demo/notebooks/_experimental/1_image_loading.ipynb

Lines changed: 718 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 354 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,354 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "raw",
5+
"id": "946884e8-1853-4c81-9dc8-5737204ac507",
6+
"metadata": {
7+
"editable": true,
8+
"slideshow": {
9+
"slide_type": ""
10+
},
11+
"tags": []
12+
},
13+
"source": [
14+
"# Writing an ome-zarr to the cloud\n",
15+
"\n",
16+
"In this notebook we will create a artificial image and save it to cloud storage."
17+
]
18+
},
19+
{
20+
"cell_type": "code",
21+
"execution_count": 1,
22+
"id": "05ad5179-6cf8-4f50-9dd7-0c35f4b41083",
23+
"metadata": {
24+
"editable": true,
25+
"slideshow": {
26+
"slide_type": ""
27+
},
28+
"tags": []
29+
},
30+
"outputs": [],
31+
"source": [
32+
"import ngff_zarr as nz\n",
33+
"import gcsfs\n",
34+
"import numpy as np\n",
35+
"import zarr\n",
36+
"import neuroglancer\n",
37+
"import matplotlib.pyplot as plt\n",
38+
"\n",
39+
"from IPython.display import display, HTML"
40+
]
41+
},
42+
{
43+
"cell_type": "code",
44+
"execution_count": 2,
45+
"id": "270f0185-2468-4217-a2c4-ad9c8781e7ca",
46+
"metadata": {},
47+
"outputs": [],
48+
"source": [
49+
"# Output path to use for the example below\n",
50+
"# The user running this process will need to be authenticated\n",
51+
"# gcloud auth login\n",
52+
"# and have write access to this bucket\n",
53+
"gcs_base = \"gs://ome-2025-test-data/ex1/out\""
54+
]
55+
},
56+
{
57+
"cell_type": "code",
58+
"execution_count": 3,
59+
"id": "373a0084-2732-4d8c-960c-52ba000cfbc7",
60+
"metadata": {},
61+
"outputs": [],
62+
"source": [
63+
"# Create a very exciting array: a 3D checker board\n",
64+
"array = np.fromfunction(\n",
65+
" lambda i, j, k: ((i//8 + j//8 + k//8) % 2) * 255,\n",
66+
" (256, 1024, 1024),\n",
67+
" dtype=np.uint8)"
68+
]
69+
},
70+
{
71+
"cell_type": "code",
72+
"execution_count": 4,
73+
"id": "fe0870a9-6747-44d9-bd23-f785d5c9cf83",
74+
"metadata": {
75+
"editable": true,
76+
"slideshow": {
77+
"slide_type": ""
78+
},
79+
"tags": []
80+
},
81+
"outputs": [
82+
{
83+
"data": {
84+
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGgCAYAAADsNrNZAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAGPZJREFUeJzt3Q1sVfX9wOHfxUJhQoviaGWCojFBRaOiIrhsySAjzs0xmZsJbviSLXOovKhTZmBZFEu2zE0XX6ZxusS3STLfWDZD0JHpEBQnkzkri2QwXatmo/WNYuj55xz/baigCPT22/Y+T3JD772H3nvOuT2fnnN/p7eUZVmWAKCHDejpBwQAAQIgjD0gAEIIEAAhBAiAEAIEQAgBAiCEAAEQQoAACCFAAPSvAN10003psMMOS4MHD04TJ05Ma9asKddDAdAHlcrxt+B++9vfpm9/+9vp1ltvLeLzi1/8Ii1dujQ1NjamkSNHfuz/bW9vT6+99loaNmxYKpVK3f3UACizPCtvvfVWGjVqVBow4GP2c7IyOOWUU7LZs2d3Xt++fXs2atSorKGhYbf/d/PmzXkQXSwDrwGvAa+B1LeXQb49/zhV3V2+bdu2pbVr16YFCxZ03pYXcOrUqWnVqlU7Td/W1lZcdixnlJaWlh5/zNra2hTBvPbPdRuxXnPmtfxa+uD2KT+S9XG6PUBvvvlm2r59e6qrq+tye379pZde2mn6hoaG9OMf/zj1BjU1NalSmNf+yXrtv2r64PZpd2+jhI+Cy/eU8rJ3XDZv3hz9lADoAd2+B3TQQQel/fbbLzU3N3e5Pb9eX1+/0/TV1dXFBYDK0u17QIMGDUoTJkxIK1as6DKyLb8+adKk7n44APqobt8Dys2fPz/NmjUrnXTSSemUU04phmG/88476fzzzy/HwwHQB5UlQN/85jfTG2+8kRYtWpSamprS8ccfn/74xz/uNDABgMpVlhNR90Vra2vY0OSIRRF1sq157Z/rNurH2byWX9YHt0/5wLKPG70XPgoOgMokQACEECAAQggQACEECIAQAgRACAECIIQAARBCgAAIIUAAhBAgAEIIEAAhBAiAEAIEQAgBAiCEAAEQQoAACCFAAIQQIABCCBAAIapSL9XS0pJqamp69DFLpVLqaVmWpQjmtX+u24j1mjOv5VfqQ9un1tbWVFtbu9vp7AEBEEKAAAghQACEECAAQggQACEECIAQAgRACAECIIQAARBCgAAIIUAAhBAgAEIIEAAhBAiAEAIEQAgBAkCAAKgc9oAACCFAAIQQIABCCBAAIQQIgBACBEAIAQIghAABEEKAAAghQACEECAAQlSlXqq2trbHHzPLsh5/zFKplCKY1/65biPWa868ll/WD7dP9oAACCFAAIQQIABCCBAAIQQIgBACBEAIAQIghAABEEKAAAghQACEECAAQggQACEECIDeH6CGhoZ08sknp2HDhqWRI0em6dOnp8bGxi7TbN26Nc2ePTuNGDEiDR06NM2YMSM1Nzd39/MGoJICtHLlyiIuTz/9dFq+fHl6//330xe/+MX0zjvvdE4zb9689Oijj6alS5cW07/22mvprLPOKsdzB6APK2X78CETb7zxRrEnlIfmc5/7XGppaUmf/vSn07333pu+/vWvF9O89NJL6aijjkqrVq1Kp5566k7fo62trbh0aG1tTaNHj04R+uPnbXwU81p+PiOnvCrps4/66s9s3oSampryvAeUf/PcgQceWPy7du3aYq9o6tSpndOMGzcujRkzpgjQRx3Wyz98ruMSFR8AetZeB6i9vT3NnTs3nXbaaWn8+PHFbU1NTWnQoEFp+PDhXaatq6sr7tuVBQsWFCHruGzevHlvnxIAlfCR3Pl7QevXr09PPvnkPj2B6urq4gJAZdmrPaCLL744LVu2LD3xxBPpkEMO6by9vr4+bdu2LW3ZsqXL9PkouPw+ANirAOVvguXxefDBB9Pjjz+exo4d2+X+CRMmpIEDB6YVK1Z03pYP0960aVOaNGnSnjwUAP1c1Z4edstHuD388MPFuUAd7+vkgweGDBlS/HvhhRem+fPnFwMT8tEPl1xySRGfXY2AA6By7dEw7I8aknfnnXem8847r/NE1Msuuyzdd999xfDqadOmpZtvvvkTH4LLh2HnIYvQF4c57i3zWn6GYZeXYdh9fxj2Pp0HVA4C1DMEqPwEqLwEqMLPAwKAvSVAAIQQIABCCBAAIQQIgL71p3jKbXejJ8rBqKXyMmqp/AzrL79Keh1nezmvn3Q0sz0gAEIIEAAhBAiAEAIEQAgBAiCEAAEQQoAACCFAAIQQIABCCBAAIQQIgBACBEAIAQIghAABEEKAAAghQAAIEACVwx4QACEECIAQAgRACAECIIQAARBCgAAIIUAAhBAgAEIIEAAhBAiAEAIEQIiq1EvV1tb2+GNmWdbjj1kqlVIE89o/123Ees2Z1/LL+uH2yR4QACEECIAQAgRACAECIIQAARBCgAAIIUAAhBAgAEIIEAAhBAiAEAIEQAgBAiCEAAEQQoAACCFAAIQQIABCCBAAIQQIgBACBEAIAQIghAABEEKAAAghQACEECAAQggQACEECIAQAgRACAECoO8FaMmSJalUKqW5c+d23rZ169Y0e/bsNGLEiDR06NA0Y8aM1Nzc3B3PFYB+pGpv/+MzzzyTfvWrX6Xjjjuuy+3z5s1Lv//979PSpUtTbW1tuvjii9NZZ52VnnrqqT36/i0tLammpib1pDymPS3LshTBvPbPdRuxXnPmtfxKfWj71NraWmz/y7IH9Pbbb6eZM2em22+/PR1wwAFdonHHHXek66+/Pn3hC19IEyZMSHfeeWf6y1/+kp5++uldfq+2trbiye54AaD/26sA5YfYzjjjjDR16tQut69duza9//77XW4fN25cGjNmTFq1atUuv1dDQ0NRyo7L6NGj9+YpAdDfA3T//fen5557rgjHhzU1NaVBgwal4cOHd7m9rq6uuG9XFixYUOw5dVw2b968p08JgP7+HlAehzlz5qTly5enwYMHd8sTqK6uLi4AVJY92gPKD7G9/vrr6cQTT0xVVVXFZeXKlenGG28svs73dLZt25a2bNnS5f/lo+Dq6+u7+7kDUCl7QFOmTEkvvPBCl9vOP//84n2eK6+8snj/ZuDAgWnFihXF8OtcY2Nj2rRpU5o0aVL3PnMAKidAw4YNS+PHj+9y2/7771+c89Nx+4UXXpjmz5+fDjzwwGIY9SWXXFLE59RTT+3eZw5AZZ4H9FF+/vOfpwEDBhR7QPkQ62nTpqWbb765ux8GgD6ulEWdCbmbE5iciFpefemktn3l5MzycyJq+ZX60M/sJ92O+1twAIQQIABCCBAAIQQIgBACBEAIAQIghAABEEKAAAghQACEECAAQggQACEECIAQAgRACAECIIQAARBCgAAIIUAAhBAgAEIIEAAhBAiAEFWpl6qtre3xx8yyrMcfs1QqpQjmtX+u24j1mjOv5Zf1w+2TPSAAQggQACEECIAQAgRACAECIIQAARBCgAAIIUAAhBAgAEIIEAAhBAiAEAIEQAgBAiCEAAEQQoAACCFAAIQQIABCCBAAIQQIgBACBEAIAQIghAABEEKAAAghQACEECAAQggQACEECIAQAgRAiKrUS7W0tKSampoefcxSqZR6WpZlKYJ57Z/rNmK95sxr+ZX60PaptbU11dbW7nY6e0AAhBAgAEIIEAAhBAiAEAIEQAgBAiCEAAEQQoAACCFAAIQQIABCCBAAIQQIgBACBEDfCNCrr76azj333DRixIg0ZMiQdOyxx6Znn322y19PXbRoUTr44IOL+6dOnZo2bNjQ3c8bgEoK0P/+97902mmnpYEDB6Y//OEP6cUXX0w/+9nP0gEHHNA5zU9+8pN04403pltvvTWtXr067b///mnatGlp69at5Xj+APRRpWwPPvDhqquuSk899VT685//vMv78281atSodNlll6XLL7+883N96urq0l133ZXOOeecnf5PW1tbcdnxcyRGjx7t84DKrC99tsi+8hk55efzgMqv1Ac/D2h3n+u2R3tAjzzySDrppJPS2WefnUaOHJlOOOGEdPvtt3fev3HjxtTU1FQcduuQP4mJEyemVatW7fJ7NjQ0FNN0XPL4AND/7VGAXnnllXTLLbekI488Mj322GPpoosuSpdeemn6zW9+U9yfxyeX7/HsKL/ecd+HLViwoKhkx2Xz5s17PzcA9M+P5G5vby/2gK677rrier4HtH79+uL9nlmzZu3VE6iuri4uAFSWPdoDyke2HX300V1uO+qoo9KmTZuKr+vr64t/m5ubu0yTX++4DwD2OED5CLjGxsYut7388svp0EMPLb4eO3ZsEZoVK1Z0eTMqHw03adIkSxyAvTsEN2/evDR58uTiENw3vvGNtGbNmnTbbbcVl45RGnPnzk3XXntt8T5RHqSFCxcWI+OmT5++Jw8FQH+X7aFHH300Gz9+fFZdXZ2NGzcuu+2227rc397eni1cuDCrq6srppkyZUrW2Nj4ib9/S0tLPu6v+Len5Y/b05co5rV/rtuI9Wpe+++63VufdDu+R+cB9YRPOn680sfZ7yvzWn7OjSmvSjq/q6/9zJblPCAA6C4CBEAIAQIghAABEEKAAOj95wH1pHwERU8zaqm8jFoqPyO0yq+SXselMs+rPSAAQggQACEECIAQAgRACAECIIQAARBCgAAIIUAAhBAgAEIIEAAhBAiAEAIEQAgBAiCEAAEQQoAACCFAAIQQIABCCBAAIQQIgBACBEAIAQIghAABEEKAAAghQACEECAAQggQACEECIAQAgRAiKrUS7W0tKSampoefcxSqZR6WpZlKYJ57Z/rNmK95sxr+ZX60PaptbU11dbW7nY6e0AAhBAgAEIIEAAhBAiAEAIEQAgBAiCEAAEQQoAACCFAAIQQIABCCBAAIQQIgBACBEAIAQIghAABEEKAAAghQACEECAAQggQACEECIAQAgRACAECIIQAARBCgAAIIUAAhBAgAEIIEAAhBAiA3h+g7du3p4ULF6axY8emIUOGpCOOOCJdc801KcuyzmnyrxctWpQOPvjgYpqpU6emDRs2lOO5A9CXZXtg8eLF2YgRI7Jly5ZlGzduzJYuXZoNHTo0u+GGGzqnWbJkSVZbW5s99NBD2bp167IzzzwzGzt2bPbee+99osdoaWnJaxZyiWBe++d6jVq35rV/rtfUR7dP+fb845T+/0E+kS9/+cuprq4u3XHHHZ23zZgxo9jTufvuu4u9n1GjRqXLLrssXX755cX9LS0txf+566670jnnnLPT92xraysuHVpbW9Po0aNThD1YFN2mVCqlCOa1f67biPWaM6/ll/XB7VO+/a+pqemeQ3CTJ09OK1asSC+//HJxfd26denJJ59Mp59+enF948aNqampqTjs1qG2tjZNnDgxrVq1apffs6GhoZim4xIVHwB6VtWeTHzVVVcVeyjjxo1L++23X/Ge0OLFi9PMmTOL+/P45PI9nh3l1zvu+7AFCxak+fPn94o9IAB6aYAeeOCBdM8996R77703HXPMMen5559Pc+fOLQ67zZo1a6+eQHV1dXEBoLLsUYCuuOKKYi+o472cY489Nv3rX/8qDqPlAaqvry9ub25uLkbBdcivH3/88d393AHow/boPaB33303DRjQ9b/kh+La29uLr/Ph2XmE8veJdjyktnr16jRp0qTues4AVNoe0Fe+8pXiPZ8xY8YUh+D++te/puuvvz5dcMEFnSMm8kNy1157bTryyCOLIOXnDeWH6KZPn16ueQCgL9qTMeGtra3ZnDlzsjFjxmSDBw/ODj/88Ozqq6/O2traOqdpb2/PFi5cmNXV1WXV1dXZlClTssbGxk/8GM4Dck5Bfzh/Ilcp54qY1/67blNvOg+oJ+SH7PLh2BH64jj7vWVey8+5MeVVSec89dWf2W49DwgAuosAARBCgAAIIUAAhBAgAEIIEAAhBAiAEAIEQAgBAiCEAAEQQoAACCFAAIQQIABCCBAAIQQIgBACBEAIAQIghAABEEKAAAghQACEqEq9VEtLS6qpqenRxyyVSqmnZVmWIpjX/rluI9ZrzryWX6kPbZ9aW1tTbW3tbqezBwRACAECIIQAARBCgAAIIUAAhBAgAEIIEAAhBAiAEAIEQAgBAiCEAAEQQoAACCFAAIQQIABCCBAAIQQIgBACBEAIAQIghAABEEKAAAghQACEECAAQggQACEECIAQAgRACAECIIQAARBCgAAIUZV6qdra2h5/zCzLevwxS6VSimBe++e6jVivOfNaflk/3D7ZAwIghAABEEKAAAghQACEECAAQggQACEECIAQAgRACAECIIQAARBCgAAIIUAAhBAgAEL0ur+GHfXXfHOtra2pUpjX/sl67b9a++D2aXfb81IWucXfhX//+99p9OjR0U8DgH20efPmdMghh/SdALW3t6fXXnutKOeYMWOKGaipqYl+Wr36t6I82JaT5eT15Oeut8i332+99VYaNWpUGjBgQN85BJc/2byYHbubeXwEaPcsp0/GcrKcupPX0759qKhBCACEECAAQvTaAFVXV6cf/ehHxb9YTl5Pfu56E9un7tHrBiEAUBl67R4QAP2bAAEQQoAACCFAAIQQIABC9NoA3XTTTemwww5LgwcPThMnTkxr1qxJlaqhoSGdfPLJadiwYWnkyJFp+vTpqbGxscs0W7duTbNnz04jRoxIQ4cOTTNmzEjNzc2pki1ZsiSVSqU0d+7cztsspw+8+uqr6dxzzy1eL0OGDEnHHntsevbZZzuXUz44dtGiRenggw8u7p86dWrasGFDqiTbt29PCxcuTGPHji2WwRFHHJGuueaaLn9g03LaR1kvdP/992eDBg3Kfv3rX2d///vfs+985zvZ8OHDs+bm5qwSTZs2Lbvzzjuz9evXZ88//3z2pS99KRszZkz29ttvd07zve99Lxs9enS2YsWK7Nlnn81OPfXUbPLkyVmlWrNmTXbYYYdlxx13XDZnzpzO2y2nLPvvf/+bHXroodl5552XrV69OnvllVeyxx57LPvnP//ZuZyWLFmS1dbWZg899FC2bt267Mwzz8zGjh2bvffee1mlWLx4cTZixIhs2bJl2caNG7OlS5dmQ4cOzW644YbOaSynfdMrA3TKKadks2fP7ry+ffv2bNSoUVlDQ0Po8+otXn/99fxXsGzlypXF9S1btmQDBw4sfkA6/OMf/yimWbVqVVZp3nrrrezII4/Mli9fnn3+85/vDJDl9IErr7wy++xnP/uRy6+9vT2rr6/PfvrTn3beli+76urq7L777ssqxRlnnJFdcMEFXW4766yzspkzZxZfW077rtcdgtu2bVtau3Ztscu/4x8oza+vWrUq9Ln1Fi0tLcW/Bx54YPFvvrzef//9Lsts3LhxxV8Tr8Rllh+KPOOMM7osj5zl9IFHHnkknXTSSenss88uDumecMIJ6fbbb+9cThs3bkxNTU1dll/+hyXzQ+GV9HqaPHlyWrFiRXr55ZeL6+vWrUtPPvlkOv3004vrltO+63V/DfvNN98sjr3W1dV1uT2//tJLL6VKl39cRf6exmmnnZbGjx9f3JZvLAYNGpSGDx++0zLL76sk999/f3ruuefSM888s9N9ltMHXnnllXTLLbek+fPnpx/+8IfFsrr00kuL19CsWbM6XzO7+hmspNfTVVddVfxV/vyXuf3226/YLi1evDjNnDmzuN9y6ocBYve/3a9fv774TYyu8s9EmjNnTlq+fHkxeIWP/iUm3wO67rrriuv5HlD+mrr11luLAPGBBx54IN1zzz3p3nvvTcccc0x6/vnni1/+8s+4sZy6R687BHfQQQcVv218eARXfr2+vj5VsosvvjgtW7YsPfHEE10+ZTBfLvmhyy1btlT0MssPsb3++uvpxBNPTFVVVcVl5cqV6cYbbyy+zn+Dt5xSMbLt6KOP7rLsjjrqqLRp06bi647XTKX/DF5xxRXFXtA555xTjBL81re+lebNm1eMSs1ZTv0wQPlhgAkTJhTHXnf8jS2/PmnSpFSJ8sEieXwefPDB9PjjjxfDQneUL6+BAwd2WWb5MO18g1JJy2zKlCnphRdeKH5T7bjkv+nnh0w6vracUnH49sPD+PP3OQ499NDi6/z1lW9cd3w95YeiVq9eXVGvp3fffXenT/PMfznOt0c5y6kbZL10GHY+4uauu+7KXnzxxey73/1uMQy7qakpq0QXXXRRMST2T3/6U/af//yn8/Luu+92GV6cD81+/PHHi2HYkyZNKi6VbsdRcDnL6YMh6lVVVcUw4w0bNmT33HNP9qlPfSq7++67uwwvzn/mHn744exvf/tb9tWvfrXihmHPmjUr+8xnPtM5DPt3v/tddtBBB2U/+MEPOqexnPZNrwxQ7pe//GWxQc3PB8qHZT/99NNZpcp/T9jVJT83qEO+Yfj+97+fHXDAAcXG5Gtf+1oRqUr34QBZTh949NFHs/Hjxxe/6I0bNy677bbbuiy3fIjxwoULs7q6umKaKVOmZI2NjVklaW1tLV47+XZo8ODB2eGHH55dffXVWVtbW+c0ltO+8XlAAITode8BAVAZBAiAEAIEQAgBAiCEAAEQQoAACCFAAIQQIABCCBAAIQQIgBACBECK8H8mFydYBtpi/gAAAABJRU5ErkJggg==",
85+
"text/plain": [
86+
"<Figure size 640x480 with 1 Axes>"
87+
]
88+
},
89+
"metadata": {},
90+
"output_type": "display_data"
91+
}
92+
],
93+
"source": [
94+
"# Visualize a small 2D cutout\n",
95+
"plt.imshow(array[0,0:100,0:100], cmap='gray', vmin=0, vmax=255)\n",
96+
"plt.show()"
97+
]
98+
},
99+
{
100+
"cell_type": "code",
101+
"execution_count": 5,
102+
"id": "e09ff8dd-8b4e-458e-8dda-9afc479e0a75",
103+
"metadata": {},
104+
"outputs": [],
105+
"source": [
106+
"# Pass the array into ngff-zarr to add ngff metadata\n",
107+
"image = nz.to_ngff_image(array, dims=['z','y','x'])"
108+
]
109+
},
110+
{
111+
"cell_type": "code",
112+
"execution_count": 6,
113+
"id": "07ce155e-46ac-46e7-b039-205f18f33e7d",
114+
"metadata": {},
115+
"outputs": [],
116+
"source": [
117+
"# Create a multiscales version\n",
118+
"multiscale_image = nz.to_multiscales(image,\n",
119+
" scale_factors=[2,4],\n",
120+
" chunks=64)"
121+
]
122+
},
123+
{
124+
"cell_type": "code",
125+
"execution_count": 7,
126+
"id": "8b2f7732-6b8e-412d-9b5d-883eca8cf25a",
127+
"metadata": {
128+
"editable": true,
129+
"slideshow": {
130+
"slide_type": ""
131+
},
132+
"tags": []
133+
},
134+
"outputs": [
135+
{
136+
"name": "stdout",
137+
"output_type": "stream",
138+
"text": [
139+
"Saving ngff to gs://ome-2025-test-data/ex1/out ...\n",
140+
"Done.\n"
141+
]
142+
}
143+
],
144+
"source": [
145+
"checker_url = f'{gcs_base}/checkerboard.zarr'\n",
146+
"print(f\"Saving ngff to {gcs_base} ...\")\n",
147+
"nz.to_ngff_zarr(checker_url,\n",
148+
" multiscale_image, chunks_per_shard=8,\n",
149+
" version=\"0.5\")\n",
150+
"print(\"Done.\")"
151+
]
152+
},
153+
{
154+
"cell_type": "code",
155+
"execution_count": 8,
156+
"id": "1e45ae1d-d0a3-4d61-bd9b-df2f510b5f22",
157+
"metadata": {},
158+
"outputs": [
159+
{
160+
"name": "stdout",
161+
"output_type": "stream",
162+
"text": [
163+
"\n",
164+
"\n",
165+
"Updates are available for some Google Cloud CLI components. To install them,\n",
166+
"please run:\n",
167+
" $ gcloud components update\n",
168+
"\n",
169+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/:\n",
170+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/zarr.json\n",
171+
"\n",
172+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale0/:\n",
173+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale0/zarr.json\n",
174+
"\n",
175+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale0/image/:\n",
176+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale0/image/zarr.json\n",
177+
"\n",
178+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale0/image/c/:\n",
179+
"\n",
180+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale0/image/c/0/:\n",
181+
"\n",
182+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale0/image/c/0/0/:\n",
183+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale0/image/c/0/0/0\n",
184+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale0/image/c/0/0/1\n",
185+
"\n",
186+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale0/image/c/0/1/:\n",
187+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale0/image/c/0/1/0\n",
188+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale0/image/c/0/1/1\n",
189+
"\n",
190+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale1/:\n",
191+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale1/zarr.json\n",
192+
"\n",
193+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale1/image/:\n",
194+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale1/image/zarr.json\n",
195+
"\n",
196+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale1/image/c/:\n",
197+
"\n",
198+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale1/image/c/0/:\n",
199+
"\n",
200+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale1/image/c/0/0/:\n",
201+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale1/image/c/0/0/0\n",
202+
"\n",
203+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale2/:\n",
204+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale2/zarr.json\n",
205+
"\n",
206+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale2/image/:\n",
207+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale2/image/zarr.json\n",
208+
"\n",
209+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale2/image/c/:\n",
210+
"\n",
211+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale2/image/c/0/:\n",
212+
"\n",
213+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale2/image/c/0/0/:\n",
214+
"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/scale2/image/c/0/0/0\n"
215+
]
216+
}
217+
],
218+
"source": [
219+
"# List the files generated\n",
220+
"!gsutil ls -r $checker_url"
221+
]
222+
},
223+
{
224+
"cell_type": "markdown",
225+
"id": "99434b9f-6d7a-4bdc-aa2a-49a9e078a2a6",
226+
"metadata": {},
227+
"source": [
228+
"## Web-based viewers\n",
229+
"\n",
230+
"Once data has been saved to the cloud, we can immediately use web based viewers to examine.\n",
231+
"\n",
232+
"_Note_: This assumes that the storage layer has public object access enabled and CORS heaeders set."
233+
]
234+
},
235+
{
236+
"cell_type": "code",
237+
"execution_count": 9,
238+
"id": "0d38fb48-0402-4044-941f-e677dfe1b40e",
239+
"metadata": {},
240+
"outputs": [],
241+
"source": [
242+
"# Let's view the data\n",
243+
"# Rewrite the gcs url to it's public https form\n",
244+
"https_url = checker_url.replace(\"gs://\", \"https://storage.googleapis.com/\")"
245+
]
246+
},
247+
{
248+
"cell_type": "code",
249+
"execution_count": 10,
250+
"id": "18704cee-b661-4fab-af00-14dc6816c23a",
251+
"metadata": {},
252+
"outputs": [
253+
{
254+
"data": {
255+
"text/html": [
256+
"<a href=\"https://ome.github.io/ome-ngff-validator/?source=https://storage.googleapis.com/ome-2025-test-data/ex1/out/checkerboard.zarr\">View NGFF Validator</a>"
257+
],
258+
"text/plain": [
259+
"<IPython.core.display.HTML object>"
260+
]
261+
},
262+
"metadata": {},
263+
"output_type": "display_data"
264+
}
265+
],
266+
"source": [
267+
"# OME NGFF Validator\n",
268+
"validator_url = f\"https://ome.github.io/ome-ngff-validator/?source={https_url}\"\n",
269+
"display(HTML(f'<a href=\"{validator_url}\">View NGFF Validator</a>'))"
270+
]
271+
},
272+
{
273+
"cell_type": "code",
274+
"execution_count": 11,
275+
"id": "021a9a97-03b0-440d-9def-51aaaf308bbf",
276+
"metadata": {},
277+
"outputs": [
278+
{
279+
"data": {
280+
"text/html": [
281+
"<a href=\"https://biongff.github.io/biongff-viewer/?source=https://storage.googleapis.com/ome-2025-test-data/ex1/out/checkerboard.zarr\">View in biongff</a>"
282+
],
283+
"text/plain": [
284+
"<IPython.core.display.HTML object>"
285+
]
286+
},
287+
"metadata": {},
288+
"output_type": "display_data"
289+
}
290+
],
291+
"source": [
292+
"# biongff: https://github.com/BioNGFF/biongff-viewer\n",
293+
"biongff_url = f\"https://biongff.github.io/biongff-viewer/?source={https_url}\"\n",
294+
"display(HTML(f'<a href=\"{biongff_url}\">View in biongff</a>'))"
295+
]
296+
},
297+
{
298+
"cell_type": "code",
299+
"execution_count": 12,
300+
"id": "c439c679-2d3c-4435-812b-12a427ae41ab",
301+
"metadata": {},
302+
"outputs": [
303+
{
304+
"data": {
305+
"text/html": [
306+
"<a href=\"https://neuroglancer-demo.appspot.com#!%7B%22layers%22:%5B%7B%22type%22:%22image%22,%22source%22:%22gs://ome-2025-test-data/ex1/out/checkerboard.zarr/%7Czarr3:%22,%22tab%22:%22source%22,%22name%22:%22checkerboard.zarr%22%7D%5D%7D\">View in neuroglancer</a>"
307+
],
308+
"text/plain": [
309+
"<IPython.core.display.HTML object>"
310+
]
311+
},
312+
"metadata": {},
313+
"output_type": "display_data"
314+
}
315+
],
316+
"source": [
317+
"# neuroglancer: generate a state and encode it into the url\n",
318+
"ng_state = {\n",
319+
" \"layers\": [\n",
320+
" {\n",
321+
" \"type\": \"image\",\n",
322+
" \"source\": \"gs://ome-2025-test-data/ex1/out/checkerboard.zarr/|zarr3:\",\n",
323+
" \"tab\": \"source\",\n",
324+
" \"name\": \"checkerboard.zarr\"\n",
325+
" }\n",
326+
" ]\n",
327+
"}\n",
328+
"ng_url = neuroglancer.url_state.to_url(ng_state)\n",
329+
"display(HTML(f'<a href=\"{ng_url}\">View in neuroglancer</a>'))"
330+
]
331+
}
332+
],
333+
"metadata": {
334+
"kernelspec": {
335+
"display_name": "Python 3 (ipykernel)",
336+
"language": "python",
337+
"name": "python3"
338+
},
339+
"language_info": {
340+
"codemirror_mode": {
341+
"name": "ipython",
342+
"version": 3
343+
},
344+
"file_extension": ".py",
345+
"mimetype": "text/x-python",
346+
"name": "python",
347+
"nbconvert_exporter": "python",
348+
"pygments_lexer": "ipython3",
349+
"version": "3.13.7"
350+
}
351+
},
352+
"nbformat": 4,
353+
"nbformat_minor": 5
354+
}

0 commit comments

Comments
 (0)