{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Creating and writing webnucleo XML data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This tutorial demonstrates how to use wnutils routines to create, update, and write webnucleo XML. First, import the necessary packages (skip this step if they're already downloaded)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import sys\n", "!{sys.executable} -m pip install --quiet wnutils" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now import the package to check for and retrieve the data:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import os.path\n", "from os import path" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If the data do not exist, retrieve and unpack them by running the code block below:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "if not path.exists('wnutils_tutorial_data.tar.gz'):\n", " !curl -O -J -L -s https://osf.io/2a4kh/download\n", " !tar -zxf wnutils_tutorials_data.tar.gz" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Import the wnutils **[XML](https://www.w3.org/TR/REC-xml/)** package:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import wnutils.xml as wx" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Nuclide XML Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Extract a subset of nuclide data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Begin by retrieving the data that you wish to update. For this tutorial, use the file *my_output1.xml* which you read in by typing" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "old_xml = wx.Xml('my_output1.xml')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now get a subset of the nuclide data using an XPath expression. For this tutorial, get a subset that excludes calcium isotopes or any species with mass number 30 by typing" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "nuclide_subset = old_xml.get_nuclide_data(\"[not(z = 20) and not(a = 30)]\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Confirm that the subset does not have the excluded species by examining the result of typing" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 2\n", "1 3\n", "2 3\n", "2 6\n", "2 7\n", "2 8\n", "2 9\n", "2 10\n", "3 6\n", "3 7\n", "3 8\n", "3 9\n", "3 10\n", "3 11\n", "4 7\n", "4 8\n", "4 9\n", "4 10\n", "4 11\n", "4 12\n", "4 13\n", "4 14\n", "5 8\n", "5 9\n", "5 10\n", "5 11\n", "5 12\n", "5 13\n", "5 14\n", "5 15\n", "5 17\n", "5 19\n", "6 9\n", "6 10\n", "6 11\n", "6 12\n", "6 13\n", "6 14\n", "6 15\n", "6 16\n", "6 17\n", "6 18\n", "6 19\n", "6 20\n", "6 22\n", "7 11\n", "7 12\n", "7 13\n", "7 14\n", "7 15\n", "7 16\n", "7 17\n", "7 18\n", "7 19\n", "7 20\n", "7 21\n", "7 22\n", "7 23\n", "8 13\n", "8 14\n", "8 15\n", "8 16\n", "8 17\n", "8 18\n", "8 19\n", "8 20\n", "8 21\n", "8 22\n", "8 23\n", "8 24\n", "8 25\n", "8 26\n", "8 28\n", "9 14\n", "9 15\n", "9 16\n", "9 17\n", "9 18\n", "9 19\n", "9 20\n", "9 21\n", "9 22\n", "9 23\n", "9 24\n", "9 25\n", "9 26\n", "9 27\n", "9 28\n", "9 29\n", "9 31\n", "9 37\n", "10 16\n", "10 17\n", "10 18\n", "10 19\n", "10 20\n", "10 21\n", "10 22\n", "10 23\n", "10 24\n", "10 25\n", "10 26\n", "10 27\n", "10 28\n", "10 29\n", "10 31\n", "10 32\n", "10 33\n", "10 34\n", "10 35\n", "10 36\n", "10 37\n", "10 38\n", "10 39\n", "10 40\n", "10 41\n", "11 18\n", "11 19\n", "11 20\n", "11 21\n", "11 22\n", "11 23\n", "11 24\n", "11 25\n", "11 26\n", "11 27\n", "11 28\n", "11 29\n", "11 31\n", "11 32\n", "11 33\n", "11 34\n", "11 35\n", "11 36\n", "11 37\n", "11 38\n", "11 39\n", "11 40\n", "11 41\n", "11 42\n", "11 43\n", "11 44\n", "12 19\n", "12 20\n", "12 21\n", "12 22\n", "12 23\n", "12 24\n", "12 25\n", "12 26\n", "12 27\n", "12 28\n", "12 29\n", "12 31\n", "12 32\n", "12 33\n", "12 34\n", "12 35\n", "12 36\n", "12 37\n", "12 38\n", "12 39\n", "12 40\n", "12 41\n", "12 42\n", "12 43\n", "12 44\n", "12 45\n", "12 46\n", "12 47\n", "13 21\n", "13 22\n", "13 23\n", "13 24\n", "13 25\n", "13 26\n", "13 27\n", "13 28\n", "13 29\n", "13 31\n", "13 32\n", "13 33\n", "13 34\n", "13 35\n", "13 36\n", "13 37\n", "13 38\n", "13 39\n", "13 40\n", "13 41\n", "13 42\n", "13 43\n", "13 44\n", "13 45\n", "13 46\n", "13 47\n", "13 48\n", "13 49\n", "13 50\n", "13 51\n", "14 22\n", "14 23\n", "14 24\n", "14 25\n", "14 26\n", "14 27\n", "14 28\n", "14 29\n", "14 31\n", "14 32\n", "14 33\n", "14 34\n", "14 35\n", "14 36\n", "14 37\n", "14 38\n", "14 39\n", "14 40\n", "14 41\n", "14 42\n", "14 43\n", "14 44\n", "14 45\n", "14 46\n", "14 47\n", "14 48\n", "14 49\n", "14 50\n", "14 51\n", "14 52\n", "14 53\n", "14 54\n", "15 23\n", "15 24\n", "15 25\n", "15 26\n", "15 27\n", "15 28\n", "15 29\n", "15 31\n", "15 32\n", "15 33\n", "15 34\n", "15 35\n", "15 36\n", "15 37\n", "15 38\n", "15 39\n", "15 40\n", "15 41\n", "15 42\n", "15 43\n", "15 44\n", "15 45\n", "15 46\n", "15 47\n", "15 48\n", "15 49\n", "15 50\n", "15 51\n", "15 52\n", "15 53\n", "15 54\n", "15 55\n", "15 56\n", "15 57\n", "16 24\n", "16 25\n", "16 26\n", "16 27\n", "16 28\n", "16 29\n", "16 31\n", "16 32\n", "16 33\n", "16 34\n", "16 35\n", "16 36\n", "16 37\n", "16 38\n", "16 39\n", "16 40\n", "16 41\n", "16 42\n", "16 43\n", "16 44\n", "16 45\n", "16 46\n", "16 47\n", "16 48\n", "16 49\n", "16 50\n", "16 51\n", "16 52\n", "16 53\n", "16 54\n", "16 55\n", "16 56\n", "16 57\n", "16 58\n", "16 59\n", "16 60\n", "17 25\n", "17 26\n", "17 27\n", "17 28\n", "17 29\n", "17 31\n", "17 32\n", "17 33\n", "17 34\n", "17 35\n", "17 36\n", "17 37\n", "17 38\n", "17 39\n", "17 40\n", "17 41\n", "17 42\n", "17 43\n", "17 44\n", "17 45\n", "17 46\n", "17 47\n", "17 48\n", "17 49\n", "17 50\n", "17 51\n", "17 52\n", "17 53\n", "17 54\n", "17 55\n", "17 56\n", "17 57\n", "17 58\n", "17 59\n", "17 60\n", "17 61\n", "17 62\n", "17 63\n", "18 27\n", "18 28\n", "18 29\n", "18 31\n", "18 32\n", "18 33\n", "18 34\n", "18 35\n", "18 36\n", "18 37\n", "18 38\n", "18 39\n", "18 40\n", "18 41\n", "18 42\n", "18 43\n", "18 44\n", "18 45\n", "18 46\n", "18 47\n", "18 48\n", "18 49\n", "18 50\n", "18 51\n", "18 52\n", "18 53\n", "18 54\n", "18 55\n", "18 56\n", "18 57\n", "18 58\n", "18 59\n", "18 60\n", "18 61\n", "18 62\n", "18 63\n", "18 64\n", "18 65\n", "18 66\n", "18 67\n", "19 29\n", "19 31\n", "19 32\n", "19 33\n", "19 34\n", "19 35\n", "19 36\n", "19 37\n", "19 38\n", "19 39\n", "19 40\n", "19 41\n", "19 42\n", "19 43\n", "19 44\n", "19 45\n", "19 46\n", "19 47\n", "19 48\n", "19 49\n", "19 50\n", "19 51\n", "19 52\n", "19 53\n", "19 54\n", "19 55\n", "19 56\n", "19 57\n", "19 58\n", "19 59\n", "19 60\n", "19 61\n", "19 62\n", "19 63\n", "19 64\n", "19 65\n", "19 66\n", "19 67\n", "19 68\n", "19 69\n", "19 70\n", "21 32\n", "21 33\n", "21 34\n", "21 35\n", "21 36\n", "21 37\n", "21 38\n", "21 39\n", "21 40\n", "21 41\n", "21 42\n", "21 43\n", "21 44\n", "21 45\n", "21 46\n", "21 47\n", "21 48\n", "21 49\n", "21 50\n", "21 51\n", "21 52\n", "21 53\n", "21 54\n", "21 55\n", "21 56\n", "21 57\n", "21 58\n", "21 59\n", "21 60\n", "21 61\n", "21 62\n", "21 63\n", "21 64\n", "21 65\n", "21 66\n", "21 67\n", "21 68\n", "21 69\n", "21 70\n", "21 71\n", "21 72\n", "21 73\n", "21 74\n", "21 75\n", "21 76\n", "22 34\n", "22 35\n", "22 36\n", "22 37\n", "22 38\n", "22 39\n", "22 40\n", "22 41\n", "22 42\n", "22 43\n", "22 44\n", "22 45\n", "22 46\n", "22 47\n", "22 48\n", "22 49\n", "22 50\n", "22 51\n", "22 52\n", "22 53\n", "22 54\n", "22 55\n", "22 56\n", "22 57\n", "22 58\n", "22 59\n", "22 60\n", "22 61\n", "22 62\n", "22 63\n", "22 64\n", "22 65\n", "22 66\n", "22 67\n", "22 68\n", "22 69\n", "22 70\n", "22 71\n", "22 72\n", "22 73\n", "22 74\n", "22 75\n", "22 76\n", "22 77\n", "22 78\n", "22 79\n", "22 80\n", "23 36\n", "23 37\n", "23 38\n", "23 39\n", "23 40\n", "23 41\n", "23 42\n", "23 43\n", "23 44\n", "23 45\n", "23 46\n", "23 47\n", "23 48\n", "23 49\n", "23 50\n", "23 51\n", "23 52\n", "23 53\n", "23 54\n", "23 55\n", "23 56\n", "23 57\n", "23 58\n", "23 59\n", "23 60\n", "23 61\n", "23 62\n", "23 63\n", "23 64\n", "23 65\n", "23 66\n", "23 67\n", "23 68\n", "23 69\n", "23 70\n", "23 71\n", "23 72\n", "23 73\n", "23 74\n", "23 75\n", "23 76\n", "23 77\n", "23 78\n", "23 79\n", "23 80\n", "23 81\n", "23 82\n", "23 83\n", "24 38\n", "24 39\n", "24 40\n", "24 41\n", "24 42\n", "24 43\n", "24 44\n", "24 45\n", "24 46\n", "24 47\n", "24 48\n", "24 49\n", "24 50\n", "24 51\n", "24 52\n", "24 53\n", "24 54\n", "24 55\n", "24 56\n", "24 57\n", "24 58\n", "24 59\n", "24 60\n", "24 61\n", "24 62\n", "24 63\n", "24 64\n", "24 65\n", "24 66\n", "24 67\n", "24 68\n", "24 69\n", "24 70\n", "24 71\n", "24 72\n", "24 73\n", "24 74\n", "24 75\n", "24 76\n", "24 77\n", "24 78\n", "24 79\n", "24 80\n", "24 81\n", "24 82\n", "24 83\n", "24 84\n", "24 85\n", "24 86\n", "25 40\n", "25 41\n", "25 42\n", "25 43\n", "25 44\n", "25 45\n", "25 46\n", "25 47\n", "25 48\n", "25 49\n", "25 50\n", "25 51\n", "25 52\n", "25 53\n", "25 54\n", "25 55\n", "25 56\n", "25 57\n", "25 58\n", "25 59\n", "25 60\n", "25 61\n", "25 62\n", "25 63\n", "25 64\n", "25 65\n", "25 66\n", "25 67\n", "25 68\n", "25 69\n", "25 70\n", "25 71\n", "25 72\n", "25 73\n", "25 74\n", "25 75\n", "25 76\n", "25 77\n", "25 78\n", "25 79\n", "25 80\n", "25 81\n", "25 82\n", "25 83\n", "25 84\n", "25 85\n", "25 86\n", "25 87\n", "25 88\n", "25 89\n", "26 42\n", "26 43\n", "26 44\n", "26 45\n", "26 46\n", "26 47\n", "26 48\n", "26 49\n", "26 50\n", "26 51\n", "26 52\n", "26 53\n", "26 54\n", "26 55\n", "26 56\n", "26 57\n", "26 58\n", "26 59\n", "26 60\n", "26 61\n", "26 62\n", "26 63\n", "26 64\n", "26 65\n", "26 66\n", "26 67\n", "26 68\n", "26 69\n", "26 70\n", "26 71\n", "26 72\n", "26 73\n", "26 74\n", "26 75\n", "26 76\n", "26 77\n", "26 78\n", "26 79\n", "26 80\n", "26 81\n", "26 82\n", "26 83\n", "26 84\n", "26 85\n", "26 86\n", "26 87\n", "26 88\n", "26 89\n", "26 90\n", "26 91\n", "26 92\n", "27 44\n", "27 45\n", "27 46\n", "27 47\n", "27 48\n", "27 49\n", "27 50\n", "27 51\n", "27 52\n", "27 53\n", "27 54\n", "27 55\n", "27 56\n", "27 57\n", "27 58\n", "27 59\n", "27 60\n", "27 61\n", "27 62\n", "27 63\n", "27 64\n", "27 65\n", "27 66\n", "27 67\n", "27 68\n", "27 69\n", "27 70\n", "27 71\n", "27 72\n", "27 73\n", "27 74\n", "27 75\n", "27 76\n", "27 77\n", "27 78\n", "27 79\n", "27 80\n", "27 81\n", "27 82\n", "27 83\n", "27 84\n", "27 85\n", "27 86\n", "27 87\n", "27 88\n", "27 89\n", "27 90\n", "27 91\n", "27 92\n", "27 93\n", "27 94\n", "27 95\n", "27 96\n", "28 46\n", "28 47\n", "28 48\n", "28 49\n", "28 50\n", "28 51\n", "28 52\n", "28 53\n", "28 54\n", "28 55\n", "28 56\n", "28 57\n", "28 58\n", "28 59\n", "28 60\n", "28 61\n", "28 62\n", "28 63\n", "28 64\n", "28 65\n", "28 66\n", "28 67\n", "28 68\n", "28 69\n", "28 70\n", "28 71\n", "28 72\n", "28 73\n", "28 74\n", "28 75\n", "28 76\n", "28 77\n", "28 78\n", "28 79\n", "28 80\n", "28 81\n", "28 82\n", "28 83\n", "28 84\n", "28 85\n", "28 86\n", "28 87\n", "28 88\n", "28 89\n", "28 90\n", "28 91\n", "28 92\n", "28 93\n", "28 94\n", "28 95\n", "28 96\n", "28 97\n", "28 98\n", "28 99\n", "29 48\n", "29 49\n", "29 50\n", "29 51\n", "29 52\n", "29 53\n", "29 54\n", "29 55\n", "29 56\n", "29 57\n", "29 58\n", "29 59\n", "29 60\n", "29 61\n", "29 62\n", "29 63\n", "29 64\n", "29 65\n", "29 66\n", "29 67\n", "29 68\n", "29 69\n", "29 70\n", "29 71\n", "29 72\n", "29 73\n", "29 74\n", "29 75\n", "29 76\n", "29 77\n", "29 78\n", "29 79\n", "29 80\n", "29 81\n", "29 82\n", "29 83\n", "29 84\n", "29 85\n", "29 86\n", "29 87\n", "29 88\n", "29 89\n", "29 90\n", "29 91\n", "29 92\n", "29 93\n", "29 94\n", "29 95\n", "29 96\n", "29 97\n", "29 98\n", "29 99\n", "29 100\n", "29 101\n", "29 102\n", "30 51\n", "30 52\n", "30 53\n", "30 54\n", "30 55\n", "30 56\n", "30 57\n", "30 58\n", "30 59\n", "30 60\n", "30 61\n", "30 62\n", "30 63\n", "30 64\n", "30 65\n", "30 66\n", "30 67\n", "30 68\n", "30 69\n", "30 70\n", "30 71\n", "30 72\n", "30 73\n", "30 74\n", "30 75\n", "30 76\n", "30 77\n", "30 78\n", "30 79\n", "30 80\n", "30 81\n", "30 82\n", "30 83\n", "30 84\n", "30 85\n", "30 86\n", "30 87\n", "30 88\n", "30 89\n", "30 90\n", "30 91\n", "30 92\n", "30 93\n", "30 94\n", "30 95\n", "30 96\n", "30 97\n", "30 98\n", "30 99\n", "30 100\n", "30 101\n", "30 102\n", "30 103\n", "30 104\n", "30 105\n", "31 53\n", "31 54\n", "31 55\n", "31 56\n", "31 57\n", "31 58\n", "31 59\n", "31 60\n", "31 61\n", "31 62\n", "31 63\n", "31 64\n", "31 65\n", "31 66\n", "31 67\n", "31 68\n", "31 69\n", "31 70\n", "31 71\n", "31 72\n", "31 73\n", "31 74\n", "31 75\n", "31 76\n", "31 77\n", "31 78\n", "31 79\n", "31 80\n", "31 81\n", "31 82\n", "31 83\n", "31 84\n", "31 85\n", "31 86\n", "31 87\n", "31 88\n", "31 89\n", "31 90\n", "31 91\n", "31 92\n", "31 93\n", "31 94\n", "31 95\n", "31 96\n", "31 97\n", "31 98\n", "31 99\n", "31 100\n", "31 101\n", "31 102\n", "31 103\n", "31 104\n", "31 105\n", "31 106\n", "31 107\n", "31 108\n", "32 55\n", "32 56\n", "32 57\n", "32 58\n", "32 59\n", "32 60\n", "32 61\n", "32 62\n", "32 63\n", "32 64\n", "32 65\n", "32 66\n", "32 67\n", "32 68\n", "32 69\n", "32 70\n", "32 71\n", "32 72\n", "32 73\n", "32 74\n", "32 75\n", "32 76\n", "32 77\n", "32 78\n", "32 79\n", "32 80\n", "32 81\n", "32 82\n", "32 83\n", "32 84\n", "32 85\n", "32 86\n", "32 87\n", "32 88\n", "32 89\n", "32 90\n", "32 91\n", "32 92\n", "32 93\n", "32 94\n", "32 95\n", "32 96\n", "32 97\n", "32 98\n", "32 99\n", "32 100\n", "32 101\n", "32 102\n", "32 103\n", "32 104\n", "32 105\n", "32 106\n", "32 107\n", "32 108\n", "32 109\n", "32 110\n", "32 111\n", "32 112\n", "33 57\n", "33 58\n", "33 59\n", "33 60\n", "33 61\n", "33 62\n", "33 63\n", "33 64\n", "33 65\n", "33 66\n", "33 67\n", "33 68\n", "33 69\n", "33 70\n", "33 71\n", "33 72\n", "33 73\n", "33 74\n", "33 75\n", "33 76\n", "33 77\n", "33 78\n", "33 79\n", "33 80\n", "33 81\n", "33 82\n", "33 83\n", "33 84\n", "33 85\n", "33 86\n", "33 87\n", "33 88\n", "33 89\n", "33 90\n", "33 91\n", "33 92\n", "33 93\n", "33 94\n", "33 95\n", "33 96\n", "33 97\n", "33 98\n", "33 99\n", "33 100\n", "33 101\n", "33 102\n", "33 103\n", "33 104\n", "33 105\n", "33 106\n", "33 107\n", "33 108\n", "33 109\n", "33 110\n", "33 111\n", "33 112\n", "33 113\n", "33 114\n", "33 115\n", "34 59\n", "34 60\n", "34 61\n", "34 62\n", "34 63\n", "34 64\n", "34 65\n", "34 66\n", "34 67\n", "34 68\n", "34 69\n", "34 70\n", "34 71\n", "34 72\n", "34 73\n", "34 74\n", "34 75\n", "34 76\n", "34 77\n", "34 78\n", "34 79\n", "34 80\n", "34 81\n", "34 82\n", "34 83\n", "34 84\n", "34 85\n", "34 86\n", "34 87\n", "34 88\n", "34 89\n", "34 90\n", "34 91\n", "34 92\n", "34 93\n", "34 94\n", "34 95\n", "34 96\n", "34 97\n", "34 98\n", "34 99\n", "34 100\n", "34 101\n", "34 102\n", "34 103\n", "34 104\n", "34 105\n", "34 106\n", "34 107\n", "34 108\n", "34 109\n", "34 110\n", "34 111\n", "34 112\n", "34 113\n", "34 114\n", "34 115\n", "34 116\n", "34 117\n", "34 118\n", "35 61\n", "35 62\n", "35 63\n", "35 64\n", "35 65\n", "35 66\n", "35 67\n", "35 68\n", "35 69\n", "35 70\n", "35 71\n", "35 72\n", "35 73\n", "35 74\n", "35 75\n", "35 76\n", "35 77\n", "35 78\n", "35 79\n", "35 80\n", "35 81\n", "35 82\n", "35 83\n", "35 84\n", "35 85\n", "35 86\n", "35 87\n", "35 88\n", "35 89\n", "35 90\n", "35 91\n", "35 92\n", "35 93\n", "35 94\n", "35 95\n", "35 96\n", "35 97\n", "35 98\n", "35 99\n", "35 100\n", "35 101\n", "35 102\n", "35 103\n", "35 104\n", "35 105\n", "35 106\n", "35 107\n", "35 108\n", "35 109\n", "35 110\n", "35 111\n", "35 112\n", "35 113\n", "35 114\n", "35 115\n", "35 116\n", "35 117\n", "35 118\n", "35 119\n", "35 120\n", "35 121\n", "36 63\n", "36 64\n", "36 65\n", "36 66\n", "36 67\n", "36 68\n", "36 69\n", "36 70\n", "36 71\n", "36 72\n", "36 73\n", "36 74\n", "36 75\n", "36 76\n", "36 77\n", "36 78\n", "36 79\n", "36 80\n", "36 81\n", "36 82\n", "36 83\n", "36 84\n", "36 85\n", "36 86\n", "36 87\n", "36 88\n", "36 89\n", "36 90\n", "36 91\n", "36 92\n", "36 93\n", "36 94\n", "36 95\n", "36 96\n", "36 97\n", "36 98\n", "36 99\n", "36 100\n", "36 101\n", "36 102\n", "36 103\n", "36 104\n", "36 105\n", "36 106\n", "36 107\n", "36 108\n", "36 109\n", "36 110\n", "36 111\n", "36 112\n", "36 113\n", "36 114\n", "36 115\n", "36 116\n", "36 117\n", "36 118\n", "36 119\n", "36 120\n", "36 121\n", "36 122\n", "36 123\n", "36 124\n", "37 66\n", "37 67\n", "37 68\n", "37 69\n", "37 70\n", "37 71\n", "37 72\n", "37 73\n", "37 74\n", "37 75\n", "37 76\n", "37 77\n", "37 78\n", "37 79\n", "37 80\n", "37 81\n", "37 82\n", "37 83\n", "37 84\n", "37 85\n", "37 86\n", "37 87\n", "37 88\n", "37 89\n", "37 90\n", "37 91\n", "37 92\n", "37 93\n", "37 94\n", "37 95\n", "37 96\n", "37 97\n", "37 98\n", "37 99\n", "37 100\n", "37 101\n", "37 102\n", "37 103\n", "37 104\n", "37 105\n", "37 106\n", "37 107\n", "37 108\n", "37 109\n", "37 110\n", "37 111\n", "37 112\n", "37 113\n", "37 114\n", "37 115\n", "37 116\n", "37 117\n", "37 118\n", "37 119\n", "37 120\n", "37 121\n", "37 122\n", "37 123\n", "37 124\n", "37 125\n", "37 126\n", "37 127\n", "37 128\n", "38 68\n", "38 69\n", "38 70\n", "38 71\n", "38 72\n", "38 73\n", "38 74\n", "38 75\n", "38 76\n", "38 77\n", "38 78\n", "38 79\n", "38 80\n", "38 81\n", "38 82\n", "38 83\n", "38 84\n", "38 85\n", "38 86\n", "38 87\n", "38 88\n", "38 89\n", "38 90\n", "38 91\n", "38 92\n", "38 93\n", "38 94\n", "38 95\n", "38 96\n", "38 97\n", "38 98\n", "38 99\n", "38 100\n", "38 101\n", "38 102\n", "38 103\n", "38 104\n", "38 105\n", "38 106\n", "38 107\n", "38 108\n", "38 109\n", "38 110\n", "38 111\n", "38 112\n", "38 113\n", "38 114\n", "38 115\n", "38 116\n", "38 117\n", "38 118\n", "38 119\n", "38 120\n", "38 121\n", "38 122\n", "38 123\n", "38 124\n", "38 125\n", "38 126\n", "38 127\n", "38 128\n", "38 129\n", "38 130\n", "38 131\n", "39 70\n", "39 71\n", "39 72\n", "39 73\n", "39 74\n", "39 75\n", "39 76\n", "39 77\n", "39 78\n", "39 79\n", "39 80\n", "39 81\n", "39 82\n", "39 83\n", "39 84\n", "39 85\n", "39 86\n", "39 87\n", "39 88\n", "39 89\n", "39 90\n", "39 91\n", "39 92\n", "39 93\n", "39 94\n", "39 95\n", "39 96\n", "39 97\n", "39 98\n", "39 99\n", "39 100\n", "39 101\n", "39 102\n", "39 103\n", "39 104\n", "39 105\n", "39 106\n", "39 107\n", "39 108\n", "39 109\n", "39 110\n", "39 111\n", "39 112\n", "39 113\n", "39 114\n", "39 115\n", "39 116\n", "39 117\n", "39 118\n", "39 119\n", "39 120\n", "39 121\n", "39 122\n", "39 123\n", "39 124\n", "39 125\n", "39 126\n", "39 127\n", "39 128\n", "39 129\n", "39 130\n", "39 131\n", "39 132\n", "39 133\n", "39 134\n", "40 72\n", "40 73\n", "40 74\n", "40 75\n", "40 76\n", "40 77\n", "40 78\n", "40 79\n", "40 80\n", "40 81\n", "40 82\n", "40 83\n", "40 84\n", "40 85\n", "40 86\n", "40 87\n", "40 88\n", "40 89\n", "40 90\n", "40 91\n", "40 92\n", "40 93\n", "40 94\n", "40 95\n", "40 96\n", "40 97\n", "40 98\n", "40 99\n", "40 100\n", "40 101\n", "40 102\n", "40 103\n", "40 104\n", "40 105\n", "40 106\n", "40 107\n", "40 108\n", "40 109\n", "40 110\n", "40 111\n", "40 112\n", "40 113\n", "40 114\n", "40 115\n", "40 116\n", "40 117\n", "40 118\n", "40 119\n", "40 120\n", "40 121\n", "40 122\n", "40 123\n", "40 124\n", "40 125\n", "40 126\n", "40 127\n", "40 128\n", "40 129\n", "40 130\n", "40 131\n", "40 132\n", "40 133\n", "40 134\n", "40 135\n", "40 136\n", "40 137\n", "41 74\n", "41 75\n", "41 76\n", "41 77\n", "41 78\n", "41 79\n", "41 80\n", "41 81\n", "41 82\n", "41 83\n", "41 84\n", "41 85\n", "41 86\n", "41 87\n", "41 88\n", "41 89\n", "41 90\n", "41 91\n", "41 92\n", "41 93\n", "41 94\n", "41 95\n", "41 96\n", "41 97\n", "41 98\n", "41 99\n", "41 100\n", "41 101\n", "41 102\n", "41 103\n", "41 104\n", "41 105\n", "41 106\n", "41 107\n", "41 108\n", "41 109\n", "41 110\n", "41 111\n", "41 112\n", "41 113\n", "41 114\n", "41 115\n", "41 116\n", "41 117\n", "41 118\n", "41 119\n", "41 120\n", "41 121\n", "41 122\n", "41 123\n", "41 124\n", "41 125\n", "41 126\n", "41 127\n", "41 128\n", "41 129\n", "41 130\n", "41 131\n", "41 132\n", "41 133\n", "41 134\n", "41 135\n", "41 136\n", "41 137\n", "41 138\n", "41 139\n", "41 140\n", "42 77\n", "42 78\n", "42 79\n", "42 80\n", "42 81\n", "42 82\n", "42 83\n", "42 84\n", "42 85\n", "42 86\n", "42 87\n", "42 88\n", "42 89\n", "42 90\n", "42 91\n", "42 92\n", "42 93\n", "42 94\n", "42 95\n", "42 96\n", "42 97\n", "42 98\n", "42 99\n", "42 100\n", "42 101\n", "42 102\n", "42 103\n", "42 104\n", "42 105\n", "42 106\n", "42 107\n", "42 108\n", "42 109\n", "42 110\n", "42 111\n", "42 112\n", "42 113\n", "42 114\n", "42 115\n", "42 116\n", "42 117\n", "42 118\n", "42 119\n", "42 120\n", "42 121\n", "42 122\n", "42 123\n", "42 124\n", "42 125\n", "42 126\n", "42 127\n", "42 128\n", "42 129\n", "42 130\n", "42 131\n", "42 132\n", "42 133\n", "42 134\n", "42 135\n", "42 136\n", "42 137\n", "42 138\n", "42 139\n", "42 140\n", "42 141\n", "42 142\n", "42 143\n", "42 144\n", "43 79\n", "43 80\n", "43 81\n", "43 82\n", "43 83\n", "43 84\n", "43 85\n", "43 86\n", "43 87\n", "43 88\n", "43 89\n", "43 90\n", "43 91\n", "43 92\n", "43 93\n", "43 94\n", "43 95\n", "43 96\n", "43 97\n", "43 98\n", "43 99\n", "43 100\n", "43 101\n", "43 102\n", "43 103\n", "43 104\n", "43 105\n", "43 106\n", "43 107\n", "43 108\n", "43 109\n", "43 110\n", "43 111\n", "43 112\n", "43 113\n", "43 114\n", "43 115\n", "43 116\n", "43 117\n", "43 118\n", "43 119\n", "43 120\n", "43 121\n", "43 122\n", "43 123\n", "43 124\n", "43 125\n", "43 126\n", "43 127\n", "43 128\n", "43 129\n", "43 130\n", "43 131\n", "43 132\n", "43 133\n", "43 134\n", "43 135\n", "43 136\n", "43 137\n", "43 138\n", "43 139\n", "43 140\n", "43 141\n", "43 142\n", "43 143\n", "43 144\n", "43 145\n", "43 146\n", "43 147\n", "44 81\n", "44 82\n", "44 83\n", "44 84\n", "44 85\n", "44 86\n", "44 87\n", "44 88\n", "44 89\n", "44 90\n", "44 91\n", "44 92\n", "44 93\n", "44 94\n", "44 95\n", "44 96\n", "44 97\n", "44 98\n", "44 99\n", "44 100\n", "44 101\n", "44 102\n", "44 103\n", "44 104\n", "44 105\n", "44 106\n", "44 107\n", "44 108\n", "44 109\n", "44 110\n", "44 111\n", "44 112\n", "44 113\n", "44 114\n", "44 115\n", "44 116\n", "44 117\n", "44 118\n", "44 119\n", "44 120\n", "44 121\n", "44 122\n", "44 123\n", "44 124\n", "44 125\n", "44 126\n", "44 127\n", "44 128\n", "44 129\n", "44 130\n", "44 131\n", "44 132\n", "44 133\n", "44 134\n", "44 135\n", "44 136\n", "44 137\n", "44 138\n", "44 139\n", "44 140\n", "44 141\n", "44 142\n", "44 143\n", "44 144\n", "44 145\n", "44 146\n", "44 147\n", "44 148\n", "44 149\n", "44 150\n", "45 83\n", "45 84\n", "45 85\n", "45 86\n", "45 87\n", "45 88\n", "45 89\n", "45 90\n", "45 91\n", "45 92\n", "45 93\n", "45 94\n", "45 95\n", "45 96\n", "45 97\n", "45 98\n", "45 99\n", "45 100\n", "45 101\n", "45 102\n", "45 103\n", "45 104\n", "45 105\n", "45 106\n", "45 107\n", "45 108\n", "45 109\n", "45 110\n", "45 111\n", "45 112\n", "45 113\n", "45 114\n", "45 115\n", "45 116\n", "45 117\n", "45 118\n", "45 119\n", "45 120\n", "45 121\n", "45 122\n", "45 123\n", "45 124\n", "45 125\n", "45 126\n", "45 127\n", "45 128\n", "45 129\n", "45 130\n", "45 131\n", "45 132\n", "45 133\n", "45 134\n", "45 135\n", "45 136\n", "45 137\n", "45 138\n", "45 139\n", "45 140\n", "45 141\n", "45 142\n", "45 143\n", "45 144\n", "45 145\n", "45 146\n", "45 147\n", "45 148\n", "45 149\n", "45 150\n", "45 151\n", "45 152\n", "45 153\n", "46 86\n", "46 87\n", "46 88\n", "46 89\n", "46 90\n", "46 91\n", "46 92\n", "46 93\n", "46 94\n", "46 95\n", "46 96\n", "46 97\n", "46 98\n", "46 99\n", "46 100\n", "46 101\n", "46 102\n", "46 103\n", "46 104\n", "46 105\n", "46 106\n", "46 107\n", "46 108\n", "46 109\n", "46 110\n", "46 111\n", "46 112\n", "46 113\n", "46 114\n", "46 115\n", "46 116\n", "46 117\n", "46 118\n", "46 119\n", "46 120\n", "46 121\n", "46 122\n", "46 123\n", "46 124\n", "46 125\n", "46 126\n", "46 127\n", "46 128\n", "46 129\n", "46 130\n", "46 131\n", "46 132\n", "46 133\n", "46 134\n", "46 135\n", "46 136\n", "46 137\n", "46 138\n", "46 139\n", "46 140\n", "46 141\n", "46 142\n", "46 143\n", "46 144\n", "46 145\n", "46 146\n", "46 147\n", "46 148\n", "46 149\n", "46 150\n", "46 151\n", "46 152\n", "46 153\n", "46 154\n", "46 155\n", "46 156\n", "47 88\n", "47 89\n", "47 90\n", "47 91\n", "47 92\n", "47 93\n", "47 94\n", "47 95\n", "47 96\n", "47 97\n", "47 98\n", "47 99\n", "47 100\n", "47 101\n", "47 102\n", "47 103\n", "47 104\n", "47 105\n", "47 106\n", "47 107\n", "47 108\n", "47 109\n", "47 110\n", "47 111\n", "47 112\n", "47 113\n", "47 114\n", "47 115\n", "47 116\n", "47 117\n", "47 118\n", "47 119\n", "47 120\n", "47 121\n", "47 122\n", "47 123\n", "47 124\n", "47 125\n", "47 126\n", "47 127\n", "47 128\n", "47 129\n", "47 130\n", "47 131\n", "47 132\n", "47 133\n", "47 134\n", "47 135\n", "47 136\n", "47 137\n", "47 138\n", "47 139\n", "47 140\n", "47 141\n", "47 142\n", "47 143\n", "47 144\n", "47 145\n", "47 146\n", "47 147\n", "47 148\n", "47 149\n", "47 150\n", "47 151\n", "47 152\n", "47 153\n", "47 154\n", "47 155\n", "47 156\n", "47 157\n", "47 158\n", "47 159\n", "47 160\n", "48 90\n", "48 91\n", "48 92\n", "48 93\n", "48 94\n", "48 95\n", "48 96\n", "48 97\n", "48 98\n", "48 99\n", "48 100\n", "48 101\n", "48 102\n", "48 103\n", "48 104\n", "48 105\n", "48 106\n", "48 107\n", "48 108\n", "48 109\n", "48 110\n", "48 111\n", "48 112\n", "48 113\n", "48 114\n", "48 115\n", "48 116\n", "48 117\n", "48 118\n", "48 119\n", "48 120\n", "48 121\n", "48 122\n", "48 123\n", "48 124\n", "48 125\n", "48 126\n", "48 127\n", "48 128\n", "48 129\n", "48 130\n", "48 131\n", "48 132\n", "48 133\n", "48 134\n", "48 135\n", "48 136\n", "48 137\n", "48 138\n", "48 139\n", "48 140\n", "48 141\n", "48 142\n", "48 143\n", "48 144\n", "48 145\n", "48 146\n", "48 147\n", "48 148\n", "48 149\n", "48 150\n", "48 151\n", "48 152\n", "48 153\n", "48 154\n", "48 155\n", "48 156\n", "48 157\n", "48 158\n", "48 159\n", "48 160\n", "48 161\n", "48 162\n", "48 163\n", "49 92\n", "49 93\n", "49 94\n", "49 95\n", "49 96\n", "49 97\n", "49 98\n", "49 99\n", "49 100\n", "49 101\n", "49 102\n", "49 103\n", "49 104\n", "49 105\n", "49 106\n", "49 107\n", "49 108\n", "49 109\n", "49 110\n", "49 111\n", "49 112\n", "49 113\n", "49 114\n", "49 115\n", "49 116\n", "49 117\n", "49 118\n", "49 119\n", "49 120\n", "49 121\n", "49 122\n", "49 123\n", "49 124\n", "49 125\n", "49 126\n", "49 127\n", "49 128\n", "49 129\n", "49 130\n", "49 131\n", "49 132\n", "49 133\n", "49 134\n", "49 135\n", "49 136\n", "49 137\n", "49 138\n", "49 139\n", "49 140\n", "49 141\n", "49 142\n", "49 143\n", "49 144\n", "49 145\n", "49 146\n", "49 147\n", "49 148\n", "49 149\n", "49 150\n", "49 151\n", "49 152\n", "49 153\n", "49 154\n", "49 155\n", "49 156\n", "49 157\n", "49 158\n", "49 159\n", "49 160\n", "49 161\n", "49 162\n", "49 163\n", "49 164\n", "49 165\n", "49 166\n", "50 94\n", "50 95\n", "50 96\n", "50 97\n", "50 98\n", "50 99\n", "50 100\n", "50 101\n", "50 102\n", "50 103\n", "50 104\n", "50 105\n", "50 106\n", "50 107\n", "50 108\n", "50 109\n", "50 110\n", "50 111\n", "50 112\n", "50 113\n", "50 114\n", "50 115\n", "50 116\n", "50 117\n", "50 118\n", "50 119\n", "50 120\n", "50 121\n", "50 122\n", "50 123\n", "50 124\n", "50 125\n", "50 126\n", "50 127\n", "50 128\n", "50 129\n", "50 130\n", "50 131\n", "50 132\n", "50 133\n", "50 134\n", "50 135\n", "50 136\n", "50 137\n", "50 138\n", "50 139\n", "50 140\n", "50 141\n", "50 142\n", "50 143\n", "50 144\n", "50 145\n", "50 146\n", "50 147\n", "50 148\n", "50 149\n", "50 150\n", "50 151\n", "50 152\n", "50 153\n", "50 154\n", "50 155\n", "50 156\n", "50 157\n", "50 158\n", "50 159\n", "50 160\n", "50 161\n", "50 162\n", "50 163\n", "50 164\n", "50 165\n", "50 166\n", "50 167\n", "50 168\n", "50 169\n", "0 1\n", "1 1\n", "2 4\n" ] } ], "source": [ "for nuc in nuclide_subset:\n", " print(nuclide_subset[nuc]['z'], nuclide_subset[nuc]['a'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now create new nuclear data XML by typing" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "subset_xml = wx.New_Xml(xml_type='nuclear_data')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Set the data in the new XML by typing" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "subset_xml.set_nuclide_data(nuclide_subset)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and write the data to an XML file by typing" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "subset_xml.write('subset_nuclear_data.xml')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can now read those data into an Xml object by typing" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "xml = wx.Xml('subset_nuclear_data.xml')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now compare the two data files. Get the calcium and A=30 isotopes from both files and print out by typing" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "56\n", "0\n" ] } ], "source": [ "check_old = old_xml.get_nuclide_data(\"[(z = 20) or (a = 30)]\")\n", "print(len(check_old))\n", "check_new = xml.get_nuclide_data(\"[(z = 20) or (a = 30)]\")\n", "print(len(check_new))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The old XML file contains calcium and A=30 isotopes but the new XML file does not." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Update existing nuclide data. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To update existing data, retrieve the nuclide data by typing" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "nuclides = old_xml.get_nuclide_data()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "nuclides is a dictionary with an entry for each nuclide chosen by the XPath expression input to the get_nuclide_data() method. The above routine call retrieves all the nuclide data. Each dictionary entry is itself a dictionary. To see the contents of an entry, type" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'z': 8, 'a': 16, 'n': 8, 'state': '', 'source': 'reac1', 'mass excess': -4.737, 'spin': 0.0, 't9': array([ 0.1 , 0.15, 0.2 , 0.3 , 0.4 , 0.5 , 0.6 , 0.7 , 0.8 ,\n", " 0.9 , 1. , 1.5 , 2. , 2.5 , 3. , 3.5 , 4. , 4.5 ,\n", " 5. , 6. , 7. , 8. , 9. , 10. ]), 'partf': array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1.])}\n" ] } ], "source": [ "print(nuclides['o16'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This shows that the dictionary entries for o16. Update the data for this species by typing" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "nuclides['o16']['source'] = 'made-up data'\n", "nuclides['o16']['mass excess'] = 100\n", "nuclides['o16']['t9'] = [1,2,3,4]\n", "nuclides['o16']['partf'] = [1, 4, 9, 16]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Confirm the changes by typing" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'z': 8, 'a': 16, 'n': 8, 'state': '', 'source': 'made-up data', 'mass excess': 100, 'spin': 0.0, 't9': [1, 2, 3, 4], 'partf': [1, 4, 9, 16]}\n" ] } ], "source": [ "print(nuclides['o16'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now create a new nuclear data XML file by typing" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "updated_xml = wx.New_Xml(xml_type='nuclear_data')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Set the data in the new XML by typing" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "updated_xml.set_nuclide_data(nuclides)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and write the data to an XML file by typing" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "updated_xml.write('updated_nuclear_data.xml')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Validate those data against the libnucnet XML nuclear data schema by typing" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "wx.validate('updated_nuclear_data.xml')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This will simply return, which shows that the data are valid. Next, retrieve the nuclide data and print out the o16 data:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'z': 8, 'a': 16, 'n': 8, 'state': '', 'source': 'reac1', 'mass excess': -4.737, 'spin': 0.0, 't9': array([ 0.1 , 0.15, 0.2 , 0.3 , 0.4 , 0.5 , 0.6 , 0.7 , 0.8 ,\n", " 0.9 , 1. , 1.5 , 2. , 2.5 , 3. , 3.5 , 4. , 4.5 ,\n", " 5. , 6. , 7. , 8. , 9. , 10. ]), 'partf': array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1.])}\n" ] } ], "source": [ "updated_nuclides = xml.get_nuclide_data()\n", "print(updated_nuclides['o16'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The data in the new file are those that you have updated." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Add to existing nuclide data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To add to existing data, retrieve the nuclide data by typing" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "nuclides = old_xml.get_nuclide_data()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create a new species in the nuclide data by typing" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "nuclides['new'] = {}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that the key can be any string different from the existing keys. Now add the data:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "nuclides['new']['z'] = 122\n", "nuclides['new']['a'] = 330\n", "nuclides['new']['source'] = 'made-up'\n", "nuclides['new']['state'] = ''\n", "nuclides['new']['mass excess'] = 500\n", "nuclides['new']['spin'] = 0.\n", "nuclides['new']['t9'] = [1,2,3,4]\n", "nuclides['new']['partf'] = [1,4,9,16]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create the new XML, set the data, and write out the XML:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "extended_xml = wx.New_Xml(xml_type='nuclear_data')\n", "extended_xml.set_nuclide_data(nuclides)\n", "extended_xml.write('extended_nuclear_data.xml')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Validate the extended XML, read in, and print out the nuclide data to confirm the new species has been added:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "h2 1 2\n", "h3 1 3\n", "he3 2 3\n", "he6 2 6\n", "he7 2 7\n", "he8 2 8\n", "he9 2 9\n", "he10 2 10\n", "li6 3 6\n", "li7 3 7\n", "li8 3 8\n", "li9 3 9\n", "li10 3 10\n", "li11 3 11\n", "be7 4 7\n", "be8 4 8\n", "be9 4 9\n", "be10 4 10\n", "be11 4 11\n", "be12 4 12\n", "be13 4 13\n", "be14 4 14\n", "b8 5 8\n", "b9 5 9\n", "b10 5 10\n", "b11 5 11\n", "b12 5 12\n", "b13 5 13\n", "b14 5 14\n", "b15 5 15\n", "b17 5 17\n", "b19 5 19\n", "c9 6 9\n", "c10 6 10\n", "c11 6 11\n", "c12 6 12\n", "c13 6 13\n", "c14 6 14\n", "c15 6 15\n", "c16 6 16\n", "c17 6 17\n", "c18 6 18\n", "c19 6 19\n", "c20 6 20\n", "c22 6 22\n", "n11 7 11\n", "n12 7 12\n", "n13 7 13\n", "n14 7 14\n", "n15 7 15\n", "n16 7 16\n", "n17 7 17\n", "n18 7 18\n", "n19 7 19\n", "n20 7 20\n", "n21 7 21\n", "n22 7 22\n", "n23 7 23\n", "o13 8 13\n", "o14 8 14\n", "o15 8 15\n", "o16 8 16\n", "o17 8 17\n", "o18 8 18\n", "o19 8 19\n", "o20 8 20\n", "o21 8 21\n", "o22 8 22\n", "o23 8 23\n", "o24 8 24\n", "o25 8 25\n", "o26 8 26\n", "o28 8 28\n", "o30 8 30\n", "f14 9 14\n", "f15 9 15\n", "f16 9 16\n", "f17 9 17\n", "f18 9 18\n", "f19 9 19\n", "f20 9 20\n", "f21 9 21\n", "f22 9 22\n", "f23 9 23\n", "f24 9 24\n", "f25 9 25\n", "f26 9 26\n", "f27 9 27\n", "f28 9 28\n", "f29 9 29\n", "f30 9 30\n", "f31 9 31\n", "f37 9 37\n", "ne16 10 16\n", "ne17 10 17\n", "ne18 10 18\n", "ne19 10 19\n", "ne20 10 20\n", "ne21 10 21\n", "ne22 10 22\n", "ne23 10 23\n", "ne24 10 24\n", "ne25 10 25\n", "ne26 10 26\n", "ne27 10 27\n", "ne28 10 28\n", "ne29 10 29\n", "ne30 10 30\n", "ne31 10 31\n", "ne32 10 32\n", "ne33 10 33\n", "ne34 10 34\n", "ne35 10 35\n", "ne36 10 36\n", "ne37 10 37\n", "ne38 10 38\n", "ne39 10 39\n", "ne40 10 40\n", "ne41 10 41\n", "na18 11 18\n", "na19 11 19\n", "na20 11 20\n", "na21 11 21\n", "na22 11 22\n", "na23 11 23\n", "na24 11 24\n", "na25 11 25\n", "na26 11 26\n", "na27 11 27\n", "na28 11 28\n", "na29 11 29\n", "na30 11 30\n", "na31 11 31\n", "na32 11 32\n", "na33 11 33\n", "na34 11 34\n", "na35 11 35\n", "na36 11 36\n", "na37 11 37\n", "na38 11 38\n", "na39 11 39\n", "na40 11 40\n", "na41 11 41\n", "na42 11 42\n", "na43 11 43\n", "na44 11 44\n", "mg19 12 19\n", "mg20 12 20\n", "mg21 12 21\n", "mg22 12 22\n", "mg23 12 23\n", "mg24 12 24\n", "mg25 12 25\n", "mg26 12 26\n", "mg27 12 27\n", "mg28 12 28\n", "mg29 12 29\n", "mg30 12 30\n", "mg31 12 31\n", "mg32 12 32\n", "mg33 12 33\n", "mg34 12 34\n", "mg35 12 35\n", "mg36 12 36\n", "mg37 12 37\n", "mg38 12 38\n", "mg39 12 39\n", "mg40 12 40\n", "mg41 12 41\n", "mg42 12 42\n", "mg43 12 43\n", "mg44 12 44\n", "mg45 12 45\n", "mg46 12 46\n", "mg47 12 47\n", "al21 13 21\n", "al22 13 22\n", "al23 13 23\n", "al24 13 24\n", "al25 13 25\n", "al26 13 26\n", "al27 13 27\n", "al28 13 28\n", "al29 13 29\n", "al30 13 30\n", "al31 13 31\n", "al32 13 32\n", "al33 13 33\n", "al34 13 34\n", "al35 13 35\n", "al36 13 36\n", "al37 13 37\n", "al38 13 38\n", "al39 13 39\n", "al40 13 40\n", "al41 13 41\n", "al42 13 42\n", "al43 13 43\n", "al44 13 44\n", "al45 13 45\n", "al46 13 46\n", "al47 13 47\n", "al48 13 48\n", "al49 13 49\n", "al50 13 50\n", "al51 13 51\n", "si22 14 22\n", "si23 14 23\n", "si24 14 24\n", "si25 14 25\n", "si26 14 26\n", "si27 14 27\n", "si28 14 28\n", "si29 14 29\n", "si30 14 30\n", "si31 14 31\n", "si32 14 32\n", "si33 14 33\n", "si34 14 34\n", "si35 14 35\n", "si36 14 36\n", "si37 14 37\n", "si38 14 38\n", "si39 14 39\n", "si40 14 40\n", "si41 14 41\n", "si42 14 42\n", "si43 14 43\n", "si44 14 44\n", "si45 14 45\n", "si46 14 46\n", "si47 14 47\n", "si48 14 48\n", "si49 14 49\n", "si50 14 50\n", "si51 14 51\n", "si52 14 52\n", "si53 14 53\n", "si54 14 54\n", "p23 15 23\n", "p24 15 24\n", "p25 15 25\n", "p26 15 26\n", "p27 15 27\n", "p28 15 28\n", "p29 15 29\n", "p30 15 30\n", "p31 15 31\n", "p32 15 32\n", "p33 15 33\n", "p34 15 34\n", "p35 15 35\n", "p36 15 36\n", "p37 15 37\n", "p38 15 38\n", "p39 15 39\n", "p40 15 40\n", "p41 15 41\n", "p42 15 42\n", "p43 15 43\n", "p44 15 44\n", "p45 15 45\n", "p46 15 46\n", "p47 15 47\n", "p48 15 48\n", "p49 15 49\n", "p50 15 50\n", "p51 15 51\n", "p52 15 52\n", "p53 15 53\n", "p54 15 54\n", "p55 15 55\n", "p56 15 56\n", "p57 15 57\n", "s24 16 24\n", "s25 16 25\n", "s26 16 26\n", "s27 16 27\n", "s28 16 28\n", "s29 16 29\n", "s30 16 30\n", "s31 16 31\n", "s32 16 32\n", "s33 16 33\n", "s34 16 34\n", "s35 16 35\n", "s36 16 36\n", "s37 16 37\n", "s38 16 38\n", "s39 16 39\n", "s40 16 40\n", "s41 16 41\n", "s42 16 42\n", "s43 16 43\n", "s44 16 44\n", "s45 16 45\n", "s46 16 46\n", "s47 16 47\n", "s48 16 48\n", "s49 16 49\n", "s50 16 50\n", "s51 16 51\n", "s52 16 52\n", "s53 16 53\n", "s54 16 54\n", "s55 16 55\n", "s56 16 56\n", "s57 16 57\n", "s58 16 58\n", "s59 16 59\n", "s60 16 60\n", "cl25 17 25\n", "cl26 17 26\n", "cl27 17 27\n", "cl28 17 28\n", "cl29 17 29\n", "cl30 17 30\n", "cl31 17 31\n", "cl32 17 32\n", "cl33 17 33\n", "cl34 17 34\n", "cl35 17 35\n", "cl36 17 36\n", "cl37 17 37\n", "cl38 17 38\n", "cl39 17 39\n", "cl40 17 40\n", "cl41 17 41\n", "cl42 17 42\n", "cl43 17 43\n", "cl44 17 44\n", "cl45 17 45\n", "cl46 17 46\n", "cl47 17 47\n", "cl48 17 48\n", "cl49 17 49\n", "cl50 17 50\n", "cl51 17 51\n", "cl52 17 52\n", "cl53 17 53\n", "cl54 17 54\n", "cl55 17 55\n", "cl56 17 56\n", "cl57 17 57\n", "cl58 17 58\n", "cl59 17 59\n", "cl60 17 60\n", "cl61 17 61\n", "cl62 17 62\n", "cl63 17 63\n", "ar27 18 27\n", "ar28 18 28\n", "ar29 18 29\n", "ar30 18 30\n", "ar31 18 31\n", "ar32 18 32\n", "ar33 18 33\n", "ar34 18 34\n", "ar35 18 35\n", "ar36 18 36\n", "ar37 18 37\n", "ar38 18 38\n", "ar39 18 39\n", "ar40 18 40\n", "ar41 18 41\n", "ar42 18 42\n", "ar43 18 43\n", "ar44 18 44\n", "ar45 18 45\n", "ar46 18 46\n", "ar47 18 47\n", "ar48 18 48\n", "ar49 18 49\n", "ar50 18 50\n", "ar51 18 51\n", "ar52 18 52\n", "ar53 18 53\n", "ar54 18 54\n", "ar55 18 55\n", "ar56 18 56\n", "ar57 18 57\n", "ar58 18 58\n", "ar59 18 59\n", "ar60 18 60\n", "ar61 18 61\n", "ar62 18 62\n", "ar63 18 63\n", "ar64 18 64\n", "ar65 18 65\n", "ar66 18 66\n", "ar67 18 67\n", "k29 19 29\n", "k30 19 30\n", "k31 19 31\n", "k32 19 32\n", "k33 19 33\n", "k34 19 34\n", "k35 19 35\n", "k36 19 36\n", "k37 19 37\n", "k38 19 38\n", "k39 19 39\n", "k40 19 40\n", "k41 19 41\n", "k42 19 42\n", "k43 19 43\n", "k44 19 44\n", "k45 19 45\n", "k46 19 46\n", "k47 19 47\n", "k48 19 48\n", "k49 19 49\n", "k50 19 50\n", "k51 19 51\n", "k52 19 52\n", "k53 19 53\n", "k54 19 54\n", "k55 19 55\n", "k56 19 56\n", "k57 19 57\n", "k58 19 58\n", "k59 19 59\n", "k60 19 60\n", "k61 19 61\n", "k62 19 62\n", "k63 19 63\n", "k64 19 64\n", "k65 19 65\n", "k66 19 66\n", "k67 19 67\n", "k68 19 68\n", "k69 19 69\n", "k70 19 70\n", "ca30 20 30\n", "ca31 20 31\n", "ca32 20 32\n", "ca33 20 33\n", "ca34 20 34\n", "ca35 20 35\n", "ca36 20 36\n", "ca37 20 37\n", "ca38 20 38\n", "ca39 20 39\n", "ca40 20 40\n", "ca41 20 41\n", "ca42 20 42\n", "ca43 20 43\n", "ca44 20 44\n", "ca45 20 45\n", "ca46 20 46\n", "ca47 20 47\n", "ca48 20 48\n", "ca49 20 49\n", "ca50 20 50\n", "ca51 20 51\n", "ca52 20 52\n", "ca53 20 53\n", "ca54 20 54\n", "ca55 20 55\n", "ca56 20 56\n", "ca57 20 57\n", "ca58 20 58\n", "ca59 20 59\n", "ca60 20 60\n", "ca61 20 61\n", "ca62 20 62\n", "ca63 20 63\n", "ca64 20 64\n", "ca65 20 65\n", "ca66 20 66\n", "ca67 20 67\n", "ca68 20 68\n", "ca69 20 69\n", "ca70 20 70\n", "ca71 20 71\n", "ca72 20 72\n", "ca73 20 73\n", "sc32 21 32\n", "sc33 21 33\n", "sc34 21 34\n", "sc35 21 35\n", "sc36 21 36\n", "sc37 21 37\n", "sc38 21 38\n", "sc39 21 39\n", "sc40 21 40\n", "sc41 21 41\n", "sc42 21 42\n", "sc43 21 43\n", "sc44 21 44\n", "sc45 21 45\n", "sc46 21 46\n", "sc47 21 47\n", "sc48 21 48\n", "sc49 21 49\n", "sc50 21 50\n", "sc51 21 51\n", "sc52 21 52\n", "sc53 21 53\n", "sc54 21 54\n", "sc55 21 55\n", "sc56 21 56\n", "sc57 21 57\n", "sc58 21 58\n", "sc59 21 59\n", "sc60 21 60\n", "sc61 21 61\n", "sc62 21 62\n", "sc63 21 63\n", "sc64 21 64\n", "sc65 21 65\n", "sc66 21 66\n", "sc67 21 67\n", "sc68 21 68\n", "sc69 21 69\n", "sc70 21 70\n", "sc71 21 71\n", "sc72 21 72\n", "sc73 21 73\n", "sc74 21 74\n", "sc75 21 75\n", "sc76 21 76\n", "ti34 22 34\n", "ti35 22 35\n", "ti36 22 36\n", "ti37 22 37\n", "ti38 22 38\n", "ti39 22 39\n", "ti40 22 40\n", "ti41 22 41\n", "ti42 22 42\n", "ti43 22 43\n", "ti44 22 44\n", "ti45 22 45\n", "ti46 22 46\n", "ti47 22 47\n", "ti48 22 48\n", "ti49 22 49\n", "ti50 22 50\n", "ti51 22 51\n", "ti52 22 52\n", "ti53 22 53\n", "ti54 22 54\n", "ti55 22 55\n", "ti56 22 56\n", "ti57 22 57\n", "ti58 22 58\n", "ti59 22 59\n", "ti60 22 60\n", "ti61 22 61\n", "ti62 22 62\n", "ti63 22 63\n", "ti64 22 64\n", "ti65 22 65\n", "ti66 22 66\n", "ti67 22 67\n", "ti68 22 68\n", "ti69 22 69\n", "ti70 22 70\n", "ti71 22 71\n", "ti72 22 72\n", "ti73 22 73\n", "ti74 22 74\n", "ti75 22 75\n", "ti76 22 76\n", "ti77 22 77\n", "ti78 22 78\n", "ti79 22 79\n", "ti80 22 80\n", "v36 23 36\n", "v37 23 37\n", "v38 23 38\n", "v39 23 39\n", "v40 23 40\n", "v41 23 41\n", "v42 23 42\n", "v43 23 43\n", "v44 23 44\n", "v45 23 45\n", "v46 23 46\n", "v47 23 47\n", "v48 23 48\n", "v49 23 49\n", "v50 23 50\n", "v51 23 51\n", "v52 23 52\n", "v53 23 53\n", "v54 23 54\n", "v55 23 55\n", "v56 23 56\n", "v57 23 57\n", "v58 23 58\n", "v59 23 59\n", "v60 23 60\n", "v61 23 61\n", "v62 23 62\n", "v63 23 63\n", "v64 23 64\n", "v65 23 65\n", "v66 23 66\n", "v67 23 67\n", "v68 23 68\n", "v69 23 69\n", "v70 23 70\n", "v71 23 71\n", "v72 23 72\n", "v73 23 73\n", "v74 23 74\n", "v75 23 75\n", "v76 23 76\n", "v77 23 77\n", "v78 23 78\n", "v79 23 79\n", "v80 23 80\n", "v81 23 81\n", "v82 23 82\n", "v83 23 83\n", "cr38 24 38\n", "cr39 24 39\n", "cr40 24 40\n", "cr41 24 41\n", "cr42 24 42\n", "cr43 24 43\n", "cr44 24 44\n", "cr45 24 45\n", "cr46 24 46\n", "cr47 24 47\n", "cr48 24 48\n", "cr49 24 49\n", "cr50 24 50\n", "cr51 24 51\n", "cr52 24 52\n", "cr53 24 53\n", "cr54 24 54\n", "cr55 24 55\n", "cr56 24 56\n", "cr57 24 57\n", "cr58 24 58\n", "cr59 24 59\n", "cr60 24 60\n", "cr61 24 61\n", "cr62 24 62\n", "cr63 24 63\n", "cr64 24 64\n", "cr65 24 65\n", "cr66 24 66\n", "cr67 24 67\n", "cr68 24 68\n", "cr69 24 69\n", "cr70 24 70\n", "cr71 24 71\n", "cr72 24 72\n", "cr73 24 73\n", "cr74 24 74\n", "cr75 24 75\n", "cr76 24 76\n", "cr77 24 77\n", "cr78 24 78\n", "cr79 24 79\n", "cr80 24 80\n", "cr81 24 81\n", "cr82 24 82\n", "cr83 24 83\n", "cr84 24 84\n", "cr85 24 85\n", "cr86 24 86\n", "mn40 25 40\n", "mn41 25 41\n", "mn42 25 42\n", "mn43 25 43\n", "mn44 25 44\n", "mn45 25 45\n", "mn46 25 46\n", "mn47 25 47\n", "mn48 25 48\n", "mn49 25 49\n", "mn50 25 50\n", "mn51 25 51\n", "mn52 25 52\n", "mn53 25 53\n", "mn54 25 54\n", "mn55 25 55\n", "mn56 25 56\n", "mn57 25 57\n", "mn58 25 58\n", "mn59 25 59\n", "mn60 25 60\n", "mn61 25 61\n", "mn62 25 62\n", "mn63 25 63\n", "mn64 25 64\n", "mn65 25 65\n", "mn66 25 66\n", "mn67 25 67\n", "mn68 25 68\n", "mn69 25 69\n", "mn70 25 70\n", "mn71 25 71\n", "mn72 25 72\n", "mn73 25 73\n", "mn74 25 74\n", "mn75 25 75\n", "mn76 25 76\n", "mn77 25 77\n", "mn78 25 78\n", "mn79 25 79\n", "mn80 25 80\n", "mn81 25 81\n", "mn82 25 82\n", "mn83 25 83\n", "mn84 25 84\n", "mn85 25 85\n", "mn86 25 86\n", "mn87 25 87\n", "mn88 25 88\n", "mn89 25 89\n", "fe42 26 42\n", "fe43 26 43\n", "fe44 26 44\n", "fe45 26 45\n", "fe46 26 46\n", "fe47 26 47\n", "fe48 26 48\n", "fe49 26 49\n", "fe50 26 50\n", "fe51 26 51\n", "fe52 26 52\n", "fe53 26 53\n", "fe54 26 54\n", "fe55 26 55\n", "fe56 26 56\n", "fe57 26 57\n", "fe58 26 58\n", "fe59 26 59\n", "fe60 26 60\n", "fe61 26 61\n", "fe62 26 62\n", "fe63 26 63\n", "fe64 26 64\n", "fe65 26 65\n", "fe66 26 66\n", "fe67 26 67\n", "fe68 26 68\n", "fe69 26 69\n", "fe70 26 70\n", "fe71 26 71\n", "fe72 26 72\n", "fe73 26 73\n", "fe74 26 74\n", "fe75 26 75\n", "fe76 26 76\n", "fe77 26 77\n", "fe78 26 78\n", "fe79 26 79\n", "fe80 26 80\n", "fe81 26 81\n", "fe82 26 82\n", "fe83 26 83\n", "fe84 26 84\n", "fe85 26 85\n", "fe86 26 86\n", "fe87 26 87\n", "fe88 26 88\n", "fe89 26 89\n", "fe90 26 90\n", "fe91 26 91\n", "fe92 26 92\n", "co44 27 44\n", "co45 27 45\n", "co46 27 46\n", "co47 27 47\n", "co48 27 48\n", "co49 27 49\n", "co50 27 50\n", "co51 27 51\n", "co52 27 52\n", "co53 27 53\n", "co54 27 54\n", "co55 27 55\n", "co56 27 56\n", "co57 27 57\n", "co58 27 58\n", "co59 27 59\n", "co60 27 60\n", "co61 27 61\n", "co62 27 62\n", "co63 27 63\n", "co64 27 64\n", "co65 27 65\n", "co66 27 66\n", "co67 27 67\n", "co68 27 68\n", "co69 27 69\n", "co70 27 70\n", "co71 27 71\n", "co72 27 72\n", "co73 27 73\n", "co74 27 74\n", "co75 27 75\n", "co76 27 76\n", "co77 27 77\n", "co78 27 78\n", "co79 27 79\n", "co80 27 80\n", "co81 27 81\n", "co82 27 82\n", "co83 27 83\n", "co84 27 84\n", "co85 27 85\n", "co86 27 86\n", "co87 27 87\n", "co88 27 88\n", "co89 27 89\n", "co90 27 90\n", "co91 27 91\n", "co92 27 92\n", "co93 27 93\n", "co94 27 94\n", "co95 27 95\n", "co96 27 96\n", "ni46 28 46\n", "ni47 28 47\n", "ni48 28 48\n", "ni49 28 49\n", "ni50 28 50\n", "ni51 28 51\n", "ni52 28 52\n", "ni53 28 53\n", "ni54 28 54\n", "ni55 28 55\n", "ni56 28 56\n", "ni57 28 57\n", "ni58 28 58\n", "ni59 28 59\n", "ni60 28 60\n", "ni61 28 61\n", "ni62 28 62\n", "ni63 28 63\n", "ni64 28 64\n", "ni65 28 65\n", "ni66 28 66\n", "ni67 28 67\n", "ni68 28 68\n", "ni69 28 69\n", "ni70 28 70\n", "ni71 28 71\n", "ni72 28 72\n", "ni73 28 73\n", "ni74 28 74\n", "ni75 28 75\n", "ni76 28 76\n", "ni77 28 77\n", "ni78 28 78\n", "ni79 28 79\n", "ni80 28 80\n", "ni81 28 81\n", "ni82 28 82\n", "ni83 28 83\n", "ni84 28 84\n", "ni85 28 85\n", "ni86 28 86\n", "ni87 28 87\n", "ni88 28 88\n", "ni89 28 89\n", "ni90 28 90\n", "ni91 28 91\n", "ni92 28 92\n", "ni93 28 93\n", "ni94 28 94\n", "ni95 28 95\n", "ni96 28 96\n", "ni97 28 97\n", "ni98 28 98\n", "ni99 28 99\n", "cu48 29 48\n", "cu49 29 49\n", "cu50 29 50\n", "cu51 29 51\n", "cu52 29 52\n", "cu53 29 53\n", "cu54 29 54\n", "cu55 29 55\n", "cu56 29 56\n", "cu57 29 57\n", "cu58 29 58\n", "cu59 29 59\n", "cu60 29 60\n", "cu61 29 61\n", "cu62 29 62\n", "cu63 29 63\n", "cu64 29 64\n", "cu65 29 65\n", "cu66 29 66\n", "cu67 29 67\n", "cu68 29 68\n", "cu69 29 69\n", "cu70 29 70\n", "cu71 29 71\n", "cu72 29 72\n", "cu73 29 73\n", "cu74 29 74\n", "cu75 29 75\n", "cu76 29 76\n", "cu77 29 77\n", "cu78 29 78\n", "cu79 29 79\n", "cu80 29 80\n", "cu81 29 81\n", "cu82 29 82\n", "cu83 29 83\n", "cu84 29 84\n", "cu85 29 85\n", "cu86 29 86\n", "cu87 29 87\n", "cu88 29 88\n", "cu89 29 89\n", "cu90 29 90\n", "cu91 29 91\n", "cu92 29 92\n", "cu93 29 93\n", "cu94 29 94\n", "cu95 29 95\n", "cu96 29 96\n", "cu97 29 97\n", "cu98 29 98\n", "cu99 29 99\n", "cu100 29 100\n", "cu101 29 101\n", "cu102 29 102\n", "zn51 30 51\n", "zn52 30 52\n", "zn53 30 53\n", "zn54 30 54\n", "zn55 30 55\n", "zn56 30 56\n", "zn57 30 57\n", "zn58 30 58\n", "zn59 30 59\n", "zn60 30 60\n", "zn61 30 61\n", "zn62 30 62\n", "zn63 30 63\n", "zn64 30 64\n", "zn65 30 65\n", "zn66 30 66\n", "zn67 30 67\n", "zn68 30 68\n", "zn69 30 69\n", "zn70 30 70\n", "zn71 30 71\n", "zn72 30 72\n", "zn73 30 73\n", "zn74 30 74\n", "zn75 30 75\n", "zn76 30 76\n", "zn77 30 77\n", "zn78 30 78\n", "zn79 30 79\n", "zn80 30 80\n", "zn81 30 81\n", "zn82 30 82\n", "zn83 30 83\n", "zn84 30 84\n", "zn85 30 85\n", "zn86 30 86\n", "zn87 30 87\n", "zn88 30 88\n", "zn89 30 89\n", "zn90 30 90\n", "zn91 30 91\n", "zn92 30 92\n", "zn93 30 93\n", "zn94 30 94\n", "zn95 30 95\n", "zn96 30 96\n", "zn97 30 97\n", "zn98 30 98\n", "zn99 30 99\n", "zn100 30 100\n", "zn101 30 101\n", "zn102 30 102\n", "zn103 30 103\n", "zn104 30 104\n", "zn105 30 105\n", "ga53 31 53\n", "ga54 31 54\n", "ga55 31 55\n", "ga56 31 56\n", "ga57 31 57\n", "ga58 31 58\n", "ga59 31 59\n", "ga60 31 60\n", "ga61 31 61\n", "ga62 31 62\n", "ga63 31 63\n", "ga64 31 64\n", "ga65 31 65\n", "ga66 31 66\n", "ga67 31 67\n", "ga68 31 68\n", "ga69 31 69\n", "ga70 31 70\n", "ga71 31 71\n", "ga72 31 72\n", "ga73 31 73\n", "ga74 31 74\n", "ga75 31 75\n", "ga76 31 76\n", "ga77 31 77\n", "ga78 31 78\n", "ga79 31 79\n", "ga80 31 80\n", "ga81 31 81\n", "ga82 31 82\n", "ga83 31 83\n", "ga84 31 84\n", "ga85 31 85\n", "ga86 31 86\n", "ga87 31 87\n", "ga88 31 88\n", "ga89 31 89\n", "ga90 31 90\n", "ga91 31 91\n", "ga92 31 92\n", "ga93 31 93\n", "ga94 31 94\n", "ga95 31 95\n", "ga96 31 96\n", "ga97 31 97\n", "ga98 31 98\n", "ga99 31 99\n", "ga100 31 100\n", "ga101 31 101\n", "ga102 31 102\n", "ga103 31 103\n", "ga104 31 104\n", "ga105 31 105\n", "ga106 31 106\n", "ga107 31 107\n", "ga108 31 108\n", "ge55 32 55\n", "ge56 32 56\n", "ge57 32 57\n", "ge58 32 58\n", "ge59 32 59\n", "ge60 32 60\n", "ge61 32 61\n", "ge62 32 62\n", "ge63 32 63\n", "ge64 32 64\n", "ge65 32 65\n", "ge66 32 66\n", "ge67 32 67\n", "ge68 32 68\n", "ge69 32 69\n", "ge70 32 70\n", "ge71 32 71\n", "ge72 32 72\n", "ge73 32 73\n", "ge74 32 74\n", "ge75 32 75\n", "ge76 32 76\n", "ge77 32 77\n", "ge78 32 78\n", "ge79 32 79\n", "ge80 32 80\n", "ge81 32 81\n", "ge82 32 82\n", "ge83 32 83\n", "ge84 32 84\n", "ge85 32 85\n", "ge86 32 86\n", "ge87 32 87\n", "ge88 32 88\n", "ge89 32 89\n", "ge90 32 90\n", "ge91 32 91\n", "ge92 32 92\n", "ge93 32 93\n", "ge94 32 94\n", "ge95 32 95\n", "ge96 32 96\n", "ge97 32 97\n", "ge98 32 98\n", "ge99 32 99\n", "ge100 32 100\n", "ge101 32 101\n", "ge102 32 102\n", "ge103 32 103\n", "ge104 32 104\n", "ge105 32 105\n", "ge106 32 106\n", "ge107 32 107\n", "ge108 32 108\n", "ge109 32 109\n", "ge110 32 110\n", "ge111 32 111\n", "ge112 32 112\n", "as57 33 57\n", "as58 33 58\n", "as59 33 59\n", "as60 33 60\n", "as61 33 61\n", "as62 33 62\n", "as63 33 63\n", "as64 33 64\n", "as65 33 65\n", "as66 33 66\n", "as67 33 67\n", "as68 33 68\n", "as69 33 69\n", "as70 33 70\n", "as71 33 71\n", "as72 33 72\n", "as73 33 73\n", "as74 33 74\n", "as75 33 75\n", "as76 33 76\n", "as77 33 77\n", "as78 33 78\n", "as79 33 79\n", "as80 33 80\n", "as81 33 81\n", "as82 33 82\n", "as83 33 83\n", "as84 33 84\n", "as85 33 85\n", "as86 33 86\n", "as87 33 87\n", "as88 33 88\n", "as89 33 89\n", "as90 33 90\n", "as91 33 91\n", "as92 33 92\n", "as93 33 93\n", "as94 33 94\n", "as95 33 95\n", "as96 33 96\n", "as97 33 97\n", "as98 33 98\n", "as99 33 99\n", "as100 33 100\n", "as101 33 101\n", "as102 33 102\n", "as103 33 103\n", "as104 33 104\n", "as105 33 105\n", "as106 33 106\n", "as107 33 107\n", "as108 33 108\n", "as109 33 109\n", "as110 33 110\n", "as111 33 111\n", "as112 33 112\n", "as113 33 113\n", "as114 33 114\n", "as115 33 115\n", "se59 34 59\n", "se60 34 60\n", "se61 34 61\n", "se62 34 62\n", "se63 34 63\n", "se64 34 64\n", "se65 34 65\n", "se66 34 66\n", "se67 34 67\n", "se68 34 68\n", "se69 34 69\n", "se70 34 70\n", "se71 34 71\n", "se72 34 72\n", "se73 34 73\n", "se74 34 74\n", "se75 34 75\n", "se76 34 76\n", "se77 34 77\n", "se78 34 78\n", "se79 34 79\n", "se80 34 80\n", "se81 34 81\n", "se82 34 82\n", "se83 34 83\n", "se84 34 84\n", "se85 34 85\n", "se86 34 86\n", "se87 34 87\n", "se88 34 88\n", "se89 34 89\n", "se90 34 90\n", "se91 34 91\n", "se92 34 92\n", "se93 34 93\n", "se94 34 94\n", "se95 34 95\n", "se96 34 96\n", "se97 34 97\n", "se98 34 98\n", "se99 34 99\n", "se100 34 100\n", "se101 34 101\n", "se102 34 102\n", "se103 34 103\n", "se104 34 104\n", "se105 34 105\n", "se106 34 106\n", "se107 34 107\n", "se108 34 108\n", "se109 34 109\n", "se110 34 110\n", "se111 34 111\n", "se112 34 112\n", "se113 34 113\n", "se114 34 114\n", "se115 34 115\n", "se116 34 116\n", "se117 34 117\n", "se118 34 118\n", "br61 35 61\n", "br62 35 62\n", "br63 35 63\n", "br64 35 64\n", "br65 35 65\n", "br66 35 66\n", "br67 35 67\n", "br68 35 68\n", "br69 35 69\n", "br70 35 70\n", "br71 35 71\n", "br72 35 72\n", "br73 35 73\n", "br74 35 74\n", "br75 35 75\n", "br76 35 76\n", "br77 35 77\n", "br78 35 78\n", "br79 35 79\n", "br80 35 80\n", "br81 35 81\n", "br82 35 82\n", "br83 35 83\n", "br84 35 84\n", "br85 35 85\n", "br86 35 86\n", "br87 35 87\n", "br88 35 88\n", "br89 35 89\n", "br90 35 90\n", "br91 35 91\n", "br92 35 92\n", "br93 35 93\n", "br94 35 94\n", "br95 35 95\n", "br96 35 96\n", "br97 35 97\n", "br98 35 98\n", "br99 35 99\n", "br100 35 100\n", "br101 35 101\n", "br102 35 102\n", "br103 35 103\n", "br104 35 104\n", "br105 35 105\n", "br106 35 106\n", "br107 35 107\n", "br108 35 108\n", "br109 35 109\n", "br110 35 110\n", "br111 35 111\n", "br112 35 112\n", "br113 35 113\n", "br114 35 114\n", "br115 35 115\n", "br116 35 116\n", "br117 35 117\n", "br118 35 118\n", "br119 35 119\n", "br120 35 120\n", "br121 35 121\n", "kr63 36 63\n", "kr64 36 64\n", "kr65 36 65\n", "kr66 36 66\n", "kr67 36 67\n", "kr68 36 68\n", "kr69 36 69\n", "kr70 36 70\n", "kr71 36 71\n", "kr72 36 72\n", "kr73 36 73\n", "kr74 36 74\n", "kr75 36 75\n", "kr76 36 76\n", "kr77 36 77\n", "kr78 36 78\n", "kr79 36 79\n", "kr80 36 80\n", "kr81 36 81\n", "kr82 36 82\n", "kr83 36 83\n", "kr84 36 84\n", "kr85 36 85\n", "kr86 36 86\n", "kr87 36 87\n", "kr88 36 88\n", "kr89 36 89\n", "kr90 36 90\n", "kr91 36 91\n", "kr92 36 92\n", "kr93 36 93\n", "kr94 36 94\n", "kr95 36 95\n", "kr96 36 96\n", "kr97 36 97\n", "kr98 36 98\n", "kr99 36 99\n", "kr100 36 100\n", "kr101 36 101\n", "kr102 36 102\n", "kr103 36 103\n", "kr104 36 104\n", "kr105 36 105\n", "kr106 36 106\n", "kr107 36 107\n", "kr108 36 108\n", "kr109 36 109\n", "kr110 36 110\n", "kr111 36 111\n", "kr112 36 112\n", "kr113 36 113\n", "kr114 36 114\n", "kr115 36 115\n", "kr116 36 116\n", "kr117 36 117\n", "kr118 36 118\n", "kr119 36 119\n", "kr120 36 120\n", "kr121 36 121\n", "kr122 36 122\n", "kr123 36 123\n", "kr124 36 124\n", "rb66 37 66\n", "rb67 37 67\n", "rb68 37 68\n", "rb69 37 69\n", "rb70 37 70\n", "rb71 37 71\n", "rb72 37 72\n", "rb73 37 73\n", "rb74 37 74\n", "rb75 37 75\n", "rb76 37 76\n", "rb77 37 77\n", "rb78 37 78\n", "rb79 37 79\n", "rb80 37 80\n", "rb81 37 81\n", "rb82 37 82\n", "rb83 37 83\n", "rb84 37 84\n", "rb85 37 85\n", "rb86 37 86\n", "rb87 37 87\n", "rb88 37 88\n", "rb89 37 89\n", "rb90 37 90\n", "rb91 37 91\n", "rb92 37 92\n", "rb93 37 93\n", "rb94 37 94\n", "rb95 37 95\n", "rb96 37 96\n", "rb97 37 97\n", "rb98 37 98\n", "rb99 37 99\n", "rb100 37 100\n", "rb101 37 101\n", "rb102 37 102\n", "rb103 37 103\n", "rb104 37 104\n", "rb105 37 105\n", "rb106 37 106\n", "rb107 37 107\n", "rb108 37 108\n", "rb109 37 109\n", "rb110 37 110\n", "rb111 37 111\n", "rb112 37 112\n", "rb113 37 113\n", "rb114 37 114\n", "rb115 37 115\n", "rb116 37 116\n", "rb117 37 117\n", "rb118 37 118\n", "rb119 37 119\n", "rb120 37 120\n", "rb121 37 121\n", "rb122 37 122\n", "rb123 37 123\n", "rb124 37 124\n", "rb125 37 125\n", "rb126 37 126\n", "rb127 37 127\n", "rb128 37 128\n", "sr68 38 68\n", "sr69 38 69\n", "sr70 38 70\n", "sr71 38 71\n", "sr72 38 72\n", "sr73 38 73\n", "sr74 38 74\n", "sr75 38 75\n", "sr76 38 76\n", "sr77 38 77\n", "sr78 38 78\n", "sr79 38 79\n", "sr80 38 80\n", "sr81 38 81\n", "sr82 38 82\n", "sr83 38 83\n", "sr84 38 84\n", "sr85 38 85\n", "sr86 38 86\n", "sr87 38 87\n", "sr88 38 88\n", "sr89 38 89\n", "sr90 38 90\n", "sr91 38 91\n", "sr92 38 92\n", "sr93 38 93\n", "sr94 38 94\n", "sr95 38 95\n", "sr96 38 96\n", "sr97 38 97\n", "sr98 38 98\n", "sr99 38 99\n", "sr100 38 100\n", "sr101 38 101\n", "sr102 38 102\n", "sr103 38 103\n", "sr104 38 104\n", "sr105 38 105\n", "sr106 38 106\n", "sr107 38 107\n", "sr108 38 108\n", "sr109 38 109\n", "sr110 38 110\n", "sr111 38 111\n", "sr112 38 112\n", "sr113 38 113\n", "sr114 38 114\n", "sr115 38 115\n", "sr116 38 116\n", "sr117 38 117\n", "sr118 38 118\n", "sr119 38 119\n", "sr120 38 120\n", "sr121 38 121\n", "sr122 38 122\n", "sr123 38 123\n", "sr124 38 124\n", "sr125 38 125\n", "sr126 38 126\n", "sr127 38 127\n", "sr128 38 128\n", "sr129 38 129\n", "sr130 38 130\n", "sr131 38 131\n", "y70 39 70\n", "y71 39 71\n", "y72 39 72\n", "y73 39 73\n", "y74 39 74\n", "y75 39 75\n", "y76 39 76\n", "y77 39 77\n", "y78 39 78\n", "y79 39 79\n", "y80 39 80\n", "y81 39 81\n", "y82 39 82\n", "y83 39 83\n", "y84 39 84\n", "y85 39 85\n", "y86 39 86\n", "y87 39 87\n", "y88 39 88\n", "y89 39 89\n", "y90 39 90\n", "y91 39 91\n", "y92 39 92\n", "y93 39 93\n", "y94 39 94\n", "y95 39 95\n", "y96 39 96\n", "y97 39 97\n", "y98 39 98\n", "y99 39 99\n", "y100 39 100\n", "y101 39 101\n", "y102 39 102\n", "y103 39 103\n", "y104 39 104\n", "y105 39 105\n", "y106 39 106\n", "y107 39 107\n", "y108 39 108\n", "y109 39 109\n", "y110 39 110\n", "y111 39 111\n", "y112 39 112\n", "y113 39 113\n", "y114 39 114\n", "y115 39 115\n", "y116 39 116\n", "y117 39 117\n", "y118 39 118\n", "y119 39 119\n", "y120 39 120\n", "y121 39 121\n", "y122 39 122\n", "y123 39 123\n", "y124 39 124\n", "y125 39 125\n", "y126 39 126\n", "y127 39 127\n", "y128 39 128\n", "y129 39 129\n", "y130 39 130\n", "y131 39 131\n", "y132 39 132\n", "y133 39 133\n", "y134 39 134\n", "zr72 40 72\n", "zr73 40 73\n", "zr74 40 74\n", "zr75 40 75\n", "zr76 40 76\n", "zr77 40 77\n", "zr78 40 78\n", "zr79 40 79\n", "zr80 40 80\n", "zr81 40 81\n", "zr82 40 82\n", "zr83 40 83\n", "zr84 40 84\n", "zr85 40 85\n", "zr86 40 86\n", "zr87 40 87\n", "zr88 40 88\n", "zr89 40 89\n", "zr90 40 90\n", "zr91 40 91\n", "zr92 40 92\n", "zr93 40 93\n", "zr94 40 94\n", "zr95 40 95\n", "zr96 40 96\n", "zr97 40 97\n", "zr98 40 98\n", "zr99 40 99\n", "zr100 40 100\n", "zr101 40 101\n", "zr102 40 102\n", "zr103 40 103\n", "zr104 40 104\n", "zr105 40 105\n", "zr106 40 106\n", "zr107 40 107\n", "zr108 40 108\n", "zr109 40 109\n", "zr110 40 110\n", "zr111 40 111\n", "zr112 40 112\n", "zr113 40 113\n", "zr114 40 114\n", "zr115 40 115\n", "zr116 40 116\n", "zr117 40 117\n", "zr118 40 118\n", "zr119 40 119\n", "zr120 40 120\n", "zr121 40 121\n", "zr122 40 122\n", "zr123 40 123\n", "zr124 40 124\n", "zr125 40 125\n", "zr126 40 126\n", "zr127 40 127\n", "zr128 40 128\n", "zr129 40 129\n", "zr130 40 130\n", "zr131 40 131\n", "zr132 40 132\n", "zr133 40 133\n", "zr134 40 134\n", "zr135 40 135\n", "zr136 40 136\n", "zr137 40 137\n", "nb74 41 74\n", "nb75 41 75\n", "nb76 41 76\n", "nb77 41 77\n", "nb78 41 78\n", "nb79 41 79\n", "nb80 41 80\n", "nb81 41 81\n", "nb82 41 82\n", "nb83 41 83\n", "nb84 41 84\n", "nb85 41 85\n", "nb86 41 86\n", "nb87 41 87\n", "nb88 41 88\n", "nb89 41 89\n", "nb90 41 90\n", "nb91 41 91\n", "nb92 41 92\n", "nb93 41 93\n", "nb94 41 94\n", "nb95 41 95\n", "nb96 41 96\n", "nb97 41 97\n", "nb98 41 98\n", "nb99 41 99\n", "nb100 41 100\n", "nb101 41 101\n", "nb102 41 102\n", "nb103 41 103\n", "nb104 41 104\n", "nb105 41 105\n", "nb106 41 106\n", "nb107 41 107\n", "nb108 41 108\n", "nb109 41 109\n", "nb110 41 110\n", "nb111 41 111\n", "nb112 41 112\n", "nb113 41 113\n", "nb114 41 114\n", "nb115 41 115\n", "nb116 41 116\n", "nb117 41 117\n", "nb118 41 118\n", "nb119 41 119\n", "nb120 41 120\n", "nb121 41 121\n", "nb122 41 122\n", "nb123 41 123\n", "nb124 41 124\n", "nb125 41 125\n", "nb126 41 126\n", "nb127 41 127\n", "nb128 41 128\n", "nb129 41 129\n", "nb130 41 130\n", "nb131 41 131\n", "nb132 41 132\n", "nb133 41 133\n", "nb134 41 134\n", "nb135 41 135\n", "nb136 41 136\n", "nb137 41 137\n", "nb138 41 138\n", "nb139 41 139\n", "nb140 41 140\n", "mo77 42 77\n", "mo78 42 78\n", "mo79 42 79\n", "mo80 42 80\n", "mo81 42 81\n", "mo82 42 82\n", "mo83 42 83\n", "mo84 42 84\n", "mo85 42 85\n", "mo86 42 86\n", "mo87 42 87\n", "mo88 42 88\n", "mo89 42 89\n", "mo90 42 90\n", "mo91 42 91\n", "mo92 42 92\n", "mo93 42 93\n", "mo94 42 94\n", "mo95 42 95\n", "mo96 42 96\n", "mo97 42 97\n", "mo98 42 98\n", "mo99 42 99\n", "mo100 42 100\n", "mo101 42 101\n", "mo102 42 102\n", "mo103 42 103\n", "mo104 42 104\n", "mo105 42 105\n", "mo106 42 106\n", "mo107 42 107\n", "mo108 42 108\n", "mo109 42 109\n", "mo110 42 110\n", "mo111 42 111\n", "mo112 42 112\n", "mo113 42 113\n", "mo114 42 114\n", "mo115 42 115\n", "mo116 42 116\n", "mo117 42 117\n", "mo118 42 118\n", "mo119 42 119\n", "mo120 42 120\n", "mo121 42 121\n", "mo122 42 122\n", "mo123 42 123\n", "mo124 42 124\n", "mo125 42 125\n", "mo126 42 126\n", "mo127 42 127\n", "mo128 42 128\n", "mo129 42 129\n", "mo130 42 130\n", "mo131 42 131\n", "mo132 42 132\n", "mo133 42 133\n", "mo134 42 134\n", "mo135 42 135\n", "mo136 42 136\n", "mo137 42 137\n", "mo138 42 138\n", "mo139 42 139\n", "mo140 42 140\n", "mo141 42 141\n", "mo142 42 142\n", "mo143 42 143\n", "mo144 42 144\n", "tc79 43 79\n", "tc80 43 80\n", "tc81 43 81\n", "tc82 43 82\n", "tc83 43 83\n", "tc84 43 84\n", "tc85 43 85\n", "tc86 43 86\n", "tc87 43 87\n", "tc88 43 88\n", "tc89 43 89\n", "tc90 43 90\n", "tc91 43 91\n", "tc92 43 92\n", "tc93 43 93\n", "tc94 43 94\n", "tc95 43 95\n", "tc96 43 96\n", "tc97 43 97\n", "tc98 43 98\n", "tc99 43 99\n", "tc100 43 100\n", "tc101 43 101\n", "tc102 43 102\n", "tc103 43 103\n", "tc104 43 104\n", "tc105 43 105\n", "tc106 43 106\n", "tc107 43 107\n", "tc108 43 108\n", "tc109 43 109\n", "tc110 43 110\n", "tc111 43 111\n", "tc112 43 112\n", "tc113 43 113\n", "tc114 43 114\n", "tc115 43 115\n", "tc116 43 116\n", "tc117 43 117\n", "tc118 43 118\n", "tc119 43 119\n", "tc120 43 120\n", "tc121 43 121\n", "tc122 43 122\n", "tc123 43 123\n", "tc124 43 124\n", "tc125 43 125\n", "tc126 43 126\n", "tc127 43 127\n", "tc128 43 128\n", "tc129 43 129\n", "tc130 43 130\n", "tc131 43 131\n", "tc132 43 132\n", "tc133 43 133\n", "tc134 43 134\n", "tc135 43 135\n", "tc136 43 136\n", "tc137 43 137\n", "tc138 43 138\n", "tc139 43 139\n", "tc140 43 140\n", "tc141 43 141\n", "tc142 43 142\n", "tc143 43 143\n", "tc144 43 144\n", "tc145 43 145\n", "tc146 43 146\n", "tc147 43 147\n", "ru81 44 81\n", "ru82 44 82\n", "ru83 44 83\n", "ru84 44 84\n", "ru85 44 85\n", "ru86 44 86\n", "ru87 44 87\n", "ru88 44 88\n", "ru89 44 89\n", "ru90 44 90\n", "ru91 44 91\n", "ru92 44 92\n", "ru93 44 93\n", "ru94 44 94\n", "ru95 44 95\n", "ru96 44 96\n", "ru97 44 97\n", "ru98 44 98\n", "ru99 44 99\n", "ru100 44 100\n", "ru101 44 101\n", "ru102 44 102\n", "ru103 44 103\n", "ru104 44 104\n", "ru105 44 105\n", "ru106 44 106\n", "ru107 44 107\n", "ru108 44 108\n", "ru109 44 109\n", "ru110 44 110\n", "ru111 44 111\n", "ru112 44 112\n", "ru113 44 113\n", "ru114 44 114\n", "ru115 44 115\n", "ru116 44 116\n", "ru117 44 117\n", "ru118 44 118\n", "ru119 44 119\n", "ru120 44 120\n", "ru121 44 121\n", "ru122 44 122\n", "ru123 44 123\n", "ru124 44 124\n", "ru125 44 125\n", "ru126 44 126\n", "ru127 44 127\n", "ru128 44 128\n", "ru129 44 129\n", "ru130 44 130\n", "ru131 44 131\n", "ru132 44 132\n", "ru133 44 133\n", "ru134 44 134\n", "ru135 44 135\n", "ru136 44 136\n", "ru137 44 137\n", "ru138 44 138\n", "ru139 44 139\n", "ru140 44 140\n", "ru141 44 141\n", "ru142 44 142\n", "ru143 44 143\n", "ru144 44 144\n", "ru145 44 145\n", "ru146 44 146\n", "ru147 44 147\n", "ru148 44 148\n", "ru149 44 149\n", "ru150 44 150\n", "rh83 45 83\n", "rh84 45 84\n", "rh85 45 85\n", "rh86 45 86\n", "rh87 45 87\n", "rh88 45 88\n", "rh89 45 89\n", "rh90 45 90\n", "rh91 45 91\n", "rh92 45 92\n", "rh93 45 93\n", "rh94 45 94\n", "rh95 45 95\n", "rh96 45 96\n", "rh97 45 97\n", "rh98 45 98\n", "rh99 45 99\n", "rh100 45 100\n", "rh101 45 101\n", "rh102 45 102\n", "rh103 45 103\n", "rh104 45 104\n", "rh105 45 105\n", "rh106 45 106\n", "rh107 45 107\n", "rh108 45 108\n", "rh109 45 109\n", "rh110 45 110\n", "rh111 45 111\n", "rh112 45 112\n", "rh113 45 113\n", "rh114 45 114\n", "rh115 45 115\n", "rh116 45 116\n", "rh117 45 117\n", "rh118 45 118\n", "rh119 45 119\n", "rh120 45 120\n", "rh121 45 121\n", "rh122 45 122\n", "rh123 45 123\n", "rh124 45 124\n", "rh125 45 125\n", "rh126 45 126\n", "rh127 45 127\n", "rh128 45 128\n", "rh129 45 129\n", "rh130 45 130\n", "rh131 45 131\n", "rh132 45 132\n", "rh133 45 133\n", "rh134 45 134\n", "rh135 45 135\n", "rh136 45 136\n", "rh137 45 137\n", "rh138 45 138\n", "rh139 45 139\n", "rh140 45 140\n", "rh141 45 141\n", "rh142 45 142\n", "rh143 45 143\n", "rh144 45 144\n", "rh145 45 145\n", "rh146 45 146\n", "rh147 45 147\n", "rh148 45 148\n", "rh149 45 149\n", "rh150 45 150\n", "rh151 45 151\n", "rh152 45 152\n", "rh153 45 153\n", "pd86 46 86\n", "pd87 46 87\n", "pd88 46 88\n", "pd89 46 89\n", "pd90 46 90\n", "pd91 46 91\n", "pd92 46 92\n", "pd93 46 93\n", "pd94 46 94\n", "pd95 46 95\n", "pd96 46 96\n", "pd97 46 97\n", "pd98 46 98\n", "pd99 46 99\n", "pd100 46 100\n", "pd101 46 101\n", "pd102 46 102\n", "pd103 46 103\n", "pd104 46 104\n", "pd105 46 105\n", "pd106 46 106\n", "pd107 46 107\n", "pd108 46 108\n", "pd109 46 109\n", "pd110 46 110\n", "pd111 46 111\n", "pd112 46 112\n", "pd113 46 113\n", "pd114 46 114\n", "pd115 46 115\n", "pd116 46 116\n", "pd117 46 117\n", "pd118 46 118\n", "pd119 46 119\n", "pd120 46 120\n", "pd121 46 121\n", "pd122 46 122\n", "pd123 46 123\n", "pd124 46 124\n", "pd125 46 125\n", "pd126 46 126\n", "pd127 46 127\n", "pd128 46 128\n", "pd129 46 129\n", "pd130 46 130\n", "pd131 46 131\n", "pd132 46 132\n", "pd133 46 133\n", "pd134 46 134\n", "pd135 46 135\n", "pd136 46 136\n", "pd137 46 137\n", "pd138 46 138\n", "pd139 46 139\n", "pd140 46 140\n", "pd141 46 141\n", "pd142 46 142\n", "pd143 46 143\n", "pd144 46 144\n", "pd145 46 145\n", "pd146 46 146\n", "pd147 46 147\n", "pd148 46 148\n", "pd149 46 149\n", "pd150 46 150\n", "pd151 46 151\n", "pd152 46 152\n", "pd153 46 153\n", "pd154 46 154\n", "pd155 46 155\n", "pd156 46 156\n", "ag88 47 88\n", "ag89 47 89\n", "ag90 47 90\n", "ag91 47 91\n", "ag92 47 92\n", "ag93 47 93\n", "ag94 47 94\n", "ag95 47 95\n", "ag96 47 96\n", "ag97 47 97\n", "ag98 47 98\n", "ag99 47 99\n", "ag100 47 100\n", "ag101 47 101\n", "ag102 47 102\n", "ag103 47 103\n", "ag104 47 104\n", "ag105 47 105\n", "ag106 47 106\n", "ag107 47 107\n", "ag108 47 108\n", "ag109 47 109\n", "ag110 47 110\n", "ag111 47 111\n", "ag112 47 112\n", "ag113 47 113\n", "ag114 47 114\n", "ag115 47 115\n", "ag116 47 116\n", "ag117 47 117\n", "ag118 47 118\n", "ag119 47 119\n", "ag120 47 120\n", "ag121 47 121\n", "ag122 47 122\n", "ag123 47 123\n", "ag124 47 124\n", "ag125 47 125\n", "ag126 47 126\n", "ag127 47 127\n", "ag128 47 128\n", "ag129 47 129\n", "ag130 47 130\n", "ag131 47 131\n", "ag132 47 132\n", "ag133 47 133\n", "ag134 47 134\n", "ag135 47 135\n", "ag136 47 136\n", "ag137 47 137\n", "ag138 47 138\n", "ag139 47 139\n", "ag140 47 140\n", "ag141 47 141\n", "ag142 47 142\n", "ag143 47 143\n", "ag144 47 144\n", "ag145 47 145\n", "ag146 47 146\n", "ag147 47 147\n", "ag148 47 148\n", "ag149 47 149\n", "ag150 47 150\n", "ag151 47 151\n", "ag152 47 152\n", "ag153 47 153\n", "ag154 47 154\n", "ag155 47 155\n", "ag156 47 156\n", "ag157 47 157\n", "ag158 47 158\n", "ag159 47 159\n", "ag160 47 160\n", "cd90 48 90\n", "cd91 48 91\n", "cd92 48 92\n", "cd93 48 93\n", "cd94 48 94\n", "cd95 48 95\n", "cd96 48 96\n", "cd97 48 97\n", "cd98 48 98\n", "cd99 48 99\n", "cd100 48 100\n", "cd101 48 101\n", "cd102 48 102\n", "cd103 48 103\n", "cd104 48 104\n", "cd105 48 105\n", "cd106 48 106\n", "cd107 48 107\n", "cd108 48 108\n", "cd109 48 109\n", "cd110 48 110\n", "cd111 48 111\n", "cd112 48 112\n", "cd113 48 113\n", "cd114 48 114\n", "cd115 48 115\n", "cd116 48 116\n", "cd117 48 117\n", "cd118 48 118\n", "cd119 48 119\n", "cd120 48 120\n", "cd121 48 121\n", "cd122 48 122\n", "cd123 48 123\n", "cd124 48 124\n", "cd125 48 125\n", "cd126 48 126\n", "cd127 48 127\n", "cd128 48 128\n", "cd129 48 129\n", "cd130 48 130\n", "cd131 48 131\n", "cd132 48 132\n", "cd133 48 133\n", "cd134 48 134\n", "cd135 48 135\n", "cd136 48 136\n", "cd137 48 137\n", "cd138 48 138\n", "cd139 48 139\n", "cd140 48 140\n", "cd141 48 141\n", "cd142 48 142\n", "cd143 48 143\n", "cd144 48 144\n", "cd145 48 145\n", "cd146 48 146\n", "cd147 48 147\n", "cd148 48 148\n", "cd149 48 149\n", "cd150 48 150\n", "cd151 48 151\n", "cd152 48 152\n", "cd153 48 153\n", "cd154 48 154\n", "cd155 48 155\n", "cd156 48 156\n", "cd157 48 157\n", "cd158 48 158\n", "cd159 48 159\n", "cd160 48 160\n", "cd161 48 161\n", "cd162 48 162\n", "cd163 48 163\n", "in92 49 92\n", "in93 49 93\n", "in94 49 94\n", "in95 49 95\n", "in96 49 96\n", "in97 49 97\n", "in98 49 98\n", "in99 49 99\n", "in100 49 100\n", "in101 49 101\n", "in102 49 102\n", "in103 49 103\n", "in104 49 104\n", "in105 49 105\n", "in106 49 106\n", "in107 49 107\n", "in108 49 108\n", "in109 49 109\n", "in110 49 110\n", "in111 49 111\n", "in112 49 112\n", "in113 49 113\n", "in114 49 114\n", "in115 49 115\n", "in116 49 116\n", "in117 49 117\n", "in118 49 118\n", "in119 49 119\n", "in120 49 120\n", "in121 49 121\n", "in122 49 122\n", "in123 49 123\n", "in124 49 124\n", "in125 49 125\n", "in126 49 126\n", "in127 49 127\n", "in128 49 128\n", "in129 49 129\n", "in130 49 130\n", "in131 49 131\n", "in132 49 132\n", "in133 49 133\n", "in134 49 134\n", "in135 49 135\n", "in136 49 136\n", "in137 49 137\n", "in138 49 138\n", "in139 49 139\n", "in140 49 140\n", "in141 49 141\n", "in142 49 142\n", "in143 49 143\n", "in144 49 144\n", "in145 49 145\n", "in146 49 146\n", "in147 49 147\n", "in148 49 148\n", "in149 49 149\n", "in150 49 150\n", "in151 49 151\n", "in152 49 152\n", "in153 49 153\n", "in154 49 154\n", "in155 49 155\n", "in156 49 156\n", "in157 49 157\n", "in158 49 158\n", "in159 49 159\n", "in160 49 160\n", "in161 49 161\n", "in162 49 162\n", "in163 49 163\n", "in164 49 164\n", "in165 49 165\n", "in166 49 166\n", "sn94 50 94\n", "sn95 50 95\n", "sn96 50 96\n", "sn97 50 97\n", "sn98 50 98\n", "sn99 50 99\n", "sn100 50 100\n", "sn101 50 101\n", "sn102 50 102\n", "sn103 50 103\n", "sn104 50 104\n", "sn105 50 105\n", "sn106 50 106\n", "sn107 50 107\n", "sn108 50 108\n", "sn109 50 109\n", "sn110 50 110\n", "sn111 50 111\n", "sn112 50 112\n", "sn113 50 113\n", "sn114 50 114\n", "sn115 50 115\n", "sn116 50 116\n", "sn117 50 117\n", "sn118 50 118\n", "sn119 50 119\n", "sn120 50 120\n", "sn121 50 121\n", "sn122 50 122\n", "sn123 50 123\n", "sn124 50 124\n", "sn125 50 125\n", "sn126 50 126\n", "sn127 50 127\n", "sn128 50 128\n", "sn129 50 129\n", "sn130 50 130\n", "sn131 50 131\n", "sn132 50 132\n", "sn133 50 133\n", "sn134 50 134\n", "sn135 50 135\n", "sn136 50 136\n", "sn137 50 137\n", "sn138 50 138\n", "sn139 50 139\n", "sn140 50 140\n", "sn141 50 141\n", "sn142 50 142\n", "sn143 50 143\n", "sn144 50 144\n", "sn145 50 145\n", "sn146 50 146\n", "sn147 50 147\n", "sn148 50 148\n", "sn149 50 149\n", "sn150 50 150\n", "sn151 50 151\n", "sn152 50 152\n", "sn153 50 153\n", "sn154 50 154\n", "sn155 50 155\n", "sn156 50 156\n", "sn157 50 157\n", "sn158 50 158\n", "sn159 50 159\n", "sn160 50 160\n", "sn161 50 161\n", "sn162 50 162\n", "sn163 50 163\n", "sn164 50 164\n", "sn165 50 165\n", "sn166 50 166\n", "sn167 50 167\n", "sn168 50 168\n", "sn169 50 169\n", "n 0 1\n", "h1 1 1\n", "he4 2 4\n", "ubb330 122 330\n" ] } ], "source": [ "wx.validate('extended_nuclear_data.xml')\n", "xml = wx.Xml('extended_nuclear_data.xml')\n", "extended_nuclides = xml.get_nuclide_data()\n", "for nuc in extended_nuclides:\n", " print(nuc, extended_nuclides[nuc]['z'], extended_nuclides[nuc]['a'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create new nuclide data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To create new nuclide XML data, first create a nuclide data dictionary:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "nuclides = {}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now add species:" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "t9 = [1,2,3,4]\n", "partf = [1,4,9,16]\n", "nuclides['new1'] = {'z': 13, 'a': 26, 'state': 'g', 'source': 'wn_tutorial', 'mass excess': -12.2101, 'spin': 5, 't9': t9, 'partf': partf}\n", "t9 = [1,2,3,4]\n", "partf = [1,8,27,64]\n", "nuclides['new2'] = {'z': 13, 'a': 26, 'state': 'm', 'source': 'wn_tutorial', 'mass excess': -11.9818, 'spin': 0, 't9': t9, 'partf': partf}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create the new XML, set the data, write out the XML, read in the XML, and print out the nuclide data:" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "al26g 13 26\n", "al26m 13 26\n" ] } ], "source": [ "new_xml = wx.New_Xml(xml_type='nuclear_data')\n", "new_xml.set_nuclide_data(nuclides)\n", "new_xml.write('new_nuclear_data.xml')\n", "xml = wx.Xml('new_nuclear_data.xml')\n", "new_nuclides = xml.get_nuclide_data()\n", "for nuc in new_nuclides:\n", " print(nuc, new_nuclides[nuc]['z'], new_nuclides[nuc]['a'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This shows the two species in the new XML file." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Reaction XML Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create new reaction XML analogously to creating new nuclide XML. Update an existing reaction data dictionary or create a new one, create a new reaction XML object, set the data in the object, and write to XML." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Extract a subset of reaction data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To extract a subset of reaction data, first retrieve the data and get the data subset with XPath by typing" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "old_xml = wx.Xml('my_output1.xml')\n", "reactions = old_xml.get_reaction_data(\"[not(reactant = 'kr85') and not(product = 'kr85')]\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The reactions data includes all reactions in the old data set except those involving kr85. Now create and write to XML:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "subset_xml = wx.New_Xml(xml_type='reaction_data')\n", "subset_xml.set_reaction_data(reactions)\n", "subset_xml.write('subset_reaction_data.xml')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One can now validate and read in the data:" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "wx.validate('subset_reaction_data.xml')\n", "xml = wx.Xml('subset_reaction_data.xml')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now check that the kr85 reactions have been excluded:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "From the old XML file:\n", "\n", "br85 -> kr85 + electron + anti-neutrino_e\n", "h1 + br85 -> n + kr85\n", "kr85 -> rb85 + electron + anti-neutrino_e\n", "n + kr85 -> kr86 + gamma\n", "h1 + kr85 -> rb86 + gamma\n", "h1 + kr85 -> he4 + br82\n", "he4 + kr85 -> n + sr88\n", "he4 + se81 -> kr85 + gamma\n", "he4 + kr85 -> sr89 + gamma\n", "h1 + br84 -> kr85 + gamma\n", "h1 + rb88 -> he4 + kr85\n", "n + kr84 -> kr85 + gamma\n", "n + kr85 -> he4 + se82\n", "n + rb85 -> h1 + kr85\n", "\n", "From the new XML file:\n", "\n" ] } ], "source": [ "old_kr85 = old_xml.get_reaction_data(\"[reactant = 'kr85' or product = 'kr85']\")\n", "new_kr85 = xml.get_reaction_data(\"[reactant = 'kr85' or product = 'kr85']\")\n", "\n", "print('From the old XML file:\\n')\n", "for reaction in old_kr85:\n", " print(reaction)\n", " \n", "print('\\nFrom the new XML file:\\n')\n", "for reaction in new_kr85:\n", " print(reaction)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The old XML data file includes reactions involving kr85 but the new one does not." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Update existing reaction data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To update existing data, retrieve the reaction data by typing" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "reactions = old_xml.get_reaction_data()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*reactions* is a dictionary with an entry for each reaction chosen by the input XPath expression. The above call selects all reactions. Each entry in the dictionary is itself an instance of the **wnutils.xml.Reaction** class containing data for the reaction. To see an example of the data, type" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['n', 'f19']\n", "['f20', 'gamma']\n", "ka02\n", "{'type': 'non_smoker_fit', 'fits': [{'note': 'n0', 'spint': 0.0, 'spinf': 0.0, 'TlowHf': 0.01, 'Tlowfit': 0.01, 'Thighfit': 10.0, 'acc': 0.0, 'a1': 12.2698, 'a2': 0.0, 'a3': 0.0, 'a4': 0.0, 'a5': 0.0, 'a6': 0.0, 'a7': 1.0, 'a8': 0.0}, {'note': 'r1', 'spint': 0.0, 'spinf': 0.0, 'TlowHf': 0.01, 'Tlowfit': 0.01, 'Thighfit': 10.0, 'acc': 0.0, 'a1': 12.0709, 'a2': -0.301717, 'a3': 0.0, 'a4': 1.11616, 'a5': 0.0, 'a6': 0.0, 'a7': -1.5, 'a8': 0.0}]}\n" ] } ], "source": [ "print(reactions['n + f19 -> f20 + gamma'].reactants)\n", "print(reactions['n + f19 -> f20 + gamma'].products)\n", "print(reactions['n + f19 -> f20 + gamma'].source)\n", "print(reactions['n + f19 -> f20 + gamma'].get_data())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The last command shows that the rate data for the reaction are of the *non_smoker_fit* type and are contained in a dictionary. Now update the data. Type" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "reactions['n + f19 -> f20 + gamma'].source = 'ka02--updated'\n", "reactions['n + f19 -> f20 + gamma'].get_data()['fits'][0]['spint'] = 99." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is also possible to change the data type. Change the *n + f20 -> f21 + gamma* from *non_smoker_fit* type to a *rate_table* type:" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'type': 'non_smoker_fit', 'fits': [{'note': 'r0', 'spint': 0.0, 'spinf': 0.0, 'TlowHf': 0.01, 'Tlowfit': 0.01, 'Thighfit': 10.0, 'acc': 0.0, 'a1': 4.77528, 'a2': 0.021153, 'a3': -3.71688, 'a4': 12.6698, 'a5': -1.47692, 'a6': 0.119962, 'a7': -4.49967, 'a8': 0.0}]}\n" ] } ], "source": [ "print(reactions['n + f20 -> f21 + gamma'].get_data())\n", "t9 = [0.1,1,2,10]\n", "rate = [200, 150, 125, 100]\n", "sef = [1,1,1,1]\n", "reactions['n + f20 -> f21 + gamma'].data = {'type': 'rate_table', 't9': t9, 'rate': rate, 'sef': sef}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The *t9* array gives the temperatures (in billions of K) at which the rates (*rate array*) are given. The *sef* is the *stellar enhancement factor*, which is the factor by which ground-state rate is increased in a stellar environment. When no *sef* is given, set it to unity." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now confirm that the data have been updated by typing" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ka02--updated\n", "{'type': 'non_smoker_fit', 'fits': [{'note': 'n0', 'spint': 99.0, 'spinf': 0.0, 'TlowHf': 0.01, 'Tlowfit': 0.01, 'Thighfit': 10.0, 'acc': 0.0, 'a1': 12.2698, 'a2': 0.0, 'a3': 0.0, 'a4': 0.0, 'a5': 0.0, 'a6': 0.0, 'a7': 1.0, 'a8': 0.0}, {'note': 'r1', 'spint': 0.0, 'spinf': 0.0, 'TlowHf': 0.01, 'Tlowfit': 0.01, 'Thighfit': 10.0, 'acc': 0.0, 'a1': 12.0709, 'a2': -0.301717, 'a3': 0.0, 'a4': 1.11616, 'a5': 0.0, 'a6': 0.0, 'a7': -1.5, 'a8': 0.0}]}\n", "{'type': 'rate_table', 't9': [0.1, 1, 2, 10], 'rate': [200, 150, 125, 100], 'sef': [1, 1, 1, 1]}\n" ] } ], "source": [ "print(reactions['n + f19 -> f20 + gamma'].source)\n", "print(reactions['n + f19 -> f20 + gamma'].get_data())\n", "print(reactions['n + f20 -> f21 + gamma'].data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that the last command simply directly accessed the Reaction class member *data* instead of using the *get_data()* method. Either is valid–the *get_data()* method is simply a legacy convenience method that returns the class member data. Confirm the actions are the same by typing" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'type': 'rate_table', 't9': [0.1, 1, 2, 10], 'rate': [200, 150, 125, 100], 'sef': [1, 1, 1, 1]}\n" ] } ], "source": [ "print(reactions['n + f20 -> f21 + gamma'].get_data())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now create new XML and write the updated data:" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [], "source": [ "updated_xml = wx.New_Xml(xml_type='reaction_data')\n", "updated_xml.set_reaction_data(reactions)\n", "updated_xml.write('updated_reaction_data.xml')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now confirm that the updated XML has the changes:" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ka02--updated\n", "{'type': 'non_smoker_fit', 'fits': [{'note': 'n0', 'spint': 99.0, 'spinf': 0.0, 'TlowHf': 0.01, 'Tlowfit': 0.01, 'Thighfit': 10.0, 'acc': 0.0, 'a1': 12.2698, 'a2': 0.0, 'a3': 0.0, 'a4': 0.0, 'a5': 0.0, 'a6': 0.0, 'a7': 1.0, 'a8': 0.0}, {'note': 'r1', 'spint': 0.0, 'spinf': 0.0, 'TlowHf': 0.01, 'Tlowfit': 0.01, 'Thighfit': 10.0, 'acc': 0.0, 'a1': 12.0709, 'a2': -0.301717, 'a3': 0.0, 'a4': 1.11616, 'a5': 0.0, 'a6': 0.0, 'a7': -1.5, 'a8': 0.0}]}\n", "{'type': 'rate_table', 't9': array([ 0.1, 1. , 2. , 10. ]), 'rate': array([200., 150., 125., 100.]), 'sef': array([1., 1., 1., 1.])}\n" ] } ], "source": [ "xml = wx.Xml('updated_reaction_data.xml')\n", "updated_reactions = xml.get_reaction_data()\n", "print(updated_reactions['n + f19 -> f20 + gamma'].source)\n", "print(updated_reactions['n + f19 -> f20 + gamma'].get_data())\n", "print(updated_reactions['n + f20 -> f21 + gamma'].get_data())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Add to existing reaction data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is possible to add to existing reaction data. To try this, create the reaction *ni70 -> cu65 + n + n + n + n + n + electron + anti-neutrino_e* with a single rate of 1.5 per second:" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "r = wx.Reaction()\n", "r.reactants = ['ni70']\n", "r.products = ['cu65', 'n', 'n', 'n', 'n', 'n', 'electron', 'anti-neutrino_e']\n", "r.source = 'wn_tutorials'\n", "r.data = {'type': 'single_rate', 'rate': 1.5}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now add this to the existing data:" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "old_xml = wx.Xml('my_output1.xml')\n", "reactions = old_xml.get_reaction_data()\n", "reactions['new'] = r" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create and write new XML with the extended data:" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "extended_xml = wx.New_Xml(xml_type='reaction_data')\n", "extended_xml.set_reaction_data(reactions)\n", "extended_xml.write('extended_reaction_data.xml')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Confirm that the new XML has the added data:" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "he4 + ni70 -> zn74 + gamma\n", "h1 + ni70 -> cu71 + gamma\n", "h1 + ni70 -> he4 + co67\n", "n + ni70 -> ni71 + gamma\n", "he4 + ni70 -> n + zn73\n", "h1 + ni70 -> n + cu70\n", "ni70 -> cu70 + electron + anti-neutrino_e\n", "ni70 -> cu65 + n + n + n + n + n + electron + anti-neutrino_e\n", "{'type': 'single_rate', 'rate': 1.5}\n" ] } ], "source": [ "xml = wx.Xml('extended_reaction_data.xml')\n", "extended_reactions = xml.get_reaction_data(\"[reactant = 'ni70']\")\n", "for reaction in extended_reactions:\n", " print(reaction)\n", "\n", "print(extended_reactions['ni70 -> cu65 + n + n + n + n + n + electron + anti-neutrino_e'].get_data())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create new reaction data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is also possible to create new reaction XML data. One creates a new reaction data dictionary and then sets those data in new XML and writes the XML out. To experiment with this, create a new reaction XML file with a *non_smoker_fit data* set and *two user_rate* data sets. In *user_rate* data, each rate datum is a *property* that is denoted by a [str](https://docs.python.org/3/library/stdtypes.html#str) giving the *property name* or a [tuple](https://docs.python.org/3/library/stdtypes.html#tuple) giving the property name and up to two tags (*tag1* and *tag2*). First, create the reactions data and add the non_smoker_fit reaction:" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [], "source": [ "reactions = {}\n", "reactions['new1'] = wx.Reaction()\n", "reactions['new1'].reactants = ['ge111', 'h1']\n", "reactions['new1'].products = ['as112', 'gamma']\n", "reactions['new1'].source = 'ADNDT (2001) 75, 1 (non-smoker)'\n", "reactions['new1'].data = {'type': 'non_smoker_fit', 'fits': [{'spint': 0.5, 'spinf': 1.0, 'TlowHf': -1.0, 'Tlowfit': 0.01, 'Thighfit': 10.0, 'acc': 0.035, 'a1': 204.211, 'a2': -10.533, 'a3': 414.2, 'a4': -658.043, 'a5': 37.4352, 'a6': -2.17474, 'a7': 326.601, 'a8': 227.497}]}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now add the first user_rate data reaction:" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [], "source": [ "reactions['new2'] = wx.Reaction()\n", "reactions['new2'].reactants = ['c12', 'c12']\n", "reactions['new2'].products = ['mg23', 'n']\n", "reactions['new2'].source = 'CF88'\n", "reactions['new2'].data = {'type': 'user_rate', 'key': 'cf88 carbon fusion fit',\n", " 'f_0.11_le_t9_lt_1.75': '0.0', 'f_1.75_le_t9_lt_3.3': '0.05',\n", " 'f_3.3_le_t9_lt_6': '0.07', 'f_t9_ge_6': '0.07', 'f_t9_lt_0.11': '0.0'}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that all properties in the data dictionary are of [str](https://docs.python.org/3/library/stdtypes.html#str) type. Also note that the *user_rate* needs a *key* entry denoting the particular user-rate function that will be used to compute the rate from the data. Now add the second *user_rate* data reaction:" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "reactions['new3'] = wx.Reaction()\n", "reactions['new3'].reactants = ['c12', 'he4']\n", "reactions['new3'].products = ['o16', 'gamma']\n", "reactions['new3'].source = 'Kunz et al. (2002)'\n", "reactions['new3'].data = {'type': 'user_rate', 'key': 'kunz fit', ('a', '0'): ' 1.21e8',\n", " ('a', '1'): ' 6.06e-2', ('a', '10'): ' 2.e6', ('a', '11'): ' 38.534',\n", " ('a', '2'): ' 32.12', ('a', '3'): ' 1.7', ('a', '4'): ' 7.4e8',\n", " ('a', '5'): ' 0.47', ('a', '6'): ' 32.12', ('a', '7'): ' 0.',\n", " ('a', '8'): ' 0.', ('a', '9'): ' 1.53e4'}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice here that the property keys are tuples where the entries are (name, tag1). Now create and write the XML:" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "new_xml = wx.New_Xml(xml_type='reaction_data')\n", "new_xml.set_reaction_data(reactions)\n", "new_xml.write('new_reaction_data.xml')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Confirm the new XML:" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Reaction: ge111 + h1 -> as112 + gamma \n", "Data: {'type': 'non_smoker_fit', 'fits': [{'spint': 0.5, 'spinf': 1.0, 'TlowHf': -1.0, 'Tlowfit': 0.01, 'Thighfit': 10.0, 'acc': 0.035, 'a1': 204.211, 'a2': -10.533, 'a3': 414.2, 'a4': -658.043, 'a5': 37.4352, 'a6': -2.17474, 'a7': 326.601, 'a8': 227.497}]} \n", "\n", "Reaction: c12 + c12 -> mg23 + n \n", "Data: {'type': 'user_rate', 'key': 'cf88 carbon fusion fit', 'f_0.11_le_t9_lt_1.75': '0.0', 'f_1.75_le_t9_lt_3.3': '0.05', 'f_3.3_le_t9_lt_6': '0.07', 'f_t9_ge_6': '0.07', 'f_t9_lt_0.11': '0.0'} \n", "\n", "Reaction: c12 + he4 -> o16 + gamma \n", "Data: {'type': 'user_rate', 'key': 'kunz fit', ('a', '0'): ' 1.21e8', ('a', '1'): ' 6.06e-2', ('a', '10'): ' 2.e6', ('a', '11'): ' 38.534', ('a', '2'): ' 32.12', ('a', '3'): ' 1.7', ('a', '4'): ' 7.4e8', ('a', '5'): ' 0.47', ('a', '6'): ' 32.12', ('a', '7'): ' 0.', ('a', '8'): ' 0.', ('a', '9'): ' 1.53e4'} \n", "\n" ] } ], "source": [ "xml = wx.Xml('new_reaction_data.xml')\n", "new_reactions = xml.get_reaction_data()\n", "for r in new_reactions:\n", " print('Reaction:', r, '\\nData:', new_reactions[r].get_data(),'\\n')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Network XML Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For webnucleo codes, a nuclear network is a collection of nuclides and the reactions among them. If you have already created or updated nuclide data nuclides and reaction data reactions according to the steps described above, you can create a network XML file. To do so, type" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [], "source": [ "network_xml = wx.New_Xml(xml_type='nuclear_network')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "or, simply," ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [], "source": [ "network_xml = wx.New_Xml()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "since the default new XML is of the *nuclear_network* type. Now set the data:" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [], "source": [ "network_xml.set_nuclide_data(nuclides)\n", "network_xml.set_reaction_data(reactions)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and write the file:" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "network_xml.write('new_nuclear_network.xml')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Confirm the new file has the nuclide and reaction data:" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "al26g\n", "al26m\n", "ge111 + h1 -> as112 + gamma\n", "c12 + c12 -> mg23 + n\n", "c12 + he4 -> o16 + gamma\n" ] } ], "source": [ "xml = wx.Xml('new_nuclear_network.xml')\n", "new_nuclides = xml.get_nuclide_data()\n", "new_reactions = xml.get_reaction_data()\n", "for nuc in new_nuclides:\n", " print(nuc)\n", "\n", "for reaction in new_reactions:\n", " print(reaction)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Zone XML Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Zone data in webnucleo codes represent mutable data in a calculation. As with nuclide and reaction data, wnutils routines allow you to update and create new zone data XML." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Update existing zone data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To update zone data, first retrieve the existing data:" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [], "source": [ "zone_data = old_xml.get_zone_data()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Zones are denoted by up to three labels (label1, label2, label3) given as either a string or a tuple of strings., Each zone can contain optional_properties and mass fractions of nuclear species. To see the available zones, type:" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "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" ] } ], "source": [ "for zone in zone_data:\n", " print(zone)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create a new zone that is a copy of the last zone:" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [], "source": [ "new_zone = zone_data[\"164\"].copy()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Modify a property and a mass fraction in the new zone:" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [], "source": [ "new_zone['properties']['rho'] = -10\n", "new_zone['mass fractions'][('he4', 2, 4)] = 0.1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Update the zone data with the new zone:" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [], "source": [ "zone_data[('165', 'added')] = new_zone" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now write the data to an XML file:" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [], "source": [ "updated_zone_xml = wx.New_Xml(xml_type='zone_data')\n", "updated_zone_xml.set_zone_data(zone_data)\n", "updated_zone_xml.write('updated_zone_data.xml')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Confirm that the new file has the new zone and the updated data:" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "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', 'added')\n", "-10\n", "0.1\n" ] } ], "source": [ "xml = wx.Xml('updated_zone_data.xml')\n", "updated_zone_data = xml.get_zone_data()\n", "\n", "for zone in updated_zone_data:\n", " print(zone)\n", "\n", "print(updated_zone_data[('165', 'added')]['properties']['rho'])\n", "print(updated_zone_data[('165', 'added')]['mass fractions'][('he4', 2, 4)])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Create new zone data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To create zone XML data, first create a dictionary of zones:" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [], "source": [ "zones = {}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now create property dictionaries for the zones:" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [], "source": [ "props1 = {'width': 5}\n", "props2 = {'note': 'This is a note.', ('breadth', 'length', 'width'): 7}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each dictionary key is either a [str](https://docs.python.org/3/library/stdtypes.html#str) or a [tuple](https://docs.python.org/3/library/stdtypes.html#tuple) of strings. The property value can be any type–it will be converted to a string. Now create dictionaries of mass fractions:" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [], "source": [ "mass_frac1 = {('he4', 2, 4): 1}\n", "mass_frac2 = {('mn53', 25, 53): 0.7, ('fe56', 26, 56): 0.3}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The key for each mass fraction entry is a tuple giving the species name, Z, and A. Now create the zones:" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [], "source": [ "zones[\"0\"] = {'properties': props1, 'mass fractions': mass_frac1}\n", "zones[(\"Ringo\", \"Starr\")] = {'properties': {}, 'mass fractions': mass_frac2}\n", "zones[(\"John\", \"Winston\", \"Lennon\")] = {'properties': props2, 'mass fractions': mass_frac2}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now create the zone data XML, set the data, and write the file:" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [], "source": [ "zone_xml = wx.New_Xml('zone_data')\n", "zone_xml.set_zone_data(zones)\n", "zone_xml.write('new_zone_data.xml')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The file new_zone_data.xml contains the data you created. You can validate it to ensure the data are the right XML format:" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [], "source": [ "wx.validate('new_zone_data.xml')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Libnucnet XML Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Full libnucnet data comprises nuclear network and zone data. If you have created nuclide data (*nuclides*), reaction data (*reactions*), and zone data (*zones*), you can create full libnucnet data by typing:" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [], "source": [ "libnucnet_xml = wx.New_Xml('libnucnet_input')\n", "libnucnet_xml.set_nuclide_data(nuclides)\n", "libnucnet_xml.set_reaction_data(reactions)\n", "libnucnet_xml.set_zone_data(zones)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Write out the data by typing:" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [], "source": [ "libnucnet_xml.write('new_libnucnet.xml')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For more information, see the wnutils [tutorials](https://wnutils.readthedocs.io/en/latest/tutorials.html)." ] } ], "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.11.2" } }, "nbformat": 4, "nbformat_minor": 2 }