mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-22 06:55:35 -04:00
2405 lines
153 KiB
Text
2405 lines
153 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, which we can use OpenMC's lattice/universe feature for. 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 create 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+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEwLTEyVDIzOjQ5\nOjA0LTA0OjAw6Y3dGwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMC0xMlQyMzo0OTowNC0wNDow\nMJjQZacAAAAASUVORK5CYII=\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: 170155e8d7935b57fad57bfad6aff1034a80206e\n",
|
|
" Date/Time: 2015-10-12 23:49:04\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",
|
|
" 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 = 4.0100E-01 seconds\n",
|
|
" Reading cross sections = 8.9000E-02 seconds\n",
|
|
" Total time in simulation = 9.1400E+00 seconds\n",
|
|
" Time in transport only = 9.1280E+00 seconds\n",
|
|
" Time in inactive batches = 1.3230E+00 seconds\n",
|
|
" Time in active batches = 7.8170E+00 seconds\n",
|
|
" Time synchronizing fission bank = 1.0000E-03 seconds\n",
|
|
" Sampling source sites = 1.0000E-03 seconds\n",
|
|
" SEND/RECV source sites = 0.0000E+00 seconds\n",
|
|
" Time accumulating tallies = 3.0000E-03 seconds\n",
|
|
" Total time for finalization = 0.0000E+00 seconds\n",
|
|
" Total time elapsed = 9.5500E+00 seconds\n",
|
|
" Calculation Rate (inactive) = 9448.22 neutrons/second\n",
|
|
" Calculation Rate (active) = 4797.24 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 style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\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 0x7f0e3f22ffd0>"
|
|
]
|
|
},
|
|
"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 0x7f0e3ecbe6c8>"
|
|
]
|
|
},
|
|
"execution_count": 27,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n/wfC21DgNNvIcQAAAABJRU5ErkJggg==\n",
|
|
"text/plain": [
|
|
"<matplotlib.figure.Figure at 0x7f0e3ef4b790>"
|
|
]
|
|
},
|
|
"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 style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\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 style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\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 style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\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 style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\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 0x7f0e3ec87f90>"
|
|
]
|
|
},
|
|
"execution_count": 38,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\niUSS+/w/t3PPI3Lev3cAAAAASUVORK5CYII=\n",
|
|
"text/plain": [
|
|
"<matplotlib.figure.Figure at 0x7f0e3ec72f90>"
|
|
]
|
|
},
|
|
"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 0x7f0e3e9f3750>"
|
|
]
|
|
},
|
|
"execution_count": 39,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<matplotlib.figure.Figure at 0x7f0e3ece5250>"
|
|
]
|
|
},
|
|
"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
|
|
}
|