updated Kris and Ben affiliations; updated some links in resources
This problem will be fixed with the new hpxconfig_functions.sh found in https://sourceforge.net/p/healpix/code/HEAD/tree/branches/branch_v383r1259/hpxconfig_functions.sh or in https://sourceforge.net/p/healpix/code/HEAD/tree/trunk/hpxconfig_functions.sh and to be put in Healpix top directory. Then repeat the configure process.
configure crashes for F90 and C when libcfitsio.a not present (but .so or .dylib are)
works smoothly with libcfitsio.so (or libcfitsio.dylib) instead of libcfitsio.a
works smoothly with libcfitsio.so (or libcfitsio.dylib) instead of libcfitsio.a
Generation of unreadable header when not specifying all header cards
Using the actual GNU gcc (and gfortran) compilers from homebrew generally gives much better results than clang, and is a guaranty that OpenMP (=parallelization) will work.
HI Yoshinori, thanks for the plots. Just to be sure, those latest plots have Healpix run with the dipole+monopole regression AND iter=3 ? The regression only affects the T map, and therefore only the TT spectrum. The discrepancy seen in EE and BB is not related to that. And did you try running the fortran code in double precision ?
OK, I think I found he problem ... it happens in the translation to Python. In ring2xyf there are integer divisions, for example: iring = (ip/(4*nside_)) + nside_; /* counted from North pole */ int ifm = (iphi - ire/2 + nside_ -1) / nside_; int ifp = (iphi - irm/2 + nside_ -1) / nside_; When translating this to Python, it is mandatory to use the integer division operator "//", otherwise the results wil be wrong: iring = ( ip // ( 4 * nside ) ) + nside ifm = ( iphi - ire//2 + nside - 1 ) // nside...
Any other comments or suggestions for the reason or debug method that is worth doing? Thanks, Yoshinori
describe how you get from the information provided by ring2xyf to the shape of pixel boundaries I don't really fully understand the whole algorithm, but the function calls are roughly nested like this: healpy.boundaries() boundaries_single() healpix_base::boundaries() pix2xyf() < might be a ufunc, or a pywrapper kludge pix2xyf_ring() < might be a ufunc, or a pywrapper kludge ring2xyf() Are you working with highly supersampled pixels to trace the boundary? I found it by transcribing the code from...
... or even simpler: could you give us values for nside and pix, for which the C and C++ versions provide different results?
Thanks for the report! To help me understand wat's going on, could you please describe how you get from the information provided by ring2xyf to the shape of pixel boundaries? It's not immediately obvious to me, since ring2xyf only deals with pixel centers. Are you working with highly supersampled pixels to trace the boundary? If you could provide an example program demonstrating the problem that would of course be even better!
ring2xyf differs between C and cxx versions, resulting in different pixel boundaries
Great, thanks! I appreciate the quick fix.
This is a remnant of the old licensing. src/idl is subject to the same GPLv2 license as the rest of Healpix, and the src/idl/README.txtwill now read `Copyright (C) 1997-2025 Krzysztof M. Gorski, Eric Hivon, Benjamin D. Wandelt, Anthony J. Banday, Matthias Bartelmann, Hans K. Eriksen, Frode K. Hansen, Martin Reinecke This file is part of HEALPix. HEALPix is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation;...
reaplace old license by GLPLv2 in README.txt
reaplace old license by GPLv2
Dear Anonymous, thank you for your post. After reading it, it seems that you are trying to do a system-wide installation of Healpix on someone else behalf. As for me, I am not paid to maintain Healpix, but do it on my free time. Since you claim a long experience of life, you may remember that introducing yourself goes a long way toward starting a constructive dialog. Cheers, Eric Hivon
No support for installation in build system
src/idl: Non-free license incompatible with GPL-2.0
The Planck map you are analyzing is real data, and not necessarily band limited (ie, it has power at very small scales, at least because of noise), whereas the simulated map you read from the Healpix package is band limited by construction, because its lmax was set to 2xNside. Yeah, I read such kind of documents and understood it, but thank you for reminding. We should get the same alms when a input map is the same. That's why I am confused. Beware that healpy and Healpix may not treat the monopole...
Thank you for your reply. It seems I can attach only one figure. This is Healpix_iter3 vs Healpy_ite0.
This is "Healpix_iter3 vs Healpy_ite0"
Hi Yoshinori, I see the difference maps, but not the the plot of C(l) with various iter values. The Planck map you are analyzing is real data, and not necessarily band limited (ie, it has power at very small scales, at least because of noise), whereas the simulated map you read from the Healpix package is band limited by construction, because its lmax was set to 2xNside. Beware that healpy and Healpix may not treat the monopole and dipole the same way. I think that by default healpy with regress...
Dear Martin, Thank you for you reply. I attached plots you requests: "Healpix_iter3 vs Healpy_ite0" and "Healpix_iter3 vs Healpix_ite0" . I confirmed Fortran code output from iter3 and iter0 are different, which indicate it worked somehow. On the other hand, healpy output with iter0 was not different than healpy output with iter3. Healpix_iter3 vs Healpy_ite0 has still difference. I also attached map comparizon between INPUT map and OUTPUT map calculated with healpy.synfast by using the output alms...
Do you see my post above?
Hi Yoshinori, thank you for submitting this! From the attached plot it almost looks like the Fortran code has been run without iterating (deviation in TT at low l, noise at high l), even though you specified iter_order=3. Just as an experiment, could you re-run healpy with 0 iterations and compare that to the Healpix results? Another strange thing is that the TT spectra at low l match very well for even l, but badly for odd ones. I'm pretty sure this is a hint at the source of the problem, but I...
Different alms with anafast bwteen Healpix (fortran) and healpy
branch for release 3.83
update .htaccess
update website
cosmetic edits on documentation
a bit more documentation
implement and document the use of pip to install healpy
include healpy 1.18.0
works for all (?) versions of FL
Available languages
Available languages
updated Version
updated PNG version of new_dir_tree
preping for 3.83
update epstopdf to version 2.36 (2024-07-11)
dir tree of 3.83
update doc
update 2 IDL routines to latest (last?) IDLastro version
swich version number back to 3.83
get ready for 3.83
See https://sourceforge.net/p/healpix/bugs/133/
I had this issue, too. Did this get fixed in a new release? I am configuring 3.82
turn down version number to 3.82.1 again; this is a bugfix release
fix https://github.com/healpy/healpy/issues/968
m1 arm64 installation problem with Heasoft6.32
healpy depends on healpix 3.83 but the latest release here is still 3.82
I wouldn't recommend doing this, since this approach will become unmaintainable once you have more complicated projects. My recommendation is to learn a bit about Makefiles (or about cmake or other alternatives if you prefer) and add the appropriate Makefile or other to your code directory. Then a simple "make" will always do the expected thing, and you do not need to change global configuration files.
Dear Martin, Also is there any way I could add it to bashrc or something by which I would not have to used the -I and the -L options?
Dear Martin, It works. Thank you very much.
I think that the installation actually went fine. But the command "make Test -lhealpix_cxx" will not work in practice - you cannot pass compilation and linker flags to "make" in this way. The command(s) that must be executed (with the help of "make" or in a different way is: g++ Test_cpp -I /home/medha/Programs/Healpix_3.82/include -L /home/medha/Programs/Healpix_3.82/lib -lhealpix_cxx (combined compilation and linking) or (separate compilation and linking): g++ Test.cpp -c -I /home/medha/Programs/Healpix_3.82/include...
I think that the installation actually went fine. But the command "make Test -lhealpix_cxx" will not work in practice - you cannot pass compilation and linker flags to "make" in this way. The command(s) that must be executed (with the help of "make" or in a different way is: g++ Test_cpp -I /home/medha/Programs/Healpix_3.82/include -L /home/medha/Programs/Healpix_3.82/lib -lhealpix_cxx (combined compilation and linking) or (separate compilation and linking): g++ Test_cpp -c -I /home/medha/Programs/Healpix_3.82/include...
Cannot include healpix headers in my own C++ code
Here's a quick hack, which only requires a minimal change: $ echo 3.10.4 | awk -F. '{print ($1*100)+$2}' 310 $ echo 3.6.5 | awk -F. '{print ($1*100)+$2}' 306 (Not exhaustively tested!)
fitstools.junk.F90:358:56: 358 | call ftgcvj(unit, colnum, frow, felem, np, nullval, data, anynull, status) | 1 ...... 2112 | call ftgcvj(unit, 1_i4b, nrows, 1_i4b, 1_i4b, 0_i4b, idmax, anyf, status) ! read element on last row of first column | 2 Error: Rank mismatch between actual argument at (1) and actual argument at (2) (scalar and rank-1)
yes I have to use it unfortunately
Version 3.50 is very old. Do you really need to use that specific version ?
Mac arm64 m1 Healpix 3.50 Nonexistent include directory problem
better cfitsio fix
prepare C++ sources for release 3.83
temporary patch from Leo Singer to fix cfitsio troubles
modularize alice3 code, contributed by Leo Singer
updated hpxconfig_functions.sh to run with Intel ifx compiler
bug fix for https://github.com/healpy/healpy/issues/904
Cannot compile Healpix on M3 chips
Either of the 2 files below, to be put in Healpix/src/idl/HEALPix_startup, will fix that problem https://sourceforge.net/p/healpix/code/1230/tree/trunk/src/idl/HEALPix_startup https://sourceforge.net/p/healpix/code/HEAD/tree/branches/branch_v382r1223/src/idl/HEALPix_startup
make sure no variables (eg, count and junk) are left defined when the script exits
make sure no variables (eg, count and junk) are left defined when the script exits (see https://sourceforge.net/p/healpix/bugs/138/)
make sure no variables (eg, count and junk) are left defined when the script exits (see https://sourceforge.net/p/healpix/bugs/138/)
make sure no variables (eg, count and junk) are left defined when the script exits (see https://sourceforge.net/p/healpix/bugs/138/)
make sure no variables (eg, count and junk) are left defined when the script exits (see https://sourceforge.net/p/healpix/bugs/138/)
HEALPix_startup has unwanted side effects in IDL
(Edit: please ignore this post ... I was utterly confused ... ) Sorry, you actually told the compiler version further above! I'll see if I can find a solution
Sorry, you actually told the compiler version further above! I'll see if I can find a solution.
That looks like an overly pedantic Fortran compiler which notices that the same function is called with arguments of different dimensionalities. When calling a C function (which is happening here), this can be completely fine, and to the best of my knowledge it is. Without knowing the compiler you are using I can't provide much help, but I'm pretty sure that there will be a compiler option which turns of this check (or turns it into a warning).
OK, I have removed the section in question. Let's see how this works out! Thanks again, Martin
#137: remove zlib detection
libz should only be a dependency of libcfitsio, but not directly of Healpix C++ itself. If this is the case, do we actually need the test? I think in this case the test should be dropped as there is no dependency. The libcfitsio.pc pkg-config file already correctly declares -lz as a dependency in Libs.private for static linking, and for dynamic linking, libcfitsio.so correctly has libz.so linked in. So from my cursory look, it can be dropped.
Thanks a lot for the report! I admit that the whole process for checking the presence of cfitsio is pretty strange, mostly because a long time ago cfitsio was often built without support for very large files. In such situations, the cfitsio library would be found, but it missed some functions that Healpix needs (typically ending in "ll"). So we added the explicit check for "ffgnwrll". Actually I'm not sure why the explicit check for libz is in there. libz should only be a dependency of libcfitsio,...
Thanks a llot for the report! I admit that the whole process for checking the presence of cfitsio is pretty strange, mostly because a long time ago cfitsio was often built without support for very large files. In such situations, the cfitsio library would be found, but it missed some functions that Healpix needs (typically ending in "ll"). So we added the explicit check for "ffgnwrll". Actually I'm not sure why the explicit check for libz is in there. libz should only be a dependency of libcfitsio,...
zlib detection is incorrect
renamed COMPILE into INSTALL
Exporting HEALPix mesh for finite element libraries
Python version >=3.10 incorrectly detected
If lonlat=True, theta indeed refers to longitude and phi to latitude (and degrees are expected instead of radians,as you observe). Why the healpy developers made this choice I don't know, but I fear this has become too well-established now to be changed. (Note that this is in principle documented in https://healpy.readthedocs.io/en/latest/generated/healpy.pixelfunc.ang2pix.html, although the swapping of longitude and latitude is mentioned only implicitly.)
I didn't mean to be anonymous BTW my GH handle is knservis if you need to talk to me. Cheers