Inversion procedure based on 1-dimensional projections of VM-images as described in Gerber et al. [1].

[ from the abstract ]

VM-images are composed of projected Newton spheres with a common centre. The 2D images are usually evaluated by a decomposition into base vectors each representing the 2D projection of a set of particles starting from a centre with a specific velocity distribution. We propose to evaluate 1D projections of VM-images in terms of 1D projections of spherical functions, instead. The proposed evaluation algorithm shows that all distribution information can be retrieved from an adequately chosen set of 1D projections, alleviating the numerical effort for the interpretation of VM-images considerably. The obtained results produce directly the coefficients of the involved spherical functions, making the reconstruction of sliced Newton spheres obsolete.

How it works


Fig. 11 projections (Fig. 2 of [1])

A projection of 3D Newton spheres along the \(x\) axis yields a compact 1D function:

\[L(z, u) = \sum_k \sum_\ell P_\ell(u)P_\ell\left(\frac{z}{r_k}\right) \frac{\prod_{r_k}(z)}{2r_k} p_{\ell k}\]

with \(u = \cos(\theta)\). This function constitutes a system of equations expressing \(L(z, u)\) as a linear combination of \(P_\ell(z/r_k)\). There exists for a given base a unique set of coefficients \(p_{\ell k}\) producing a least-squares fit to the function \(L(z, u)\).

[ extract of a comment made by Thomas Gerber (method author) ]

Imaging an PES experiment which produces electrons that are distributed on the surface of a sphere. This sphere can be described by spherical functions. If all electrons have the same energy we expect them on a (Newton) sphere with radius \(i\). This radius is projected to the CCD. The distribution on the CCD has (if optics are approriate) the same radius \(i\). Now let us assume that the distribution on the Newton sphere has some anisotropy. We can describe the distribution on this sphere by spherical functions \(Y_{nm}\). Let’s say \(xY_{00} + yY_{20}\). The 1D projection of those spheres produces just \(xP_{i0}(k) +yP_{i2}(k)\) where \(P_{i}\) denotes Legendre Polynomials scaled to the interval \(i\) and \(k\) is the argument (pixel).

For one projection Lin-Basex now solves for the parameters \(x\) and \(y\). If we look at another projection turned by an angle, the Basis \(P_{i0}\) and \(P_{i2}\) has to be modified because the projection of e.g., \(Y_{20}\) turned by an angle yields another function. It was shown that this function for e.g., \(P_{2}\) is just \(P_{2}(a)P_{i2}(k)\) where \(a\) is the turning angle. Solving the equations for the 1D projection at angle (\(a\)) with this modified basis yields the same \(x\) and \(y\) parameters as before.

Lin-Basex aims at the determination of contributions in terms of spherical functions calculating the weight of each \(Y_{l0}\). If we reconstruct the 3D object by adding all the \(Y_{l0}\) contributions we get the inverse Laplace transform of the image on the CCD from which we can derive “Slices”.

When to use it

[ another extract from comments by the method author Thomas Gerber ]

The advantage of linbasex is, that not so many projections are needed (typically len(an) ~ len(pol)()). So, linbasex evaluation using a mathematically appropriate and correct basis set should eventually be much faster than basex.

If our 3D object is “sparse” (i.e., contains a sparse set of Newton spheres) a sparse basis may be used. In this case one must have primary information about what “sparsity” is appropriate.

That means that an Abel transform may be simplified if primary information about the object is available. That is not the case with the other methods.

Absolute noise increases in each sphere with sqrt(counts) but relative noise decreases with \(1/\sqrt{\text{counts}}\).

How to use it

To complete the inverse Abel transform of a full image with the linbasex method, simply use the abel.Transform: class

abel.Transform(myImage, method='linbasex').transform

Note, the parameter transform_options=dict(return_Beta=True), provides additional attributes, direct from the transform procedure:

  • .Beta[0] - the speed distribution
  • .Beta[1] - the anisotropy parameter vs radius
  • .radial - the radial array
  • .projection - the radial projections at angles an.

A more complete global call, that centers the image, ensures that the size is odd, and returns the attributes above, would be e.g.

abel.Transform(myImage, method='linbasex', center='convolution',

Alternatively, the linbasex algorithm abel.linbasex.linbasex_transform_full() directly transforms the full image, with the attributes returned as a tuple in this case.


Including more projection angles may improve the transform:

an = [0, 45, 90, 135]


an = arange(0, 180, 10)



Source code


PyAbel python code was extracted from this jupyter notebook supplied by Thomas Gerber.


[1]Th. Gerber, Yu. Liu, G. Knopp, P. Hemberger, A. Bodi, P. Radi, Ya. Sych, “Charged particle velocity map image reconstruction with one-dimensional projections of spherical functions”, Rev. Sci. Instrum. 84, 033101 (2013).