Tło:Jak mogę dopasować podobne współrzędne przy użyciu Pythona?
I nadano cztery katalogi danych, z których (nazwijmy CAT1) pierwszy daje współrzędne (w rektascensji i deklinacji, RA i DEC) dla źródeł radiowych w polach 1 i 2 , drugi katalog (Cat2) podaje RA i Dec dla źródeł radiowych i źródeł podczerwieni (IR) w polu 1, trzeci katalog (Cat3) podaje RA i Dec dla źródeł radiowych i źródeł podczerwieni w polu 2, a czwarty katalog (Cat4) daje RA i Dec dla źródeł optycznych w polach 1 i 2.
Cat1 ma około 2000 źródeł dla pola 2, pamiętając, że niektóre źródła są faktycznie mierzone wielokrotnie w swoich wymiarach, np. ; źródło 1, źródło 2, źródło 3a, źródło 3b, źródło 3c, źródło 4 ... Cat1 ma około 3000 źródeł dla pola 1, również z częściami źródłowymi. Cat 1 to plik .dat, który otwieram w textedit i konwertuję na .txt do użycia z np.genfromtxt.
Cat2 ma około 1700 źródeł pola 1. Cat3 ma około 1700 źródeł pola 2. Cat2 i Cat3 .csv są pliki, które mam otwarcia w liczbach.
Cat4 ma około 1200 źródeł dla pola 1 i około 700 źródeł dla pola 2. Cat4 to plik .dat, który otwieram w textedit i konwertuję na .txt do użycia z np.genfromtxt.
Dowiedz się także, jak konwertować Cat1 i Cat4 w plikach .csv.
Cel:
Celem jest, aby połączyć te cztery katalogi w jednym katalogu, który daje RA i Dec z cat2, CAT1 i Cat4 (pole 1), wówczas RA i Dec z Cat3, Cat1 i Cat4 (pole 2), takie, że RA i Dec z Cat1 i Cat4 są najbliżej RA i Dec z Cat1 lub Cat2, tak że można powiedzieć, że najprawdopodobniej są one tym samym źródłem. Poziom nakładania się będzie różny, ale wygenerowałem wykresy rozrzutu dla danych, które pokazują, że istnieje odpowiednie źródło Cat1 i Cat4 dla każdego źródła Cat2 i Cat3, z dokładnością wielkości znacznika, z oczywiście wieloma resztkami źródła Cat1 i Cat4, które zawierają znacznie więcej źródeł niż Cat2 i Cat3.
Sztuczka polega na tym, że ponieważ współrzędne nie są dokładnie takie same, muszę najpierw spojrzeć na RA i znaleźć najlepszą pasującą wartość, a następnie spojrzeć na odpowiednią Dec i sprawdzić, czy jest to również najlepiej odpowiadająca wartość .
przykład w przypadku źródła Cat2: RA = 53,13360595 Dec = -28.0530758
cat1: RA = 53,133496, gru = -27,553401 lub RA = 53,133873, gru = -28,054600
Tutaj 53.1336 jest równe między 53.1334 a 53.1338, ale wyraźnie -28.053 jest bliższe -28.054 niż -27.553, więc druga opcja w Cat1 jest zwycięzcą.
Postęp:
Do tej pory dopasowane pierwszych 15 wartości w cat2 do wartości w CAT1 czysto oko (Command + F do jak największej liczby miejsc po przecinku, jak to możliwe, a następnie przy użyciu najlepszych wyroku), ale wyraźnie jest to niezwykle nieefektywne dla wszystkich 3400 źródeł w Cat2 i Cat3.Chciałem tylko przekonać się, jakiego rodzaju dokładności oczekiwać w dopasowaniu, i niestety, niektóre pasują tylko do drugiego lub trzeciego miejsca po przecinku, podczas gdy inne pasują do czwartego lub piątego.
W produkcji moje wykresy rozrzutu, użyłem kodu:
cat1 = np.genfromtext('filepath/cat1.txt', delimiter = ' ')
RA_cat1 = cat1[:,][:,0]
Dec_cat1 = cat1[:,][:,1]
Wtedy po prostu wykreślono RA_cat1 przeciwko Dec_cat1 i powtarza się dla wszystkich moich katalogach.
Mój problem polega na tym, że szukając odpowiedzi na pytanie, w jaki sposób wytworzyć kod, który będzie w stanie dopasować swoje współrzędne, widziałem wiele odpowiedzi, które wymagają konwersji tablic na listy, ale gdy próbuję to zrobić za pomocą
cat1list = np.array([RA_cat1, Dec_cat1])
cat1list.tolist()
Skończyłem z listą formularza;
[RA1, RA2, RA3, ..., RA3000], [dEC1, DEC2, Dec3, ..., Dec3000]
zamiast co zakładam byłby bardziej pomocny;
[RA1, Dec1], [RA2, Dec2], ..., [RA3000, Dec3000].
Co więcej, w przypadku podobnych pytań najbardziej użytecznymi odpowiedziami po pomyślnym przekonwertowaniu listy wydają się być używanie słowników, ale nie jestem pewien, jak używać słownika do tworzenia porównań, które opisałem powyżej.
Dodatkowo, powinienem wspomnieć, że gdy już mi się to udało, poproszono mnie o powtórzenie procesu dla znacznie większego zestawu danych, nie jestem pewien, o ile większy, ale przypuszczam, że może dziesiątki tysięcy zestawów współrzędnych.