isce-framework / isce-framework/isce3

GSLC dataset and attribute issues

Open
#218 1 comment 0 reactions 1 assignee View on GitHub

@seongsujeong is already working on this.

Since Feb 11, 2026.

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

Description

It was noticed by ISRO that some attribute dtypes in GCOV sample products did not correspond to their respective dataset dtypes for GCOV; https://github.com/isce-framework/isce3/pull/213 addresses those reported issues.

As an additional follow-up, I implemented new checks into nisarqa via https://github.com/isce-framework/nisarqa/pull/155 ; this nisarqa PR checks for such issues, and it also checks for empty datasets and invalid string datasets.

Here are the outputs from that QA PR, for a recent sample GSLC HDF5:

"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyA/HH -> max_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyA/HH -> max_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyA/HH -> mean_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyA/HH -> mean_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyA/HH -> min_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyA/HH -> min_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyA/HH -> sample_stddev_imag"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyA/HH -> sample_stddev_real"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyA/HV -> max_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyA/HV -> max_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyA/HV -> mean_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyA/HV -> mean_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyA/HV -> min_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyA/HV -> min_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyA/HV -> sample_stddev_imag"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyA/HV -> sample_stddev_real"
"Attribute has dtype int64, which does not match its dataset's dtype of uint8. Path: science/LSAR/GSLC/grids/frequencyA/mask -> _FillValue"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/grids/frequencyA/xCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/grids/frequencyA/yCoordinates -> NAME"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyB/HH -> max_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyB/HH -> max_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyB/HH -> mean_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyB/HH -> mean_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyB/HH -> min_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyB/HH -> min_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyB/HH -> sample_stddev_imag"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyB/HH -> sample_stddev_real"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyB/HV -> max_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyB/HV -> max_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyB/HV -> mean_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyB/HV -> mean_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyB/HV -> min_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyB/HV -> min_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyB/HV -> sample_stddev_imag"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/grids/frequencyB/HV -> sample_stddev_real"
"Attribute has dtype int64, which does not match its dataset's dtype of uint8. Path: science/LSAR/GSLC/grids/frequencyB/mask -> _FillValue"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/grids/frequencyB/xCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/grids/frequencyB/yCoordinates -> NAME"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/rxHorizontalCrosspol -> max_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/rxHorizontalCrosspol -> max_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/rxHorizontalCrosspol -> mean_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/rxHorizontalCrosspol -> mean_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/rxHorizontalCrosspol -> min_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/rxHorizontalCrosspol -> min_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/rxHorizontalCrosspol -> sample_stddev_imag"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/rxHorizontalCrosspol -> sample_stddev_real"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/rxVerticalCrosspol -> max_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/rxVerticalCrosspol -> max_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/rxVerticalCrosspol -> mean_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/rxVerticalCrosspol -> mean_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/rxVerticalCrosspol -> min_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/rxVerticalCrosspol -> min_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/rxVerticalCrosspol -> sample_stddev_imag"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/rxVerticalCrosspol -> sample_stddev_real"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/txHorizontalCrosspol -> max_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/txHorizontalCrosspol -> max_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/txHorizontalCrosspol -> mean_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/txHorizontalCrosspol -> mean_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/txHorizontalCrosspol -> min_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/txHorizontalCrosspol -> min_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/txHorizontalCrosspol -> sample_stddev_imag"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/txHorizontalCrosspol -> sample_stddev_real"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/txVerticalCrosspol -> max_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/txVerticalCrosspol -> max_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/txVerticalCrosspol -> mean_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/txVerticalCrosspol -> mean_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/txVerticalCrosspol -> min_imag_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/txVerticalCrosspol -> min_real_value"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/txVerticalCrosspol -> sample_stddev_imag"
"Attribute has dtype float64, which does not match the half-precision of its dataset's dtype of complex64. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/txVerticalCrosspol -> sample_stddev_real"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/xCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/calibrationInformation/crosstalk/yCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/calibrationInformation/frequencyA/elevationAntennaPattern/xCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/calibrationInformation/frequencyA/elevationAntennaPattern/yCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/calibrationInformation/frequencyA/noiseEquivalentBackscatter/xCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/calibrationInformation/frequencyA/noiseEquivalentBackscatter/yCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/calibrationInformation/frequencyB/elevationAntennaPattern/xCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/calibrationInformation/frequencyB/elevationAntennaPattern/yCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/calibrationInformation/frequencyB/noiseEquivalentBackscatter/xCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/calibrationInformation/frequencyB/noiseEquivalentBackscatter/yCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/calibrationInformation/geometry/xCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/calibrationInformation/geometry/yCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/processingInformation/parameters/frequencyA/xCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/processingInformation/parameters/frequencyA/yCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/processingInformation/parameters/frequencyB/xCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/processingInformation/parameters/frequencyB/yCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/processingInformation/parameters/xCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/processingInformation/parameters/yCoordinates -> NAME"
"Attribute has dtype float64, which does not match its dataset's dtype of float32. Path: science/LSAR/GSLC/metadata/radarGrid/alongTrackUnitVectorX -> _FillValue"
"Attribute has dtype float64, which does not match its dataset's dtype of float32. Path: science/LSAR/GSLC/metadata/radarGrid/alongTrackUnitVectorY -> _FillValue"
"Attribute has dtype float64, which does not match its dataset's dtype of float32. Path: science/LSAR/GSLC/metadata/radarGrid/elevationAngle -> _FillValue"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/radarGrid/heightAboveEllipsoid -> NAME"
"Attribute has dtype float64, which does not match its dataset's dtype of float32. Path: science/LSAR/GSLC/metadata/radarGrid/incidenceAngle -> _FillValue"
"Attribute has dtype float64, which does not match its dataset's dtype of float32. Path: science/LSAR/GSLC/metadata/radarGrid/losUnitVectorX -> _FillValue"
"Attribute has dtype float64, which does not match its dataset's dtype of float32. Path: science/LSAR/GSLC/metadata/radarGrid/losUnitVectorY -> _FillValue"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/radarGrid/xCoordinates -> NAME"
"Value is '', which is not valid for nominal NISAR data. Path: science/LSAR/GSLC/metadata/radarGrid/yCoordinates -> NAME"
"Value is '(NOT SPECIFIED)', which is not valid for nominal NISAR data. Path: /science/LSAR/identification/listOfObservationModes"

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.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.