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