Alexandre Beelen @ IAShttp://www.ias.u-psud.fr/pperso/abeelen/2017-06-02T00:00:00+02:00STILTS and Python2017-06-02T00:00:00+02:002017-06-02T00:00:00+02:00Alexandre Beelentag:www.ias.u-psud.fr,2017-06-02:/pperso/abeelen/articles/stilts-and-python.html<p>STILTS is a very useful program, in particular to convert [VOTABLE] between several serializations. But can be difficult to use outside of TOPCAT</p><p><a href="http://www.star.bris.ac.uk/~mbt/stilts/sun256/sun256.html">STILTS</a> is a very useful program, in particular to convert <a href="http://www.ivoa.net/documents/VOTable/">VOTABLE</a> between several serializations. But can be difficult to use outside of <a href="http://www.star.bris.ac.uk/~mbt/topcat/">TOPCAT</a>. It is as simple as</p>
<div class="highlight"><pre><span></span>stilts tcopy <span class="nv">ifmt</span><span class="o">=</span>votable <span class="nv">in</span><span class="o">=</span>table.xml <span class="nv">ofmt</span><span class="o">=</span>fits <span class="nv">out</span><span class="o">=</span>table.fits
</pre></div>
<p>to convert from an <a href="http://www.ivoa.net/documents/VOTable/">VOTABLE</a> in xml format to its fits serialization. However, <a href="http://www.star.bris.ac.uk/~mbt/stilts/sun256/sun256.html">STILTS</a> store most of the metadata of the <a href="http://www.ivoa.net/documents/VOTable/">VOTABLE</a> as bytes in the first extension as BINTABLE, with these comments :</p>
<div class="highlight"><pre><span></span>COMMENT The data in this primary HDU consists of bytes which
COMMENT comprise a VOTABLE document.
COMMENT The VOTable describes the metadata of the table contained
COMMENT in the following BINTABLE extension.
COMMENT Such a BINTABLE extension can be used on its own as a perfectly
COMMENT good table, but the information from this HDU may provide some
COMMENT useful additional metadata.
</pre></div>
<p>Reading the binary table returns a lengthy array of indecipherable bytes. Hopefully Python can be of some helps, by transforming it into string representation of a bytearray.</p>
<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">astropy.io</span> <span class="kn">import</span> <span class="n">fits</span>
<span class="n">data</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="nb">bytearray</span><span class="p">(</span><span class="n">fits</span><span class="o">.</span><span class="n">getdata</span><span class="p">(</span><span class="s1">'table.fits'</span><span class="p">,</span> <span class="mi">0</span><span class="p">)))</span>
</pre></div>
<p>This string is human readable but still not very useful in its form. But it can easily be parsed by <a href="https://docs.python.org/2/library/xml.etree.elementtree.html">ElementTree</a></p>
<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">etree</span>
<span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
</pre></div>
<p>Now we can easily access all the keys from the <a href="http://www.ivoa.net/documents/VOTable/">VOTABLE</a>, for, e.g. looking for the value of the <code>CreatorDate</code> <code>PARAM</code></p>
<div class="highlight"><pre><span></span>root.find(".//*[@name='CreatorDate']").attrib['value']
</pre></div>IDL & MPI2016-06-07T00:00:00+02:002016-06-07T00:00:00+02:00Alexandre Beelentag:www.ias.u-psud.fr,2016-06-07:/pperso/abeelen/articles/idl-mpi.html<p>They are several ways of efficient programming with IDL. The most common way is to use the <a href="https://www.harrisgeospatial.com/docs/the__thread_pool.html">IDL Thread Pool</a>, which is implemented in several routines and operation on large arrays. But sometimes, matrix or large vector operations are not possible, and/or not sufficient. Sometimes, we would like to …</p><p>They are several ways of efficient programming with IDL. The most common way is to use the <a href="https://www.harrisgeospatial.com/docs/the__thread_pool.html">IDL Thread Pool</a>, which is implemented in several routines and operation on large arrays. But sometimes, matrix or large vector operations are not possible, and/or not sufficient. Sometimes, we would like to break a simple <a href="(https://www.harrisgeospatial.com/docs/for.htmll)">FOR loop</a> into several parallel IDL sessions.</p>
<h2><a href="https://www.harrisgeospatial.com/docs/IDL_IDLBridge.html">IDL_IDLBridge</a></h2>
<p>This is the purpose of <a href="https://www.harrisgeospatial.com/docs/IDL_IDLBridge.html">IDL_IDLBridge</a> which allow to create sub instances of <a href="http://www.harrisgeospatial.com/ProductsandSolutions/GeospatialProducts/IDL.aspx">IDL</a> and control them within the original <a href="http://www.harrisgeospatial.com/ProductsandSolutions/GeospatialProducts/IDL.aspx">IDL</a> instance. A nice tutorial can be find <a href="http://daedalus.as.arizona.edu/wiki/ParallelIDL">here</a>, and Robert da Silva wrote the routine <a href="http://slugidl.pbworks.com/w/page/37642590/split_for%20tutorial">split_for</a> which allow to split simple loops without entering into the specific syntax of <a href="https://www.harrisgeospatial.com/docs/IDL_IDLBridge.html">IDL_IDLBridge</a>. Unfortunately, <a href="https://www.harrisgeospatial.com/docs/IDL_IDLBridge.html">IDL_IDLBridge</a> only creates new processes of <a href="http://www.harrisgeospatial.com/ProductsandSolutions/GeospatialProducts/IDL.aspx">IDL</a> on the same computer, as child processes, and sometimes, this is not enough.</p>
<p>When dealing with a cluster of computer, the most convenient way to use several nodes is through <a href="(https://en.wikipedia.org/wiki/Message_Passing_Interface)">MPI</a>. At the expense of loosing the real purpose of <a href="(https://en.wikipedia.org/wiki/Message_Passing_Interface)">MPI</a>, i.e. passing messages, it is possible to launch several instances of <a href="http://www.harrisgeospatial.com/ProductsandSolutions/GeospatialProducts/IDL.aspx">IDL</a> in parallel, on one or several nodes in a cluster. It is thus possible to split a long and complex <a href="(https://www.harrisgeospatial.com/docs/for.htmll)">FOR loop</a> into several processes on potentially several nodes.</p>
<h2><a href="http://www.harrisgeospatial.com/ProductsandSolutions/GeospatialProducts/IDL.aspx">IDL</a> & <a href="(https://en.wikipedia.org/wiki/Message_Passing_Interface)">MPI</a></h2>
<p>It is possible to launch several instance of <a href="http://www.harrisgeospatial.com/ProductsandSolutions/GeospatialProducts/IDL.aspx">IDL</a> using <a href="(https://en.wikipedia.org/wiki/Message_Passing_Interface)">MPI</a> :</p>
<div class="highlight"><pre><span></span><span class="nv">nMPI</span><span class="o">=</span><span class="c1">#ntasks</span>
mpirun -n <span class="nv">$nMPI</span> idl mpi_poc.pro
</pre></div>
<p>will launch several independent <a href="http://www.harrisgeospatial.com/ProductsandSolutions/GeospatialProducts/IDL.aspx">IDL</a> processes, which will all run the same program <code>mpi_poc.pro</code>. This would produce several times the exact same output. However, at least using the <a href="https://www.open-mpi.org/">OpenMPI</a> implementation, it is possible to retrieve <code>MPI_COMM_WORLD_RANK</code> and <code>MPI_COMM_WORLD_SIZE</code> as system variables and thus split any big <a href="(https://www.harrisgeospatial.com/docs/for.htmll)">FOR loop</a>. The results will then depends on the <code>MPI_COMM_WORLD_RANK</code> value and could be saved using the rank as an unique identifier.</p>
<p>I wrote a few <a href="https://git.ias.u-psud.fr/abeelen/IDL/tree/master/mpi">simple scripts</a> to help parallelize a long <a href="(https://www.harrisgeospatial.com/docs/for.htmll)">FOR loop</a>. Note however that combining the results of the <a href="(https://www.harrisgeospatial.com/docs/for.htmll)">FOR loop</a> will require disk IO and thus, the iterations of the <a href="(https://www.harrisgeospatial.com/docs/for.htmll)">FOR loop</a> should be rather CPU intensive in order to be efficient. The following example compute the sum of all indexes between two values.</p>
<div class="highlight"><pre><span></span><span class="c c-Singleline">;; mpi_poc.pro</span>
<span class="c c-Singleline">;; Let's compute the sum of all indexes between start and stop</span>
<span class="c c-Singleline">;; Retrieve the MPI RANK from system variables</span>
mpi_rank, rank
start <span class="o">=</span> <span class="mi">0</span>
<span class="nb">stop</span> <span class="o">=</span> <span class="mi">11</span>
sum <span class="o">=</span> <span class="mi">0</span>
<span class="c c-Singleline">;; Divide the task among the different MPI ranks</span>
mpi_helper, start, <span class="nb">stop</span>, i_start, i_stop
<span class="c c-Singleline">;; This is the main loop, should be an intensive task....</span>
<span class="k">FOR</span> index<span class="o">=</span>i_start, i_stop<span class="o">-</span><span class="mi">1</span> <span class="k">DO</span> <span class="k">BEGIN</span> $
<span class="nb">PRINT</span>, rank, index, FORMAT<span class="o">=</span><span class="s1">'("rank: ", I2, " doing ", I2)'</span> &$
<span class="nb">WAIT</span>, start &$
sum <span class="o">+=</span> index
<span class="c c-Singleline">;; save the result in an unique output file</span>
<span class="nb">SAVE</span>, FILENAME<span class="o">=</span><span class="nb">STRING</span>(rank, FORMAT<span class="o">=</span><span class="s1">'("poc_",I2.2,".sav")'</span>), sum
<span class="c c-Singleline">;; Do not forget to exit at the end</span>
<span class="nb">exit</span>
</pre></div>
<p>Launching 5 instances of this program with</p>
<div class="highlight"><pre><span></span>mpirun -n <span class="m">5</span> idl mpi_poc.pro
</pre></div>
<p>will result in 5 files</p>
<div class="highlight"><pre><span></span>poc_00.sav poc_01.sav poc_02.sav poc_03.sav poc_04.sav
</pre></div>
<p>which can be combined using</p>
<div class="highlight"><pre><span></span>sum_combined <span class="o">=</span> <span class="mi">0</span>
files <span class="o">=</span> <span class="nb">FILE_SEARCH</span>(<span class="s1">'poc_*.sav'</span>)
<span class="k">FOR</span> iFile<span class="o">=</span><span class="mi">0</span>, <span class="nb">N_ELEMENTS</span>(files)<span class="o">-</span><span class="mi">1</span> <span class="k">DO</span> <span class="k">BEGIN</span> $
<span class="nb">RESTORE</span>, files[iFile] &$
sum_combined <span class="o">+=</span> sum
<span class="nb">PRINT</span>, sum_combined
<span class="nb">PRINT</span>, <span class="nb">TOTAL</span>(<span class="nb">INDGEN</span>(<span class="mi">11</span>))
</pre></div>
<h2><a href="http://www.harrisgeospatial.com/ProductsandSolutions/GeospatialProducts/IDL.aspx">IDL</a> & <a href="(https://en.wikipedia.org/wiki/Message_Passing_Interface)">MPI</a> & <a href="https://www.harrisgeospatial.com/docs/IDL_IDLBridge.html">IDL_IDLBridge</a></h2>
<p>When using a cluster of computer, it is thus possible to allocate several nodes and launch one instance of <a href="http://www.harrisgeospatial.com/ProductsandSolutions/GeospatialProducts/IDL.aspx">IDL</a> per node which will use efficiently all the core of the node using <a href="https://www.harrisgeospatial.com/docs/IDL_IDLBridge.html">IDL_IDLBridge</a>. For example, using the <a href="http://slurm.schedmd.com/">slurm</a> scheduler, one could setup a batch script as</p>
<div class="highlight"><pre><span></span><span class="ch">#!/bin/bash</span>
<span class="c1">#SBATCH -N 2</span>
<span class="c1">#SBATCH -n 64</span>
<span class="c1">#SBATCH --exclusive</span>
<span class="c1">#SBATCH --job-name "MPI IDL"</span>
mpirun -pernode idl mpi_poc.pro
</pre></div>
<p>which will launch 2 <a href="http://www.harrisgeospatial.com/ProductsandSolutions/GeospatialProducts/IDL.aspx">IDL</a> processes on two different nodes with a total of 64 cores.</p>
<p>accept that the <a href="https://www.harrisgeospatial.com/docs/IDL_IDLBridge.html">IDL_IDLBridge</a> documentation state that :</p>
<blockquote>
<p><strong>Note</strong>: On UNIX systems, the IDL_IDLBridge requires that the DISPLAY environment variable be set to a valid X Windows display. If no display is available, execution of the IDL_IDLBridge will halt, with error messages that include:</p>
<p>'IDL_IDLBridge: Unable to establish X Connection.'</p>
</blockquote>
<p>which render the sbatch very impracticable, as one need to be sure that X11 is forwarded on all the allocated node of the cluster which are not known in advance. Thanks again <a href="http://www.harrisgeospatial.com/ProductsandSolutions/GeospatialProducts/IDL.aspx">IDL</a>... Hopefully <a href="https://www.x.org/releases/X11R7.6/doc/man/man1/Xvfb.1.xhtml">Xvfb</a> allows to run virtual x11 environment and thus</p>
<div class="highlight"><pre><span></span>srun xvfb-run idl mpi_poc.pro
</pre></div>
<p>will be able to run.</p>D3js test using mpld32015-11-18T00:00:00+01:002015-11-18T00:00:00+01:00Alexandre Beelentag:www.ias.u-psud.fr,2015-11-18:/pperso/abeelen/articles/d3js-test-using-mpld3.html<p>Combining D3js mpld3 and Pelican</p><p>After my initial testing of <a href="http://d3js.org">D3js</a>, I came accross <a href="http://mpld3.github.io/">mpld3</a> and I wanted to quickly know if it was possible to integrate those nice plot with <a href="https://github.com/wrobstory/pelican_dynamic">pelican_dynamic</a>.</p>
<p>I took the code from the <a href="http://mpld3.github.io/examples/scatter_tooltip.html#scatter-tooltip">Scatter Plot With Tooltips</a> example, and instead of showing the result with <code>mpld3.show()</code>, I saved it using</p>
<div class="highlight"><pre><span></span><span class="n">mpld3</span><span class="o">.</span><span class="n">save_json</span><span class="p">(</span><span class="n">fig</span><span class="p">,</span> <span class="s1">'ScatterPlotWithTooltips.json'</span><span class="p">)</span>
</pre></div>
<p>Thus I just need to create a simple js file with</p>
<div class="highlight"><pre><span></span><span class="nx">$</span><span class="p">.</span><span class="nx">getJSON</span><span class="p">(</span><span class="s2">"ScatterPlotWithTooltips.json"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">json</span><span class="p">){</span>
<span class="nx">mpld3</span><span class="p">.</span><span class="nx">draw_figure</span><span class="p">(</span><span class="s2">"fig_scatter"</span><span class="p">,</span> <span class="nx">json</span><span class="p">);</span>
<span class="p">});</span>
</pre></div>
<p>And by defining the proper <div> in the mardown document-relative</div></p>
<div class="highlight"><pre><span></span><span class="p"><</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">"d3-chart"</span> <span class="na">id</span><span class="o">=</span><span class="s">"fig_scatter"</span><span class="p">><</span><span class="nt">div</span><span class="p">></span>
</pre></div>
<p>Here is the result :</p>
<div class="d3-chart" id="fig_scatter"></div>
<p>Isn't that a nice looking chart up there?</p>D3js Test2015-11-16T00:00:00+01:002015-11-16T00:00:00+01:00Alexandre Beelentag:www.ias.u-psud.fr,2015-11-16:/pperso/abeelen/articles/d3js-test.html<p>This is a quick migration of old tests using D3js.</p><p>This is a quick migration of old tests using <a href="http://d3js.org">D3js</a>.</p>
<p>Using the same <a href="http://www.json.org">json</a> file</p>
<div class="highlight"><pre><span></span><span class="p">{</span>
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Carte des services informatiques"</span><span class="p">,</span>
<span class="nt">"children"</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Services utilisateurs"</span><span class="p">,</span>
<span class="nt">"children"</span> <span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Comptes et accès"</span><span class="p">,</span>
<span class="nt">"children"</span> <span class="p">:</span> <span class="p">[</span>
<span class="p">{</span> <span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Régles générales"</span><span class="p">,</span> <span class="nt">"size"</span><span class="p">:</span> <span class="mi">500</span><span class="p">},</span>
<span class="p">{</span> <span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Création compte"</span><span class="p">,</span> <span class="nt">"size"</span><span class="p">:</span> <span class="mi">500</span><span class="p">},</span>
<span class="p">{</span> <span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Supression compte"</span><span class="p">,</span> <span class="nt">"size"</span><span class="p">:</span> <span class="mi">500</span><span class="p">},</span>
<span class="p">{</span> <span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Modification du mot de passe"</span><span class="p">,</span> <span class="nt">"size"</span><span class="p">:</span> <span class="mi">500</span><span class="p">},</span>
<span class="p">{</span> <span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Modification des informations personnelles"</span><span class="p">,</span> <span class="nt">"size"</span><span class="p">:</span> <span class="mi">500</span><span class="p">}</span>
<span class="p">]</span>
<span class="p">},</span>
<span class="p">[</span><span class="err">...</span><span class="p">]</span>
</pre></div>
<p>I wrote some simple <a href="http://d3js.org">D3js</a> javascript code following a tutorial</p>
<div class="highlight"><pre><span></span><span class="kd">var</span> <span class="nx">diameter</span> <span class="o">=</span> <span class="mi">960</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">tree_r</span> <span class="o">=</span> <span class="nx">d3</span><span class="p">.</span><span class="nx">layout</span><span class="p">.</span><span class="nx">tree</span><span class="p">()</span>
<span class="p">.</span><span class="nx">size</span><span class="p">([</span><span class="mi">360</span><span class="p">,</span> <span class="nx">diameter</span> <span class="o">/</span> <span class="mi">2</span> <span class="o">-</span> <span class="mi">120</span><span class="p">])</span>
<span class="p">.</span><span class="nx">separation</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span> <span class="nx">b</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="p">(</span><span class="nx">a</span><span class="p">.</span><span class="nx">parent</span> <span class="o">==</span> <span class="nx">b</span><span class="p">.</span><span class="nx">parent</span> <span class="o">?</span> <span class="mi">1</span> <span class="o">:</span> <span class="mi">2</span><span class="p">)</span> <span class="o">/</span> <span class="nx">a</span><span class="p">.</span><span class="nx">depth</span><span class="p">;</span> <span class="p">});</span>
<span class="kd">var</span> <span class="nx">diagonal_r</span> <span class="o">=</span> <span class="nx">d3</span><span class="p">.</span><span class="nx">svg</span><span class="p">.</span><span class="nx">diagonal</span><span class="p">.</span><span class="nx">radial</span><span class="p">()</span>
<span class="p">.</span><span class="nx">projection</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">d</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="p">[</span><span class="nx">d</span><span class="p">.</span><span class="nx">y</span><span class="p">,</span> <span class="nx">d</span><span class="p">.</span><span class="nx">x</span> <span class="o">/</span> <span class="mi">180</span> <span class="o">*</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">PI</span><span class="p">];</span> <span class="p">});</span>
<span class="kd">var</span> <span class="nx">svg_r</span> <span class="o">=</span> <span class="nx">d3</span><span class="p">.</span><span class="nx">select</span><span class="p">(</span><span class="s2">".d3-1"</span><span class="p">).</span><span class="nx">append</span><span class="p">(</span><span class="s2">"svg"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"width"</span><span class="p">,</span> <span class="nx">diameter</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"height"</span><span class="p">,</span> <span class="nx">diameter</span> <span class="o">-</span> <span class="mi">150</span><span class="p">)</span>
<span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s2">"g"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"transform"</span><span class="p">,</span> <span class="s2">"translate("</span> <span class="o">+</span> <span class="nx">diameter</span> <span class="o">/</span> <span class="mi">2</span> <span class="o">+</span> <span class="s2">","</span> <span class="o">+</span> <span class="nx">diameter</span> <span class="o">/</span> <span class="mi">2</span> <span class="o">+</span> <span class="s2">")"</span><span class="p">);</span>
<span class="nx">d3</span><span class="p">.</span><span class="nx">json</span><span class="p">(</span><span class="s2">"ias.json"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">root</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">nodes</span> <span class="o">=</span> <span class="nx">tree_r</span><span class="p">.</span><span class="nx">nodes</span><span class="p">(</span><span class="nx">root</span><span class="p">),</span>
<span class="nx">links</span> <span class="o">=</span> <span class="nx">tree_r</span><span class="p">.</span><span class="nx">links</span><span class="p">(</span><span class="nx">nodes</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">link_r</span> <span class="o">=</span> <span class="nx">svg_r</span><span class="p">.</span><span class="nx">selectAll</span><span class="p">(</span><span class="s2">".link"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">data</span><span class="p">(</span><span class="nx">links</span><span class="p">)</span>
<span class="p">.</span><span class="nx">enter</span><span class="p">().</span><span class="nx">append</span><span class="p">(</span><span class="s2">"path"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"class"</span><span class="p">,</span> <span class="s2">"link"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"d"</span><span class="p">,</span> <span class="nx">diagonal_r</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">node_r</span> <span class="o">=</span> <span class="nx">svg_r</span><span class="p">.</span><span class="nx">selectAll</span><span class="p">(</span><span class="s2">".node"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">data</span><span class="p">(</span><span class="nx">nodes</span><span class="p">)</span>
<span class="p">.</span><span class="nx">enter</span><span class="p">().</span><span class="nx">append</span><span class="p">(</span><span class="s2">"g"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"class"</span><span class="p">,</span> <span class="s2">"node"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"transform"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">d</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="s2">"rotate("</span> <span class="o">+</span> <span class="p">(</span><span class="nx">d</span><span class="p">.</span><span class="nx">x</span> <span class="o">-</span> <span class="mi">90</span><span class="p">)</span> <span class="o">+</span> <span class="s2">")translate("</span> <span class="o">+</span> <span class="nx">d</span><span class="p">.</span><span class="nx">y</span> <span class="o">+</span> <span class="s2">")"</span><span class="p">;</span> <span class="p">})</span>
<span class="nx">node_r</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s2">"circle"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"r"</span><span class="p">,</span> <span class="mf">4.5</span><span class="p">);</span>
<span class="nx">node_r</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s2">"text"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"dy"</span><span class="p">,</span> <span class="s2">".31em"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"text-anchor"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">d</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="nx">d</span><span class="p">.</span><span class="nx">x</span> <span class="o"><</span> <span class="mi">180</span> <span class="o">?</span> <span class="s2">"start"</span> <span class="o">:</span> <span class="s2">"end"</span><span class="p">;</span> <span class="p">})</span>
<span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"transform"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">d</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="nx">d</span><span class="p">.</span><span class="nx">x</span> <span class="o"><</span> <span class="mi">180</span> <span class="o">?</span> <span class="s2">"translate(8)"</span> <span class="o">:</span> <span class="s2">"rotate(180)translate(-8)"</span><span class="p">;</span> <span class="p">})</span>
<span class="p">.</span><span class="nx">text</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">d</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="nx">d</span><span class="p">.</span><span class="nx">name</span><span class="p">;</span> <span class="p">});</span>
<span class="p">});</span>
<span class="nx">d3</span><span class="p">.</span><span class="nx">select</span><span class="p">(</span><span class="s2">".d3-1"</span><span class="p">).</span><span class="nx">style</span><span class="p">(</span><span class="s2">"height"</span><span class="p">,</span> <span class="nx">diameter</span> <span class="o">-</span> <span class="mi">150</span> <span class="o">+</span> <span class="s2">"px"</span><span class="p">);</span>
</pre></div>
<p>And putting everything back to <a href="https://github.com/wrobstory/pelican_dynamic">pelican_dynamic</a> div, magic happens :</p>
<div class="d3-1"></div>
<p>and following the <a href="http://d3js.org">D3js</a> tutorials :</p>
<div class="d3-2"></div>
<p>or even with a bit of dynamics :</p>
<div class="d3-3"></div>From XSLT to Pelican2015-11-03T00:00:00+01:002015-11-03T00:00:00+01:00Alexandre Beelentag:www.ias.u-psud.fr,2015-11-03:/pperso/abeelen/articles/from-xslt-to-pelican.html<p>Writing and publishing a website used to be a painful process. Some years ago, I developped a simple xslt framework to produce my personnal web pages from simple xml files. This was in part because I did not liked any of the big CMS out at that time, requiring database …</p><p>Writing and publishing a website used to be a painful process. Some years ago, I developped a simple xslt framework to produce my personnal web pages from simple xml files. This was in part because I did not liked any of the big CMS out at that time, requiring database backend, and also that I wanted to learn XSLT processing. CSS was a must and compliance with W3C standards whitout saying. As long as I did not wanted to change much on the site, this was ok, and the site was pretty robust since 2005.</p>
<div class="section" id="before">
<h2>Before</h2>
<p>So I needed a simple framework, what is better than homemade ? So lets remove the style, and start writing content, and only (mostly) content and metadata.</p>
<div class="highlight"><pre><span></span><span class="c"><!-- index.xml --></span>
<span class="cp"><?xml version="1.0" encoding="UTF-8"?></span>
<span class="cp"><?DOCTYPE page SYSTEM "my_pages.dtd"?></span>
<span class="cp"><?xml-stylesheet type="text/xsl" href="my_pages.xsl.xml"?></span>
<span class="nt"><page</span> <span class="na">icon=</span><span class="s">"stock_home"</span><span class="nt">></span>
<span class="nt"><title></span>Home<span class="nt"></title></span>
<span class="nt"><text></span>
<span class="nt"><section</span> <span class="na">id=</span><span class="s">"section-id"</span> <span class="na">name=</span><span class="s">"Global Section Name"</span><span class="nt">></span>
<span class="nt"><p></span>Blah Blah<span class="nt"></p></span>
<span class="c"><!-- and any basic html tags --></span>
<span class="nt"></section></span>
<span class="nt"></text></span>
<span class="nt"></page></span>
</pre></div>
<p>Simple enough, <a class="reference external" href="https://www.gnu.org/software/emacs">emacs</a> made, now we need to transform that into a proper html static page, using <a class="reference external" href="http://www.w3.org/TR/1999/REC-xslt-19991116">xsl transformation</a>, this was supposedly the future of <a class="reference external" href="http://www.w3.org/TR/xhtml1">xhtml</a></p>
<div class="highlight"><pre><span></span><span class="c"><!-- my_pages.xslt --></span>
<span class="cp"><?xml version="1.0" encoding="UTF-8"?></span>
<span class="nt"><xsl:stylesheet</span> <span class="na">version=</span><span class="s">"1.0"</span>
<span class="na">xmlns:xsl=</span><span class="s">"http://www.w3.org/1999/XSL/Transform"</span>
<span class="na">xmlns=</span><span class="s">"http://www.w3.org/1999/xhtml"</span>
<span class="nt">></span>
<span class="nt"><xsl:output</span> <span class="na">method=</span><span class="s">"xml"</span> <span class="na">indent=</span><span class="s">"yes"</span> <span class="na">encoding=</span><span class="s">"UTF-8"</span>
<span class="na">doctype-system=</span><span class="s">"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"</span>
<span class="na">doctype-public=</span><span class="s">"-//W3C//DTD XHTML 1.1//EN"</span> <span class="nt">/></span>
<span class="nt"><xsl:include</span> <span class="na">href=</span><span class="s">"header.xsl"</span><span class="nt">/></span>
<span class="nt"><xsl:include</span> <span class="na">href=</span><span class="s">"footer.xsl"</span><span class="nt">/></span>
<span class="nt"><xsl:template</span> <span class="na">match=</span><span class="s">"page"</span><span class="nt">></span>
<span class="nt"><xsl:element</span> <span class="na">name=</span><span class="s">"body"</span><span class="nt">></span>
<span class="nt"><xsl:call-template</span> <span class="na">name=</span><span class="s">"make-header"</span><span class="nt">/></span>
<span class="nt"><div</span> <span class="na">id=</span><span class="s">"pageCell"</span><span class="nt">></span>
<span class="c"><!--pageCell--></span>
<span class="nt"><div</span> <span class="na">id=</span><span class="s">"pageName"</span><span class="nt">></span>
<span class="nt"><h2><xsl:value-of</span> <span class="na">select=</span><span class="s">"title"</span><span class="nt">/></h2></span>
<span class="nt"><xsl:element</span> <span class="na">name=</span><span class="s">"img"</span><span class="nt">></span>
<span class="nt"><xsl:attribute</span> <span class="na">name=</span><span class="s">"src"</span><span class="nt">></span>
icons/<span class="nt"><xsl:value-of</span> <span class="na">select=</span><span class="s">"@icon"</span><span class="nt">/></span>.png
<span class="nt"></xsl:attribute></span>
<span class="nt"><xsl:attribute</span> <span class="na">name=</span><span class="s">"alt"</span><span class="nt">></span>page icon<span class="nt"></xsl:attribute></span>
<span class="nt"></xsl:element></span>
<span class="nt"></div></span>
[....]
</pre></div>
<p>This go on and on to construct the web page, with some common header/menu</p>
<div class="highlight"><pre><span></span><span class="c"><!-- header.xsl --></span>
<span class="nt"><xsl:template</span> <span class="na">name=</span><span class="s">"html-header"</span><span class="nt">></span>
<span class="nt"><title></span>
Alexandre Beelen @ IAS - <span class="nt"><xsl:value-of</span> <span class="na">select=</span><span class="s">"title"</span><span class="nt">/></span>
<span class="nt"></title></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"author"</span> <span class="na">content=</span><span class="s">"Alexandre Beelen"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"keywords"</span> <span class="na">content=</span><span class="s">"astrophysics, astronomy, quasars, black hole, cosmology, IAS, Orsay, MIC, Insitut d'Astrophysique Spatiale"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"description"</span> <span class="na">content=</span><span class="s">"Homepage of Alexandre Beelen"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"page-topic"</span> <span class="na">content=</span><span class="s">"science"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"expires"</span> <span class="na">content=</span><span class="s">"0"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"robots"</span> <span class="na">content=</span><span class="s">"INDEX,FOLLOW"</span> <span class="nt">/></span>
<span class="nt"><link</span> <span class="na">rel=</span><span class="s">"stylesheet"</span> <span class="na">href=</span><span class="s">"page.css"</span> <span class="na">type=</span><span class="s">"text/css"</span> <span class="nt">/></span>
<span class="nt"></xsl:template></span>
<span class="nt"><xsl:template</span> <span class="na">name=</span><span class="s">"make-header"</span><span class="nt">></span>
<span class="nt"><div</span> <span class="na">id=</span><span class="s">"Header"</span><span class="nt">></span>
<span class="nt"><div</span> <span class="na">id=</span><span class="s">"HeaderTitle"</span><span class="nt">></span>
<span class="nt"><h1><a</span> <span class="na">href=</span><span class="s">"http://www.ias.u-psud.fr/pperso/abeelen"</span><span class="nt">></span>Alexandre Beelen @ IAS<span class="nt"></a></h1></span>
<span class="nt"><div</span> <span class="na">id=</span><span class="s">"HeaderTitleLinks"</span><span class="nt">></span>
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"http://www.ias.fr"</span> <span class="na">class=</span><span class="s">"hlink"</span><span class="nt">></span>IAS<span class="nt"></a></span> |
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"http://www.mpifr-bonn.mpg.de"</span> <span class="na">class=</span><span class="s">"hlink"</span><span class="nt">></span>MPIfR<span class="nt"></a></span> |
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"http://www.astro.uni-bonn.de/~webrai"</span> <span class="na">class=</span><span class="s">"hlink"</span><span class="nt">></span>AIfA<span class="nt"></a></span> |
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"http://www.obspm.fr"</span> <span class="na">class=</span><span class="s">"hlink"</span><span class="nt">></span>Obspm<span class="nt"></a></span>
<span class="nt"></div></span>
<span class="nt"></div></span>
<span class="nt"><div</span> <span class="na">id=</span><span class="s">"HeaderNav"</span><span class="nt">></span>
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"index.html"</span> <span class="na">class=</span><span class="s">"glink"</span><span class="nt">></span>Home<span class="nt"></a></span> :
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"cv.html"</span> <span class="na">class=</span><span class="s">"glink"</span><span class="nt">></span>C.V.<span class="nt"></a></span> :
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"talk.html"</span> <span class="na">class=</span><span class="s">"glink"</span><span class="nt">></span>Talk <span class="ni">&amp;</span> Posters<span class="nt"></a></span> :
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"publication.html"</span> <span class="na">class=</span><span class="s">"glink"</span><span class="nt">></span>Publications<span class="nt"></a></span> :
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"database.xml"</span> <span class="na">class=</span><span class="s">"glink"</span><span class="nt">></span>High-z CO database<span class="nt"></a></span> :
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"software.html"</span> <span class="na">class=</span><span class="s">"glink"</span><span class="nt">></span>Tools<span class="nt"></a></span> :
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"http://www.astro.uni-bonn.de/boawiki/"</span> <span class="na">class=</span><span class="s">"glink"</span><span class="nt">></span>Open Boa<span class="nt"></a></span> :
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"http://www.ias.u-psud.fr/sanepic/"</span> <span class="na">class=</span><span class="s">"glink"</span><span class="nt">></span>SANEPIC<span class="nt"></a></span> :
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"schedule.html"</span> <span class="na">class=</span><span class="s">"glink"</span><span class="nt">></span>Schedule<span class="nt"></a></span>
<span class="nt"></div></span>
<span class="nt"></div></span>
<span class="nt"></xsl:template></span>
</pre></div>
<p>where all the links are hardcoded in the file directly. Same goes for the footer. Of course you need a Makefile produce all the pages, and even publish them through a rsync and ssh commands</p>
<div class="highlight"><pre><span></span><span class="nv">SHELL</span><span class="o">=</span> /bin/sh
<span class="nv">srcdir</span> <span class="o">=</span> .
<span class="nv">outdir</span> <span class="o">=</span> <span class="k">$(</span>srcdir<span class="k">)</span>/html
<span class="nv">addstuff</span> <span class="o">=</span> <span class="k">$(</span>srcdir<span class="k">)</span>/download <span class="k">$(</span>srcdir<span class="k">)</span>/icons <span class="k">$(</span>srcdir<span class="k">)</span>/pictures page.css sitemap.xml
<span class="nf">all</span><span class="o">:</span> <span class="n">update</span>
<span class="nf">web</span><span class="o">:</span> <span class="n">index</span>.<span class="n">html</span> <span class="n">software</span>.<span class="n">html</span> <span class="n">talk</span>.<span class="n">html</span> <span class="n">cv</span>.<span class="n">html</span> <span class="n">publication</span>.<span class="n">html</span> <span class="n">schedule</span>.<span class="n">html</span> <span class="n">gildas</span>.<span class="n">html</span>
<span class="nf">update</span><span class="o">:</span> <span class="n">web</span>
cp -fr <span class="k">$(</span>addstuff<span class="k">)</span> <span class="k">$(</span>outdir<span class="k">)</span>
rsync -qavz -e ssh <span class="k">$(</span>outdir<span class="k">)</span>/* abeelen@www:web_perso
ssh abeelen@www.ias.u-psud.fr chgrp -R www web_perso
ssh abeelen@www.ias.u-psud.fr chmod -R a+r web_perso
<span class="nf">.SUFFIXES</span><span class="o">:</span>
<span class="nf">.SUFFIXES</span><span class="o">:</span> .<span class="n">html</span> .<span class="n">xml</span>
<span class="nf">%.html</span><span class="o">:</span> %.<span class="n">xml</span>
xsltproc -o <span class="k">$(</span>outdir<span class="k">)</span>/<span class="nv">$@</span> my_pages.xsl $<
</pre></div>
<p>Everything was working fined and was fully <a class="reference external" href="https://validator.w3.org/">W3C HTML 1.1 compliant</a>. And you can still see it at work <a class="reference external" href="old-site/html/index.html">there</a>. But it was rigid, very rigid... And crazy to maintain... It's 2015 after all !</p>
</div>
<div class="section" id="after">
<h2>After</h2>
<p>Fast forward to 2015, during a power outage, and with only access to Internet, I started the project to migrate my website. After a rapid survey of simple static web site generator, I decided to use <a class="reference external" href="http://docs.getpelican.com">Pelican</a> mainly for its simplicity and the capability to use either <a class="reference external" href="https://en.wikipedia.org/wiki/Markdown">Markdown</a> or <a class="reference external" href="http://docutils.sourceforge.net/docs/ref/rst/introduction.html">reStructuredTex</a>. Simple enough to use, eigher with <a class="reference external" href="https://www.gnu.org/software/emacs">emacs</a> or <a class="reference external" href="https://atom.io">atom</a>.</p>
<p>The previous home page could be written as a simple file</p>
<div class="highlight"><pre><span></span>Home
====
Global Section Name
-------------------
blah blah
</pre></div>
<p>You could choose a theme and voilà ! So how did it go ? I just started a <a class="reference external" href="http://docs.getpelican.com">Pelican</a> tutorial and finished with a full site in half a day. You start by creating a skeleton project</p>
<div class="highlight"><pre><span></span>> pelican-quickstart
</pre></div>
<p>and fill the <cite>content/pages</cite> directory with cleaned version of my previously generated html pages translated to <a class="reference external" href="http://docutils.sourceforge.net/docs/ref/rst/introduction.html">reStructuredTex</a> with <a class="reference external" href="http://pandoc.org/">pandoc</a>. The basic pages were there.</p>
<p>I just had to find a nice theme, and I quickly choose the <a class="reference external" href="http://getbootstrap.com/">bootstrap</a> framework through the <cite>pelican-bootstrap3</cite> theme. And I just had to put everything under revision control using git. And I was done with this website. And well, I could also push it with a Makefile !</p>
</div>
<div class="section" id="even-more">
<h2>Even more</h2>
<p>The journey did not end by with only migrating the old pages to a new simpler system, but it is now easy to add new features with <a class="reference external" href="https://github.com/getpelican/pelican-plugins">pelican-plugins</a>, so here is a list of plugins I used :</p>
<ul class="simple">
<li>better_tables, twitter_bootstrap_rst_directives, bootstrapify<ul>
<li>allow a cleaner presentation with <a class="reference external" href="https://github.com/DandyDev/pelican-bootstrap3">pelican-bootstrap3</a></li>
</ul>
</li>
<li>sitemap<ul>
<li>for a better indexation in web crawler, not having to produce it by hand is a real plus</li>
</ul>
</li>
<li>tag_cloud<ul>
<li>to produce a tag_cloud on the sidebard, utility is still to be proven...</li>
</ul>
</li>
<li>render_math<ul>
<li>allows a clean integration of <a class="reference external" href="https://www.mathjax.org/">MathJax</a>. Adding math is now as simple as writing <span class="math">\(\LaTeX\)</span> both with <a class="reference external" href="http://docutils.sourceforge.net/docs/ref/rst/introduction.html">reStructuredTex</a> and <a class="reference external" href="https://en.wikipedia.org/wiki/Markdown">Markdown</a></li>
</ul>
</li>
<li>tipue_search<ul>
<li>allows for simple search over the static website</li>
</ul>
</li>
<li>pelican_dynamic<ul>
<li>to be able to use <a class="reference external" href="http://d3js.org/">D3js</a> easily within <a class="reference external" href="http://docs.getpelican.com">Pelican</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="configuration">
<h2>Configuration</h2>
<p><a class="reference external" href="http://docs.getpelican.com">Pelican</a> and <a class="reference external" href="https://github.com/DandyDev/pelican-bootstrap3">pelican-bootstrap3</a> allow for a very fine tuning of the created website. One can very simply define which pages are displayed in the menu, and in which order using the meta data <cite>sortorder</cite> for example.</p>
<p>The web site can very easily be tracked with <a class="reference external" href="http://piwik.org/">piwik</a> or <a class="reference external" href="https://www.google.com/analytics/">Google Analytics</a>. One can still transfert standalone files, as I needed for the <a class="reference external" href="https://www.ias.u-psud.fr/pperso/abeelen/database.html">Molecular Database</a>, or even a copy of my <a class="reference external" href="http://www.ias.u-psud.fr/pperso/abeelen/old-site/html">old website</a></p>
</div>
<script type='text/javascript'>if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) {
var align = "center",
indent = "0em",
linebreak = "false";
if (false) {
align = (screen.width < 768) ? "left" : align;
indent = (screen.width < 768) ? "0em" : indent;
linebreak = (screen.width < 768) ? 'true' : linebreak;
}
var mathjaxscript = document.createElement('script');
var location_protocol = (false) ? 'https' : document.location.protocol;
if (location_protocol !== 'http' && location_protocol !== 'https') location_protocol = 'https:';
mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#';
mathjaxscript.type = 'text/javascript';
mathjaxscript.src = location_protocol + '//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML';
mathjaxscript[(window.opera ? "innerHTML" : "text")] =
"MathJax.Hub.Config({" +
" config: ['MMLorHTML.js']," +
" TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'AMS' } }," +
" jax: ['input/TeX','input/MathML','output/HTML-CSS']," +
" extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," +
" displayAlign: '"+ align +"'," +
" displayIndent: '"+ indent +"'," +
" showMathMenu: true," +
" messageStyle: 'normal'," +
" tex2jax: { " +
" inlineMath: [ ['\\\\(','\\\\)'] ], " +
" displayMath: [ ['$$','$$'] ]," +
" processEscapes: true," +
" preview: 'TeX'," +
" }, " +
" 'HTML-CSS': { " +
" styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'inherit ! important'} }," +
" linebreaks: { automatic: "+ linebreak +", width: '90% container' }," +
" }, " +
"}); " +
"if ('SansSerif' !== 'default') {" +
"MathJax.Hub.Register.StartupHook('HTML-CSS Jax Ready',function () {" +
"var VARIANT = MathJax.OutputJax['HTML-CSS'].FONTDATA.VARIANT;" +
"VARIANT['normal'].fonts.unshift('MathJax_SansSerif');" +
"VARIANT['bold'].fonts.unshift('MathJax_SansSerif-bold');" +
"VARIANT['italic'].fonts.unshift('MathJax_SansSerif-italic');" +
"VARIANT['-tex-mathit'].fonts.unshift('MathJax_SansSerif-italic');" +
"});" +
"MathJax.Hub.Register.StartupHook('SVG Jax Ready',function () {" +
"var VARIANT = MathJax.OutputJax.SVG.FONTDATA.VARIANT;" +
"VARIANT['normal'].fonts.unshift('MathJax_SansSerif');" +
"VARIANT['bold'].fonts.unshift('MathJax_SansSerif-bold');" +
"VARIANT['italic'].fonts.unshift('MathJax_SansSerif-italic');" +
"VARIANT['-tex-mathit'].fonts.unshift('MathJax_SansSerif-italic');" +
"});" +
"}";
(document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript);
}
</script>SVN to GIT2015-11-02T00:00:00+01:002016-06-07T00:00:00+02:00Alexandre Beelentag:www.ias.u-psud.fr,2015-11-02:/pperso/abeelen/articles/svn-to-git.html<p>I wanted to move from an bulky svn repository containing several projects to smaller git repositories to allow for easy distribution of the files and tracking of the code. Of course, while doing that, I wanted to keep the file history... I could not use the classic <a class="reference external" href="https://git-scm.com/docs/git-filter-branch">filter-branch</a> as I …</p><p>I wanted to move from an bulky svn repository containing several projects to smaller git repositories to allow for easy distribution of the files and tracking of the code. Of course, while doing that, I wanted to keep the file history... I could not use the classic <a class="reference external" href="https://git-scm.com/docs/git-filter-branch">filter-branch</a> as I wanted to extract only a few files withing a directory.</p>
<p>So... First step is to checkgout the svn repository with git :</p>
<div class="highlight"><pre><span></span>git svn clone <span class="nv">$SVN_REPO_URL</span>
<span class="nb">cd</span> <span class="nv">$SVN_REPO_URL</span>
</pre></div>
<p>or, if you have already done it, you can update the repository with</p>
<div class="highlight"><pre><span></span><span class="nb">cd</span> <span class="nv">$SVN_REPO_URL</span>
git svn rebase
</pre></div>
<p>then you would extract the history of the desired files into a patch file</p>
<div class="highlight"><pre><span></span>git log --pretty<span class="o">=</span>email --patch-with-stat --reverse --full-index --binary path/to/file* > /tmp/patch
</pre></div>
<p>This will generate a full patch to the file, from its creation to the last commit. The (old) path in the patch file are relative to the old svn structure. Thus one could change it to reflect the new desired path structure</p>
<div class="highlight"><pre><span></span>sed -i -e <span class="s1">'s/old\/path\///g'</span> /tmp/patch
</pre></div>
<p>for example to remove all the path for the new repository</p>
<p>And after creating a new git repository, and within the repository, you can replay the file creation and modification with</p>
<div class="highlight"><pre><span></span>mkdir <span class="nv">$GIT_REPO</span>
<span class="nb">cd</span> <span class="nv">$GIT_REPO</span>
git init .
git am < /tmp/patch
</pre></div>
<p>This will recreate the files, with their history, in the newly created git repository.</p>
Gildas Tips & Tricks2010-01-04T00:00:00+01:002010-01-04T00:00:00+01:00Alexandre Beelentag:www.ias.u-psud.fr,2010-01-04:/pperso/abeelen/articles/gildas-tips-tricks.html<p class="first last">Long forgotten <a class="reference external" href="https://www.iram.fr/IRAMFR/GILDAS">GILDAS</a> Tips & Tricks.</p>
<div class="panel panel-warning">
<div class="panel-heading">
Warning</div>
<div class="panel-body">
Long forgotten <a class="reference external" href="https://www.iram.fr/IRAMFR/GILDAS">GILDAS</a> Tips & Tricks. This should probably be extended. Using more examples, in particular for clic and mapping</div>
</div>
<div class="section" id="gildas-clic">
<h2>Gildas/Clic</h2>
<ul class="simple">
<li>Change the bandpass calibrator :</li>
</ul>
<pre class="code literal-block">
let band_source "sourcename" after clicking on select
180 degree Jumpy Phase :
set phase degree jumpy
PLOT /IDENTIFY col
SOLVE phase /PLOT
</pre>
<ul class="simple">
<li>Change the number of time interval for spline interpolation :</li>
</ul>
<pre class="code literal-block">
SET STEP 4 (in hours, default 3)
</pre>
<ul class="simple">
<li>Make polynomial phase fit instead of spline :</li>
</ul>
<pre class="code literal-block">
SOLVE phase /PLOT /POLYNOMIAL 6
</pre>
<ul class="simple">
<li>Remove the last drawn plot layer :</li>
</ul>
<pre class="code literal-block">
CLEAR seg
Plot the closure relations :
PLOT closure
</pre>
<ul class="simple">
<li>Change the averaging in time when plotting :</li>
</ul>
<pre class="code literal-block">
SET AVERAGING none
SET AVERAGING TIME 5 (seconds)
</pre>
<ul class="simple">
<li>Change the reference antenna for RF and phase calibration :</li>
</ul>
<pre class="code literal-block">
SET REFERENCE x (logical number)
</pre>
<ul class="simple">
<li>See the correspondance physical/logical antenna :</li>
</ul>
<pre class="code literal-block">
SET ANTENNA ALL
</pre>
</div>
<div class="section" id="gildas-mapping">
<h2>Gildas/Mapping</h2>
<ul class="simple">
<li>Reproject one image to another :</li>
</ul>
<pre class="code literal-block">
run reproject
</pre>
</div>
CNAP Application2009-06-02T00:00:00+02:002009-06-02T00:00:00+02:00Alexandre Beelentag:www.ias.u-psud.fr,2009-06-02:/pperso/abeelen/articles/cnap-application.html<p>After the success of my application to the <a class="reference external" href="http://cnap.obspm.fr/">Conseil National Des Astronomes et Physiciens -- Section Astronomie</a>, you can find my complete
application below</p>
<p><a class="reference external" href="http://www.ias.u-psud.fr/pperso/abeelen/download/Beelen_Alexandre.pdf">Beelen_Alexandre.pdf (664kb)</a></p>
<p>After the success of my application to the <a class="reference external" href="http://cnap.obspm.fr/">Conseil National Des Astronomes et Physiciens -- Section Astronomie</a>, you can find my complete
application below</p>
<p><a class="reference external" href="http://www.ias.u-psud.fr/pperso/abeelen/download/Beelen_Alexandre.pdf">Beelen_Alexandre.pdf (664kb)</a></p>
LABoCa observation of the Francis Cluster2008-06-02T00:00:00+02:002008-06-02T00:00:00+02:00Alexandre Beelentag:www.ias.u-psud.fr,2008-06-02:/pperso/abeelen/articles/laboca-observation-of-the-francis-cluster.html<p><strong>Beelen, A.</strong>; Omont, A.; Bavouzet, N.; Kovács, A.; Lagache, G.; De Breuck, C.; Weiss, A.; Menten, K. M.; Colbert, J. W.; Dole, H.; Siringo, G.; Kreysa, E.</p>
<p>We present observations aimed at exploring both the nature of Ly-α emitting nebulae ("Ly-α blos") at <span class="math">\(z=2.38\)</span> and the way they …</p><p><strong>Beelen, A.</strong>; Omont, A.; Bavouzet, N.; Kovács, A.; Lagache, G.; De Breuck, C.; Weiss, A.; Menten, K. M.; Colbert, J. W.; Dole, H.; Siringo, G.; Kreysa, E.</p>
<p>We present observations aimed at exploring both the nature of Ly-α emitting nebulae ("Ly-α blos") at <span class="math">\(z=2.38\)</span> and the way they trace large scale structure, by exploring their proximity to "maximum starbursts" through submillimeter emission. Our most important objectives are to make a census of associated submillimeter galaxies (SMGs), check their properties, and look for a possible overdensity in the protocluster J2142-4426 at <span class="math">\(z=2.38\)</span>.
We used the newly commissioned Large APEX Bolometer Camera (LABoCa) on the Atacama Pathfinder EXperiment (APEX) telescope, in its Science Verification phase, to carry out a deep 10 arcmin x arcmin map at 870 µm, and we performed multiple checks of the quality of data processing and source extraction.
Our map, the first published deep image, confirms the capabilities of APEX/LABoCa as the most efficient current equipment for wide and deep submm mapping. Twenty-two sources were securely extracted with 870 µm flux densities in the range 3-21 mJy, rms noise 0.8-2.4 mJy, and far-IR luminosities probably in the range <span class="math">\(5-20 \times 10^{12}\ \mathrm{L_\odot}\)</span>. Only one of the four 50 kpc-extended Ly-α blobs has a secure 870 µm counterpart. The 870 µm source counts in the whole area are marginally higher than in the SHADES SCUBA survey, with a possible over-density around this blob. The majority of the 3.6-24 µm SEDs of the submillimeter sources indicate they are starburst dominated, with redshifts mostly ≥ 2. However, there is evidence of a high-z AGN in 30\% of the sources.</p>
<p>Accepted for publication in <a class="reference external" href="https://mms-aanda.obspm.fr/is/aa/">AandA</a>, Volume 423, Pages 485-645 (2008).</p>
<p>Find this paper on <a class="reference external" href="http://adswww.harvard.edu/">ADS</a> under the reference <a class="reference external" href="http://adsabs.harvard.edu/cgi-bin/nph-bib_query?bibcode=2008A%26A...485..645B">2008A&A...485..645B</a>, or on the <a class="reference external" href="http://xxx.lanl.gov">arXiv</a> service under the reference <a class="reference external" href="http://arxiv.org/abs/0803.1615">arXiv:0803.1615</a>.</p>
<ul class="simple">
<li><dl class="first docutils">
<dt>LABoCa map of the Francis Cluster reduced by <a class="reference external" href="http://www.astro.uni-bonn.de/boawiki/Boa">BoA</a> :</dt>
<dd><ul class="first last">
<li><a class="reference external" href="http://www.ias.u-psud.fr/pperso/abeelen/download/J2142-4426_LABoCa.fits.gz">J2142-4426_LABoCa.fits.gz (292kb)</a></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt>Table 1 of the paper <span class="classifier-delimiter">:</span> <span class="classifier">LABoCa source list :</span></dt>
<dd><ul class="first last">
<li><a class="reference external" href="http://www.ias.u-psud.fr/pperso/abeelen/download/J2142-4426_LABoCa_table1.votable">J2142-4426_LABoCa_table1.votable (8kb)</a></li>
</ul>
</dd>
</dl>
</li>
</ul>
<script type='text/javascript'>if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) {
var align = "center",
indent = "0em",
linebreak = "false";
if (false) {
align = (screen.width < 768) ? "left" : align;
indent = (screen.width < 768) ? "0em" : indent;
linebreak = (screen.width < 768) ? 'true' : linebreak;
}
var mathjaxscript = document.createElement('script');
var location_protocol = (false) ? 'https' : document.location.protocol;
if (location_protocol !== 'http' && location_protocol !== 'https') location_protocol = 'https:';
mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#';
mathjaxscript.type = 'text/javascript';
mathjaxscript.src = location_protocol + '//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML';
mathjaxscript[(window.opera ? "innerHTML" : "text")] =
"MathJax.Hub.Config({" +
" config: ['MMLorHTML.js']," +
" TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'AMS' } }," +
" jax: ['input/TeX','input/MathML','output/HTML-CSS']," +
" extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," +
" displayAlign: '"+ align +"'," +
" displayIndent: '"+ indent +"'," +
" showMathMenu: true," +
" messageStyle: 'normal'," +
" tex2jax: { " +
" inlineMath: [ ['\\\\(','\\\\)'] ], " +
" displayMath: [ ['$$','$$'] ]," +
" processEscapes: true," +
" preview: 'TeX'," +
" }, " +
" 'HTML-CSS': { " +
" styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'inherit ! important'} }," +
" linebreaks: { automatic: "+ linebreak +", width: '90% container' }," +
" }, " +
"}); " +
"if ('SansSerif' !== 'default') {" +
"MathJax.Hub.Register.StartupHook('HTML-CSS Jax Ready',function () {" +
"var VARIANT = MathJax.OutputJax['HTML-CSS'].FONTDATA.VARIANT;" +
"VARIANT['normal'].fonts.unshift('MathJax_SansSerif');" +
"VARIANT['bold'].fonts.unshift('MathJax_SansSerif-bold');" +
"VARIANT['italic'].fonts.unshift('MathJax_SansSerif-italic');" +
"VARIANT['-tex-mathit'].fonts.unshift('MathJax_SansSerif-italic');" +
"});" +
"MathJax.Hub.Register.StartupHook('SVG Jax Ready',function () {" +
"var VARIANT = MathJax.OutputJax.SVG.FONTDATA.VARIANT;" +
"VARIANT['normal'].fonts.unshift('MathJax_SansSerif');" +
"VARIANT['bold'].fonts.unshift('MathJax_SansSerif-bold');" +
"VARIANT['italic'].fonts.unshift('MathJax_SansSerif-italic');" +
"VARIANT['-tex-mathit'].fonts.unshift('MathJax_SansSerif-italic');" +
"});" +
"}";
(document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript);
}
</script>IDL Scripts2006-06-08T00:00:00+02:002016-06-08T00:00:00+02:00Alexandre Beelentag:www.ias.u-psud.fr,2006-06-08:/pperso/abeelen/articles/idl-scripts.html<p>Several, mostly discarded, <a href="http://www.exelisvis.com/docs/using_idl_home.htmlscripts" title="The Interactive Data Language">IDL</a> scripts that I wrote for my own use but that may be usefull to other. Dealing with line fitting, wrapping the ASURV software, general statistics and much more. They are all under the <a href="http://www.gnu.org/licenses/gpl-3.0.txt" title="The GPL v3 License">GPL</a>, so everyone is permitted to redistribute and/or modify them under the …</p><p>Several, mostly discarded, <a href="http://www.exelisvis.com/docs/using_idl_home.htmlscripts" title="The Interactive Data Language">IDL</a> scripts that I wrote for my own use but that may be usefull to other. Dealing with line fitting, wrapping the ASURV software, general statistics and much more. They are all under the <a href="http://www.gnu.org/licenses/gpl-3.0.txt" title="The GPL v3 License">GPL</a>, so everyone is permitted to redistribute and/or modify them under the terms of the <a href="http://www.gnu.org/licenses/gpl-3.0.txt" title="The GPL v3 License">GPL</a>.</p>
<p>You can find them on <a href="https://git.ias.u-psud.fr/abeelen/IDL">gitlab</a> or as a <a href="https://git.ias.u-psud.fr/abeelen/IDL/repository/archive.tar.gz?ref=master">tar</a>.</p>
<h2><a href="https://www.iram.fr/IRAMFR/GILDAS/https://www.iram.fr/IRAMFR/GILDAS/" title="The IRAM GILDAS Software">GILDAS</a> Line fitting (gildas)</h2>
<p>Deriving line parameter from a UVFIT in the <a href="https://www.iram.fr/IRAMFR/GILDAS/https://www.iram.fr/IRAMFR/GILDAS/" title="The IRAM GILDAS Software">Grenoble Image and Line Data Analysis System</a> is not an easy task. I developped a few program to be able to do it easily. First you should patch the gio library of <a href="https://www.iram.fr/IRAMFR/GILDAS/https://www.iram.fr/IRAMFR/GILDAS/" title="The IRAM GILDAS Software">GILDAS</a> in order to be able to save uvfit result in fits format. The task gildas_fits or fits will then be able to save UVFITS result table in fits format (use standard fits format and number of bits=-32). The resulting fits file can then be used to derive line parameters, for example with the IDL script included, using the Markwardt IDL Library to make the fit. The very usefull TexToIDL library is also used to legend the plot. Uncertainties on the fitted line parameters are derived from spectra uncertainties, computed from the visibilities and thus does not required the complex process of deconvolution/reconvolution involved in the mapping of interferometric data.</p>
<ul>
<li><code>tofits.diff</code> : small patch for the tofits.f file of the gio library of GILDAS</li>
<li><code>fit_line.pro</code> : fit a gaussian line to the spectrum</li>
<li><code>mp_gauss.pro</code> : define the fitted function, a gaussian with a continnum</li>
</ul>
<h2><a href="http://www.exelisvis.com/docs/using_idl_home.htmlscripts" title="The Interactive Data Language">IDL</a>-<a href="http://astrostatistics.psu.edu/statcodes/sc_censor.html" title="The ASURV software">ASURV</a> (asurv)</h2>
<p>To easily use and test the <a href="http://astrostatistics.psu.edu/statcodes/sc_censor.html" title="The ASURV software">Astronomical SURVival Analysis package</a>, I wrote a simple C wrapper which can be directly be called, as a library, from <a href="http://www.exelisvis.com/docs/using_idl_home.htmlscripts" title="The Interactive Data Language">IDL</a>or other language/program. This work has been highly simplified by the splitting of the original monolitical code of <a href="http://astrostatistics.psu.edu/statcodes/sc_censor.html" title="The ASURV software">ASURV</a> by the Starlink project. The univariate two sample tests, bivariate correlation tests and linear regression have been wrapped.</p>
<ul>
<li><code>asurv.tar.gz</code> : The, now gone, starlink version of <a href="http://astrostatistics.psu.edu/statcodes/sc_censor.html" title="The ASURV software">ASURV</a></li>
<li><code>lib_bivar.f lib_univar.f lunivar.c</code> : actual wrapper</li>
<li><code>Makefile</code> : makefile to build the wrapper</li>
</ul>
<h2><a href="http://www.exelisvis.com/docs/using_idl_home.htmlscripts" title="The Interactive Data Language">IDL</a> - Statistics (stats)</h2>
<p>Two very usefull routines to plot the histogram and the partition function of a dataset. The first use the IDL histogram function but also compute the proper abscissa.</p>
<ul>
<li><code>plot_repart.pro</code> : draw an histogram of a variable</li>
<li><code>plot_histo.pro</code> : plot the repartition function of a variable</li>
</ul>
<h2><a href="http://www.exelisvis.com/docs/using_idl_home.htmlscripts" title="The Interactive Data Language">IDL</a>-<a href="http://www.sdss.org/" title="The Sloan Digital Sky Survey">SDSS</a> (sdss)</h2>
<p>I wrote some <a href="http://www.exelisvis.com/docs/using_idl_home.htmlscripts" title="The Interactive Data Language">IDL</a> routine to easily manipulate <a href="http://www.sdss.org/" title="The Sloan Digital Sky Survey">SDSS</a> spectra. It has been tested on the <a href="http://www.sdss.org/dr4/products/value_added/qsocat_dr3.html" title="The SDSS QSO Data Release 3">DR3QSO</a> catalog and spectra.</p>
<ul>
<li><code>filename_sdss.pro</code> : construct the filename of a spectra from information in the <a href="http://www.sdss.org/dr4/products/value_added/qsocat_dr3.html" title="The SDSS QSO Data Release 3">DR3QSO</a> catalog</li>
<li><code>read_sdss_spectrum.pro</code> : read an <a href="http://www.sdss.org/" title="The Sloan Digital Sky Survey">SDSS</a> spectrum into a <a href="http://www.exelisvis.com/docs/using_idl_home.htmlscripts" title="The Interactive Data Language">IDL</a> structure</li>
<li><code>plot_sdss_spectrum.pro</code> : plot an <a href="http://www.sdss.org/" title="The Sloan Digital Sky Survey">SDSS</a> spectrum the <a href="http://www.sdss.org/" title="The Sloan Digital Sky Survey">SDSS</a> way</li>
</ul>
<h2><a href="http://www.exelisvis.com/docs/using_idl_home.htmlscripts" title="The Interactive Data Language">IDL</a> Misc. (misc)</h2>
<p>Here are a few <a href="http://www.exelisvis.com/docs/using_idl_home.htmlscripts" title="The Interactive Data Language">IDL</a> scripts that I wrote for every day use.</p>
<ul>
<li><code>zeta.pro</code> compute the zeta function</li>
<li><code>barre.pro</code> draw an horizontal bar</li>
<li><code>const.pro</code> define some physical constant (SI)</li>
<li><code>copyright.pro</code> add copyright to your plot</li>
<li><code>draft.pro</code> add a draft comment to your plot</li>
</ul>SHARC II / CRUSH2006-06-08T00:00:00+02:002006-06-08T00:00:00+02:00Alexandre Beelentag:www.ias.u-psud.fr,2006-06-08:/pperso/abeelen/articles/sharc-ii-crush.html<p class="first last">A few tools to help with SHARC II / CRUSH reduction</p>
<div class="panel panel-warning">
<div class="panel-heading">
Warning</div>
<div class="panel-body">
Note that those scripts where made for use with CRUSH I. Although
they could still apply with the newest CRUSH II software, they have
not been tested.</div>
</div>
<p>In order to make batch reduction with <a class="reference external" href="http://www.submm.caltech.edu/~sharc/crush/index.htm">CRUSH</a>, I also
wrote some shell scripts to simplify this process.</p>
<p>You can find they on
<a class="reference external" href="https://git.ias.u-psud.fr/abeelen/CRUSH">gitlab</a> or as a
<a class="reference external" href="https://git.ias.u-psud.fr/abeelen/CRUSH/repository/archive.tar.gz?ref=master">tar</a>.</p>
<div class="section" id="shell-scripts-to-process-batch-of-sharc-ii-data-using-crush">
<h2>Shell scripts to process batch of <a class="reference external" href="http://www.submm.caltech.edu/~sharc/http://www.submm.caltech.edu/~sharc/">SHARC II</a> data using <a class="reference external" href="http://www.submm.caltech.edu/~sharc/crush/index.htm">CRUSH</a></h2>
<p>You have to change the <cite>config.sh</cite> to set the correct path for your
configuration. You also need to create a target_sources file in the
<cite>$LIST_DIR</cite> directory which list all your target sources name as
reported in the fits files. Run the <cite>make_list.sh</cite> script to produce
scan list for each target source. You can now reduce the complete
project by running <cite>reduce_target.sh</cite> or individual sources with
<cite>reduce_source.sh source_name</cite>  Shell scripts to reduce <a class="reference external" href="http://www.submm.caltech.edu/~sharc/http://www.submm.caltech.edu/~sharc/">SHARC II</a>
project in batch with <a class="reference external" href="http://www.submm.caltech.edu/~sharc/crush/index.htm">CRUSH</a></p>
<ul class="simple">
<li><cite>config.sh</cite> : define all the variable parameters/path</li>
<li><cite>make_list.sh</cite> : make the scan lists for target sources</li>
<li><cite>reduce_source.sh</cite> : reduce one source</li>
<li><cite>reduce_target.sh</cite> : reduce all the target sources</li>
</ul>
</div>
<div class="section" id="idl-scripts-to-display-crush-reduced-sharc-ii-data">
<h2><a class="reference external" href="http://www.exelisvis.com/docs/using_idl_home.html">IDL</a> scripts to display <a class="reference external" href="http://www.submm.caltech.edu/~sharc/crush/index.htm">CRUSH</a> reduced <a class="reference external" href="http://www.submm.caltech.edu/~sharc/http://www.submm.caltech.edu/~sharc/">SHARC II</a> data</h2>
<p>I also wrote a few <a class="reference external" href="http://www.exelisvis.com/docs/using_idl_home.html">IDL</a> scripts I use to display astronomical maps taken with <a class="reference external" href="http://www.submm.caltech.edu/~sharc/http://www.submm.caltech.edu/~sharc/">SHARC II</a>
and reduced with CRUSH. They made intensive use of the <a class="reference external" href="http://idlastro.gsfc.nasa.gov/">IDL Astronomy
User's Library</a> and <a class="reference external" href="http://www.exelisvis.com/docs/imdisp.html">IMDISP</a> library.</p>
<p>You have to change the default path in <cite>read_scan.pro</cite>, and then you case
use the <cite>plot_scan</cite> routine with a least one argument, the fits file
name, to display the signal (default), the noise (<cite>/noise</cite>), the
signal-to-noise ratio (<cite>/s2n</cite>), or the integrated time (<cite>/time</cite>). You can
also smooth the map to the FWHM of the CSO (<cite>/smooth</cite>), force the correct
aspect ratio of the image (<cite>/aspect</cite>), crop the pixel with integrated time
less than a value (<cite>crop=value</cite>), put a cross on the pointed position
(<cite>/cross</cite>), change the display of the axis - offset (<cite>default</cite>) or absolute
(<cite>/type</cite>), change the contours wrt to time (<cite>contours_time=[0,5]</cite>), and
suppress the wedge (/nowedge)</p>
<p>The plot_scan routine is in fact more general and could be use with
any kind of astronomical image, as long as the structure returned by the
read_scan routine is filled with the right values.</p>
<ul class="simple">
<li><cite>read_scan.pro</cite> : read the fits file; unit conversions; return a
structure containing the data</li>
<li><cite>plot_scan.pro</cite> : display the scan with various options</li>
</ul>
</div>
Perl ADS2006-06-07T00:00:00+02:002006-06-07T00:00:00+02:00Alexandre Beelentag:www.ias.u-psud.fr,2006-06-07:/pperso/abeelen/articles/perl-ads.html<p>These <a href="https://www.perl.org/" title="The Perl Programming Language">perl</a> scripts are used to access the <a href="http://adsabs.harvard.edu/" title="The SAO/NASA Astrophysics Data System">ADS</a> database in an easy way, directly from the shell prompt. They are useful to build a bibtex database, retrieve pdf files of a list of paper, or to make simple statistics. There is two sets of scripts : the first one, somehow …</p><p>These <a href="https://www.perl.org/" title="The Perl Programming Language">perl</a> scripts are used to access the <a href="http://adsabs.harvard.edu/" title="The SAO/NASA Astrophysics Data System">ADS</a> database in an easy way, directly from the shell prompt. They are useful to build a bibtex database, retrieve pdf files of a list of paper, or to make simple statistics. There is two sets of scripts : the first one, somehow older, is based on <a href="http://search.cpan.org/~ether/libwww-perl-6.13/lib/LWP/UserAgent.pm" title="LWP::UserAgent - Web user agent class">LWP::UserAgent</a> to access directly <a href="http://adsabs.harvard.edu/" title="The SAO/NASA Astrophysics Data System">ADS</a> web pages. The second is a rewrite of the latter using the <a href="http://search.cpan.org/~duffee/Astro-ADS-1.26/ADS.pm" title="Astro::ADS - An object orientated interface to NASAs ADS database">Astro::ADS</a> library.</p>
<p>You can find they on <a href="https://git.ias.u-psud.fr/abeelen/Perl_ADS">gitlab</a> or as a <a href="https://git.ias.u-psud.fr/abeelen/Perl_ADS/repository/archive.tar.gz?ref=master">tar</a>.</p>
<p>
Scripts using the <a href="http://search.cpan.org/~ether/libwww-perl-6.13/lib/LWP/UserAgent.pm" title="LWP::UserAgent - Web user agent class">LWP::UserAgent</a> library</p>
<hr>
<ul>
<li><code>get_author.pl</code> : produce bibliography in the bibtex format from ADS, given an author name and start/stop year</li>
<li><code>get_bib.pl</code> : retrieve the bibtex entry of an article in ADS given its journal, volume and page.</li>
<li><code>get_bibtex.pl</code> : retrieve the bibtex entry of an article in ADS given its bibcode
</li>
</ul>
<h2>Scripts using the <a href="http://search.cpan.org/~duffee/Astro-ADS-1.26/ADS.pm" title="Astro::ADS - An object orientated interface to NASAs ADS database">Astro::ADS</a> library</h2>
<ul>
<li><code>adsastro.patch</code> : patch for the Astro::ADS library to take the Journal/Volume/Page information as an entry</li>
<li><code>get_biblio.pl</code> : retrieve a specific bibtex entry and the pdf of a given astro-ph or ADS article</li>
<li><code>process_list.pl</code> : retrieve the pdf and bibtex entry of a list of mixed astro-ph and ADS (J/V/P) entries</li>
<li><code>get_astroph.pl</code> : get the bibcode of an article published in astro-ph, given its id number</li>
<li><code>get_bibcode.pl</code> : get the bibcode of an article published in ADS given its journal, volume and page</li>
<li><code>get_bibpdf.pl</code> : retrieve the pdf of a given bibcode</li>
</ul></hr>350 Micron Emission from High-z QSOs2006-06-02T00:00:00+02:002006-06-02T00:00:00+02:00Alexandre Beelentag:www.ias.u-psud.fr,2006-06-02:/pperso/abeelen/articles/350-micron-emission-from-high-z-qsos.html<p><strong>Beelen, A.</strong>; Cox, P.; Benford, D.J.; Dowell, C.D.; Kovacs, A.; Bertoldi, F.; Omont, A.; Carilli, C.L.</p>
<p>We report detections of six high-redshift (<span class="math">\(1.8~<~z~<~6.4\)</span>), optically luminous, radio-quiet quasars at 350 µm, using the SHARC II bolometer camera at the Caltech Submillimeter Observatory. Our observations …</p><p><strong>Beelen, A.</strong>; Cox, P.; Benford, D.J.; Dowell, C.D.; Kovacs, A.; Bertoldi, F.; Omont, A.; Carilli, C.L.</p>
<p>We report detections of six high-redshift (<span class="math">\(1.8~<~z~<~6.4\)</span>), optically luminous, radio-quiet quasars at 350 µm, using the SHARC II bolometer camera at the Caltech Submillimeter Observatory. Our observations double the number of high-redshift quasars for which 350 µm photometry is available. By combining the 350 µm measurements with observations at other submillimeter/millimeter wavelengths, for each source we have determined the temperature of the emitting dust (ranging from 40 to 60 K) and the far-infrared luminosity (<span class="math">\(0.6\)</span> to <span class="math">\(2.2~\times~10^{13}\ \mathrm{L_\odot}\)</span>). The combined mean spectral energy distribution (SED) of all high-redshift quasars with two or more rest frame far-infrared photometric measurements is best fit with a greybody with temperature of 47 ± 3 K and a dust emissivity power-law spectral index of <span class="math">\(\beta~=~1.6~\pm~0.1\)</span>. This warm dust component is a good tracer of the starburst activity of the quasar host galaxy. The ratio of the far-infrared to radio luminosities of infrared luminous, radio-quiet high-redshift quasars is consistent with that found for local star-forming galaxies.</p>
<p>Accepted for publication in <a class="reference external" href="http://www.journals.uchicago.edu/ApJ/">ApJ</a>, Volumne 642, Issue 2, pp. 694-701.
Find this paper on <a class="reference external" href="http://adswww.harvard.edu/">ADS</a> under the reference <a class="reference external" href="http://adsabs.harvard.edu/cgi-bin/nph-bib_query?bibcode=2006ApJ...642..694B">2006ApJ...642..694B</a>, or on the <a class="reference external" href="http://xxx.lanl.gov">arXiv</a> service under the reference <a class="reference external" href="http://arxiv.org/abs/astro-ph/0603121">astro-ph/0603121</a>.</p>
<ul class="simple">
<li><dl class="first docutils">
<dt><a class="reference external" href="http://heasarc.nasa.gov/docs/heasarc/fits.html">Fits</a> files produced by <a class="reference external" href="http://www.submm.caltech.edu/~sharc/crush">CRUSH</a> for the 350 µm observations made with <a class="reference external" href="http://www.submm.caltech.edu/~sharc">SHARC II</a> of the 6 sources published in this paper</dt>
<dd><ul class="first last">
<li><a class="reference external" href="http://www.ias.u-psud.fr/pperso/abeelen/download/350mu_fits.tar.bz2">350mu_fits.tar.bz2 (1.3Mo)</a></li>
</ul>
</dd>
</dl>
</li>
</ul>
<script type='text/javascript'>if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) {
var align = "center",
indent = "0em",
linebreak = "false";
if (false) {
align = (screen.width < 768) ? "left" : align;
indent = (screen.width < 768) ? "0em" : indent;
linebreak = (screen.width < 768) ? 'true' : linebreak;
}
var mathjaxscript = document.createElement('script');
var location_protocol = (false) ? 'https' : document.location.protocol;
if (location_protocol !== 'http' && location_protocol !== 'https') location_protocol = 'https:';
mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#';
mathjaxscript.type = 'text/javascript';
mathjaxscript.src = location_protocol + '//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML';
mathjaxscript[(window.opera ? "innerHTML" : "text")] =
"MathJax.Hub.Config({" +
" config: ['MMLorHTML.js']," +
" TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'AMS' } }," +
" jax: ['input/TeX','input/MathML','output/HTML-CSS']," +
" extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," +
" displayAlign: '"+ align +"'," +
" displayIndent: '"+ indent +"'," +
" showMathMenu: true," +
" messageStyle: 'normal'," +
" tex2jax: { " +
" inlineMath: [ ['\\\\(','\\\\)'] ], " +
" displayMath: [ ['$$','$$'] ]," +
" processEscapes: true," +
" preview: 'TeX'," +
" }, " +
" 'HTML-CSS': { " +
" styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'inherit ! important'} }," +
" linebreaks: { automatic: "+ linebreak +", width: '90% container' }," +
" }, " +
"}); " +
"if ('SansSerif' !== 'default') {" +
"MathJax.Hub.Register.StartupHook('HTML-CSS Jax Ready',function () {" +
"var VARIANT = MathJax.OutputJax['HTML-CSS'].FONTDATA.VARIANT;" +
"VARIANT['normal'].fonts.unshift('MathJax_SansSerif');" +
"VARIANT['bold'].fonts.unshift('MathJax_SansSerif-bold');" +
"VARIANT['italic'].fonts.unshift('MathJax_SansSerif-italic');" +
"VARIANT['-tex-mathit'].fonts.unshift('MathJax_SansSerif-italic');" +
"});" +
"MathJax.Hub.Register.StartupHook('SVG Jax Ready',function () {" +
"var VARIANT = MathJax.OutputJax.SVG.FONTDATA.VARIANT;" +
"VARIANT['normal'].fonts.unshift('MathJax_SansSerif');" +
"VARIANT['bold'].fonts.unshift('MathJax_SansSerif-bold');" +
"VARIANT['italic'].fonts.unshift('MathJax_SansSerif-italic');" +
"VARIANT['-tex-mathit'].fonts.unshift('MathJax_SansSerif-italic');" +
"});" +
"}";
(document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript);
}
</script>Dust & Gas in High-z QSOs - PhD Thesis2004-06-02T00:00:00+02:002004-06-02T00:00:00+02:00Alexandre Beelentag:www.ias.u-psud.fr,2004-06-02:/pperso/abeelen/articles/dust-gas-in-high-z-qsos-phd-thesis.html<p><strong>Beelen, A.</strong></p>
<p>This thesis presents the study of dust and gas in high redshift quasars (QSOs) based on (sub)millimeter and radio observations. The surveys of the infrared and radio continuum of optically luminous and radio-quiet QSOs at <span class="math">\(1.9 < z < 6.4\)</span> indicate the presence of large dust masses …</p><p><strong>Beelen, A.</strong></p>
<p>This thesis presents the study of dust and gas in high redshift quasars (QSOs) based on (sub)millimeter and radio observations. The surveys of the infrared and radio continuum of optically luminous and radio-quiet QSOs at <span class="math">\(1.9 < z < 6.4\)</span> indicate the presence of large dust masses, including in the <span class="math">\(z > 6\)</span> QSOs. The relationship between infrared and radio emission sfolowed by local galaxies is also found for the high-z QSOs, suggesting that the dust heating is dominated by young massive stars. These studies have allowed us to derive a relationship between the black hole and star formation activity. The high star formation rates (<span class="math">\(\approx 1000\ \mathrm{M_\odot/yr}\)</span>) point to intense starbursts which have to be sustained by massive reservoirs of molecular gas. The detection of CO in J1409+5628 at z=2.56 in described in detail and a global study of the CO emission in high-z sources is presented. In a few cases, the detection of several CO transitions enables to constrain the physical conditions, indicating gas temperatures of 60-100 K, and densities of <span class="math">\(10^{3-4}\ \mathrm{cm^{-3}}\)</span>, comparable to what is found in M82 and Arp220. Finally, the detection of CI and HCN is reported in two high-z QSOs. | These studies have allowed us to constrain the physical conditions in the host galaxies of high-z QSOs, among the most massive objects in the universe. These exploratory studies, which open the way to the study of the interstellar medium in the extreme environments of the first galaxies, will come to full maturity when the satellite Herschel and the interferometers eVLA and ALMA will be operational.</p>
<p>You can find my thesis on line on <a class="reference external" href="http://tel.ccsd.cnrs.fr/">multidisciplinary theses server</a> under the reference <a class="reference external" href="http://tel.ccsd.cnrs.fr/tel-00011634">tel-00011634</a>. You can find the abstract on <a class="reference external" href="http://adswww.harvard.edu/">ADS</a> under the reference <a class="reference external" href="http://adsabs.harvard.edu/cgi-bin/nph-bib_query?bibcode=2004PhDT........43B">2004PhDT........43B</a>.</p>
<ul class="simple">
<li><dl class="first docutils">
<dt>My phd thesis in postscript (french) :</dt>
<dd><ul class="first last">
<li><a class="reference external" href="http://www.ias.u-psud.fr/pperso/abeelen/download/phd_beelen.ps.bz2">phd_beelen.ps.bz2 (8.1Mo)</a></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt>My phd thesis in pdf (french) :</dt>
<dd><ul class="first last">
<li><a class="reference external" href="http://www.ias.u-psud.fr/pperso/abeelen/download/phd_beelen.pdf">phd_beelen.pdf (5.4Mo)</a></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt>My thesis defense (french) :</dt>
<dd><ul class="first last">
<li>2004-12-07 @ <a class="reference external" href="http://www.ias.fr">IAS</a> <a class="reference external" href="http://www.ias.u-psud.fr/pperso/abeelen/download/phd_defense.pdf">phd_defense.pdf (3.4Mo)</a></li>
</ul>
</dd>
</dl>
</li>
</ul>
<script type='text/javascript'>if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) {
var align = "center",
indent = "0em",
linebreak = "false";
if (false) {
align = (screen.width < 768) ? "left" : align;
indent = (screen.width < 768) ? "0em" : indent;
linebreak = (screen.width < 768) ? 'true' : linebreak;
}
var mathjaxscript = document.createElement('script');
var location_protocol = (false) ? 'https' : document.location.protocol;
if (location_protocol !== 'http' && location_protocol !== 'https') location_protocol = 'https:';
mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#';
mathjaxscript.type = 'text/javascript';
mathjaxscript.src = location_protocol + '//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML';
mathjaxscript[(window.opera ? "innerHTML" : "text")] =
"MathJax.Hub.Config({" +
" config: ['MMLorHTML.js']," +
" TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'AMS' } }," +
" jax: ['input/TeX','input/MathML','output/HTML-CSS']," +
" extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," +
" displayAlign: '"+ align +"'," +
" displayIndent: '"+ indent +"'," +
" showMathMenu: true," +
" messageStyle: 'normal'," +
" tex2jax: { " +
" inlineMath: [ ['\\\\(','\\\\)'] ], " +
" displayMath: [ ['$$','$$'] ]," +
" processEscapes: true," +
" preview: 'TeX'," +
" }, " +
" 'HTML-CSS': { " +
" styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'inherit ! important'} }," +
" linebreaks: { automatic: "+ linebreak +", width: '90% container' }," +
" }, " +
"}); " +
"if ('SansSerif' !== 'default') {" +
"MathJax.Hub.Register.StartupHook('HTML-CSS Jax Ready',function () {" +
"var VARIANT = MathJax.OutputJax['HTML-CSS'].FONTDATA.VARIANT;" +
"VARIANT['normal'].fonts.unshift('MathJax_SansSerif');" +
"VARIANT['bold'].fonts.unshift('MathJax_SansSerif-bold');" +
"VARIANT['italic'].fonts.unshift('MathJax_SansSerif-italic');" +
"VARIANT['-tex-mathit'].fonts.unshift('MathJax_SansSerif-italic');" +
"});" +
"MathJax.Hub.Register.StartupHook('SVG Jax Ready',function () {" +
"var VARIANT = MathJax.OutputJax.SVG.FONTDATA.VARIANT;" +
"VARIANT['normal'].fonts.unshift('MathJax_SansSerif');" +
"VARIANT['bold'].fonts.unshift('MathJax_SansSerif-bold');" +
"VARIANT['italic'].fonts.unshift('MathJax_SansSerif-italic');" +
"VARIANT['-tex-mathit'].fonts.unshift('MathJax_SansSerif-italic');" +
"});" +
"}";
(document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript);
}
</script>Starburst activity in J1409+56282004-06-02T00:00:00+02:002004-06-02T00:00:00+02:00Alexandre Beelentag:www.ias.u-psud.fr,2004-06-02:/pperso/abeelen/articles/starburst-activity-in-j14095628.html<p><strong>Beelen, A.</strong>; Cox, P.; Pety, J.; Carilli, C. L.; Bertoldi, F.; Momjian, E.; Omont, A.; Petitjean, P.; Petric, A. O.</p>
<p>We report the detection of CO emission from the optically luminous, radio-quiet quasar J140955.5+562827, at a redshift <span class="math">\(z_{CO}~=~2.583\)</span>. We also present VLA continuum maps and …</p><p><strong>Beelen, A.</strong>; Cox, P.; Pety, J.; Carilli, C. L.; Bertoldi, F.; Momjian, E.; Omont, A.; Petitjean, P.; Petric, A. O.</p>
<p>We report the detection of CO emission from the optically luminous, radio-quiet quasar J140955.5+562827, at a redshift <span class="math">\(z_{CO}~=~2.583\)</span>. We also present VLA continuum maps and VLBA high spatial resolution observations at 1.4 GHz. Both the CO(3→2) and CO(7→6) emission lines are detected using the IRAM Plateau de Bure interferometer. The 3→2/7→6 line luminosity ratio is about 1/3, indicating the presence of warm and dense molecular gas with an estimated mass of <span class="math">\(6\times10^{10}\ \mathrm{M_\odot}\)</span>. The infrared-to-CO luminosity ratio <span class="math">\(L_\mathrm{FIR}/L^\prime_\mathrm{CO(1\to0)} \sim 500\ \mathrm{L_\odot (K km s^{-1} pc^2)^{-1}}\)</span>, comparable to values found for other high-z sources where CO line emission is seen. J1409+5628 is detected using the VLA with a 1.4 GHz rest-frame luminosity density of <span class="math">\(4.0\times10^{25}\ \mathrm{W Hz^{-1}}\)</span>. The rest-frame radio to far-infrared ratio, q, has a value of 2.0 which is similar to the values found in star forming galaxies. At the 30 mas resolution of the VLBA, J1409+5628 is not detected with a 4σ upper limit to the surface brightness of <span class="math">\(0.29 mJy beam^{-1}\)</span>. This implies a limit to the intrinsic brightness temperature of <span class="math">\(2\times10^{5}\ \mathrm{K}\)</span> at 8 GHz, typical for nuclear starbursts and more than two orders of magnitude fainter than typical radio-loud active galactic nuclei. Both the properties of the CO line emission and the radio emission from J1409+5628 are therefore consistent with those expected for a star forming galaxy. In J1409+5628 young massive stars are the dominant source of dust heating, accounting for most of the infrared luminosity. The massive reservoir of molecular gas can sustain the star formation rate of a few <span class="math">\(1000\ \mathrm{M_\odot yr^{-1}}\)</span> implied by the far-infrared luminosity for about 10 million years.</p>
<p>Accepted for publication by <a class="reference external" href="https://mms-aanda.obspm.fr/is/aa/">AandA</a>, Volume 423, Pages 441-447 (2004).</p>
<p>Find this paper on <a class="reference external" href="http://adswww.harvard.edu/">ADS</a> under the reference <a class="reference external" href="http://adsabs.harvard.edu/cgi-bin/nph-bib_query?bibcode=2004A%26A...423..441B">2004A&A...423..441B</a>, or on the <a class="reference external" href="http://xxx.lanl.gov">arXiv</a> service under the reference <a class="reference external" href="http://arxiv.org/abs/astro-ph/0404172">astro-ph/0404172</a>.</p>
<ul class="simple">
<li><dl class="first docutils">
<dt>Calibrated UV Table of the CO(3→2) observation of J1409+5628 obtained at the <a class="reference external" href="http://www.iram.es/IRAMFR/index.htm">PdBI</a> :</dt>
<dd><ul class="first last">
<li><a class="reference external" href="http://www.ias.u-psud.fr/pperso/abeelen/download/J1409+5628_PdB_CO32.uvt.bz2">J1409+5628_PdB_CO32.uvt.bz2 (4.0Mo)</a></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt>Observation at 1.4 GHz of J1409+5628 obtained with the <a class="reference external" href="http://www.vla.nrao.edu/">Very Large Array</a> :</dt>
<dd><ul class="first last">
<li><a class="reference external" href="http://www.ias.u-psud.fr/pperso/abeelen/download/J1409+5628_VLA_1.4GHz.fits.bz2">J1409+5628_VLA_1.4GHz.fits.bz2 (1.0Mo)</a></li>
</ul>
</dd>
</dl>
</li>
</ul>
<script type='text/javascript'>if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) {
var align = "center",
indent = "0em",
linebreak = "false";
if (false) {
align = (screen.width < 768) ? "left" : align;
indent = (screen.width < 768) ? "0em" : indent;
linebreak = (screen.width < 768) ? 'true' : linebreak;
}
var mathjaxscript = document.createElement('script');
var location_protocol = (false) ? 'https' : document.location.protocol;
if (location_protocol !== 'http' && location_protocol !== 'https') location_protocol = 'https:';
mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#';
mathjaxscript.type = 'text/javascript';
mathjaxscript.src = location_protocol + '//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML';
mathjaxscript[(window.opera ? "innerHTML" : "text")] =
"MathJax.Hub.Config({" +
" config: ['MMLorHTML.js']," +
" TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'AMS' } }," +
" jax: ['input/TeX','input/MathML','output/HTML-CSS']," +
" extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," +
" displayAlign: '"+ align +"'," +
" displayIndent: '"+ indent +"'," +
" showMathMenu: true," +
" messageStyle: 'normal'," +
" tex2jax: { " +
" inlineMath: [ ['\\\\(','\\\\)'] ], " +
" displayMath: [ ['$$','$$'] ]," +
" processEscapes: true," +
" preview: 'TeX'," +
" }, " +
" 'HTML-CSS': { " +
" styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'inherit ! important'} }," +
" linebreaks: { automatic: "+ linebreak +", width: '90% container' }," +
" }, " +
"}); " +
"if ('SansSerif' !== 'default') {" +
"MathJax.Hub.Register.StartupHook('HTML-CSS Jax Ready',function () {" +
"var VARIANT = MathJax.OutputJax['HTML-CSS'].FONTDATA.VARIANT;" +
"VARIANT['normal'].fonts.unshift('MathJax_SansSerif');" +
"VARIANT['bold'].fonts.unshift('MathJax_SansSerif-bold');" +
"VARIANT['italic'].fonts.unshift('MathJax_SansSerif-italic');" +
"VARIANT['-tex-mathit'].fonts.unshift('MathJax_SansSerif-italic');" +
"});" +
"MathJax.Hub.Register.StartupHook('SVG Jax Ready',function () {" +
"var VARIANT = MathJax.OutputJax.SVG.FONTDATA.VARIANT;" +
"VARIANT['normal'].fonts.unshift('MathJax_SansSerif');" +
"VARIANT['bold'].fonts.unshift('MathJax_SansSerif-bold');" +
"VARIANT['italic'].fonts.unshift('MathJax_SansSerif-italic');" +
"VARIANT['-tex-mathit'].fonts.unshift('MathJax_SansSerif-italic');" +
"});" +
"}";
(document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript);
}
</script>Thesis IAS2004-04-16T00:00:00+02:002008-04-16T00:00:00+02:00Alexandre Beelentag:www.ias.u-psud.fr,2004-04-16:/pperso/abeelen/articles/thesis-ias.html<p>I adapted the [thloria][thloria] LaTex class for thesis wrote at <a href="http://www.ias.u-psud.fr">IAS</a>. You need to install the [thloria][thloria] class in order to use this one.</p><p>I adapted the <a href="http://www.loria.fr/~roegel/TeX/TL.html" title="Th Loria latex class">thloria</a> LaTex class for thesis wrote at <a href="http://www.ias.u-psud.fr">IAS</a>. You need to install the <a href="http://www.loria.fr/~roegel/TeX/TL.html" title="Th Loria latex class">thloria</a> class in order to use this one.</p>
<p>You can find the files on <a href="https://git.ias.u-psud.fr/abeelen/Thesis_IAS">gitlab</a> or as a <a href="https://git.ias.u-psud.fr/abeelen/Thesis_IAS/repository/archive.tar.gz?ref=master">tar</a>.</p>
<ul>
<li><code>ias.eps</code> : vectorized IAS logo</li>
<li><code>main.tex</code> : example file</li>
<li><code>thesis_IAS.cls</code> : the actual LaTex Class</li>
</ul>