Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Populate segmentation model metadata for exposures and mosaics. #1391

Merged
merged 8 commits into from
Aug 29, 2024
10 changes: 10 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,16 @@ mosaic_pipeline

- Only load patch table when needed. [#1367]

source_catalog
--------------

- Populate segmentation image metadata. [#1391]

resample
--------

- Use association product name for output meta.filename by default [#1391]

0.16.2 (2024-08-23)
===================

Expand Down
2 changes: 1 addition & 1 deletion romancal/outlier_detection/outlier_detection_step.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ def process(self, input_models):
intermediate_files_suffixes = (
"*blot.asdf",
"*median.asdf",
f'*{pars.get("resample_suffix")}*.asdf',
f'*outlier_{pars.get("resample_suffix")}.asdf',
)
for current_path in intermediate_files_paths:
for suffix in intermediate_files_suffixes:
Expand Down
7 changes: 3 additions & 4 deletions romancal/pipeline/mosaic_pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,10 +131,9 @@
)
wcs_file = asdf.open(self.resample.output_wcs)
self.suffix = "i2d"
result = self.resample(result)
self.output_file = input.asn["products"][0]["name"]
# force the SourceCatalogStep to save the results
self.sourcecatalog.save_results = True
result = self.resample(result)
self.sourcecatalog.output_file = self.output_file

Check warning on line 136 in romancal/pipeline/mosaic_pipeline.py

View check run for this annotation

Codecov / codecov/patch

romancal/pipeline/mosaic_pipeline.py#L135-L136

Added lines #L135 - L136 were not covered by tests
result_catalog = self.sourcecatalog(result)
else:
log.info("resampling a mosaic file is not yet supported")
Expand All @@ -144,7 +143,7 @@
self.resample.suffix = "i2d"
self.output_file = input.asn["products"][0]["name"]
result = self.resample(result)
self.sourcecatalog.save_results = True
self.sourcecatalog.output_file = self.output_file

Check warning on line 146 in romancal/pipeline/mosaic_pipeline.py

View check run for this annotation

Codecov / codecov/patch

romancal/pipeline/mosaic_pipeline.py#L146

Added line #L146 was not covered by tests
result_catalog = self.sourcecatalog(result) # noqa: F841
self.suffix = "i2d"
if input_filename:
Expand Down
13 changes: 8 additions & 5 deletions romancal/resample/resample_step.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,14 @@
output = input_models.asn["products"][0]["name"]
elif isinstance(input, ModelLibrary):
input_models = input
# set output filename using the common prefix of all datamodels
output = f"{os.path.commonprefix([x['expname'] for x in input_models.asn['products'][0]['members']])}.asdf"
if len(output) == 0:
# set default filename if no common prefix can be determined
output = "resample_output.asdf"
if "name" in input_models.asn["products"][0]:
output = input_models.asn["products"][0]["name"]

Check warning on line 87 in romancal/resample/resample_step.py

View check run for this annotation

Codecov / codecov/patch

romancal/resample/resample_step.py#L86-L87

Added lines #L86 - L87 were not covered by tests
else:
# set output filename using the common prefix of all datamodels
output = f"{os.path.commonprefix([x['expname'] for x in input_models.asn['products'][0]['members']])}.asdf"
if len(output) == 0:

Check warning on line 91 in romancal/resample/resample_step.py

View check run for this annotation

Codecov / codecov/patch

romancal/resample/resample_step.py#L90-L91

Added lines #L90 - L91 were not covered by tests
# set default filename if no common prefix can be determined
output = "resample_output.asdf"

Check warning on line 93 in romancal/resample/resample_step.py

View check run for this annotation

Codecov / codecov/patch

romancal/resample/resample_step.py#L93

Added line #L93 was not covered by tests
else:
raise TypeError(
"Input must be an ASN filename, a ModelLibrary, "
Expand Down
17 changes: 14 additions & 3 deletions romancal/source_catalog/source_catalog_step.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,10 +145,21 @@ def process(self, input_model):

def save_base_results(self, segment_img, source_catalog_model):
# save the segmentation map and
output_filename = source_catalog_model.meta.filename
segmentation_model = maker_utils.mk_datamodel(
datamodels.MosaicSegmentationMapModel
output_filename = (
self.output_file
if self.output_file is not None
else source_catalog_model.meta.filename
)

if isinstance(source_catalog_model, datamodels.SourceCatalogModel):
seg_model = datamodels.SegmentationMapModel
else:
seg_model = datamodels.MosaicSegmentationMapModel

segmentation_model = maker_utils.mk_datamodel(seg_model)
for key in segmentation_model.meta.keys():
segmentation_model.meta[key] = source_catalog_model.meta[key]

if segment_img is not None:
segmentation_model.data = segment_img.data.astype(np.uint32)
self.save_model(
Expand Down
9 changes: 5 additions & 4 deletions romancal/source_catalog/tests/test_source_catalog.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
MosaicModel,
MosaicSegmentationMapModel,
MosaicSourceCatalogModel,
SegmentationMapModel,
SourceCatalogModel,
)
from roman_datamodels.maker_utils import mk_level2_image, mk_level3_mosaic
Expand Down Expand Up @@ -461,7 +462,7 @@ def test_do_psf_photometry_column_names(tmp_path, image_model, fit_psf):
ImageModel,
{
"cat": SourceCatalogModel,
"segm": MosaicSegmentationMapModel,
"segm": SegmentationMapModel,
"sourcecatalog": ImageModel,
},
),
Expand All @@ -474,7 +475,7 @@ def test_do_psf_photometry_column_names(tmp_path, image_model, fit_psf):
SourceCatalogModel,
{
"cat": SourceCatalogModel,
"segm": MosaicSegmentationMapModel,
"segm": SegmentationMapModel,
},
),
(
Expand All @@ -486,7 +487,7 @@ def test_do_psf_photometry_column_names(tmp_path, image_model, fit_psf):
ImageModel,
{
"cat": SourceCatalogModel,
"segm": MosaicSegmentationMapModel,
"segm": SegmentationMapModel,
},
),
(
Expand All @@ -498,7 +499,7 @@ def test_do_psf_photometry_column_names(tmp_path, image_model, fit_psf):
SourceCatalogModel,
{
"cat": SourceCatalogModel,
"segm": MosaicSegmentationMapModel,
"segm": SegmentationMapModel,
},
),
),
Expand Down