Browse Source

Adding scripts

Andrej 3 years ago
parent
commit
1440d682a0

File diff suppressed because it is too large
+ 28 - 0
pythonScripts/DORAQA.ipynb


+ 277 - 0
pythonScripts/IPNMURetro.ipynb

@@ -0,0 +1,277 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/usr/lib/python3/dist-packages/urllib3/connection.py:391: SubjectAltNameWarning: Certificate for merlin.fmf.uni-lj.si has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/urllib3/urllib3/issues/497 for details.)\n",
+      "  warnings.warn(\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "User: andrej studen CSRF: 32c779fa1a1ab9e7e7faef77cecb497b\n"
+     ]
+    }
+   ],
+   "source": [
+    "import sys\n",
+    "import os\n",
+    "import SimpleITK\n",
+    "import numpy\n",
+    "import matplotlib.pyplot\n",
+    "sys.path.append(os.path.join(os.path.expanduser('~'),'software','src','nixSuite','wrapper'))\n",
+    "import nixWrapper\n",
+    "nixWrapper.loadLibrary('labkeyInterface')\n",
+    "import labkeyInterface\n",
+    "net=labkeyInterface.labkeyInterface()\n",
+    "fconfig=os.path.join(os.path.expanduser('~'),'.labkey','network.json')\n",
+    "net.init(fconfig)\n",
+    "net.getCSRF()\n",
+    "import labkeyFileBrowser\n",
+    "sys.path.append(os.getcwd())\n",
+    "import downloadPatient\n",
+    "fb=labkeyFileBrowser.labkeyFileBrowser(net)\n",
+    "project='iPNUMMretro/Study'\n",
+    "import labkeyDatabaseBrowser\n",
+    "db=labkeyDatabaseBrowser.labkeyDB(net)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/usr/lib/python3/dist-packages/urllib3/connection.py:391: SubjectAltNameWarning: Certificate for merlin.fmf.uni-lj.si has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/urllib3/urllib3/issues/497 for details.)\n",
+      "  warnings.warn(\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "User: andrej studen CSRF: 69a6cc70190d3c8f1f5857c5d603dbb9\n",
+      "User: andrej studen CSRF: df2ea4ef6c979a45f710a2f79d0530ce\n",
+      "User: andrej studen CSRF: 34ae204996301d140e3c051c07d8fcb3\n",
+      "User: andrej studen CSRF: a58f633a57c1201f1be7b8b95241ad42\n",
+      "User: andrej studen CSRF: 415d49070cc00e04efa3f00a102f80a4\n",
+      "User: andrej studen CSRF: a40c77345b4ea005d416f05a33faf153\n",
+      "User: andrej studen CSRF: 7ce68765272c66e98d4550d531d14ccf\n",
+      "User: andrej studen CSRF: dcc82d6bcfc559f35084fc034adac5c6\n",
+      "User: andrej studen CSRF: 72a8c55c9f8ab633ee980a6bc90dbdbe\n",
+      "User: andrej studen CSRF: 8d15b66a59bd1bdfbe3e19c51b1d77ab\n",
+      "User: andrej studen CSRF: a3cc53dd7b3b6cca89e0bc988bb50f1a\n",
+      "User: andrej studen CSRF: 2cc75dd343abfa17053946ebb027b680\n",
+      "User: andrej studen CSRF: 0041826593805b012ca2b2461405e6f7\n",
+      "User: andrej studen CSRF: ea7d309ba7f7c1c2f8218b1dab4bac73\n",
+      "User: andrej studen CSRF: 8dc5ad9fb8acb64cb90e42fc21e8d235\n",
+      "User: andrej studen CSRF: 5c4b724db156ba43664937eced1ba73e\n",
+      "User: andrej studen CSRF: da74dae2fd8b40d2d4e4d88c0e0d4b9e\n",
+      "User: andrej studen CSRF: b831a8f565b4e7afdb36eea0f632a4d5\n",
+      "User: andrej studen CSRF: 923531bf685977dfb6f8d1fe27fd65b6\n",
+      "User: andrej studen CSRF: 047c58be84bad8ec3c7279cbce67e5b2\n",
+      "User: andrej studen CSRF: a412199fa3e1b49dbfca587458da5f06\n",
+      "User: andrej studen CSRF: 6479fa39f99c9aa2939236843d2f9bfa\n",
+      "User: andrej studen CSRF: bc23c5bba318366b52f3cf5ecaad67d6\n",
+      "User: andrej studen CSRF: 8b74e9aefd277aa95fb62f57856a25d5\n",
+      "User: andrej studen CSRF: d982cabadaabca8fa1ad5a700128f3b0\n",
+      "User: andrej studen CSRF: 6b189061dec97a9560577dce926fcc60\n",
+      "User: andrej studen CSRF: 4fce7e99168086df29fd92394c629cdd\n",
+      "User: andrej studen CSRF: 760ce8a75f3ca17014e904972989dc80\n",
+      "User: andrej studen CSRF: f2c44dc6b5d6c2c9f824d5a3ea3ed258\n",
+      "User: andrej studen CSRF: d36d3b39831f017e38c7a3a4049b018d\n",
+      "User: andrej studen CSRF: ddea691409b7fc597ecdc1872abb796a\n",
+      "User: andrej studen CSRF: ccfb2e0e805dccc7cb0d6ebe338dfae6\n",
+      "User: andrej studen CSRF: 6cea935122e45cf6af08ae1796a51aa7\n",
+      "User: andrej studen CSRF: bab07a2005f906ebb6aea6a8ef768637\n",
+      "User: andrej studen CSRF: 9b8e0be6c2884230b8f7c66b2951cae1\n",
+      "User: andrej studen CSRF: 13fc502bc258182adfe993aa67c753f5\n",
+      "User: andrej studen CSRF: cfb8511b1639aa4af74beb879c7b0112\n",
+      "User: andrej studen CSRF: 6329f79452eedcc8d75074a1427d073e\n",
+      "User: andrej studen CSRF: 9b2cafa86752c9e1614cc0ec8331b6ce\n",
+      "User: andrej studen CSRF: bfdc7a857e16bc1497399937f783266b\n",
+      "User: andrej studen CSRF: cb1edcabf693c0cf742f42f3a01d9a34\n",
+      "User: andrej studen CSRF: 467d5494e0a0ead094e5f562287f8379\n",
+      "User: andrej studen CSRF: 9650d3b574b26bada541d4ab8b31b573\n",
+      "User: andrej studen CSRF: 1c886f16a9351bf516a54619cbed6ca6\n",
+      "User: andrej studen CSRF: 341be998fa427fcb2969c8e04d72d1b2\n",
+      "User: andrej studen CSRF: c8772e2b77d48ef9e9c7a24b2e8e5480\n",
+      "User: andrej studen CSRF: dc0ceca8848c13c826059ccaf837d41e\n",
+      "User: andrej studen CSRF: 70e6226e28a02cd03e944ff29c0d7173\n",
+      "User: andrej studen CSRF: 1e57d71ba1ed390dc9a8caa2da267869\n",
+      "User: andrej studen CSRF: 21a5e342233d2dbf97409d3a802024c9\n"
+     ]
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/usr/lib/python3/dist-packages/urllib3/connection.py:391: SubjectAltNameWarning: Certificate for merlin.fmf.uni-lj.si has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/urllib3/urllib3/issues/497 for details.)\n",
+      "  warnings.warn(\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "User: andrej studen CSRF: 3913d677d05b007c5a5dab0bea80fc8e\n",
+      "User: andrej studen CSRF: 1ca2c5013e7b2af6d79c1e770ff2ced0\n",
+      "User: andrej studen CSRF: 864241f376a680de523e625e36fcfdcb\n",
+      "User: andrej studen CSRF: 397f6b20897f8e8bcb29530fbe08edd5\n",
+      "User: andrej studen CSRF: 673243a4bc95c638f33dbd42880ffcd9\n",
+      "User: andrej studen CSRF: 5e555b3ea1898e8160acf702ce84a0b4\n",
+      "User: andrej studen CSRF: fe92ba55552183faa8ce501e0197e4dc\n",
+      "User: andrej studen CSRF: 5aefef49c3e413886bba7d0d33dc990b\n",
+      "User: andrej studen CSRF: d62078815e465785d6f28ce155bf5b21\n",
+      "User: andrej studen CSRF: b9b5349dd557dfd3b434569ca78e2ddb\n",
+      "User: andrej studen CSRF: 1d4edefb66c3ade35507f07435b899d0\n",
+      "User: andrej studen CSRF: 682a48a5f68dcbea7bc6b76c2cfc4c50\n",
+      "User: andrej studen CSRF: 2ee3b1d8db7b855a61adec664c5d5d7d\n",
+      "User: andrej studen CSRF: dcde305c5e1029852bb80d8d79784b65\n",
+      "User: andrej studen CSRF: 9ec61693577ea635cba08d9ecdd1126c\n",
+      "User: andrej studen CSRF: 6b221d62fbc8b98a3940391d8a793aad\n",
+      "User: andrej studen CSRF: 531335433e47813fb26815bec1f63555\n",
+      "User: andrej studen CSRF: e5384bd229cd2c1b442588c0e4964153\n",
+      "User: andrej studen CSRF: 2739ca9574bf710d24771e41d3861f58\n",
+      "User: andrej studen CSRF: 10fbc69621bad1b2349afc877ee5b61c\n",
+      "User: andrej studen CSRF: d4f0b26efbdcf3df2632974ce5d59d1e\n",
+      "User: andrej studen CSRF: 620fee6f7950d7c61eabbc69c4ea540b\n",
+      "User: andrej studen CSRF: 928ee08cedcf479ab3a31d15c47c2775\n",
+      "User: andrej studen CSRF: 7bc3ca323488d9d0a17ecf6db476302b\n",
+      "User: andrej studen CSRF: 49285fa264545ca2e2f482b6ca54c3c0\n",
+      "User: andrej studen CSRF: 7092e582105f95edcceb09c8f4516f89\n",
+      "User: andrej studen CSRF: b653fb7dc304032b601d5ae7e91b1379\n",
+      "User: andrej studen CSRF: 79a7ea3c5c4e3f588f9d9ed427acb8eb\n",
+      "User: andrej studen CSRF: b6864adb7a2dfc7c30bf82454cc0f025\n",
+      "User: andrej studen CSRF: 5d536680ebfeeb984ae63ca91ae6ccd1\n",
+      "User: andrej studen CSRF: 9c3706733b883020b28ce19a12a7759b\n",
+      "User: andrej studen CSRF: 7ac91d45f0896d15c7e9f0a40ec69133\n",
+      "User: andrej studen CSRF: d7678386072223afe2dd1d3638c5270f\n",
+      "User: andrej studen CSRF: 5f6fa03146ab93a8ddb7e05b57b25f46\n",
+      "User: andrej studen CSRF: f4fcda21486baff30fde4599704e8a8a\n",
+      "User: andrej studen CSRF: 6cc1f1970bb82360261b9c84f0dcc9ba\n",
+      "User: andrej studen CSRF: e0322945421f4ce5d979167be680e3c2\n",
+      "User: andrej studen CSRF: 485858317a4c890813fea2eb82f2e111\n",
+      "User: andrej studen CSRF: 77c66e66e0ec65f26c16bf8ac45a89d5\n",
+      "User: andrej studen CSRF: 17b5c93518fd30e5843de17e57ad70a8\n",
+      "User: andrej studen CSRF: 63cbfaf3db5c6d9aa9858f4fa497b017\n",
+      "User: andrej studen CSRF: c0fd39b1a257abda4553bc1cbf068282\n",
+      "User: andrej studen CSRF: 94601071b23d3bb9ddcbccd2c4edd7d8\n",
+      "User: andrej studen CSRF: ae12c6ccfcd48b077403c8610f36552f\n",
+      "User: andrej studen CSRF: 81c66a17dd60da82204c4eb550498dcf\n",
+      "User: andrej studen CSRF: 26b62c0bbde2947b71f63a36f8c4865d\n",
+      "User: andrej studen CSRF: 640049cbded232fb50a2f563858069dc\n",
+      "User: andrej studen CSRF: ab8eff7579da8ceea8399e0297c06397\n",
+      "User: andrej studen CSRF: ac97288cedd98dba2407e6942a14c6b4\n",
+      "User: andrej studen CSRF: dcbbb57025ce4ca560c630434963aebb\n"
+     ]
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/usr/lib/python3/dist-packages/urllib3/connection.py:391: SubjectAltNameWarning: Certificate for merlin.fmf.uni-lj.si has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/urllib3/urllib3/issues/497 for details.)\n",
+      "  warnings.warn(\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "User: andrej studen CSRF: d2306f6ff5a2e9cbdea66458d243ff7b\n",
+      "User: andrej studen CSRF: 51e9623cccce067303edba8f7c146523\n",
+      "User: andrej studen CSRF: d680cee55f76e874bc3054ca71e6bc8a\n",
+      "User: andrej studen CSRF: b22bb7d41c0889f5479e7445183a382d\n",
+      "User: andrej studen CSRF: bfaaca5dcfc75340cd2f52a8bf942512\n",
+      "User: andrej studen CSRF: 7a3626ea6f2f6e87d63df1c9f4dd9642\n",
+      "User: andrej studen CSRF: 0ef4a808c86b95f4b2f1b70677600c3c\n",
+      "User: andrej studen CSRF: 06a3d6bd96b4a6dc10f49b7346601851\n",
+      "User: andrej studen CSRF: bf7c249f7ed80644918e3c45afcffa13\n",
+      "User: andrej studen CSRF: 8b71f06362c69c86d907aeafec9cdc32\n",
+      "User: andrej studen CSRF: 57f8d0dd513af472618cd9467c8435e0\n",
+      "User: andrej studen CSRF: 45623b36c0e3503cac371fd0fe52b8c6\n",
+      "User: andrej studen CSRF: e557c5ffc72917d628d6b3f1fd5ed975\n",
+      "User: andrej studen CSRF: 56881eea158549254fd142e5d2381dd2\n",
+      "User: andrej studen CSRF: c82061f923fbcf8f015d78708ecb9e40\n",
+      "User: andrej studen CSRF: aa0ba68654476564558ab05d79f2d668\n",
+      "User: andrej studen CSRF: f748fa4e9a1e4439f04b08958cd20e47\n",
+      "User: andrej studen CSRF: 758fd7feaff615b1fed553366df1df17\n",
+      "User: andrej studen CSRF: 931b1620cba3ded0be959b34a684bf79\n",
+      "User: andrej studen CSRF: 7fb1b4748834988241473b67fd744580\n",
+      "User: andrej studen CSRF: 4dc9086e556866d23ed14466552ff0ad\n",
+      "User: andrej studen CSRF: 22250e430f2087a1536f46978c83c4cf\n",
+      "User: andrej studen CSRF: 5c26d5444120b5426dd6fd798eb8116b\n",
+      "User: andrej studen CSRF: a1408e511dc1ce6bc088712e68d62850\n",
+      "User: andrej studen CSRF: 2ac51545cdd29d4b03e05c186d1a2178\n",
+      "User: andrej studen CSRF: f533ff36eed804e68e2f079b321e2488\n",
+      "User: andrej studen CSRF: 31947d596b526f1c8785bef85e5c5e84\n",
+      "User: andrej studen CSRF: 1131387965cd094e49e236d09908c8a5\n",
+      "User: andrej studen CSRF: 867c0a253a2e5f404bdd2d4a45b34a02\n",
+      "User: andrej studen CSRF: ce0e07dbb05fa93ee309cfbd687297cd\n",
+      "User: andrej studen CSRF: ccf7a6eff5325ca6bb1d3dfcf5fab059\n",
+      "User: andrej studen CSRF: f81ede4fb5864e8eaed9ec646e2e2234\n",
+      "User: andrej studen CSRF: 8e6b1a7f25d86d99d3c1183447723c2c\n",
+      "User: andrej studen CSRF: 6be35e87d7b9e268d7baadf7973f77df\n",
+      "User: andrej studen CSRF: 8b98ecf7d7fc4137b0d0ea4347c3b20b\n",
+      "User: andrej studen CSRF: a40680c1acb0e5d5544e59b7d85ca2aa\n",
+      "User: andrej studen CSRF: bdf93309062161467e41d11357577af2\n",
+      "User: andrej studen CSRF: bf5312dd4a3ff96ed803840b48e11fe3\n",
+      "User: andrej studen CSRF: b1a85c6741c44c057b38335076d8fb0b\n",
+      "User: andrej studen CSRF: b2a0682b5533dbc41b38264010d818d0\n",
+      "User: andrej studen CSRF: e51a7e739ee01150caa771db4f8fc90c\n",
+      "User: andrej studen CSRF: d8b11ac286048bc2eebcb11e3f668873\n",
+      "User: andrej studen CSRF: 7aeadb6e5ae01bcf66b3e9d9609c0274\n",
+      "User: andrej studen CSRF: 1eb3123c3b287cd1e7432c87e0ca3897\n",
+      "User: andrej studen CSRF: 39117a6ced7a5629124e9679e552919d\n"
+     ]
+    }
+   ],
+   "source": [
+    "ds=db.selectRows(project,'study','Imaging1',[])\n",
+    "for r in ds['rows']:\n",
+    "    r['report']='[REPORT]'\n",
+    "    db.modifyRows('update',project,'study','Imaging1',[r])\n",
+    "    "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "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.8.5"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}

File diff suppressed because it is too large
+ 126 - 0
pythonScripts/analyze.ipynb


+ 711 - 0
pythonScripts/calculateK1.ipynb

@@ -0,0 +1,711 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/usr/lib/python3/dist-packages/urllib3/connection.py:391: SubjectAltNameWarning: Certificate for merlin.fmf.uni-lj.si has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/urllib3/urllib3/issues/497 for details.)\n",
+      "  warnings.warn(\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "User: andrej studen CSRF: add9f40e046ab0ca289b5a7b748dbc21\n"
+     ]
+    }
+   ],
+   "source": [
+    "import sys\n",
+    "import os\n",
+    "import SimpleITK\n",
+    "import numpy\n",
+    "import matplotlib.pyplot\n",
+    "sys.path.append(os.path.join(os.path.expanduser('~'),'software','src','nixSuite','wrapper'))\n",
+    "import nixWrapper\n",
+    "nixWrapper.loadLibrary('labkeyInterface')\n",
+    "import labkeyInterface\n",
+    "net=labkeyInterface.labkeyInterface()\n",
+    "fconfig=os.path.join(os.path.expanduser('~'),'.labkey','network.json')\n",
+    "net.init(fconfig)\n",
+    "net.getCSRF()\n",
+    "import labkeyFileBrowser\n",
+    "sys.path.append(os.getcwd())\n",
+    "import downloadPatient\n",
+    "fb=labkeyFileBrowser.labkeyFileBrowser(net)\n",
+    "project='dinamic_spect/Patients'\n",
+    "locDir=os.path.join(os.path.expanduser('~'),'temp','dynamicSPECT')\n",
+    "import labkeyDatabaseBrowser\n",
+    "db=labkeyDatabaseBrowser.labkeyDB(net)\n",
+    "ds=db.selectRows(project,'study','Imaging',[])\n",
+    "patients=[row['aliasID'] for row in ds['rows']]\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 158,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/usr/lib/python3/dist-packages/urllib3/connection.py:391: SubjectAltNameWarning: Certificate for merlin.fmf.uni-lj.si has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/urllib3/urllib3/issues/497 for details.)\n",
+      "  warnings.warn(\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[11ZMMIR/k1] Mean: 0.00720618199557066 Std: 0.0036485230084508657 95p: 0.01296193432062864\n",
+      "[11ZMMIR/v19] Mean: 387.70062255859375 Std: 163.9884796142578 95p: 714.3999999999999\n",
+      "[11ZMMIR] update 1.0\n",
+      "User: andrej studen CSRF: 34f21d444fbb638f910641b06f86cf05\n",
+      "[11ZMMIR/k1] Mean: 0.006666701287031174 Std: 0.0037704722490161657 95p: 0.011873540934175253\n",
+      "[11ZMMIR/v19] Mean: 315.26983642578125 Std: 130.4663543701172 95p: 547.25\n",
+      "[11ZMMIR] update 1.0\n",
+      "User: andrej studen CSRF: b50d4a8433454d60412a1a9c4d26d9b4\n",
+      "[11ZMMIR/k1] Mean: 0.007910138927400112 Std: 0.0027658012695610523 95p: 0.011403267458081246\n",
+      "[11ZMMIR/v19] Mean: 535.5839233398438 Std: 166.3309783935547 95p: 858.7999999999998\n",
+      "[11ZMMIR] update 1.0\n",
+      "User: andrej studen CSRF: 3d95092487ae3fb4fc9220e8954fa792\n",
+      "[11ZMMIR/k1] Mean: 0.005859805271029472 Std: 0.001840750570409 95p: 0.009024630952626466\n",
+      "[11ZMMIR/v19] Mean: 939.3551025390625 Std: 226.21987915039062 95p: 1357.6000000000001\n",
+      "[11ZMMIR] update 1.0\n",
+      "User: andrej studen CSRF: 3d338c053ae548373f55f2c1d92d4323\n",
+      "[11ZMMIR/k1] Mean: 0.005226673558354378 Std: 0.003999700769782066 95p: 0.011813110997900366\n",
+      "[11ZMMIR/v19] Mean: 481.3333435058594 Std: 173.3598175048828 95p: 730.25\n",
+      "[11ZMMIR] update 1.0\n",
+      "User: andrej studen CSRF: 678c3dc60959520cb52b3504e41a427c\n",
+      "[11ZMMIR/k1] Mean: 0.002250171732157469 Std: 0.001920441398397088 95p: 0.005604686238802968\n",
+      "[11ZMMIR/v19] Mean: 426.5422668457031 Std: 189.19802856445312 95p: 738.7999999999997\n",
+      "[11ZMMIR] update 1.0\n",
+      "User: andrej studen CSRF: 632822fed31dc07cd11b0c60fa211ce3\n",
+      "[11ZMMIR/k1] Mean: 0.004261023364961147 Std: 0.0026298481971025467 95p: 0.009540305472910404\n",
+      "[11ZMMIR/v19] Mean: 528.484130859375 Std: 181.09133911132812 95p: 904.5\n",
+      "[11ZMMIR] update 1.0\n",
+      "User: andrej studen CSRF: 39a768d55cf2ec8463935b3f64cdcb9f\n",
+      "[11ZMMIR/k1] Mean: 0.005299767479300499 Std: 0.001956281252205372 95p: 0.008592299744486807\n",
+      "[11ZMMIR/v19] Mean: 1052.584716796875 Std: 321.9884033203125 95p: 1645.25\n",
+      "[11ZMMIR] update 1.0\n",
+      "User: andrej studen CSRF: 64b291500523cb89411458f535f4e2fa\n",
+      "[11ZMMIR/k1] Mean: 0.0026273869443684816 Std: 0.0024854133371263742 95p: 0.00912907486781478\n",
+      "[11ZMMIR/v19] Mean: 439.389892578125 Std: 143.71644592285156 95p: 691.0\n",
+      "[11ZMMIR] update 1.0\n",
+      "User: andrej studen CSRF: 6ba70064e3151fba8186332314f14eeb\n",
+      "[11ZMOBR/k1] Mean: 0.0023128564935177565 Std: 0.000760790251661092 95p: 0.0033743367646820836\n",
+      "[11ZMOBR/v19] Mean: 445.15625 Std: 217.7557830810547 95p: 818.8499999999998\n",
+      "[11ZMOBR] update 2.0\n",
+      "User: andrej studen CSRF: c163025986af6902aab7eb515713f71f\n",
+      "[11ZMOBR/k1] Mean: 0.0018489592475816607 Std: 0.0011152473744004965 95p: 0.00310780283762142\n",
+      "[11ZMOBR/v19] Mean: 277.4821472167969 Std: 192.0950164794922 95p: 623.5999999999997\n",
+      "[11ZMOBR] update 2.0\n",
+      "User: andrej studen CSRF: 24cc72b1b497235dc0975519cf836771\n",
+      "[11ZMOBR/k1] Mean: 0.0019252330530434847 Std: 0.0007810565875843167 95p: 0.003217114962171763\n",
+      "[11ZMOBR/v19] Mean: 486.4375 Std: 142.24781799316406 95p: 721.45\n",
+      "[11ZMOBR] update 2.0\n",
+      "User: andrej studen CSRF: 7064f5f6a9a65a3eb2a4cba1663d8fd6\n",
+      "[11ZMOBR/k1] Mean: 0.0035839895717799664 Std: 0.001219879137352109 95p: 0.005486301262862979\n",
+      "[11ZMOBR/v19] Mean: 965.9107055664062 Std: 240.97535705566406 95p: 1438.9499999999998\n",
+      "[11ZMOBR] update 2.0\n",
+      "User: andrej studen CSRF: c70ff93d44132c41c2f556c8ced4b69c\n",
+      "[11ZMOBR/k1] Mean: 0.002272878773510456 Std: 0.0007779790903441608 95p: 0.003378836635965853\n",
+      "[11ZMOBR/v19] Mean: 405.6099853515625 Std: 214.1855926513672 95p: 735.5499999999994\n",
+      "[11ZMOBR] update 2.0\n",
+      "User: andrej studen CSRF: e9f42500a4397b1b8752d37fd95b611f\n",
+      "[11ZMOBR/k1] Mean: 0.0019631297327578068 Std: 0.001165828318335116 95p: 0.0038857981679029764\n",
+      "[11ZMOBR/v19] Mean: 334.46429443359375 Std: 262.4448547363281 95p: 788.0999999999999\n",
+      "[11ZMOBR] update 2.0\n",
+      "User: andrej studen CSRF: 5731181d5dec15b4b06ca824a64d141a\n",
+      "[11ZMOBR/k1] Mean: 0.00249752146191895 Std: 0.000271886819973588 95p: 0.003005396085791289\n",
+      "[11ZMOBR/v19] Mean: 376.4071350097656 Std: 143.81167602539062 95p: 615.7499999999998\n",
+      "[11ZMOBR] update 2.0\n",
+      "User: andrej studen CSRF: 2cdc9d76433befb60e15f2201cd50099\n",
+      "[11ZMOBR/k1] Mean: 0.0032833898440003395 Std: 0.0013557011261582375 95p: 0.005351347918622195\n",
+      "[11ZMOBR/v19] Mean: 793.221435546875 Std: 327.8578796386719 95p: 1356.9999999999995\n",
+      "[11ZMOBR] update 2.0\n",
+      "User: andrej studen CSRF: 4af3fedb0ee426560cbd2e5e39ed80b2\n",
+      "[11ZMOBR/k1] Mean: 0.0019209419842809439 Std: 0.0005165518959984183 95p: 0.0026495043421164155\n",
+      "[11ZMOBR/v19] Mean: 292.8082275390625 Std: 102.21591186523438 95p: 468.45\n",
+      "[11ZMOBR] update 2.0\n",
+      "User: andrej studen CSRF: 92dd997db22b49610b8e010c8c099cbc\n",
+      "User: andrej studen CSRF: 0c5b44665f9abde2f88f9543201d0f51\n",
+      "User: andrej studen CSRF: f926b7cba73e6cc39e138218312e5a60\n",
+      "User: andrej studen CSRF: 53dfec39f59f979eb289e9ee75bf0206\n",
+      "User: andrej studen CSRF: 46308eb8f307e3a22d835cab5f5f9de6\n",
+      "User: andrej studen CSRF: 26c4b10072fbbac6c98f3d09963c0503\n",
+      "User: andrej studen CSRF: 28b25694f873942b1e4cac96d04ad6fd\n",
+      "User: andrej studen CSRF: d6ecf34951f0f7d95fe02c4404578f92\n",
+      "User: andrej studen CSRF: ac5b3f53c58b1948a96af5d48c920b5c\n",
+      "User: andrej studen CSRF: cd04247d835c2cf2c03fdbdf762deedc\n",
+      "[3ZFMIR/k1] Mean: 0.002212933264672756 Std: 0.0016060388879850507 95p: 0.0054165058536455035\n",
+      "[3ZFMIR/v19] Mean: 350.3333435058594 Std: 106.16748046875 95p: 535.5\n",
+      "[3ZFMIR] update 1.0\n",
+      "User: andrej studen CSRF: 848ca1d1ea9cece7ef91b0ebc183ec79\n",
+      "[3ZFMIR/k1] Mean: 0.005037868395447731 Std: 0.0011770965065807104 95p: 0.0061338550178334115\n",
+      "[3ZFMIR/v19] Mean: 430.3522644042969 Std: 150.18133544921875 95p: 698.3\n",
+      "[3ZFMIR] update 1.0\n",
+      "User: andrej studen CSRF: 13bf08bdbce1c1bc20b2c583c0f96317\n",
+      "[3ZFMIR/k1] Mean: 0.00506553566083312 Std: 0.0006114609423093498 95p: 0.0059477988397702575\n",
+      "[3ZFMIR/v19] Mean: 365.7083435058594 Std: 116.14421081542969 95p: 557.0\n",
+      "[3ZFMIR] update 1.0\n",
+      "User: andrej studen CSRF: 6940926c1e0d97eafbae9bc416186319\n",
+      "[3ZFMIR/k1] Mean: 0.004201735369861126 Std: 0.0016548351850360632 95p: 0.005825439025647938\n",
+      "[3ZFMIR/v19] Mean: 514.2158813476562 Std: 114.94835662841797 95p: 697.5999999999999\n",
+      "[3ZFMIR] update 1.0\n",
+      "User: andrej studen CSRF: f02fd8f47ebfc38d481f7ac363ef2263\n",
+      "[3ZFMIR/k1] Mean: 0.004651859402656555 Std: 0.0015239689964801073 95p: 0.006294222944416106\n",
+      "[3ZFMIR/v19] Mean: 515.8499755859375 Std: 106.91153717041016 95p: 663.05\n",
+      "[3ZFMIR] update 1.0\n",
+      "User: andrej studen CSRF: d02addc06f1740da8f197bc918ff0664\n",
+      "[3ZFMIR/k1] Mean: 0.004666976630687714 Std: 0.0012843351578339934 95p: 0.006209135102108121\n",
+      "[3ZFMIR/v19] Mean: 489.37274169921875 Std: 196.66033935546875 95p: 770.95\n",
+      "[3ZFMIR] update 1.0\n",
+      "User: andrej studen CSRF: 31bca9212b51eaa38a2ef5cf23a561fa\n",
+      "[3ZFMIR/k1] Mean: 0.004731455352157354 Std: 0.0007768604555167258 95p: 0.005948487063869834\n",
+      "[3ZFMIR/v19] Mean: 406.5833435058594 Std: 186.58982849121094 95p: 693.0\n",
+      "[3ZFMIR] update 1.0\n",
+      "User: andrej studen CSRF: 09e7abad2293be10a4f58e9c1c0d98a6\n",
+      "[3ZFMIR/k1] Mean: 0.004447886720299721 Std: 0.0014097490347921848 95p: 0.006120063085108995\n",
+      "[3ZFMIR/v19] Mean: 462.345458984375 Std: 163.61782836914062 95p: 722.55\n",
+      "[3ZFMIR] update 1.0\n",
+      "User: andrej studen CSRF: 3b11007c8731be0077782d3dce91ce78\n",
+      "[3ZFMIR/k1] Mean: 0.0036312707234174013 Std: 0.001367876655422151 95p: 0.005885321274399757\n",
+      "[3ZFMIR/v19] Mean: 304.637939453125 Std: 133.36041259765625 95p: 547.45\n",
+      "[3ZFMIR] update 1.0\n",
+      "User: andrej studen CSRF: 90f366ffde6666537537d01b07429cc2\n",
+      "[3ZFOBR/k1] Mean: 0.004988910164684057 Std: 0.00185226125176996 95p: 0.008759090909734368\n",
+      "[3ZFOBR/v19] Mean: 252.8020782470703 Std: 76.33173370361328 95p: 393.0\n",
+      "[3ZFOBR] update 2.0\n",
+      "User: andrej studen CSRF: ad56f7849832c7254e65c1639ac08c4b\n",
+      "[3ZFOBR/k1] Mean: 0.010396342724561691 Std: 0.0029989597387611866 95p: 0.014556002430617807\n",
+      "[3ZFOBR/v19] Mean: 296.4772644042969 Std: 111.46971893310547 95p: 511.89999999999975\n",
+      "[3ZFOBR] update 2.0\n",
+      "User: andrej studen CSRF: 9d5dd680cdf8a230cf274a87b4312434\n",
+      "[3ZFOBR/k1] Mean: 0.009300784207880497 Std: 0.0035260370932519436 95p: 0.014611367136240005\n",
+      "[3ZFOBR/v19] Mean: 349.6354064941406 Std: 107.44244384765625 95p: 541.5\n",
+      "[3ZFOBR] update 2.0\n",
+      "User: andrej studen CSRF: da490668444f294f507105aaa9ff6b80\n",
+      "[3ZFOBR/k1] Mean: 0.005124511197209358 Std: 0.0016352770617231727 95p: 0.008176779793575404\n",
+      "[3ZFOBR/v19] Mean: 405.1363525390625 Std: 116.12445831298828 95p: 601.0\n",
+      "[3ZFOBR] update 2.0\n",
+      "User: andrej studen CSRF: 3e6341c04f1689cf6de889f7ddc2e061\n",
+      "[3ZFOBR/k1] Mean: 0.01098998636007309 Std: 0.0033037138637155294 95p: 0.015580194536596537\n",
+      "[3ZFOBR/v19] Mean: 441.6145935058594 Std: 114.41029357910156 95p: 633.5\n",
+      "[3ZFOBR] update 2.0\n",
+      "User: andrej studen CSRF: 4cc313ef1c473f9219b7172f59eb261f\n",
+      "[3ZFOBR/k1] Mean: 0.014278487302362919 Std: 0.0027692948933690786 95p: 0.01901457868516445\n",
+      "[3ZFOBR/v19] Mean: 411.5113525390625 Std: 182.52801513671875 95p: 687.3\n",
+      "[3ZFOBR] update 2.0\n",
+      "User: andrej studen CSRF: 7ddfa09a11ab10207a29a2b1afd178ad\n",
+      "[3ZFOBR/k1] Mean: 0.012153062969446182 Std: 0.003253385191783309 95p: 0.016759312711656094\n",
+      "[3ZFOBR/v19] Mean: 524.3333129882812 Std: 129.3092803955078 95p: 710.5\n",
+      "[3ZFOBR] update 2.0\n",
+      "User: andrej studen CSRF: 6d47d18cc622921410c76a9ae3b39ed2\n",
+      "[3ZFOBR/k1] Mean: 0.007329151034355164 Std: 0.0019926244858652353 95p: 0.010660354467108843\n",
+      "[3ZFOBR/v19] Mean: 566.5454711914062 Std: 111.19361114501953 95p: 732.0999999999999\n",
+      "[3ZFOBR] update 2.0\n",
+      "User: andrej studen CSRF: f90ef8e7b7465aa29e1cfb34414f0edd\n",
+      "[3ZFOBR/k1] Mean: 0.011952197179198265 Std: 0.004568153060972691 95p: 0.0183794854208827\n",
+      "[3ZFOBR/v19] Mean: 458.3017272949219 Std: 125.9293212890625 95p: 641.8\n",
+      "[3ZFOBR] update 2.0\n",
+      "User: andrej studen CSRF: 9fdd0de91fca9ec94e852cd4b53d32c0\n",
+      "User: andrej studen CSRF: b0f0856bcb213f9da5292e067e10dc6d\n"
+     ]
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/usr/lib/python3/dist-packages/urllib3/connection.py:391: SubjectAltNameWarning: Certificate for merlin.fmf.uni-lj.si has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/urllib3/urllib3/issues/497 for details.)\n",
+      "  warnings.warn(\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "User: andrej studen CSRF: f204f44d927016a3e770557e2acd4081\n",
+      "User: andrej studen CSRF: 344c0ef57177e6339047ca523ce59fa5\n",
+      "User: andrej studen CSRF: dc3893298939d21c71bd9f416cdfa460\n",
+      "User: andrej studen CSRF: 15be13fe91ef06f6f13cb8a3e1354aeb\n",
+      "User: andrej studen CSRF: 7a007e4f28cf8e515463446745b605e7\n",
+      "User: andrej studen CSRF: 59674dacb4a632cff715bcb016531f3a\n",
+      "User: andrej studen CSRF: ee03fc9af1958a56e87bd84eeb40ff6b\n",
+      "User: andrej studen CSRF: a3eac727d8f0043d9d65e354228613b5\n",
+      "[7TMMIR/k1] Mean: 0.00500486558303237 Std: 0.0033064044546335936 95p: 0.010834079468622804\n",
+      "[7TMMIR/v19] Mean: 245.82142639160156 Std: 68.75606536865234 95p: 379.89999999999975\n",
+      "[7TMMIR] update 1.0\n",
+      "User: andrej studen CSRF: 6ab27a04c6e31367381470ff3a8aef6c\n",
+      "[7TMMIR/k1] Mean: 0.004715386778116226 Std: 0.002547271316871047 95p: 0.008713980996981263\n",
+      "[7TMMIR/v19] Mean: 246.1999969482422 Std: 110.5361328125 95p: 424.74999999999994\n",
+      "[7TMMIR] update 1.0\n",
+      "User: andrej studen CSRF: f49728014801fd0697d43b46a5cfd89f\n",
+      "[7TMMIR/k1] Mean: 0.007488241884857416 Std: 0.0016204285202547908 95p: 0.011141246184706688\n",
+      "[7TMMIR/v19] Mean: 257.92498779296875 Std: 55.837440490722656 95p: 360.2\n",
+      "[7TMMIR] update 1.0\n",
+      "User: andrej studen CSRF: e46cbfb443f12c396889b898c7d7b0ff\n",
+      "[7TMMIR/k1] Mean: 0.008209818042814732 Std: 0.0017227012431249022 95p: 0.010747055476531386\n",
+      "[7TMMIR/v19] Mean: 347.6875 Std: 68.48751831054688 95p: 459.05\n",
+      "[7TMMIR] update 1.0\n",
+      "User: andrej studen CSRF: 03684cc893a38f689ab506d244dbc23f\n",
+      "[7TMMIR/k1] Mean: 0.004181945230811834 Std: 0.0026776581071317196 95p: 0.008684781612828372\n",
+      "[7TMMIR/v19] Mean: 257.0857238769531 Std: 105.51807403564453 95p: 449.1\n",
+      "[7TMMIR] update 1.0\n",
+      "User: andrej studen CSRF: 117d3f644640cd731651a175ace272b5\n",
+      "[7TMMIR/k1] Mean: 0.00621101213619113 Std: 0.0027519140858203173 95p: 0.009475201088935136\n",
+      "[7TMMIR/v19] Mean: 291.8800048828125 Std: 121.25372314453125 95p: 484.29999999999995\n",
+      "[7TMMIR] update 1.0\n",
+      "User: andrej studen CSRF: d8687423ab143d036ae89e39f94b4ec7\n",
+      "[7TMMIR/k1] Mean: 0.007559926714748144 Std: 0.0021765129640698433 95p: 0.010731557430699467\n",
+      "[7TMMIR/v19] Mean: 355.3999938964844 Std: 95.403564453125 95p: 502.3\n",
+      "[7TMMIR] update 1.0\n",
+      "User: andrej studen CSRF: 1e52f47cec9efb3b8bb80bdf9cc7efc8\n",
+      "[7TMMIR/k1] Mean: 0.007275564596056938 Std: 0.0026504695415496826 95p: 0.011011916305869816\n",
+      "[7TMMIR/v19] Mean: 309.80999755859375 Std: 79.04336547851562 95p: 442.34999999999997\n",
+      "[7TMMIR] update 1.0\n",
+      "User: andrej studen CSRF: 795e1a660da377e5f3b5547da3da7728\n",
+      "[7TMMIR/k1] Mean: 0.0035837022587656975 Std: 0.0026768844109028578 95p: 0.009043328091502184\n",
+      "[7TMMIR/v19] Mean: 196.5157012939453 Std: 77.52232360839844 95p: 331.79999999999995\n",
+      "[7TMMIR] update 1.0\n",
+      "User: andrej studen CSRF: a9ebbee2714bfe72975875b31d5cf17d\n",
+      "[7TMOBR/k1] Mean: 0.009953362867236137 Std: 0.0059830727986991405 95p: 0.02133759045973419\n",
+      "[7TMOBR/v19] Mean: 243.51785278320312 Std: 62.874305725097656 95p: 376.39999999999986\n",
+      "[7TMOBR] update 2.0\n",
+      "User: andrej studen CSRF: ab8524c9c64084b98ef898c14e0de4d0\n",
+      "[7TMOBR/k1] Mean: 0.009775479324162006 Std: 0.007331392262130976 95p: 0.0245199971832335\n",
+      "[7TMOBR/v19] Mean: 215.41250610351562 Std: 92.3984146118164 95p: 342.25\n",
+      "[7TMOBR] update 2.0\n",
+      "User: andrej studen CSRF: df10dbe70501e04d97c685353bd155c7\n",
+      "[7TMOBR/k1] Mean: 0.016195327043533325 Std: 0.007306328974664211 95p: 0.030238793883472673\n",
+      "[7TMOBR/v19] Mean: 243.66250610351562 Std: 67.41140747070312 95p: 372.69999999999993\n",
+      "[7TMOBR] update 2.0\n",
+      "User: andrej studen CSRF: 002f2ab69ce53fd3aad9b9e10150ad17\n",
+      "[7TMOBR/k1] Mean: 0.012660333886742592 Std: 0.0063895126804709435 95p: 0.023961293417960404\n",
+      "[7TMOBR/v19] Mean: 384.7749938964844 Std: 57.06596374511719 95p: 484.1\n",
+      "[7TMOBR] update 2.0\n",
+      "User: andrej studen CSRF: eb7c83ff5c0bb348c07635013c6f56a2\n",
+      "[7TMOBR/k1] Mean: 0.017754003405570984 Std: 0.009553336538374424 95p: 0.03578757680952548\n",
+      "[7TMOBR/v19] Mean: 289.72857666015625 Std: 76.16522216796875 95p: 398.15\n",
+      "[7TMOBR] update 2.0\n",
+      "User: andrej studen CSRF: 899f534592ebcc3958fc10a6852c4e50\n",
+      "[7TMOBR/k1] Mean: 0.012068066745996475 Std: 0.006320321466773748 95p: 0.024446091894060367\n",
+      "[7TMOBR/v19] Mean: 356.1099853515625 Std: 104.58354949951172 95p: 480.05\n",
+      "[7TMOBR] update 2.0\n",
+      "User: andrej studen CSRF: 575f42914fd4db29e07f130ab798976f\n",
+      "[7TMOBR/k1] Mean: 0.009660250507295132 Std: 0.006107653491199017 95p: 0.02438886174932122\n",
+      "[7TMOBR/v19] Mean: 249.32000732421875 Std: 96.50749969482422 95p: 438.35\n",
+      "[7TMOBR] update 2.0\n",
+      "User: andrej studen CSRF: a7334020f667c1439cec1637f4f659a8\n",
+      "[7TMOBR/k1] Mean: 0.013240121304988861 Std: 0.006882802117615938 95p: 0.025718457065522667\n",
+      "[7TMOBR/v19] Mean: 305.1099853515625 Std: 64.46097564697266 95p: 389.8999999999999\n",
+      "[7TMOBR] update 2.0\n",
+      "User: andrej studen CSRF: 57c189ccbe6bc7290cc573c007c98132\n",
+      "[7TMOBR/k1] Mean: 0.008397211320698261 Std: 0.0054412768222391605 95p: 0.020075505971908558\n",
+      "[7TMOBR/v19] Mean: 250.94618225097656 Std: 95.65753936767578 95p: 408.79999999999995\n",
+      "[7TMOBR] update 2.0\n",
+      "User: andrej studen CSRF: d4ae17f46e0a47a038d6744596a7c3f9\n",
+      "User: andrej studen CSRF: d63f0fe0cb6bfcd5081949efe265cc31\n",
+      "User: andrej studen CSRF: 25c99606f501dbaef130bb07a512e546\n",
+      "User: andrej studen CSRF: e975b916879e805a6fd0288e8b454c9e\n",
+      "User: andrej studen CSRF: 88539b9604090aeaab909b6745991965\n",
+      "User: andrej studen CSRF: f2756ee2534a6f65077e6623c7042e0c\n",
+      "User: andrej studen CSRF: 2562456abec50e31904032de5d2870db\n",
+      "User: andrej studen CSRF: 65671cf4233d63a864b99948cc43d6a2\n",
+      "User: andrej studen CSRF: 1d53836f7dd9313742adbe97bc3528a8\n",
+      "User: andrej studen CSRF: e627c002b79b9f979a38f5424a55fa82\n",
+      "[10KFMIR/k1] Mean: 0.004833234008401632 Std: 0.0025613235775381327 95p: 0.008807112928479908\n",
+      "[10KFMIR/v19] Mean: 385.01251220703125 Std: 134.7165069580078 95p: 622.8999999999999\n",
+      "[10KFMIR] update 1.0\n",
+      "User: andrej studen CSRF: edd32e8fb063a3bcc0b96120e282d97c\n",
+      "[10KFMIR/k1] Mean: 0.005803726147860289 Std: 0.002217893721535802 95p: 0.009990932373329993\n",
+      "[10KFMIR/v19] Mean: 473.1071472167969 Std: 139.22447204589844 95p: 711.65\n",
+      "[10KFMIR] update 1.0\n",
+      "User: andrej studen CSRF: 0353314a259ce93138448736ecd36f2e\n",
+      "[10KFMIR/k1] Mean: 0.005906689912080765 Std: 0.0017153488006442785 95p: 0.008903473522514102\n",
+      "[10KFMIR/v19] Mean: 365.76251220703125 Std: 96.84901428222656 95p: 539.05\n",
+      "[10KFMIR] update 1.0\n",
+      "User: andrej studen CSRF: f8b9e25408883dd3a41934ad997dcd3e\n",
+      "[10KFMIR/k1] Mean: 0.005187327042222023 Std: 0.0014335013693198562 95p: 0.008351487107574938\n",
+      "[10KFMIR/v19] Mean: 518.797607421875 Std: 237.78712463378906 95p: 941.8999999999999\n",
+      "[10KFMIR] update 1.0\n",
+      "User: andrej studen CSRF: a4862f70e088385e04f62146d3ba7d28\n",
+      "[10KFMIR/k1] Mean: 0.005823719315230846 Std: 0.0017695599235594273 95p: 0.00845886655151844\n",
+      "[10KFMIR/v19] Mean: 699.0800170898438 Std: 121.535888671875 95p: 921.1500000000001\n",
+      "[10KFMIR] update 1.0\n",
+      "User: andrej studen CSRF: 5c3687d66afcd4ac4f6f518472089984\n",
+      "[10KFMIR/k1] Mean: 0.0049003781750798225 Std: 0.0011328465770930052 95p: 0.0066717399284243585\n",
+      "[10KFMIR/v19] Mean: 626.2857055664062 Std: 121.10685729980469 95p: 797.4\n",
+      "[10KFMIR] update 1.0\n",
+      "User: andrej studen CSRF: 7083820eab450c070dede0a33f1a2bcf\n",
+      "[10KFMIR/k1] Mean: 0.004808295983821154 Std: 0.001473126234486699 95p: 0.007433472829870877\n",
+      "[10KFMIR/v19] Mean: 491.29998779296875 Std: 96.16959381103516 95p: 639.0\n",
+      "[10KFMIR] update 1.0\n",
+      "User: andrej studen CSRF: 82bf812206a5a1dfe447bcb1ea21423d\n",
+      "[10KFMIR/k1] Mean: 0.004921711981296539 Std: 0.0013471057172864676 95p: 0.007757787778973579\n",
+      "[10KFMIR/v19] Mean: 747.2952270507812 Std: 269.0563049316406 95p: 1257.8\n",
+      "[10KFMIR] update 1.0\n",
+      "User: andrej studen CSRF: 937a174fdf9a54054c9b3850529588f7\n",
+      "[10KFMIR/k1] Mean: 0.004316528327763081 Std: 0.0012722169049084187 95p: 0.006720366165973246\n",
+      "[10KFMIR/v19] Mean: 420.1383972167969 Std: 134.77989196777344 95p: 632.7\n",
+      "[10KFMIR] update 1.0\n",
+      "User: andrej studen CSRF: 7644fbfa95eb4591b38976d7a7590b84\n",
+      "[10KFOBR/k1] Mean: 0.006097055040299892 Std: 0.006064089015126228 95p: 0.016603084281086918\n",
+      "[10KFOBR/v19] Mean: 109.90625 Std: 107.80803680419922 95p: 294.04999999999967\n",
+      "[10KFOBR] update 2.0\n",
+      "User: andrej studen CSRF: e7319e272eb23db7b106f0dc78adebad\n",
+      "[10KFOBR/k1] Mean: 0.00019458473252598196 Std: 0.0 95p: 0.00019458473252598196\n",
+      "[10KFOBR/v19] Mean: 0.0 Std: 0.0 95p: 0.0\n",
+      "[10KFOBR] update 2.0\n",
+      "User: andrej studen CSRF: e5239b476517e185ca20d0263d7cc27f\n",
+      "[10KFOBR/k1] Mean: 0.007701846305280924 Std: 0.0057196542620658875 95p: 0.013773311814293265\n",
+      "[10KFOBR/v19] Mean: 103.21428680419922 Std: 80.7112808227539 95p: 209.45\n",
+      "[10KFOBR] update 2.0\n"
+     ]
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/usr/lib/python3/dist-packages/urllib3/connection.py:391: SubjectAltNameWarning: Certificate for merlin.fmf.uni-lj.si has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/urllib3/urllib3/issues/497 for details.)\n",
+      "  warnings.warn(\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "User: andrej studen CSRF: f4529c01370b29f56ae558f20bc7d51a\n",
+      "[10KFOBR/k1] Mean: 0.014199487864971161 Std: 0.004906156565994024 95p: 0.020201261434704063\n",
+      "[10KFOBR/v19] Mean: 372.875 Std: 186.76019287109375 95p: 718.9499999999998\n",
+      "[10KFOBR] update 2.0\n",
+      "User: andrej studen CSRF: c1f530219376bd7cad2306c4b4562aad\n",
+      "[10KFOBR/k1] Mean: 0.007853645831346512 Std: 0.007349438965320587 95p: 0.019375531282275916\n",
+      "[10KFOBR/v19] Mean: 122.58000183105469 Std: 132.63783264160156 95p: 378.39999999999986\n",
+      "[10KFOBR] update 2.0\n",
+      "User: andrej studen CSRF: 77254da6b1dd570ef6f2398c20dd8e68\n",
+      "[10KFOBR/k1] Mean: 0.00019458473252598196 Std: 0.0 95p: 0.00019458473252598196\n",
+      "[10KFOBR/v19] Mean: 0.0 Std: 0.0 95p: 0.0\n",
+      "[10KFOBR] update 2.0\n",
+      "User: andrej studen CSRF: 58713789a77433a2673cdb16aeccde09\n",
+      "[10KFOBR/k1] Mean: 0.008349645882844925 Std: 0.0063349963165819645 95p: 0.01587967304512858\n",
+      "[10KFOBR/v19] Mean: 152.85000610351562 Std: 129.94740295410156 95p: 355.29999999999984\n",
+      "[10KFOBR] update 2.0\n",
+      "User: andrej studen CSRF: f368e846d7e5763d7ccfa11e67018448\n",
+      "[10KFOBR/k1] Mean: 0.016422908753156662 Std: 0.0031688050366938114 95p: 0.020642047282308337\n",
+      "[10KFOBR/v19] Mean: 345.30712890625 Std: 221.47959899902344 95p: 801.1\n",
+      "[10KFOBR] update 2.0\n",
+      "User: andrej studen CSRF: 68156bcbd9a2a98efb57cf4e6ffa605e\n",
+      "[10KFOBR/k1] Mean: 0.006614921614527702 Std: 0.005682092159986496 95p: 0.016168999578803776\n",
+      "[10KFOBR/v19] Mean: 100.24314880371094 Std: 89.72071838378906 95p: 234.45\n",
+      "[10KFOBR] update 2.0\n",
+      "User: andrej studen CSRF: dfce4dd6b533389b9a2af1e38db35b00\n",
+      "User: andrej studen CSRF: 306b2c0622c77b8d4221d49f6703febb\n",
+      "User: andrej studen CSRF: 9b187fe44c76acad798a43a1756d772f\n",
+      "User: andrej studen CSRF: 3a53f44d10386d11fc059708529640ed\n",
+      "User: andrej studen CSRF: 83f9c3d5c4edc6b56b01f8006cc81e6c\n",
+      "User: andrej studen CSRF: 2a3851395ff73b59c1d118398cd348c1\n",
+      "User: andrej studen CSRF: 834844de6d601eb35526b5042cee2a42\n",
+      "User: andrej studen CSRF: 2b192bdf0339ad715c3341efc542bd17\n",
+      "User: andrej studen CSRF: 286703ab0e205961649711b65f8cbe86\n",
+      "User: andrej studen CSRF: 4fbd6d227e6f8896e1839a65d656065a\n",
+      "[2SBMIR/k1] Mean: 0.002232855884358287 Std: 0.0018453033408150077 95p: 0.005079739028587936\n",
+      "[2SBMIR/v19] Mean: 286.4553527832031 Std: 110.65252685546875 95p: 532.25\n",
+      "[2SBMIR] update 1.0\n",
+      "User: andrej studen CSRF: 3fdd260f85f645752a77d8af78883d15\n",
+      "[2SBMIR/k1] Mean: 0.0020221376325935125 Std: 0.0017931248294189572 95p: 0.0051548690069466805\n",
+      "[2SBMIR/v19] Mean: 193.203125 Std: 125.49442291259766 95p: 360.3499999999999\n",
+      "[2SBMIR] update 1.0\n",
+      "User: andrej studen CSRF: 1cb7934c46443562b97bcf1cdaaaa607\n",
+      "[2SBMIR/k1] Mean: 0.004690914414823055 Std: 0.00033185220672748983 95p: 0.00532999327406287\n",
+      "[2SBMIR/v19] Mean: 316.859375 Std: 84.16832733154297 95p: 435.19999999999993\n",
+      "[2SBMIR] update 1.0\n",
+      "User: andrej studen CSRF: 43de9985b81a2359a6fb0f962873db93\n",
+      "[2SBMIR/k1] Mean: 0.004893830046057701 Std: 0.0002555682440288365 95p: 0.005346848326735198\n",
+      "[2SBMIR/v19] Mean: 486.65625 Std: 100.47810363769531 95p: 622.55\n",
+      "[2SBMIR] update 1.0\n",
+      "User: andrej studen CSRF: d7874371b1348312924e598310b4410e\n",
+      "[2SBMIR/k1] Mean: 0.0037079155445098877 Std: 0.0014050090685486794 95p: 0.005201616790145635\n",
+      "[2SBMIR/v19] Mean: 405.3660583496094 Std: 101.68561553955078 95p: 580.1499999999999\n",
+      "[2SBMIR] update 1.0\n",
+      "User: andrej studen CSRF: 3049de4ee1700769457a1ccf3e22eeb7\n",
+      "[2SBMIR/k1] Mean: 0.003611000720411539 Std: 0.0021026821341365576 95p: 0.005267245857976377\n",
+      "[2SBMIR/v19] Mean: 307.75 Std: 204.66305541992188 95p: 572.8999999999999\n",
+      "[2SBMIR] update 1.0\n",
+      "User: andrej studen CSRF: 0a1d7983aa1f66769df44a0da114e9ec\n",
+      "[2SBMIR/k1] Mean: 0.0042481571435928345 Std: 0.0007958894711919129 95p: 0.005198659701272845\n",
+      "[2SBMIR/v19] Mean: 289.234375 Std: 84.09810638427734 95p: 424.0\n",
+      "[2SBMIR] update 1.0\n",
+      "User: andrej studen CSRF: de91fe10250a750a34d4e2d7f33a2dae\n",
+      "[2SBMIR/k1] Mean: 0.005116256419569254 Std: 0.0005482063861563802 95p: 0.005935711809433995\n",
+      "[2SBMIR/v19] Mean: 601.734375 Std: 122.2032470703125 95p: 790.5999999999999\n",
+      "[2SBMIR] update 1.0\n",
+      "User: andrej studen CSRF: e16941dce0735ed0e60a6f4197c0e3c8\n",
+      "[2SBMIR/k1] Mean: 0.004046430811285973 Std: 0.001192097901366651 95p: 0.004947896464727819\n",
+      "[2SBMIR/v19] Mean: 338.4744873046875 Std: 112.70832824707031 95p: 539.0\n",
+      "[2SBMIR] update 1.0\n",
+      "User: andrej studen CSRF: 3a17746a53dda4b878d5bef8216aaa2b\n",
+      "[2SMobr/k1] Mean: 0.006832127459347248 Std: 0.0033053033985197544 95p: 0.012770502083003519\n",
+      "[2SMobr/v19] Mean: 359.70001220703125 Std: 79.50399780273438 95p: 510.5\n",
+      "[2SMobr] update 2.0\n",
+      "User: andrej studen CSRF: 035f313bc2a9d13ac7fecb86f6ce62fd\n",
+      "[2SMobr/k1] Mean: 0.01435607299208641 Std: 0.003982943017035723 95p: 0.020654272288084027\n",
+      "[2SMobr/v19] Mean: 394.546875 Std: 94.29887390136719 95p: 538.1999999999999\n",
+      "[2SMobr] update 2.0\n",
+      "User: andrej studen CSRF: 0d4560d26ddb300e40e8474857476604\n",
+      "[2SMobr/k1] Mean: 0.010709431953728199 Std: 0.0022403262555599213 95p: 0.015164011297747493\n",
+      "[2SMobr/v19] Mean: 271.67498779296875 Std: 87.41120910644531 95p: 452.24999999999994\n",
+      "[2SMobr] update 2.0\n",
+      "User: andrej studen CSRF: abc908ee52ba9b826e457693bfe1a286\n",
+      "[2SMobr/k1] Mean: 0.014712382107973099 Std: 0.005566258914768696 95p: 0.02420731196179986\n",
+      "[2SMobr/v19] Mean: 585.25 Std: 138.7465057373047 95p: 809.05\n",
+      "[2SMobr] update 2.0\n",
+      "User: andrej studen CSRF: 130845a368a676bcb658defeda598556\n",
+      "[2SMobr/k1] Mean: 0.012900246307253838 Std: 0.003693539882078767 95p: 0.01936350967735052\n",
+      "[2SMobr/v19] Mean: 449.9624938964844 Std: 119.37236785888672 95p: 619.8499999999999\n",
+      "[2SMobr] update 2.0\n",
+      "User: andrej studen CSRF: 3d290e8c7686a10cb431d467f4c260c1\n",
+      "[2SMobr/k1] Mean: 0.01450925599783659 Std: 0.004160871263593435 95p: 0.020399284735321998\n",
+      "[2SMobr/v19] Mean: 377.046875 Std: 95.82461547851562 95p: 500.70000000000005\n",
+      "[2SMobr] update 2.0\n",
+      "User: andrej studen CSRF: 57e23719c4c69841eef4600da675279a\n",
+      "[2SMobr/k1] Mean: 0.010953846387565136 Std: 0.00428063003346324 95p: 0.017709297221153976\n",
+      "[2SMobr/v19] Mean: 285.36248779296875 Std: 111.04888916015625 95p: 507.54999999999995\n",
+      "[2SMobr] update 2.0\n",
+      "User: andrej studen CSRF: 0b55c6410e4f4b60c426179fcb3044b9\n",
+      "[2SMobr/k1] Mean: 0.015457792207598686 Std: 0.005518380552530289 95p: 0.0233265976421535\n",
+      "[2SMobr/v19] Mean: 536.90625 Std: 134.3664093017578 95p: 711.4\n",
+      "[2SMobr] update 2.0\n",
+      "User: andrej studen CSRF: b1bcdac850dc5a53b4b370c688ebc792\n",
+      "[2SMobr/k1] Mean: 0.009823665022850037 Std: 0.004335027188062668 95p: 0.016884684376418588\n",
+      "[2SMobr/v19] Mean: 247.67369079589844 Std: 115.16130065917969 95p: 448.8499999999999\n",
+      "[2SMobr] update 2.0\n",
+      "User: andrej studen CSRF: 229bc5d4dced168026e9400dae7f90cc\n",
+      "User: andrej studen CSRF: c6d136ef956af4247d9cff61b6f19aab\n",
+      "User: andrej studen CSRF: cd11b8ffc040a810e2cfbe04c8d22c2c\n",
+      "User: andrej studen CSRF: 052a3cb5f16fb5f1a522458cc28e13e1\n",
+      "User: andrej studen CSRF: 6a289ae1c1a86ad783cb4a0eab1d2e67\n",
+      "User: andrej studen CSRF: 820d79a528d7085523e79130ee4e959f\n",
+      "User: andrej studen CSRF: 6f92abae2aff5ecdc1d77da02e9992e0\n",
+      "User: andrej studen CSRF: 39c6af58dcc5c64b42af15e937a664fb\n",
+      "User: andrej studen CSRF: 84191e3282c2512d776c3294475d4921\n",
+      "User: andrej studen CSRF: a1c9600a5c41fe3f549eb0c51830f9ef\n",
+      "[5MIMIR/k1] Mean: 0.0038015975151211023 Std: 0.0022298810072243214 95p: 0.007043663295917213\n",
+      "[5MIMIR/v19] Mean: 404.03125 Std: 159.2391815185547 95p: 745.25\n",
+      "[5MIMIR] update 1.0\n",
+      "User: andrej studen CSRF: 9a03857601405850acbe3395dec8a59e\n",
+      "[5MIMIR/k1] Mean: 0.004843695554882288 Std: 0.0016485784435644746 95p: 0.007551173795945942\n",
+      "[5MIMIR/v19] Mean: 480.9791564941406 Std: 244.8788299560547 95p: 918.0\n",
+      "[5MIMIR] update 1.0\n",
+      "User: andrej studen CSRF: 72985783a8a58bb64aa2132413df22ba\n",
+      "[5MIMIR/k1] Mean: 0.004979620222002268 Std: 0.0018199591431766748 95p: 0.00798504683189094\n",
+      "[5MIMIR/v19] Mean: 557.53125 Std: 161.97137451171875 95p: 876.0\n",
+      "[5MIMIR] update 1.0\n",
+      "User: andrej studen CSRF: 591ddc987dfb62c229b4ea571f6f9ed6\n",
+      "[5MIMIR/k1] Mean: 0.004318421706557274 Std: 0.002111091511324048 95p: 0.007557476405054331\n",
+      "[5MIMIR/v19] Mean: 644.4166870117188 Std: 146.43426513671875 95p: 889.0\n",
+      "[5MIMIR] update 1.0\n",
+      "User: andrej studen CSRF: 8a6a15512d4a1a5a9960ec3ace4eaf11\n"
+     ]
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/usr/lib/python3/dist-packages/urllib3/connection.py:391: SubjectAltNameWarning: Certificate for merlin.fmf.uni-lj.si has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/urllib3/urllib3/issues/497 for details.)\n",
+      "  warnings.warn(\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[5MIMIR/k1] Mean: 0.003817089833319187 Std: 0.001868185237981379 95p: 0.006144086481072009\n",
+      "[5MIMIR/v19] Mean: 595.5520629882812 Std: 219.6490020751953 95p: 929.25\n",
+      "[5MIMIR] update 1.0\n",
+      "User: andrej studen CSRF: 27168ef96c15256394d66eb9fbc40fd6\n",
+      "[5MIMIR/k1] Mean: 0.0026798397302627563 Std: 0.0011935962829738855 95p: 0.004907263908535242\n",
+      "[5MIMIR/v19] Mean: 461.625 Std: 258.9923400878906 95p: 914.0\n",
+      "[5MIMIR] update 1.0\n",
+      "User: andrej studen CSRF: 4c508beed5359a0018b1a484061bc85f\n",
+      "[5MIMIR/k1] Mean: 0.003008238272741437 Std: 0.0017863595858216286 95p: 0.006663843058049679\n",
+      "[5MIMIR/v19] Mean: 519.5833129882812 Std: 225.1372528076172 95p: 877.5\n",
+      "[5MIMIR] update 1.0\n",
+      "User: andrej studen CSRF: 7b7bf515586f22146b267bba611bdd7d\n",
+      "[5MIMIR/k1] Mean: 0.004076605197042227 Std: 0.0017406521365046501 95p: 0.007139973226003349\n",
+      "[5MIMIR/v19] Mean: 682.5 Std: 165.19924926757812 95p: 952.5\n",
+      "[5MIMIR] update 1.0\n",
+      "User: andrej studen CSRF: 0245be606dead153ced33f084a932de6\n",
+      "[5MIMIR/k1] Mean: 0.002993679838255048 Std: 0.002237058477476239 95p: 0.007139105605892834\n",
+      "[5MIMIR/v19] Mean: 396.2069091796875 Std: 201.17764282226562 95p: 742.4499999999998\n",
+      "[5MIMIR] update 1.0\n",
+      "User: andrej studen CSRF: 5e6db723bfab7f3e070442148306b7e4\n",
+      "[5MIOBR/k1] Mean: 0.005247799679636955 Std: 0.0009240307263098657 95p: 0.0061029115226119745\n",
+      "[5MIOBR/v19] Mean: 586.671875 Std: 217.7942657470703 95p: 1024.1\n",
+      "[5MIOBR] update 2.0\n",
+      "User: andrej studen CSRF: bd99e89612be933a36cd0a7907e0a179\n",
+      "[5MIOBR/k1] Mean: 0.005240793339908123 Std: 0.001271975808776915 95p: 0.006303874007426203\n",
+      "[5MIOBR/v19] Mean: 593.558837890625 Std: 209.05279541015625 95p: 968.6999999999998\n",
+      "[5MIOBR] update 2.0\n",
+      "User: andrej studen CSRF: edda11e979ccb54bb19f7e9376f7ba69\n",
+      "[5MIOBR/k1] Mean: 0.005528192035853863 Std: 0.000266475195530802 95p: 0.005894306255504488\n",
+      "[5MIOBR/v19] Mean: 561.75 Std: 142.86061096191406 95p: 827.7499999999999\n",
+      "[5MIOBR] update 2.0\n",
+      "User: andrej studen CSRF: 3a4a43dce113958551fd989a39800f99\n",
+      "[5MIOBR/k1] Mean: 0.005440166685730219 Std: 0.000523584196344018 95p: 0.006121933995746076\n",
+      "[5MIOBR/v19] Mean: 645.9852905273438 Std: 207.52395629882812 95p: 973.55\n",
+      "[5MIOBR] update 2.0\n",
+      "User: andrej studen CSRF: 49a5f1c3e875dd23ab4fbd0c84e91265\n",
+      "[5MIOBR/k1] Mean: 0.005706800147891045 Std: 0.000886297959368676 95p: 0.0065799430944025504\n",
+      "[5MIOBR/v19] Mean: 888.21875 Std: 224.61463928222656 95p: 1182.6999999999998\n",
+      "[5MIOBR] update 2.0\n",
+      "User: andrej studen CSRF: 6e9f61c4b289d913cf4a5e0777bfc8e6\n",
+      "[5MIOBR/k1] Mean: 0.0049440497532486916 Std: 0.0012495476985350251 95p: 0.006284744734875858\n",
+      "[5MIOBR/v19] Mean: 543.0147094726562 Std: 286.0382385253906 95p: 987.3\n",
+      "[5MIOBR] update 2.0\n",
+      "User: andrej studen CSRF: 045121ec40fa56c6bc5271276160a372\n",
+      "[5MIOBR/k1] Mean: 0.005413126666098833 Std: 0.0006332079647108912 95p: 0.005932963755913079\n",
+      "[5MIOBR/v19] Mean: 628.578125 Std: 153.2430419921875 95p: 835.0\n",
+      "[5MIOBR] update 2.0\n",
+      "User: andrej studen CSRF: c213328ebf1fb4f7bd820d18b54479b3\n",
+      "[5MIOBR/k1] Mean: 0.005442645400762558 Std: 0.0005514688091352582 95p: 0.005962625262327492\n",
+      "[5MIOBR/v19] Mean: 668.11767578125 Std: 205.6808319091797 95p: 1025.65\n",
+      "[5MIOBR] update 2.0\n",
+      "User: andrej studen CSRF: 9ed2ad26bc4ece41b64c2a9910505612\n",
+      "[5MIOBR/k1] Mean: 0.004150381311774254 Std: 0.0013159675290808082 95p: 0.005861374479718506\n",
+      "[5MIOBR/v19] Mean: 348.2065124511719 Std: 232.2427520751953 95p: 815.3999999999999\n",
+      "[5MIOBR] update 2.0\n",
+      "User: andrej studen CSRF: 06666c43e313d1fa52fdc7dc7d719939\n",
+      "User: andrej studen CSRF: 6a8f2989b00c6872975f48d0ef838a78\n",
+      "User: andrej studen CSRF: 670cf38c8e307b11f7efb0b7eaace5d3\n",
+      "User: andrej studen CSRF: f10f3307848966649a774df57e49d44f\n",
+      "User: andrej studen CSRF: 1e9407212fdca9121ecca9aa4f012374\n",
+      "User: andrej studen CSRF: 70d7ca3ff1178f2ac32dd0b1199e3e70\n",
+      "User: andrej studen CSRF: 0f0e570d8b8395ee297a20e74dfb2996\n",
+      "User: andrej studen CSRF: 828d11758fba83a1d946f63a7c9b9d50\n",
+      "User: andrej studen CSRF: 6a2bdc1990806f0bd06b807988bf9313\n",
+      "User: andrej studen CSRF: 4aaea1ba020cf0ba964a874511c13c3a\n"
+     ]
+    }
+   ],
+   "source": [
+    "ds=db.selectRows(project,'study','Imaging',[])\n",
+    "patients=list(set([row['PatientId'] for row in ds['rows']]))\n",
+    "for pId in patients:\n",
+    "    if pId.find('8')==0:\n",
+    "        continue\n",
+    "    prows=[row for row in ds['rows'] if row['PatientId']==pId]\n",
+    "    idFilter={'variable':'PatientId','value':pId,'oper':'eq'}\n",
+    "    dsQ=db.selectRows(project,'study','ImagingData',[idFilter])\n",
+    "    if len(dsQ['rows'])==0:\n",
+    "        regionIds=numpy.arange(1,10)\n",
+    "    else:\n",
+    "        regionIds=[int(r['regionId']) for r in dsQ['rows']]\n",
+    "    k1Vals={row['SequenceNum']:[] for row in ds['rows'] if row['PatientId']==pId}\n",
+    "    for prow in prows:\n",
+    "        p=prow['aliasID']\n",
+    "        \n",
+    "        k1File=os.path.join(locDir,p,p+'_k1.nrrd')\n",
+    "        imK1=SimpleITK.ReadImage(k1File)\n",
+    "        nK1=SimpleITK.GetArrayFromImage(imK1)\n",
+    "        \n",
+    "        segmFile=os.path.join(locDir,p,p+'_Segm.nrrd')\n",
+    "        imS=SimpleITK.ReadImage(segmFile)\n",
+    "        nS=SimpleITK.GetArrayFromImage(imS)\n",
+    "\n",
+    "        vbfFile=os.path.join(locDir,p,p+'_vbf.nrrd')\n",
+    "        imVbf=SimpleITK.ReadImage(vbfFile)\n",
+    "        nVbf=SimpleITK.GetArrayFromImage(imVbf)\n",
+    "        \n",
+    "        v19File=os.path.join(locDir,p,p+'Volume19.nrrd')\n",
+    "        imV19=SimpleITK.ReadImage(v19File)\n",
+    "        nV19=SimpleITK.GetArrayFromImage(imV19)\n",
+    "        \n",
+    "        dsQ=db.selectRows(project,'study','ImagingData',[idFilter])\n",
+    "        for region in regionIds:\n",
+    "            #find appropriate row\n",
+    "            qrow=[r for r in dsQ['rows'] if r['regionId']==region]\n",
+    "            \n",
+    "            mode='update'\n",
+    "            if len(qrow):\n",
+    "                qrow=qrow[0]\n",
+    "            else:\n",
+    "                qrow={}\n",
+    "                qrow['PatientId']=prow['PatientId']\n",
+    "                qrow['SequenceNum']=str(0.01*region)\n",
+    "                qrow['regionId']=str(region)\n",
+    "                mode='insert'\n",
+    "            visitName='MIR'\n",
+    "            if prow['SequenceNum']>1:\n",
+    "                visitName='OBR'\n",
+    "                v\n",
+    "            v=nK1[(nS==region) ]\n",
+    "            v19=nV19[(nS==region) ]\n",
+    "            \n",
+    "            vars={'k1':v,'v19':v19}\n",
+    "            for var in vars:\n",
+    "                print('[{}/{}] Mean: {} Std: {} 95p: {}'.format(p,var,numpy.mean(vars[var]),\\\n",
+    "                                                                numpy.std(vars[var]),\\\n",
+    "                                                                numpy.percentile(vars[var],95)))\n",
+    "                qrow[var+visitName+'Mean']=str(numpy.mean(vars[var]))\n",
+    "                qrow[var+visitName+'Std']=str(numpy.std(vars[var]))\n",
+    "                qrow[var+visitName+'Median']=str(numpy.median(vars[var]))\n",
+    "                qrow[var+visitName+'90p']=str(numpy.percentile(vars[var],90))\n",
+    "                qrow[var+visitName+'95p']=str(numpy.percentile(vars[var],95))\n",
+    "\n",
+    "           \n",
+    "            print('[{}] {} {}'.format(p,mode,prow['SequenceNum']))\n",
+    "            db.modifyRows(mode,project,'study','ImagingData',[qrow])\n",
+    "            #matplotlib.pyplot.hist(v,bins=50,range=(0,0.02))\n",
+    "            #matplotlib.pyplot.show()\n",
+    "            #matplotlib.pyplot.hist(nK1.ravel(),bins=50,range=(0,0.02))\n",
+    "            #matplotlib.pyplot.show()\n",
+    "    #should have all rows inserted\n",
+    "    dsQ=db.selectRows(project,'study','ImagingData',[idFilter])\n",
+    "    ratioFields=['Mean','Median','90p','95p']\n",
+    "    for qrow in dsQ['rows']:\n",
+    "        for r in ratioFields:\n",
+    "            qrow['k1Ratio'+r]=str(qrow['k1OBR'+r]/qrow['k1MIR'+r])\n",
+    "        db.modifyRows('update',project,'study','ImagingData',[qrow])\n",
+    "        \n",
+    "        \n",
+    "        "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "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.8.5"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}

File diff suppressed because it is too large
+ 1114 - 0
pythonScripts/clusterAnalysis.ipynb


+ 47 - 0
pythonScripts/downloadPatient.py

@@ -0,0 +1,47 @@
+import os
+import sys
+import json
+import pathlib
+
+def main(configFile):
+    with open(configFile) as f:
+        config=json.load(f)
+
+    fsetup=os.path.join(os.path.expanduser('~'),'.labkey','setup.json')
+    with open(fsetup) as f:
+        setup=json.load(f)
+
+    sys.path.append(setup['paths']['labkeyInterface'])
+    import labkeyInterface
+    import labkeyFileBrowser
+
+    net=labkeyInterface.labkeyInterface()
+    fnet=os.path.join(os.path.expanduser('~'),'.labkey','network.json')
+    net.init(fnet)
+
+    fb=labkeyFileBrowser.labkeyFileBrowser(net)
+    
+    [files]=readPatient(fb,config['localDir'],config['project'],config['PatientId'])
+
+
+def readPatient(fb,localDir,project,patientId):
+
+    rDir=fb.formatPathURL(project,'/'.join([patientId]))
+    lDir=os.path.join(localDir,patientId)
+    if not os.path.isdir(lDir):
+        os.makedirs(lDir)
+
+    ok,files=fb.listRemoteDir(rDir)
+    locFiles=[]
+    for f in files:
+        print(f)
+        p=pathlib.Path(f)
+        localFile=os.path.join(lDir,p.name)
+        fb.readFileToFile(f,localFile)
+        locFiles.append(localFile)
+    print('Done')
+    return locFiles
+
+if __name__=='__main__':
+    main(sys.argv[1])
+

+ 109 - 0
pythonScripts/generateCenters.ipynb

@@ -0,0 +1,109 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import sys\n",
+    "import os\n",
+    "import SimpleITK\n",
+    "import numpy\n",
+    "import matplotlib.pyplot\n",
+    "import subprocess\n",
+    "sys.path.append(os.path.join(os.path.expanduser('~'),'software','src','nixSuite','wrapper'))\n",
+    "import nixWrapper\n",
+    "nixWrapper.loadLibrary('labkeyInterface')\n",
+    "import labkeyInterface\n",
+    "net=labkeyInterface.labkeyInterface()\n",
+    "fconfig=os.path.join(os.path.expanduser('~'),'.labkey','network.json')\n",
+    "net.init(fconfig)\n",
+    "net.getCSRF()\n",
+    "import labkeyFileBrowser\n",
+    "sys.path.append(os.getcwd())\n",
+    "import downloadPatient\n",
+    "fb=labkeyFileBrowser.labkeyFileBrowser(net)\n",
+    "project='dinamic_spect/Patients'\n",
+    "locDir=os.path.join(os.path.expanduser('~'),'temp','dynamicSPECT')\n",
+    "import labkeyDatabaseBrowser\n",
+    "db=labkeyDatabaseBrowser.labkeyDB(net)\n",
+    "ds=db.selectRows(project,'study','Imaging',[])\n",
+    "patients=[row['aliasID'] for row in ds['rows']]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#generate centers\n",
+    "import subprocess\n",
+    "\n",
+    "nclass=10\n",
+    "nsample=20\n",
+    "patients=list(set(patients))\n",
+    "scriptPath=os.path.join(os.path.expanduser('~'),\\\n",
+    "                        'scripts','dynamicSPECT','generateCenters.sh')\n",
+    "\n",
+    "for pId in patients:\n",
+    "    if pId.find('8')==0:\n",
+    "        continue\n",
+    "    print(subprocess.run([scriptPath,pId,str(nclass),str(nsample)], \\\n",
+    "                         check=True, stdout=subprocess.PIPE).stdout)\n",
+    "    \n",
+    "   "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#doAnalysis\n",
+    "import subprocess\n",
+    "\n",
+    "patients=list(set(patients))\n",
+    "runScript='doAnalysis.sh'\n",
+    "#this is if IVF is taken from clusters\n",
+    "scriptPath=os.path.join(os.path.expanduser('~'),\\\n",
+    "                        'scripts','dynamicSPECT',runScript)\n",
+    "#patients1=['10KFMIR']\n",
+    "patients1=patients\n",
+    "for pId in patients1:\n",
+    "    if pId.find('8')==0:\n",
+    "        continue\n",
+    "    for nclass in [10,20,30]:\n",
+    "        for realizationId in numpy.arange(20):\n",
+    "            print('{}/{} {}'.format(pId,nclass,realizationId+1))\n",
+    "            subprocess.run([scriptPath,pId,str(nclass),str(realizationId)],\\\n",
+    "                         check=True, stdout=subprocess.PIPE)\n",
+    "    \n",
+    "   "
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "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.8.5"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}

File diff suppressed because it is too large
+ 22 - 0
pythonScripts/iraemmUploadTestPatients.ipynb


File diff suppressed because it is too large
+ 1432 - 0
pythonScripts/pixelAnalysis.ipynb


File diff suppressed because it is too large
+ 56 - 0
pythonScripts/plotK1.ipynb


File diff suppressed because it is too large
+ 99 - 0
pythonScripts/plotPolar.ipynb


+ 247 - 0
pythonScripts/plotViews.ipynb

@@ -0,0 +1,247 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/home/studen/software/install/Slicer/lib/Python/lib/python3.6/site-packages/urllib3/connection.py:395: SubjectAltNameWarning: Certificate for merlin.fmf.uni-lj.si has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/urllib3/urllib3/issues/497 for details.)\n",
+      "  SubjectAltNameWarning,\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "User: andrej studen CSRF: d070f9c0c9d1624c76a72190dfeb82fd\n"
+     ]
+    },
+    {
+     "data": {
+      "text/plain": [
+       "'d070f9c0c9d1624c76a72190dfeb82fd'"
+      ]
+     },
+     "execution_count": 6,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "sys.path.append(os.path.join(os.path.expanduser('~'),'software','src','nixSuite','wrapper'))\n",
+    "import nixWrapper\n",
+    "nixWrapper.loadLibrary('labkeyInterface')\n",
+    "import labkeyInterface\n",
+    "net=labkeyInterface.labkeyInterface()\n",
+    "fconfig=os.path.join(os.path.expanduser('~'),'.labkey','network.json')\n",
+    "net.init(fconfig)\n",
+    "net.getCSRF()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/home/studen/software/install/Slicer/lib/Python/lib/python3.6/site-packages/urllib3/connection.py:395: SubjectAltNameWarning: Certificate for merlin.fmf.uni-lj.si has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/urllib3/urllib3/issues/497 for details.)\n",
+      "  SubjectAltNameWarning,\n"
+     ]
+    }
+   ],
+   "source": [
+    "import labkeyFileBrowser\n",
+    "sys.path.append(os.getcwd())\n",
+    "import downloadPatient\n",
+    "fb=labkeyFileBrowser.labkeyFileBrowser(net)\n",
+    "project='dinamic_spect/Patients'\n",
+    "locDir=os.path.join(os.path.expanduser('~'),'temp','dynamicSPECT')\n",
+    "import labkeyDatabaseBrowser\n",
+    "db=labkeyDatabaseBrowser.labkeyDB(net)\n",
+    "ds=db.selectRows(project,'study','Imaging',[])\n",
+    "patients=[row['aliasID'] for row in ds['rows']]\n",
+    "for p in patients:\n",
+    "    pass\n",
+    "    #patientId='7TMMIR'\n",
+    "    #files=downloadPatient.readPatient(fb,locDir,project,p)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "['10KFMIR', '10KFOBR', '11ZMMIR', '11ZMOBR', '2SBMIR', '2SMobr', '3ZFMIR', '3ZFOBR', '5MIMIR', '5MIOBR', '7TMMIR', '7TMOBR', '8JSMIR', '8JSOBR']\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(patients)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 88,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "User: andrej studen CSRF: e3eac520b926622281349e3fd84a911a\n",
+      "Uploading 5MIMIR_sliceView.png\n",
+      "User: andrej studen CSRF: 2f9c2b33df616b5e542a94e05b9b4723\n"
+     ]
+    }
+   ],
+   "source": [
+    "import ScreenCapture\n",
+    "cap = ScreenCapture.ScreenCaptureLogic()\n",
+    "ds=db.selectRows(project,'study','Imaging',[])\n",
+    "patients=[row['aliasID'] for row in ds['rows']]\n",
+    "patients1=[patients[8]]\n",
+    "#patients1=patients\n",
+    "for p in patients1:\n",
+    "    [slicer.mrmlScene.RemoveNode(v) for v in slicer.util.getNodesByClass('vtkMRMLVolumeNode')]\n",
+    "    [slicer.mrmlScene.RemoveNode(v) for v in slicer.util.getNodesByClass('vtkMRMLSegmentationNode')]\n",
+    "    \n",
+    "    fCT=os.path.join(locDir,p,p+'CT.nrrd')\n",
+    "    nodeCT=slicer.util.loadNodeFromFile(fCT,'VolumeFile')\n",
+    "    fV19=os.path.join(locDir,p,p+'Volume19.nrrd')\n",
+    "    nodeV19=slicer.util.loadNodeFromFile(fV19,'VolumeFile')\n",
+    "    nodeV19.GetScalarVolumeDisplayNode().SetAndObserveColorNodeID('vtkMRMLColorTableNodeFileInferno.txt')\n",
+    "    fSegm=os.path.join(locDir,p,p+'_Segm.nrrd')\n",
+    "    nodeSegm=slicer.util.loadNodeFromFile(fSegm,'SegmentationFile')\n",
+    "    slicer.util.setSliceViewerLayers(background=nodeCT,foreground=nodeV19,label=nodeSegm,foregroundOpacity=0.5)\n",
+    "    \n",
+    "    r=[row for row in ds['rows'] if row['aliasID']==p][0]\n",
+    "    fz=r['baseZ']\n",
+    "    dir=[0,0,0]\n",
+    "    origin=nodeV19.GetOrigin()\n",
+    "    sp=nodeV19.GetSpacing()\n",
+    "    nodeV19.GetJToRASDirection(dir)\n",
+    "    off=[fz*sp[2]*x for x in dir]\n",
+    "    pz=[x+y for (x,y) in zip(origin,off)]\n",
+    "    \n",
+    "    view=slicer.app.layoutManager().sliceWidget('Red')\n",
+    "    view.sliceController().setSegmentationOpacity(0.1)\n",
+    "    view.sliceLogic().SetSliceOffset(pz[2])\n",
+    "    viewCap = cap.viewFromNode(slicer.mrmlScene.GetNodeByID('vtkMRMLSliceNodeRed'))\n",
+    "    viewFileName=p+'_sliceView.png'\n",
+    "    viewFile=os.path.join(locDir,p,viewFileName)\n",
+    "    cap.captureImageFromView(viewCap,viewFile)\n",
+    "    fb.writeFileToFile(viewFile,fb.buildPathURL(project,[p])+'/'+viewFileName)\n",
+    "    print('Uploading {}'.format(viewFileName))\n",
+    "    r['sliceView']=viewFileName\n",
+    "    db.modifyRows('update',project,'study','Imaging',[r])\n",
+    "    "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 20,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]"
+      ]
+     },
+     "execution_count": 20,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "[slicer.mrmlScene.RemoveNode(v) for v in slicer.util.getNodesByClass('vtkMRMLVolumeNode')]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 67,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[-11.6860873538232, 475.06586290468414, 1525.948169558067]\n",
+      "[0.09892055255379667, -0.06777229572872773, -0.9927847904828667]\n"
+     ]
+    }
+   ],
+   "source": [
+    "dir=[0,0,0]\n",
+    "origin=slicer.util.getFirstNodeByName('10KFMIRVolume19*').GetOrigin()\n",
+    "sp=slicer.util.getFirstNodeByName('10KFMIRVolume19*').GetSpacing()\n",
+    "slicer.util.getFirstNodeByName('10KFMIRVolume19*').GetJToRASDirection(dir)\n",
+    "off=[32.5*sp[1]*x for x in dir]\n",
+    "pz=[x+y for (x,y) in zip(origin,off)]\n",
+    "print(pz)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 38,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "'vtkMRMLColorTableNodeFileInferno.txt'"
+      ]
+     },
+     "execution_count": 38,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "node.GetScalarVolumeDisplayNode().GetColorNodeID()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 44,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "slicer.app.layoutManager().sliceWidget('Red').sliceLogic().SetSliceOffset(1500)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Slicer 4.11",
+   "language": "python",
+   "name": "slicer-4.11"
+  },
+  "language_info": {
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "version": "3.6.7"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}

+ 127 - 0
pythonScripts/polona.ipynb

@@ -0,0 +1,127 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "(4.877804138352662, 0.02720420624699369, 1, array([[58.13207547, 20.86792453],\n",
+      "       [19.86792453,  7.13207547]]))\n",
+      "Ttest_indResult(statistic=2.2558785269477974, pvalue=0.02686599410805479)\n",
+      "(9.417431088992272, 0.009016351249902618, 2, array([[58.13207547, 19.86792453],\n",
+      "       [ 2.23584906,  0.76415094],\n",
+      "       [18.63207547,  6.36792453]]))\n",
+      "Ttest_indResult(statistic=-8.26430309338257, pvalue=4.402977956690523e-09)\n"
+     ]
+    },
+    {
+     "data": {
+      "text/plain": [
+       "(inf, 0.013361462728551347)"
+      ]
+     },
+     "execution_count": 11,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "import numpy\n",
+    "import scipy.stats\n",
+    "gender=numpy.array([[63,16],[15,12]])\n",
+    "print(scipy.stats.chi2_contingency(gender))\n",
+    "print(scipy.stats.ttest_ind_from_stats(39.48, 38.26, 79, 25.78, 22.26, 27, equal_var=False))\n",
+    "cvar=numpy.array([[61,17],[0,3],[18,7]])\n",
+    "cvar1=numpy.array([[61,17],[0,3]])\n",
+    "print(scipy.stats.chi2_contingency(cvar))\n",
+    "print(scipy.stats.ttest_ind_from_stats(1.72, 1.07, 79, 6.19, 2.74, 27, equal_var=False))\n",
+    "scipy.stats.fisher_exact(cvar1)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "(5.742882730015083, 0.016555599001289927, 1, array([[48.13483146, 14.86516854],\n",
+      "       [19.86516854,  6.13483146]]))\n",
+      "Ttest_indResult(statistic=0.507116003909028, pvalue=0.6140574223641995)\n",
+      "(0.5543478260869565, 0.5384774958157479)\n",
+      "\n",
+      "\tFisher's Exact Test for Count Data\n",
+      "\n",
+      "data:  \n",
+      "p-value = 0.4703\n",
+      "alternative hypothesis: two.sided\n",
+      "\n",
+      "\n",
+      "(inf, 0.017701863354037183)\n",
+      "Ttest_indResult(statistic=-7.670035520868973, pvalue=1.8453617356830517e-08)\n"
+     ]
+    }
+   ],
+   "source": [
+    "import numpy\n",
+    "import scipy.stats\n",
+    "gender=numpy.array([[53,10],[15,11]])\n",
+    "print(scipy.stats.chi2_contingency(gender))\n",
+    "print(scipy.stats.ttest_ind_from_stats(26.85,25.49, 63, 24.2 , 21.02 , 26, equal_var=False))\n",
+    "cvar=numpy.array([[51,12],[23,3]])\n",
+    "print(scipy.stats.fisher_exact(cvar))\n",
+    "\n",
+    "import rpy2.robjects\n",
+    "rpy2.robjects.r['pi']\n",
+    "dataframe=rpy2.robjects.DataFrame({'hidrokolon':rpy2.robjects.IntVector([2,3,3,4]),'operacija':rpy2.robjects.IntVector([1,0,2,0])})\n",
+    "dataframe.rownames=rpy2.robjects.StrVector(['<12hr','12-24h','24-48h','>48h'])\n",
+    "#print(dataframe)\n",
+    "#import rpy2.robjects.packages\n",
+    "#base=rpy2.robjects.packages.importr('base')\n",
+    "#utils=rpy2.robjects.packages.importr('utils')\n",
+    "#dir(utils)\n",
+    "fisherTest=rpy2.robjects.r['fisher.test']\n",
+    "res=fisherTest(dataframe)\n",
+    "print(res)\n",
+    "cvar1=numpy.array([[51,16],[0,3]])\n",
+    "print(scipy.stats.fisher_exact(cvar1))\n",
+    "print(scipy.stats.ttest_ind_from_stats(1.98,1.19 , 63, 6.23,2.72 , 26, equal_var=False))\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "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.8.5"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}

File diff suppressed because it is too large
+ 71 - 0
pythonScripts/selectCenters.ipynb


File diff suppressed because it is too large
+ 115 - 0
pythonScripts/statAnalysis.ipynb


+ 208 - 0
pythonScripts/table.ipynb

@@ -0,0 +1,208 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/usr/lib/python3/dist-packages/urllib3/connection.py:391: SubjectAltNameWarning: Certificate for merlin.fmf.uni-lj.si has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/urllib3/urllib3/issues/497 for details.)\n",
+      "  warnings.warn(\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "User: andrej studen CSRF: 4d08323bbd1605f86108a60a9d40db20\n"
+     ]
+    }
+   ],
+   "source": [
+    "import sys\n",
+    "import os\n",
+    "import SimpleITK\n",
+    "import numpy\n",
+    "import matplotlib.pyplot\n",
+    "sys.path.append(os.path.join(os.path.expanduser('~'),'software','src','nixSuite','wrapper'))\n",
+    "import nixWrapper\n",
+    "nixWrapper.loadLibrary('labkeyInterface')\n",
+    "import labkeyInterface\n",
+    "net=labkeyInterface.labkeyInterface()\n",
+    "fconfig=os.path.join(os.path.expanduser('~'),'.labkey','network.json')\n",
+    "net.init(fconfig)\n",
+    "net.getCSRF()\n",
+    "import labkeyFileBrowser\n",
+    "sys.path.append(os.getcwd())\n",
+    "import downloadPatient\n",
+    "fb=labkeyFileBrowser.labkeyFileBrowser(net)\n",
+    "project='dinamic_spect/Patients'\n",
+    "locDir=os.path.join(os.path.expanduser('~'),'temp','dynamicSPECT')\n",
+    "import labkeyDatabaseBrowser\n",
+    "db=labkeyDatabaseBrowser.labkeyDB(net)\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 74,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def averageK1(db,regionId):\n",
+    "    regionSelect={'variable':'regionId','value':str(regionId),'oper':'eq'}\n",
+    "    classSelect={'variable':'nclass','value':str(c),'oper':'eq'}\n",
+    "    ds=db.selectRows(project,'study','ImagingData',[classSelect,regionSelect])\n",
+    "    patients=list(set([r['PatientId'] for r in ds['rows']]))\n",
+    "\n",
+    "    k1MAll=[]\n",
+    "    k1OAll=[]\n",
+    "    for p in patients:\n",
+    "        k1M=[]\n",
+    "        k1O=[]\n",
+    "\n",
+    "        patientFilter={'variable':'PatientId','value':p,'oper':'eq'}\n",
+    "        ds=db.selectRows(project,'study','ImagingData',[patientFilter,regionSelect])\n",
+    "        for r in ds['rows']:\n",
+    "            k1M.append(r['k1MIRMedian'])\n",
+    "            k1O.append(r['k1OBRMedian'])\n",
+    "        vM=numpy.median(k1M)\n",
+    "        #print('{} {}'.format(vM,k1M))\n",
+    "        #print('{} {}'.format(numpy.median(k1M),numpy.std(k1M)))\n",
+    "        vO=numpy.median(k1O)\n",
+    "        print('[{}/{}] {} {}'.format(p,regionId,vO,k1O))\n",
+    "        #print('{} {}'.format(numpy.median(k1O),numpy.std(k1O)))\n",
+    "        k1MAll.append(vM)\n",
+    "        k1OAll.append(vO)\n",
+    "    return k1MAll,k1OAll\n",
+    "    \n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 75,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[7TM/1] 0.008045887022546614 [0.008045887022546614, 0.004483481665888348, 2.1286405607228596]\n",
+      "[10KF/1] 0.0039462171230090675 [0.0039462171230090675, 0.00415070155114901, 0.0031446075367390323]\n",
+      "[11ZM/1] 0.0025240576597139624 [0.00312436925868039, 0.0025240576597139624, 0.002142209448394668]\n",
+      "[2SB/1] 0.010642740867635697 [0.03745862838837244, 0.010642740867635697, 0.010028953831119597]\n",
+      "[5MI/1] 0.00888906341063412 [0.008304194640398289, 0.00888906341063412, 0.0091936110897083]\n",
+      "[3ZF/1] 0.26867647983040466 [0.38591675611767157, 0.26867647983040466, 0.17709045381913846]\n",
+      "[0.005894665958762989, 0.004668591303813753, 0.002949742733330378, 0.011751648013763579, 0.008162106616002189, 0.00511268572208257]\n",
+      "[0.008045887022546614, 0.0039462171230090675, 0.0025240576597139624, 0.010642740867635697, 0.00888906341063412, 0.26867647983040466]\n",
+      "[7TM/2] 0.0017372501091852122 [0.0017372501091852122, 0.001675933130699284, 0.19584171785850896]\n",
+      "[10KF/2] 8.259213311648866e-05 [9.282359403286088e-06, 0.002221889457124819, 8.259213311648866e-05]\n",
+      "[11ZM/2] 0.0021371243829022488 [0.0021470477401390694, 0.0021371243829022488, 0.0017499690427985907]\n",
+      "[2SB/2] 0.003306368767070012 [0.003866263540421745, 0.003306368767070012, 0.0029943594109714824]\n",
+      "[5MI/2] 0.005177206176626878 [0.005017774180493417, 0.005601704036412694, 0.005177206176626878]\n",
+      "[3ZF/2] 0.004304534377883605 [0.003885393241151492, 0.005233206242833382, 0.004304534377883605]\n",
+      "[0.0032749453662799595, 0.0028943546543249484, 0.001871871695075595, 0.003855121335050874, 0.004535002996260104, 0.002431672607075657]\n",
+      "[0.0017372501091852122, 8.259213311648866e-05, 0.0021371243829022488, 0.003306368767070012, 0.005177206176626878, 0.004304534377883605]\n",
+      "[7TM/3] 0.0024026106630740326 [0.0024026106630740326, 0.0020285709174733724, 0.7314645007711776]\n",
+      "[10KF/3] 0.0015306808132398398 [0.0018703063484711772, 0.0015306808132398398, 0.0012136425939998793]\n",
+      "[11ZM/3] 0.003917784910452867 [0.003917784910452867, 0.004195671684134263, 0.0030221084430817322]\n",
+      "[2SB/3] 0.0018769599381238148 [0.0018769599381238148, 0.0019454598760022081, 0.0017322417901848254]\n",
+      "[5MI/3] 0.004714936487121288 [0.005021416534152844, 0.00453359720801415, 0.004714936487121288]\n",
+      "[3ZF/3] 0.005698838193463921 [0.005698838193463921, 0.006372350188361305, 0.004733389017227235]\n",
+      "[0.003006674656825954, 0.0024901765401445894, 0.002640441247904802, 0.002556852090616107, 0.003922843192938324, 0.0012724135802516157]\n",
+      "[0.0024026106630740326, 0.0015306808132398398, 0.003917784910452867, 0.0018769599381238148, 0.004714936487121288, 0.005698838193463921]\n",
+      "[7TM/4] 0.004195682980252796 [0.003950188996175878, 0.004195682980252796, 2.0863785597545665]\n",
+      "[10KF/4] 0.005017210604686076 [0.0058695581350023925, 0.005017210604686076, 0.00382322050790849]\n",
+      "[11ZM/4] 0.004373077263385557 [0.005304248942517635, 0.004373077263385557, 0.0038680517245407303]\n",
+      "[2SB/4] 0.004780494766631807 [0.004452715331717112, 0.004836906908797207, 0.004780494766631807]\n",
+      "[5MI/4] 0.004522149143858034 [0.004378097716940858, 0.004730024546274227, 0.004522149143858034]\n",
+      "[3ZF/4] 0.5730251968275395 [0.5730251968275395, 0.6151303069429822, 0.17997801559145749]\n",
+      "[0.004801354184919535, 0.001981110883473747, 0.00311768616798197, 0.002664618039935267, 0.008329222245675397, 0.002445709148188661]\n",
+      "[0.004195682980252796, 0.005017210604686076, 0.004373077263385557, 0.004780494766631807, 0.004522149143858034, 0.5730251968275395]\n",
+      "[7TM/5] 0.0030026127913968777 [0.0030026127913968777, 0.002966314233129647, 1.0919607438562668]\n",
+      "[10KF/5] 0.0018728630968653172 [0.0018728630968653172, 0.00254711409860054, 0.0017867094196874452]\n",
+      "[11ZM/5] 0.001744985966157502 [0.0020969180529696483, 0.001744985966157502, 0.0016118588408116715]\n",
+      "[2SB/5] 0.004780494766631807 [0.004452715331717112, 0.0048586456286596755, 0.004780494766631807]\n",
+      "[5MI/5] 0.006707032545252601 [0.006170975452619039, 0.006707032545252601, 0.007460460364806493]\n",
+      "[3ZF/5] 0.00858308393943204 [0.00858308393943204, 0.011845597833970808, 0.007380003330274289]\n",
+      "[0.004055782128720719, 0.00328245378291892, 0.0014083849974710172, 0.0029858684539020392, 0.007845910485130312, 0.002445709148188661]\n",
+      "[0.0030026127913968777, 0.0018728630968653172, 0.001744985966157502, 0.004780494766631807, 0.006707032545252601, 0.00858308393943204]\n",
+      "[7TM/6] 0.002837339604720477 [0.002837339604720477, 0.002449581166322905, 0.41387917879987024]\n",
+      "[10KF/6] 8.259213311648866e-05 [9.282359403286088e-06, 0.002221889457124819, 8.259213311648866e-05]\n",
+      "[11ZM/6] 0.0012243542725250457 [0.0014820056066890714, 0.0012243542725250457, 0.0010976608964243597]\n",
+      "[2SB/6] 0.0023446856820961777 [0.0024867978271161787, 0.0023446856820961777, 0.0022332197164982065]\n",
+      "[5MI/6] 0.0031172956941653137 [0.0029513503451490193, 0.0033183656384836225, 0.0031172956941653137]\n",
+      "[3ZF/6] 0.003781674236994135 [0.003781674236994135, 0.004071966210877487, 0.0034494591909788983]\n",
+      "[0.003138866692139931, 0.0025325379278861595, 0.0009215932677006866, 0.002621400221835252, 0.001954550346671144, 0.0015189554927926444]\n",
+      "[0.002837339604720477, 8.259213311648866e-05, 0.0012243542725250457, 0.0023446856820961777, 0.0031172956941653137, 0.003781674236994135]\n",
+      "[7TM/7] 0.0023828627975731745 [0.0023828627975731745, 0.0017047654247853699, 0.18591699611163967]\n",
+      "[10KF/7] 0.0019421932362865028 [0.0019421932362865028, 0.002120856579389987, 0.0018114613219635]\n",
+      "[11ZM/7] 0.0014335428486863065 [0.0014432654864380337, 0.0014335428486863065, 0.0014000118489706172]\n",
+      "[2SB/7] 0.001781126021641757 [0.0024867978271161787, 0.001781126021641757, 0.0016906990021623499]\n",
+      "[5MI/7] 0.0037122197226202246 [0.0037122197226202246, 0.003776907003804963, 0.003495911908165303]\n",
+      "[3ZF/7] 0.007206213864647251 [0.007206213864647251, 0.007899440203861475, 0.006211245602005458]\n",
+      "[0.0036923065171510427, 0.0020527140377196566, 0.0017667001699923747, 0.0015729443133339796, 0.0019636983396832306, 0.0013583430415635878]\n",
+      "[0.0023828627975731745, 0.0019421932362865028, 0.0014335428486863065, 0.001781126021641757, 0.0037122197226202246, 0.007206213864647251]\n",
+      "[7TM/8] 0.0030026127913968777 [0.0030026127913968777, 0.002912860211894843, 0.8457710628002826]\n",
+      "[10KF/8] 0.003937374142034068 [0.004542457733622267, 0.003937374142034068, 0.0034600892248924293]\n",
+      "[11ZM/8] 0.004351273874444507 [0.0050625173773602185, 0.004351273874444507, 0.0035935856109804007]\n",
+      "[2SB/8] 0.004326823649970777 [0.004452715331717112, 0.004325268011938922, 0.004326823649970777]\n",
+      "[5MI/8] 0.004743434827195546 [0.004743434827195546, 0.004492161915006733, 0.004857684829972067]\n",
+      "[3ZF/8] 0.01592586039329981 [0.015304785485526388, 0.09280392746997639, 0.01592586039329981]\n",
+      "[0.0032756892467843577, 0.0020949474383190852, 0.0028992798255622135, 0.0027488460983543573, 0.00416371874346105, 0.0022741875289843377]\n",
+      "[0.0030026127913968777, 0.003937374142034068, 0.004351273874444507, 0.004326823649970777, 0.004743434827195546, 0.01592586039329981]\n",
+      "[7TM/9] 0.0017372501091852122 [0.0017372501091852122, 0.0016790618998124395, 0.05339344195537287]\n",
+      "[10KF/9] 0.0011993853157435785 [0.0011370496488211962, 0.0013632774988599744, 0.0011993853157435785]\n",
+      "[11ZM/9] 0.0010565458881223932 [0.0009607852127521912, 0.0011070435774301734, 0.0010565458881223932]\n",
+      "[2SB/9] 0.0017336108126774022 [0.0018769599381238148, 0.0017336108126774022, 0.0015180304828638965]\n",
+      "[5MI/9] 0.0022169750747788675 [0.00278484013499442, 0.0022169750747788675, 0.001833834797518541]\n",
+      "[3ZF/9] 0.005896802413281909 [0.005896802413281909, 0.007601946240230148, 0.00578983776202438]\n",
+      "[0.0016943661978618529, 0.0014651121228743532, 0.0011333849162417412, 0.002449166151660834, 0.0018263583349822485, 0.001067181006343166]\n",
+      "[0.0017372501091852122, 0.0011993853157435785, 0.0010565458881223932, 0.0017336108126774022, 0.0022169750747788675, 0.005896802413281909]\n"
+     ]
+    }
+   ],
+   "source": [
+    "f = open(\"/home/studen/temp/dynamicSPECT/table.txt\", \"w\")\n",
+    "for r in numpy.arange(1,10):\n",
+    "    k1MAll,k1OAll=averageK1(db,r)\n",
+    "    print(k1MAll)\n",
+    "    print(k1OAll)\n",
+    "    \n",
+    "    f.write('{:.2f},{:.2f},{:.2f},{:.2f},{:.2f},{:.2f}\\n'.format(60*numpy.mean(k1MAll),60*numpy.median(k1MAll),60*numpy.std(k1MAll), 60*numpy.mean(k1OAll), 60*numpy.median(k1OAll),60*numpy.std(k1OAll)))\n",
+    "f.close()\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "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.8.5"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}

+ 50 - 0
slicerScripts/generateReport.py

@@ -0,0 +1,50 @@
+import os
+import sys
+import json
+import pathlib
+import slicer
+
+def main(configFile):
+    with open(configFile) as f:
+        config=json.load(f)
+
+    fsetup=os.path.join(os.path.expanduser('~'),'.labkey','setup.json')
+    with open(fsetup) as f:
+        setup=json.load(f)
+
+    sys.path.append(setup['paths']['labkeyInterface'])
+    import labkeyInterface
+    import labkeyFileBrowser
+
+    net=labkeyInterface.labkeyInterface()
+    fnet=os.path.join(os.path.expanduser('~'),'.labkey','network.json')
+    net.init(fnet)
+
+    fb=labkeyFileBrowser.labkeyFileBrowser(net)
+    
+    [files]=readPatient(fb,config['localDir'],config['project'],config['PatientId'])
+
+
+
+
+def readPatient(fb,localDir,project,patientId):
+
+    rDir=fb.formatPathURL(project,'/'.join([patientId]))
+    lDir=os.path.join(localDir,patientId)
+    if not os.path.isdir(lDir):
+        os.makedirs(lDir)
+
+    ok,files=fb.listRemoteDir(rDir)
+    locFiles=[]
+    for f in files:
+        print(f)
+        p=pathlib.Path(f)
+        localFile=os.path.join(lDir,p.name)
+        fb.readFileToFile(f,localFile)
+        locFiles.append(localFile)
+    print('Done')
+    return locFiles
+
+if __name__=='__main__':
+    main(sys.argv[1])
+

Some files were not shown because too many files changed in this diff