diff --git a/.remote-sync.json b/.remote-sync.json
new file mode 100644
index 0000000..274bf29
--- /dev/null
+++ b/.remote-sync.json
@@ -0,0 +1,27 @@
+{
+ "uploadOnSave": true,
+ "useAtomicWrites": false,
+ "deleteLocal": false,
+ "hostname": "kahutea.geo.vuw.ac.nz",
+ "target": "/Users/home/leongwei1/Documents/github/deepicedrain",
+ "ignore": [
+ ".remote-sync.json",
+ ".git/**",
+ ".jupyter/",
+ "data/",
+ "**/.ipynb_checkpoints",
+ "**/*.csv",
+ "**/*.dbf",
+ "**/*.grd",
+ "**/*.npy",
+ "**/*.shp",
+ "**/*.shx",
+ "**/*.tgz",
+ "**/*.tif",
+ "**/*.zip"
+ ],
+ "username": "leongwei1",
+ "watch": [],
+ "useAgent": true,
+ "transport": "scp"
+}
diff --git a/Untitled.ipynb b/Untitled.ipynb
new file mode 100644
index 0000000..abe55be
--- /dev/null
+++ b/Untitled.ipynb
@@ -0,0 +1,1572 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import os\n",
+ "\n",
+ "os.environ[\"GMT_LIBRARY_PATH\"] = os.path.join(os.environ[\"HOME\"], \"gmt-install-dir/lib\")\n",
+ "\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import pygmt\n",
+ "import xarray as xr\n",
+ "import zarr\n",
+ "import deepicedrain\n",
+ "\n",
+ "#pygmt.show_versions()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def test_plot_datetime():\n",
+ " \"\"\"Test various datetime input data\"\"\"\n",
+ " import datetime\n",
+ " fig = pygmt.Figure()\n",
+ " fig.basemap(projection=\"X15c/5c\", region=\"2010-01-01/2020-01-01/0/10\", frame=True)\n",
+ "\n",
+ " # numpy.datetime64 types\n",
+ " x = np.array(\n",
+ " [\"2010-06-01\", \"2011-06-01T12\", \"2012-01-01T12:34:56\"], dtype=\"datetime64\"\n",
+ " )\n",
+ " y = [1.0, 2.0, 3.0]\n",
+ " fig.plot(x, y, style=\"c0.2c\", pen=\"1p\")\n",
+ "\n",
+ " # pandas.DatetimeIndex\n",
+ " x = pd.date_range(\"2013\", freq=\"YS\", periods=3)\n",
+ " y = [4, 5, 6]\n",
+ " fig.plot(x, y, style=\"t0.2c\", pen=\"1p\")\n",
+ "\n",
+ " # xarray.DataArray\n",
+ " x = xr.DataArray(data=pd.date_range(start=\"2015-03\", freq=\"QS\", periods=3))\n",
+ " y = [7.5, 6, 4.5]\n",
+ " fig.plot(x, y, style=\"s0.2c\", pen=\"1p\")\n",
+ "\n",
+ " # raw datetime strings\n",
+ " x = [\"2016-02-01\", \"2017-03-04T00:00\"]\n",
+ " y = [7, 8]\n",
+ " fig.plot(x, y, style=\"a0.2c\", pen=\"1p\")\n",
+ "\n",
+ " # the Python built-in datetime and date\n",
+ " x = [datetime.date(2018, 1, 1), datetime.datetime(2019, 1, 1)]\n",
+ " y = [8.5, 9.5]\n",
+ " fig.plot(x, y, style=\"i0.2c\", pen=\"1p\")\n",
+ " return fig\n",
+ "\n",
+ "f = test_plot_datetime()\n",
+ "f.savefig(\"figures/test_plot_datetime.png\")\n",
+ "f.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "@pygmt.helpers.use_alias(\n",
+ " R=\"region\",\n",
+ " J=\"projection\",\n",
+ " Jz=\"zscale\",\n",
+ " JZ=\"zsize\",\n",
+ " A=\"straight_lines\",\n",
+ " B=\"frame\",\n",
+ " C=\"cmap\",\n",
+ " D=\"position\",\n",
+ " E=\"error_bars\",\n",
+ " G=\"color\",\n",
+ " L=\"close\",\n",
+ " S=\"style\",\n",
+ " W=\"pen\",\n",
+ " i=\"columns\",\n",
+ " l=\"label\",\n",
+ " p=\"perspective\",\n",
+ ")\n",
+ "@pygmt.helpers.kwargs_to_strings(R=\"sequence\", i=\"sequence_comma\", p=\"sequence\")\n",
+ "def plot3d(x, y, z, **kwargs):\n",
+ " \"\"\"Thin wrapper around pygmt.plot3d\"\"\"\n",
+ " extra_arrays = []\n",
+ " with pygmt.clib.Session() as lib:\n",
+ " file_context = lib.virtualfile_from_vectors(\n",
+ " np.atleast_1d(x), np.atleast_1d(y), np.atleast_1d(z), *extra_arrays\n",
+ " )\n",
+ " with file_context as fname:\n",
+ " arg_str = \" \".join([fname, pygmt.helpers.build_arg_string(kwargs)])\n",
+ " lib.call_module(\"plot3d\", arg_str)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Save or Load height range data\n",
+ "ds_dhdt: xr.Dataset = xr.open_dataset(\n",
+ " filename_or_obj=f\"ATLXI/ds_dhdt_antarctica.zarr\",\n",
+ " # chunks={\"cycle_number\": 6},\n",
+ " engine=\"zarr\",\n",
+ " backend_kwargs={\"consolidated\": True},\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "raw",
+ "metadata": {},
+ "source": [
+ "ds_dhdt = ds_dhdt.dropna(dim=\"ref_pt\", thresh=3, subset=[\"h_corr\"])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "
- cycle_number: 7
- ref_pt: 35588137
cycle_number
(cycle_number)
int8
1 2 3 4 5 6 7
- DIMENSION_LABELS :
- ['cycle_number']
- datatype :
- int8
- description :
- "cycle number"
- units :
- counts
array([1, 2, 3, 4, 5, 6, 7], dtype=int8)
ref_pt
(ref_pt)
int64
1583037 1583097 ... 1563138 1563141
- DIMENSION_LABELS :
- ['ref_pt']
- datatype :
- int32
- description :
- "Ref point number, counted from the equator crossing along the RGT."
- units :
- counts
array([1583037, 1583097, 1583100, ..., 1563051, 1563138, 1563141])
x
(ref_pt)
float64
...
[35588137 values with dtype=float64]
x_atc
(ref_pt)
float64
...
- DIMENSION_LABELS :
- ['ref_pt']
- datatype :
- Float64
- description :
- "Along-track coordinate of the reference point, measured along the RGT from its first equator crossing."
- units :
- meters
[35588137 values with dtype=float64]
y
(ref_pt)
float64
...
[35588137 values with dtype=float64]
y_atc
(ref_pt)
float64
...
- DIMENSION_LABELS :
- ['ref_pt']
- datatype :
- Float64
- description :
- "Across-track coordinate of the reference point, measured along the RGT from its first equator crossing."
- units :
- meters
[35588137 values with dtype=float64]
- poly_exponent_x :
- [1, 0, 2, 1, 0, 3, 2, 1]
- poly_exponent_y :
- [0, 1, 0, 1, 2, 0, 1, 2]
- slope_change_t0 :
- 29548800
"
+ ],
+ "text/plain": [
+ "\n",
+ "Dimensions: (cycle_number: 7, ref_pt: 35588137)\n",
+ "Coordinates:\n",
+ " * cycle_number (cycle_number) int8 1 2 3 4 5 6 7\n",
+ " * ref_pt (ref_pt) int64 1583037 1583097 1583100 ... 1563138 1563141\n",
+ " x (ref_pt) float64 ...\n",
+ " x_atc (ref_pt) float64 ...\n",
+ " y (ref_pt) float64 ...\n",
+ " y_atc (ref_pt) float64 ...\n",
+ "Data variables:\n",
+ " delta_time (ref_pt, cycle_number) timedelta64[ns] ...\n",
+ " dhdt_intercept (ref_pt) float32 ...\n",
+ " dhdt_p_value (ref_pt) float32 ...\n",
+ " dhdt_r_value (ref_pt) float32 ...\n",
+ " dhdt_slope (ref_pt) float32 ...\n",
+ " dhdt_std_err (ref_pt) float32 ...\n",
+ " h_corr (ref_pt, cycle_number) float32 ...\n",
+ "Attributes:\n",
+ " poly_exponent_x: [1, 0, 2, 1, 0, 3, 2, 1]\n",
+ " poly_exponent_y: [0, 1, 0, 1, 2, 0, 1, 2]\n",
+ " slope_change_t0: 29548800"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "ds_dhdt"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "$ y = mx + c $\n",
+ "\n",
+ "where $y$ is h_corr, $m$ is the slope, $x$ is utc_time, and $c$ is intercept"
+ ]
+ },
+ {
+ "cell_type": "raw",
+ "metadata": {},
+ "source": [
+ "np.poly1d(c_or_r=np.polyfit(x=t_int, y=h_corr, deg=1))(t_int)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "
"
+ ],
+ "text/plain": [
+ "\n",
+ "array([False, False, False, ..., False, False, False])\n",
+ "Coordinates:\n",
+ " * ref_pt (ref_pt) int64 1583037 1583097 1583100 ... 1563051 1563138 1563141\n",
+ " x (ref_pt) float64 ...\n",
+ " x_atc (ref_pt) float64 ...\n",
+ " y (ref_pt) float64 ...\n",
+ " y_atc (ref_pt) float64 ..."
+ ]
+ },
+ "execution_count": 46,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "ds_dhdt.dhdt_slope > 1"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "idx = 26991341 # 4362346\n",
+ "# idx = np.argmax(ds_dhdt.dhdt_slope)\n",
+ "ds_one: xr.Dataset = ds_dhdt.isel(ref_pt=ds_dhdt.ref_pt[idx])\n",
+ "df: pd.DataFrame = ds_one.to_dataframe()\n",
+ "df = df.dropna()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 28,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "