Google Colab (Python:3.6.9, astroquery:0.4)
Holen Sie sich zunächst die Himmelsnamen und ihre Nummern in den von Vizier angegebenen Katalog.
from astroquery.vizier import Vizier
v=Vizier(catalog="J/ApJS/80/531/gxfluxes",columns=["Name","logLx","Bmag","dist","type"],row_limit=-1)
data=v.query_constraints()
sname=data[0]["Name"]
namelist=[]
for one in sname:
  name=one.strip().split()[0]
  name=one.replace("N","NGC").replace("I","IC")
  namelist.append(name)
olist=["HRI","DSS"]
In diesem Fall ist len (Namensliste) = 448, sodass wir sehen können, dass es 448 Himmelskörper gibt. Speichern Sie die Anpassungsdateien dieser Himmelskörper der Reihe nach.
def save(p,name,obs): # save file into fits 
    for onep,oneo in zip(p,obs):
        onep.writeto(name+"_"+oneo+".fits",overwrite=True)
from astroquery.skyview import SkyView
path_fits="/content/drive/My Drive/datastore/fits/"
num=int(input("Times of try (for <=448) : "))
filename=[]
for i in range(num):
  name=namelist[i]
  try:
    paths=SkyView.get_images(position=name,survey=olist)
    save(paths,path_fits+name,olist)
    filename.append(name)
    print("Saved  {}".format(name))
  except:
    print("Not found {}".format(name))
Lesen Sie die Fits-Datei aus dem Verzeichnis. Da die Fits-Datei Informationen zu 300x300-ndarray-Arrays enthält, machen Sie sie einmal zu einer 1x90000-Matrix. Machen Sie dasselbe für andere Anpassungsdateien und fügen Sie die Ergebnisse demselben ndarray hinzu.
#Eindimensionale Bilddaten der Anpassungsdatei im Verzeichnis,
#Speichern Sie Bilddaten in jeder Datenzeile in einem zweidimensionalen Array
path_fits=glob.glob("/content/drive/My Drive/datastore/fits/*_DSS.fits")
N=100
#N=len(path_fits)
h=300
w=300
data = np.empty(h*w*N).reshape(N, h*w)
img_data=np.empty(h*w*N)
for i in range(N):
  dsshdu=fits.open(path_fits[i])[0]
  dsswcs=WCS(dsshdu.header)
  dssdata=dsshdu.data
  img_data=np.array(dssdata)
  data[i] = np.array(dssdata).flatten()
data.shape
Formen Sie die zuvor abgeflachten Bilddaten erneut in eine 300 x 300-Matrix um. Zeichnen Sie es einzeln in Richtung der Achse = 0.
data_reshaped=data.reshape(N,h,w)
f=plt.figure(figsize=(15,15))
f.subplots_adjust(left=0,right=1,bottom=0,top=1,hspace=0.05,wspace=0.05)
for i in range(N):
  ax=f.add_subplot(10, 10, i+1, xticks=[], yticks=[])
  ax.imshow(data_reshaped[i], interpolation="bilinear")
plt.show()

Recommended Posts