mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-21 14:35:27 -04:00
2406 lines
149 KiB
Text
2406 lines
149 KiB
Text
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"This notebook demonstrates how systematic analysis of tally scores is possible using Pandas dataframes. A dataframe can be automatically generated using the `Tally.get_pandas_dataframe(...)` method. Furthermore, by linking the tally data in a statepoint file with geometry and material information from a summary file, the dataframe can be shown with user-supplied labels.\n",
|
|
"\n",
|
|
"**Note:** that this Notebook was created using the latest Pandas v0.16.1. Everything in the Notebook will wun with older versions of Pandas, but the multi-indexing option in >v0.15.0 makes the tables look prettier."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import glob\n",
|
|
"from IPython.display import Image\n",
|
|
"import matplotlib.pylab as pylab\n",
|
|
"import scipy.stats\n",
|
|
"import numpy as np\n",
|
|
"\n",
|
|
"import openmc\n",
|
|
"from openmc.statepoint import StatePoint\n",
|
|
"from openmc.summary import Summary\n",
|
|
"\n",
|
|
"%matplotlib inline"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Generate Input Files"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"First we need to define materials that will be used in the problem. Before defining a material, we must create nuclides that are used in the material."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Instantiate some Nuclides\n",
|
|
"h1 = openmc.Nuclide('H-1')\n",
|
|
"b10 = openmc.Nuclide('B-10')\n",
|
|
"o16 = openmc.Nuclide('O-16')\n",
|
|
"u235 = openmc.Nuclide('U-235')\n",
|
|
"u238 = openmc.Nuclide('U-238')\n",
|
|
"zr90 = openmc.Nuclide('Zr-90')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"With the nuclides we defined, we will now create three materials for the fuel, water, and cladding of the fuel pin."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# 1.6 enriched fuel\n",
|
|
"fuel = openmc.Material(name='1.6% Fuel')\n",
|
|
"fuel.set_density('g/cm3', 10.31341)\n",
|
|
"fuel.add_nuclide(u235, 3.7503e-4)\n",
|
|
"fuel.add_nuclide(u238, 2.2625e-2)\n",
|
|
"fuel.add_nuclide(o16, 4.6007e-2)\n",
|
|
"\n",
|
|
"# borated water\n",
|
|
"water = openmc.Material(name='Borated Water')\n",
|
|
"water.set_density('g/cm3', 0.740582)\n",
|
|
"water.add_nuclide(h1, 4.9457e-2)\n",
|
|
"water.add_nuclide(o16, 2.4732e-2)\n",
|
|
"water.add_nuclide(b10, 8.0042e-6)\n",
|
|
"\n",
|
|
"# zircaloy\n",
|
|
"zircaloy = openmc.Material(name='Zircaloy')\n",
|
|
"zircaloy.set_density('g/cm3', 6.55)\n",
|
|
"zircaloy.add_nuclide(zr90, 7.2758e-3)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"With our three materials, we can now create a materials file object that can be exported to an actual XML file."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Instantiate a MaterialsFile, add Materials\n",
|
|
"materials_file = openmc.MaterialsFile()\n",
|
|
"materials_file.add_material(fuel)\n",
|
|
"materials_file.add_material(water)\n",
|
|
"materials_file.add_material(zircaloy)\n",
|
|
"materials_file.default_xs = '71c'\n",
|
|
"\n",
|
|
"# Export to \"materials.xml\"\n",
|
|
"materials_file.export_to_xml()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now let's move on to the geometry. This problem will be a square array of fuel pins and control rod guide tubes for which we can use OpenMC's lattice/universe feature. The basic universe will have three regions for the fuel, the clad, and the surrounding coolant. The first step is to create the bounding surfaces for fuel and clad, as well as the outer bounding surfaces of the problem."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Create cylinders for the fuel and clad\n",
|
|
"fuel_outer_radius = openmc.ZCylinder(x0=0.0, y0=0.0, R=0.39218)\n",
|
|
"clad_outer_radius = openmc.ZCylinder(x0=0.0, y0=0.0, R=0.45720)\n",
|
|
"\n",
|
|
"# Create boundary planes to surround the geometry\n",
|
|
"# Use both reflective and vacuum boundaries to make life interesting\n",
|
|
"min_x = openmc.XPlane(x0=-10.71, boundary_type='reflective')\n",
|
|
"max_x = openmc.XPlane(x0=+10.71, boundary_type='vacuum')\n",
|
|
"min_y = openmc.YPlane(y0=-10.71, boundary_type='vacuum')\n",
|
|
"max_y = openmc.YPlane(y0=+10.71, boundary_type='reflective')\n",
|
|
"min_z = openmc.ZPlane(z0=-10.71, boundary_type='reflective')\n",
|
|
"max_z = openmc.ZPlane(z0=+10.71, boundary_type='reflective')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"With the surfaces defined, we can now construct a fuel pin cell from cells that are defined by intersections of half-spaces created by the surfaces."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Create a Universe to encapsulate a fuel pin\n",
|
|
"pin_cell_universe = openmc.Universe(name='1.6% Fuel Pin')\n",
|
|
"\n",
|
|
"# Create fuel Cell\n",
|
|
"fuel_cell = openmc.Cell(name='1.6% Fuel')\n",
|
|
"fuel_cell.fill = fuel\n",
|
|
"fuel_cell.region = -fuel_outer_radius\n",
|
|
"pin_cell_universe.add_cell(fuel_cell)\n",
|
|
"\n",
|
|
"# Create a clad Cell\n",
|
|
"clad_cell = openmc.Cell(name='1.6% Clad')\n",
|
|
"clad_cell.fill = zircaloy\n",
|
|
"clad_cell.region = +fuel_outer_radius & -clad_outer_radius\n",
|
|
"pin_cell_universe.add_cell(clad_cell)\n",
|
|
"\n",
|
|
"# Create a moderator Cell\n",
|
|
"moderator_cell = openmc.Cell(name='1.6% Moderator')\n",
|
|
"moderator_cell.fill = water\n",
|
|
"moderator_cell.region = +clad_outer_radius\n",
|
|
"pin_cell_universe.add_cell(moderator_cell)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Using the pin cell universe, we can construct a 17x17 rectangular lattice with a 1.26cm pitch."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Create fuel assembly Lattice\n",
|
|
"assembly = openmc.RectLattice(name='1.6% Fuel - 0BA')\n",
|
|
"assembly.dimension = (17, 17)\n",
|
|
"assembly.pitch = (1.26, 1.26)\n",
|
|
"assembly.lower_left = [-1.26 * 17. / 2.0] * 2\n",
|
|
"assembly.universes = [[pin_cell_universe] * 17] * 17"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"OpenMC requires that there is a \"root\" universe. Let us create a root cell that is filled by the pin cell universe and then assign it to the root universe."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Create root Cell\n",
|
|
"root_cell = openmc.Cell(name='root cell')\n",
|
|
"root_cell.fill = assembly\n",
|
|
"\n",
|
|
"# Add boundary planes\n",
|
|
"root_cell.region = +min_x & -max_x & +min_y & -max_y & +min_z & -max_z\n",
|
|
"\n",
|
|
"# Create root Universe\n",
|
|
"root_universe = openmc.Universe(universe_id=0, name='root universe')\n",
|
|
"root_universe.add_cell(root_cell)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"We now must create a geometry that is assigned a root universe, put the geometry into a geometry file, and export it to XML."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Create Geometry and set root Universe\n",
|
|
"geometry = openmc.Geometry()\n",
|
|
"geometry.root_universe = root_universe"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Instantiate a GeometryFile\n",
|
|
"geometry_file = openmc.GeometryFile()\n",
|
|
"geometry_file.geometry = geometry\n",
|
|
"\n",
|
|
"# Export to \"geometry.xml\"\n",
|
|
"geometry_file.export_to_xml()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"With the geometry and materials finished, we now just need to define simulation parameters. In this case, we will use 5 inactive batches and 15 minimum active batches each with 2500 particles. We also tell OpenMC to turn tally triggers on, which means it will keep running until some criterion on the uncertainty of tallies is reached."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# OpenMC simulation parameters\n",
|
|
"min_batches = 20\n",
|
|
"max_batches = 200\n",
|
|
"inactive = 5\n",
|
|
"particles = 2500\n",
|
|
"\n",
|
|
"# Instantiate a SettingsFile\n",
|
|
"settings_file = openmc.SettingsFile()\n",
|
|
"settings_file.batches = min_batches\n",
|
|
"settings_file.inactive = inactive\n",
|
|
"settings_file.particles = particles\n",
|
|
"settings_file.output = {'tallies': False, 'summary': True}\n",
|
|
"settings_file.trigger_active = True\n",
|
|
"settings_file.trigger_max_batches = max_batches\n",
|
|
"source_bounds = [-10.71, -10.71, -10, 10.71, 10.71, 10.]\n",
|
|
"settings_file.set_source_space('box', source_bounds)\n",
|
|
"\n",
|
|
"# Export to \"settings.xml\"\n",
|
|
"settings_file.export_to_xml()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Let us also create a plot file that we can use to verify that our pin cell geometry was created successfully."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Instantiate a Plot\n",
|
|
"plot = openmc.Plot(plot_id=1)\n",
|
|
"plot.filename = 'materials-xy'\n",
|
|
"plot.origin = [0, 0, 0]\n",
|
|
"plot.width = [21.5, 21.5]\n",
|
|
"plot.pixels = [250, 250]\n",
|
|
"plot.color = 'mat'\n",
|
|
"\n",
|
|
"# Instantiate a PlotsFile, add Plot, and export to \"plots.xml\"\n",
|
|
"plot_file = openmc.PlotsFile()\n",
|
|
"plot_file.add_plot(plot)\n",
|
|
"plot_file.export_to_xml()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"With the plots.xml file, we can now generate and view the plot. OpenMC outputs plots in .ppm format, which can be converted into a compressed format like .png with the convert utility."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"0"
|
|
]
|
|
},
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Run openmc in plotting mode\n",
|
|
"executor = openmc.Executor()\n",
|
|
"executor.plot_geometry(output=False)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAAPZSURB\nVGje7Zs7buMwEIZ9iey50gyNjQpXKTYudIScgkdQYTfut1idwkdQkQNsYQO2Qj0sPiVK+mlQDmwg\nwIcgg8Cc4fCTSK5W4OeFkM8rHv+2I/rgxPZEPZgR7XtQxKdXYuUXJSUnBQ/9WCgo4vOSJ+WFUvF7\nE08mlia+rn7VcKXP8sRszFX8b2MdX2y6v1Tw6MZUw4H4ojfIjD8mvn/qRL5p4+vvlMqvp2EhR8WB\nzfiz20hXORmP9fi/bM9EeUFvV5H/0yRkeSbiGRfFJErxD9ENdz7Mbhig/h89fvtFdMiI/ePUIXV4\nlXju8K3DKv9NThOZ3q2KmUy6grxFES8rjeyic+FFQav+ncg3fXjH+Ts+/iibztFqOiZuZP/Z3Oaf\nPX40NGgST2r+uvQkXXp6cKvmr+r0e1Eef5um3+JHP3IFF1D/seNZJgaDmvY0Gav1s+2f1fqpIcub\nlfKGt6apotG/NVx3SInWtLX+7Vg/Pv1YqOsnun6JSVdOXT/X7vk75f938QP+8OmSBs0fXtymMhJb\nf8qlPynYmpKCh7OB1fzNalOj1sl0ZAruHLiA+RM73pDe/VjMVP89+aTXwjyc/x5n+u991895/utr\nJTy8/06TXh0r/5JOa2JmYmqi4r/vUm/H4wLmT+z4anhr05X+q6KUXhtzr/9qSff5L5uMT//V/NdU\n4YuBTPa/8P67l/6r44ds+hYuoP5jx9ciy6XTWlibBrmx8V/TdMfjkP+6pOsu/lvM9N90sf7r+f6m\n/65n+S8p/itN15v0UkW3/+48+PRfJX6S9Joo4g+G/1qYG9KroqP/WypcuvyXPf13wH89/hHef7MB\n6R3Cqn55U4rv4kfH3zaSgQuYP7HjVf89tXrbO+hfLdr+Ozv/SP1dgtQ/Ov8C+i/3+q/Zf2D/HWi6\nbjT6rym9I/v/03/b+LHS4cTg/utTsV7/net/Afzz4f0XGX84/2j9xZ4/sePR/of2X7D/o+vPo/sv\n6h9B/Bfxr9j1Hz2eN/hO8/wfff4A848+f/1A/530/I0+/8PvH9D3H9HnT+R49P0b+v4PfP/4E/wX\nfP8Mvf9G37/D/ovuP8SeP7Hj0f0vdP8tqP9O339cyv7p3P1fdP8Z3v9G999j13/seMax8x/o+ZN7\n+O+E8zdP/8XOf8Hnz9Dzb7HnT+x49PxlCp7/BM+fOv13wvnXBfivt2lMvD8TyH/Hnb+Gz3+j589j\nz5/Y8ej9h4D+W7qQmf57efqv239n3T+C7z+h969i13/seMax+3/o/cMcu/8Y2H9n3p+J6r98pv8m\n4fwXuH+M3n+OO3++AX9clR+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEwLTI4VDIwOjU1\nOjE4LTA0OjAwI9YF2QAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMC0yOFQyMDo1NToxOC0wNDow\nMFKLvWUAAAAASUVORK5CYII=\n",
|
|
"text/plain": [
|
|
"<IPython.core.display.Image object>"
|
|
]
|
|
},
|
|
"execution_count": 14,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Convert OpenMC's funky ppm to png\n",
|
|
"!convert materials-xy.ppm materials-xy.png\n",
|
|
"\n",
|
|
"# Display the materials plot inline\n",
|
|
"Image(filename='materials-xy.png')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"As we can see from the plot, we have a nice array of pin cells with fuel, cladding, and water! Before we run our simulation, we need to tell the code what we want to tally. The following code shows how to create a variety of tallies."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Instantiate an empty TalliesFile\n",
|
|
"tallies_file = openmc.TalliesFile()\n",
|
|
"tallies_file._tallies = []"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Instantiate a fission rate mesh Tally"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Instantiate a tally Mesh\n",
|
|
"mesh = openmc.Mesh(mesh_id=1)\n",
|
|
"mesh.type = 'regular'\n",
|
|
"mesh.dimension = [17, 17]\n",
|
|
"mesh.lower_left = [-10.71, -10.71]\n",
|
|
"mesh.width = [1.26, 1.26]\n",
|
|
"\n",
|
|
"# Instantiate tally Filter\n",
|
|
"mesh_filter = openmc.Filter()\n",
|
|
"mesh_filter.mesh = mesh\n",
|
|
"\n",
|
|
"# Instantiate energy Filter\n",
|
|
"energy_filter = openmc.Filter()\n",
|
|
"energy_filter.type = 'energy'\n",
|
|
"energy_filter.bins = np.array([0, 0.625e-6, 20.])\n",
|
|
"\n",
|
|
"# Instantiate the Tally\n",
|
|
"tally = openmc.Tally(name='mesh tally')\n",
|
|
"tally.add_filter(mesh_filter)\n",
|
|
"tally.add_filter(energy_filter)\n",
|
|
"tally.add_score('fission')\n",
|
|
"tally.add_score('nu-fission')\n",
|
|
"\n",
|
|
"# Add mesh and Tally to TalliesFile\n",
|
|
"tallies_file.add_mesh(mesh)\n",
|
|
"tallies_file.add_tally(tally)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Instantiate a cell Tally with nuclides"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Instantiate tally Filter\n",
|
|
"cell_filter = openmc.Filter(type='cell', bins=[fuel_cell.id])\n",
|
|
"\n",
|
|
"# Instantiate the tally\n",
|
|
"tally = openmc.Tally(name='cell tally')\n",
|
|
"tally.add_filter(cell_filter)\n",
|
|
"tally.add_score('scatter-y2')\n",
|
|
"tally.add_nuclide(u235)\n",
|
|
"tally.add_nuclide(u238)\n",
|
|
"\n",
|
|
"# Add mesh and tally to TalliesFile\n",
|
|
"tallies_file.add_tally(tally)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Create a \"distribcell\" Tally. The distribcell filter allows us to tally multiple repeated instances of the same cell throughout the geometry."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Instantiate tally Filter\n",
|
|
"distribcell_filter = openmc.Filter(type='distribcell', bins=[moderator_cell.id])\n",
|
|
"\n",
|
|
"# Instantiate tally Trigger for kicks\n",
|
|
"trigger = openmc.Trigger(trigger_type='std_dev', threshold=5e-5)\n",
|
|
"trigger.add_score('absorption')\n",
|
|
"\n",
|
|
"# Instantiate the Tally\n",
|
|
"tally = openmc.Tally(name='distribcell tally')\n",
|
|
"tally.add_filter(distribcell_filter)\n",
|
|
"tally.add_score('absorption')\n",
|
|
"tally.add_score('scatter')\n",
|
|
"tally.add_trigger(trigger)\n",
|
|
"\n",
|
|
"# Add mesh and tally to TalliesFile\n",
|
|
"tallies_file.add_tally(tally)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 19,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Export to \"tallies.xml\"\n",
|
|
"tallies_file.export_to_xml()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now we a have a complete set of inputs, so we can go ahead and run our simulation."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 20,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
" .d88888b. 888b d888 .d8888b.\n",
|
|
" d88P\" \"Y88b 8888b d8888 d88P Y88b\n",
|
|
" 888 888 88888b.d88888 888 888\n",
|
|
" 888 888 88888b. .d88b. 88888b. 888Y88888P888 888 \n",
|
|
" 888 888 888 \"88b d8P Y8b 888 \"88b 888 Y888P 888 888 \n",
|
|
" 888 888 888 888 88888888 888 888 888 Y8P 888 888 888\n",
|
|
" Y88b. .d88P 888 d88P Y8b. 888 888 888 \" 888 Y88b d88P\n",
|
|
" \"Y88888P\" 88888P\" \"Y8888 888 888 888 888 \"Y8888P\"\n",
|
|
"__________________888______________________________________________________\n",
|
|
" 888\n",
|
|
" 888\n",
|
|
"\n",
|
|
" Copyright: 2011-2015 Massachusetts Institute of Technology\n",
|
|
" License: http://mit-crpg.github.io/openmc/license.html\n",
|
|
" Version: 0.7.0\n",
|
|
" Git SHA1: 21738db07debeabde824c9b955bd3bf0c9a16366\n",
|
|
" Date/Time: 2015-10-28 20:55:18\n",
|
|
" MPI Processes: 1\n",
|
|
"\n",
|
|
" ===========================================================================\n",
|
|
" ========================> INITIALIZATION <=========================\n",
|
|
" ===========================================================================\n",
|
|
"\n",
|
|
" Reading settings XML file...\n",
|
|
" Reading cross sections XML file...\n",
|
|
" Reading geometry XML file...\n",
|
|
" Reading materials XML file...\n",
|
|
" Reading tallies XML file...\n",
|
|
" Building neighboring cells lists for each surface...\n",
|
|
" Loading ACE cross section table: 92235.71c\n",
|
|
" Loading ACE cross section table: 92238.71c\n",
|
|
" Loading ACE cross section table: 8016.71c\n",
|
|
" Loading ACE cross section table: 1001.71c\n",
|
|
" Loading ACE cross section table: 5010.71c\n",
|
|
" Loading ACE cross section table: 40090.71c\n",
|
|
" Maximum neutron transport energy: 20.0000 MeV for 92235.71c\n",
|
|
" Initializing source particles...\n",
|
|
"\n",
|
|
" ===========================================================================\n",
|
|
" ====================> K EIGENVALUE SIMULATION <====================\n",
|
|
" ===========================================================================\n",
|
|
"\n",
|
|
" Bat./Gen. k Average k \n",
|
|
" ========= ======== ==================== \n",
|
|
" 1/1 0.54958 \n",
|
|
" 2/1 0.67628 \n",
|
|
" 3/1 0.70618 \n",
|
|
" 4/1 0.66601 \n",
|
|
" 5/1 0.70876 \n",
|
|
" 6/1 0.69708 \n",
|
|
" 7/1 0.68623 0.69166 +/- 0.00543\n",
|
|
" 8/1 0.69159 0.69163 +/- 0.00313\n",
|
|
" 9/1 0.69908 0.69349 +/- 0.00289\n",
|
|
" 10/1 0.63865 0.68253 +/- 0.01120\n",
|
|
" 11/1 0.65439 0.67784 +/- 0.01027\n",
|
|
" 12/1 0.68518 0.67889 +/- 0.00875\n",
|
|
" 13/1 0.69507 0.68091 +/- 0.00784\n",
|
|
" 14/1 0.70129 0.68317 +/- 0.00728\n",
|
|
" 15/1 0.71336 0.68619 +/- 0.00717\n",
|
|
" 16/1 0.68725 0.68629 +/- 0.00649\n",
|
|
" 17/1 0.72579 0.68958 +/- 0.00678\n",
|
|
" 18/1 0.67149 0.68819 +/- 0.00639\n",
|
|
" 19/1 0.67771 0.68744 +/- 0.00596\n",
|
|
" 20/1 0.68035 0.68697 +/- 0.00557\n",
|
|
" Triggers unsatisfied, max unc./thresh. is 1.09851 for absorption in tally 10002\n",
|
|
" The estimated number of batches is 24\n",
|
|
" Creating state point statepoint.020.h5...\n",
|
|
" 21/1 0.68105 0.68660 +/- 0.00522\n",
|
|
" 22/1 0.67168 0.68572 +/- 0.00498\n",
|
|
" 23/1 0.67520 0.68514 +/- 0.00473\n",
|
|
" 24/1 0.67940 0.68483 +/- 0.00449\n",
|
|
" Triggers satisfied for batch 24\n",
|
|
" Creating state point statepoint.024.h5...\n",
|
|
"\n",
|
|
" ===========================================================================\n",
|
|
" ======================> SIMULATION FINISHED <======================\n",
|
|
" ===========================================================================\n",
|
|
"\n",
|
|
"\n",
|
|
" =======================> TIMING STATISTICS <=======================\n",
|
|
"\n",
|
|
" Total time for initialization = 7.3800E-01 seconds\n",
|
|
" Reading cross sections = 1.5600E-01 seconds\n",
|
|
" Total time in simulation = 1.5998E+01 seconds\n",
|
|
" Time in transport only = 1.5965E+01 seconds\n",
|
|
" Time in inactive batches = 2.3990E+00 seconds\n",
|
|
" Time in active batches = 1.3599E+01 seconds\n",
|
|
" Time synchronizing fission bank = 3.0000E-03 seconds\n",
|
|
" Sampling source sites = 1.0000E-03 seconds\n",
|
|
" SEND/RECV source sites = 2.0000E-03 seconds\n",
|
|
" Time accumulating tallies = 3.0000E-03 seconds\n",
|
|
" Total time for finalization = 0.0000E+00 seconds\n",
|
|
" Total time elapsed = 1.6754E+01 seconds\n",
|
|
" Calculation Rate (inactive) = 5210.50 neutrons/second\n",
|
|
" Calculation Rate (active) = 2757.56 neutrons/second\n",
|
|
"\n",
|
|
" ============================> RESULTS <============================\n",
|
|
"\n",
|
|
" k-effective (Collision) = 0.68264 +/- 0.00405\n",
|
|
" k-effective (Track-length) = 0.68483 +/- 0.00449\n",
|
|
" k-effective (Absorption) = 0.68225 +/- 0.00336\n",
|
|
" Combined k-effective = 0.68275 +/- 0.00346\n",
|
|
" Leakage Fraction = 0.34345 +/- 0.00167\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"0"
|
|
]
|
|
},
|
|
"execution_count": 20,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Remove old HDF5 (summary, statepoint) files\n",
|
|
"!rm statepoint.*\n",
|
|
"\n",
|
|
"# Run OpenMC with MPI!\n",
|
|
"executor.run_simulation()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Tally Data Processing"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 21,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# We do not know how many batches were needed to satisfy the \n",
|
|
"# tally trigger(s), so find the statepoint file(s)\n",
|
|
"statepoints = glob.glob('statepoint.*.h5')\n",
|
|
"\n",
|
|
"# Load the last statepoint file\n",
|
|
"sp = StatePoint(statepoints[-1])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 22,
|
|
"metadata": {
|
|
"collapsed": false,
|
|
"scrolled": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Load the summary file and link with statepoint\n",
|
|
"su = Summary('summary.h5')\n",
|
|
"sp.link_with_summary(su)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"**Analyze the mesh fission rate tally**"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 23,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Tally\n",
|
|
"\tID =\t10000\n",
|
|
"\tName =\tmesh tally\n",
|
|
"\tFilters =\t\n",
|
|
" \t\tmesh\t[1]\n",
|
|
" \t\tenergy\t[ 0.00000000e+00 6.25000000e-07 2.00000000e+01]\n",
|
|
"\tNuclides =\ttotal \n",
|
|
"\tScores =\t[u'fission', u'nu-fission']\n",
|
|
"\tEstimator =\ttracklength\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Find the mesh tally with the StatePoint API\n",
|
|
"tally = sp.get_tally(name='mesh tally')\n",
|
|
"\n",
|
|
"# Print a little info about the mesh tally to the screen\n",
|
|
"print(tally)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Use the new Tally data retrieval API with pure NumPy"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 24,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"[[[ 0.18257268]]\n",
|
|
"\n",
|
|
" [[ 0.07111957]]\n",
|
|
"\n",
|
|
" [[ 0.40880276]]\n",
|
|
"\n",
|
|
" [[ 0.16407535]]]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Get the relative error for the thermal fission reaction \n",
|
|
"# rates in the four corner pins \n",
|
|
"data = tally.get_values(scores=['fission'], filters=['mesh', 'energy'], \\\n",
|
|
" filter_bins=[((1,1),(1,17), (17,1), (17,17)), \\\n",
|
|
" ((0., 0.625e-6),)], value='rel_err')\n",
|
|
"print(data)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 25,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr>\n",
|
|
" <th></th>\n",
|
|
" <th colspan=\"3\" halign=\"left\">mesh 1</th>\n",
|
|
" <th>energy [MeV]</th>\n",
|
|
" <th>score</th>\n",
|
|
" <th>mean</th>\n",
|
|
" <th>std. dev.</th>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th></th>\n",
|
|
" <th>x</th>\n",
|
|
" <th>y</th>\n",
|
|
" <th>z</th>\n",
|
|
" <th></th>\n",
|
|
" <th></th>\n",
|
|
" <th></th>\n",
|
|
" <th></th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(0.0e+00 - 6.3e-07)</td>\n",
|
|
" <td>fission</td>\n",
|
|
" <td>0.000202</td>\n",
|
|
" <td>0.000037</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(0.0e+00 - 6.3e-07)</td>\n",
|
|
" <td>nu-fission</td>\n",
|
|
" <td>0.000492</td>\n",
|
|
" <td>0.000090</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(6.3e-07 - 2.0e+01)</td>\n",
|
|
" <td>fission</td>\n",
|
|
" <td>0.000076</td>\n",
|
|
" <td>0.000004</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(6.3e-07 - 2.0e+01)</td>\n",
|
|
" <td>nu-fission</td>\n",
|
|
" <td>0.000204</td>\n",
|
|
" <td>0.000010</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(0.0e+00 - 6.3e-07)</td>\n",
|
|
" <td>fission</td>\n",
|
|
" <td>0.000375</td>\n",
|
|
" <td>0.000039</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(0.0e+00 - 6.3e-07)</td>\n",
|
|
" <td>nu-fission</td>\n",
|
|
" <td>0.000914</td>\n",
|
|
" <td>0.000094</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(6.3e-07 - 2.0e+01)</td>\n",
|
|
" <td>fission</td>\n",
|
|
" <td>0.000107</td>\n",
|
|
" <td>0.000013</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(6.3e-07 - 2.0e+01)</td>\n",
|
|
" <td>nu-fission</td>\n",
|
|
" <td>0.000278</td>\n",
|
|
" <td>0.000032</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(0.0e+00 - 6.3e-07)</td>\n",
|
|
" <td>fission</td>\n",
|
|
" <td>0.000564</td>\n",
|
|
" <td>0.000056</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>9</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(0.0e+00 - 6.3e-07)</td>\n",
|
|
" <td>nu-fission</td>\n",
|
|
" <td>0.001374</td>\n",
|
|
" <td>0.000137</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(6.3e-07 - 2.0e+01)</td>\n",
|
|
" <td>fission</td>\n",
|
|
" <td>0.000149</td>\n",
|
|
" <td>0.000007</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>11</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(6.3e-07 - 2.0e+01)</td>\n",
|
|
" <td>nu-fission</td>\n",
|
|
" <td>0.000388</td>\n",
|
|
" <td>0.000018</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>12</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(0.0e+00 - 6.3e-07)</td>\n",
|
|
" <td>fission</td>\n",
|
|
" <td>0.000669</td>\n",
|
|
" <td>0.000044</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>13</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(0.0e+00 - 6.3e-07)</td>\n",
|
|
" <td>nu-fission</td>\n",
|
|
" <td>0.001631</td>\n",
|
|
" <td>0.000108</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>14</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(6.3e-07 - 2.0e+01)</td>\n",
|
|
" <td>fission</td>\n",
|
|
" <td>0.000165</td>\n",
|
|
" <td>0.000011</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>15</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(6.3e-07 - 2.0e+01)</td>\n",
|
|
" <td>nu-fission</td>\n",
|
|
" <td>0.000433</td>\n",
|
|
" <td>0.000029</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>16</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(0.0e+00 - 6.3e-07)</td>\n",
|
|
" <td>fission</td>\n",
|
|
" <td>0.000932</td>\n",
|
|
" <td>0.000069</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>17</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(0.0e+00 - 6.3e-07)</td>\n",
|
|
" <td>nu-fission</td>\n",
|
|
" <td>0.002270</td>\n",
|
|
" <td>0.000168</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>18</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(6.3e-07 - 2.0e+01)</td>\n",
|
|
" <td>fission</td>\n",
|
|
" <td>0.000183</td>\n",
|
|
" <td>0.000011</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>19</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>(6.3e-07 - 2.0e+01)</td>\n",
|
|
" <td>nu-fission</td>\n",
|
|
" <td>0.000477</td>\n",
|
|
" <td>0.000028</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" mesh 1 energy [MeV] score mean std. dev.\n",
|
|
" x y z \n",
|
|
"0 1 1 1 (0.0e+00 - 6.3e-07) fission 0.000202 0.000037\n",
|
|
"1 1 1 1 (0.0e+00 - 6.3e-07) nu-fission 0.000492 0.000090\n",
|
|
"2 1 1 1 (6.3e-07 - 2.0e+01) fission 0.000076 0.000004\n",
|
|
"3 1 1 1 (6.3e-07 - 2.0e+01) nu-fission 0.000204 0.000010\n",
|
|
"4 1 2 1 (0.0e+00 - 6.3e-07) fission 0.000375 0.000039\n",
|
|
"5 1 2 1 (0.0e+00 - 6.3e-07) nu-fission 0.000914 0.000094\n",
|
|
"6 1 2 1 (6.3e-07 - 2.0e+01) fission 0.000107 0.000013\n",
|
|
"7 1 2 1 (6.3e-07 - 2.0e+01) nu-fission 0.000278 0.000032\n",
|
|
"8 1 3 1 (0.0e+00 - 6.3e-07) fission 0.000564 0.000056\n",
|
|
"9 1 3 1 (0.0e+00 - 6.3e-07) nu-fission 0.001374 0.000137\n",
|
|
"10 1 3 1 (6.3e-07 - 2.0e+01) fission 0.000149 0.000007\n",
|
|
"11 1 3 1 (6.3e-07 - 2.0e+01) nu-fission 0.000388 0.000018\n",
|
|
"12 1 4 1 (0.0e+00 - 6.3e-07) fission 0.000669 0.000044\n",
|
|
"13 1 4 1 (0.0e+00 - 6.3e-07) nu-fission 0.001631 0.000108\n",
|
|
"14 1 4 1 (6.3e-07 - 2.0e+01) fission 0.000165 0.000011\n",
|
|
"15 1 4 1 (6.3e-07 - 2.0e+01) nu-fission 0.000433 0.000029\n",
|
|
"16 1 5 1 (0.0e+00 - 6.3e-07) fission 0.000932 0.000069\n",
|
|
"17 1 5 1 (0.0e+00 - 6.3e-07) nu-fission 0.002270 0.000168\n",
|
|
"18 1 5 1 (6.3e-07 - 2.0e+01) fission 0.000183 0.000011\n",
|
|
"19 1 5 1 (6.3e-07 - 2.0e+01) nu-fission 0.000477 0.000028"
|
|
]
|
|
},
|
|
"execution_count": 25,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Get a pandas dataframe for the mesh tally data\n",
|
|
"df = tally.get_pandas_dataframe(nuclides=False)\n",
|
|
"\n",
|
|
"# Print the first twenty rows in the dataframe\n",
|
|
"df.head(20)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 26,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\nkiRJEsA/A3sng0v+IomuAAAAAElFTkSuQmCC\n",
|
|
"text/plain": [
|
|
"<matplotlib.figure.Figure at 0x7fdb2da35110>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Create a boxplot to view the distribution of\n",
|
|
"# fission and nu-fission rates in the pins\n",
|
|
"bp = df.boxplot(column='mean', by='score')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 27,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<matplotlib.colorbar.Colorbar instance at 0x7fdb2d6d5680>"
|
|
]
|
|
},
|
|
"execution_count": 27,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n/wfC21DgNNvIcQAAAABJRU5ErkJggg==\n",
|
|
"text/plain": [
|
|
"<matplotlib.figure.Figure at 0x7fdb32600050>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Extract thermal nu-fission rates from pandas\n",
|
|
"fiss = df[df['score'] == 'nu-fission']\n",
|
|
"fiss = fiss[fiss['energy [MeV]'] == '(0.0e+00 - 6.3e-07)']\n",
|
|
"\n",
|
|
"# Extract mean and reshape as 2D NumPy arrays\n",
|
|
"mean = fiss['mean'].reshape((17,17))\n",
|
|
"\n",
|
|
"pylab.imshow(mean, interpolation='nearest')\n",
|
|
"pylab.title('fission rate')\n",
|
|
"pylab.xlabel('x')\n",
|
|
"pylab.ylabel('y')\n",
|
|
"pylab.colorbar()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"**Analyze the cell+nuclides scatter-y2 rate tally**"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 28,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Tally\n",
|
|
"\tID =\t10001\n",
|
|
"\tName =\tcell tally\n",
|
|
"\tFilters =\t\n",
|
|
" \t\tcell\t[10000]\n",
|
|
"\tNuclides =\tU-235 U-238 \n",
|
|
"\tScores =\t[u'scatter-Y0,0', u'scatter-Y1,-1', u'scatter-Y1,0', u'scatter-Y1,1', u'scatter-Y2,-2', u'scatter-Y2,-1', u'scatter-Y2,0', u'scatter-Y2,1', u'scatter-Y2,2']\n",
|
|
"\tEstimator =\tanalog\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Find the cell Tally with the StatePoint API\n",
|
|
"tally = sp.get_tally(name='cell tally')\n",
|
|
"\n",
|
|
"# Print a little info about the cell tally to the screen\n",
|
|
"print(tally)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 29,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>cell</th>\n",
|
|
" <th>nuclide</th>\n",
|
|
" <th>score</th>\n",
|
|
" <th>mean</th>\n",
|
|
" <th>std. dev.</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>U-235</td>\n",
|
|
" <td>scatter-Y0,0</td>\n",
|
|
" <td>0.037095</td>\n",
|
|
" <td>0.001150</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>U-235</td>\n",
|
|
" <td>scatter-Y1,-1</td>\n",
|
|
" <td>0.000266</td>\n",
|
|
" <td>0.000323</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>U-235</td>\n",
|
|
" <td>scatter-Y1,0</td>\n",
|
|
" <td>-0.000417</td>\n",
|
|
" <td>0.000274</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>U-235</td>\n",
|
|
" <td>scatter-Y1,1</td>\n",
|
|
" <td>-0.000228</td>\n",
|
|
" <td>0.000237</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>U-235</td>\n",
|
|
" <td>scatter-Y2,-2</td>\n",
|
|
" <td>0.000026</td>\n",
|
|
" <td>0.000199</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>U-235</td>\n",
|
|
" <td>scatter-Y2,-1</td>\n",
|
|
" <td>-0.000115</td>\n",
|
|
" <td>0.000185</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>U-235</td>\n",
|
|
" <td>scatter-Y2,0</td>\n",
|
|
" <td>0.000151</td>\n",
|
|
" <td>0.000159</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>U-235</td>\n",
|
|
" <td>scatter-Y2,1</td>\n",
|
|
" <td>-0.000122</td>\n",
|
|
" <td>0.000280</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>U-235</td>\n",
|
|
" <td>scatter-Y2,2</td>\n",
|
|
" <td>0.000008</td>\n",
|
|
" <td>0.000181</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>9</th>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>U-238</td>\n",
|
|
" <td>scatter-Y0,0</td>\n",
|
|
" <td>2.328632</td>\n",
|
|
" <td>0.013107</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>U-238</td>\n",
|
|
" <td>scatter-Y1,-1</td>\n",
|
|
" <td>0.024530</td>\n",
|
|
" <td>0.002272</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>11</th>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>U-238</td>\n",
|
|
" <td>scatter-Y1,0</td>\n",
|
|
" <td>-0.000059</td>\n",
|
|
" <td>0.002804</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>12</th>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>U-238</td>\n",
|
|
" <td>scatter-Y1,1</td>\n",
|
|
" <td>-0.027990</td>\n",
|
|
" <td>0.002536</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>13</th>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>U-238</td>\n",
|
|
" <td>scatter-Y2,-2</td>\n",
|
|
" <td>-0.004861</td>\n",
|
|
" <td>0.001575</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>14</th>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>U-238</td>\n",
|
|
" <td>scatter-Y2,-1</td>\n",
|
|
" <td>0.000557</td>\n",
|
|
" <td>0.002018</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>15</th>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>U-238</td>\n",
|
|
" <td>scatter-Y2,0</td>\n",
|
|
" <td>0.006236</td>\n",
|
|
" <td>0.001627</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>16</th>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>U-238</td>\n",
|
|
" <td>scatter-Y2,1</td>\n",
|
|
" <td>-0.000648</td>\n",
|
|
" <td>0.001551</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>17</th>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>U-238</td>\n",
|
|
" <td>scatter-Y2,2</td>\n",
|
|
" <td>-0.001031</td>\n",
|
|
" <td>0.001310</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" cell nuclide score mean std. dev.\n",
|
|
"0 10000 U-235 scatter-Y0,0 0.037095 0.001150\n",
|
|
"1 10000 U-235 scatter-Y1,-1 0.000266 0.000323\n",
|
|
"2 10000 U-235 scatter-Y1,0 -0.000417 0.000274\n",
|
|
"3 10000 U-235 scatter-Y1,1 -0.000228 0.000237\n",
|
|
"4 10000 U-235 scatter-Y2,-2 0.000026 0.000199\n",
|
|
"5 10000 U-235 scatter-Y2,-1 -0.000115 0.000185\n",
|
|
"6 10000 U-235 scatter-Y2,0 0.000151 0.000159\n",
|
|
"7 10000 U-235 scatter-Y2,1 -0.000122 0.000280\n",
|
|
"8 10000 U-235 scatter-Y2,2 0.000008 0.000181\n",
|
|
"9 10000 U-238 scatter-Y0,0 2.328632 0.013107\n",
|
|
"10 10000 U-238 scatter-Y1,-1 0.024530 0.002272\n",
|
|
"11 10000 U-238 scatter-Y1,0 -0.000059 0.002804\n",
|
|
"12 10000 U-238 scatter-Y1,1 -0.027990 0.002536\n",
|
|
"13 10000 U-238 scatter-Y2,-2 -0.004861 0.001575\n",
|
|
"14 10000 U-238 scatter-Y2,-1 0.000557 0.002018\n",
|
|
"15 10000 U-238 scatter-Y2,0 0.006236 0.001627\n",
|
|
"16 10000 U-238 scatter-Y2,1 -0.000648 0.001551\n",
|
|
"17 10000 U-238 scatter-Y2,2 -0.001031 0.001310"
|
|
]
|
|
},
|
|
"execution_count": 29,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Get a pandas dataframe for the cell tally data\n",
|
|
"df = tally.get_pandas_dataframe()\n",
|
|
"\n",
|
|
"# Print the first twenty rows in the dataframe\n",
|
|
"df.head(100)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Use the new Tally data retrieval API with pure NumPy"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 30,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"[[[ 0.00131009 0.01310707]\n",
|
|
" [ 0.00018089 0.00114976]]]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Get the standard deviations for two of the spherical harmonic\n",
|
|
"# scattering reaction rates \n",
|
|
"data = tally.get_values(scores=['scatter-Y2,2', 'scatter-Y0,0'], \n",
|
|
" nuclides=['U-238', 'U-235'], value='std_dev')\n",
|
|
"print(data)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"**Analyze the distribcell tally**"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 31,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Tally\n",
|
|
"\tID =\t10002\n",
|
|
"\tName =\tdistribcell tally\n",
|
|
"\tFilters =\t\n",
|
|
" \t\tdistribcell\t[10002]\n",
|
|
"\tNuclides =\ttotal \n",
|
|
"\tScores =\t[u'absorption', u'scatter']\n",
|
|
"\tEstimator =\ttracklength\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Find the distribcell Tally with the StatePoint API\n",
|
|
"tally = sp.get_tally(name='distribcell tally')\n",
|
|
"\n",
|
|
"# Print a little info about the distribcell tally to the screen\n",
|
|
"print(tally)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Use the new Tally data retrieval API with pure NumPy"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 32,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"[[[ 0.04537029]]]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Get the relative error for the scattering reaction rates in\n",
|
|
"# the first 30 distribcell instances \n",
|
|
"data = tally.get_values(scores=['scatter'], filters=['distribcell'],\n",
|
|
" filter_bins=[(i,) for i in range(10)], value='rel_err')\n",
|
|
"print(data)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Print the distribcell tally dataframe **without** OpenCG info"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 33,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>distribcell</th>\n",
|
|
" <th>score</th>\n",
|
|
" <th>mean</th>\n",
|
|
" <th>std. dev.</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>558</th>\n",
|
|
" <td>279</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000093</td>\n",
|
|
" <td>0.000013</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>559</th>\n",
|
|
" <td>279</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.013504</td>\n",
|
|
" <td>0.000805</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>560</th>\n",
|
|
" <td>280</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000084</td>\n",
|
|
" <td>0.000010</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>561</th>\n",
|
|
" <td>280</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.014215</td>\n",
|
|
" <td>0.000612</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>562</th>\n",
|
|
" <td>281</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000091</td>\n",
|
|
" <td>0.000008</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>563</th>\n",
|
|
" <td>281</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.014545</td>\n",
|
|
" <td>0.000590</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>564</th>\n",
|
|
" <td>282</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000112</td>\n",
|
|
" <td>0.000012</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>565</th>\n",
|
|
" <td>282</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.016321</td>\n",
|
|
" <td>0.000729</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>566</th>\n",
|
|
" <td>283</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000092</td>\n",
|
|
" <td>0.000007</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>567</th>\n",
|
|
" <td>283</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.016163</td>\n",
|
|
" <td>0.000661</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>568</th>\n",
|
|
" <td>284</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000104</td>\n",
|
|
" <td>0.000011</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>569</th>\n",
|
|
" <td>284</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.017384</td>\n",
|
|
" <td>0.000599</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>570</th>\n",
|
|
" <td>285</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000111</td>\n",
|
|
" <td>0.000011</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>571</th>\n",
|
|
" <td>285</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.018015</td>\n",
|
|
" <td>0.000774</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>572</th>\n",
|
|
" <td>286</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000125</td>\n",
|
|
" <td>0.000012</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>573</th>\n",
|
|
" <td>286</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.018294</td>\n",
|
|
" <td>0.000828</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>574</th>\n",
|
|
" <td>287</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000119</td>\n",
|
|
" <td>0.000013</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>575</th>\n",
|
|
" <td>287</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.017483</td>\n",
|
|
" <td>0.000757</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>576</th>\n",
|
|
" <td>288</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000113</td>\n",
|
|
" <td>0.000014</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>577</th>\n",
|
|
" <td>288</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.018248</td>\n",
|
|
" <td>0.000782</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" distribcell score mean std. dev.\n",
|
|
"558 279 absorption 0.000093 0.000013\n",
|
|
"559 279 scatter 0.013504 0.000805\n",
|
|
"560 280 absorption 0.000084 0.000010\n",
|
|
"561 280 scatter 0.014215 0.000612\n",
|
|
"562 281 absorption 0.000091 0.000008\n",
|
|
"563 281 scatter 0.014545 0.000590\n",
|
|
"564 282 absorption 0.000112 0.000012\n",
|
|
"565 282 scatter 0.016321 0.000729\n",
|
|
"566 283 absorption 0.000092 0.000007\n",
|
|
"567 283 scatter 0.016163 0.000661\n",
|
|
"568 284 absorption 0.000104 0.000011\n",
|
|
"569 284 scatter 0.017384 0.000599\n",
|
|
"570 285 absorption 0.000111 0.000011\n",
|
|
"571 285 scatter 0.018015 0.000774\n",
|
|
"572 286 absorption 0.000125 0.000012\n",
|
|
"573 286 scatter 0.018294 0.000828\n",
|
|
"574 287 absorption 0.000119 0.000013\n",
|
|
"575 287 scatter 0.017483 0.000757\n",
|
|
"576 288 absorption 0.000113 0.000014\n",
|
|
"577 288 scatter 0.018248 0.000782"
|
|
]
|
|
},
|
|
"execution_count": 33,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Get a pandas dataframe for the distribcell tally data\n",
|
|
"df = tally.get_pandas_dataframe(nuclides=False)\n",
|
|
"\n",
|
|
"# Print the last twenty rows in the dataframe\n",
|
|
"df.tail(20)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Print the distribcell tally dataframe **with** OpenCG info"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 34,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr>\n",
|
|
" <th></th>\n",
|
|
" <th colspan=\"2\" halign=\"left\">level 1</th>\n",
|
|
" <th colspan=\"4\" halign=\"left\">level 2</th>\n",
|
|
" <th colspan=\"2\" halign=\"left\">level 3</th>\n",
|
|
" <th>distribcell</th>\n",
|
|
" <th>score</th>\n",
|
|
" <th>mean</th>\n",
|
|
" <th>std. dev.</th>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th></th>\n",
|
|
" <th>cell</th>\n",
|
|
" <th>univ</th>\n",
|
|
" <th colspan=\"4\" halign=\"left\">lat</th>\n",
|
|
" <th>cell</th>\n",
|
|
" <th>univ</th>\n",
|
|
" <th></th>\n",
|
|
" <th></th>\n",
|
|
" <th></th>\n",
|
|
" <th></th>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th></th>\n",
|
|
" <th>id</th>\n",
|
|
" <th>id</th>\n",
|
|
" <th>id</th>\n",
|
|
" <th>x</th>\n",
|
|
" <th>y</th>\n",
|
|
" <th>z</th>\n",
|
|
" <th>id</th>\n",
|
|
" <th>id</th>\n",
|
|
" <th></th>\n",
|
|
" <th></th>\n",
|
|
" <th></th>\n",
|
|
" <th></th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000123</td>\n",
|
|
" <td>0.000012</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.017805</td>\n",
|
|
" <td>0.000808</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000217</td>\n",
|
|
" <td>0.000020</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.028867</td>\n",
|
|
" <td>0.001263</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000318</td>\n",
|
|
" <td>0.000020</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.040493</td>\n",
|
|
" <td>0.001269</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000386</td>\n",
|
|
" <td>0.000018</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.048576</td>\n",
|
|
" <td>0.001337</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000501</td>\n",
|
|
" <td>0.000026</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>9</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.057063</td>\n",
|
|
" <td>0.001715</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000484</td>\n",
|
|
" <td>0.000026</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>11</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.060822</td>\n",
|
|
" <td>0.001581</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>12</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000532</td>\n",
|
|
" <td>0.000039</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>13</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.069101</td>\n",
|
|
" <td>0.002249</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>14</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000577</td>\n",
|
|
" <td>0.000039</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>15</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.076722</td>\n",
|
|
" <td>0.002335</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>16</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000649</td>\n",
|
|
" <td>0.000039</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>17</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.081564</td>\n",
|
|
" <td>0.001610</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>18</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>9</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>9</td>\n",
|
|
" <td>absorption</td>\n",
|
|
" <td>0.000680</td>\n",
|
|
" <td>0.000032</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>19</th>\n",
|
|
" <td>10003</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10001</td>\n",
|
|
" <td>9</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>10002</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td>9</td>\n",
|
|
" <td>scatter</td>\n",
|
|
" <td>0.087715</td>\n",
|
|
" <td>0.001959</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" level 1 level 2 level 3 distribcell score \\\n",
|
|
" cell univ lat cell univ \n",
|
|
" id id id x y z id id \n",
|
|
"0 10003 0 10001 0 0 0 10002 10000 0 absorption \n",
|
|
"1 10003 0 10001 0 0 0 10002 10000 0 scatter \n",
|
|
"2 10003 0 10001 1 0 0 10002 10000 1 absorption \n",
|
|
"3 10003 0 10001 1 0 0 10002 10000 1 scatter \n",
|
|
"4 10003 0 10001 2 0 0 10002 10000 2 absorption \n",
|
|
"5 10003 0 10001 2 0 0 10002 10000 2 scatter \n",
|
|
"6 10003 0 10001 3 0 0 10002 10000 3 absorption \n",
|
|
"7 10003 0 10001 3 0 0 10002 10000 3 scatter \n",
|
|
"8 10003 0 10001 4 0 0 10002 10000 4 absorption \n",
|
|
"9 10003 0 10001 4 0 0 10002 10000 4 scatter \n",
|
|
"10 10003 0 10001 5 0 0 10002 10000 5 absorption \n",
|
|
"11 10003 0 10001 5 0 0 10002 10000 5 scatter \n",
|
|
"12 10003 0 10001 6 0 0 10002 10000 6 absorption \n",
|
|
"13 10003 0 10001 6 0 0 10002 10000 6 scatter \n",
|
|
"14 10003 0 10001 7 0 0 10002 10000 7 absorption \n",
|
|
"15 10003 0 10001 7 0 0 10002 10000 7 scatter \n",
|
|
"16 10003 0 10001 8 0 0 10002 10000 8 absorption \n",
|
|
"17 10003 0 10001 8 0 0 10002 10000 8 scatter \n",
|
|
"18 10003 0 10001 9 0 0 10002 10000 9 absorption \n",
|
|
"19 10003 0 10001 9 0 0 10002 10000 9 scatter \n",
|
|
"\n",
|
|
" mean std. dev. \n",
|
|
" \n",
|
|
" \n",
|
|
"0 0.000123 0.000012 \n",
|
|
"1 0.017805 0.000808 \n",
|
|
"2 0.000217 0.000020 \n",
|
|
"3 0.028867 0.001263 \n",
|
|
"4 0.000318 0.000020 \n",
|
|
"5 0.040493 0.001269 \n",
|
|
"6 0.000386 0.000018 \n",
|
|
"7 0.048576 0.001337 \n",
|
|
"8 0.000501 0.000026 \n",
|
|
"9 0.057063 0.001715 \n",
|
|
"10 0.000484 0.000026 \n",
|
|
"11 0.060822 0.001581 \n",
|
|
"12 0.000532 0.000039 \n",
|
|
"13 0.069101 0.002249 \n",
|
|
"14 0.000577 0.000039 \n",
|
|
"15 0.076722 0.002335 \n",
|
|
"16 0.000649 0.000039 \n",
|
|
"17 0.081564 0.001610 \n",
|
|
"18 0.000680 0.000032 \n",
|
|
"19 0.087715 0.001959 "
|
|
]
|
|
},
|
|
"execution_count": 34,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Get a pandas dataframe for the distribcell tally data\n",
|
|
"df = tally.get_pandas_dataframe(summary=su, nuclides=False)\n",
|
|
"\n",
|
|
"# Print the last twenty rows in the dataframe\n",
|
|
"df.head(20)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 35,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr>\n",
|
|
" <th></th>\n",
|
|
" <th>mean</th>\n",
|
|
" <th>std. dev.</th>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th></th>\n",
|
|
" <th></th>\n",
|
|
" <th></th>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th></th>\n",
|
|
" <th></th>\n",
|
|
" <th></th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>count</th>\n",
|
|
" <td>289.000000</td>\n",
|
|
" <td>289.000000</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>mean</th>\n",
|
|
" <td>0.000418</td>\n",
|
|
" <td>0.000022</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>std</th>\n",
|
|
" <td>0.000239</td>\n",
|
|
" <td>0.000009</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>min</th>\n",
|
|
" <td>0.000018</td>\n",
|
|
" <td>0.000004</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>25%</th>\n",
|
|
" <td>0.000202</td>\n",
|
|
" <td>0.000015</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>50%</th>\n",
|
|
" <td>0.000402</td>\n",
|
|
" <td>0.000021</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>75%</th>\n",
|
|
" <td>0.000615</td>\n",
|
|
" <td>0.000027</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>max</th>\n",
|
|
" <td>0.000892</td>\n",
|
|
" <td>0.000044</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" mean std. dev.\n",
|
|
" \n",
|
|
" \n",
|
|
"count 289.000000 289.000000\n",
|
|
"mean 0.000418 0.000022\n",
|
|
"std 0.000239 0.000009\n",
|
|
"min 0.000018 0.000004\n",
|
|
"25% 0.000202 0.000015\n",
|
|
"50% 0.000402 0.000021\n",
|
|
"75% 0.000615 0.000027\n",
|
|
"max 0.000892 0.000044"
|
|
]
|
|
},
|
|
"execution_count": 35,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Show summary statistics for absorption distribcell tally data\n",
|
|
"absorption = df[df['score'] == 'absorption']\n",
|
|
"absorption[['mean', 'std. dev.']].dropna().describe()\n",
|
|
"\n",
|
|
"# Note that the maximum standard deviation does indeed\n",
|
|
"# meet the 5e-4 threshold set by the tally trigger"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Perform a statistical test comparing the tally sample distributions for two categories of fuel pins."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 36,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Mann-Whitney Test p-value: 0.414863173548\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Extract tally data from pins in the pins divided along y=x diagonal \n",
|
|
"multi_index = ('level 2', 'lat',)\n",
|
|
"lower = df[df[multi_index + ('x',)] + df[multi_index + ('y',)] < 16]\n",
|
|
"upper = df[df[multi_index + ('x',)] + df[multi_index + ('y',)] > 16]\n",
|
|
"lower = lower[lower['score'] == 'absorption']\n",
|
|
"upper = upper[upper['score'] == 'absorption']\n",
|
|
"\n",
|
|
"# Perform non-parametric Mann-Whitney U Test to see if the \n",
|
|
"# absorption rates (may) come from same sampling distribution\n",
|
|
"u, p = scipy.stats.mannwhitneyu(lower['mean'], upper['mean'])\n",
|
|
"print('Mann-Whitney Test p-value: {0}'.format(p))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Note that the symmetry implied by the y=x diagonal ensures that the two sampling distributions are identical. Indeed, as illustrated by the test above, for any reasonable significance level (*e.g.*, $\\alpha$=0.05) one would **not reject** the null hypothesis that the two sampling distributions are identical.\n",
|
|
"\n",
|
|
"Next, perform the same test but with two groupings of pins which are not symmetrically identical to one another."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 37,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Mann-Whitney Test p-value: 3.28554363741e-42\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Extract tally data from pins in the pins divided along y=-x diagonal\n",
|
|
"multi_index = ('level 2', 'lat',)\n",
|
|
"lower = df[df[multi_index + ('x',)] > df[multi_index + ('y',)]]\n",
|
|
"upper = df[df[multi_index + ('x',)] < df[multi_index + ('y',)]]\n",
|
|
"lower = lower[lower['score'] == 'absorption']\n",
|
|
"upper = upper[upper['score'] == 'absorption']\n",
|
|
"\n",
|
|
"# Perform non-parametric Mann-Whitney U Test to see if the \n",
|
|
"# absorption rates (may) come from same sampling distribution\n",
|
|
"u, p = scipy.stats.mannwhitneyu(lower['mean'], upper['mean'])\n",
|
|
"print('Mann-Whitney Test p-value: {0}'.format(p))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Note that the asymmetry implied by the y=-x diagonal ensures that the two sampling distributions are *not* identical. Indeed, as illustrated by the test above, for any reasonable significance level (*e.g.*, $\\alpha$=0.05) one would **reject** the null hypothesis that the two sampling distributions are identical."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 38,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"/usr/local/lib/python2.7/dist-packages/IPython/kernel/__main__.py:4: SettingWithCopyWarning: \n",
|
|
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
|
|
"Try using .loc[row_indexer,col_indexer] = value instead\n",
|
|
"\n",
|
|
"See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<matplotlib.axes.AxesSubplot at 0x7fdb2d5c3e10>"
|
|
]
|
|
},
|
|
"execution_count": 38,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\nTkSuQmCC\n",
|
|
"text/plain": [
|
|
"<matplotlib.figure.Figure at 0x7fdb2d810250>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Extract the scatter tally data from pandas\n",
|
|
"scatter = df[df['score'] == 'scatter']\n",
|
|
"\n",
|
|
"scatter['rel. err.'] = scatter['std. dev.'] / scatter['mean']\n",
|
|
"\n",
|
|
"# Show a scatter plot of the mean vs. the std. dev.\n",
|
|
"scatter.plot(kind='scatter', x='mean', y='rel. err.', title='Scattering Rates')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 39,
|
|
"metadata": {
|
|
"collapsed": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<matplotlib.legend.Legend at 0x7fdb2d555390>"
|
|
]
|
|
},
|
|
"execution_count": 39,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<matplotlib.figure.Figure at 0x7fdb2d555bd0>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Plot a histogram and kernel density estimate for the scattering rates\n",
|
|
"scatter['mean'].plot(kind='hist', bins=25)\n",
|
|
"scatter['mean'].plot(kind='kde')\n",
|
|
"pylab.title('Scattering Rates')\n",
|
|
"pylab.xlabel('Mean')\n",
|
|
"pylab.legend(['KDE', 'Histogram'])"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 2",
|
|
"language": "python",
|
|
"name": "python2"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 2
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython2",
|
|
"version": "2.7.6"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 0
|
|
}
|