'Constraint_Base', 'Constraint_ExtCal', 'Constraint_Image_Nonscience', 'Constraint_Image_Science', 'Constraint_Mode', 'Constraint_Single_Science', 'Constraint_Special', 'Constraint_Spectral_Science', 'Constraint_Target', 'DMSLevel2bBase', 'DMSAttrConstraint', 'Utility' ] # The schema that these associations must adhere to. ASN_SCHEMA = RegistryMarker.schema(libpath('asn_schema_jw_level2b.json')) # Flag to exposure type FLAG_TO_EXPTYPE = { 'background': 'background', } # File templates _DMS_POOLNAME_REGEX = r'jw(\d{5})_(\d{3})_(\d{8}[Tt]\d{6})_pool' _LEVEL1B_REGEX = r'(?P<path>.+)(?P<type>_uncal)(?P<extension>\..+)' # Key that uniquely identifies items. KEY = 'expname' class DMSLevel2bBase(DMSBaseMixin, Association):
'AsnMixin_Lv2Spectral', 'Constraint_Base', 'Constraint_Image_Nonscience', 'Constraint_Image_Science', 'Constraint_Mode', 'Constraint_Single_Science', 'Constraint_Special', 'Constraint_Spectral_Science', 'Constraint_Target', 'DMSLevel2bBase', 'DMSAttrConstraint', 'Utility' ] # The schema that these associations must adhere to. ASN_SCHEMA = RegistryMarker.schema(libpath('asn_schema_jw_level2b.json')) # Flag to exposure type FLAG_TO_EXPTYPE = { 'background': 'background', } # File templates _DMS_POOLNAME_REGEX = 'jw(\d{5})_(\d{3})_(\d{8}[Tt]\d{6})_pool' _LEVEL1B_REGEX = '(?P<path>.+)(?P<type>_uncal)(?P<extension>\..+)' # Key that uniquely identfies items. KEY = 'expname' class DMSLevel2bBase(DMSBaseMixin, Association):
"""Association Definitions: DMS Level2b product associations """ import logging from os.path import basename import re from jwst.associations import (Association, libpath) from jwst.associations.lib.rules_level3_base import Utility as Utility_Level3 # Configure logging logger = logging.getLogger(__name__) logger.addHandler(logging.NullHandler()) # The schema that these associations must adhere to. ASN_SCHEMA = libpath('asn_schema_jw_level2b.json') # File templates _DMS_POOLNAME_REGEX = 'jw(\d{5})_(\d{3})_(\d{8}[Tt]\d{6})_pool' _LEVEL1B_REGEX = '(?P<path>.+)(?P<type>_uncal)(?P<extension>\..+)' class DMS_Level2b_Base(Association): """Basic class for DMS Level3 associations.""" def __init__(self, *args, **kwargs): # I am defined by the following constraints self.add_constraints({ 'program': { 'value': None, 'inputs': ['PROGRAM'] },
'DMS_Level3_Base', 'Utility', ] # Configure logging logger = logging.getLogger(__name__) logger.addHandler(logging.NullHandler()) # Start of the discovered association ids. _DISCOVERED_ID_START = 3001 # Non-specified values found in DMS Association Pools _EMPTY = (None, 'NULL') # The schema that these associations must adhere to. ASN_SCHEMA = libpath('asn_schema_jw_level3.json') # Degraded status information _DEGRADED_STATUS_OK = ( 'No known degraded exposures in association.' ) _DEGRADED_STATUS_NOTOK = ( 'One or more members have an error associated with them.' '\nDetails can be found in the members.exposerr property.' ) # DMS file name templates _ASN_NAME_TEMPLATE_STAMP = 'jw{program}-{acid}_{stamp}_{type}_{sequence:03d}_asn' _ASN_NAME_TEMPLATE = 'jw{program}-{acid}_{type}_{sequence:03d}_asn' _LEVEL1B_REGEX = '(?P<path>.+)(?P<type>_uncal)(?P<extension>\..+)' _DMS_POOLNAME_REGEX = 'jw(\d{5})_(\d{8}[Tt]\d{6})_pool'