Как сказать `photutils` рисовать только те отверстия, которые удовлетворяют условию?

Я следую примеру вphotutilsдокументация по обнаружению источников в изображении:

      from astropy.stats import sigma_clipped_stats
from photutils.datasets import load_star_image
import numpy as np
import matplotlib.pyplot as plt
from astropy.visualization import SqrtStretch
from astropy.visualization.mpl_normalize import ImageNormalize
from photutils.detection import DAOStarFinder
from photutils.aperture import CircularAperture
    
# Load image
hdu = load_star_image() # load a star image from the dataset
data = hdu.data[0:101, 0:101]

mean, median, std = sigma_clipped_stats(data, sigma = 3.0) # estimate noise

# Find stars in the image that have FWHMs of 3 pixels and peaks ~ 5 sigma > bg
daofind = DAOStarFinder(fwhm = 3.0, threshold = 5.*std)
sources = daofind(data - median)

# Print position and photometric data for each star in the image
for col in sources.colnames:
    sources[col].info.format = '%.8g' # for consistent table output

positions = np.transpose((sources['xcentroid'], sources['ycentroid']))
apertures = CircularAperture(positions, r = 4.)

norm = ImageNormalize(stretch = SqrtStretch())
plt.imshow(data, cmap = 'Greys', origin = 'lower', norm = norm,
           interpolation = 'nearest')

for i in range(len(sources)):
    if sources[i][-1] < -2:
        print(sources[i][-1])
        apertures.plot(color = 'r', lw = 1.5, alpha = 0.5

Что производит

Я добавил последние четыре строки, чтобы нарисовать апертуры только вокруг самых ярких звезд. Однако forцикл не меняет изображение. Я понимаю, почему (он рисует все апертуры несколько раз, по одному для каждой из 4 звезд с mag <-2), но как мне изменить его, чтобы отобразить их только для этих звезд?

0 ответов

Другие вопросы по тегам