# [1306.0005] Estimating the large-scale angular power spectrum in the presence of systematics: a case study of Sloan Digital Sky Survey quasars

http://arxiv.org/abs/1306.0005

@article{leistedt:powspec_sdssqsos,
author = {Boris Leistedt and H. V. Peiris and D. J. Mortlock and A. Benoit-Lévy and A. Pontzen},
title = {Estimating the large-scale angular power spectrum in the presence of systematics: a case study of Sloan Digital Sky Survey quasars},
eprint = {arXiv:1306.0005}
}


# Brief introduction to the dark energy puzzle

Cosmology is a young and rapidly changing discipline. It is evolving at such a pace that the last decade has witnessed deep and crucial advances in our understanding of physics on large scales. In particular, the arrival of the first high-precision data of the Cosmic Microwave Background and the large-scale distribution of matter has turned Cosmology into a high-precision science.

In the era of precision Cosmology, our model of the Universe at large can finally be confronted to the real complexity of Nature. Despite the astonishing match between this model and the data, one must not forget that it is a simplified, mathematical representation that still leaves numerous questions and observations unresolved. In particular, our understanding of gravity and how it connects to quantum physics is very limited. This issue is now arising as one of the biggest Physics challenges of our time.

Without doubt, General Relativity, which has now been tested on a wide range of scales and energies, remains incredibly accurate for explaining gravity on large scales. This makes it one of the best models in Physics, and leads to a beautiful, consistent model of the Universe viewed as an evolving structure whose dynamic is determined by its content. However, although observational data has confirmed the GR-driven picture of an expanding flat Universe, this model is only compatible with data when Einstein’s equation of GR include a constant term. This term, known as Dark Energy, is extremely mysterious for two reasons.
First, it must have been extremely small in all cosmic history to avoid a ‘cosmic crunch’ and allow classical structure formation as we observe it. It is particularly unsettling as we know its value is stricly non-zero and causing today’s Universe to fall into a new accelerated phase.
Second, Dark Energy cannot simply be waved away by extending GR or fine tuning some aspects of the current model. More precisely, it is extremely hard (i.e. theoretically irrelevant or already ruled out by current data) to design a model of the Universe which is consistent with observational data and that does not include a cosmological constant.

Hence Dark Energy is likely to be a much deeper issue than just a constant term in Einstein’s equation, and it jeopardizes our understanding of Nature at large. Even worse, it seems to be a part of a greater puzzle that relates to our inability to unify General Relativity with Quantum Field Theory (QFT), our best model for small scale physics. Intriguingly, the two theories differ in one crucial aspect: QFT is only sensitive to differences in energies, whereas in GR vacuum energy gravitates. If Dark Energy is indeed a vacuum energy, we do not yet understand how quantum fluctuations can source it, and for this reason we do not have a good understanding of the physics of the early univers where Quantum Physics and General Relativity are strongly coupled.

Another riddle for the GR-based standard model of the Universe was revealed by the homogeneity of the CMB (homogeneous at $10^{-5}$), that indicated that all points must have been in causal contact at some point before the last scattering surface was emitted. One way to incorporate this observational fact in the previous picture of the Universe was to introduce a phase of extremely fast expansion called cosmological inflation. Naturally, since it takes place in the very early universe, this phase of inflation cannot be fully understood without a viable candidate for a quantum theory of gravity, and Dark Energy is again a part of the picture.

String Theory is currently the best candidate for such a theory, and could explain the inflationary phase and the origin of dark energy. Unluckily, both inflation and string theory involve an incredible (almost untractable) theoretical complexity and exist in a wide variety of versions, which complexifies the task of constraining the models from observation. Fortunately, our best current data favor initial conditions which are extremely close to Gaussian. This enables us to focus on inflationary models that predict –or are at least compatible– with Gaussian initial conditions for the CMB and the large scale structure. Even better, it appears that inflation must be highly fine-tuned in order to predict such conditions, and various models for inflation predict different amounts of non-gaussianity. Since non-gaussanity can be measured in a variety of observational data, it is currently one of the most powerful probe of the early universe, potentially permitting us to rule out and favor models of inflation and quantum gravity.

# Installing S2LET, FLAG & FLAGLET on Ubuntu/MacOSX

This tutorial is complementary to the generic one presented on this page and will guide you through the installation of FFTW, CFITSIO, HEALPIX, SSHT, S2LET, FLAG and FLAGLET. The procedure was initially tested on a blank Ubuntu 12 virtual machine but will also work on Mac OSX systems (Lion minimum recommended). MATLAB >2011 is also recommended because the Mex compiler is painful to configure with old versions of gcc (see below).

# Compiling and testing the C libraries

## FFTW

Download FFTW 3.x.x at the official website. Unzip it and configure/install it in your favorite software directory (/home/bl/software/fftw-3.3.3 for me) with the following commands. The flag –with-pic is required on Linux only.

>> ./configure --prefix=/home/bl/software/fftw-3.3.3 --enable-shared --with-pic
>> make
>> make install

The should create lib and include folders in /home/bl/software/fftw-3.3.3 containing the FFTW libraries and headers.

## SSHT

SSHT can be obtained here. After unzipping the package, you should modify the makefile to use the right path to FFTW (and MATLAB, see below). In particular, you should pay attention to the following line and maybe add the explicit FFTW library:

LDFLAGS = -L$(SSHTLIB) -l$(SSHTLIBNM) $(FFTWLIB)/lib$(FFTWLIBNM).a -lm

Then you should be able to run ‘make’ and test that SSHT works properly by running the test command:

>> make
>> ./bin/c/ssht_test 128 0

I am attaching the makefile that worked for me, just in case.

## CFITSIO and Healpix

To use the IO and Healpix functionalties of S2LET, CFITSIO and HEALPIX_C are required. You can skip this paragraph if you don’t need them. Download and unpack CFITSIO from the website and run

>> ./configure
>> make
>> make install

If you don’t have it already (note that v2.x work well), download HEALPIX_3.00 from this website and run

>> ./configure

Configure the C code only (i.e. main option 2) with the correct location for CFITSIO. In my case I had to specify /home/bl/software/cfitsio/lib and /home/bl/software/cfitsio/include during the configuration script. I didn’t apply any other change, option, or compiler flag since S2LET only need a few basic functions from the Healpix C library.

## S2LET / FLAG / FLAGLET

Note that theses three packages have identical setups (apart from their dependencies). S2LET/FLAG/FLAGLET can be obtained here. After unzipping the package(s), modify the makefile(s) with the right path pointing to FFTW and the other packages (CFITSIO, SSHT, etc). I had to change the order in the linking command and add fPIC to make it work on Linux. All the tests must run and achieve floating point accuracy.

>> make
>> ./bin/c/s2let_test

I am also attaching the makefile that worked for me.

# Setting up the MATLAB interfaces

## GCC and the Mex compiler

A common problem is that the MEX compiler is only compatible with a few versions of gcc. For example I personally had gcc-4.7.2 installed and MEX was complaining a lot about it. So I had to
download an older version of GCC, compatible with MEX, to compile the MATLAB interfaces for SSHT/S2LET/FLAG/FLAGLET. For me, with MATLAB2012b the newest gcc compatible with mex was gcc-4.4. Also, MEX is annoying and not only needs this version installed, but also the right gcc and g++ symbolic links. The simplest solution was to rename /usr/bin/gcc into gcc-4.7.2 (my version) and make gcc-4.4 the default compiler by renaming it to /usr/bin/gcc. There are other ways to proceed and make Mex work with specific versions of GCC but it is far beyond the scope of this tutorial. Contact for further information. On Ubuntu I had to run something like:

>> sudo apt-get install gcc-4.4
>> sudo apt-get install g++-4.4
>> sudo mv /usr/bin/gcc /usr/bin/gcc-4.7.2
>> sudo cp /usr/bin/gcc-4.4 /usr/bin/gcc
>> sudo cp /usr/bin/g++-4.4 /usr/bin/g++

Then MEX should find the right compilers and not complain anymore.

## SSHT/S2LET/FLAG/FLAGLET

If MATLAB is correctly pointed in the respective makefiles and the previous issue with the Mex compiler is resolved, then running the following command should be sufficient:

>> make matlab

Most codes have demos (e.g. s2let_demo1, flag_demo1, etc) that you can run in MATLAB once you have added the correct directories to the PATH (e.g. $S2LET/src/main/matlab) # HEALPix, Matlab and S2LET The S2LET code was initially intended to use exact harmonic and wavelet transforms based on the MW sampling on the sphere. However all features were extended to support the HEALPix format since it is very widespread in astrophysical sciences. In Matlab, S2LET provides routines for • Reading/writing Healpix maps • Plotting the mollweide projection • Performing the spherical harmonic transform (interface to the Healpix Fortran code) • Performing the scale-discretised wavelet transform (interface to the S2LET C code) The third Matlab demo (s2let_demo3) in S2LET gives a good overview of the HEALPix features. The first step is to read a HEALPix map stored in a FITS file % Read data from FITS file s2let_path = '.' inputfile = strcat(s2let_path,'/data/somecmbsimu_hpx_128.fits') [f_ini, nside] = s2let_hpx_read_real_map(inputfile); The parameters for the spherical harmonic and wavelet transforms are defined by % Parameters L = 192; % Band-limit B = 3; % Wavelet parameter J_min = 2; % First wavelet scale J = s2let_jmax(L, B); % Last wavelet scale The data must be band-limited using the spherical harmonic transform, and the wavelet transform can be executed for the input parameters: % Band limit the data flm = s2let_hpx_map2alm(f_ini, 'L', L); nside_recon = 128; % In case the resolution must be changed f = s2let_hpx_alm2map(flm, nside_recon, 'L', L); % Perform wavelet decomposition [f_wav, f_scal] = s2let_axisym_hpx_analysis(f,’B',B,’L',L,’J_min’,J_min); Finally, the wavelet coefficients can be plotted using Mollweide projection: % Plot zoomfactor = 1.2; ns = ceil(sqrt(2+J-J_min+1)) ; ny = ns - 1 ; nx = ns ; figure('Position',[100 100 1300 1000]) subplot(nx, ny, 1); s2let_hpx_plot_mollweide(f); campos([0 0 -1]); camup([0 1 0]); zoom(zoomfactor) title('Initial band-limited data') subplot(nx, ny, 2); s2let_hpx_plot_mollweide(f_scal); campos([0 0 -1]); camup([0 1 0]); zoom(zoomfactor) title('Scaling fct') for j = J_min:J subplot(nx, ny, j-J_min+3); s2let_hpx_plot_mollweide(f_wav{j-J_min+1}); campos([0 0 -1]); camup([0 1 0]); zoom(zoomfactor) title(['Wavelet scale : ',int2str(j)-J_min+1]) end # Installing SSHT, S2LET, FLAG and FLAGLET This is a post to guide you through the installation of the various packages required to perform exact wavelets on the sphere and on the ball. The first step is of course to visit this page to receive the previous packages by email. Once they are unzipped, you may follow the simple steps below. ## Step 1 : Installing FFTW and optionally CFITSIO and HEALPIX SSHT, thus all the other packages, require FFTW. The later can be downloaded here and the installation should be straightforward using the usual ./configure and sudo make all install commands. If you intend to use the FITS and HEALPix features of S2LET, you should also download and install CFITSIO and HEALPIX. The Fortran HEALPix library must be compiled with consistent Fortran flags; you will have to use the same flags to compile the Healpix Fortran interface in S2LET. ## Step 2 : Creating symbols in Bash or Shell One only need to check a few lines in each Makefile to be able to build all packages. In brief, the things that potentially need to be adapted are the locations of the dependencies and the compilers with their options. But the very first step before looking at the makefiles is to define symbols pointing to the libraries. For example in Bash you can modify the following pattern and copy it to your ~/.profile or ~/.bashrc : export FFTW='~/sofware/fftw' export SSHT='~/sofware/ssht' export S2LET='~/sofware/s2let' export FLAG='~/sofware/flag' export FLAGLET='~/sofware/flaglet' If you intend to use the FITS and HEALPix features of S2LET, you should also define export CFITSIO='~/sofware/cfitsio' export HEALPIX='~/sofware/healpix' and make sure the libraries are located in /lib subdirectories. ## Step 3 : Setting up the makefiles In the makefile for SSHT you must specify the location of FFTW, the C compilers+options and optionally the Matlab Mex compiler if you intend to use the Matlab interfaces. More details can be found below. On the contrary, in the makefiles for S2LET/FLAG/FLAGLET you should only check the compilers+options, since the makefiles will find the dependencies based on symbols defined in Bash/Shell. All packages have Matlab interfaces that use Mex/C functions and must be built using the Matlab Mex compiler. Hopefully only the location of Matlab should be specified. For example on my machine it is # Directory for MATLAB MLAB = /Applications/MATLAB_R2011b.app If you work on a recent Mac you should be able to build all libraries by running make all. On a Linux you may have to change a few options. In case you need to make these changes, below are the standard settings that work on Mac OS. The standard settings for compiling the C libraries are # Compilers and options for C CC = gcc OPT = -Wall -O3 -g If you want to use HEALPix in S2LET, the following flags must agree with those used to build HEALPix: # Compilers and options for Fortran FCC = gfortran OPTF90 = -O3 -ffree-form # To be defined if LGFORTRAN cannot be found in the path # GFORTRANLIB = /sw/lib/gcc4.6/lib # Flags for Healpix HPXOPT = -lgfortran -DGFORTRAN -fno-second-underscore -fopenmp The following options will be used to compile the dynamic library required for the IDL interface in S2LET: # Config for dynamic library ifeq ($(UNAME), Linux)
DYLIBEXT = so
DYLIBCMD = cc -flat_namespace -undefined suppress
endif
ifeq ($(UNAME), Darwin) DYLIBEXT = dylib DYLIBCMD = g++ -flat_namespace -dynamiclib -undefined suppress endif ## Step 4 : Installing the libraries and interfaces The packages must be built in this order: SSHT, S2LET, FLAG, FLAGLET. With valid dependencies and options, the command make lib should build the C library in every package. If the compilation was successful, you should check the exactness of each transform, for example by running$S2LET/bin/s2let_test
$FLAG/bin/flag_test$FLAGLET/bin/flaglet_test

The command

make all

will build the C library, the Matlab interfaces and the various high-level programs provided in every package.

# [1211.1680] S2LET: A code to perform fast wavelet analysis on the sphere

http://arxiv.org/abs/arXiv:1211.1680

@article{leistedt:s2let_axisym,
author = {B.~Leistedt and J.~D.~McEwen and P.~Vandergheynst and Y.~Wiaux},
title = {S2LET: A code to perform fast wavelet analysis on the sphere},
journal = {Astron. \& Astrophys.},
year = {submitted, 2012},
pubtype = {submitted},
eprint = {arXiv:1211.1680},
pdf = {papers/s2let_axisym.pdf}
}


# [1205.0792] Exact Wavelets on the Ball

http://arxiv.org/abs/1205.0792

@ARTICLE{leistedt:flaglets,
author = {B. Leistedt and J. D. McEwen},
title = "{Exact Wavelets on the Ball}",
primaryClass = "cs.IT",
journal = {IEEE Trans. Sig. Proc.},
volume = {60},
number = {12},
year = {2012},
doi = {10.1109/TSP.2012.2215030},
pubtype = {refereed},
archivePrefix = "arXiv",
eprint = {1205.0792}
}

# The group website is out!

A few months ago my boss and I started to think that our group deserved a nice webpage. After all, visibility is an important factor for jobs, grants and outreach! We met on a regular basis to explore the immensity of the internet looking for nice blogs and websites, and we finally came up with something.

I am pleased to announce that the webpage of our group of early universe researchers at University College London is finally out!

www.earlyuniverse.org

On this platform we will post news, tutorial, codes and various resources to make our work visible and accessible at various levels of complexity.

# California 2012

I realised a few days ago that I did upload my pictures from my summer trip to California on Facebook but not on Flickr or even on this blog. This is now done! I must say that this trip around California was wonderful and I took loads of pictures.

# Memo: improved ‘top’ command

This command is actually very useful:

top -F -R -o cpu

# Useful: Intel MKL link line advisor

I find Intel’s Math Kernel Library (MKL) extremely powerful but I very often struggle to find the right compilation flags.

MKL provides a wide variety of C/C++/Fortran interfaces to LAPACK, LBLAS and FFTW. Multiple platforms and systems are supported (which is great!) but consequently one must carefully chose which library to use (otherwise everything crashes, of course).

If you’re like me and you struggle every time you have to compile your program, then go on this page :

Hopefully this should help!

# Wavelets on the sphere through harmonic tiling

The wavelet kernels, defined on the sphere through harmonic tiling, are to be convolved with the signal (using a rotation operator).

They have compact support in both real and harmonic space, so that the extracted wavelet coefficient retain the localised information (unlike the Fourier transform). Here the wavelet parameter is 2, and the resolution is 128, so that the transform is orthogonal and complete if one uses the kernels on the left. The signal is projected on these kernels and no information is loss.

# Wavelet decomposition of 3D seismological Earth model

This is an illustration of the exact 3D Flaglets described in Leistedt & McEwen (2012).

Wavelets are designed to extract scale-dependent features in harmonic space and pixel space simultaneously. In this example I consider Ritsema’s model of shear wavespeed perturbations in the Earth mantle (see e.g. Ritsema’s website and Frederick Simon’s website and publications).

The model supplies spherical harmonic coefﬁcients in the angular dimension and radial spline coefﬁcients in the depth dimension to deﬁne a signal on the ball, which I band-limit. Ritsema’s model does not contain a lot of structure at the smallest scales but essentially contains largescale features, as shown on Fig. 1 (namely the initial data and its wavelet decomposition).

Fig. 1 - Wavelet decomposition of 3D seismological Earth model

Because the model mostly contains large-scale features in wavelet spaces, it is a good candidate for a wavelet denoising. We use the same method described in Leistedt & McEwen (2012), i.e. hard thresholding using a simple noise model.

As shown on Fig. 2, realistic noise usually have a small scale structure and will be consequently captured by specific wavelet coefficients that do not overlap with the informative signal very much. The noise model provides the thresholding rule, which in this case is relatively efficient for the reason cited previously.

Fig. 2 - Wavelet denoising

# Earth tomography and wavelets

This is an illustration of the S2LET package. We analyse and decompose some Earth tomography map into scale-dependent maps using axisymmetric wavelets. The two sets of maps below are completely equivalent since the multiresolution algorithm is exact (see explanation below).

Earth tomography: multiresolution wavelet analysis with s2let

Earth tomography: full resolution wavelet analysis with s2let

## Exact harmonic transform

We use the exact sampling theorem and the related spherical harmonic transform described in McEwen & Wiaux 2011.

Roughly speaking, one can only perform an exact transform with a sampling scheme on the sphere, which guarantees that all information (at floating point precision) is captured in a finite set of samples on the sphere. In practice, if the decomposition is L-band-limited, i.e. $f_{\ell m} = 0 \ \forall l \geq L$, one only needs $2L(L-1)+1$ samples on the sphere to perform the following integral exactly (using Gaussian quadrature, describe in the above-cited paper) $f_{\ell m} = \int_{S^2} d\omega f(\omega) Y^*_{\ell m}(\omega)$ where the $Y^*_{\ell m}(\omega)$‘s are the spherical harmonics. a consequence, one can restrict the reconstruction to these points.

Since this usually doesn’t look good on a plot (these samples are the minimal nodes you need to store the information contained in your map), it is advised to oversample the field on a much higher number of samples, so that it looks continuous (but remains band-limited). This is equivalent to do as if the band-limit was greater. The field is reconstructed using $f_(\omega) = \sum_{\ell=0}^{L-1} \sum_{m=-\ell}^{\ell} f_{\ell m} Y_{\ell m}(\omega)$.

## The transform is exact

The initial map is exactly decomposed into four wavelets plus a scaling part and can be reconstructed at floating point precision. Wiaux, McEwen et al describes the procedure to extract wavelet scales from the spherical harmonics $f_{\ell m}$. Large scale wavelets have lower band-limits, which allows to use the previous multiresolution algorithm. Only the finer scales have band-limit  $L$.

## Multiresolution analysis

As an example of the oversampling remark, notice that the maps on the two plots above are completely equivalent. Because each wavelet scale has different band-limits than the main map (lower than L), the first set of maps uses the minimal number of samples for each wavelet scale, whereas the second oversamples all maps on the great number of samples. However each pair of map (the low-resolution and the oversampled) contains the same information.

# Extract data from ArXiV

Here is a piece of code I wrote in Scala to extract data from ArXiV. The inputs are author and category names. Plugging the output into any graph library can give pretty amazing collaboration graphs.

import scala.xml._
import java.net.{URLConnection, URL}
import java.io._

object arxivio {

def loadURL(s: String): Elem = {
val url = new URL(s)
val conn = url.openConnection
}

def loadMonthCatalogue(cat: String, yrmonth: String): NodeSeq
= loadMonthCatalogue(cat, yrmonth, false)

def loadMonthCatalogue(category: String, yrmonth: String, save: Boolean): NodeSeq = {
val startdate = yrmonth + "01"
val enddate = yrmonth + "04"
var url =
"http://export.arxiv.org/api/query?search_query=submittedDate:["
+ startdate + "0000+TO+"+enddate+"2359]+AND+cat:" + category +
"&start=0&max_results=10000&sortBy=submittedDate&sortOrder=descending"
val page = loadURL(url) \ "entry"
if(save){
val outputfile = "data/" + category + "-" + yrmonth + ".xml"
try{
val fstream: FileWriter = new FileWriter(outputfile)
val out:BufferedWriter = new BufferedWriter(fstream);
out.write(page.toString());
out.close();
}
}
page
}

def loadAuthorCatalogue(autname:String): NodeSeq = {
var url = "http://export.arxiv.org/api/query?search_query=all:"
+ autname +
"&start=0&max_results=10000&sortBy=submittedDate&sortOrder=descending"
}

}

# Tensor Calculus

Metric infinitesimal expression : $ds^2 = g_{\mu\nu}dx^\mu dx^\nu$
Change of coordinates : $g_{\mu\nu} = \tilde{g}_{\eta\rho} \frac{\partial\tilde{x}_\eta}{\partial x_\mu} \frac{\partial\tilde{x}_\rho}{\partial x_\nu}$
Christoffel symbols : $\Gamma^\mu_{\alpha\beta} = \frac{1}{2} g^{\mu\nu}( \partial_\beta g_{\nu\alpha} + \partial_\alpha g_{\nu\beta} - \partial_\nu g_{\alpha\beta} )$
Geodesic equation : $\ddot{x}^\mu + \Gamma_{\alpha\beta}^\mu \dot{x}^\alpha \dot{x}^\beta = 0$
Transformation of Christoffel symbols : $\Gamma_{\alpha\beta}^\mu = \frac{\partial x^\mu}{\partial\tilde{x}^\nu} \tilde{\Gamma}_{\eta\rho}^\nu \frac{\partial\tilde{x}^\eta}{\partial x^\alpha} \frac{\partial\tilde{x}^\rho}{\partial x^\beta} + \frac{\partial x^\mu}{\partial \tilde{x}^\nu} \frac{\partial \tilde{x}^\nu}{\partial x^\alpha \partial x^\beta}$
Covariant derivative of a covector : $\nabla_\mu x_\nu = \partial_\mu x_\nu - x_\eta \Gamma^\eta_{\mu\nu}$
D’Alembertian operator : $\square u = \nabla_\mu (\nabla^\mu u ) = \partial_\mu( g^{\mu\nu} \partial_\nu u ) + \Gamma^\mu_{\mu\nu} g^{\nu\eta} \partial_\eta u$

To be continued…

# You’ve seen Earth, but you’ve never seen it like this.

Description from the website:

A ‘Blue Marble’ image of the Earth taken from the VIIRS instrument aboard NASA’s most recently launched Earth-observing satellite – Suomi NPP. This composite image uses a number of swaths of the Earth’s surface taken on January 4, 2012. The NPP satellite was renamed ‘Suomi NPP’ on January 24, 2012 to honor the late Verner E. Suomi of the University of Wisconsin.

Suomi NPP is NASA’s next Earth-observing research satellite. It is the first of a new generation of satellites that will observe many facets of our changing Earth.

Suomi NPP is carrying five instruments on board. The biggest and most important instrument is The Visible/Infrared Imager Radiometer Suite or VIIRS.

To read more about NASA’s Suomi NPP go to: npp.gsfc.nasa.gov/index.html

Credit: NASA/NOAA/GSFC/Suomi NPP/VIIRS/Norman Kuring

“Matter tells spacetime how to curve;
Spacetime tells matter how to move.”

John Wheeler

# Good practices in Fortran (1)

Below is the architecture any programmer should use when writing Fortran libraries, encapsulated in modules. This is one of the most important practices in Fortran.

MODULE mymodule

USE mytypes
USE myframework
IMPLICIT NONE

PRIVATE
PUBLIC f1

CONTAINS

! -------------------
SUBROUTINE f1(...)
...
END SUBROUTINE f1
! -------------------

END MODULE mymodule

# [1111.3591] 3DEX: a code for fast spherical Fourier-Bessel decomposition of 3D surveys

http://arxiv.org/abs/1111.3591

@ARTICLE{leistedt:flaglets,
author = {B. Leistedt, A. Rassat, A. Refregier, J.-L. Starck},
title = "{3DEX: a code for fast spherical Fourier-Bessel decomposition of 3D surveys}",
journal = {\aap},
archivePrefix = "arXiv",
eprint = {1111.3591},
primaryClass = "astro-ph.CO",
keywords = {cosmology: observations, large-scale structure of Universe, methods: statistical, methods: data analysis, galaxies: statistics},
year = 2012,
month = apr,
volume = 540,
eid = {A60},
pages = {A60},
doi = {10.1051/0004-6361/201118463},
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

# Unix: using Screen to avoid program interruption

Screen is one of these programs that can save your life if you know how to use it.

Every single user of Terminal knows ssh, because one often needs to connect on remote machines. Also, most clusters, servers and complex computing architectures don’t have a nice visual interface and are only accessible via ssh.

However, you might have noticed that when losing ssh connection, the console you were working in is closed, and information lost. Even worse, if a program was running, its execution is interrupted.

The problem is very common, and was solved many years ago by the introduction of multi-terminal utilities.

Screen is a very powerful programs; it multiplexes the terminal into multiple shell windows. The most interesting part is that you can close the window without interrupting screen, nor the programs running within it.

Screen is a rather complex program, with unlimited possibilities in terms of usability and complex use, as the man page can attest. But the few basic commands detailed below are very sufficient in many situations. For special use, one can read the manual and various other blogs to delve into the counless features of screen.

In a terminal, you may start a screen session by typing the screen command.

$screen A secondary session is opened in the main one. The big difference between the two is that the screen session might be resumed from any other sh session within your user session, as screen is always running as background task. Consequently, if you close the terminal window and you want to go back to you screen session, you just need to type$ screen -r

This simple concept enables various powerful manipulations. You can name and launch multiple sessions; each of them may be “detached” and “attached” when needed.

For example, I can run the top command (to monitor cpu and memory use) in a screen named “toptask” as a background task using

$screen -mdS toptask top With the “-mdS” tag, the session is named and automatically detached. You can see the ongoing screen sessions with$ screen -list

And get back to any of them, for example “toptask” (i.e. “attach” it) with

$screen -r toptask Now with ssh: if you want to launch a command on a remote machine in a screen session, just use$ ssh user@machine -C screen -mdS screensession mycommand

which creates a secured ssh link, opens a screen session on the machine, runs the command and detaches the window. In other words, your command is executed on the remote machine, but you won’t see anything on your own. To see what is happening, connect to the machine and search for your screen session:

$ssh user@machine$ screen -list
$screen -r screensession In conclusion, with screen you can run complex programs and commands (especially those that last long) on remote machines without fearing to lose ssh connection and interrupting execution. # Unix: get number of cores The command$ less /proc/cpuinfo                                                .

should give you all the CPU information you need. You can also use regular expressions

\$ grep processor /proc/cpuinfo                                                .

to enumerate the processors, without all the details.

# Translate your “Diplome d’Ingénieur” in English

When applying in English-speaking countries for a diploma or a position, most French graduates wonder how to translate their degree and how to present it in order to be understood. This article aims at proposing a translation and understanding its consequences. Indeed, the most important issue is to value your diploma for its true worth (without lying on or underestimating it).

Why writing this post? First, I have always been interested in academic translation issues. I studied in Belgium and France, and graduated in both engineering in physics in the context of a very atypical curriculum. At the end of this five-year journey, I applied for PhDs in various countries (including US and UK), helped several friends to do the same, and got accepted in the UK.

I will also mention that finding a proper translation for your degree really matters. I do maintain a database with hundreds of CVs from engineers/scientists, and some of them are really ridiculous because the person just improvised an approximate translation… and the result is awful. So please be careful when writing your CV and always ask a native speaker to revise it. As I am not a native speaker, please consider this post as a simple proposal, not an absolute rule. But to my knowledge, most people in the academic world agree with what follows.

“The joy of confronting a novel situation and trying to make sense of it – the joy of banging your head against a mathematical wall, and then discovering that there may be ways of either going around or over that wall”

Page 43 (Olkin and Schoenfeld 1994)