{
"metadata": {
"name": "",
"signature": "sha256:54164c4ceb737e62d8c675b1e7def742f9d3f445d44f690905aa19e02eed5879"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Custom Validators and Info Items"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import numpy as np\n",
"import yt\n",
"from yt.analysis_modules.level_sets.api import *\n",
"\n",
"ds = yt.load(\"IsolatedGalaxy/galaxy0030/galaxy0030\")"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Set up the same as before."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"data_source = ds.disk([0.5, 0.5, 0.5], [0., 0., 1.], \n",
" (8, 'kpc'), (1, 'kpc'))\n",
"field = (\"gas\", \"density\")\n",
"step = 2.0\n",
"c_min = 10**np.floor(np.log10(data_source[field]).min() )\n",
"c_max = 10**np.floor(np.log10(data_source[field]).max()+1)\n",
"master_clump = Clump(data_source, field)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Make a custom validator function."
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"The function must take at least one argument."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def min_cell_mass(clump, m_min):\n",
" # clumps are data containers\n",
" cell_mass = clump.quantities.total_quantity(\"cell_mass\")\n",
" return cell_mass >= m_min"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Add this to the list of available validators."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"add_validator(\"minimum_cell_mass\", min_cell_mass)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Now make this the validator to use here."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"master_clump.add_validator(\"minimum_cell_mass\", ds.quan(1e7, \"Msun\"))"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 8
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Make a custom info item to write out for each clump."
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"This is similar to making a new validator. It is a function that must take at least one argument."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def average_temperature(clump):\n",
" t_mean = clump.quantities.weighted_average_quantity(\"temperature\",\n",
" \"cell_mass\")\n",
" return \"Mean temperature: %e K.\" % t_mean"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 10
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Add this to the list of available info items."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"add_clump_info(\"average_temperature\", average_temperature)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 11
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Now add it to the list of used info items."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"master_clump.add_info_item(\"average_temperature\")"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 13
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Begin clump finding!"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"find_clumps(master_clump, c_min, c_max, step)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 14
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Write out clump information."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"write_clump_index(master_clump, 0, \"%s_clump_hierarchy.txt\" % ds)\n",
"write_clumps(master_clump,0, \"%s_clumps.txt\" % ds)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 15
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"!cat galaxy0030_clump_hierarchy.txt"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Clump at level 0:\r\n",
"Cells: 100134.\r\n",
"Mass: 1.296926e+09 Msun.\r\n",
"Jeans Mass (mass-weighted): 4.746875e+09 Msolar.\r\n",
"Jeans Mass (volume-weighted): 1.223489e+11 Msolar.\r\n",
"Max grid level: 8.\r\n",
"Min number density: 1.661908e-04 cm^-3.\r\n",
"Max number density: 5.601262e+00 cm^-3.\r\n",
"Mean temperature: 1.349015e+04 K.\r\n",
"Mean temperature: 1.349015e+04 K.\r\n",
"\r\n",
"\tClump at level 1:\r\n",
"\tCells: 94.\r\n",
"\tMass: 1.784123e+07 Msun.\r\n",
"\tJeans Mass (mass-weighted): 6.287895e+07 Msolar.\r\n",
"\tJeans Mass (volume-weighted): 6.269044e+07 Msolar.\r\n",
"\tMax grid level: 8.\r\n",
"\tMin number density: 3.149490e+00 cm^-3.\r\n",
"\tMax number density: 4.996931e+00 cm^-3.\r\n",
"\tMean temperature: 1.344124e+04 K.\r\n",
"\tMean temperature: 1.344124e+04 K.\r\n",
"\r\n",
"\tClump at level 1:\r\n",
"\tCells: 106.\r\n",
"\tMass: 2.025443e+07 Msun.\r\n",
"\tJeans Mass (mass-weighted): 6.306800e+07 Msolar.\r\n",
"\tJeans Mass (volume-weighted): 6.325248e+07 Msolar.\r\n",
"\tMax grid level: 8.\r\n",
"\tMin number density: 3.251722e+00 cm^-3.\r\n",
"\tMax number density: 4.065772e+00 cm^-3.\r\n",
"\tMean temperature: 1.426605e+04 K.\r\n",
"\tMean temperature: 1.426605e+04 K.\r\n",
"\r\n",
"\tClump at level 1:\r\n",
"\tCells: 104.\r\n",
"\tMass: 1.966537e+07 Msun.\r\n",
"\tJeans Mass (mass-weighted): 8.874298e+07 Msolar.\r\n",
"\tJeans Mass (volume-weighted): 8.754599e+07 Msolar.\r\n",
"\tMax grid level: 8.\r\n",
"\tMin number density: 3.161182e+00 cm^-3.\r\n",
"\tMax number density: 5.285985e+00 cm^-3.\r\n",
"\tMean temperature: 1.558691e+04 K.\r\n",
"\tMean temperature: 1.558691e+04 K.\r\n",
"\r\n",
"\tClump at level 1:\r\n",
"\tCells: 179.\r\n",
"\tMass: 3.434637e+07 Msun.\r\n",
"\tJeans Mass (mass-weighted): 8.451847e+07 Msolar.\r\n",
"\tJeans Mass (volume-weighted): 8.390353e+07 Msolar.\r\n",
"\tMax grid level: 8.\r\n",
"\tMin number density: 3.178488e+00 cm^-3.\r\n",
"\tMax number density: 5.601262e+00 cm^-3.\r\n",
"\tMean temperature: 1.520796e+04 K.\r\n",
"\tMean temperature: 1.520796e+04 K.\r\n",
"\r\n"
]
}
],
"prompt_number": 16
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"!cat galaxy0030_clumps.txt"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Clump:\r\n",
"Cells: 94.\r\n",
"Mass: 1.784123e+07 Msun.\r\n",
"Jeans Mass (mass-weighted): 6.287895e+07 Msolar.\r\n",
"Jeans Mass (volume-weighted): 6.269044e+07 Msolar.\r\n",
"Max grid level: 8.\r\n",
"Min number density: 3.149490e+00 cm^-3.\r\n",
"Max number density: 4.996931e+00 cm^-3.\r\n",
"Mean temperature: 1.344124e+04 K.\r\n",
"Mean temperature: 1.344124e+04 K.\r\n",
"\r\n",
"Clump:\r\n",
"Cells: 106.\r\n",
"Mass: 2.025443e+07 Msun.\r\n",
"Jeans Mass (mass-weighted): 6.306800e+07 Msolar.\r\n",
"Jeans Mass (volume-weighted): 6.325248e+07 Msolar.\r\n",
"Max grid level: 8.\r\n",
"Min number density: 3.251722e+00 cm^-3.\r\n",
"Max number density: 4.065772e+00 cm^-3.\r\n",
"Mean temperature: 1.426605e+04 K.\r\n",
"Mean temperature: 1.426605e+04 K.\r\n",
"\r\n",
"Clump:\r\n",
"Cells: 104.\r\n",
"Mass: 1.966537e+07 Msun.\r\n",
"Jeans Mass (mass-weighted): 8.874298e+07 Msolar.\r\n",
"Jeans Mass (volume-weighted): 8.754599e+07 Msolar.\r\n",
"Max grid level: 8.\r\n",
"Min number density: 3.161182e+00 cm^-3.\r\n",
"Max number density: 5.285985e+00 cm^-3.\r\n",
"Mean temperature: 1.558691e+04 K.\r\n",
"Mean temperature: 1.558691e+04 K.\r\n",
"\r\n",
"Clump:\r\n",
"Cells: 179.\r\n",
"Mass: 3.434637e+07 Msun.\r\n",
"Jeans Mass (mass-weighted): 8.451847e+07 Msolar.\r\n",
"Jeans Mass (volume-weighted): 8.390353e+07 Msolar.\r\n",
"Max grid level: 8.\r\n",
"Min number density: 3.178488e+00 cm^-3.\r\n",
"Max number density: 5.601262e+00 cm^-3.\r\n",
"Mean temperature: 1.520796e+04 K.\r\n",
"Mean temperature: 1.520796e+04 K.\r\n",
"\r\n"
]
}
],
"prompt_number": 17
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Get a list of the leaf clumps and display them in a projection."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"leaf_clumps = get_lowest_clumps(master_clump)\n",
"prj = yt.ProjectionPlot(ds, 2, field, center='c', width=(20,'kpc'))\n",
"prj.annotate_clumps(leaf_clumps)\n",
"prj.show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"
"
],
"metadata": {},
"output_type": "display_data",
"text": [
""
]
}
],
"prompt_number": 18
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}