|
136 | 136 | "source": [ |
137 | 137 | "%%capture\n", |
138 | 138 | "\n", |
139 | | - "ds_out_out = xr.open_zarr(\"DelayParticle_time.zarr\", decode_times=False)\n", |
| 139 | + "ds_out = xr.open_zarr(\"DelayParticle_time.zarr\")\n", |
140 | 140 | "\n", |
141 | 141 | "fig = plt.figure(figsize=(7, 5), constrained_layout=True)\n", |
142 | 142 | "ax = fig.add_subplot()\n", |
|
146 | 146 | "ax.set_xlim(31, 33)\n", |
147 | 147 | "ax.set_ylim(-32, -30)\n", |
148 | 148 | "\n", |
149 | | - "timerange = np.unique(ds_out_out[\"time\"].values[np.isfinite(ds_out_out[\"time\"])])\n", |
| 149 | + "timerange = np.unique(ds_out[\"time\"].values[np.isfinite(ds_out[\"time\"])])\n", |
150 | 150 | "\n", |
151 | 151 | "# Indices of the data where time = 0\n", |
152 | | - "time_id = np.where(ds_out_out[\"time\"] == timerange[0])\n", |
| 152 | + "time_id = np.where(ds_out[\"time\"] == timerange[0])\n", |
153 | 153 | "\n", |
154 | | - "sc = ax.scatter(ds_out_out[\"lon\"].values[time_id], ds_out_out[\"lat\"].values[time_id])\n", |
| 154 | + "sc = ax.scatter(ds_out[\"lon\"].values[time_id], ds_out[\"lat\"].values[time_id])\n", |
155 | 155 | "\n", |
156 | | - "t = str(timerange[0].astype(\"timedelta64[h]\"))\n", |
| 156 | + "t = timerange[0].astype(\"datetime64[h]\")\n", |
157 | 157 | "title = ax.set_title(f\"Particles at t = {t}\")\n", |
158 | 158 | "\n", |
159 | 159 | "\n", |
160 | 160 | "def animate(i):\n", |
161 | | - " t = str(timerange[i].astype(\"timedelta64[h]\"))\n", |
| 161 | + " t = timerange[i].astype(\"datetime64[h]\")\n", |
162 | 162 | " title.set_text(f\"Particles at t = {t}\")\n", |
163 | 163 | "\n", |
164 | | - " time_id = np.where(ds_out_out[\"time\"] == timerange[i])\n", |
165 | | - " sc.set_offsets(\n", |
166 | | - " np.c_[ds_out_out[\"lon\"].values[time_id], ds_out_out[\"lat\"].values[time_id]]\n", |
167 | | - " )\n", |
| 164 | + " time_id = np.where(ds_out[\"time\"] == timerange[i])\n", |
| 165 | + " sc.set_offsets(np.c_[ds_out[\"lon\"].values[time_id], ds_out[\"lat\"].values[time_id]])\n", |
168 | 166 | "\n", |
169 | 167 | "\n", |
170 | 168 | "anim = FuncAnimation(fig, animate, frames=len(timerange), interval=100)" |
|
278 | 276 | "source": [ |
279 | 277 | "%%capture\n", |
280 | 278 | "\n", |
281 | | - "ds_out = xr.open_zarr(\"DelayParticle_releasedt.zarr\", decode_times=False)\n", |
| 279 | + "ds_out = xr.open_zarr(\"DelayParticle_releasedt.zarr\")\n", |
282 | 280 | "\n", |
283 | 281 | "fig = plt.figure(figsize=(7, 5), constrained_layout=True)\n", |
284 | 282 | "ax = fig.add_subplot()\n", |
|
295 | 293 | "\n", |
296 | 294 | "sc = ax.scatter(ds_out[\"lon\"].values[time_id], ds_out[\"lat\"].values[time_id])\n", |
297 | 295 | "\n", |
298 | | - "t = str(timerange[0].astype(\"timedelta64[h]\"))\n", |
| 296 | + "t = timerange[0].astype(\"datetime64[h]\")\n", |
299 | 297 | "title = ax.set_title(f\"Particles at t = {t}\")\n", |
300 | 298 | "\n", |
301 | 299 | "\n", |
302 | 300 | "def animate(i):\n", |
303 | | - " t = str(timerange[i].astype(\"timedelta64[h]\"))\n", |
| 301 | + " t = timerange[i].astype(\"datetime64[h]\")\n", |
304 | 302 | " title.set_text(f\"Particles at t = {t}\")\n", |
305 | 303 | "\n", |
306 | 304 | " time_id = np.where(ds_out[\"time\"] == timerange[i])\n", |
|
384 | 382 | "metadata": {}, |
385 | 383 | "outputs": [], |
386 | 384 | "source": [ |
387 | | - "outtime_infile = xr.open_zarr(outfilepath, decode_times=False).time.values[:]\n", |
388 | | - "print(outtime_infile.astype(\"timedelta64[s]\").astype(\"timedelta64[h]\"))\n", |
389 | | - "\n", |
390 | | - "# TODO: fix decode_times issue\n", |
391 | | - "# assert (\n", |
392 | | - "# outtime_expected[np.isfinite(outtime_expected)]\n", |
393 | | - "# == outtime_infile[np.isfinite(outtime_infile)]\n", |
394 | | - "# ).all()" |
| 385 | + "outtime_infile = (\n", |
| 386 | + " xr.open_zarr(outfilepath).time.values[:] - ds.time.values[0]\n", |
| 387 | + ") # subtract initial time to convert from datetime64 to timedelta64\n", |
| 388 | + "print(outtime_infile.astype(\"timedelta64[h]\"))\n", |
| 389 | + "\n", |
| 390 | + "assert (\n", |
| 391 | + " outtime_expected[np.isfinite(outtime_expected)]\n", |
| 392 | + " == outtime_infile[np.isfinite(outtime_infile)]\n", |
| 393 | + ").all()" |
395 | 394 | ] |
396 | 395 | }, |
397 | 396 | { |
|
424 | 423 | " dt=np.timedelta64(1, \"h\"),\n", |
425 | 424 | " output_file=output_file,\n", |
426 | 425 | " )\n", |
427 | | - " outtime_infile = xr.open_zarr(outfilepath, decode_times=False).time.values[:]\n", |
428 | | - " print(outtime_infile.astype(\"timedelta64[s]\").astype(\"timedelta64[h]\"))" |
| 426 | + " outtime_infile = xr.open_zarr(outfilepath).time.values[:] - ds.time.values[0]\n", |
| 427 | + " print(outtime_infile.astype(\"timedelta64[h]\"))" |
429 | 428 | ] |
430 | | - }, |
431 | | - { |
432 | | - "cell_type": "code", |
433 | | - "execution_count": null, |
434 | | - "metadata": {}, |
435 | | - "outputs": [], |
436 | | - "source": [] |
437 | 429 | } |
438 | 430 | ], |
439 | 431 | "metadata": { |
|
0 commit comments