Skip to content

Instantly share code, notes, and snippets.

@braingram
Created November 8, 2022 15:10
Show Gist options
  • Save braingram/67844db5adde45454d7312269c58532a to your computer and use it in GitHub Desktop.
Save braingram/67844db5adde45454d7312269c58532a to your computer and use it in GitHub Desktop.
Comparing dither enum values in core.schema between current HEAD and PR
import requests
import yaml
old_schema_url = "https://raw.githubusercontent.com/spacetelescope/jwst/e154d67fa415ce526cfd9359ae4330bd56c112a6/jwst/datamodels/schemas/core.schema.yaml"
new_schema_url = "https://raw.githubusercontent.com/braingram/jwst/bug/schema_nonunique_enum/jwst/datamodels/schemas/core.schema.yaml"
enum_values = []
for url in (old_schema_url, new_schema_url):
with requests.get(url) as r:
d = yaml.safe_load(r.text)
vs = d['properties']['meta']['properties']['dither']['properties']['primary_type']['enum']
enum_values.append(vs)
# compare values
ref = set(enum_values[0])
print(f"Using reference values (n={len(ref)})")
for vs in enum_values[1:]:
comparison = set(vs)
if ref != comparison:
raise Exception("Enum values do not match!")
print(f"enum values (n={len(comparison)}) matches reference")
print("All enums matched reference:")
print(sorted(list(ref)))
@braingram
Copy link
Author

Example output:

Using reference values (n=159)
enum values (n=159) matches reference
All enums matched reference:
['1LOS', '1PIXEL-SLIT-SCAN', '1PIXEL-SLITLESS-SCAN-LONG', '1PIXEL-SLITLESS-SCAN-SHORT', '2-POINT', '2-POINT-MIRI-F1280W-WITH-NIRCAM', '2-POINT-MIRI-F1280W-WITH-NIRISS', '2-POINT-MIRI-F1500W-WITH-NIRCAM', '2-POINT-MIRI-F1800W-WITH-NIRCAM', '2-POINT-MIRI-F1800W-WITH-NIRISS', '2-POINT-MIRI-F2100W-WITH-NIRCAM', '2-POINT-MIRI-F2100W-WITH-NIRISS', '2-POINT-MIRI-F2550W-WITH-NIRCAM', '2-POINT-MIRI-F2550W-WITH-NIRISS', '2-POINT-MIRI-F560W-WITH-NIRISS', '2-POINT-MIRI-F770W-WITH-NIRCAM', '2-POINT-NOD', '2-POINT-WITH-NIRCAM-SIZE1', '2-POINT-WITH-NIRCAM-SIZE2', '2-POINT-WITH-NIRCAM-SIZE3', '2PIXEL-SLIT-SCAN', '2PIXEL-SLITLESS-SCAN-SHORT', '3-POINT-MIRI-F1000W-WITH-NIRCAM', '3-POINT-MIRI-F1000W-WITH-NIRISS', '3-POINT-MIRI-F1280W-WITH-NIRCAM', '3-POINT-MIRI-F1280W-WITH-NIRISS', '3-POINT-MIRI-F1500W-WITH-NIRCAM', '3-POINT-MIRI-F1800W-WITH-NIRCAM', '3-POINT-MIRI-F1800W-WITH-NIRISS', '3-POINT-MIRI-F2100W-WITH-NIRCAM', '3-POINT-MIRI-F2100W-WITH-NIRISS', '3-POINT-MIRI-F2550W-WITH-NIRCAM', '3-POINT-MIRI-F2550W-WITH-NIRISS', '3-POINT-MIRI-F770W-WITH-NIRCAM', '3-POINT-MIRI-F770W-WITH-NIRISS', '3-POINT-NOD', '3-POINT-WITH-NIRCAM-SIZE1', '3-POINT-WITH-NIRCAM-SIZE2', '3-POINT-WITH-NIRCAM-SIZE3', '4-POINT', '4-POINT-DITHER', '4-POINT-MIRI-F1000W-WITH-NIRCAM', '4-POINT-MIRI-F1000W-WITH-NIRISS', '4-POINT-MIRI-F1280W-WITH-NIRCAM', '4-POINT-MIRI-F1280W-WITH-NIRISS', '4-POINT-MIRI-F1500W-WITH-NIRCAM', '4-POINT-MIRI-F1800W-WITH-NIRCAM', '4-POINT-MIRI-F1800W-WITH-NIRISS', '4-POINT-MIRI-F2100W-WITH-NIRCAM', '4-POINT-MIRI-F2100W-WITH-NIRISS', '4-POINT-MIRI-F2550W-WITH-NIRCAM', '4-POINT-MIRI-F2550W-WITH-NIRISS', '4-POINT-MIRI-F770W-WITH-NIRCAM', '4-POINT-MIRI-F770W-WITH-NIRISS', '4-POINT-NOD', '4-POINT-SETS', '5-POINT-NOD', '5-POINT-SMALL-GRID', '5PIXEL-8x4-MAP-SLITLESS', '5PIXEL-SLITLESS-SCAN', '7PIX-5PIX-SLIT-SCAN', '7PIXEL-9x3-MAP-SLITLESS', '7PIXEL-SLIT-SCAN', '7PIXEL-SLITLESS-SCAN', '7X3-PIXEL-MAP-CENTER', '7X3-PIXEL-MAP-NOD1', '7X3-PIXEL-MAP-NOD2', '7x3-PIXEL-MAP-SLITLESS', '9-POINT-MIRI-F1000W-WITH-NIRISS', '9-POINT-MIRI-F1280W-WITH-NIRCAM', '9-POINT-MIRI-F1280W-WITH-NIRISS', '9-POINT-MIRI-F1500W-WITH-NIRCAM', '9-POINT-MIRI-F1800W-WITH-NIRISS', '9-POINT-MIRI-F2100W-WITH-NIRCAM', '9-POINT-MIRI-F2550W-WITH-NIRCAM', '9-POINT-MIRI-F2550W-WITH-NIRISS', '9-POINT-MIRI-F770W-WITH-NIRCAM', '9-POINT-MIRI-F770W-WITH-NIRISS', '9-POINT-SMALL-GRID', '9x3-8x4-SCAN-MAPS-SLITLESS', 'ALONG-SLIT-NOD', 'AMI', 'ANY', 'BACKGROUND', 'CYCLING', 'FULL', 'FULL-TIGHT', 'FULLBOX', 'IMAGING', 'INTRAMODULE', 'INTRAMODULEBOX', 'INTRAMODULEX', 'INTRAPIXEL-SLIT-SCAN-CENTER', 'INTRAPIXEL-SLIT-SCAN-NOD1', 'INTRAPIXEL-SLIT-SCAN-NOD2', 'INTRASCA', 'LFLAT_CORON1065', 'LFLAT_CORON1140', 'LFLAT_CORON1550', 'LFLAT_CORONLYOT', 'LONG-CROSS-SCAN-CENTER', 'LONG-CROSS-SCAN-NOD1', 'LONG-CROSS-SCAN-NOD2', 'MAPPING', 'MIMF', 'N/A', 'NIS-MIR056-2', 'NIS-MIR056-3', 'NIS-MIR077-3', 'NIS-MIR077-9', 'NIS-MIR100-2', 'NIS-MIR100-3', 'NIS-MIR100-4', 'NIS-MIR128-2', 'NIS-MIR128-3', 'NIS-MIR128-4', 'NIS-MIR128-9', 'NIS-MIR150-2', 'NIS-MIR150-3', 'NIS-MIR150-4', 'NIS-MIR150-9', 'NIS-MIR180-2', 'NIS-MIR180-3', 'NIS-MIR180-4', 'NIS-MIR180-9', 'NIS-MIR210-2', 'NIS-MIR210-3', 'NIS-MIR210-4', 'NIS-MIR210-9', 'NIS-MIR255-2', 'NIS-MIR255-3', 'NIS-MIR255-4', 'NIS-MIR255-9', 'NIS-NRC-2L', 'NIS-NRC-2M', 'NIS-NRC-3L', 'NIS-NRC-3M', 'NIS-NRC-3S', 'NIS-NRC-4L', 'NIS-NRC-4M', 'NIS-NRC-4S', 'NIS-NRC-9L', 'NIS-NRC-9M', 'NIS-NRC-9S', 'NONE', 'PFLAT_CORON1065', 'PFLAT_CORON1140', 'PFLAT_CORON1550', 'PFLAT_CORONLYOT', 'REULEAUX', 'SCAN-CALIBRATION', 'SHORT-CROSS-SCAN-CENTER', 'SHORT-CROSS-SCAN-NOD1', 'SHORT-CROSS-SCAN-NOD2', 'SPARSE-CYCLING', 'SUBARRAY-DITHER', 'SUBARRAY_DITHER', 'WFSC', 'WFSS']

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment