{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# A toy model\n", "\n", "Let's run a random walk (a bunch of particles moving randomly) in a periodic 2-dimensional domain (a torus), and let's diagnose their center of mass (mean of all positions) and moment of inertia (variance of all positions) after each move." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Tech preamble" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import numpy as np\n", "from matplotlib import pyplot as plt\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A typical piece of scientific software\n", "\n", "Typical scientific software looks like this: There's a piece of code that does it all. There are hardly any abstractions. Dependencies are hard to figure out, etc.\n", "\n", "See for example [Johanson and Hasselbring (2018)](https://ieeexplore.ieee.org/document/8254315) for an overview of the state of scientific software." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def run_random_walk(\n", " length_x=10,\n", " length_y=20,\n", " number_particles=100,\n", " number_steps=100,\n", " step_length=0.5\n", "): \n", " # initialize particle positions\n", " x = np.full((number_particles, ), length_x / 2)\n", " y = np.full((number_particles, ), length_y / 2)\n", "\n", " # initialize diagnostics\n", " center_of_mass_x = np.empty((number_steps, ))\n", " center_of_mass_x[0] = x.mean()\n", " \n", " center_of_mass_y = np.empty((number_steps, ))\n", " center_of_mass_y[0] = y.mean()\n", " \n", " moment_of_inertia = np.empty((number_steps, ))\n", " moment_of_inertia[0] = x.var() + y.var() \n", " \n", " # main loop\n", " for step in range(number_steps - 1):\n", " x += step_length * (\n", " np.random.normal(size=(number_particles, ))\n", " )\n", " x = np.mod(x, length_x)\n", "\n", " y += step_length * (\n", " np.random.normal(size=(number_particles, ))\n", " )\n", " y = np.mod(y, length_y)\n", "\n", " center_of_mass_x[step+1] = x.mean()\n", " center_of_mass_y[step+1] = y.mean()\n", " moment_of_inertia[step+1] = x.var() + y.var()\n", " \n", " return center_of_mass_x, center_of_mass_y, moment_of_inertia, x, y" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But the typical user of scientific software doesn't look at this anyway. They see:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "(\n", " center_of_mass_x, center_of_mass_y,\n", " moment_of_inertia,\n", " x, y\n", ") = run_random_walk(number_steps=1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data and visualizations\n", "\n", "And then, they look at data:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAeD0lEQVR4nO3df7Ad5X3f8ffH4toVOK2gCAICLDplVNvxAMkdjKtpBkMMGKihrl1Dpi5NcBUydmoyLq1wZwyDO4kyJE7TuGNHsVXjlhBcfsiMoQYN8gwJE1OuEDZgoFDAcCUVXQfEj6LUEnz7xz0XX13tufecs3t293n285rR3Hv27Dnn2as93332+3z3WUUEZmaWr7c13QAzMxsvB3ozs8w50JuZZc6B3swscw70ZmaZO6TpBhQ58sgjY/Xq1U03w8wsGdu2bftJRKwseq6VgX716tVMTU013Qwzs2RI+nG/55y6MTPLnAO9mVnmlgz0ko6X9D1Jj0l6VNJne8uPkLRF0pO9n4f3ef2lvXWelHRp1RtgZmaLG6RHvx/4XES8Gzgd+LSk9wDrgXsi4iTgnt7jA0g6ArgaeD9wGnB1vwOCmZmNx5KBPiJ2RcSDvd9fBR4DVgEXAtf3VrseuKjg5ecAWyLixYh4CdgCnFtFw83MbDBDVd1IWg2cCtwPHB0Ru2D2YCDpqIKXrAKen/d4ures6L3XAesATjjhhGGaZWbW1+btO7jurifYuWcvx65YzpXnrOGiUwvDULYGHoyV9E7gFuCKiHhl0JcVLCucLjMiNkbEZERMrlxZWApqZjaUzdt3cNWtD7Njz14C2LFnL1fd+jCbt+9oumm1GijQS5pgNsjfEBG39ha/IOmY3vPHALsLXjoNHD/v8XHAztGba2Y2uOvueoK9+944YNnefW9w3V1PNNSiZiyZupEk4OvAYxHxpXlP3Q5cCmzo/fx2wcvvAn5n3gDs2cBVpVpsNqRBT919ip+fnXv2DrU8V4Pk6NcCnwQelvRQb9nnmQ3w35J0GfAc8HEASZPA5RHxqYh4UdIXgQd6r7s2Il6sdAusUW0PjnOn7nO9urlTd+CAdg66nqXl2BXL2VEQ1I9dsbyB1jRHbbzD1OTkZHgKhOqMKxgvDI4AyyeW8bsffV9rguPaDVsLv+irViznvvVnDr2epSWFfbQqkrZFxGTRc62c68aqM86e6mL5z7Z8iQY9dfcp/vg1cfY39/5tPuusgwN95sYZjEcJjnV/2Qc9dfcp/ng1mRq76NRVnQvsC3mum8yNs6faLwj2W95EqduV56xh+cSyA5Ytn1jGleesGWk9G42rX5rlQJ+5YYPxMIYNjk182S86dRW/+9H3sWrFcsRszr0oPzvoejYap8aa5dRN5q48Z03hYFQVPdVh859NfdkHPXX3Kf74ODXWLAf6zI17MGqY4Ogve3eNs8NhS3Og74C29FT9Ze8uV780y4HeauMve7e1pcNRh2Gry8ZdjeZAb7Xq0pfdummxUlI4uKMDjL301FfGmplVqN9V1iuWT/D/9r95QOpSwPKJt/H6vjcPWn/Yq7J9ZayZWU36VZHt2bvvoGUBhUF+sfcZhevozcwqVFUVWZXVaA70ZmYV6nch4eGHTgz8HlVXo3U6ddP2KXbNbHFt/A73qy4D+O2bHiq8xd6K5RMc9o5DXHVTNc8/bla9OgNvm7/D/arLpn78Ijd8/7kDgv3yiWVc85H3jrXNnU3deJIls2qNY9K6zdt3sHbDVk5cfwdrN2w94L1S/A7/h4vexx9+4pTa51Qa5FaCm4ALgN0R8Qu9ZTcBcwmkFcCeiDil4LXPAq8CbwD7+5X+NMGTLJlVq+opsZfqsaf6HW7iWpJBevTfAM6dvyAiPhERp/SC+y3ArUUv7Plgb93WBHkY76yOZl1UdeBdqsfu7/Dglgz0EXEvUHif196Nw/8ZcGPF7Ro7zz9uVq2qA+9SBw5/hwdXNkf/j4AXIuLJPs8HcLekbZLWLfZGktZJmpI0NTMzU7JZS/P842azFsuDD6PqwLvUgcPf4cENNAWCpNXAd+Zy9POWfwV4KiL+oM/rjo2InZKOArYAv9U7Q1iUp0Awq0fVN8+usuqmSzf2rsJYpkCQdAjwUeCX+q0TETt7P3dLug04DVgy0NvPtLFO2PJR9QBqlQONnu20OmXq6H8FeDwipouelHQY8LaIeLX3+9nAtSU+r3PaXCdseWiqcmXQDoxnO63Gkjl6STcCfwWskTQt6bLeUxezYBBW0rGS7uw9PBr4S0k/AP4ncEdEfLe6pucvxTphS0sTlStN3CS+65bs0UfEJX2W/8uCZTuB83q/Pw2cXLJ9nZZqnbClo6q7fg2TYqw6XWRL6+wUCCnwPVZt3KrIgw+bYnQHpn4O9C3me6xaHcrmwYftobsDU7/OznWTAtcJWwqG7aHnfKFTVdckVM09+pZz1YG13bA99FzLJttcJedAb2aljJJizLED0+ZBZgd6Mysltx76qBcptnmQ2YHezErLpYdeJv3S5kFmD8aamfWUuUixzYPM7tGbmfWUSb+0OYXlQG/WYp7Urr9x/G3Kpl/amsJy6sZq19Za47bxnDD9Ff1trrjpIU699u5Sf582p1/KcKC3Wjl4Dc6T2vVX9LcBeOn1faX2p1wvUnTqxmrV5lrjtmlzuV7TFvsblN2f2pp+KcOB3mrl4DW4psv12jw+0O9vM8f704GcurFaNTH/eaqazBe3PcVW9LeZr4r9KaexJAd6q1Wug13j0GS+uO3jA3N/mxXLJw56ror9qe0HumEtmbqRtAm4ANg9d3NwSdcA/wqY6a32+Yi4s+C15wJ/BCwDvhYRGypqtyWqzbXGbdRUvjiFFNvc32YcKaalDnSp7b+KiMVXkH4ZeA345oJA/1pE/P4ir1sG/C/gQ8A08ABwSUT8aKlGTU5OxtTU1KDbYGYVW7tha2EOfNWK5dy3/swGWlSvE9ffQb/IuHxi2UETuA16pjXOcQ9J2yJisui5JVM3EXEv8OIIn3sa8FREPB0RPwX+HLhwhPexjsgpJ5q6rqfY+uX4l0kjp7SaTAeVydF/RtIPJW2SdHjB86uA5+c9nu4tKyRpnaQpSVMzMzP9VrNM5ZYTTV2u9eSD6nege6NPBmSQlFaT4x6jlld+BfgiEL2ffwD8+oJ1VPC6vnmiiNgIbITZ1M2I7bJEub6+fXKsJx9Uv7Gk6+56YuSS1ybHPUYK9BHxwtzvkv4U+E7BatPA8fMeHwfsHOXzLB05zuVt3dTvQDfqfZybvC5ipEAv6ZiI2NV7+E+ARwpWewA4SdKJwA7gYuBXR2qlJSHXubwtf4t1UBY+909/aRXfe3xm6M7MKHfiqsog5ZU3AmcAR0qaBq4GzpB0CrOpmGeB3+iteyyzZZTnRcR+SZ8B7mK2vHJTRDw6lq2wViiTfmnyS2DdtlgHBTjouVu27RhpvKLJ0uIlyyub4PLKNPUrSRPwzIbzl3x9my+5t3apcl9ZrJQUSKbMdLHySs91Y5XJdS5va5cyKcIio4wPpTZ25CkQrDJdr722elRdprjY/Eu5zM3kQG+V6XrttdWj6gqtxToouXRenLoZs67lnZ1+sXGrukJrkEHS1L/DHowdo4W5RBhuXoy26NrBytotl+9V1UrNdWOja/tUr4Pw1ATWNk4RDs+pmxEN0svN4WpPT01gbeQU4XAc6EcwaHlXDld75nCwMqtSiqnM7FI3dUx1O2hKJocR+1zKy8yqkGoqM6tAX9d/wqC93KpziU3M157DwcqsKqmOu2WVuqkrnzxMSqaqXGLVVwMOyrf+M/uZVFOZWQX6uv4TmpiAq8lBUQ982biklu9Oddwtq9RNXfnkJsq7Uu1JmPWTYr471VRmVj36Onvadfdyy/QkUus1WTekWLqbaiozq0Cf6n/CIEY9iDWV27fmtf0An+pZaoqpzKwCPaT5nzCIUQ9iKfaarLwUDvCp5rsXavsBFTIM9Dkb5SCWaq/JyknhAJ/DXcVSOKDCAIOxkjZJ2i3pkXnLrpP0uKQfSrpN0oo+r31W0sOSHpI09lnKmqgzbztf8NRNKRzgc5izJpW6+kF69N8Avgx8c96yLcBVvfvC/h5wFfDv+rz+gxHxk1KtHEAqR9a65dBrsuGlkhZJPdWawgEVBujRR8S9wIsLlt0dEft7D78PHDeGtg0llSNr3XLoNdnwUi0DTM0wZ8xNZhyqyNH/OnBTn+cCuFtSAH8SERv7vYmkdcA6gBNOOGHoRqRyZG1C6r0mG17OFWhtMugZc9MZh1KBXtK/B/YDN/RZZW1E7JR0FLBF0uO9M4SD9A4CG2H2xiPDtmUcp6opjKab9eMD/PgNekBtenB85EAv6VLgAuCs6HObqojY2fu5W9JtwGlAYaAvq+pcdNNHYDNLQ9EBdWEnsagTCvVlHEaaAkHSucwOvn4kIl7vs85hkn5u7nfgbOCRonWrUHUu2jl/MxtF0dQO6rNuXYPjS/boJd0InAEcKWkauJrZKpt3MJuOAfh+RFwu6VjgaxFxHnA0cFvv+UOAP4uI745lK3qqPFV1zj99Tr1ZE4o6iQGo93NOnYPjSwb6iLikYPHX+6y7Eziv9/vTwMmlWtegVMrTrJhTb9aUfp3BYDbT0ETHw1fG9uH687Q1Pfhl3dWvk7hqxXLuW39mAy3KbJriKrn+PG1OvVlT2ngNg3v0i3B5WrqcerOmtPEahmwCvQfebD6n3qxJbeskZhHoPfBmC7WxV2XWlCwCvQferEjbelVmc+rOQGQR6D3wZmapaCIDkUXVjedcN7NUNHHVfRaBvo3lTGZmRZrIQGQR6F3zbmapaCIDkUWOHjzwZmZpaKL0N5tAb2aWgiZKf7MM9L54yszarO4MRHaB3hdPmZkdKIvB2Pl8wxAzswNl16P3xVPWRU5X2mIG6tFL2iRpt6RH5i07QtIWSU/2fh7e57WX9tZ5snef2bHyxVPWNUW3rrvq1ofZvH1H001rpc3bd7B2w1ZOXH8Hazds7cTfadDUzTeAcxcsWw/cExEnAff0Hh9A0hHM3nrw/czeGPzqfgeEqrTx4qku7lhWH6crB9fVg+JAgT4i7gVeXLD4QuD63u/XAxcVvPQcYEtEvBgRLwFbOPiAUam2XTzV1R3L6lNVurILHZKuHhTL5OiPjohdABGxS9JRBeusAp6f93i6t+wgktYB6wBOOOGEEs1q18VTnlnTxq2Km6x0pVqtq2N44666UcGyKFhGRGyMiMmImFy5cuWYm1Wfru5YVp8q0pW59XT7nZ10dQyvTKB/QdIxAL2fuwvWmQaOn/f4OGBnic9MTld3LKtPFenKnDoki6VL2ziGV4cyqZvbgUuBDb2f3y5Y5y7gd+YNwJ4NXFXiM5PjW9pZHcqmK3O6x+5iZyf3rT/zrXW6VIo6UKCXdCNwBnCkpGlmK2k2AN+SdBnwHPDx3rqTwOUR8amIeFHSF4EHem91bUQsHNTNmm9pZynIqUOy1NlJm8bw6jJQoI+IS/o8dVbBulPAp+Y93gRsGql1mejijmVpyalDktPZSVWyuzLWzEaTS4ckp7OTqjjQm1lWcjo7qYoDvZllJ5ezk6o40NsBPDmWWX4c6O0tXbk60gcz65rs5qO30eV2dWQRzz1kXeRAb2/J6erIfrpwMDNbyIHe3tKF6Rq6cDAzW8iB3t7ShXlAunAwM1vIgd7e0ra5/MehCwczs4VcdWMHyL3+2BfTWBc50Fvj6i53zP1gZraQA701qiu1+2ZNco7eGuVyR7Pxc6C3Rrnc0Wz8nLqxkVSVV19x6AQvvb7voOUudzSrzsg9eklrJD00798rkq5YsM4Zkl6et84XyjfZmlbVNAKbt+/gtb/Zf9DyiWVyuaNZhUbu0UfEE8ApAJKWATuA2wpW/YuIuGDUz7H2WSyvPkyv/rq7nmDfm3HQ8sPefkijA7Ge9MxyU1Xq5izgf0fEjyt6P2uxqvLq/dZ/ee/BqZy6uArIclTVYOzFwI19nvuApB9I+h+S3tvvDSStkzQlaWpmZqaiZtk4VDWNQBunI3AVkOWodKCX9HbgI8B/L3j6QeBdEXEy8MfA5n7vExEbI2IyIiZXrlxZtlk2RlVNI9DG6QhcBWQ5qqJH/2HgwYh4YeETEfFKRLzW+/1OYELSkRV8pjWoqjlx2ji3ThvPMszKqiJHfwl90jaSfh54ISJC0mnMHlj+uoLPtIZVNY1A26YjuPKcNQfk6KH5swyzskoFekmHAh8CfmPesssBIuKrwMeA35S0H9gLXBwRB5dZmLWEJz2zHKmNcXdycjKmpqaaboaZWTIkbYuIyaLnOn9lrGumzSx3nQ70rpk2sy7o9KRmrpk2sy7odKB3zbSZdUGnA71rps2sCzod6Nt4ZaaZWdU6PRjrmmkz64JOB3po35WZo+pymWgXt72L22yj63ygz0Gby0THHZDavO3j0sVttnI6naPPRVvLRKu6E9Vi2rrt49TFbbZyHOgz0NYy0ToCUlu3fZy6uM1WjlM3GTh2xXJ2FHzJmy4TrSMgtXXbx6mL21yFLo9ruEefgbaWidZxnUJbt32curjNZdWRRmwzB/oMtPEGHlBPQGrrto9TF7e5rK6Pa3iaYhvIqKe9XT5dtvY4cf0dFEU6Ac9sOL/u5oyFpym2UsqU8+VynYKlrevjGlXcHPxZSQ9LekjSQd1wzfpPkp6S9ENJv1j2M61eXT/ttfR1fVyjqh79ByPiJ32e+zBwUu/f+4Gv9H4mrUspCZfzWeq6Pt1JHambC4Fv9u4V+31JKyQdExG7avjssejalYldP+21PHQ5jVhF1U0Ad0vaJmldwfOrgOfnPZ7uLTuApHWSpiRNzczMVNCs8elaKqPrp732M5u372Dthq2cuP4O1m7Y2pnyxNRV0aNfGxE7JR0FbJH0eETcO+95FbzmoAHwiNgIbITZqpsK2jU2XUtldP2012Z17Uy2nxTTtqUDfUTs7P3cLek24DRgfqCfBo6f9/g4YGfZz21SF1MZXT7tHUSKX/5hLXYmm9u29pPqwa5U6kbSYZJ+bu534GzgkQWr3Q78i171zenAyynn58GpDDtQV6667NqZbJFU07Zle/RHA7dJmnuvP4uI70q6HCAivgrcCZwHPAW8Dvxayc+sTb9emlMZNl+qPd1hz0K6eCa7UKoHu1KBPiKeBk4uWP7Veb8H8Okyn9OEpU7RnMqwOSl++UdJQVx5zpoDXgPdO5NN9WDnuW76SPUUzeqX4k3mR9m/PcdOumlbT4HQR4q9NGtGij3dUffvOs5k2zywnWra1oG+j1RP0ax+KX7527p/p1DVkmLa1oG+jxR7adac1L78bd2/Ux3YbjsH+j5S7KWZDWrc+/eo6RenTMfDgX4RqfXSzIYxrv27TPqlrSml1LnqxmrjeVK6oUzFWhurWnLYb92jt1qkMMhWpTZXjoxbmfRL21Kmuey3DvRWiy4NsuUSHEZVNv3SppRpLvutUzdWiy4NsnX9Yrs2pl9Glct+60BvtUjx6tFR5RIcRpXTFbS57LdO3Vgt2lq3PQ6uHGlX+qWMXPZbB/oadXmArk2DbOP+f8glOFi79tsyNDu5ZLtMTk7G1NRU082o1MIBOpj98qd6Spuquv4funxQt2ZI2hYRk0XPuUdfk1xG71NX1/9DLqkLy4MHY2vSbyBux569yV6EkaKuD5RaN40c6CUdL+l7kh6T9Kikzxasc4aklyU91Pv3hXLNTddiA3G53nqujXKpomibHK4ezVmZHv1+4HMR8W7gdODTkt5TsN5fRMQpvX/Xlvi8pBXVFs/XpTrrJuVU490WXblnbspGDvQRsSsiHuz9/irwGOCkZB/za4v7cfpg/HKq8W6Lrl8gloJKBmMlrQZOBe4vePoDkn4A7AT+TUQ8WsVnpmhugG7thq2dr7NukgdKq+Vxj/YrPRgr6Z3ALcAVEfHKgqcfBN4VEScDfwxsXuR91kmakjQ1MzNTtlmt5vSB5cTjHu1XKtBLmmA2yN8QEbcufD4iXomI13q/3wlMSDqy6L0iYmNETEbE5MqVK8s0q/WcPqiGBwDbwR2X9hs5dSNJwNeBxyLiS33W+XnghYgISacxe2D561E/Mye5pA+aujCo6zNEtkkuV4/mrEyOfi3wSeBhSQ/1ln0eOAEgIr4KfAz4TUn7gb3AxdHGS3FtJE0GW1+AVq+lDui5dFxyNXKgj4i/BLTEOl8GvjzqZ1i7NRlsPQBYH589pc9XxtrImgy2HgCsj8sn0+dAb0OZPwD6NhWf0NURbD0AWB+fPaXPk5rZwBaewr9RMNxSV7D1AGB9PL9++hzobWBFp/AAyyTejKg92HoAsB6eXz99DvQ2sH6n6m9G8MyG82tuzXh4HvmD+ewpfQ70NrDcT+FdXdJfV8+ecjnwezDWBpb7AKirS2y+nGbldI/eBpb7KXxq1SWp9TZTa29OF+V1JtCntpONoo5tzPkUPqXUVGppptTaC+kd+BfTidRNTqdg/XRhG8ctpdRUammm1NoLeV2U14lAn+JONqwubOO41TGraFUzbqbW20ytvZDWgX8pnUjdpLiTDasL21iHcaamitIXV978A665/VFe3rtvqHRbSmkmSK+9kNeYVCcCfYo72ZxB8+4pb2NXFJ117Xsj2LN3HzBc3jq1i5hSa++cXMakOpG6SfUUbJi8e6rb2CWDnF0Nmm5L7eY1qbU3N53o0ad6CjZMeVeV29iFCqUm9DvrWmjQdFtqvc3U2puTTgR6SHMnGzbvXsU2plgGl4qi9EURp9usap1I3aSqifKufmcR19z+6Ng+sysWpi8OP3SCibcdONWz0202DmVvDn6upCckPSVpfcHz75B0U+/5+yWtLvN5XdNE3r3f2cKevftck1+Bi05dxX3rz+SZDeez/Qtnc93HT3be2sauzM3BlwH/GfgQMA08IOn2iPjRvNUuA16KiL8v6WLg94BPlGlwlzQxtrBYHjnFS7/bLsWUoqWnTI7+NOCpiHgaQNKfAxcC8wP9hcA1vd9vBr4sSb5B+ODqDgRXnrOGK256qPA51+SbpalM6mYV8Py8x9O9ZYXrRMR+4GXg7xa9maR1kqYkTc3MzJRolpVx0amrOPzQicLnPEholqYygb7ohqELe+qDrDO7MGJjRExGxOTKlStLNMvKuvofv9c1+WYZKZO6mQaOn/f4OGBnn3WmJR0C/B3gxRKfaTVI9boDMytWJtA/AJwk6URgB3Ax8KsL1rkduBT4K+BjwFbn59PgQUKzfIwc6CNiv6TPAHcBy4BNEfGopGuBqYi4Hfg68F8lPcVsT/7iKhptZmaDK3VlbETcCdy5YNkX5v3+N8DHy3yGmZmV4ytjzcwy50BvZpY5B3ozs8ypjUUwkmaAHw+4+pHAT8bYnDbr6rZ7u7vF2z2Yd0VE4UVIrQz0w5A0FRGTTbejCV3ddm93t3i7y3Pqxswscw70ZmaZyyHQb2y6AQ3q6rZ7u7vF211S8jl6MzNbXA49ejMzW4QDvZlZ5pIO9EvdszZHko6X9D1Jj0l6VNJnm25TnSQtk7Rd0neabkudJK2QdLOkx3v/9x9ouk11kPTbvf38EUk3SvpbTbdpHCRtkrRb0iPzlh0haYukJ3s/Dx/1/ZMN9PPuWfth4D3AJZLe02yrarEf+FxEvBs4Hfh0R7Z7zmeBx5puRAP+CPhuRPwD4GQ68DeQtAr418BkRPwCs7Pk5joD7jeAcxcsWw/cExEnAff0Ho8k2UDPvHvWRsRPgbl71mYtInZFxIO9319l9gvfiYnjJR0HnA98rem21EnS3wZ+mdlpv4mIn0bEnmZbVZtDgOW9GxcdysE3N8pCRNzLwTdluhC4vvf79cBFo75/yoF+kHvWZk3SauBU4P5mW1Kb/wj8W+DNphtSs78HzAD/pZe2+pqkw5pu1LhFxA7g94HngF3AyxFxd7OtqtXREbELZjt4wFGjvlHKgX7g+9HmSNI7gVuAKyLilabbM26SLgB2R8S2ptvSgEOAXwS+EhGnAv+XEqfxqejlpC8ETgSOBQ6T9M+bbVWaUg70g9yzNkuSJpgN8jdExK1Nt6cma4GPSHqW2TTdmZL+W7NNqs00MB0Rc2duNzMb+HP3K8AzETETEfuAW4F/2HCb6vSCpGMAej93j/pGKQf6t+5ZK+ntzA7S3N5wm8ZOkpjN1T4WEV9quj11iYirIuK4iFjN7P/11ojoRO8uIv4P8LykNb1FZwE/arBJdXkOOF3Sob39/iw6MAg9z9w9t+n9/Paob1TqVoJN6nfP2oabVYe1wCeBhyU91Fv2+d5tHS1fvwXc0OvUPA38WsPtGbuIuF/SzcCDzFabbSfT6RAk3QicARwpaRq4GtgAfEvSZcwe9Ea+LaunQDAzy1zKqRszMxuAA72ZWeYc6M3MMudAb2aWOQd6M7PMOdCbmWXOgd7MLHP/H9Xx4AdkBaI2AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(x, y);" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
center_of_mass_xcenter_of_mass_ymoment_of_inertia
step
05.00000010.0000000.000000
14.97676410.0779560.448184
24.90657310.0558320.950142
34.91722910.0968901.571212
44.87387810.0936182.276138
............
9955.55299010.88219846.604325
9965.25038210.81070147.134947
9975.06028810.50520148.048083
9985.26464110.28385647.273895
9995.37852010.12772547.361438
\n", "

1000 rows × 3 columns

\n", "
" ], "text/plain": [ " center_of_mass_x center_of_mass_y moment_of_inertia\n", "step \n", "0 5.000000 10.000000 0.000000\n", "1 4.976764 10.077956 0.448184\n", "2 4.906573 10.055832 0.950142\n", "3 4.917229 10.096890 1.571212\n", "4 4.873878 10.093618 2.276138\n", "... ... ... ...\n", "995 5.552990 10.882198 46.604325\n", "996 5.250382 10.810701 47.134947\n", "997 5.060288 10.505201 48.048083\n", "998 5.264641 10.283856 47.273895\n", "999 5.378520 10.127725 47.361438\n", "\n", "[1000 rows x 3 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = pd.DataFrame()\n", "data[\"center_of_mass_x\"] = center_of_mass_x\n", "data[\"center_of_mass_y\"] = center_of_mass_y\n", "data[\"moment_of_inertia\"] = moment_of_inertia\n", "data[\"step\"] = np.arange(len(data))\n", "data.set_index(\"step\")" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "data.plot(x=\"step\");" ] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:climnum-exercise]", "language": "python", "name": "conda-env-climnum-exercise-py" }, "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.7.4" } }, "nbformat": 4, "nbformat_minor": 4 }