Как исправить ошибку индекса при попытке сопоставления каталогов с использованием астропийных координат - PullRequest
1 голос
/ 24 марта 2019

Я пытаюсь сопоставить источники каталога, используя пакет координат астропии, и у меня есть три разных файла данных. Моя конечная цель - чтобы все три файла содержали данные для одних и тех же точных источников.

Я думал, что понял это, потому что когда я сравниваю файлы F435W.csv и F550M.csv, код, кажется, работает, и оба заканчивают тем же количеством источников, как я и хотел. Когда я использую тот же самый точный код для сравнения моего третьего файла F625W.csv с F435W.csv, я получаю IndexError: index 6442 is out of bounds for axis 0 with size 6348. Почему я получаю эту ошибку с одним файлом, а не с другим?

Существует значительное различие между количеством источников между всеми тремя файлами, что, как я думаю, обычно вызывает эту ошибку, но не имеет смысла, почему она будет работать с первыми двумя файлами с различной длиной массива, но не с третьим файлом с длиной массива, отличной от первых двух.

import numpy as np

my_csv1 = np.genfromtxt('./F435W.csv', delimiter=',', dtype=float)
ra1, dec1 = my_csv1[:, 12], my_csv1[:, 13]
my_csv2 = np.genfromtxt('./F625W.csv', delimiter=',', dtype=float)
ra2, dec2 = my_csv2[:, 12], my_csv2[:, 13]

from astropy.coordinates import SkyCoord
from astropy import units as u
from astropy.coordinates import match_coordinates_sky

c = SkyCoord(ra1, dec1, frame='icrs', unit='deg')
catalog = SkyCoord(ra2, dec2, frame='icrs', unit='deg')

max_sep = 2.0*u.arcsec
idx, sep, _ = c.match_to_catalog_sky(catalog)
sep_constraint = idx[sep < max_sep]
c_matches = c[sep_constraint]
catalog_matches = c[idx[sep_constraint]]

print (len(c_matches), len(catalog_matches))

При использовании F435W.csv и F550M.csv мой код выводит длины массива 4703 4703, поэтому они имеют одинаковую длину и одинаковое количество источников. Когда я меняю F550M.csv на F625.csv, я получаю IndexError. Согласно информации об ошибке, это, кажется, идет от линии 19 c_matches = c[sep_constraint]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...