Gökbilimciler, Aktif Galaktik Çekirdekleri (AGN) gibi nesneleri çalışırken, bu nesnelerin farklı dalgaboylarında elde edilen verilerini alarak karşılaştırır. Genellikle farklı teleskoplarla yapılan gözlemlerle elde edilen bu veriler, farklı teleskop arşivlerinde (veritabanlarında) bulunur. Aynı bilgileri içerse de iki ayrı veritabanındaki nesneleri eşleştirerek karşılaştırmalar yapmak da parametrelerin referanslarını denetlemek açısından önemli olabilir.

Bu tür araştırmalar, farklı veritabanları arasında gökyüzünde belirli bir yarıçap içinde en yakın karşılığı bulmak için konum-tabanlı bir çapraz eşleştirmeyi gerektirir.

Bu uygulamada, biri parlak galaksilerin radyo bölgede yapılan gözlemlerine ilişkin verileri içeren AT20G Bright Source Sample (BSS) kataloğu, diğeri yine galaksilerin bu kez görsel bölgedeki gözlemlerini içeren bir tüm gökyüzü araştırmasının kataloğu olan SuperCOSMOS all-sky galaxy catalogue kataloglarını çapraz eşleştireceğiz. BSS sadece 320 galaksi içerirken SuperCOSMOS 240 milyon nesne barındırmaktadır.

Herhangi bir radyo bölge kaynağı için optik katalogda bir eşleşme bulunabilirse, ilgilenilen cismin ne tür (bir kuazar olup olmadığı gibi) bir galaksi olduğunu bulmaya bir adım daha yaklaşılmış olunur.

Not: Bu uygulama coursera.org 'da University of Sydney tarafından verilen "Data Driven Astronomy" dersinden adapte edilmiştir.

Koordinat Dönüşümleri

İki kataloğu içerdikleri cisimlerin koordinatları üzerinden eşleştirebilmek için öncelikle her iki katalogda da koordinatların (sağaçıkılık (RA, $\alpha$) ve dikaçıkılık (DEC, $\delta$)) aynı formatta (tercihen derece cinsinden ve kayan noktalı sayı formatında) aynı şekilde ifade edilmesi gerekir. Bunun için koordinatları dönüştürmeye ihtiyaç duyulur.

Koordinat Dönüşümü : Sağaçıklık

Sağaçıklık genellikle saat-dakika-saniye (HMS) gösterimi ile verilir, zira doğma / batma zamanlarını belirleyebilmek için bu gösterim idealdir. HMS notasyonunda bir tam çember 24 saattir, yani HMS formatında 1 saat 15 dereceye eşittir. Her saat 60 dakika, her dakika 60 saniyedir. Bu durumda, $16^{sa}44^{dk}07^{sn}$ aşağıdaki şekilde dereceye dönüştürülür.

In [1]:
print(15*(16 + 44/60 + 7/(60*60)))
251.02916666666667

Koordinat Dönüşümü: Dikaçıklık

Dikaçıklık ise genellike derece-yaydakikası-yaysaniyesi (DMS) notasyonu ile ifade edilir. Tam bir çember 360 derece, 1 derece 60 yaydakikası, 1 yaydakikası 60 yaysaniyesidir.

Örnek olarak $45^{\circ} 20^{\prime} 04^{{\prime}{\prime}}.4$ aşağıdaki şekilde istenilen formata dönüştürülür.

In [2]:
print(45 + 20/60 + 4.4/(60*60))
45.33455555555556

Gök ekvatorunun altındaki koordinatlar için (negatif dikaçıklık) işareti tüm açıya uygulamak gerekir $-15^{\circ} 26^{\prime} 01^{{\prime}{\prime}}$ için dönüşüm aşağıdaki şekilde yapılmalıdır.

In [3]:
print(-1*(15 + 26/60 + 1/(60*60)))
-15.43361111111111

Soru 1.

Koordinat Dönüşümleri

Sırasıyla sağaçıklık (RA, $\alpha$) ve dikaçıklığı (DEC, $\delta$) derece birimine kayan noktalı sayı formatına dönüştüren birer fonksiyon yazınız. Fonksiyonlarınız sağaçıklık için 0,24 saat; deklinasyon için -90,+90 derece aralığında çalışmalıdır.

In [4]:
def hms2dec(h,m,s):
    # sagacikligi donusturen fonksiyon
    if h > 24 or h < 0:
        h %= 24
    return 15*(h + m/60 + s/3600)

def dms2dec(d,m,s):
    if d > 90 or d < -90:
        d %=90
    if d < 0:
        return d - m/60 - s/3600
    else:
        return d + m/60 + s/3600

# Fonksiyonlarin testi
if __name__ == '__main__':
    # Test#1
    print(hms2dec(16, 44, 7))
    # Test#2
    print(dms2dec(45, 20, 4.4))
    # Test$3
    print(dms2dec(-15, 26, 0.1))
251.02916666666667
45.33455555555556
-15.433361111111111

Açısal Uzaklık Hesabı

İki kataloğu çapraz eşleştirmek için gökküresi üzerindeki cisimler arasındaki açısal mesafeyi karşılaştırmamız ve belirlediğimiz bir eşik uzaklık değeri altında uzaklığa sahip olanları eşleştirmemiz gerekir. Bu açısal bir uzaklıktır ve gökküre üzerinden ölçüldüğünde küresel trigonometri formüllerinin kullanımını geektirir.

Koordinatları ($(\alpha_1,\delta_1)$) olan bir cisimle ($(\alpha_2,\delta_2)$) olan bir cisim arasındaki açısal uzaklık Haversine formülü gereğince

$$ d = 2 arcsin \sqrt{sin^2(\frac{|\delta_1 - \delta_2|}{2}) + cos(\delta_1)cos(\delta_2) sin^2(\frac{|\alpha_1 - \alpha_2|}{2})} $$

ile verilir. Bu formül hem basitliği, hem de birbirine çok yakın koordinatlar için kayan noktalı sayı aritmetiği problemlerinden fazlaca etkilenmediği için seçilmiştir. Küresel Astronomi dersinde gördüğünüz diğer formülleri de kullanabilirsiniz.

numpy paketi trigonometri fonksiyonlarını kullanarak formülün nasıl uygulanacağına bakalım

Öncelikle formülü parçalarına ayıralım.

$$ d = 2 arcsin \sqrt{a + b} $$$$ a = sin^2(\frac{|\delta_1 - \delta_2|}{2}) $$$$ b = cos(\delta_1)cos(\delta_2) sin^2(\frac{|\alpha_1 - \alpha_2|}{2}) $$

Şimdi sırasıyla $a$, $b$ ve $d$'yi np.sin, np.cos ve np.abs fonksiyonlarını kullanarak hesaplayabiliriz. Burada trigonotmetrik fonksiyonların argümanlarının radyan cinsinden olmasının gerektiğini, ancak derece - radyan dönüşümünün np.radians fonksiyonuyla kolaylıkla yapılabileceğini hatırlatmakta fayda vardır.

Soru 2.

Açısal Uzaklık Hesabı

Bir küre üzerinde koordinatları bilinen iki nokta arasındaki açısal uzaklığı Haversine formülü ile hesaplayan, angular_dist adında bir fonksiyon yazınız.

In [5]:
def angular_dist(ra1, dec1, ra2, dec2):
    import numpy as np
    ra1 = np.radians(ra1)
    ra2 = np.radians(ra2)
    dec1 = np.radians(dec1)
    dec2 = np.radians(dec2)
    a = np.sin(abs(dec1 - dec2)/2)**2
    b = np.cos(dec1)*np.cos(dec2)*np.sin(abs(ra1 - ra2)/2)**2
    d = 2*np.arcsin(np.sqrt(a + b))
    return np.degrees(d)

# Fonksiyonun testi
if __name__ == '__main__':
  # Test#1
  print(angular_dist(12.17, 0.5, 12.15, 0.2))

  # Test#2
  print(angular_dist(1.3, -3, 2.4, -6))
0.30066590122594716
3.1940994598516967

Katalogların Yüklenmesi

İki katalog çapraz eşleştirilmeden önce içeriklerindeki veriler uygun formatta alınmalıdır. Her ne kadar VO standartları üzerine kurulu olsa da astronomi kataloğu kendine özgü bir formata sahiptir, bu yüzden bu işlemin aralarında eşleşmeler aranacak her katalog üzerinde ayrı ayrı uygulanması gerekir.

Öncelikle parlak kaynakların veritabanı AT20G'ye bakalım. İstendiği takdirde kataloğun tamamı VizieR'den çekilip kullanılabilir. VizieR'e yüklenen her tablo ve katalog için bir $README$ dosyası bulunmaktadır. Dosya yapısı, veri formatı ve içeriğine ilişkin bilgilere bu dosyadan erişilebilir. Ancak basitleştirme için biz veri klasörü altındaki bss.dat dosyasını kullanacağız.

AT20G BSS Kataloğu

Kataloğun tamamı 320 nesne içermektedir.

Her bir sütun belirli uzunluk ve formatta veri içermektedir:

1: Nesne numarası (ID)
2-4: HMS formatında sağaçıklık
5-7: DMS formatında dikaçıkılık
8-: Spektral yoğunluk gibi bilgileri için diğer sütunlar

Çapraz eşleştirme için sadece RA ve DEC bilgilerini içeren sütunlara ihtiyaç duyulduğundan bu bilgiyi almak yeterlidir. Öncelikle dosyayı okuyup bir pandas veriçerçevesine alalım. Bu şekilde "sabit sütun uzunlukları" üzerinden yapılandırılmış bir veriyi okumak için pandas.read_fwf fonksiyonu kullanılır.

In [6]:
import pandas as pd
bss = pd.read_fwf('veri/bss.dat', header=None, usecols=range(1, 7))
print(bss.head())
   1   2      3   4   5     6
0  0   4  35.65 -47  36  19.1
1  0  10  35.92 -30  27  48.3
2  0  11   1.27 -26  12  33.1
3  0  12  59.89 -39  54  26.4
4  0  25  49.18 -26   2  12.7

Soru 3.

BSS kataloğundaki koordinatların uygun formata dönüşümü

Nesne numaralarını (ID) içeren birinci sütunu (0) atladık zira biz sadece koordinatlarla ilgileniyoruz. Ancak bu koordinatlar farklı sütunlarda yer almaktadır. Ayrıca sağaçıklık bilgisi de $HMS$ formatında bulunmaktadır. Daha önce yazdığınız hms2dec ve dms2dec fonksiyonlarını da kullanarak bu veriçerçevesini sadece $RA$ ve $DEC$ bilgisini kayan noktalı sayı formatında içerecek şekilde düzenleyen import_bss fonksiyonu yazınız. Fonksiyonunuz BSS kataloğunun dosya adını alıp, istenen formatta düzenlenmiş Pandas veri çerçevesini döndürmelidir.

In [7]:
import numpy as np
def import_bss(bss_dosya):
    bss = pd.read_fwf(bss_dosya, header=None, usecols=range(1, 7))
    bss['RA'] = np.zeros(len(bss[1]))
    bss['DEC'] = np.zeros(len(bss[1]))
    for i in range(len(bss[1])):
        bss.at[i,'RA'] = hms2dec(bss.loc[i,1],bss.loc[i,2],bss.loc[i,3])
        bss.at[i,'DEC'] = dms2dec(bss.loc[i,4],bss.loc[i,5],bss.loc[i,6])
    bss.drop(range(1,7), axis=1, inplace=True)
    return bss

# Fonksiyonun testi
if __name__ == '__main__':
    # Output of the import_bss and import_super functions
    bss_cat = import_bss('veri/bss.dat')
    print(bss_cat)
             RA        DEC
0      1.148542 -47.605306
1      2.649667 -30.463417
2      2.755292 -26.209194
3      3.249542 -39.907333
4      6.454917 -26.036861
..          ...        ...
155  178.590792 -35.091444
156  181.389042 -26.568028
157  182.261000 -24.105500
158  182.312083 -20.544111
159  183.945333 -17.529250

[160 rows x 2 columns]

SuperCOSMOS Tüm Gökyüzü Kataloğu

SuperCOSMOS tüm gökyüzü kataloğu, görünür bölgede yapılmış çeşitli galaksi taramalarından oluşan bir galaksi kataloğudur.

Tüm kataloğa web sitesi üzerinden sunulan SCOS_XSC_mCl1_B21.5_R20_noStepWedges.csv.gz sıkıştırılmış dosya indirilerek ulaşılabilir ancak bu dosyanın çok büyük olduğunu hatırlatmakta fayda vardır. Bu uygulamada bu kataloğun da sadece bir bölümü kullanılacaktır.

Bu katalog virgülle ayrılmış veri (Comma-Separated Value, CSV) formatında olduğu için pandas.read_csv fonksiyonu kullanılabilir. Başlık bilgisini içeren ilk satır dışında sütunlarda

1: Kayan noktalı sayı formatında ve derece biriminde sağaçıklık
2: Kayan noktalı sayı formatında ve derece biriminde dikaçıklık
3: Parlaklık ve şekil bilgileri gibi dğer bilgiler

yer almaktadır.

In [8]:
import numpy as np
sc = pd.read_csv('veri/superCOSMOS.csv', usecols=[0,1])
print(sc)
             RA        Dec
0      0.060318 -85.656133
1      1.148508 -47.605413
2      1.279433  -1.545901
3      2.648831 -30.463158
4      2.755060 -26.209183
..          ...        ...
495  351.939631 -66.738613
496  353.792801 -66.615497
497  355.525248 -16.149804
498  356.931929 -49.774393
499  359.254383 -21.638386

[500 rows x 2 columns]

Soru 4.

SuperCOSMOS kataloğunun başlık bilgisinde değişim

Görüldüğü gibi SuperCOSMOS kataloğu bu şekilde okunulması durumunda veriyi istenen formatta içermektedir. Ancak, başlıktaki $Dec$ sütunun adını daha sık tercih edilen $DEC$ ile değiştirmek isteyebiliriz. Bu dosyayı okuyup bu değişikliği yaparak superCOSMOS kataloğunu istenen formatta bir pandas veriçerçevesi olarak döndüren import_super fonksiyonu yazınız.

In [9]:
def import_super(superCOSMOS_dosya):
    sc = pd.read_csv(superCOSMOS_dosya, usecols=[0,1])
    sc.rename(columns = {'Dec': 'DEC'}, inplace=True)
    return sc

# Fonksiyonun testi
if __name__ == '__main__':
    # Output of the import_bss and import_super functions
    super_cat = import_super('veri/superCOSMOS.csv')
    print(super_cat)
             RA        DEC
0      0.060318 -85.656133
1      1.148508 -47.605413
2      1.279433  -1.545901
3      2.648831 -30.463158
4      2.755060 -26.209183
..          ...        ...
495  351.939631 -66.738613
496  353.792801 -66.615497
497  355.525248 -16.149804
498  356.931929 -49.774393
499  359.254383 -21.638386

[500 rows x 2 columns]

Soru 5.

En yakın koordinatı arama

Katalog adını ve derece biriminde kayan noktalı sayı formatında herhangi bir koordinatı argümanları olarak alan ve çağrıldığı yere koordinatları verilen cisme bu katalogda en yakın cismin bulunduğu satır numarası ile bu cisimle arasındaki uzaklığı döndüren find_closest isimli bir fonksiyon yazınız. Açısal uzaklık hesabı için daha önce yazdığınız angular_dist fonksiyonunu kullanınız.

In [10]:
import numpy as np
def find_closest(cat, ra, dec):
    cat['sep'] = angular_dist(cat['RA'],cat['DEC'],ra,dec)
    return cat['sep'].argmin(), cat['sep'].min()
    
# Fonksiyonu BSS ile test et
if __name__ == '__main__':
    katalog = import_bss('veri/bss.dat')
    # Test#1
    print(find_closest(katalog, 175.3, -32.5))
    # Test#2
    print(find_closest(katalog, 32.2, 40.7))
(155, 3.7670580226469053)
(25, 57.729135775621295)

Soru 6.

"Naif" Bir Çapraz Eşleştirme Kodu

Artık BSS ve SuperCOSMOS kataloglarını eşleştirmek için gerekli tüm araçlara sahibiz. Bundan sonra yapmamız gereken BSS kataloğundaki parlak radyo kaynaklarının kaçının SuperCOSMOS kataloğunda bir karşılığı olduğunu bulmak için yazdığımız her şeyi bir araya getirmek. Bir algoritma şeklinde bu adımları sıralayacak olursak:

  1. BSS katalooğundan bir cisim seç,
  2. superCOSMOS'ta buna en yakın cismi bul,
  3. Eğer cisimler belirleyeceğimiz bir eşik değerden daha yakınsa bu cismi kaydet
  4. 1-3 arasındaki adımları BSS kataloğundaki tüm cisimler için tekrar et.

Üçüncü adımdaki eşik uzaklık (tolerans) değerini belirlerken ölçüm belirsizliklerinden faydalanmak iyi bir fikirdir. Ancak katalogların epoch'ları da önemli olabilmekte; öz hareket kaynaklı değişimler bu değerleri etkileyebilmektedir. Galaksiler uzak cisimler olduğundan bu etki mimimum olsa da söz konusu yıldızlar olduğunda dikkate alınmalıdır.

Eşleştirme

Verilen bir tolerans değeri ve iki katalog adını alarak bu katalogları çapraz eşleştiren bir crossmatch fonksiyonu yazınız. Fonksiyon, ikinci katalogda bulunup ilk katalogla eşleşen cisimler için ayrı bir liste, eşleşmeyenler için ise ayrı birer liste döndürmelidir.

Eşleşenler listesi, birinci ve ikinci katalogdaki numaralarından oluşan birer demet değişken ve bunların arasındaki mesafeyi içermelidir. Eşleşmeyenlerin listesinde ise yalnızca eşleşmeyen nesnelerin ilk katalogdaki satır numaraları bulunmalıdır. Her iki liste de ilk kataloğun satır numaralarına göre sıralanmış olmalıdır.

In [11]:
def crossmatch(bss_cat, super_cat, tolerans):
    eslesen = []
    eslesmeyen = []
    for i in range(len(bss_cat['RA'])):
        sid = i
        r = bss_cat.loc[i,'RA']
        d = bss_cat.loc[i,'DEC']
        scatid,sep = find_closest(super_cat,r,d)
        if sep <= tolerans:
            eslesen.append((sid,scatid,sep))
        else:
            eslesmeyen.append(sid)
    return eslesen, eslesmeyen

# Test fonksiyonu
if __name__ == '__main__':
    bss_cat = import_bss('veri/bss.dat')
    super_cat = import_super('veri/superCOSMOS.csv')
    # Test#1
    tolerans = 40/3600
    eslesenler, eslesmeyenler = crossmatch(bss_cat, super_cat, tolerans)
    print("-"*25)
    print("tolerans = 40 yaysaniyesi dahilinde {:d} cisim eslesmektedir".format(len(eslesenler)))
    print("Eslesenler:")
    print(eslesenler[:])
    print("-"*25)
    print("tolerans = 40 yaysaniyesi dahilinde {:d} cisim eslesmemektedir".format(len(eslesmeyenler)))
    print("Eslesmeyenler:")
    print(eslesmeyenler[:])
    
    # Test#2
    tolerans = 5/3600
    eslesenler, eslesmeyenler = crossmatch(bss_cat, super_cat, tolerans)
    print("-"*25)
    print("tolerans = 5 yaysaniyesi dahilinde {:d} cisim eslesmektedir".format(len(eslesenler)))
    print("Eslesenler:")
    print(eslesenler[:])
    print("-"*25)
    print("tolerans = 5 yaysaniyesi dahilinde {:d} cisim eslesmemektedir".format(len(eslesmeyenler)))
    print("Eslesmeyenler:")
    print(eslesmeyenler[:])    
    print(eslesmeyenler[:4])
-------------------------
tolerans = 40 yaysaniyesi dahilinde 151 cisim eslesmektedir
Eslesenler:
[(0, 1, 0.00010988610938710059), (1, 3, 0.0007649845967242495), (2, 4, 0.00020863352870707666), (3, 5, 0.00012867299967083928), (6, 10, 7.666235090011008e-05), (7, 13, 0.00020833046101750643), (8, 14, 0.0001774015026088326), (9, 16, 0.00016079604439502975), (11, 17, 0.0003493944606752222), (12, 21, 0.00012170541597764247), (13, 23, 0.008314435904852577), (14, 24, 0.00021977416884437018), (15, 25, 0.0001328286890139291), (16, 26, 3.181530427842653e-05), (17, 28, 0.00019843774684364136), (18, 29, 0.00011585178516956528), (19, 30, 0.0002627136922326124), (20, 31, 0.00039932330328371096), (21, 32, 7.36535577225557e-05), (22, 33, 0.00022280948960772594), (23, 34, 0.00015481960583649628), (24, 36, 0.0003688060288937162), (25, 38, 0.0003750312712778308), (26, 40, 0.0001183449200434592), (27, 41, 0.00012217104062974945), (29, 42, 0.0005573032265457314), (30, 43, 0.00018231015875520086), (31, 45, 0.00023219797492993673), (32, 46, 3.915629971730293e-05), (33, 47, 0.00014607219789169266), (34, 48, 4.1070501693342785e-05), (35, 50, 4.296566928075053e-05), (36, 51, 7.225424528927766e-05), (37, 53, 8.833920915514796e-05), (38, 54, 0.0001813160234814436), (39, 56, 0.00023419031692705898), (40, 57, 0.00014918678107556053), (41, 58, 8.647673054235956e-05), (42, 59, 0.0003397520399069505), (43, 60, 0.00020782283942660332), (45, 62, 0.0002144920866882574), (47, 65, 0.00023316432931055848), (48, 66, 0.00030989999502676393), (49, 67, 0.00018005499418805973), (50, 68, 0.00028934185496114), (51, 69, 0.0049745556457251525), (52, 70, 0.00043685274930407896), (53, 71, 0.00016203598629691387), (54, 72, 0.0001365817069038471), (55, 74, 0.0001629774184535162), (56, 75, 0.005177286279949468), (58, 76, 4.8644868161868625e-05), (59, 77, 0.0004406423620241658), (60, 79, 2.9904361585395218e-05), (61, 80, 3.656619200392527e-05), (62, 81, 0.00012412812833428557), (63, 83, 0.00026837733624882125), (64, 86, 6.509744272703292e-05), (65, 88, 0.0005752282251043577), (66, 89, 2.2534536966261204e-05), (67, 90, 0.004693827458540666), (68, 91, 0.00013261842499102852), (69, 92, 3.131474953574424e-05), (70, 93, 0.00015225487423914686), (71, 95, 0.00013918175767132213), (72, 97, 0.0007847298423634642), (73, 101, 0.00018548926727861216), (74, 102, 7.719986990157814e-05), (75, 103, 0.0003777386578112844), (76, 104, 0.00021913516272958764), (77, 108, 0.00014671076149289455), (78, 109, 6.0225565698537005e-05), (79, 110, 0.0003321454073186171), (80, 111, 0.006435517815824391), (82, 112, 0.0004227204349905356), (83, 114, 0.0039515602204170976), (84, 115, 0.00013873324931176157), (85, 116, 0.0001045570031488151), (86, 117, 0.0003990472980527285), (87, 118, 0.007156113404570787), (88, 119, 7.51127572275804e-05), (89, 120, 0.00011889279959084862), (90, 121, 0.0018600669793894578), (91, 122, 0.00018786253245522847), (92, 125, 0.0003765364316455148), (93, 126, 0.005008459061991599), (94, 128, 0.0040283601665031124), (95, 131, 0.00010055256871168869), (96, 137, 0.0026877610299875913), (97, 139, 0.00023206534341148644), (98, 141, 0.0004766995376615285), (99, 142, 0.00010596728846245189), (100, 147, 0.003846643818059534), (101, 148, 0.003571502527414212), (102, 153, 0.00028669524199686727), (103, 160, 0.004924289145241217), (104, 165, 0.001424280331738518), (105, 166, 0.0041090311972815765), (106, 172, 0.0038465738826470018), (107, 174, 0.0001678694729787695), (108, 177, 0.005951349806952448), (109, 178, 0.00014049865690887451), (110, 179, 0.0014726451317282462), (111, 182, 6.862996313303228e-05), (112, 184, 0.0032992329012745784), (113, 187, 0.000391140920594717), (114, 188, 0.0002520282381857272), (115, 190, 0.0006868890493234737), (116, 191, 0.0006956620395128471), (117, 194, 0.0006140520142714194), (118, 195, 0.0002547438130898174), (119, 197, 0.00037790935162609895), (120, 199, 0.0001526228443317383), (121, 202, 0.0004085829332863241), (122, 209, 0.002899421196680779), (123, 211, 0.0011966345521120198), (124, 213, 0.0028864089502507544), (125, 214, 0.0001242865214240169), (126, 217, 0.005202307719150678), (127, 219, 0.00013716671924993062), (128, 222, 0.0005443019301542766), (129, 223, 4.268856487954769e-06), (130, 224, 8.221045969987173e-05), (131, 226, 0.00023175444131257324), (132, 227, 0.00020738626777566053), (133, 228, 8.112551696461422e-05), (134, 233, 0.00021051906779469658), (135, 234, 0.00019226555769287585), (136, 235, 0.0023960744611244427), (137, 236, 0.00020555786647796388), (138, 237, 0.0015940333223795364), (139, 238, 0.002732332938262304), (140, 240, 0.00010194244304642281), (141, 241, 0.00320443463726279), (142, 242, 0.00016065549419569795), (143, 243, 0.00030358963143692726), (144, 244, 0.0030188204605017714), (145, 248, 0.00039727615550098726), (146, 250, 0.0006551213418237276), (147, 252, 0.00043972180421309533), (148, 255, 0.0004926755377732651), (149, 258, 0.0020545860251241065), (150, 261, 0.0008199501207560891), (151, 262, 0.0007865128439679177), (152, 263, 0.0002859795572892855), (153, 264, 4.042609788622793e-05), (154, 267, 0.004815555264761954), (155, 268, 0.0001389277585904418), (156, 269, 0.0006721092432891682), (157, 270, 0.0008202978484889103), (158, 271, 0.006735673925869233)]
-------------------------
tolerans = 40 yaysaniyesi dahilinde 9 cisim eslesmemektedir
Eslesmeyenler:
[4, 5, 10, 28, 44, 46, 57, 81, 159]
-------------------------
tolerans = 5 yaysaniyesi dahilinde 120 cisim eslesmektedir
Eslesenler:
[(0, 1, 0.00010988610938710059), (1, 3, 0.0007649845967242495), (2, 4, 0.00020863352870707666), (3, 5, 0.00012867299967083928), (6, 10, 7.666235090011008e-05), (7, 13, 0.00020833046101750643), (8, 14, 0.0001774015026088326), (9, 16, 0.00016079604439502975), (11, 17, 0.0003493944606752222), (12, 21, 0.00012170541597764247), (14, 24, 0.00021977416884437018), (15, 25, 0.0001328286890139291), (16, 26, 3.181530427842653e-05), (17, 28, 0.00019843774684364136), (18, 29, 0.00011585178516956528), (19, 30, 0.0002627136922326124), (20, 31, 0.00039932330328371096), (21, 32, 7.36535577225557e-05), (22, 33, 0.00022280948960772594), (23, 34, 0.00015481960583649628), (24, 36, 0.0003688060288937162), (25, 38, 0.0003750312712778308), (26, 40, 0.0001183449200434592), (27, 41, 0.00012217104062974945), (29, 42, 0.0005573032265457314), (30, 43, 0.00018231015875520086), (31, 45, 0.00023219797492993673), (32, 46, 3.915629971730293e-05), (33, 47, 0.00014607219789169266), (34, 48, 4.1070501693342785e-05), (35, 50, 4.296566928075053e-05), (36, 51, 7.225424528927766e-05), (37, 53, 8.833920915514796e-05), (38, 54, 0.0001813160234814436), (39, 56, 0.00023419031692705898), (40, 57, 0.00014918678107556053), (41, 58, 8.647673054235956e-05), (42, 59, 0.0003397520399069505), (43, 60, 0.00020782283942660332), (45, 62, 0.0002144920866882574), (47, 65, 0.00023316432931055848), (48, 66, 0.00030989999502676393), (49, 67, 0.00018005499418805973), (50, 68, 0.00028934185496114), (52, 70, 0.00043685274930407896), (53, 71, 0.00016203598629691387), (54, 72, 0.0001365817069038471), (55, 74, 0.0001629774184535162), (58, 76, 4.8644868161868625e-05), (59, 77, 0.0004406423620241658), (60, 79, 2.9904361585395218e-05), (61, 80, 3.656619200392527e-05), (62, 81, 0.00012412812833428557), (63, 83, 0.00026837733624882125), (64, 86, 6.509744272703292e-05), (65, 88, 0.0005752282251043577), (66, 89, 2.2534536966261204e-05), (68, 91, 0.00013261842499102852), (69, 92, 3.131474953574424e-05), (70, 93, 0.00015225487423914686), (71, 95, 0.00013918175767132213), (72, 97, 0.0007847298423634642), (73, 101, 0.00018548926727861216), (74, 102, 7.719986990157814e-05), (75, 103, 0.0003777386578112844), (76, 104, 0.00021913516272958764), (77, 108, 0.00014671076149289455), (78, 109, 6.0225565698537005e-05), (79, 110, 0.0003321454073186171), (82, 112, 0.0004227204349905356), (84, 115, 0.00013873324931176157), (85, 116, 0.0001045570031488151), (86, 117, 0.0003990472980527285), (88, 119, 7.51127572275804e-05), (89, 120, 0.00011889279959084862), (91, 122, 0.00018786253245522847), (92, 125, 0.0003765364316455148), (95, 131, 0.00010055256871168869), (97, 139, 0.00023206534341148644), (98, 141, 0.0004766995376615285), (99, 142, 0.00010596728846245189), (102, 153, 0.00028669524199686727), (107, 174, 0.0001678694729787695), (109, 178, 0.00014049865690887451), (111, 182, 6.862996313303228e-05), (113, 187, 0.000391140920594717), (114, 188, 0.0002520282381857272), (115, 190, 0.0006868890493234737), (116, 191, 0.0006956620395128471), (117, 194, 0.0006140520142714194), (118, 195, 0.0002547438130898174), (119, 197, 0.00037790935162609895), (120, 199, 0.0001526228443317383), (121, 202, 0.0004085829332863241), (123, 211, 0.0011966345521120198), (125, 214, 0.0001242865214240169), (127, 219, 0.00013716671924993062), (128, 222, 0.0005443019301542766), (129, 223, 4.268856487954769e-06), (130, 224, 8.221045969987173e-05), (131, 226, 0.00023175444131257324), (132, 227, 0.00020738626777566053), (133, 228, 8.112551696461422e-05), (134, 233, 0.00021051906779469658), (135, 234, 0.00019226555769287585), (137, 236, 0.00020555786647796388), (140, 240, 0.00010194244304642281), (142, 242, 0.00016065549419569795), (143, 243, 0.00030358963143692726), (145, 248, 0.00039727615550098726), (146, 250, 0.0006551213418237276), (147, 252, 0.00043972180421309533), (148, 255, 0.0004926755377732651), (150, 261, 0.0008199501207560891), (151, 262, 0.0007865128439679177), (152, 263, 0.0002859795572892855), (153, 264, 4.042609788622793e-05), (155, 268, 0.0001389277585904418), (156, 269, 0.0006721092432891682), (157, 270, 0.0008202978484889103)]
-------------------------
tolerans = 5 yaysaniyesi dahilinde 40 cisim eslesmemektedir
Eslesmeyenler:
[4, 5, 10, 13, 28, 44, 46, 51, 56, 57, 67, 80, 81, 83, 87, 90, 93, 94, 96, 100, 101, 103, 104, 105, 106, 108, 110, 112, 122, 124, 126, 136, 138, 139, 141, 144, 149, 154, 158, 159]
[4, 5, 10, 13]

Görüldüğü gibi daha düşük bir tolerans değeri verildiğinde eşleşmeyen cisim sayısı 9'dan 40'a yükselmiştir.

Önemli ölçüde kısıtlanmış kataloglarda bile çapraz eşleştirmenin uzun zaman aldığı açıktır. Bunun nedeni hesap etkinliği bakımından yetersiz bir algoritma olmasıdır. Çapraz eşleştiricinin uygulanma şekli, BSS'deki her nesne için SuperCOSMOS'taki her nesneye olan mesafenin hesaplanmasını gerektirir. Bu kısıtlanmış kataloglar arası çapraz eşleştirme bile 160 × 500 = 80.000 mesafe hesabını gerektirmektedir.

Her bir uzaklık hesabı birkaç mikrosaniye alırken, bu saniyeler veya dakikalar hızla birikir. Saniyeler başta önemsiz görünebilir, ancak kısıtlanmamış tam SuperCOSMOS kataloğunun bir önceki örnekte çalışılandan 250000 kat daha büyük olduğu ve 126 milyon nesne içerdiği düşünülürse hesap sayısı ve dolayısıyla süresinin ne kadar uzayacağını tahmin etmek zor değildir. SuperCOSMOS ile karşılaştırılabilir bir boyuta sahip AT20G BSS'den farklı bir katalog bununla çapraz eşleştirilmeye çalışıldığında bu yük içinden çıkılmaz hale gelebilir. Bunun gibi bir çapraz eşleştirme işlemi kişisel bir bilgisayarda günler hatta aylar alabilir. Daha iyi bir algoritmaya ihtiyaç duyulacağı açıktır.