4238 lines
475 KiB
Plaintext
4238 lines
475 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "b2e0202e-fa47-4462-91f5-a066a2d3c01b",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Example: Segment water in GDL to quantify influence of liquid water on electrochemistry"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "18d12790-31e0-4677-8f13-abbf958444a3",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"ename": "NameError",
|
|
"evalue": "name 'gitpath' is not defined",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
|
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
|
|
"Cell \u001b[0;32mIn[1], line 53\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[38;5;66;03m# fetch githash\u001b[39;00m\n\u001b[1;32m 52\u001b[0m cwd \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39mgetcwd()\n\u001b[0;32m---> 53\u001b[0m os\u001b[38;5;241m.\u001b[39mchdir(\u001b[43mgitpath\u001b[49m)\n\u001b[1;32m 54\u001b[0m git_sha \u001b[38;5;241m=\u001b[39m subprocess\u001b[38;5;241m.\u001b[39mcheck_output([\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mgit\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrev-parse\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m--short\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mHEAD\u001b[39m\u001b[38;5;124m'\u001b[39m])\u001b[38;5;241m.\u001b[39mdecode()\u001b[38;5;241m.\u001b[39mstrip()\n\u001b[1;32m 55\u001b[0m githash \u001b[38;5;241m=\u001b[39m subprocess\u001b[38;5;241m.\u001b[39mcheck_output([\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mgit\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrev-parse\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mHEAD\u001b[39m\u001b[38;5;124m'\u001b[39m])\u001b[38;5;241m.\u001b[39mdecode()\u001b[38;5;241m.\u001b[39mstrip()\n",
|
|
"\u001b[0;31mNameError\u001b[0m: name 'gitpath' is not defined"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# modules\n",
|
|
"import os\n",
|
|
"import xarray as xr\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"import numpy as np\n",
|
|
"import dask\n",
|
|
"import dask.array\n",
|
|
"from scipy import ndimage\n",
|
|
"from skimage import filters, feature, io\n",
|
|
"from skimage.morphology import disk,ball\n",
|
|
"import sys\n",
|
|
"from itertools import combinations_with_replacement\n",
|
|
"import pickle\n",
|
|
"import imageio\n",
|
|
"import json\n",
|
|
"from dask.distributed import Client, LocalCluster\n",
|
|
"import subprocess\n",
|
|
"import gc\n",
|
|
"import h5py\n",
|
|
"import logging\n",
|
|
"import warnings\n",
|
|
"warnings.filterwarnings('ignore')\n",
|
|
"\n",
|
|
"from dask import config as cfg\n",
|
|
"\n",
|
|
"# did not see noticeable effects:\n",
|
|
"cfg.set({'distributed.scheduler.worker-ttl': None, # Workaround so that dask does not kill workers while they are busy fetching data: https://dask.discourse.group/t/dask-workers-killed-because-of-heartbeat-fail/856, maybe this helps: https://www.youtube.com/watch?v=vF2VItVU5zg?\n",
|
|
" 'distributed.admin.low-level-log-length': 100 #potential workaround for ballooning scheduler memory https://baumgartner.io/posts/how-to-reduce-memory-usage-of-dask-scheduler/\n",
|
|
" })\n",
|
|
"\n",
|
|
"# get the ML functions, TODO: make a library once it works/is in a stable state\n",
|
|
"pytrainpath = '/mpc/homes/fische_r/lib/pytrainseg' #path of git repo\n",
|
|
"cwd = os.getcwd()\n",
|
|
"os.chdir(pytrainpath)\n",
|
|
"from filter_functions import image_filter\n",
|
|
"import training_functions as tfs\n",
|
|
"from training_functions import train_segmentation\n",
|
|
"from segmentation import segmentation\n",
|
|
"pytrain_git_sha = subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD']).decode().strip()\n",
|
|
"os.chdir(cwd)\n",
|
|
"\n",
|
|
"#paths\n",
|
|
"toppath = '/mpc/homes/fische_r/NAS/DASCOELY'\n",
|
|
"toppathSSD = '/mnt/SSD/fische_r/COELY'\n",
|
|
"temppath = '/mnt/SSD/fische_r/tmp'\n",
|
|
"training_path = '/mnt/SSD/fische_r/COELY/05_water_GDL_ML/'\n",
|
|
"# memlim = '840GB'\n",
|
|
"memlim = '440GB' #per worker, sum should be leave some head room, needs experimenting to find right balance, sometimes there is unexplainable memeroy demand by dask\n",
|
|
"\n",
|
|
"path_04_4D = os.path.join(toppathSSD, '04_lowpass_filtered_4D')\n",
|
|
"# fetch githash\n",
|
|
"cwd = os.getcwd()\n",
|
|
"\n",
|
|
"# provide the path of the pytrainseg repo\n",
|
|
"gitpath = ''\n",
|
|
"os.chdir(gitpath)\n",
|
|
"git_sha = subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD']).decode().strip()\n",
|
|
"githash = subprocess.check_output(['git', 'rev-parse', 'HEAD']).decode().strip()\n",
|
|
"os.chdir(cwd)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "4c87d6c7-b66b-4760-9514-3bd771c1b981",
|
|
"metadata": {},
|
|
"source": [
|
|
"### functionalities for interactive training"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "5e71b819-2866-4d0c-b3ed-01f137baa0a5",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"from ipywidgets import Image\n",
|
|
"from ipywidgets import ColorPicker, IntSlider, link, AppLayout, HBox\n",
|
|
"from ipycanvas import hold_canvas, MultiCanvas #RoughCanvas,Canvas,\n",
|
|
"\n",
|
|
"def on_mouse_down(x, y):\n",
|
|
" global drawing\n",
|
|
" global position\n",
|
|
" global shape\n",
|
|
" drawing = True\n",
|
|
" position = (x, y)\n",
|
|
" shape = [position]\n",
|
|
"\n",
|
|
"def on_mouse_move(x, y):\n",
|
|
" global drawing\n",
|
|
" global position\n",
|
|
" global shape\n",
|
|
" if not drawing:\n",
|
|
" return\n",
|
|
" with hold_canvas():\n",
|
|
" canvas.stroke_line(position[0], position[1], x, y)\n",
|
|
" position = (x, y)\n",
|
|
" shape.append(position)\n",
|
|
"\n",
|
|
"def on_mouse_up(x, y):\n",
|
|
" global drawing\n",
|
|
" global positiondu\n",
|
|
" global shape\n",
|
|
" drawing = False\n",
|
|
" with hold_canvas():\n",
|
|
" canvas.stroke_line(position[0], position[1], x, y)\n",
|
|
" canvas.fill_polygon(shape)\n",
|
|
" shape = []\n",
|
|
" \n",
|
|
"def display_feature(i, TS, feat_stack):\n",
|
|
" # print('selected '+TS.feature_names[i])\n",
|
|
" im = feat_stack[:,:,i]\n",
|
|
" im8 = im-im.min()\n",
|
|
" im8 = im8/im8.max()*255\n",
|
|
" return im8"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e0cca3d3-dbb1-4064-93cb-996b23edb5c0",
|
|
"metadata": {},
|
|
"source": [
|
|
"### fire up dask, distributed Client currently not usable. No idea how not setting up dask affects the computation"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "0fbdc6da-382c-4123-9fef-e621f9049bf3",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"dask.config.config['temporary-directory'] = temppath\n",
|
|
"def boot_client(dashboard_address=':35000', memory_limit = memlim, n_workers=2):\n",
|
|
" tempfolder = temppath #a big SSD is a major adavantage to allow spill to disk and still be efficient. large dataset might crash with too small SSD or be slow with normal HDD\n",
|
|
" \n",
|
|
"# here you have the option to use a virtual cluster or even slurm on ra (not attempted yet)\n",
|
|
" cluster = LocalCluster(dashboard_address=dashboard_address, memory_limit = memory_limit, n_workers=n_workers, silence_logs=logging.ERROR) #settings optimised for mpc2959, play around if needed, if you know nothing else is using RAM then you can almost go to the limit\n",
|
|
"# # maybe less workers with more threads makes better use of shared memory \n",
|
|
"#don't show warnings, too many seem to block execution\n",
|
|
" client = Client(cluster) \n",
|
|
" print('Dashboard at '+client.dashboard_link)\n",
|
|
" return client, cluster"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "45ae7fa8-6898-495d-99af-ce03629f58c8",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Dashboard at http://127.0.0.1:35000/status\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"client, cluster = boot_client()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"id": "9e633111-d456-40ec-8f36-33d0da691094",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def reboot_client(client, dashboard_address=':35000', memory_limit = memlim, n_workers=2):\n",
|
|
" client.shutdown()\n",
|
|
" cluster = LocalCluster(dashboard_address=dashboard_address, memory_limit = memory_limit, n_workers=n_workers, silence_logs=logging.ERROR)\n",
|
|
" client = Client(cluster)\n",
|
|
" return client"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "4228967c-0755-4d36-8ba3-504228c1bac8",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Data preparation"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ae5f2640-1277-45db-a144-60032be2d3c2",
|
|
"metadata": {},
|
|
"source": [
|
|
"### let dask load the data\n",
|
|
"4D data dimesnions should be in the order xyzt, important is that time is the last dimension"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 22,
|
|
"id": "b0216ed5-ab65-46ef-9360-516bb1ba0553",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"filename = '04_'+sample+'_lowpass_filteres_4D.nc'\n",
|
|
"imagepath = os.path.join(path_04_4D, filename)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "f7d257cd-e491-42c0-8afd-27748de2abfb",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# get size of 4D array, can be achieved also differently\n",
|
|
"data = xr.open_dataset(imagepath)\n",
|
|
"shp = data['image_data'].shape #replace 'image_data' of the entry name in the h5py-file containing the 4D-data\n",
|
|
"data.close()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 23,
|
|
"id": "0b60d6ea-5c12-446b-92aa-245ba5e859e7",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"file = h5py.File(imagepath)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 24,
|
|
"id": "dda67f36-fc78-435f-8898-58bc4696dc0d",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"chunk_space = 36 #maybe experiment with this value\n",
|
|
"chunks = (chunk_space,chunk_space,chunk_space,shp[-1]) #it seems useful to have all timesteps in one chunk\n",
|
|
"da = dask.array.from_array(file['image_data'], chunks= chunks) #replace 'image_data' of the entry name in the h5py-file containing the 4D-data"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 25,
|
|
"id": "66807e1f-237a-47b3-a4c0-8cbfc099b0d9",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<table>\n",
|
|
" <tr>\n",
|
|
" <td>\n",
|
|
" <table style=\"border-collapse: collapse;\">\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> 57.33 GiB </td>\n",
|
|
" <td> 5.61 MiB </td>\n",
|
|
" </tr>\n",
|
|
" \n",
|
|
" <tr>\n",
|
|
" <th> Shape </th>\n",
|
|
" <td> (750, 340, 1916, 63) </td>\n",
|
|
" <td> (36, 36, 36, 63) </td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th> Dask graph </th>\n",
|
|
" <td colspan=\"2\"> 11340 chunks in 1 graph layer </td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th> Data type </th>\n",
|
|
" <td colspan=\"2\"> uint16 numpy.ndarray </td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
" </table>\n",
|
|
" </td>\n",
|
|
" <td>\n",
|
|
" <svg width=\"338\" height=\"194\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n",
|
|
"\n",
|
|
" <!-- Horizontal lines -->\n",
|
|
" <line x1=\"0\" y1=\"0\" x2=\"46\" y2=\"0\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"0\" y1=\"25\" x2=\"46\" y2=\"25\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Vertical lines -->\n",
|
|
" <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"25\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"2\" y1=\"0\" x2=\"2\" y2=\"25\" />\n",
|
|
" <line x1=\"4\" y1=\"0\" x2=\"4\" y2=\"25\" />\n",
|
|
" <line x1=\"6\" y1=\"0\" x2=\"6\" y2=\"25\" />\n",
|
|
" <line x1=\"9\" y1=\"0\" x2=\"9\" y2=\"25\" />\n",
|
|
" <line x1=\"11\" y1=\"0\" x2=\"11\" y2=\"25\" />\n",
|
|
" <line x1=\"13\" y1=\"0\" x2=\"13\" y2=\"25\" />\n",
|
|
" <line x1=\"15\" y1=\"0\" x2=\"15\" y2=\"25\" />\n",
|
|
" <line x1=\"18\" y1=\"0\" x2=\"18\" y2=\"25\" />\n",
|
|
" <line x1=\"20\" y1=\"0\" x2=\"20\" y2=\"25\" />\n",
|
|
" <line x1=\"22\" y1=\"0\" x2=\"22\" y2=\"25\" />\n",
|
|
" <line x1=\"24\" y1=\"0\" x2=\"24\" y2=\"25\" />\n",
|
|
" <line x1=\"27\" y1=\"0\" x2=\"27\" y2=\"25\" />\n",
|
|
" <line x1=\"29\" y1=\"0\" x2=\"29\" y2=\"25\" />\n",
|
|
" <line x1=\"31\" y1=\"0\" x2=\"31\" y2=\"25\" />\n",
|
|
" <line x1=\"33\" y1=\"0\" x2=\"33\" y2=\"25\" />\n",
|
|
" <line x1=\"36\" y1=\"0\" x2=\"36\" y2=\"25\" />\n",
|
|
" <line x1=\"38\" y1=\"0\" x2=\"38\" y2=\"25\" />\n",
|
|
" <line x1=\"40\" y1=\"0\" x2=\"40\" y2=\"25\" />\n",
|
|
" <line x1=\"42\" y1=\"0\" x2=\"42\" y2=\"25\" />\n",
|
|
" <line x1=\"45\" y1=\"0\" x2=\"45\" y2=\"25\" />\n",
|
|
" <line x1=\"46\" y1=\"0\" x2=\"46\" y2=\"25\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Colored Rectangle -->\n",
|
|
" <polygon points=\"0.0,0.0 46.97286012526096,0.0 46.97286012526096,25.412616514582485 0.0,25.412616514582485\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
|
|
"\n",
|
|
" <!-- Text -->\n",
|
|
" <text x=\"23.486430\" y=\"45.412617\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >750</text>\n",
|
|
" <text x=\"66.972860\" y=\"12.706308\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(0,66.972860,12.706308)\">1</text>\n",
|
|
"\n",
|
|
"\n",
|
|
" <!-- Horizontal lines -->\n",
|
|
" <line x1=\"116\" y1=\"0\" x2=\"140\" y2=\"24\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"116\" y1=\"2\" x2=\"140\" y2=\"26\" />\n",
|
|
" <line x1=\"116\" y1=\"6\" x2=\"140\" y2=\"31\" />\n",
|
|
" <line x1=\"116\" y1=\"11\" x2=\"140\" y2=\"35\" />\n",
|
|
" <line x1=\"116\" y1=\"13\" x2=\"140\" y2=\"37\" />\n",
|
|
" <line x1=\"116\" y1=\"18\" x2=\"140\" y2=\"42\" />\n",
|
|
" <line x1=\"116\" y1=\"22\" x2=\"140\" y2=\"46\" />\n",
|
|
" <line x1=\"116\" y1=\"24\" x2=\"140\" y2=\"49\" />\n",
|
|
" <line x1=\"116\" y1=\"29\" x2=\"140\" y2=\"53\" />\n",
|
|
" <line x1=\"116\" y1=\"33\" x2=\"140\" y2=\"58\" />\n",
|
|
" <line x1=\"116\" y1=\"36\" x2=\"140\" y2=\"60\" />\n",
|
|
" <line x1=\"116\" y1=\"40\" x2=\"140\" y2=\"64\" />\n",
|
|
" <line x1=\"116\" y1=\"45\" x2=\"140\" y2=\"69\" />\n",
|
|
" <line x1=\"116\" y1=\"47\" x2=\"140\" y2=\"71\" />\n",
|
|
" <line x1=\"116\" y1=\"51\" x2=\"140\" y2=\"76\" />\n",
|
|
" <line x1=\"116\" y1=\"56\" x2=\"140\" y2=\"80\" />\n",
|
|
" <line x1=\"116\" y1=\"60\" x2=\"140\" y2=\"85\" />\n",
|
|
" <line x1=\"116\" y1=\"63\" x2=\"140\" y2=\"87\" />\n",
|
|
" <line x1=\"116\" y1=\"67\" x2=\"140\" y2=\"92\" />\n",
|
|
" <line x1=\"116\" y1=\"72\" x2=\"140\" y2=\"96\" />\n",
|
|
" <line x1=\"116\" y1=\"74\" x2=\"140\" y2=\"98\" />\n",
|
|
" <line x1=\"116\" y1=\"78\" x2=\"140\" y2=\"103\" />\n",
|
|
" <line x1=\"116\" y1=\"83\" x2=\"140\" y2=\"107\" />\n",
|
|
" <line x1=\"116\" y1=\"85\" x2=\"140\" y2=\"110\" />\n",
|
|
" <line x1=\"116\" y1=\"90\" x2=\"140\" y2=\"114\" />\n",
|
|
" <line x1=\"116\" y1=\"94\" x2=\"140\" y2=\"119\" />\n",
|
|
" <line x1=\"116\" y1=\"96\" x2=\"140\" y2=\"121\" />\n",
|
|
" <line x1=\"116\" y1=\"101\" x2=\"140\" y2=\"125\" />\n",
|
|
" <line x1=\"116\" y1=\"105\" x2=\"140\" y2=\"130\" />\n",
|
|
" <line x1=\"116\" y1=\"108\" x2=\"140\" y2=\"132\" />\n",
|
|
" <line x1=\"116\" y1=\"112\" x2=\"140\" y2=\"137\" />\n",
|
|
" <line x1=\"116\" y1=\"117\" x2=\"140\" y2=\"141\" />\n",
|
|
" <line x1=\"116\" y1=\"120\" x2=\"140\" y2=\"144\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Vertical lines -->\n",
|
|
" <line x1=\"116\" y1=\"0\" x2=\"116\" y2=\"120\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"118\" y1=\"2\" x2=\"118\" y2=\"122\" />\n",
|
|
" <line x1=\"121\" y1=\"5\" x2=\"121\" y2=\"125\" />\n",
|
|
" <line x1=\"123\" y1=\"7\" x2=\"123\" y2=\"127\" />\n",
|
|
" <line x1=\"126\" y1=\"10\" x2=\"126\" y2=\"130\" />\n",
|
|
" <line x1=\"128\" y1=\"12\" x2=\"128\" y2=\"132\" />\n",
|
|
" <line x1=\"131\" y1=\"15\" x2=\"131\" y2=\"135\" />\n",
|
|
" <line x1=\"134\" y1=\"18\" x2=\"134\" y2=\"138\" />\n",
|
|
" <line x1=\"136\" y1=\"20\" x2=\"136\" y2=\"140\" />\n",
|
|
" <line x1=\"139\" y1=\"23\" x2=\"139\" y2=\"143\" />\n",
|
|
" <line x1=\"140\" y1=\"24\" x2=\"140\" y2=\"144\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Colored Rectangle -->\n",
|
|
" <polygon points=\"116.0,0.0 140.40531339947452,24.405313399474522 140.40531339947452,144.40531339947452 116.0,120.0\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n",
|
|
"\n",
|
|
" <!-- Horizontal lines -->\n",
|
|
" <line x1=\"116\" y1=\"0\" x2=\"147\" y2=\"0\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"118\" y1=\"2\" x2=\"150\" y2=\"2\" />\n",
|
|
" <line x1=\"121\" y1=\"5\" x2=\"153\" y2=\"5\" />\n",
|
|
" <line x1=\"123\" y1=\"7\" x2=\"155\" y2=\"7\" />\n",
|
|
" <line x1=\"126\" y1=\"10\" x2=\"158\" y2=\"10\" />\n",
|
|
" <line x1=\"128\" y1=\"12\" x2=\"160\" y2=\"12\" />\n",
|
|
" <line x1=\"131\" y1=\"15\" x2=\"163\" y2=\"15\" />\n",
|
|
" <line x1=\"134\" y1=\"18\" x2=\"166\" y2=\"18\" />\n",
|
|
" <line x1=\"136\" y1=\"20\" x2=\"168\" y2=\"20\" />\n",
|
|
" <line x1=\"139\" y1=\"23\" x2=\"171\" y2=\"23\" />\n",
|
|
" <line x1=\"140\" y1=\"24\" x2=\"172\" y2=\"24\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Vertical lines -->\n",
|
|
" <line x1=\"116\" y1=\"0\" x2=\"140\" y2=\"24\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"147\" y1=\"0\" x2=\"172\" y2=\"24\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Colored Rectangle -->\n",
|
|
" <polygon points=\"116.0,0.0 147.94178290248797,0.0 172.3470963019625,24.405313399474522 140.40531339947452,24.405313399474522\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
|
|
"\n",
|
|
" <!-- Horizontal lines -->\n",
|
|
" <line x1=\"140\" y1=\"24\" x2=\"172\" y2=\"24\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"140\" y1=\"26\" x2=\"172\" y2=\"26\" />\n",
|
|
" <line x1=\"140\" y1=\"31\" x2=\"172\" y2=\"31\" />\n",
|
|
" <line x1=\"140\" y1=\"35\" x2=\"172\" y2=\"35\" />\n",
|
|
" <line x1=\"140\" y1=\"37\" x2=\"172\" y2=\"37\" />\n",
|
|
" <line x1=\"140\" y1=\"42\" x2=\"172\" y2=\"42\" />\n",
|
|
" <line x1=\"140\" y1=\"46\" x2=\"172\" y2=\"46\" />\n",
|
|
" <line x1=\"140\" y1=\"49\" x2=\"172\" y2=\"49\" />\n",
|
|
" <line x1=\"140\" y1=\"53\" x2=\"172\" y2=\"53\" />\n",
|
|
" <line x1=\"140\" y1=\"58\" x2=\"172\" y2=\"58\" />\n",
|
|
" <line x1=\"140\" y1=\"60\" x2=\"172\" y2=\"60\" />\n",
|
|
" <line x1=\"140\" y1=\"64\" x2=\"172\" y2=\"64\" />\n",
|
|
" <line x1=\"140\" y1=\"69\" x2=\"172\" y2=\"69\" />\n",
|
|
" <line x1=\"140\" y1=\"71\" x2=\"172\" y2=\"71\" />\n",
|
|
" <line x1=\"140\" y1=\"76\" x2=\"172\" y2=\"76\" />\n",
|
|
" <line x1=\"140\" y1=\"80\" x2=\"172\" y2=\"80\" />\n",
|
|
" <line x1=\"140\" y1=\"85\" x2=\"172\" y2=\"85\" />\n",
|
|
" <line x1=\"140\" y1=\"87\" x2=\"172\" y2=\"87\" />\n",
|
|
" <line x1=\"140\" y1=\"92\" x2=\"172\" y2=\"92\" />\n",
|
|
" <line x1=\"140\" y1=\"96\" x2=\"172\" y2=\"96\" />\n",
|
|
" <line x1=\"140\" y1=\"98\" x2=\"172\" y2=\"98\" />\n",
|
|
" <line x1=\"140\" y1=\"103\" x2=\"172\" y2=\"103\" />\n",
|
|
" <line x1=\"140\" y1=\"107\" x2=\"172\" y2=\"107\" />\n",
|
|
" <line x1=\"140\" y1=\"110\" x2=\"172\" y2=\"110\" />\n",
|
|
" <line x1=\"140\" y1=\"114\" x2=\"172\" y2=\"114\" />\n",
|
|
" <line x1=\"140\" y1=\"119\" x2=\"172\" y2=\"119\" />\n",
|
|
" <line x1=\"140\" y1=\"121\" x2=\"172\" y2=\"121\" />\n",
|
|
" <line x1=\"140\" y1=\"125\" x2=\"172\" y2=\"125\" />\n",
|
|
" <line x1=\"140\" y1=\"130\" x2=\"172\" y2=\"130\" />\n",
|
|
" <line x1=\"140\" y1=\"132\" x2=\"172\" y2=\"132\" />\n",
|
|
" <line x1=\"140\" y1=\"137\" x2=\"172\" y2=\"137\" />\n",
|
|
" <line x1=\"140\" y1=\"141\" x2=\"172\" y2=\"141\" />\n",
|
|
" <line x1=\"140\" y1=\"144\" x2=\"172\" y2=\"144\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Vertical lines -->\n",
|
|
" <line x1=\"140\" y1=\"24\" x2=\"140\" y2=\"144\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"172\" y1=\"24\" x2=\"172\" y2=\"144\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Colored Rectangle -->\n",
|
|
" <polygon points=\"140.40531339947452,24.405313399474522 172.3470963019625,24.405313399474522 172.3470963019625,144.40531339947452 140.40531339947452,144.40531339947452\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n",
|
|
"\n",
|
|
" <!-- Text -->\n",
|
|
" <text x=\"156.376205\" y=\"164.405313\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >63</text>\n",
|
|
" <text x=\"192.347096\" y=\"84.405313\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,192.347096,84.405313)\">1916</text>\n",
|
|
" <text x=\"118.202657\" y=\"152.202657\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,118.202657,152.202657)\">340</text>\n",
|
|
"</svg>\n",
|
|
" </td>\n",
|
|
" </tr>\n",
|
|
"</table>"
|
|
],
|
|
"text/plain": [
|
|
"dask.array<array, shape=(750, 340, 1916, 63), dtype=uint16, chunksize=(36, 36, 36, 63), chunktype=numpy.ndarray>"
|
|
]
|
|
},
|
|
"execution_count": 25,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"da #check the loaded dask array"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "6b7ee45c-59e9-44de-9aeb-f91018510c72",
|
|
"metadata": {},
|
|
"source": [
|
|
"### get data into image filter class"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 26,
|
|
"id": "a68eb724-7ecc-44e0-a053-71e22166b561",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"IF = image_filter(sigmas = [0,1,3,6]) #based on the experience with weka, larger sigmas are useful and should be considered\n",
|
|
"IF.data = da\n",
|
|
"shp = da.shape\n",
|
|
"coords = {'x': np.arange(shp[0]), 'y': np.arange(shp[1]), 'z': np.arange(shp[2]), 'time': np.arange(shp[3])}\n",
|
|
"IF.original_dataset = xr.Dataset({'tomo': (['x','y','z','time'], da)},\n",
|
|
" coords = coords\n",
|
|
" )"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "512b2d36-9911-4cb8-94e0-37de5efc0a1e",
|
|
"metadata": {},
|
|
"source": [
|
|
"### prepare features"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 27,
|
|
"id": "43a7e59e-b6d6-4bc7-b175-63e6545de742",
|
|
"metadata": {
|
|
"scrolled": true,
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"IF.prepare()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 28,
|
|
"id": "470dbe8f-f3f4-45b6-a829-3a0fe170d23f",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"IF.stack_features()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 30,
|
|
"id": "9b64faf6-38bb-4d89-9bdf-60672831c5f3",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<table>\n",
|
|
" <tr>\n",
|
|
" <td>\n",
|
|
" <table style=\"border-collapse: collapse;\">\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> 23.07 TiB </td>\n",
|
|
" <td> 22.43 MiB </td>\n",
|
|
" </tr>\n",
|
|
" \n",
|
|
" <tr>\n",
|
|
" <th> Shape </th>\n",
|
|
" <td> (750, 340, 1916, 63, 103) </td>\n",
|
|
" <td> (36, 36, 36, 63, 1) </td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th> Dask graph </th>\n",
|
|
" <td colspan=\"2\"> 1308615 chunks in 540 graph layers </td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th> Data type </th>\n",
|
|
" <td colspan=\"2\"> float64 numpy.ndarray </td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
" </table>\n",
|
|
" </td>\n",
|
|
" <td>\n",
|
|
" <svg width=\"377\" height=\"152\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n",
|
|
"\n",
|
|
" <!-- Horizontal lines -->\n",
|
|
" <line x1=\"0\" y1=\"0\" x2=\"41\" y2=\"0\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"0\" y1=\"2\" x2=\"41\" y2=\"2\" />\n",
|
|
" <line x1=\"0\" y1=\"4\" x2=\"41\" y2=\"4\" />\n",
|
|
" <line x1=\"0\" y1=\"6\" x2=\"41\" y2=\"6\" />\n",
|
|
" <line x1=\"0\" y1=\"9\" x2=\"41\" y2=\"9\" />\n",
|
|
" <line x1=\"0\" y1=\"11\" x2=\"41\" y2=\"11\" />\n",
|
|
" <line x1=\"0\" y1=\"13\" x2=\"41\" y2=\"13\" />\n",
|
|
" <line x1=\"0\" y1=\"15\" x2=\"41\" y2=\"15\" />\n",
|
|
" <line x1=\"0\" y1=\"18\" x2=\"41\" y2=\"18\" />\n",
|
|
" <line x1=\"0\" y1=\"20\" x2=\"41\" y2=\"20\" />\n",
|
|
" <line x1=\"0\" y1=\"22\" x2=\"41\" y2=\"22\" />\n",
|
|
" <line x1=\"0\" y1=\"24\" x2=\"41\" y2=\"24\" />\n",
|
|
" <line x1=\"0\" y1=\"27\" x2=\"41\" y2=\"27\" />\n",
|
|
" <line x1=\"0\" y1=\"29\" x2=\"41\" y2=\"29\" />\n",
|
|
" <line x1=\"0\" y1=\"31\" x2=\"41\" y2=\"31\" />\n",
|
|
" <line x1=\"0\" y1=\"33\" x2=\"41\" y2=\"33\" />\n",
|
|
" <line x1=\"0\" y1=\"36\" x2=\"41\" y2=\"36\" />\n",
|
|
" <line x1=\"0\" y1=\"38\" x2=\"41\" y2=\"38\" />\n",
|
|
" <line x1=\"0\" y1=\"40\" x2=\"41\" y2=\"40\" />\n",
|
|
" <line x1=\"0\" y1=\"42\" x2=\"41\" y2=\"42\" />\n",
|
|
" <line x1=\"0\" y1=\"45\" x2=\"41\" y2=\"45\" />\n",
|
|
" <line x1=\"0\" y1=\"46\" x2=\"41\" y2=\"46\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Vertical lines -->\n",
|
|
" <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"46\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"4\" y1=\"0\" x2=\"4\" y2=\"46\" />\n",
|
|
" <line x1=\"8\" y1=\"0\" x2=\"8\" y2=\"46\" />\n",
|
|
" <line x1=\"13\" y1=\"0\" x2=\"13\" y2=\"46\" />\n",
|
|
" <line x1=\"17\" y1=\"0\" x2=\"17\" y2=\"46\" />\n",
|
|
" <line x1=\"21\" y1=\"0\" x2=\"21\" y2=\"46\" />\n",
|
|
" <line x1=\"26\" y1=\"0\" x2=\"26\" y2=\"46\" />\n",
|
|
" <line x1=\"30\" y1=\"0\" x2=\"30\" y2=\"46\" />\n",
|
|
" <line x1=\"35\" y1=\"0\" x2=\"35\" y2=\"46\" />\n",
|
|
" <line x1=\"38\" y1=\"0\" x2=\"38\" y2=\"46\" />\n",
|
|
" <line x1=\"39\" y1=\"0\" x2=\"39\" y2=\"46\" />\n",
|
|
" <line x1=\"41\" y1=\"0\" x2=\"41\" y2=\"46\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Colored Rectangle -->\n",
|
|
" <polygon points=\"0.0,0.0 41.48903277910669,0.0 41.48903277910669,46.97286012526096 0.0,46.97286012526096\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
|
|
"\n",
|
|
" <!-- Text -->\n",
|
|
" <text x=\"20.744516\" y=\"66.972860\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >340</text>\n",
|
|
" <text x=\"61.489033\" y=\"23.486430\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,61.489033,23.486430)\">750</text>\n",
|
|
"\n",
|
|
"\n",
|
|
" <!-- Horizontal lines -->\n",
|
|
" <line x1=\"111\" y1=\"0\" x2=\"181\" y2=\"70\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"111\" y1=\"31\" x2=\"181\" y2=\"102\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Vertical lines -->\n",
|
|
" <line x1=\"111\" y1=\"0\" x2=\"111\" y2=\"31\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"112\" y1=\"1\" x2=\"112\" y2=\"33\" />\n",
|
|
" <line x1=\"114\" y1=\"3\" x2=\"114\" y2=\"35\" />\n",
|
|
" <line x1=\"117\" y1=\"6\" x2=\"117\" y2=\"38\" />\n",
|
|
" <line x1=\"118\" y1=\"7\" x2=\"118\" y2=\"39\" />\n",
|
|
" <line x1=\"121\" y1=\"10\" x2=\"121\" y2=\"42\" />\n",
|
|
" <line x1=\"124\" y1=\"13\" x2=\"124\" y2=\"45\" />\n",
|
|
" <line x1=\"126\" y1=\"15\" x2=\"126\" y2=\"47\" />\n",
|
|
" <line x1=\"128\" y1=\"17\" x2=\"128\" y2=\"49\" />\n",
|
|
" <line x1=\"130\" y1=\"19\" x2=\"130\" y2=\"51\" />\n",
|
|
" <line x1=\"133\" y1=\"22\" x2=\"133\" y2=\"54\" />\n",
|
|
" <line x1=\"134\" y1=\"23\" x2=\"134\" y2=\"55\" />\n",
|
|
" <line x1=\"137\" y1=\"26\" x2=\"137\" y2=\"58\" />\n",
|
|
" <line x1=\"140\" y1=\"29\" x2=\"140\" y2=\"61\" />\n",
|
|
" <line x1=\"142\" y1=\"31\" x2=\"142\" y2=\"63\" />\n",
|
|
" <line x1=\"144\" y1=\"33\" x2=\"144\" y2=\"65\" />\n",
|
|
" <line x1=\"146\" y1=\"35\" x2=\"146\" y2=\"67\" />\n",
|
|
" <line x1=\"149\" y1=\"38\" x2=\"149\" y2=\"70\" />\n",
|
|
" <line x1=\"150\" y1=\"39\" x2=\"150\" y2=\"71\" />\n",
|
|
" <line x1=\"153\" y1=\"42\" x2=\"153\" y2=\"74\" />\n",
|
|
" <line x1=\"156\" y1=\"45\" x2=\"156\" y2=\"77\" />\n",
|
|
" <line x1=\"158\" y1=\"47\" x2=\"158\" y2=\"79\" />\n",
|
|
" <line x1=\"160\" y1=\"49\" x2=\"160\" y2=\"81\" />\n",
|
|
" <line x1=\"162\" y1=\"51\" x2=\"162\" y2=\"83\" />\n",
|
|
" <line x1=\"165\" y1=\"54\" x2=\"165\" y2=\"86\" />\n",
|
|
" <line x1=\"166\" y1=\"55\" x2=\"166\" y2=\"87\" />\n",
|
|
" <line x1=\"169\" y1=\"58\" x2=\"169\" y2=\"90\" />\n",
|
|
" <line x1=\"172\" y1=\"61\" x2=\"172\" y2=\"92\" />\n",
|
|
" <line x1=\"174\" y1=\"63\" x2=\"174\" y2=\"95\" />\n",
|
|
" <line x1=\"175\" y1=\"64\" x2=\"175\" y2=\"96\" />\n",
|
|
" <line x1=\"178\" y1=\"67\" x2=\"178\" y2=\"99\" />\n",
|
|
" <line x1=\"181\" y1=\"70\" x2=\"181\" y2=\"102\" />\n",
|
|
" <line x1=\"181\" y1=\"70\" x2=\"181\" y2=\"102\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Colored Rectangle -->\n",
|
|
" <polygon points=\"111.0,0.0 181.58823529411765,70.58823529411765 181.58823529411765,102.53001819660562 111.0,31.941782902487976\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n",
|
|
"\n",
|
|
" <!-- Horizontal lines -->\n",
|
|
" <line x1=\"111\" y1=\"0\" x2=\"145\" y2=\"0\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"112\" y1=\"1\" x2=\"147\" y2=\"1\" />\n",
|
|
" <line x1=\"114\" y1=\"3\" x2=\"149\" y2=\"3\" />\n",
|
|
" <line x1=\"117\" y1=\"6\" x2=\"152\" y2=\"6\" />\n",
|
|
" <line x1=\"118\" y1=\"7\" x2=\"153\" y2=\"7\" />\n",
|
|
" <line x1=\"121\" y1=\"10\" x2=\"156\" y2=\"10\" />\n",
|
|
" <line x1=\"124\" y1=\"13\" x2=\"159\" y2=\"13\" />\n",
|
|
" <line x1=\"126\" y1=\"15\" x2=\"161\" y2=\"15\" />\n",
|
|
" <line x1=\"128\" y1=\"17\" x2=\"163\" y2=\"17\" />\n",
|
|
" <line x1=\"130\" y1=\"19\" x2=\"165\" y2=\"19\" />\n",
|
|
" <line x1=\"133\" y1=\"22\" x2=\"168\" y2=\"22\" />\n",
|
|
" <line x1=\"134\" y1=\"23\" x2=\"169\" y2=\"23\" />\n",
|
|
" <line x1=\"137\" y1=\"26\" x2=\"172\" y2=\"26\" />\n",
|
|
" <line x1=\"140\" y1=\"29\" x2=\"175\" y2=\"29\" />\n",
|
|
" <line x1=\"142\" y1=\"31\" x2=\"177\" y2=\"31\" />\n",
|
|
" <line x1=\"144\" y1=\"33\" x2=\"179\" y2=\"33\" />\n",
|
|
" <line x1=\"146\" y1=\"35\" x2=\"181\" y2=\"35\" />\n",
|
|
" <line x1=\"149\" y1=\"38\" x2=\"184\" y2=\"38\" />\n",
|
|
" <line x1=\"150\" y1=\"39\" x2=\"185\" y2=\"39\" />\n",
|
|
" <line x1=\"153\" y1=\"42\" x2=\"188\" y2=\"42\" />\n",
|
|
" <line x1=\"156\" y1=\"45\" x2=\"191\" y2=\"45\" />\n",
|
|
" <line x1=\"158\" y1=\"47\" x2=\"193\" y2=\"47\" />\n",
|
|
" <line x1=\"160\" y1=\"49\" x2=\"195\" y2=\"49\" />\n",
|
|
" <line x1=\"162\" y1=\"51\" x2=\"197\" y2=\"51\" />\n",
|
|
" <line x1=\"165\" y1=\"54\" x2=\"200\" y2=\"54\" />\n",
|
|
" <line x1=\"166\" y1=\"55\" x2=\"201\" y2=\"55\" />\n",
|
|
" <line x1=\"169\" y1=\"58\" x2=\"204\" y2=\"58\" />\n",
|
|
" <line x1=\"172\" y1=\"61\" x2=\"206\" y2=\"61\" />\n",
|
|
" <line x1=\"174\" y1=\"63\" x2=\"209\" y2=\"63\" />\n",
|
|
" <line x1=\"175\" y1=\"64\" x2=\"210\" y2=\"64\" />\n",
|
|
" <line x1=\"178\" y1=\"67\" x2=\"213\" y2=\"67\" />\n",
|
|
" <line x1=\"181\" y1=\"70\" x2=\"216\" y2=\"70\" />\n",
|
|
" <line x1=\"181\" y1=\"70\" x2=\"216\" y2=\"70\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Vertical lines -->\n",
|
|
" <line x1=\"111\" y1=\"0\" x2=\"181\" y2=\"70\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"112\" y1=\"0\" x2=\"182\" y2=\"70\" />\n",
|
|
" <line x1=\"113\" y1=\"0\" x2=\"183\" y2=\"70\" />\n",
|
|
" <line x1=\"114\" y1=\"0\" x2=\"184\" y2=\"70\" />\n",
|
|
" <line x1=\"115\" y1=\"0\" x2=\"185\" y2=\"70\" />\n",
|
|
" <line x1=\"116\" y1=\"0\" x2=\"187\" y2=\"70\" />\n",
|
|
" <line x1=\"117\" y1=\"0\" x2=\"188\" y2=\"70\" />\n",
|
|
" <line x1=\"118\" y1=\"0\" x2=\"189\" y2=\"70\" />\n",
|
|
" <line x1=\"119\" y1=\"0\" x2=\"190\" y2=\"70\" />\n",
|
|
" <line x1=\"120\" y1=\"0\" x2=\"191\" y2=\"70\" />\n",
|
|
" <line x1=\"121\" y1=\"0\" x2=\"192\" y2=\"70\" />\n",
|
|
" <line x1=\"122\" y1=\"0\" x2=\"193\" y2=\"70\" />\n",
|
|
" <line x1=\"123\" y1=\"0\" x2=\"194\" y2=\"70\" />\n",
|
|
" <line x1=\"124\" y1=\"0\" x2=\"195\" y2=\"70\" />\n",
|
|
" <line x1=\"126\" y1=\"0\" x2=\"196\" y2=\"70\" />\n",
|
|
" <line x1=\"127\" y1=\"0\" x2=\"197\" y2=\"70\" />\n",
|
|
" <line x1=\"128\" y1=\"0\" x2=\"198\" y2=\"70\" />\n",
|
|
" <line x1=\"129\" y1=\"0\" x2=\"199\" y2=\"70\" />\n",
|
|
" <line x1=\"130\" y1=\"0\" x2=\"200\" y2=\"70\" />\n",
|
|
" <line x1=\"131\" y1=\"0\" x2=\"202\" y2=\"70\" />\n",
|
|
" <line x1=\"132\" y1=\"0\" x2=\"203\" y2=\"70\" />\n",
|
|
" <line x1=\"133\" y1=\"0\" x2=\"204\" y2=\"70\" />\n",
|
|
" <line x1=\"134\" y1=\"0\" x2=\"205\" y2=\"70\" />\n",
|
|
" <line x1=\"136\" y1=\"0\" x2=\"206\" y2=\"70\" />\n",
|
|
" <line x1=\"137\" y1=\"0\" x2=\"207\" y2=\"70\" />\n",
|
|
" <line x1=\"138\" y1=\"0\" x2=\"208\" y2=\"70\" />\n",
|
|
" <line x1=\"139\" y1=\"0\" x2=\"209\" y2=\"70\" />\n",
|
|
" <line x1=\"140\" y1=\"0\" x2=\"210\" y2=\"70\" />\n",
|
|
" <line x1=\"141\" y1=\"0\" x2=\"212\" y2=\"70\" />\n",
|
|
" <line x1=\"142\" y1=\"0\" x2=\"213\" y2=\"70\" />\n",
|
|
" <line x1=\"143\" y1=\"0\" x2=\"214\" y2=\"70\" />\n",
|
|
" <line x1=\"144\" y1=\"0\" x2=\"215\" y2=\"70\" />\n",
|
|
" <line x1=\"145\" y1=\"0\" x2=\"216\" y2=\"70\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Colored Rectangle -->\n",
|
|
" <polygon points=\"111.0,0.0 145.9441637736988,0.0 216.53239906781644,70.58823529411765 181.58823529411765,70.58823529411765\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n",
|
|
"\n",
|
|
" <!-- Horizontal lines -->\n",
|
|
" <line x1=\"181\" y1=\"70\" x2=\"216\" y2=\"70\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"181\" y1=\"102\" x2=\"216\" y2=\"102\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Vertical lines -->\n",
|
|
" <line x1=\"181\" y1=\"70\" x2=\"181\" y2=\"102\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"182\" y1=\"70\" x2=\"182\" y2=\"102\" />\n",
|
|
" <line x1=\"183\" y1=\"70\" x2=\"183\" y2=\"102\" />\n",
|
|
" <line x1=\"184\" y1=\"70\" x2=\"184\" y2=\"102\" />\n",
|
|
" <line x1=\"185\" y1=\"70\" x2=\"185\" y2=\"102\" />\n",
|
|
" <line x1=\"187\" y1=\"70\" x2=\"187\" y2=\"102\" />\n",
|
|
" <line x1=\"188\" y1=\"70\" x2=\"188\" y2=\"102\" />\n",
|
|
" <line x1=\"189\" y1=\"70\" x2=\"189\" y2=\"102\" />\n",
|
|
" <line x1=\"190\" y1=\"70\" x2=\"190\" y2=\"102\" />\n",
|
|
" <line x1=\"191\" y1=\"70\" x2=\"191\" y2=\"102\" />\n",
|
|
" <line x1=\"192\" y1=\"70\" x2=\"192\" y2=\"102\" />\n",
|
|
" <line x1=\"193\" y1=\"70\" x2=\"193\" y2=\"102\" />\n",
|
|
" <line x1=\"194\" y1=\"70\" x2=\"194\" y2=\"102\" />\n",
|
|
" <line x1=\"195\" y1=\"70\" x2=\"195\" y2=\"102\" />\n",
|
|
" <line x1=\"196\" y1=\"70\" x2=\"196\" y2=\"102\" />\n",
|
|
" <line x1=\"197\" y1=\"70\" x2=\"197\" y2=\"102\" />\n",
|
|
" <line x1=\"198\" y1=\"70\" x2=\"198\" y2=\"102\" />\n",
|
|
" <line x1=\"199\" y1=\"70\" x2=\"199\" y2=\"102\" />\n",
|
|
" <line x1=\"200\" y1=\"70\" x2=\"200\" y2=\"102\" />\n",
|
|
" <line x1=\"202\" y1=\"70\" x2=\"202\" y2=\"102\" />\n",
|
|
" <line x1=\"203\" y1=\"70\" x2=\"203\" y2=\"102\" />\n",
|
|
" <line x1=\"204\" y1=\"70\" x2=\"204\" y2=\"102\" />\n",
|
|
" <line x1=\"205\" y1=\"70\" x2=\"205\" y2=\"102\" />\n",
|
|
" <line x1=\"206\" y1=\"70\" x2=\"206\" y2=\"102\" />\n",
|
|
" <line x1=\"207\" y1=\"70\" x2=\"207\" y2=\"102\" />\n",
|
|
" <line x1=\"208\" y1=\"70\" x2=\"208\" y2=\"102\" />\n",
|
|
" <line x1=\"209\" y1=\"70\" x2=\"209\" y2=\"102\" />\n",
|
|
" <line x1=\"210\" y1=\"70\" x2=\"210\" y2=\"102\" />\n",
|
|
" <line x1=\"212\" y1=\"70\" x2=\"212\" y2=\"102\" />\n",
|
|
" <line x1=\"213\" y1=\"70\" x2=\"213\" y2=\"102\" />\n",
|
|
" <line x1=\"214\" y1=\"70\" x2=\"214\" y2=\"102\" />\n",
|
|
" <line x1=\"215\" y1=\"70\" x2=\"215\" y2=\"102\" />\n",
|
|
" <line x1=\"216\" y1=\"70\" x2=\"216\" y2=\"102\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Colored Rectangle -->\n",
|
|
" <polygon points=\"181.58823529411765,70.58823529411765 216.53239906781644,70.58823529411765 216.53239906781644,102.53001819660562 181.58823529411765,102.53001819660562\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n",
|
|
"\n",
|
|
" <!-- Text -->\n",
|
|
" <text x=\"199.060317\" y=\"122.530018\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >103</text>\n",
|
|
" <text x=\"236.532399\" y=\"86.559127\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(0,236.532399,86.559127)\">63</text>\n",
|
|
" <text x=\"136.294118\" y=\"87.235901\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,136.294118,87.235901)\">1916</text>\n",
|
|
"</svg>\n",
|
|
" </td>\n",
|
|
" </tr>\n",
|
|
"</table>"
|
|
],
|
|
"text/plain": [
|
|
"dask.array<stack, shape=(750, 340, 1916, 63, 103), dtype=float64, chunksize=(36, 36, 36, 63, 1), chunktype=numpy.ndarray>"
|
|
]
|
|
},
|
|
"execution_count": 30,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"IF.feature_stack #check the outlined feature stack"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 31,
|
|
"id": "211364a8-dc50-41c8-be71-c79c42df2908",
|
|
"metadata": {
|
|
"scrolled": true,
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"IF.make_xarray_nc()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "da251274-27b9-4f8e-854d-6f0bec7d173f",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Training"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e9e2123a-f35f-4edb-84c5-d969ad98daec",
|
|
"metadata": {},
|
|
"source": [
|
|
"### set up objects"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 33,
|
|
"id": "676bffbb-b75a-4b65-bebe-ecdf33cdb881",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# where to save label data\n",
|
|
"training_path_sample = os.path.join(training_path, sample)\n",
|
|
"if not os.path.exists(training_path_sample):\n",
|
|
" os.mkdir(training_path_sample)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 34,
|
|
"id": "b5577d73-1fb1-4668-b704-89bd0ffe9e91",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"TS = train_segmentation(training_path=training_path_sample)\n",
|
|
"TS.client = client\n",
|
|
"IF.client = client\n",
|
|
"TS.cluster = cluster\n",
|
|
"IF.cluster = cluster\n",
|
|
"TS.memlim = memlim\n",
|
|
"TS.n_workers = 2"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 35,
|
|
"id": "a8d8d911-acaa-49e4-8e8a-6a57e9d7965d",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# TS.training_dict_full = {}"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 36,
|
|
"id": "a91b1361-1e5a-4e39-a49c-40c3d999577b",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"TS.import_lazy_feature_data(IF.result, IF.original_dataset)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 37,
|
|
"id": "829ffdcb-a08b-4474-97c3-db43c082543d",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"IF.combined_feature_names = list(IF.feature_names) + list(IF.feature_names_time_independent)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 38,
|
|
"id": "9c2c411a-18e6-4b7a-8aa1-c3989d4a487d",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"TS.combined_feature_names = IF.combined_feature_names"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 39,
|
|
"id": "bc2536ae-993d-45dd-810d-b008769b265e",
|
|
"metadata": {
|
|
"scrolled": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"['Gaussian_4D_Blur_0.0',\n",
|
|
" 'Gaussian_4D_Blur_1.0',\n",
|
|
" 'Gaussian_4D_Blur_3.0',\n",
|
|
" 'Gaussian_4D_Blur_6.0',\n",
|
|
" 'Gaussian_4D_Blur_2.0',\n",
|
|
" 'diff_of_gauss_4D_1.0_0.0',\n",
|
|
" 'diff_of_gauss_4D_3.0_0.0',\n",
|
|
" 'diff_of_gauss_4D_6.0_0.0',\n",
|
|
" 'diff_of_gauss_4D_2.0_0.0',\n",
|
|
" 'diff_of_gauss_4D_3.0_1.0',\n",
|
|
" 'diff_of_gauss_4D_6.0_1.0',\n",
|
|
" 'diff_of_gauss_4D_2.0_1.0',\n",
|
|
" 'diff_of_gauss_4D_6.0_3.0',\n",
|
|
" 'diff_of_gauss_4D_2.0_3.0',\n",
|
|
" 'diff_of_gauss_4D_2.0_6.0',\n",
|
|
" 'Gradient_sigma_1.0_0',\n",
|
|
" 'Gradient_sigma_1.0_1',\n",
|
|
" 'Gradient_sigma_1.0_2',\n",
|
|
" 'Gradient_sigma_1.0_3',\n",
|
|
" 'hessian_sigma_1.0_00',\n",
|
|
" 'hessian_sigma_1.0_01',\n",
|
|
" 'hessian_sigma_1.0_02',\n",
|
|
" 'hessian_sigma_1.0_03',\n",
|
|
" 'hessian_sigma_1.0_11',\n",
|
|
" 'hessian_sigma_1.0_12',\n",
|
|
" 'hessian_sigma_1.0_13',\n",
|
|
" 'hessian_sigma_1.0_22',\n",
|
|
" 'hessian_sigma_1.0_23',\n",
|
|
" 'hessian_sigma_1.0_33',\n",
|
|
" 'Gradient_sigma_3.0_0',\n",
|
|
" 'Gradient_sigma_3.0_1',\n",
|
|
" 'Gradient_sigma_3.0_2',\n",
|
|
" 'Gradient_sigma_3.0_3',\n",
|
|
" 'hessian_sigma_3.0_00',\n",
|
|
" 'hessian_sigma_3.0_01',\n",
|
|
" 'hessian_sigma_3.0_02',\n",
|
|
" 'hessian_sigma_3.0_03',\n",
|
|
" 'hessian_sigma_3.0_11',\n",
|
|
" 'hessian_sigma_3.0_12',\n",
|
|
" 'hessian_sigma_3.0_13',\n",
|
|
" 'hessian_sigma_3.0_22',\n",
|
|
" 'hessian_sigma_3.0_23',\n",
|
|
" 'hessian_sigma_3.0_33',\n",
|
|
" 'Gradient_sigma_6.0_0',\n",
|
|
" 'Gradient_sigma_6.0_1',\n",
|
|
" 'Gradient_sigma_6.0_2',\n",
|
|
" 'Gradient_sigma_6.0_3',\n",
|
|
" 'hessian_sigma_6.0_00',\n",
|
|
" 'hessian_sigma_6.0_01',\n",
|
|
" 'hessian_sigma_6.0_02',\n",
|
|
" 'hessian_sigma_6.0_03',\n",
|
|
" 'hessian_sigma_6.0_11',\n",
|
|
" 'hessian_sigma_6.0_12',\n",
|
|
" 'hessian_sigma_6.0_13',\n",
|
|
" 'hessian_sigma_6.0_22',\n",
|
|
" 'hessian_sigma_6.0_23',\n",
|
|
" 'hessian_sigma_6.0_33',\n",
|
|
" 'Gradient_sigma_2.0_0',\n",
|
|
" 'Gradient_sigma_2.0_1',\n",
|
|
" 'Gradient_sigma_2.0_2',\n",
|
|
" 'Gradient_sigma_2.0_3',\n",
|
|
" 'hessian_sigma_2.0_00',\n",
|
|
" 'hessian_sigma_2.0_01',\n",
|
|
" 'hessian_sigma_2.0_02',\n",
|
|
" 'hessian_sigma_2.0_03',\n",
|
|
" 'hessian_sigma_2.0_11',\n",
|
|
" 'hessian_sigma_2.0_12',\n",
|
|
" 'hessian_sigma_2.0_13',\n",
|
|
" 'hessian_sigma_2.0_22',\n",
|
|
" 'hessian_sigma_2.0_23',\n",
|
|
" 'hessian_sigma_2.0_33',\n",
|
|
" 'Gaussian_time_0.0',\n",
|
|
" 'Gaussian_time_1.0',\n",
|
|
" 'Gaussian_time_3.0',\n",
|
|
" 'Gaussian_time_6.0',\n",
|
|
" 'Gaussian_time_2.0',\n",
|
|
" 'diff_of_gauss_time_1.0_0.0',\n",
|
|
" 'diff_of_gauss_time_3.0_0.0',\n",
|
|
" 'diff_of_gauss_time_6.0_0.0',\n",
|
|
" 'diff_of_gauss_time_2.0_0.0',\n",
|
|
" 'diff_of_gauss_time_3.0_1.0',\n",
|
|
" 'diff_of_gauss_time_6.0_1.0',\n",
|
|
" 'diff_of_gauss_time_2.0_1.0',\n",
|
|
" 'diff_of_gauss_time_6.0_3.0',\n",
|
|
" 'diff_of_gauss_time_2.0_3.0',\n",
|
|
" 'diff_of_gauss_time_2.0_6.0',\n",
|
|
" 'Gaussian_space_0.0',\n",
|
|
" 'Gaussian_space_1.0',\n",
|
|
" 'Gaussian_space_3.0',\n",
|
|
" 'Gaussian_space_6.0',\n",
|
|
" 'Gaussian_space_2.0',\n",
|
|
" 'diff_of_gauss_space_1.0_0.0',\n",
|
|
" 'diff_of_gauss_space_3.0_0.0',\n",
|
|
" 'diff_of_gauss_space_6.0_0.0',\n",
|
|
" 'diff_of_gauss_space_2.0_0.0',\n",
|
|
" 'diff_of_gauss_space_3.0_1.0',\n",
|
|
" 'diff_of_gauss_space_6.0_1.0',\n",
|
|
" 'diff_of_gauss_space_2.0_1.0',\n",
|
|
" 'diff_of_gauss_space_6.0_3.0',\n",
|
|
" 'diff_of_gauss_space_2.0_3.0',\n",
|
|
" 'diff_of_gauss_space_2.0_6.0',\n",
|
|
" 'diff_to_min_',\n",
|
|
" 'diff_temp_min_Gauss_2.0',\n",
|
|
" 'full_temp_mean_',\n",
|
|
" 'full_temp_min_',\n",
|
|
" 'full_temp_min_Gauss_2.0']"
|
|
]
|
|
},
|
|
"execution_count": 39,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"TS.combined_feature_names #print out all features"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c6fcd46d-9e4d-4167-ad48-39feb2d2d8b1",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"### interactive training"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "860f4a50-d113-4f1a-a0e2-3cc24303dcea",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### check for existing training sets"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 40,
|
|
"id": "a66df7f4-ad56-40ca-8f36-147bf642753d",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[]"
|
|
]
|
|
},
|
|
"execution_count": 40,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"existing_sets = os.listdir(os.path.join(training_path_sample, 'label_images'))\n",
|
|
"existing_sets.sort()\n",
|
|
"existing_sets"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 41,
|
|
"id": "a72d39ff-a38c-47d5-a7ad-c015c00fb415",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'/mpc/homes/fische_r/NAS/DASCOELY/processing/05_water_GDL_ML/'"
|
|
]
|
|
},
|
|
"execution_count": 41,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"training_path"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 42,
|
|
"id": "6ec3f726-7ff1-4a3a-876c-98ec4bf89a79",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# you can load a compatible pickled training dict, check feature names\n",
|
|
"# TS.training_dict = pickle.load(open(os.path.join(TS.training_path, pytrain_git_sha+'_training_dict.p'),'rb'))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 43,
|
|
"id": "f584347a-423e-40f2-a9c3-64ed0504a4d1",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"TS.training_dict = {}"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d96d4538-ba10-40dd-9da5-fea66813bd72",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"#### re-train with existing label sets. clear the training dictionary if necessary (training_dict)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 44,
|
|
"id": "191820b0-1cf1-4dc3-b0d8-1098cd1f84dc",
|
|
"metadata": {
|
|
"scrolled": true,
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# TS.train()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2b1e9874-0898-4eed-8264-722540398743",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### import training dict of other samples \n",
|
|
"(replace sample name and repeat for multiple samples), if necessary check features for overlap"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 45,
|
|
"id": "9ef7faa5-925a-4916-bc13-309364ab3e7c",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# oldsample = '4'\n",
|
|
"# oldgitsha = 'e42ad75' \n",
|
|
"# training_dict_old = pickle.load(open(os.path.join(training_path, oldsample, oldgitsha+'_training_dict.p'),'rb'))\n",
|
|
"# oldfeatures = pickle.load(open(os.path.join(training_path, oldsample, oldgitsha+'_feature_names.p'),'rb'))\n",
|
|
" \n",
|
|
"# # pickle.dump(TS.training_dict, open(os.path.join(TS.training_path, pytrain_git_sha+'_training_dict.p'),'wb'))\n",
|
|
"# # pickle.dump(TS.feature_names, open(os.path.join(TS.training_path, pytrain_git_sha+'_feature_names.p'),'wb'))\n",
|
|
"\n",
|
|
"# for key in training_dict_old.keys():\n",
|
|
"# TS.training_dict[oldsample+key] = training_dict_old[key]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "49f80ce0-f19c-4e50-979b-53738597cd66",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### suggest a new training coordinate\n",
|
|
"currently retraining with new feature stack not properly implemented. Workaround: choose from the exiting training sets and train with them (additional labeling optional)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 49,
|
|
"id": "98880a87-86c9-455e-86cd-11c7b7dfc9e6",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"You could try x = 680 and feature = 8\n",
|
|
"However, please sort it like the original xyztimetime_0feature\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"TS.suggest_training_set() #this function does not work anymoere as intended, run it a few times until it gives a reasonable suggestion"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 50,
|
|
"id": "49d6537c-9d9f-437c-836b-656045b694df",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"c1 = 'x'\n",
|
|
"p1 = 530\n",
|
|
"c2 = 'time'\n",
|
|
"p2 = 16"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 111,
|
|
"id": "3ba0c4ca-e904-4215-ae89-f62bc2fc1134",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2023-10-16 16:35:37,076 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-10-16 16:35:37,084 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"TS.load_training_set(c1, p1, c2, p2)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 115,
|
|
"id": "c6cc5f4d-ecba-4aa4-b731-ff847f8bd822",
|
|
"metadata": {
|
|
"scrolled": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"if not len(client.cluster.workers)>1: \n",
|
|
" client = reboot_client(client)\n",
|
|
" TS.client = client\n",
|
|
" IF.client = client"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 116,
|
|
"id": "71748fb7-5575-4011-82d2-87d876205fe0",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"im8 = TS.current_im8"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 117,
|
|
"id": "a9681280-2ecf-4cbb-8237-1c786c92b07e",
|
|
"metadata": {
|
|
"scrolled": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"(340, 1916)"
|
|
]
|
|
},
|
|
"execution_count": 117,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"im8.shape"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 118,
|
|
"id": "83f3be2c-4bb2-4189-8f11-b03f3b7c3a13",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# TS.get_slice_feat_stack()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 119,
|
|
"id": "32a7e62d-0896-46d5-b4c6-48af57a88fab",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"feat_data = TS.feat_data\n",
|
|
"[c1,p1,c2,p2] = TS.current_coordinates\n",
|
|
"newslice = True\n",
|
|
"\n",
|
|
"if c1 == 'x' and c2 == 'time':\n",
|
|
" feat_stack = feat_data['feature_stack'].sel(x = p1, time = p2)\n",
|
|
" feat_stack_t_idp = feat_data['feature_stack_time_independent'].sel(x = p1, time_0 = 0)\n",
|
|
"elif c1 == 'x' and c2 == 'y':\n",
|
|
" feat_stack = feat_data['feature_stack'].sel(x = p1, y = p2)#.data\n",
|
|
" feat_stack_t_idp = feat_data['feature_stack_time_independent'].sel(x = p1, y = p2)\n",
|
|
"elif c1 == 'x' and c2 == 'z':\n",
|
|
" feat_stack = feat_data['feature_stack'].sel(x = p1, z = p2)#.data\n",
|
|
" feat_stack_t_idp = feat_data['feature_stack_time_independent'].sel(x = p1, z = p2)\n",
|
|
"elif c1 == 'y' and c2 == 'z':\n",
|
|
" feat_stack = feat_data['feature_stack'].sel(y = p1, z = p2)#.data\n",
|
|
" feat_stack_t_idp = feat_data['feature_stack_time_independent'].sel(y = p1, z = p2)\n",
|
|
"elif c1 == 'y' and c2 == 'time':\n",
|
|
" feat_stack = feat_data['feature_stack'].sel(y = p1, time = p2)#.data\n",
|
|
" feat_stack_t_idp = feat_data['feature_stack_time_independent'].sel(y = p1, time_0 = 0)\n",
|
|
"elif c1 == 'z' and c2 == 'time':\n",
|
|
" feat_stack = feat_data['feature_stack'].sel(z = p1, time = p2)#.data\n",
|
|
" feat_stack_t_idp = feat_data['feature_stack_time_independent'].sel(z = p1, time_0 = 0)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 120,
|
|
"id": "b2d8c931-d16c-40b4-b58d-a652ba02bb42",
|
|
"metadata": {
|
|
"scrolled": true,
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"/mpc/homes/fische_r/miniconda3/lib/python3.11/site-packages/distributed/client.py:3149: UserWarning: Sending large graph of size 70.32 MiB.\n",
|
|
"This may cause some slowdown.\n",
|
|
"Consider scattering data ahead of time and using futures.\n",
|
|
" warnings.warn(\n",
|
|
"2023-10-16 16:48:40,746 - distributed.utils_perf - WARNING - full garbage collections took 14% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:48:43,874 - distributed.utils_perf - WARNING - full garbage collections took 17% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:48:45,807 - distributed.utils_perf - WARNING - full garbage collections took 17% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:48:48,566 - distributed.utils_perf - WARNING - full garbage collections took 18% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:48:52,023 - distributed.utils_perf - WARNING - full garbage collections took 18% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:48:54,870 - distributed.utils_perf - WARNING - full garbage collections took 18% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:48:57,613 - distributed.utils_perf - WARNING - full garbage collections took 18% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:49:00,164 - distributed.utils_perf - WARNING - full garbage collections took 18% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:49:02,913 - distributed.utils_perf - WARNING - full garbage collections took 19% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:49:05,388 - distributed.utils_perf - WARNING - full garbage collections took 19% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:49:10,057 - distributed.utils_perf - WARNING - full garbage collections took 19% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:49:14,945 - distributed.utils_perf - WARNING - full garbage collections took 19% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:49:20,364 - distributed.utils_perf - WARNING - full garbage collections took 19% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:49:25,251 - distributed.utils_perf - WARNING - full garbage collections took 18% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:49:36,043 - distributed.utils_perf - WARNING - full garbage collections took 17% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:49:47,614 - distributed.utils_perf - WARNING - full garbage collections took 17% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:49:53,204 - distributed.utils_perf - WARNING - full garbage collections took 17% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:49:59,902 - distributed.utils_perf - WARNING - full garbage collections took 17% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:50:04,744 - distributed.utils_perf - WARNING - full garbage collections took 18% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:50:11,602 - distributed.utils_perf - WARNING - full garbage collections took 18% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:50:20,690 - distributed.utils_perf - WARNING - full garbage collections took 18% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:50:26,324 - distributed.utils_perf - WARNING - full garbage collections took 18% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:50:37,569 - distributed.utils_perf - WARNING - full garbage collections took 18% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:50:48,366 - distributed.utils_perf - WARNING - full garbage collections took 17% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:51:27,134 - distributed.worker.memory - WARNING - gc.collect() took 4.416s. This is usually a sign that some tasks handle too many Python objects at the same time. Rechunking the work into smaller tasks might help.\n",
|
|
"2023-10-16 16:51:58,619 - distributed.utils_perf - WARNING - full garbage collections took 16% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:52:21,992 - distributed.utils_perf - WARNING - full garbage collections took 16% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:52:48,301 - distributed.utils_perf - WARNING - full garbage collections took 15% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:53:27,298 - distributed.worker.memory - WARNING - gc.collect() took 3.806s. This is usually a sign that some tasks handle too many Python objects at the same time. Rechunking the work into smaller tasks might help.\n",
|
|
"2023-10-16 16:53:40,754 - distributed.utils_perf - WARNING - full garbage collections took 14% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:54:02,620 - distributed.utils_perf - WARNING - full garbage collections took 14% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:54:52,449 - distributed.utils_perf - WARNING - full garbage collections took 13% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:56:02,341 - distributed.utils_perf - WARNING - full garbage collections took 12% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:56:53,988 - distributed.utils_perf - WARNING - full garbage collections took 11% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:57:42,095 - distributed.utils_perf - WARNING - full garbage collections took 11% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:58:11,898 - distributed.utils_perf - WARNING - full garbage collections took 11% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:58:50,714 - distributed.utils_perf - WARNING - full garbage collections took 11% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:59:13,292 - distributed.utils_perf - WARNING - full garbage collections took 10% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:59:31,361 - distributed.utils_perf - WARNING - full garbage collections took 10% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 16:59:54,830 - distributed.utils_perf - WARNING - full garbage collections took 11% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 17:00:18,192 - distributed.utils_perf - WARNING - full garbage collections took 11% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 17:00:30,861 - distributed.utils_perf - WARNING - full garbage collections took 11% CPU time recently (threshold: 10%)\n",
|
|
"2023-10-16 17:00:49,957 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-10-16 17:00:57,938 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"if type(feat_stack) is not np.ndarray:\n",
|
|
" fut = client.scatter(feat_stack)\n",
|
|
" fut = fut.result()\n",
|
|
" fut = fut.compute()\n",
|
|
" feat_stack = fut\n",
|
|
" try:\n",
|
|
" client.restart()\n",
|
|
" except:\n",
|
|
" client = reboot_client(client)\n",
|
|
" TS.client = client\n",
|
|
" IF.client = client "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "7efbaf06-eb2d-4abc-b532-23a8ac9d94aa",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### calculate feature stack and reboot cluster if workers do not return\n",
|
|
"client restart seemingly appears to appear unexplainable memory leak"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "bb36b213-4026-447b-80c2-a5842a4c1700",
|
|
"metadata": {
|
|
"scrolled": true,
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"if type(feat_stack_t_idp) is not np.ndarray:\n",
|
|
" fut = client.scatter(feat_stack_t_idp)\n",
|
|
" fut = fut.result()\n",
|
|
" fut = fut.compute()\n",
|
|
" feat_stack_t_idp = fut\n",
|
|
" try:\n",
|
|
" client.restart()\n",
|
|
" except:\n",
|
|
" client = reboot_client(client)\n",
|
|
" TS.client = client\n",
|
|
" IF.client = client \n",
|
|
" "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "76729b05-fcf1-4c3e-b35d-a56bb6ee9e40",
|
|
"metadata": {
|
|
"scrolled": true,
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"feat_stack = np.concatenate([feat_stack, feat_stack_t_idp], axis = 2)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "4e0f4378-8b08-416e-902a-536c247eefb6",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"TS.current_feat_stack = feat_stack\n",
|
|
"if type(TS.current_feat_stack) is not np.ndarray:\n",
|
|
" TS.current_computed = False\n",
|
|
"else:\n",
|
|
" TS.current_computed = True"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "554c0ff3-0c2c-4370-b037-be197b5bcc27",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### canvas for labeling"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "92e0fc4a-b158-493d-b8d9-9c74e07218c5",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# imm = mean[:,p1,:].copy()\n",
|
|
"# im8m= imm-imm.min()\n",
|
|
"# im8m = im8m/im8m.max()*255\n",
|
|
"# im8 = im8m"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "c51991ea-03cb-4172-8018-4cc11d7712b8",
|
|
"metadata": {
|
|
"scrolled": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# give a list of features with indices, you can display any feature to help labeling\n",
|
|
"for i in range(len(IF.combined_feature_names)):\n",
|
|
" print(i, IF.combined_feature_names[i])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "d2fec1da-0753-4805-b13e-90bad5cc343e",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# double check index\n",
|
|
"i = 74\n",
|
|
"print(i, IF.combined_feature_names[i])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "dba6ee06-4937-45d1-bee8-6e8b2a1e0b3e",
|
|
"metadata": {},
|
|
"source": [
|
|
"### label the training image by setting the color and drawing on the canvas\n",
|
|
"- currently 4 options possible: #ff0000, #00ff00, #0000ff, #ffff00\n",
|
|
"- rerun cell to clear labeling\n",
|
|
"- tip: use the trackpad (panning?) zoom instead of ctrl+scrollwheel"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 178,
|
|
"id": "c0fe6bf7-4040-4e4a-b235-601dae6e489a",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"original shape: (340, 1916)\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"application/vnd.jupyter.widget-view+json": {
|
|
"model_id": "206d0a6ee3674a158b0e99da9019a5c0",
|
|
"version_major": 2,
|
|
"version_minor": 0
|
|
},
|
|
"text/plain": [
|
|
"HBox(children=(MultiCanvas(height=340, width=1916), ColorPicker(value='#ff0000', description='Color:')))"
|
|
]
|
|
},
|
|
"execution_count": 178,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"alpha = 0.35\n",
|
|
"# zoom1 = (-500,-1)\n",
|
|
"# zoom2 = (600,1400)\n",
|
|
"\n",
|
|
"# zoom1 = (0, -1)\n",
|
|
"# zoom2 = (0, -1)\n",
|
|
"\n",
|
|
"# im8 = TS.current_im8\n",
|
|
"#trick: use gaussian_time_4_0 to label static phases ()\n",
|
|
"# im8 = display_feature(104, TS, feat_stack)\n",
|
|
"# im8 = display_feature(0, TS)\n",
|
|
"# print(IF.combined_feature_names[-20])\n",
|
|
"print('original shape: ',im8.shape)\n",
|
|
"im8_display = im8.copy() #[zoom1[0]:zoom1[1], zoom2[0]:zoom2[1]]\n",
|
|
"# print('diyplay shape : ',im8_display.shape,' at: ', (zoom1[0], zoom2[0]))\n",
|
|
"\n",
|
|
"resultim = TS.current_result.copy()\n",
|
|
"\n",
|
|
"resultim_display = resultim #[zoom1[0]:zoom1[1], zoom2[0]:zoom2[1]]\n",
|
|
"\n",
|
|
"\n",
|
|
"width = im8_display.shape[1]\n",
|
|
"height = im8_display.shape[0]\n",
|
|
"Mcanvas = MultiCanvas(4, width=width, height=height)\n",
|
|
"background = Mcanvas[0]\n",
|
|
"resultdisplay = Mcanvas[2]\n",
|
|
"truthdisplay = Mcanvas[1]\n",
|
|
"canvas = Mcanvas[3]\n",
|
|
"canvas.sync_image_data = True\n",
|
|
"drawing = False\n",
|
|
"position = None\n",
|
|
"shape = []\n",
|
|
"image_data = np.stack((im8_display, im8_display, im8_display), axis=2)\n",
|
|
"background.put_image_data(image_data, 0, 0)\n",
|
|
"slidealpha = IntSlider(description=\"Result overlay\", value=0.15)\n",
|
|
"resultdisplay.global_alpha = alpha #slidealpha.value\n",
|
|
"if np.any(resultim>0):\n",
|
|
" result_data = np.stack(((resultim_display==0), (resultim_display==1),(resultim_display==2)), axis=2)*255\n",
|
|
" mask3 = resultim_display==3\n",
|
|
" result_data[mask3,0] = 255\n",
|
|
" result_data[mask3,1] = 255\n",
|
|
"else:\n",
|
|
" result_data = np.stack((0*resultim, 0*resultim, 0*resultim), axis=2)\n",
|
|
"resultdisplay.put_image_data(result_data, 0, 0)\n",
|
|
"canvas.on_mouse_down(on_mouse_down)\n",
|
|
"canvas.on_mouse_move(on_mouse_move)\n",
|
|
"canvas.on_mouse_up(on_mouse_up)\n",
|
|
"picker = ColorPicker(description=\"Color:\", value=\"#ff0000\") #red\n",
|
|
"# picker = ColorPicker(description=\"Color:\", value=\"#0000ff\") #blue\n",
|
|
"# picker = ColorPicker(description=\"Color:\", value=\"#00ff00\") #green\n",
|
|
"\n",
|
|
"link((picker, \"value\"), (canvas, \"stroke_style\"))\n",
|
|
"link((picker, \"value\"), (canvas, \"fill_style\"))\n",
|
|
"link((slidealpha, \"value\"), (resultdisplay, \"global_alpha\"))\n",
|
|
"\n",
|
|
"HBox((Mcanvas,picker))\n",
|
|
"# HBox((Mcanvas,)) #picker "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 170,
|
|
"id": "0e32c35a-e644-4dfd-b52e-be2a1bd1e940",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# comment/uncomment to adjust brightness/contrast of displayed image\n",
|
|
"tfs.plot_im_histogram(im8)\n",
|
|
"# im8 = TS.current_im8\n",
|
|
"# im8 = tfs.adjust_image_contrast(im8,30,110)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "5d51d5d9-398d-4ee9-b50a-98ba94a0b6f7",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### inspect labels and training progress"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 171,
|
|
"id": "733006e0-b8c5-4de8-9b23-80df9e53e1c2",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 2000x1000 with 4 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"fig, axes = plt.subplots(1,4, figsize=(20,10))\n",
|
|
"axes[0].imshow(TS.current_result, 'gray')\n",
|
|
"axes[1].imshow(TS.current_im8, 'gray')\n",
|
|
"\n",
|
|
"axes[2].imshow(TS.current_truth)\n",
|
|
"if TS.current_computed:\n",
|
|
" axes[3].imshow(TS.current_feat_stack[:,:,-10])\n",
|
|
"else:\n",
|
|
" axes[3].imshow(TS.current_result, 'gray')\n",
|
|
"\n",
|
|
"for ax in axes:\n",
|
|
" ax.set_xticks([])\n",
|
|
" ax.set_yticks([])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c81a6e0c-33c5-4d82-8cd3-0a258015e95d",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### update training set if labels are ok"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 172,
|
|
"id": "9a95cb65-3f1f-4a42-83f3-af3e2be2f537",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"label_set = canvas.get_image_data()\n",
|
|
"\n",
|
|
"test = TS.current_truth.copy()\n",
|
|
"\n",
|
|
"test[np.bitwise_and(label_set[:,:,0]>0,np.bitwise_xor(label_set[:,:,0]>0,label_set[:,:,1]>0))] = 1\n",
|
|
"test[label_set[:,:,1]>0] = 2\n",
|
|
"test[label_set[:,:,2]>0] = 4 #order of 4&3 flipped for legacy reasons (existing training labels)\n",
|
|
"test[np.bitwise_and(label_set[:,:,0]>0,label_set[:,:,1]>0)] = 3\n",
|
|
"\n",
|
|
"TS.current_truth = test.copy()\n",
|
|
"imageio.imsave(TS.current_truthpath, TS.current_truth)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d994e7f8-8809-4b3b-910a-2b55d36db397",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### train!"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 175,
|
|
"id": "0a243dc8-89c0-43cd-a32d-89f1a9abbade",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"training and classifying\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"TS.train_slice()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "43679e17-b6f7-4d9f-9eee-ee7917c9f145",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### iterate labeling and training on current training slice until happy then repeat on different slice"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "af84a18a-7416-4636-a63c-82959a47c09c",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### check on training progress by plausible feature importance"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 180,
|
|
"id": "c63cb1db-d578-4560-9211-deb3fc7b3065",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"Text(0, 0.5, 'importance')"
|
|
]
|
|
},
|
|
"execution_count": 180,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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aK1sFwocNGhQdOvWrcXMxsWLF7eYAfle119/fZx22mnxy1/+Mg499NBmjw0ZMqTsdfbs2TN69uxZ5hYAAAAAAO9XthmUPXr0iDFjxsRdd93VbPldd90V48ePX+//mzlzZpx66qlx7bXXxkc/+tEWj48bN67FOu+8884NrhMAAAAAyCPrrZanTp0akydPjr333jvGjRsXV155ZSxatCimTJkSEWtOvX7ppZfi6quvjog14eQpp5wS3/3ud2O//fYrzpTs1atX1NTURETEmWeeGQcccEB84xvfiGOOOSZuvvnmuPvuu+PBBx/Ms5EAAAAAwHplvQblCSecEJdeemlceOGFsccee8T9998ft956awwfPjwiIurq6mLRokXF+h/+8Ifx7rvvxhe/+MWora0t/px55pnFmvHjx8d1110XP/3pT2O33XaLGTNmxPXXXx/77rvvJt8+AAAAAGDDCimllLsT7c2yZcuipqYmli5dGv3798/dnQ7h7VXvxsiv3hEREQsuPCJ698g6ORcAAACAjMrJ17LfxRsAAAAA6LoElAAAAABANgJKAAAAACAbASUAAAAAkI2AEgAAAADIRkAJAAAAAGQjoAQAAAAAshFQAgAAAADZCCgBAAAAgGwElAAAAABANgJKAAAAACAbASUAAAAAkI2AEgAAAADIRkAJAAAAAGQjoAQAAAAAshFQAgAAAADZCCgBAAAAgGwElAAAAABANgJKAAAAACAbASUAAAAAkI2AEgAAAADIRkAJAAAAAGQjoAQAAAAAshFQAgAAAADZCCgBAAAAgGwElAAAAABANgJKAAAAACAbASUAAAAAkI2AEgAAAADIRkAJAAAAAGQjoAQAAAAAshFQAgAAAADZCCgBAAAAgGwElAAAAABANgJKAAAAACAbASUAAAAAkI2AEgAAAADIRkAJAAAAAGQjoAQAAAAAshFQAgAAAADZCCgBAAAAgGwElAAAAABANgJKAAAAACAbASUAAAAAkI2AEgAAAADIRkAJAAAAAGQjoAQAAAAAshFQAgAAAADZCCgBAAAAgGwElAAAAABANgJKAAAAACAbASUAAAAAkI2AEgAAAADIRkAJAAAAAGQjoAQAAAAAshFQAgAAAADZCCgBAAAAgGwElAAAAABANgJKAAAAACAbASUAAAAAkI2AEgAAAADIRkAJAAAAAGQjoAQAAAAAshFQAgAAAADZCCgBAAAAgGwElAAAAABANgJKAAAAACAbASUAAAAAkI2AEgAAAADIRkAJAAAAAGQjoAQAAAAAshFQAgAAAADZCCgBAAAAgGwElAAAAABANgJKAAAAACAbASUAAAAAkI2AEgAAAADIRkAJAAAAAGQjoAQAAAAAshFQAgAAAADZCCgBAAAAgGwElAAAAABANgJKAAAAACAbASUAAAAAkI2AEgAAAADIRkAJAAAAAGQjoAQAAAAAshFQAgAAAADZCCgBAAAAgGwElAAAAABANgJKAAAAACAbASUAAAAAkI2AEgAAAADIRkAJAAAAAGTT6oDygQceiJNPPjnGjRsXL730UkRE/M///E88+OCDbdY5AAAAAKBza1VAecMNN8QRRxwRvXr1innz5sXKlSsjImL58uXx9a9/vU07CAAAAAB0Xq0KKL/2ta/FFVdcEVdddVVsttlmxeXjx4+PuXPntlnnAAAAAIDOrVUB5Z///Oc44IADWizv379/vPHGG++3TwAAAABAF9GqgLK2tjb+8pe/tFj+4IMPxrbbbvu+OwUAAAAAdA2tCig///nPx5lnnhmPPPJIFAqFePnll+PnP/95/Mu//Et84QtfaOs+AgAAAACdVPfW/Kd/+7d/i6VLl8aHP/zhWLFiRRxwwAHRs2fP+Jd/+Zf40pe+1NZ9BAAAAAA6qVYFlBERF110UZx33nmxYMGCaGxsjJEjR0bfvn3bsm8AAAAAQCfXqlO8ly5dGkuWLInevXvH3nvvHWPHjo2+ffvGkiVLYtmyZWWt67LLLosRI0ZEdXV1jBkzJh544IH11tbV1cVJJ50UO+20U1RVVcVZZ53VombGjBlRKBRa/KxYsaLczQQAAAAAKqxVAeUnPvGJuO6661os/8UvfhGf+MQnSl7P9ddfH2eddVacd955MW/evNh///3jyCOPjEWLFq2zfuXKlbHFFlvEeeedF7vvvvt619u/f/+oq6tr9lNdXV1yvwAAAACATaNVAeUjjzwSH/7wh1ssP+igg+KRRx4peT2XXHJJnHbaafGZz3wmdtlll7j00ktj2LBhcfnll6+zfptttonvfve7ccopp0RNTc1611soFGLIkCHNfgAAAACA9qdVAeXKlSvj3XffbbF89erV8c4775S0jlWrVsWcOXPi8MMPb7b88MMPj4ceeqg13Sp68803Y/jw4bHVVlvFUUcdFfPmzdtg/cqVK2PZsmXNfgAAAACAymtVQLnPPvvElVde2WL5FVdcEWPGjClpHa+++mo0NDTE4MGDmy0fPHhw1NfXt6ZbERGx8847x4wZM+LXv/51zJw5M6qrq2PChAnx7LPPrvf/TJ8+PWpqaoo/w4YNa3X7AAAAAEDpWnUX74suuigOPfTQePzxx+OQQw6JiIjf/va38Yc//CHuvPPOstZVKBSa/Z5SarGsHPvtt1/st99+xd8nTJgQe+21V3z/+9+P733ve+v8P+ecc05MnTq1+PuyZcuElAAAAACwCbRqBuWECRNi9uzZMWzYsPjFL34Rs2bNiu233z7++Mc/xv7771/SOgYNGhTdunVrMVty8eLFLWZVvh9VVVWxzz77bHAGZc+ePaN///7NfgAAAACAymvVDMqIiD322CN+/vOft7rhHj16xJgxY+Kuu+6K4447rrj8rrvuimOOOabV632vlFLMnz8/Ro8e3WbrBAAAAADaRqsDysbGxvjLX/4SixcvjsbGxmaPHXDAASWtY+rUqTF58uTYe++9Y9y4cXHllVfGokWLYsqUKRGx5tTrl156Ka6++uri/5k/f35ErLkRziuvvBLz58+PHj16xMiRIyMiYtq0abHffvvFDjvsEMuWLYvvfe97MX/+/PjBD37Q2k0FAAAAACqkVQHlww8/HCeddFL87W9/i5RSs8cKhUI0NDSUtJ4TTjghXnvttbjwwgujrq4uRo0aFbfeemsMHz48IiLq6upi0aJFzf7PnnvuWfz3nDlz4tprr43hw4fH888/HxERb7zxRnzuc5+L+vr6qKmpiT333DPuv//+GDt2bGs2FQAAAACooEJ6b8JYgj322CN23HHHmDZtWtTW1ra4qU1NTU2bdTCHZcuWRU1NTSxdutT1KEv09qp3Y+RX74iIiAUXHhG9e7R6ci4AAAAAHVw5+VqrUqRnn302/vd//ze23377VnUQAAAAACCilXfx3nfffeMvf/lLW/cFAAAAAOhiWjWD8p//+Z/j//2//xf19fUxevTo2GyzzZo9vttuu7VJ5wAAAACAzq1VAeXHP/7xiIj49Kc/XVxWKBQipVTWTXIAAAAAgK6tVQHlwoUL27ofAAAAAEAX1KqAcvjw4W3dDwAAAACgC2pVQNlkwYIFsWjRoli1alWz5UcfffT76hQAAAAA0DW0KqB87rnn4rjjjos//elPxWtPRqy5DmVEuAYlAAAAAFCSqtb8pzPPPDNGjBgRf//736N3797x5JNPxv333x9777133HvvvW3cRQAAAACgs2rVDMrZs2fH7373u9hiiy2iqqoqqqqq4kMf+lBMnz49zjjjjJg3b15b9xMAAAAA6IRaNYOyoaEh+vbtGxERgwYNipdffjki1tw8589//nPb9Q4AAAAA6NRaNYNy1KhR8cc//jG23Xbb2HfffeOb3/xm9OjRI6688srYdttt27qPAAAAAEAn1aqA8itf+Uq89dZbERHxta99LY466qjYf//94wMf+EBcd911bdpBAAAAAKDzalVAecQRRxT/ve2228aCBQtiyZIlMWDAgOKdvAEAAAAANqZV16D89Kc/HcuXL2+2bODAgfH222/Hpz/96TbpGAAAAADQ+bUqoPzZz34W77zzTovl77zzTlx99dXvu1MAAAAAQNdQ1iney5Yti5RSpJRi+fLlUV1dXXysoaEhbr311thyyy3bvJMAAAAAQOdUVkC5+eabR6FQiEKhEDvuuGOLxwuFQkybNq3NOgcAAAAAdG5lBZT33HNPpJTi4IMPjhtuuCEGDhxYfKxHjx4xfPjwGDp0aJt3EgAAAADonMoKKA888MB4991345RTTom99947hg0bVql+AQAAAABdQNk3yenevXvccMMN0dDQUIn+AAAAAABdSKvu4n3IIYfEvffe28ZdAQAAAAC6mrJO8W5y5JFHxjnnnBNPPPFEjBkzJvr06dPs8aOPPrpNOgcAAAAAdG6tCihPP/30iIi45JJLWjxWKBSc/g0AAAAAlKRVAWVjY2Nb9wMAAAAA6IJadQ1KAAAAAIC20OqA8r777otJkybF9ttvHzvssEMcffTR8cADD7Rl3wAAAACATq5VAeU111wThx56aPTu3TvOOOOM+NKXvhS9evWKQw45JK699tq27iMAAAAA0Em16hqUF110UXzzm9+Ms88+u7jszDPPjEsuuST+8z//M0466aQ26yAAAAAA0Hm1agblc889F5MmTWqx/Oijj46FCxe+704BAAAAAF1DqwLKYcOGxW9/+9sWy3/729/GsGHD3nenAAAAAICuoVWneP+///f/4owzzoj58+fH+PHjo1AoxIMPPhgzZsyI7373u23dRwAAAACgk2pVQHn66afHkCFD4tvf/nb84he/iIiIXXbZJa6//vo45phj2rSDAAAAAEDn1aqAMiLiuOOOi+OOO64t+wIAAAAAdDGtDigjIh577LF46qmnolAoxC677BJjxoxpq34BAAAAAF1AqwLKF198MU488cT4/e9/H5tvvnlERLzxxhsxfvz4mDlzphvlAAAAAAAladVdvD/96U/H6tWr46mnnoolS5bEkiVL4qmnnoqUUpx22mlt3UcAAAAAoJNq1QzKBx54IB566KHYaaedist22mmn+P73vx8TJkxos84BAAAAAJ1bq2ZQbr311rF69eoWy99999344Ac/+L47BQAAAAB0Da0KKL/5zW/GP//zP8djjz0WKaWIWHPDnDPPPDP+67/+q007CAAAAAB0XoXUlDCWYcCAAfH222/Hu+++G927rzlLvOnfffr0aVa7ZMmStunpJrRs2bKoqamJpUuXRv/+/XN3p0N4e9W7MfKrd0RExIILj4jePd7XDeIBAAAA6MDKyddalSJdeumlrflvAAAAAADNtCqg/OQnP9nW/QAAAAAAuqD3dR7u4sWLY/HixdHY2Nhs+W677fa+OgUAAAAAdA2tCijnzJkTn/zkJ+Opp56K917CslAoRENDQ5t0DgAAAADo3FoVUH7qU5+KHXfcMX784x/H4MGDo1AotHW/AAAAAIAuoFUB5cKFC+PGG2+M7bffvq37AwAAAAB0IVWt+U+HHHJIPP74423dFwAAAACgi2nVDMof/ehH8clPfjKeeOKJGDVqVGy22WbNHj/66KPbpHMAAAAAQOfWqoDyoYceigcffDBuu+22Fo+5SQ4AAAAAUKpWneJ9xhlnxOTJk6Ouri4aGxub/QgnAQAAAIBStSqgfO211+Lss8+OwYMHt3V/AAAAAIAupFUB5cc+9rG455572rovAAAAAEAX06prUO64445xzjnnxIMPPhijR49ucZOcM844o006BwAAAAB0bq2+i3ffvn3jvvvui/vuu6/ZY4VCQUAJAAAAAJSkVQHlwoUL27ofAAAAAEAXVHJAOXXq1PjP//zP6NOnT0ydOnW9dYVCIb797W+3SecAAAAAgM6t5IBy3rx5sXr16uK/16dQKLz/XgEAAAAAXULJAeXad+12B28AAAAAoC1U5e4AAAAAANB1CSgBAAAAgGwElAAAAABANgJKAAAAACCbkm+SAwAAAACs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mj0+Y8aMKBQKLX5WrOh6FxgFAAAAoH2ZOKo27p56YPH3GZ/aJx788sFdNpyMyBxQXn/99XHWWWfFeeedF/PmzYv9998/jjzyyFi0aNE66xcuXBgf+chHYv/994958+bFueeeG2eccUbccMMNzer69+8fdXV1zX6qq7veBUYBAAAAaH/WPo177IiBXfK07rV1z9n4JZdcEqeddlp85jOfiYiISy+9NO644464/PLLY/r06S3qr7jiith6663j0ksvjYiIXXbZJR577LH4r//6r/j4xz9erCsUCjFkyJBNsg0AAAAAQOtlm0G5atWqmDNnThx++OHNlh9++OHx0EMPrfP/zJ49u0X9EUccEY899lisXr26uOzNN9+M4cOHx1ZbbRVHHXVUzJs3b4N9WblyZSxbtqzZDwAAAABQedkCyldffTUaGhpi8ODBzZYPHjw46uvr1/l/6uvr11n/7rvvxquvvhoRETvvvHPMmDEjfv3rX8fMmTOjuro6JkyYEM8+++x6+zJ9+vSoqakp/gwbNux9bh0AAAAAUIrsN8kpFJqfY59SarFsY/VrL99vv/3i5JNPjt133z3233//+MUvfhE77rhjfP/731/vOs8555xYunRp8eeFF15o7eYAAAAAAGXIdg3KQYMGRbdu3VrMlly8eHGLWZJNhgwZss767t27xwc+8IF1/p+qqqrYZ599NjiDsmfPntGzZ8/1Pg4AAAAAVEa2GZQ9evSIMWPGxF133dVs+V133RXjx49f5/8ZN25ci/o777wz9t5779hss83W+X9SSjF//vyore26t2oHAAAAgPYq6yneU6dOjR/96Efxk5/8JJ566qk4++yzY9GiRTFlypSIWHPq9SmnnFKsnzJlSvztb3+LqVOnxlNPPRU/+clP4sc//nH8y7/8S7Fm2rRpcccdd8Rzzz0X8+fPj9NOOy3mz59fXCcAAAAA0H5kO8U7IuKEE06I1157LS688MKoq6uLUaNGxa233hrDhw+PiIi6urpYtGhRsX7EiBFx6623xtlnnx0/+MEPYujQofG9730vPv7xjxdr3njjjfjc5z4X9fX1UVNTE3vuuWfcf//9MXbs2E2+fQAAAADAhmUNKCMivvCFL8QXvvCFdT42Y8aMFssOPPDAmDt37nrX953vfCe+853vtFX3AAAAAIAKyn4XbwAAAACg6xJQAgAA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DjkkCoVCRWtzt99Z+7ohr7/+esyaNStOOeWU4rLGxsaoqmr5XUtjY2O8+OKLsfXWWxfbf/7552PYsGHRvXv3WLVqVdx0002xcuXK+MhHPhKDBg3aaPu0P20xriJaji3jqmur1LiKKG1sGVedU+5x1dQHY6vzamhoiFdffTUKhUJ84AMfiG7dur2vuty1uY9JyqnN3X576Ouzzz7bYv82fvz42GGHHVpVl7v2rbfeimuvvXad++wTTzwx+vTp025qc7ffHvpajn79+sU555wTzz77bJutt3///jF//vzYdtttN1rbt2/fOP/886OxsXGjY7XLSXRqq1evTmeccUbq1atXKhQKqWfPnqlHjx6pUCikXr16pTPPPDOtWrWqXdSWs84XX3wx7bHHHqlbt25p9913T4cffng67LDD0u677566deuW9tprr/Tiiy9WrDZ3+521rxszf/78VFVVlVJKaenSpekf//EfU3V1ddpyyy3TV7/61fTuu+8Wa+vr64u1Tz/9dBo+fHiqqqpK22+/fXruuefSmDFjUp8+fVLv3r3ToEGD0jPPPFP8v42NjenOO+9MF1xwQZoyZUo6/fTT0wUXXJDuuuuu1NjYWPLrb8mSJelnP/tZ8feGhoZ11jU0NKS//e1vzdp/7rnn0urVq1NKKa1cuTJdd9116Wc/+1l65ZVXWt1+qX0ot/1KbFcptW01rlL6v7HVEcdVSpX5u7Z1++X2oTONq5RK32eVO66atuv9jq1N9XdtD+239eulI4yrlNrPPst7YWnrLaf9G2+8MY0fPz716NEjVVVVpaqqqtSjR480fvz4dNNNN5Vdl7s29zFJObW5228PfX3jjTfS0UcfnQqFQtp8883TjjvumHbYYYe0+eabp6qqqnTMMcekpUuXllxXzjorVfvkk0+moUOHps033zwdc8wx6XOf+1z67Gc/m4455pi0+eabpw9+8IPpySefTCml7LW5228PfS3Hk08+mQqFQurfv3+brrdv377pr3/96wZrmsZfRKT+/ftvcKx2VQLKTu6MM85IH/zgB9N1112XXn/99eLy119/PV133XVp2LBh6cwzz2wXteWs8+ijj04HH3xwevnll1ts88svv5wOPvjgdMwxx1SsNnf7nbWvS5cu3eDPAw88UDzQOuOMM9KOO+6YfvnLX6arrroqDR8+PH30ox9NK1eu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TotLL700evToEVdddVW88847ccYZZ6xzvX//+9/jiiuuiNdeey3q6uril7/8ZYua5cuXx2GHHRZ/+MMfoqGhIaZMmRJ77713fOYzn1nnOi+++OJ44IEH4je/+U3J7Z9//vlxxhlnlNSHz372syW3X+o6y92ucmojuu64qtTftRLtlzMGtttuu043riLabmytPa4iouSx9bOf/Szr3/XYY4/N2n45+6xyXi+dZVxFeC9sT++Fw4YNK2tcPf/883H55Zev8/PzlClTYptttimrrj3U5j4mKac2d/vtoa8REU8//XTMnj27Re3OO+/cqrr2Urtw4cJmdSNGjGhR015qc7ffHvpaigcffDD22WefePnll0te76pVq2Lx4sXR2NjYbPnWW29ddvv33HNPPPfcc7F48eJi2+sbf12NgBJod0aPHh233nprDBs2rE3qWlN7/fXXR319ffz973+PiPYZeuXow9rt59qu1j4HlRgvOcdVROVCr03d/tp9qK6u7vLjqpzaprqampp47LHHOsU+q1Lt53i9dNRx1VTrvXDj7efYrtZuP0Bn1tDQEDNmzIjf/va36wwTf/e735W9zmeffTY+/elPx0MPPdRseUopCoVCNDQ0FJe99dZbcfHFF6+3/eeee67s9rsaASWd0mOPPRZvv/12HHDAAVlqc7ff0fr6Xv369YvHH388tt122zapq2QtHUclxoBxRe79kHHVOeUeV+XWAqxPXV1drF69eqMzzUqtaw+1N998cyxdujROOeWUja4zd23u9jdlX7/0pS/FjBkz4qMf/WjU1tZGoVBo9n++853vlL3eCRMmRPfu3ePf//3f17nO3XffvfjvE088Me67776YPHnyOmvPPPPMDbZdzljtrASUXdwuu+wSzzzzTLPkv73W5m5fXytX+165w6G+ffvGueeeG88++2zU19dHoVCIwYMHx4QJE+LEE0+MPn36FGvfeuutuPbaa+Ohhx7aYG2pdeXWbsjf//73+OEPfxhf/epX26x2XXUvvvhibL755tG3b99mtatXr47Zs2c3C6lLrX3ttdfij3/8Y+y+++4xcODAePXVV+PHP/5xrFy5Mv7xH/8xdtlll41u03vlDocqMa7KqW3P42pdtV15XJVT269fv5g9e3bMnj07236oLcbWphpXEaWPl648riK8F5Zb19b7rLYaV5/85CfjhRde2OjMoVLr2kNte/js2pE+Z3eUvuZuv5zanXfeOZ599tmS1pm7Nnf7m7KvgwYNiquvvjo+8pGPbPT/l7rePn36xJw5c0o6/XrzzTeP3/zmNzFhwoRWtf1+jp87jWxXv6RduOmmm9KMGTM6RG0563zppZfS888/n602d/vl1OZuf11KuQtaOXXl1D755JOpUCik/v37p2OOOSZ97nOfS5/97GfTMccckzbffPP0wQ9+MD355JPF2qFDh6bNN998g7Wl1pWzzlLMnz+/eGH+tqpdu+7ll19O++yzT6qqqkrdunVLp5xySlq+fHmxtr6+vlW1jzzySKqpqSlewPyxxx5LI0aMSDvssEPafvvtU69evdKcOXNK2q61VWK85BxX5dS293G1dq1xVV5t79690+DBg7Pth9pqbFV6XKVU+ngxrrwXllNXiX1WW46rc845J5166qltVtceanMfk5RTm7v9cmor1f6jjz6a7r333jaray+1tD+1tbXpz3/+c5uuc++9925207IN2WabbdKCBQta3Zbx5yY5QDuUcwblhz/84XjwwQfjT3/6U4tvylatWhWnnnpq1NXVxT333BMf/vCHY8iQIfGzn/2seAOBddVGREl15azznnvuiT/+8Y8b3Jann346TjzxxGhoaCi5dt68eSWv85Of/GQ888wz8f3vfz/eeOONOOeccyKlFHfddVcMGDAg/v73v0dtbW00NjaWVXvYYYfFNttsE5dcckn88Ic/jO9+97sxceLEuOqqqyIi4jOf+Uy89tprcdNNN22wr++VcwZlJcZVpcZgJcZVObUnn3xylx9X5dR27949jjzyyLjhhhuy7IdKrf3ud7+7we2o9LgqZ581efLkLj+uvBfmfS885JBDKjKuADqzb3/72/Hcc8/Ff//3f7c4vbq1fve738VXvvKV+PrXvx6jR4+OzTbbrNnja1+T+Zprrombb745fvazn0Xv3r3bpP0uJ1cyyqb37rvvpvr6+vT3v/89vfvuu1n7smLFivSXv/wlrVix4n2tZ/ny5enee+9N1113Xbr++uvTvffe2+yb6ErXlrPO9Vm9enX629/+tslr6+vrS15XKbWrV69Od955Z/rRj36U7rrrrvc1xnLOoOzVq1fq3bv3emv/9Kc/pV69ehVrNzSDo6m21Lpy1plSSoVCIVVVVaVCodDip2l506yNUmvLWefQoUPTI488UuzbihUr0jHHHJP22GOP9NprrzWbNVJO7YABA4rfPq5atao4m6TJ3Llz0wc/+MH1Pkfrk3MGZSXGVTm1ucdVObXGVXm1EZFuv/329T5e6f1QqbW5x1VKpY8X48p7Ye73wkqNq46onOOX9lDbmZVy/Pb888+nhx9+OD3yyCOtPpNqQxobG1NDQ8NG65555pl09913p2efffZ9tffMM8+kGTNmpIsvvjh94xvfSDNmzEjPPPNMu61dlzfffDPdd999m6T2va+Phx9+ON13331p1apVrapb2+uvv56uvPLK9JWvfCVdddVV6Y033mhRc+yxx6aampo0YsSIdNRRR6Xjjjuu2U9rrL3vX/tn7feBJnvssUfq169f6tu3bxo1alTac889m/2wcQLKLuDGG29M48ePTz169Ci+oHr06JHGjx+fbrrpppLXs2DBgjRixIji71dddVU65ZRT0k9+8pOUUkrXXXdd2nnnndOIESPSV7/61WLdT3/60zR79uyUUkrvvPNOOu2001K3bt1SVVVV6t69e/r85z9ffKObP39++s///M/0gx/8IL3yyivN2l+6dGn61Kc+lVJaE4adccYZxYOenj17ph49eqRCoZB69eqVzjzzzOIOrhK15axzYyp9WtuyZcvSP/3TP6Wtt946nXLKKWnlypXpC1/4QnGnesABB6SlS5emlFJZtf/8z/+cbrnllpRSSi+88ELaeeedU7du3dLgwYNTt27d0ujRo9OLL75YUl/fK2dAOXTo0FRdXb3e2ptuuikNHTq0WPurX/1qvetqqi21rpx1ppTSoEGD0o9//OP0/PPPr/PnN7/5TXG8lFpbzjr79OnT4gPS6tWr07HHHpt222239Mc//rHVtQsXLizWvfdv97e//S1VV1ev9zlan5wBZSXGVTm1ucdVObXGVXm1hUIhXXHFFet9vNL7oVJrc4+rlEofL8aV98Lc74XljqsXXnghnXvuuemggw5KO++8c9pll13SQQcdlM4999y0aNGi9T6Pa1u0aFHxc3ZKaz73/+QnP0lPPfVUSimlp556Kk2ZMiV96lOfSr/97W+LdXPnzk3PPfdc8ff/+Z//SePHj09bbbVVmjBhQpo5c2azdt5+++30wAMPrDOAfuedd9LPfvazlFJ5xy/toXZ93nv8VKnaUo/LKnH8llJKl1xySdpqq62aBftVVVVpq622St/5zndK2qa1j3NWr16dzjvvvHTAAQcU+/XNb34z9e7dO/Xo0aN4nJJSStOnTy+OySVLlqRDDjmkWR8mTpyYXn/99WI7t9xySzrttNPSv/7rvxbHd5MlS5akD3/4w+mNN95IRx99dCoUCmnzzTdPO+64Y9phhx3S5ptvnqqqqtIxxxxTPCZqD7WlPq+Vqn355ZfThAkTUrdu3dIBBxyQlixZkj760Y8W/w477rhjevnll0uuSymlj3/84+mGG25IKa257MegQYPSFltskfbdd980ePDgNGTIkBanU5966qkb/ElpzZc+//qv/5q22267tM8++xRfC03W/lIppZTuvffeDf6s7YILLtjgT0qljb+uTEDZyV1xxRWpR48eacqUKemmm25KDz30UPr973+fbrrppjRlypTUs2fPdOWVV5a0rrV3Qt/5zndSnz590sc+9rFUW1ubvva1r6UPfOAD6Wtf+1q68MILU01NTfrhD3+YUkpp++23T3/4wx9SSin9y7/8S9pmm23SjTfemJ566qn0q1/9Ku24447pX//1X9Mdd9yRevTokXbddde09dZbp0GDBqXf/e53xfbX3lmcccYZ6YMf/GC67rrrmr3hvP766+m6665Lw4YNS2eeeWbFastZZznPayVqv/SlL6Wdd945fe9730sHHXRQOuaYY9KoUaPSgw8+mO6///40atSodO6556aUUlm1tbW1xTeF448/Ph166KHFUPm1115LRx11VPqHf/iHkvr6Xj//+c/Tm2++2WZ15dSef/75qXfv3umiiy5K8+fPT3V1dam+vj7Nnz8/fetb30oDBgxI06ZNK9bW1NSkb33rWxusLbWunHWmlNIRRxyR/vM//3O92zJ//vxUKBTKqi1nnaNHj07/+7//26Km6WBr6623Lo7Xcmp33nnnZgc/t9xyS3r77beLvz/88MNpq622Wm8f16cS4yXnuCqnNve4KqfWuCqv9mMf+1jW/VCptbnHVUqljxfjynth7vfCcsbVAw88kPr27Zt22WWXdOaZZ6avf/3r6aKLLkpnnnlmGjlyZOrXr1968MEH17sta29TUz9vu+221KNHjzRw4MBUXV2dbrvttrTFFlukQw89NB1yyCGpe/fuxf7tueeexc/rV111VerVq1c644wz0uWXX57OOuus1Ldv3/TjH/84pZTSn//85zR8+PBicHTggQcWw4iU/u+zfjnHL+2httTntVK1pR6XVeL4LaWULrzwwtS/f/908cUXp3nz5qWXX345vfTSS2nevHnp4osvTjU1NRt8Pa29TU2vq6985Stp8ODBaerUqWnkyJFpypQpadiwYemaa65JV199ddpqq63SN77xjZRSSltvvXV6/PHHU0opfeYzn0l77rlnmjt3bnrnnXfS/Pnz03777ZdOO+20lNKafWC3bt3SRz/60fShD30oVVdXp2uuuabYh6YxOHny5DR69Oj08MMPt+jnww8/nHbbbbd0yimnpJRSu6jd2PNa6TE4efLkNH78+PTrX/86nXDCCWn8+PFp//33Ty+++GJatGhR2n///dMXv/jFkutSWvOFUtMXOkceeWQ66aSTiqH0qlWr0mmnnZYOP/zwkvq6tvPPPz8NHjw4fetb30rnnXdeqqmpSZ/73OeKj9fX1xfHYVsrdfx1ZQLKTm677bZLP/rRj9b7+I9//OO07bbbppRSOvvsszf4c/LJJzf7QP7zn/88pbTmm9Pu3bs3a+cnP/lJGjNmTEoppZ49exZPD95xxx3Tbbfd1qwP9913X9p6663TuHHjiuFXY2Nj+uY3v5n69u1brF/7BTto0KBmH9ze6+67706DBg2qWG0563zv1O73/uy8887F7apE7bBhw4ofHF966aVUKBTSr3/962Jff/Ob36SddtoppZTKqq2uri5+Y77VVls1O/UopTWnXzU9BymtOQ3gyiuvTKeeemqaOHFiOvLII9Opp56arrrqqmYHS6XWVbL24osvTrW1tc2m8xcKhVRbW1v8MFRubSXWeeONN6b/+Z//SeuzZMmS4gXMS60tZ53/9m//tt4PBqtXr05HH310cbyWU3vBBRe0mHGxtnPPPTd97GMfSylVZgx0pHFVTm3OcVVObWcdV+XUlrPOlPLuh0qtzT2uUip9vHTWcVVurffCfO+F5YyrvffeO5111lnrrT3rrLPS3nvvnW6++eYN/nznO98p9nPcuHHpvPPOSymlNHPmzDRgwIDiZ/Sm9g877LCU0pobdTV9zt9zzz2LAVeTn//852nkyJEppTWnXx511FHplVdeSc8++2yaNGlSGjFiRPH/N33WL+f4JXdtOcdPlaot9bisEsdvKa05DtjQjNIbb7wxDR06tMXptu/9Ofjgg4vbtO2226ZZs2allFJ69tlnU1VVVbruuuuK6/zFL36RRo0aVexr0+nk22yzTYvTjh977LFUW1ubUlozRr/3ve8VH/vlL3+Z+vbtW3wemsZgTU3NOoPBJrNnz041NTUppZS9dsCAARv86d+/f/F5rVRtbW1tccbta6+9lgqFQrr77ruLff3d736Xtt1225LrUlpzqY+//OUvxfXPnTu32fb/+c9/Lj5X5dh+++2LYyullP7yl7+kHXbYIZ166qmpsbFxvSHhW2+9lZ566qn0+OOPN/spR6njrytzk5xOrlevXjF//vzYaaed1vn4008/HXvuuWe888470a1bt9hjjz2aXeh1bW+++WbMnTs3Ghoaonfv3vH000/H1ltvHRER1dXVMWfOnNh1110jIuIvf/lL7LPPPvH666/HNttsEz/96U/jwx/+cGy11Vbxq1/9Kvbee+/iep966qnYZ599olu3bjF37tzYbrvtio/NnDkzPvvZz8bMmTNj7NixMXTo0GhoaIi+ffvGQw89FLvttts6+zp//vz40Ic+FG+++WZFaiOi5HVWV1fHJz7xiRgxYsQ6a+vq6uKqq66KhoaGitRuttlm8eyzz8awYcMiIqJPnz4xb9682HHHHSMi4m9/+1uMHDky3nrrraiuri65dvfdd49zzz03TjjhhBg5cmR873vfi0MPPbTY/uzZs+Ooo46K1157LRYsWBCHHXZYvP3223HggQfG4MGDI6UUixcvjvvuuy/69OkTd955Z0RESXUjR44seZ3l1q5t4cKFUV9fHxFrLuy/vue6nNpKrDOXd999N95+++317jMaGhrixRdfjOHDh5dVuzFvv/12dOvWLf7617+2+RiIqMwYXFulxkAlxmAOnXFcVWoMvlfu/VBnGVsf/OAHO924am/7rK44rtpyn9U0rnr27FnyZ/2VK1dGoVCIDR36FQqFaGhoiJqampgzZ05sv/320djYGD179oxHHnkk9tprr4iIeOKJJ+LQQw+N+vr6GDRoUNxxxx0xZsyYGDx4cNx5552x++67F9f517/+NUaPHh1vv/12DB48OO6+++4YPXp08fEvfvGLccstt8Q999wTffr0iaFDh0aPHj1KPn4p51inErWrVq0q+fipnGOtShyXrVy5ss2P3958883o3bt3zJkzJ3bZZZd19vXJJ5+MffbZJ1avXh2HHXZYDB48eJ11S5YsiVtuuSUaGhqiV69e8cwzzxSPSXr16hXz5s0r3rRr4cKFsfvuu8eyZctip512iksuuSQ++tGPxrbbbhvXXHNNjB8/vrje+fPnx4EHHhhLly6Nvn37xp/+9Kdm+5F77703jj766PjmN78Zxx13XAwdOjT69esXd955Z4wdO3adfX3kkUfiiCOOiDfeeCM233zzrLWrV6+O008/vdnram1/+9vfYtq0adHQ0BB9+vSpSO17/159+/aN+fPnx/bbbx8REYsWLYqdd945Ukol1b399tux3377xWmnnRaf/exnY6+99oqvfvWrceyxxxbbv+uuu+KUU06J2tra+O1vfxsDBgyIPffcc4M3x5k7d2707t07FixYENtss01x+csvvxwHH3xw7L333vHNb34zhg0bFg0NDRER8corr8SnPvWpuO2229a5zpqamnjmmWdi0KBBMWDAgA22v2rVqpLGX1PbXdKmzUPZ1MaMGZOmTp263senTp1a/KZsp5122uC3xfPmzSsm+h/4wAeaXfNhq622anYh5GeffTb17ds3pbTmW9Zx48al119/Pf37v/97mjRpUvFGMm+99VY6/vjj0+GHH5622GKL9Nhjj7Vo97rrrku9e/dOl19+ebH9o446Kh1yyCGpvr6+RX19fX067LDD0qRJkypWW846x4wZky677LJ1PaUppebPayVqhw4dmubMmVNcfuKJJ6a///3vxd+feOKJNGDAgJRSKqv2pz/9adpqq63SPffck66++uq0yy67pLvvvju99NJL6Xe/+10aPXp0+sxnPpNSSumggw5Kn/jEJ4rT8te2cuXKdOKJJ6aDDjqo5Lpy1llubbn69etX8rW/Sq2txDorVZuz/aa/67quqdbaMdCZx1U5tbnbL6e2I4yrcmorOa5S6jhjIHf75dR2hHFVbm25jIF87Y8YMWKD1wv9yU9+kkaMGJGGDh26wVlua3/G7N+/f7Obi7x33D7//PPFa2CefPLJxdNn//Ef/zF95Stfabber3/962n06NHF7XnvNeNSWnOJoa222irdf//9qaqqqqzjl9y15Rw/Vaq21OOyShy/pZTSgQcemP7pn/4prV69ukU/V69enU466aR04IEHptGjR29wVura2zR48OD0xz/+sfjY+PHjm13b/qmnnkr9+/dPKaX0rW99K+2yyy7p2WefTd/+9rfTuHHjijPvnnvuuXTQQQcVLzu19gy+td17772pb9++6bzzzktVVVXp5JNPTrvttlvxNPe1/eEPf0h77LFHmjx5ckopZa8dP358uvTSS9f1lKaUmp+KXanarbfeutnZdF/+8pfTa6+91qx20KBBJdeltObSFgMHDkw//elP009/+tO0zTbbpB/96Efp97//ffrJT36Shg0blv71X/81XXDBBemtt95KKZV2DcgRI0Y0m7XZ5KWXXko77rhjOvTQQ5vNYjzppJPS+PHj06OPPpr69OmT7rzzzvQ///M/aaeddkq33HJLmjFjRvF6rDNmzNjgT6njrysTUHZy9957b+rTp08aOXJkOuuss9L06dPTxRdfnM4666y06667pr59+6b7778/pbTmxbehU0TWvi7IhAkTmk2zf69Zs2YVp92vXLkyHX300WnAgAHpsMMOS9XV1al3795phx12SH369Elbb711+vOf/5wOO+yw9K1vfWud67v22mvTZpttVnzBLlq0KI0aNSp179497bHHHumII45IEydOTHvssUfq3r172m233dILL7xQsdpy1nnmmWdu8HqUf/nLX4oHBJWonThx4gZvoPDTn/40jR8/PqWUyqpNKaVvf/vbqXfv3qlXr17NLiBeVVWVjj322OIHmdx3+Cyntlw5b7zSHmpztt/0d11fbXu6y2y5uvLftdzajjCuyqmt5LhKqeOMgdztl1PbEcZVubXlMgbytf+DH/wgRUSaPHly+tWvfpVmz56dHn744fSrX/0qffGLX0w9e/ZMl19+eZo0aVL6j//4j/WuZ+3P+bvttluzU3r/9Kc/NQufHnjggeINWl566aW0zTbbpAMOOCBNnTo19erVK33oQx9Kn/3sZ9MBBxyQevTokX7zm9+klFLaZ5990tVXX73O9r/4xS8Wb/5RzvFL7tpyjp8qVVvqcVkljt9SSumPf/xjGjJkSBowYEA69thj0+c///k0ZcqUdOyxx6aBAwem2tra9MQTT6RTTz01feELX1hv+wsWLEjbbLNNSimlD3/4w8XLKKzLL37xi2KYnNKam3duttlmaeedd07V1dXFGxpVVVWlvffeO9XV1aWUUjrmmGOa3Qxobffcc0/q06dPqqqqSq+//nqaOHFiKhQKacCAAWmnnXZKO++8cxowYECqqqpKRx55ZPE+BLlrL7roomL4ti6LFi0q3iCmUrVHH330BsPM//7v/04HH3xwyXVN/vd//7fFzZcKhUKqrq5OZ511Vou7gZfitNNOS5/+9KfX+diLL76Ytt9++2Yh4ZAhQ4qhar9+/Yrj/uabb04TJkwoq+1Sx19X1j33DE4q68ADD4wnnngiLr/88nj44YebnSJz1FFHxZQpU4rTm7/97W/HypUr17uu3XffPRobGyMi4hvf+Eb06dNnvbWLFi2Kz3/+8xER0aNHj7j55pvj9ttvj1mzZkW3bt2isbExamtrY8KECXHSSScVp5Dff//961zfiSeeGBERV155ZUREDBs2LB5//PG44447mm3X2LFjY/r06XH44YdHVVVVRWtLrbv00kvX+zxFRGy33XZxzz33VKx2yZIlxb6sy+DBg+Oiiy6KiIif//znJddGREydOjU+/elPx1133RXPPfdcs7/rDjvsUKwbMGBAPPvss+s8JTFizSklAwYMiIgoua6cdZZTS8fR9Hddn9aOAeOqa6vUuKrEGKTjaA/jyj6rc/rCF74QU6dOjT/96U8xc+bM4qmB3bp1izFjxsTVV18dxx9/fOy6667x1ltvrXc922+/ffEz5umnn97sFMNRo0Y1q73tttvi4IMPjoiIoUOHxrx58+Liiy+OWbNmRUopHn300XjhhRdiwoQJ8fvf/754avBxxx0XM2fOjMmTJ7do/7//+7+jsbExrrjiirKOX3LX7rDDDiUfP5VzrFWJ47I999yzzY/fIiJGjx4dzzzzTFxzzTXx8MMPx8KFCyNizXN10UUXxUknnRT9+/ePK664YoOnru6yyy7F/3vFFVfEZptttt7a1atXx7/9278Vf//e974Xp59+etxyyy0tjkkOPfTQ4mm3Z599djz00EPrXOdBBx0Ut9xyS/zsZz+LzTffPG677bZ4+umnY/bs2c3+/uPGjSueah4R2WvPPffc9T5PEWuOb3/6059WtPbmm2/eYO3YsWPjwAMPbLEvWV9dk49//ONx7LHHxty5c5v9XceMGRP9+vXb4LrefPPN4mukSf/+/eM//uM/4umnn17n//ngBz8Y999/f/GSOxERb731Vmy55ZYRETFw4MB45ZVXYscdd4zRo0fH3Llz17mexYsXx+LFi1u0X+r469JyJ6S0L9dee23Jd4LMXVvOOk8//fTiHaZz1OZuv5zaSqzz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",
|
|
"text/plain": [
|
|
"<Figure size 1600x900 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.figure(figsize=(16,9))\n",
|
|
"plt.stem(IF.combined_feature_names, TS.clf.feature_importances_,'x')\n",
|
|
"plt.xticks(rotation=90)\n",
|
|
"plt.ylabel('importance') \n",
|
|
"# plt.xticks(rotation = 60)\n",
|
|
"# plt.yscale('log')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "611ed636-ff8c-4c16-af1f-6528ff9f5b5a",
|
|
"metadata": {},
|
|
"source": [
|
|
"### when done, maybe save the classifier and optional the training dict (avoids recalculating the training sets, but might be large)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 181,
|
|
"id": "e8bbe689-6711-48f5-b805-2324ed47ecca",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"TS.pickle_classifier()\n",
|
|
"pickle.dump(TS.training_dict, open(os.path.join(TS.training_path, pytrain_git_sha+'_training_dict.p'),'wb'))\n",
|
|
"pickle.dump(TS.combined_feature_names, open(os.path.join(TS.training_path, pytrain_git_sha+'_feature_names.p'),'wb'))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 182,
|
|
"id": "d1232485-1632-4a77-83fc-47ab30584d01",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'/mpc/homes/fische_r/NAS/DASCOELY/processing/05_water_GDL_ML/4'"
|
|
]
|
|
},
|
|
"execution_count": 182,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"TS.training_path"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 183,
|
|
"id": "6b27074a-2385-46a8-bb40-aabfc1a187c0",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'e42ad75'"
|
|
]
|
|
},
|
|
"execution_count": 183,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"pytrain_git_sha"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d2c2235f-c2f1-4b28-8489-55fc81a25f7e",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"## Segmentation of full data set\n",
|
|
"Sometimes the dask esxecution stops randomly. Cancel notebook, save intermediate results and restart the notebook to continue"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 40,
|
|
"id": "fc88e550-abba-47cf-bfdb-eb310aa3fc73",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"from segmentation import segmentation"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 41,
|
|
"id": "23511242-75c9-4546-8a83-4ce54915c067",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"classifier_path=os.path.join(training_path, 'classifier.p')\n",
|
|
"SM = segmentation(training_path = training_path, classifier_path=classifier_path)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 42,
|
|
"id": "7223408a-63f1-4ff1-a6df-29f9e9f872e8",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"SM.clf = pickle.load(open(os.path.join(training_path, 'classifier.p'), 'rb')) "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 43,
|
|
"id": "2db024b7-c3ea-4b8e-9c09-6de7db817b67",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"clf = SM.clf\n",
|
|
"clf.n_jobs = 64 #threads to be used for classifier. more is faster but needs more RAM"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "197aa63c-812a-4a0c-aa51-724fcc83e39f",
|
|
"metadata": {},
|
|
"source": [
|
|
"### merge time-independent features"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 47,
|
|
"id": "f8a0c7b6-163e-4b9b-8599-dd7f91c5e174",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# dask.array.stack([TS.feat_data['feature_stack_time_independent'][:,:,:,0,:]]*da.shape[-1], axis=-2)\n",
|
|
"feat_idp = TS.feat_data['feature_stack_time_independent'][:,:,:,0,:]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 49,
|
|
"id": "b7453b61-86d3-4767-bfc9-00e8f3e12594",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# feat = dask.array.concatenate([TS.feat_data['feature_stack'], test], axis=-1)\n",
|
|
"feat = TS.feat_data['feature_stack']"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 51,
|
|
"id": "f8815953-be31-4ef3-b2fb-f247c4daddaf",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"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[data-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 !important;\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-index-preview {\n",
|
|
" grid-column: 2 / 5;\n",
|
|
" color: var(--xr-font-color2);\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",
|
|
".xr-index-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",
|
|
".xr-index-data-in:checked ~ .xr-index-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-index-name div,\n",
|
|
".xr-index-data,\n",
|
|
".xr-attrs {\n",
|
|
" padding-left: 25px !important;\n",
|
|
"}\n",
|
|
"\n",
|
|
".xr-attrs,\n",
|
|
".xr-var-attrs,\n",
|
|
".xr-var-data,\n",
|
|
".xr-index-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",
|
|
".xr-no-icon {\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'><xarray.DataArray 'feature_stack' (x: 750, y: 340, z: 1916, time: 63,\n",
|
|
" feature: 103)>\n",
|
|
"dask.array<stack, shape=(750, 340, 1916, 63, 103), dtype=float64, chunksize=(36, 36, 36, 63, 1), chunktype=numpy.ndarray>\n",
|
|
"Coordinates:\n",
|
|
" * x (x) int64 0 1 2 3 4 5 6 7 8 ... 741 742 743 744 745 746 747 748 749\n",
|
|
" * y (y) int64 0 1 2 3 4 5 6 7 8 ... 331 332 333 334 335 336 337 338 339\n",
|
|
" * z (z) int64 0 1 2 3 4 5 6 7 ... 1909 1910 1911 1912 1913 1914 1915\n",
|
|
" * time (time) int64 0 1 2 3 4 5 6 7 8 9 ... 53 54 55 56 57 58 59 60 61 62\n",
|
|
" * feature (feature) <U27 'Gaussian_4D_Blur_0.0' ... 'diff_temp_min_Gauss_2.0'</pre><div class='xr-wrap' style='display:none'><div class='xr-header'><div class='xr-obj-type'>xarray.DataArray</div><div class='xr-array-name'>'feature_stack'</div><ul class='xr-dim-list'><li><span class='xr-has-index'>x</span>: 750</li><li><span class='xr-has-index'>y</span>: 340</li><li><span class='xr-has-index'>z</span>: 1916</li><li><span class='xr-has-index'>time</span>: 63</li><li><span class='xr-has-index'>feature</span>: 103</li></ul></div><ul class='xr-sections'><li class='xr-section-item'><div class='xr-array-wrap'><input id='section-b6c3f70b-0f2c-4660-9d7b-204f5ca80bc7' class='xr-array-in' type='checkbox' checked><label for='section-b6c3f70b-0f2c-4660-9d7b-204f5ca80bc7' title='Show/hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-array-preview xr-preview'><span>dask.array<chunksize=(36, 36, 36, 63, 1), meta=np.ndarray></span></div><div class='xr-array-data'><table>\n",
|
|
" <tr>\n",
|
|
" <td>\n",
|
|
" <table style=\"border-collapse: collapse;\">\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> 23.07 TiB </td>\n",
|
|
" <td> 22.43 MiB </td>\n",
|
|
" </tr>\n",
|
|
" \n",
|
|
" <tr>\n",
|
|
" <th> Shape </th>\n",
|
|
" <td> (750, 340, 1916, 63, 103) </td>\n",
|
|
" <td> (36, 36, 36, 63, 1) </td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th> Dask graph </th>\n",
|
|
" <td colspan=\"2\"> 1308615 chunks in 540 graph layers </td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th> Data type </th>\n",
|
|
" <td colspan=\"2\"> float64 numpy.ndarray </td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
" </table>\n",
|
|
" </td>\n",
|
|
" <td>\n",
|
|
" <svg width=\"377\" height=\"152\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n",
|
|
"\n",
|
|
" <!-- Horizontal lines -->\n",
|
|
" <line x1=\"0\" y1=\"0\" x2=\"41\" y2=\"0\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"0\" y1=\"2\" x2=\"41\" y2=\"2\" />\n",
|
|
" <line x1=\"0\" y1=\"4\" x2=\"41\" y2=\"4\" />\n",
|
|
" <line x1=\"0\" y1=\"6\" x2=\"41\" y2=\"6\" />\n",
|
|
" <line x1=\"0\" y1=\"9\" x2=\"41\" y2=\"9\" />\n",
|
|
" <line x1=\"0\" y1=\"11\" x2=\"41\" y2=\"11\" />\n",
|
|
" <line x1=\"0\" y1=\"13\" x2=\"41\" y2=\"13\" />\n",
|
|
" <line x1=\"0\" y1=\"15\" x2=\"41\" y2=\"15\" />\n",
|
|
" <line x1=\"0\" y1=\"18\" x2=\"41\" y2=\"18\" />\n",
|
|
" <line x1=\"0\" y1=\"20\" x2=\"41\" y2=\"20\" />\n",
|
|
" <line x1=\"0\" y1=\"22\" x2=\"41\" y2=\"22\" />\n",
|
|
" <line x1=\"0\" y1=\"24\" x2=\"41\" y2=\"24\" />\n",
|
|
" <line x1=\"0\" y1=\"27\" x2=\"41\" y2=\"27\" />\n",
|
|
" <line x1=\"0\" y1=\"29\" x2=\"41\" y2=\"29\" />\n",
|
|
" <line x1=\"0\" y1=\"31\" x2=\"41\" y2=\"31\" />\n",
|
|
" <line x1=\"0\" y1=\"33\" x2=\"41\" y2=\"33\" />\n",
|
|
" <line x1=\"0\" y1=\"36\" x2=\"41\" y2=\"36\" />\n",
|
|
" <line x1=\"0\" y1=\"38\" x2=\"41\" y2=\"38\" />\n",
|
|
" <line x1=\"0\" y1=\"40\" x2=\"41\" y2=\"40\" />\n",
|
|
" <line x1=\"0\" y1=\"42\" x2=\"41\" y2=\"42\" />\n",
|
|
" <line x1=\"0\" y1=\"45\" x2=\"41\" y2=\"45\" />\n",
|
|
" <line x1=\"0\" y1=\"46\" x2=\"41\" y2=\"46\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Vertical lines -->\n",
|
|
" <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"46\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"4\" y1=\"0\" x2=\"4\" y2=\"46\" />\n",
|
|
" <line x1=\"8\" y1=\"0\" x2=\"8\" y2=\"46\" />\n",
|
|
" <line x1=\"13\" y1=\"0\" x2=\"13\" y2=\"46\" />\n",
|
|
" <line x1=\"17\" y1=\"0\" x2=\"17\" y2=\"46\" />\n",
|
|
" <line x1=\"21\" y1=\"0\" x2=\"21\" y2=\"46\" />\n",
|
|
" <line x1=\"26\" y1=\"0\" x2=\"26\" y2=\"46\" />\n",
|
|
" <line x1=\"30\" y1=\"0\" x2=\"30\" y2=\"46\" />\n",
|
|
" <line x1=\"35\" y1=\"0\" x2=\"35\" y2=\"46\" />\n",
|
|
" <line x1=\"38\" y1=\"0\" x2=\"38\" y2=\"46\" />\n",
|
|
" <line x1=\"39\" y1=\"0\" x2=\"39\" y2=\"46\" />\n",
|
|
" <line x1=\"41\" y1=\"0\" x2=\"41\" y2=\"46\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Colored Rectangle -->\n",
|
|
" <polygon points=\"0.0,0.0 41.48903277910669,0.0 41.48903277910669,46.97286012526096 0.0,46.97286012526096\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
|
|
"\n",
|
|
" <!-- Text -->\n",
|
|
" <text x=\"20.744516\" y=\"66.972860\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >340</text>\n",
|
|
" <text x=\"61.489033\" y=\"23.486430\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,61.489033,23.486430)\">750</text>\n",
|
|
"\n",
|
|
"\n",
|
|
" <!-- Horizontal lines -->\n",
|
|
" <line x1=\"111\" y1=\"0\" x2=\"181\" y2=\"70\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"111\" y1=\"31\" x2=\"181\" y2=\"102\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Vertical lines -->\n",
|
|
" <line x1=\"111\" y1=\"0\" x2=\"111\" y2=\"31\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"112\" y1=\"1\" x2=\"112\" y2=\"33\" />\n",
|
|
" <line x1=\"114\" y1=\"3\" x2=\"114\" y2=\"35\" />\n",
|
|
" <line x1=\"117\" y1=\"6\" x2=\"117\" y2=\"38\" />\n",
|
|
" <line x1=\"118\" y1=\"7\" x2=\"118\" y2=\"39\" />\n",
|
|
" <line x1=\"121\" y1=\"10\" x2=\"121\" y2=\"42\" />\n",
|
|
" <line x1=\"124\" y1=\"13\" x2=\"124\" y2=\"45\" />\n",
|
|
" <line x1=\"126\" y1=\"15\" x2=\"126\" y2=\"47\" />\n",
|
|
" <line x1=\"128\" y1=\"17\" x2=\"128\" y2=\"49\" />\n",
|
|
" <line x1=\"130\" y1=\"19\" x2=\"130\" y2=\"51\" />\n",
|
|
" <line x1=\"133\" y1=\"22\" x2=\"133\" y2=\"54\" />\n",
|
|
" <line x1=\"134\" y1=\"23\" x2=\"134\" y2=\"55\" />\n",
|
|
" <line x1=\"137\" y1=\"26\" x2=\"137\" y2=\"58\" />\n",
|
|
" <line x1=\"140\" y1=\"29\" x2=\"140\" y2=\"61\" />\n",
|
|
" <line x1=\"142\" y1=\"31\" x2=\"142\" y2=\"63\" />\n",
|
|
" <line x1=\"144\" y1=\"33\" x2=\"144\" y2=\"65\" />\n",
|
|
" <line x1=\"146\" y1=\"35\" x2=\"146\" y2=\"67\" />\n",
|
|
" <line x1=\"149\" y1=\"38\" x2=\"149\" y2=\"70\" />\n",
|
|
" <line x1=\"150\" y1=\"39\" x2=\"150\" y2=\"71\" />\n",
|
|
" <line x1=\"153\" y1=\"42\" x2=\"153\" y2=\"74\" />\n",
|
|
" <line x1=\"156\" y1=\"45\" x2=\"156\" y2=\"77\" />\n",
|
|
" <line x1=\"158\" y1=\"47\" x2=\"158\" y2=\"79\" />\n",
|
|
" <line x1=\"160\" y1=\"49\" x2=\"160\" y2=\"81\" />\n",
|
|
" <line x1=\"162\" y1=\"51\" x2=\"162\" y2=\"83\" />\n",
|
|
" <line x1=\"165\" y1=\"54\" x2=\"165\" y2=\"86\" />\n",
|
|
" <line x1=\"166\" y1=\"55\" x2=\"166\" y2=\"87\" />\n",
|
|
" <line x1=\"169\" y1=\"58\" x2=\"169\" y2=\"90\" />\n",
|
|
" <line x1=\"172\" y1=\"61\" x2=\"172\" y2=\"92\" />\n",
|
|
" <line x1=\"174\" y1=\"63\" x2=\"174\" y2=\"95\" />\n",
|
|
" <line x1=\"175\" y1=\"64\" x2=\"175\" y2=\"96\" />\n",
|
|
" <line x1=\"178\" y1=\"67\" x2=\"178\" y2=\"99\" />\n",
|
|
" <line x1=\"181\" y1=\"70\" x2=\"181\" y2=\"102\" />\n",
|
|
" <line x1=\"181\" y1=\"70\" x2=\"181\" y2=\"102\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Colored Rectangle -->\n",
|
|
" <polygon points=\"111.0,0.0 181.58823529411765,70.58823529411765 181.58823529411765,102.53001819660562 111.0,31.941782902487976\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n",
|
|
"\n",
|
|
" <!-- Horizontal lines -->\n",
|
|
" <line x1=\"111\" y1=\"0\" x2=\"145\" y2=\"0\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"112\" y1=\"1\" x2=\"147\" y2=\"1\" />\n",
|
|
" <line x1=\"114\" y1=\"3\" x2=\"149\" y2=\"3\" />\n",
|
|
" <line x1=\"117\" y1=\"6\" x2=\"152\" y2=\"6\" />\n",
|
|
" <line x1=\"118\" y1=\"7\" x2=\"153\" y2=\"7\" />\n",
|
|
" <line x1=\"121\" y1=\"10\" x2=\"156\" y2=\"10\" />\n",
|
|
" <line x1=\"124\" y1=\"13\" x2=\"159\" y2=\"13\" />\n",
|
|
" <line x1=\"126\" y1=\"15\" x2=\"161\" y2=\"15\" />\n",
|
|
" <line x1=\"128\" y1=\"17\" x2=\"163\" y2=\"17\" />\n",
|
|
" <line x1=\"130\" y1=\"19\" x2=\"165\" y2=\"19\" />\n",
|
|
" <line x1=\"133\" y1=\"22\" x2=\"168\" y2=\"22\" />\n",
|
|
" <line x1=\"134\" y1=\"23\" x2=\"169\" y2=\"23\" />\n",
|
|
" <line x1=\"137\" y1=\"26\" x2=\"172\" y2=\"26\" />\n",
|
|
" <line x1=\"140\" y1=\"29\" x2=\"175\" y2=\"29\" />\n",
|
|
" <line x1=\"142\" y1=\"31\" x2=\"177\" y2=\"31\" />\n",
|
|
" <line x1=\"144\" y1=\"33\" x2=\"179\" y2=\"33\" />\n",
|
|
" <line x1=\"146\" y1=\"35\" x2=\"181\" y2=\"35\" />\n",
|
|
" <line x1=\"149\" y1=\"38\" x2=\"184\" y2=\"38\" />\n",
|
|
" <line x1=\"150\" y1=\"39\" x2=\"185\" y2=\"39\" />\n",
|
|
" <line x1=\"153\" y1=\"42\" x2=\"188\" y2=\"42\" />\n",
|
|
" <line x1=\"156\" y1=\"45\" x2=\"191\" y2=\"45\" />\n",
|
|
" <line x1=\"158\" y1=\"47\" x2=\"193\" y2=\"47\" />\n",
|
|
" <line x1=\"160\" y1=\"49\" x2=\"195\" y2=\"49\" />\n",
|
|
" <line x1=\"162\" y1=\"51\" x2=\"197\" y2=\"51\" />\n",
|
|
" <line x1=\"165\" y1=\"54\" x2=\"200\" y2=\"54\" />\n",
|
|
" <line x1=\"166\" y1=\"55\" x2=\"201\" y2=\"55\" />\n",
|
|
" <line x1=\"169\" y1=\"58\" x2=\"204\" y2=\"58\" />\n",
|
|
" <line x1=\"172\" y1=\"61\" x2=\"206\" y2=\"61\" />\n",
|
|
" <line x1=\"174\" y1=\"63\" x2=\"209\" y2=\"63\" />\n",
|
|
" <line x1=\"175\" y1=\"64\" x2=\"210\" y2=\"64\" />\n",
|
|
" <line x1=\"178\" y1=\"67\" x2=\"213\" y2=\"67\" />\n",
|
|
" <line x1=\"181\" y1=\"70\" x2=\"216\" y2=\"70\" />\n",
|
|
" <line x1=\"181\" y1=\"70\" x2=\"216\" y2=\"70\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Vertical lines -->\n",
|
|
" <line x1=\"111\" y1=\"0\" x2=\"181\" y2=\"70\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"112\" y1=\"0\" x2=\"182\" y2=\"70\" />\n",
|
|
" <line x1=\"113\" y1=\"0\" x2=\"183\" y2=\"70\" />\n",
|
|
" <line x1=\"114\" y1=\"0\" x2=\"184\" y2=\"70\" />\n",
|
|
" <line x1=\"115\" y1=\"0\" x2=\"185\" y2=\"70\" />\n",
|
|
" <line x1=\"116\" y1=\"0\" x2=\"187\" y2=\"70\" />\n",
|
|
" <line x1=\"117\" y1=\"0\" x2=\"188\" y2=\"70\" />\n",
|
|
" <line x1=\"118\" y1=\"0\" x2=\"189\" y2=\"70\" />\n",
|
|
" <line x1=\"119\" y1=\"0\" x2=\"190\" y2=\"70\" />\n",
|
|
" <line x1=\"120\" y1=\"0\" x2=\"191\" y2=\"70\" />\n",
|
|
" <line x1=\"121\" y1=\"0\" x2=\"192\" y2=\"70\" />\n",
|
|
" <line x1=\"122\" y1=\"0\" x2=\"193\" y2=\"70\" />\n",
|
|
" <line x1=\"123\" y1=\"0\" x2=\"194\" y2=\"70\" />\n",
|
|
" <line x1=\"124\" y1=\"0\" x2=\"195\" y2=\"70\" />\n",
|
|
" <line x1=\"126\" y1=\"0\" x2=\"196\" y2=\"70\" />\n",
|
|
" <line x1=\"127\" y1=\"0\" x2=\"197\" y2=\"70\" />\n",
|
|
" <line x1=\"128\" y1=\"0\" x2=\"198\" y2=\"70\" />\n",
|
|
" <line x1=\"129\" y1=\"0\" x2=\"199\" y2=\"70\" />\n",
|
|
" <line x1=\"130\" y1=\"0\" x2=\"200\" y2=\"70\" />\n",
|
|
" <line x1=\"131\" y1=\"0\" x2=\"202\" y2=\"70\" />\n",
|
|
" <line x1=\"132\" y1=\"0\" x2=\"203\" y2=\"70\" />\n",
|
|
" <line x1=\"133\" y1=\"0\" x2=\"204\" y2=\"70\" />\n",
|
|
" <line x1=\"134\" y1=\"0\" x2=\"205\" y2=\"70\" />\n",
|
|
" <line x1=\"136\" y1=\"0\" x2=\"206\" y2=\"70\" />\n",
|
|
" <line x1=\"137\" y1=\"0\" x2=\"207\" y2=\"70\" />\n",
|
|
" <line x1=\"138\" y1=\"0\" x2=\"208\" y2=\"70\" />\n",
|
|
" <line x1=\"139\" y1=\"0\" x2=\"209\" y2=\"70\" />\n",
|
|
" <line x1=\"140\" y1=\"0\" x2=\"210\" y2=\"70\" />\n",
|
|
" <line x1=\"141\" y1=\"0\" x2=\"212\" y2=\"70\" />\n",
|
|
" <line x1=\"142\" y1=\"0\" x2=\"213\" y2=\"70\" />\n",
|
|
" <line x1=\"143\" y1=\"0\" x2=\"214\" y2=\"70\" />\n",
|
|
" <line x1=\"144\" y1=\"0\" x2=\"215\" y2=\"70\" />\n",
|
|
" <line x1=\"145\" y1=\"0\" x2=\"216\" y2=\"70\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Colored Rectangle -->\n",
|
|
" <polygon points=\"111.0,0.0 145.9441637736988,0.0 216.53239906781644,70.58823529411765 181.58823529411765,70.58823529411765\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n",
|
|
"\n",
|
|
" <!-- Horizontal lines -->\n",
|
|
" <line x1=\"181\" y1=\"70\" x2=\"216\" y2=\"70\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"181\" y1=\"102\" x2=\"216\" y2=\"102\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Vertical lines -->\n",
|
|
" <line x1=\"181\" y1=\"70\" x2=\"181\" y2=\"102\" style=\"stroke-width:2\" />\n",
|
|
" <line x1=\"182\" y1=\"70\" x2=\"182\" y2=\"102\" />\n",
|
|
" <line x1=\"183\" y1=\"70\" x2=\"183\" y2=\"102\" />\n",
|
|
" <line x1=\"184\" y1=\"70\" x2=\"184\" y2=\"102\" />\n",
|
|
" <line x1=\"185\" y1=\"70\" x2=\"185\" y2=\"102\" />\n",
|
|
" <line x1=\"187\" y1=\"70\" x2=\"187\" y2=\"102\" />\n",
|
|
" <line x1=\"188\" y1=\"70\" x2=\"188\" y2=\"102\" />\n",
|
|
" <line x1=\"189\" y1=\"70\" x2=\"189\" y2=\"102\" />\n",
|
|
" <line x1=\"190\" y1=\"70\" x2=\"190\" y2=\"102\" />\n",
|
|
" <line x1=\"191\" y1=\"70\" x2=\"191\" y2=\"102\" />\n",
|
|
" <line x1=\"192\" y1=\"70\" x2=\"192\" y2=\"102\" />\n",
|
|
" <line x1=\"193\" y1=\"70\" x2=\"193\" y2=\"102\" />\n",
|
|
" <line x1=\"194\" y1=\"70\" x2=\"194\" y2=\"102\" />\n",
|
|
" <line x1=\"195\" y1=\"70\" x2=\"195\" y2=\"102\" />\n",
|
|
" <line x1=\"196\" y1=\"70\" x2=\"196\" y2=\"102\" />\n",
|
|
" <line x1=\"197\" y1=\"70\" x2=\"197\" y2=\"102\" />\n",
|
|
" <line x1=\"198\" y1=\"70\" x2=\"198\" y2=\"102\" />\n",
|
|
" <line x1=\"199\" y1=\"70\" x2=\"199\" y2=\"102\" />\n",
|
|
" <line x1=\"200\" y1=\"70\" x2=\"200\" y2=\"102\" />\n",
|
|
" <line x1=\"202\" y1=\"70\" x2=\"202\" y2=\"102\" />\n",
|
|
" <line x1=\"203\" y1=\"70\" x2=\"203\" y2=\"102\" />\n",
|
|
" <line x1=\"204\" y1=\"70\" x2=\"204\" y2=\"102\" />\n",
|
|
" <line x1=\"205\" y1=\"70\" x2=\"205\" y2=\"102\" />\n",
|
|
" <line x1=\"206\" y1=\"70\" x2=\"206\" y2=\"102\" />\n",
|
|
" <line x1=\"207\" y1=\"70\" x2=\"207\" y2=\"102\" />\n",
|
|
" <line x1=\"208\" y1=\"70\" x2=\"208\" y2=\"102\" />\n",
|
|
" <line x1=\"209\" y1=\"70\" x2=\"209\" y2=\"102\" />\n",
|
|
" <line x1=\"210\" y1=\"70\" x2=\"210\" y2=\"102\" />\n",
|
|
" <line x1=\"212\" y1=\"70\" x2=\"212\" y2=\"102\" />\n",
|
|
" <line x1=\"213\" y1=\"70\" x2=\"213\" y2=\"102\" />\n",
|
|
" <line x1=\"214\" y1=\"70\" x2=\"214\" y2=\"102\" />\n",
|
|
" <line x1=\"215\" y1=\"70\" x2=\"215\" y2=\"102\" />\n",
|
|
" <line x1=\"216\" y1=\"70\" x2=\"216\" y2=\"102\" style=\"stroke-width:2\" />\n",
|
|
"\n",
|
|
" <!-- Colored Rectangle -->\n",
|
|
" <polygon points=\"181.58823529411765,70.58823529411765 216.53239906781644,70.58823529411765 216.53239906781644,102.53001819660562 181.58823529411765,102.53001819660562\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n",
|
|
"\n",
|
|
" <!-- Text -->\n",
|
|
" <text x=\"199.060317\" y=\"122.530018\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >103</text>\n",
|
|
" <text x=\"236.532399\" y=\"86.559127\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(0,236.532399,86.559127)\">63</text>\n",
|
|
" <text x=\"136.294118\" y=\"87.235901\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,136.294118,87.235901)\">1916</text>\n",
|
|
"</svg>\n",
|
|
" </td>\n",
|
|
" </tr>\n",
|
|
"</table></div></div></li><li class='xr-section-item'><input id='section-cebeb30f-cd21-46c0-a49b-408eeaed4333' class='xr-section-summary-in' type='checkbox' checked><label for='section-cebeb30f-cd21-46c0-a49b-408eeaed4333' class='xr-section-summary' >Coordinates: <span>(5)</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'>x</span></div><div class='xr-var-dims'>(x)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 1 2 3 4 5 ... 745 746 747 748 749</div><input id='attrs-c1f6a69f-a96c-4548-b878-89af689e2008' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-c1f6a69f-a96c-4548-b878-89af689e2008' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-5a30f056-0904-402c-b4f0-7511e9d18bea' class='xr-var-data-in' type='checkbox'><label for='data-5a30f056-0904-402c-b4f0-7511e9d18bea' 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'></dl></div><div class='xr-var-data'><pre>array([ 0, 1, 2, ..., 747, 748, 749])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>y</span></div><div class='xr-var-dims'>(y)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 1 2 3 4 5 ... 335 336 337 338 339</div><input id='attrs-0ead1729-7107-4543-92fb-34b163e1f25d' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-0ead1729-7107-4543-92fb-34b163e1f25d' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-beaacb7a-1115-450b-b7ae-a2232ced08d5' class='xr-var-data-in' type='checkbox'><label for='data-beaacb7a-1115-450b-b7ae-a2232ced08d5' 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'></dl></div><div class='xr-var-data'><pre>array([ 0, 1, 2, ..., 337, 338, 339])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>z</span></div><div class='xr-var-dims'>(z)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 1 2 3 4 ... 1912 1913 1914 1915</div><input id='attrs-d22a35e3-9e76-43c9-9905-ebb11ca89055' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-d22a35e3-9e76-43c9-9905-ebb11ca89055' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-d44b8af6-f798-453d-b170-d65697eafc10' class='xr-var-data-in' type='checkbox'><label for='data-d44b8af6-f798-453d-b170-d65697eafc10' 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'></dl></div><div class='xr-var-data'><pre>array([ 0, 1, 2, ..., 1913, 1914, 1915])</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'>int64</div><div class='xr-var-preview xr-preview'>0 1 2 3 4 5 6 ... 57 58 59 60 61 62</div><input id='attrs-0911b5c8-5623-4d4c-b9b1-4672f941f343' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-0911b5c8-5623-4d4c-b9b1-4672f941f343' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-4526ca2a-7f76-4857-866c-d6303aa32a40' class='xr-var-data-in' type='checkbox'><label for='data-4526ca2a-7f76-4857-866c-d6303aa32a40' 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'></dl></div><div class='xr-var-data'><pre>array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
|
|
" 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,\n",
|
|
" 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,\n",
|
|
" 54, 55, 56, 57, 58, 59, 60, 61, 62])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>feature</span></div><div class='xr-var-dims'>(feature)</div><div class='xr-var-dtype'><U27</div><div class='xr-var-preview xr-preview'>'Gaussian_4D_Blur_0.0' ... 'diff...</div><input id='attrs-87dd61d0-cae9-48a2-abb3-8a2a31451bb5' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-87dd61d0-cae9-48a2-abb3-8a2a31451bb5' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-fe0a1f5a-e5c9-4ed4-87a6-900daab5a44a' class='xr-var-data-in' type='checkbox'><label for='data-fe0a1f5a-e5c9-4ed4-87a6-900daab5a44a' 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'></dl></div><div class='xr-var-data'><pre>array(['Gaussian_4D_Blur_0.0', 'Gaussian_4D_Blur_1.0', 'Gaussian_4D_Blur_3.0',\n",
|
|
" 'Gaussian_4D_Blur_6.0', 'Gaussian_4D_Blur_2.0',\n",
|
|
" 'diff_of_gauss_4D_1.0_0.0', 'diff_of_gauss_4D_3.0_0.0',\n",
|
|
" 'diff_of_gauss_4D_6.0_0.0', 'diff_of_gauss_4D_2.0_0.0',\n",
|
|
" 'diff_of_gauss_4D_3.0_1.0', 'diff_of_gauss_4D_6.0_1.0',\n",
|
|
" 'diff_of_gauss_4D_2.0_1.0', 'diff_of_gauss_4D_6.0_3.0',\n",
|
|
" 'diff_of_gauss_4D_2.0_3.0', 'diff_of_gauss_4D_2.0_6.0',\n",
|
|
" 'Gradient_sigma_1.0_0', 'Gradient_sigma_1.0_1', 'Gradient_sigma_1.0_2',\n",
|
|
" 'Gradient_sigma_1.0_3', 'hessian_sigma_1.0_00', 'hessian_sigma_1.0_01',\n",
|
|
" 'hessian_sigma_1.0_02', 'hessian_sigma_1.0_03', 'hessian_sigma_1.0_11',\n",
|
|
" 'hessian_sigma_1.0_12', 'hessian_sigma_1.0_13', 'hessian_sigma_1.0_22',\n",
|
|
" 'hessian_sigma_1.0_23', 'hessian_sigma_1.0_33', 'Gradient_sigma_3.0_0',\n",
|
|
" 'Gradient_sigma_3.0_1', 'Gradient_sigma_3.0_2', 'Gradient_sigma_3.0_3',\n",
|
|
" 'hessian_sigma_3.0_00', 'hessian_sigma_3.0_01', 'hessian_sigma_3.0_02',\n",
|
|
" 'hessian_sigma_3.0_03', 'hessian_sigma_3.0_11', 'hessian_sigma_3.0_12',\n",
|
|
" 'hessian_sigma_3.0_13', 'hessian_sigma_3.0_22', 'hessian_sigma_3.0_23',\n",
|
|
" 'hessian_sigma_3.0_33', 'Gradient_sigma_6.0_0', 'Gradient_sigma_6.0_1',\n",
|
|
" 'Gradient_sigma_6.0_2', 'Gradient_sigma_6.0_3', 'hessian_sigma_6.0_00',\n",
|
|
" 'hessian_sigma_6.0_01', 'hessian_sigma_6.0_02', 'hessian_sigma_6.0_03',\n",
|
|
" 'hessian_sigma_6.0_11', 'hessian_sigma_6.0_12', 'hessian_sigma_6.0_13',\n",
|
|
" 'hessian_sigma_6.0_22', 'hessian_sigma_6.0_23', 'hessian_sigma_6.0_33',\n",
|
|
" 'Gradient_sigma_2.0_0', 'Gradient_sigma_2.0_1', 'Gradient_sigma_2.0_2',\n",
|
|
" 'Gradient_sigma_2.0_3', 'hessian_sigma_2.0_00', 'hessian_sigma_2.0_01',\n",
|
|
" 'hessian_sigma_2.0_02', 'hessian_sigma_2.0_03', 'hessian_sigma_2.0_11',\n",
|
|
" 'hessian_sigma_2.0_12', 'hessian_sigma_2.0_13', 'hessian_sigma_2.0_22',\n",
|
|
" 'hessian_sigma_2.0_23', 'hessian_sigma_2.0_33', 'Gaussian_time_0.0',\n",
|
|
" 'Gaussian_time_1.0', 'Gaussian_time_3.0', 'Gaussian_time_6.0',\n",
|
|
" 'Gaussian_time_2.0', 'diff_of_gauss_time_1.0_0.0',\n",
|
|
" 'diff_of_gauss_time_3.0_0.0', 'diff_of_gauss_time_6.0_0.0',\n",
|
|
" 'diff_of_gauss_time_2.0_0.0', 'diff_of_gauss_time_3.0_1.0',\n",
|
|
" 'diff_of_gauss_time_6.0_1.0', 'diff_of_gauss_time_2.0_1.0',\n",
|
|
" 'diff_of_gauss_time_6.0_3.0', 'diff_of_gauss_time_2.0_3.0',\n",
|
|
" 'diff_of_gauss_time_2.0_6.0', 'Gaussian_space_0.0',\n",
|
|
" 'Gaussian_space_1.0', 'Gaussian_space_3.0', 'Gaussian_space_6.0',\n",
|
|
" 'Gaussian_space_2.0', 'diff_of_gauss_space_1.0_0.0',\n",
|
|
" 'diff_of_gauss_space_3.0_0.0', 'diff_of_gauss_space_6.0_0.0',\n",
|
|
" 'diff_of_gauss_space_2.0_0.0', 'diff_of_gauss_space_3.0_1.0',\n",
|
|
" 'diff_of_gauss_space_6.0_1.0', 'diff_of_gauss_space_2.0_1.0',\n",
|
|
" 'diff_of_gauss_space_6.0_3.0', 'diff_of_gauss_space_2.0_3.0',\n",
|
|
" 'diff_of_gauss_space_2.0_6.0', 'diff_to_min_',\n",
|
|
" 'diff_temp_min_Gauss_2.0'], dtype='<U27')</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-83a07d82-3d10-485f-88bb-8e4e878e6778' class='xr-section-summary-in' type='checkbox' ><label for='section-83a07d82-3d10-485f-88bb-8e4e878e6778' class='xr-section-summary' >Indexes: <span>(5)</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-index-name'><div>x</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-10b072d9-22cb-46d1-bec9-e36aa45afe66' class='xr-index-data-in' type='checkbox'/><label for='index-10b072d9-22cb-46d1-bec9-e36aa45afe66' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n",
|
|
" ...\n",
|
|
" 740, 741, 742, 743, 744, 745, 746, 747, 748, 749],\n",
|
|
" dtype='int64', name='x', length=750))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>y</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-1cc57120-aa27-47ac-8cda-7bf960a35c9e' class='xr-index-data-in' type='checkbox'/><label for='index-1cc57120-aa27-47ac-8cda-7bf960a35c9e' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n",
|
|
" ...\n",
|
|
" 330, 331, 332, 333, 334, 335, 336, 337, 338, 339],\n",
|
|
" dtype='int64', name='y', length=340))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>z</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-debb0b48-0b9f-4291-bb55-10efea237f7c' class='xr-index-data-in' type='checkbox'/><label for='index-debb0b48-0b9f-4291-bb55-10efea237f7c' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n",
|
|
" ...\n",
|
|
" 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915],\n",
|
|
" dtype='int64', name='z', length=1916))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>time</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-4eedf584-3fb0-47bf-9f36-bac38d878094' class='xr-index-data-in' type='checkbox'/><label for='index-4eedf584-3fb0-47bf-9f36-bac38d878094' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
|
|
" 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,\n",
|
|
" 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,\n",
|
|
" 54, 55, 56, 57, 58, 59, 60, 61, 62],\n",
|
|
" dtype='int64', name='time'))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>feature</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-2e90863d-7875-4efb-8b31-8268947cc725' class='xr-index-data-in' type='checkbox'/><label for='index-2e90863d-7875-4efb-8b31-8268947cc725' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index(['Gaussian_4D_Blur_0.0', 'Gaussian_4D_Blur_1.0', 'Gaussian_4D_Blur_3.0',\n",
|
|
" 'Gaussian_4D_Blur_6.0', 'Gaussian_4D_Blur_2.0',\n",
|
|
" 'diff_of_gauss_4D_1.0_0.0', 'diff_of_gauss_4D_3.0_0.0',\n",
|
|
" 'diff_of_gauss_4D_6.0_0.0', 'diff_of_gauss_4D_2.0_0.0',\n",
|
|
" 'diff_of_gauss_4D_3.0_1.0',\n",
|
|
" ...\n",
|
|
" 'diff_of_gauss_space_6.0_0.0', 'diff_of_gauss_space_2.0_0.0',\n",
|
|
" 'diff_of_gauss_space_3.0_1.0', 'diff_of_gauss_space_6.0_1.0',\n",
|
|
" 'diff_of_gauss_space_2.0_1.0', 'diff_of_gauss_space_6.0_3.0',\n",
|
|
" 'diff_of_gauss_space_2.0_3.0', 'diff_of_gauss_space_2.0_6.0',\n",
|
|
" 'diff_to_min_', 'diff_temp_min_Gauss_2.0'],\n",
|
|
" dtype='object', name='feature', length=103))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-26d40cf5-c85d-40a2-af5f-261171eb8a9e' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-26d40cf5-c85d-40a2-af5f-261171eb8a9e' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
|
|
],
|
|
"text/plain": [
|
|
"<xarray.DataArray 'feature_stack' (x: 750, y: 340, z: 1916, time: 63,\n",
|
|
" feature: 103)>\n",
|
|
"dask.array<stack, shape=(750, 340, 1916, 63, 103), dtype=float64, chunksize=(36, 36, 36, 63, 1), chunktype=numpy.ndarray>\n",
|
|
"Coordinates:\n",
|
|
" * x (x) int64 0 1 2 3 4 5 6 7 8 ... 741 742 743 744 745 746 747 748 749\n",
|
|
" * y (y) int64 0 1 2 3 4 5 6 7 8 ... 331 332 333 334 335 336 337 338 339\n",
|
|
" * z (z) int64 0 1 2 3 4 5 6 7 ... 1909 1910 1911 1912 1913 1914 1915\n",
|
|
" * time (time) int64 0 1 2 3 4 5 6 7 8 9 ... 53 54 55 56 57 58 59 60 61 62\n",
|
|
" * feature (feature) <U27 'Gaussian_4D_Blur_0.0' ... 'diff_temp_min_Gauss_2.0'"
|
|
]
|
|
},
|
|
"execution_count": 51,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"feat #check "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "9175532e-5cc4-4867-bd5d-bbf51ea4ca71",
|
|
"metadata": {},
|
|
"source": [
|
|
"### check aligment of chunks and select suitable \"super-chunk\" shape to split calculation in parts, example below\n",
|
|
"superchunk has unfortunately and apparently to fit twice into RAM, no idea what's going there"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 52,
|
|
"id": "8fe48b5f-20e2-4b87-9894-ca6f4c5eae02",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"1950.0"
|
|
]
|
|
},
|
|
"execution_count": 52,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"750*2.6"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 53,
|
|
"id": "721a5cf7-84b7-4f21-9035-a04b24ddb9c1",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"7.0"
|
|
]
|
|
},
|
|
"execution_count": 53,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"350/50"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 54,
|
|
"id": "fddb3805-230d-4267-abcc-46f99d2e1191",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"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[data-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 !important;\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-index-preview {\n",
|
|
" grid-column: 2 / 5;\n",
|
|
" color: var(--xr-font-color2);\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",
|
|
".xr-index-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",
|
|
".xr-index-data-in:checked ~ .xr-index-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-index-name div,\n",
|
|
".xr-index-data,\n",
|
|
".xr-attrs {\n",
|
|
" padding-left: 25px !important;\n",
|
|
"}\n",
|
|
"\n",
|
|
".xr-attrs,\n",
|
|
".xr-var-attrs,\n",
|
|
".xr-var-data,\n",
|
|
".xr-index-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",
|
|
".xr-no-icon {\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'><xarray.DataArray 'feature_stack' (x: 0, y: 340, z: 0, time: 63, feature: 103)>\n",
|
|
"dask.array<getitem, shape=(0, 340, 0, 63, 103), dtype=float64, chunksize=(0, 36, 0, 63, 1), chunktype=numpy.ndarray>\n",
|
|
"Coordinates:\n",
|
|
" * x (x) int64 \n",
|
|
" * y (y) int64 0 1 2 3 4 5 6 7 8 ... 331 332 333 334 335 336 337 338 339\n",
|
|
" * z (z) int64 \n",
|
|
" * time (time) int64 0 1 2 3 4 5 6 7 8 9 ... 53 54 55 56 57 58 59 60 61 62\n",
|
|
" * feature (feature) <U27 'Gaussian_4D_Blur_0.0' ... 'diff_temp_min_Gauss_2.0'</pre><div class='xr-wrap' style='display:none'><div class='xr-header'><div class='xr-obj-type'>xarray.DataArray</div><div class='xr-array-name'>'feature_stack'</div><ul class='xr-dim-list'><li><span class='xr-has-index'>x</span>: 0</li><li><span class='xr-has-index'>y</span>: 340</li><li><span class='xr-has-index'>z</span>: 0</li><li><span class='xr-has-index'>time</span>: 63</li><li><span class='xr-has-index'>feature</span>: 103</li></ul></div><ul class='xr-sections'><li class='xr-section-item'><div class='xr-array-wrap'><input id='section-a8d62761-f1d0-41f5-9698-18036cd62280' class='xr-array-in' type='checkbox' checked><label for='section-a8d62761-f1d0-41f5-9698-18036cd62280' title='Show/hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-array-preview xr-preview'><span>dask.array<chunksize=(0, 36, 0, 63, 1), meta=np.ndarray></span></div><div class='xr-array-data'><table>\n",
|
|
" <tr>\n",
|
|
" <td>\n",
|
|
" <table style=\"border-collapse: collapse;\">\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> 0 B </td>\n",
|
|
" <td> 0 B </td>\n",
|
|
" </tr>\n",
|
|
" \n",
|
|
" <tr>\n",
|
|
" <th> Shape </th>\n",
|
|
" <td> (0, 340, 0, 63, 103) </td>\n",
|
|
" <td> (0, 36, 0, 63, 1) </td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th> Dask graph </th>\n",
|
|
" <td colspan=\"2\"> 1133 chunks in 541 graph layers </td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th> Data type </th>\n",
|
|
" <td colspan=\"2\"> float64 numpy.ndarray </td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
" </table>\n",
|
|
" </td>\n",
|
|
" <td>\n",
|
|
" \n",
|
|
" </td>\n",
|
|
" </tr>\n",
|
|
"</table></div></div></li><li class='xr-section-item'><input id='section-eedd39d7-fb33-4108-aaf5-7d53d9333a18' class='xr-section-summary-in' type='checkbox' checked><label for='section-eedd39d7-fb33-4108-aaf5-7d53d9333a18' class='xr-section-summary' >Coordinates: <span>(5)</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'>x</span></div><div class='xr-var-dims'>(x)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'></div><input id='attrs-34be137c-54ae-47db-8bec-7be78a3fc852' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-34be137c-54ae-47db-8bec-7be78a3fc852' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-dc32ea52-736f-43d0-b1c5-e759c43f9472' class='xr-var-data-in' type='checkbox'><label for='data-dc32ea52-736f-43d0-b1c5-e759c43f9472' 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'></dl></div><div class='xr-var-data'><pre>array([], dtype=int64)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>y</span></div><div class='xr-var-dims'>(y)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 1 2 3 4 5 ... 335 336 337 338 339</div><input id='attrs-01eb95db-fd28-4e09-bb51-1871b8acb01c' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-01eb95db-fd28-4e09-bb51-1871b8acb01c' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-16a1b202-8a11-4581-962e-45d010dd17ef' class='xr-var-data-in' type='checkbox'><label for='data-16a1b202-8a11-4581-962e-45d010dd17ef' 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'></dl></div><div class='xr-var-data'><pre>array([ 0, 1, 2, ..., 337, 338, 339])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>z</span></div><div class='xr-var-dims'>(z)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'></div><input id='attrs-3c0ede3e-4c5d-4f49-9d48-8af1db5b8b12' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-3c0ede3e-4c5d-4f49-9d48-8af1db5b8b12' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-8e498e16-0198-42ee-8d49-6cb95e3770fa' class='xr-var-data-in' type='checkbox'><label for='data-8e498e16-0198-42ee-8d49-6cb95e3770fa' 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'></dl></div><div class='xr-var-data'><pre>array([], dtype=int64)</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'>int64</div><div class='xr-var-preview xr-preview'>0 1 2 3 4 5 6 ... 57 58 59 60 61 62</div><input id='attrs-d0d77909-4370-4086-a4fc-77f320633e9e' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-d0d77909-4370-4086-a4fc-77f320633e9e' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-22c6ed81-38dd-4d41-b60b-5a6142fde42f' class='xr-var-data-in' type='checkbox'><label for='data-22c6ed81-38dd-4d41-b60b-5a6142fde42f' 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'></dl></div><div class='xr-var-data'><pre>array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
|
|
" 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,\n",
|
|
" 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,\n",
|
|
" 54, 55, 56, 57, 58, 59, 60, 61, 62])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>feature</span></div><div class='xr-var-dims'>(feature)</div><div class='xr-var-dtype'><U27</div><div class='xr-var-preview xr-preview'>'Gaussian_4D_Blur_0.0' ... 'diff...</div><input id='attrs-3de4f160-d314-4ec8-89f6-a25ab5215e0f' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-3de4f160-d314-4ec8-89f6-a25ab5215e0f' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-292391f1-4dfd-44ab-9643-d82280f139b5' class='xr-var-data-in' type='checkbox'><label for='data-292391f1-4dfd-44ab-9643-d82280f139b5' 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'></dl></div><div class='xr-var-data'><pre>array(['Gaussian_4D_Blur_0.0', 'Gaussian_4D_Blur_1.0', 'Gaussian_4D_Blur_3.0',\n",
|
|
" 'Gaussian_4D_Blur_6.0', 'Gaussian_4D_Blur_2.0',\n",
|
|
" 'diff_of_gauss_4D_1.0_0.0', 'diff_of_gauss_4D_3.0_0.0',\n",
|
|
" 'diff_of_gauss_4D_6.0_0.0', 'diff_of_gauss_4D_2.0_0.0',\n",
|
|
" 'diff_of_gauss_4D_3.0_1.0', 'diff_of_gauss_4D_6.0_1.0',\n",
|
|
" 'diff_of_gauss_4D_2.0_1.0', 'diff_of_gauss_4D_6.0_3.0',\n",
|
|
" 'diff_of_gauss_4D_2.0_3.0', 'diff_of_gauss_4D_2.0_6.0',\n",
|
|
" 'Gradient_sigma_1.0_0', 'Gradient_sigma_1.0_1', 'Gradient_sigma_1.0_2',\n",
|
|
" 'Gradient_sigma_1.0_3', 'hessian_sigma_1.0_00', 'hessian_sigma_1.0_01',\n",
|
|
" 'hessian_sigma_1.0_02', 'hessian_sigma_1.0_03', 'hessian_sigma_1.0_11',\n",
|
|
" 'hessian_sigma_1.0_12', 'hessian_sigma_1.0_13', 'hessian_sigma_1.0_22',\n",
|
|
" 'hessian_sigma_1.0_23', 'hessian_sigma_1.0_33', 'Gradient_sigma_3.0_0',\n",
|
|
" 'Gradient_sigma_3.0_1', 'Gradient_sigma_3.0_2', 'Gradient_sigma_3.0_3',\n",
|
|
" 'hessian_sigma_3.0_00', 'hessian_sigma_3.0_01', 'hessian_sigma_3.0_02',\n",
|
|
" 'hessian_sigma_3.0_03', 'hessian_sigma_3.0_11', 'hessian_sigma_3.0_12',\n",
|
|
" 'hessian_sigma_3.0_13', 'hessian_sigma_3.0_22', 'hessian_sigma_3.0_23',\n",
|
|
" 'hessian_sigma_3.0_33', 'Gradient_sigma_6.0_0', 'Gradient_sigma_6.0_1',\n",
|
|
" 'Gradient_sigma_6.0_2', 'Gradient_sigma_6.0_3', 'hessian_sigma_6.0_00',\n",
|
|
" 'hessian_sigma_6.0_01', 'hessian_sigma_6.0_02', 'hessian_sigma_6.0_03',\n",
|
|
" 'hessian_sigma_6.0_11', 'hessian_sigma_6.0_12', 'hessian_sigma_6.0_13',\n",
|
|
" 'hessian_sigma_6.0_22', 'hessian_sigma_6.0_23', 'hessian_sigma_6.0_33',\n",
|
|
" 'Gradient_sigma_2.0_0', 'Gradient_sigma_2.0_1', 'Gradient_sigma_2.0_2',\n",
|
|
" 'Gradient_sigma_2.0_3', 'hessian_sigma_2.0_00', 'hessian_sigma_2.0_01',\n",
|
|
" 'hessian_sigma_2.0_02', 'hessian_sigma_2.0_03', 'hessian_sigma_2.0_11',\n",
|
|
" 'hessian_sigma_2.0_12', 'hessian_sigma_2.0_13', 'hessian_sigma_2.0_22',\n",
|
|
" 'hessian_sigma_2.0_23', 'hessian_sigma_2.0_33', 'Gaussian_time_0.0',\n",
|
|
" 'Gaussian_time_1.0', 'Gaussian_time_3.0', 'Gaussian_time_6.0',\n",
|
|
" 'Gaussian_time_2.0', 'diff_of_gauss_time_1.0_0.0',\n",
|
|
" 'diff_of_gauss_time_3.0_0.0', 'diff_of_gauss_time_6.0_0.0',\n",
|
|
" 'diff_of_gauss_time_2.0_0.0', 'diff_of_gauss_time_3.0_1.0',\n",
|
|
" 'diff_of_gauss_time_6.0_1.0', 'diff_of_gauss_time_2.0_1.0',\n",
|
|
" 'diff_of_gauss_time_6.0_3.0', 'diff_of_gauss_time_2.0_3.0',\n",
|
|
" 'diff_of_gauss_time_2.0_6.0', 'Gaussian_space_0.0',\n",
|
|
" 'Gaussian_space_1.0', 'Gaussian_space_3.0', 'Gaussian_space_6.0',\n",
|
|
" 'Gaussian_space_2.0', 'diff_of_gauss_space_1.0_0.0',\n",
|
|
" 'diff_of_gauss_space_3.0_0.0', 'diff_of_gauss_space_6.0_0.0',\n",
|
|
" 'diff_of_gauss_space_2.0_0.0', 'diff_of_gauss_space_3.0_1.0',\n",
|
|
" 'diff_of_gauss_space_6.0_1.0', 'diff_of_gauss_space_2.0_1.0',\n",
|
|
" 'diff_of_gauss_space_6.0_3.0', 'diff_of_gauss_space_2.0_3.0',\n",
|
|
" 'diff_of_gauss_space_2.0_6.0', 'diff_to_min_',\n",
|
|
" 'diff_temp_min_Gauss_2.0'], dtype='<U27')</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-09ab3b96-9cd1-4e7f-ae79-1a87a093977d' class='xr-section-summary-in' type='checkbox' ><label for='section-09ab3b96-9cd1-4e7f-ae79-1a87a093977d' class='xr-section-summary' >Indexes: <span>(5)</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-index-name'><div>x</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-a0c5a642-87d0-45b7-ab0a-156765cd2c4f' class='xr-index-data-in' type='checkbox'/><label for='index-a0c5a642-87d0-45b7-ab0a-156765cd2c4f' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([], dtype='int64', name='x'))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>y</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-520b253f-e9ff-4a67-ab7b-77914a6aa6ae' class='xr-index-data-in' type='checkbox'/><label for='index-520b253f-e9ff-4a67-ab7b-77914a6aa6ae' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n",
|
|
" ...\n",
|
|
" 330, 331, 332, 333, 334, 335, 336, 337, 338, 339],\n",
|
|
" dtype='int64', name='y', length=340))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>z</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-819b1b25-1fcc-412f-8ea1-3450a3ed587a' class='xr-index-data-in' type='checkbox'/><label for='index-819b1b25-1fcc-412f-8ea1-3450a3ed587a' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([], dtype='int64', name='z'))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>time</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-b46b67b6-c230-42a3-86c1-04623b231da2' class='xr-index-data-in' type='checkbox'/><label for='index-b46b67b6-c230-42a3-86c1-04623b231da2' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
|
|
" 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,\n",
|
|
" 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,\n",
|
|
" 54, 55, 56, 57, 58, 59, 60, 61, 62],\n",
|
|
" dtype='int64', name='time'))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>feature</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-bd33e88f-d398-4755-8eb5-7825b83a835a' class='xr-index-data-in' type='checkbox'/><label for='index-bd33e88f-d398-4755-8eb5-7825b83a835a' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index(['Gaussian_4D_Blur_0.0', 'Gaussian_4D_Blur_1.0', 'Gaussian_4D_Blur_3.0',\n",
|
|
" 'Gaussian_4D_Blur_6.0', 'Gaussian_4D_Blur_2.0',\n",
|
|
" 'diff_of_gauss_4D_1.0_0.0', 'diff_of_gauss_4D_3.0_0.0',\n",
|
|
" 'diff_of_gauss_4D_6.0_0.0', 'diff_of_gauss_4D_2.0_0.0',\n",
|
|
" 'diff_of_gauss_4D_3.0_1.0',\n",
|
|
" ...\n",
|
|
" 'diff_of_gauss_space_6.0_0.0', 'diff_of_gauss_space_2.0_0.0',\n",
|
|
" 'diff_of_gauss_space_3.0_1.0', 'diff_of_gauss_space_6.0_1.0',\n",
|
|
" 'diff_of_gauss_space_2.0_1.0', 'diff_of_gauss_space_6.0_3.0',\n",
|
|
" 'diff_of_gauss_space_2.0_3.0', 'diff_of_gauss_space_2.0_6.0',\n",
|
|
" 'diff_to_min_', 'diff_temp_min_Gauss_2.0'],\n",
|
|
" dtype='object', name='feature', length=103))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-f3f66e4d-5f64-44e9-9322-f6533469d6d9' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-f3f66e4d-5f64-44e9-9322-f6533469d6d9' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
|
|
],
|
|
"text/plain": [
|
|
"<xarray.DataArray 'feature_stack' (x: 0, y: 340, z: 0, time: 63, feature: 103)>\n",
|
|
"dask.array<getitem, shape=(0, 340, 0, 63, 103), dtype=float64, chunksize=(0, 36, 0, 63, 1), chunktype=numpy.ndarray>\n",
|
|
"Coordinates:\n",
|
|
" * x (x) int64 \n",
|
|
" * y (y) int64 0 1 2 3 4 5 6 7 8 ... 331 332 333 334 335 336 337 338 339\n",
|
|
" * z (z) int64 \n",
|
|
" * time (time) int64 0 1 2 3 4 5 6 7 8 9 ... 53 54 55 56 57 58 59 60 61 62\n",
|
|
" * feature (feature) <U27 'Gaussian_4D_Blur_0.0' ... 'diff_temp_min_Gauss_2.0'"
|
|
]
|
|
},
|
|
"execution_count": 54,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# check length of loops to process entire dataset, estimate size of obtained sub-feature to avoid out-of-memory issues\n",
|
|
"i = 14\n",
|
|
"j = i\n",
|
|
"# j = 3\n",
|
|
"dim1 = 54#better use multiple of chunk size !?\n",
|
|
"dim2 = int(2.6*dim1)\n",
|
|
"feat[i*dim1:(i+1)*dim1,:,j*dim2:(j+1)*dim2,:,:] #select all features and all time steps, but you are free in space; als large as possible and as small as necessary. limit is the available RAM to collect the dask result"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 55,
|
|
"id": "94193631-c6c8-4a6b-a527-ef98f3e6d77d",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"segs = np.zeros(feat.shape[:4], dtype=np.uint8)\n",
|
|
"# segs = pickle.load(open(os.path.join(temppath,'segs.p')), 'rb')) #segmentation will most likely crash a few times so re-lead reached state"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 57,
|
|
"id": "fd3f3e68-c279-4857-a196-a416b807aca5",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"50"
|
|
]
|
|
},
|
|
"execution_count": 57,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# maybe helps reducing memory leak issues, but not sure if it actually does anything ...\n",
|
|
"client.run(gc.collect)\n",
|
|
"gc.collect()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 58,
|
|
"id": "e90052a9-d05c-418b-9daa-6831b7af5b3f",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import ctypes #same as above\n",
|
|
"def trim_memory() -> int:\n",
|
|
" libc = ctypes.CDLL(\"libc.so.6\")\n",
|
|
" return libc.malloc_trim(0)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 59,
|
|
"id": "38131ff8-d71a-44e9-9b63-124caf23e3eb",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"1"
|
|
]
|
|
},
|
|
"execution_count": 59,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"trim_memory()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "47bda30a-a93a-437f-8025-422b76c3a682",
|
|
"metadata": {
|
|
"scrolled": true,
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"5/14\n",
|
|
"7\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"/mpc/homes/fische_r/miniconda3/lib/python3.11/site-packages/distributed/client.py:3149: UserWarning: Sending large graph of size 12.53 MiB.\n",
|
|
"This may cause some slowdown.\n",
|
|
"Consider scattering data ahead of time and using futures.\n",
|
|
" warnings.warn(\n",
|
|
"2023-11-06 08:55:05,396 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 08:55:11,790 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 09:00:09,419 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 09:00:10,414 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(161935200,)\n",
|
|
"8\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"/mpc/homes/fische_r/miniconda3/lib/python3.11/site-packages/distributed/client.py:3149: UserWarning: Sending large graph of size 10.41 MiB.\n",
|
|
"This may cause some slowdown.\n",
|
|
"Consider scattering data ahead of time and using futures.\n",
|
|
" warnings.warn(\n",
|
|
"2023-11-06 09:17:54,795 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 09:18:01,541 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 09:22:40,612 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 09:22:41,556 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(161935200,)\n",
|
|
"9\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2023-11-06 09:35:24,797 - distributed.utils_perf - WARNING - full garbage collections took 19% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 09:35:37,336 - distributed.utils_perf - WARNING - full garbage collections took 20% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 09:35:53,042 - distributed.utils_perf - WARNING - full garbage collections took 22% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 09:36:15,587 - distributed.utils_perf - WARNING - full garbage collections took 23% CPU time recently (threshold: 10%)\n",
|
|
"/mpc/homes/fische_r/miniconda3/lib/python3.11/site-packages/distributed/client.py:3149: UserWarning: Sending large graph of size 10.41 MiB.\n",
|
|
"This may cause some slowdown.\n",
|
|
"Consider scattering data ahead of time and using futures.\n",
|
|
" warnings.warn(\n",
|
|
"2023-11-06 09:40:50,631 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 09:40:57,532 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 09:45:39,235 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 09:45:40,160 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(161935200,)\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2023-11-06 09:52:34,605 - distributed.utils_perf - WARNING - full garbage collections took 18% CPU time recently (threshold: 10%)\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"10\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2023-11-06 09:57:30,109 - distributed.utils_perf - WARNING - full garbage collections took 18% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 09:57:44,375 - distributed.utils_perf - WARNING - full garbage collections took 18% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 09:57:51,901 - distributed.utils_perf - WARNING - full garbage collections took 18% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 09:58:01,737 - distributed.utils_perf - WARNING - full garbage collections took 19% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 09:58:14,450 - distributed.utils_perf - WARNING - full garbage collections took 19% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 09:58:30,600 - distributed.utils_perf - WARNING - full garbage collections took 20% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 09:58:53,584 - distributed.utils_perf - WARNING - full garbage collections took 21% CPU time recently (threshold: 10%)\n",
|
|
"/mpc/homes/fische_r/miniconda3/lib/python3.11/site-packages/distributed/client.py:3149: UserWarning: Sending large graph of size 12.53 MiB.\n",
|
|
"This may cause some slowdown.\n",
|
|
"Consider scattering data ahead of time and using futures.\n",
|
|
" warnings.warn(\n",
|
|
"2023-11-06 10:03:51,077 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 10:03:57,405 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 10:08:53,941 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 10:08:55,895 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(161935200,)\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2023-11-06 10:16:32,179 - distributed.utils_perf - WARNING - full garbage collections took 20% CPU time recently (threshold: 10%)\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"11\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2023-11-06 10:21:25,774 - distributed.utils_perf - WARNING - full garbage collections took 20% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 10:21:41,001 - distributed.utils_perf - WARNING - full garbage collections took 20% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 10:21:48,413 - distributed.utils_perf - WARNING - full garbage collections took 20% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 10:21:58,320 - distributed.utils_perf - WARNING - full garbage collections took 20% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 10:22:11,508 - distributed.utils_perf - WARNING - full garbage collections took 21% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 10:22:27,356 - distributed.utils_perf - WARNING - full garbage collections took 21% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 10:22:50,498 - distributed.utils_perf - WARNING - full garbage collections took 22% CPU time recently (threshold: 10%)\n",
|
|
"/mpc/homes/fische_r/miniconda3/lib/python3.11/site-packages/distributed/client.py:3149: UserWarning: Sending large graph of size 12.53 MiB.\n",
|
|
"This may cause some slowdown.\n",
|
|
"Consider scattering data ahead of time and using futures.\n",
|
|
" warnings.warn(\n",
|
|
"2023-11-06 10:27:41,827 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 10:27:47,989 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 10:32:42,578 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 10:32:44,713 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(161935200,)\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2023-11-06 10:40:31,128 - distributed.utils_perf - WARNING - full garbage collections took 20% CPU time recently (threshold: 10%)\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"12\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2023-11-06 10:45:21,833 - distributed.utils_perf - WARNING - full garbage collections took 20% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 10:45:36,824 - distributed.utils_perf - WARNING - full garbage collections took 20% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 10:45:44,516 - distributed.utils_perf - WARNING - full garbage collections took 20% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 10:45:54,646 - distributed.utils_perf - WARNING - full garbage collections took 21% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 10:46:07,675 - distributed.utils_perf - WARNING - full garbage collections took 21% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 10:46:23,604 - distributed.utils_perf - WARNING - full garbage collections took 21% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 10:46:46,848 - distributed.utils_perf - WARNING - full garbage collections took 21% CPU time recently (threshold: 10%)\n",
|
|
"/mpc/homes/fische_r/miniconda3/lib/python3.11/site-packages/distributed/client.py:3149: UserWarning: Sending large graph of size 12.52 MiB.\n",
|
|
"This may cause some slowdown.\n",
|
|
"Consider scattering data ahead of time and using futures.\n",
|
|
" warnings.warn(\n",
|
|
"2023-11-06 10:51:45,842 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 10:51:52,256 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 10:56:44,566 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 10:56:46,646 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(161935200,)\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2023-11-06 11:04:38,909 - distributed.utils_perf - WARNING - full garbage collections took 22% CPU time recently (threshold: 10%)\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"13\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2023-11-06 11:09:29,488 - distributed.utils_perf - WARNING - full garbage collections took 22% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:09:44,479 - distributed.utils_perf - WARNING - full garbage collections took 22% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:09:52,132 - distributed.utils_perf - WARNING - full garbage collections took 22% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:10:02,367 - distributed.utils_perf - WARNING - full garbage collections took 22% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:10:15,430 - distributed.utils_perf - WARNING - full garbage collections took 23% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:10:31,395 - distributed.utils_perf - WARNING - full garbage collections took 23% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:10:54,757 - distributed.utils_perf - WARNING - full garbage collections took 23% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:12:19,552 - distributed.utils_perf - WARNING - full garbage collections took 11% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:12:26,519 - distributed.utils_perf - WARNING - full garbage collections took 13% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:14:20,734 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 11:14:26,757 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 11:19:06,466 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 11:19:07,442 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(111041280,)\n",
|
|
"6/14\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2023-11-06 11:23:51,742 - distributed.utils_perf - WARNING - full garbage collections took 24% CPU time recently (threshold: 10%)\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"0\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2023-11-06 11:28:49,177 - distributed.utils_perf - WARNING - full garbage collections took 24% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:29:04,508 - distributed.utils_perf - WARNING - full garbage collections took 24% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:29:12,164 - distributed.utils_perf - WARNING - full garbage collections took 24% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:29:22,661 - distributed.utils_perf - WARNING - full garbage collections took 24% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:29:35,824 - distributed.utils_perf - WARNING - full garbage collections took 24% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:29:52,164 - distributed.utils_perf - WARNING - full garbage collections took 24% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:30:16,610 - distributed.utils_perf - WARNING - full garbage collections took 24% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:34:32,664 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 11:34:38,824 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 11:39:23,902 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 11:39:24,886 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(161935200,)\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2023-11-06 11:46:05,926 - distributed.utils_perf - WARNING - full garbage collections took 24% CPU time recently (threshold: 10%)\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"1\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2023-11-06 11:51:04,631 - distributed.utils_perf - WARNING - full garbage collections took 24% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:51:20,234 - distributed.utils_perf - WARNING - full garbage collections took 24% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:51:28,624 - distributed.utils_perf - WARNING - full garbage collections took 24% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:51:39,127 - distributed.utils_perf - WARNING - full garbage collections took 24% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:51:52,647 - distributed.utils_perf - WARNING - full garbage collections took 24% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:52:09,457 - distributed.utils_perf - WARNING - full garbage collections took 24% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 11:52:35,209 - distributed.utils_perf - WARNING - full garbage collections took 24% CPU time recently (threshold: 10%)\n",
|
|
"/mpc/homes/fische_r/miniconda3/lib/python3.11/site-packages/distributed/client.py:3149: UserWarning: Sending large graph of size 12.51 MiB.\n",
|
|
"This may cause some slowdown.\n",
|
|
"Consider scattering data ahead of time and using futures.\n",
|
|
" warnings.warn(\n",
|
|
"2023-11-06 11:57:32,692 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 11:57:38,815 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 12:02:21,639 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 12:02:22,660 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(161935200,)\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2023-11-06 12:09:08,272 - distributed.utils_perf - WARNING - full garbage collections took 23% CPU time recently (threshold: 10%)\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2023-11-06 12:14:05,789 - distributed.utils_perf - WARNING - full garbage collections took 23% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 12:14:21,448 - distributed.utils_perf - WARNING - full garbage collections took 23% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 12:14:29,838 - distributed.utils_perf - WARNING - full garbage collections took 23% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 12:14:40,359 - distributed.utils_perf - WARNING - full garbage collections took 23% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 12:14:53,881 - distributed.utils_perf - WARNING - full garbage collections took 23% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 12:15:10,645 - distributed.utils_perf - WARNING - full garbage collections took 23% CPU time recently (threshold: 10%)\n",
|
|
"2023-11-06 12:15:36,436 - distributed.utils_perf - WARNING - full garbage collections took 23% CPU time recently (threshold: 10%)\n",
|
|
"/mpc/homes/fische_r/miniconda3/lib/python3.11/site-packages/distributed/client.py:3149: UserWarning: Sending large graph of size 12.54 MiB.\n",
|
|
"This may cause some slowdown.\n",
|
|
"Consider scattering data ahead of time and using futures.\n",
|
|
" warnings.warn(\n",
|
|
"2023-11-06 12:20:27,864 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 12:20:34,100 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 12:25:21,387 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 12:25:22,326 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(161935200,)\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2023-11-06 12:32:07,763 - distributed.utils_perf - WARNING - full garbage collections took 21% CPU time recently (threshold: 10%)\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"3\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"/mpc/homes/fische_r/miniconda3/lib/python3.11/site-packages/distributed/client.py:3149: UserWarning: Sending large graph of size 12.54 MiB.\n",
|
|
"This may cause some slowdown.\n",
|
|
"Consider scattering data ahead of time and using futures.\n",
|
|
" warnings.warn(\n",
|
|
"2023-11-06 12:43:37,152 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 12:43:43,362 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 12:48:25,187 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 12:48:26,174 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(161935200,)\n",
|
|
"4\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"/mpc/homes/fische_r/miniconda3/lib/python3.11/site-packages/distributed/client.py:3149: UserWarning: Sending large graph of size 12.54 MiB.\n",
|
|
"This may cause some slowdown.\n",
|
|
"Consider scattering data ahead of time and using futures.\n",
|
|
" warnings.warn(\n",
|
|
"2023-11-06 13:06:53,039 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 13:06:59,293 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 13:11:42,160 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 13:11:43,184 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(161935200,)\n",
|
|
"5\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"/mpc/homes/fische_r/miniconda3/lib/python3.11/site-packages/distributed/client.py:3149: UserWarning: Sending large graph of size 12.54 MiB.\n",
|
|
"This may cause some slowdown.\n",
|
|
"Consider scattering data ahead of time and using futures.\n",
|
|
" warnings.warn(\n",
|
|
"2023-11-06 13:29:37,626 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 13:29:44,513 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 13:34:26,730 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 13:34:27,716 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(161935200,)\n",
|
|
"6\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"/mpc/homes/fische_r/miniconda3/lib/python3.11/site-packages/distributed/client.py:3149: UserWarning: Sending large graph of size 12.54 MiB.\n",
|
|
"This may cause some slowdown.\n",
|
|
"Consider scattering data ahead of time and using futures.\n",
|
|
" warnings.warn(\n",
|
|
"2023-11-06 13:52:41,781 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 13:52:47,984 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 13:57:29,691 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 13:57:30,680 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(161935200,)\n",
|
|
"7\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"/mpc/homes/fische_r/miniconda3/lib/python3.11/site-packages/distributed/client.py:3149: UserWarning: Sending large graph of size 12.54 MiB.\n",
|
|
"This may cause some slowdown.\n",
|
|
"Consider scattering data ahead of time and using futures.\n",
|
|
" warnings.warn(\n",
|
|
"2023-11-06 14:15:53,186 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 14:15:59,358 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 14:20:43,287 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 14:20:44,273 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(161935200,)\n",
|
|
"8\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"/mpc/homes/fische_r/miniconda3/lib/python3.11/site-packages/distributed/client.py:3149: UserWarning: Sending large graph of size 10.42 MiB.\n",
|
|
"This may cause some slowdown.\n",
|
|
"Consider scattering data ahead of time and using futures.\n",
|
|
" warnings.warn(\n",
|
|
"2023-11-06 14:38:47,636 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 14:38:53,826 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 14:43:36,553 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 14:43:37,502 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(161935200,)\n",
|
|
"9\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"/mpc/homes/fische_r/miniconda3/lib/python3.11/site-packages/distributed/client.py:3149: UserWarning: Sending large graph of size 10.42 MiB.\n",
|
|
"This may cause some slowdown.\n",
|
|
"Consider scattering data ahead of time and using futures.\n",
|
|
" warnings.warn(\n",
|
|
"2023-11-06 15:01:50,088 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 15:01:56,220 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 15:06:46,574 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 15:06:47,510 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(161935200,)\n",
|
|
"10\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"/mpc/homes/fische_r/miniconda3/lib/python3.11/site-packages/distributed/client.py:3149: UserWarning: Sending large graph of size 12.54 MiB.\n",
|
|
"This may cause some slowdown.\n",
|
|
"Consider scattering data ahead of time and using futures.\n",
|
|
" warnings.warn(\n",
|
|
"2023-11-06 15:24:58,452 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 15:25:05,685 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 15:29:46,644 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 15:29:47,627 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(161935200,)\n",
|
|
"11\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"/mpc/homes/fische_r/miniconda3/lib/python3.11/site-packages/distributed/client.py:3149: UserWarning: Sending large graph of size 12.54 MiB.\n",
|
|
"This may cause some slowdown.\n",
|
|
"Consider scattering data ahead of time and using futures.\n",
|
|
" warnings.warn(\n",
|
|
"2023-11-06 15:48:13,771 - distributed.nanny - WARNING - Restarting worker\n",
|
|
"2023-11-06 15:48:20,001 - distributed.nanny - WARNING - Restarting worker\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"limit = 14\n",
|
|
"# TODO: Workaround: write intermediates to disk and restart dask client/scheduler/workers to get rid of unmanaged memory\n",
|
|
"# possible solution: do data handling on mpc2053 and calculations on mpc2959 -> leaves some RAM --> gc.collect() not necessary anymore\n",
|
|
"# appearantly starts to become critical after 12 iteratons\n",
|
|
"# from i=7, j=10 already done\n",
|
|
"# TODO write i and j to file to track progress even when closing jupyter\n",
|
|
"for i in range(4,limit):\n",
|
|
" # pickle.dump(segs, open(os.path.join(training_path,'segs_temp.p'), 'wb'))\n",
|
|
" \n",
|
|
" print(str(i+1)+'/'+str(limit))\n",
|
|
"\n",
|
|
" start = 0\n",
|
|
" if i == 4:\n",
|
|
" start = 7\n",
|
|
" for j in range(start,limit):\n",
|
|
" gc.collect() \n",
|
|
" client.run(gc.collect)\n",
|
|
" client.run(trim_memory)\n",
|
|
" trim_memory()\n",
|
|
" print(j)\n",
|
|
" #with joblib.parallel_backend('dask'):\n",
|
|
" # part = feat[i*dim1:(i+1)*dim1,:,j*dim2:(j+1)*dim2,:,:] #.persist() #compute() may blow up the memory ?! https://stackoverflow.com/questions/73770527/dask-compute-uses-twice-the-expected-memory\n",
|
|
"\n",
|
|
" part = feat[i*dim1:(i+1)*dim1,:,j*dim2:(j+1)*dim2,:,:] \n",
|
|
" part_idp = feat_idp[i*dim1:(i+1)*dim1,:,j*dim2:(j+1)*dim2,:] \n",
|
|
" if 0 in part.shape:\n",
|
|
" print('hit the edge (one dimension 0), ignore')\n",
|
|
" continue\n",
|
|
"\n",
|
|
" \n",
|
|
"\n",
|
|
" if type(part) is not np.ndarray:\n",
|
|
" fut = client.scatter(part)\n",
|
|
" fut = fut.result()\n",
|
|
" fut = fut.compute()\n",
|
|
" part = fut\n",
|
|
" try:\n",
|
|
" client.restart()\n",
|
|
" except:\n",
|
|
" client = reboot_client(client)\n",
|
|
" \n",
|
|
" # if j == 0: print('now the time independent part')\n",
|
|
" if type(part_idp) is not np.ndarray:\n",
|
|
" fut = client.scatter(part_idp)\n",
|
|
" fut = fut.result()\n",
|
|
" fut = fut.compute()\n",
|
|
" part_idp = fut\n",
|
|
" try:\n",
|
|
" client.restart()\n",
|
|
" except:\n",
|
|
" client = reboot_client(client)\n",
|
|
"\n",
|
|
" # feat = dask.array.concatenate([TS.feat_data['feature_stack'], test], axis=-1)\n",
|
|
" # dask.array.stack([TS.feat_data['feature_stack_time_independent'][:,:,:,0,:]]*da.shape[-1], axis=-2)\n",
|
|
" part_idp = np.stack([part_idp]*da.shape[-1], axis=-2)\n",
|
|
" part = np.concatenate([part, part_idp], axis = -1)\n",
|
|
" del part_idp\n",
|
|
" \n",
|
|
" # part = part.compute()\n",
|
|
"\n",
|
|
" shp = part.shape\n",
|
|
" num_feat = part.shape[-1] \n",
|
|
" part = part.reshape(-1,num_feat)\n",
|
|
"\n",
|
|
" psplit = int(part.shape[0]/2)\n",
|
|
"\n",
|
|
" # print('create part 1')\n",
|
|
" part1 = part[:psplit,:]\n",
|
|
" # print('create part 2')\n",
|
|
" part2 = part[psplit:,:]\n",
|
|
" # print('segmenting 1')\n",
|
|
"\n",
|
|
" # with joblib.parallel_backend('dask'):\n",
|
|
" seg1 = clf.predict(part1).astype(np.uint8)\n",
|
|
" del part1\n",
|
|
" # print('segmenting 2')\n",
|
|
" # with joblib.parallel_backend('dask'):\n",
|
|
" seg2 = clf.predict(part2).astype(np.uint8)\n",
|
|
" # print('wrap results')\n",
|
|
" del part2\n",
|
|
" del part\n",
|
|
" # gc.collect()\n",
|
|
"\n",
|
|
" seg = np.concatenate([seg1,seg2])\n",
|
|
" print(seg.shape)\n",
|
|
" del seg1\n",
|
|
" del seg2\n",
|
|
"\n",
|
|
" #this step needs a lot of RAM ?! appearantly not\n",
|
|
"\n",
|
|
" # plt.dump(seg, open(os.path.join(training_path,'seg_'+str(i)+'_'+str(j)+'.p'), 'wb'))\n",
|
|
"\n",
|
|
"\n",
|
|
" # put segs together when all calculated\n",
|
|
" seg = seg.reshape(shp[:4])\n",
|
|
" # not sure if this switch cases are necessary\n",
|
|
" if i < limit-1 and j < limit-1:\n",
|
|
" segs[i*dim1:(i+1)*dim1,:,j*dim2:(j+1)*dim2,:] = seg\n",
|
|
" elif not i < limit-1 and j < limit-1:\n",
|
|
" segs[i*dim1:,:,j*dim2:(j+1)*dim2,:] = seg\n",
|
|
" elif not j < limit-1 and i < limit-1:\n",
|
|
" segs[i*dim1:(i+1)*dim1,:,j*dim2:,:] = seg\n",
|
|
" else:\n",
|
|
" segs[i*dim1:,:,j*dim2:,:] = seg\n",
|
|
" \n",
|
|
" del seg"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 67,
|
|
"id": "86258b73-db78-48c3-afed-b27cfce640cc",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"4"
|
|
]
|
|
},
|
|
"execution_count": 67,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"i #check, how far you have got, replace iterators accordingly in the loop above"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 68,
|
|
"id": "e9c0bfab-54a5-4148-ab0d-50fefd15c191",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"7"
|
|
]
|
|
},
|
|
"execution_count": 68,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"j"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 69,
|
|
"id": "f3080841-2ec5-4191-81af-46c120485999",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<matplotlib.image.AxesImage at 0x7f54f1dd3050>"
|
|
]
|
|
},
|
|
"execution_count": 69,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.imshow(segs[:,50,:, 20]) #check how it is going"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "3cebbb43-06e7-4480-84b8-1132cfcfb322",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### dump intermediate result to be picked up and restart kernel \n",
|
|
"\n",
|
|
"if something stops working, dump the already segmented volume and restart the kernel with a clean sheet, several things can happen:\n",
|
|
"\n",
|
|
"- dask image proccesing stops processing (check dashboard): safe to cancel kernel, dump intermediate result, adapt loop and restart kernel (execute all cells except the training from the top)\n",
|
|
"- something crashed, but the kernel is still alive: dump intermediate result, adapt loop and restart kernel\n",
|
|
"- kernel died: unfortunately recen progress is gone, restart kernel\n",
|
|
"\n",
|
|
"Sometime, it also helps to kill the entire jupyter session. There are apparently some weird memory leaks that would be nice to be avoided. Also, a lot of time is spent fetching the calculated feature stack, image processing and classifying does not take very long"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "3fdfc411-3f64-4740-9cbf-87d4ea091eaf",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"pickle.dump(segs, open(os.path.join(temppath,'segs.p'), 'wb'))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c0648ac1-d7da-4133-ab59-c200556c9db1",
|
|
"metadata": {},
|
|
"source": [
|
|
"### save result to disk when full volume has been processed"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 67,
|
|
"id": "bf4ba5e8-f36a-4da5-acd8-ca02d1249dfa",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# TODO: include metadata in segmented nc\n",
|
|
"\n",
|
|
"shp = segs.shape\n",
|
|
"segdata = xr.Dataset({'segmented': (['x','y','z','timestep'], segs),\n",
|
|
" 't_utc': ('timestep', t_utc),\n",
|
|
" 'time': ('timestep', time)},\n",
|
|
" coords = {'x': np.arange(shp[0]),\n",
|
|
" 'y': np.arange(shp[1]),\n",
|
|
" 'z': np.arange(shp[2]),\n",
|
|
" 'timestep': np.arange(shp[3]),\n",
|
|
" 'feature': TS.combined_feature_names}\n",
|
|
" )\n",
|
|
"segdata.attrs = data.attrs.copy()\n",
|
|
"segdata.attrs['05_ML_cropping'] = [a,b,c,d,e,f]\n",
|
|
"segdata.attrs['pytrain_git'] = pytrain_git_sha\n",
|
|
"segdata.attrs['05_coely_gitsha'] = git_sha\n",
|
|
"segdata.attrs['GDL_crop'] = GDL_crop"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 68,
|
|
"id": "51c993a5-14d0-4de4-a8cf-184ac08d713b",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"segpath = os.path.join(training_path_sample, sample+'water_segmentation.nc')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 69,
|
|
"id": "15a620c3-5aa0-4b39-ab7a-69b2a56a2ebe",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"segdata.to_netcdf(segpath)"
|
|
]
|
|
}
|
|
],
|
|
"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.12.9"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|