From: Jinhua He <jin...@yn...> - 2017-11-14 14:10:57
|
Dear Healpix support, I find that, in some special cases, the Healpix functions ang2pix() and pix2ang() could cause unexpectedly large uncertainties. For example, I find that the following GLON and GLAT positions are special: GLON. GLAT +127.35700 -70.06960 +240.03300 +68.75400 +259.98999 +64.32470 +173.56500 -78.76860 +251.53500 +75.20150 +251.28900 +73.32450 +240.60500 +68.93480 +127.75000 -69.86870 +317.81400 +83.79050 +126.47100 -70.25780 +249.42900 +73.99930 +267.22299 +80.09520 +45.12330 +61.10560 +287.09100 -68.67850 +289.97900 +79.35140 +191.73100 -83.41360 +95.77870 -49.29770 +339.63400 -85.57150 +188.50600 +65.50620 +156.36600 -80.56970 If I convert them into angles and then use the function ang2pix() to find the corresponding pixel positions with NSIDE=512, then I convert the pixel positions back into angles, I find that the output angles can be different from the original angles by more than 7 arcmin. However, the pixel resolution is about 6.8 arcmin with NSIDE=512. This means the position difference is larger than a pixel size. At some of the above Galactic positions, such difference can be as large as 40 arcmin! I think this might means there are too large numerical inaccuracy in the two involved functions and improvements are needed. Could you please verify this? Thanks. Sincerely yours, Jinhua ======================================================== Name: Jinhua He, PhD (long term CASSACA visitor) ------------------------------------------------------ Institute 1: Chinese Academy of Sciences, South America Center for Astrophysics (CASSACA) at Cerro Calán Address 1: Camino El Observatorio #1515, Las Condes, Santiago, Chile ------------------------------------------------------ Institute 2: Yunnan Observatories, Chinese Academy of Sciences Address 2: Phoenix Mountain, East Suburb of Kunming, 650216, Yunnan, PR China Telephone 2: 86 871 63920136 (Office) Fax 2: 86 871 63920599 (Office) ------------------------------------------------------ YNAO personal webpage: http://www1.ynao.ac.cn/~jinhuahe/ UofCAS teacher homepage: http://people.ucas.ac.cn/~jinhuahe |
From: Martin R. <martin@MPA-Garching.MPG.DE> - 2017-11-14 17:43:24
|
Hello Jinhua! > I find that, in some special cases, the Healpix functions ang2pix() and > pix2ang() could cause unexpectedly large uncertainties. > For example, I find that the following GLON and GLAT positions are special: > GLON. GLAT > +127.35700 -70.06960 > +240.03300 +68.75400 > +259.98999 +64.32470 > +173.56500 -78.76860 > +251.53500 +75.20150 > +251.28900 +73.32450 > +240.60500 +68.93480 > +127.75000 -69.86870 > +317.81400 +83.79050 > +126.47100 -70.25780 > +249.42900 +73.99930 > +267.22299 +80.09520 > +45.12330 +61.10560 > +287.09100 -68.67850 > +289.97900 +79.35140 > +191.73100 -83.41360 > +95.77870 -49.29770 > +339.63400 -85.57150 > +188.50600 +65.50620 > +156.36600 -80.56970 > > If I convert them into angles and then use the function ang2pix() to > find the corresponding pixel positions with NSIDE=512, then I convert > the pixel positions back into angles, I find that the output angles can > be different from the original angles by more than 7 arcmin. However, > the pixel resolution is about 6.8 arcmin with NSIDE=512. This means the > position difference is larger than a pixel size. At some of the above > Galactic positions, such difference can be as large as 40 arcmin! > I think this might means there are too large numerical inaccuracy in the > two involved functions and improvements are needed. Could you please > verify this? This really seems strange, and I'd like to reproduce it, but I need a bit more information. From which language were you calling the Healpix functionality, and how did you convert the angles? If you could send a few lines of code to demonstrate the problem, that would be perfect! Cheers, Martin |
From: Jinhua He <jin...@yn...> - 2017-11-15 00:34:24
|
Hi Martin, Here is a simple python code example: (Python 3.5.4 (default, Sep 22 2017, 08:33:07) on macOS High Sierra) import healpy as hp import numpy as np def gal2ang(glon,glat): '''Convert Galactic longitude (-180 ~ +180 deg) and latitude (-90 ~ +90 deg) into HealPix angles in radian. It returns Theta (zero at north Galactic pole and increase to PI at south Galactic pole) and Phi (=GLON) in radian.''' # print(glon,glat) theta=(90.-glat)/180.*np.pi if(glon<0.):glon+=360. phi=glon/180.*np.pi return theta,phi theta,phi=gal2ang(+127.35700, -70.06960) ipix=hp.ang2pix(512,theta,phi) theta2,phi2=hp.pix2ang(512,ipix) dthe=(theta2-theta) dphi=(phi2-phi) diff=np.sqrt(dthe*dthe+dphi*dphi)/np.pi*180.*60 # in arcmin print(diff,'arcmin') You will get a difference of about 10.65 arcmin. This is quite big. Best regards, Jinhua > On 14 Nov 2017, at 2:26 PM, Martin Reinecke <martin@MPA-Garching.MPG.DE> wrote: > > Hello Jinhua! >> I find that, in some special cases, the Healpix functions ang2pix() and pix2ang() could cause unexpectedly large uncertainties. >> For example, I find that the following GLON and GLAT positions are special: >> GLON. GLAT >> +127.35700 -70.06960 >> +240.03300 +68.75400 >> +259.98999 +64.32470 >> +173.56500 -78.76860 >> +251.53500 +75.20150 >> +251.28900 +73.32450 >> +240.60500 +68.93480 >> +127.75000 -69.86870 >> +317.81400 +83.79050 >> +126.47100 -70.25780 >> +249.42900 +73.99930 >> +267.22299 +80.09520 >> +45.12330 +61.10560 >> +287.09100 -68.67850 >> +289.97900 +79.35140 >> +191.73100 -83.41360 >> +95.77870 -49.29770 >> +339.63400 -85.57150 >> +188.50600 +65.50620 >> +156.36600 -80.56970 >> If I convert them into angles and then use the function ang2pix() to find the corresponding pixel positions with NSIDE=512, then I convert the pixel positions back into angles, I find that the output angles can be different from the original angles by more than 7 arcmin. However, the pixel resolution is about 6.8 arcmin with NSIDE=512. This means the position difference is larger than a pixel size. At some of the above Galactic positions, such difference can be as large as 40 arcmin! >> I think this might means there are too large numerical inaccuracy in the two involved functions and improvements are needed. Could you please verify this? > > This really seems strange, and I'd like to reproduce it, but I need a bit more information. From which language were you calling the Healpix functionality, and how did you convert the angles? > If you could send a few lines of code to demonstrate the problem, that would be perfect! > > Cheers, > Martin |
From: Eric H. <hi...@ia...> - 2017-11-15 09:52:31
|
Hi Jinhua, you are working on the sphere, so the actual difference for 2 close points is **approximately** np.sqrt( (theta2-theta)**2 + (sin(theta2)*phi2 - sin(theta)*phi)**2 ) / np.pi * 180 * 60 which can be very different from your estimate close to the poles. A better estimate would involve computing the angular distance of the two 3D vectors. Eric > On 15 Nov 2017, at 01:34, Jinhua He <jin...@yn...> wrote: > > Hi Martin, > > Here is a simple python code example: > > (Python 3.5.4 (default, Sep 22 2017, 08:33:07) on macOS High Sierra) > > import healpy as hp > import numpy as np > > def gal2ang(glon,glat): > '''Convert Galactic longitude (-180 ~ +180 deg) and latitude (-90 ~ +90 deg) into HealPix angles in radian. It returns Theta (zero at north Galactic pole and increase to PI at south Galactic pole) and Phi (=GLON) in radian.''' > # print(glon,glat) > theta=(90.-glat)/180.*np.pi > if(glon<0.):glon+=360. > phi=glon/180.*np.pi > return theta,phi > > theta,phi=gal2ang(+127.35700, -70.06960) > ipix=hp.ang2pix(512,theta,phi) > theta2,phi2=hp.pix2ang(512,ipix) > dthe=(theta2-theta) > dphi=(phi2-phi) > diff=np.sqrt(dthe*dthe+dphi*dphi)/np.pi*180.*60 # in arcmin > print(diff,'arcmin') > > You will get a difference of about 10.65 arcmin. This is quite big. > > Best regards, > Jinhua > >> On 14 Nov 2017, at 2:26 PM, Martin Reinecke <martin@MPA-Garching.MPG.DE> wrote: >> >> Hello Jinhua! >>> I find that, in some special cases, the Healpix functions ang2pix() and pix2ang() could cause unexpectedly large uncertainties. >>> For example, I find that the following GLON and GLAT positions are special: >>> GLON. GLAT >>> +127.35700 -70.06960 >>> +240.03300 +68.75400 >>> +259.98999 +64.32470 >>> +173.56500 -78.76860 >>> +251.53500 +75.20150 >>> +251.28900 +73.32450 >>> +240.60500 +68.93480 >>> +127.75000 -69.86870 >>> +317.81400 +83.79050 >>> +126.47100 -70.25780 >>> +249.42900 +73.99930 >>> +267.22299 +80.09520 >>> +45.12330 +61.10560 >>> +287.09100 -68.67850 >>> +289.97900 +79.35140 >>> +191.73100 -83.41360 >>> +95.77870 -49.29770 >>> +339.63400 -85.57150 >>> +188.50600 +65.50620 >>> +156.36600 -80.56970 >>> If I convert them into angles and then use the function ang2pix() to find the corresponding pixel positions with NSIDE=512, then I convert the pixel positions back into angles, I find that the output angles can be different from the original angles by more than 7 arcmin. However, the pixel resolution is about 6.8 arcmin with NSIDE=512. This means the position difference is larger than a pixel size. At some of the above Galactic positions, such difference can be as large as 40 arcmin! >>> I think this might means there are too large numerical inaccuracy in the two involved functions and improvements are needed. Could you please verify this? >> >> This really seems strange, and I'd like to reproduce it, but I need a bit more information. From which language were you calling the Healpix functionality, and how did you convert the angles? >> If you could send a few lines of code to demonstrate the problem, that would be perfect! >> >> Cheers, >> Martin > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________ > Healpix-support mailing list > Hea...@li... > https://lists.sourceforge.net/lists/listinfo/healpix-support |
From: Jinhua He <jin...@yn...> - 2017-12-03 00:50:37
|
Hi Martin, Have you received my this earlier email (see below) and confirmed the problem I reported? I appreciate to know your opinions because I have interests to use the Healpix codes to manipulate the Planck maps. Thank you! Best regards, Jinhua —————— my previous email: Hi Martin, Here is a simple python code example: (Python 3.5.4 (default, Sep 22 2017, 08:33:07) on macOS High Sierra) import healpy as hp import numpy as np def gal2ang(glon,glat): '''Convert Galactic longitude (-180 ~ +180 deg) and latitude (-90 ~ +90 deg) into HealPix angles in radian. It returns Theta (zero at north Galactic pole and increase to PI at south Galactic pole) and Phi (=GLON) in radian.''' # print(glon,glat) theta=(90.-glat)/180.*np.pi if(glon<0.):glon+=360. phi=glon/180.*np.pi return theta,phi theta,phi=gal2ang(+127.35700, -70.06960) ipix=hp.ang2pix(512,theta,phi) theta2,phi2=hp.pix2ang(512,ipix) dthe=(theta2-theta) dphi=(phi2-phi) diff=np.sqrt(dthe*dthe+dphi*dphi)/np.pi*180.*60 # in arcmin print(diff,'arcmin') You will get a difference of about 10.65 arcmin. This is quite big. Best regards, Jinhua > On 14 Nov 2017, at 2:26 PM, Martin Reinecke <martin@MPA-Garching.MPG.DE <mailto:martin@MPA-Garching.MPG.DE>> wrote: > > Hello Jinhua! >> I find that, in some special cases, the Healpix functions ang2pix() and pix2ang() could cause unexpectedly large uncertainties. >> For example, I find that the following GLON and GLAT positions are special: >> GLON. GLAT >> +127.35700 -70.06960 >> +240.03300 +68.75400 >> +259.98999 +64.32470 >> +173.56500 -78.76860 >> +251.53500 +75.20150 >> +251.28900 +73.32450 >> +240.60500 +68.93480 >> +127.75000 -69.86870 >> +317.81400 +83.79050 >> +126.47100 -70.25780 >> +249.42900 +73.99930 >> +267.22299 +80.09520 >> +45.12330 +61.10560 >> +287.09100 -68.67850 >> +289.97900 +79.35140 >> +191.73100 -83.41360 >> +95.77870 -49.29770 >> +339.63400 -85.57150 >> +188.50600 +65.50620 >> +156.36600 -80.56970 >> If I convert them into angles and then use the function ang2pix() to find the corresponding pixel positions with NSIDE=512, then I convert the pixel positions back into angles, I find that the output angles can be different from the original angles by more than 7 arcmin. However, the pixel resolution is about 6.8 arcmin with NSIDE=512. This means the position difference is larger than a pixel size. At some of the above Galactic positions, such difference can be as large as 40 arcmin! >> I think this might means there are too large numerical inaccuracy in the two involved functions and improvements are needed. Could you please verify this? > > This really seems strange, and I'd like to reproduce it, but I need a bit more information. From which language were you calling the Healpix functionality, and how did you convert the angles? > If you could send a few lines of code to demonstrate the problem, that would be perfect! > > Cheers, > Martin |
From: Martin R. <martin@MPA-Garching.MPG.DE> - 2017-12-03 06:30:13
|
Hi Jinhua! > Have you received my this earlier email (see below) and confirmed the > problem I reported? > I appreciate to know your opinions because I have interests to use the > Healpix codes to manipulate the Planck maps. Thank you! Eric actually answered to that email. Sorry, it must have been lost somewhere on the way to you! You can see both answers here: https://sourceforge.net/p/healpix/mailman/healpix-support/?viewmonth=201711 Cheers, Martin |
From: Jinhua He <jin...@yn...> - 2017-12-03 10:45:51
|
Hi Martin, That is great! Thanks for pointing out this improvement in my small python code. I have successfully killed this issue by using the hp.rotator.angdist() function. All the positions in my past email have passed the test. The position difference is always reasonably smaller than the pixel size. Many thanks and have a nice day! Best regards, Jinhua > On 3 Dec 2017, at 3:29 AM, Martin Reinecke <martin@MPA-Garching.MPG.DE> wrote: > > Hi Jinhua! > >> Have you received my this earlier email (see below) and confirmed the problem I reported? >> I appreciate to know your opinions because I have interests to use the Healpix codes to manipulate the Planck maps. Thank you! > > Eric actually answered to that email. Sorry, it must have been lost somewhere on the way to you! > > You can see both answers here: > https://sourceforge.net/p/healpix/mailman/healpix-support/?viewmonth=201711 > > Cheers, > Martin |