Software Open Access
Mark Wieczorek; MMesch; Elliott Sales de Andrade; Ilya Oshchepkov
This is a major upgrade to SHTOOLS. Full support for Python 3 has been added, a setup.py file has been added for easy installation, Python notebook tutorials have been created, and full support for three major Python classes has been provided (SHCoeffs, SHGrid and SHWindow). One bug in the Fortran code has been fixed, as well as several minor issues with the Python wrapper functions.
Added full support for Python 3.
Fixed a critical, but rare, bug in MakeGridDH, MakeGravGridDH, MakeMagGridDH, and MakeGravGradGridDH. In these routines, the rows of the output grid are calculated by inverse Fourier transmforming a vector that depends upon the spherical harmonic coefficients. This vector, when using the complex-to-real FFTW routines, includes one element that corresponds to the coefficients with m=lmax+1. This element of the array was not properly initialized to zero in the Fortran code, and if the Fortran compiler did not explicitly zero all new arrays, this could have resulted in incorrect output. Given that this term is 1 index above the Nyquist frequency (m=lmax), if this element were not zero, each column of the grid would contain a component that oscillates from -1 to +1 (scaled by the magnitude of the element). Even when this element was not initialized, a subsequent spherical harmonic expansion of the grid would usually give correct results.
Added a setup.py file for easy installation.
Makefiles were extensively modified to simplify the Fortran and Python builds: make all2 and make all3 were removed and replaced by flags that make use of the precompiler to resolve underscore problems; make install now places compiled module files in /usr/local/includes.
Makefiles were improved to minimize problems when installing both fortran and fortran-mp components. When making the latter, all object and module files in the directory src are first deleted.
The namespace of pyshtools was reorganized to list the routines by submodule name. A list of all routines is given in the submodule shtools.
Add full support for the Python classes SHCoeffs, SHGrid, and SHWindow.
Added an info() method to shtools constants that prints an info string.
Changed the Python wrapper so that the output arrays in the SHExpand routines correspond to the optional input variablelmax_calc. Modified the dimensions by 1 for the output power spectrum in the wrapper functions for SHBias and SHBiasK.
Changed the primary input parameter of SHMTCouplingMatrix to be a matrix of power spectra of the localization windows instead of a matrix of spherical-harmonic coefficients of spherical-cap localization windows. Furthermore, the output dimensions of the matrix have been switched.
Added two fortran routines for performing multitaper spectral analyses when using windows generated from a mask, SHMultiTaperMaskSE and SHMultiTaperCSE.
Minor modifications to the Python example scripts.
Minor bug fix to the scripts that create the unix man documentation.
Added Python notebook tutorials.
Created an SHTOOLS development fund, funded by bitcoin donations.