How to Open Roman Data Files (ASDF)#
Kernel Information and Read-Only Status#
To run this notebook, please select “Roman Research Nexus {VERSION}” kernel at the top right of your window. For example “Roman Research Nexus 2026.1”.
This notebook is read-only. You can run cells and make edits, but you must save changes to a different location. We recommend saving the notebook within your home directory, or to a new folder within your home (e.g. file > save notebook as > my-nbs/nb.ipynb). Note that a directory must exist before you attempt to add a notebook to it.
Imports#
numpy for array operations
asdf for ASDF input/output
roman_datamodels to handle input/output and validation of data models
matplotlib.pyplot for plotting data
astropy.units to handle units
astropy.time to handle time
astropy.coordinates to handle celestial coordinates
pprint for enhanced printing
%matplotlib inline
import numpy as np
import asdf
import roman_datamodels as rdm
from roman_datamodels.dqflags import pixel as dqflags
from roman_datamodels._stnode._schema import _get_properties
import matplotlib.pyplot as plt
import astropy.units as u
import astropy.time
from astropy.coordinates import SkyCoord
import pprint
import s3fs
Introduction#
The main goal of this notebook is to illustrate how to open and handle Roman Wide Field Instrument (WFI) data. WFI data are stored in Advanced Scientific Data Format (ASDF) files, which combine human-readable hierarchical metadata structure with binary array data. ASDF files are self-validating using pre-defined schema.
There are tools to interact with ASDF files in Python, Julia, C/C++, and IDL. In this example we focus on the Python interface.
Roman ASDF files can be opened and manipulated using two main approaches:
using the
roman_datamodelslibrary, andusing the
asdflibrary.
Using roman_datamodels offers the advantage of loading different data blocks as stnode-based objects, providing access to their methods. In contrast, the asdf library loads the data blocks as they were serialized on disk. While this approach loses some of the roman_datamodels capabilities, it also provides more flexibility. In this notebook, we illustrate both approaches, starting with loading data via roman_datamodels.
Additional information about Roman ASDF files can be found in the Introduction to ASDF article on RDox.
Quick start#
All Roman data products conform to one of the datamodels described by the roman_datamodels package. This package wraps the asdf library and provides utilities to read and save data conforming to the official data models. We illustrate how to use roman_datamodels to load data from an ASDF file containing simulated Roman data.
asdf_dir_uri = "s3://stpubdata/roman/nexus/soc_simulations/tutorial_data/roman-2026.1/"
fs = s3fs.S3FileSystem(anon=True)
asdf_file_uri_l2 = asdf_dir_uri + 'r0003201001001001004_0001_wfi01_f106_cal.asdf'
with fs.open(asdf_file_uri_l2, 'rb') as fb:
af = asdf.open(fb)
f = rdm.open(af).copy()
Notice that we used the asdf.open() command to open the byte stream, and then passed that object to roman_datamodels.open(). This is necessary at present as roman_datamodels does not allow for reading of a byte stream in this manner.
A high-level summary of the file can be retrieved by using the info() method. We have limited the number of rows printed to 30, but if you want to see all rows, you can change that number to your liking or to None in order to see all rows. There is a similar option for max_cols if you want to change the horizontal cutoff per line. The default number of rows and columns is 24 and 120, respectively.
f.info(max_rows=30)
root (AsdfObject)
├─asdf_library (Software)
│ ├─author (str): The ASDF Developers
│ ├─homepage (str): http://github.com/asdf-format/asdf
│ ├─name (str): asdf
│ └─version (str): 5.3.0
├─history (dict)
│ └─extensions (list)
│ ├─[0] (ExtensionMetadata) ...
│ ├─[1] (ExtensionMetadata) ...
│ ├─[2] (ExtensionMetadata) ...
│ └─4 not shown
└─roman (WfiImage) # Level 2 (L2) Calibrated Roman Wide Field Instrument (WFI) Rate Image.
├─meta (dict) ...
├─data (ndarray) # Science Data (DN/s) or (MJy/sr) ...
├─dq (ndarray) # Data Quality ...
├─err (ndarray) # Error (DN / s) or (MJy / sr) ...
├─var_poisson (ndarray) # Poisson Variance (DN^2/s^2) or (MJy^2/sr^2) ...
├─chisq (ndarray) # Chi-squared of Ramp Fit ...
├─dumo (ndarray) # Difference Uniform Minus Optimal (DN / s) or (MJy / sr) ...
├─amp33 (ndarray) # Amplifier 33 Reference Pixel Data (DN) ...
├─border_ref_pix_left (ndarray) # Left-Edge Border Reference Pixels (DN) ...
├─border_ref_pix_right (ndarray) # Right-Edge Border Reference Pixels (DN) ...
├─border_ref_pix_top (ndarray) # Border Reference Pixels on the Top of the Detector (DN) ...
├─border_ref_pix_bottom (ndarray) # Bottom-Edge Border Reference Pixels (DN) ...
├─dq_border_ref_pix_left (ndarray) # Left-Edge Border Reference Pixel Data Quality (DN) ...
├─dq_border_ref_pix_right (ndarray) # Right-Edge Border Reference Pixel Data Quality (DN) ...
├─dq_border_ref_pix_top (ndarray) # Border Reference Pixel Data Quality on the Top of the Detector (DN) ...
└─dq_border_ref_pix_bottom (ndarray) # Bottom-Edge Border Reference Pixel Data Quality (DN) ...
Some nodes not shown.
Note that, by default, the open() method does not load the data in memory unless told to do so explicitly, which makes opening ASDF files a quick operation.
At this point, we have information about the names and types of the different data blocks, but we don’t have access to the data until we load them, which we can do by using them. For example:
f.data
array([[0.7640249 , 0.60022277, 0.6292157 , ..., 0.6333321 , 0.78077906,
0.683359 ],
[0.7132413 , 0.7057124 , 0.5549527 , ..., 0.46070436, 0.53757745,
0.7798829 ],
[0.8656813 , 0.8182988 , 0.7961919 , ..., 0.591041 , 0.61737144,
0.63100576],
...,
[0.6188125 , 0.6242062 , 0.6278663 , ..., nan, 0.60871345,
nan],
[0.6139096 , 0.7041409 , 0.60126567, ..., nan, 0.69799125,
nan],
[0.650904 , 0.7182305 , 0.6422941 , ..., nan, nan,
nan]], shape=(4088, 4088), dtype=float32)
An ASDF object can be used, effectively, like a nested dictionary. Each block can be explored via the .keys() attribute. For example, we can retrieve the list of keys in a Level 2 calibrated rate image file as:
for key in f.keys():
print(key)
meta
data
dq
err
var_poisson
chisq
dumo
amp33
border_ref_pix_left
border_ref_pix_right
border_ref_pix_top
border_ref_pix_bottom
dq_border_ref_pix_left
dq_border_ref_pix_right
dq_border_ref_pix_top
dq_border_ref_pix_bottom
We can also find all of the keys within one of these blocks, such as the metadata. Note that here we are using the dot syntax notation (i.e., f.meta) to retrieve the metadata. You can also use brackets to subscript the datamodel (e.g., f['meta']). Dot syntax is allowed by datamodel objects in roman_datamodels, whereas ASDF objects (shown later in the tutorial) can only use the bracket subscript notation.
for key in f.meta.keys():
print(key)
cal_logs
cal_step
calibration_software_name
calibration_software_version
coordinates
ephemeris
exposure
file_date
filename
guide_star
instrument
model_type
observation
origin
photometry
pointing
prd_version
product_type
program
rcs
ref_file
sdf_software_version
source_catalog
telescope
velocity_aberration
visit
wcs
wcs_fit_results
wcsinfo
We focus on the data block, containing the science image of interest. First, how do we know which array in the file is the primary data array? It could have any name, for example “data” or “science.” If we are not sure, we can ask the file itself:
f.get_primary_array_name()
'data'
The creators of the datamodel have told us explicitly that the primary array name in this case is “data.” This may not be true for all Roman WFI ASDF files (e.g., calibration reference files), so it is always worth checking if you are not sure. Next, let’s look at the type of the data block:
type(f.data)
numpy.ndarray
Note that Roman images are expressed as numpy.ndarray objects. The units are available in the schema descriptions for the arrays (see below), but quickly the data arrays are:
Level 1 (L1; uncalibrated 3-D ramp cubes) are in units of Data Numbers (DN)
Level 2 (L2; calibrated 2-D rate images) are in units of DNs per second (DN/s)
Level 3 (L3; 2-D mosaic co-adds) are in units of megaJanskys per steradian (MJy/sr)
Error arrays are in the same units as data, and variance arrays are the same units squared (e.g., DN^2 / s^2).
Let’s take a look at the size of our image and some sample values in a small 3x3 cutout from the bottom-left corner of the array:
print('Size of f.data: ', f.data.shape)
print('\nExploring the values of f.data: \n', f.data[:3, :3])
Size of f.data: (4088, 4088)
Exploring the values of f.data:
[[0.7640249 0.60022277 0.6292157 ]
[0.7132413 0.7057124 0.5549527 ]
[0.8656813 0.8182988 0.7961919 ]]
Since we have image data, let’s also take a quick look at what the image actually contains. This is quite simple, and a more detailed explanation about visualizing Roman ASDF files can be found in the Data Visualization tutorial. Below is a 1,000 x 1,000 pixel section of the data array:
plt.imshow(f.data[:1000, :1000], vmin=0, vmax=2, origin='lower');
As with array data stored in other file types, we can perform analyses on the arrays in memory. For example, we can check the image content by building a 1-D histogram of the its values:
fig, ax = plt.subplots(figsize=(12, 6), layout='tight')
ax.hist(f.data.flatten(), histtype='step', range=(-0.2, 1.7), bins=200);
ax.set_xlabel('Pixel Value', fontsize=14)
ax.set_ylabel('N / 1000', fontsize=14)
ax.tick_params(axis='both', labelsize=14);
We can explore other data blocks such as the data quality (DQ) array. The values of the DQ array are the bitwise sum of the individual flags representing specific effects. These flags are defined in the RomanCal documentation. These can also be retrieved from roman_datamodels.dqflags.pixel(). As a reminder, we aliased roman_datamodels.dqflags.pixel() in our import statement at the start of the tutorial as dqflags(). Let’s start by making a list of all of the unique values in the DQ array:
unique_dq = np.unique(f.dq)
print(unique_dq)
[ 0 1 3 4 1025 1027 1029 8192
8193 8195 8196 9217 9219 9221 65536 65537
66561 66563 73728 73729 73731 73732 74753 74755
74757 1048576 1048580 1049601 1049603 1049605 1056768 1056772
1057793 1057795 1057797 1114112 1115137 1115139 1115141 1122304
1123329 1123331 1123333 33554432 33554433 33554436 33555457 33555459
33562624 33562625 33562627 33562628 33619968 33620993 33628160 33628161
33628163 33629187 34603008 34603011 34603012 34604033 34604035 34604037
34611200 34611203 34612225 34612227 34612229 34668544 34668546 34668547
34669569 34669571 34669573 34676736 34676739 34676740 34677761 34677763
34677765]
Now that we have the list of unique DQ values, we can decompose the values into individual flags and print the number of pixels with each unique DQ value:
size = np.size(f.dq)
# Number of good pixels
npix = np.shape(f.dq[f.dq==0])[0]
print("------------")
print(f'Flag 0 (affected pixels = {npix}; {npix / size:.2%}))')
print(f'0: {str(dqflags(0)).split('.')[1]}')
# Pixels with non-zero DQ flags
for uu in unique_dq[1:]:
br = np.binary_repr(uu)
npix = np.shape(f.dq[f.dq==uu])[0]
print("------------")
print(f'Flag {uu} (affected pixels = {npix}; {npix / size:.2%})')
for ii, cc in enumerate(br[::-1]):
if int(cc)==1:
print(f'{2**ii}: {str(dqflags(2**ii)).split('.')[1]}')
------------
Flag 0 (affected pixels = 16008068; 95.79%))
0: GOOD
------------
Flag 1 (affected pixels = 2; 0.00%)
1: DO_NOT_USE
------------
Flag 3 (affected pixels = 2; 0.00%)
1: DO_NOT_USE
2: SATURATED
------------
Flag 4 (affected pixels = 41422; 0.25%)
4: JUMP_DET
------------
Flag 1025 (affected pixels = 557; 0.00%)
1: DO_NOT_USE
1024: DEAD
------------
Flag 1027 (affected pixels = 4; 0.00%)
1: DO_NOT_USE
2: SATURATED
1024: DEAD
------------
Flag 1029 (affected pixels = 8; 0.00%)
1: DO_NOT_USE
4: JUMP_DET
1024: DEAD
------------
Flag 8192 (affected pixels = 641511; 3.84%)
8192: LOW_QE
------------
Flag 8193 (affected pixels = 9; 0.00%)
1: DO_NOT_USE
8192: LOW_QE
------------
Flag 8195 (affected pixels = 1; 0.00%)
1: DO_NOT_USE
2: SATURATED
8192: LOW_QE
------------
Flag 8196 (affected pixels = 1429; 0.01%)
4: JUMP_DET
8192: LOW_QE
------------
Flag 9217 (affected pixels = 50; 0.00%)
1: DO_NOT_USE
1024: DEAD
8192: LOW_QE
------------
Flag 9219 (affected pixels = 6; 0.00%)
1: DO_NOT_USE
2: SATURATED
1024: DEAD
8192: LOW_QE
------------
Flag 9221 (affected pixels = 1; 0.00%)
1: DO_NOT_USE
4: JUMP_DET
1024: DEAD
8192: LOW_QE
------------
Flag 65536 (affected pixels = 143; 0.00%)
65536: NONLINEAR
------------
Flag 65537 (affected pixels = 3; 0.00%)
1: DO_NOT_USE
65536: NONLINEAR
------------
Flag 66561 (affected pixels = 17; 0.00%)
1: DO_NOT_USE
1024: DEAD
65536: NONLINEAR
------------
Flag 66563 (affected pixels = 2; 0.00%)
1: DO_NOT_USE
2: SATURATED
1024: DEAD
65536: NONLINEAR
------------
Flag 73728 (affected pixels = 62; 0.00%)
8192: LOW_QE
65536: NONLINEAR
------------
Flag 73729 (affected pixels = 7; 0.00%)
1: DO_NOT_USE
8192: LOW_QE
65536: NONLINEAR
------------
Flag 73731 (affected pixels = 2; 0.00%)
1: DO_NOT_USE
2: SATURATED
8192: LOW_QE
65536: NONLINEAR
------------
Flag 73732 (affected pixels = 2; 0.00%)
4: JUMP_DET
8192: LOW_QE
65536: NONLINEAR
------------
Flag 74753 (affected pixels = 10; 0.00%)
1: DO_NOT_USE
1024: DEAD
8192: LOW_QE
65536: NONLINEAR
------------
Flag 74755 (affected pixels = 2; 0.00%)
1: DO_NOT_USE
2: SATURATED
1024: DEAD
8192: LOW_QE
65536: NONLINEAR
------------
Flag 74757 (affected pixels = 1; 0.00%)
1: DO_NOT_USE
4: JUMP_DET
1024: DEAD
8192: LOW_QE
65536: NONLINEAR
------------
Flag 1048576 (affected pixels = 801; 0.00%)
1048576: NO_LIN_CORR
------------
Flag 1048580 (affected pixels = 8; 0.00%)
4: JUMP_DET
1048576: NO_LIN_CORR
------------
Flag 1049601 (affected pixels = 997; 0.01%)
1: DO_NOT_USE
1024: DEAD
1048576: NO_LIN_CORR
------------
Flag 1049603 (affected pixels = 55; 0.00%)
1: DO_NOT_USE
2: SATURATED
1024: DEAD
1048576: NO_LIN_CORR
------------
Flag 1049605 (affected pixels = 23; 0.00%)
1: DO_NOT_USE
4: JUMP_DET
1024: DEAD
1048576: NO_LIN_CORR
------------
Flag 1056768 (affected pixels = 145; 0.00%)
8192: LOW_QE
1048576: NO_LIN_CORR
------------
Flag 1056772 (affected pixels = 1; 0.00%)
4: JUMP_DET
8192: LOW_QE
1048576: NO_LIN_CORR
------------
Flag 1057793 (affected pixels = 133; 0.00%)
1: DO_NOT_USE
1024: DEAD
8192: LOW_QE
1048576: NO_LIN_CORR
------------
Flag 1057795 (affected pixels = 6; 0.00%)
1: DO_NOT_USE
2: SATURATED
1024: DEAD
8192: LOW_QE
1048576: NO_LIN_CORR
------------
Flag 1057797 (affected pixels = 12; 0.00%)
1: DO_NOT_USE
4: JUMP_DET
1024: DEAD
8192: LOW_QE
1048576: NO_LIN_CORR
------------
Flag 1114112 (affected pixels = 110; 0.00%)
65536: NONLINEAR
1048576: NO_LIN_CORR
------------
Flag 1115137 (affected pixels = 125; 0.00%)
1: DO_NOT_USE
1024: DEAD
65536: NONLINEAR
1048576: NO_LIN_CORR
------------
Flag 1115139 (affected pixels = 15; 0.00%)
1: DO_NOT_USE
2: SATURATED
1024: DEAD
65536: NONLINEAR
1048576: NO_LIN_CORR
------------
Flag 1115141 (affected pixels = 3; 0.00%)
1: DO_NOT_USE
4: JUMP_DET
1024: DEAD
65536: NONLINEAR
1048576: NO_LIN_CORR
------------
Flag 1122304 (affected pixels = 55; 0.00%)
8192: LOW_QE
65536: NONLINEAR
1048576: NO_LIN_CORR
------------
Flag 1123329 (affected pixels = 80; 0.00%)
1: DO_NOT_USE
1024: DEAD
8192: LOW_QE
65536: NONLINEAR
1048576: NO_LIN_CORR
------------
Flag 1123331 (affected pixels = 3; 0.00%)
1: DO_NOT_USE
2: SATURATED
1024: DEAD
8192: LOW_QE
65536: NONLINEAR
1048576: NO_LIN_CORR
------------
Flag 1123333 (affected pixels = 4; 0.00%)
1: DO_NOT_USE
4: JUMP_DET
1024: DEAD
8192: LOW_QE
65536: NONLINEAR
1048576: NO_LIN_CORR
------------
Flag 33554432 (affected pixels = 919; 0.01%)
33554432: UNRELIABLE_FLAT
------------
Flag 33554433 (affected pixels = 8; 0.00%)
1: DO_NOT_USE
33554432: UNRELIABLE_FLAT
------------
Flag 33554436 (affected pixels = 1; 0.00%)
4: JUMP_DET
33554432: UNRELIABLE_FLAT
------------
Flag 33555457 (affected pixels = 8; 0.00%)
1: DO_NOT_USE
1024: DEAD
33554432: UNRELIABLE_FLAT
------------
Flag 33555459 (affected pixels = 2; 0.00%)
1: DO_NOT_USE
2: SATURATED
1024: DEAD
33554432: UNRELIABLE_FLAT
------------
Flag 33562624 (affected pixels = 134; 0.00%)
8192: LOW_QE
33554432: UNRELIABLE_FLAT
------------
Flag 33562625 (affected pixels = 39; 0.00%)
1: DO_NOT_USE
8192: LOW_QE
33554432: UNRELIABLE_FLAT
------------
Flag 33562627 (affected pixels = 5; 0.00%)
1: DO_NOT_USE
2: SATURATED
8192: LOW_QE
33554432: UNRELIABLE_FLAT
------------
Flag 33562628 (affected pixels = 2; 0.00%)
4: JUMP_DET
8192: LOW_QE
33554432: UNRELIABLE_FLAT
------------
Flag 33619968 (affected pixels = 218; 0.00%)
65536: NONLINEAR
33554432: UNRELIABLE_FLAT
------------
Flag 33620993 (affected pixels = 1; 0.00%)
1: DO_NOT_USE
1024: DEAD
65536: NONLINEAR
33554432: UNRELIABLE_FLAT
------------
Flag 33628160 (affected pixels = 14; 0.00%)
8192: LOW_QE
65536: NONLINEAR
33554432: UNRELIABLE_FLAT
------------
Flag 33628161 (affected pixels = 8; 0.00%)
1: DO_NOT_USE
8192: LOW_QE
65536: NONLINEAR
33554432: UNRELIABLE_FLAT
------------
Flag 33628163 (affected pixels = 1; 0.00%)
1: DO_NOT_USE
2: SATURATED
8192: LOW_QE
65536: NONLINEAR
33554432: UNRELIABLE_FLAT
------------
Flag 33629187 (affected pixels = 1; 0.00%)
1: DO_NOT_USE
2: SATURATED
1024: DEAD
8192: LOW_QE
65536: NONLINEAR
33554432: UNRELIABLE_FLAT
------------
Flag 34603008 (affected pixels = 581; 0.00%)
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34603011 (affected pixels = 23; 0.00%)
1: DO_NOT_USE
2: SATURATED
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34603012 (affected pixels = 1; 0.00%)
4: JUMP_DET
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34604033 (affected pixels = 1202; 0.01%)
1: DO_NOT_USE
1024: DEAD
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34604035 (affected pixels = 2936; 0.02%)
1: DO_NOT_USE
2: SATURATED
1024: DEAD
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34604037 (affected pixels = 10; 0.00%)
1: DO_NOT_USE
4: JUMP_DET
1024: DEAD
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34611200 (affected pixels = 246; 0.00%)
8192: LOW_QE
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34611203 (affected pixels = 32; 0.00%)
1: DO_NOT_USE
2: SATURATED
8192: LOW_QE
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34612225 (affected pixels = 339; 0.00%)
1: DO_NOT_USE
1024: DEAD
8192: LOW_QE
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34612227 (affected pixels = 2084; 0.01%)
1: DO_NOT_USE
2: SATURATED
1024: DEAD
8192: LOW_QE
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34612229 (affected pixels = 10; 0.00%)
1: DO_NOT_USE
4: JUMP_DET
1024: DEAD
8192: LOW_QE
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34668544 (affected pixels = 144; 0.00%)
65536: NONLINEAR
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34668546 (affected pixels = 1; 0.00%)
2: SATURATED
65536: NONLINEAR
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34668547 (affected pixels = 11; 0.00%)
1: DO_NOT_USE
2: SATURATED
65536: NONLINEAR
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34669569 (affected pixels = 55; 0.00%)
1: DO_NOT_USE
1024: DEAD
65536: NONLINEAR
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34669571 (affected pixels = 2749; 0.02%)
1: DO_NOT_USE
2: SATURATED
1024: DEAD
65536: NONLINEAR
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34669573 (affected pixels = 1; 0.00%)
1: DO_NOT_USE
4: JUMP_DET
1024: DEAD
65536: NONLINEAR
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34676736 (affected pixels = 190; 0.00%)
8192: LOW_QE
65536: NONLINEAR
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34676739 (affected pixels = 14; 0.00%)
1: DO_NOT_USE
2: SATURATED
8192: LOW_QE
65536: NONLINEAR
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34676740 (affected pixels = 3; 0.00%)
4: JUMP_DET
8192: LOW_QE
65536: NONLINEAR
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34677761 (affected pixels = 27; 0.00%)
1: DO_NOT_USE
1024: DEAD
8192: LOW_QE
65536: NONLINEAR
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34677763 (affected pixels = 3825; 0.02%)
1: DO_NOT_USE
2: SATURATED
1024: DEAD
8192: LOW_QE
65536: NONLINEAR
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
------------
Flag 34677765 (affected pixels = 2; 0.00%)
1: DO_NOT_USE
4: JUMP_DET
1024: DEAD
8192: LOW_QE
65536: NONLINEAR
1048576: NO_LIN_CORR
33554432: UNRELIABLE_FLAT
If we want to get a report of how many pixels are impacted by specific DQ flags (e.g., all saturated pixels) regardless of other flags set, we can do that, too using the Python & operator (bitwise AND) and the bitwise left shift << operator:
bit = 2
definition = str(dqflags(bit)).split('.')[1]
n_pix = np.sum(np.bool(f.dq.flatten() & (1 << bit)))
print(f'Bit value {bit} corresponds to {definition}')
print(f'Number of {definition} pixels: {n_pix:,} ({n_pix / f.dq.size:.2%})')
Bit value 2 corresponds to SATURATED
Number of SATURATED pixels: 42,944 (0.26%)
Exploring metadata#
One of the advantages of ASDF is its extensibility, and the ability to store human-readable hierarchical metadata. Let’s further explore the metadata.
meta = f['meta']
type(meta)
dict
As we can see, meta is a dictionary type object. What if instead of using the bracket notation we use the dot notation discussed previously?
meta = f.meta
type(meta)
roman_datamodels._stnode._node.DNode
Suddenly it’s a roman_datamodels.stnode._node.DNode object! Despite this difference in object type, we can treat both this and a dictionary the same in most ways (iteration, access, etc.). However, an advantage of the dot syntax and the roman_datamodels.stnode._node.DNode object is that we retain information about the schema, which we lose if we convert the metadata to a dictionary object. We previously showed how to get the list of keys in the metadata, but as a reminder let’s do it again here for easy reference:
for key in meta.keys():
print(key)
cal_logs
cal_step
calibration_software_name
calibration_software_version
coordinates
ephemeris
exposure
file_date
filename
guide_star
instrument
model_type
observation
origin
photometry
pointing
prd_version
product_type
program
rcs
ref_file
sdf_software_version
source_catalog
telescope
velocity_aberration
visit
wcs
wcs_fit_results
wcsinfo
Printing the whole of the metadata is quite long, so we will instead print a small subsection:
print(meta.instrument)
{'detector': 'WFI01', 'name': 'WFI', 'optical_element': 'F106'}
As shown above, the meta data block contains a lot of useful metadata information. Two of the most typical keys, for example, are the wcs key, containing information about the World Coordinate System (WCS; see below), and also the photometry key, containing information about how to transform units from instrumental (DN/s) to physical (MJy/sr).
Let’s take a look at the schema information for meta.instrument. Note that this can be quite difficult to read, but is very rich in information about the contents, data types, allowed values, and mapping to other information (e.g., the storage location of a metadata field in the MAST Archive Catalog database) for every component of Roman WFI ASDF files. Also notice that we use the pprint() function (instead of print()) to better display the text.
_, full_schema = rdm.get_latest_schema(f.schema_uri)
pprint.pprint(full_schema)
{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'archive_meta': 'Science WFI Level 2',
'datamodel_name': 'ImageModel',
'flowStyle': 'block',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/wfi_image-1.7.0',
'properties': {'amp33': {'datatype': 'uint16',
'description': 'Reference pixel data from amplifier '
'33 in units of\n'
'data numbers (DN).\n',
'exact_datatype': True,
'ndim': 3,
'tag': 'tag:stsci.edu:asdf/core/ndarray-1.*',
'title': 'Amplifier 33 Reference Pixel Data (DN)',
'unit': 'DN'},
'border_ref_pix_bottom': {'datatype': 'float32',
'description': 'Uncalibrated, '
'four-pixel border '
'reference pixel '
'cube\n'
'from the bottom-edge '
'of the detector in '
'the science frame\n'
'orientation. In the '
'L1 uncal file data '
'array, these are '
'pixels\n'
'(z, y, x) = [:, :4, '
':] in a zero-indexed '
'system.\n',
'exact_datatype': True,
'ndim': 3,
'tag': 'tag:stsci.edu:asdf/core/ndarray-1.*',
'title': 'Bottom-Edge Border '
'Reference Pixels (DN)',
'unit': 'DN'},
'border_ref_pix_left': {'datatype': 'float32',
'description': 'Uncalibrated, '
'four-pixel border '
'reference pixel cube\n'
'from the left-edge of '
'the detector in the '
'science frame\n'
'orientation. In the L1 '
'uncal file data array, '
'these are pixels\n'
'(z, y, x) = [:, :, :4] '
'in a zero-indexed '
'system.\n',
'exact_datatype': True,
'ndim': 3,
'tag': 'tag:stsci.edu:asdf/core/ndarray-1.*',
'title': 'Left-Edge Border Reference '
'Pixels (DN)',
'unit': 'DN'},
'border_ref_pix_right': {'datatype': 'float32',
'description': 'Uncalibrated, '
'four-pixel border '
'reference pixel cube\n'
'from the right-edge '
'of the detector in '
'the science frame\n'
'orientation. In the '
'L1 uncal file data '
'array, these are '
'pixels\n'
'(z, y, x) = [:, :, '
'4092:] in a '
'zero-indexed '
'system.\n',
'exact_datatype': True,
'ndim': 3,
'tag': 'tag:stsci.edu:asdf/core/ndarray-1.*',
'title': 'Right-Edge Border Reference '
'Pixels (DN)',
'unit': 'DN'},
'border_ref_pix_top': {'datatype': 'float32',
'description': 'Border reference pixels '
'on the top of the '
'detector in units of '
'DN.\n',
'exact_datatype': True,
'ndim': 3,
'tag': 'tag:stsci.edu:asdf/core/ndarray-1.*',
'title': 'Border Reference Pixels on '
'the Top of the Detector (DN)',
'unit': 'DN'},
'chisq': {'datatype': 'float16',
'description': 'Chi-squared statistic of the ramp '
'fit (unitless).\n',
'exact_datatype': True,
'ndim': 2,
'tag': 'tag:stsci.edu:asdf/core/ndarray-1.*',
'title': 'Chi-squared of Ramp Fit'},
'data': {'datatype': 'float32',
'description': 'Calibrated science rate image in '
'units of data numbers\n'
'per second (DN/s) or megaJanskys per '
'steradian (MJy/sr).\n',
'exact_datatype': True,
'ndim': 2,
'tag': 'tag:stsci.edu:asdf/core/ndarray-1.*',
'title': 'Science Data (DN/s) or (MJy/sr)',
'unit': ['DN / s', 'MJy.sr**-1']},
'dq': {'datatype': 'uint32',
'description': 'Bitwise sum of data quality flags.\n',
'exact_datatype': True,
'ndim': 2,
'tag': 'tag:stsci.edu:asdf/core/ndarray-1.*',
'title': 'Data Quality'},
'dq_border_ref_pix_bottom': {'datatype': 'uint32',
'description': 'Bitwise sum of '
'data quality '
'flags for the '
'four-pixel\n'
'border reference '
'pixel cube from '
'the bottom-edge '
'of the detector\n'
'in the science '
'frame '
'orientation. In '
'the L1 uncal file '
'data\n'
'array, these are '
'pixels (z, y, x) '
'= [:, :4, :] in a '
'zero-indexed\n'
'system.\n',
'exact_datatype': True,
'ndim': 2,
'tag': 'tag:stsci.edu:asdf/core/ndarray-1.*',
'title': 'Bottom-Edge Border '
'Reference Pixel Data '
'Quality (DN)'},
'dq_border_ref_pix_left': {'datatype': 'uint32',
'description': 'Bitwise sum of data '
'quality flags for '
'the four-pixel\n'
'border reference '
'pixel cube from the '
'left-edge of the '
'detector\n'
'in the science '
'frame orientation. '
'In the L1 uncal '
'file data\n'
'array, these are '
'pixels (z, y, x) = '
'[:, :, :4] in a '
'zero-indexed\n'
'system.\n',
'exact_datatype': True,
'ndim': 2,
'tag': 'tag:stsci.edu:asdf/core/ndarray-1.*',
'title': 'Left-Edge Border '
'Reference Pixel Data '
'Quality (DN)'},
'dq_border_ref_pix_right': {'datatype': 'uint32',
'description': 'Bitwise sum of '
'data quality flags '
'for the '
'four-pixel\n'
'border reference '
'pixel cube from '
'the right-edge of '
'the detector\n'
'in the science '
'frame orientation. '
'In the L1 uncal '
'file data\n'
'array, these are '
'pixels (z, y, x) = '
'[:, :, 4092:] in '
'a\n'
'zero-indexed '
'system.\n',
'exact_datatype': True,
'ndim': 2,
'tag': 'tag:stsci.edu:asdf/core/ndarray-1.*',
'title': 'Right-Edge Border '
'Reference Pixel Data '
'Quality (DN)'},
'dq_border_ref_pix_top': {'datatype': 'uint32',
'description': 'Bitwise sum of data '
'quality flags for '
'the four-pixel\n'
'border reference '
'pixel cube from the '
'top-edge of the '
'detector in\n'
'the science frame '
'orientation. In the '
'L1 uncal file data '
'array,\n'
'these are pixels (z, '
'y, x) = [:, 4092:, '
':] in a '
'zero-indexed\n'
'system.\n',
'exact_datatype': True,
'ndim': 2,
'tag': 'tag:stsci.edu:asdf/core/ndarray-1.*',
'title': 'Border Reference Pixel '
'Data Quality on the Top of '
'the Detector (DN)'},
'dumo': {'datatype': 'float16',
'description': 'Ramp fit with uniform weights minus '
'ramp fit with optimal weights\n'
'in units of data numbers per second '
'(DN/s) or megaJanskys per\n'
'steradian (MJy/sr).\n',
'exact_datatype': True,
'ndim': 2,
'tag': 'tag:stsci.edu:asdf/core/ndarray-1.*',
'title': 'Difference Uniform Minus Optimal (DN / s) '
'or (MJy / sr)',
'unit': ['DN / s', 'MJy.sr**-1']},
'err': {'datatype': 'float16',
'description': 'Total error array in units of data '
'numbers per second\n'
'(DN/s) or megaJanskys per steradian '
'(MJy/sr).\n',
'exact_datatype': True,
'ndim': 2,
'tag': 'tag:stsci.edu:asdf/core/ndarray-1.*',
'title': 'Error (DN / s) or (MJy / sr)',
'unit': ['DN / s', 'MJy.sr**-1']},
'meta': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/basic-1.1.0',
'properties': {'calibration_software_name': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['WFIExposure.calibration_software_name',
'GuideWindow.calibration_software_name',
'WFIMosaic.calibration_software_name',
'SourceCatalog.calibration_software_name',
'SegmentationMap.calibration_software_name']},
'description': 'Name '
'of '
'the '
'calibration '
'software '
'package '
'used '
'in\n'
'processing '
'this '
'file.\n',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/calibration_software_name-1.1.0',
'maxLength': 120,
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Calibration '
'Software '
'Name',
'type': 'string'},
'calibration_software_version': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['WFIExposure.calibration_software_version',
'GuideWindow.calibration_software_version',
'WFIMosaic.calibration_software_version',
'SourceCatalog.calibration_software_version',
'SegmentationMap.calibration_software_version']},
'description': 'The '
'version '
'number '
'of '
'the '
'calibration '
'software '
'used '
'in '
'processing '
'this\n'
'file.\n',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/calibration_software_version-1.1.0',
'maxLength': 120,
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Calibration '
'Software '
'Version '
'Number',
'type': 'string'},
'file_date': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'archive_catalog': {'datatype': 'datetime2',
'destination': ['WFIExposure.filedate',
'GuideWindow.filedate',
'WFIMosaic.filedate',
'SourceCatalog.filedate',
'SegmentationMap.filedate']},
'description': 'The '
'date '
'and '
'time '
'this '
'file '
'was '
'created.\n',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/file_date-1.1.0',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'tag': 'tag:stsci.edu:asdf/time/time-1.*',
'title': 'File '
'Creation '
'Date'},
'filename': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['WFIExposure.filename',
'WFIMosaic.filename',
'GuideWindow.filename',
'SourceCatalog.filename',
'SegmentationMap.filename']},
'description': 'The '
'auto-generated '
'name '
'of '
'this '
'file.\n',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/filename-1.1.0',
'maxLength': 120,
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'File '
'Name',
'type': 'string'},
'model_type': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'archive_catalog': {'datatype': 'nvarchar(50)',
'destination': ['WFIExposure.model_type',
'GuideWindow.model_type',
'WFIMosaic.model_type',
'SourceCatalog.model_type',
'SegmentationMap.model_type']},
'description': 'The '
'type '
'of '
'data '
'model '
'contained '
'within '
'this '
'file.\n',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/model_type-1.1.0',
'maxLength': 50,
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Data '
'Model '
'Type',
'type': 'string'},
'origin': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'archive_catalog': {'datatype': 'nvarchar(15)',
'destination': ['WFIExposure.origin',
'GuideWindow.origin',
'WFIMosaic.origin',
'SourceCatalog.origin',
'SegmentationMap.origin']},
'description': 'The '
'name '
'of '
'the '
'institution '
'or '
'organization\n'
'responsible '
'for '
'creating '
'this '
'file.\n',
'enum': ['STSCI',
'STSCI/SOC',
'IPAC/SSC'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/origin-1.1.0',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Institution '
'/ '
'Organization '
'Name',
'type': 'string'},
'prd_version': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['WFIExposure.prd_version',
'GuideWindow.prd_version',
'WFIMosaic.prd_version',
'SourceCatalog.prd_version',
'SegmentationMap.prd_version']},
'description': 'The '
'version '
'number '
'of '
'the '
'Science '
'Operations '
'Center\n'
'(SOC) '
'Project '
'Reference '
'Database '
'(PRD) '
'used '
'in '
'generating '
'this\n'
'file.\n',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/prd_version-1.1.0',
'maxLength': 120,
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'SOC '
'PRD '
'Version '
'Number',
'type': 'string'},
'product_type': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['WFIExposure.product_type',
'GuideWindow.product_type',
'WFIMosaic.product_type',
'SourceCatalog.product_type',
'SegmentationMap.product_type']},
'description': 'A '
'descriptor '
'for '
'the '
'type '
'of '
'data '
'contained '
'within '
'the\n'
'file. '
'This '
'corresponds '
'to '
'the '
'standard '
'file '
'suffixes '
'for\n'
'archival '
'data '
'products. '
'Consult '
'the '
'documentation '
'for '
'the '
'list\n'
'of '
'options. '
'A '
'string '
'beginning '
'with '
'"p" '
'indicates '
'a '
'prompt '
'data\n'
'product, '
'while '
'a '
'string '
'beginning '
'with '
'"r" '
'indicates '
'a '
'data '
'release\n'
'product. '
'For '
'example, '
'"p_visit_coadd" '
'indicates '
'a '
'prompt '
'data\n'
'product '
'containing '
'a '
'co-addition '
'of '
'exposures '
'within '
'a '
'visit.\n',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/product_type-1.1.0',
'maxLength': 120,
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Product '
'Type '
'Descriptor',
'type': 'string'},
'sdf_software_version': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['WFIExposure.sdf_software_version',
'GuideWindow.sdf_software_version',
'WFIMosaic.sdf_software_version',
'SourceCatalog.sdf_software_version',
'SegmentationMap.sdf_software_version']},
'description': 'The '
'version '
'number '
'of '
'the '
'Science '
'Operations '
'Center\n'
'(SOC) '
'Science '
'Data '
'Formatting '
'(SDF) '
'software '
'used '
'in '
'generating\n'
'this '
'file.\n',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/sdf_software_version-1.1.0',
'maxLength': 120,
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'SDF '
'Version '
'Number',
'type': 'string'},
'telescope': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'archive_catalog': {'datatype': 'nvarchar(5)',
'destination': ['WFIExposure.telescope',
'WFIMosaic.telescope',
'GuideWindow.telescope',
'SourceCatalog.telescope',
'SegmentationMap.telescope']},
'description': 'The '
'name '
'of '
'the '
'telescope '
'used '
'to '
'acquire '
'the '
'data.\n',
'enum': ['ROMAN'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/telescope-1.1.0',
'title': 'Telescope '
'Name',
'type': 'string'}},
'required': ['calibration_software_name',
'calibration_software_version',
'filename',
'file_date',
'model_type',
'origin',
'prd_version',
'product_type',
'sdf_software_version',
'telescope'],
'title': 'Basic Information',
'type': 'object'},
{'properties': {'coordinates': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/coordinates-1.1.0',
'properties': {'reference_frame': {'archive_catalog': {'datatype': 'nvarchar(10)',
'destination': ['WFIExposure.reference_frame',
'GuideWindow.reference_frame']},
'description': 'Name '
'of '
'the '
'celestial '
'coordinate '
'reference '
'frame '
'used\n'
'for '
'the '
'World '
'Coordinate '
'System '
'(WCS).\n',
'enum': ['ICRS'],
'title': 'Name '
'of '
'the '
'Celestial '
'Coordinate '
'Reference '
'Frame',
'type': 'string'}},
'required': ['reference_frame'],
'title': 'Name '
'Of '
'The '
'Coordinate '
'Reference '
'Frame',
'type': 'object'},
'ephemeris': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/ephemeris-1.1.0',
'properties': {'ephemeris_reference_frame': {'archive_catalog': {'datatype': 'nvarchar(10)',
'destination': ['WFIExposure.ephemeris_reference_frame',
'GuideWindow.ephemeris_reference_frame']},
'description': 'Reference '
'frame '
'of '
'the '
'ephemeris '
'information.\n',
'maxLength': 10,
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Ephemeris '
'Reference '
'Frame',
'type': 'string'},
'spatial_x': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.spatial_x',
'GuideWindow.spatial_x']},
'description': 'X '
'barycentric '
'coordinate '
'of '
'the '
'Roman '
'observatory '
'at\n'
'the '
'MJD '
'described '
'by '
'meta.ephemeris.time.\n',
'sdf': {'source': {'origin': 'Roman '
'Science '
'Data '
'Processing '
'(RSDP)'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'X '
'Spatial '
'Coordinate '
'of '
'Roman '
'(km)',
'type': 'number'},
'spatial_y': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.spatial_y',
'GuideWindow.spatial_y']},
'description': 'Y '
'barycentric '
'coordinate '
'of '
'the '
'Roman '
'observatory '
'at\n'
'the '
'MJD '
'described '
'by '
'meta.ephemeris.time.\n',
'sdf': {'source': {'origin': 'Roman '
'Science '
'Data '
'Processing '
'(RSDP)'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Y '
'Spatial '
'Coordinate '
'of '
'Roman '
'(km)',
'type': 'number'},
'spatial_z': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.spatial_z',
'GuideWindow.spatial_z']},
'description': 'Z '
'barycentric '
'coordinate '
'of '
'the '
'Roman '
'observatory '
'at\n'
'the '
'MJD '
'described '
'by '
'meta.ephemeris.time.\n',
'sdf': {'source': {'origin': 'Roman '
'Science '
'Data '
'Processing '
'(RSDP)'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Z '
'Spatial '
'Coordinate '
'of '
'Roman '
'(km)',
'type': 'number'},
'time': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.ephemeris_time',
'GuideWindow.ephemeris_time']},
'description': 'UTC '
'time '
'of '
'the '
'position '
'and '
'velocity '
'vectors '
'in '
'the\n'
'ephemeris. '
'The '
'time '
'is '
'provided '
'in '
'modified '
'Julian '
'date '
'(MJD).\n',
'sdf': {'source': {'origin': 'Roman '
'Science '
'Data '
'Processing '
'(RSDP)'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'UTC '
'Time '
'of '
'Ephemeris '
'Information '
'(MJD)',
'type': 'number'},
'type': {'archive_catalog': {'datatype': 'nvarchar(10)',
'destination': ['WFIExposure.ephemeris_type',
'GuideWindow.ephemeris_type']},
'description': 'Type '
'of '
'ephemeris '
'(either '
'DEFINITIVE '
'or '
'PREDICTED).\n',
'enum': ['DEFINITIVE',
'PREDICTED'],
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Ephemeris '
'Type',
'type': 'string'},
'velocity_x': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.velocity_x',
'GuideWindow.velocity_x']},
'description': 'X '
'component '
'of '
'the '
'Roman '
'velocity '
'in '
'a '
'barycentric\n'
'system '
'in '
'units '
'of '
'km/s '
'at '
'the '
'MJD '
'described '
'by\n'
'meta.ephemeris.time.\n',
'sdf': {'source': {'origin': 'Roman '
'Science '
'Data '
'Processing '
'(RSDP)'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'X '
'Component '
'of '
'Roman '
'Velocity '
'(km/s)',
'type': 'number'},
'velocity_y': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.velocity_y',
'GuideWindow.velocity_y']},
'description': 'Y '
'component '
'of '
'the '
'Roman '
'velocity '
'in '
'a '
'barycentric\n'
'system '
'in '
'units '
'of '
'km/s '
'at '
'the '
'MJD '
'described '
'by\n'
'meta.ephemeris.time.\n',
'sdf': {'source': {'origin': 'Roman '
'Science '
'Data '
'Processing '
'(RSDP)'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Y '
'Component '
'of '
'Roman '
'Velocity '
'(km/s)',
'type': 'number'},
'velocity_z': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.velocity_z',
'GuideWindow.velocity_z']},
'description': 'Y '
'component '
'of '
'the '
'Roman '
'velocity '
'in '
'a '
'barycentric\n'
'system '
'in '
'units '
'of '
'km/s '
'at '
'the '
'MJD '
'described '
'by\n'
'meta.ephemeris.time.\n',
'sdf': {'source': {'origin': 'Roman '
'Science '
'Data '
'Processing '
'(RSDP)'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Z '
'Component '
'of '
'Roman '
'Velocity '
'(km/s)',
'type': 'number'}},
'required': ['type',
'time',
'ephemeris_reference_frame',
'spatial_x',
'spatial_y',
'spatial_z',
'velocity_x',
'velocity_y',
'velocity_z'],
'title': 'Ephemeris '
'Data '
'Information',
'type': 'object'},
'exposure': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/exposure-1.1.0',
'properties': {'data_problem': {'anyOf': [{'type': 'string'},
{'type': 'null'}],
'archive_catalog': {'datatype': 'nvarchar(max)',
'destination': ['WFIExposure.exposure_data_problem',
'GuideWindow.exposure_data_problem']},
'description': 'String '
'error '
'codes '
'indicating '
'that '
'a '
'problem '
'occurred '
'with '
'the '
'exposure.\n'
'A '
'value '
'of '
'None '
'indicates '
'there '
'were '
'no '
'problems '
'with '
'the '
'exposure.\n'
'See '
'the '
'Roman '
'Documentation '
'System '
'(RDox) '
'for '
'more '
'information '
'on '
'the '
'meaning '
'of '
'the '
'error '
'codes.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Data '
'Problem'},
'effective_exposure_time': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.effective_exposure_time',
'GuideWindow.effective_exposure_time',
'SourceCatalog.effective_exposure_time']},
'description': 'The '
'difference '
'in '
'time '
'(in '
'units '
'of '
'seconds) '
'between\n'
'the '
'midpoints '
'of '
'the '
'first '
'and '
'last '
'science '
'resultants. '
'If\n'
'either '
'resultant '
'contains '
'only '
'a '
'single '
'read, '
'then '
'the '
'time '
'at\n'
'the '
'end '
'of '
'the '
'read '
'is '
'used '
'rather '
'than '
'the '
'midpoint '
'time.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Effective '
'Exposure '
'Time '
'(s)',
'type': 'number'},
'end_time': {'archive_catalog': {'datatype': 'datetime2',
'destination': ['WFIExposure.exposure_end_time',
'GuideWindow.exposure_end_time',
'SourceCatalog.exposure_end_time']},
'description': 'The '
'UTC '
'time '
'at '
'the '
'end '
'of '
'the '
'exposure. '
'The '
'time '
'is\n'
'serialized '
'on '
'disk '
'as '
'an '
'International '
'Organization '
'for\n'
'Standardization '
'(ISO) '
'8601-compliant '
'ISOT '
'string, '
'but '
'if '
'opened\n'
'in '
'Python '
'with '
'the '
'asdf-astropy '
'package '
'installed, '
'it '
'may '
'be\n'
'read '
'as '
'an '
'astropy.time.Time '
'object '
'with '
'all '
'of '
'the '
'associated\n'
'methods '
'and '
'transforms '
'available. '
'See '
'the '
'documentation '
'for\n'
'astropy.time.Time '
'objects '
'for '
'more '
'information.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'tag': 'tag:stsci.edu:asdf/time/time-1.*',
'title': 'Exposure '
'End '
'Time '
'(UTC)'},
'engineering_quality': {'archive_catalog': {'datatype': 'nvarchar(10)',
'destination': ['WFIExposure.engineering_quality',
'GuideWindow.engineering_quality',
'SourceCatalog.engineering_quality']},
'description': 'Indicator '
'of '
'data '
'quality '
'problems '
'with '
'the\n'
'engineering '
'data '
'used '
'to '
'populated '
'select '
'metadata '
'fields. '
'A\n'
'value '
'of '
'"OK" '
'indicates '
'no '
'suspected '
'problems, '
'while '
'a '
'value '
'of\n'
'"SUSPECT" '
'indicates '
'one '
'or '
'more '
'metadata '
'values '
'populated '
'from\n'
'the '
'engineering '
'database '
'may '
'be '
'missing '
'information '
'during '
'the\n'
'exposure '
'or '
'are '
'otherwise '
'of '
'lower '
'quality.\n',
'enum': ['OK',
'SUSPECT'],
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Engineering '
'Data '
'Quality',
'type': 'string'},
'exposure_time': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.exposure_time',
'GuideWindow.exposure_time']},
'description': 'The '
'difference '
'in '
'time '
'(in '
'units '
'of '
'seconds) '
'between\n'
'the '
'start '
'of '
'the '
'first '
'reset/read '
'and '
'end '
'of '
'the '
'last '
'read '
'in\n'
'the '
'readout '
'pattern.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Exposure '
'Time '
'(s)',
'type': 'number'},
'frame_time': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.exposure_frame_time',
'GuideWindow.exposure_frame_time']},
'description': 'The '
'readout '
'time '
'in '
'seconds '
'of '
'the '
'Wide '
'Field\n'
'Instrument '
'(WFI) '
'detectors. '
'This '
'represents '
'the '
'time '
'between '
'the\n'
'start '
'and '
'end '
'of '
'the '
'readout.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Detector '
'Readout '
'Time '
'(s)',
'type': 'number'},
'ma_table_id': {'archive_catalog': {'datatype': 'nvarchar(10)',
'destination': ['WFIExposure.ma_table_id',
'GuideWindow.ma_table_id',
'SourceCatalog.ma_table_id']},
'description': 'A '
'unique '
'identifier '
'for '
'the '
'multi-accumulation '
'(MA) '
'table '
'used '
'for '
'this '
'exposure.\n'
'The '
'identifier '
'comes '
'from '
'the '
'Science '
'Operations '
'Center '
'(SOC) '
'Project '
'Reference\n'
'Database '
'(PRD).\n',
'maxLength': 10,
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Multi-Accumulation '
'Table '
'Identifier',
'type': 'string'},
'ma_table_name': {'archive_catalog': {'datatype': 'nvarchar(50)',
'destination': ['WFIExposure.ma_table_name',
'GuideWindow.ma_table_name']},
'description': 'The '
'name '
'of '
'the '
'multi-accumulation '
'(MA) '
'table '
'used '
'for\n'
'the '
'exposure. '
'The '
'MA '
'table '
'is '
'also '
'referred '
'to '
'as '
'the '
'readout\n'
'pattern.\n',
'maxLength': 50,
'sdf': {'source': {'origin': 'PSS:dms_visit.multi_accum_table_name'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Name '
'of '
'the '
'Multi-Accumulation '
'Table',
'type': 'string'},
'ma_table_number': {'archive_catalog': {'datatype': 'smallint',
'destination': ['WFIExposure.ma_table_number',
'GuideWindow.ma_table_number']},
'description': 'A '
'unique '
'identification '
'number '
'for '
'the\n'
'multi-accumulation '
'(MA) '
'table '
'used '
'for '
'this '
'exposure. '
'The '
'number\n'
'comes '
'from '
'the '
'Science '
'Operations '
'Center '
'(SOC) '
'Project '
'Reference\n'
'Database '
'(PRD).\n',
'sdf': {'source': {'origin': 'PSS:dms_visit.multi_accum_table_number'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Multi-Accumulation '
'Table '
'Identification '
'Number',
'type': 'integer'},
'nresultants': {'archive_catalog': {'datatype': 'int',
'destination': ['WFIExposure.exposure_nresultants',
'GuideWindow.exposure_nresultants']},
'description': 'The '
'number '
'of '
'resultant '
'frames '
'in '
'this '
'exposure '
'that\n'
'were '
'transmitted '
'to '
'the '
'ground.\n',
'sdf': {'source': {'origin': 'PSS:dms_visit.multi_accum_resultant'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Number '
'of '
'Resultants',
'type': 'integer'},
'read_pattern': {'archive_catalog': {'datatype': 'nvarchar(3500)',
'destination': ['WFIExposure.read_pattern',
'GuideWindow.read_pattern']},
'description': 'The '
'enumeration '
'of '
'detector '
'reads '
'to '
'resultants '
'making\n'
'up '
'the '
'Level '
'1 '
'ramp '
'data '
'cube. '
'The '
'read '
'pattern '
'is '
'nested '
'such\n'
'that '
'each '
'grouping '
'of '
'read '
'numbers '
'represents '
'a '
'resultant. '
'For\n'
'example, '
'a '
'readout '
'pattern '
'of '
'[[1], '
'[2, '
'3], '
'[4]] '
'consists '
'of\n'
'four '
'reads '
'that '
'were '
'downlinked '
'as '
'three '
'resultants '
'with '
'both\n'
'the '
'first '
'and '
'last '
'resultant '
'each '
'containing '
'a '
'single '
'read.\n',
'items': {'items': {'type': 'integer'},
'type': 'array'},
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Read '
'Pattern',
'type': 'array'},
'sdf_log_file': {'description': 'File '
'name '
'of '
'the '
'Science '
'Data '
'Formatting '
'(SDF) '
'log '
'for '
'this '
'exposure.\n',
'maxLength': 120,
'title': 'SDF '
'Log '
'File '
'Name',
'type': 'string'},
'start_time': {'archive_catalog': {'datatype': 'datetime2',
'destination': ['WFIExposure.exposure_start_time',
'GuideWindow.exposure_start_time']},
'description': 'The '
'UTC '
'time '
'at '
'the '
'beginning '
'of '
'the '
'exposure. '
'The\n'
'time '
'is '
'serialized '
'on '
'disk '
'as '
'an '
'International '
'Organization '
'for\n'
'Standardization '
'(ISO) '
'8601-compliant '
'ISOT '
'string, '
'but '
'if '
'opened\n'
'in '
'Python '
'with '
'the '
'asdf-astropy '
'package '
'installed, '
'it '
'may '
'be\n'
'read '
'as '
'an '
'astropy.time.Time '
'object '
'with '
'all '
'of '
'the '
'associated\n'
'methods '
'and '
'transforms '
'available. '
'See '
'the '
'documentation '
'for\n'
'astropy.time.Time '
'objects '
'for '
'more '
'information.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'tag': 'tag:stsci.edu:asdf/time/time-1.*',
'title': 'Exposure '
'Start '
'Time '
'(UTC)'},
'truncated': {'archive_catalog': {'datatype': 'nchar(1)',
'destination': ['WFIExposure.exposure_truncated',
'SourceCatalog.exposure_truncated']},
'description': 'A '
'flag '
'indicating '
'whether '
'the '
'MA '
'table '
'was '
'truncated.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Truncated '
'MA '
'Table',
'type': 'boolean'},
'type': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'The '
'type '
'of '
'the '
'exposure. '
'Wide '
'Field '
'Instrument '
'(WFI)\n'
'imaging '
'mode '
'observations '
'have '
'type '
'WFI_IMAGE, '
'while '
'the\n'
'spectroscopic '
'mode '
'may '
'be '
'either '
'WFI_GRISM '
'or '
'WFI_PRISM\n'
'depending '
'on '
'the '
'selected '
'optical '
'element. '
'Other '
'values '
'are\n'
'related '
'to '
'either '
'internal '
'calibration '
'or '
'engineering\n'
'observations.\n',
'enum': ['WFI_IMAGE',
'WFI_SPECTRAL',
'WFI_IM_DARK',
'WFI_SP_DARK',
'WFI_FLAT',
'WFI_LOLO',
'WFI_WFSC',
'WFI_DARK',
'WFI_GRISM',
'WFI_PRISM'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/exposure_type-1.1.0',
'title': 'Exposure '
'Type',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(25)',
'destination': ['WFIExposure.exposure_type',
'GuideWindow.exposure_type']},
'sdf': {'source': {'origin': 'PSS:dms_visit.template'},
'special_processing': 'VALUE_REQUIRED'}}},
'required': ['type',
'start_time',
'end_time',
'engineering_quality',
'nresultants',
'data_problem',
'frame_time',
'exposure_time',
'effective_exposure_time',
'ma_table_name',
'ma_table_number',
'ma_table_id',
'read_pattern',
'truncated'],
'title': 'Exposure '
'Information',
'type': 'object'},
'guide_star': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/guidestar-1.2.0',
'properties': {'epoch': {'archive_catalog': {'datatype': 'nvarchar(10)',
'destination': ['WFIExposure.epoch',
'GuideWindow.epoch']},
'description': 'Epoch '
'of '
'the '
'celestial '
'coordinates '
'of '
'the '
'guide '
'star\n'
'from '
'the '
'Guide '
'Star '
'Catalog '
'(GSC).\n',
'maxLength': 10,
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Guide '
'Star '
'Coordinates '
'Epoch',
'type': 'string'},
'guide_mode': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'Type '
'of '
'guide '
'window '
'mode '
'used '
'during '
'the '
'exposure. '
'This '
'is '
'based '
'on\n'
'planned '
'information '
'from '
'the '
'Roman '
'Planning '
'and '
'Scheduling '
'Subsystem.\n',
'enum': ['WIM-ACQ',
'WIM-TRACK',
'WSM-ACQ-1',
'WSM-ACQ-2',
'WSM-TRACK',
'DEFOCUSED-MODERATE',
'DEFOCUSED-LARGE'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/guidewindow_modes-1.1.0',
'title': 'Guide '
'Window '
'Mode',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(18)',
'destination': ['WFIExposure.guide_mode',
'GuideWindow.guide_mode']},
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'}},
'guide_star_id': {'archive_catalog': {'datatype': 'nvarchar(20)',
'destination': ['WFIExposure.guide_star_id',
'GuideWindow.guide_star_id']},
'description': 'Identification '
'of '
'the '
'guide '
'star '
'from '
'the '
'Guide '
'Star '
'Catalog '
'(GSC).\n'
'This '
'is '
'based '
'on '
'planned '
'information '
'from '
'the '
'Roman '
'Planning '
'and\n'
'Scheduling '
'Subsystem.\n',
'maxLength': 20,
'sdf': {'source': {'origin': 'PSS:dms_guide_star.star_id'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Guide '
'Star '
'Identifier',
'type': 'string'},
'guide_window_id': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'archive_catalog': {'datatype': 'nvarchar(20)',
'destination': ['WFIExposure.guide_window_id',
'GuideWindow.guide_window_id']},
'description': 'A '
'unique '
'identification '
'number '
'of '
'the '
'guide '
'window.\n'
'This '
'identifier '
'combines '
'the '
'visit '
'identifier '
'and '
'guide '
'star\n'
'acquisition '
'number, '
'and '
'is '
'set '
'in '
'the '
'visit '
'information '
'uplinked\n'
'to '
'the '
'observatory. '
'As '
'the '
'number '
'may '
'be '
'zero-padded, '
'this '
'value\n'
'is '
'saved '
'as '
'a '
'string. '
'See '
'technical '
'report '
'Roman-STScI-000193\n'
'"Roman '
'Programmatic '
'Data '
'Identification" '
'for '
'more '
'information.\n',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/guide_window_id-1.1.0',
'maxLength': 20,
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Guide '
'Window '
'Identifier',
'type': 'string'},
'jitter_major': {'description': 'Estimate '
'of '
'the '
'guidestar '
'jitter '
'kernel '
'width '
'(in '
'milliarcseconds) '
'along '
'the '
'major '
'axis '
'of '
'the '
'jitter '
'kernel. '
'When '
'no '
'guidestar '
'was '
'observed '
'with '
'this '
'detector, '
'a '
'default '
'value '
'will '
'be '
'used.',
'title': 'Major '
'Axis '
'Jitter '
'(milliarcseconds)',
'type': 'number'},
'jitter_minor': {'description': 'Estimate '
'of '
'the '
'guidestar '
'jitter '
'kernel '
'width '
'(in '
'milliarcseconds) '
'along '
'the '
'minor '
'axis '
'of '
'the '
'jitter '
'kernel. '
'When '
'no '
'guidestar '
'was '
'observed '
'with '
'this '
'detector, '
'a '
'default '
'value '
'will '
'be '
'used.',
'title': 'Minor '
'Axis '
'Jitter '
'(milliarcseconds)',
'type': 'number'},
'jitter_position_angle': {'description': 'Position '
'angle '
'(in '
'degrees) '
'of '
'the '
'jitter '
'kernel '
'in '
'the '
'science '
'coordinate '
'system. '
'The '
'position '
'angle '
'is '
'the '
'angle '
'of '
'the '
'major '
'axis '
'relative '
'to '
'the '
'+Y '
'axis, '
'with '
'PA '
'increasing '
'as '
'the '
'major '
'axis '
'moves '
'toward '
'the '
'+X '
'axis. '
'When '
'no '
'guidestar '
'was '
'observed '
'with '
'this '
'detector, '
'a '
'default '
'value '
'will '
'be '
'used.',
'title': 'Jitter '
'Position '
'Angle '
'(deg)',
'type': 'number'},
'window_xstart': {'archive_catalog': {'datatype': 'int',
'destination': ['WFIExposure.window_xstart']},
'description': 'Minimum '
'X '
'position '
'in '
'pixels '
'in '
'the '
'science '
'coordinate\n'
'frame '
'of '
'all '
'tracking '
'guide '
'windows '
'in '
'this '
'exposure.\n',
'sdf': {'source': {'origin': 'Science '
'Data '
'Formatting'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Guide '
'Window '
'X '
'Start '
'Position '
'(pixels)',
'type': 'integer'},
'window_xstop': {'archive_catalog': {'datatype': 'int',
'destination': ['WFIExposure.window_xstop']},
'description': 'Maximum '
'X '
'position '
'in '
'pixels '
'in '
'the '
'science '
'coordinate\n'
'frame '
'of '
'all '
'tracking '
'guide '
'windows '
'in '
'this '
'exposure.\n',
'sdf': {'source': {'origin': 'Science '
'Data '
'Formatting'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Guide '
'Window '
'X '
'Stop '
'Position '
'(pixels)',
'type': 'integer'},
'window_ystart': {'archive_catalog': {'datatype': 'int',
'destination': ['WFIExposure.window_ystart']},
'description': 'Minimum '
'Y '
'position '
'in '
'pixels '
'in '
'the '
'science '
'coordinate\n'
'frame '
'of '
'all '
'tracking '
'guide '
'windows '
'in '
'this '
'exposure.\n',
'sdf': {'source': {'origin': 'Science '
'Data '
'Formatting'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Guide '
'Window '
'Y '
'Start '
'Position '
'(pixels)',
'type': 'integer'},
'window_ystop': {'archive_catalog': {'datatype': 'int',
'destination': ['WFIExposure.window_ystop']},
'description': 'Maximum '
'Y '
'position '
'in '
'pixels '
'in '
'the '
'science '
'coordinate\n'
'frame '
'of '
'all '
'tracking '
'guide '
'windows '
'in '
'this '
'exposure.\n',
'sdf': {'source': {'origin': 'Science '
'Data '
'Formatting'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Guide '
'Window '
'Y '
'Start '
'Position '
'(pixels)',
'type': 'integer'}},
'required': ['guide_window_id',
'guide_mode',
'window_xstart',
'window_ystart',
'window_xstop',
'window_ystop',
'guide_star_id',
'epoch'],
'title': 'Guide '
'Star '
'and '
'Guide '
'Window '
'Information',
'type': 'object'},
'instrument': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/wfi_mode-1.1.0',
'properties': {'detector': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'enum': ['WFI01',
'WFI02',
'WFI03',
'WFI04',
'WFI05',
'WFI06',
'WFI07',
'WFI08',
'WFI09',
'WFI10',
'WFI11',
'WFI12',
'WFI13',
'WFI14',
'WFI15',
'WFI16',
'WFI17',
'WFI18'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/wfi_detector-1.1.0',
'title': 'WFI '
'Detector '
'Name',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(10)',
'destination': ['WFIExposure.detector',
'GuideWindow.detector']},
'description': 'Name '
'of '
'the '
'Wide '
'Field '
'Instrument '
'(WFI) '
'detector '
'used\n'
'to '
'take '
'the '
'science '
'data '
'in '
'this '
'file.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Wide '
'Field '
'Instrument '
'(WFI) '
'Detector '
'Identifier'},
'name': {'archive_catalog': {'datatype': 'nvarchar(5)',
'destination': ['WFIExposure.instrument_name',
'GuideWindow.instrument_name']},
'description': 'Name '
'of '
'the '
'instrument '
'used '
'to '
'acquire '
'the '
'science\n'
'data.\n',
'enum': ['WFI'],
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Instrument '
'Name',
'type': 'string'},
'optical_element': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'Name '
'of '
'the '
'filter '
'element '
'used. '
'See '
'the '
'RDox '
'Optical '
'Element '
'page '
'for '
'more\n'
'details '
'on '
'available '
'optical '
'elements '
'and '
'their '
'properties.\n',
'enum': ['F062',
'F087',
'F106',
'F129',
'F146',
'F158',
'F184',
'F213',
'GRISM',
'PRISM',
'DARK',
'NOT_CONFIGURED'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/wfi_optical_element-1.1.0',
'title': 'Optical '
'Element',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(20)',
'destination': ['WFIExposure.optical_element',
'GuideWindow.optical_element']},
'description': 'Name '
'of '
'the '
'optical '
'element '
'used '
'to '
'take '
'the '
'science\n'
'data.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Wide '
'Field '
'Instrument '
'(WFI) '
'Optical '
'Element'}},
'required': ['detector',
'optical_element',
'name'],
'title': 'Wide '
'Field '
'Instrument '
'(WFI) '
'Configuration '
'Information',
'type': 'object'},
'observation': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/observation-1.1.0',
'properties': {'execution_plan': {'archive_catalog': {'datatype': 'smallint',
'destination': ['WFIExposure.execution_plan',
'GuideWindow.execution_plan']},
'description': 'Identifier '
'for '
'the '
'execution '
'plan. '
'An '
'execution '
'plan\n'
'is '
'a '
'version '
'of '
'the '
'complete '
'set '
'of '
'activities '
'for '
'a '
'survey. '
'A\n'
'survey '
'may '
'include '
'portions '
'of '
'multiple '
'execution '
'plans. '
'A '
'new\n'
'execution '
'plan '
'is '
'required '
'whenever '
'there '
'is '
'a '
'change '
'in '
'the\n'
'program. '
'The '
'allowed '
'range '
'of '
'execution '
'plan '
'numbers '
'is '
'01 '
'to '
'99\n'
'inclusive.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Execution '
'Plan '
'Number',
'type': 'integer'},
'exposure': {'archive_catalog': {'datatype': 'int',
'destination': ['WFIExposure.observation_exposure',
'GuideWindow.observation_exposure']},
'description': 'An '
'exposure '
'is '
'a '
'single '
'multi-accumulation '
'(MA) '
'table\n'
'sequence '
'of '
'the '
'detector '
'array '
'at '
'a '
'single '
'dither '
'point '
'in '
'the\n'
'dither '
'pattern. '
'The '
'allowed '
'range '
'of '
'exposure '
'numbers '
'is '
'0001 '
'to\n'
'9999 '
'inclusive.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Exposure '
'Number',
'type': 'integer'},
'observation': {'archive_catalog': {'datatype': 'smallint',
'destination': ['WFIExposure.observation',
'GuideWindow.observation']},
'description': 'Identifier '
'for '
'the '
'observation. '
'An '
'observation '
'is '
'a\n'
'single '
'traversal '
'of '
'a '
'mosaic '
'pattern, '
'using '
'a '
'single, '
'constant\n'
'instrument '
'configuration '
'(i.e., '
'with '
'no '
'element '
'wheel '
'moves).\n'
'The '
'allowed '
'range '
'of '
'observation '
'numbers '
'is '
'001 '
'to '
'999\n'
'inclusive.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Observation '
'Number',
'type': 'integer'},
'observation_id': {'archive_catalog': {'datatype': 'nvarchar(28)',
'destination': ['WFIExposure.observation_id',
'GuideWindow.observation_id']},
'description': 'The '
'format '
'of '
'the '
'programmatic '
'observation '
'identifier\n'
'is '
'"PPPPPCCAAASSSOOOVVVggsaaeee" '
'where '
'"PPPPP" '
'is '
'the '
'program\n'
'number, '
'"CC" '
'is '
'the '
'execution '
'plan '
'number, '
'"AAA" '
'is '
'the '
'pass\n'
'number, '
'"SSS" '
'is '
'the '
'segment '
'number, '
'"OOO" '
'is '
'the '
'observation\n'
'number, '
'"VVV" '
'is '
'the '
'visit '
'number, '
'"gg" '
'is '
'the '
'visit '
'file '
'group,\n'
'"s" '
'is '
'the '
'visit '
'file '
'sequence, '
'"aa" '
'is '
'the '
'visit '
'file '
'activity,\n'
'and '
'"eeee" '
'is '
'the '
'exposure '
'number. '
'The '
'observation '
'identifier '
'is\n'
'the '
'complete '
'concatenation '
'of '
'the '
'visit_id '
'+\n'
'visit_file_statement '
'(visit_file_group '
'+ '
'visit_file_sequence '
'+\n'
'visit_file_activity) '
'+ '
'exposure.\n',
'maxLength': 28,
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Programmatic '
'Observation '
'Identifier',
'type': 'string'},
'pass': {'archive_catalog': {'datatype': 'smallint',
'destination': ['WFIExposure.pass',
'GuideWindow.pass']},
'description': 'Identifier '
'for '
'the '
'pass. '
'A '
'pass '
'is '
'the '
'collection '
'of\n'
'activities '
'generated '
'from '
'each '
'iteration '
'of '
'a '
'pass '
'plan '
'in '
'the\n'
"Astronomer's "
'Proposal '
'Tool '
'(APT). '
'Multiple '
'Passes '
'may '
'be\n'
'generated '
'from '
'the '
'same '
'Pass '
'Plan '
'to '
'allow '
'repetition '
'or '
'execute\n'
'at '
'different '
'orientations '
'(via '
'special '
'requirements). '
'The\n'
'allowed '
'range '
'of '
'pass '
'numbers '
'is '
'001 '
'to '
'999 '
'inclusive.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Pass '
'Number',
'type': 'integer'},
'program': {'archive_catalog': {'datatype': 'int',
'destination': ['WFIExposure.program',
'GuideWindow.program']},
'description': 'Identifier '
'for '
'the '
'observing '
'program. '
'A '
'program '
'is '
'an\n'
'approved '
'specification '
'for '
'a '
'science, '
'calibration, '
'or\n'
'engineering '
'investigation '
'to '
'be '
'pursued '
'using '
'Roman '
'Space\n'
'Telescope '
'mission '
'resources. '
'The '
'allowed '
'range '
'of '
'program\n'
'numbers '
'is '
'00001 '
'to '
'18445 '
'inclusive.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Program '
'Number',
'type': 'integer'},
'segment': {'archive_catalog': {'datatype': 'smallint',
'destination': ['WFIExposure.segment',
'GuideWindow.segment']},
'description': 'Identifier '
'for '
'the '
'segment. '
'A '
'segment '
'is '
'the '
'sequence\n'
'of '
'activities '
'produced '
'by '
'each '
'iteration '
'of '
'an '
"Astronomer's\n"
'Proposal '
'Tool '
'(APT) '
'segment '
'plan '
'in '
'a '
'pass. '
'A '
'segment '
'may\n'
'include '
'multiple '
'traversals '
'of '
'mosaic '
'pattern(s), '
'with '
'element\n'
'wheel '
'moves '
'occurring '
'between '
'observations. '
'The '
'allowed '
'range '
'of\n'
'segment '
'numbers '
'is '
'001 '
'to '
'999 '
'inclusive.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Segment '
'Number',
'type': 'integer'},
'visit': {'archive_catalog': {'datatype': 'smallint',
'destination': ['WFIExposure.visit',
'GuideWindow.visit']},
'description': 'A '
'visit '
'is '
'the '
'smallest '
'scheduling '
'unit '
'for '
'Roman,\n'
'which '
'is '
'a '
'sequence '
'of '
'exposures '
'executed '
'without '
'interruption,\n'
'including '
'dither '
'patterns. '
'A '
'visit '
'corresponds '
'to '
'one '
'tile '
'of\n'
'the '
'selected '
'mosaic '
'pattern. '
'The '
'allowed '
'range '
'of '
'visit '
'numbers\n'
'is '
'001 '
'to '
'999 '
'inclusive.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Visit '
'Number',
'type': 'integer'},
'visit_file_activity': {'archive_catalog': {'datatype': 'nvarchar(2)',
'destination': ['WFIExposure.visit_file_activity',
'GuideWindow.visit_file_activity']},
'description': 'The '
'visit '
'file '
'activity '
'number '
'identifies '
'the '
'activity\n'
'within '
'the '
'visit '
'file '
'sequence. '
'The '
'allowed '
'range '
'of '
'visit '
'file\n'
'activity '
'numbers '
'is '
'01 '
'to '
'99 '
'inclusive.\n',
'maxLength': 2,
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Visit '
'File '
'Activity',
'type': 'string'},
'visit_file_group': {'archive_catalog': {'datatype': 'smallint',
'destination': ['WFIExposure.visit_file_group',
'GuideWindow.visit_file_group']},
'description': 'The '
'visit '
'file '
'group '
'identifies '
'the '
'sequence '
'group\n'
'within '
'the '
'visit '
'file. '
'The '
'allowed '
'range '
'of '
'visit '
'file '
'group\n'
'numbers '
'is '
'01 '
'to '
'99 '
'inclusive.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Visit '
'File '
'Group',
'type': 'integer'},
'visit_file_sequence': {'archive_catalog': {'datatype': 'tinyint',
'destination': ['WFIExposure.visit_file_sequence',
'GuideWindow.visit_file_sequence']},
'description': 'The '
'visit '
'file '
'sequence '
'identifies '
'the '
'sequence '
'within\n'
'the '
'visit '
'file '
'group. '
'A '
'value '
'of '
'1 '
'indicates '
'a '
'prime '
'instrument\n'
'exposure, '
'and '
'a '
'value '
'greater '
'than '
'1 '
'indicates '
'a '
'parallel\n'
'instrument '
'exposure. '
'The '
'allowed '
'range '
'of '
'visit '
'file '
'sequence\n'
'numbers '
'of '
'1 '
'to '
'5 '
'inclusive.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Visit '
'File '
'Sequence',
'type': 'integer'},
'visit_id': {'archive_catalog': {'datatype': 'nvarchar(19)',
'destination': ['WFIExposure.visit_id',
'GuideWindow.visit_id']},
'description': 'A '
'unique '
'identifier '
'for '
'a '
'visit. '
'The '
'format '
'is '
'"PPPPPCCAAASSSOOOVVV" '
'where\n'
'"PPPPP" '
'is '
'the '
'program '
'number, '
'"CC" '
'is '
'the '
'execution '
'plan '
'number, '
'"AAA" '
'is '
'the '
'pass '
'number,\n'
'"SSS" '
'is '
'the '
'segment '
'number, '
'"OOO" '
'is '
'the '
'observation '
'number, '
'and '
'"VVV" '
'is '
'the\n'
'visit '
'number.\n',
'maxLength': 19,
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Visit '
'Identifier',
'type': 'string'},
'wfi_parallel': {'archive_catalog': {'datatype': 'nchar(1)',
'destination': ['WFIExposure.wfi_parallel',
'GuideWindow.wfi_parallel']},
'description': 'A '
'boolean '
'flag '
'that, '
'when '
'true, '
'indicates '
'the '
'WFI '
'was '
'operated '
'in '
'parallel '
'with '
'the '
'Coronagraph '
'as '
'the '
'prime '
'observing '
'instrument. '
'If '
'false, '
'the '
'WFI '
'was '
'operated '
'as '
'the '
'prime '
'observing '
'instrument.',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'WFI '
'Parallel '
'Flag',
'type': 'boolean'}},
'required': ['observation_id',
'visit_id',
'program',
'execution_plan',
'pass',
'segment',
'observation',
'visit',
'visit_file_group',
'visit_file_sequence',
'visit_file_activity',
'exposure',
'wfi_parallel'],
'title': 'Observation '
'Identifiers',
'type': 'object'},
'pointing': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/pointing-1.1.0',
'properties': {'dec_v1': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.dec_v1',
'GuideWindow.dec_v1']},
'description': 'The '
'declination '
'coordinate '
'of '
'the '
'V1 '
'axis '
'in '
'units '
'of\n'
'degrees. '
'This '
'may '
'be '
'considered '
'the '
'declination '
'coordinate '
'of\n'
'the '
'telescope '
'boresight. '
'The '
'telescope '
'V '
'coordinate '
'system '
'is\n'
'defined '
'with '
'its '
'origin '
'at '
'the '
'vertex '
'of '
'the '
'primary '
'mirror. '
'The\n'
'+V1 '
'axis '
'is '
'orthogonal '
'to '
'the '
'primary '
'mirror, '
'parallel '
'to '
'the\n'
'telescope '
'boresight, '
'and '
'increasing '
'positively '
'through '
'the\n'
'telescope '
'aperture. '
'See '
'Roman-STScI-000143 '
'"Description '
'of '
'the\n'
'Roman '
'SIAF '
'and '
'Coordinate '
'Frames" '
'for '
'more '
'information.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Declination '
'of '
'the '
'Telescope '
'V1 '
'Axis '
'(deg)',
'type': 'number'},
'pa_aperture': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.pa_aperture',
'GuideWindow.pa_aperture']},
'description': 'Position '
'angle '
'in '
'degrees '
'of '
'the '
'aperture '
'ideal '
'Y '
'axis\n'
'relative '
'to '
'the '
'V3 '
'axis '
'of '
'the '
'spacecraft. '
'This '
'information\n'
'comes '
'from '
'the '
'Science '
'Instrument '
'Aperture '
'File '
'(SIAF) '
'in '
'the\n'
'Science '
'Operations '
'Center '
'(SOC) '
'Project '
'Reference '
'Database\n'
'(PRD).\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Aperture '
'Position '
'Angle '
'(deg)',
'type': 'number'},
'pa_v3': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.pa_v3',
'GuideWindow.pa_v3']},
'description': 'The '
'position '
'angle '
'of '
'the '
'V3 '
'axis '
'(in '
'units '
'of\n'
'degrees) '
'is '
'defined '
'as '
'the '
'projection '
'of '
'the '
'V3 '
'axis '
'on '
'the '
'sky\n'
'measured '
'from '
'North '
'to '
'East. '
'The '
'telescope '
'V '
'coordinate '
'system\n'
'is '
'defined '
'with '
'its '
'origin '
'at '
'the '
'vertex '
'of '
'the '
'primary '
'mirror.\n'
'The '
'+V3 '
'axis '
'is '
'defined '
'to '
'be '
'orthogonal '
'to '
'the '
'sunshield. '
'See\n'
'Roman-STScI-000143 '
'"Description '
'of '
'the '
'Roman '
'SIAF '
'and '
'Coordinate\n'
'Frames" '
'for '
'more '
'information.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Position '
'Angle '
'of '
'the '
'Telescope '
'V3 '
'Axis '
'(deg)',
'type': 'number'},
'pointing_engineering_source': {'archive_catalog': {'datatype': 'nvarchar(10)',
'destination': ['WFIExposure.pointing_engineering_source',
'GuideWindow.pointing_engineering_source']},
'description': 'The '
'source '
'type '
'of '
'the '
'pointing '
'information '
'in '
'the\n'
'metadata '
'may '
'be '
'set '
'to '
'either '
'"PLANNED" '
'or '
'"CALCULATED". '
'If '
'the\n'
'value '
'is '
'"PLANNED", '
'then '
'pointing '
'mnemonics '
'were '
'not '
'found '
'in\n'
'the '
'engineering '
'database, '
'and '
'the '
'pointing '
'data '
'were '
'taken '
'from\n'
'the '
'observation '
'planning '
'information. '
'If '
'the '
'value '
'is\n'
'"CALCULATED", '
'then '
'the '
'pointing '
'data '
'were '
'determined '
'using '
'the\n'
'information '
'in '
'the '
'engineering '
'database.\n',
'enum': ['CALCULATED',
'PLANNED'],
'maxLength': 10,
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Pointing '
'Engineering '
'Source',
'type': 'string'},
'ra_v1': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.ra_v1',
'GuideWindow.ra_v1']},
'description': 'The '
'right '
'ascension '
'coordinate '
'of '
'the '
'V1 '
'axis '
'in '
'units\n'
'of '
'degrees. '
'This '
'may '
'be '
'considered '
'the '
'right '
'ascension\n'
'coordinate '
'of '
'the '
'telescope '
'boresight. '
'The '
'telescope '
'V\n'
'coordinate '
'system '
'is '
'defined '
'with '
'its '
'origin '
'at '
'the '
'vertex '
'of\n'
'the '
'primary '
'mirror. '
'The '
'V1 '
'axis '
'is '
'orthogonal '
'to '
'the '
'primary\n'
'mirror, '
'parallel '
'to '
'the '
'telescope '
'boresight, '
'and '
'increasing\n'
'positively '
'through '
'the '
'telescope '
'aperture. '
'See\n'
'Roman-STScI-000143 '
'"Description '
'of '
'the '
'Roman '
'SIAF '
'and '
'Coordinate\n'
'Frames" '
'for '
'more '
'information.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Right '
'Ascension '
'of '
'the '
'Telescope '
'V1 '
'Axis '
'(deg)',
'type': 'number'},
'target_aperture': {'archive_catalog': {'datatype': 'nvarchar(100)',
'destination': ['WFIExposure.target_aperture',
'GuideWindow.target_aperture']},
'description': 'Name '
'of '
'the '
'aperture '
'used '
'to '
'align '
'the '
'instrument '
'to '
'a\n'
'position '
'on '
'the '
'sky.\n',
'maxLength': 100,
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Aperture '
'Name '
'Used '
'for '
'Pointing',
'type': 'string'},
'target_dec': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.target_dec',
'GuideWindow.target_dec']},
'description': 'Declination '
'in '
'units '
'of '
'degrees '
'at '
'the '
'location '
'of '
'the\n'
'target '
'aperture.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Declination '
'of '
'the '
'Target '
'Aperture',
'type': 'number'},
'target_ra': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.target_ra',
'GuideWindow.target_ra']},
'description': 'Right '
'ascension '
'in '
'units '
'of '
'degrees '
'at '
'the '
'location '
'of\n'
'the '
'target '
'aperture.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Right '
'Ascension '
'of '
'the '
'Target '
'Aperture '
'(deg)',
'type': 'number'}},
'required': ['pa_aperture',
'pointing_engineering_source',
'ra_v1',
'dec_v1',
'pa_v3',
'target_aperture',
'target_ra',
'target_dec'],
'title': 'Spacecraft '
'Pointing '
'Information',
'type': 'object'},
'program': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/program-1.1.0',
'properties': {'category': {'archive_catalog': {'datatype': 'nvarchar(6)',
'destination': ['WFIExposure.program_category',
'GuideWindow.program_category',
'SourceCatalog.program_category',
'SegmentationMap.program_category']},
'description': 'The '
'submitted '
'proposal '
'category '
'of '
'the '
'program. '
'The\n'
'categories '
'include '
'calibration '
'(CAL), '
'core '
'community '
'survey\n'
'(CCS), '
'coronagraph '
'technology '
'demonstration '
'(CGI), '
'observatory\n'
'commissioning '
'(COM), '
'engineering '
'(ENG), '
'general '
'astrophysics\n'
'survey '
'(GAS), '
'general '
'investigator '
'(GI), '
'and '
'observing '
'conducted\n'
'at '
'the '
'direction '
'of '
'the '
'National '
'Aeronautics '
'and '
'Space\n'
'Administration '
'(NASA).\n',
'maxLength': 6,
'sdf': {'source': {'origin': 'PSS:dms_program.category'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Program '
'Category',
'type': 'string'},
'investigator_name': {'archive_catalog': {'datatype': 'nvarchar(100)',
'destination': ['WFIExposure.investigator_name',
'GuideWindow.investigator_name',
'SourceCatalog.investigator_name',
'SegmentationMap.investigator_name']},
'description': 'The '
'name '
'of '
'the '
'principle '
'investigator '
'(PI) '
'of '
'the\n'
'program.\n',
'maxLength': 100,
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Principal '
'Investigator '
'Name',
'type': 'string'},
'science_category': {'archive_catalog': {'datatype': 'nvarchar(50)',
'destination': ['WFIExposure.science_category',
'GuideWindow.science_category',
'SourceCatalog.science_category',
'SegmentationMap.science_category']},
'description': 'The '
'science '
'category '
'assigned '
'during '
'the '
'Time\n'
'Allocation '
'Committee '
'(TAC) '
'review '
'process.\n',
'maxLength': 50,
'sdf': {'source': {'origin': 'PSS:dms_program.science_category'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Science '
'Category',
'type': 'string'},
'subcategory': {'archive_catalog': {'datatype': 'nvarchar(15)',
'destination': ['WFIExposure.program_subcategory',
'GuideWindow.program_subcategory',
'SourceCatalog.program_subcategory',
'SegmentationMap.program_subcategory']},
'description': 'The '
'submitted '
'proposal '
'subcategory '
'of '
'the '
'program. '
'The\n'
'subcategories '
'include '
'calibration '
'(CAL), '
'coronagraph '
'technology\n'
'demonstration '
'(CGI), '
'community '
'research '
'programs '
'(CR),\n'
'discretionary '
'research '
'programs '
'(DR), '
'Galactic '
'Bulge '
'Time '
'Domain\n'
'Survey '
'(GBTD), '
'High-Latitude '
'Time '
'Domain '
'Survey '
'(HLTD),\n'
'High-Latitude '
'Wide-Area '
'Survey '
'(HLWA), '
'observational '
'research\n'
'program '
'(OR), '
'Wide '
'Field '
'Instrument '
'(WFI), '
'and '
'Wavefront '
'Sensing\n'
'and '
'Control '
'(WFSC). '
'All '
'subcategories '
'belong '
'to '
'only '
'a '
'subset '
'of\n'
'the '
'meta.program.category '
'values.\n',
'enum': ['CAL',
'CGI',
'CR',
'DR',
'GBTD',
'HLTD',
'HLWA',
'OR',
'WFI',
'WFSC',
'None'],
'sdf': {'source': {'origin': 'PSS:dms_program.subcategory'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Program '
'Subcategory',
'type': 'string'},
'title': {'archive_catalog': {'datatype': 'nvarchar(200)',
'destination': ['WFIExposure.program_title',
'GuideWindow.program_title',
'SourceCatalog.program_title',
'SegmentationMap.program_title']},
'description': 'The '
'submitted '
'proposal '
'title '
'of '
'the '
'program.\n',
'maxLength': 200,
'sdf': {'source': {'origin': 'PSS:dms_visit.template'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Proposal '
'Title',
'type': 'string'}},
'required': ['title',
'investigator_name',
'category',
'subcategory',
'science_category'],
'title': 'Program '
'Information',
'type': 'object'},
'rcs': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/rcs-1.1.0',
'properties': {'active': {'archive_catalog': {'datatype': 'nchar(1)',
'destination': ['WFIExposure.active']},
'description': 'A '
'boolean '
'flag '
'to '
'indicate '
'if '
'the '
'Relative '
'Calibration\n'
'System '
'(RCS) '
'is '
'on '
'(True) '
'or '
'off '
'(False) '
'during '
'the '
'exposure.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Status '
'of '
'the '
'Relative '
'Calibration '
'System '
'(RCS)',
'type': 'boolean'},
'bank': {'anyOf': [{'enum': ['1',
'2',
'None'],
'type': 'string'},
{'type': 'null'}],
'archive_catalog': {'datatype': 'nvarchar(5)',
'destination': ['WFIExposure.bank']},
'description': 'The '
'bank '
'of '
'light '
'emitting '
'diodes '
'(LEDs) '
'selected '
'in\n'
'the '
'program '
'specification '
'in '
'the '
"Astronomer's "
'Proposal '
'Tool\n'
'(APT). '
'Values '
'may '
'be '
'either '
'"1" '
'or '
'"2" '
'if '
'the '
'RCS '
'is '
'on, '
'and\n'
'"N/A" '
'if '
'the '
'RCS '
'is '
'off.\n',
'title': 'Light '
'Emitting '
'Diode '
'(LED) '
'Bank '
'Selection'},
'counts': {'archive_catalog': {'datatype': 'int',
'destination': ['WFIExposure.counts']},
'description': 'The '
'integrated '
'number '
'of '
'counts '
'of '
'the '
'light '
'emitting\n'
'diode '
'(LED) '
'selected '
'in '
'the '
'program '
'specification '
'in '
'the\n'
"Astronomer's "
'Proposal '
'Tool '
'(APT). '
'Values '
'are '
'between '
'0 '
'and\n'
'65,535 '
'in '
'units '
'of '
'DN.\n',
'title': 'Light '
'Emitting '
'Diode '
'(LED) '
'Flux '
'(DN)',
'type': 'integer'},
'electronics': {'anyOf': [{'enum': ['A',
'B',
'None'],
'type': 'string'},
{'type': 'null'}],
'archive_catalog': {'datatype': 'nvarchar(5)',
'destination': ['WFIExposure.electronics']},
'description': 'The '
'active '
'redundant '
'electronics '
'used '
'to '
'control '
'the\n'
'Relative '
'Calibration '
'System '
'(RCS). '
'Values '
'may '
'be '
'"A" '
'or '
'"B" '
'if\n'
'the '
'RCS '
'is '
'on, '
'and '
'"N/A" '
'if '
'the '
'RCS '
'is '
'off.\n',
'title': 'Relative '
'Calibration '
'System '
'(RCS) '
'Electronics '
'Side'},
'led': {'anyOf': [{'enum': ['1',
'2',
'3',
'4',
'5',
'6',
'None'],
'type': 'string'},
{'type': 'null'}],
'archive_catalog': {'datatype': 'nvarchar(5)',
'destination': ['WFIExposure.led']},
'description': 'The '
'light '
'emitting '
'diode '
'(LED) '
'passband '
'selected '
'in\n'
'the '
'program '
'specification '
'in '
'the '
"Astronomer's "
'Proposal '
'Tool\n'
'(APT). '
'Values '
'are '
'integer '
'strings '
'between '
'"1" '
'and '
'"6" '
'inclusive,\n'
'when '
'the '
'RCS '
'is '
'on, '
'and '
'"N/A" '
'when '
'the '
'RCS '
'is '
'off.\n',
'title': 'Light '
'Emitting '
'Diode '
'(LED) '
'Passband'}},
'required': ['active',
'electronics',
'bank',
'led',
'counts'],
'title': 'Relative '
'Calibration '
'System '
'Information',
'type': 'object'},
'ref_file': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/ref_file-1.2.0',
'properties': {'apcorr': {'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['ScienceRefData.r_apcorr',
'GuideWindow.r_apcorr']},
'description': 'Name '
'of '
'the '
'calibration '
'reference '
'file '
'used '
'to '
'apply\n'
'the '
'aperture '
'correction '
'to '
'the '
'science '
'data.\n',
'title': 'Aperture '
'Correction '
'Reference '
'File '
'Schema',
'type': 'string'},
'area': {'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['ScienceRefData.r_area',
'GuideWindow.r_area']},
'description': 'Name '
'of '
'the '
'calibration '
'reference '
'file '
'containing '
'the\n'
'pixel-to-pixel '
'estimates '
'of '
'the '
'area '
'of '
'each '
'detector '
'pixel '
'on\n'
'the '
'sky.\n',
'title': 'Pixel '
'Area '
'Reference '
'File '
'Information',
'type': 'string'},
'crds': {'description': 'Calibration '
'Reference '
'Data '
'System '
'Parameters\n',
'properties': {'context': {'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['WFIExposure.crds_context',
'GuideWindow.crds_context']},
'description': 'Name '
'of '
'the '
'Calibration '
'Reference '
'Data '
'System\n'
'(CRDS) '
'context '
'(.pmap) '
'file '
'used '
'to '
'match '
'calibration\n'
'reference '
'files '
'to '
'science '
'observations.\n',
'maxLength': 120,
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'CRDS '
'Context',
'type': 'string'},
'version': {'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['WFIExposure.crds_version',
'GuideWindow.crds_version']},
'description': 'Version '
'of '
'the '
'Calibration '
'Reference '
'Data\n'
'System '
'(CRDS) '
'software '
'package '
'used '
'to '
'match '
'calibration\n'
'reference '
'files '
'to '
'science '
'observations.\n',
'maxLength': 120,
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'CRDS '
'Software '
'Version',
'type': 'string'}},
'required': ['version',
'context'],
'title': 'Calibration '
'Reference '
'Data '
'System '
'(CRDS) '
'Information',
'type': 'object'},
'dark': {'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['ScienceRefData.r_dark',
'GuideWindow.r_dark']},
'description': 'Name '
'of '
'the '
'calibration '
'reference '
'file '
'used '
'to '
'correct\n'
'for '
'dark '
'current '
'signal '
'in '
'the '
'science '
'data.\n',
'title': 'Dark '
'Reference '
'File '
'Information',
'type': 'string'},
'darkdecaysignal': {'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['ScienceRefData.r_darkdecaysignal',
'GuideWindow.r_darkdecaysignal']},
'description': 'Name '
'of '
'the '
'calibration '
'reference '
'file '
'used '
'to '
'correct\n'
'for '
'dark '
'decay '
'signal '
'in '
'the '
'science '
'data.\n',
'title': 'Dark '
'Decay '
'Reference '
'File '
'Information',
'type': 'string'},
'distortion': {'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['ScienceRefData.r_distortion',
'GuideWindow.r_distortion']},
'description': 'Name '
'of '
'the '
'calibration '
'reference '
'file '
'used '
'to '
'include\n'
'the '
'geometric '
'distortion '
'model '
'in '
'the '
'world '
'coordinate '
'system\n'
'(WCS) '
'of '
'the '
'science '
'data.\n',
'title': 'Distortion '
'Reference '
'File '
'Information',
'type': 'string'},
'epsf': {'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['ScienceRefData.r_epsf',
'GuideWindow.r_epsf']},
'description': 'Name '
'of '
'the '
'calibration '
'reference '
'file '
'used '
'to '
'apply\n'
'the '
'ePSF '
'model '
'to '
'the '
'science '
'data.\n',
'title': 'ePSF '
'Reference '
'File '
'Information',
'type': 'string'},
'flat': {'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['ScienceRefData.r_flat',
'GuideWindow.r_flat']},
'description': 'Name '
'of '
'the '
'calibration '
'reference '
'file '
'used '
'to '
'correct\n'
'for '
'element-dependent, '
'spatially-variable '
'sensitivity '
'in '
'the\n'
'science '
'data.\n',
'title': 'Flat '
'Reference '
'File '
'Information',
'type': 'string'},
'gain': {'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['ScienceRefData.r_gain',
'GuideWindow.r_gain']},
'description': 'Name '
'of '
'the '
'calibration '
'reference '
'file '
'used '
'to '
'convert\n'
'between '
'data '
'numbers '
'(DN) '
'and '
'photo-electrons '
'in '
'the '
'science\n'
'data.\n',
'title': 'Gain '
'Reference '
'Rile '
'Information',
'type': 'string'},
'integralnonlinearity': {'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['ScienceRefData.r_integralnonlinearity',
'GuideWindow.r_integralnonlinearity']},
'description': 'Name '
'of '
'the '
'calibration '
'reference '
'file '
'used '
'to '
'correct\n'
'for '
'integral '
'nonlinearity '
'in '
'the '
'science '
'data.\n',
'title': 'Integral '
'Nonlinearity '
'Reference '
'File '
'Information',
'type': 'string'},
'inverselinearity': {'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['ScienceRefData.r_inverselinearity',
'GuideWindow.r_inverselinearity']},
'description': 'Name '
'of '
'the '
'calibration '
'reference '
'file '
'used '
'in\n'
'simulations '
'of '
'Level '
'1 '
'data '
'products '
'to '
'imprint '
'the '
'effect '
'of\n'
'classical '
'non-linearity '
'in '
'the '
'science '
'data.\n',
'title': 'Inverse '
'Linearity '
'Reference '
'File '
'Information',
'type': 'string'},
'linearity': {'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['ScienceRefData.r_linearity',
'GuideWindow.r_linearity']},
'description': 'Name '
'of '
'the '
'calibration '
'reference '
'file '
'used '
'to '
'correct\n'
'for '
'classical '
'linearity '
'in '
'the '
'science '
'data.\n',
'title': 'Linearity '
'Reference '
'File '
'Information',
'type': 'string'},
'mask': {'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['ScienceRefData.r_mask',
'GuideWindow.r_mask']},
'description': 'Name '
'of '
'the '
'calibration '
'reference '
'file '
'used '
'to '
'mark\n'
'bad '
'pixels '
'in '
'the '
'data '
'quality '
'array '
'of '
'the '
'science '
'data.\n',
'title': 'Bad '
'Pixel '
'Mask '
'Reference '
'File '
'Information',
'type': 'string'},
'photom': {'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['ScienceRefData.r_photom',
'GuideWindow.r_photom']},
'description': 'Name '
'of '
'the '
'calibration '
'reference '
'file '
'containing\n'
'photometric '
'zeropoints '
'and '
'related '
'information '
'populated '
'into\n'
'the '
'science '
'product '
'metadata.\n',
'title': 'Photometry '
'Reference '
'File '
'Information',
'type': 'string'},
'readnoise': {'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['ScienceRefData.r_readnoise',
'GuideWindow.r_readnoise']},
'description': 'Name '
'of '
'the '
'calibration '
'reference '
'file '
'that '
'estimates\n'
'the '
'pixel-to-pixel '
'read '
'noise '
'in '
'the '
'science '
'data.\n',
'title': 'Read '
'Noise '
'Reference '
'File '
'Information',
'type': 'string'},
'refpix': {'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['ScienceRefData.r_refpix',
'GuideWindow.r_refpix']},
'description': 'Name '
'of '
'the '
'calibration '
'reference '
'file '
'used '
'to '
'correct\n'
'for '
'1/f '
'noise '
'using '
'the '
'reference '
'pixels.\n',
'title': 'Reference '
'Pixel '
'Reference '
'File '
'Information',
'type': 'string'},
'saturation': {'archive_catalog': {'datatype': 'nvarchar(120)',
'destination': ['ScienceRefData.r_saturation',
'GuideWindow.r_saturation']},
'description': 'Information '
'about '
'the '
'saturation '
'reference '
'file '
'used '
'with '
'the '
'science\n'
'data.\n',
'title': 'Saturation '
'Reference '
'File '
'Information',
'type': 'string'}},
'required': ['apcorr',
'crds',
'dark',
'darkdecaysignal',
'distortion',
'epsf',
'mask',
'flat',
'gain',
'readnoise',
'linearity',
'inverselinearity',
'integralnonlinearity',
'photom',
'area',
'saturation',
'refpix'],
'title': 'Reference '
'File '
'Information',
'type': 'object'},
'velocity_aberration': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/velocity_aberration-1.1.0',
'properties': {'dec_reference': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.dec_reference',
'GuideWindow.dec_reference']},
'description': 'Reference '
'position '
'declination '
'corrected '
'for '
'velocity\n'
'aberration '
'in '
'units '
'of '
'degrees.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Velocity '
'Aberrated '
'Reference '
'Declination '
'(deg)',
'type': 'number'},
'ra_reference': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.ra_reference',
'GuideWindow.ra_reference']},
'description': 'Reference '
'position '
'right '
'ascension '
'corrected '
'for\n'
'velocity '
'aberration '
'in '
'units '
'of '
'degrees.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Velocity '
'Aberrated '
'Reference '
'Right '
'Ascension '
'(deg)',
'type': 'number'},
'scale_factor': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.scale_factor',
'GuideWindow.scale_factor']},
'description': 'Scale '
'factor '
'used '
'for '
'the '
'correction '
'of '
'the '
'velocity\n'
'aberration.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Velocity '
'Aberration '
'Correction '
'Scale '
'Factor',
'type': 'number'}},
'required': ['ra_reference',
'dec_reference',
'scale_factor'],
'title': 'Velocity '
'Aberration '
'Correction '
'Information',
'type': 'object'},
'visit': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/visit-1.1.0',
'properties': {'dither': {'properties':
{'executed_pattern': {'anyOf': [{'items': {'type': 'number'},
'type': 'array'},
{'type': 'null'}],
'archive_catalog': {'datatype': 'nvarchar(max)',
'destination': ['WFIExposure.dither_executed_pattern',
'SourceCatalog.dither_executed_pattern',
'SegmentationMap.dither_executed_pattern']},
'description': 'The '
'combination '
'of '
'the '
'primary '
'and '
'subpixel\n'
'dither '
'patterns '
'(if '
'selected) '
'in '
'units '
'of '
'arcseconds. '
'If\n'
'a '
'subpixel '
'dither '
'pattern '
'is '
'selected, '
'then '
'all '
'of '
'the\n'
'subpixel '
'dither '
'offsets '
'are '
'performed '
'at '
'each '
'of '
'the\n'
'points '
'in '
'the '
'primary '
'dither '
'pattern. '
'Thus, '
'the '
'total\n'
'number '
'of '
'dither '
'offsets '
'executed '
'is '
'the '
'product '
'of '
'the\n'
'number '
'of '
'points '
'in '
'the '
'primary '
'and '
'subpixel '
'dither\n'
'patterns. '
'The '
'array '
'contains '
'(X, '
'Y) '
'pairs '
'of '
'offsets '
'in\n'
'the '
'subpixel '
'dither '
'pattern '
'where '
'the '
'X '
'and '
'Y\n'
'coordinates '
'are '
'defined '
'in '
'the '
'ideal '
'system. '
'The '
'ideal\n'
'coordinate '
'system '
'is '
'a '
'geomtric-distortion-corrected\n'
'reference '
'frame '
'projected '
'onto '
'a '
'tangent '
'plane. '
'For '
'more\n'
'information, '
'see '
'the '
'Science '
'Instrument '
'Aperture '
'File\n'
'(SIAF) '
'and '
'associated '
'documentation. '
'The '
'exposure\n'
'identifier '
'in '
'meta.observation.exposure '
'can '
'be '
'used '
'to\n'
'index '
'this '
'array '
'to '
'obtain '
'the '
'relative '
'pointing '
'offset\n'
'from '
'the '
'initial '
'target '
'position '
'for '
'this '
'exposure. '
'Note\n'
'that '
'the '
'exposure '
'identifier '
'is '
'1-indexed.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Executed '
'Dither '
'Pattern '
'Offsets '
'(arcsec)'},
'primary_name': {'anyOf': [{'maxLength': 100,
'type': 'string'},
{'type': 'null'}],
'archive_catalog': {'datatype': 'nvarchar(100)',
'destination': ['WFIExposure.dither_primary_name',
'SourceCatalog.dither_primary_name',
'SegmentationMap.dither_primary_name']},
'description': 'Name '
'of '
'the '
'primary '
'dither '
'pattern '
'used '
'for\n'
'the '
'visit.\n',
'sdf': {'source': {'origin': 'PSS:dms_visit.dither_type'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Primary '
'Dither '
'Pattern '
'Name'},
'subpixel_name': {'anyOf': [{'maxLength': 100,
'type': 'string'},
{'type': 'null'}],
'archive_catalog': {'datatype': 'nvarchar(100)',
'destination': ['WFIExposure.dither_subpixel_name',
'SourceCatalog.dither_subpixel_name',
'SegmentationMap.dither_subpixel_name']},
'description': 'Name '
'of '
'the '
'subpixel '
'dither '
'pattern '
'used '
'for\n'
'the '
'visit.\n',
'sdf': {'source': {'origin': 'PSS:dms_visit.subpixel_dither_type'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Subpixel '
'Dither '
'Pattern '
'Name'}},
'required': ['primary_name',
'subpixel_name',
'executed_pattern'],
'title': 'Dither '
'Pattern '
'Information',
'type': 'object'},
'internal_target': {'archive_catalog': {'datatype': 'nchar(1)',
'destination': ['WFIExposure.visit_internal_target',
'GuideWindow.visit_internal_target',
'SourceCatalog.visit_internal_target',
'SegmentationMap.visit_internal_target']},
'description': 'A '
'boolean '
'indicator '
'which, '
'if '
'true, '
'indicates '
'that '
'the\n'
'target '
'for '
'the '
'visit '
'is '
'an '
'internal '
'calibration '
'target.\n',
'sdf': {'source': {'origin': 'PSS:dms_visit.internal_target'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Internal '
'Target',
'type': 'boolean'},
'nexposures': {'archive_catalog': {'datatype': 'int',
'destination': ['WFIExposure.visit_nexposures',
'GuideWindow.visit_nexposures',
'SourceCatalog.visit_nexposures',
'SegmentationMap.visit_nexposures']},
'description': 'The '
'total '
'number '
'of '
'exposures '
'planned '
'within '
'the\n'
'visit.\n',
'sdf': {'source': {'origin': 'PSS:dms_visit.exposures_per_dither'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Number '
'of '
'Planned '
'Exposures',
'type': 'integer'},
'start_time': {'archive_catalog': {'datatype': 'datetime2',
'destination': ['WFIExposure.visit_start_time',
'GuideWindow.visit_start_time',
'SourceCatalog.visit_start_time',
'SegmentationMap.visit_start_time']},
'description': 'The '
'UTC '
'time '
'at '
'the '
'beginning '
'of '
'the '
'visit. '
'The '
'time\n'
'is '
'serialized '
'on '
'disk '
'as '
'an '
'International '
'Organization '
'for\n'
'Standardization '
'(ISO) '
'8601-compliant '
'ISOT '
'string, '
'but '
'if '
'opened\n'
'in '
'Python '
'with '
'the '
'asdf-astropy '
'package '
'installed, '
'it '
'may '
'be\n'
'read '
'as '
'an '
'astropy.time.Time '
'object '
'with '
'all '
'of '
'the '
'associated\n'
'methods '
'and '
'transforms '
'available. '
'See '
'the '
'documentation '
'for\n'
'astropy.time.Time '
'objects '
'for '
'more '
'information.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'tag': 'tag:stsci.edu:asdf/time/time-1.*',
'title': 'Visit '
'Start '
'Time '
'(UTC)'},
'type': {'archive_catalog': {'datatype': 'nvarchar(30)',
'destination': ['WFIExposure.visit_type',
'GuideWindow.visit_type',
'SourceCatalog.visit_type',
'SegmentationMap.visit_type']},
'description': 'The '
'type '
'of '
'visit '
'from '
'observation '
'planning.\n',
'enum': ['GENERAL_ENGINEERING',
'GENERIC',
'PARALLEL',
'PRIME_TARGETED_FIXED',
'PRIME_UNTARGETED'],
'sdf': {'source': {'origin': 'PSS:dms_visit.visit_type'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Visit '
'Type',
'type': 'string'}},
'required': ['dither',
'type',
'start_time',
'nexposures',
'internal_target'],
'title': 'Visit '
'Information',
'type': 'object'},
'wcsinfo': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/wcsinfo-1.1.0',
'properties': {'aperture_name': {'archive_catalog': {'datatype': 'nvarchar(20)',
'destination': ['WFIExposure.aperture_name',
'GuideWindow.aperture_name']},
'description': 'Name '
'of '
'the '
'aperture '
'used '
'to '
'specify '
'the\n'
'transformations '
'between '
'detector '
'pixel, '
'science '
'pixel, '
'and\n'
'spacecraft '
'V '
'coordinate '
'frames. '
'This '
'information '
'comes '
'from '
'the\n'
'Science '
'Instrument '
'Aperture '
'File '
'(SIAF) '
'in '
'the '
'Science\n'
'Operations '
'Center '
'(SOC) '
'Project '
'Reference '
'Database '
'(PRD).\n',
'enum': ['WFI01_FULL',
'WFI02_FULL',
'WFI03_FULL',
'WFI04_FULL',
'WFI05_FULL',
'WFI06_FULL',
'WFI07_FULL',
'WFI08_FULL',
'WFI09_FULL',
'WFI10_FULL',
'WFI11_FULL',
'WFI12_FULL',
'WFI13_FULL',
'WFI14_FULL',
'WFI15_FULL',
'WFI16_FULL',
'WFI17_FULL',
'WFI18_FULL',
'WFI_01_FULL',
'WFI_02_FULL',
'WFI_03_FULL',
'WFI_04_FULL',
'WFI_05_FULL',
'WFI_06_FULL',
'WFI_07_FULL',
'WFI_08_FULL',
'WFI_09_FULL',
'WFI_10_FULL',
'WFI_11_FULL',
'WFI_12_FULL',
'WFI_13_FULL',
'WFI_14_FULL',
'WFI_15_FULL',
'WFI_16_FULL',
'WFI_17_FULL',
'WFI_18_FULL',
'WFI_CEN',
'BORESIGHT',
'CGI_CEN'],
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Aperture '
'Name',
'type': 'string'},
'dec_ref': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.dec_ref',
'GuideWindow.dec_ref']},
'description': 'Declination '
'of '
'the '
'reference '
'pixel '
'position '
'on '
'the '
'sky\n'
'in '
'units '
'of '
'degrees.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Declination '
'of '
'the '
'Reference '
'Position '
'(deg)',
'type': 'number'},
'ra_ref': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.ra_ref',
'GuideWindow.ra_ref']},
'description': 'Right '
'ascension '
'of '
'the '
'reference '
'pixel '
'position '
'on '
'the\n'
'sky '
'in '
'units '
'of '
'degrees.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Right '
'Ascension '
'of '
'the '
'Reference '
'Position '
'(deg)',
'type': 'number'},
'roll_ref': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.roll_ref',
'GuideWindow.roll_ref']},
'description': 'Position '
'angle '
'of '
'the '
'telescope '
'V3 '
'axis '
'at '
'the\n'
'reference '
'pixel '
'position '
'measured '
'from '
'North '
'to '
'East. '
'The\n'
'telescope '
'V '
'coordinate '
'system '
'is '
'defined '
'with '
'its '
'origin '
'at '
'the\n'
'vertex '
'of '
'the '
'primary '
'mirror. '
'The '
'+V3 '
'axis '
'is '
'orthogonal '
'to '
'the\n'
'sunshield. '
'See '
'Roman-STScI-000143 '
'"Description '
'of '
'the '
'Roman '
'SIAF\n'
'and '
'Coordinate '
'Frames" '
'for '
'more '
'information.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'V3 '
'Position '
'Angle '
'at '
'the '
'Reference '
'Position',
'type': 'number'},
's_region': {'archive_catalog': {'datatype': 'nvarchar(max)',
'destination': ['WFIExposure.s_region',
'GuideWindow.s_region']},
'description': 'The '
'region '
'of '
'the '
'sky '
'enclosed '
'by '
'the '
'pixel '
'data\n'
'contained '
'within '
'this '
'file. '
'This '
'is '
'given '
'as '
'a '
'polygon '
'stored '
'as\n'
'a '
'string '
'with '
'the '
'vertices '
'defined '
'by '
'a '
'list '
'of '
'right '
'ascension\n'
'and '
'declination '
'pairs '
'in '
'units '
'of '
'degrees.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Spatial '
'Extent '
'of '
'the '
'Exposure',
'type': 'string'},
'v2_ref': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.v2_ref',
'GuideWindow.v2_ref']},
'description': 'Coordinate '
'of '
'the '
'reference '
'pixel '
'position '
'along '
'the\n'
'telescope '
'V2 '
'axis '
'in '
'units '
'of '
'arcseconds. '
'This '
'information '
'comes\n'
'from '
'the '
'Science '
'Instrument '
'Aperture '
'File '
'(SIAF) '
'in '
'the '
'Science\n'
'Operations '
'Center '
'(SOC) '
'Project '
'Reference '
'Database '
'(PRD). '
'The\n'
'telescope '
'V '
'coordinate '
'system '
'is '
'defined '
'with '
'its '
'origin '
'at '
'the\n'
'vertex '
'of '
'the '
'primary '
'mirror. '
'The '
'+V1 '
'axis '
'is '
'defined '
'as\n'
'parallel '
'to '
'the '
'telescope '
'boresight, '
'the '
'+V3 '
'axis '
'is '
'orthogonal\n'
'to '
'the '
'sunshield, '
'and '
'the '
'+V2 '
'axis '
'completes '
'the '
'right-hand\n'
'system. '
'See '
'Roman-STScI-000143 '
'"Description '
'of '
'the '
'Roman '
'SIAF\n'
'and '
'Coordinate '
'Frames" '
'for '
'more '
'information.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'V2 '
'Reference '
'Position '
'(arcsec)',
'type': 'number'},
'v3_ref': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.v3_ref',
'GuideWindow.v3_ref']},
'description': 'Coordinate '
'of '
'the '
'reference '
'pixel '
'position '
'along '
'the\n'
'telescope '
'V3 '
'axis '
'in '
'units '
'of '
'arcseconds. '
'This '
'information '
'comes\n'
'from '
'the '
'Science '
'Instrument '
'Aperture '
'File '
'(SIAF) '
'in '
'the '
'Science\n'
'Operations '
'Center '
'(SOC) '
'Project '
'Reference '
'Database '
'(PRD). '
'The\n'
'telescope '
'V '
'coordinate '
'system '
'is '
'defined '
'with '
'its '
'origin '
'at '
'the\n'
'vertex '
'of '
'the '
'primary '
'mirror. '
'The '
'+V3 '
'axis '
'is '
'orthogonal '
'to '
'the\n'
'sunshield. '
'See '
'Roman-STScI-000143 '
'"Description '
'of '
'the '
'Roman '
'SIAF\n'
'and '
'Coordinate '
'Frames" '
'for '
'more '
'information.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'V3 '
'Reference '
'Position '
'(arcsec)',
'type': 'number'},
'v3yangle': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.v3yangle',
'GuideWindow.v3yangle']},
'description': 'Angle '
'between '
'the '
'telescope '
'V3 '
'axis '
'and '
'the '
'ideal '
'Y\n'
'axis '
'in '
'units '
'of '
'degrees. '
'This '
'information '
'comes '
'from '
'the\n'
'Science '
'Instrument '
'Aperture '
'File '
'(SIAF) '
'in '
'the '
'Science\n'
'Operations '
'Center '
'(SOC) '
'Project '
'Reference '
'Database '
'(PRD). '
'The\n'
'telescope '
'V '
'coordinate '
'system '
'is '
'defined '
'with '
'its '
'origin '
'at '
'the\n'
'vertex '
'of '
'the '
'primary '
'mirror. '
'The '
'+V3 '
'axis '
'is '
'orthogonal '
'to '
'the\n'
'sunshield. '
'The '
'ideal '
'coordinate '
'system '
'is '
'a\n'
'geomtric-distortion-corrected '
'reference '
'frame '
'projected '
'onto '
'a\n'
'tangent '
'plane. '
'See '
'Roman-STScI-000143 '
'"Description '
'of '
'the '
'Roman\n'
'SIAF '
'and '
'Coordinate '
'Frames" '
'for '
'more '
'information.\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Angle '
'Between '
'the '
'V3 '
'and '
'Ideal '
'Y '
'Axes '
'(deg)',
'type': 'number'},
'vparity': {'archive_catalog': {'datatype': 'smallint',
'destination': ['WFIExposure.vparity',
'GuideWindow.vparity']},
'description': 'Relative '
'sense '
'of '
'rotation '
'between '
'the '
'ideal '
'and\n'
'telescope '
'coordinate '
'systems. '
'The '
'value '
'may '
'be '
'either '
'1 '
'or '
'-1.\n'
'This '
'information '
'comes '
'from '
'the '
'Science '
'Instrument '
'Aperture '
'File\n'
'(SIAF) '
'in '
'the '
'Science '
'Operations '
'Center '
'(SOC) '
'Project '
'Reference\n'
'Database '
'(PRD). '
'See '
'documents '
'STScI-JWST-001550 '
'and\n'
'STScI-Roman-000143 '
'for '
'more '
'information.\n',
'enum': [-1,
1],
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Relative '
'Rotation '
'Between '
'the '
'Ideal '
'and '
'Telescope '
'Axes',
'type': 'integer'}},
'required': ['aperture_name',
'v2_ref',
'v3_ref',
'vparity',
'v3yangle',
'ra_ref',
'dec_ref',
'roll_ref',
's_region'],
'title': 'World '
'Coordinate '
'System '
'(WCS) '
'Information',
'type': 'object'}},
'required': ['coordinates',
'ephemeris',
'exposure',
'guide_star',
'instrument',
'observation',
'pointing',
'program',
'ref_file',
'rcs',
'velocity_aberration',
'visit',
'wcsinfo'],
'type': 'object'}],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/common-1.3.0',
'title': 'Common metadata properties'},
{'properties': {'background': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/sky_background-1.1.0',
'properties': {'level': {'anyOf': [{'type': 'number'},
{'type': 'null'}],
'description': 'The '
'sky '
'background '
'level '
'in '
'DN '
'/ '
's '
'or '
'MJy.sr**-1.\n',
'title': 'Sky '
'Background '
'Level',
'unit': ['DN '
'/ '
's',
'MJy.sr**-1']},
'method': {'description': 'The '
'method '
'by '
'which '
'the '
'sky '
'background '
'was '
'determined.\n',
'enum': ['None',
'local',
'global+match',
'match',
'global'],
'title': 'Sky '
'Background '
'Method',
'type': 'string'},
'subtracted': {'description': 'A '
'boolean '
'value '
'which '
'indicates '
'whether '
'the '
'sky '
'background '
'has\n'
'been '
'subtracted '
'form '
'the '
'image '
'or '
'not.\n',
'title': 'Sky '
'Background '
'Subtraction '
'Flag',
'type': 'boolean'}},
'required': ['level',
'method',
'subtracted'],
'title': 'Sky '
'Background '
'Information',
'type': 'object'},
'cal_logs': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'String '
'array '
'of '
'log '
'messages '
'recording '
'the '
'steps, '
'failures,\n'
'and '
'outputs '
'of '
'running '
'pipeline '
'steps. '
'These '
'log '
'messages '
'are '
'typically\n'
'the '
'same '
'as '
'those '
'printed '
'to '
'the '
'standard '
'output '
'(stdout) '
'during\n'
'pipeline '
'processing\n',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/cal_logs-1.1.0',
'items': {'type': 'string'},
'title': 'Calibration '
'Log '
'Messages',
'type': 'array'},
'cal_step': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'additionalProperties': True,
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/l2_cal_step-1.3.0',
'properties': {'assign_wcs': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'The '
'flag '
'used '
'to '
'indicate '
'the '
'status '
'of '
'a '
'calibration '
'step.\n',
'enum': ['INCOMPLETE',
'N/A',
'COMPLETE',
'FAILED',
'SKIPPED'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/cal_step_flag-1.2.0',
'title': 'Calibration '
'Step '
'Flag',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(15)',
'destination': ['ScienceRefData.s_assign_wcs']},
'description': 'Step '
'in '
'romancal '
'that '
'assigns '
'a '
'World '
'Coordinate\n'
'System '
'(WCS) '
'object '
'to '
'a '
'science '
'image.\n',
'title': 'Assign '
'World '
'Coordinate '
'System '
'(WCS) '
'Step'},
'dark': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'The '
'flag '
'used '
'to '
'indicate '
'the '
'status '
'of '
'a '
'calibration '
'step.\n',
'enum': ['INCOMPLETE',
'N/A',
'COMPLETE',
'FAILED',
'SKIPPED'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/cal_step_flag-1.2.0',
'title': 'Calibration '
'Step '
'Flag',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(15)',
'destination': ['ScienceRefData.s_dark']},
'description': 'Step '
'in '
'romancal '
'that '
'performs '
'a '
'correction '
'for '
'the\n'
'dark '
'current '
'by '
'subtracting '
'the '
'dark '
'reference '
'data '
'from '
'the\n'
'science '
'data.\n',
'title': 'Dark '
'Current '
'Subtraction '
'Step'},
'dark_decay': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'The '
'flag '
'used '
'to '
'indicate '
'the '
'status '
'of '
'a '
'calibration '
'step.\n',
'enum': ['INCOMPLETE',
'N/A',
'COMPLETE',
'FAILED',
'SKIPPED'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/cal_step_flag-1.2.0',
'title': 'Calibration '
'Step '
'Flag',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(15)',
'destination': ['ScienceRefData.s_dark_decay']},
'description': 'Step '
'in '
'romancal '
'that '
'performs '
'subtracts '
'signal\n'
'associated '
'with '
'the '
'dark '
'decay '
'systematic, '
'using '
'the '
'dark '
'decay\n'
'reference '
'file.\n',
'title': 'Dark '
'Decay '
'Subtraction '
'Step'},
'dq_init': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'The '
'flag '
'used '
'to '
'indicate '
'the '
'status '
'of '
'a '
'calibration '
'step.\n',
'enum': ['INCOMPLETE',
'N/A',
'COMPLETE',
'FAILED',
'SKIPPED'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/cal_step_flag-1.2.0',
'title': 'Calibration '
'Step '
'Flag',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(15)',
'destination': ['ScienceRefData.s_dq_init']},
'description': 'Step '
'in '
'romancal '
'that '
'initializes '
'the '
'data '
'quality\n'
'array '
'and '
'masks '
'known '
'bad '
'pixels.\n',
'title': 'Data '
'Quality '
'Initialization '
'Step'},
'flat_field': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'The '
'flag '
'used '
'to '
'indicate '
'the '
'status '
'of '
'a '
'calibration '
'step.\n',
'enum': ['INCOMPLETE',
'N/A',
'COMPLETE',
'FAILED',
'SKIPPED'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/cal_step_flag-1.2.0',
'title': 'Calibration '
'Step '
'Flag',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(15)',
'destination': ['ScienceRefData.s_flat_field']},
'description': 'Step '
'in '
'romancal '
'in '
'which '
'a '
'science '
'image '
'is\n'
'flat-fielded, '
'whereby '
'each '
'detector '
'pixel '
'is '
'calibrated '
'to '
'give\n'
'the '
'same '
'signal '
'for '
'the '
'same '
'illumination '
'based '
'on '
'the '
'pixel\n'
'response.\n',
'title': 'Flat '
'Field '
'Correction '
'Step'},
'flux': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'The '
'flag '
'used '
'to '
'indicate '
'the '
'status '
'of '
'a '
'calibration '
'step.\n',
'enum': ['INCOMPLETE',
'N/A',
'COMPLETE',
'FAILED',
'SKIPPED'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/cal_step_flag-1.2.0',
'title': 'Calibration '
'Step '
'Flag',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(15)',
'destination': ['ScienceRefData.s_flux']},
'description': 'Step '
'in '
'ROMANCAL '
'which '
'applies '
'the '
'scaling '
'factors '
'determined '
'in '
'the '
'Photom '
'calibrations '
'step.\n'
'The '
'data '
'are '
'converted '
'from '
'DN/s '
'to '
'MJy/sr.\n',
'title': 'Flux '
'Scale '
'Application '
'Step'},
'linearity': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'The '
'flag '
'used '
'to '
'indicate '
'the '
'status '
'of '
'a '
'calibration '
'step.\n',
'enum': ['INCOMPLETE',
'N/A',
'COMPLETE',
'FAILED',
'SKIPPED'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/cal_step_flag-1.2.0',
'title': 'Calibration '
'Step '
'Flag',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(15)',
'destination': ['ScienceRefData.s_linearity']},
'description': 'Step '
'in '
'romancal '
'that '
'linearizes '
'the '
'ramp '
'data '
'to\n'
'correct '
'for '
'deviations '
'from '
'a '
'linear '
'response.\n',
'title': 'Classical '
'Linearity '
'Correction '
'Step'},
'outlier_detection': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'The '
'flag '
'used '
'to '
'indicate '
'the '
'status '
'of '
'a '
'calibration '
'step.\n',
'enum': ['INCOMPLETE',
'N/A',
'COMPLETE',
'FAILED',
'SKIPPED'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/cal_step_flag-1.2.0',
'title': 'Calibration '
'Step '
'Flag',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(15)',
'destination': ['ScienceRefData.s_outlier_detection']},
'description': 'Step '
'in '
'ROMANCAL '
'which '
'detects '
'and '
'flags '
'outliers '
'in '
'a '
'science '
'image.\n',
'title': 'Outlier '
'Detection '
'Step'},
'photom': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'The '
'flag '
'used '
'to '
'indicate '
'the '
'status '
'of '
'a '
'calibration '
'step.\n',
'enum': ['INCOMPLETE',
'N/A',
'COMPLETE',
'FAILED',
'SKIPPED'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/cal_step_flag-1.2.0',
'title': 'Calibration '
'Step '
'Flag',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(15)',
'destination': ['ScienceRefData.s_photom']},
'description': 'Step '
'in '
'romancal '
'that '
'populates '
'photometric\n'
'calibration '
'information '
'in '
'the '
'metadata '
'of '
'the '
'science '
'file.\n',
'title': 'Populate '
'Photometric '
'Keywords '
'Step'},
'ramp_fit': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'The '
'flag '
'used '
'to '
'indicate '
'the '
'status '
'of '
'a '
'calibration '
'step.\n',
'enum': ['INCOMPLETE',
'N/A',
'COMPLETE',
'FAILED',
'SKIPPED'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/cal_step_flag-1.2.0',
'title': 'Calibration '
'Step '
'Flag',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(15)',
'destination': ['ScienceRefData.s_ramp_fit']},
'description': 'Step '
'in '
'romancal '
'that '
'fits '
'a '
'slope '
'to '
'each '
'pixel '
'to\n'
'compute '
'the '
'count '
'rate.\n',
'title': 'Ramp '
'Fitting '
'Step'},
'refpix': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'The '
'flag '
'used '
'to '
'indicate '
'the '
'status '
'of '
'a '
'calibration '
'step.\n',
'enum': ['INCOMPLETE',
'N/A',
'COMPLETE',
'FAILED',
'SKIPPED'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/cal_step_flag-1.2.0',
'title': 'Calibration '
'Step '
'Flag',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(15)',
'destination': ['ScienceRefData.s_refpix']},
'description': 'Step '
'in '
'romancal '
'that '
'corrects '
'science '
'pixels '
'for\n'
'additional '
'signal '
'from '
'the '
'readout '
'electronics '
'(e.g., '
'1/f '
'noise)\n'
'using '
'the '
'reference '
'pixels.\n',
'title': 'Reference '
'Pixel '
'Correction '
'Step'},
'saturation': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'The '
'flag '
'used '
'to '
'indicate '
'the '
'status '
'of '
'a '
'calibration '
'step.\n',
'enum': ['INCOMPLETE',
'N/A',
'COMPLETE',
'FAILED',
'SKIPPED'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/cal_step_flag-1.2.0',
'title': 'Calibration '
'Step '
'Flag',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(15)',
'destination': ['ScienceRefData.s_saturation']},
'description': 'Step '
'in '
'romancal '
'that '
'sets '
'data '
'quality '
'flags '
'for\n'
'pixels '
'at '
'or '
'above '
'the '
'saturation '
'threshold.\n',
'title': 'Saturation '
'Identification '
'Step'},
'skymatch': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'The '
'flag '
'used '
'to '
'indicate '
'the '
'status '
'of '
'a '
'calibration '
'step.\n',
'enum': ['INCOMPLETE',
'N/A',
'COMPLETE',
'FAILED',
'SKIPPED'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/cal_step_flag-1.2.0',
'title': 'Calibration '
'Step '
'Flag',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(15)',
'destination': ['ScienceRefData.s_skymatch']},
'description': 'Step '
'in '
'ROMANCAL '
'that '
'computes '
'sky '
'background '
'values '
'of '
'each '
'input '
'image\n'
'and '
'derives '
'scalings '
'to '
'equalize '
'overlapping '
'regions.\n',
'title': 'Sky '
'Matching '
'for '
'Combining '
'Overlapping '
'Images '
'Step'},
'source_catalog': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'The '
'flag '
'used '
'to '
'indicate '
'the '
'status '
'of '
'a '
'calibration '
'step.\n',
'enum': ['INCOMPLETE',
'N/A',
'COMPLETE',
'FAILED',
'SKIPPED'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/cal_step_flag-1.2.0',
'title': 'Calibration '
'Step '
'Flag',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(15)',
'destination': ['ScienceRefData.s_source_catalog']},
'description': 'Step '
'in '
'romancal '
'that '
'detects '
'point '
'sources '
'in '
'an\n'
'image '
'for '
'use '
'in '
'astrometric '
'alignment.\n',
'title': 'Source '
'Catalog '
'Step'},
'tweakreg': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'The '
'flag '
'used '
'to '
'indicate '
'the '
'status '
'of '
'a '
'calibration '
'step.\n',
'enum': ['INCOMPLETE',
'N/A',
'COMPLETE',
'FAILED',
'SKIPPED'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/cal_step_flag-1.2.0',
'title': 'Calibration '
'Step '
'Flag',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(15)',
'destination': ['ScienceRefData.s_tweakreg']},
'description': 'Step '
'in '
'romancal '
'that '
'compares '
'the '
'positions '
'of '
'point\n'
'sources '
'in '
'the '
'image '
'with '
'coordinates '
'from '
'an '
'astrometric\n'
'catalog '
'and, '
'if '
'necessary, '
'corrects '
'the '
'World '
'Coordinate '
'System\n'
'(WCS) '
'alignment.\n',
'title': 'Tweakreg '
'step'},
'wfi18_transient': {'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'description': 'The '
'flag '
'used '
'to '
'indicate '
'the '
'status '
'of '
'a '
'calibration '
'step.\n',
'enum': ['INCOMPLETE',
'N/A',
'COMPLETE',
'FAILED',
'SKIPPED'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/cal_step_flag-1.2.0',
'title': 'Calibration '
'Step '
'Flag',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(15)',
'destination': ['ScienceRefData.s_wfi18_transient']},
'description': 'Step '
'in '
'romancal '
'that '
'fits '
'and '
'removes '
'a '
'transient '
'anomaly '
'in\n'
'the '
'first '
'read '
'of '
'a '
'WFI18 '
'exposure.\n',
'title': 'WFI18 '
'Transient '
'Anomaly '
'Correction '
'Step'}},
'required': ['assign_wcs',
'dark',
'dark_decay',
'dq_init',
'flat_field',
'flux',
'linearity',
'outlier_detection',
'photom',
'source_catalog',
'ramp_fit',
'refpix',
'saturation',
'skymatch',
'tweakreg',
'wfi18_transient'],
'title': 'Level '
'2 '
'Calibration '
'Status',
'type': 'object'},
'outlier_detection': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/outlier_detection-1.1.0',
'properties': {'good_bits': {'description': 'Bit '
'mask '
'parameter '
'sent '
'to '
'resample.\n',
'title': 'Bit '
'Mask',
'type': 'string'}},
'required': ['good_bits'],
'title': 'Outlier '
'Detection '
'Information',
'type': 'object'},
'photometry': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/photometry-1.1.0',
'properties': {'conversion_megajanskys': {'anyOf': [{'type': 'number'},
{'type': 'null'}],
'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.conversion_megajanskys',
'SourceCatalog.conversion_megajanskys']},
'description': 'The '
'flux '
'density '
'(in '
'units '
'of '
'megaJanskys '
'per\n'
'steradian; '
'MJy/sr) '
'that '
'produces '
'an '
'instrumental '
'count '
'rate '
'of '
'1\n'
'data '
'number '
'(DN) '
'per '
'second. '
'A '
'unit '
'change '
'to '
'microJanskys '
'per\n'
'square '
'arcsecond '
'(uJy/arcsec^2) '
'can '
'be '
'made '
'by '
'multiplying '
'this\n'
'value '
'by '
'the '
'ratio '
'(1 '
'x '
'10^12 '
'MJy/uJy) '
'/ '
'(4.254517 '
'x '
'10^10\n'
'arcsec^2/sr) '
'= '
'23.50443054.\n',
'title': 'Zeropoint '
'Flux '
'(MJy/sr)',
'unit': 'MJy.sr**-1'},
'conversion_megajanskys_uncertainty': {'anyOf': [{'type': 'number'},
{'type': 'null'}],
'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.conversion_megajanskys_uncertainty',
'SourceCatalog.conversion_megajanskys_uncertainty']},
'description': 'The '
'uncertainty '
'in '
'the '
'flux '
'density '
'(in '
'units '
'of\n'
'megaJanskys '
'per '
'steradian; '
'MJy/sr) '
'that '
'produces '
'an '
'instrumental\n'
'count '
'rate '
'of '
'1 '
'data '
'number '
'(DN) '
'per '
'second. '
'A '
'unit '
'change '
'to\n'
'microJanskys '
'per '
'square '
'arcsecond '
'(uJy/arcsec^2) '
'can '
'be '
'made '
'by\n'
'multiplying '
'this '
'value '
'by '
'the '
'ratio '
'(1 '
'x '
'10^12 '
'MJy/uJy) '
'/\n'
'(4.254517 '
'x '
'10^10 '
'arcsec^2/sr) '
'= '
'23.50443.\n',
'title': 'Zeropoint '
'Flux '
'Uncertainty '
'(MJy/sr)',
'unit': 'MJy.sr**-1'},
'pixel_area': {'anyOf': [{'type': 'number'},
{'type': 'null'}],
'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.pixel_area',
'SourceCatalog.pixel_area']
},
'description': 'The '
'average '
'pixel '
'area '
'in '
'units '
'of '
'steradians. '
'This\n'
'may '
'be '
'converted '
'to '
'units '
'of '
'square '
'arcseconds '
'by '
'multiplying\n'
'the '
'value '
'by '
'4.254517 '
'x '
'10^10 '
'square '
'arcseconds '
'per '
'steradian.\n',
'title': 'Nominal '
'Pixel '
'Area '
'(sr)',
'unit': 'uJy.arcsec**-2'}},
'required': ['conversion_megajanskys',
'conversion_megajanskys_uncertainty',
'pixel_area'],
'title': 'Photometry '
'Information',
'type': 'object'},
'source_catalog': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/source_catalog-1.1.0',
'properties': {'tweakreg_catalog_name': {'description': 'Source '
'catalog '
'generated '
'by '
'the '
'source '
'catalog '
'step '
'for '
'TweakReg.\n',
'title': 'TweakReg '
'Catalog '
'Name',
'type': 'string'}},
'title': 'Source '
'Detection '
'Catalog',
'type': 'object'},
'statistics': {'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'id': 'asdf://stsci.edu/datamodels/roman/schemas/meta/statistics-1.1.0',
'properties': {'good_pixel_fraction': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.good_pixel_fraction']},
'description': 'The '
'fraction '
'of '
'pixels '
'on '
'the '
'science '
'portion '
'of\n'
'the '
'detector '
'for '
'which '
'the '
'data '
'quality '
'bits '
'are '
'do '
'not\n'
'include '
'a '
'value '
'corresponding '
'to '
'"DO_NOT_USE".\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Fraction '
'of '
'Good '
'Pixels',
'type': 'number'},
'image_median': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.image_median']},
'description': 'Median '
'image '
'value '
'in '
'units '
'of '
'data '
'numbers '
'per\n'
'second '
'(DN/s).\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Median '
'Image '
'Value '
'(DN/s)',
'type': 'number'},
'image_rms': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.image_rms']},
'description': 'Mean '
'absolute '
'deviation '
'of '
'the '
'image '
'values '
'in\n'
'units '
'of '
'data '
'numbers '
'per '
'second '
'(DN/s).\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Image '
'Mean '
'Absolute '
'Deviation '
'(DN/s)',
'type': 'number'},
'zodiacal_light': {'archive_catalog': {'datatype': 'float',
'destination': ['WFIExposure.zodiacal_light']},
'description': 'A '
'model '
'estimate '
'of '
'the '
'Zodiacal '
'light\n'
'contribution '
'to '
'the '
'sky '
'background '
'in '
'units '
'of '
'MegaJanskys\n'
'per '
'steradian '
'(MJy/sr).\n',
'sdf': {'source': {'origin': 'TBD'},
'special_processing': 'VALUE_REQUIRED'},
'title': 'Estimated '
'Zodiacal '
'Light '
'Surface '
'Brightness '
'(MJy/sr)',
'type': 'number'}},
'required': ['zodiacal_light',
'image_median',
'image_rms',
'good_pixel_fraction'],
'title': 'Basic '
'Statistical '
'Information',
'type': 'object'},
'wcs': {'anyOf': [{'tag': 'tag:stsci.edu:gwcs/wcs-*'},
{'type': 'null'}],
'title': 'WCS '
'object'}},
'required': ['photometry', 'wcs'],
'type': 'object'}]},
'var_flat': {'datatype': 'float16',
'description': 'Component of the per pixel '
'variance due to the flat\n'
'field in units of data numbers '
'squared per second squared\n'
'(DN^2/s^2) or megaJanskys squared '
'per square steradian\n'
'(MJy^2/sr^2).\n',
'exact_datatype': True,
'ndim': 2,
'tag': 'tag:stsci.edu:asdf/core/ndarray-1.*',
'title': 'Flat Field Variance (DN^2/s^2) or '
'(MJy^2/sr^2)',
'unit': ['DN2 / s2', 'MJy**2.sr**-2']},
'var_poisson': {'datatype': 'float16',
'description': 'Component of the per pixel '
'variance due to Poisson\n'
'noise in units of data numbers '
'squared per second squared\n'
'(DN^2/s^2) or megaJanskys '
'squared per square steradian\n'
'(MJy^2/sr^2).\n',
'exact_datatype': True,
'ndim': 2,
'tag': 'tag:stsci.edu:asdf/core/ndarray-1.*',
'title': 'Poisson Variance (DN^2/s^2) or '
'(MJy^2/sr^2)',
'unit': ['DN2 / s2', 'MJy**2.sr**-2']},
'var_rnoise': {'datatype': 'float16',
'description': 'Component of the per pixel '
'variance due to detector\n'
'read noise in units of data '
'numbers squared per second '
'squared\n'
'(DN^2/s^2) or megaJanskys '
'squared per square steradian\n'
'(MJy^2/sr^2).\n',
'exact_datatype': True,
'ndim': 2,
'tag': 'tag:stsci.edu:asdf/core/ndarray-1.*',
'title': 'Read Noise Variance (DN^2/s^2) or '
'(MJy^2/sr^2)',
'unit': ['DN2 / s2', 'MJy**2.sr**-2']}},
'propertyOrder': ['meta',
'data',
'dq',
'err',
'var_poisson',
'var_rnoise',
'var_flat',
'chisq',
'dumo',
'amp33',
'border_ref_pix_left',
'border_ref_pix_right',
'border_ref_pix_top',
'border_ref_pix_bottom',
'dq_border_ref_pix_left',
'dq_border_ref_pix_right',
'dq_border_ref_pix_top',
'dq_border_ref_pix_bottom'],
'required': ['meta',
'data',
'dq',
'err',
'var_poisson',
'chisq',
'dumo',
'amp33',
'border_ref_pix_left',
'border_ref_pix_right',
'border_ref_pix_top',
'border_ref_pix_bottom',
'dq_border_ref_pix_left',
'dq_border_ref_pix_right',
'dq_border_ref_pix_top',
'dq_border_ref_pix_bottom'],
'title': 'Level 2 (L2) Calibrated Roman Wide Field Instrument (WFI) Rate '
'Image.',
'type': 'object'}
We can also use this to get the description of a specific metadata field using the full model schema with the internal function _get_properties and the following helper function:
def get_field_schema(model, field_path: str):
"""field_path like 'meta.instrument.detector'"""
_, full_schema = rdm.get_latest_schema(model.schema_uri)
current = full_schema
for key in field_path.split('.'):
# Walk through allOf / properties
found = False
for name, subschema in _get_properties(current):
if name == key:
current = subschema
found = True
break
if not found:
# Fallback direct access
if "properties" in current and key in current["properties"]:
current = current["properties"][key]
else:
raise KeyError(f"Could not find '{key}' in path '{field_path}'")
return current
detector_info = get_field_schema(f, "meta.instrument.detector")
print(detector_info.get("description"))
pprint.pprint(detector_info) # shows type, title, archive mapping, etc.
Name of the Wide Field Instrument (WFI) detector used
to take the science data in this file.
{'allOf': [{'$schema': 'asdf://stsci.edu/datamodels/roman/schemas/rad_schema-1.1.0',
'enum': ['WFI01',
'WFI02',
'WFI03',
'WFI04',
'WFI05',
'WFI06',
'WFI07',
'WFI08',
'WFI09',
'WFI10',
'WFI11',
'WFI12',
'WFI13',
'WFI14',
'WFI15',
'WFI16',
'WFI17',
'WFI18'],
'id': 'asdf://stsci.edu/datamodels/roman/schemas/enums/wfi_detector-1.1.0',
'title': 'WFI Detector Name',
'type': 'string'}],
'archive_catalog': {'datatype': 'nvarchar(10)',
'destination': ['WFIExposure.detector',
'GuideWindow.detector']},
'description': 'Name of the Wide Field Instrument (WFI) detector used\n'
'to take the science data in this file.\n',
'sdf': {'source': {'origin': 'TBD'}, 'special_processing': 'VALUE_REQUIRED'},
'title': 'Wide Field Instrument (WFI) Detector Identifier'}
This can be alternatively written as:
print(f.schema_info(path='roman.meta.instrument.detector'))
{'description': Name of the Wide Field Instrument (WFI) detector used
to take the science data in this file.
}
Taking advantage of astropy.time.Time objects in the metadata#
Another feature in WFI ASDF metadata is the storage of times as astropy.time.Time objects, which provide numerous convenient methods for converting to different reference systems and formats. Here we illustrate a few examples. For a more comprehensive view of astropy.time please check the astropy.time documentation. Note that, unless otherwise noted, WFI times are stored in Coordinated Universal Time (UTC), which is indicated in the schema descriptions for any time-related fields. However, be sure to check the field descriptions if you are unsure.
start_time = meta.exposure.start_time
print('Start time of the exposure:', start_time, '; datatype:', type(start_time))
Start time of the exposure: 2026-10-31T00:00:00.000 ; datatype: <class 'astropy.time.core.Time'>
We can convert the format of this start time to a modified Julian date (MJD) very easily:
start_time.mjd
np.float64(61344.0)
If instead we want to convert the scale of the time (i.e., from UTC to International Atomic Time (TAI)), we can do that, too:
start_time.tai
<Time object: scale='tai' format='isot' value=2026-10-31T00:00:37.000>
Notice that the time changed by 37 seconds when we converted from UTC to TAI. This offset is expected and is part of the TAI definition. We can combine the scale change with the format change as well:
start_time.tai.mjd
np.float64(61344.00042824074)
We can use Time objects and operate with them. For example, if we want to know the difference in time between the start and end times of the exposure (this creates a astropy.time.TimeDelta object):
end_time = meta.exposure.end_time
exp_delta = end_time - start_time
And then express the exposure length in different units:
print('Exposure length in seconds:', exp_delta.to(u.s))
print('Exposure length in days:', exp_delta.to(u.day))
print('Exposure length in years:', exp_delta.to(u.year))
Exposure length in seconds: 66.41199999999384 s
Exposure length in days: 0.000768657407407336 d
Exposure length in years: 2.104469287905095e-06 yr
Accessing WCS Information#
Roman uses Generalized World Coordinate System standard (GWCS). The WCS can be found in the wcs key within the meta block.
gwcs = f.meta.wcs
print(type(gwcs))
<class 'gwcs.wcs._wcs.WCS'>
If we use the pretty-print (pprint()) function, we can see the full contents of the WCS object.
pprint.pprint(gwcs)
<WCS(output_frame=world, input_frame=detector, forward_transform=Model: CompoundModel
Inputs: ('x0', 'x1')
Outputs: ('lon', 'lat')
Model set size: 1
Expression: [0] & [1] | [2] & [3] | [4] | [5] & [6] | [7] | [8] & [9] | [10] & [11] | [12] | [13] & [14] | [15] | [16] | [17] / [18] | [19] | [20] | [21] | [22] & [23] | [24] | [25] | [26] & [27] | [28] & [29] | [30] | [31] | [32]
Components:
[0]: <Shift(offset=1.)>
[1]: <Shift(offset=1.)>
[2]: <Shift(offset=-2044.5)>
[3]: <Shift(offset=-2044.5)>
[4]: <Mapping((0, 1, 0, 1))>
[5]: <Polynomial2D(5, c0_0=0., c1_0=0.11034133, c2_0=-0.00000003, c3_0=-0., c4_0=0., c5_0=-0., c0_1=0.00034168, c0_2=-0.00000001, c0_3=-0., c0_4=-0., c0_5=0., c1_1=0.00000014, c1_2=-0., c1_3=0., c1_4=0., c2_1=0., c2_2=-0., c2_3=-0., c3_1=0., c3_2=-0., c4_1=-0.)>
[6]: <Polynomial2D(5, c0_0=0., c1_0=0.00031436, c2_0=0.00000007, c3_0=0., c4_0=0., c5_0=-0., c0_1=0.10828278, c0_2=0.00000021, c0_3=-0., c0_4=0., c0_5=0., c1_1=-0.00000002, c1_2=-0., c1_3=-0., c1_4=0., c2_1=-0., c2_2=-0., c2_3=0., c3_1=-0., c3_2=-0., c4_1=-0.)>
[7]: <Mapping((0, 1, 0, 1))>
[8]: <Polynomial2D(1, c0_0=0., c1_0=-0.5, c0_1=-0.8660254)>
[9]: <Polynomial2D(1, c0_0=0., c1_0=-0.8660254, c0_1=0.5)>
[10]: <Shift(offset=1312.94914525)>
[11]: <Shift(offset=-1040.78537268)>
[12]: <Identity(2)>
[13]: <Scale(factor=0.00027778, name='arcsec_to_deg_1D')>
[14]: <Scale(factor=0.00027778, name='arcsec_to_deg_1D')>
[15]: <SphericalToCartesian(name='s2c')>
[16]: <RotationSequence3D(angles=[ 0.3647081 , 0.28910705, 59.99991239], name='det_to_optic_axis')>
[17]: <Mapping((0, 1, 2), name='xyz')>
[18]: <Mapping((0, 0, 0), name='xxx')>
[19]: <Mapping((1, 2), name='xtyt')>
[20]: <AffineTransformation2D(matrix=[[ 1. , 0.0000021], [-0.0000021, 1. ]], translation=[ 0.00000001, -0. ], name='tp_affine')>
[21]: <Mapping((0, 0, 1), name='xtyt2xyz')>
[22]: <Const1D(amplitude=1., name='one')>
[23]: <Identity(2, name='I(2D)')>
[24]: <RotationSequence3D(angles=[-59.99991239, -0.28910705, -0.3647081 ], name='optic_axis_to_det')>
[25]: <CartesianToSpherical(name='c2s')>
[26]: <Scale(factor=3600., name='deg_to_arcsec_1D')>
[27]: <Scale(factor=3600., name='deg_to_arcsec_1D')>
[28]: <Scale(factor=0.00027778)>
[29]: <Scale(factor=0.00027778)>
[30]: <SphericalToCartesian()>
[31]: <RotationSequence3D(angles=[ 0.3647081 , 0.28910705, 59.99991239, -0.1643995 , -270.87197664])>
[32]: <CartesianToSpherical()>
Parameters:
offset_0 offset_1 ... angles_31
-------- -------- ... ----------------------------------------
1.0 1.0 ... 0.3647080959023555 .. -270.8719766359773)>
If instead we use the print() function, we get a summary of the transforms available:
print(gwcs)
From Transform
---------- ----------------------------------------
detector CompoundModel
v2v3 Identity
v2v3vacorr JWST tangent-plane linear correction. v1
v2v3corr v23tosky
world None
The gwcs object can be used to convert between image pixel and sky coordinates.
Important note: the gwcs object uses Python 0-indexing, therefore the center of the first pixel in Python is (0, 0), while the formal definition of the WFI science coordinate system uses FITS-style 1-indexing (i.e., the center of the bottom-left pixel is (1, 1)). More information about the Roman coordinate systems can be found in the PySIAF for Roman article on RDox. All archived L1-4 data products (e.g., WCS transforms, catalogs, etc.) will use the Python 0-indexed system.
In this example, let’s convert the central pixel position of the detector to the corresponding right ascension and declination on the sky. The center of the L2 image array in the zero-indexed science coordinate frame is (x, y) = (2043.5, 2043.5) pixels. Note that the 4-pixel reference border was removed during processing, and thus the total L2 image size is 4088 rows x 4088 columns. Since the center of the first pixel in Python is (0, 0) and the array size is even, the center of the detector is (x, y) = (2043.5, 2043.5). Also note that GWCS assumes inputs in the order (x, y) and not the Pythonic form (y, x).
print(gwcs(2043.5, 2043.5))
(270.871977427777, -0.16439952070018055)
Likewise, we can convert from celestial coordinates to pixel coordinates using the inverse transform via the .world_to_oixel() method. For example, using a slightly different position still within this detector, we use an astropy.coordinates.SkyCoord object:
cdt = SkyCoord(270.8719, -0.164399, unit='deg')
print(gwcs.world_to_pixel(cdt))
(2046.0261304969035, 2043.509986517615)
Reading Roman data using the ASDF library#
We now illustrate how to read Roman WFI data using the basic asdf library.
The main avenue to read a generic ASDF file is via the open method in the asdf package. This returns an AsdfObject object.
asdf_dir_uri = "s3://stpubdata/roman/nexus/soc_simulations/tutorial_data/roman-2026.1/"
fs = s3fs.S3FileSystem(anon=True)
asdf_file_uri_l2 = asdf_dir_uri + 'r0003201001001001004_0001_wfi01_f106_cal.asdf'
with fs.open(asdf_file_uri_l2, 'rb') as fb:
f = asdf.open(fb).copy()
Another useful method to explore the contents of an ASDF file is the .tree attribute:
pprint.pprint(f.tree) # This cell will print a lot of information, please feel free to skim or skip
{'asdf_library': {'author': 'The ASDF Developers',
'homepage': 'http://github.com/asdf-format/asdf',
'name': 'asdf',
'version': '5.3.0'},
'history': {'extensions': [{'extension_class': 'asdf.extension._manifest.ManifestExtension',
'extension_uri': 'asdf://asdf-format.org/core/extensions/core-1.6.0',
'manifest_software': {'name': 'asdf_standard',
'version': '1.5.0'},
'software': {'name': 'asdf', 'version': '5.3.0'}},
{'extension_class': 'asdf.extension._manifest.ManifestExtension',
'extension_uri': 'asdf://asdf-format.org/astronomy/gwcs/extensions/gwcs-1.4.0',
'manifest_software': {'name': 'asdf_wcs_schemas',
'version': '0.5.0'},
'software': {'name': 'gwcs', 'version': '1.0.3'}},
{'extension_class': 'asdf.extension._manifest.ManifestExtension',
'extension_uri': 'asdf://astropy.org/astropy/extensions/units-1.3.0',
'software': {'name': 'asdf-astropy',
'version': '0.11.0'}},
{'extension_class': 'asdf.extension._manifest.ManifestExtension',
'extension_uri': 'asdf://asdf-format.org/transform/extensions/transform-1.7.0',
'manifest_software': {'name': 'asdf_transform_schemas',
'version': '0.6.0'},
'software': {'name': 'asdf-astropy',
'version': '0.11.0'}},
{'extension_class': 'asdf.extension._manifest.ManifestExtension',
'extension_uri': 'asdf://stsci.edu/datamodels/roman/extensions/static-1.1.0',
'manifest_software': {'name': 'rad',
'version': '0.30.0'},
'software': {'name': 'roman_datamodels',
'version': '0.30.1'}},
{'extension_class': 'asdf.extension._manifest.ManifestExtension',
'extension_uri': 'asdf://asdf-format.org/astronomy/extensions/astronomy-1.2.0',
'manifest_software': {'name': 'asdf_standard',
'version': '1.5.0'},
'software': {'name': 'asdf-astropy',
'version': '0.11.0'}},
{'extension_class': 'asdf.extension._manifest.ManifestExtension',
'extension_uri': 'asdf://asdf-format.org/astronomy/coordinates/extensions/coordinates-1.0.0',
'manifest_software': {'name': 'asdf_coordinates_schemas',
'version': '0.5.1'},
'software': {'name': 'asdf-astropy',
'version': '0.11.0'}}]},
'roman': {'meta': {'cal_logs': ["2026-05-06T21:52:27.912Z :: stpipe.step :: INFO :: Step ExposurePipeline running with args ('r0003201001001001004_0001_wfi01_f106_uncal.asdf',).", "2026-05-06T21:52:27.925Z :: stpipe.step :: INFO :: Step ExposurePipeline parameters are:\n pre_hooks: []\n post_hooks: []\n output_file: None\n output_dir: None\n output_ext: .asdf\n output_use_model: False\n output_use_index: True\n save_results: True\n skip: False\n suffix: cal\n search_output_file: True\n input_dir: ''\n update_version: False\n steps:\n dq_init:\n pre_hooks: []\n post_hooks: []\n output_file: None\n output_dir: None\n output_ext: .asdf\n output_use_model: False\n output_use_index: True\n save_results: False\n skip: False\n suffix: None\n search_output_file: True\n input_dir: ''\n update_version: False\n saturation:\n pre_hooks: []\n post_hooks: []\n output_file: None\n output_dir: None\n output_ext: .asdf\n output_use_model: False\n output_use_index: True\n save_results: False\n skip: False\n suffix: None\n search_output_file: True\n input_dir: ''\n update_version: False\n refpix:\n pre_hooks: []\n post_hooks: []\n output_file: None\n output_dir: None\n output_ext: .asdf\n output_use_model: False\n output_use_index: True\n save_results: False\n skip: False\n suffix: None\n search_output_file: True\n input_dir: ''\n update_version: False\n remove_offset: True\n remove_trends: True\n cosine_interpolate: True\n fft_interpolate: True\n dark_decay:\n pre_hooks: []\n post_hooks: []\n output_file: None\n output_dir: None\n output_ext: .asdf\n output_use_model: False\n output_use_index: True\n save_results: False\n skip: False\n suffix: None\n search_output_file: True\n input_dir: ''\n update_version: False\n wfi18_transient:\n pre_hooks: []\n post_hooks: []\n output_file: None\n output_dir: None\n output_ext: .asdf\n output_use_model: False\n output_use_index: True\n save_results: False\n skip: False\n suffix: None\n search_output_file: True\n input_dir: ''\n update_version: False\n mask_rows: False\n linearity:\n pre_hooks: []\n post_hooks: []\n output_file: None\n output_dir: None\n output_ext: .asdf\n output_use_model: False\n output_use_index: True\n save_results: False\n skip: False\n suffix: None\n search_output_file: True\n input_dir: ''\n update_version: False\n dark_current:\n pre_hooks: []\n post_hooks: []\n output_file: None\n output_dir: None\n output_ext: .asdf\n output_use_model: False\n output_use_index: True\n save_results: False\n skip: False\n suffix: None\n search_output_file: True\n input_dir: ''\n update_version: False\n dark_output: None\n rampfit:\n pre_hooks: []\n post_hooks: []\n output_file: None\n output_dir: None\n output_ext: .asdf\n output_use_model: False\n output_use_index: True\n save_results: False\n skip: False\n suffix: rampfit\n search_output_file: True\n input_dir: ''\n update_version: False\n algorithm: likely\n use_ramp_jump_detection: True\n threshold_intercept: None\n threshold_constant: None\n include_var_rnoise: False\n maximum_cores: '1'\n expand_large_events: False\n min_sat_area: 1.0\n min_jump_area: 6.0\n expand_factor: 1.9\n sat_required_snowball: True\n min_sat_radius_extend: 0.5\n sat_expand: 2\n edge_size: 0\n assign_wcs:\n pre_hooks: []\n post_hooks: []\n output_file: None\n output_dir: None\n output_ext: .asdf\n output_use_model: False\n output_use_index: True\n save_results: False\n skip: False\n suffix: None\n search_output_file: True\n input_dir: ''\n update_version: False\n flatfield:\n pre_hooks: []\n post_hooks: []\n output_file: None\n output_dir: None\n output_ext: .asdf\n output_use_model: False\n output_use_index: True\n save_results: False\n skip: False\n suffix: None\n search_output_file: True\n input_dir: ''\n update_version: False\n include_var_flat: False\n photom:\n pre_hooks: []\n post_hooks: []\n output_file: None\n output_dir: None\n output_ext: .asdf\n output_use_model: False\n output_use_index: True\n save_results: False\n skip: False\n suffix: None\n search_output_file: True\n input_dir: ''\n update_version: False\n source_catalog:\n pre_hooks: []\n post_hooks: []\n output_file: None\n output_dir: None\n output_ext: .asdf\n output_use_model: False\n output_use_index: True\n save_results: False\n skip: False\n suffix: cat\n search_output_file: True\n input_dir: ''\n update_version: False\n bkg_boxsize: 1000\n kernel_fwhm: 2.0\n snr_threshold: 3.0\n npixels: 25\n deblend: False\n fit_psf: True\n forced_segmentation: ''\n tweakreg:\n pre_hooks: []\n post_hooks: []\n output_file: None\n output_dir: None\n output_ext: .asdf\n output_use_model: True\n output_use_index: True\n save_results: False\n skip: False\n suffix: None\n search_output_file: True\n input_dir: ''\n update_version: False\n use_custom_catalogs: False\n catalog_format: ascii.ecsv\n catfile: ''\n catalog_path: ''\n enforce_user_order: False\n expand_refcat: False\n minobj: 15\n searchrad: 2.0\n use2dhist: True\n separation: 1.0\n tolerance: 0.7\n fitgeometry: rshift\n nclip: 3\n sigma: 3.0\n abs_refcat: GAIADR3_S3\n save_abs_catalog: False\n abs_minobj: 15\n abs_searchrad: 6.0\n abs_use2dhist: True\n abs_separation: 1.0\n abs_tolerance: 0.7\n abs_fitgeometry: rshift\n abs_nclip: 3\n abs_sigma: 3.0\n update_source_catalog_coordinates: False\n vo_timeout: 1200.0", "2026-05-06T21:52:28.031Z :: stpipe.pipeline :: INFO :: Prefetching reference files for dataset: 'r0003201001001001004_0001_wfi01_f106_uncal.asdf' reftypes = ['apcorr', 'dark', 'darkdecaysignal', 'distortion', 'flat', 'gain', 'integralnonlinearity', 'inverselinearity', 'linearity', 'mask', 'photom', 'readnoise', 'refpix', 'saturation']", "2026-05-06T21:52:28.045Z :: stpipe.pipeline :: INFO :: Prefetch for APCORR reference file is '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_apcorr_0002.asdf'.", "2026-05-06T21:52:28.046Z :: stpipe.pipeline :: INFO :: Prefetch for DARK reference file is '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_dark_0364.asdf'.", "2026-05-06T21:52:28.046Z :: stpipe.pipeline :: INFO :: Prefetch for DARKDECAYSIGNAL reference file is '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_darkdecaysignal_0001.asdf'.", "2026-05-06T21:52:28.046Z :: stpipe.pipeline :: INFO :: Prefetch for DISTORTION reference file is '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_distortion_0014.asdf'.", "2026-05-06T21:52:28.047Z :: stpipe.pipeline :: INFO :: Prefetch for FLAT reference file is '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_flat_0175.asdf'.", "2026-05-06T21:52:28.047Z :: stpipe.pipeline :: INFO :: Prefetch for GAIN reference file is '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_gain_0022.asdf'.", "2026-05-06T21:52:28.048Z :: stpipe.pipeline :: INFO :: Prefetch for INTEGRALNONLINEARITY reference file is '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_integralnonlinearity_0003.asdf'.", "2026-05-06T21:52:28.048Z :: stpipe.pipeline :: INFO :: Prefetch for INVERSELINEARITY reference file is '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_inverselinearity_0042.asdf'.", "2026-05-06T21:52:28.049Z :: stpipe.pipeline :: INFO :: Prefetch for LINEARITY reference file is '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_linearity_0039.asdf'.", "2026-05-06T21:52:28.049Z :: stpipe.pipeline :: INFO :: Prefetch for MASK reference file is '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_mask_0030.asdf'.", "2026-05-06T21:52:28.050Z :: stpipe.pipeline :: INFO :: Prefetch for PHOTOM reference file is '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_photom_0040.asdf'.", "2026-05-06T21:52:28.050Z :: stpipe.pipeline :: INFO :: Prefetch for READNOISE reference file is '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_readnoise_0024.asdf'.", "2026-05-06T21:52:28.051Z :: stpipe.pipeline :: INFO :: Prefetch for REFPIX reference file is '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_refpix_0013.asdf'.", "2026-05-06T21:52:28.051Z :: stpipe.pipeline :: INFO :: Prefetch for SATURATION reference file is '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_saturation_0031.asdf'.", '2026-05-06T21:52:28.052Z :: romancal.pipeline.exposure_pipeline :: INFO :: Starting Roman exposure calibration pipeline ...', '2026-05-06T21:52:28.395Z :: stpipe.step :: INFO :: Step dq_init running with args (<roman_datamodels.datamodels._datamodels.ScienceRawModel object at 0x7ffbaa4acd10>,).', '2026-05-06T21:52:31.317Z :: romancal.dq_init.dq_init_step :: INFO :: Flagging rows from: -999999 to -999983 as affected by guide window read', '2026-05-06T21:52:31.638Z :: stpipe.step :: INFO :: Step dq_init done', '2026-05-06T21:52:32.002Z :: stpipe.step :: INFO :: Step saturation running with args (<roman_datamodels.datamodels._datamodels.RampModel object at 0x7ffbaa7551c0>,).', '2026-05-06T21:52:32.006Z :: romancal.saturation.saturation_step :: INFO :: Using SATURATION reference file: /home/desjard/crds_cache/references/roman/wfi/roman_wfi_saturation_0031.asdf', '2026-05-06T21:52:34.602Z :: stcal.saturation.saturation :: INFO :: Detected 77254 saturated pixels', '2026-05-06T21:52:34.676Z :: stcal.saturation.saturation :: INFO :: Detected 65549 A/D floor pixels', '2026-05-06T21:52:34.715Z :: stpipe.step :: INFO :: Step saturation done', '2026-05-06T21:52:35.119Z :: stpipe.step :: INFO :: Step refpix running with args (<roman_datamodels.datamodels._datamodels.RampModel object at 0x7ffbaa7551c0>,).', '2026-05-06T21:52:35.119Z :: romancal.refpix.refpix_step :: DEBUG :: Opening the science data: <roman_datamodels.datamodels._datamodels.RampModel object at 0x7ffbaa7551c0>', '2026-05-06T21:52:35.122Z :: romancal.refpix.refpix_step :: DEBUG :: Opening the reference file: /home/desjard/crds_cache/references/roman/wfi/roman_wfi_refpix_0013.asdf', '2026-05-06T21:52:35.157Z :: romancal.refpix.refpix_step :: DEBUG :: Running the reference pixel correction', '2026-05-06T21:52:35.157Z :: romancal.refpix.refpix :: DEBUG :: Reading data from datamodel into single array', '2026-05-06T21:52:35.422Z :: romancal.refpix.refpix :: DEBUG :: Removed the general offset from data, to be re-applied later.', '2026-05-06T21:52:35.881Z :: romancal.refpix.refpix :: DEBUG :: Removed boundary trends (in time) from data.', '2026-05-06T21:52:35.901Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/romancal/refpix/data.py:398: RuntimeWarning: invalid value encountered in divide\n kern = (cov / mask_conv).reshape(rows, columns)\n', '2026-05-06T21:52:36.014Z :: romancal.refpix.refpix :: DEBUG :: Cosine interpolated the reference pixels.', '2026-05-06T21:52:36.441Z :: romancal.refpix.refpix :: DEBUG :: FFT interpolated the reference pixel pads.', '2026-05-06T21:52:40.482Z :: romancal.refpix.refpix :: DEBUG :: Applied reference pixel correction', '2026-05-06T21:52:40.525Z :: romancal.refpix.refpix :: DEBUG :: Re-applied the general offset (if removed) to the data.', '2026-05-06T21:52:40.536Z :: romancal.refpix.refpix :: DEBUG :: Updated the datamodel with the corrected data.', '2026-05-06T21:52:40.543Z :: stpipe.step :: INFO :: Step refpix done', '2026-05-06T21:52:40.885Z :: stpipe.step :: INFO :: Step dark_decay running with args (<roman_datamodels.datamodels._datamodels.RampModel object at 0x7ffbaa7551c0>,).', '2026-05-06T21:52:40.888Z :: romancal.dark_decay.dark_decay_step :: INFO :: Using DARKDECAYSIGNAL reference file: /home/desjard/crds_cache/references/roman/wfi/roman_wfi_darkdecaysignal_0001.asdf', '2026-05-06T21:52:45.428Z :: stpipe.step :: INFO :: Step dark_decay done', '2026-05-06T21:52:45.767Z :: stpipe.step :: INFO :: Step wfi18_transient running with args (<roman_datamodels.datamodels._datamodels.RampModel object at 0x7ffbaa7551c0>,).', '2026-05-06T21:52:45.769Z :: stpipe.step :: INFO :: Step wfi18_transient done', '2026-05-06T21:52:46.054Z :: stpipe.step :: INFO :: Step linearity running with args (<roman_datamodels.datamodels._datamodels.RampModel object at 0x7ffbaa7551c0>,).', '2026-05-06T21:52:46.066Z :: romancal.linearity.linearity_step :: INFO :: Using LINEARITY reference file: /home/desjard/crds_cache/references/roman/wfi/roman_wfi_linearity_0039.asdf', '2026-05-06T21:52:46.066Z :: romancal.linearity.linearity_step :: INFO :: Using INVERSELINEARITY reference file: /home/desjard/crds_cache/references/roman/wfi/roman_wfi_inverselinearity_0042.asdf', '2026-05-06T21:52:46.066Z :: romancal.linearity.linearity_step :: INFO :: Using INTEGRALNONLINEARITY reference file: /home/desjard/crds_cache/references/roman/wfi/roman_wfi_integralnonlinearity_0003.asdf', '2026-05-06T21:52:55.052Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/stcal/linearity/linearity.py:528: RuntimeWarning: overflow encountered in cast\n data[i] = np.where(resultant_saturated, data[i], corrected_resultant)\n', '2026-05-06T21:53:40.358Z :: romancal.linearity.linearity_step :: WARNING :: Flagged 281 spurious values outside remotely plausible range.', '2026-05-06T21:53:40.373Z :: stpipe.step :: INFO :: Step linearity done', '2026-05-06T21:53:40.667Z :: stpipe.step :: INFO :: Step rampfit running with args (<roman_datamodels.datamodels._datamodels.RampModel object at 0x7ffbaa7551c0>,).', '2026-05-06T21:53:40.678Z :: romancal.ramp_fitting.ramp_fit_step :: INFO :: Using READNOISE reference file: /home/desjard/crds_cache/references/roman/wfi/roman_wfi_readnoise_0024.asdf', '2026-05-06T21:53:40.706Z :: romancal.ramp_fitting.ramp_fit_step :: INFO :: Using GAIN reference file: /home/desjard/crds_cache/references/roman/wfi/roman_wfi_gain_0022.asdf', '2026-05-06T21:53:40.731Z :: romancal.ramp_fitting.ramp_fit_step :: INFO :: Number of resultants: 5 ', '2026-05-06T21:55:30.712Z :: romancal.ramp_fitting.ramp_fit_step :: INFO :: Number of resultants: 5 ', '2026-05-06T21:55:31.087Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/romancal/ramp_fitting/ramp_fit_step.py:366: RuntimeWarning: overflow encountered in cast\n im.dumo = (slopes_alt[4:-4, 4:-4] - im.data).astype("float16")\n', '2026-05-06T21:55:31.097Z :: stpipe.step :: INFO :: Step rampfit done', '2026-05-06T21:55:31.410Z :: stpipe.step :: INFO :: Step dark_current running with args (<roman_datamodels.datamodels._datamodels.ImageModel object at 0x7ffba9443dd0>,).', '2026-05-06T21:55:31.417Z :: romancal.dark_current.dark_current_step :: INFO :: Using DARK reference file: /home/desjard/crds_cache/references/roman/wfi/roman_wfi_dark_0364.asdf', '2026-05-06T21:55:31.958Z :: stpipe.step :: INFO :: Step dark_current done', '2026-05-06T21:55:32.275Z :: stpipe.step :: INFO :: Step assign_wcs running with args (<roman_datamodels.datamodels._datamodels.ImageModel object at 0x7ffba9443dd0>,).', '2026-05-06T21:55:32.276Z :: romancal.assign_wcs.assign_wcs_step :: INFO :: reftype, distortion', "2026-05-06T21:55:32.280Z :: romancal.assign_wcs.assign_wcs_step :: INFO :: Using reference files: {'distortion': '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_distortion_0014.asdf'} for assign_wcs", '2026-05-06T21:55:32.383Z :: stcal.alignment.util :: INFO :: Update S_REGION to POLYGON ICRS 270.934685029 -0.225734417 270.934627258 -0.102770948 270.809037196 -0.102466475 270.809759493 -0.225325334', '2026-05-06T21:55:32.383Z :: romancal.assign_wcs.utils :: INFO :: S_REGION VALUES: POLYGON ICRS 270.934685029 -0.225734417 270.934627258 -0.102770948 270.809037196 -0.102466475 270.809759493 -0.225325334', '2026-05-06T21:55:32.383Z :: romancal.assign_wcs.utils :: INFO :: Update S_REGION to POLYGON ICRS 270.934685029 -0.225734417 270.934627258 -0.102770948 270.809037196 -0.102466475 270.809759493 -0.225325334', '2026-05-06T21:55:32.385Z :: stpipe.step :: INFO :: Step assign_wcs done', '2026-05-06T21:55:32.700Z :: stpipe.step :: INFO :: Step flatfield running with args (<roman_datamodels.datamodels._datamodels.ImageModel object at 0x7ffba9443dd0>,).', '2026-05-06T21:55:34.024Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/romancal/flatfield/flat_field.py:121: RuntimeWarning: overflow encountered in divide\n science.var_poisson /= flat_data_squared\n', '2026-05-06T21:55:34.125Z :: stpipe.step :: INFO :: Step flatfield done', '2026-05-06T21:55:34.449Z :: stpipe.step :: INFO :: Step photom running with args (<roman_datamodels.datamodels._datamodels.ImageModel object at 0x7ffba9443dd0>,).', '2026-05-06T21:55:34.489Z :: romancal.photom.photom :: DEBUG :: pixel_area = 2.8083389953727505e-13', '2026-05-06T21:55:34.489Z :: romancal.photom.photom :: INFO :: photmjsr value: 0.741749', '2026-05-06T21:55:34.490Z :: romancal.photom.photom :: INFO :: uncertainty value: 0.0288573', '2026-05-06T21:55:34.491Z :: stpipe.step :: INFO :: Step photom done', '2026-05-06T21:55:34.793Z :: stpipe.step :: INFO :: Step source_catalog running with args (<roman_datamodels.datamodels._datamodels.ImageModel object at 0x7ffba9443dd0>,).', '2026-05-06T21:55:34.799Z :: romancal.source_catalog.source_catalog_step :: INFO :: Using ePSF reference file: /home/desjard/crds_cache/references/roman/wfi/roman_wfi_epsf_0247.asdf', '2026-05-06T21:55:38.280Z :: romancal.source_catalog.psf :: INFO :: Performed jitter convolution. Image kernel: (8, 8, 0) Reference kernel: (0, 0, 0)', '2026-05-06T21:55:38.513Z :: romancal.source_catalog.source_catalog_step :: INFO :: Calculating and subtracting background', '2026-05-06T21:55:42.760Z :: romancal.source_catalog.source_catalog_step :: INFO :: Creating detection image', '2026-05-06T21:55:43.852Z :: romancal.source_catalog.source_catalog_step :: INFO :: Detecting sources', "2026-05-06T21:55:46.408Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/romancal/source_catalog/detection.py:90: AstropyDeprecationWarning: The 'nlabels' attribute was deprecated in version 3.0; use 'n_labels' instead. It will be removed in version 4.0.\n nsources = segment_img.nlabels\n", '2026-05-06T21:55:46.408Z :: romancal.source_catalog.detection :: INFO :: Detected 1568 sources', '2026-05-06T21:55:46.409Z :: romancal.source_catalog.source_catalog_step :: INFO :: Creating ee_fractions model', '2026-05-06T21:55:46.450Z :: romancal.source_catalog.source_catalog_step :: INFO :: Creating source catalog', '2026-05-06T21:55:46.549Z :: romancal.source_catalog.source_catalog :: INFO :: Calculating segment properties', "2026-05-06T21:55:46.577Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/astropy/utils/decorators.py:620: AstropyDeprecationWarning: 'apermask_method' was deprecated in version 3.0 and will be removed in version 4.0. Use argument 'aperture_mask_method' instead.\n return function(*args, **kwargs)\n", "2026-05-06T21:55:46.577Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/astropy/utils/decorators.py:620: AstropyDeprecationWarning: 'detection_cat' was deprecated in version 3.0 and will be removed in version 4.0. Use argument 'detection_catalog' instead.\n return function(*args, **kwargs)\n", "2026-05-06T21:55:46.580Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/romancal/source_catalog/segment.py:224: AstropyDeprecationWarning: The 'xcentroid' attribute was deprecated in version 3.0; use 'x_centroid' instead. It will be removed in version 4.0.\n value = getattr(segm_cat, name)\n", "2026-05-06T21:55:46.629Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/romancal/source_catalog/segment.py:224: AstropyDeprecationWarning: The 'ycentroid' attribute was deprecated in version 3.0; use 'y_centroid' instead. It will be removed in version 4.0.\n value = getattr(segm_cat, name)\n", "2026-05-06T21:55:46.629Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/romancal/source_catalog/segment.py:224: AstropyDeprecationWarning: The 'xcentroid_win' attribute was deprecated in version 3.0; use 'x_centroid_win' instead. It will be removed in version 4.0.\n value = getattr(segm_cat, name)\n", "2026-05-06T21:55:47.562Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/romancal/source_catalog/segment.py:224: AstropyDeprecationWarning: The 'ycentroid_win' attribute was deprecated in version 3.0; use 'y_centroid_win' instead. It will be removed in version 4.0.\n value = getattr(segm_cat, name)\n", "2026-05-06T21:55:47.594Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/romancal/source_catalog/segment.py:224: AstropyDeprecationWarning: The 'semimajor_sigma' attribute was deprecated in version 3.0; use 'semimajor_axis' instead. It will be removed in version 4.0.\n value = getattr(segm_cat, name)\n", "2026-05-06T21:55:47.595Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/romancal/source_catalog/segment.py:224: AstropyDeprecationWarning: The 'semiminor_sigma' attribute was deprecated in version 3.0; use 'semiminor_axis' instead. It will be removed in version 4.0.\n value = getattr(segm_cat, name)\n", "2026-05-06T21:55:47.595Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/romancal/source_catalog/segment.py:224: AstropyDeprecationWarning: The 'cxx' attribute was deprecated in version 3.0; use 'ellipse_cxx' instead. It will be removed in version 4.0.\n value = getattr(segm_cat, name)\n", "2026-05-06T21:55:47.595Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/romancal/source_catalog/segment.py:224: AstropyDeprecationWarning: The 'cxy' attribute was deprecated in version 3.0; use 'ellipse_cxy' instead. It will be removed in version 4.0.\n value = getattr(segm_cat, name)\n", "2026-05-06T21:55:47.596Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/romancal/source_catalog/segment.py:224: AstropyDeprecationWarning: The 'cyy' attribute was deprecated in version 3.0; use 'ellipse_cyy' instead. It will be removed in version 4.0.\n value = getattr(segm_cat, name)\n", "2026-05-06T21:55:47.597Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/romancal/source_catalog/segment.py:224: AstropyDeprecationWarning: The 'segment_fluxerr' attribute was deprecated in version 3.0; use 'segment_flux_err' instead. It will be removed in version 4.0.\n value = getattr(segm_cat, name)\n", "2026-05-06T21:55:47.617Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/romancal/source_catalog/segment.py:224: AstropyDeprecationWarning: The 'kron_fluxerr' attribute was deprecated in version 3.0; use 'kron_flux_err' instead. It will be removed in version 4.0.\n value = getattr(segm_cat, name)\n", "2026-05-06T21:55:47.617Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/romancal/source_catalog/segment.py:283: AstropyDeprecationWarning: The 'nlabels' attribute was deprecated in version 3.0; use 'n_labels' instead. It will be removed in version 4.0.\n pix_value = np.zeros(self.source_cat.nlabels, dtype=np.float32) * u.pix\n", "2026-05-06T21:55:47.617Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/romancal/source_catalog/segment.py:295: AstropyDeprecationWarning: The 'nlabels' attribute was deprecated in version 3.0; use 'n_labels' instead. It will be removed in version 4.0.\n sky_value = np.zeros(self.source_cat.nlabels, dtype=np.float32) * u.arcsec\n", "2026-05-06T21:55:47.618Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/romancal/source_catalog/segment.py:336: AstropyDeprecationWarning: The 'fluxfrac_radius' attribute was deprecated in version 3.0; use 'flux_radius' instead. It will be removed in version 4.0.\n value = self.source_cat.fluxfrac_radius(0.5)\n", '2026-05-06T21:55:47.619Z :: romancal.source_catalog.source_catalog :: INFO :: Calculating aperture photometry', '2026-05-06T21:55:48.982Z :: romancal.source_catalog.source_catalog :: INFO :: Calculating DAOFind properties', '2026-05-06T21:55:49.214Z :: romancal.source_catalog.source_catalog :: INFO :: Calculating nearest neighbor properties', '2026-05-06T21:55:49.216Z :: romancal.source_catalog.source_catalog :: INFO :: Calculating PSF photometry', "2026-05-06T21:55:49.244Z :: py.warnings :: WARNING :: /home/desjard/conda/envs/nexus-data/lib/python3.13/site-packages/romancal/source_catalog/psf.py:698: AstropyDeprecationWarning: 'localbkg_estimator' was deprecated in version 3.0 and will be removed in version 4.0. Use argument 'local_bkg_estimator' instead.\n photometry = photometry_cls(\n", '2026-05-06T21:56:06.594Z :: stpipe.step :: INFO :: Saved model in r0003201001001001004_0001_wfi01_f106_segm.asdf', '2026-05-06T21:56:07.828Z :: stpipe.step :: INFO :: Saved model in r0003201001001001004_0001_wfi01_f106_cat.parquet', '2026-05-06T21:56:07.944Z :: stpipe.step :: INFO :: Step source_catalog done', '2026-05-06T21:56:08.300Z :: stpipe.step :: INFO :: Step tweakreg running with args (<romancal.datamodels.library.ModelLibrary object at 0x7ffbab6e4440>,).', '2026-05-06T21:56:08.301Z :: romancal.tweakreg.tweakreg_step :: INFO :: Number of image groups to be aligned: 1.', '2026-05-06T21:56:08.301Z :: romancal.tweakreg.tweakreg_step :: INFO :: Image groups:', '2026-05-06T21:56:08.301Z :: romancal.tweakreg.tweakreg_step :: INFO :: ?', '2026-05-06T21:56:08.301Z :: romancal.tweakreg.tweakreg_step :: INFO :: All source catalogs will be saved to: /grp/roman/desjardins/simulations/nexus_data/2026.1', '2026-05-06T21:56:08.372Z :: romancal.tweakreg.tweakreg_step :: INFO :: Using 1567 sources from r0003201001001001004_0001_wfi01_f106_uncal.asdf.', '2026-05-06T21:56:59.053Z :: tweakwcs.imalign :: INFO :: ', '2026-05-06T21:56:59.053Z :: tweakwcs.imalign :: INFO :: ***** tweakwcs.imalign.align_wcs() started on 2026-05-06 21:56:59.053117', '2026-05-06T21:56:59.053Z :: tweakwcs.imalign :: INFO :: Version 0.8.12', '2026-05-06T21:56:59.053Z :: tweakwcs.imalign :: INFO :: ', "2026-05-06T21:56:59.210Z :: tweakwcs.imalign :: INFO :: Aligning image catalog 'GROUP ID: 987654' to the reference catalog.", "2026-05-06T21:56:59.257Z :: tweakwcs.matchutils :: INFO :: Matching sources from 'r0003201001001001004_0001_wfi01_f106_uncal' catalog with sources from the reference 'GAIADR3_S3' catalog.", '2026-05-06T21:56:59.257Z :: tweakwcs.matchutils :: INFO :: Computing initial guess for X and Y shifts...', '2026-05-06T21:56:59.265Z :: tweakwcs.matchutils :: INFO :: Found initial X and Y shifts of 0.01183, 0.0119 (arcsec) with significance of 1455 and 1518 matches.', "2026-05-06T21:56:59.266Z :: tweakwcs.wcsimage :: INFO :: Found 1526 matches for 'GROUP ID: 987654'...", "2026-05-06T21:56:59.267Z :: tweakwcs.linearfit :: INFO :: Performing 'rshift' fit", "2026-05-06T21:56:59.272Z :: tweakwcs.wcsimage :: INFO :: Computed 'rshift' fit for GROUP ID: 987654:", '2026-05-06T21:56:59.272Z :: tweakwcs.wcsimage :: INFO :: XSH: 0.00285047 YSH: -7.55744e-05 ROT: 0.0001202 SCALE: 1', '2026-05-06T21:56:59.272Z :: tweakwcs.wcsimage :: INFO :: ', '2026-05-06T21:56:59.272Z :: tweakwcs.wcsimage :: INFO :: FIT RMSE: 0.00413531 FIT MAE: 0.00371117', '2026-05-06T21:56:59.272Z :: tweakwcs.wcsimage :: INFO :: Final solution based on 1508 objects.', '2026-05-06T21:56:59.308Z :: tweakwcs.imalign :: INFO :: ', '2026-05-06T21:56:59.308Z :: tweakwcs.imalign :: INFO :: ***** tweakwcs.imalign.align_wcs() ended on 2026-05-06 21:56:59.308272', '2026-05-06T21:56:59.308Z :: tweakwcs.imalign :: INFO :: ***** tweakwcs.imalign.align_wcs() TOTAL RUN TIME: 0:00:00.255155', '2026-05-06T21:56:59.308Z :: tweakwcs.imalign :: INFO :: ', '2026-05-06T21:56:59.314Z :: stcal.alignment.util :: INFO :: Update S_REGION to POLYGON ICRS 270.934685692 -0.225734570 270.934628179 -0.102771100 270.809038117 -0.102466364 270.809760157 -0.225325225', '2026-05-06T21:56:59.314Z :: romancal.assign_wcs.utils :: INFO :: S_REGION VALUES: POLYGON ICRS 270.934685692 -0.225734570 270.934628179 -0.102771100 270.809038117 -0.102466364 270.809760157 -0.225325225', '2026-05-06T21:56:59.314Z :: romancal.assign_wcs.utils :: INFO :: Update S_REGION to POLYGON ICRS 270.934685692 -0.225734570 270.934628179 -0.102771100 270.809038117 -0.102466364 270.809760157 -0.225325225', '2026-05-06T21:56:59.366Z :: stpipe.step :: INFO :: Step tweakreg done', '2026-05-06T21:56:59.366Z :: romancal.pipeline.exposure_pipeline :: INFO :: Roman exposure calibration pipeline ending...', '2026-05-06T21:56:59.554Z :: stpipe.step :: INFO :: Saved model in r0003201001001001004_0001_wfi01_f106_wcs.asdf'], 'cal_step': {'assign_wcs': 'COMPLETE', 'dark': 'COMPLETE', 'dark_decay': 'COMPLETE', 'dq_init': 'COMPLETE', 'flat_field': 'COMPLETE', 'flux': 'INCOMPLETE', 'linearity': 'COMPLETE', 'outlier_detection': 'INCOMPLETE', 'photom': 'COMPLETE', 'ramp_fit': 'COMPLETE', 'refpix': 'COMPLETE', 'saturation': 'COMPLETE', 'skymatch': 'INCOMPLETE', 'source_catalog': 'COMPLETE', 'tweakreg': 'COMPLETE', 'wfi18_transient': 'N/A'}, 'calibration_software_name': 'RomanCAL', 'calibration_software_version': '0.22.0', 'coordinates': {'reference_frame': 'ICRS'}, 'ephemeris': {'ephemeris_reference_frame': '?', 'spatial_x': 118149303.92300647, 'spatial_y': 81710865.93471536, 'spatial_z': 35433691.335827544, 'time': 61344.0, 'type': 'DEFINITIVE', 'velocity_x': -18.474060504144187, 'velocity_y': 21.671509956074864, 'velocity_z': 9.394886442040915}, 'exposure': {'data_problem': '?', 'effective_exposure_time': 66.41188, 'end_time': <Time object: scale='utc' format='isot' value=2026-10-31T00:01:06.412>, 'engineering_quality': 'OK', 'exposure_time': 66.41188, 'frame_time': 3.16247, 'ma_table_id': 'SCI1002', 'ma_table_name': '?', 'ma_table_number': 1002, 'mid_time': <Time object: scale='utc' format='isot' value=2026-10-31T00:00:33.206>, 'nresultants': 5, 'read_pattern': [[1], [2, 3], [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], [17, 18, 19, 20], [21]], 'start_time': <Time object: scale='utc' format='isot' value=2026-10-31T00:00:00.000>, 'truncated': False, 'type': 'WFI_IMAGE'}, 'file_date': <Time object: scale='utc' format='datetime' value=2026-05-06 21:56:59.555000>, 'filename': 'r0003201001001001004_0001_wfi01_f106_cal.asdf', 'guide_star': {'epoch': '?', 'guide_mode': 'WIM-ACQ', 'guide_star_id': '?', 'guide_window_id': '?', 'window_xstart': -999999, 'window_xstop': -999983, 'window_ystart': -999999, 'window_ystop': -999983}, 'instrument': {'detector': 'WFI01', 'name': 'WFI', 'optical_element': 'F106'}, 'model_type': 'ImageModel', 'observation': {'execution_plan': -999999, 'exposure': -999999, 'observation': -999999, 'observation_id': '?', 'pass': -999999, 'program': -999999, 'segment': -999999, 'visit': -999999, 'visit_file_activity': '?', 'visit_file_group': -999999, 'visit_file_sequence': -999999, 'visit_id': '?', 'wfi_parallel': False}, 'origin': 'STSCI/SOC', 'photometry': {'conversion_megajanskys': 0.7417487930165987, 'conversion_megajanskys_uncertainty': 0.028857321159254122, 'pixel_area': 2.8083389953727505e-13}, 'pointing': {'dec_v1': 0.2959999999347126, 'pa_aperture': 0.0, 'pa_v3': 59.99907035922454, 'pointing_engineering_source': 'CALCULATED', 'ra_v1': 270.93999195229344, 'target_aperture': 'WFI_CEN', 'target_dec': -0.2, 'target_ra': 270.94}, 'prd_version': '?', 'product_type': 'l2', 'program': {'category': '?', 'investigator_name': '?', 'science_category': '?', 'subcategory': 'CAL', 'title': '?'}, 'rcs': {'active': False, 'bank': '1', 'counts': -999999, 'electronics': 'A', 'led': '1'}, 'ref_file': {'apcorr': 'crds://roman_wfi_apcorr_0002.asdf', 'area': '?', 'crds': {'context': 'roman_0048.pmap', 'version': '13.1.16'}, 'dark': 'crds://roman_wfi_dark_0364.asdf', 'darkdecaysignal': 'crds://roman_wfi_darkdecaysignal_0001.asdf', 'distortion': 'crds://roman_wfi_distortion_0014.asdf', 'epsf': 'crds://roman_wfi_epsf_0247.asdf', 'flat': 'crds://roman_wfi_flat_0175.asdf', 'gain': 'crds://roman_wfi_gain_0022.asdf', 'integralnonlinearity': 'crds://roman_wfi_integralnonlinearity_0003.asdf', 'inverselinearity': 'crds://roman_wfi_inverselinearity_0042.asdf', 'linearity': 'crds://roman_wfi_linearity_0039.asdf', 'mask': 'crds://roman_wfi_mask_0030.asdf', 'photom': 'crds://roman_wfi_photom_0040.asdf', 'readnoise': 'crds://roman_wfi_readnoise_0024.asdf', 'refpix': 'crds://roman_wfi_refpix_0013.asdf', 'saturation': 'crds://roman_wfi_saturation_0031.asdf'}, 'sdf_software_version': '?', 'source_catalog': {'tweakreg_catalog_name': 'r0003201001001001004_0001_wfi01_f106_cat.parquet'}, 'telescope': 'ROMAN', 'velocity_aberration': {'dec_reference': -0.16439949970729792, 'ra_reference': 270.8719766359773, 'scale_factor': 1.0}, 'visit': {'dither': {'executed_pattern': [], 'primary_name': '?', 'subpixel_name': '?'}, 'internal_target': False, 'nexposures': -999999, 'start_time': <Time object: scale='utc' format='isot' value=2020-01-01T00:00:00.000>, 'status': 'SUCCESSFUL', 'type': 'GENERAL_ENGINEERING'}, 'wcs': <WCS(output_frame=world, input_frame=detector, forward_transform=Model: CompoundModel
Inputs: ('x0', 'x1')
Outputs: ('lon', 'lat')
Model set size: 1
Expression: [0] & [1] | [2] & [3] | [4] | [5] & [6] | [7] | [8] & [9] | [10] & [11] | [12] | [13] & [14] | [15] | [16] | [17] / [18] | [19] | [20] | [21] | [22] & [23] | [24] | [25] | [26] & [27] | [28] & [29] | [30] | [31] | [32]
Components:
[0]: <Shift(offset=1.)>
[1]: <Shift(offset=1.)>
[2]: <Shift(offset=-2044.5)>
[3]: <Shift(offset=-2044.5)>
[4]: <Mapping((0, 1, 0, 1))>
[5]: <Polynomial2D(5, c0_0=0., c1_0=0.11034133, c2_0=-0.00000003, c3_0=-0., c4_0=0., c5_0=-0., c0_1=0.00034168, c0_2=-0.00000001, c0_3=-0., c0_4=-0., c0_5=0., c1_1=0.00000014, c1_2=-0., c1_3=0., c1_4=0., c2_1=0., c2_2=-0., c2_3=-0., c3_1=0., c3_2=-0., c4_1=-0.)>
[6]: <Polynomial2D(5, c0_0=0., c1_0=0.00031436, c2_0=0.00000007, c3_0=0., c4_0=0., c5_0=-0., c0_1=0.10828278, c0_2=0.00000021, c0_3=-0., c0_4=0., c0_5=0., c1_1=-0.00000002, c1_2=-0., c1_3=-0., c1_4=0., c2_1=-0., c2_2=-0., c2_3=0., c3_1=-0., c3_2=-0., c4_1=-0.)>
[7]: <Mapping((0, 1, 0, 1))>
[8]: <Polynomial2D(1, c0_0=0., c1_0=-0.5, c0_1=-0.8660254)>
[9]: <Polynomial2D(1, c0_0=0., c1_0=-0.8660254, c0_1=0.5)>
[10]: <Shift(offset=1312.94914525)>
[11]: <Shift(offset=-1040.78537268)>
[12]: <Identity(2)>
[13]: <Scale(factor=0.00027778, name='arcsec_to_deg_1D')>
[14]: <Scale(factor=0.00027778, name='arcsec_to_deg_1D')>
[15]: <SphericalToCartesian(name='s2c')>
[16]: <RotationSequence3D(angles=[ 0.3647081 , 0.28910705, 59.99991239], name='det_to_optic_axis')>
[17]: <Mapping((0, 1, 2), name='xyz')>
[18]: <Mapping((0, 0, 0), name='xxx')>
[19]: <Mapping((1, 2), name='xtyt')>
[20]: <AffineTransformation2D(matrix=[[ 1. , 0.0000021], [-0.0000021, 1. ]], translation=[ 0.00000001, -0. ], name='tp_affine')>
[21]: <Mapping((0, 0, 1), name='xtyt2xyz')>
[22]: <Const1D(amplitude=1., name='one')>
[23]: <Identity(2, name='I(2D)')>
[24]: <RotationSequence3D(angles=[-59.99991239, -0.28910705, -0.3647081 ], name='optic_axis_to_det')>
[25]: <CartesianToSpherical(name='c2s')>
[26]: <Scale(factor=3600., name='deg_to_arcsec_1D')>
[27]: <Scale(factor=3600., name='deg_to_arcsec_1D')>
[28]: <Scale(factor=0.00027778)>
[29]: <Scale(factor=0.00027778)>
[30]: <SphericalToCartesian()>
[31]: <RotationSequence3D(angles=[ 0.3647081 , 0.28910705, 59.99991239, -0.1643995 , -270.87197664])>
[32]: <CartesianToSpherical()>
Parameters:
offset_0 offset_1 ... angles_31
-------- -------- ... ----------------------------------------
1.0 1.0 ... 0.3647080959023555 .. -270.8719766359773)>, 'wcs_fit_results': {'<rot>': 0.00012019952457584268, '<scale>': 1.0, 'center': [-6.467035209022709, 1.4033779264755357], 'fitgeom': 'rshift', 'mae': 0.0037111707140181213, 'matrix': [[0.9999999999977994, 2.0978774631787565e-06], [-2.0978774631787565e-06, 0.9999999999977994]], 'nmatches': 1526, 'proper': True, 'proper_rot': 0.00012019952457584268, 'rmse': 0.004135311152943168, 'rot': [0.00012019952457584268, 0.00012019952457584268], 'scale': [1.0, 1.0], 'shift': [0.00285046696385584, -7.557437743280373e-05], 'skew': 0.0, 'status': 'SUCCESS'}, 'wcsinfo': {'aperture_name': 'WFI01_FULL', 'dec_ref': -0.16439949970729792, 'ra_ref': 270.8719766359773, 'roll_ref': 59.99991238605931, 's_region': 'POLYGON ICRS 270.934685692 -0.225734570 270.934628179 -0.102771100 270.809038117 -0.102466364 270.809760157 -0.225325225', 'v2_ref': 1312.9491452484797, 'v3_ref': -1040.7853726755036, 'v3yangle': -60.0, 'vparity': -1}}, 'data': array([[0.7640249 , 0.60022277, 0.6292157 , ..., 0.6333321 , 0.78077906,
0.683359 ],
[0.7132413 , 0.7057124 , 0.5549527 , ..., 0.46070436, 0.53757745,
0.7798829 ],
[0.8656813 , 0.8182988 , 0.7961919 , ..., 0.591041 , 0.61737144,
0.63100576],
...,
[0.6188125 , 0.6242062 , 0.6278663 , ..., nan, 0.60871345,
nan],
[0.6139096 , 0.7041409 , 0.60126567, ..., nan, 0.69799125,
nan],
[0.650904 , 0.7182305 , 0.6422941 , ..., nan, nan,
nan]], shape=(4088, 4088), dtype=float32), 'dq': array([[ 0, 0, 0, ..., 0, 0, 0],
[ 0, 0, 0, ..., 0, 0, 0],
[ 0, 0, 0, ..., 0, 0, 0],
...,
[ 0, 0, 0, ..., 34612227, 0, 34612227],
[ 0, 0, 0, ..., 34612227, 0, 34612227],
[ 0, 0, 0, ..., 34612227, 34604035, 34612227]],
shape=(4088, 4088), dtype=uint32), 'err': array([[0.10004, 0.0895 , 0.08466, ..., 0.088 , 0.0991 , 0.0851 ],
[0.0916 , 0.0904 , 0.083 , ..., 0.0833 , 0.0911 , 0.09717],
[0.1007 , 0.1003 , 0.09784, ..., 0.08716, 0.09235, 0.0885 ],
...,
[0.0835 , 0.09595, 0.08295, ..., nan, 0.08777, nan],
[0.08484, 0.0876 , 0.0848 , ..., nan, 0.0934 , nan],
[0.0846 , 0.0922 , 0.0859 , ..., nan, nan, nan]],
shape=(4088, 4088), dtype=float16), 'var_poisson': array([[0.006016, 0.004997, 0.005028, ..., 0.005383, 0.00652 , 0.00531 ],
[0.00572 , 0.005806, 0.004597, ..., 0.004036, 0.00471 , 0.00638 ],
[0.007065, 0.00713 , 0.006336, ..., 0.00496 , 0.005344, 0.00489 ],
...,
[0.00481 , 0.005287, 0.004814, ..., nan, 0.004963, nan],
[0.005127, 0.005505, 0.004726, ..., nan, 0.0055 , nan],
[0.0052 , 0.005688, 0.005314, ..., nan, nan, nan]],
shape=(4088, 4088), dtype=float16), 'chisq': array([[ 5.59 , 8.51 , 3.719 , ..., 4.605 , 1.066 , 3.922 ],
[ 5.707 , 0.3079, 1.71 , ..., 0.3245, 2.895 , 2.982 ],
[ 2.428 , 3.953 , 3.48 , ..., 2. , 0.7437, 6.19 ],
...,
[ 8.14 , 9.09 , 5.9 , ..., nan, 2.04 , nan],
[12.336 , 5.594 , 1.335 , ..., nan, 2.117 , nan],
[ 0.964 , 14.61 , 0.6494, ..., nan, nan, nan]],
shape=(4088, 4088), dtype=float16), 'dumo': array([[-0.003256 , -0.001682 , -0.001621 , ..., 0.006104 , -0.005917 ,
0.01236 ],
[-0.004883 , -0.004086 , 0.001255 , ..., -0.002594 , -0.00612 ,
-0.01185 ],
[-0.0092 , -0.0034 , 0.002165 , ..., 0.0071 , 0.002731 ,
0.005177 ],
...,
[ 0.00793 , 0.007675 , 0.003098 , ..., nan, 0.0004144,
nan],
[ 0.002028 , -0.01279 , 0.005665 , ..., nan, 0.0007157,
nan],
[ 0.006207 , -0.013176 , -0.002731 , ..., nan, nan,
nan]], shape=(4088, 4088), dtype=float16), 'amp33': array([[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]]], shape=(5, 4096, 128), dtype=uint16), 'border_ref_pix_left': array([[[-0.14066608, -0.14066604, -0.14066601, -0.14066598],
[-0.1406705 , -0.14067046, -0.14067042, -0.14067039],
[-0.1406749 , -0.14067487, -0.14067484, -0.1406748 ],
...,
[-0.15994826, -0.15994821, -0.15994819, -0.15994814],
[-0.15995328, -0.15995324, -0.15995319, -0.15995316],
[-0.1599583 , -0.15995826, -0.15995821, -0.15995818]],
[[-0.11623566, -0.11623564, -0.11623561, -0.11623558],
[-0.11623931, -0.11623928, -0.11623925, -0.11623923],
[-0.11624296, -0.11624293, -0.1162429 , -0.11624287],
...,
[-0.13216898, -0.13216895, -0.13216892, -0.13216887],
[-0.13217312, -0.13217309, -0.13217306, -0.13217303],
[-0.13217728, -0.13217723, -0.1321772 , -0.13217717]],
[[-0.04952508, -0.04952507, -0.04952506, -0.04952504],
[-0.04952663, -0.04952662, -0.04952661, -0.0495266 ],
[-0.04952819, -0.04952817, -0.04952816, -0.04952815],
...,
[-0.05631386, -0.05631385, -0.05631384, -0.05631382],
[-0.05631563, -0.05631562, -0.0563156 , -0.05631559],
[-0.0563174 , -0.05631738, -0.05631737, -0.05631736]],
[[-0.01498379, -0.01498379, -0.01498379, -0.01498378],
[-0.01498426, -0.01498426, -0.01498426, -0.01498425],
[-0.01498474, -0.01498473, -0.01498473, -0.01498472],
...,
[-0.01703774, -0.01703773, -0.01703773, -0.01703773],
[-0.01703827, -0.01703827, -0.01703827, -0.01703826],
[-0.01703881, -0.0170388 , -0.0170388 , -0.0170388 ]],
[[-0.01075397, -0.01075397, -0.01075397, -0.01075396],
[-0.01075431, -0.0107543 , -0.0107543 , -0.0107543 ],
[-0.01075464, -0.01075464, -0.01075464, -0.01075464],
...,
[-0.0122281 , -0.0122281 , -0.01222809, -0.01222809],
[-0.01222848, -0.01222848, -0.01222848, -0.01222847],
[-0.01222887, -0.01222886, -0.01222886, -0.01222886]]],
shape=(5, 4096, 4), dtype=float32), 'border_ref_pix_right': array([[[-0.14066598, -0.14066601, -0.14066604, -0.14066608],
[-0.14067039, -0.14067042, -0.14067046, -0.1406705 ],
[-0.1406748 , -0.14067484, -0.14067487, -0.1406749 ],
...,
[-0.15994814, -0.15994819, -0.15994821, -0.15994826],
[-0.15995316, -0.15995319, -0.15995324, -0.15995328],
[-0.15995818, -0.15995821, -0.15995826, -0.1599583 ]],
[[-0.11623558, -0.11623561, -0.11623564, -0.11623566],
[-0.11623923, -0.11623925, -0.11623928, -0.11623931],
[-0.11624287, -0.1162429 , -0.11624293, -0.11624296],
...,
[-0.13216887, -0.13216892, -0.13216895, -0.13216898],
[-0.13217303, -0.13217306, -0.13217309, -0.13217312],
[-0.13217717, -0.1321772 , -0.13217723, -0.13217728]],
[[-0.04952504, -0.04952506, -0.04952507, -0.04952508],
[-0.0495266 , -0.04952661, -0.04952662, -0.04952663],
[-0.04952815, -0.04952816, -0.04952817, -0.04952819],
...,
[-0.05631382, -0.05631384, -0.05631385, -0.05631386],
[-0.05631559, -0.0563156 , -0.05631562, -0.05631563],
[-0.05631736, -0.05631737, -0.05631738, -0.0563174 ]],
[[-0.01498378, -0.01498379, -0.01498379, -0.01498379],
[-0.01498425, -0.01498426, -0.01498426, -0.01498426],
[-0.01498472, -0.01498473, -0.01498473, -0.01498474],
...,
[-0.01703773, -0.01703773, -0.01703773, -0.01703774],
[-0.01703826, -0.01703827, -0.01703827, -0.01703827],
[-0.0170388 , -0.0170388 , -0.0170388 , -0.01703881]],
[[-0.01075396, -0.01075397, -0.01075397, -0.01075397],
[-0.0107543 , -0.0107543 , -0.0107543 , -0.01075431],
[-0.01075464, -0.01075464, -0.01075464, -0.01075464],
...,
[-0.01222809, -0.01222809, -0.0122281 , -0.0122281 ],
[-0.01222847, -0.01222848, -0.01222848, -0.01222848],
[-0.01222886, -0.01222886, -0.01222886, -0.01222887]]],
shape=(5, 4096, 4), dtype=float32), 'border_ref_pix_top': array([[[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]],
[[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]],
[[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]],
[[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]],
[[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]]], shape=(5, 4, 4096), dtype=float32), 'border_ref_pix_bottom': array([[[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]],
[[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]],
[[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]],
[[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]],
[[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]]], shape=(5, 4, 4096), dtype=float32), 'dq_border_ref_pix_left': array([[2147483648, 2147483648, 2147483648, 2147483648],
[2147483648, 2147483648, 2147483648, 2147483648],
[2147483648, 2147483648, 2147483648, 2147483648],
...,
[2147483648, 2147483648, 2147483648, 2147483648],
[2147483648, 2147483648, 2147483648, 2147483648],
[2147483648, 2147483648, 2147483648, 2147483648]],
shape=(4096, 4), dtype=uint32), 'dq_border_ref_pix_right': array([[2147483648, 2147483648, 2147483648, 2147483648],
[2147483648, 2147483648, 2147483648, 2147483648],
[2147483648, 2147483648, 2147483648, 2147483648],
...,
[2147483648, 2147483648, 2147483648, 2147483648],
[2147483648, 2147483648, 2147483648, 2147483648],
[2147483648, 2147483648, 2147483648, 2147483648]],
shape=(4096, 4), dtype=uint32), 'dq_border_ref_pix_top': array([[2147483648, 2147483648, 2147483648, ..., 2147483648, 2147483648,
2147483648],
[2147483648, 2147483648, 2147483648, ..., 2147483648, 2147483648,
2147483648],
[2147483648, 2147483648, 2147483648, ..., 2147483648, 2147483648,
2147483648],
[2147483648, 2147483648, 2147483648, ..., 2147483648, 2147483648,
2147483648]], shape=(4, 4096), dtype=uint32), 'dq_border_ref_pix_bottom': array([[2147483648, 2147483648, 2147483648, ..., 2147483648, 2147483648,
2147483648],
[2147483648, 2147483648, 2147483648, ..., 2147483648, 2147483648,
2147483648],
[2147483648, 2147483648, 2147483648, ..., 2147483648, 2147483648,
2147483648],
[2147483648, 2147483648, 2147483648, ..., 2147483648, 2147483648,
2147483648]], shape=(4, 4096), dtype=uint32)}}
For WFI ASDF files, the three high-level blocks are:
asdf_library: It contains information about theasdflibrary used to create the file.history: It contains metadata information about the extensions used to create the file.roman: This block contains Roman data and metadata.
Within the roman block, the data block contains the data, which corresponds to an uncalibrated ramp in L1 products, a calibrated rate image in L2 products, and a mosaic image in L3 products.
Other interesting data blocks are:
meta: metadata informationerr: estimated uncertaintiesdq: data quality flags
For more information about these data blocks and Level 2 data products, please visit the RDox pages on data levels and products.
We further showcase the usage of the asdf basic library below using a L1 file.
asdf_file_uri_l1 = asdf_dir_uri + 'r0003201001001001004_0001_wfi01_f106_uncal.asdf'
with fs.open(asdf_file_uri_l1, 'rb') as fb:
g = asdf.open(fb).copy()
g.info()
root (AsdfObject)
├─asdf_library (Software)
│ ├─author (str): The ASDF Developers
│ ├─homepage (str): http://github.com/asdf-format/asdf
│ ├─name (str): asdf
│ └─version (str): 5.3.0
├─history (dict)
│ └─extensions (list)
│ ├─[0] (ExtensionMetadata) ...
│ ├─[1] (ExtensionMetadata) ...
│ ├─[2] (ExtensionMetadata) ...
│ ├─[3] (ExtensionMetadata) ...
│ └─3 not shown
├─roman (WfiScienceRaw) # Level 1 (L1) Uncalibrated Roman Wide Field
Instrument (WFI) Ramp Cube
│ ├─meta (dict) ...
│ ├─data (ndarray) # Science Data (DN) ...
│ └─amp33 (ndarray) # Amplifier 33 Reference Pixel Data (DN) ...
└─romanisim (dict)
├─dq (ndarray) ...
├─persistence (dict) ...
├─simcatobj (ndarray) ...
├─simulate_reffiles (dict) ...
└─wcs (WCS)
Some nodes not shown.
Loading the data follows exactly the same procedure as above. When working with L1 data, notice that the data block is now a cube of size (N, 4096, 4096), where N is the number of resultants up-the-ramp. A resultant is either a single read or the arithmetic mean of multiple reads of the WFI detectors. The L1 data array also contains the 4-pixel reference pixel border that is trimmed during processing from L1 to L2. As previously mentioned, the L1 data array is in units of DN.
Let’s plot the value of a single pixel up-the-ramp:
plt.figure(figsize=(6, 6), layout='tight')
plt.title('Up-the-ramp samples for pixel 1000, 1000')
plt.plot(g['roman']['data'][:, 1000, 1000])
plt.xlabel('Resultant number', fontsize=16)
plt.ylabel('Pixel value [DN]', fontsize=16);
The L1 data array contains all the uncalibrated resultants that, after processing, yield the L2 rate images.
The ASDF tree shows another section of the file called romanisim that contains information about the simulation that created the L1 file. This section is not part of the datamodel definition in roman_datamodels, therefore it cannot be accessed with the dot notation. Instead, we can access it, and any other additional information not stored by the datamodel definition, using the ASDF tree and bracket notation:
g.tree['romanisim']
{'dq': array([[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]]], shape=(5, 4096, 4096), dtype=int32),
'persistence': {'A': 0.017,
'alpha': 0.045,
'dx': 50000.0,
'gamma': 1,
'index': array([ 2114, 2342, 2823, ..., 16706652, 16706653, 16710741],
shape=(23144,)),
't': array([61344.00076866, 61344.00076866, 61344.00076866, ...,
61344.00076866, 61344.00076866, 61344.00076866], shape=(23144,)),
'x': array([2194.40527344, 5804.41992188, 4248.25878906, ..., 4913.34863281,
3327.57910156, 3979.66113281], shape=(23144,)),
'x0': 60000.0},
'simcatobj': array([(2901.6807, 2324.405 , 1.7952734e+05, 0.04482317),
(2626.056 , 2731.342 , 6.7375875e+05, 0.13040447),
(2106.1682, 3153.5361, 1.2634172e+06, 0.39377475), ...,
(2438.0867, 4075.7925, 0.0000000e+00, 0. ),
(2342.068 , 4021.2522, 0.0000000e+00, 0. ),
(2683.0425, 3935.0693, 0.0000000e+00, 0. )],
shape=(1645,), dtype=[('x', '<f4'), ('y', '<f4'), ('counts', '<f4'), ('time', '<f4')]),
'simulate_reffiles': {'dark': 0.01,
'darkdecaysignal': '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_darkdecaysignal_0001.asdf',
'distortion': '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_distortion_0014.asdf',
'flat': None,
'gain': 2,
'integralnonlinearity': '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_integralnonlinearity_0003.asdf',
'inverselinearity': '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_inverselinearity_0042.asdf',
'linearity': '/home/desjard/crds_cache/references/roman/wfi/roman_wfi_linearity_0039.asdf',
'readnoise': 5.0,
'saturation': 55000},
'wcs': <WCS(output_frame=world, input_frame=detector, forward_transform=Model: CompoundModel
Inputs: ('x0', 'x1')
Outputs: ('lon', 'lat')
Model set size: 1
Expression: [0] & [1] | [2] & [3] | [4] | [5] & [6] | [7] | [8] & [9] | [10] & [11] | [12] | [13] & [14] | [15] | [16] | [17]
Components:
[0]: <Shift(offset=1.)>
[1]: <Shift(offset=1.)>
[2]: <Shift(offset=-2044.5)>
[3]: <Shift(offset=-2044.5)>
[4]: <Mapping((0, 1, 0, 1))>
[5]: <Polynomial2D(5, c0_0=0., c1_0=0.11034133, c2_0=-0.00000003, c3_0=-0., c4_0=0., c5_0=-0., c0_1=0.00034168, c0_2=-0.00000001, c0_3=-0., c0_4=-0., c0_5=0., c1_1=0.00000014, c1_2=-0., c1_3=0., c1_4=0., c2_1=0., c2_2=-0., c2_3=-0., c3_1=0., c3_2=-0., c4_1=-0.)>
[6]: <Polynomial2D(5, c0_0=0., c1_0=0.00031436, c2_0=0.00000007, c3_0=0., c4_0=0., c5_0=-0., c0_1=0.10828278, c0_2=0.00000021, c0_3=-0., c0_4=0., c0_5=0., c1_1=-0.00000002, c1_2=-0., c1_3=-0., c1_4=0., c2_1=-0., c2_2=-0., c2_3=0., c3_1=-0., c3_2=-0., c4_1=-0.)>
[7]: <Mapping((0, 1, 0, 1))>
[8]: <Polynomial2D(1, c0_0=0., c1_0=-0.5, c0_1=-0.8660254)>
[9]: <Polynomial2D(1, c0_0=0., c1_0=-0.8660254, c0_1=0.5)>
[10]: <Shift(offset=1312.94914525)>
[11]: <Shift(offset=-1040.78537268)>
[12]: <Identity(2)>
[13]: <Scale(factor=0.00027778)>
[14]: <Scale(factor=0.00027778)>
[15]: <SphericalToCartesian()>
[16]: <RotationSequence3D(angles=[ 0.42955128, 0.24799768, 60. , -0.2 , -270.94 ])>
[17]: <CartesianToSpherical()>
Parameters:
offset_0 offset_1 ... factor_14 angles_16
-------- -------- ... --------------------- ------------------------------
1.0 1.0 ... 0.0002777777777777778 0.42955128282521254 .. -270.94)>}
Similarly, we can access the previously mentioned history section of the file using the ASDF tree and bracket notation to find some package version information that may be useful to us. This includes, for example, the roman_datamodels version used to create the file.
g.tree['history']
{'extensions': [{'extension_class': 'asdf.extension._manifest.ManifestExtension',
'extension_uri': 'asdf://asdf-format.org/astronomy/gwcs/extensions/gwcs-1.4.0',
'manifest_software': {'name': 'asdf_wcs_schemas', 'version': '0.5.0'},
'software': {'name': 'gwcs', 'version': '1.0.3'}},
{'extension_class': 'asdf.extension._manifest.ManifestExtension',
'extension_uri': 'asdf://astropy.org/astropy/extensions/units-1.3.0',
'software': {'name': 'asdf-astropy', 'version': '0.11.0'}},
{'extension_class': 'asdf.extension._manifest.ManifestExtension',
'extension_uri': 'asdf://asdf-format.org/core/extensions/core-1.6.0',
'manifest_software': {'name': 'asdf_standard', 'version': '1.5.0'},
'software': {'name': 'asdf', 'version': '5.3.0'}},
{'extension_class': 'asdf.extension._manifest.ManifestExtension',
'extension_uri': 'asdf://stsci.edu/datamodels/roman/extensions/static-1.1.0',
'manifest_software': {'name': 'rad', 'version': '0.30.0'},
'software': {'name': 'roman_datamodels', 'version': '0.30.1'}},
{'extension_class': 'asdf.extension._manifest.ManifestExtension',
'extension_uri': 'asdf://asdf-format.org/astronomy/extensions/astronomy-1.2.0',
'manifest_software': {'name': 'asdf_standard', 'version': '1.5.0'},
'software': {'name': 'asdf-astropy', 'version': '0.11.0'}},
{'extension_class': 'asdf.extension._manifest.ManifestExtension',
'extension_uri': 'asdf://asdf-format.org/transform/extensions/transform-1.7.0',
'manifest_software': {'name': 'asdf_transform_schemas', 'version': '0.6.0'},
'software': {'name': 'asdf-astropy', 'version': '0.11.0'}},
{'extension_class': 'asdf.extension._manifest.ManifestExtension',
'extension_uri': 'asdf://asdf-format.org/astronomy/coordinates/extensions/coordinates-1.0.0',
'manifest_software': {'name': 'asdf_coordinates_schemas',
'version': '0.5.1'},
'software': {'name': 'asdf-astropy', 'version': '0.11.0'}}]}
During Roman development, you may have an outdated version of a file that does not conform to the installed version of roman_datamodels, but you may want to open the file anyway. This may be to just get something out of the file that you need, or you may want to try manually fixing the file to conform to the latest schema. In any case, you can still open the file with asdf.open() if you disable the schema validation like so:
asdf_file_uri_l1 = asdf_dir_uri + 'r0003201001001001004_0001_wfi01_f106_uncal.asdf'
with fs.open(asdf_file_uri_l1, 'rb') as fb:
with asdf.config_context() as cfg:
cfg.validate_on_read = False
af = asdf.open(fb)
Note that if your file does not conform to the installed version of roman_datamodels, then you will need to leave it as an AsdfFile object and not try to pass it to roman_datamodels.open().
Additional Resources#
For more information about Roman data products and additional resources please consider visiting the links below:
About this Notebook#
Author: Javier Sánchez, William Schultz, Tyler Desjardins
Updated On: 2026-04-17
| Top of page |
|
|