Как можно построить эллиптические апертуры для списка значений большой и малой осей?
Я хочу построить эллиптические апертуры в разных областях в файле UV FITS для разных значений большой и малой осей и тета, угла, образованного большой осью с положительным направлением x. У меня есть массив значений для определения необходимого центра апертуры, соответствующих больших и малых осей и значений тета. Прилагаю написанный мной код. Однако при определении апертуры он не принимает массив в качестве допустимого значения для большой оси, малой оси или теты.
major1 = uvit['R100'] #R100 is the major axis
axrat1= uvit['axrat'] #axrat are the corresponding axis ratio values
angle1= uvit['ang'] # theta to define angle b/w major axis and +ve x-dir
major = [0]*1429
minor = [0]*1429
theta = [0]*1429
centx = [0]*1429
centy = [0]*1429
for i in range (0,len(xuv)):
pixx, pixy = w1.wcs_world2pix(xuv[i],yuv[i] , 1)
centx[i]=pixx
centy[i] = pixy
major[i] = major1[i]
minor[i] = major1[i]*axrat1[i]
theta[i] = math.radians(angle1[i])
pos = np.vstack((centx, centy)).T
apertcent3=EllipticalAperture(pos, major, minor, theta)
apertcent3.plot(color='#0547f9', lw=3)
norm = simple_norm(data, 'sqrt', percent=99.9)
plt.imshow(data, cmap='Greys_r', origin='lower', norm=norm)
plt.xlim(0, data.shape[1]-1)
plt.rcParams["figure.figsize"] = [50,50]
plt.show()
1 ответ
Согласно документам для EllipticalAperture, как вы действительно отметили, он не принимает массивы для большой / малой оси.
Вместо этого вам нужно будет перебрать все (основные, второстепенные) пары, создать
EllipticalAperture
, и строить каждый отдельно.