{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Get current Pacages"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\u001b[32m\u001b[1m  Activating\u001b[22m\u001b[39m project at `~/Documents/thesis/ridepooling_simulations`\n"
     ]
    }
   ],
   "source": [
    "using Pkg\n",
    "Pkg.activate(\".\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "#Pkg.add(url=\"https://gitlab.gwdg.de/smuehle1/RidePooling/\", rev=\"planned_pickup\")\n",
    "import Pkg;\n",
    "Pkg.add(\"Conda\")\n",
    "import Conda\n",
    "Conda.update()\n",
    "Pkg.build(\"PyPlot\")\n",
    "import RidePooling\n",
    "RP = RidePooling"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "Pkg.add(url=\"https://gitlab.gwdg.de/ruben.haag/ridepooling_eval.git\", rev=\"main\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\u001b[32m\u001b[1mPrecompiling\u001b[22m\u001b[39m project...\n",
      "\u001b[32m  ✓ \u001b[39mRidePooling_eval\n",
      "  1 dependency successfully precompiled in 23 seconds (194 already precompiled)\n"
     ]
    }
   ],
   "source": [
    "Pkg.instantiate()   #there may be an error here concerning PyCall. The dependencies assume Python to be installed on your system, with package 'matplotlib' installed.\n",
    "                    #Either just run 'conda install -c conda-forge matplotlib' in your system shell, or follow instructions below (after running this cell and getting an error) to solve everything from within Julia."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\u001b[32m\u001b[1m     Updated\u001b[22m\u001b[39m Format of manifest file at `/home/ruben/Documents/thesis/ridepooling_simulations/Manifest.toml` updated from v1.0 to v2.0\n"
     ]
    }
   ],
   "source": [
    "Pkg.upgrade_manifest()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\u001b[32m\u001b[1m  No Changes\u001b[22m\u001b[39m to `~/Documents/thesis/ridepooling_simulations/Project.toml`\n",
      "\u001b[32m\u001b[1m  No Changes\u001b[22m\u001b[39m to `~/Documents/thesis/ridepooling_simulations/Manifest.toml`\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "RidePooling_eval"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import RidePooling\n",
    "Pkg.resolve()\n",
    "import RidePooling_eval\n",
    "RP = RidePooling\n",
    "ev = RidePooling_eval"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Test Run"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "ename": "Base.IOError",
     "evalue": "IOError: could not spawn `julia make_folders.jl 1 ./settings.jl anywt1_anydt01`: no such file or directory (ENOENT)",
     "output_type": "error",
     "traceback": [
      "IOError: could not spawn `julia make_folders.jl 1 ./settings.jl anywt1_anydt01`: no such file or directory (ENOENT)\n",
      "\n",
      "Stacktrace:\n",
      "  [1] _spawn_primitive(file::String, cmd::Cmd, stdio::Vector{Any})\n",
      "    @ Base ./process.jl:100\n",
      "  [2] #690\n",
      "    @ ./process.jl:113 [inlined]\n",
      "  [3] setup_stdios(f::Base.var\"#690#691\"{Cmd}, stdios::Vector{Any})\n",
      "    @ Base ./process.jl:197\n",
      "  [4] _spawn\n",
      "    @ ./process.jl:112 [inlined]\n",
      "  [5] run(::Cmd; wait::Bool)\n",
      "    @ Base ./process.jl:445\n",
      "  [6] run(::Cmd)\n",
      "    @ Base ./process.jl:444\n",
      "  [7] top-level scope\n",
      "    @ ~/Documents/thesis/ridepooling_simulations/init.ipynb:5\n",
      "  [8] eval\n",
      "    @ ./boot.jl:373 [inlined]\n",
      "  [9] include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String)\n",
      "    @ Base ./loading.jl:1196\n",
      " [10] #invokelatest#2\n",
      "    @ ./essentials.jl:716 [inlined]\n",
      " [11] invokelatest\n",
      "    @ ./essentials.jl:714 [inlined]\n",
      " [12] (::VSCodeServer.var\"#150#151\"{VSCodeServer.NotebookRunCellArguments, String})()\n",
      "    @ VSCodeServer ~/.vscode/extensions/julialang.language-julia-1.5.11/scripts/packages/VSCodeServer/src/serve_notebook.jl:18\n",
      " [13] withpath(f::VSCodeServer.var\"#150#151\"{VSCodeServer.NotebookRunCellArguments, String}, path::String)\n",
      "    @ VSCodeServer ~/.vscode/extensions/julialang.language-julia-1.5.11/scripts/packages/VSCodeServer/src/repl.jl:185\n",
      " [14] notebook_runcell_request(conn::VSCodeServer.JSONRPC.JSONRPCEndpoint{Base.PipeEndpoint, Base.PipeEndpoint}, params::VSCodeServer.NotebookRunCellArguments)\n",
      "    @ VSCodeServer ~/.vscode/extensions/julialang.language-julia-1.5.11/scripts/packages/VSCodeServer/src/serve_notebook.jl:14\n",
      " [15] dispatch_msg(x::VSCodeServer.JSONRPC.JSONRPCEndpoint{Base.PipeEndpoint, Base.PipeEndpoint}, dispatcher::VSCodeServer.JSONRPC.MsgDispatcher, msg::Dict{String, Any})\n",
      "    @ VSCodeServer.JSONRPC ~/.vscode/extensions/julialang.language-julia-1.5.11/scripts/packages/JSONRPC/src/typed.jl:67\n",
      " [16] serve_notebook(pipename::String; crashreporting_pipename::String)\n",
      "    @ VSCodeServer ~/.vscode/extensions/julialang.language-julia-1.5.11/scripts/packages/VSCodeServer/src/serve_notebook.jl:94\n",
      " [17] top-level scope\n",
      "    @ ~/.vscode/extensions/julialang.language-julia-1.5.11/scripts/notebook/notebook.jl:12\n",
      " [18] include(mod::Module, _path::String)\n",
      "    @ Base ./Base.jl:418\n",
      " [19] exec_options(opts::Base.JLOptions)\n",
      "    @ Base ./client.jl:292\n",
      " [20] _start()\n",
      "    @ Base ./client.jl:495"
     ]
    }
   ],
   "source": [
    "# make folder infrastructure and copy all settings to folder\n",
    "SETTINGS_NAME=\"./settings.jl\"\n",
    "JOB_NAME = \"anywt1_anydt01\"\n",
    "SGE_TASK_ID = 1\n",
    "run(`julia make_folders.jl $SGE_TASK_ID $SETTINGS_NAME $JOB_NAME`)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "ename": "Base.IOError",
     "evalue": "IOError: could not spawn `julia sim.jl 1 ./settings.jl anywt1_anydt01`: no such file or directory (ENOENT)",
     "output_type": "error",
     "traceback": [
      "IOError: could not spawn `julia sim.jl 1 ./settings.jl anywt1_anydt01`: no such file or directory (ENOENT)\n",
      "\n",
      "Stacktrace:\n",
      "  [1] _spawn_primitive(file::String, cmd::Cmd, stdio::Vector{Any})\n",
      "    @ Base ./process.jl:100\n",
      "  [2] #690\n",
      "    @ ./process.jl:113 [inlined]\n",
      "  [3] setup_stdios(f::Base.var\"#690#691\"{Cmd}, stdios::Vector{Any})\n",
      "    @ Base ./process.jl:197\n",
      "  [4] _spawn\n",
      "    @ ./process.jl:112 [inlined]\n",
      "  [5] run(::Cmd; wait::Bool)\n",
      "    @ Base ./process.jl:445\n",
      "  [6] run(::Cmd)\n",
      "    @ Base ./process.jl:444\n",
      "  [7] top-level scope\n",
      "    @ ~/Documents/thesis/ridepooling_simulations/init.ipynb:4\n",
      "  [8] eval\n",
      "    @ ./boot.jl:373 [inlined]\n",
      "  [9] include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String)\n",
      "    @ Base ./loading.jl:1196\n",
      " [10] #invokelatest#2\n",
      "    @ ./essentials.jl:716 [inlined]\n",
      " [11] invokelatest\n",
      "    @ ./essentials.jl:714 [inlined]\n",
      " [12] (::VSCodeServer.var\"#150#151\"{VSCodeServer.NotebookRunCellArguments, String})()\n",
      "    @ VSCodeServer ~/.vscode/extensions/julialang.language-julia-1.5.11/scripts/packages/VSCodeServer/src/serve_notebook.jl:18\n",
      " [13] withpath(f::VSCodeServer.var\"#150#151\"{VSCodeServer.NotebookRunCellArguments, String}, path::String)\n",
      "    @ VSCodeServer ~/.vscode/extensions/julialang.language-julia-1.5.11/scripts/packages/VSCodeServer/src/repl.jl:185\n",
      " [14] notebook_runcell_request(conn::VSCodeServer.JSONRPC.JSONRPCEndpoint{Base.PipeEndpoint, Base.PipeEndpoint}, params::VSCodeServer.NotebookRunCellArguments)\n",
      "    @ VSCodeServer ~/.vscode/extensions/julialang.language-julia-1.5.11/scripts/packages/VSCodeServer/src/serve_notebook.jl:14\n",
      " [15] dispatch_msg(x::VSCodeServer.JSONRPC.JSONRPCEndpoint{Base.PipeEndpoint, Base.PipeEndpoint}, dispatcher::VSCodeServer.JSONRPC.MsgDispatcher, msg::Dict{String, Any})\n",
      "    @ VSCodeServer.JSONRPC ~/.vscode/extensions/julialang.language-julia-1.5.11/scripts/packages/JSONRPC/src/typed.jl:67\n",
      " [16] serve_notebook(pipename::String; crashreporting_pipename::String)\n",
      "    @ VSCodeServer ~/.vscode/extensions/julialang.language-julia-1.5.11/scripts/packages/VSCodeServer/src/serve_notebook.jl:94\n",
      " [17] top-level scope\n",
      "    @ ~/.vscode/extensions/julialang.language-julia-1.5.11/scripts/notebook/notebook.jl:12\n",
      " [18] include(mod::Module, _path::String)\n",
      "    @ Base ./Base.jl:418\n",
      " [19] exec_options(opts::Base.JLOptions)\n",
      "    @ Base ./client.jl:292\n",
      " [20] _start()\n",
      "    @ Base ./client.jl:495"
     ]
    }
   ],
   "source": [
    "SETTINGS_NAME=\"./settings.jl\"\n",
    "JOB_NAME = \"anywt1_anydt01\"\n",
    "SGE_TASK_ID = 1\n",
    "run(`julia sim.jl $SGE_TASK_ID $SETTINGS_NAME $JOB_NAME`)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Calculate route Matrices for all maps"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "mapPath = \"./Maps/\"\n",
    "matrixPath = mapPath*\"/route_matrices/\"\n",
    "include(mapPath*\"maps.jl\")\n",
    "for (specs, name) in mapToName\n",
    "    println(specs)\n",
    "    mymap=RP.get_map(specs)\n",
    "    RM=RP.calculate_route_matrix(mymap, savepath=name);\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Calculate t0 for maps"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Julia 1.7.2",
   "language": "julia",
   "name": "julia-1.7"
  },
  "language_info": {
   "file_extension": ".jl",
   "mimetype": "application/julia",
   "name": "julia",
   "version": "1.7.2"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}