From 01fb10f8d2668219e3539cca08852725eb28819a Mon Sep 17 00:00:00 2001
From: hagrid67 <jdhwatson@gmail.com>
Date: Sun, 5 May 2019 16:00:43 +0100
Subject: [PATCH] mostly just adding trailing junk

---
 notebooks/CanvasEditor.ipynb | 468 +++++++++++++++++++++++++++++++----
 1 file changed, 424 insertions(+), 44 deletions(-)

diff --git a/notebooks/CanvasEditor.ipynb b/notebooks/CanvasEditor.ipynb
index 9773d174..da5a4235 100644
--- a/notebooks/CanvasEditor.ipynb
+++ b/notebooks/CanvasEditor.ipynb
@@ -120,7 +120,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "sfEnv = \"C:/Users/u224870/Projekte_Git/flatland/env-data/tests/test1.npy\"\n",
+    "sfEnv = \"../flatland/env-data/tests/test1.npy\"\n",
     "if True:\n",
     "    oEnv.rail.load_transition_map(sfEnv)\n",
     "    oEnv.width = oEnv.rail.width\n",
@@ -269,7 +269,7 @@
    ],
    "source": [
     "wid_img.unregister_all()\n",
-    "oEditor = JupEditor(oEnv,wid_img)\n",
+    "oEditor = JupEditor(oEnv, wid_img)\n",
     "wid_img.register_move(oEditor.event_handler)\n",
     "wid_img.register_click(oEditor.on_click)\n"
    ]
@@ -347,12 +347,12 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "cddcd8e9e5fb48c185a129ff73b1ef40",
+       "model_id": "de522f891d4d4dd1a4abc5bddbe7313e",
        "version_major": 2,
        "version_minor": 0
       },
       "text/plain": [
-       "HBox(children=(Canvas(), VBox(children=(Text(value='C:/Users/u224870/Projekte_Git/flatland/env-data/tests/test…"
+       "HBox(children=(Canvas(), VBox(children=(Text(value='../flatland/env-data/tests/test1.npy', description='Filena…"
       ]
      },
      "metadata": {},
@@ -363,25 +363,25 @@
     "# wid_box\n",
     "wid_main = HBox([wid_img, vbox_controls])\n",
     "wid_output.clear_output()\n",
-    "wid_main"
+    "wid_main\n"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 32,
+   "execution_count": 16,
    "metadata": {
-    "scrolled": true
+    "scrolled": false
    },
    "outputs": [
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "b4d521d96fc44ea6bf7cd9e4e299673b",
+       "model_id": "8c1dfa731139497f87c53109ad656351",
        "version_major": 2,
        "version_minor": 0
       },
       "text/plain": [
-       "Output(outputs=({'output_type': 'stream', 'text': \"Set Debug: True\\ndebug: {'type': 'click', 'shiftKey': False…"
+       "Output()"
       ]
      },
      "metadata": {},
@@ -444,21 +444,7 @@
    "cell_type": "code",
    "execution_count": 20,
    "metadata": {},
-   "outputs": [
-    {
-     "ename": "FileNotFoundError",
-     "evalue": "[Errno 2] No such file or directory: '../flatland/env-data/tests/test-editor.npy'",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[1;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
-      "\u001b[1;32m<ipython-input-20-a40691809d2c>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0moEnv\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrail\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msave_transition_map\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"../flatland/env-data/tests/test-editor.npy\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
-      "\u001b[1;32mc:\\users\\u224870\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\flatland_rl-0.1.1-py3.6.egg\\flatland\\core\\transition_map.py\u001b[0m in \u001b[0;36msave_transition_map\u001b[1;34m(self, filename)\u001b[0m\n\u001b[0;32m    259\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    260\u001b[0m         \"\"\"\n\u001b[1;32m--> 261\u001b[1;33m         \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msave\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgrid\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    262\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    263\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mload_transition_map\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfilename\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0moverride_gridsize\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
-      "\u001b[1;32mc:\\users\\u224870\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\numpy\\lib\\npyio.py\u001b[0m in \u001b[0;36msave\u001b[1;34m(file, arr, allow_pickle, fix_imports)\u001b[0m\n\u001b[0;32m    490\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mfile\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mendswith\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'.npy'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    491\u001b[0m             \u001b[0mfile\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfile\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;34m'.npy'\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 492\u001b[1;33m         \u001b[0mfid\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfile\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"wb\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    493\u001b[0m         \u001b[0mown_fid\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    494\u001b[0m     \u001b[1;32melif\u001b[0m \u001b[0mis_pathlib_path\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfile\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
-      "\u001b[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '../flatland/env-data/tests/test-editor.npy'"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "if False: \n",
     "    oEnv.rail.save_transition_map(\"../flatland/env-data/tests/test-editor.npy\")"
@@ -473,7 +459,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 21,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -489,7 +475,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 22,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -499,7 +485,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 23,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -508,13 +494,13 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 24,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "adf698700a634775bfe4da0909912b96",
+       "model_id": "5c4335d316d846b09568b5ee59522569",
        "version_major": 2,
        "version_minor": 0
       },
@@ -532,7 +518,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 25,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -541,7 +527,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 26,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -550,7 +536,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 27,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -559,7 +545,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 28,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -576,13 +562,13 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 29,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "e6bf851f84bd471f8f4a4771e9d9b668",
+       "model_id": "d1c47f504dd3461082779532dd404592",
        "version_major": 2,
        "version_minor": 0
       },
@@ -609,13 +595,13 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 30,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "4de1e7a8162e460f8b1ecc732d3c1e2e",
+       "model_id": "3f5b20902c6c4ea9b48d72d494fd5064",
        "version_major": 2,
        "version_minor": 0
       },
@@ -647,7 +633,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 31,
    "metadata": {},
    "outputs": [
     {
@@ -668,20 +654,414 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 32,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<flatland.core.transition_map.GridTransitionMap at 0x7fc6dd6c9e48>"
+      ]
+     },
+     "execution_count": 32,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "oEnv.rail"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 33,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "'0b1101111001111011'"
+      ]
+     },
+     "execution_count": 33,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "binDeadend = 0b0010000110000100\n",
+    "format(~binDeadend & 0xffff, \"#018b\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 34,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "True"
+      ]
+     },
+     "execution_count": 34,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "oEnv.rail.cell_neighbours_valid((2,5))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 35,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0"
+      ]
+     },
+     "execution_count": 35,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "oEnv.rail.grid[2,6] & binDeadend"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 36,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "''"
+      ]
+     },
+     "execution_count": 36,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "oTrans = oEnv.rail.grid[2,5]\n",
+    "oTrans\n",
+    "oEnv.rail.transitions.repr(oTrans, 1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 37,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "True"
+      ]
+     },
+     "execution_count": 37,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "oEnv.rail.transitions.is_valid(oTrans)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 38,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[-1,  0],\n",
+       "       [ 0,  1],\n",
+       "       [ 1,  0],\n",
+       "       [ 0, -1]])"
+      ]
+     },
+     "execution_count": 38,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "oEnv.rail.transitions.gDir2dRC"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 39,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0000000000000000\n",
+      "['0000', '0000', '0000', '0000']\n"
+     ]
+    }
+   ],
+   "source": [
+    "binTrans = oEnv.rail.get_transitions((2,2))\n",
+    "sBinTrans = format(binTrans, \"#018b\")[2:]\n",
+    "print(sBinTrans)\n",
+    "lsBinTrans = [ sBinTrans[i:i+4] for i in range(0,16, 4)]\n",
+    "print(lsBinTrans)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 40,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[0, 0, 0, 0],\n",
+       "       [0, 0, 0, 0],\n",
+       "       [0, 0, 0, 0],\n",
+       "       [0, 0, 0, 0]], dtype=uint8)"
+      ]
+     },
+     "execution_count": 40,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "lnBinTrans = array([ binTrans >> 8, binTrans & 0xff ], dtype=np.uint8)\n",
+    "g2binTrans = np.unpackbits(lnBinTrans).reshape(4,4)\n",
+    "g2binTrans"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 41,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[False False False False]\n",
+      "[False False False False]\n"
+     ]
+    }
+   ],
+   "source": [
+    "gDirIn = g2binTrans.any(axis=1)\n",
+    "gDirOut = g2binTrans.any(axis=0)\n",
+    "print(gDirIn)\n",
+    "print(gDirOut)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 42,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([], dtype=int64)"
+      ]
+     },
+     "execution_count": 42,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "giDirOut = np.argwhere(gDirOut)[:,0]\n",
+    "giDirOut"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 43,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "False"
+      ]
+     },
+     "execution_count": 43,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "any((0,0,0))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 44,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[-1,  0],\n",
+       "       [ 0,  1],\n",
+       "       [ 1,  0],\n",
+       "       [ 0, -1]])"
+      ]
+     },
+     "execution_count": 44,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "oEnv.rail.transitions.gDir2dRC"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 45,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([], shape=(0, 2), dtype=int64)"
+      ]
+     },
+     "execution_count": 45,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "oEnv.rail.transitions.gDir2dRC[giDirOut,:]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 46,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "(0, 0, 0, 0)\n"
+     ]
+    }
+   ],
+   "source": [
+    "t4TransOut = oEnv.rail.get_transitions((2,2,3))\n",
+    "print (t4TransOut)                                        \n",
+    "for iDir in np.argwhere(t4TransOut)[:,0]:\n",
+    "    print(iDir, oEnv.rail.transitions.gDir2dRC[iDir])\n",
+    "    "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 47,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0000000000000000\n"
+     ]
+    },
+    {
+     "data": {
+      "text/plain": [
+       "''"
+      ]
+     },
+     "execution_count": 47,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "lsRepr = []\n",
+    "sDirs = \"NESW\"\n",
+    "lsDirs = list(sDirs)\n",
+    "cell_transition = oTrans\n",
+    "sbinTrans = format(cell_transition, \"#018b\")[2:]\n",
+    "print(sbinTrans)\n",
+    "for iDirIn in range(0,4):\n",
+    "    sDirTrans = sbinTrans[iDirIn*4:iDirIn*4+4]\n",
+    "    if sDirTrans==\"0000\":\n",
+    "        continue\n",
+    "    sDirsOut = [\n",
+    "        lsDirs[iDirOut]\n",
+    "        for iDirOut in range(0,4) \n",
+    "        if sDirTrans[iDirOut]==\"1\"\n",
+    "        ]\n",
+    "    lsRepr.append(lsDirs[iDirIn] + \":\" + \"\".join(sDirsOut))\n",
+    "\n",
+    "\", \".join(lsRepr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 48,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "10 [1 0 1 0]\n"
+     ]
+    }
+   ],
+   "source": [
+    "s=\"1010\"\n",
+    "ints = int(s,2)\n",
+    "gs = array(ints, dtype=np.uint8)\n",
+    "print(gs, np.unpackbits(gs)[4:8])\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 49,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "'N:0000 E:0100 S:0000 W:0001'"
+      ]
+     },
+     "execution_count": 49,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
-    "\n"
+    "oEnv.rail.transitions.repr(1025)"
    ]
   }
  ],
  "metadata": {
   "hide_input": false,
   "kernelspec": {
-   "display_name": "Python 3",
+   "display_name": "ve367",
    "language": "python",
-   "name": "python3"
+   "name": "ve367"
   },
   "language_info": {
    "codemirror_mode": {
@@ -693,7 +1073,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.6.5"
+   "version": "3.6.7"
   },
   "latex_envs": {
    "LaTeX_envs_menu_present": true,
-- 
GitLab