From db8beea1d620f31fd94a215a19680c833f35e04d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?JulienD=C3=B6rner?= Date: Thu, 5 Sep 2024 11:52:00 +0200 Subject: [PATCH] add example for interrupted simulations --- doc/index.rst | 1 + .../interrupt_candidateVector.ipynb | 394 ++++++++++++++++++ .../interrupt_source.ipynb | 342 +++++++++++++++ doc/pages/interrupting-simulations.rst | 9 + 4 files changed, 746 insertions(+) create mode 100644 doc/pages/example_notebooks/interrupting_simulations/interrupt_candidateVector.ipynb create mode 100644 doc/pages/example_notebooks/interrupting_simulations/interrupt_source.ipynb create mode 100644 doc/pages/interrupting-simulations.rst diff --git a/doc/index.rst b/doc/index.rst index f398dca5b..b989cd1c5 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -31,6 +31,7 @@ Contents pages/acceleration.rst pages/extending_crpropa.rst pages/example_notebooks/propagation_comparison/Propagation_Comparison_CK_BP.ipynb + pages/interrupting-simulations.rst pages/AdditionalResources.rst diff --git a/doc/pages/example_notebooks/interrupting_simulations/interrupt_candidateVector.ipynb b/doc/pages/example_notebooks/interrupting_simulations/interrupt_candidateVector.ipynb new file mode 100644 index 000000000..8b37e3029 --- /dev/null +++ b/doc/pages/example_notebooks/interrupting_simulations/interrupt_candidateVector.ipynb @@ -0,0 +1,394 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# interrupting and continuing of a simulation" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from crpropa import * \n", + "import numpy as np \n", + "import matplotlib.pyplot\n", + "import os \n", + "from multiprocessing import cpu_count" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## example simulation\n", + "\n", + "\n", + "We test the interruption on the propagation of a spectrum with $E^{-1}$ from a distance of 1 Gpc with 1e7 particles. \n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# create candidate vector with increasing energies\n", + "lg_E_min = 17\n", + "lg_E_max = 21\n", + "lgE = np.random.uniform(lg_E_min, lg_E_max, 100_000)\n", + "lgE.sort()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def init_candidate_vector():\n", + " \"\"\" initilize the candidate vector. Has to be done before every simulation. \"\"\"\n", + " cv = CandidateVector()\n", + " for i, _e in enumerate(lgE): \n", + " c = Candidate(i, 10**_e * eV, Vector3d(1 * Gpc, 0, 0), Vector3d(-1, 0, 0)) \n", + " cv.push_back(CandidateRefPtr(c))\n", + " return cv" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### full simulation" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "crpropa::ModuleList: Number of Threads: 12\n", + "Run ModuleList\n", + " Started Wed Sep 4 16:28:28 2024 : [\u001b[1;32m Finished \u001b[0m] 100% Needed: 00:00:55 - Finished at Wed Sep 4 16:29:23 2024\n", + "\r" + ] + } + ], + "source": [ + "# general setup \n", + "def get_sim(filename):\n", + " \"\"\" returns a modulelist to ensure running the same modules in each case \"\"\"\n", + " \n", + " sim = ModuleList() \n", + " sim.add(SimplePropagation(1 * kpc, 10 * kpc)) # choose small steps to ensure long simulations \n", + "\n", + " obs = Observer() \n", + " obs.add(Observer1D())\n", + " out = TextOutput(filename) \n", + " obs.onDetection(out) \n", + " sim.add(obs)\n", + "\n", + " sim.setShowProgress(True)\n", + " return sim, out\n", + "\n", + "os.makedirs(\"cand_vector\", exist_ok=True)\n", + "sim, out = get_sim(\"cand_vector/full.txt\") \n", + "cv = init_candidate_vector()\n", + "sim.run(cv)\n", + "out.close()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### simulation with interruption" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "crpropa::ModuleList: Number of Threads: 12\n", + "Run ModuleList\n", + " Started Wed Sep 4 16:29:24 2024 : [====> ] 43% Finish in: 00:00:30 \r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "crpropa::ModuleList: Signal 2 (SIGINT/SIGTERM) received\n", + "############################################################################\n", + "#\tInterrupted CRPropa simulation \n", + "# in total 56959 Candidates have not been started.\n", + "# the indicies of the vector haven been written to to output file. \n", + "############################################################################\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[32], line 8\u001b[0m\n\u001b[1;32m 6\u001b[0m sim\u001b[38;5;241m.\u001b[39msetShowProgress(\u001b[38;5;28;01mTrue\u001b[39;00m) \n\u001b[1;32m 7\u001b[0m cv \u001b[38;5;241m=\u001b[39m init_candidate_vector()\n\u001b[0;32m----> 8\u001b[0m sim\u001b[38;5;241m.\u001b[39mrun(cv)\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "sim, out = get_sim(\"cand_vector/interrupted.txt\")\n", + "\n", + "out_interrupt = TextOutput(\"cand_vector/on_interruption.txt\")\n", + "sim.setInterruptAction(out_interrupt)\n", + "\n", + "sim.setShowProgress(True) \n", + "cv = init_candidate_vector()\n", + "sim.run(cv)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "out.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of indices read from file: 56959\n" + ] + } + ], + "source": [ + "# load candidates from interrupted simulation \n", + "\n", + "file = \"cand_vector/on_interruption.txt\"\n", + "pc = ParticleCollector() \n", + "pc.load(file)\n", + "\n", + "# expected size of particles should be equal to the number of cores \n", + "assert pc.size() <= cpu_count() , f\"the number of loaded particles ({pc.size()}) must be lower or equal to the number of cores ({cpu_count()})\"\n", + "\n", + "# load indicies of not started candidates\n", + "with open(file, \"r\") as f: \n", + " line = f.readlines()[-1]\n", + " indices = np.array(line.strip(\"\\n\").split(\"\\t\")[1:-1], dtype= int)\n", + "\n", + "print(\"number of indices read from file:\", len(indices))" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "# create a new candidate vector with the missing particles \n", + "cv_new = pc.getContainer()\n", + "cv = init_candidate_vector()\n", + "for i, c in enumerate(cv): \n", + " if i in indices: \n", + " cv_new.push_back(c)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "crpropa::ModuleList: Number of Threads: 12\n", + "Run ModuleList\n", + " Started Wed Sep 4 16:29:55 2024 : [\u001b[1;32m Finished \u001b[0m] 100% Needed: 00:00:37 - Finished at Wed Sep 4 16:30:32 2024\n", + "\r" + ] + } + ], + "source": [ + "# run the simulation with the missing candidates \n", + "sim, out = get_sim(\"cand_vector/continued.txt\")\n", + "sim.run(cv_new)\n", + "out.close()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# show the data from the different simulations" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd \n", + "import matplotlib.pyplot as plt \n", + "\n", + "def read_crp(filename): \n", + " \"\"\" read a crpropa output file \"\"\"\n", + " \n", + " with open(filename) as f: \n", + " names = f.readline().strip(\"\\n\").split(\"\\t\")[1:]\n", + " \n", + " return pd.read_csv(filename, names = names, delimiter = \"\\t\", comment=\"#\")" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "df_full = read_crp(\"cand_vector/full.txt\")\n", + "df_first_half = read_crp(\"cand_vector/interrupted.txt\")\n", + "df_second_half = read_crp(\"cand_vector/continued.txt\")" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(43030, 56970)" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(df_first_half), len(df_second_half)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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LQ7a7vvvv5fHwx8FAAAADsKTJI19yO4s0IiS3ckq/uIeK3aquFU3WVlZWrdu3QHb+P1+rV+/Xr169YrXbgEAAAA4lGEYkunbFztU3CaqOPfcc1VQUKCZM2fW2mbGjBnauXOnLrjggnjtFgAAAA7mdXl1Tb9rdE2/a+R1eauvNE2pZFfkZ78J0IBEEreeqltvvVVPP/20brnlFuXl5en888+XJH333Xd65ZVX9Morr+jpp59WVlaWrr/++njtFgAAAA7mdXt1bf9ro68MlEp/7h6Jb98u+dKaLjE0CX/Ir+SOL+yNT1VqfO/41GTilnXr1q21dOlSXXTRRXrxxRc1d+5cSdLixYu1ePFimaapPn36aN68eXW69goAAABA8xYyQ/JmrLFip4prKdirVy+tXbtW8+fP15tvvqmCggKFw2F17txZp59+ui688EK53e547hIAAAAOFjbD2ly0WZLULaObXEbcrk4Bmkzc+9dcLpfOO+88nXfeefHeNAAAAJqZ8mC5zn8tctlI3oQ8pXpTbc4IqD9OBQAAAABADBrcU7V169aYdnzkkUfG9Pym8MILL2jOnDlas2aNSktL1a9fP913330aOnSo3akBAAAASBANLqq6du3a4LnkDcNQMBhs6K6bTG5urnr27KnHHntM6enpmjVrlkaPHq33339f/fr1szs9AAAAAAmgwUXV8OHDHX2DrrqYP3++MjMzrcennXaajj32WD322GP65z//aWNmAAAAhwCXR+o3YV8MJKgGfzqXL18exzQSU9WCSopMwnHMMccoPz/fpowAAAAOIZ4k6fy/2Z0FGlGyO1l7vppqxU7l2IkqPvroIz3wwAO64IIL1LlzZxmGUaees7KyMt15553q1auXkpOT1alTJ02aNEnbtm076HNDoZA++OAD9ejRIx4vAQAAADikGYYhM5QuM5Tu6FFwju1HnT59ul599dV6Pae8vFyjRo3S6tWr1bFjR5133nkqKCjQrFmztGDBAq1evVrdunWr9fl//etftXXrVl17bS13/QYAAEC9eF1eZffNtuJqTFMKlO5tmCo5+KAbzVvceqr+7//+T23atNHixYtrbbNo0SK1adNGs2fPjnl/Q4YM0bRp0/Taa69px44dSkpKOuhz7r33Xq1evVpDhgzRV199peeff155eXl66KGHtHPnTk2aNKnW5+bl5WnK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6MUXX9S6dev0/vvv6/TTT9eWLVs0fPhw7dq1SytWrNAll1yiRYsW6YwzzmiU11dRUaEJEyYoMzNTffr00QknnKDCwkKtWrVK1113nd5///1q105ddNFFWrp0qdatW6dTTjlFPXr0sNYd7PcVCoV03nnn6fXXX1fLli11+umnyzRNvf3227r22mu1ZMkSzZ07Vy5XzXNDjz/+uGbOnKlhw4bp7LPPVl5enp577jl99NFHWrdunVJSnPulDQAAEg9FlYOZpqmyQM2z9YksxeuutRepLsaNG6dx48Zp5MiR+u677/Tggw82yQx1dfXggw8qHA5r7ty5uvDCC6ut++CDD5SZmVnnbf3973/X3/72N/3mN7+RJAUCAZ199tlaunSpTj75ZB122GHavHmz0tLSJElPPvmkrrzySt13332NVlR5PB698sorGjt2rLzefWcMd+7cqbPPPltz5szRpEmTNHz4cEmR9+Ouu+7SunXrdOWVV9arhzA3N1evv/66+vbtq7feeksdOnSQJO3YsUOnnnqqXnnlFT3++OO6/vrrazz3scce07vvvqshQ4ZIkkpLS3X66adr1apVevbZZzVp0qQY3gUAQDz53D49OOJBK64mHJK2rIrEXU6WXO4mzg6oG4oqBysLhNTnzjfsTqNePrvnDKX6mu/HbufOnZKk0047rca6E088sV7bGjp0qFVQSZLX69Vvf/tbLV26VF988YVeeeUVq6CSItO/T5kyRf/9738VCASqFT3x4vF4NG7cuBrL27Vrp/vvv1+nn366Xn31VauoisUjjzwiSZo5c6ZVUElSx44d9ec//1nnnnuuHn744ahF1Y033mgVVFLkuq3Jkydr1apVeueddyiqACCBeFwendG1lpOBwXJpzs8i8e3bJV9a9HZwrPJguVK7/nVvPEKpvrqN6Ek0zffoFrDBgAED9Pnnn+vyyy/XtGnTNGDAgKjD0+pizJgxNZZVTszRtWtX9erVq9o6t9utLl266KOPPtKuXbvUsWPHBu23LtauXas333xTW7ZsUWlpqUzTVHFxsSRp48aNMW9/69at2rp1q9q1axf1ffjZz36mjIwM/e9//9O3335bYyhhtOdUvl87duyIOT8AABAfpky5U76xYqeiqHKwFK9bn93TOMO8GkuKt3l3299333365JNPNH/+fM2fP1+tW7fW0KFDde655+qyyy5TcnJynbd1+OGH11hWeT1WtHVV11dUVDQg+4Pz+/3Kzs7Ws88+W2ubyuIqFtu3b5ckdenSJep6wzDUpUsXFRUVadu2bTWKqs6dO9d4TosWLSQ13nsDAGiYYDiot7a+JUkafeRoeVwcnsJ5+NQ6mGEYzXooXWPYf3a6eDviiCP04Ycf6u2339aCBQu0YsUKq8CaMWOG/vvf/9b5uqoD9XA1tPcrmvq8JzNnztSzzz6rY489VjNmzNAJJ5yg1q1by+v16quvvlLv3r1lmk1zlulA1+bF8/0BADQuf8ivm1fcLEnKm5BHUQVH4sgDzY7PF7nIter05ZW+/vrrRt+/x+PRmDFj9Mgjj2jdunUqKCjQqFGjrBkAm9qB3g+pfu/JK6+8Ikl69tlndeaZZ6p9+/bWtVubN2+OMdN9OnXqJEnasmVLrW0q19XWawcAANBUKKrQ7FReS/TVV1/VWLdkyZKmTkddunTRbbfdJkn69NNPm3z/B3o/vvrqK23durXO2/rxxx8lRR9e98ILL0R9TmVRFwwG67yfI488UkceeaR27typt956q8b6hQsX6scff1SPHj0SYip9AABwaKOoQrMzYsQISdL9999f7Qaxzz777AGvBYqHv/zlL/r2229rLH/99dclRYYHNrUTTzxRqampWrRokT766CNr+a5du3TllVfWa/hf5WQPf//736stnzt3rv71r39FfU5lr9OXX35Zr7x/+9vfSpImT55szaooSd9++61uueUWSdINN9xQr20CAAA0BoqqA/jwww/1y1/+Uj169JBhGJo6dardKaEOrrvuOrVr105z585Vnz59dPHFF6t///66/PLLG/0g/O6779bhhx+uE044QT//+c91ySWXqHfv3nr44YfVpk0b3XzzzY26/2jS09N18803KxgMaujQoTrzzDN11llnqVevXgqFQtWmHj+YW2+9VW63W1OmTNHAgQM1YcIEnXjiibr44ot14403Rn3OmDFjlJycrL/85S8666yz9Ktf/UpXXnnlQYusG2+8UWeddZbWr1+vnj176oILLtD555+vXr166fPPP9e4ceN07bXX1uu9AAA4jMsrnX5P5McV/1uFIDGEg2kKB509XT5F1QGsXLlSq1ev1tChQ9WqVSu700EddejQQe+8845+9rOfaceOHVq0aJFatWqlJUuW6Nxzz23U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/XXFFVdo8eLF+u6773ThhRda9yA77LDD6rSN3/zmN5o1a5ZGjBiho48+2ho6On/+fI0bN06maWrQoEE6+eSTVVRUpI0bN+pPf/qTfvOb3yg9PV1nnnmmgsGgVq5cqX79+lUrynr06FHn1zJ//nw9/PDDGjhwoM4++2ytXbtWr7/+uvLy8vTpp59Wez2rV6/W7373O3Xt2lW9e/fWkCFDtHXrVr355pt688039X//93+aNGnSAfd32GGH6YorrtDatWu1bt06nXLKKVa+VV8DAAAA6oeiqgllZGQoIyNDkuT1eg/cuD78JbWvM9ySN7mObV2SN6WBbUslmbU1lnzxGR89btw4jRs3TiNHjtR3332nBx98UF27dq3XNl5++WV9/PHH6tu3b7XlDz74oMLhsObOnasLL7yw2roPPvhAmZmZkqQpU6bosMMO08qVKzVu3LgG9/Lk5ubqpZde0rhx4yRJoVBIP//5z/XSSy/p8ccfr3a9U+/evfXf//632jWDkvTxxx9r1KhRuvHGG3XJJZdYBWY0Rx11lGbPnq277rpL69at05VXXhm1NxcAgITh8kon/3ZfDCQoiqrm4L5Ota/rOUb6xYv7Hv+5hxQojd62y1Bp4sJ9j3OPlUprGaLY6XjpquX7Hj92krR7a/S27Y6Srqt5/ZtdbrvtthoFlbTvGrzTTjutxroTTzwx7nlceumlVkElSW63W7///e/10ksv6Z133qnWtnLY6P6OP/54XXfddfrjH/+oZcuWcUsAAEDz4vFJY+61Ows0ohRPioo/f8CKnYqiCoecc889N+ryAQMG6PPPP9fll1+uadOmacCAAXI14p3bx4wZU2NZr169JEk7duyosS4UCumtt97SqlWrtGPHDlVUVEiSNm7cWO1fAAAANC2Kqubg9u21rzP2u27rlv8doO1+BUTOJ3Vve12eDjj8L4HUNtX6fffdp08++UTz58/X/Pnz1bp1aw0dOlTnnnuuLrvsMiUnJ0d9XkNFmxylRYsWkmQVTJW++eYb/exnP9O6detq3V5xcXFc8wMAoCl4XV5NHjDZiqsJh6XdX0fiVkdIjXiyE4gFn8zmwJdW+483uR5tU2Jom3qA9ol1v4naiqMjjjhCH374od544w399re/1RFHHKH58+fr17/+tY477ri4z9ZYn16wK6+8UuvWrdOFF16ovLw8FRUV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g3IHAABIGCZs0adPH7NPnz4HbBMKhczPPvvM/Oyzz8xQKFRruxJ/Sa0/5cHyOrctC5Q1uG1poLTWtqWB0nq+Owf2y1/+0pRkPvjggzXWff755+b27dutx/n5+WZaWpqZnp5uLlmypFrbRYsWmV6v1zziiCPMiooKa/mKFStMwzDMFi1amEuXLq32nEAgYC5cuNB6HA6HzWOPPdaUZN56661mOBy21s2dO9d0uVxmenp6jZwkmZLMESNGmLt377bWffDBB6bb7TZTU1PN4uJia/lPP/1ktmvXzpRkPvXUU9X2f9ttt1nb+8Mf/lCXt7BBOZimab7++utmUVFRtWXl5eXmVVddZUoy77777qj7GTFiRI0cJJldunSpU75Nra5/ewCA2JX4S8xjZh9jHjP7GLPEX1J9ZcUe0/xDy8hPxR57EkSj2lXyk/X731Xyk6251OX4vDb0VDUDJz1zUq3rhh0+TI+f9rj1eOQLI1UWLIvadmCHgZp15izr8ZkvnakfK36M2rZvZl8997PnrMfj5o3T9pLtUdt2b9Vd88bNO9BLqJedO3dKkk477bQa64466qhqj3Nzc1VSUqJHH320RvszzzxT11xzjR555BEtXLhQ559/viTpgQcekGmauuOOOzR69Ohqz/F4PDr77LOtx8uXL9cnn3yiI488Uvfee2+1IWwXXnihxo0bp5dffllPPfWU7rjjjmrbcrlc+sc//qGWLVtaywYOHKizzjpLCxYs0IcffmhNRT537lzt3LlTw4cP18SJE632hmFo+vTpevrpp/XNN98c9L3bX31ykKSzzjqrxjaSkpKUm5urp556Sq+++qruvPPOeucBAADgZFxTBccZMGCAJOm6667T8uXLFQwGa2375ptvSpIuuOCCqOuHDRsmSXr//fclScFgUMuXL5ckXXXVVQfN5d1335UkXXLJJfJ6vTXWX3755dXaVdWlSxf17t27xvJevXpJUrVrwyqfP378+BrtvV5vg4fQ1SeHStu2bdPf//535eTkaNKkScrOztY111wjn8+njRs3NigPAACiMtxSn/MiP4bb7myAWtFT1QzkTah9ogK3q/oX0PJLltfa1mVUr7EXX7i4zm3njZtX6+QK8Z6A4JZbbtF7772n5cuX69RTT1V6erqGDBmisWPHKjs7W61atbLaFhQUSJIOP/zwA25z165dkqTC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YRiGunbtqlAopD/96U/q1auXkpKSdMQRR+i2225TRUVF1OeVlpbq/vvv1/HHH6/09HSlp6dr8ODBmjNnzgH34/f7dc899+ioo45SUlKSxo0bZ7UpKCjQhAkT1K5dO6WlpWngwIF67rnnVFBQIMMwqvUgXX/99TIMQ//85z9rfW29e/eWy+XS5s2bG/TeVPXoo4+qoqJC48eP1/Dhww/afsCAAVGXf/7558rOztYRRxyhpKQkdejQQePHj9eGDRtqtL3sssskSU8//XTUbZmmqWeffVZS9aF/AIAIiioAQJOaMGGC7r33XvXu3VtjxoxRcXGxZsyYoV/96lc12n7//fcaMmSIbr/9dn377bcaMWKEhg8fri+++ELZ2dn67W9/G3Uf4XBY48aN04wZM9S9e3edd9556tixoyTpf//7nwYNGqRnn31WGRkZOvfcc5WWlqYJEyYoNze3xrauvvpqSdITTzwRdV8rVqzQV199pdGjR6tbt24NfFf2WbRokSTp0ksvbfA25s2bp+OPP15z5sxR27Ztde655yorK0svvPCCBg0apHfeeada+wkTJsjtdmvBggXavXt3je0tX75c33zzjbp3766TTz65wXkBQLNlAgBQT5LM+v4XUvmco48+2tyxY4e1fPPmzWZGRoYpyfzf//5X7Tlnn322Kcm84YYbzPLycmv5t99+aw4cONCUZC5atCjqfnr06GF+8803NfIYPXq0Kcn8zW9+YwaDQWv54sWLTa/Xa0oyR4wYUe05J598sinJ/Pjjj2ts7xe/+IUpyXz++efr9D5cccUVpiRz2bJlNdb5/X7TMAxTUtTc6yI/P99MS0sz09PTzSVLllRbt2jRItPr9ZpHHHGEWVFRUW3dmDFj/r+9ewuJaovDAP7NqakxDcxMzUzxlppBPmQWXchMUkrzQhmFKNJVm26KPggZPYyCNYV4eVCySMehsnyqdKio0NCH1CmssCKZLgTipGVOQc55kJmc9oynme051vH7gQ+uvdfay/32udb6byMAY3V1tWDMrKwsIwBjUVGRzecWFRUZARhra2sdmjcR0Z+MK1VEROSwiUqqNzU1We1TVlYGLy8v8+/+/v7m7Wfjy3p3dXXhxo0biIyMhFKpxOzZs83XPD09zdvxqqqqrD6nuLgYixYtsmh78eIFbt++DVdXV5SWllqcVdq8eTN27Nhh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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "e_bins = np.logspace(-1, 3, 101) # in EeV as default output unit \n", + "dE = np.diff(e_bins) \n", + "\n", + "dNdE_full = np.histogram(df_full.E, bins = e_bins)[0] \n", + "dNdE_first = np.histogram(df_first_half.E, e_bins)[0] \n", + "dNdE_second = np.histogram(df_second_half.E, e_bins)[0]\n", + "assert np.all(dNdE_full == (dNdE_first + dNdE_second))\n", + "\n", + "plt.figure(dpi = 150) \n", + "plt.stairs(dNdE_full, label = \"full simulation\")\n", + "plt.stairs(dNdE_first, label = \"first half\", ls = \"--\")\n", + "plt.stairs(dNdE_second, label = \"second half\", ls = \"--\")\n", + "plt.loglog()\n", + "plt.legend()\n", + "plt.ylabel(\"# particles\")\n", + "plt.xlabel(\"Energy [GeV]\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# check ID number of particles" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "id_list_full = list(df_full.ID)\n", + "id_list_full.sort() \n", + "assert np.all(id_list_full == np.arange(100_000))" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "id_list_continued = list(df_first_half.ID) + list(df_second_half.ID)\n", + "id_list_continued.sort() \n", + "assert np.all(id_list_continued == np.arange(100_000))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "CRP_Interrupt", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/doc/pages/example_notebooks/interrupting_simulations/interrupt_source.ipynb b/doc/pages/example_notebooks/interrupting_simulations/interrupt_source.ipynb new file mode 100644 index 000000000..91069e6db --- /dev/null +++ b/doc/pages/example_notebooks/interrupting_simulations/interrupt_source.ipynb @@ -0,0 +1,342 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# interruption a CRPropa simulation with a source and secondaries" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "from crpropa import * \n", + "import pandas as pd \n", + "import numpy as np \n", + "import matplotlib.pyplot as plt " + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "def read_crp(file): \n", + " with open(file, \"r\") as f: \n", + " names = f.readline().strip(\"\\n\").split(\"\\t\")[1:]\n", + " \n", + " return pd.read_csv(file, delimiter=\"\\t\", comment =\"#\", names = names)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## full simulation" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "crpropa::ModuleList: Number of Threads: 12\n", + "Run ModuleList\n", + " Started Wed Sep 4 16:05:00 2024 : [\u001b[1;32m Finished \u001b[0m] 100% Needed: 00:01:49 - Finished at Wed Sep 4 16:06:49 2024\n", + "\r" + ] + } + ], + "source": [ + "n_sim = int(100)\n", + "\n", + "def get_sim(file):\n", + " sim = ModuleList() \n", + " sim.add(SimplePropagation())\n", + "\n", + " # add EM interactions \n", + " photon_fields = [CMB(), IRB_Gilmore12()]\n", + " for field in photon_fields:\n", + " sim.add(EMInverseComptonScattering(field, True)) # allow photons\n", + " sim.add(EMPairProduction(field, True)) # allow electrons \n", + " sim.add(EMDoublePairProduction(field, True))\n", + " sim.add(EMTripletPairProduction(field, True))\n", + "\n", + " sim.add(MinimumEnergy(10 * GeV))\n", + "\n", + " sub_dir = \"cascade/\"\n", + " out = TextOutput(f\"{sub_dir}/{file}\")\n", + " out.setEnergyScale(TeV)\n", + " obs = Observer() \n", + " obs.add(Observer1D())\n", + " obs.add(ObserverInactiveVeto())\n", + " obs.onDetection(out)\n", + " sim.add(obs) \n", + "\n", + " source = Source() \n", + " source.add(SourceParticleType(22))\n", + " source.add(SourcePosition(Vector3d(50 * Mpc, 0, 0)))\n", + " # source.add(SourcePowerLawSpectrum(1 * TeV, 500 * TeV, -1.5))\n", + " source.add(SourceEnergy(100 * TeV))\n", + "\n", + " sim.setShowProgress(True)\n", + " return source, sim \n", + "\n", + "source, sim = get_sim(\"full.txt\")\n", + "sim.run(source, n_sim)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "# load data \n", + "df_full = read_crp(\"cascade/full.txt\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## interrupted simulation" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "crpropa::ModuleList: Number of Threads: 12\n", + "Run ModuleList\n", + " Started Wed Sep 4 16:12:35 2024 : [=====> ] 58% Finish in: 00:00:44 \r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "crpropa::ModuleList: Signal 2 (SIGINT/SIGTERM) received\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Started Wed Sep 4 16:12:35 2024 : [=====> ] 58% Finish in: 00:00:43 \r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "############################################################################\n", + "# Interrupted CRPropa simulation \n", + "# Number of not started candidates from source: 41\n", + "############################################################################\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[55], line 6\u001b[0m\n\u001b[1;32m 3\u001b[0m interrupt_out \u001b[38;5;241m=\u001b[39m TextOutput(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcascade/on_interrupt.txt\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 4\u001b[0m sim\u001b[38;5;241m.\u001b[39msetInterruptAction(interrupt_out)\n\u001b[0;32m----> 6\u001b[0m sim\u001b[38;5;241m.\u001b[39mrun(source, n_sim)\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "source, sim = get_sim(\"interrupt_1.txt\")\n", + "\n", + "interrupt_out = TextOutput(f\"cascade/on_interrupt.txt\")\n", + "sim.setInterruptAction(interrupt_out)\n", + "\n", + "sim.run(source, n_sim)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "df_1 = read_crp(f\"cascade/interrupt_1.txt\") # at state of interruption" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "crpropa::ModuleList: Number of Threads: 12\n", + "Run ModuleList\n", + " Started Wed Sep 4 16:13:45 2024 : [\u001b[1;32m Finished \u001b[0m] 100% Needed: 00:00:41 - Finished at Wed Sep 4 16:14:26 2024\n", + "\r" + ] + } + ], + "source": [ + "n_missing = 41 # taken from output -> will be different on each try\n", + "\n", + "source, sim = get_sim(\"interrupt_2.txt\")\n", + "sim.run(source, n_missing) # use modulelist and source as previously defined" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [], + "source": [ + "df_2 = read_crp(f\"cascade/interrupt_2.txt\")" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of loaded particles: 16527\n", + "crpropa::ModuleList: Number of Threads: 12\n", + "Run ModuleList\n", + " Started Wed Sep 4 16:14:27 2024 : [\u001b[1;32m Finished \u001b[0m] 100% Needed: 00:00:00 - Finished at Wed Sep 4 16:14:27 2024\n", + "\r" + ] + } + ], + "source": [ + "# close outputfile before reading \n", + "interrupt_out.close()\n", + "\n", + "\n", + "pc = ParticleCollector()\n", + "pc.load(\"cascade/on_interrupt.txt\")\n", + "\n", + "print(\"number of loaded particles:\", pc.size())\n", + "\n", + "# run simulation with missing particles\n", + "source, sim = get_sim(\"interrupt_3.txt\")\n", + "sim.run(pc.getContainer())" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [], + "source": [ + "df_3 = read_crp(\"cascade/interrupt_3.txt\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# show spectrum at earth" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "e_bins = np.logspace(-2, 2, 51)\n", + "dE = np.diff(e_bins)\n", + "e_mid = 0.5 * (e_bins[1:] + e_bins[:-1])\n", + "\n", + "get_dnde = lambda df: np.histogram(df[df.ID == 22].E, bins = e_bins)[0]/dE \n", + "\n", + "dNdE_full = get_dnde(df_full)\n", + "dNdE_1 = get_dnde(df_1)\n", + "dNdE_2 = get_dnde(df_2)\n", + "dNdE_3 = get_dnde(df_3) \n", + "\n", + "plt.figure(dpi = 150)\n", + "plt.scatter(e_mid, e_mid**2 * dNdE_full, label = \"full sim\") \n", + "plt.scatter(e_mid, e_mid**2 * dNdE_1, label = \"finished particles\", marker =\"o\",)\n", + "plt.scatter(e_mid, e_mid**2 * dNdE_2, label = \"not startet particles\", marker =\"x\")\n", + "plt.plot(e_mid, e_mid**2 * dNdE_3, label = \"on the fly particles\", fillstyle=\"none\", ls = \"\",marker =\"o\", color = \"tab:red\")\n", + "\n", + "plt.plot(e_mid, e_mid**2 * (dNdE_1 + dNdE_2 + dNdE_3), label =\"total (interrupted)\", color =\"k\")\n", + "\n", + "\n", + "plt.loglog() \n", + "plt.xlabel(r\"$E_\\gamma$ [TeV]\")\n", + "plt.ylabel(r\"$E^2 \\, dN/dE$ [a.u.]\")\n", + "plt.legend(loc = \"lower center\", ncol = 3, bbox_to_anchor=(0.5, 1.))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "CRP_Interrupt", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/doc/pages/interrupting-simulations.rst b/doc/pages/interrupting-simulations.rst new file mode 100644 index 000000000..43b3e35ee --- /dev/null +++ b/doc/pages/interrupting-simulations.rst @@ -0,0 +1,9 @@ +Interrupting simulations on runtime +------------------------------------------------ + +.. toctree:: + + example_notebooks/interrupting_simulations/interrupt_candidateVector.ipynb + example_notebooks/interrupting_simulations/interrupt_source.ipynb + +