{ "cells": [ { "cell_type": "markdown", "id": "36cbb85d-b0ed-437f-8c73-a339583b2287", "metadata": {}, "source": [ "# Feature thoughts" ] }, { "cell_type": "markdown", "id": "35dc14dc-f9cb-4a01-8dfd-9ac72ad9f0ff", "metadata": {}, "source": [ "## Atom manipulation" ] }, { "cell_type": "markdown", "id": "dcf973cb-0fc0-41b7-8877-61b7ef59d2da", "metadata": {}, "source": [ "A direction we want to go in is also atom manipulation in a robust manner. To this end we need a set of methods that can access atom and manipulate them." ] }, { "cell_type": "markdown", "id": "210bdbb8-1720-4ab3-9c80-47777e21f289", "metadata": {}, "source": [ "#### How to access atoms?" ] }, { "cell_type": "code", "execution_count": 1, "id": "4ea65fe7-85c9-409f-b021-cf394da9220a", "metadata": {}, "outputs": [], "source": [ "import pyscal.crystal_structures as pcs\n", "from pyscal.core import System\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import warnings" ] }, { "cell_type": "code", "execution_count": 2, "id": "f9deafb9-b879-4b6d-aa45-ad6153d271b9", "metadata": {}, "outputs": [], "source": [ "atoms, box = pcs.make_crystal(structure=\"fcc\", repetitions=(5,5,5))" ] }, { "cell_type": "code", "execution_count": 3, "id": "7dfcfc1c-89a0-4e86-85fd-6bc5ed05b228", "metadata": { "collapsed": true, "jupyter": { "outputs_hidden": true }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "({'positions': [[0.0, 0.0, 0.0],\n", " [0.5, 0.0, 0.5],\n", " [0.0, 0.5, 0.5],\n", " [0.5, 0.5, 0.0],\n", " [0.0, 0.0, 1.0],\n", " [0.5, 0.0, 1.5],\n", " [0.0, 0.5, 1.5],\n", " [0.5, 0.5, 1.0],\n", " [0.0, 0.0, 2.0],\n", " [0.5, 0.0, 2.5],\n", " [0.0, 0.5, 2.5],\n", " [0.5, 0.5, 2.0],\n", " [0.0, 0.0, 3.0],\n", " [0.5, 0.0, 3.5],\n", " [0.0, 0.5, 3.5],\n", " [0.5, 0.5, 3.0],\n", " [0.0, 0.0, 4.0],\n", " [0.5, 0.0, 4.5],\n", " [0.0, 0.5, 4.5],\n", " [0.5, 0.5, 4.0],\n", " [0.0, 1.0, 0.0],\n", " [0.5, 1.0, 0.5],\n", " [0.0, 1.5, 0.5],\n", " [0.5, 1.5, 0.0],\n", " [0.0, 1.0, 1.0],\n", " [0.5, 1.0, 1.5],\n", " [0.0, 1.5, 1.5],\n", " [0.5, 1.5, 1.0],\n", " [0.0, 1.0, 2.0],\n", " [0.5, 1.0, 2.5],\n", " [0.0, 1.5, 2.5],\n", " [0.5, 1.5, 2.0],\n", " [0.0, 1.0, 3.0],\n", " [0.5, 1.0, 3.5],\n", " [0.0, 1.5, 3.5],\n", " [0.5, 1.5, 3.0],\n", " [0.0, 1.0, 4.0],\n", " [0.5, 1.0, 4.5],\n", " [0.0, 1.5, 4.5],\n", " [0.5, 1.5, 4.0],\n", " [0.0, 2.0, 0.0],\n", " [0.5, 2.0, 0.5],\n", " [0.0, 2.5, 0.5],\n", " [0.5, 2.5, 0.0],\n", " [0.0, 2.0, 1.0],\n", " [0.5, 2.0, 1.5],\n", " [0.0, 2.5, 1.5],\n", " [0.5, 2.5, 1.0],\n", " [0.0, 2.0, 2.0],\n", " [0.5, 2.0, 2.5],\n", " [0.0, 2.5, 2.5],\n", " [0.5, 2.5, 2.0],\n", " [0.0, 2.0, 3.0],\n", " [0.5, 2.0, 3.5],\n", " [0.0, 2.5, 3.5],\n", " [0.5, 2.5, 3.0],\n", " [0.0, 2.0, 4.0],\n", " [0.5, 2.0, 4.5],\n", " [0.0, 2.5, 4.5],\n", " [0.5, 2.5, 4.0],\n", " [0.0, 3.0, 0.0],\n", " [0.5, 3.0, 0.5],\n", " [0.0, 3.5, 0.5],\n", " [0.5, 3.5, 0.0],\n", " [0.0, 3.0, 1.0],\n", " [0.5, 3.0, 1.5],\n", " [0.0, 3.5, 1.5],\n", " [0.5, 3.5, 1.0],\n", " [0.0, 3.0, 2.0],\n", " [0.5, 3.0, 2.5],\n", " [0.0, 3.5, 2.5],\n", " [0.5, 3.5, 2.0],\n", " [0.0, 3.0, 3.0],\n", " [0.5, 3.0, 3.5],\n", " [0.0, 3.5, 3.5],\n", " [0.5, 3.5, 3.0],\n", " [0.0, 3.0, 4.0],\n", " [0.5, 3.0, 4.5],\n", " [0.0, 3.5, 4.5],\n", " [0.5, 3.5, 4.0],\n", " [0.0, 4.0, 0.0],\n", " [0.5, 4.0, 0.5],\n", " [0.0, 4.5, 0.5],\n", " [0.5, 4.5, 0.0],\n", " [0.0, 4.0, 1.0],\n", " [0.5, 4.0, 1.5],\n", " [0.0, 4.5, 1.5],\n", " [0.5, 4.5, 1.0],\n", " [0.0, 4.0, 2.0],\n", " [0.5, 4.0, 2.5],\n", " [0.0, 4.5, 2.5],\n", " [0.5, 4.5, 2.0],\n", " [0.0, 4.0, 3.0],\n", " [0.5, 4.0, 3.5],\n", " [0.0, 4.5, 3.5],\n", " [0.5, 4.5, 3.0],\n", " [0.0, 4.0, 4.0],\n", " [0.5, 4.0, 4.5],\n", " [0.0, 4.5, 4.5],\n", " [0.5, 4.5, 4.0],\n", " [1.0, 0.0, 0.0],\n", " [1.5, 0.0, 0.5],\n", " [1.0, 0.5, 0.5],\n", " [1.5, 0.5, 0.0],\n", " [1.0, 0.0, 1.0],\n", " [1.5, 0.0, 1.5],\n", " [1.0, 0.5, 1.5],\n", " [1.5, 0.5, 1.0],\n", " [1.0, 0.0, 2.0],\n", " [1.5, 0.0, 2.5],\n", " [1.0, 0.5, 2.5],\n", " [1.5, 0.5, 2.0],\n", " [1.0, 0.0, 3.0],\n", " [1.5, 0.0, 3.5],\n", " [1.0, 0.5, 3.5],\n", " [1.5, 0.5, 3.0],\n", " [1.0, 0.0, 4.0],\n", " [1.5, 0.0, 4.5],\n", " [1.0, 0.5, 4.5],\n", " [1.5, 0.5, 4.0],\n", " [1.0, 1.0, 0.0],\n", " [1.5, 1.0, 0.5],\n", " [1.0, 1.5, 0.5],\n", " [1.5, 1.5, 0.0],\n", " [1.0, 1.0, 1.0],\n", " [1.5, 1.0, 1.5],\n", " [1.0, 1.5, 1.5],\n", " [1.5, 1.5, 1.0],\n", " [1.0, 1.0, 2.0],\n", " [1.5, 1.0, 2.5],\n", " [1.0, 1.5, 2.5],\n", " [1.5, 1.5, 2.0],\n", " [1.0, 1.0, 3.0],\n", " [1.5, 1.0, 3.5],\n", " [1.0, 1.5, 3.5],\n", " [1.5, 1.5, 3.0],\n", " [1.0, 1.0, 4.0],\n", " [1.5, 1.0, 4.5],\n", " [1.0, 1.5, 4.5],\n", " [1.5, 1.5, 4.0],\n", " [1.0, 2.0, 0.0],\n", " [1.5, 2.0, 0.5],\n", " [1.0, 2.5, 0.5],\n", " [1.5, 2.5, 0.0],\n", " [1.0, 2.0, 1.0],\n", " [1.5, 2.0, 1.5],\n", " [1.0, 2.5, 1.5],\n", " [1.5, 2.5, 1.0],\n", " [1.0, 2.0, 2.0],\n", " [1.5, 2.0, 2.5],\n", " [1.0, 2.5, 2.5],\n", " [1.5, 2.5, 2.0],\n", " [1.0, 2.0, 3.0],\n", " [1.5, 2.0, 3.5],\n", " [1.0, 2.5, 3.5],\n", " [1.5, 2.5, 3.0],\n", " [1.0, 2.0, 4.0],\n", " [1.5, 2.0, 4.5],\n", " [1.0, 2.5, 4.5],\n", " [1.5, 2.5, 4.0],\n", " [1.0, 3.0, 0.0],\n", " [1.5, 3.0, 0.5],\n", " [1.0, 3.5, 0.5],\n", " [1.5, 3.5, 0.0],\n", " [1.0, 3.0, 1.0],\n", " [1.5, 3.0, 1.5],\n", " [1.0, 3.5, 1.5],\n", " [1.5, 3.5, 1.0],\n", " [1.0, 3.0, 2.0],\n", " [1.5, 3.0, 2.5],\n", " [1.0, 3.5, 2.5],\n", " [1.5, 3.5, 2.0],\n", " [1.0, 3.0, 3.0],\n", " [1.5, 3.0, 3.5],\n", " [1.0, 3.5, 3.5],\n", " [1.5, 3.5, 3.0],\n", " [1.0, 3.0, 4.0],\n", " [1.5, 3.0, 4.5],\n", " [1.0, 3.5, 4.5],\n", " [1.5, 3.5, 4.0],\n", " [1.0, 4.0, 0.0],\n", " [1.5, 4.0, 0.5],\n", " [1.0, 4.5, 0.5],\n", " [1.5, 4.5, 0.0],\n", " [1.0, 4.0, 1.0],\n", " [1.5, 4.0, 1.5],\n", " [1.0, 4.5, 1.5],\n", " [1.5, 4.5, 1.0],\n", " [1.0, 4.0, 2.0],\n", " [1.5, 4.0, 2.5],\n", " [1.0, 4.5, 2.5],\n", " [1.5, 4.5, 2.0],\n", " [1.0, 4.0, 3.0],\n", " [1.5, 4.0, 3.5],\n", " [1.0, 4.5, 3.5],\n", " [1.5, 4.5, 3.0],\n", " [1.0, 4.0, 4.0],\n", " [1.5, 4.0, 4.5],\n", " [1.0, 4.5, 4.5],\n", " [1.5, 4.5, 4.0],\n", " [2.0, 0.0, 0.0],\n", " [2.5, 0.0, 0.5],\n", " [2.0, 0.5, 0.5],\n", " [2.5, 0.5, 0.0],\n", " [2.0, 0.0, 1.0],\n", " [2.5, 0.0, 1.5],\n", " [2.0, 0.5, 1.5],\n", " [2.5, 0.5, 1.0],\n", " [2.0, 0.0, 2.0],\n", " [2.5, 0.0, 2.5],\n", " [2.0, 0.5, 2.5],\n", " [2.5, 0.5, 2.0],\n", " [2.0, 0.0, 3.0],\n", " [2.5, 0.0, 3.5],\n", " [2.0, 0.5, 3.5],\n", " [2.5, 0.5, 3.0],\n", " [2.0, 0.0, 4.0],\n", " [2.5, 0.0, 4.5],\n", " [2.0, 0.5, 4.5],\n", " [2.5, 0.5, 4.0],\n", " [2.0, 1.0, 0.0],\n", " [2.5, 1.0, 0.5],\n", " [2.0, 1.5, 0.5],\n", " [2.5, 1.5, 0.0],\n", " [2.0, 1.0, 1.0],\n", " [2.5, 1.0, 1.5],\n", " [2.0, 1.5, 1.5],\n", " [2.5, 1.5, 1.0],\n", " [2.0, 1.0, 2.0],\n", " [2.5, 1.0, 2.5],\n", " [2.0, 1.5, 2.5],\n", " [2.5, 1.5, 2.0],\n", " [2.0, 1.0, 3.0],\n", " [2.5, 1.0, 3.5],\n", " [2.0, 1.5, 3.5],\n", " [2.5, 1.5, 3.0],\n", " [2.0, 1.0, 4.0],\n", " [2.5, 1.0, 4.5],\n", " [2.0, 1.5, 4.5],\n", " [2.5, 1.5, 4.0],\n", " [2.0, 2.0, 0.0],\n", " [2.5, 2.0, 0.5],\n", " [2.0, 2.5, 0.5],\n", " [2.5, 2.5, 0.0],\n", " [2.0, 2.0, 1.0],\n", " [2.5, 2.0, 1.5],\n", " [2.0, 2.5, 1.5],\n", " [2.5, 2.5, 1.0],\n", " [2.0, 2.0, 2.0],\n", " [2.5, 2.0, 2.5],\n", " [2.0, 2.5, 2.5],\n", " [2.5, 2.5, 2.0],\n", " [2.0, 2.0, 3.0],\n", " [2.5, 2.0, 3.5],\n", " [2.0, 2.5, 3.5],\n", " [2.5, 2.5, 3.0],\n", " [2.0, 2.0, 4.0],\n", " [2.5, 2.0, 4.5],\n", " [2.0, 2.5, 4.5],\n", " [2.5, 2.5, 4.0],\n", " [2.0, 3.0, 0.0],\n", " [2.5, 3.0, 0.5],\n", " [2.0, 3.5, 0.5],\n", " [2.5, 3.5, 0.0],\n", " [2.0, 3.0, 1.0],\n", " [2.5, 3.0, 1.5],\n", " [2.0, 3.5, 1.5],\n", " [2.5, 3.5, 1.0],\n", " [2.0, 3.0, 2.0],\n", " [2.5, 3.0, 2.5],\n", " [2.0, 3.5, 2.5],\n", " [2.5, 3.5, 2.0],\n", " [2.0, 3.0, 3.0],\n", " [2.5, 3.0, 3.5],\n", " [2.0, 3.5, 3.5],\n", " [2.5, 3.5, 3.0],\n", " [2.0, 3.0, 4.0],\n", " [2.5, 3.0, 4.5],\n", " [2.0, 3.5, 4.5],\n", " [2.5, 3.5, 4.0],\n", " [2.0, 4.0, 0.0],\n", " [2.5, 4.0, 0.5],\n", " [2.0, 4.5, 0.5],\n", " [2.5, 4.5, 0.0],\n", " [2.0, 4.0, 1.0],\n", " [2.5, 4.0, 1.5],\n", " [2.0, 4.5, 1.5],\n", " [2.5, 4.5, 1.0],\n", " [2.0, 4.0, 2.0],\n", " [2.5, 4.0, 2.5],\n", " [2.0, 4.5, 2.5],\n", " [2.5, 4.5, 2.0],\n", " [2.0, 4.0, 3.0],\n", " [2.5, 4.0, 3.5],\n", " [2.0, 4.5, 3.5],\n", " [2.5, 4.5, 3.0],\n", " [2.0, 4.0, 4.0],\n", " [2.5, 4.0, 4.5],\n", " [2.0, 4.5, 4.5],\n", " [2.5, 4.5, 4.0],\n", " [3.0, 0.0, 0.0],\n", " [3.5, 0.0, 0.5],\n", " [3.0, 0.5, 0.5],\n", " [3.5, 0.5, 0.0],\n", " [3.0, 0.0, 1.0],\n", " [3.5, 0.0, 1.5],\n", " [3.0, 0.5, 1.5],\n", " [3.5, 0.5, 1.0],\n", " [3.0, 0.0, 2.0],\n", " [3.5, 0.0, 2.5],\n", " [3.0, 0.5, 2.5],\n", " [3.5, 0.5, 2.0],\n", " [3.0, 0.0, 3.0],\n", " [3.5, 0.0, 3.5],\n", " [3.0, 0.5, 3.5],\n", " [3.5, 0.5, 3.0],\n", " [3.0, 0.0, 4.0],\n", " [3.5, 0.0, 4.5],\n", " [3.0, 0.5, 4.5],\n", " [3.5, 0.5, 4.0],\n", " [3.0, 1.0, 0.0],\n", " [3.5, 1.0, 0.5],\n", " [3.0, 1.5, 0.5],\n", " [3.5, 1.5, 0.0],\n", " [3.0, 1.0, 1.0],\n", " [3.5, 1.0, 1.5],\n", " [3.0, 1.5, 1.5],\n", " [3.5, 1.5, 1.0],\n", " [3.0, 1.0, 2.0],\n", " [3.5, 1.0, 2.5],\n", " [3.0, 1.5, 2.5],\n", " [3.5, 1.5, 2.0],\n", " [3.0, 1.0, 3.0],\n", " [3.5, 1.0, 3.5],\n", " [3.0, 1.5, 3.5],\n", " [3.5, 1.5, 3.0],\n", " [3.0, 1.0, 4.0],\n", " [3.5, 1.0, 4.5],\n", " [3.0, 1.5, 4.5],\n", " [3.5, 1.5, 4.0],\n", " [3.0, 2.0, 0.0],\n", " [3.5, 2.0, 0.5],\n", " [3.0, 2.5, 0.5],\n", " [3.5, 2.5, 0.0],\n", " [3.0, 2.0, 1.0],\n", " [3.5, 2.0, 1.5],\n", " [3.0, 2.5, 1.5],\n", " [3.5, 2.5, 1.0],\n", " [3.0, 2.0, 2.0],\n", " [3.5, 2.0, 2.5],\n", " [3.0, 2.5, 2.5],\n", " [3.5, 2.5, 2.0],\n", " [3.0, 2.0, 3.0],\n", " [3.5, 2.0, 3.5],\n", " [3.0, 2.5, 3.5],\n", " [3.5, 2.5, 3.0],\n", " [3.0, 2.0, 4.0],\n", " [3.5, 2.0, 4.5],\n", " [3.0, 2.5, 4.5],\n", " [3.5, 2.5, 4.0],\n", " [3.0, 3.0, 0.0],\n", " [3.5, 3.0, 0.5],\n", " [3.0, 3.5, 0.5],\n", " [3.5, 3.5, 0.0],\n", " [3.0, 3.0, 1.0],\n", " [3.5, 3.0, 1.5],\n", " [3.0, 3.5, 1.5],\n", " [3.5, 3.5, 1.0],\n", " [3.0, 3.0, 2.0],\n", " [3.5, 3.0, 2.5],\n", " [3.0, 3.5, 2.5],\n", " [3.5, 3.5, 2.0],\n", " [3.0, 3.0, 3.0],\n", " [3.5, 3.0, 3.5],\n", " [3.0, 3.5, 3.5],\n", " [3.5, 3.5, 3.0],\n", " [3.0, 3.0, 4.0],\n", " [3.5, 3.0, 4.5],\n", " [3.0, 3.5, 4.5],\n", " [3.5, 3.5, 4.0],\n", " [3.0, 4.0, 0.0],\n", " [3.5, 4.0, 0.5],\n", " [3.0, 4.5, 0.5],\n", " [3.5, 4.5, 0.0],\n", " [3.0, 4.0, 1.0],\n", " [3.5, 4.0, 1.5],\n", " [3.0, 4.5, 1.5],\n", " [3.5, 4.5, 1.0],\n", " [3.0, 4.0, 2.0],\n", " [3.5, 4.0, 2.5],\n", " [3.0, 4.5, 2.5],\n", " [3.5, 4.5, 2.0],\n", " [3.0, 4.0, 3.0],\n", " [3.5, 4.0, 3.5],\n", " [3.0, 4.5, 3.5],\n", " [3.5, 4.5, 3.0],\n", " [3.0, 4.0, 4.0],\n", " [3.5, 4.0, 4.5],\n", " [3.0, 4.5, 4.5],\n", " [3.5, 4.5, 4.0],\n", " [4.0, 0.0, 0.0],\n", " [4.5, 0.0, 0.5],\n", " [4.0, 0.5, 0.5],\n", " [4.5, 0.5, 0.0],\n", " [4.0, 0.0, 1.0],\n", " [4.5, 0.0, 1.5],\n", " [4.0, 0.5, 1.5],\n", " [4.5, 0.5, 1.0],\n", " [4.0, 0.0, 2.0],\n", " [4.5, 0.0, 2.5],\n", " [4.0, 0.5, 2.5],\n", " [4.5, 0.5, 2.0],\n", " [4.0, 0.0, 3.0],\n", " [4.5, 0.0, 3.5],\n", " [4.0, 0.5, 3.5],\n", " [4.5, 0.5, 3.0],\n", " [4.0, 0.0, 4.0],\n", " [4.5, 0.0, 4.5],\n", " [4.0, 0.5, 4.5],\n", " [4.5, 0.5, 4.0],\n", " [4.0, 1.0, 0.0],\n", " [4.5, 1.0, 0.5],\n", " [4.0, 1.5, 0.5],\n", " [4.5, 1.5, 0.0],\n", " [4.0, 1.0, 1.0],\n", " [4.5, 1.0, 1.5],\n", " [4.0, 1.5, 1.5],\n", " [4.5, 1.5, 1.0],\n", " [4.0, 1.0, 2.0],\n", " [4.5, 1.0, 2.5],\n", " [4.0, 1.5, 2.5],\n", " [4.5, 1.5, 2.0],\n", " [4.0, 1.0, 3.0],\n", " [4.5, 1.0, 3.5],\n", " [4.0, 1.5, 3.5],\n", " [4.5, 1.5, 3.0],\n", " [4.0, 1.0, 4.0],\n", " [4.5, 1.0, 4.5],\n", " [4.0, 1.5, 4.5],\n", " [4.5, 1.5, 4.0],\n", " [4.0, 2.0, 0.0],\n", " [4.5, 2.0, 0.5],\n", " [4.0, 2.5, 0.5],\n", " [4.5, 2.5, 0.0],\n", " [4.0, 2.0, 1.0],\n", " [4.5, 2.0, 1.5],\n", " [4.0, 2.5, 1.5],\n", " [4.5, 2.5, 1.0],\n", " [4.0, 2.0, 2.0],\n", " [4.5, 2.0, 2.5],\n", " [4.0, 2.5, 2.5],\n", " [4.5, 2.5, 2.0],\n", " [4.0, 2.0, 3.0],\n", " [4.5, 2.0, 3.5],\n", " [4.0, 2.5, 3.5],\n", " [4.5, 2.5, 3.0],\n", " [4.0, 2.0, 4.0],\n", " [4.5, 2.0, 4.5],\n", " [4.0, 2.5, 4.5],\n", " [4.5, 2.5, 4.0],\n", " [4.0, 3.0, 0.0],\n", " [4.5, 3.0, 0.5],\n", " [4.0, 3.5, 0.5],\n", " [4.5, 3.5, 0.0],\n", " [4.0, 3.0, 1.0],\n", " [4.5, 3.0, 1.5],\n", " [4.0, 3.5, 1.5],\n", " [4.5, 3.5, 1.0],\n", " [4.0, 3.0, 2.0],\n", " [4.5, 3.0, 2.5],\n", " [4.0, 3.5, 2.5],\n", " [4.5, 3.5, 2.0],\n", " [4.0, 3.0, 3.0],\n", " [4.5, 3.0, 3.5],\n", " [4.0, 3.5, 3.5],\n", " [4.5, 3.5, 3.0],\n", " [4.0, 3.0, 4.0],\n", " [4.5, 3.0, 4.5],\n", " [4.0, 3.5, 4.5],\n", " [4.5, 3.5, 4.0],\n", " [4.0, 4.0, 0.0],\n", " [4.5, 4.0, 0.5],\n", " [4.0, 4.5, 0.5],\n", " [4.5, 4.5, 0.0],\n", " [4.0, 4.0, 1.0],\n", " [4.5, 4.0, 1.5],\n", " [4.0, 4.5, 1.5],\n", " [4.5, 4.5, 1.0],\n", " [4.0, 4.0, 2.0],\n", " [4.5, 4.0, 2.5],\n", " [4.0, 4.5, 2.5],\n", " [4.5, 4.5, 2.0],\n", " [4.0, 4.0, 3.0],\n", " [4.5, 4.0, 3.5],\n", " [4.0, 4.5, 3.5],\n", " [4.5, 4.5, 3.0],\n", " [4.0, 4.0, 4.0],\n", " [4.5, 4.0, 4.5],\n", " [4.0, 4.5, 4.5],\n", " [4.5, 4.5, 4.0]],\n", " 'ids': [1,\n", " 2,\n", " 3,\n", " 4,\n", " 5,\n", " 6,\n", " 7,\n", " 8,\n", " 9,\n", " 10,\n", " 11,\n", " 12,\n", " 13,\n", " 14,\n", " 15,\n", " 16,\n", " 17,\n", " 18,\n", " 19,\n", " 20,\n", " 21,\n", " 22,\n", " 23,\n", " 24,\n", " 25,\n", " 26,\n", " 27,\n", " 28,\n", " 29,\n", " 30,\n", " 31,\n", " 32,\n", " 33,\n", " 34,\n", " 35,\n", " 36,\n", " 37,\n", " 38,\n", " 39,\n", " 40,\n", " 41,\n", " 42,\n", " 43,\n", " 44,\n", " 45,\n", " 46,\n", " 47,\n", " 48,\n", " 49,\n", " 50,\n", " 51,\n", " 52,\n", " 53,\n", " 54,\n", " 55,\n", " 56,\n", " 57,\n", " 58,\n", " 59,\n", " 60,\n", " 61,\n", " 62,\n", " 63,\n", " 64,\n", " 65,\n", " 66,\n", " 67,\n", " 68,\n", " 69,\n", " 70,\n", " 71,\n", " 72,\n", " 73,\n", " 74,\n", " 75,\n", " 76,\n", " 77,\n", " 78,\n", " 79,\n", " 80,\n", " 81,\n", " 82,\n", " 83,\n", " 84,\n", " 85,\n", " 86,\n", " 87,\n", " 88,\n", " 89,\n", " 90,\n", " 91,\n", " 92,\n", " 93,\n", " 94,\n", " 95,\n", " 96,\n", " 97,\n", " 98,\n", " 99,\n", " 100,\n", " 101,\n", " 102,\n", " 103,\n", " 104,\n", " 105,\n", " 106,\n", " 107,\n", " 108,\n", " 109,\n", " 110,\n", " 111,\n", " 112,\n", " 113,\n", " 114,\n", " 115,\n", " 116,\n", " 117,\n", " 118,\n", " 119,\n", " 120,\n", " 121,\n", " 122,\n", " 123,\n", " 124,\n", " 125,\n", " 126,\n", " 127,\n", " 128,\n", " 129,\n", " 130,\n", " 131,\n", " 132,\n", " 133,\n", " 134,\n", " 135,\n", " 136,\n", " 137,\n", " 138,\n", " 139,\n", " 140,\n", " 141,\n", " 142,\n", " 143,\n", " 144,\n", " 145,\n", " 146,\n", " 147,\n", " 148,\n", " 149,\n", " 150,\n", " 151,\n", " 152,\n", " 153,\n", " 154,\n", " 155,\n", " 156,\n", " 157,\n", " 158,\n", " 159,\n", " 160,\n", " 161,\n", " 162,\n", " 163,\n", " 164,\n", " 165,\n", " 166,\n", " 167,\n", " 168,\n", " 169,\n", " 170,\n", " 171,\n", " 172,\n", " 173,\n", " 174,\n", " 175,\n", " 176,\n", " 177,\n", " 178,\n", " 179,\n", " 180,\n", " 181,\n", " 182,\n", " 183,\n", " 184,\n", " 185,\n", " 186,\n", " 187,\n", " 188,\n", " 189,\n", " 190,\n", " 191,\n", " 192,\n", " 193,\n", " 194,\n", " 195,\n", " 196,\n", " 197,\n", " 198,\n", " 199,\n", " 200,\n", " 201,\n", " 202,\n", " 203,\n", " 204,\n", " 205,\n", " 206,\n", " 207,\n", " 208,\n", " 209,\n", " 210,\n", " 211,\n", " 212,\n", " 213,\n", " 214,\n", " 215,\n", " 216,\n", " 217,\n", " 218,\n", " 219,\n", " 220,\n", " 221,\n", " 222,\n", " 223,\n", " 224,\n", " 225,\n", " 226,\n", " 227,\n", " 228,\n", " 229,\n", " 230,\n", " 231,\n", " 232,\n", " 233,\n", " 234,\n", " 235,\n", " 236,\n", " 237,\n", " 238,\n", " 239,\n", " 240,\n", " 241,\n", " 242,\n", " 243,\n", " 244,\n", " 245,\n", " 246,\n", " 247,\n", " 248,\n", " 249,\n", " 250,\n", " 251,\n", " 252,\n", " 253,\n", " 254,\n", " 255,\n", " 256,\n", " 257,\n", " 258,\n", " 259,\n", " 260,\n", " 261,\n", " 262,\n", " 263,\n", " 264,\n", " 265,\n", " 266,\n", " 267,\n", " 268,\n", " 269,\n", " 270,\n", " 271,\n", " 272,\n", " 273,\n", " 274,\n", " 275,\n", " 276,\n", " 277,\n", " 278,\n", " 279,\n", " 280,\n", " 281,\n", " 282,\n", " 283,\n", " 284,\n", " 285,\n", " 286,\n", " 287,\n", " 288,\n", " 289,\n", " 290,\n", " 291,\n", " 292,\n", " 293,\n", " 294,\n", " 295,\n", " 296,\n", " 297,\n", " 298,\n", " 299,\n", " 300,\n", " 301,\n", " 302,\n", " 303,\n", " 304,\n", " 305,\n", " 306,\n", " 307,\n", " 308,\n", " 309,\n", " 310,\n", " 311,\n", " 312,\n", " 313,\n", " 314,\n", " 315,\n", " 316,\n", " 317,\n", " 318,\n", " 319,\n", " 320,\n", " 321,\n", " 322,\n", " 323,\n", " 324,\n", " 325,\n", " 326,\n", " 327,\n", " 328,\n", " 329,\n", " 330,\n", " 331,\n", " 332,\n", " 333,\n", " 334,\n", " 335,\n", " 336,\n", " 337,\n", " 338,\n", " 339,\n", " 340,\n", " 341,\n", " 342,\n", " 343,\n", " 344,\n", " 345,\n", " 346,\n", " 347,\n", " 348,\n", " 349,\n", " 350,\n", " 351,\n", " 352,\n", " 353,\n", " 354,\n", " 355,\n", " 356,\n", " 357,\n", " 358,\n", " 359,\n", " 360,\n", " 361,\n", " 362,\n", " 363,\n", " 364,\n", " 365,\n", " 366,\n", " 367,\n", " 368,\n", " 369,\n", " 370,\n", " 371,\n", " 372,\n", " 373,\n", " 374,\n", " 375,\n", " 376,\n", " 377,\n", " 378,\n", " 379,\n", " 380,\n", " 381,\n", " 382,\n", " 383,\n", " 384,\n", " 385,\n", " 386,\n", " 387,\n", " 388,\n", " 389,\n", " 390,\n", " 391,\n", " 392,\n", " 393,\n", " 394,\n", " 395,\n", " 396,\n", " 397,\n", " 398,\n", " 399,\n", " 400,\n", " 401,\n", " 402,\n", " 403,\n", " 404,\n", " 405,\n", " 406,\n", " 407,\n", " 408,\n", " 409,\n", " 410,\n", " 411,\n", " 412,\n", " 413,\n", " 414,\n", " 415,\n", " 416,\n", " 417,\n", " 418,\n", " 419,\n", " 420,\n", " 421,\n", " 422,\n", " 423,\n", " 424,\n", " 425,\n", " 426,\n", " 427,\n", " 428,\n", " 429,\n", " 430,\n", " 431,\n", " 432,\n", " 433,\n", " 434,\n", " 435,\n", " 436,\n", " 437,\n", " 438,\n", " 439,\n", " 440,\n", " 441,\n", " 442,\n", " 443,\n", " 444,\n", " 445,\n", " 446,\n", " 447,\n", " 448,\n", " 449,\n", " 450,\n", " 451,\n", " 452,\n", " 453,\n", " 454,\n", " 455,\n", " 456,\n", " 457,\n", " 458,\n", " 459,\n", " 460,\n", " 461,\n", " 462,\n", " 463,\n", " 464,\n", " 465,\n", " 466,\n", " 467,\n", " 468,\n", " 469,\n", " 470,\n", " 471,\n", " 472,\n", " 473,\n", " 474,\n", " 475,\n", " 476,\n", " 477,\n", " 478,\n", " 479,\n", " 480,\n", " 481,\n", " 482,\n", " 483,\n", " 484,\n", " 485,\n", " 486,\n", " 487,\n", " 488,\n", " 489,\n", " 490,\n", " 491,\n", " 492,\n", " 493,\n", " 494,\n", " 495,\n", " 496,\n", " 497,\n", " 498,\n", " 499,\n", " 500],\n", " 'types': [1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1,\n", " 1],\n", " 'ghost': [False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False,\n", " False]},\n", " [[5.0, 0, 0], [0, 5.0, 0], [0, 0, 5.0]])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "atoms,box" ] }, { "cell_type": "markdown", "id": "0416a949-0b34-47dc-9e96-3fec4df0591d", "metadata": {}, "source": [ "Atoms are dicts. Thats fine. Atoms could be class inherited from dict, so we have extra methods that are useful. Lets try this approach. But first we do a simple calculation to benchmark the speed." ] }, { "cell_type": "code", "execution_count": 4, "id": "4f9ceb9a-712b-4319-b3fc-9b16a7681454", "metadata": {}, "outputs": [], "source": [ "class Atoms(dict):\n", " def __init__(self):\n", " pass\n", " \n", " @property\n", " def positions(self):\n", " return self[\"positions\"]" ] }, { "cell_type": "code", "execution_count": 5, "id": "8b0321d1-a452-46e1-926f-03c43192d67a", "metadata": {}, "outputs": [], "source": [ "rep = 5\n", "atoms, box = pcs.make_crystal(structure=\"fcc\", repetitions=(rep,rep,rep))" ] }, { "cell_type": "code", "execution_count": 6, "id": "20a108d9-030a-4cb3-a57b-c04cba11dad9", "metadata": {}, "outputs": [], "source": [ "sys = System()\n", "sys.box = box\n", "sys.atoms = atoms" ] }, { "cell_type": "code", "execution_count": 44, "id": "ac3b8131-f586-4455-8a3a-b1fc8341a954", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "373 ms ± 8.08 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" ] } ], "source": [ "%%timeit\n", "sys.find_neighbors(method=\"cutoff\", cutoff=0)" ] }, { "cell_type": "code", "execution_count": 45, "id": "03b9a5ad-f028-4c3f-8682-451d56fa0677", "metadata": {}, "outputs": [], "source": [ "at = Atoms()\n", "for key, val in atoms.items():\n", " at[key] = val" ] }, { "cell_type": "code", "execution_count": 47, "id": "e433826b-36d0-4627-ac2e-8243d491314f", "metadata": { "collapsed": true, "jupyter": { "outputs_hidden": true }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "[[0.0, 0.0, 0.0],\n", " [0.5, 0.0, 0.5],\n", " [0.0, 0.5, 0.5],\n", " [0.5, 0.5, 0.0],\n", " [0.0, 0.0, 1.0],\n", " [0.5, 0.0, 1.5],\n", " [0.0, 0.5, 1.5],\n", " [0.5, 0.5, 1.0],\n", " [0.0, 0.0, 2.0],\n", " [0.5, 0.0, 2.5],\n", " [0.0, 0.5, 2.5],\n", " [0.5, 0.5, 2.0],\n", " [0.0, 0.0, 3.0],\n", " [0.5, 0.0, 3.5],\n", " [0.0, 0.5, 3.5],\n", " [0.5, 0.5, 3.0],\n", " [0.0, 0.0, 4.0],\n", " [0.5, 0.0, 4.5],\n", " [0.0, 0.5, 4.5],\n", " [0.5, 0.5, 4.0],\n", " [0.0, 0.0, 5.0],\n", " [0.5, 0.0, 5.5],\n", " [0.0, 0.5, 5.5],\n", " [0.5, 0.5, 5.0],\n", " [0.0, 0.0, 6.0],\n", " [0.5, 0.0, 6.5],\n", " [0.0, 0.5, 6.5],\n", " [0.5, 0.5, 6.0],\n", " [0.0, 0.0, 7.0],\n", " [0.5, 0.0, 7.5],\n", " [0.0, 0.5, 7.5],\n", " [0.5, 0.5, 7.0],\n", " [0.0, 0.0, 8.0],\n", " [0.5, 0.0, 8.5],\n", " [0.0, 0.5, 8.5],\n", " [0.5, 0.5, 8.0],\n", " [0.0, 0.0, 9.0],\n", " [0.5, 0.0, 9.5],\n", " [0.0, 0.5, 9.5],\n", " [0.5, 0.5, 9.0],\n", " [0.0, 0.0, 10.0],\n", " [0.5, 0.0, 10.5],\n", " [0.0, 0.5, 10.5],\n", " [0.5, 0.5, 10.0],\n", " [0.0, 0.0, 11.0],\n", " [0.5, 0.0, 11.5],\n", " [0.0, 0.5, 11.5],\n", " [0.5, 0.5, 11.0],\n", " [0.0, 1.0, 0.0],\n", " [0.5, 1.0, 0.5],\n", " [0.0, 1.5, 0.5],\n", " [0.5, 1.5, 0.0],\n", " [0.0, 1.0, 1.0],\n", " [0.5, 1.0, 1.5],\n", " [0.0, 1.5, 1.5],\n", " [0.5, 1.5, 1.0],\n", " [0.0, 1.0, 2.0],\n", " [0.5, 1.0, 2.5],\n", " [0.0, 1.5, 2.5],\n", " [0.5, 1.5, 2.0],\n", " [0.0, 1.0, 3.0],\n", " [0.5, 1.0, 3.5],\n", " [0.0, 1.5, 3.5],\n", " [0.5, 1.5, 3.0],\n", " [0.0, 1.0, 4.0],\n", " [0.5, 1.0, 4.5],\n", " [0.0, 1.5, 4.5],\n", " [0.5, 1.5, 4.0],\n", " [0.0, 1.0, 5.0],\n", " [0.5, 1.0, 5.5],\n", " [0.0, 1.5, 5.5],\n", " [0.5, 1.5, 5.0],\n", " [0.0, 1.0, 6.0],\n", " [0.5, 1.0, 6.5],\n", " [0.0, 1.5, 6.5],\n", " [0.5, 1.5, 6.0],\n", " [0.0, 1.0, 7.0],\n", " [0.5, 1.0, 7.5],\n", " [0.0, 1.5, 7.5],\n", " [0.5, 1.5, 7.0],\n", " [0.0, 1.0, 8.0],\n", " [0.5, 1.0, 8.5],\n", " [0.0, 1.5, 8.5],\n", " [0.5, 1.5, 8.0],\n", " [0.0, 1.0, 9.0],\n", " [0.5, 1.0, 9.5],\n", " [0.0, 1.5, 9.5],\n", " [0.5, 1.5, 9.0],\n", " [0.0, 1.0, 10.0],\n", " [0.5, 1.0, 10.5],\n", " [0.0, 1.5, 10.5],\n", " [0.5, 1.5, 10.0],\n", " [0.0, 1.0, 11.0],\n", " [0.5, 1.0, 11.5],\n", " [0.0, 1.5, 11.5],\n", " [0.5, 1.5, 11.0],\n", " [0.0, 2.0, 0.0],\n", " [0.5, 2.0, 0.5],\n", " [0.0, 2.5, 0.5],\n", " [0.5, 2.5, 0.0],\n", " [0.0, 2.0, 1.0],\n", " [0.5, 2.0, 1.5],\n", " [0.0, 2.5, 1.5],\n", " [0.5, 2.5, 1.0],\n", " [0.0, 2.0, 2.0],\n", " [0.5, 2.0, 2.5],\n", " [0.0, 2.5, 2.5],\n", " [0.5, 2.5, 2.0],\n", " [0.0, 2.0, 3.0],\n", " [0.5, 2.0, 3.5],\n", " [0.0, 2.5, 3.5],\n", " [0.5, 2.5, 3.0],\n", " [0.0, 2.0, 4.0],\n", " [0.5, 2.0, 4.5],\n", " [0.0, 2.5, 4.5],\n", " [0.5, 2.5, 4.0],\n", " [0.0, 2.0, 5.0],\n", " [0.5, 2.0, 5.5],\n", " [0.0, 2.5, 5.5],\n", " [0.5, 2.5, 5.0],\n", " [0.0, 2.0, 6.0],\n", " [0.5, 2.0, 6.5],\n", " [0.0, 2.5, 6.5],\n", " [0.5, 2.5, 6.0],\n", " [0.0, 2.0, 7.0],\n", " [0.5, 2.0, 7.5],\n", " [0.0, 2.5, 7.5],\n", " [0.5, 2.5, 7.0],\n", " [0.0, 2.0, 8.0],\n", " [0.5, 2.0, 8.5],\n", " [0.0, 2.5, 8.5],\n", " [0.5, 2.5, 8.0],\n", " [0.0, 2.0, 9.0],\n", " [0.5, 2.0, 9.5],\n", " [0.0, 2.5, 9.5],\n", " [0.5, 2.5, 9.0],\n", " [0.0, 2.0, 10.0],\n", " [0.5, 2.0, 10.5],\n", " [0.0, 2.5, 10.5],\n", " [0.5, 2.5, 10.0],\n", " [0.0, 2.0, 11.0],\n", " [0.5, 2.0, 11.5],\n", " [0.0, 2.5, 11.5],\n", " [0.5, 2.5, 11.0],\n", " [0.0, 3.0, 0.0],\n", " [0.5, 3.0, 0.5],\n", " [0.0, 3.5, 0.5],\n", " [0.5, 3.5, 0.0],\n", " [0.0, 3.0, 1.0],\n", " [0.5, 3.0, 1.5],\n", " [0.0, 3.5, 1.5],\n", " [0.5, 3.5, 1.0],\n", " [0.0, 3.0, 2.0],\n", " [0.5, 3.0, 2.5],\n", " [0.0, 3.5, 2.5],\n", " [0.5, 3.5, 2.0],\n", " [0.0, 3.0, 3.0],\n", " [0.5, 3.0, 3.5],\n", " [0.0, 3.5, 3.5],\n", " [0.5, 3.5, 3.0],\n", " [0.0, 3.0, 4.0],\n", " [0.5, 3.0, 4.5],\n", " [0.0, 3.5, 4.5],\n", " [0.5, 3.5, 4.0],\n", " [0.0, 3.0, 5.0],\n", " [0.5, 3.0, 5.5],\n", " [0.0, 3.5, 5.5],\n", " [0.5, 3.5, 5.0],\n", " [0.0, 3.0, 6.0],\n", " [0.5, 3.0, 6.5],\n", " [0.0, 3.5, 6.5],\n", " [0.5, 3.5, 6.0],\n", " [0.0, 3.0, 7.0],\n", " [0.5, 3.0, 7.5],\n", " [0.0, 3.5, 7.5],\n", " [0.5, 3.5, 7.0],\n", " [0.0, 3.0, 8.0],\n", " [0.5, 3.0, 8.5],\n", " [0.0, 3.5, 8.5],\n", " [0.5, 3.5, 8.0],\n", " [0.0, 3.0, 9.0],\n", " [0.5, 3.0, 9.5],\n", " [0.0, 3.5, 9.5],\n", " [0.5, 3.5, 9.0],\n", " [0.0, 3.0, 10.0],\n", " [0.5, 3.0, 10.5],\n", " [0.0, 3.5, 10.5],\n", " [0.5, 3.5, 10.0],\n", " [0.0, 3.0, 11.0],\n", " [0.5, 3.0, 11.5],\n", " [0.0, 3.5, 11.5],\n", " [0.5, 3.5, 11.0],\n", " [0.0, 4.0, 0.0],\n", " [0.5, 4.0, 0.5],\n", " [0.0, 4.5, 0.5],\n", " [0.5, 4.5, 0.0],\n", " [0.0, 4.0, 1.0],\n", " [0.5, 4.0, 1.5],\n", " [0.0, 4.5, 1.5],\n", " [0.5, 4.5, 1.0],\n", " [0.0, 4.0, 2.0],\n", " [0.5, 4.0, 2.5],\n", " [0.0, 4.5, 2.5],\n", " [0.5, 4.5, 2.0],\n", " [0.0, 4.0, 3.0],\n", " [0.5, 4.0, 3.5],\n", " [0.0, 4.5, 3.5],\n", " [0.5, 4.5, 3.0],\n", " [0.0, 4.0, 4.0],\n", " [0.5, 4.0, 4.5],\n", " [0.0, 4.5, 4.5],\n", " [0.5, 4.5, 4.0],\n", " [0.0, 4.0, 5.0],\n", " [0.5, 4.0, 5.5],\n", " [0.0, 4.5, 5.5],\n", " [0.5, 4.5, 5.0],\n", " [0.0, 4.0, 6.0],\n", " [0.5, 4.0, 6.5],\n", " [0.0, 4.5, 6.5],\n", " [0.5, 4.5, 6.0],\n", " [0.0, 4.0, 7.0],\n", " [0.5, 4.0, 7.5],\n", " [0.0, 4.5, 7.5],\n", " [0.5, 4.5, 7.0],\n", " [0.0, 4.0, 8.0],\n", " [0.5, 4.0, 8.5],\n", " [0.0, 4.5, 8.5],\n", " [0.5, 4.5, 8.0],\n", " [0.0, 4.0, 9.0],\n", " [0.5, 4.0, 9.5],\n", " [0.0, 4.5, 9.5],\n", " [0.5, 4.5, 9.0],\n", " [0.0, 4.0, 10.0],\n", " [0.5, 4.0, 10.5],\n", " [0.0, 4.5, 10.5],\n", " [0.5, 4.5, 10.0],\n", " [0.0, 4.0, 11.0],\n", " [0.5, 4.0, 11.5],\n", " [0.0, 4.5, 11.5],\n", " [0.5, 4.5, 11.0],\n", " [0.0, 5.0, 0.0],\n", " [0.5, 5.0, 0.5],\n", " [0.0, 5.5, 0.5],\n", " [0.5, 5.5, 0.0],\n", " [0.0, 5.0, 1.0],\n", " [0.5, 5.0, 1.5],\n", " [0.0, 5.5, 1.5],\n", " [0.5, 5.5, 1.0],\n", " [0.0, 5.0, 2.0],\n", " [0.5, 5.0, 2.5],\n", " [0.0, 5.5, 2.5],\n", " [0.5, 5.5, 2.0],\n", " [0.0, 5.0, 3.0],\n", " [0.5, 5.0, 3.5],\n", " [0.0, 5.5, 3.5],\n", " [0.5, 5.5, 3.0],\n", " [0.0, 5.0, 4.0],\n", " [0.5, 5.0, 4.5],\n", " [0.0, 5.5, 4.5],\n", " [0.5, 5.5, 4.0],\n", " [0.0, 5.0, 5.0],\n", " [0.5, 5.0, 5.5],\n", " [0.0, 5.5, 5.5],\n", " [0.5, 5.5, 5.0],\n", " [0.0, 5.0, 6.0],\n", " [0.5, 5.0, 6.5],\n", " [0.0, 5.5, 6.5],\n", " [0.5, 5.5, 6.0],\n", " [0.0, 5.0, 7.0],\n", " [0.5, 5.0, 7.5],\n", " [0.0, 5.5, 7.5],\n", " [0.5, 5.5, 7.0],\n", " [0.0, 5.0, 8.0],\n", " [0.5, 5.0, 8.5],\n", " [0.0, 5.5, 8.5],\n", " [0.5, 5.5, 8.0],\n", " [0.0, 5.0, 9.0],\n", " [0.5, 5.0, 9.5],\n", " [0.0, 5.5, 9.5],\n", " [0.5, 5.5, 9.0],\n", " [0.0, 5.0, 10.0],\n", " [0.5, 5.0, 10.5],\n", " [0.0, 5.5, 10.5],\n", " [0.5, 5.5, 10.0],\n", " [0.0, 5.0, 11.0],\n", " [0.5, 5.0, 11.5],\n", " [0.0, 5.5, 11.5],\n", " [0.5, 5.5, 11.0],\n", " [0.0, 6.0, 0.0],\n", " [0.5, 6.0, 0.5],\n", " [0.0, 6.5, 0.5],\n", " [0.5, 6.5, 0.0],\n", " [0.0, 6.0, 1.0],\n", " [0.5, 6.0, 1.5],\n", " [0.0, 6.5, 1.5],\n", " [0.5, 6.5, 1.0],\n", " [0.0, 6.0, 2.0],\n", " [0.5, 6.0, 2.5],\n", " [0.0, 6.5, 2.5],\n", " [0.5, 6.5, 2.0],\n", " [0.0, 6.0, 3.0],\n", " [0.5, 6.0, 3.5],\n", " [0.0, 6.5, 3.5],\n", " [0.5, 6.5, 3.0],\n", " [0.0, 6.0, 4.0],\n", " [0.5, 6.0, 4.5],\n", " [0.0, 6.5, 4.5],\n", " [0.5, 6.5, 4.0],\n", " [0.0, 6.0, 5.0],\n", " [0.5, 6.0, 5.5],\n", " [0.0, 6.5, 5.5],\n", " [0.5, 6.5, 5.0],\n", " [0.0, 6.0, 6.0],\n", " [0.5, 6.0, 6.5],\n", " [0.0, 6.5, 6.5],\n", " [0.5, 6.5, 6.0],\n", " [0.0, 6.0, 7.0],\n", " [0.5, 6.0, 7.5],\n", " [0.0, 6.5, 7.5],\n", " [0.5, 6.5, 7.0],\n", " [0.0, 6.0, 8.0],\n", " [0.5, 6.0, 8.5],\n", " [0.0, 6.5, 8.5],\n", " [0.5, 6.5, 8.0],\n", " [0.0, 6.0, 9.0],\n", " [0.5, 6.0, 9.5],\n", " [0.0, 6.5, 9.5],\n", " [0.5, 6.5, 9.0],\n", " [0.0, 6.0, 10.0],\n", " [0.5, 6.0, 10.5],\n", " [0.0, 6.5, 10.5],\n", " [0.5, 6.5, 10.0],\n", " [0.0, 6.0, 11.0],\n", " [0.5, 6.0, 11.5],\n", " [0.0, 6.5, 11.5],\n", " [0.5, 6.5, 11.0],\n", " [0.0, 7.0, 0.0],\n", " [0.5, 7.0, 0.5],\n", " [0.0, 7.5, 0.5],\n", " [0.5, 7.5, 0.0],\n", " [0.0, 7.0, 1.0],\n", " [0.5, 7.0, 1.5],\n", " [0.0, 7.5, 1.5],\n", " [0.5, 7.5, 1.0],\n", " [0.0, 7.0, 2.0],\n", " [0.5, 7.0, 2.5],\n", " [0.0, 7.5, 2.5],\n", " [0.5, 7.5, 2.0],\n", " [0.0, 7.0, 3.0],\n", " [0.5, 7.0, 3.5],\n", " [0.0, 7.5, 3.5],\n", " [0.5, 7.5, 3.0],\n", " [0.0, 7.0, 4.0],\n", " [0.5, 7.0, 4.5],\n", " [0.0, 7.5, 4.5],\n", " [0.5, 7.5, 4.0],\n", " [0.0, 7.0, 5.0],\n", " [0.5, 7.0, 5.5],\n", " [0.0, 7.5, 5.5],\n", " [0.5, 7.5, 5.0],\n", " [0.0, 7.0, 6.0],\n", " [0.5, 7.0, 6.5],\n", " [0.0, 7.5, 6.5],\n", " [0.5, 7.5, 6.0],\n", " [0.0, 7.0, 7.0],\n", " [0.5, 7.0, 7.5],\n", " [0.0, 7.5, 7.5],\n", " [0.5, 7.5, 7.0],\n", " [0.0, 7.0, 8.0],\n", " [0.5, 7.0, 8.5],\n", " [0.0, 7.5, 8.5],\n", " [0.5, 7.5, 8.0],\n", " [0.0, 7.0, 9.0],\n", " [0.5, 7.0, 9.5],\n", " [0.0, 7.5, 9.5],\n", " [0.5, 7.5, 9.0],\n", " [0.0, 7.0, 10.0],\n", " [0.5, 7.0, 10.5],\n", " [0.0, 7.5, 10.5],\n", " [0.5, 7.5, 10.0],\n", " [0.0, 7.0, 11.0],\n", " [0.5, 7.0, 11.5],\n", " [0.0, 7.5, 11.5],\n", " [0.5, 7.5, 11.0],\n", " [0.0, 8.0, 0.0],\n", " [0.5, 8.0, 0.5],\n", " [0.0, 8.5, 0.5],\n", " [0.5, 8.5, 0.0],\n", " [0.0, 8.0, 1.0],\n", " [0.5, 8.0, 1.5],\n", " [0.0, 8.5, 1.5],\n", " [0.5, 8.5, 1.0],\n", " [0.0, 8.0, 2.0],\n", " [0.5, 8.0, 2.5],\n", " [0.0, 8.5, 2.5],\n", " [0.5, 8.5, 2.0],\n", " [0.0, 8.0, 3.0],\n", " [0.5, 8.0, 3.5],\n", " [0.0, 8.5, 3.5],\n", " [0.5, 8.5, 3.0],\n", " [0.0, 8.0, 4.0],\n", " [0.5, 8.0, 4.5],\n", " [0.0, 8.5, 4.5],\n", " [0.5, 8.5, 4.0],\n", " [0.0, 8.0, 5.0],\n", " [0.5, 8.0, 5.5],\n", " [0.0, 8.5, 5.5],\n", " [0.5, 8.5, 5.0],\n", " [0.0, 8.0, 6.0],\n", " [0.5, 8.0, 6.5],\n", " [0.0, 8.5, 6.5],\n", " [0.5, 8.5, 6.0],\n", " [0.0, 8.0, 7.0],\n", " [0.5, 8.0, 7.5],\n", " [0.0, 8.5, 7.5],\n", " [0.5, 8.5, 7.0],\n", " [0.0, 8.0, 8.0],\n", " [0.5, 8.0, 8.5],\n", " [0.0, 8.5, 8.5],\n", " [0.5, 8.5, 8.0],\n", " [0.0, 8.0, 9.0],\n", " [0.5, 8.0, 9.5],\n", " [0.0, 8.5, 9.5],\n", " [0.5, 8.5, 9.0],\n", " [0.0, 8.0, 10.0],\n", " [0.5, 8.0, 10.5],\n", " [0.0, 8.5, 10.5],\n", " [0.5, 8.5, 10.0],\n", " [0.0, 8.0, 11.0],\n", " [0.5, 8.0, 11.5],\n", " [0.0, 8.5, 11.5],\n", " [0.5, 8.5, 11.0],\n", " [0.0, 9.0, 0.0],\n", " [0.5, 9.0, 0.5],\n", " [0.0, 9.5, 0.5],\n", " [0.5, 9.5, 0.0],\n", " [0.0, 9.0, 1.0],\n", " [0.5, 9.0, 1.5],\n", " [0.0, 9.5, 1.5],\n", " [0.5, 9.5, 1.0],\n", " [0.0, 9.0, 2.0],\n", " [0.5, 9.0, 2.5],\n", " [0.0, 9.5, 2.5],\n", " [0.5, 9.5, 2.0],\n", " [0.0, 9.0, 3.0],\n", " [0.5, 9.0, 3.5],\n", " [0.0, 9.5, 3.5],\n", " [0.5, 9.5, 3.0],\n", " [0.0, 9.0, 4.0],\n", " [0.5, 9.0, 4.5],\n", " [0.0, 9.5, 4.5],\n", " [0.5, 9.5, 4.0],\n", " [0.0, 9.0, 5.0],\n", " [0.5, 9.0, 5.5],\n", " [0.0, 9.5, 5.5],\n", " [0.5, 9.5, 5.0],\n", " [0.0, 9.0, 6.0],\n", " [0.5, 9.0, 6.5],\n", " [0.0, 9.5, 6.5],\n", " [0.5, 9.5, 6.0],\n", " [0.0, 9.0, 7.0],\n", " [0.5, 9.0, 7.5],\n", " [0.0, 9.5, 7.5],\n", " [0.5, 9.5, 7.0],\n", " [0.0, 9.0, 8.0],\n", " [0.5, 9.0, 8.5],\n", " [0.0, 9.5, 8.5],\n", " [0.5, 9.5, 8.0],\n", " [0.0, 9.0, 9.0],\n", " [0.5, 9.0, 9.5],\n", " [0.0, 9.5, 9.5],\n", " [0.5, 9.5, 9.0],\n", " [0.0, 9.0, 10.0],\n", " [0.5, 9.0, 10.5],\n", " [0.0, 9.5, 10.5],\n", " [0.5, 9.5, 10.0],\n", " [0.0, 9.0, 11.0],\n", " [0.5, 9.0, 11.5],\n", " [0.0, 9.5, 11.5],\n", " [0.5, 9.5, 11.0],\n", " [0.0, 10.0, 0.0],\n", " [0.5, 10.0, 0.5],\n", " [0.0, 10.5, 0.5],\n", " [0.5, 10.5, 0.0],\n", " [0.0, 10.0, 1.0],\n", " [0.5, 10.0, 1.5],\n", " [0.0, 10.5, 1.5],\n", " [0.5, 10.5, 1.0],\n", " [0.0, 10.0, 2.0],\n", " [0.5, 10.0, 2.5],\n", " [0.0, 10.5, 2.5],\n", " [0.5, 10.5, 2.0],\n", " [0.0, 10.0, 3.0],\n", " [0.5, 10.0, 3.5],\n", " [0.0, 10.5, 3.5],\n", " [0.5, 10.5, 3.0],\n", " [0.0, 10.0, 4.0],\n", " [0.5, 10.0, 4.5],\n", " [0.0, 10.5, 4.5],\n", " [0.5, 10.5, 4.0],\n", " [0.0, 10.0, 5.0],\n", " [0.5, 10.0, 5.5],\n", " [0.0, 10.5, 5.5],\n", " [0.5, 10.5, 5.0],\n", " [0.0, 10.0, 6.0],\n", " [0.5, 10.0, 6.5],\n", " [0.0, 10.5, 6.5],\n", " [0.5, 10.5, 6.0],\n", " [0.0, 10.0, 7.0],\n", " [0.5, 10.0, 7.5],\n", " [0.0, 10.5, 7.5],\n", " [0.5, 10.5, 7.0],\n", " [0.0, 10.0, 8.0],\n", " [0.5, 10.0, 8.5],\n", " [0.0, 10.5, 8.5],\n", " [0.5, 10.5, 8.0],\n", " [0.0, 10.0, 9.0],\n", " [0.5, 10.0, 9.5],\n", " [0.0, 10.5, 9.5],\n", " [0.5, 10.5, 9.0],\n", " [0.0, 10.0, 10.0],\n", " [0.5, 10.0, 10.5],\n", " [0.0, 10.5, 10.5],\n", " [0.5, 10.5, 10.0],\n", " [0.0, 10.0, 11.0],\n", " [0.5, 10.0, 11.5],\n", " [0.0, 10.5, 11.5],\n", " [0.5, 10.5, 11.0],\n", " [0.0, 11.0, 0.0],\n", " [0.5, 11.0, 0.5],\n", " [0.0, 11.5, 0.5],\n", " [0.5, 11.5, 0.0],\n", " [0.0, 11.0, 1.0],\n", " [0.5, 11.0, 1.5],\n", " [0.0, 11.5, 1.5],\n", " [0.5, 11.5, 1.0],\n", " [0.0, 11.0, 2.0],\n", " [0.5, 11.0, 2.5],\n", " [0.0, 11.5, 2.5],\n", " [0.5, 11.5, 2.0],\n", " [0.0, 11.0, 3.0],\n", " [0.5, 11.0, 3.5],\n", " [0.0, 11.5, 3.5],\n", " [0.5, 11.5, 3.0],\n", " [0.0, 11.0, 4.0],\n", " [0.5, 11.0, 4.5],\n", " [0.0, 11.5, 4.5],\n", " [0.5, 11.5, 4.0],\n", " [0.0, 11.0, 5.0],\n", " [0.5, 11.0, 5.5],\n", " [0.0, 11.5, 5.5],\n", " [0.5, 11.5, 5.0],\n", " [0.0, 11.0, 6.0],\n", " [0.5, 11.0, 6.5],\n", " [0.0, 11.5, 6.5],\n", " [0.5, 11.5, 6.0],\n", " [0.0, 11.0, 7.0],\n", " [0.5, 11.0, 7.5],\n", " [0.0, 11.5, 7.5],\n", " [0.5, 11.5, 7.0],\n", " [0.0, 11.0, 8.0],\n", " [0.5, 11.0, 8.5],\n", " [0.0, 11.5, 8.5],\n", " [0.5, 11.5, 8.0],\n", " [0.0, 11.0, 9.0],\n", " [0.5, 11.0, 9.5],\n", " [0.0, 11.5, 9.5],\n", " [0.5, 11.5, 9.0],\n", " [0.0, 11.0, 10.0],\n", " [0.5, 11.0, 10.5],\n", " [0.0, 11.5, 10.5],\n", " [0.5, 11.5, 10.0],\n", " [0.0, 11.0, 11.0],\n", " [0.5, 11.0, 11.5],\n", " [0.0, 11.5, 11.5],\n", " [0.5, 11.5, 11.0],\n", " [1.0, 0.0, 0.0],\n", " [1.5, 0.0, 0.5],\n", " [1.0, 0.5, 0.5],\n", " [1.5, 0.5, 0.0],\n", " [1.0, 0.0, 1.0],\n", " [1.5, 0.0, 1.5],\n", " [1.0, 0.5, 1.5],\n", " [1.5, 0.5, 1.0],\n", " [1.0, 0.0, 2.0],\n", " [1.5, 0.0, 2.5],\n", " [1.0, 0.5, 2.5],\n", " [1.5, 0.5, 2.0],\n", " [1.0, 0.0, 3.0],\n", " [1.5, 0.0, 3.5],\n", " [1.0, 0.5, 3.5],\n", " [1.5, 0.5, 3.0],\n", " [1.0, 0.0, 4.0],\n", " [1.5, 0.0, 4.5],\n", " [1.0, 0.5, 4.5],\n", " [1.5, 0.5, 4.0],\n", " [1.0, 0.0, 5.0],\n", " [1.5, 0.0, 5.5],\n", " [1.0, 0.5, 5.5],\n", " [1.5, 0.5, 5.0],\n", " [1.0, 0.0, 6.0],\n", " [1.5, 0.0, 6.5],\n", " [1.0, 0.5, 6.5],\n", " [1.5, 0.5, 6.0],\n", " [1.0, 0.0, 7.0],\n", " [1.5, 0.0, 7.5],\n", " [1.0, 0.5, 7.5],\n", " [1.5, 0.5, 7.0],\n", " [1.0, 0.0, 8.0],\n", " [1.5, 0.0, 8.5],\n", " [1.0, 0.5, 8.5],\n", " [1.5, 0.5, 8.0],\n", " [1.0, 0.0, 9.0],\n", " [1.5, 0.0, 9.5],\n", " [1.0, 0.5, 9.5],\n", " [1.5, 0.5, 9.0],\n", " [1.0, 0.0, 10.0],\n", " [1.5, 0.0, 10.5],\n", " [1.0, 0.5, 10.5],\n", " [1.5, 0.5, 10.0],\n", " [1.0, 0.0, 11.0],\n", " [1.5, 0.0, 11.5],\n", " [1.0, 0.5, 11.5],\n", " [1.5, 0.5, 11.0],\n", " [1.0, 1.0, 0.0],\n", " [1.5, 1.0, 0.5],\n", " [1.0, 1.5, 0.5],\n", " [1.5, 1.5, 0.0],\n", " [1.0, 1.0, 1.0],\n", " [1.5, 1.0, 1.5],\n", " [1.0, 1.5, 1.5],\n", " [1.5, 1.5, 1.0],\n", " [1.0, 1.0, 2.0],\n", " [1.5, 1.0, 2.5],\n", " [1.0, 1.5, 2.5],\n", " [1.5, 1.5, 2.0],\n", " [1.0, 1.0, 3.0],\n", " [1.5, 1.0, 3.5],\n", " [1.0, 1.5, 3.5],\n", " [1.5, 1.5, 3.0],\n", " [1.0, 1.0, 4.0],\n", " [1.5, 1.0, 4.5],\n", " [1.0, 1.5, 4.5],\n", " [1.5, 1.5, 4.0],\n", " [1.0, 1.0, 5.0],\n", " [1.5, 1.0, 5.5],\n", " [1.0, 1.5, 5.5],\n", " [1.5, 1.5, 5.0],\n", " [1.0, 1.0, 6.0],\n", " [1.5, 1.0, 6.5],\n", " [1.0, 1.5, 6.5],\n", " [1.5, 1.5, 6.0],\n", " [1.0, 1.0, 7.0],\n", " [1.5, 1.0, 7.5],\n", " [1.0, 1.5, 7.5],\n", " [1.5, 1.5, 7.0],\n", " [1.0, 1.0, 8.0],\n", " [1.5, 1.0, 8.5],\n", " [1.0, 1.5, 8.5],\n", " [1.5, 1.5, 8.0],\n", " [1.0, 1.0, 9.0],\n", " [1.5, 1.0, 9.5],\n", " [1.0, 1.5, 9.5],\n", " [1.5, 1.5, 9.0],\n", " [1.0, 1.0, 10.0],\n", " [1.5, 1.0, 10.5],\n", " [1.0, 1.5, 10.5],\n", " [1.5, 1.5, 10.0],\n", " [1.0, 1.0, 11.0],\n", " [1.5, 1.0, 11.5],\n", " [1.0, 1.5, 11.5],\n", " [1.5, 1.5, 11.0],\n", " [1.0, 2.0, 0.0],\n", " [1.5, 2.0, 0.5],\n", " [1.0, 2.5, 0.5],\n", " [1.5, 2.5, 0.0],\n", " [1.0, 2.0, 1.0],\n", " [1.5, 2.0, 1.5],\n", " [1.0, 2.5, 1.5],\n", " [1.5, 2.5, 1.0],\n", " [1.0, 2.0, 2.0],\n", " [1.5, 2.0, 2.5],\n", " [1.0, 2.5, 2.5],\n", " [1.5, 2.5, 2.0],\n", " [1.0, 2.0, 3.0],\n", " [1.5, 2.0, 3.5],\n", " [1.0, 2.5, 3.5],\n", " [1.5, 2.5, 3.0],\n", " [1.0, 2.0, 4.0],\n", " [1.5, 2.0, 4.5],\n", " [1.0, 2.5, 4.5],\n", " [1.5, 2.5, 4.0],\n", " [1.0, 2.0, 5.0],\n", " [1.5, 2.0, 5.5],\n", " [1.0, 2.5, 5.5],\n", " [1.5, 2.5, 5.0],\n", " [1.0, 2.0, 6.0],\n", " [1.5, 2.0, 6.5],\n", " [1.0, 2.5, 6.5],\n", " [1.5, 2.5, 6.0],\n", " [1.0, 2.0, 7.0],\n", " [1.5, 2.0, 7.5],\n", " [1.0, 2.5, 7.5],\n", " [1.5, 2.5, 7.0],\n", " [1.0, 2.0, 8.0],\n", " [1.5, 2.0, 8.5],\n", " [1.0, 2.5, 8.5],\n", " [1.5, 2.5, 8.0],\n", " [1.0, 2.0, 9.0],\n", " [1.5, 2.0, 9.5],\n", " [1.0, 2.5, 9.5],\n", " [1.5, 2.5, 9.0],\n", " [1.0, 2.0, 10.0],\n", " [1.5, 2.0, 10.5],\n", " [1.0, 2.5, 10.5],\n", " [1.5, 2.5, 10.0],\n", " [1.0, 2.0, 11.0],\n", " [1.5, 2.0, 11.5],\n", " [1.0, 2.5, 11.5],\n", " [1.5, 2.5, 11.0],\n", " [1.0, 3.0, 0.0],\n", " [1.5, 3.0, 0.5],\n", " [1.0, 3.5, 0.5],\n", " [1.5, 3.5, 0.0],\n", " [1.0, 3.0, 1.0],\n", " [1.5, 3.0, 1.5],\n", " [1.0, 3.5, 1.5],\n", " [1.5, 3.5, 1.0],\n", " [1.0, 3.0, 2.0],\n", " [1.5, 3.0, 2.5],\n", " [1.0, 3.5, 2.5],\n", " [1.5, 3.5, 2.0],\n", " [1.0, 3.0, 3.0],\n", " [1.5, 3.0, 3.5],\n", " [1.0, 3.5, 3.5],\n", " [1.5, 3.5, 3.0],\n", " [1.0, 3.0, 4.0],\n", " [1.5, 3.0, 4.5],\n", " [1.0, 3.5, 4.5],\n", " [1.5, 3.5, 4.0],\n", " [1.0, 3.0, 5.0],\n", " [1.5, 3.0, 5.5],\n", " [1.0, 3.5, 5.5],\n", " [1.5, 3.5, 5.0],\n", " [1.0, 3.0, 6.0],\n", " [1.5, 3.0, 6.5],\n", " [1.0, 3.5, 6.5],\n", " [1.5, 3.5, 6.0],\n", " [1.0, 3.0, 7.0],\n", " [1.5, 3.0, 7.5],\n", " [1.0, 3.5, 7.5],\n", " [1.5, 3.5, 7.0],\n", " [1.0, 3.0, 8.0],\n", " [1.5, 3.0, 8.5],\n", " [1.0, 3.5, 8.5],\n", " [1.5, 3.5, 8.0],\n", " [1.0, 3.0, 9.0],\n", " [1.5, 3.0, 9.5],\n", " [1.0, 3.5, 9.5],\n", " [1.5, 3.5, 9.0],\n", " [1.0, 3.0, 10.0],\n", " [1.5, 3.0, 10.5],\n", " [1.0, 3.5, 10.5],\n", " [1.5, 3.5, 10.0],\n", " [1.0, 3.0, 11.0],\n", " [1.5, 3.0, 11.5],\n", " [1.0, 3.5, 11.5],\n", " [1.5, 3.5, 11.0],\n", " [1.0, 4.0, 0.0],\n", " [1.5, 4.0, 0.5],\n", " [1.0, 4.5, 0.5],\n", " [1.5, 4.5, 0.0],\n", " [1.0, 4.0, 1.0],\n", " [1.5, 4.0, 1.5],\n", " [1.0, 4.5, 1.5],\n", " [1.5, 4.5, 1.0],\n", " [1.0, 4.0, 2.0],\n", " [1.5, 4.0, 2.5],\n", " [1.0, 4.5, 2.5],\n", " [1.5, 4.5, 2.0],\n", " [1.0, 4.0, 3.0],\n", " [1.5, 4.0, 3.5],\n", " [1.0, 4.5, 3.5],\n", " [1.5, 4.5, 3.0],\n", " [1.0, 4.0, 4.0],\n", " [1.5, 4.0, 4.5],\n", " [1.0, 4.5, 4.5],\n", " [1.5, 4.5, 4.0],\n", " [1.0, 4.0, 5.0],\n", " [1.5, 4.0, 5.5],\n", " [1.0, 4.5, 5.5],\n", " [1.5, 4.5, 5.0],\n", " [1.0, 4.0, 6.0],\n", " [1.5, 4.0, 6.5],\n", " [1.0, 4.5, 6.5],\n", " [1.5, 4.5, 6.0],\n", " [1.0, 4.0, 7.0],\n", " [1.5, 4.0, 7.5],\n", " [1.0, 4.5, 7.5],\n", " [1.5, 4.5, 7.0],\n", " [1.0, 4.0, 8.0],\n", " [1.5, 4.0, 8.5],\n", " [1.0, 4.5, 8.5],\n", " [1.5, 4.5, 8.0],\n", " [1.0, 4.0, 9.0],\n", " [1.5, 4.0, 9.5],\n", " [1.0, 4.5, 9.5],\n", " [1.5, 4.5, 9.0],\n", " [1.0, 4.0, 10.0],\n", " [1.5, 4.0, 10.5],\n", " [1.0, 4.5, 10.5],\n", " [1.5, 4.5, 10.0],\n", " [1.0, 4.0, 11.0],\n", " [1.5, 4.0, 11.5],\n", " [1.0, 4.5, 11.5],\n", " [1.5, 4.5, 11.0],\n", " [1.0, 5.0, 0.0],\n", " [1.5, 5.0, 0.5],\n", " [1.0, 5.5, 0.5],\n", " [1.5, 5.5, 0.0],\n", " [1.0, 5.0, 1.0],\n", " [1.5, 5.0, 1.5],\n", " [1.0, 5.5, 1.5],\n", " [1.5, 5.5, 1.0],\n", " [1.0, 5.0, 2.0],\n", " [1.5, 5.0, 2.5],\n", " [1.0, 5.5, 2.5],\n", " [1.5, 5.5, 2.0],\n", " [1.0, 5.0, 3.0],\n", " [1.5, 5.0, 3.5],\n", " [1.0, 5.5, 3.5],\n", " [1.5, 5.5, 3.0],\n", " [1.0, 5.0, 4.0],\n", " [1.5, 5.0, 4.5],\n", " [1.0, 5.5, 4.5],\n", " [1.5, 5.5, 4.0],\n", " [1.0, 5.0, 5.0],\n", " [1.5, 5.0, 5.5],\n", " [1.0, 5.5, 5.5],\n", " [1.5, 5.5, 5.0],\n", " [1.0, 5.0, 6.0],\n", " [1.5, 5.0, 6.5],\n", " [1.0, 5.5, 6.5],\n", " [1.5, 5.5, 6.0],\n", " [1.0, 5.0, 7.0],\n", " [1.5, 5.0, 7.5],\n", " [1.0, 5.5, 7.5],\n", " [1.5, 5.5, 7.0],\n", " [1.0, 5.0, 8.0],\n", " [1.5, 5.0, 8.5],\n", " [1.0, 5.5, 8.5],\n", " [1.5, 5.5, 8.0],\n", " [1.0, 5.0, 9.0],\n", " [1.5, 5.0, 9.5],\n", " [1.0, 5.5, 9.5],\n", " [1.5, 5.5, 9.0],\n", " [1.0, 5.0, 10.0],\n", " [1.5, 5.0, 10.5],\n", " [1.0, 5.5, 10.5],\n", " [1.5, 5.5, 10.0],\n", " [1.0, 5.0, 11.0],\n", " [1.5, 5.0, 11.5],\n", " [1.0, 5.5, 11.5],\n", " [1.5, 5.5, 11.0],\n", " [1.0, 6.0, 0.0],\n", " [1.5, 6.0, 0.5],\n", " [1.0, 6.5, 0.5],\n", " [1.5, 6.5, 0.0],\n", " [1.0, 6.0, 1.0],\n", " [1.5, 6.0, 1.5],\n", " [1.0, 6.5, 1.5],\n", " [1.5, 6.5, 1.0],\n", " [1.0, 6.0, 2.0],\n", " [1.5, 6.0, 2.5],\n", " [1.0, 6.5, 2.5],\n", " [1.5, 6.5, 2.0],\n", " [1.0, 6.0, 3.0],\n", " [1.5, 6.0, 3.5],\n", " [1.0, 6.5, 3.5],\n", " [1.5, 6.5, 3.0],\n", " [1.0, 6.0, 4.0],\n", " [1.5, 6.0, 4.5],\n", " [1.0, 6.5, 4.5],\n", " [1.5, 6.5, 4.0],\n", " [1.0, 6.0, 5.0],\n", " [1.5, 6.0, 5.5],\n", " [1.0, 6.5, 5.5],\n", " [1.5, 6.5, 5.0],\n", " [1.0, 6.0, 6.0],\n", " [1.5, 6.0, 6.5],\n", " [1.0, 6.5, 6.5],\n", " [1.5, 6.5, 6.0],\n", " [1.0, 6.0, 7.0],\n", " [1.5, 6.0, 7.5],\n", " [1.0, 6.5, 7.5],\n", " [1.5, 6.5, 7.0],\n", " [1.0, 6.0, 8.0],\n", " [1.5, 6.0, 8.5],\n", " [1.0, 6.5, 8.5],\n", " [1.5, 6.5, 8.0],\n", " [1.0, 6.0, 9.0],\n", " [1.5, 6.0, 9.5],\n", " [1.0, 6.5, 9.5],\n", " [1.5, 6.5, 9.0],\n", " [1.0, 6.0, 10.0],\n", " [1.5, 6.0, 10.5],\n", " [1.0, 6.5, 10.5],\n", " [1.5, 6.5, 10.0],\n", " [1.0, 6.0, 11.0],\n", " [1.5, 6.0, 11.5],\n", " [1.0, 6.5, 11.5],\n", " [1.5, 6.5, 11.0],\n", " [1.0, 7.0, 0.0],\n", " [1.5, 7.0, 0.5],\n", " [1.0, 7.5, 0.5],\n", " [1.5, 7.5, 0.0],\n", " [1.0, 7.0, 1.0],\n", " [1.5, 7.0, 1.5],\n", " [1.0, 7.5, 1.5],\n", " [1.5, 7.5, 1.0],\n", " [1.0, 7.0, 2.0],\n", " [1.5, 7.0, 2.5],\n", " [1.0, 7.5, 2.5],\n", " [1.5, 7.5, 2.0],\n", " [1.0, 7.0, 3.0],\n", " [1.5, 7.0, 3.5],\n", " [1.0, 7.5, 3.5],\n", " [1.5, 7.5, 3.0],\n", " [1.0, 7.0, 4.0],\n", " [1.5, 7.0, 4.5],\n", " [1.0, 7.5, 4.5],\n", " [1.5, 7.5, 4.0],\n", " [1.0, 7.0, 5.0],\n", " [1.5, 7.0, 5.5],\n", " [1.0, 7.5, 5.5],\n", " [1.5, 7.5, 5.0],\n", " [1.0, 7.0, 6.0],\n", " [1.5, 7.0, 6.5],\n", " [1.0, 7.5, 6.5],\n", " [1.5, 7.5, 6.0],\n", " [1.0, 7.0, 7.0],\n", " [1.5, 7.0, 7.5],\n", " [1.0, 7.5, 7.5],\n", " [1.5, 7.5, 7.0],\n", " [1.0, 7.0, 8.0],\n", " [1.5, 7.0, 8.5],\n", " [1.0, 7.5, 8.5],\n", " [1.5, 7.5, 8.0],\n", " [1.0, 7.0, 9.0],\n", " [1.5, 7.0, 9.5],\n", " [1.0, 7.5, 9.5],\n", " [1.5, 7.5, 9.0],\n", " [1.0, 7.0, 10.0],\n", " [1.5, 7.0, 10.5],\n", " [1.0, 7.5, 10.5],\n", " [1.5, 7.5, 10.0],\n", " [1.0, 7.0, 11.0],\n", " [1.5, 7.0, 11.5],\n", " [1.0, 7.5, 11.5],\n", " [1.5, 7.5, 11.0],\n", " [1.0, 8.0, 0.0],\n", " [1.5, 8.0, 0.5],\n", " [1.0, 8.5, 0.5],\n", " [1.5, 8.5, 0.0],\n", " [1.0, 8.0, 1.0],\n", " [1.5, 8.0, 1.5],\n", " [1.0, 8.5, 1.5],\n", " [1.5, 8.5, 1.0],\n", " [1.0, 8.0, 2.0],\n", " [1.5, 8.0, 2.5],\n", " [1.0, 8.5, 2.5],\n", " [1.5, 8.5, 2.0],\n", " [1.0, 8.0, 3.0],\n", " [1.5, 8.0, 3.5],\n", " [1.0, 8.5, 3.5],\n", " [1.5, 8.5, 3.0],\n", " [1.0, 8.0, 4.0],\n", " [1.5, 8.0, 4.5],\n", " [1.0, 8.5, 4.5],\n", " [1.5, 8.5, 4.0],\n", " [1.0, 8.0, 5.0],\n", " [1.5, 8.0, 5.5],\n", " [1.0, 8.5, 5.5],\n", " [1.5, 8.5, 5.0],\n", " [1.0, 8.0, 6.0],\n", " [1.5, 8.0, 6.5],\n", " [1.0, 8.5, 6.5],\n", " [1.5, 8.5, 6.0],\n", " [1.0, 8.0, 7.0],\n", " [1.5, 8.0, 7.5],\n", " [1.0, 8.5, 7.5],\n", " [1.5, 8.5, 7.0],\n", " [1.0, 8.0, 8.0],\n", " [1.5, 8.0, 8.5],\n", " [1.0, 8.5, 8.5],\n", " [1.5, 8.5, 8.0],\n", " [1.0, 8.0, 9.0],\n", " [1.5, 8.0, 9.5],\n", " [1.0, 8.5, 9.5],\n", " [1.5, 8.5, 9.0],\n", " ...]" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "at.positions" ] }, { "cell_type": "code", "execution_count": 48, "id": "82da973d-b761-45b3-8e61-bc3377f72933", "metadata": {}, "outputs": [], "source": [ "sys2 = System()\n", "sys2.box = box\n", "sys2.atoms = at" ] }, { "cell_type": "code", "execution_count": 49, "id": "67b569d3-f96c-4f68-91dd-ee3ec9fdf77a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "406 ms ± 27.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" ] } ], "source": [ "%%timeit\n", "sys2.find_neighbors(method=\"cutoff\", cutoff=0)" ] }, { "cell_type": "code", "execution_count": 50, "id": "b05ae9f3-9952-43a6-a9c0-df69f5328d18", "metadata": {}, "outputs": [], "source": [ "at.head = sys2" ] }, { "cell_type": "code", "execution_count": 51, "id": "b11331ff-2bdc-42ad-b6df-263a58984a57", "metadata": {}, "outputs": [], "source": [ "at.mapdict = {\"ghostx\":\"ghost\"}" ] }, { "cell_type": "code", "execution_count": 56, "id": "9861bb94-8668-497e-8cff-18f1d466990c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict_keys(['positions', 'ids', 'types', 'ghost', 'mask_1', 'mask_2', 'condition', 'head', 'neighbors', 'neighbordist', 'temp_neighbors', 'temp_neighbordist', 'neighborweight', 'diff', 'r', 'theta', 'phi', 'cutoff'])" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "at.keys()" ] }, { "cell_type": "code", "execution_count": 2, "id": "5ee451f1-59ac-4f54-a354-c666a8e8035a", "metadata": {}, "outputs": [], "source": [ "repetitions = [2, 5, 7, 10, 12]\n", "at_dict = [68.9, 31.6, 68, 258, 449]\n", "at_class = [73, 32.5, 70, 250, 441]" ] }, { "cell_type": "code", "execution_count": 10, "id": "b93ab21a-bc6d-44ca-ba82-821c525aadeb", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(repetitions, at_dict, \"-o\");\n", "plt.plot(repetitions, at_class, \"-o\");" ] }, { "cell_type": "markdown", "id": "05a2db7f-38a3-4aa1-9962-3d4539b3ab58", "metadata": {}, "source": [ "This is quite nice and fine; the way therefore is to draft a new class with convenient properties aimed at the user. " ] }, { "cell_type": "code", "execution_count": 11, "id": "16b4e87f-0cd7-4976-92d6-c3e1c9b37176", "metadata": {}, "outputs": [], "source": [ "class Atoms(dict):\n", " def __init__(self, *args, **kwargs):\n", " self.update(*args, **kwargs)\n", "\n", " def __getitem__(self, key):\n", " if isinstance(key, slice):\n", " return self._get_atoms(key)\n", " elif isinstance(key, int):\n", " return self._get_atoms(key)\n", " else:\n", " val = dict.__getitem__(self, key)\n", " return val\n", "\n", " def __setitem__(self, key, val):\n", " dict.__setitem__(self, key, val)\n", "\n", " def __repr__(self):\n", " dictrepr = dict.__repr__(self)\n", " return '%s(%s)' % (type(self).__name__, dictrepr)\n", " \n", " def update(self, *args, **kwargs):\n", " for k, v in dict(*args, **kwargs).items():\n", " self[k] = v\n", " \n", " def _get_atoms(self, index):\n", " atom_dict = {}\n", " for key in self.keys():\n", " atom_dict[key] = self[key][index]\n", " return atom_dict " ] }, { "cell_type": "markdown", "id": "b39da9a5-0390-4a8d-93cf-19714bc2134d", "metadata": {}, "source": [ "Speedtest this class" ] }, { "cell_type": "code", "execution_count": 20, "id": "fe32ef44-d11f-43f6-99ed-c8345338649e", "metadata": { "tags": [] }, "outputs": [], "source": [ "rep = 12\n", "atoms, box = pcs.make_crystal(structure=\"fcc\", repetitions=(rep,rep,rep))\n", "at = Atoms()\n", "for key, val in atoms.items():\n", " at[key] = val\n", "sys = System()\n", "sys.box = box\n", "sys.atoms = atoms" ] }, { "cell_type": "code", "execution_count": 21, "id": "8fdad6e7-0ba9-4940-bb69-f81113a34061", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "473 ms ± 44.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" ] } ], "source": [ "%%timeit\n", "sys.find_neighbors(method=\"cutoff\", cutoff=0)" ] }, { "cell_type": "code", "execution_count": 3, "id": "8ab0b9f8-6c27-4aac-a7bb-0496037559a6", "metadata": {}, "outputs": [], "source": [ "at_class_v2 = [72, 32, 68, 260, 473]" ] }, { "cell_type": "code", "execution_count": 23, "id": "7ecd8415-de22-428e-8c05-b2b26425b6e9", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD4CAYAAAAXUaZHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAsfElEQVR4nO3dd3hUVf7H8fdJMskkpAIJhCQQmpDQkSIioKKCgIIKgovKKoruDwURRLABsiwoyIoFQVkVO6AICCIlFlRqqJLQQk8jhZBeppzfH5llUUHaJDcz+b6eh2cmZ+7MfK7ED2fO3LmjtNYIIYRwLx5GBxBCCOF8Uu5CCOGGpNyFEMINSbkLIYQbknIXQgg35GV0AIDatWvr6Ohoo2MIIYRL2b59e5bWOvR8t1WJco+OjiY+Pt7oGEII4VKUUscvdJssywghhBuSchdCCDck5S6EEG5Iyl0IIdyQlLsQQrghKXchhDDAqiOruO3L22i9sDW3fXkbq46scurjV4lDIYUQojpZdWQVkzdOpsRWAkBaYRqTN04GoG+jvk55Dpm5CyFEJZuzY87ZYv+vElsJc3bMcdpzSLkLIUQlSy9Mv6zxKyHlLoQQlaxujbqXNX4lpNyFEKKSdajT4U9jZk8zo9uPdtpzyBuqQghRidIK0og7EUfT4KYUWApIL0ynbo26jG4/2mlvpoKUuxBCVBqtNf/c8k80mjd7vkmEf0SFPZcsywghRCVZc2wNG5I38ETbJyq02EHKXQghKkVuaS7Tt06nRa0WDI0ZWuHPJ8syQghRCWbFzyK3NJd3b30XTw/PCn8+KXchhKhgW9K2sCxpGcNbDqdZzWYALNuZwsw1B0g9U0y9YF+e6dWMAe2ct1Qj5S6EEBWoxFrClE1TqB9Qn8fbPA6UF/vEpb9RbLEBkHKmmIlLfwNwWsHLmrsQQlSgd3a/w8n8k0zqMgmzlxmAmWsOnC32/yq22Ji55oDTnlfKXQghKsj+0/tZmLCQu5rcRafwTmfHU88Un3f7C41fCVmWEUKICmC1W5m8cTLBPsGM7TD2d7eFBfrQuSCO8V6LqaeySNW1edV6L9sDb3Xa80u5CyFEBfh036ckZCcws8dMgnyCzo5bbHb66J95xrQAP1UGQKTK4hXTAvbGRgM3O+X5ZVlGCCGcLDk/mbd3vU2PyB70atDrd7e9EXeI4aWfnC32//JVZXQ8/KbTMki5CyGEE2mtmbp5KgrFC9e9gFLq7G1bj57m7R+SiPDIPv+dc5OdlkPKXQghnGjlkZVsTN3I6Pajf3cK39xiC2MW7SKqph/aHHz+OwdFOi2HlLsQQjjJ6ZLTvLrtVVqHtmZws8Fnx7XWvLBsL+l5JbzTOxCPsgJQf6hfky/0fMlpWaTchRDCSWZum0mBpYApXab87hQDy3al8M3uVJ6+KZrYTWPBuwb0ngFBUYAqv7zjDWh9r9OyyNEyQgjhBL+m/MrKIyt5rPVjNAlpcnb85OkiXlyWQMfoEP7BEkjdCfd+BLH9ofNjFZZHZu5CCHGViixFTN08lYZBDRnResTZcavNzlOLdqGAt7sW4fHrv6HdA+XFXsFk5i6EEFfp7V1vk1KQwsLeC/H29D47/tYPSWw/nsPcuxsStm4Q1GxYvhxTCaTchRDiKiRkJfDJvk8YdM0g2tdpf3Z8+/HTvBF3iLva1qPP8VehIB2GrwUf/0rJJcsyQghxhSx2C5M2TqKWuRZjrh1zdjy/xMJTi3ZRL9iXfzVOgISv4abnIOLaSssmM3chhLhCHyV8xIGcA7x+4+sEeAecHZ+0IoGUnGKW31cP35UPQIOu0PWpSs0m5S6EEFfgRN4J3tn9Dj3r96Rng55nx1fsTmXpjhTG3NSQVlueBOUJd82HSvj2pXNJuQshxGXSWvPyppcxeZh4rvNzZ8dTzhTz/Ne/0a5+ME96fQ0p8TDwfQiOqvSMsuYuhBCXaVnSMrakb2HMtWMI8wsDwGbXjPliF3a75p1uFjx+mQVt7oOW9xiSUWbuQghxGbKKs5gVP4v2Ye0ZeM3As+PzfjrM1mOnmTOgEXXj7oXg+nD7q4bllHIXQojL8MrWVyi2FjPp+kl4OM4Ps+vkGf697iD9WodzZ8psyE2Bh78Dc6BhOS95WUYp5amU2qmUWun4uaZSap1S6pDjMuScbScqpZKUUgeUUr0u/KhCCOE6fjr5E98d+44RrUfQKKgRAIWlVp76Yid1As28es1+1G+LocezENXpIo9WsS5nzX00sO+cnycAcVrrpkCc42eUUrHAEKAF0BuYq5Sq3LeJhRDCyQothUzdPJUmwU0Y3nL42fGXv0nk+Oki3upTC791z0JUZ+g29i8eqXJcUrkrpSKBvsCCc4b7Awsd1xcCA84Z/0JrXaq1PgokAcb+EyaEEFfpjR1vkFGUweTrJ2PyNAGw+rc0FsWfZGSPBrTbNr58w7vfBU/jV7wvdeb+OjAesJ8zVkdrnQbguAxzjEcAJ8/ZLtkx9jtKqRFKqXilVHxmZubl5hZCiEqzO3M3n+//nCHNh9AmtA0AabnFTFj6G60jgxhj/hZOboa+r0FItLFhHS5a7kqpfkCG1nr7JT6mOs+Y/tOA1u9qrTtorTuEhoZe4kMLIUTlstgsTN44mTC/MEa3Hw2A3a55etFuLDY7827UeP40A1oNcur52K/Wpbx26ArcqZTqA5iBQKXUJ8AppVS41jpNKRUOZDi2TwbOPWI/Ekh1ZmghhKgs7+99n6QzSbx181vUMNUA4L2fj7DpSDaz+zemXtxgCIyAPrMMTvp7F525a60naq0jtdbRlL9R+r3W+n5gBTDMsdkwYLnj+gpgiFLKRynVEGgKbHV6ciGEqGBHco8wf898ekX3okdUDwD2puQya+0Bbm9Zl7tOzYEzJ+Du+eAbbGzYP7iaVf8ZwGKl1HDgBDAIQGudoJRaDCQCVmCk1tp21UmFEKIS2bWdKRun4Ovly4ROEwAoLrMx6oud1Krhw6zYw6gVn0H3Z6DB9Qan/bPLKnet9Y/Aj47r2UDPC2w3DZh2ldmEEMIwXx36ih0ZO3j5+pep7VsbgKmrEjmaVciSIVHUWP0QRHQoP6a9CpJzywghxB9kFGXw7/h/06luJwY0GQDA2oR0PttygsduaECHHRPBboN73gPHYZFVjZS7EEL8wfQt0ymzl/FSl5dQSpGRV8KzX+2hZUQg4/zXwPFfys8bU7OR0VEvSMpdCCHOEXc8jvUn1vN4m8dpENgAu10zdsluii023rnJA6+f/gWxA6Dt34yO+peM/xiVEEJUEfll+UzbMo1mIc0Y1qL8YMAPNh7j50NZzLijEVHfDwX/OnDH66DO95GeqkPKXQghHF7f/jrZJdm8efObmDxMJKbm8crq/dwSU4fB2e/A6SMw7BvwDbn4gxlMlmWEEALYcWoHiw8uZmjMUFrUbkGJxcboL3YS5Gfi361PoHYshBuegobdjI56SWTmLoSo9spsZUzeNJkI/wieaPsEANO/3cehjAK+GNKAgDWPQHhbuPG5v36gKkTKXQhR7b3323sczT3KvFvm4Wfy44f9GSzcdJzhXRtw3e7nwFoK9ywAL2+jo14yWZYRQlRrSTlJLPhtAX0b9aVrRFcy80t55svdNK8bwITgODj6E/SeDrWbGh31ski5CyGqLbu2M3nTZPxN/ozvOB6tNeO/3E1+iZX5t3pj+mEqNO8H7Ydd/MGqGCl3IUS1tejAInZn7mZ8x/HUNNfko03H+eFAJi/2iqbBD6OgRm24880qf9jj+ciauxCiWkovTOf17a/TJbwL/Rr14+CpfKZ9u4+bmoUyNHcBZB2AB5aBX02jo14RmbkLIaodrTXTNk9Do3mpy0uUWu2M+nwngWYvXm+XjopfAF2egMY3GR31ikm5CyGqnbXH1/Jj8o+MbDuSyIBIZq45wP70fOb0rUfQ2qegTivo+ZLRMa+KlLsQolrJLc1l+pbpxNaKZWjMUDYczOQ/vxzl79dF0XXvi1BW6Djs0cfoqFdF1tyFENXK7O2zOVN6hnm3ziOv2M7YJbtpGubP82G/wK648i+5DmtudMyrJjN3IUS1sTVtK0sPLeXBFg/SLKQZ47/cQ26Rhfm3mTHFTYZrekOH4UbHdAqZuQshqoUSawlTNk0hKiCKf7T5B59tPcH6faeYfHtjGm14CMxBcOdbLnnY4/lIuQshqoX5e+ZzIv8E7932HimnbUxdmUi3prUZVvg+ZCTC0K/AP9TomE4jyzJCCLd34PQBPtj7Af0b96d9aCdGf7ETX5Mnb3bIQm2dD50fh6a3GB3TqWTmLoRwaza7jckbJxPkE8S4DuN4bd0BElLz+HBQNMFrB0BYLNwyxeiYTiflLoRwa5/t/4y92Xt5tfurJCZbeXfDEf7WKYobD7wMJbnw4DIwmY2O6XSyLCOEcFspBSm8ufNNukV0o3PozTy9eDcNa9dgcvgWOPgd3Poy1GlhdMwKIeUuhHBLWmumbp4KwAudX+D5ZXvJLixlfq8aeMe9AE1ugc6PGZyy4ki5CyHc0rdHv+XXlF8Z3X40v+y3sXpvOuNvaUjTn8eAtz/0n+s2hz2ej6y5CyHcTk5JDq9sfYXWtVvTufYd3Pn5Rq5vXItHSj+BU7/BfYsgoI7RMSuUzNyFEG5nVvws8svyeb7zS4xdtAeTpwdvds5FbX4LOj4CzXobHbHCycxdCOFWNqZsZMXhFTza6lFWbdfsTs5lwcCG1Fp7F9RuBrdONTpipZCZuxDCbRRZinh588tEB0bTPnAgc388zOBrI7klaRoUZZef7dHbz+iYlULKXQjhNt7Z/Q4pBSmMu/Z5xi/ZR4OafrxcfzvsXwm3TILw1kZHrDRS7kIIt5CQncBHiR9xT9N7WPKLNxn5pczrHYjP+ueh0Y1w3UijI1YqKXchhMuz2q1M2TiFmuaaNDUNYeWeNMb2bEjzjU+Xf+nGgHngUb3qrnrtrRDCLX2c+DH7Tu9jROxYpq88TqeGNXnMvgjSdsGdb0JguNERK52UuxDCpZ3MO8nbu97mxsibWLQhGKXg7esL8fj1dWg/DGLuMDqiIaTchRAuS2vNlM1TMHmYqGO5j10ncpnZN4rQdaOgVmPoPd3oiIaRchdCuKwVh1ewJW0Ld0c/yvs/nebudvXofXQGFJxyHPZYw+iIhrlouSulzEqprUqp3UqpBKXUFMd4TaXUOqXUIcdlyDn3maiUSlJKHVBK9arIHRBCVE/ZxdnMjJ9J69ptWfZzfSJD/JjW8DdIXA43vwD12hkd0VCXMnMvBW7WWrcB2gK9lVLXAROAOK11UyDO8TNKqVhgCNAC6A3MVUp5VkB2IUQ19sq2VyiyFFEjbwjpuWXMvT0Y3/UTIbobXD/K6HiGu2i563IFjh9Njj8a6A8sdIwvBAY4rvcHvtBal2qtjwJJQCdnhhZCVG8bkjew+uhquoUOZu1ueOrGhrTcPA48POGueeWX1dwlrbkrpTyVUruADGCd1noLUEdrnQbguAxzbB4BnDzn7smOsT8+5gilVLxSKj4zM/MqdkEIUZ0UWYr45+Z/Ut+/Id9vasm1DUIY6fElpMTDHXMgKNLoiFXCJZW71tqmtW4LRAKdlFIt/2Lz850gWZ/nMd/VWnfQWncIDXWfbxwXQlSsN3e+SXphOmQPQuPF3BtK8Ph1NrS9H1rcZXS8KuOyjpbRWp8BfqR8Lf2UUiocwHGZ4dgsGYg6526RQOrVBhVCiD2Ze/h036fE+Pci4UhNZvSNos76URDcAG6fYXS8KuVSjpYJVUoFO677ArcA+4EVwDDHZsOA5Y7rK4AhSikfpVRDoCmw1cm5hRDVjMVuYfKmyQT71CZ+Zxf6t61Hv5OzIS+1/LBHnwCjI1Ypl3I+93BgoeOIFw9gsdZ6pVJqE7BYKTUcOAEMAtBaJyilFgOJgBUYqbW2VUx8IUR18eHeDzmUcwj/M49S1z+Y6U32wcolcNMLENnB6HhVzkXLXWu9B/jTAaNa62yg5wXuMw2YdtXphBACOJZ7jHm751HHsxNH0huz9L5a+K0aBvW7QLenjY5XJck3MQkhqjS7tjNl0xQ8lDeH993KkzdG03bbmPIb75ovhz1egJS7EKJKW3poKfGn4iFzEK3rRTHa+xs4uQXu+Q+ENDA6XpUl55YRQlRZmUWZvBY/Gz/7NdjzOjKvuxXPDa9C68HQaqDR8ao0mbkLIaqs6VunU2wpIffoHcy+PZrwuMEQFAF9ZhodrcqTchdCVEnfn/iedcfXYcnsRZ9mrRmQPgdyT8JDq8EcZHS8Kk+WZYQQVU5BWQH/3DwNT2s9gi238WrzQ6jdn0P3Z6D+dUbHcwlS7kKIKuf1Ha+TWZxJfvJdvNW3LjXWPgORHaH7eKOjuQxZlhFCVCk7M3ay6MAiyk53ZUTHbnTY/gxoG9z9HnhKZV0q+S8lhKgyymxlvPDLJLCG0MRrIGNrrIbjv8KAeVCzodHxXIqUuxDCcKuOrGLOjjmkFaYBYM/vwfxbzHgtnQ4t7oY2QwxO6Hqk3IUQhlp1ZBUv/jIJiy49O2YK2cTun38m0r8u9JsN6nxnEhd/Rd5QFUIYavrm2b8rdgAbZcwxlcHd74JvyAXuKf6KlLsQwlC5ZRnnHU/z8oLorpWcxn1IuQshDHPkzBH0eb+8DewW+aDS1ZByF0IYIjE7kaGrHsTL7oG3/fffxGm22+mc39SgZO5B3lAVQlS6Had28Ni6f1Bc4sOH6QWc8ilkTkgw6V6e1LXaGJ1zhpvsm4yO6dKk3IUQlerXlF95Mm40pSWBNLA8xbXWB1FWTd/Coj9sWWxIPnchyzJCiEqz7vg6/m/9E5QU1ySGZ1k07GaUyXz+jYMiKzecm5FyF0JUimVJyxj74zgsRRF0Mr/AJ/d1JGDJYLAUg4fp9xubfKHnS8YEdROyLCOEqHCfJn7KjG0zsBY05dZa43nttnBMH/WB7CS4ewGgIe5lyE0un7H3fAla32t0bJcm5S6EqDBaa+bvfpe3d7+FJa8Fg+pPYEpHDzw+6AVlhfDAUmjYvXxjKXOnknIXQlQIrTUzt83i430fYTnTjkdjJvJ043TUhw+AORAe/g7qtDA6ptuSchdCOJ3NbmPyxqksO/wVZae7ML7DswwP3AafjoTazWDokvKvyxMVRspdCOFUFruFZ36cSNzJNZRl3cTUbmO5t2QJfD21fAlm8CfyNXmVQMpdCOE0JdYSnowbw+b0X7Bm9uHNXk9y27FZsP0DaHUv9H8bvLyNjlktSLkLIZyi0FLIiDUj2ZO1A3vW3bzfbzhddoyFg9/BDWPg5pfAQ46+rixS7kKIq5ZbmstDq0dw6Mx+VNbf+OKOe2j10zBI2wV9ZkGnR42OWO1IuQshrkpmUSYPfjuc5IKTeGc/xJJ+N9Hou4GQf6p8fb15X6MjVktS7kKIK5ZSkMIDqx4moyiLgNzHWNa7BXWWDyj/5qRh30BUR6MjVltS7kKIK3Ik9wgPrnqEMyUFhBaM4uvugQR/PRACwuH+r6BWY6MjVmvy7oYQ4rLty97Hfd88SE5xMfVLx7KqfRHB3zxc/qGk4euk2KsAKXchxGXZlbGLB759iIISRQv9LMsa7sVv/QRo2qt8KcY/1OiIAlmWEUJcho0pGxkZN4qykgCuN49lnu/XeG7+Ejo8DLfPBE+plKpC/iaEEJdk3bH1jPvpGSwlofQLeooZJXPxSPgZek4qP45dnf+7UIUxpNyFEBf19aHlTNr4EtaiSB4K+z/GnZqKyjoEd70LbQYbHU+cx0XX3JVSUUqpH5RS+5RSCUqp0Y7xmkqpdUqpQ47LkHPuM1EplaSUOqCU6lWROyCEqFgfJXzKSxtfwFLYiGcjHmXcsXGo3GS4/0sp9irsUt5QtQJjtdYxwHXASKVULDABiNNaNwXiHD/juG0I0ALoDcxVSnlWRHghRMXRWvPWjvnMjJ+BJT+W16IGMizhSRTAQ6uh0Y0GJxR/5aLlrrVO01rvcFzPB/YBEUB/YKFjs4XAAMf1/sAXWutSrfVRIAno5OTcQogKpLVm+ubXmP/bW1hz2/FhVHf67BwNgRHwyDqo29LoiOIiLmvNXSkVDbQDtgB1tNZpUP4PgFIqzLFZBLD5nLslO8aEEC7Aru08v2EKK48txXbmOpZHRnLNzucgulv56QR8g42OKC7BJZe7Usof+Ap4Smudpy78zvj5btDnebwRwAiA+vXrX2oMIUQFstgtjImbwE+payHnJuJCLYT/NhtaDoQBc8HLx+iI4hJd0oeYlFImyov9U631UsfwKaVUuOP2cCDDMZ4MRJ1z90gg9Y+PqbV+V2vdQWvdITRUPvQghNFKbaWM+G4UP6WuxTunF78GphJ+6DPo+hTc/Z4Uu4u5lKNlFPAfYJ/WevY5N60AhjmuDwOWnzM+RCnlo5RqCDQFtjovshDC2YosRTywcgTxmb8QfKYvv/rEE3hiffnpem+dIudhd0GXsizTFXgA+E0ptcsx9hwwA1islBoOnAAGAWitE5RSi4FEyo+0Gam1tjk7uBDCOXJLc7l/5aMczT9A/bw7WW5fhSk7rXx9Paaf0fHEFbpouWutf+H86+gAPS9wn2nAtKvIJYSoBFnFWdy34mHSik7QpqAPHxd/jgfacbpeOcjNlclrLSGqqdSCVO7+eihpRcncUngLn+R+gIc5oPysjlLsLk9OPyBENXQs9xj3ffMQ+WUFDC3uwoTs/6DC28LfFstZHd2ElLsQ1cz+7P088O0jFJXZGFfcnIeyPoFresPA98G7htHxhJNIuQtRjew4tYtHvnuMMosXM4vD6JO9Aq79O/R5TU7X62bkb1OIauLnkxt54vtR2Mtq8H6hB53O/Ag3vwjdxsrpet2QlLsQ1cB3R9YzfsMzUBrMVwW5XFN4HAbMg7b3GR1NVBApdyHc3JL9y3h58yRMJaGszD1BPVsRDF0CjW82OpqoQFLuQrixBbs/Yc6uV/AvrsvqnH0E+/jDsNVQt5XR0UQFk3IXwk3N3jqPD/a9TWhhHVZl7cS3VmMY+iUER138zsLlSbkL4Wa01kz+ZSZLj3xMo4JQvszchqnBDTDkE/ANufgDCLcg5S6EG7FrO+O+n8y65K9pnx/C+1nb8Wx5Dwx4R87qWM1IuQvhJqx2K/9YM57NGeu4NbcGr53ejbp+FNwiZ3WsjqTchXADpbZSHlo1it9yNjLkjBcTc/ajbn8VOj9mdDRhECl3IVxckaWI+1Y8xpGCXfzfaRuPF2agBn8MMXcYHU0YSMpdCBeWW5rLvcseIbX4AM9nFzHYYkM9uALqdzY6mjCYlLsQLiqrKIuByx7idOkJZmblcJspBDXsK6jd1OhoogqQchfCBaXmpzJw+d8ptJxibsYprg9uhsfQJeAfZnQ0UUVIuQvhYo6cOcbgFX/HZs3hw1OptI26ETXoA/DxNzqaqELk+CghXMjezH0MXD4UD2sOn6an0LbFfaj7PpdiF38iM3chXMSWlB08tu5xAmwlLExPodENE6D7ODldrzgvKXchXMD3x35lzI+jCLWW8cGpU0T1eQPaDTU6lqjCpNyFqOKWHVjDS5uepYHFwruZOYQP/hya9DQ6lqjipNyFqMI+2vM1s3ZMIqa0jLdybYQ+9B2EtzY6lnABUu5CVFFvbfuY+Qmvcm1JKbNK/Kk9YhkE1zc6lnARUu5CVEH//PltFh2ZR/fiYqZ6NKTmY4vldL3iski5C1GFaK15Nm4Gq1M+4/aCQp4PvJ6gIQvAZDY6mnAxUu5CVBF2bWfkt8/zS9ZK7skrYGyDQQT0myGn6xVXRMpdiCrAarfy8LJR7Mz/mWFn8vi/tk/j12O00bGEC5NyF8JgZbYyhi55mP2lu/lHTj4P3Tgb37b3GB1LuDgpdyEMVFhWyJDFQzlmO8yY00Xc3/9TvBt1NTqWcANS7kIY5ExJLkMWDSJNpzIhx8bgv63Cq05zo2MJNyHlLoQBMgoz+dviu8lWOTyX68O9j6xCBdQ1OpZwI1LuQlSy42dS+PvSuyhQhbxYGMZdjy1HmQONjiXcjBxjJUQl2pdxkAeX9qNEFfKCrTl3P75Wil1UCCl3ISrJtuPbeHTlQDSlvODdg/7DvwRPk9GxhJuScheiEmxIXMuouIfx1lZeqPU3+g6dK+dhFxXqouWulHpfKZWhlNp7zlhNpdQ6pdQhx2XIObdNVEolKaUOKKV6VVRwIVzFt9s+Y9yWpwmyW5nUcCy39X/B6EiiGriUmfuHQO8/jE0A4rTWTYE4x88opWKBIUALx33mKqU8nZZWCBez+IfXeXHvvwiz2pnSZiY9bh5udCRRTVy03LXWG4DTfxjuDyx0XF8IDDhn/AutdanW+iiQBHRyTlQhXMuHq57jX8cX0MAC0274gM4d+xkdSVQjV3ooZB2tdRqA1jpNKRXmGI8ANp+zXbJj7E+UUiOAEQD168s5qoV7mbvkEeYVbqZZqSfT+izhmqhrjI4kqhlnv6F6vneI9Pk21Fq/q7XuoLXuEBoa6uQYQhjEbmP2R/15p2gLLUp8+fc966TYhSGudOZ+SikV7pi1hwMZjvFkIOqc7SKB1KsJKISr0GVF/OujPnxhyqZVSTBv3L+a2v7+RscS1dSVztxXAMMc14cBy88ZH6KU8lFKNQSaAluvLqIQVZ+9MIsXP+jOF6Zs2pRG8e6wOCl2YaiLztyVUp8DNwK1lVLJwCRgBrBYKTUcOAEMAtBaJyilFgOJgBUYqbW2VVB2IaoES1YSzy25i+/8oJ21Be899Ck+JjlITBjrouWutb7vAjf1vMD204BpVxNKCFdRfGIr41cN40c/Lzqprsz/+1y8POWzgcJ48lsoxBXKS/iG0d/ez49+XnT3uYMFD7wjxS6qDDkrpBBXIHvTfMbseY1dZh96Bw1j5oBxRkcS4nek3IW4HFqTvuZFRp1YwkEfH+4JH8OkXg8bnUqIP3Htct+zGOJehtxkCIqEni9B63uNTiXclc3Cia9G8ETuJk6afHiw0SSe7i7fdSqqJtddINyzmFXrn+G2AButoyO5LcDGqvXPlBe+EM5Wmk/SRwMYkbeZZC8fRrZ4TYpdVGkuO3Nf9fPLTA7xp8Sj/N+nNJMXk0P84eeX6Suzd+EM57wyPOhj5vGwEHI9fJnY4S0Gtbre6HRC/CWXnbnP8bGdLfb/KvHw4DWzDdvW9yBlO1hKDEonXN6exaxYN47bAmy0io5kYHhtipUHb0QNlWIXLsFlZ+7pXuf/kEimlxddEl7nmp0WYsqsxJprE1srlkYR12GK6AB1WoDJt5LTCpehNWTsY/n6CfyzZsDZCYQGLEpzKnEB3DrW2IxCXAKXLXdvqx+lpuI/jXtZTUR4dSbf7wjLzRl8QTHkb8c7MZ6mu8uILbMS412L2JoxNInsgk/EtVCnJXj7GbAXokoozIYjP8Dh7zlzOI7ttlz+FVrrT68MSz08mFfDzt0GxRTicrhsuauCgXgEfYbd439nN/Cwe1KSeQ+n9HWk5pYAdpTpNEFB6dQNPk6RzxG+9clgCSVQuBOv/TtovMdCbJmFGO8QYkKa0yyyC74RHaFuS/CuYdwOiopjs8DJrXD4e0qS1rMnZz+bfX3Y6FuDxFreaBVaPoM/jwu9YhSiqnHZcn++x1CeW2tF1VyNMp1BW4Kxnb6d6b2GMaBdBGeKytiXls/+9Dz2peWVXz+WT5nVhjLl4O2XQljwCUrMx1jvfYqvVRkU7cHjwG4a7X2TmDILMaZgYoKvoXlEF/wjO0HdVuAjJ4NySaePQFIctqT17E/exFaTnU1mX7abzZSFh4FWmG3RtPJvz62NujF350SKvf78ytBsk1d4wjW4bLkPaBcBDGPmmutIPVNMvWBfnunVzDEOwX7edGlciy6Na529j9Vm52hWIfvS8x2FX/7nVF4JyisPD3MydQOPUVrjGBtqZPCNKoXiBEhKIDrxHWLKyojxCiImuCkxEdcRFNkZwluDT4BB/xXEBZXkwbGfISmO44fXsdWazWazmc2+fuTVCQLAyxpGlLkdPSKvZ0jrG4kIqnn27sfPPMnS46/96ZVh34ZPVvquCHEllL7Ay8/K1KFDBx0fH2/Y858uLDun7MuLPymjAAu5eJhTCfE7TK2AYxSbMsjx+N8ROBEWK7FlZcR4BhAT3ISY8E7UiuoC4W3AHGjY/lRLdhuk7YKk78lKWsu204lsMXuzydeXVMcZGj2t/tQ2taFT+HXc2+Im2tZr8JcPOeX7j/nq6HvYPXPwsIVwT8NHmXTzA5WwM0JcGqXUdq11h/PeJuV+fhabncOZBexLy2N/Wj6JjuLPKj6Np08qgebD1Ao4isUng9Oe/3v5XsdqJaa0jFhPf2KCGhMb3pHQqOtR4W3AN9i4HXJHealw+HsKD61le/KvbPO0stnXzH4fbwA8bCYCVAytanWmf7MbuaVJSzmxl3ArUu5OlJlfWl746efM8rMy0d6pBJgPE+x3GHwzOO1ZhHZ86WAtq618ScfDjxaBDYmp24Hw+jeg6rUF3xBD98elWIrh+K9YDq1nz5H1xFtOscVsZpfZB4tSKLsHvrZomgR1olfjbtwV25kAs4/RqYWoMFLuFazUaiMpo6D8Tdu0PPal55GYnkWu7QQB5iSCfZNQvhnkmAqxOwo/yOYofOVLbEA0sXWvJbL+DXjUaw9+Nf/6CasLxzHnOmk9Bw+tJj4nkS0+Xmz1NVPoOEzRtyyMcL+OdK/flSGtuhMRHGRwaCEqj5S7AbTWZOSXOpZz/ru0k8XxgiP4eicR4puEMqeR61OI1VH4/nY7zUvLiFVmYgLqExvWjgYNuuNZ71qoUeuvn9BdOI45Tz2wis0pm9juWcpmXzMZXuXv/Zst/oSY2tIxvCv3tryJ1uH1UOp838suhPuTcq9CSiw2Dp0qX8tPTMsjMf00+7MPoTlITd9DKHMqeT6FWDzK/1587XaalVmIxZsY/yhi6rSjUVR3TBHXgn+owXvjBI5jzvMOfsfGw+vYaUlns6+ZI94mALytJgJpTkztG+jfvAc9m8TIurkQDlLuVZzWmrTckrNH7CSmnWFv5iFyihOoZT6IhzmVXHM+ZY7C97HbuabMQnNtItY/ipiwNjSt3wPviGshoI7Be3MJTh+h7OAath1YSXzufrb5eLLXxxubUnjaPQiyRBEV3JVejXswoEUHAszeRicWokqScndRxWU2Dpwqf9M2MfUMe04dJiV3D/6mRDzNKeT55FHiWf7356U1TcssNLd7ElMjgtiwNjSr3wNzZEcIqGvsjpTkYT/6EwmJy9ictoXtniXsMPtQ7OGB0hBUVosw3850je7BvS1vIDJEDiMV4lJIubsRrTXJOcWOws9jV9phjuXsBttuvMwp5JtzKfK0A+CpNQ0tFprbPIjxq0fL0NY0q9+dGlGdISAcKmqt2nHM+YnEZWw4Gscu6ym2mn3I8Sw/3jywrAY1PVvSJqInA1vcSJuIurJuLsQVkHKvBgpLrexPzycxNZedqcc4mLmTkuIdKO8TFJhzKfAq/6Sl0poGFivNbIpmvnVpXbslMfW7E1i/CwRGXHnh56WSs38lP+5fwc78Q8T7KE6aytfNa1hN1LQ3olFoT+6MuZmbmjTFJOvmQlw1Kfdqym7XnMwpYl9aHvHJJ9ibvp2C/HgsHkcp9Mkh1/S/j9ZHWiw0syqaeofROrQFLet3I6RBVwiKAqV4Y8nTLM9dQ6aXItSqGRDYk0fa9GbT3i/ZkrGdnZ4l7Pc2oZXCx6aobQknPLArPa/pzZ2xbQn0lXVzIZxNyl38Tl6JhQPp+Ww/eZKdKdvJytlCkT2JQu/T5Hhbz25X12rlGotGY2Kzj8bi8b9ZvYfj98auFJ4aQkuDqOPTnmsb9mNgqy5E1ZTz7QhR0f6q3F32xGHiygWaTXSMrknH6JpAG+BhbHbN8exCtp9MZduJ7aRmbSSv7AAJpiyyTWV/Wq6xK4WfzU7v8OcY0LInbSPDZN1ciCpEZu7iL+UWWei2uB36PMWttGbP3/cakEoIAX89c5d3tcRfCvIzEWo9/wTgQuNCCONJuYuL6h/UC7Pd/rsxs91O/6BeBiUSQlyMlLu4qFGDZvOAfy/CLHaU1oRZ7Dzg34tRg2YbHU0IcQHyhqq4JKMGzWaU0SGEEJdMZu5CCOGGpNyFEMINSbkLIYQbknIXQgg3JOUuhBBuqEp8QlUplQkcv4qHqA1kOSmOK6hu+wuyz9WF7PPlaaC1Pu9XslWJcr9aSqn4C30E1x1Vt/0F2efqQvbZeWRZRggh3JCUuxBCuCF3Kfd3jQ5Qyarb/oLsc3Uh++wkbrHmLoQQ4vfcZeYuhBDiHFLuQgjhhly23JVSUUqpH5RS+5RSCUqp0UZnqixKKU+l1E6l1Eqjs1QGpVSwUupLpdR+x993F6MzVTSl1BjH7/VepdTnSimz0ZmcTSn1vlIqQym195yxmkqpdUqpQ47LECMzOtsF9nmm43d7j1Lqa6VUsDOey2XLHbACY7XWMcB1wEilVKzBmSrLaGCf0SEq0RzgO611c8q/9NWt910pFQGMAjporVsCnsAQY1NViA+B3n8YmwDEaa2bAnGOn93Jh/x5n9cBLbXWrYGDwERnPJHLlrvWOk1rvcNxPZ/y/+EjjE1V8ZRSkUBfYIHRWSqDUioQ6A78B0BrXaa1PmNoqMrhBfgqpbwAPyDV4DxOp7XeAJz+w3B/YKHj+kJgQGVmqmjn22et9VqttdXx42Yg0hnP5bLlfi6lVDTQDthicJTK8DowHrBfZDt30QjIBD5wLEUtUErVMDpURdJapwCzgBNAGpCrtV5rbKpKU0drnQblEzggzOA8le1hYLUzHsjly10p5Q98BTyltc4zOk9FUkr1AzK01tuNzlKJvID2wDta63ZAIe73Uv13HOvM/YGGQD2ghlLqfmNTiYqmlHqe8uXmT53xeC5d7kopE+XF/qnWeqnReSpBV+BOpdQx4AvgZqXUJ8ZGqnDJQLLW+r+vyr6kvOzd2S3AUa11ptbaAiwFrjc4U2U5pZQKB3BcZhicp1IopYYB/YCh2kkfPnLZcldKKcrXYfdpravFNzVrrSdqrSO11tGUv8H2vdbarWd0Wut04KRSqpljqCeQaGCkynACuE4p5ef4Pe+Jm7+JfI4VwDDH9WHAcgOzVAqlVG/gWeBOrXWRsx7XZcud8lnsA5TPXnc5/vQxOpSoEE8Cnyql9gBtgX8ZG6diOV6lfAnsAH6j/P9Tt/tYvlLqc2AT0EwplayUGg7MAG5VSh0CbnX87DYusM9vAQHAOkePzXPKc8npB4QQwv248sxdCCHEBUi5CyGEG5JyF0IINyTlLoQQbkjKXQgh3JCUuxBCuCEpdyGEcEP/D6KQjact1BKqAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(repetitions, at_dict, \"-o\");\n", "plt.plot(repetitions, at_class, \"-o\");\n", "plt.plot(repetitions, at_class_v2, \"-o\");" ] }, { "cell_type": "markdown", "id": "366e2003-19cd-447b-a28e-3b2c57dfc9dd", "metadata": {}, "source": [ "It is not particularly more expensive, we go with this definition and extend it." ] }, { "cell_type": "markdown", "id": "5942b5cd-fb38-4899-a1c8-df86c327f3a2", "metadata": {}, "source": [ "We have to use the very new type-converted class and see if it affects the speed" ] }, { "cell_type": "code", "execution_count": 34, "id": "1a4f666e-2235-4af8-883a-6bd0764e4e6b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2000" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rep = 10\n", "atoms, box = pcs.make_crystal(structure=\"bcc\", lattice_constant=3.147, repetitions=(rep,rep,rep))\n", "sys = System()\n", "sys.box = box\n", "sys.atoms = atoms\n", "atoms.natoms" ] }, { "cell_type": "code", "execution_count": 35, "id": "ac2fe53f-dce6-4cbf-87e8-b45365433dd1", "metadata": { "tags": [] }, "outputs": [], "source": [ "sys.find_neighbors(method=\"cutoff\", cutoff=0)" ] }, { "cell_type": "code", "execution_count": 38, "id": "d33902b1-9b3b-4073-809b-37d223daf9e7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "pyscal.attributes.MyList" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(sys.atoms[\"positions\"])" ] }, { "cell_type": "code", "execution_count": 17, "id": "1b576b0a-5bc3-41de-94ae-6054e25dc7f6", "metadata": {}, "outputs": [], "source": [ "at_class_v3 = [1.6, 6.21, 17.6] " ] }, { "cell_type": "code", "execution_count": null, "id": "6f7cb589-5671-488d-9f45-75ebf427a1d7", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 18, "id": "080f4a91-c410-4a0a-8896-2b8506711ae0", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD4CAYAAAAXUaZHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAA0I0lEQVR4nO3dd3xUVfrH8c+ZSZmZQBoECB0kJFQpoQiiCAqCIjasuNgWXVGBnxUFBNvq6tpXV8XCKotio0i3YEMgIYD0UEIJ6aT3Kef3x4whQFgCTHKTyfN+vXhl5mTKM8B858xzz71Xaa0RQgjhW0xGFyCEEML7JNyFEMIHSbgLIYQPknAXQggfJOEuhBA+yM/oAgCaNm2q27dvb3QZQghRr2zcuDFLax1R1e/qRLi3b9+e+Ph4o8sQQoh6RSl18FS/k7aMEEL4IAl3IYTwQRLuQgjhgyTchRDCB0m4CyGED5JwF0IIAyzdv5QRX46g59yejPhyBEv3L/Xq49eJpZBCCNGQLN2/lFlrZ1HqLAUgtSiVWWtnAXBFxyu88hwycxdCiFr2esLrFcH+p1JnKa8nvO6155BwF0KIWpZWlHZG42dDwl0IIWpZ86DmVY63CGrhteeQcBdCiFrWJazLSWMWs4XJfSZ77Tkk3IUQohZtzdzKT0d+om+zvkQGRaJQRAZFMmvQLK9tTAVZLSOEELWmzFnGk789SYQ1gjeHv0njgMY19lwS7kIIUUve2vQWSXlJvHvpuzUa7CBtGSGEqBWbMzYzd/tcxnUex6BWg2r8+WTmLoQQNazEUcL036bTslFLHop9CICFm47w0srdpOSW0DLUyiMjo7m6dyuvPaeEuxBC1LA3Et7gYP5BPhjxAUH+QSzcdIRpX2+lxO4E4EhuCdO+3grgtYCXtowQQtSguLQ4Pt35KTfH3Ez/yP4AvLRyd0Ww/6nE7uSllbu99rwS7kIIUUOK7cXM+G0GbRq3YUqfKRXjKbklVd7+VONnQ9oyQghRQ17Z+AophSl8dPlH2PxtFeORIRZiC77jUb8FtFRZpOim/MNxAxuDL/Pac0u4CyFEDfg95Xc+3/05t3W9jb7N+x73u5ut67irdA42VQ5Aa5XFi/5z2Na1PTDMK88vbRkhhPCywvJCnlr7FO2D2/Ng7weP+92izUe4JvvDimD/k1WV02/fm16rQWbuQgjhZS/Hv0x6cTr/GfUfLH6WivH9mYU88fVWtpqOVn3HvGSv1SAzdyGE8KJfkn/hqz1fcXu32zk/4vyK8VK7k/vmJRDgZ0Jbw6u+c0hrr9Uh4S6EEF6SV5bHrLWzOC/kPO7rdd9xv5u9ZAe70gr415URmO3FgDr+zv5WGD7Ta7VIuAshhJf8I+4fHC09ynMXPkegObBifNHmI8zfcIhJF7Vl0MaHwewPI5+FkDaAcv8c8wb0vMFrtUjPXQghvODHQz+yeN9iJvacSLem3SrG93n67P3ah/GQaT4ciYdxc6Hb1XDB/TVWj8zchRDiHOWW5vL0uqfpHNaZe3veWzFeancyaV4Cgf5m3u2fjmndv6D/RHew1zCZuQshxDl6fsPz5Jbm8s6l7+Bv9q8Yn71kO7vSCvhsXCThq+6CyF4w4tlaqUlm7kIIcQ5WH1zN8qTl3HP+PcSEx1SML9x0hPkbDvPAxW0ZmPAwaA3jPga/wFM/mBfJzF0IIc5Sdmk2z657lq5NunJXj7sqxvdmFPLEN1vp3z6cqfwXjmyEG/4D4R1qrTYJdyGEOAtaa55d9ywF5QXMGTEHf5O7HVNS7u6zW/3NvNsvFdOSt6H/PdB1bK3WJ+EuhBBnYcWBFaw+uJrJfSYTFRZVMT5r8XYSMwr4fFwkYavugpa9YcQztV6fhLsQQpyhrJIsnlv/HD2b9uT2brdXjH+dkMzn8Yd58OJ29I9/ADRw/Ue11mevTMJdCCHOgNaa2b/PptRRyjMXPoOfyR2jezMKePKbbQzoEM4U/QmkJMCNn9Zqn70yWS0jhBBn4Nv937Lm8Boe6P0AHUM6An/22TdhCzDzbmwqpg3/hgF/gy5jDKuz2uGulDIrpTYppb71XA9XSq1WSu3x/AyrdNtpSqm9SqndSqmRNVG4EELUtvSidP6+/u/0btab8V3GV4w/tXgbiRkFvHNFE0JXTYGWfeCyp40rlDObuU8Gdla6/jjwvdY6Cvjecx2lVFfgJqAbcDnwtlLK7J1yhRDCGFprZv0+C7vLzjODn8FscsfaVxuTWRCfzOSL29I//v/cxwMb9xH4BRhab7XCXSnVGrgCmFNpeCww13N5LnB1pfHPtNZlWuskYC/Q3yvVCiGEQb7Z+w2/HvmVKX2n0C64HQB70guYvnAbAzuG86DrE0jZBGPfhrD2xhZL9WfurwGPAq5KY8211qkAnp/NPOOtgMOVbpfsGTuOUmqiUipeKRWfmZl5pnULIUStSS1M5R9x/6Bfi37cHHMzAMXlDu6bl0BQoJl3+6Zg2vAuDLwPulxpcLVupw13pdSVQIbWemM1H1NVMaZPGtD6Pa11rNY6NiIiopoPLYQQtUtrzcy1M3FpF08PehqTcsfmzEXb2ZtZyDujmxCyaiq06guXzja42mOqsxRyMHCVUmo0YAGClVKfAulKqUitdapSKhLI8Nw+GWhT6f6tgRRvFi2EELXli8QvWJe6jhkDZ9C6sftMSV/EH+bLjclMvaQd/eImuae01xvfZ6/stDN3rfU0rXVrrXV73BtKf9BajwcWAxM8N5sALPJcXgzcpJQKVEp1AKKADV6vXAghatjhgsO8HP8yAyMHMq7zOAAS0wuYscjdZ3/AORdSN8PV70BYO2OLPcG57MT0ArBAKXUXcAgYB6C13q6UWgDsABzAJK2185wrFUKIWuTSLmb+NhOzMvP0oKdRSlFc7mDSvAQaBfrzbp9kTN++5z7hRswVRpd7kjMKd631GmCN5/JRYPgpbvcc8Nw51iaEEIaZv2s+8enxPD3oaSIbRQIwY6G7z/7lDS0IWXEHtIqF4U8ZXGnV5PADQghxgoP5B3lt42sMaTWEqztdDbj77F8lJPN/l7Sj74b7QJnqxHr2U5FwF0KISpwuJzN+m4G/2Z+nLngKpRS709x99kHnNeF+x8eQugVu/gxC2xpd7inJsWWEEKKST3d+yqaMTUzrP43mQc0pKnNw37yNNAr0553ehzDFve/us0ePMrrU/0lm7kII4bE/bz9vJLzBJW0u4cqOV6K1ZsbCbezPKuKrG5oTsvx2aN0PLp1ldKmnJeEuhBCAw+Vg+q/TsfpbmXnBTJRSLIg7zNebjvDQsLb0WX8fmMzu9eyVToJdV0m4CyEE8PH2j9matZWXLnqJptam7ErLZ8aibQzu1IRJ5R9D2h+ePnub0z5WXSA9dyFEg7cnZw9vb36by9pdxsj2Iykqc69nD7b6806vQ5ji58CgB+p8n70ymbkLIRo0u8vOk78+SeOAxkwfOB2A6Qu3kZRVxJc3NCN4+e3Qun+dXc9+KhLuQogGbc7WOezM3smrQ18l3BLO53GH+GbTER4Z3o4+6+8Fsx9c/2G96LNXJuEuhGiwdmXv4r0t7zG6w2gubXcpu9LymbloOxd2asrfSj+AtK1wy4J602evTHruQogGye50t2NCLaFM6z+NwjL38dmDrf68fX4Spo0fwuDJ0Ll+nilUZu5CiAbp33/8m8ScRN4c9iYhgSFM+XwzBzzr2YOXT4A2A2DYDKPLPGsS7kKIBmdb1jY+2PoBV513FUPbDOWzDYdYtDmFR4e1pfe6v4E5oF722SuTcBdCNChlzjKm/zqdJtYmPNb/MXam5vPU4u0MiWrK38o+gPStcMsXENLa6FLPifTchRANyr82/4t9efuYPWg2Jm1j0rwEQqz+/KvnftTGj2DwFOg8wugyz5nM3IUQDcbmjM3M3T6X66KuY3DLwUz+bDMHjhbx9Q3NPH32gTBsutFleoWEuxCiQShxlDDjtxk0tzXn4diHmb/hMIu3pPD4pe3ote4en+izVybhLoRoEN7c9CYH8g/w/oj3OZTlYtYSd5/9nuL3IX0b3PolhLQyukyvkZ67EMLnbUzfyKc7PuXG6BvpHh7LpP8mEGbz5+2e+1AJH8OFUyHqMqPL9CqZuQshfFqxvZjpv06nVaNWTO0zlce/2srBo0UsvLEZjZf+BdpeAJf4Rp+9Mgl3IYRPey3hNZILk/lo5Ecs3JTFEk+fvefaieBvges+cB8/xsdIW0YI4bPWp65n/q75jO8yHqsritlLdnBx5wjuKXoXMrbDNe/5VJ+9Mgl3IYRPKrIXMfO3mbQLbsedXf/GpHkJhNsCeKt7ImrTf2DIQxB1qdFl1hjf+y4ihBDAy/Evk1acxscjP2b24r0czilh4Q0RNF56G7QdBEOfMLrEGiUzdyGEz1l7ZC1fJn7JhK4T2J4Uzrd/pPLY8Db0WPsg+Fvhet/ss1fm269OCNHg5JfnM3PtTDqGdGRos/Hc9N5GhkZH8NfCdyFjJ4z/CoJbGl1mjZOZuxDCp7wU9xJZJVk80W82Uz/f7u6zd0tEbfrE3WfvNNzoEmuFzNyFED7jp8M/sXDvQu7ucTf/+clFck4Ji25oSqOl46HdhTB0mtEl1hqZuQshfEJeWR6zf59NVFgUwSWjWfpHKtMubUv33x4EfxtcN8fn++yVSbgLIXzC3zf8nZzSHO6Iepy/L9vLJdER3JX/DmTugmvfg+BIo0usVRLuQoh67/uD37N0/1L+0vVOXv62iCaNAniz627U5k/hoocbTJ+9Mgl3IUS9llOaw9PrniYmLIbdu/qTnFPCnNGNaPTdo9B+SIPqs1cm4S6EqNeeW/8c+eX5DAyexIptWTxxaVu6/fogBAS5++wms9ElGuK04a6UsiilNiiltiiltiulZnvGw5VSq5VSezw/wyrdZ5pSaq9SardSamRNvgAhRMO14sAKVh5YybUd7uTd1SUMi2nGnXn/gszdcO370LiF0SUapjoz9zJgmNb6fKAXcLlSaiDwOPC91joK+N5zHaVUV+AmoBtwOfC2UqphfnQKIWpMVkkWz617ji7h3Vi1tgtNGwXwZpcdqC3/hYsfhfMuMbpEQ5023LVboeeqv+ePBsYCcz3jc4GrPZfHAp9prcu01knAXqC/N4sWQjRsWmue+f0Ziu3FWHNvITW3nPdHNSJo9WPuPvvFjxldouGq1XNXSpmVUpuBDGC11no90FxrnQrg+dnMc/NWwOFKd0/2jAkhhFcsTVrKD4d/YGD4rfy03cwTl7Wl228PQmDjBt1nr6xa4a61dmqtewGtgf5Kqe7/4+aqqoc46UZKTVRKxSul4jMzM6tVrBBCZBRn8Pz654kK6c6qtZ25tEsz7sh9y91nv65h99krO6PVMlrrXGAN7l56ulIqEsDzM8Nzs2SgTaW7tQZSqnis97TWsVrr2IiIiDOvXAjR4Gitmf37bMqddtL2jaVZYxtvxOxAbZnvbsV0HGp0iXVGdVbLRCilQj2XrcClwC5gMTDBc7MJwCLP5cXATUqpQKVUByAK2ODluoUQDdCifYv4OflnIl3XkHE0mPdH2bCtfgw6XOTeiCoqVOdAC5HAXM+KFxOwQGv9rVLqd2CBUuou4BAwDkBrvV0ptQDYATiASVprZ82UL4RoKNKK0nhxw4u0snRj66YezBrZlq6/3OHus18rffYTnTbctdZ/AL2rGD8KVLlPr9b6OeC5c65OCCFwt2OeWvsUdpeT/YlXcGlMcybkvAFZe+Avi6Bxc6NLrHNkD1UhRJ335Z4vWZuyFpV9BRGWVrwRsx31x+cw9HHoeLHR5dVJEu5CiDrtSOERXo57mRC6kpPWlzmXW7F99zh0uBguesTo8uqshnNwYyFEvePSLmb+NhOHU5OxZwxPXdaeLr/eAZYQWc9+GhLuQog66/Pdn7MhbQP2tOu4NCqaCTmvw9G97j57o2anf4AGTNoyQog66VD+IV6JfwVzaQzhegivR29D/bHAfQjfDhcZXV6dJ+EuhKhzXNrF9N+mY3cqilKu4cNRNnefveNQ90muxWlJW0YIUed8uuNTNmVsoiRlHDMv6UnMzxPAEirr2c+AhLsQok5JykvitYTXcRZ24ZKWl3Pb0dcgez/8ZTE0kkOVVJe0ZYQQdYbT5WTaz09id/gRWnwzr3feitr6BQx9AjoMMbq8ekVm7kIIw83+4RO+SnoflzkHpaA8byAfXdYc25J7oOMl0mc/CxLuQghDzf7hE744+CrKz15xvPCAkI1s/Xkd0dYw9+nyTNJkOFPyNyaEMNRXSe+jTPbjB0123rM54PoPpM9+liTchRCGcplzqhxP9fOD9hfWcjW+Q8JdCGGYX4/8WuWp2wCUM6xWa/E1Eu5CCEMs2ruISd/dT6DdQqDr+DNxWlwu7g6ONagy3yAbVIUQtUprzft/vM+bm9/EUdiJJbnb2BpQyOthoaT5mWnhcDI5J5crclcZXWq9JuEuhKg1TpeTZ9c9z5d7FmDP68UN7R6mTebFtLVrrigqPuHWJYbU6Csk3IUQtaLUUcr//fgIv6SsoSzrYh7pN4W72x9FbVag9cl3CGld+0X6EAl3IUSNyyvL468r72Nn9lYcmVfxzxGTGKN+hbn3gzUcygvBUXrsDv5WGD7TuIJ9gGxQFULUqJTCFG5YfCs7s7dDxng+vnYKY7I+gK//Cq37wf1xcNWbENIGUO6fY96AnjcYXXq9JjN3IUSN2Z29mztX3ENeaRFBufcx75axdPptKuxcAr1vgyteAb8Ad5BLmHuVhLsQokasT13Pfd89QGlZAJElDzP/xn5ELLke0rfByOdh4H2gTrXKXZwrCXchhNct3b+UJ36Zjr20CT38HuKjK8Oxzb8cyovh5s+g80ijS/R5Eu5CCK/6cOtHvJrwCo6iDoxo+jj/jEnBb97t7nOe3rYQmnc1usQGQcJdCOEVLu3i7+v/wWe752HP78GdnafxSMAS1NcvQtsL4MZPIaip0WU2GBLuQohzVu4s56EfH2PNke+w5wzm6f5TuOHIC7D9Gzj/FhjzGvgFGl1mgyLhLoQ4J/nl+dyz8gG2ZSfgzLqCOZfcwoXxf4OUTXDpbBg8WTacGkDCXQhx1tKL0rl9+USSCw/il30rXw8fTNT3N0JpHtw0D2KuMLrEBkvCXQhxVvbm7OWO5RPJKc0ntOBevhkcTsS348DWBO5aCS16GF1igyZ7qAohztjG9I3c9O14sktKaVf+MKu75RCx/K/Qojv89QcJ9jpAwl0IcUZWJa3izhV/pbjExkC/x1ncZDXWX1+AHjfAhG+hcXOjSxRIW0YIcQb+s20eL218EWdxG26JmMSTOf9EJcXDsBkw5CHZcFqHSLgLIU5La82LG15h3q6PsRd04an2t3JT4iOokmy44RPoepXRJYoTSLgLIf4nu9POI2ue5Pvk5ThzB/BR1BAu2PQ3sITAHcuhZS+jSxRVOG3PXSnVRin1o1Jqp1Jqu1Jqsmc8XCm1Wim1x/MzrNJ9piml9iqldiul5CASQtRTRfYibl92L98nL4eckSxv354LNkyGiGiY+KMEex1WnQ2qDuAhrXUXYCAwSSnVFXgc+F5rHQV877mO53c3Ad2Ay4G3lVLmmiheCFFzskqyuH7ReLYcjSco5wZ+bZZDu00vQbdr4I5l0LiF0SWK/+G04a61TtVaJ3guFwA7gVbAWGCu52Zzgas9l8cCn2mty7TWScBeoL+X6xZC1KADeQe45pubOFxwkHaFt/Gz7WdCEr+EodPg+g/dZ0oSddoZ9dyVUu2B3sB6oLnWOhXcHwBKqWaem7UC1lW6W7Jn7MTHmghMBGjbtu0ZFy6EqBmbMzZz98r7KCl3McQxnrfLP8SUmwnXfwTdrzW6PFFN1V7nrpRqBHwFTNFa5/+vm1YxdtLZb7XW72mtY7XWsREREdUtQwhRg747+AMTlt9FSWkAdzCWd47+E5PL7m7DSLDXK9WauSul/HEH+zyt9dee4XSlVKRn1h4JZHjGk4E2le7eGkjxVsFCiJoxb8cCXtjwLM7SlrxoOZ8rD7yIiuzpPrlGcEujyxNnqDqrZRTwAbBTa/1KpV8tBiZ4Lk8AFlUav0kpFaiU6gBEARu8V7IQwpu01ry0/g1eiHsGV1EUC/wiGHPg36guY9xLHSXY66XqzNwHA7cBW5VSmz1jTwAvAAuUUncBh4BxAFrr7UqpBcAO3CttJmmtnd4uXAhx7hwuB4/8OJPvkpfgl38+q0ypRCR/Bxc9AkOfAJMcoaS+Om24a61/peo+OsDwU9znOeC5c6hLCFHDiu3FTFwxhS3Zv9MkdwArHOuxFKfDtXOg5zijyxPnSPZQFaIByi7NZvySiRwqSqR7/gX8t2gZJn8r3L4U2vQzujzhBfKdS4gG5nDBYcZ+fTOHCvcxJr8383O+wBTW3n2oXgl2nyEzdyEakG2Z27l9+T2U2st5qLAdd+QshOgr4Nr3ILCR0eUJL5JwF6KB+PHgL0xZMxVXuYW3Cy1clPcjXDgVhs2UDac+SMJdiAbgsx3f8NyGWZjLwlmYn0nH0nS4+t/Q62ajSxM1RMJdCB+mteaVuHf4eOc7NC5pwdLsnYT5B8KEJdB2oNHliRok4S6Ej3K6nDz642xWJX9D28IWfJO1kYCIaPcep2HtjC5P1DAJdyF8UKmjlLuXT2VL9q8MymvCO9kbMEWNhOvmgCXY6PJELZBwF8LH5JXlcfPiiRwu2sEtuTam5W6CC+6Hy54Gk5xaoaGQcBfCh6QUpHDj4rvILU/liWwXNxXtg6vegj63GV2aqGUS7kL4iB1Zu/jLsonYHYW8k5nLYBTqLwuh/YVGlyYMIOEuhA/46dBaJv8wBX+HiwUZyXQObo+65TMI72h0acIgsueCEPXc5zsWc/8P9xFa7mJJ6n6i21yIunu1BHsDJzN3IeqxV9e/z4e73qBTqR8fZ+wlpN+9MOJZMMtbu6GT/wFC1EMu7eLRH55lZfIXDCrSvJ51CMvoVyD2TqNLE3WEhLsQ9Uy5s5w7lz7Elpw1XJ9XyrSicgLGfw0dLza6NFGHSLgLUY8UlBdw48J7OFyylcnZedxuaoLfxC+hyXlGlybqGAl3IeqJ1MI0blh4J/mOwzyfmcXoiH6Yb5wL1jCjSxN1kIS7EPXAzqOJ/OXbu9GuHN5Jz2Bg9/GYRr0AZn+jSxN1lIS7EHXcz4c2MPmHSTRylvDvjEy6DnsGNWCi0WWJOk7CXYg67PMdy3h+wxO0spfzdlYh7cf9FzpVeV56IY4j4S5EHfXq+o/4cOcr9Cgr559FAUTe/R1EdDa6LFFPSLgLUcdorXnk+7+z8sh8hhYXM8vvPJrc+xnYwo0uTdQjEu5C1CF2l507F09lc95PXJ9fwNQWowm+5jXwCzC6NFHPSLgLUUcUlhdy05d3ctC+k/ty8ri9zyNYh9wPShldmqiH5MBhQtQBaYUZjJl/DYfLdzAjq4C7L38f60UPSLD7sLwlS9gzbDg7u3Rlz7Dh5C1Z4tXHl5m7EAbblbWPu5aMp5x8XsjRXD5+Gap5V6PLEjUob8kSUmfMRJeWAuBISSF1xkwAQsaM8cpzyMxdCAP9fCCOCUuux0/n8XJRGKPu+UWCvQHIeOXVimD/ky4tJePV17z2HDJzF8IgC7Ys5oWE6bRwljPbrw/97v0I/AKNLkvUEFd5OUW//EL+suU4UlOrvM2pxs+GhLsQBnj9p7f4IOldutrLmRF5C92unCn9dR+k7XaKfv+d/GXLKfjuO1yFhZhDQ1E2G7q4+KTb+0VGeu25JdyFqEVaa55c8ghLclZyQUkZT/R5mvYDbjK6LOFF2umkOC6O/KXLKFi9GmduLqbGjWl82WUEjx5N0MAB5K9YcVzPHUBZLDSbOsVrdUi4C1FLHC4Hkz67lbX2HYwsdPD45fNoel4/o8sSXqBdLko2bSJ/6TLyV63CmZWFyWaj0bBh7kC/cDCmgGP7Kvy50TTj1ddwpKbiFxlJs6lTvLYxFSTchagVhWWF/PW/V7HNlMm4ggAevmUVtnDvfQUXtU9rTenWreQvW07+ihU40tJQgYE0GjqU4NGjaXTxRZgsllPeP2TMGK+G+YlOG+5KqQ+BK4EMrXV3z1g48DnQHjgA3KC1zvH8bhpwF+AEHtRar6yRyoWoJ9JyDnPPV9dwwK+U24sjmfzXRfgF2owuS5wFrTVlu3a5A335cuzJyeDvT6MhQwh+6CEaXXIJ5kZBRpcJVG/m/jHwFvCfSmOPA99rrV9QSj3uuf6YUqorcBPQDWgJfKeU6qy1dnq3bCHqh50HNzB59d1km53cqwZw7z1zUCZZgVzflO3dWxHo5UlJYDYTNGgQTe+7j8aXDsccHGx0iSc5bbhrrX9WSrU/YXgsMNRzeS6wBnjMM/6Z1roMSFJK7QX6A797qV4h6o1fE77gic2zcZo0U8Nu5darnzC6JHEGyg8eJH/5cvKXLacsMRGUwta/P+G3307jEZfhF1a3z4B1tj335lrrVACtdapSqplnvBWwrtLtkj1jJ1FKTQQmArRt2/YsyxCiblq0+nmeT55HYxc8FD2TUUNuNLokUQ32I0fIX7GC/GXLKd2+HQBrnz40nz6d4JEj8IuIMLjC6vP2BtWqFurqqm6otX4PeA8gNja2ytsIUe9ozYdf3MWbxRto5TAzY/D7DOg6wOiqxP9gz8igYMVK8pcto2TzZgAsPXrQ7NFHCR51Of5eXHtem8423NOVUpGeWXskkOEZTwbaVLpdayDlXAoUor7Q5SX885OrmOuXRucyKy+O/ZpOLdqc/o6i1jmysylYtYr8ZcspjosDrQmMiSFi6lSCR11OgA90E8423BcDE4AXPD8XVRr/r1LqFdwbVKOADedapBB1nSM/hafmj2GxpZzupc1569ZFNKkjqyaEmzMvj4LvviN/2XKK1q0Dp5OAjh1pOmkSwaNHEdixo9ElelV1lkLOx73xtKlSKhl4CneoL1BK3QUcAsYBaK23K6UWADsABzBJVsoIX1d4OJ7Hvv0LP9vMxDp68M6d/8HiL7uQ1AXOwiIKf/ie/GXLKfztN7Db8W/ThiZ33+0O9M6dUT562AeltfHt7tjYWB0fH290GUKcsYzNn/PQ+plsCfRnaOBoXrvxRUwm3wyL+sJVUkLhTz+Rv3QZhT//jC4rwy8ykuDLLyd49Ggs3bv5TKArpTZqrWOr+p1ML4Q4G1qzb/XT/N/B+RwKDOC6pvfw1JX3G11Vg1VxxMWlyyhYswZdXIw5oimh48YRPHoU1l69Gtz+BRLuQpwpRxmbFtzBwyWbyDcHcE/Uc9w7uOZ2IxdVO9URF0PGjCF41Chs/WJRZrPRZRpGwl2IM1GUxU+fXsvjAUfRWJkx4F2u6iYH/6ot2umkeMMGd6CvWoUzL899xMURIwgeNYqggQNQ/v5Gl1kn1OtwX7pmBq/v/4Y0E7RwweSO13DF0GeMLkv4qvQdLP5sHLNCFFZHKK+O/IT+bXxrhUVdpF0uShIS3Lv/V+OIi8Kt3ob70jUzmJX0DaVm94aRVDPMSvoGQAJeeMcfC+D7pyEvGWxN+NjfwT/Dgwmzt2LutZ/QIbz+7K1Y1+UtWXLc4W8jpkwhsH079yF0V6zAkZ5+RkdcFPV4tcyID7uTaj55i3ekU7Pqjq1yVhtxbv5YwOLVD/NWSBBpfmZsWlNkMhFjj+S9W78hzCpr2L3lxJNFA+73r9bHjrg4alSdOuJiXeGTq2XSTrHhO9UEb7/dhehGrYmO6Emr1hegIntCk05gargbV8SZ+frHp/h7eGNKPSssipTCrDU3Fh2WYPcSrTXlBw6Q9uxzJ50sGq0xhYbSadXKOnnExfqg3oZ7hEOT4X/y7NwM/LuRP5p0yFxNo/SVdC4vJ8buItrajOjwGDq1HEhgyz7QvCsEyBtVAE4HpCTA/p9wJv3Im42oCPaKmyjFe0FwvUEl1nfa5aJs716K4+Iojo+nOD4eZ2bWKW/vysuTYD8H9Tbcm2b2Ib9FwnFvQIvLRYe0PmzIvxZTYBrhIWk0aXyAzMDD7LAcpZRCyI/HnBdHhz/sRJfbifYLJjqkI9Et+tKk9QBo0RMaNfsfzyx8gssFGTsg6Wec+39kb/J6Nvo5ibNaWG+xUeBX9VsjzU++/VWXdjgo3bWb4vg4iuPiKYmPx5mXB4BfixYEDbwAW2wsWf96C0dG5kn39+bJohuiehvuyeoOOqTB0YgEMv0UEQ5Nk8w+HNK3M/eOniSmFbArrYDE9AL2pRdQ5nCg/LMxW1NoHXIQu/UQa4MyWapKoWwPHNxDxL5P6VxuJwZ/YoLa0DmiO+1aX4A5sjeEd4QGthOEz8lOgqSfcO1bw57Dv7CRUuKtFtZbrOS3CAHA7AileUAPSsvXYTfbT3oIi1POoHQquryckm3bPbPyOEo2JuAqKgLAv21bGl06HFtsP2z9YvFv1apiL1GTzVrjJ4tuiOptuD8yMpppX99KyV73mePzgRR/M3+/NoaLO0dwcedjKxmcLs2h7GJ2pxWw2xP4u9MLOJJVhFMVYg5MpbH1IAGND7I3MI11pnycOhUyUrGkrSSq3E60QxNtbUZMWDRRLQcQ1CrW3dbxtxr0NyBOqzADkn5G7/uRxIM/keDIIc5qIc5iIbepDbBhdgQT4d+Ti5rHcnXMRfRv0wmlFLN/+ISvD/4Tl+nYoZFMLjNXdHjAuNdTx7hKSynZ8kdFm6Vk8+aKgA7odB7BY67E1q8ftthY/Js3P+Xj1MbJohuiertaBmDhpiO8tHI3KbkltAy18sjIaK7uXeW5QapUaneyP7OIxPRjs/zdaQUcySvAFJBBgOUwEbZ9WG0p5PnnUKyOvdHb2v9s64QQE9KB6OZ9aN56ICryfAhqesavRXhBaR4c+A29fw2JST+yqTSFOEsgG6xWcs3ub11+jsaE+/ekb/NYxkZfxKB2Uac8zsjsHz7hq6T3cZlzMDnDuK7DX3lq2G21+YrqFGdhESWbNh0L861bwW4HpQjsEoMtNrbij194uNHlNgj/a7VMvQ73mlJQaicxvfDYLD+tgF3p+eSWZWKypBBm2UuI7SAOy1Gyzce+SoY4ne7AJ4CYoFZEN+1Bx9YX4N+yN4R1kLaOt9lL4fB6d5jv+45NRQeID/Qnzmoh27Pbub8jiFC/nvRp1o+xMRcxuF0UJvl3qBZnbi7FCQkUx8VTHBdH6c6d4HSCnx/Wbt2w9YvFGhuLrU8f2fBpEAl3L9Bak1VYfmyWn+Zu7SRmZFJmOkKQJYlQyz78rOnkBhRiV+6/Vz+tOe+4tk5nolsOIKR1f4joAv6yI0a1uZyQshm9/0cS965mU+4u4gPNJ4S5jVBzD85v1o+rOl/ERR2iMZslzKvDkZXl7pfHuVeylCUmgtaogACsPXti6+9usVjPPx9TkKwyqwsk3GuQy6U5kltyXFtnV1ouSXkH8As4RLhlD4GWI5RYcik0Oyru18LhILrcQbRfMDHBHYhu3pvWbQZhijwfbPKVFnDvxJK5C71vDXv2rmLj0S0k+EOcxcJRz6qVAIeVEFM3ejQbwJioixh6Xgx+EubVYk9NdYf5BnebpTwpCQBls2Hr1Qtbv1hs/fph6dEDU2CgwdWKqki4G6Dc4eLA0aLjZvk7M46QVrKXcMteGlkO4LBkketfiva0fG0uF9Hl5XQmkJiglkQ37UGn1oOwtuoLoe0axl63uYfQ+9awN3EFcZkb2Wy2E2exkOUJ80CHhWDVhW4Rg7iy84UMO68L/rI88bS01tgPHTo2M4+Lw37kCACmxo2x9e3rDvPYWCxdu8rBt+oJCfc6pKjMwd4Mdz9/d3oBO9OOsjt7D07XLkIt+zAFppFvKaDM5P53MWlNO7uDaIcmxhJBdFhnYloOoGmbCyAiBvzq+QGTirLQ+39iX+Iy1qduYIsqIt4SSKZnnXmgI5BQoomOGMzoqAu5LKobARLmp6W1pnzfPvfGT0+bxZHhPtWxOSzMveGzn3tZYmDnzg360Lj1mYR7PZBdVF6xAXdXWh7bMg5wJG8HQX47CbQkUxKYQ77/sbZOuNPpbuuYGxMT0p7o5n1o3/ZC/FqcD9ZQ417I6ZQVoA/8xv7dS1mXvJY/dA7xlkAyPGFucQQQqjtxXtMhjOp0ISOju8sp66pBO52U7d7tmZnHURy/EWdODgB+zZpVBLmtXz8COnb0mTMRNXQS7vWU1prUvNKKWf721DR2Zu2gpHQL1oD9OAOzyAkswel5nwa6XHSy24nSAcQEtSSmaXc6tx5M49b9IaS1MW0dRxn68Ab271rC74d+Yasjg3hLQEWYWx3+hLk60r7pEEZ2GsKo6J5YAyTMT0fb7ZRu336szZKQgKugAAD/Nm2OLUvs3w//1q0lzH2UhLuPcThdHDhaTGJ6ATtSs9mStoe03E24nNsr2jrFZlfF7Vvb7UQ5oHNAE7qGdyam1UAi2wxGRUSD2cu9VZcTnbqFpF1LWJv0A1vLjrDR4k96RZj7Ee5qR9vwIYyIGsqo6J4EBUp/93RcZWWU/vEHRXFxlMTHU7xpM7qkBICAjh0rdhayxfbFX3bbbzAk3BuIUruTvRmF7ErNZ0vqQXZmbKGoKAGX6QAlgTnk+tsrNt42drrobLdznmpMTHA7ukf24by2FxEQ2QssJ69ZfuOL/2NR3sqKQz2MDRnJg+NeAa3RmYkc3LWIX/Z9x9aSgyQEmirC3OYw08TZmtZhQxgWNZwrYs6nsUXC/HRcRUUUb95cscNQ6ZY/0H/uMBQdfaxnHtsXvyZNjC5XGETCvYHLK7GTmF7A1pQMEo5sJT07jqLynZT7Z5ATWEy5Z+Wgn9Z0sNvp6PSnk6UF3Zt1p1vbIczfupqPSn857iBtgS4Xl5QFgi5hcwCkVYS5iQhHS1qGXsjFUZdxZZdehFjr+UbfWuDMz6d448aKNkvp9u3uHYbMZizduh1rs/TtgzkkxOhyRR0h4S5OorUmo6CMnam5xB1OJDFtAzkFmyjSh8gPzCff71hbx6Q1rlP0bIOcJprZmxPZeCCDokZzVdfehAXJmujTcWRnV6xiKY6Pp2zXLvcOQ/7+WHr29CxL7Ietdy/ZYUickoS7qDanS3M4u5iNyYdJOBRPStY64k1rqtwYq7Tmh+viadpY9rI9HXt6esX68uL4eMr37QPcRz+09u5V0TO39uwpp48T1eaTZ2ISNcNsUrRvGkT7pjFc1ysGGM/wOd2qPDFKhENLsFdBa409OfnYzDwuDvvhwwCYGjXC2rcPIVePJahfP/cOQ3JyZ1EDJNzFaY0NGcknhStPOjHK2JCRBlZVd2itKU9KqtiNvzg+HkdaGgDm0FBs/WIJH38r1thYLDExssOQqBUS7uK0Hhz3CpxqtYwPy1uypMpjjGuXi7LExOPaLM7sbAD8IiIqdhayxcYScN55KDkKpTBAve65n+rNJ8S5yluy5KSzA+HnR2BUFPYjR3Dl5wPg36pVxc5CtthY/Nu2lR2GRK3xyZ77iW8+R0oKqTNmAkjAi2rRdjvO3Fwc2Tk4c7Jx5uTgyM7GmZ1D9kcfHR/sAA4HZYmJhF57bcVBtvxbtjSmeCFOo97O3PcMG44jJeXkX5hMBLRti8lmw2SzoYJsmKy2iuvH/Qk6dllZrZhsQcePW62oU5woWdQtWmt0SUmVQe3MycGRc+yyMzsbR05Oxez7jChFl507vP8ChDgLPjlzd6SmVv0LlwtL1y64iopxFRfjPJqNvTgZV7H7uquoyL1zSDWpwMBKHwhWVMXloFN/YFgr385z28ofJIGB8tX9NLTLhTMvzx3GJwS1MyfbHeLZnhD3BLYuK6v6wfz98QsLwxwWhjk8DEu3bhWX/cLD3ZfDwvELD8McHo45JIS9I0ZWOXnwk137RT1Rb8PdLzKy6jdfy5a0euXUG/q01mi7HVdREfrPwC8pqRT+xccuFxfhKi5Gl5ScMF6MPTvnuOt/HuejWkwmTFbr8d8uqvrQsFqP+1Aw2WxVfLhUepwa/JZxrts3XOXlFbNmd1h7LueeYoadmwsuV5WPZbLZ3CEcHo5fRASBnTu7L4eHHR/UYe6wNjVqdMYfps2mTjmp564sFppNnXJGjyOEUeptuJ/tm08phQoIwBQQAGFhXqtHu1zuD4Hi4pP//PnBUFLpw6CKDxNnTi72IynHf8twOE7/5H++toCA475BVHwQVNWWCjrhA8N68rjJZkNZLOR/+22V2zccWUex9el9LJxPFdQ5ObgKC09RtMIcGuoO67BQAjt0xNw33D2r9gR1xWXPLLs2zgr05weXbLAX9VW97blDw1gto8vLj/+gOOlbRNEJHxin+IApPv6Dpdr+nPFW8/+JCgioCOHKgeyeSZ8Q1OHhmIODZd23EGfJkJ67Uupy4HXADMzRWr/g7ecIGTPG58L8RCogAHNAAObQUK89pna50KWlp/6G4fmW8ee3i6y33znlY7X+9zvuvnV4OObQMPc3BtmeIIThaiTclVJm4F/AZUAyEKeUWqy1lmUGdYAymSpaNtWRu3DRKbdvNB461MvVCSG8oaZ2nesP7NVa79dalwOfAWNr6LlEDWs2dQrqhINZycZFIeq2mmrLtAIOV7qeDAyofAOl1ERgIkDbtm1rqAzhDbJxUYj6p6bCvaqm63Fb5LTW7wHvgXuDag3VIbykIWzfEMKX1FRbJhloU+l6a6CK3UmFEELUhJoK9zggSinVQSkVANwELK6h5xJCCHGCGmnLaK0dSqn7gZW4l0J+qLXeXhPPJYQQ4mQ1ts5da70MWFZTjy+EEOLU5CwCQgjhg+rE4QeUUpnAwXN4iKZAlpfKqQ8a2usFec0NhbzmM9NOax1R1S/qRLifK6VU/KmOr+CLGtrrBXnNDYW8Zu+RtowQQvggCXchhPBBvhLu7xldQC1raK8X5DU3FPKavcQneu5CCCGO5yszdyGEEJVIuAshhA+qt+GulGqjlPpRKbVTKbVdKTXZ6Jpqi1LKrJTapJT61uhaaoNSKlQp9aVSapfn3/sCo2uqaUqpqZ7/19uUUvOVUpbT36t+UUp9qJTKUEptqzQWrpRarZTa4/npvRMd1wGneM0vef5v/6GU+kYpFeqN56q34Q44gIe01l2AgcAkpVRXg2uqLZOBnUYXUYteB1ZorWOA8/Hx166UagU8CMRqrbvjPj7TTcZWVSM+Bi4/Yexx4HutdRTwvee6L/mYk1/zaqC71ronkAhM88YT1dtw11qnaq0TPJcLcL/hWxlbVc1TSrUGrgDmGF1LbVBKBQMXAR8AaK3Ltda5hhZVO/wAq1LKD7Dhg4fM1lr/DGSfMDwWmOu5PBe4ujZrqmlVvWat9SqttcNzdR3uQ6Sfs3ob7pUppdoDvYH1BpdSG14DHgVcBtdRWzoCmcBHnlbUHKVUkNFF1SSt9RHgZeAQkArkaa1XGVtVrWmutU4F9wQOaGZwPbXtTmC5Nx6o3oe7UqoR8BUwRWudb3Q9NUkpdSWQobXeaHQttcgP6AO8o7XuDRThe1/Vj+PpM48FOgAtgSCl1HhjqxI1TSn1JO528zxvPF69DnellD/uYJ+ntf7a6HpqwWDgKqXUAdwnHR+mlPrU2JJqXDKQrLX+81vZl7jD3pddCiRprTO11nbga2CQwTXVlnSlVCSA52eGwfXUCqXUBOBK4FbtpZ2P6m24K6UU7j7sTq31K0bXUxu01tO01q211u1xb2D7QWvt0zM6rXUacFgpFe0ZGg7sMLCk2nAIGKiUsnn+nw/HxzciV7IYmOC5PAFYZGAttUIpdTnwGHCV1rrYW49bb8Md9yz2Ntyz182eP6ONLkrUiAeAeUqpP4BewPPGllOzPN9SvgQSgK2436c+t1u+Umo+8DsQrZRKVkrdBbwAXKaU2gNc5rnuM07xmt8CGgOrPTn2b688lxx+QAghfE99nrkLIYQ4BQl3IYTwQRLuQgjhgyTchRDCB0m4CyGED5JwF0IIHyThLoQQPuj/AUmKrqX5ddP0AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(repetitions, at_dict, \"-o\");\n", "plt.plot(repetitions, at_class, \"-o\");\n", "plt.plot(repetitions, at_class_v2, \"-o\");\n", "plt.plot(repetitions, at_class_v3, \"-o\");" ] }, { "cell_type": "code", "execution_count": null, "id": "d9600b53-d596-4b4e-b230-65535da2a742", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.10.6" } }, "nbformat": 4, "nbformat_minor": 5 }