isce-framework / isce-framework/isce3

`attitudeType` is always set to "Custom"

Open
#336 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
239
Forks
90
Avg merge
13d 1h
Merged PRs (30d)
5

Description

Originally reported by @gmgunter on March 17, 2025: https://github-fn.jpl.nasa.gov/isce-3/isce/issues/2170

Summary

attitudeType metadata is always set to "Custom".

Products Impacted: All L1, All L2, and STATIC

Causes (2.5 causes)

Cause 1 -- Incorrect Input Pointing Files

Here is the relevant description from the SIS for the pointing files:

Image

@bhawkins grabbed a random NRP, and saw:

    <fileClass>Custom</fileClass>
    <fileType>NRP</fileType>

@jplzhan grabbed a PRP, and it claimed to be a FRP:

    <fileClass>Custom</fileClass>
    <fileType>FRP</fileType>

Per @bhawkins D&C will need to fix the pointing XML products.

Cause 2 - Hardcoded values in both focus.py and static.py

RSLC: Hardcoded in focus.py

Copy-paste from https://github-fn.jpl.nasa.gov/isce-3/isce/issues/2170 , with updated links:

A thing I noticed while shamelessly stealing @bhawkins's code to use in static layers--

The SLC writer class's set_attitude() method takes an attitude type string as an optional input, defaulting to "Custom". This is used to populate the metadata/attitude/attitudeType dataset in the RSLC product.

https://github.com/isce-framework/isce3/blob/bdf1f6fb9175ffe9e53b61839c797e69947dd268/python/packages/nisar/products/writers/SLC.py#L667-L675

When writing output RSLC products in focus.py, we don't override the default attitude type, so it's always set to "Custom".

https://github.com/isce-framework/isce3/blob/bdf1f6fb9175ffe9e53b61839c797e69947dd268/python/packages/nisar/workflows/focus.py#L1878

STATIC: Hardcoded in static.py

https://github.com/isce-framework/isce3/blob/bdf1f6fb9175ffe9e53b61839c797e69947dd268/python/packages/nisar/static/product.py#L518-L523

GSLC, GCOV, InSAR: Inherited from input RSLC HDF5

These workflows copy the attitudeType from the input RSLC. Once focus.py is updated, then the downstream products will automatically populate their products with the correct value.

Action Items

  • D&C to correctly populate the pointing XML files
  • ADT to fix focus.py
  • ADT to fix static.py

cc: @hfattahi @bhawkins @gshiroma @jplzhan @Tyler-g-hudson

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the SLC.set_attitude() implementation and the referenced locations in python/packages/nisar/workflows/focus.py and python/packages/nisar/static/product.py. Check how the input pointing XML fileClass and fileType values map to attitudeType, then verify that RSLC and STATIC products no longer use the hardcoded "Custom" value and that downstream products inherit the corrected RSLC metadata.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.