Page MenuHomec4science

Tutorial_interpreter.html
No OneTemporary

File Metadata

Created
Fri, Sep 20, 02:29

Tutorial_interpreter.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Using pNbody with the python interpreter &mdash; pNbody v4 documentation</title>
<link rel="stylesheet" href="../_static/default.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '4',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="top" title="pNbody v4 documentation" href="../index.html" />
<link rel="up" title="Tutorial" href="Tutorial.html" />
<link rel="next" title="Using pNbody with scripts" href="Tutorial_scripts.html" />
<link rel="prev" title="Tutorial" href="Tutorial.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="../np-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="Tutorial_scripts.html" title="Using pNbody with scripts"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="Tutorial.html" title="Tutorial"
accesskey="P">previous</a> |</li>
<li><a href="../index.html">pNbody v4 documentation</a> &raquo;</li>
<li><a href="Tutorial.html" accesskey="U">Tutorial</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="using-pnbody-with-the-python-interpreter">
<h1>Using <strong>pNbody</strong> with the python interpreter<a class="headerlink" href="#using-pnbody-with-the-python-interpreter" title="Permalink to this headline">¶</a></h1>
<p>In order to use this tutorial, you first need to copy some examples provided
with <strong>pNbody</strong>. This can be done by typing:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">pNbody_copy</span><span class="o">-</span><span class="n">examples</span>
</pre></div>
</div>
<p>by default, this create a directory in your home <tt class="docutils literal"><span class="pre">~/pnbody_examples</span></tt>.
Move to this directory:</p>
<div class="highlight-python"><pre>cd ~/pnbody_examples</pre>
</div>
<p>Then you can simply follow the instructions below.
First, start the python interpreter:</p>
<div class="highlight-python"><pre>leo@obsrevaz:~/pnbody_examples python
Python 2.4.2 (#2, Jul 13 2006, 15:26:48)
[GCC 4.0.1 (4.0.1-5mdk for Mandriva Linux release 2006.0)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
&gt;&gt;&gt;</pre>
</div>
<p>Now, you can load the <strong>pNbody</strong> module:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">pNbody</span> <span class="kn">import</span> <span class="o">*</span>
</pre></div>
</div>
<div class="section" id="creating-pnbody-objects-from-scratch">
<h2>Creating <strong>pNbody</strong> objects from scratch<a class="headerlink" href="#creating-pnbody-objects-from-scratch" title="Permalink to this headline">¶</a></h2>
<p>We can first start by creating a default <strong>pNbody</strong> objet and get info about it</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span> <span class="o">=</span> <span class="n">Nbody</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">info</span><span class="p">()</span>
<span class="go">-----------------------------------</span>
<span class="go">particle file : [&#39;file.dat&#39;]</span>
<span class="go">ftype : &#39;Nbody_default&#39;</span>
<span class="go">mxntpe : 6</span>
<span class="go">nbody : 0</span>
<span class="go">nbody_tot : 0</span>
<span class="go">npart : [0, 0, 0, 0, 0, 0]</span>
<span class="go">npart_tot : [0, 0, 0, 0, 0, 0]</span>
<span class="go">mass_tot : 0.0</span>
<span class="go">byteorder : &#39;little&#39;</span>
<span class="go">pio : &#39;no&#39;</span>
<span class="go">&gt;&gt;&gt;</span>
</pre></div>
</div>
<p>All variables linked to the object nb are accesible by typing nb. followed by the associated variables :</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">nbody</span>
<span class="go">0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">mass_tot</span>
<span class="go">0.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">pio</span>
<span class="go">&#39;no&#39;</span>
</pre></div>
</div>
<p>Now, you can create an object by giving the positions of particles:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">pos</span> <span class="o">=</span> <span class="n">ones</span><span class="p">((</span><span class="mi">10</span><span class="p">,</span><span class="mi">3</span><span class="p">),</span><span class="n">float32</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span> <span class="o">=</span> <span class="n">Nbody</span><span class="p">(</span><span class="n">pos</span><span class="o">=</span><span class="n">pos</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">info</span><span class="p">()</span>
<span class="go">-----------------------------------</span>
<span class="go">particle file : [&#39;file.dat&#39;]</span>
<span class="go">ftype : &#39;Nbody_default&#39;</span>
<span class="go">mxntpe : 6</span>
<span class="go">nbody : 10</span>
<span class="go">nbody_tot : 10</span>
<span class="go">npart : array([10, 0, 0, 0, 0, 0])</span>
<span class="go">npart_tot : array([10, 0, 0, 0, 0, 0])</span>
<span class="go">mass_tot : 1.00000011921</span>
<span class="go">byteorder : &#39;little&#39;</span>
<span class="go">pio : &#39;no&#39;</span>
<span class="go">len pos : 10</span>
<span class="go">pos[0] : array([ 1., 1., 1.], dtype=float32)</span>
<span class="go">pos[-1] : array([ 1., 1., 1.], dtype=float32)</span>
<span class="go">len vel : 10</span>
<span class="go">vel[0] : array([ 0., 0., 0.], dtype=float32)</span>
<span class="go">vel[-1] : array([ 0., 0., 0.], dtype=float32)</span>
<span class="go">len mass : 10</span>
<span class="go">mass[0] : 0.10000000149</span>
<span class="go">mass[-1] : 0.10000000149</span>
<span class="go">len num : 10</span>
<span class="go">num[0] : 0</span>
<span class="go">num[-1] : 9</span>
<span class="go">len tpe : 10</span>
<span class="go">tpe[0] : 0</span>
<span class="go">tpe[-1] : 0</span>
</pre></div>
</div>
<p>In this case, you can see that the class automatically intitialize other arrays variables
(vel, mass, num and rsp) with default values. Only the first and the last element of
each defined vector are displyed by the methode info. All defined arrays and array elements
may be easily accessible using the numarray convensions. For exemple, to display and
change the positions of the tree first particles, type:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">pos</span><span class="p">[:</span><span class="mi">3</span><span class="p">]</span>
<span class="go">array([[ 1., 1., 1.],</span>
<span class="go"> [ 1., 1., 1.],</span>
<span class="go"> [ 1., 1., 1.]], type=float32)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">pos</span><span class="p">[:</span><span class="mi">3</span><span class="p">]</span><span class="o">=</span><span class="mi">2</span><span class="o">*</span><span class="n">ones</span><span class="p">((</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">),</span><span class="n">float32</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">pos</span><span class="p">[:</span><span class="mi">3</span><span class="p">]</span>
<span class="go">array([[ 2., 2., 2.],</span>
<span class="go"> [ 2., 2., 2.],</span>
<span class="go"> [ 2., 2., 2.]], type=float32)</span>
</pre></div>
</div>
</div>
<div class="section" id="open-from-existing-file">
<h2>Open from existing file<a class="headerlink" href="#open-from-existing-file" title="Permalink to this headline">¶</a></h2>
<p>Now, lets try to open the gadget snapshot gadget_z00.dat. This is achieved by typing:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span> <span class="o">=</span> <span class="n">Nbody</span><span class="p">(</span><span class="s">&#39;gadget_z00.dat&#39;</span><span class="p">,</span><span class="n">ftype</span><span class="o">=</span><span class="s">&#39;gadget&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>Again, informatins on this snapshot may be obtained using the instance info():</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">info</span><span class="p">()</span>
<span class="go">-----------------------------------</span>
<span class="go">particle file : [&#39;gadget_z00.dat&#39;]</span>
<span class="go">ftype : &#39;Nbody_gadget&#39;</span>
<span class="go">mxntpe : 6</span>
<span class="go">nbody : 20560</span>
<span class="go">nbody_tot : 20560</span>
<span class="go">npart : array([ 9160, 10280, 0, 0, 1120, 0])</span>
<span class="go">npart_tot : array([ 9160, 10280, 0, 0, 1120, 0])</span>
<span class="go">mass_tot : 79.7066955566</span>
<span class="go">byteorder : &#39;little&#39;</span>
<span class="go">pio : &#39;no&#39;</span>
<span class="go">len pos : 20560</span>
<span class="go">pos[0] : array([-1294.48828125, -2217.09765625, -9655.49609375], dtype=float32)</span>
<span class="go">pos[-1] : array([ -986.0625 , -2183.83203125, 4017.04296875], dtype=float32)</span>
<span class="go">len vel : 20560</span>
<span class="go">vel[0] : array([ -69.80491638, 60.56475067, -166.32981873], dtype=float32)</span>
<span class="go">vel[-1] : array([-140.59715271, -66.44669342, -37.01613235], dtype=float32)</span>
<span class="go">len mass : 20560</span>
<span class="go">mass[0] : 0.00108565215487</span>
<span class="go">mass[-1] : 0.00108565215487</span>
<span class="go">len num : 20560</span>
<span class="go">num[0] : 21488</span>
<span class="go">num[-1] : 1005192</span>
<span class="go">len tpe : 20560</span>
<span class="go">tpe[0] : 0</span>
<span class="go">tpe[-1] : 4</span>
<span class="go">atime : 1.0</span>
<span class="go">redshift : 2.22044604925e-16</span>
<span class="go">flag_sfr : 1</span>
<span class="go">flag_feedback : 1</span>
<span class="go">nall : [ 9160 10280 0 0 1120 0]</span>
<span class="go">flag_cooling : 1</span>
<span class="go">num_files : 1</span>
<span class="go">boxsize : 100000.0</span>
<span class="go">omega0 : 0.3</span>
<span class="go">omegalambda : 0.7</span>
<span class="go">hubbleparam : 0.7</span>
<span class="go">flag_age : 0</span>
<span class="go">flag_metals : 0</span>
<span class="go">nallhw : [0 0 0 0 0 0]</span>
<span class="go">flag_entr_ic : 0</span>
<span class="go">critical_energy_spec: 0.0</span>
<span class="go">len u : 20560</span>
<span class="go">u[0] : 6606.63037109</span>
<span class="go">u[-1] : 0.0</span>
<span class="go">len rho : 20560</span>
<span class="go">rho[0] : 7.05811936674e-11</span>
<span class="go">rho[-1] : 0.0</span>
<span class="go">len rsp : 20560</span>
<span class="go">rsp[0] : 909.027587891</span>
<span class="go">rsp[-1] : 0.0</span>
<span class="go">len opt : 20560</span>
<span class="go">opt[0] : 446292.5625</span>
<span class="go">opt[-1] : 0.0</span>
</pre></div>
</div>
<p>You can obtain informations on physical values, like the center of mass
or the total angular momentum vector by typing:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">cm</span><span class="p">()</span>
<span class="go">array([-1649.92651346, 609.98256428, -1689.04011033])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">Ltot</span><span class="p">()</span>
<span class="go">array([-1112078.125 , -755964.1875, -1536667.125 ], dtype=float32)</span>
</pre></div>
</div>
<p>In order to visualise the model in position space, it is possible to
generate a surface density map of it using the display instance:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">10000</span><span class="p">,</span><span class="mi">10000</span><span class="p">),</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;light&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>You can now performe some operations on the model in order to explore a specific
region. First, translate the model in position space:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">translate</span><span class="p">([</span><span class="mi">3125</span><span class="p">,</span><span class="o">-</span><span class="mi">4690</span><span class="p">,</span><span class="mi">1720</span><span class="p">])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">10000</span><span class="p">,</span><span class="mi">10000</span><span class="p">),</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;light&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">1000</span><span class="p">,</span><span class="mi">1000</span><span class="p">),</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;light&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>Ou can now rotate around:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">rotate</span><span class="p">(</span><span class="n">angle</span><span class="o">=</span><span class="n">pi</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">1000</span><span class="p">,</span><span class="mi">1000</span><span class="p">),</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;light&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>You can now display a temperature map of the model. First,
create a new object with only the gas particles:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb_gas</span> <span class="o">=</span> <span class="n">nb</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s">&#39;gas&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb_gas</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">1000</span><span class="p">,</span><span class="mi">1000</span><span class="p">),</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;light&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>now, display the temperture mass-weighted map:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb_gas</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">1000</span><span class="p">,</span><span class="mi">1000</span><span class="p">),</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;rainbow4&#39;</span><span class="p">,</span><span class="n">mode</span><span class="o">=</span><span class="s">&#39;T&#39;</span><span class="p">,</span><span class="n">filter_name</span><span class="o">=</span><span class="s">&#39;gaussian&#39;</span><span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="selection-of-particles">
<h2>Selection of particles<a class="headerlink" href="#selection-of-particles" title="Permalink to this headline">¶</a></h2>
<p>You can select only particles within a radius smaller tha 500 (in user units)
with respect to the center:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb_sub</span> <span class="o">=</span> <span class="n">nb</span><span class="o">.</span><span class="n">selectc</span><span class="p">((</span><span class="n">nb</span><span class="o">.</span><span class="n">rxyz</span><span class="p">()</span><span class="o">&lt;</span><span class="mi">500</span><span class="p">))</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb_sub</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">1000</span><span class="p">,</span><span class="mi">1000</span><span class="p">),</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;light&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>Now, rename the new model and save it:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb_sub</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="s">&#39;gadget_z00_sub.dat&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb_sub</span><span class="o">.</span><span class="n">write</span><span class="p">()</span>
</pre></div>
</div>
<p>A new gadget file has been created and saved in the current directory.
We can now select particles as a function of the temperature.
First, display the maximum temperature among all gas particles,
then selectc particles and finally save in &#8216;T11.num&#8217; the identifier (variable num) of these particles:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">log10</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="n">nb_gas</span><span class="o">.</span><span class="n">T</span><span class="p">()))</span>
<span class="go">12.8707923889</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb_sub</span> <span class="o">=</span> <span class="n">nb_gas</span><span class="o">.</span><span class="n">selectc</span><span class="p">(</span> <span class="p">(</span><span class="n">nb_gas</span><span class="o">.</span><span class="n">T</span><span class="p">()</span><span class="o">&gt;</span><span class="mf">1e11</span><span class="p">)</span> <span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb_sub</span><span class="o">.</span><span class="n">write_num</span><span class="p">(</span><span class="s">&#39;T11.num&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>Now open a new snapshot, from the same simulation, but at different redshift and find the
particles in previous snapshot with temperature higher than $10^{11}$:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span> <span class="o">=</span> <span class="n">Nbody</span><span class="p">(</span><span class="s">&#39;gadget_z40.dat&#39;</span><span class="p">,</span><span class="n">ftype</span><span class="o">=</span><span class="s">&#39;gadget&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">10000</span><span class="p">,</span><span class="mi">10000</span><span class="p">),</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;light&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb_sub</span> <span class="o">=</span> <span class="n">nb</span><span class="o">.</span><span class="n">selectp</span><span class="p">(</span><span class="nb">file</span><span class="o">=</span><span class="s">&#39;T11.num&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb_sub</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">10000</span><span class="p">,</span><span class="mi">10000</span><span class="p">),</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;light&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>Now, instead of saving it in a gadget file, save it in a binary file type.
You simply need to call the set_ftype instance before saving it:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span> <span class="o">=</span> <span class="n">nb</span><span class="o">.</span><span class="n">set_ftype</span><span class="p">(</span><span class="s">&#39;binary&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="s">&#39;binary.dat&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb</span><span class="o">.</span><span class="n">write</span><span class="p">()</span>
</pre></div>
</div>
</div>
<div class="section" id="merging-two-models">
<h2>Merging two models<a class="headerlink" href="#merging-two-models" title="Permalink to this headline">¶</a></h2>
<p>As a last example, we show how two <strong>pNbody</strong> models can be easyly merged with only 11 lines:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb1</span> <span class="o">=</span> <span class="n">Nbody</span><span class="p">(</span><span class="s">&#39;disk.dat&#39;</span><span class="p">,</span><span class="n">ftype</span><span class="o">=</span><span class="s">&#39;gadget&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb2</span> <span class="o">=</span> <span class="n">Nbody</span><span class="p">(</span><span class="s">&#39;disk.dat&#39;</span><span class="p">,</span><span class="n">ftype</span><span class="o">=</span><span class="s">&#39;gadget&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb1</span><span class="o">.</span><span class="n">rotate</span><span class="p">(</span><span class="n">angle</span><span class="o">=</span><span class="n">pi</span><span class="o">/</span><span class="mi">4</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb1</span><span class="o">.</span><span class="n">translate</span><span class="p">([</span><span class="o">-</span><span class="mi">150</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb1</span><span class="o">.</span><span class="n">vel</span> <span class="o">=</span> <span class="n">nb1</span><span class="o">.</span><span class="n">vel</span> <span class="o">+</span> <span class="p">[</span><span class="mi">50</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb2</span><span class="o">.</span><span class="n">rotate</span><span class="p">(</span><span class="n">angle</span><span class="o">=</span><span class="n">pi</span><span class="o">/</span><span class="mi">4</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb2</span><span class="o">.</span><span class="n">translate</span><span class="p">([</span><span class="o">+</span><span class="mi">150</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">50</span><span class="p">])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb2</span><span class="o">.</span><span class="n">vel</span> <span class="o">=</span> <span class="n">nb2</span><span class="o">.</span><span class="n">vel</span> <span class="o">-</span> <span class="p">[</span><span class="mi">50</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb3</span> <span class="o">=</span> <span class="n">nb1</span> <span class="o">+</span> <span class="n">nb2</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb3</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="s">&#39;merge.dat&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb3</span><span class="o">.</span><span class="n">write</span><span class="p">()</span>
</pre></div>
</div>
<p>Now display the result from different point of view:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb3</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span><span class="mi">300</span><span class="p">),</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;lut2&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb3</span> <span class="o">=</span> <span class="n">nb3</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s">&#39;disk&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb3</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span><span class="mi">300</span><span class="p">),</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;lut2&#39;</span><span class="p">,</span><span class="n">view</span><span class="o">=</span><span class="s">&#39;xz&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb3</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span><span class="mi">300</span><span class="p">),</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;lut2&#39;</span><span class="p">,</span><span class="n">view</span><span class="o">=</span><span class="s">&#39;xy&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb3</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span><span class="mi">300</span><span class="p">),</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;lut2&#39;</span><span class="p">,</span><span class="n">view</span><span class="o">=</span><span class="s">&#39;yz&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nb3</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span><span class="mi">300</span><span class="p">),</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;lut2&#39;</span><span class="p">,</span><span class="n">xp</span><span class="o">=</span><span class="p">[</span><span class="o">-</span><span class="mi">100</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">])</span>
</pre></div>
</div>
<p>or save it into a gif file:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nb3</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span><span class="mi">300</span><span class="p">),</span><span class="n">shape</span><span class="o">=</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span><span class="mi">256</span><span class="p">),</span><span class="n">palette</span><span class="o">=</span><span class="s">&#39;lut2&#39;</span><span class="p">,</span><span class="n">xp</span><span class="o">=</span><span class="p">[</span><span class="o">-</span><span class="mi">100</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">],</span><span class="n">save</span><span class="o">=</span><span class="s">&#39;image.gif&#39;</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/icon-small.jpg" alt="Logo"/>
</a></p>
<h3><a href="../index.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Using <strong>pNbody</strong> with the python interpreter</a><ul>
<li><a class="reference internal" href="#creating-pnbody-objects-from-scratch">Creating <strong>pNbody</strong> objects from scratch</a></li>
<li><a class="reference internal" href="#open-from-existing-file">Open from existing file</a></li>
<li><a class="reference internal" href="#selection-of-particles">Selection of particles</a></li>
<li><a class="reference internal" href="#merging-two-models">Merging two models</a></li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="Tutorial.html"
title="previous chapter">Tutorial</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="Tutorial_scripts.html"
title="next chapter">Using pNbody with scripts</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../_sources/rst/Tutorial_interpreter.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="../search.html" method="get">
<input type="text" name="q" size="18" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="../np-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="Tutorial_scripts.html" title="Using pNbody with scripts"
>next</a> |</li>
<li class="right" >
<a href="Tutorial.html" title="Tutorial"
>previous</a> |</li>
<li><a href="../index.html">pNbody v4 documentation</a> &raquo;</li>
<li><a href="Tutorial.html" >Tutorial</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2011, Yves Revaz.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
</div>
</body>
</html>

Event Timeline