Skip to content
8 changes: 8 additions & 0 deletions piff/select.py
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,14 @@ def rejectStars(self, stars, logger=None):
logger.debug("star properties = %s",star.data.properties)
continue

# If doing any selections that rely on hsm, reject any that fail hsm measurement.
if self.hsm_size_reject != 0 or self.max_pixel_cut is not None:
flag = star.hsm[6]
if flag != 0:
logger.verbose("Skipping star at position %f,%f because hsm failed",
star.image_pos.x, star.image_pos.y)
continue

# Add Poisson noise now. It's not a rejection step, but it's something we want
# to do to all the stars at the start, so they have the right noise level.
# We didn't do it earlier for efficiency reasons, in case the full set of objects
Expand Down
4 changes: 4 additions & 0 deletions piff/star_stats.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,12 +167,16 @@ def plot(self, logger=None, **kwargs):
index = self.indices[i]
u = star.data.properties['u']
v = star.data.properties['v']
x = star.data.properties['x']
y = star.data.properties['y']
chipnum = star.data.properties['chipnum']

title = f'Star {index}'
if star.is_reserve:
title = 'Reserve ' + title
if star.is_flagged:
title = 'Flagged ' + title
title += f'\n({chipnum}, {x:.0f}, {y:.0f})'
Comment thread
HyeongHan marked this conversation as resolved.
axs[ii][jj+0].set_title(title)
axs[ii][jj+1].set_title(f'PSF at (u,v) = \n ({u:+.02e}, {v:+.02e})')
axs[ii][jj+2].set_title('Star - PSF')
Expand Down
8 changes: 4 additions & 4 deletions tests/test_input.py
Original file line number Diff line number Diff line change
Expand Up @@ -1707,7 +1707,7 @@ def test_stars():
select = piff.FlagSelect(config['select'], logger=logger)
stars = input.makeStars(logger=logger)
stars = select.rejectStars(stars, logger=logger)
assert len(stars) == 90
assert len(stars) == 89
del config['select']['max_snr_weight']
del config['select']['max_pixel_cut']

Expand All @@ -1717,14 +1717,14 @@ def test_stars():
select = piff.FlagSelect(config['select'], logger=logger)
stars = input.makeStars(logger=logger)
stars = select.rejectStars(stars, logger=logger)
assert len(stars) == 88
assert len(stars) == 87

# hsm_size_reject can also be a float. (True is equivalent to 10.)
config['select']['hsm_size_reject'] = 100.
select = piff.FlagSelect(config['select'], logger=logger)
stars = input.makeStars(logger=logger)
stars = select.rejectStars(stars, logger=logger)
assert len(stars) == 90
assert len(stars) == 89
config['select']['hsm_size_reject'] = 3.
select = piff.FlagSelect(config['select'], logger=logger)
stars = input.makeStars(logger=logger)
Expand All @@ -1734,7 +1734,7 @@ def test_stars():
select = piff.FlagSelect(config['select'], logger=logger)
stars = input.makeStars(logger=logger)
stars = select.rejectStars(stars, logger=logger)
assert len(stars) == 88
assert len(stars) == 87
del config['select']['hsm_size_reject']

# alt_x and alt_y also include some object completely off the image, which are always skipped.
Expand Down