Я использую Astropy.coordinates
для сопоставления двух астрономических каталогов с координатами RA, DEC.
Я могу найти список ближайших соседей, следуя документации astropy
(ссылка на документацию astropy.coordinates) и выполнив:
from astropy.coordinates import SkyCoord
from astropy import units as u
cat1 = SkyCoord(ra=ra1*u.degree, dec=dec1*u.degree)
cat2 = SkyCoord(ra=ra2*u.degree, dec=dec2*u.degree)
idx, d2d, d3d = cat1.match_to_catalog_sky(cat2)
Где ra1
, ra2
, dec1
, dec2
- векторы, содержащие координаты в каталогах 1 и 2.
Результат idx
дает для каждого объекта в каталоге 1 идентификатор ближайшего совпадения в каталоге 2. d2d
дает 2d-разделение между совпадениями, а d3d
дает 3D-разделение между совпадениями.
Поэтому, чтобы выбрать совпадения между желаемым радиусом совпадения, например, используя радиус 1 дюйм, я могу сделать:
matched=idx[np.argwhere(d2d<1.*u.arcsec)[0]]
Теперь, чтобы выбрать подходящие радиусы для этого последнего шага, я хотел бы изучить, каково расстояние d2d
между каждым источником в cat1
и их вторым ближайшим соседом.
Кто-нибудь знает, как я могу выполнить этот процесс сопоставления, одновременно записывая вторых соседей?
Обратите внимание, что match_to_catalog_sky
принимает ключевое слово nthneighbor
, которое по умолчанию равно 1 (т. Е. Ближайший), но может быть установлено на другие значения. Изменение этого должно сделать это.
Похоже, вы также можете обратить внимание на метод search_around_sky
, с помощью которого вы можете найти все совпадения до предела разделения.
Не могли бы вы предоставить фиктивные данные?