Role of Model Blender¶
One problem with combining data from multiple exposures stems from not being able to keep track of what kind of data was used to create the final product. The final product only reports one value for each of the metadata attributes from the model schema used to describe the science data, where each of multiple inputs may have had different values for each attribute. The model_blender package solves this problem by allowing the user to define rules that can be used to determine a final single value from all the input values for each attribute, using separate rules for each attribute as appropriate. This package also creates a FITS binary table that records the input attribute values for all the input models used to create the final product, allowing the user to select what attributes to keep in this table.
This code works by
reading in all the input datamodels (either already in-memory or from FITS files)
evaluating the rules for each attribute as defined in the model’s schema
determining from definitions in the input model’s schema what attributes to keep in the table
applying each attributes rule to the set of input values to determine the final output value
updating the output model’s metadata with the new values
generating the output table with one row for each input model’s values
The model blender package requires
all the input models be available
the output product has already been generated
Both the input models and output product could be provided as either a datamodel instance in memory or as the name of a FITS file on disk. The primary advantage to working strictly in-memory with datamodel instances comes from minimizing the amount of disk I/O needed for this operation which can result in significantly more efficient (read that: faster) processing.
The generated output model will be considered to contain a default (or perhaps even empty) set of Metadata based on some model defined in DataModels. This metadata will be replaced in-place when running Model Blender.
The simplest way to run model blender only requires calling a single interface:
from jwst.model_blender import blendmeta blendmeta.blendmodels(product, inputs=input_list)
product: the datamodel (or FITS filename) for the already combined product
input_list: list of input datamodels or FITS filenames for all inputs used to create the
The output product will end up with new metadata attribute values and a new HDRTAB FITS binary table extension in the FITS file when the product gets saved to disk.
Customizing the behavior¶
blendmodels will not write out the updated product model to disk.
This allows the user or calling program to revise or apply data-specific logic
to redefine the output value for any of the output product’s metadata attributes.
For example, when combining multiple images, the WCS information does not represent
any combination of the input WCS attributes. Instead, the user can have
their own processing code replace the blended WCS attributes with one that was
computed separately using a complex, accurate algorithm. This is, in fact, what
the resample step does to create the final resampled output product whenever it is
called by steps in the JWST pipeline.
Additional control over the behavior of model_blender comes from editing the schema for the input datamodels where the rules for each attribute are defined. A sample definition from the core schema demonstrates the basic syntax used for any model blending definitions:
time_end: title: UTC time at end of exposure type: string fits_keyword: TIME-END blend_rule: last blend_table: True
Any attribute without an entry for
blend_rule will use the default rule of
first which selects the first value from all inputs in the order provided as the
final output value. Any attribute with a
blend_table rule will insure that
the specific attribute will be included in the output HDRTAB binary table appended
to the product model when it gets written out to disk as a FITS file.
The full set of rules included in the package are described in Model Blender Rules and include common list/array operations such as (but not limited to):
These can then be used to customize the output value for any given attribute should the rule provided by default with the schema installed with the JWST environment not be correct for the user’s input data. The user can simply edit the schema definition installed in their JWST environment to apply custom rules for blending the data being processed.