diff --git a/README.md b/README.md index 9870349..f9fee03 100644 --- a/README.md +++ b/README.md @@ -3,13 +3,13 @@ Quality Assurance software for NISAR For the upcoming [NISAR mission](https://nisar.jpl.nasa.gov/), eight types of L1/L2 data products will be generated. -This Quality Assurance (QA) software is designed to look at the data products -produced one at a time. For each product, the QA code can: +This Quality Assurance (QA) software is designed to look at the data granules +produced one at a time. For each granule, the QA code can: - Verify the metadata matches the product spec - Generate metrics, a PDF report, and a summary CSV describing the quality -of the product -- Run CalTools processes on RSLC products -- Produce a browse image PNG with sidecar KML file for that product +of the granule +- Run CalTools processes on RSLC granules +- Produce a browse image PNG with sidecar KML file for that granule # Minimum PreRequisites: See `environment.yaml` for required packages. @@ -115,7 +115,7 @@ SKIP=flake8,black git commit -m "foo" # temporarily disable flake8 and black Because the QA code is uniquely written for each product type, each product also has a unique runconfig yaml file template and default settings. -The runconfig is where a user specifies the filepath to the input NISAR product, +The runconfig is where a user specifies the filepath to the input NISAR granule, which workflows to run, what units to use for a given metric, and so forth. To get a product's example runconfig file that has been populated with @@ -134,11 +134,11 @@ nisarqa dumpconfig gcov ## Expected Outputs -For each NISAR product, if all workflows are requested via the `workflows` +For each NISAR granule, if all workflows are requested via the `workflows` parameter in the runconfig, the QA code will generate six output files and store them in the directory specified by `qa_output_dir` in the runconfig: -1) `BROWSE.png` - RGB browse image for the input NISAR product +1) `BROWSE.png` - RGB browse image for the input NISAR granule 2) `BROWSE.kml` - geolocation information for `BROWSE.png` 3) `REPORT.pdf` - graphical summary PDF containing histograms, low-res images of the input datasets, etc. diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..ee663c5 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,46 @@ +# Introduction + +This documentation is for the NASA SDS Product Specification for NISAR +Level-1 and Level-2 Quality Assurance Products, which will be produced +using the `nisarqa` repository. + + +# Quick Links to the QA Product Specification Markdown Files + +1) [Introduction and Overview](product_specs/01_intro_and_overview.md) +2) [Summary CSV File](product_specs/02_summary_csv.md) +3) [Browse Image PNG and KML](product_specs/03_browse_png_kml.md) +4) [Graphical Summary PDF](product_specs/04_report_pdf.md) + - [RSLC, GSLC, GCOV (Single-Input Products)](product_specs/04a_single_input_products.md) + - [Caltools (RSLC, GSLC)](product_specs/04b_caltools.md) + - [RIFG, RUNW, GUNW, ROFF, GOFF](product_specs/04c_insar_products.md) +5) [Statistical Summary QA HDF5](product_specs/05_stats_h5.md) + - [RSLC QA HDF5 Specs](product_specs/05a_rslc_qa_hdf5_spec.md) + - [GSLC QA HDF5 Specs](product_specs/05b_gslc_qa_hdf5_spec.md) + - [GCOV QA HDF5 Specs](product_specs/05c_gcov_qa_hdf5_spec.md) + - [RIFG QA HDF5 Specs](product_specs/05d_rifg_qa_hdf5_spec.md) + - [RUNW QA HDF5 Specs](product_specs/05e_runw_qa_hdf5_spec.md) + - [GUNW QA HDF5 Specs](product_specs/05f_gunw_qa_hdf5_spec.md) + - [ROFF QA HDF5 Specs](product_specs/05g_roff_qa_hdf5_spec.md) + - [GOFF QA HDF5 Specs](product_specs/05h_goff_qa_hdf5_spec.md) + +# Maintainer Documentation + +This documentation is written as a series of Markdown files, +which will have two primary venues for viewing: the public `nisarqa` +GitHub repository, and the NISAR Product Specification document +which is signed and released publicly. + +## Instructions to Update the Product Spec Markdown Files + +Please follow the [Process to Update the QA Product Spec Markdown Files](helpers/process_to_update_the_markdown_files.md) + +Of note, this links to the: +* [Style Guide for the QA Product Spec Markdown](helpers/style_guide_for_writing_markdown_specs.md) +* [Tips for Compressing Images for the repo](helpers/image_compression_tips.md) + + +## Instructions to Build the QA Product Specification DOCX + +Please follow the [Process to Build the DOCX QA Product Specs](helpers/process_to_build_the_docx.md) + diff --git a/docs/helpers/generate_stats_markdown.py b/docs/helpers/generate_stats_markdown.py new file mode 100644 index 0000000..9cfc09a --- /dev/null +++ b/docs/helpers/generate_stats_markdown.py @@ -0,0 +1,495 @@ +#!/usr/bin/env python + +import argparse +import os +import warnings +from collections.abc import Iterable + +import h5py +import numpy as np + +import nisarqa + + +def _doc_order(prod_type: str) -> str: + """ + Return the document order code corresponding to a given product type. + + Parameters + ---------- + prod_type : str + Product type name. Supported values are: + "RSLC", "GSLC", "GCOV", "RIFG", "RUNW", "GUNW", "ROFF", "GOFF". + + Returns + ------- + str + A single-letter code ("a"-"h") representing the order for the + product type's HDF5 Markdown spec to appear in the directory. + Example: RSLC should appear first, so it is assigned the letter "a". + """ + + prod_type = prod_type.lower() + if prod_type == "rslc": + return "a" + elif prod_type == "gslc": + return "b" + elif prod_type == "gcov": + return "c" + elif prod_type == "rifg": + return "d" + elif prod_type == "runw": + return "e" + elif prod_type == "gunw": + return "f" + elif prod_type == "roff": + return "g" + elif prod_type == "goff": + return "h" + else: + raise ValueError("Unsupported product type.") + + +def _freqs(prod_type: str) -> list[str]: + """ + Return the list of possible frequency group names for the product type. + + Parameters + ---------- + prod_type : str + Product type name. Supported values are: + "RSLC", "GSLC", "GCOV", "RIFG", "RUNW", "GUNW", "ROFF", "GOFF". + + Returns + ------- + list of str + List of frequency group names, e.g. ["frequencyA", "frequencyB"]. + """ + prod_type = prod_type.lower() + if prod_type in ("rslc", "gslc", "gcov"): + freqs = nisarqa.NISAR_FREQS + elif prod_type in nisarqa.LIST_OF_INSAR_PRODUCTS: + freqs = ["A"] + else: + raise ValueError("Unsupported product type.") + + return [f"frequency{f}" for f in freqs] + + +def _pols(prod_type: str) -> list[str]: + """ + Return the list of possible polarization group names for the product type. + + Parameters + ---------- + prod_type : str + Product type name. Supported values are: + "RSLC", "GSLC", "GCOV", "RIFG", "RUNW", "GUNW", "ROFF", "GOFF". + + Returns + ------- + list of str + List of polarization (or term) group names. + For non-GCOV, this will be e.g. ["HH", "HV"]. + For GCOV, this will be e.g. ["HHHH", "HVHV"]. + """ + prod_type = prod_type.lower() + return list(nisarqa.get_possible_pols(prod_type)) + + +def _layers(prod_type: str) -> list[str]: + """ + Return the list of possible layer group names for the product type. + + Parameters + ---------- + prod_type : str + Product type name. Supported values are: "ROFF", "GOFF". + + Returns + ------- + list of str + List of frequency group names, e.g. ["layer1", "layer2"]. + """ + prod_type = prod_type.lower() + if prod_type not in ("roff", "goff"): + raise ValueError(f"{prod_type=}, must be either ROFF or GOFF.") + + layers = list(nisarqa.NISAR_LAYERS) + # Assert that the formatting of nisarqa.NISAR_LAYERS is as expected + assert "layer1" in layers + return layers + + +def _reformat(names: Iterable[str]) -> str: + """ + Format sequence of names as a comma-separated string, enclosed in backticks. + + Parameters + ---------- + names : Iterable of str + Sequence of names to format. Example: ["HH", "HV"]. + + Returns + ------- + str + A single string with each name enclosed in backticks and separated + by commas. Example: "`HH`, `HV`". + """ + reformatted = [f"`{n}`" for n in names] + + return ", ".join(reformatted) + + +def get_header(product_type: str) -> str: + """ + Generate a formatted header for the Markdown file to detail the QA HDF5. + + Parameters + ---------- + product_type : str + Product type name. Supported values include: + "RSLC", "GSLC", "GCOV", "RIFG", "RUNW", "GUNW", "ROFF", "GOFF". + + Returns + ------- + str + A formatted Markdown string describing the possible groups + and data structures that may appear in the QA HDF5 file for + the specified product type. + + Notes + ----- + The generated header includes sections for: + - Frequency groups (based on available bands) + - Polarization or covariance term groups + - Calibration tool groups (for RSLC and GSLC) + - Layer groups (for ROFF and GOFF) + """ + product_type = product_type.lower() + + header = ( + f"\n## {product_type.upper()} QA HDF5 Contents" + f"\n\nEach QA HDF5 file includes a subset of the available options" + " below, which will correspond to the available frequencies," + f" polarizations, etc. in the input {product_type.upper()} granule." + f"\n\n* Possible Frequency groups: {_reformat(_freqs(product_type))}" + ) + + if product_type == "gcov": + header += ( + "\n\n* Possible On- and Off-diagonal Covariance Term groups:" + f" {_reformat(_pols(product_type))}" + ) + + pols = [p[:2] for p in _pols(product_type) if p[:2] == p[:-2]] + header += ( + "\n\n* Possible Polarization groups (for e.g. calibration" + f" information): {_reformat(pols)}" + ) + + else: + header += ( + "\n\n* Possible Polarization groups:" + f" {_reformat(_pols(product_type))}" + ) + + if product_type in ("rslc", "gslc"): + grps = ("`pointTargetAnalyzer`",) + abscal = "" + if product_type == "rslc": + grps += ( + "`absoluteRadiometricCalibration`", + "`noiseEquivalentBackscatter`", + ) + abscal = "and AbsCal " + + header += ( + f"\n\n* Possible CalTools groups: {', '.join(grps)}" + f"\n - Note: PTA {abscal}results only possible for granules" + " over designated calibration sites." + ) + + if product_type in ("roff", "goff"): + header += ( + f"\n\n* Possible layer groups: {_reformat(_layers(product_type))}" + ) + + header += "\n\n" + + return header + + +def get_spec_table(input_file: str, product_type: str) -> str: + """ + Generate a Markdown-formatted table with the contents of a NISAR QA HDF5. + + This function inspects the structure and attributes of an input QA HDF5 + file and produces a formatted Markdown table summarizing datasets, + attributes, and metadata. + + It is used to create detailed documentation tables for QA product + specifications. + + Parameters + ---------- + input_file : str + Path to the input QA HDF5 file. + product_type : str + Product type name. Supported values include: + "RSLC", "GSLC", "GCOV", "RIFG", "RUNW", "GUNW", "ROFF", "GOFF". + + Returns + ------- + str + Markdown-formatted specification table describing the datasets + contained within the input QA HDF5 file, including their + attributes and metadata. + + Notes + ----- + The output Markdown includes: + - Global (root-level) attributes + - Dataset paths, dimensions, and data types + - Dataset-specific attributes + - Selective filtering to include only one representative + frequency, polarization, or layer group. + """ + + def _get_string_rep(val: np.bytes_) -> str: + """ + Convert a Fixed-length byte-string to a standard Python string object. + """ + if np.issubdtype(val.dtype, np.bytes_): + return nisarqa.byte_string_to_python_str(val) + else: + raise TypeError("NOT A STRING! OH NO! ", val) + + with h5py.File(input_file, "r") as in_f: + + # Table header for Markdown file + spec = [ + ( + f"\n| | {product_type.upper()} QA HDF5 Datasets," + " Attributes, and Additional Metadata |" + "\n| :---: | --------------------------------------- |" + ) + ] + + # Add Global Attributes section + spec.append(f"\n| Path | **`/` _(Root Group - Global Attributes)_** |") + obj = in_f["/"] + for key, val in obj.attrs.items(): + spec.append(f"\n| | _{key}:_ {_get_string_rep(val)} |") + spec.append("\n| | | |") + + # Add datasets and their attributes + + # Lists to track which datasets must be included or excluded. + must_include = [] + do_not_include = [] + prod_type = product_type.upper() + + # Identify mandatory dataset paths based on product type. + if prod_type == "RSLC": + must_include += [ + "/absoluteRadiometricCalibration/data/", + "/noiseEquivalentBackscatter/data/", + ] + if prod_type in ("RSLC", "GSLC"): + must_include += ["/pointTargetAnalyzer/data/"] + + def _include(grp_to_display: str, all_grps: list[str]) -> None: + """ + Mark one group for inclusion and exclude all others. + + Parameters + ---------- + grp_to_display : str + The name of the group to which is required to be included + in the specification. + all_grps : list of str + List of all possible group names, including `grp_to_display`. + The `grp_to_display` will be added to `must_include`, + and all others to `do_not_include`. + """ + nonlocal must_include, do_not_include + if grp_to_display not in all_grps: + raise ValueError(f"{grp_to_display=}, must be in {all_grps=}") + must_include += [f"/{grp_to_display}/"] + # Make a shallow copy to avoid mutating the input list. + dup = list(all_grps) + dup.remove(grp_to_display) + do_not_include += [f"/{d}/" for d in dup] + + # Include only one representative frequency, polarization, and layer + # group for brevity in the generated documentation. + _include(grp_to_display="frequencyA", all_grps=_freqs(prod_type)) + + # QA HDF5 for all product types have "HH" polarization groups. + # (Even though GCOV uses terms (e.g. "HHHH") for its image layers, + # its RFI group contains pols, e.g. ../frequencyA/HH/rfiLikelihood.) + if prod_type == "GCOV": + pols = [p[:2] for p in _pols(prod_type) if p[:2] == p[:-2]] + else: + pols = _pols(prod_type) + _include(grp_to_display="HH", all_grps=pols) + + if prod_type == "GCOV": + _include(grp_to_display="HHHH", all_grps=_pols(prod_type)) + + if prod_type in ("ROFF", "GOFF"): + _include(grp_to_display="layer1", all_grps=_layers(prod_type)) + + def build_spec(name): + """ + Visitor function used with `h5py.File.visit` to build the + specification table for all datasets. + + Parameters + ---------- + name : str + Full HDF5 path for the object being visited. + + Notes + ----- + - Only includes datasets matching paths in `must_include`. + - Skips datasets under groups listed in `do_not_include`. + - Records dataset name, dimensionality, dtype, and attributes. + """ + for required in must_include: + if required in name: + must_include.remove(required) + for skip in do_not_include: + if skip in name: + return + + obj = in_f[name] + if isinstance(obj, h5py.Dataset): + spec.append(f"\n| Path | **`{name}`** |") + + # Retrieve dataset dtype and format for display. + dtype = obj.dtype + if np.issubdtype(dtype, np.bytes_): + dtype = "fixed-length byte string" + + # Describe dataset dimensionality. + ndim = obj.ndim + if ndim == 0: + ndim = "scalar" + else: + ndim = f"{ndim}-D array" + + # Append dataset summary + spec.append( + f"\n| | {prod_type.upper()} QA dataset, **ndim:** {ndim}, **dtype:** {dtype} |" + ) + + # Iterate through each dataset attribute and add to the + # Markdown table. + for key, val in obj.attrs.items(): + if key == "subswathStartIndex": + v = ( + "Starting index for the subswath used to" + " generate this plot" + ) + elif key == "subswathStopIndex": + v = ( + "Stopping index for the subswath used to" + " generate this plot" + ) + elif key == "epsg": + v = "EPSG code" + elif key == "frameCoveragePercentage": + v = "Percentage of NISAR frame containing processed data" + elif key == "thresholdPercentage": + v = ( + "Threshold percentage used to determine if" + " the product is full frame or partial frame" + ) + else: + try: + v = _get_string_rep(val) + except TypeError: + print(f"NOT A STRING! OH NO! {key=}, {val=}") + except AttributeError: + # Attribute has missing dtype + # (Likely, it is a variable-length string) + v = val + if key == "units" and v.startswith("seconds since"): + if "zeroDopplerTime" in name: + v = "seconds since YYYY-mm-ddTHH:MM:SS" + else: + raise ValueError("ACK") + + # Escape Markdown-sensitive characters. + v = v.replace("<", r"\<") + v = v.replace(">", r"\>") + + spec.append(f"\n| | _{key}:_ {v} |") + + in_f.visit(build_spec) + + spec.append("\n\n\n") + if must_include != []: + raise ValueError( + "Input QA product is missing datasets that under these" + f" groups which are required for the spec: {must_include}" + ) + + return "".join(spec) + + +def main(input_file: str, out_dir: str) -> None: + + # Get the product type + with h5py.File(input_file, "r") as in_f: + product_type = in_f["/science/LSAR/identification/productType"][()] + product_type = nisarqa.byte_string_to_python_str(product_type) + product_type = product_type.lower() + + if not out_dir.endswith("docs/product_specs"): + warnings.warn( + f"{out_dir=}, suggest using nisarqa's `docs/product_specs`" + " directory instead to overwrite existing versions of the HDF5" + " product spec Markdown files.", + RuntimeWarning, + ) + + filename = os.path.join( + out_dir, f"05{_doc_order(product_type)}_{product_type}_qa_hdf5_spec.md" + ) + + with open(filename, "w") as out_f: + out_f.write(get_header(product_type=product_type)) + + out_f.write( + get_spec_table(input_file=input_file, product_type=product_type) + ) + + +if __name__ == "__main__": + + parser = argparse.ArgumentParser( + description="Generate HDF5 specs of input QA file in markdown." + ) + parser.add_argument( + "filename", + help=( + "Path to input QA HDF5 file to parse the product type and its" + " HDF5 product structure from" + ), + ) + parser.add_argument( + "out_dir", + help=( + "Path to output directory to store the final Markdown file" + " containing the header and QA HDF5 file structure" + ), + ) + + args = parser.parse_args() + input_file = args.filename + out_dir = args.out_dir + + main(input_file, out_dir) diff --git a/docs/helpers/image_compression_tips.md b/docs/helpers/image_compression_tips.md new file mode 100644 index 0000000..4caf885 --- /dev/null +++ b/docs/helpers/image_compression_tips.md @@ -0,0 +1,101 @@ +# Overview + +When adding new images to the repo, the developer must strike a balance +between image file size, image pixel dimensions, and clarity. We want +to keep images small in file size because we do not want to bloat the +`nisarqa` repo, and once an image file is merged into the repo it +will forever live in the git history. However, if an image is too small, +blurry, or otherwise riddled with compression artifacts, it is not useful +to the users. + +Furthermore, this balance must occur in the context that the images +will be visualized in both the online GitHub format, and the DOCX +product spec. Images that appear small and/or uniform size through +the GitHub interface, often end up very large and or +inconsistently-sized in the DOCX. + +# Tips + +After much trial-and-error, here are a few rules-of-thumb and +processes for getting images that reasonably strike the correct +balance for use in the documentation. Use the tips as starting +points to strike that balance. Update this list as better methods are found. + +## Image File Size + +- Aim for 15-40 KB per image. +In rare cases (e.g. browse images), it is okay to go over, but try to +keep them under or around 100KB. +- [`nisarqa/docs/helpers/reformat_image.py`](reformat_image.py) is a +helper script provided to resize large PNGs to smaller JPEGs. +Even without shrinking the pixel +dimensions, using this script to convert from PNG to JPEG format with +opimization enabled and a minor reduction in quality (e.g. 80) can +dramatically reduce the file size with minimal impact to the clarity +of the image. The script can be called from the command line, or +imported into Python. + +## Image File Location and Naming + +Currently, all images used in the product specs documentation are stored here: + +```bash +nisarqa/docs/product_specs/images/ +``` + +If updating an existing image, suggest using the same filename as the original existing image. Otherwise, you'll need to update all references to that image throughout the QA documentation. + + +## Saving PDF pages for the QA specs + +- Step 1) Export the individual PDF pages to PNG + - There are Python packages to do this + - In a pinch, use Preview on Mac to `File > Export..` the first page of a + PDF to PNG. If the page you want to use is not the first page, then + reorder the pages in the thumbnail pane accordingly. +- Step 2) Use [`.../reformat_image.py`](reformat_image.py) to reduce the +pixel dimensions, convert from PNG to JPG, enable optimization, and reduce +the quality to ~80. (Pages from the PDF compress _really_ nicely.) + - Suggested pixel dimensions: + - Dual-plot and Single-plot PDF pages: max of 600 wide x 288 height, + i.e. (600, 288) + - Cover page: max of (2000, 1000) + - Azimuth Spectra page: max of (600, 600) + - Misc. Images: max of (700, 700) + + +## Saving Browse Images for the QA specs + +- Nomimal NISAR browse images are too large to use directly in the QA +documentation; they are ~2048x2048 pixels (~1-10 MB), which will +bloat the `nisarqa` repo. **Do not use these.** +- Instead, use `nisarqa` to generate new browse images for use in the specs. +When doing this, adjust the `longest_side_max` parameter in each QA runconfig +to the reduce the pixel dimensions of the generated browse image. +(Every product type's QA runconfig contains this parameter.) +This method produces the most-accurate and crispest representation of +browse images, but at a smaller size. + - Suggested Pixel Dimensions: + - **set `longest_side_max` to 400** in the `nisarqa` runconfig. + - Product-specific notes: + - **ROFF and GOFF**: Because of the quiver plot arrows, the + ROFF and GOFF browse PNGs do not convert to JPG nicely. + - _Keep reducing `longest_side_max` lower than 400 until you get a small-enough PNG output, and then use that PNG for the specs._ + - **RSLC, RIFG, RUNW**: These compress very nicely from PNG to JPG. + - _Use [`.../reformat_image.py`](reformat_image.py) to convert + from PNG to JPG, but do not reduce the pixel dimensions._ + - **GSLC, GCOV**: These compress nicely from PNG to JPG, but doing + so means that the transparent alpha channel is colored opaque white. + - _If the file size is small enough, suggest leaving them as PNG._ + - **GUNW**: These compress nicely from PNG to JPG, but doing so means + that the transparent alpha channel is colored opaque white. + Regardless, the GUNW PNG file size is quite large, so suggest to: + - _Use [`.../reformat_image.py`](reformat_image.py) to convert + from PNG to JPG, but do not reduce the pixel dimensions._ +- If using [`.../reformat_image.py`](reformat_image.py) to convert from +PNG to JPG, it worked well to have optimization enabled, set `quality` to 85, +and have `max_size` be None. +- [!CAUTION] Do not use `.../reformat_image.py` to reduce the pixel dimensions +of the browse images; it leads to undesirable interpolation. +Adjust `longest_side_max` parameter in the `nisarqa` runconfig instead. + diff --git a/docs/helpers/nisarqa_product_specs_front_matter_template.docx b/docs/helpers/nisarqa_product_specs_front_matter_template.docx new file mode 100644 index 0000000..3b865c2 Binary files /dev/null and b/docs/helpers/nisarqa_product_specs_front_matter_template.docx differ diff --git a/docs/helpers/process_to_build_the_docx.md b/docs/helpers/process_to_build_the_docx.md new file mode 100644 index 0000000..3080586 --- /dev/null +++ b/docs/helpers/process_to_build_the_docx.md @@ -0,0 +1,232 @@ +# Instructions to Build the QA Product Specification DOCX + +## Update all Markdown files +Please follow the [Process to update the Markdown files](process_to_update_the_markdown_files.md). + + +## Install `pandoc` + +[Official instructions to install `pandoc` are here](https://pandoc.org/installing.html). + +```bash +conda install -c conda-forge pandoc +``` + +## Concatenate the `.md` files and generate the intermediary DOCX + +`cd` into to `nisarqa/docs/product_specs` directory. + +Then, build a temporary, intermediary docx. This will contain all of the +"content" of the final product specs, but lack the front matter and +the correct formatting. + +```bash +pandoc --from=markdown_github+multiline_tables+table_captions *.md -o nisarqa_product_specs_tmp.docx -V linkcolor=blue +``` + +> [!CAUTION] +> `pandoc` has deprecated using `--from=markdown_github` in favor of the +newer `--from=gfm`. However, `gfm` does not allow the `+multiline_tables` +extension, which is required for the long descriptions in the tables to +wrap to multiple lines within a cell. For now, keep using +`--from=markdown_github`; it still worked with `pandoc` v3.4. + + +## Prepare the DOCX version of the QA product spec + +Open the "front matter" DOCX file, which contains the cover page, +signature pages, NISAR style formats, etc. This is DOCX located: + +``` +nisarqa/docs/helpers/nisarqa_product_specs_front_matter_template.docx +``` + +* Scroll to the first page after the table of contents, which should be +the beginning of Section 1. +* If needed, delete everything from Section 1 to the end (it should +already be deleted). +* Update the front matter with dates, revision history, names, etc. + - Check with JPL/NISAR Mission management for the most-recent released + version of the QA specs. When updating the front matter, ensure that + the new version is incremented correctly from the most-recent previous + version. +* Save, and `git commit` this updated front matter to the `nisarqa` repo. + - **Commit this front matter prior to copy-pasting the full spec!** + - To keep the GitHub repo small, and to avoid having a DOCX fall out of + sync with the markdown files within the same `nisarqa` repo, + let's only store the front matter portion the repo. + - Each final DOCX will need to go through JPL and the NISAR Mission's + official processes for documentation, and should be tracked exclusively + within those processes. +* Do "Save As" to save a new copy with a new name. + - Important to "Save As", so that the template is not altered. + +Next, open the intermediary `nisarqa_product_specs_tmp.docx` file in Word. + +* Select all (command-A on Mac), and copy the entire contents of the +intermediary file to the clipboard. +* Click over to the new copy of the front matter DOCX. Paste the clipboard +contents verbatim into the body of the front matter DOCX. +* Scroll up to the table of contents. Right-click, and do "Update Field". +This should rebuild the table of contents with the new material. +* In the Word document, under the "View" section, in the Macros dropdown +select View Macros. Run the `ConvertDollarMathToEquations` macro. +(Should take seconds.) + - If this macro does not exist, then copy-paste the code (below) into + the Visual Basic Editor (VBA) in Word, and that Macro should appear. +* In the Word document, under the "View" section, in the Macros dropdown +select View Macros. Run the `TableStyleAndCenterImages` macro. (Will take +~4-8 minutes.) + - If this macro does not exist, then copy-paste the code (below) into + the Visual Basic Editor (VBA) in Word, and that Macro should appear. +* This is the final QA product specs DOCX! Save with the appropriate filename, +and follow the required JPL / NISAR mission procedures for this spec. + + +Macro for converting Markdown (LaTeX) equations to Word equations: +``` +Sub ConvertDollarMathToEquations() + Dim rngSearch As Range + Dim rngMath As Range + Dim eqText As String + Dim oMath As oMath + + Set rngSearch = ActiveDocument.Content + + With rngSearch.Find + .ClearFormatting + .Text = "\$[!\$]@\$" ' match $...$ where ... has no $ + .MatchWildcards = True + .Forward = True + .Wrap = wdFindStop + End With + + Do While rngSearch.Find.Execute + Set rngMath = rngSearch.Duplicate + + ' Extract the inner text (strip leading/trailing $) + eqText = rngMath.Text + If Len(eqText) > 2 Then + eqText = Mid(eqText, 2, Len(eqText) - 2) + Else + eqText = "" + End If + eqText = Trim(eqText) + + ' === Convert common LaTeX-style tokens === + eqText = Replace(eqText, "\cdot", "·") ' middle dot + eqText = Replace(eqText, "\times", "?") ' multiplication sign + eqText = Replace(eqText, "\pm", "±") + eqText = Replace(eqText, "\ge", "≥") + eqText = Replace(eqText, "\le", "≤") + eqText = Replace(eqText, "\neq", "≠") + ' (you can add more as needed) + + ' Replace the text in the document + rngMath.Text = eqText + + ' Re-establish range after replacement + Set rngMath = rngMath.Duplicate + rngMath.MoveEndWhile Cset:=vbCr & vbLf, Count:=wdBackward + + ' Create math object if valid + If Len(eqText) > 0 And InStr(eqText, vbCr) = 0 Then + On Error Resume Next + Set oMath = ActiveDocument.OMaths.Add(rngMath) + If Err.Number = 0 Then + oMath.BuildUp + Else + Debug.Print "Skipping equation due to error on text: " & eqText + Err.Clear + End If + On Error GoTo 0 + End If + + ' Continue searching + rngSearch.Start = rngMath.End + rngSearch.End = ActiveDocument.Content.End + Loop + + MsgBox "Conversion complete.", vbInformation +End Sub +``` + +Macro for formatting the tables and images in Word: +``` +Sub TableStyleAndCenterImages() + ' Apply the "NISAR table" style format to all tables + Dim tbl As Table + Dim tb As Table + Dim rw As Row + Dim cl As Cell + Dim txt1 As String + Dim txt2 As String + Dim slashPos As Long + Dim tx As String + Dim isSpecTable As Boolean + Dim objDoc As Document + Dim objInLineShape As InlineShape + + Set objDoc = ActiveDocument + + ' Apply "NISAR table" style + For Each tbl In objDoc.Tables + tbl.Style = "NISAR table" + tbl.AutoFitBehavior wdAutoFitWindow + tbl.Range.Font.Size = 9 + Next tbl + + ' Center all images horizontally + For Each objInLineShape In objDoc.InlineShapes + objInLineShape.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter + Next objInLineShape + + ' For product spec tables + For Each tb In objDoc.Tables + isSpecTable = False + + ' Loop through rows + For Each rw In tb.Rows + txt1 = rw.Cells(1).Range.Text + txt1 = Left(txt1, Len(txt1) - 2) ' Remove end-of-cell markers + + If txt1 = "Path" Then + isSpecTable = True + rw.Shading.ForegroundPatternColor = wdColorPaleBlue + + txt2 = rw.Cells(2).Range.Text + txt2 = Left(txt2, Len(txt2) - 2) + + ' Insert a space after the last "/" only if > 80 characters + ' Warning: If font or font size or spec table width (below) are + ' updated, then the value of 80 will need to be adjusted. + If Len(txt2) > 90 Then + slashPos = InStrRev(txt2, "/") + ' Search for the next slash, starting from the character *before* the last slash + slashPos = InStrRev(txt2, "/", slashPos - 1) + If slashPos > 0 And slashPos < Len(txt2) Then + txt2 = Left(txt2, slashPos) & vbNewLine & Mid(txt2, slashPos + 1) + rw.Cells(2).Range.Text = txt2 + End If + ElseIf Len(txt2) > 80 Then + slashPos = InStrRev(txt2, "/") + If slashPos > 0 And slashPos < Len(txt2) Then + txt2 = Left(txt2, slashPos) & vbNewLine & Mid(txt2, slashPos + 1) + rw.Cells(2).Range.Text = txt2 + End If + End If + End If + Next rw + + ' Adjust table formatting if spec table + If isSpecTable Then + tb.Rows(3).Shading.ForegroundPatternColor = wdColorAutomatic + tb.PreferredWidthType = wdPreferredWidthPoints + + tb.Columns(1).Width = InchesToPoints(0.7) + tb.Columns(2).Width = InchesToPoints(5.8) + End If + Next tb + +End Sub +``` diff --git a/docs/helpers/process_to_update_the_markdown_files.md b/docs/helpers/process_to_update_the_markdown_files.md new file mode 100644 index 0000000..8c0aa1c --- /dev/null +++ b/docs/helpers/process_to_update_the_markdown_files.md @@ -0,0 +1,86 @@ +# Instructions to Update the Product Spec Markdown Files + +## Update Markdown text to match new QA PRs + +As new QA PRs are drafted, the best practice is for the product specs to be +updated in those PRs to keep them in sync. When preparing to cut a +QA releases, the developer should do a final pass updating the product +specs in advance of cutting the release. + +When updating the product specs, the author needs to be mindful that the +output looks "nice" in both GitHub and in DOCX output. To view correctly +on the GitHub repository, the Markdown must be written in +"GitHub-Flavored Markdown". When reformatting the Markdown files into +DOCX files via `pandoc`, not all formatting will translate correctly. + +Guidance on how to correctly write and format the QA product spec +Markdown files for viewing both GitHub and the DOCX can be found here: +[Tips for Writing Product Spec Markdown](helpers/style_guide_for_writing_markdown_specs.md) + + +## Auto-Generate Updated QA HDF5 Product Specification tables + +First, locate a sample QA HDF5 file with a representative internal +file structure for that QA HDF5 file type. Tips: +* If updating the QA HDF5 product specs for e.g. all eight L1/L2 +QA HDF5 products, locate a unique QA HDF5 file for each L1/L2 type. +* When selecting these files, the contents and size of the e.g. +image datasets do not matter; this script only looks at the +internal structure, descriptions, attributes, etc. However, it is +useful to consider if the chosen sample files should be for single-pol +observations, dual-pol, quad-pol, multi-frequency, etc. + +Use the [`nisarqa/docs/helpers/generate_stats_markdown.py`](generate_stats_markdown.py) +script to auto-generate updated Markdown product specs using the input QA HDF5: + +``` +python path/to/generate_stats_markdown.py /path/to/QA_STATS.h5 /path/to/output/directory/ +``` + +> [!IMPORTANT] +> For the output directory, please use the existing +`nisarqa/docs/product_specs/` directory. This is where the current +version are stored; the Python script internally uses the correct +naming convention to replace the old versions, and this way the DOCX +files can be smoothly generated with the updated files. + +The [`generate_stats_markdown.py`](generate_stats_markdown.py) script +automatically adds header information into each output Markdown file, +iterates through the input product to parse the structure, formats the +tables, and saves it with the correct file name in the `product_specs` +directory. It also handles a few known edge cases. + +The `generate_stats_markdown.py` script should only output one +combination of frequency/polarization/layer dataset per granule, +but always double-check. + +When selecting RSLC and GSLC QA HDF5 files, please chose samples +with outputs from the AbsCal and PTA Caltools. + + +> [!IMPORTANT] +> **To make changes to the QA HDF5 product spec Markdown documents, +please update this [`generate_stats_markdown.py`](generate_stats_markdown.py) +script and re-run the script. _Do not edit the Markdown files directly._** + + +## Compress all new or updated image files +To keep the size of the git repo manageable, developers are requested +to compress all images prior to submitting a pull request. + +> [!IMPORTANT] +> Check out [Tips for Compressing Tips Page](helpers/image_compression_tips.md) +for guidelines and tips to compress images for use in the QA product +spec documentation. This guide includes a helper script to facilitate +image compression. + +After compressing images, remember to double-check that the images' +relative paths in the Markdown files are all still correct and that +the images appear nicely in both display venues. + +## Update README + +If you added any new Markdown files, or changed the names of existing +ones, please: +* Update the [`nisarqa/docs/README.md`](../README.md) Quick Links section +* Update all other instances in the documentation where those old filenames appear diff --git a/docs/helpers/reformat_image.py b/docs/helpers/reformat_image.py new file mode 100644 index 0000000..38e72b7 --- /dev/null +++ b/docs/helpers/reformat_image.py @@ -0,0 +1,186 @@ +import argparse +import os +import warnings +from typing import Optional + +from PIL import Image + + +def png2jpg( + source_filepath: str, + output_filepath: Optional[str] = None, + max_size: Optional[tuple[float, float]] = None, + optimize: bool = True, + quality: float = 75, +) -> None: + """ + Reduce the shape size and compress a PNG into a JPEG. + + If converting from an image with an alpha channel, the transparent + pixels will be colored opaque white. + + Suggestion: Do not reduce the size of ROFF and GOFF browse images; the + quiver arrows do not appear crisp after conversion to jpg. + + Parameters + ---------- + source_filepath : str + Filepath to the source image to be processed. + output_filepath : str or None, optional + Filepath (with ".jpg" extension) for saving the processed image. + If filepath does not end with ".jpg", it will be updated to do so. + If None, processed image will be saved to the same filepath + as `source_filepath` but with an extension of ".jpg". + Defaults to None. + max_size : None or pair of float, optional + Maximum pixel dimensions of the output image, in the format: + (, ) + If None, then the image dimensions will not be altered. + Defaults to None. + optimize : bool, optional + If True, indicates that the encoder should make an extra + pass over the image in order to select optimal encoder settings. + Defaults to True. + See: https://pillow.readthedocs.io/en/stable/handbook/image-file-formats.html#jpeg-saving + quality : float, optional + The image quality, on a scale from 0 (worst) to 95 (best), or the + string 'keep'. Values above 95 should be avoided; + 100 disables portions of the JPEG compression algorithm, and + results in large files with hardly any gain in image quality. + Defaults to 75. + See: https://pillow.readthedocs.io/en/stable/handbook/image-file-formats.html#jpeg-saving + """ + + # Prepare output filename + if output_filepath is not None: + out_path, out_ext = os.path.splitext(output_filepath) + if out_ext.lower() != ".jpg": + out_file = os.path.join(out_path, ".jpg") + else: + out_file = output_filepath + else: + filepath_and_name, in_ext = os.path.splitext(source_filepath) + if in_ext.lower() != ".png": + warnings.warn( + f"Input file has an extension of '{in_ext=}'." + " Only PNG files have been tested for this function." + " Undefined behavior might occur." + ) + out_file = f"{filepath_and_name}.jpg" + + # Open the image + img = Image.open(source_filepath) + + # Resize + if max_size is not None: + img.thumbnail(size=max_size, resample=Image.Resampling.BILINEAR) + + # Ensure that the transparent pixels appear white by removing the alpha channel. + if img.mode == "RGBA": + # color image + bkgd = Image.new("RGB", (img.width, img.height), (255, 255, 255)) + bkgd.paste(img, mask=img.split()[3]) + + elif img.mode == "L": + # grayscale image + img = img.convert("LA") + bkgd = Image.new("L", (img.width, img.height), 255) + bkgd.paste(img, mask=img.split()[1]) + else: + raise Exception( + "Only grayscale and RGBA input files currently supported: ", + source_filepath, + ) + + bkgd.save(out_file, optimize=optimize, quality=quality) + + +if __name__ == "__main__": + + parser = argparse.ArgumentParser( + description=( + "Resize and/or reformat images from PNG to JPEG." + " Useful for compressing large images to small images." + ) + ) + + parser.add_argument( + "--input", + "-i", + dest="source_filepath", + type=str, + help="Filepath to the source image to be processed.", + ) + + msg = """Filepath (with ".jpg" extension) for saving the processed image. + If filepath does not end with ".jpg", it will be updated to do so. + If None, processed image will be saved to the same filepath + as `source_filepath` but with an extension of ".jpg".""" + parser.add_argument( + "--out-file", + "--out", + "-o", + dest="output_filepath", + type=str, + default=None, + help=msg, + ) + + msg = """Maximum pixel dimensions of the output image, in the order: + + If not provided, then the image dimensions will not be altered.""" + parser.add_argument( + "--size", + "--max_size", + dest="max_size", + type=int, + nargs=2, + default=None, + help=msg, + ) + + msg = """If omitted, indicates that the encoder should make an extra + pass over the image in order to select optimal encoder settings. + Include this flag to skip that optimization. + See: https://pillow.readthedocs.io/en/stable/handbook/image-file-formats.html#jpeg-saving""" + parser.add_argument( + "--do_not_optimize", + dest="do_not_optimize", + action="store_true", + default=False, + help=msg, + ) + + msg = """The image quality, on a scale from 0 (worst) to 95 (best), or the + string keep. The default is 75. Values above 95 should be avoided; + 100 disables portions of the JPEG compression algorithm, and + results in large files with hardly any gain in image quality. + The value keep is only valid for JPEG files and will retain the + original image quality level, subsampling, and qtables. + Defaults to "keep". + See: https://pillow.readthedocs.io/en/stable/handbook/image-file-formats.html#jpeg-saving""" + parser.add_argument( + "--quality", "-q", dest="quality", type=str, default="keep", help=msg + ) + + args = parser.parse_args() + + quality = args.quality + if quality.isdecimal(): + quality = float(quality) + elif quality != "keep": + raise ValueError( + "`--quality` argument must be either numeric or the string 'keep'." + ) + + input_file = args.filename + + png2jpg( + source_filepath=args.source_filepath, + output_image_dir=args.output_image_dir, + output_extension=args.output_extension, + output_filepath=args.output_filepath, + max_size=args.max_size, + do_not_optimize=not args.do_not_optimize, + quality=quality, + ) diff --git a/docs/helpers/style_guide_for_writing_markdown_specs.md b/docs/helpers/style_guide_for_writing_markdown_specs.md new file mode 100644 index 0000000..25eb1d5 --- /dev/null +++ b/docs/helpers/style_guide_for_writing_markdown_specs.md @@ -0,0 +1,104 @@ +# Overview + +When writing the product spec Markdown files, the developer must be aware +that the files will be displayed in both the online GitHub format, and the +DOCX format. + +In theory, GitHub-Flavored Markdown should translate nicely to both the +GitHub interface and also in the DOCX when converted via `pandoc`. +In practice, there are bugs. + +Here are some guidelines for writing the Markdown files for the QA products +specs, and workarounds for the issues. + + +# Section Heading Levels + +The section heading levels must be considered holistically for all of the +product spec Markdown documents. + +In GitHub, each Markdown file is viewed independently, so section heading +levels might seem to only be relative to the other headings within +a single file. + +But, when these Markdown files are compiled into the DOCX, the section +heading levels are parsed by `pandoc` and used to construct the sections +within the DOCX, which in-turn are used to build the hierarchy of the +DOCX's table of contents. Fortunately, `pandoc` seems to handle this +parsing quite well. + +There is an existing hierarchy established in the product specs Markdown +files; pleaes be mindful of this hierarchy when making updates. + + +# HTML tags +HTML tags, tables, etc. seem to display nicely in the GitHub interface. +However, in they do not seem to be recognized when `pandoc` converts to DOCX. + +Suggest avoiding them, until a solution is found. + + +# Tables +Instead of taking screenshots of tables in other applications, recreate +the tables using GitHub-Flavored Markdown pipe tables, +https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables + +Tips for getting tables to display nicely in both GitHub and in the DOCX: + +* Horizontal Alignment of the columns + - You can align text to the left, right, or center of a column by + including colons `:` to the left, right, or on both sides of the + hyphens within the header row. +* Relative Column size: + - Having non-uniform sized columns in both GitHub and the DOCX is finnicky. + - To do so, vary the number of hyphens in the header row. + The more hyphens, the wider the column. (Minimum of three hyphens.) + - For example, to have a medium-width column 1, a very wide column 2, + and a narrow column 3, use this: + + > ``` + > | ------ | ----------------- | --- | + > ``` +* Merged cells: + - Even though `pandoc` Markdown allows for merged cells via grid + tables, GitHub-Flavored Markdown does not support merged cells. + **Do not use them.** + - In practice, this means that the HDF5 product spec tables + are rather tricky to format and keep concise. + +# Bulleted and Numbered Lists + +Even though GitHub is able to successfully parse both bulleted lists +and numbered lists and display nicely-formatted lists, unfortunately +`pandoc` is only able to understand bulleted lists when converting to +DOCX. Rephrased, **`pandoc` cannot convert numbered lists nicely.** + +To get around this, suggest using only bulleted lists. If you need a +numbered sequence, the QA product specs currently uses a convention like this: + +``` +* **Step 1:** Read the raster + - Note 1 + - Note 2 + +* **Step 2:** Process the raster + - Processing Steps: + - **Step 3.i:** Reduce Size + - **Step 3.ii:** Remove alpha channel + - Note 3 + - Note 4 + +* **Step 3:** Output to file +``` + +# Equations + +GitHub's documentation says that mathematical expressions should +be rendered using MathJax in Markdown files: https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/writing-mathematical-expressions + +Unfortunately, `pandoc` does not do anything for equations when converting +to DOCX. Instead, please use the Word VBA macro to reformat the +Markdown equations for DOCX, located in: [Process to Build the DOCX](helpers/helpers/process_to_build_the_docx.md) + +Reminder: For any new equation, visually double-check that it appear correctly +in both GitHub and in the final DOCX. diff --git a/docs/product_specs/01_intro_and_overview.md b/docs/product_specs/01_intro_and_overview.md new file mode 100644 index 0000000..9f0921a --- /dev/null +++ b/docs/product_specs/01_intro_and_overview.md @@ -0,0 +1,152 @@ + +# Introduction + +For the NASA-ISRO Synthetic Aperture Radar (NISAR) mission +(https://nisar.jpl.nasa.gov/), the NASA Science Data System (SDS) will +produce Quality Assurance (QA) products for all nominal Level-1 (L1) +and Level-2 (L2) L-band science data products. The QA products will +contain quality metrics, summary statistics, and plots of science data; +they will be distributed publicly and freely through the NASA Alaska +Satellite Facility Distributed Active Archive Center alongside +the L1 and L2 granules. + +These QA parameters will provide the scientific community with a +comprehensive perspective on the quality of NISAR granules at a global +scale and enable efficient analysis without the need to download extensive +L1/L2 science data. + + +## Overview of NISAR QA + +### How will QA outputs be generated during NISAR mission operations? + +NISAR SDS at JPL will run the QA software at scale on each L1 and L2 +science data granule produced as part of the baseline mission processing. +Faulty granules can be flagged and prevented from being uploaded. + +Here is a simplified overview of the NASA SDS processing pipeline: + +![QA Mission Processing Pipeline](images/qa_processing_pipeline.jpg) + + +### Open Source Software and Documentation + +The NISAR QA software is available publicly at +https://github.com/isce-framework/nisarqa. It can be used to generate modified +versions of the standard QA products using different parameter settings. + +The QA software version used to generate a given set of QA outputs can be +found on the cover page of the QA report PDF file and in the QA HDF5 file's +`/science/LSAR/QA/processing/QASoftwareVersion` dataset. +This version number corresponds to a specific QA software tag: +https://github.com/isce-framework/nisarqa/tags. + +For the current and historical versions of the QA product specifications, +please visit the open-source `nisarqa` respository. + + +### NISAR QA Output Product Descriptions (Overview) + +One set of QA products will be generated for each L1 and L2 L-band science +data granule. Due to the differing content of each L1 and L2 science product +type, the specific QA content in each output file is customized per that +product type and will be detailed in later sections. + +Descriptions of the individual files in one set of QA products: + +| File Type | Filename* | Description | Approx. Size | +| :---: | :----------- | -------------- | :-----: | +| PNG | `.png` | Browse Image | < 10 MB | +| KML | `.kml` | Geolocation sidecar file for the PNG | < 5 KB | +| PDF | `_QA_REPORT.pdf` | Graphical summary of the input granule, including plots, histograms, and other assessments | < 3 MB | +| HDF5 | `_QA_STATS.h5` | HDF5 containing statistics, metrics, histograms, identification information, and more about the datasets in the input granule. Also includes QA processing parameters | 1-10 MB | +| CSV | `_QA_SUMMARY.csv` | High level PASS/FAIL checks | < 5 KB | +| TXT | `_QA_LOG.txt` | Log file. Contains full details of verification checks, in addition to typical log outputs | < 200 KB | + + +\* For NISAR mission processing, `` will be the complete +granule ID of the input L1/L2 granule. See Appendix A [RD1] for details +on the syntax. + + +## Input NISAR L1/L2 Science Product Overview +Each NASA SDS L0-L2 L-band product is distributed as a single Hierarchical +Data Format version 5 granule (Appendix A [RD2]). For full descriptions, please see the +L1/L2 product specification documents (Appendix A [RD3]-[RD10]). + +### NISAR Product Level Descriptions + +Descriptions of the NISAR product levels, as defined by Science: + +| Data Level | Acronym | Description | +| :----: | :---: | ----------------- | +| Level 0A | L0A | Unprocessed instrument data with some communications artifacts removed, but without reconstruction of missing data and reordering of samples from the instrument. May still contain bit errors and missing data that needs reconstruction. | +| Level 0B | L0B | Reconstructed, time-ordered unprocessed instrument data at original resolution, time ordered, all communications artifacts removed. | +| Level 1 | L1 | Processed instrument data, focused to full resolution complex images or derived radar parameters including interferometric phase and pixel offsets, in native radar coordinates system. | +| Level 2 | L2 | Focused radar imagery or derived radar parameters projected to a map coordinate system. | +| Level 3 | L3 | Derived geophysical parameters on geocoded grids with the same or coarser posting as Level 1 or Level 2 products. | + + +### NISAR L0-L2 Science Product Dependency Graph + +NISAR Quality Assurance software is designed to verify and assess the +quality of the eight NISAR L-band L1 and L2 products, nominally +generated using the ISCE3 software (https://github.com/isce-framework/isce3). +The dependency graph and brief descriptions of each L1/L2 product are below, +which illustrates the upstream-to-downstream chain of the science products. +This is useful because an issue that appears in the QA report for a downstream +granule can sometimes have its root cause traced back to the upstream input +granule. For example, if a user sees an issue in a GUNW granule's QA report, +they might look at the upstream RIFG and RSLC granules' QA reports for insight. + +![Product Dependency Graph](images/product_dependency.jpg) + + +### NISAR L1 and L2 Science Product Descriptions + +Descriptions for the NISAR L1 and L2 science products, which are the inputs +to the QA software: + +| Level | Acronym | Product | Description | +| :---: | :----: | --------- | ----------------- | +| L1 | RSLC | Range-Doppler Single Look Complex (SLC) | The L1 RSLC product contains focused SAR images in range-Doppler coordinates. The RSLC is an input to other L1 or L2 products. | +| L1 | RIFG | Range-Doppler Nearest-Time Interferogram | Multi-looked interferogram in Range Doppler coordinates, ellipsoid and topographic phase flattened and formed with precise coregistration using geometrical offsets and high-resolution pixel offsets obtained from incoherent cross correlation. | +| L1 | RUNW | Range-Doppler Nearest-Time Unwrapped Interferogram | Multi-looked, ellipsoid and topography flattened unwrapped interferogram in Range Doppler coordinates. | +| L1 | ROFF | Range-Doppler Nearest-Time Pixel Offsets | Unfiltered and unculled layers of pixel offsets in Range Doppler coordinates with different resolutions obtained from incoherent cross correlation. | +| L2 | GSLC | Geocoded SLC | Single Look Complex SAR image on geocoded map coordinate system. | +| L2 | GCOV | Geocoded Polarimetric Covariance Matrix | Geocoded, multi-looked polarimetric covariance matrix. | +| L2 | GUNW | Geocoded Nearest-Time Unwrapped Interferogram | Geocoded, multi-looked, ellipsoid and topography flattened unwrapped interferogram | +| L2 | GOFF | Geocoded Nearest-Time Pixel Offsets | Unfiltered and unculled layers of pixel offsets in with different resolutions obtained from incoherent cross correlation and geocoded on map coordinate system. | + + +### L1 Range-Doppler products vs. L2 Geocoded products + +The L1 products are on the range-Doppler (radar) grid and their acronyms +begin with the letter "R". The L2 products are geocoded and their +acronyms begin with the letter "G". + +In practice, when viewing the QA report PDFs, the L2 products' image +rasters appear as a geocoded version of the radar grid image surrounded +by geocoding fill. For the backscatter image plots in GSLC and GCOV PDFs, +the backscatter fill defaults to be colored blue; elsewhere it appears +translucent, white, or another color as appropriate. + +![Geocoding Intuition](images/geocoding.jpg) + +_Images from ALOS/PALSAR-derived NISAR surrogate data. The original ALOS/PALSAR data products are provided by JAXA._ + +## How to Use this Documentation + +Example output images and descriptions will be provided for +each QA output file and each QA feature. + +Each L1/L2 product is unique, and similarly the exact QA outputs for each +of the eight product types is unique. However, many product types share a +common subset of QA features. +If a feature is common to multiple product types, for brevity this +documentation will typically only include images of the QA outputs of +that feature for one of the product types. The section header for each +feature will note all products for which that QA feature will be present. + +For the QA HDF5 statistical summary output, a complete product specification +is provided for each product type. diff --git a/docs/product_specs/02_summary_csv.md b/docs/product_specs/02_summary_csv.md new file mode 100644 index 0000000..14f0b1c --- /dev/null +++ b/docs/product_specs/02_summary_csv.md @@ -0,0 +1,94 @@ + +# High-Level Summary PASS/FAIL/WARN Checks (CSV) + +## Overview + +The summary CSV is high-level, human- and machine-readable file which +summarizes detailed QA metrics into a CSV table. + +Example PASS/FAIL/WARN checks included in the CSV: +* PASS: All checks complete +* FAIL: All pixels in one layer are NaN +* WARN: Geolocation error over corner reflectors exceeds a specified threshold + +The specific checks included in the CSV will vary for each product type, +with many checks depending on the content of individual granules. +Select examples are presented below. + +Note that some of the checks in the examples below indicate a `"FAIL"`. +This is because the QA software includes both fatal checks and soft checks. + +Fatal checks indicate a fatal error in the input L1/L2 granule which +requires further analysis by the developers or users. +If there is a fatal error, then the final row in the CSV (the +`"QA completed with no exceptions?"` check) will be a `"FAIL"`. + +Soft checks are meant to notify users of minor issues in the input granule; +these issues should not halt the public release of a L1/L2 granule. +For example, the NISAR sample granules used to generate +the example CSVs below were derived from ALOS-1 datasets; the conversion +from ALOS-1 to NISAR-format did not include metadata corresponding to +NISAR's `plannedObservationId` field in the `identification` group, +and so that field was populated with a placeholder value. However, +that placeholder value is not valid for the launched NISAR mission data, +so that soft check is noted as a "FAIL". + + +## Example RSLC QA Summary CSV + +Here are the contents of an example RSLC QA Summary CSV: + +``` +Tool,Check,Result,Threshold,Actual,Notes +QA,Able to open input NISAR file?,PASS,,, +QA,Metadata cubes are valid?,FAIL,,, +QA,Passes all `identification` group checks?,FAIL,,, +QA,% Cumulative NaN and Inf and fill and near-zero pixels under threshold?,PASS,,,RSLC_L_A_HH backscatter: If a 'FAIL' then all histogram bin counts are zero. This likely indicates that the raster contained no valid data. Note: check performed on decimated raster not full raster. +QA,% Cumulative NaN and Inf and fill and near-zero pixels under threshold?,PASS,,,RSLC_L_A_HH phase: If a 'FAIL' then all histogram bin counts are zero. This likely indicates that the raster contained no valid data. Note: check performed on decimated raster not full raster. +QA,QA completed with no exceptions?,PASS,,, +``` + +Here are the same example RSLC QA Summary CSV contents, visualized in a table: + + +| Tool | Check | Result | Threshold | Actual | Notes | +| :---: | ------- | :---: | :----: | :---: | --------- | +| QA | Able to open input NISAR file? | PASS | | | +| QA | Metadata cubes are valid? | FAIL | | | +| QA | Passes all `identification` group checks? | FAIL | | | +| QA | % Cumulative NaN and Inf and fill and near-zero pixels under threshold? | PASS | | | RSLC_L_A_HH backscatter: If a 'FAIL' then all histogram bin counts are zero. This likely indicates that the raster contained no valid data. Note: check performed on decimated raster not full raster. +| QA | % Cumulative NaN and Inf and fill and near-zero pixels under threshold? | PASS | | | RSLC_L_A_HH phase: If a 'FAIL' then all histogram bin counts are zero. This likely indicates that the raster contained no valid data. Note: check performed on decimated raster not full raster. +| QA | QA completed with no exceptions? | PASS | | | + +Here is an example RIFG QA Summary CSV contents, visualized in a table: + +| Tool | Check | Result | Threshold | Actual | Notes | +| :---: | ------- | :---: | :----: | :---: | --------- | +| QA | Able to open input NISAR file? | PASS | | | | +| QA | Metadata cubes are valid? | PASS | | | | +| QA | Passes all `identification` group checks? | FAIL | | | | +| QA | % NaN pixels under threshold? | PASS | 95.0 | 0.00 | RIFG_L_A_interferogram_HH_wrappedInterferogram | +| QA | % Cumulative NaN and Inf and fill and near-zero pixels under threshold? | PASS | 95.0 | 0.00 | RIFG_L_A_interferogram_HH_wrappedInterferogram | +| QA | % NaN pixels under threshold? | PASS | 95.0 | 0.03 | RIFG_L_A_interferogram_HH_coherenceMagnitude | +| QA | % Cumulative NaN and Inf and fill and near-zero pixels under threshold? | PASS | 95.0 | 0.03 | RIFG_L_A_interferogram_HH_coherenceMagnitude | +| QA | % NaN pixels under threshold? | PASS | 95.0 | 0.14 | RIFG_L_A_pixelOffsets_HH_alongTrackOffset | +| QA | % Cumulative NaN and Inf and fill and near-zero pixels under threshold? | PASS | 95.0 | 0.14 | RIFG_L_A_pixelOffsets_HH_alongTrackOffset | +| QA | % NaN pixels under threshold? | PASS | 95.0 | 0.00 | RIFG_L_A_pixelOffsets_HH_slantRangeOffset | +| QA | % Cumulative NaN and Inf and fill and near-zero pixels under threshold? | PASS | 95.0 | 0.00 | RIFG_L_A_pixelOffsets_HH_slantRangeOffset | +| QA | % NaN pixels under threshold? | PASS | 95.0 | 0.00 | RIFG_L_A_pixelOffsets_HH_correlationSurfacePeak | +| QA | % Cumulative NaN and Inf and fill and near-zero pixels under threshold? | PASS | 95.0 | 0.00 | RIFG_L_A_pixelOffsets_HH_correlationSurfacePeak | +| QA | QA completed with no exceptions? | PASS | | | + + +## Example QA Summary CSV with Fatal Error + +Here are the contents of an example QA Summary CSV for an input file +with a fatal error, visualized in a table: + +| Tool | Check | Result | Threshold | Actual | Notes +| :---: | ------- | :---: | :----: | :---: | --------- | +| QA | Able to open input NISAR file? | PASS | | | +| QA | Coordinate grid metadata cubes are valid? | PASS | | | +| QA | Calibration information LUTs are valid? | PASS | | | `crosstalk` LUTs skipped. +| QA | Passes all `identification` group checks? | FAIL | | | +| QA | QA completed with no exceptions? | FAIL | | | diff --git a/docs/product_specs/03_browse_png_kml.md b/docs/product_specs/03_browse_png_kml.md new file mode 100644 index 0000000..7c2af92 --- /dev/null +++ b/docs/product_specs/03_browse_png_kml.md @@ -0,0 +1,213 @@ + +# Browse Products (PNG + KML) + +## Overview +The browse images are designed to provide a quick, intuitive representation +and visualization of the science content of an input L1/L2 granule. +Their sidecar KML files allow for quick visualization in GIS software. +During generation of the PNGs, image processing is applied to meets +these goals; unlike the source L1/L2 science data products, the PNG's +pixel values should not be used for analysis. +PNGs are either grayscale or RBGA, with transparency. + +Note that during processing, the QA software multilooks and/or decimates +the original raster from the full-size L1/L2 science granule down to +the smaller size needed for the browse image PNG. During this reduction, +best effort is made to so that the pixels in the final PNG are +"approximately square pixels", meaning that each side of the pixel +represents approximately the same number of meters on the ground. +To simplify this reduction, rows and/or columns in the original science data +raster are often truncated. + +_Images in this section are from NISAR surrogate data generated +from either ALOS/PALSAR data or from ALOS-2/PALSAR-2 data (as noted). +The original ALOS/PALSAR data products are provided by JAXA. The original +ALOS-2/PALSAR-2 data products are provided by JAXA._ + +## RSLC and GSLC Browse Image +RSLC and GSLC browse images are generated from the SLC image layer(s). +The image layer(s) are multilooked and image processed to produce the +final PNG; the algorithm used is described in the QA report PDF: Backscatter +Images section. + +RSLC and GSLC browse images are either grayscale or RGBA. +Layer(s) used are selected based on the mode and contents of +the input granule, per the following strategy: + +* Single Pol (SP) granules: + - SP granules contain only one image layer; this will be plotted + in grayscale. +* Dual-Pol (DP) and Quasi-Quad (QQ) granules: + - All image layers for the PNG will come from a single frequency; + Frequency A has priority over Frequency B. + - Within that prioritized frequency, the available co-pol layer + ("HH" or "VV") will be assigned to the red and blue channels, and the + cross-pol layer ("HV" or "VH") will be assigned to the green channel. +* Quad-Pol (QP) granules: + - All image layers for the PNG will come from a single frequency; + Frequency A has priority over Frequency B. + - Within that prioritized frequency, the "HH" layer will be assigned to + the red channel, the "HV" layer will be assigned to the green channel, + and the "VV" layer will be assigned to the blue channel. +* Quasi-Dual (QD) granules: + - QD granules have equal bandwiths for Frequency A and Frequency B images, + allowing layers across the two frequency groups to be easily combined. + - From Frequency A, the "HH" layer is assigned to the red and blue channels. + From Frequency B, the "VV" layer is assigned to the green channel. +* Compact-Pol (CP) granules: + - For Frequency A, a grayscale image will be produced for one layer, + using prioritization order: ['RH','RV','LH','LV'] +* If none of the above cases are met (such as for an off-nominal granule +configuration), then a grayscale image of one of the available +image layers is produced. + +Reduced-resolution plots of the image layer(s) used to form +the browse image are plotted in the `REPORT.pdf`. Each plot details the +coordinates, colorbar, and more. + +Example RSLC Browse Image (reduced size), generated from ALOS/PALSAR data: + +![Example RSLC Browse Image](images/browse_RSLC_compressed.jpg) + +Example GSLC Browse Image (reduced size), generated from ALOS/PALSAR data: + +![Example GSLC Browse Image](images/BROWSE_GSLC_small.png) + + +## GCOV Browse Image +GCOV browse image are either grayscale or RGBA PNGs. +Layer(s) used are selected based on the mode and contents of the input granule, +per the following strategy: + +* Only on-diagonal term layers will be used to create the browse image. +* All image layers for the PNG will come from a single frequency; +Frequency A has priority over Frequency B. +* If only one image layer is available, it will be plotted in grayscale. +* If multiple image layers are available, color channels will be assigned +accordingly to this algorithm: + - Red channel: first available co-pol term in the list [HHHH, VVVV] + - Green channel: first in the list [HVHV, VHVH, VVVV] + - Blue channel: + - If Green is VVVV, then HHHH is assigned to the blue channel. + - Else the blue channel is assigned by the first co-pol + of the list [VVVV, HHHH]. + * If none of the above cases are met (e.g. GCOVs with only an HVHV term), + then a grayscale image of one of the available image layers is produced. + +Reduced-resolution plots of the image layer(s) used to form +the browse image are plotted in the `REPORT.pdf`. Each plot details the +coordinates, colorbar, and more. + +Example GCOV Browse Image (reduced size), generated from ALOS/PALSAR data: + +![Example GCOV Browse Image](images/BROWSE_GCOV_small.png) + + +## RIFG Browse Image +RIFG browse images are RGBA PNGs; they are generated from the Wrapped Phase +Image Layer. +A reduced-size copy of this image is plotted in the `REPORT.pdf`, +where details about the coordinates, colorbar, and more can be found. + +Example RIFG Browse Image (reduced size), generated from ALOS/PALSAR data: + +![Example RIFG Browse Image](images/browse_RIFG_compressed.jpg) + + +## RUNW and GUNW Browse Image +RUNW and GUNW browse images are RGBA PNGs; they are generated from the +Unwrapped Interferogram Layer which has been re-wrapped +to the interval [0, 7pi). +A reduced-size copy of this image is plotted in the `REPORT.pdf`, +where details about the coordinates, colorbar, and more can be found. + +Example RUNW Browse Image (reduced size), generated from ALOS/PALSAR data: + +![Example RUNW Browse Image](images/browse_RUNW_compressed.jpg) + +Example GUNW Browse Image (reduced size), generated from ALOS/PALSAR data: + +![Example GUNW Browse Image](images/browse_GUNW_compressed.jpg) + + +## ROFF and GOFF Browse Image +ROFF and GOFF browse images are RGBA PNGs; they are generated by +combining the Along Track Offsets and Slant Range Offsets layers from +one of the `layerX` groups (see next paragraph) into a single image, +overlaid with quiver-plot arrows to for quick visualization of the +magnitude and direction of movement in the scene. + +In the ROFF and GOFF offsets products, there are one or more layer groups +(e.g. `layer1`, `layer2`, etc.). Each layer group was processed with a +distinct algorithm combination, which strikes a unique balance between +the amount of noise and the coarseness of the granularity. +The priorizitation order for the selecting which layer group to use +for the browse image is 3, 2, 1, 4, 5, 6, 7. + +A reduced-size copy of the browse image is plotted in the `REPORT.pdf`, +where details about the coordinates, colorbar, additional processing +for the GOFF quiver arrows, and more can be found. + +Example ROFF Browse Image (reduced size), generated from ALOS-2/PALSAR-2 data: + +![Example ROFF Browse Image](images/BROWSE_ROFF_small.png) + +Example GOFF Browse Image (reduced size), generated from ALOS-2/PALSAR-2 data: + +![Example GOFF Browse Image](images/BROWSE_GOFF_small.png) + + +## KML Description (All Products) + +Each browse image PNG is accompanied by a sidecar KML file for +quick visualization in GIS software. + +The KML contains the longitude and latitude coordinates of the four +corner pixels of the raster layer(s) in the input L1/L2 science granule +used to generate the browse PNG. +Due to resizing and truncation while generating the PNG, the four corner +pixels of the PNG will only approximately align with the four +longitude/latitude coordinates in the KML; when plotted in GIS software +this can lead to the PNGs appearing slightly "stretched". This is expected. + +Note that for L2 geocoded products, the four longitude/latitude coordinates +correspond to the four corners of the entire input raster layer, +which includes the geocoding fill. + +QA KML files contain an `` with the relative filepath to the +corresponding Browse PNG. +Nominal NISAR KML and Browse PNG files are generated with the assumption +that they will be located in the same directory; the `` +will only contain the basename of the PNG. +If the PNG is moved to a different directory than the KML, and/or if the +PNG is renamed, then the KML must be updated with the new relative filepath +to the PNG. + +The four corner points found in the `` are set per +KML specifications, available at +https://developers.google.com/kml/documentation/kmlreference#gxlatlonquad. +Per the specifications, "Exactly four coordinate tuples have to be provided, +each consisting of floating point values for longitude and latitude. [...] +The coordinates must be specified in counter-clockwise order with the +first coordinate corresponding to the lower-left corner of the overlayed image. +The shape described by these corners must be convex." + +Contents of an example RSLC KML file: + +```xml + + + + overlay image + + overlay image + + NISAR_L1_PR_RSLC_002_030_A_019_2800_SHNA_A_20081127T061000_20081127T061014_D00404_N_F_J_001.png + + + -118.443358591367,35.1738498508456 -117.69035266745301,35.2987616488343 -117.48091814387199,34.4452695936409 -118.227783291052,34.3202637394113 + + + + +``` diff --git a/docs/product_specs/04_report_pdf.md b/docs/product_specs/04_report_pdf.md new file mode 100644 index 0000000..b4ef45d --- /dev/null +++ b/docs/product_specs/04_report_pdf.md @@ -0,0 +1,55 @@ + +# Graphical Summary (PDF) + +The graphical summary PDF is provided to quickly visualize and assess +the content and quality of an L1 or L2 input granule. +It includes labeled plots, histograms, and other information +for the layers and datasets in the input granule. + +The processing parameters and computed arrays used to generate the +histograms, spectra, and other plots in the QA report PDF are stored +in the QA HDF5 file. This allows users to do analysis algorithmically +on the computed values seen in the PDFs. Please see Statistical Summary +(QA HDF5) section in this documentation for details on the datasets +stored in the QA HDF5 file. + +The contents of each PDF are customized for each L1/L2 product type, +although many features are common to multiple products. +This section of the documention is organized by product type and +then by feature. +The relevant product types noted in parentheses in the subsection titles. + +_Images in this section are from NISAR surrogate data generated +from either ALOS/PALSAR data or from ALOS-2/PALSAR-2 data (as noted). +The original ALOS/PALSAR data products are provided by JAXA. The original +ALOS-2/PALSAR-2 data products are provided by JAXA._ + + +## Cover Page (All L1/L2 products) + +The PDF cover page contains the input's Granule ID, QA software +version and processing date used to generate the PDF. +It also reports the majority of the metadata from the input granule's +`identification` group, with the exception of `boundingPolygon` and other +datasets whose string-representation length is greater than 30 characters. + +The PDF cover page also includes the following metadata: + +* `softwareVersion`: The version of the software used to generate the input +L1/L2 granule. +* `listOfPolarizations (frequency A)` and `listOfPolarizations (frequency B)`: +The list of polarizations available in the input granule per frequency. +If a given frequency group is not present, this is assigned the value `n/a`. +* (GCOV only) `listOfCovarianceTerms (frequency A)` and +`listofCovarianceTerms (frequency B)`: The list of covariance terms +available in the input granule per frequency. +If a given frequency group is not present, this is assigned the value `n/a`. + +This additional metadata is parsed from the input granule, but from locations +outside of the `identification` group. + +`boundingPolygon` (and other datasets in the `identification` group whose +string-representation length is greater than 30 characters) +will not be displayed. + +![Example QA Report PDF Cover Page](images/report_cover_page.jpg) diff --git a/docs/product_specs/04a_single_input_products.md b/docs/product_specs/04a_single_input_products.md new file mode 100644 index 0000000..9adc544 --- /dev/null +++ b/docs/product_specs/04a_single_input_products.md @@ -0,0 +1,173 @@ + +## Single-Input Products (RSLC, GSLC, GCOV) + +### Backscatter Image (RSLC, GSLC, GCOV) + +Each backscatter raster in the input granule is individually processed +and plotted in the PDF, using this strategy: + +* **Step 1:** Convert raster to power in linear units, if needed. + - RSLC and GSLC: the SLC rasters are converted via: + * $S = |Z|^2$ + - GCOV: no conversion needed, but on- and off-diagonal rasters are + prepped via: + * $S = |Z|$ + + where $S$ is the power quantity, $Z$ is the raster pixel value, and + $|\cdot|$ represents taking the absolute value. + +* **Step 2:** Multilook the raster + + - The number of looks used for the multilooking window is computed + dynamically based on the shape of the input raster, the requested + maximum size of the browse image PNG, and the pixel spacing of the + raster. Ultimately, the number of looks is optimized to maximize + the PNG resolution while staying within mission requirements, and + to generate multilooked images have roughly-square pixels. + + - The source raster is truncated to a shape which is integer multiples + of the number of looks. + +* **Step 3:** Apply image correction, if requested. + + - Image correction is dynamically applied to individual rasters, + in the following order: + + - **Step 3.i:** If requested, clip the raster's outliers to the + requested percentile interval. + + - **Step 3.ii:** If requested, convert from linear units to dB + + - **Step 3.iii:** If requested, apply gamma correction + + - Note: `vmin` and `vmax` used for the PDF's colorbar range are + determined prior to the gamma correction step. + + - The image correction settings are shown on the PDF. + +* **Step 4:** Output to files: + + - Browse PNG: The processed image array is ready for use in the + construction of the PNG; + see the Browse Products section of this document for details. + + - Report PDF: At this step, the processed image array is further + multilooked to a size that fits nicely on the PDF plot such that + no interpolation is required and the PDF's file size is reasonable. + If requested in the runconfig, pixels containing fill value are + colored e.g. blue. + +Relevant processing parameters can be found in the QA HDF5 output file. + +Example RSLC Backscatter Plot in the PDF (generated from ALOS/PALSAR data): + +![Example RSLC Backscatter Plot in the PDF](images/report_backscatter_rslc.jpg) + +Example GSLC Backscatter Plot in the PDF (generated from ALOS/PALSAR data): + +![Example GSLC Backscatter Plot in PDF](images/report_backscatter_gslc.jpg) + +Example GCOV Backscatter Plot in PDF (generated from ALOS/PALSAR data): + +![Example GCOV Backscatter Plot in the PDF](images/report_backscatter_gcov.jpg) + + +### Power Histogram (RSLC, GSLC, GCOV) + +A histogram of the power is generated for backscatter rasters in +the input granule; the histogram is plotted in the QA report PDF and its +values stored in the QA HDF5, using this strategy: + +* **Step 1:** Decimate the array per the decimation ratio in specified +in the runconfig. +* **Step 2:** Discard non-finite pixels. +* **Step 3:** Convert pixels to power in linear units, if needed. + - RSLC and GSLC: the SLC rasters are converted via: + * $S = |Z|^2$ + - GCOV: no conversion needed, but on- and off-diagonal rasters are + prepped via: + * $S = |Z|$ + + where $S$ is the power quantity, $Z$ is the raster pixel value, and + $|\cdot|$ represents taking the absolute value. +* **Step 4:** Convert from linear units to decibel. +* **Step 5:** Clip the array so that it falls within the bounds of the histogram. +* **Step 6:** Compute the histogram counts. +* **Step 7:** If requested, process counts to probability densities. +* **Step 8:** Output to files: + - Report PDF: The histogram is plotted. + - QA HDF5: Relevant processing parameters, the histogram bins, and + the computed densities (or counts), are stored. + +For each frequency group in the input granule, if multiple images are +available then their power histograms will be plotted on the +same figure in the PDF. + +Example RSLC Backscatter Power Histogram in the PDF(generated from ALOS/PALSAR data): + +![Example RSLC Backscatter Power Histogram in the PDF](images/report_power_histogram_rslc.jpg) + + +### Phase Histogram (RSLC, GSLC, GCOV off-diagonal) + +A histogram of the phase is generated for image rasters in the input granule. +For GCOV, this plot is only included if there are off-diagonal covariance +terms included in the input granule. The histogram is plotted in the +QA report PDF and its values stored in the QA HDF5, using this strategy: + +* **Step 1:** Decimate the array, per the decimation ratio in specified +in the runconfig. +* **Step 2:** Discard zero-valued pixels and non-finite pixels. +* **Step 3:** Compute the phase in units of radians or degrees, +as specified in the runconfig. +* **Step 4:** Compute the histogram counts. +* **Step 5:** If requested, process counts to probability densities. +* **Step 6:** Output to files: + - Report PDF: The histogram is plotted. + - QA HDF5: Relevant processing parameters, the histogram bins, + and the computed densities (or counts), are stored. + +For each frequency group in the input granule, if there are multiple +images available then their phase histograms will be plotted on the +same figure in the PDF. + +Example RSLC Phase Histogram in the PDF (generated from ALOS/PALSAR data): + +![Example RSLC Phase Histogram in the PDF](images/report_phase_histogram_rslc.jpg) + + +### Range Power Spectra (RSLC) + +For each frequency group in the input granule, a range power spectra +plot is provided. If there are multiple polarization images available +in a frequency group then their range power spectra will be plotted +on the same figure in the PDF. The arrays of the frequency bins and +range power spectral density are stored in the QA HDF5. + +By default, every 8th range line is used to compute the range +spectra for computational efficiency. +The actual decimation stride along the azimuth axis used to compute the +range spectra can be found in the QA processing parameters in the QA HDF5. + +Example RSLC Range Power Spectra in the PDF (generated from ALOS/PALSAR data): + +![Example RSLC Range Power Spectra in the PDF](images/report_range_spectra_rslc.jpg) + + +### Azimuth Power Spectra (RSLC) + +For each frequency group in the input granule, azimuth power spectra +plots are provided. If there are multiple polarization images available +in a frequency group then their azimuth power spectra will be plotted +on the same figure in the PDF. The arrays of the frequency bins and +azimuth power spectral density are stored in the QA HDF5. + +Azimuth spectra will be computed by averaging contiguous range +samples for each of near-, mid-, and far-range subswaths. +These contiguous ranges sample subswaths are noted in the plots' +subtitles, and in the QA HDF5. + +Example RSLC Azimuth Power Spectra in the PDF (generated from ALOS/PALSAR data): + +![Example RSLC Azimuth Power Spectra in the PDF](images/report_az_spectra_rslc.jpg) + diff --git a/docs/product_specs/04b_caltools.md b/docs/product_specs/04b_caltools.md new file mode 100644 index 0000000..cde6662 --- /dev/null +++ b/docs/product_specs/04b_caltools.md @@ -0,0 +1,54 @@ + +### Calibration Tools (RSLC, GSLC) + +Three calibration tools will be run as part of nominal mission processing: +The Noise Equivalent Backscatter (NEB) tool, the Absolute Radiometric +Calibration (AbsCal) tool, and the Point Target Analysis (PTA) tool. + +The NEB tool is run for all RSLC granules. +The PTA and AbsCal tools are run for RSLC and/or GSLC granules over +designated calibration sites. + + +#### Noise Equivalent Backscatter (RSLC) + +The NEB calibration tool produces a 2-D lookup table which quantifies +the noise for the sensor. It is run by the L1 RSLC focusing workflow +for all granules, which stores the tool's results in the L1 RSLC HDF5. +For ease of analysis by the users, RSLC QA copies these results +from the input RSLC HDF5 granule to the RSLC QA HDF5. + +#### Absolute Radiometric Calibration tool (RSLC) (Optional) + +The AbsCal tool estimates the radiometric calibration error of targets +with known scattering properties in RSLC granules. It is run by RSLC QA, +and the results are stored in the RSLC QA HDF5. + + +#### Point Target Analysis Plots (RSLC, GSLC) (Optional) + +The PTA tool produces diagnostic plots and metrics +related to image resolution, sidelobe levels, geometric accuracy, etc. +in RSLC and GSLC granules. The PTA tool is run by RSLC QA and GSLC QA, +the results are stored in the QA report PDF and QA HDF5. + +Impulse response plots display power and phase cross-sections along +azimuth (along-track) and range (cross-track) of corner reflectors +in RSLC and GSLC image granules, and provide metrics such as +Peak-to-Sidelobe Ratio (PSLR) and Integrated Sidelobe Ratio (ISLR) +for image quality assessment. + +Example impulse response plots in the PDF (generated from ALOS/PALSAR data): + +![Example impulse response plots](images/report_pta_impulse_response_rslc.jpg) + + +Corner reflector (CR) offsets scatterplots in QA reports measure the error +between expected and apparent positions of surveyed targets in both +range-Doppler and geocoded image granules in order to calibrate azimuth +and range delays and evaluate geolocation accuracy. + +Example CR offsets scatterplots in the PDF (generated from ALOS/PALSAR data): + +![Example CR offsets scatterplots](images/report_pta_cr_offsets_rslc.jpg) + diff --git a/docs/product_specs/04c_insar_products.md b/docs/product_specs/04c_insar_products.md new file mode 100644 index 0000000..2c8fc95 --- /dev/null +++ b/docs/product_specs/04c_insar_products.md @@ -0,0 +1,131 @@ + +## InSAR and Offsets Products (RIFG, RUNW, GUNW, ROFF, GOFF) + + +### Unwrapped Phase (RUNW, GUNW) + +Example Unwrapped Phase plots and histogram in the PDF +(generated from ALOS/PALSAR data): + +![Example Unwrapped Phase Plots in the PDF](images/report_unw_igram.jpg) + +![Example Unwrapped Phase Histogram in the PDF](images/report_unw_igram_hist.jpg) + + +### Connected Components (RUNW, GUNW) + +Example Connected Components plot and bar chart in the PDF +(generated from ALOS/PALSAR data): + +![Example Connected Components Plot in the PDF](images/report_cc.jpg) + +### Unwrapped Coherence Magnitude (RUNW, GUNW) + +Example Unwrapped Coherence Magnitude plot and histogram in the PDF +(generated from ALOS/PALSAR data): + +![Example Unwrapped Coherence Magnitude Plot in the PDF](images/report_unw_coh.jpg) + +![Example Unwrapped Coherence Magnitude Histogram in the PDF](images/report_unw_coh_hist.jpg) + + +### Wrapped Phase and Wrapped Coherence Magnitude (RIFG, GUNW) + +Note: GUNW products contain individual coherence magnitude +layers for the unwrapped phase image and for the wrapped phase image, +at postings matching the corresponding phase image. +Both coherence magnitude layers are plotted in the GUNW QA report PDF. + +Example Wrapped Phase and Wrapped Coherence Magnitude plots and +histograms in the PDF (generated from ALOS/PALSAR data): + +![Example Wrapped Phase and Wrapped Coherence Magnitude Plots in the PDF](images/report_wrapped_igram_coh.jpg) + +![Example Wrapped Phase and Wrapped Coherence Magnitude Histograms in the PDF](images/report_wrapped_igram_coh_hist.jpg) + + + +### Ionosphere Phase Screen and Phase Screen Uncertainty (RUNW, GUNW) + +Example Ionosphere Phase Screen and Phase Screen Uncertainty plots and +histograms in the PDF (generated from ALOS/PALSAR data): + +![Example Ionosphere Phase Screen and Phase Screen Uncertainty Plots in the PDF](images/report_iono_phs_screen.jpg) + +![Example Ionosphere Phase Screen and Phase Screen Uncertainty Histograms in the PDF](images/report_iono_phs_screen_hist.jpg) + + + +### Along Track Offsets and Slant Range Offsets (RIFG, RUNW, GUNW, ROFF, GOFF) + +Example Along Track Offsets and Slant Range Offsets plots and +histograms in the PDF (generated from ALOS-2/PALSAR-2 data): + +![Example Along Track Offsets and Slant Range Offsets Plots in the PDF](images/report_az_rng_offsets.jpg) + +![Example Along Track Offsets and Slant Range Offsets Histograms in the PDF](images/report_az_rng_offsets_hist.jpg) + + + +### Combined Azimuth and Slant Range Displacement (Quiver Plots) (ROFF, GOFF) + +ROFF: Example Combined Azimuth and Slant Range Displacement plot in the PDF +(generated from ALOS-2/PALSAR-2 data): + +![Example Combined Pixel Offsets Plot in the ROFF PDF](images/report_offsets_quiver_roff.jpg) + + +GOFF: Example Combined Azimuth and Slant Range Displacement plot in the PDF +(generated from ALOS-2/PALSAR-2 data): + +![Example Geocoded Combined Pixel Offsets Plot in the GOFF PDF](images/report_offsets_quiver_goff.jpg) + + +In both ROFF and GOFF products, the Along-Track Offset and Slant-Range +Offset layers represent displacement in the satellite’s along-track and +slant range directions, respectively. + +For GOFF products, although these layers are geocoded onto a projected +coordinate grid, their pixel values still represent offsets from the +satellite’s perspective — that is, in the range-Doppler coordinate system. +These pixel values do not represent displacements in the projected (map) +coordinate grid. + +Because of this distinction, the quiver plots in the GOFF Browse Image PNG +and QA PDF products undergo additional processing. Similar to ROFF +products, the quiver plot background image (and associated colorbar) +displays the combined displacement magnitude in radar coordinates to +accurately reflect the underlying offsets layers. + +However, for visualization purposes, the GOFF QA SAS applies an additional +transformation to the quiver arrows so that they indicate the direction +and relative magnitude of the combined X and Y displacements in projected +coordinates (i.e., on the geocoded grid). + + +### Cross Offset Variance and Correlation Surface Peak (RIFG, RUNW, GUNW, ROFF, GOFF) + +Cross Offset Variance is only available in ROFF and GOFF products. +Correlation Surface Peak is available in all RIFG, RUNW, GUNW, ROFF, +GOFF products. + +Example Cross Offset Variance and Correlation Surface Peak plots and +histograms in the PDF (generated from ALOS-2/PALSAR-2 data): + +![Example Cross Offset Variance and Correlation Surface Peak Plots in the PDF](images/report_offsets_cov_and_surf_peak.jpg) + +![Example Cross Offset Variance and Correlation Surface Peak Histograms in the PDF](images/report_offsets_cov_and_surf_peak_hist.jpg) + + + +### Along Track and Slant Range Offset Variance (ROFF, GOFF) + +Example Along Track and Slant Range Offset Variance plots and +histograms in the PDF (generated from ALOS-2/PALSAR-2 data): + +![Example Along Track and Slant Range Offset Variance Plots in the PDF](images/report_offsets_variance.jpg) + +![Example Along Track and Slant Range Offset Variance Histograms in the PDF](images/report_offsets_variance_hist.jpg) + + + diff --git a/docs/product_specs/05_stats_h5.md b/docs/product_specs/05_stats_h5.md new file mode 100644 index 0000000..2b63726 --- /dev/null +++ b/docs/product_specs/05_stats_h5.md @@ -0,0 +1,42 @@ + +# Statistical Summary (QA HDF5) + +The QA HDF5 file (See Appendix A [RD1]) contains a variety of metadata about the +input L1/L2 granule, including: + +* Statistics and metrics of the layers and datasets. +* The computed arrays used to generate the histograms and other +plots in the QA report PDF. +* A copy of the final QA runconfig YAML, with all default values populated. + - Additional processing parameters dynamically calculated and/or used + by QA are provided as separate metadata. +* A copy of the input granule's `runConfigurationContents` dataset. + - Note: QA copies this dataset's contents as-is, with no further processing. + The format (e.g. JSON, YAML) may differ depending on the L1/L2 product type. +* A copy of the input L1/L2 granule's `identification` group + - Note: The QA HDF5's `/science/LSAR/identification/` group + is a copy of the input L1/L2 granule's group. + - For the QA-specific software version, processing datetime, and + run configuration contents, please see the + `/science/LSAR/QA/processing/` group. + +The contents of the QA HDF5 for each L1/L2 product type are documented in the +subsequent subsections. + +The top of each subsection notes all possible frequencies, polarizations, +covariance terms, etc. which could appear in QA HDF5s for that particular +product type. The tables in each subsection note all possible datasets +that could appear; for brevity of the documentation, only one +combination of frequency/polarization/etc. for each dataset is included. + +The final contents of each QA HDF5 reflect the contents of its +input L1/L2 granule. + +For example: + * If the input granule contains data for Frequency A and Frequency B, + then the QA HDF5 will similarly contain data for Frequency A and Frequency B. + * If the input granule does not include VV polarization, then the QA HDF5 + will similarly not contain VV polarization. + * If the input RSLC granule is not over a designated calibration site, + then there will be no results from the PTA and AbsCal calibration tools. + diff --git a/docs/product_specs/05a_rslc_qa_hdf5_spec.md b/docs/product_specs/05a_rslc_qa_hdf5_spec.md new file mode 100644 index 0000000..1455ddd --- /dev/null +++ b/docs/product_specs/05a_rslc_qa_hdf5_spec.md @@ -0,0 +1,436 @@ + +## RSLC QA HDF5 Contents + +Each QA HDF5 file includes a subset of the available options below, which will correspond to the available frequencies, polarizations, etc. in the input RSLC granule. + +* Possible Frequency groups: `frequencyA`, `frequencyB` + +* Possible Polarization groups: `HH`, `VV`, `HV`, `VH`, `RH`, `RV`, `LH`, `LV` + +* Possible CalTools groups: `pointTargetAnalyzer`, `absoluteRadiometricCalibration`, `noiseEquivalentBackscatter` + - Note: PTA and AbsCal results only possible for granules over designated calibration sites. + + +| | RSLC QA HDF5 Datasets, Attributes, and Additional Metadata | +| :---: | --------------------------------------- | +| Path | **`/` _(Root Group - Global Attributes)_** | +| | _contact:_ nisar-sds-ops@jpl.nasa.gov | +| | _institution:_ NASA JPL | +| | _mission_name:_ NISAR | +| | _reference_document:_ D-107726 NASA SDS Product Specification for Level-1 and Level-2 Quality Assurance | +| | _title:_ NISAR Quality Assurance Statistical Summary of RSLC HDF5 Product | +| | | | +| Path | **`science/LSAR/QA/data/azimuthSpectraFrequencies`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Frequency coordinates for azimuth power spectra. | +| | _units:_ hertz | +| Path | **`science/LSAR/QA/data/frequencyA/HH/azimuthPowerSpectralDensityFarRange`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized azimuth power spectral density for Frequency A, Polarization HH Far-Range. | +| | _subswathStartIndex:_ Starting index for the subswath used to generate this plot | +| | _subswathStopIndex:_ Stopping index for the subswath used to generate this plot | +| | _units:_ decibel re 1/hertz | +| Path | **`science/LSAR/QA/data/frequencyA/HH/azimuthPowerSpectralDensityMidRange`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized azimuth power spectral density for Frequency A, Polarization HH Mid-Range. | +| | _subswathStartIndex:_ Starting index for the subswath used to generate this plot | +| | _subswathStopIndex:_ Stopping index for the subswath used to generate this plot | +| | _units:_ decibel re 1/hertz | +| Path | **`science/LSAR/QA/data/frequencyA/HH/azimuthPowerSpectralDensityNearRange`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized azimuth power spectral density for Frequency A, Polarization HH Near-Range. | +| | _subswathStartIndex:_ Starting index for the subswath used to generate this plot | +| | _subswathStopIndex:_ Stopping index for the subswath used to generate this plot | +| | _units:_ decibel re 1/hertz | +| Path | **`science/LSAR/QA/data/frequencyA/HH/backscatterHistogramDensity`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the backscatter image histogram | +| | _units:_ 1/dB | +| Path | **`science/LSAR/QA/data/frequencyA/HH/max_imag_value`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Maximum value of the imaginary component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/HH/max_real_value`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Maximum value of the real component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/HH/mean_imag_value`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Arithmetic average of the imaginary component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/HH/mean_real_value`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Arithmetic average of the real component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/HH/min_imag_value`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Minimum value of the imaginary component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/HH/min_real_value`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Minimum value of the real component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/HH/phaseHistogramDensity`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the phase histogram | +| | _units:_ 1/radians | +| Path | **`science/LSAR/QA/data/frequencyA/HH/rangePowerSpectralDensity`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized range power spectral density for Frequency A, Polarization HH. | +| | _units:_ decibel re 1/hertz | +| Path | **`science/LSAR/QA/data/frequencyA/HH/sample_stddev_imag`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Standard deviation of the imaginary component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/HH/sample_stddev_real`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Standard deviation of the real component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/listOfPolarizations`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ Polarizations for Frequency A discovered in input NISAR product by QA code | +| Path | **`science/LSAR/QA/data/frequencyA/rangeSpectraFrequencies`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Frequency coordinates for Frequency A range power spectra. | +| | _units:_ megahertz | +| Path | **`science/LSAR/QA/processing/QAProcessingDateTime`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ QA processing date and time (in UTC) in the format YYYY-mm-ddTHH:MM:SS | +| Path | **`science/LSAR/QA/processing/QASoftwareVersion`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ QA software version used for processing | +| Path | **`science/LSAR/QA/processing/azimuthSpectraColumnsPerSubswath`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** int64 | +| | _description:_ Number of columns (i.e. range samples) used to compute the azimuth spectra for each subswath (near-range, mid-range, and far-range). | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/backscatterImageGammaCorrection`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Gamma correction parameter applied to backscatter and browse image(s). Dataset will be type float if gamma was applied, otherwise it is the string 'None' | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/backscatterImageNlooksFreqA`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** int64 | +| | _description:_ Number of looks along [\,\] axes of Frequency A image arrays for multilooking the backscatter and browse images. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/backscatterImagePercentileClipped`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Percentile range that the image array was clipped to and that the colormap covers | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/backscatterImageUnits`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Units of the backscatter image. | +| Path | **`science/LSAR/QA/processing/histogramDecimationRatio`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** int64 | +| | _description:_ Image decimation strides used to compute backscatter and phase histograms. Format: [\, \] | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/histogramEdgesBackscatter`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Bin edges (including endpoint) for backscatter histogram | +| | _units:_ dB | +| Path | **`science/LSAR/QA/processing/histogramEdgesPhase`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Bin edges (including endpoint) for phase histogram | +| | _units:_ radians | +| Path | **`science/LSAR/QA/processing/rangeSpectraDecimationAlongAzimuth`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** int64 | +| | _description:_ Decimation stride along the azimuth axis used to compute the range spectra. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/runConfigurationContents`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Contents of the run configuration file with parameters used for QA processing | +| Path | **`science/LSAR/RFI/data/frequencyA/HH/rfiLikelihood`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Severity of radio frequency interference (RFI) contamination in the data. Value is in the interval [0,1], where 0: lowest severity, and 1: highest severity (or NaN if RFI detection was skipped) | +| | _units:_ 1 | +| Path | **`science/LSAR/absoluteRadiometricCalibration/data/frequencyA/HH/absoluteCalibrationFactor`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The absolute radiometric calibration error for the corner reflector (the ratio of the measured RCS to the predicted RCS), in linear units | +| | _units:_ 1 | +| Path | **`science/LSAR/absoluteRadiometricCalibration/data/frequencyA/HH/cornerReflectorId`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ The unique identifier of the corner reflector | +| Path | **`science/LSAR/absoluteRadiometricCalibration/data/frequencyA/HH/cornerReflectorSurveyDate`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ The date (and time) when the corner reflector was surveyed most recently prior to the radar observation, as a string in ISO 8601 format | +| Path | **`science/LSAR/absoluteRadiometricCalibration/data/frequencyA/HH/cornerReflectorVelocity`** | +| | RSLC QA dataset, **ndim:** 2-D array, **dtype:** float64 | +| | _description:_ The corner reflector velocity due to tectonic plate motion, as an East-North-Up (ENU) vector in meters per second (m/s). The velocity components are provided in local ENU coordinates with respect to the WGS 84 reference ellipsoid | +| | _units:_ meters per second | +| Path | **`science/LSAR/absoluteRadiometricCalibration/data/frequencyA/HH/elevationAngle`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Antenna elevation angle, in radians, measured w.r.t. antenna boresight, increasing toward the far-range direction and decreasing (becoming negative) toward the near-range direction | +| | _units:_ radians | +| Path | **`science/LSAR/absoluteRadiometricCalibration/data/frequencyA/HH/radarObservationDate`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ The radar observation date and time of the corner reflector in UTC, as a string in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/absoluteRadiometricCalibration/processing/numSamplesChip`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** int64 | +| | _description:_ The width, in samples, of the square block of image data centered around the target position used for oversampling and peak finding. | +| | _units:_ samples | +| Path | **`science/LSAR/absoluteRadiometricCalibration/processing/numSamplesFit`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** int64 | +| | _description:_ The width, in *oversampled* samples, of the square sub-block of image data centered around the target position used for fitting a quadratic polynomial to the peak. | +| | _units:_ samples | +| Path | **`science/LSAR/absoluteRadiometricCalibration/processing/peakFindDomain`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Option controlling how the target peak position was estimated. | +| Path | **`science/LSAR/absoluteRadiometricCalibration/processing/powerMethod`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Method used to estimate the target signal power. | +| Path | **`science/LSAR/absoluteRadiometricCalibration/processing/powerThreshold`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ The minimum power threshold, measured in dB below the peak power, used to estimate the target signal power if the integrated power method was used. | +| | _units:_ dB | +| Path | **`science/LSAR/absoluteRadiometricCalibration/processing/upsampleFactor`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** int64 | +| | _description:_ The upsampling ratio. | +| | _units:_ 1 | +| Path | **`science/LSAR/identification/absoluteOrbitNumber`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Absolute orbit number | +| Path | **`science/LSAR/identification/boundingPolygon`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ OGR compatible WKT representing the bounding polygon of the image. Horizontal coordinates are WGS84 longitude followed by latitude (both in degrees), and the vertical coordinate is the height above the WGS84 ellipsoid in meters. The first point corresponds to the start-time, near-range radar coordinate, and the perimeter is traversed in counterclockwise order on the map. This means the traversal order in radar coordinates differs for left-looking and right-looking sensors. The polygon includes the four corners of the radar grid, with equal numbers of points distributed evenly in radar coordinates along each edge | +| | _epsg:_ EPSG code | +| | _ogr_geometry:_ polygon | +| Path | **`science/LSAR/identification/compositeReleaseId`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Unique version identifier of the science data production system | +| Path | **`science/LSAR/identification/diagnosticModeFlag`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** uint8 | +| | _description:_ Indicates if the radar operation mode is a diagnostic mode (1-2) or DBFed science (0): 0, 1, or 2 | +| Path | **`science/LSAR/identification/frameNumber`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** uint16 | +| | _description:_ Frame number | +| Path | **`science/LSAR/identification/granuleId`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Unique granule identification name | +| Path | **`science/LSAR/identification/instrumentName`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Name of the instrument used to collect the remote sensing data provided in this product | +| Path | **`science/LSAR/identification/isDithered`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if the pulse timing was varied (dithered) during acquisition, "False" otherwise. | +| Path | **`science/LSAR/identification/isFullFrame`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if the product fully covers a NISAR frame, "False" if partial coverage | +| | _frameCoveragePercentage:_ Percentage of NISAR frame containing processed data | +| | _thresholdPercentage:_ Threshold percentage used to determine if the product is full frame or partial frame | +| Path | **`science/LSAR/identification/isGeocoded`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Flag to indicate if the product data is in the radar geometry ("False") or in the map geometry ("True") | +| Path | **`science/LSAR/identification/isJointObservation`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if any portion of this product was acquired in a joint observation mode (e.g., L-band and S-band simultaneously), "False" otherwise | +| Path | **`science/LSAR/identification/isMixedMode`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if this product is a composite of data collected in multiple radar modes, "False" otherwise. | +| Path | **`science/LSAR/identification/isUrgentObservation`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Flag indicating if observation is nominal ("False") or urgent ("True") | +| Path | **`science/LSAR/identification/listOfFrequencies`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of frequency layers available in the product | +| Path | **`science/LSAR/identification/lookDirection`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Look direction, either "Left" or "Right" | +| Path | **`science/LSAR/identification/missionId`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Mission identifier | +| Path | **`science/LSAR/identification/orbitPassDirection`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Orbit direction, either "Ascending" or "Descending" | +| Path | **`science/LSAR/identification/plannedDatatakeId`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of planned datatakes included in the product | +| Path | **`science/LSAR/identification/plannedObservationId`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of planned observations included in the product | +| Path | **`science/LSAR/identification/processingCenter`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Data processing center | +| Path | **`science/LSAR/identification/processingDateTime`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Processing date and time (in UTC) in the format YYYY-mm-ddTHH:MM:SS | +| Path | **`science/LSAR/identification/processingType`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Nominal (or) Urgent (or) Custom (or) Undefined | +| Path | **`science/LSAR/identification/productDoi`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Digital Object Identifier (DOI) for the product | +| Path | **`science/LSAR/identification/productLevel`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product level. L0A: Unprocessed instrument data; L0B: Reformatted, unprocessed instrument data; L1: Processed instrument data in radar coordinates system; and L2: Processed instrument data in geocoded coordinates system | +| Path | **`science/LSAR/identification/productSpecificationVersion`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product specification version which represents the schema of this product | +| Path | **`science/LSAR/identification/productType`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product type | +| Path | **`science/LSAR/identification/productVersion`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product version which represents the structure of the product and the science content governed by the algorithm, input data, and processing parameters | +| Path | **`science/LSAR/identification/radarBand`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Acquired frequency band, either "L" or "S" | +| Path | **`science/LSAR/identification/trackNumber`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Track number | +| Path | **`science/LSAR/identification/zeroDopplerEndTime`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth stop time (in UTC) of the product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/zeroDopplerStartTime`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth start time (in UTC) of the product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/noiseEquivalentBackscatter/data/frequencyA/HH`** | +| | RSLC QA dataset, **ndim:** 2-D array, **dtype:** float32 | +| | _description:_ Noise equivalent backscatter in linear scale (units of DN^2) | +| | _units:_ 1 | +| Path | **`science/LSAR/noiseEquivalentBackscatter/data/frequencyA/slantRange`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Slant range dimension corresponding to calibration noiseEquivalentBackscatter records | +| | _units:_ meters | +| Path | **`science/LSAR/noiseEquivalentBackscatter/data/frequencyA/zeroDopplerTime`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Zero Doppler time since UTC epoch dimension corresponding to calibration noiseEquivalentBackscatter records | +| | _units:_ seconds since YYYY-mm-ddTHH:MM:SS | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/azimuthIRF/ISLR`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The integrated sidelobe ratio (ISLR) of the azimuth impulse response function (IRF), in decibels (dB). A measure of the ratio of energy in the sidelobes to the energy in the main lobe. If `predict_null` was true, the first sidelobe will be considered part of the main lobe and the ISLR will instead measure the ratio of energy in the remaining sidelobes to the energy in the main lobe + first sidelobe | +| | _units:_ 1 | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/azimuthIRF/PSLR`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The peak-to-sidelobe ratio (PSLR) of the azimuth impulse response function (IRF), in decibels (dB). A measure of the ratio of peak sidelobe power to the peak main lobe power | +| | _units:_ 1 | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/azimuthIRF/cut/index`** | +| | RSLC QA dataset, **ndim:** 2-D array, **dtype:** float64 | +| | _description:_ The azimuth sample indices of the magnitude and phase cut values | +| | _units:_ samples | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/azimuthIRF/cut/magnitude`** | +| | RSLC QA dataset, **ndim:** 2-D array, **dtype:** float64 | +| | _description:_ The magnitude of the (upsampled) impulse response function (IRF) in azimuth | +| | _units:_ 1 | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/azimuthIRF/cut/phase`** | +| | RSLC QA dataset, **ndim:** 2-D array, **dtype:** float64 | +| | _description:_ The phase of the (upsampled) impulse response function (IRF) in azimuth | +| | _units:_ radians | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/azimuthIRF/resolution`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The measured 3dB width of the azimuth impulse response function (IRF), in samples | +| | _units:_ samples | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/azimuthPosition/peakIndex`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The real-valued azimuth index, in samples, of the estimated peak location of the impulse response function (IRF) within the RSLC image grid | +| | _units:_ samples | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/azimuthPosition/peakOffset`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The error in the predicted target location in the azimuth direction, in samples. Equal to the signed difference between the measured location of the impulse response peak in the RSLC data and the predicted location of the peak based on the surveyed corner reflector location | +| | _units:_ samples | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/azimuthPosition/phaseSlope`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The estimated local azimuth phase slope at the target location, in radians per sample | +| | _units:_ radians per sample | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/cornerReflectorId`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ The unique identifier of the corner reflector | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/cornerReflectorSurveyDate`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ The date (and time) when the corner reflector was surveyed most recently prior to the radar observation, as a string in ISO 8601 format | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/cornerReflectorValidity`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** int64 | +| | _description:_ The integer validity code of the corner reflector. Refer to the NISAR Corner Reflector Software Interface Specification (SIS) document for details | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/cornerReflectorVelocity`** | +| | RSLC QA dataset, **ndim:** 2-D array, **dtype:** float64 | +| | _description:_ The corner reflector velocity due to tectonic plate motion, as an East-North-Up (ENU) vector in meters per second (m/s). The velocity components are provided in local ENU coordinates with respect to the WGS 84 reference ellipsoid | +| | _units:_ meters per second | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/elevationAngle`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Antenna elevation angle, in radians, measured w.r.t. antenna boresight, increasing toward the far-range direction and decreasing (becoming negative) toward the near-range direction | +| | _units:_ radians | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/peakMagnitude`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The peak magnitude of the impulse response | +| | _units:_ 1 | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/peakPhase`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The phase at the peak location, in radians | +| | _units:_ radians | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/radarObservationDate`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ The radar observation date and time of the corner reflector in UTC, as a string in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/rangeIRF/ISLR`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The integrated sidelobe ratio (ISLR) of the range impulse response function (IRF), in decibels (dB). A measure of the ratio of energy in the sidelobes to the energy in the main lobe. If `predict_null` was true, the first sidelobe will be considered part of the main lobe and the ISLR will instead measure the ratio of energy in the remaining sidelobes to the energy in the main lobe + first sidelobe | +| | _units:_ 1 | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/rangeIRF/PSLR`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The peak-to-sidelobe ratio (PSLR) of the range impulse response function (IRF), in decibels (dB). A measure of the ratio of peak sidelobe power to the peak main lobe power | +| | _units:_ 1 | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/rangeIRF/cut/index`** | +| | RSLC QA dataset, **ndim:** 2-D array, **dtype:** float64 | +| | _description:_ The range sample indices of the magnitude and phase cut values | +| | _units:_ samples | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/rangeIRF/cut/magnitude`** | +| | RSLC QA dataset, **ndim:** 2-D array, **dtype:** float64 | +| | _description:_ The magnitude of the (upsampled) impulse response function (IRF) in range | +| | _units:_ 1 | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/rangeIRF/cut/phase`** | +| | RSLC QA dataset, **ndim:** 2-D array, **dtype:** float64 | +| | _description:_ The phase of the (upsampled) impulse response function (IRF) in range | +| | _units:_ radians | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/rangeIRF/resolution`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The measured 3dB width of the range impulse response function (IRF), in samples | +| | _units:_ samples | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/rangePosition/peakIndex`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The real-valued range index, in samples, of the estimated peak location of the impulse response function (IRF) within the RSLC image grid | +| | _units:_ samples | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/rangePosition/peakOffset`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The error in the predicted target location in the range direction, in samples. Equal to the signed difference between the measured location of the impulse response peak in the RSLC data and the predicted location of the peak based on the surveyed corner reflector location | +| | _units:_ samples | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/rangePosition/phaseSlope`** | +| | RSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The estimated local range phase slope at the target location, in radians per sample | +| | _units:_ radians per sample | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/sceneCenterAlongTrackSpacing`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Nominal along track spacing in meters between consecutive lines near mid swath of the RSLC image | +| | _units:_ meters | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/slantRangeSpacing`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Slant range spacing of grid | +| | _units:_ meters | +| Path | **`science/LSAR/pointTargetAnalyzer/processing/numSamplesChip`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** int64 | +| | _description:_ The width, in samples, of the square block of image data centered around the target position used for oversampling and peak finding. | +| | _units:_ samples | +| Path | **`science/LSAR/pointTargetAnalyzer/processing/numSidelobesISLR`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** int64 | +| | _description:_ The number of sidelobes, including the main lobe, used to compute the integrated sidelobe ratio (ISLR). | +| Path | **`science/LSAR/pointTargetAnalyzer/processing/peakFindDomain`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Option controlling how the target peak position was estimated. | +| Path | **`science/LSAR/pointTargetAnalyzer/processing/predictNullISLR`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ How the main lobe null locations were determined for ISLR computation. If True, the main lobe was considered to include the first sidelobe and the null locations were predicted analytically. Otherwise, the main lobe null locations were estimated from the RSLC data. | +| Path | **`science/LSAR/pointTargetAnalyzer/processing/samplingRateBandwidthRatio`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Assumed ratio of sampling rate to bandwidth in the RSLC image data. | +| | _units:_ 1 | +| Path | **`science/LSAR/pointTargetAnalyzer/processing/upsampleFactor`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** int64 | +| | _description:_ The upsampling ratio. | +| | _units:_ 1 | +| Path | **`science/LSAR/pointTargetAnalyzer/processing/windowShape`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Assumed window shape parameter used in RSLC formation. | +| | _units:_ 1 | +| Path | **`science/LSAR/pointTargetAnalyzer/processing/windowType`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Assumed window type used in RSLC formation. | +| Path | **`science/LSAR/sourceData/runConfigurationContents`** | +| | RSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Contents of the run configuration file associated with the processing of the source data | + + diff --git a/docs/product_specs/05b_gslc_qa_hdf5_spec.md b/docs/product_specs/05b_gslc_qa_hdf5_spec.md new file mode 100644 index 0000000..7807999 --- /dev/null +++ b/docs/product_specs/05b_gslc_qa_hdf5_spec.md @@ -0,0 +1,332 @@ + +## GSLC QA HDF5 Contents + +Each QA HDF5 file includes a subset of the available options below, which will correspond to the available frequencies, polarizations, etc. in the input GSLC granule. + +* Possible Frequency groups: `frequencyA`, `frequencyB` + +* Possible Polarization groups: `HH`, `VV`, `HV`, `VH`, `RH`, `RV`, `LH`, `LV` + +* Possible CalTools groups: `pointTargetAnalyzer` + - Note: PTA results only possible for granules over designated calibration sites. + + +| | GSLC QA HDF5 Datasets, Attributes, and Additional Metadata | +| :---: | --------------------------------------- | +| Path | **`/` _(Root Group - Global Attributes)_** | +| | _contact:_ nisar-sds-ops@jpl.nasa.gov | +| | _institution:_ NASA JPL | +| | _mission_name:_ NISAR | +| | _reference_document:_ D-107726 NASA SDS Product Specification for Level-1 and Level-2 Quality Assurance | +| | _title:_ NISAR Quality Assurance Statistical Summary of GSLC HDF5 Product | +| | | | +| Path | **`science/LSAR/QA/data/frequencyA/HH/backscatterHistogramDensity`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the backscatter image histogram | +| | _units:_ 1/dB | +| Path | **`science/LSAR/QA/data/frequencyA/HH/max_imag_value`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Maximum value of the imaginary component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/HH/max_real_value`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Maximum value of the real component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/HH/mean_imag_value`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Arithmetic average of the imaginary component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/HH/mean_real_value`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Arithmetic average of the real component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/HH/min_imag_value`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Minimum value of the imaginary component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/HH/min_real_value`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Minimum value of the real component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/HH/phaseHistogramDensity`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the phase histogram | +| | _units:_ 1/radians | +| Path | **`science/LSAR/QA/data/frequencyA/HH/sample_stddev_imag`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Standard deviation of the imaginary component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/HH/sample_stddev_real`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Standard deviation of the real component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/listOfPolarizations`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ Polarizations for Frequency A discovered in input NISAR product by QA code | +| Path | **`science/LSAR/QA/processing/QAProcessingDateTime`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ QA processing date and time (in UTC) in the format YYYY-mm-ddTHH:MM:SS | +| Path | **`science/LSAR/QA/processing/QASoftwareVersion`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ QA software version used for processing | +| Path | **`science/LSAR/QA/processing/backscatterImageGammaCorrection`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Gamma correction parameter applied to backscatter and browse image(s). Dataset will be type float if gamma was applied, otherwise it is the string 'None' | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/backscatterImageNlooksFreqA`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** int64 | +| | _description:_ Number of looks along [\,\] axes of Frequency A image arrays for multilooking the backscatter and browse images. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/backscatterImagePercentileClipped`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Percentile range that the image array was clipped to and that the colormap covers | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/backscatterImageUnits`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Units of the backscatter image. | +| Path | **`science/LSAR/QA/processing/histogramDecimationRatio`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** int64 | +| | _description:_ Image decimation strides used to compute backscatter and phase histograms. Format: [\, \] | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/histogramEdgesBackscatter`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Bin edges (including endpoint) for backscatter histogram | +| | _units:_ dB | +| Path | **`science/LSAR/QA/processing/histogramEdgesPhase`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Bin edges (including endpoint) for phase histogram | +| | _units:_ radians | +| Path | **`science/LSAR/QA/processing/runConfigurationContents`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Contents of the run configuration file with parameters used for QA processing | +| Path | **`science/LSAR/RFI/data/frequencyA/HH/rfiLikelihood`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Severity of radio frequency interference (RFI) contamination in the data. Value is in the interval [0,1], where 0: lowest severity, and 1: highest severity (or NaN if RFI detection was skipped) | +| | _units:_ 1 | +| Path | **`science/LSAR/identification/absoluteOrbitNumber`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Absolute orbit number | +| Path | **`science/LSAR/identification/boundingPolygon`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ OGR compatible WKT representing the bounding polygon of the image. Horizontal coordinates are WGS84 longitude followed by latitude (both in degrees), and the vertical coordinate is the height above the WGS84 ellipsoid in meters. The first point corresponds to the start-time, near-range radar coordinate, and the perimeter is traversed in counterclockwise order on the map. This means the traversal order in radar coordinates differs for left-looking and right-looking sensors. The polygon includes the four corners of the radar grid, with equal numbers of points distributed evenly in radar coordinates along each edge | +| | _epsg:_ EPSG code | +| | _ogr_geometry:_ polygon | +| Path | **`science/LSAR/identification/compositeReleaseId`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Unique version identifier of the science data production system | +| Path | **`science/LSAR/identification/diagnosticModeFlag`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** uint8 | +| | _description:_ Indicates if the radar operation mode is a diagnostic mode (1-2) or DBFed science (0): 0, 1, or 2 | +| Path | **`science/LSAR/identification/frameNumber`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** uint16 | +| | _description:_ Frame number | +| Path | **`science/LSAR/identification/granuleId`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Unique granule identification name | +| Path | **`science/LSAR/identification/instrumentName`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Name of the instrument used to collect the remote sensing data provided in this product | +| Path | **`science/LSAR/identification/isDithered`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if the pulse timing was varied (dithered) during acquisition, "False" otherwise. | +| Path | **`science/LSAR/identification/isFullFrame`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if the product fully covers a NISAR frame, "False" if partial coverage | +| | _frameCoveragePercentage:_ Percentage of NISAR frame containing processed data | +| | _thresholdPercentage:_ Threshold percentage used to determine if the product is full frame or partial frame | +| Path | **`science/LSAR/identification/isGeocoded`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Flag to indicate if the product data is in the radar geometry ("False") or in the map geometry ("True") | +| Path | **`science/LSAR/identification/isJointObservation`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if any portion of this product was acquired in a joint observation mode (e.g., L-band and S-band simultaneously), "False" otherwise | +| Path | **`science/LSAR/identification/isMixedMode`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if this product is a composite of data collected in multiple radar modes, "False" otherwise. | +| Path | **`science/LSAR/identification/isUrgentObservation`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Flag indicating if observation is nominal ("False") or urgent ("True") | +| Path | **`science/LSAR/identification/listOfFrequencies`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of frequency layers available in the product | +| Path | **`science/LSAR/identification/lookDirection`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Look direction, either "Left" or "Right" | +| Path | **`science/LSAR/identification/missionId`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Mission identifier | +| Path | **`science/LSAR/identification/orbitPassDirection`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Orbit direction, either "Ascending" or "Descending" | +| Path | **`science/LSAR/identification/plannedDatatakeId`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of planned datatakes included in the product | +| Path | **`science/LSAR/identification/plannedObservationId`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of planned observations included in the product | +| Path | **`science/LSAR/identification/platformName`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Name of the platform used to collect the remote sensing data provided in this product | +| Path | **`science/LSAR/identification/processingCenter`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Data processing center | +| Path | **`science/LSAR/identification/processingDateTime`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Processing date and time (in UTC) in the format YYYY-mm-ddTHH:MM:SS | +| Path | **`science/LSAR/identification/processingType`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Nominal (or) Urgent (or) Custom (or) Undefined | +| Path | **`science/LSAR/identification/productDoi`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Digital Object Identifier (DOI) for the product | +| Path | **`science/LSAR/identification/productLevel`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product level. L0A: Unprocessed instrument data; L0B: Reformatted, unprocessed instrument data; L1: Processed instrument data in radar coordinates system; and L2: Processed instrument data in geocoded coordinates system | +| Path | **`science/LSAR/identification/productSpecificationVersion`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product specification version which represents the schema of this product | +| Path | **`science/LSAR/identification/productType`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product type | +| Path | **`science/LSAR/identification/productVersion`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product version which represents the structure of the product and the science content governed by the algorithm, input data, and processing parameters | +| Path | **`science/LSAR/identification/radarBand`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Acquired frequency band, either "L" or "S" | +| Path | **`science/LSAR/identification/trackNumber`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Track number | +| Path | **`science/LSAR/identification/zeroDopplerEndTime`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth stop time (in UTC) of the product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/zeroDopplerStartTime`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth start time (in UTC) of the product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/azimuthIRF/ISLR`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The integrated sidelobe ratio (ISLR) of the azimuth impulse response function (IRF), in decibels (dB). A measure of the ratio of energy in the sidelobes to the energy in the main lobe | +| | _units:_ 1 | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/azimuthIRF/PSLR`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The peak-to-sidelobe ratio (PSLR) of the azimuth impulse response function (IRF), in decibels (dB). A measure of the ratio of peak sidelobe power to the peak main lobe power | +| | _units:_ 1 | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/azimuthIRF/cut/index`** | +| | GSLC QA dataset, **ndim:** 2-D array, **dtype:** float64 | +| | _description:_ The azimuth sample indices of the magnitude and phase cut values | +| | _units:_ samples | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/azimuthIRF/cut/magnitude`** | +| | GSLC QA dataset, **ndim:** 2-D array, **dtype:** float64 | +| | _description:_ The magnitude of the (upsampled) impulse response function (IRF) in azimuth | +| | _units:_ 1 | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/azimuthIRF/cut/phase`** | +| | GSLC QA dataset, **ndim:** 2-D array, **dtype:** float64 | +| | _description:_ The phase of the (upsampled) impulse response function (IRF) in azimuth | +| | _units:_ radians | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/azimuthIRF/resolution`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The measured 3dB width of the azimuth impulse response function (IRF), in samples | +| | _units:_ samples | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/cornerReflectorId`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ The unique identifier of the corner reflector | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/cornerReflectorSurveyDate`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ The date (and time) when the corner reflector was surveyed most recently prior to the radar observation, as a string in ISO 8601 format | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/cornerReflectorValidity`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** int64 | +| | _description:_ The integer validity code of the corner reflector. Refer to the NISAR Corner Reflector Software Interface Specification (SIS) document for details | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/cornerReflectorVelocity`** | +| | GSLC QA dataset, **ndim:** 2-D array, **dtype:** float64 | +| | _description:_ The corner reflector velocity due to tectonic plate motion, as an East-North-Up (ENU) vector in meters per second (m/s). The velocity components are provided in local ENU coordinates with respect to the WGS 84 reference ellipsoid | +| | _units:_ meters per second | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/elevationAngle`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Antenna elevation angle, in radians, measured w.r.t. antenna boresight, increasing toward the far-range direction and decreasing (becoming negative) toward the near-range direction | +| | _units:_ radians | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/peakMagnitude`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The peak magnitude of the impulse response | +| | _units:_ 1 | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/peakPhase`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The phase at the peak location, in radians | +| | _units:_ radians | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/radarObservationDate`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ The radar observation date and time of the corner reflector in UTC, as a string in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/rangeIRF/ISLR`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The integrated sidelobe ratio (ISLR) of the range impulse response function (IRF), in decibels (dB). A measure of the ratio of energy in the sidelobes to the energy in the main lobe | +| | _units:_ 1 | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/rangeIRF/PSLR`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The peak-to-sidelobe ratio (PSLR) of the range impulse response function (IRF), in decibels (dB). A measure of the ratio of peak sidelobe power to the peak main lobe power | +| | _units:_ 1 | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/rangeIRF/cut/index`** | +| | GSLC QA dataset, **ndim:** 2-D array, **dtype:** float64 | +| | _description:_ The range sample indices of the magnitude and phase cut values | +| | _units:_ samples | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/rangeIRF/cut/magnitude`** | +| | GSLC QA dataset, **ndim:** 2-D array, **dtype:** float64 | +| | _description:_ The magnitude of the (upsampled) impulse response function (IRF) in range | +| | _units:_ 1 | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/rangeIRF/cut/phase`** | +| | GSLC QA dataset, **ndim:** 2-D array, **dtype:** float64 | +| | _description:_ The phase of the (upsampled) impulse response function (IRF) in range | +| | _units:_ radians | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/rangeIRF/resolution`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The measured 3dB width of the range impulse response function (IRF), in samples | +| | _units:_ samples | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/xPosition/peakIndex`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The real-valued X index, in samples, of the estimated peak location of the impulse response function (IRF) within the GSLC image grid | +| | _units:_ samples | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/xPosition/peakOffset`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The error in the predicted target location in the X direction, in samples. Equal to the signed difference between the measured location of the impulse response peak in the GSLC data and the predicted location of the peak based on the surveyed corner reflector location | +| | _units:_ samples | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/xPosition/phaseSlope`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The estimated local X phase slope at the target location, in radians per sample | +| | _units:_ radians per sample | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/yPosition/peakIndex`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The real-valued Y index, in samples, of the estimated peak location of the impulse response function (IRF) within the GSLC image grid | +| | _units:_ samples | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/yPosition/peakOffset`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The error in the predicted target location in the Y direction, in samples. Equal to the signed difference between the measured location of the impulse response peak in the GSLC data and the predicted location of the peak based on the surveyed corner reflector location | +| | _units:_ samples | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/HH/yPosition/phaseSlope`** | +| | GSLC QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ The estimated local Y phase slope at the target location, in radians per sample | +| | _units:_ radians per sample | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/xCoordinateSpacing`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Nominal spacing in meters between consecutive pixels | +| | _units:_ meters | +| Path | **`science/LSAR/pointTargetAnalyzer/data/frequencyA/yCoordinateSpacing`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Nominal spacing in meters between consecutive pixels | +| | _units:_ meters | +| Path | **`science/LSAR/pointTargetAnalyzer/processing/numSamplesChip`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** int64 | +| | _description:_ The width, in samples, of the square block of image data centered around the target position used for oversampling and peak finding. | +| | _units:_ samples | +| Path | **`science/LSAR/pointTargetAnalyzer/processing/numSidelobesISLR`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** int64 | +| | _description:_ The number of sidelobes, including the main lobe, used to compute the integrated sidelobe ratio (ISLR). | +| Path | **`science/LSAR/pointTargetAnalyzer/processing/peakFindDomain`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Option controlling how the target peak position was estimated. | +| Path | **`science/LSAR/pointTargetAnalyzer/processing/upsampleFactor`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** int64 | +| | _description:_ The upsampling ratio. | +| | _units:_ 1 | +| Path | **`science/LSAR/sourceData/runConfigurationContents`** | +| | GSLC QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Contents of the run configuration file associated with the processing of the source data | + + diff --git a/docs/product_specs/05c_gcov_qa_hdf5_spec.md b/docs/product_specs/05c_gcov_qa_hdf5_spec.md new file mode 100644 index 0000000..3a9ef18 --- /dev/null +++ b/docs/product_specs/05c_gcov_qa_hdf5_spec.md @@ -0,0 +1,181 @@ + +## GCOV QA HDF5 Contents + +Each QA HDF5 file includes a subset of the available options below, which will correspond to the available frequencies, polarizations, etc. in the input GCOV granule. + +* Possible Frequency groups: `frequencyA`, `frequencyB` + +* Possible On- and Off-diagonal Covariance Term groups: `HHHH`, `HVHV`, `VHVH`, `VVVV`, `RHRH`, `RVRV`, `LHLH`, `LVLV`, `HHHV`, `HHVH`, `HHVV`, `HVHH`, `HVVH`, `HVVV`, `VHHH`, `VHHV`, `VHVV`, `VVHH`, `VVHV`, `VVVH`, `RHRV`, `RVRH`, `LHLV`, `LVLH` + +* Possible Polarization groups (for e.g. calibration information): `HH`, `HV`, `VH`, `VV`, `RH`, `RV`, `LH`, `LV`, `HH`, `HH`, `HH`, `HV`, `HV`, `HV`, `VH`, `VH`, `VH`, `VV`, `VV`, `VV`, `RH`, `RV`, `LH`, `LV` + + +| | GCOV QA HDF5 Datasets, Attributes, and Additional Metadata | +| :---: | --------------------------------------- | +| Path | **`/` _(Root Group - Global Attributes)_** | +| | _contact:_ nisar-sds-ops@jpl.nasa.gov | +| | _institution:_ NASA JPL | +| | _mission_name:_ NISAR | +| | _reference_document:_ D-107726 NASA SDS Product Specification for Level-1 and Level-2 Quality Assurance | +| | _title:_ NISAR Quality Assurance Statistical Summary of GCOV HDF5 Product | +| | | | +| Path | **`science/LSAR/QA/data/frequencyA/HHHH/backscatterHistogramDensity`** | +| | GCOV QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the backscatter image histogram | +| | _units:_ 1/dB | +| Path | **`science/LSAR/QA/data/frequencyA/HHHH/max_value`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/HHHH/mean_value`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/HHHH/min_value`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/HHHH/sample_stddev`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/listOfPolarizations`** | +| | GCOV QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ Polarizations for Frequency A discovered in input NISAR product by QA code | +| Path | **`science/LSAR/QA/processing/QAProcessingDateTime`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ QA processing date and time (in UTC) in the format YYYY-mm-ddTHH:MM:SS | +| Path | **`science/LSAR/QA/processing/QASoftwareVersion`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ QA software version used for processing | +| Path | **`science/LSAR/QA/processing/backscatterImageGammaCorrection`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Gamma correction parameter applied to backscatter and browse image(s). Dataset will be type float if gamma was applied, otherwise it is the string 'None' | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/backscatterImageNlooksFreqA`** | +| | GCOV QA dataset, **ndim:** 1-D array, **dtype:** int64 | +| | _description:_ Number of looks along [\,\] axes of Frequency A image arrays for multilooking the backscatter and browse images. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/backscatterImagePercentileClipped`** | +| | GCOV QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Percentile range that the image array was clipped to and that the colormap covers | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/backscatterImageUnits`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Units of the backscatter image. | +| Path | **`science/LSAR/QA/processing/histogramDecimationRatio`** | +| | GCOV QA dataset, **ndim:** 1-D array, **dtype:** int64 | +| | _description:_ Image decimation strides used to compute backscatter and phase histograms. Format: [\, \] | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/histogramEdgesBackscatter`** | +| | GCOV QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Bin edges (including endpoint) for backscatter histogram | +| | _units:_ dB | +| Path | **`science/LSAR/QA/processing/runConfigurationContents`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Contents of the run configuration file with parameters used for QA processing | +| Path | **`science/LSAR/identification/absoluteOrbitNumber`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Absolute orbit number | +| Path | **`science/LSAR/identification/boundingPolygon`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ OGR compatible WKT representing the bounding polygon of the image. Horizontal coordinates are WGS84 longitude followed by latitude (both in degrees), and the vertical coordinate is the height above the WGS84 ellipsoid in meters. The first point corresponds to the start-time, near-range radar coordinate, and the perimeter is traversed in counterclockwise order on the map. This means the traversal order in radar coordinates differs for left-looking and right-looking sensors. The polygon includes the four corners of the radar grid, with equal numbers of points distributed evenly in radar coordinates along each edge | +| | _epsg:_ EPSG code | +| | _ogr_geometry:_ polygon | +| Path | **`science/LSAR/identification/compositeReleaseId`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Unique version identifier of the science data production system | +| Path | **`science/LSAR/identification/diagnosticModeFlag`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** uint8 | +| | _description:_ Indicates if the radar operation mode is a diagnostic mode (1-2) or DBFed science (0): 0, 1, or 2 | +| Path | **`science/LSAR/identification/frameNumber`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** uint16 | +| | _description:_ Frame number | +| Path | **`science/LSAR/identification/granuleId`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Unique granule identification name | +| Path | **`science/LSAR/identification/instrumentName`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Name of the instrument used to collect the remote sensing data provided in this product | +| Path | **`science/LSAR/identification/isDithered`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if the pulse timing was varied (dithered) during acquisition, "False" otherwise. | +| Path | **`science/LSAR/identification/isFullFrame`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if the product fully covers a NISAR frame, "False" if partial coverage | +| | _frameCoveragePercentage:_ Percentage of NISAR frame containing processed data | +| | _thresholdPercentage:_ Threshold percentage used to determine if the product is full frame or partial frame | +| Path | **`science/LSAR/identification/isGeocoded`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Flag to indicate if the product data is in the radar geometry ("False") or in the map geometry ("True") | +| Path | **`science/LSAR/identification/isJointObservation`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if any portion of this product was acquired in a joint observation mode (e.g., L-band and S-band simultaneously), "False" otherwise | +| Path | **`science/LSAR/identification/isMixedMode`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if this product is a composite of data collected in multiple radar modes, "False" otherwise. | +| Path | **`science/LSAR/identification/isUrgentObservation`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Flag indicating if observation is nominal ("False") or urgent ("True") | +| Path | **`science/LSAR/identification/listOfFrequencies`** | +| | GCOV QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of frequency layers available in the product | +| Path | **`science/LSAR/identification/lookDirection`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Look direction, either "Left" or "Right" | +| Path | **`science/LSAR/identification/missionId`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Mission identifier | +| Path | **`science/LSAR/identification/orbitPassDirection`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Orbit direction, either "Ascending" or "Descending" | +| Path | **`science/LSAR/identification/plannedDatatakeId`** | +| | GCOV QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of planned datatakes included in the product | +| Path | **`science/LSAR/identification/plannedObservationId`** | +| | GCOV QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of planned observations included in the product | +| Path | **`science/LSAR/identification/platformName`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Name of the platform used to collect the remote sensing data provided in this product | +| Path | **`science/LSAR/identification/processingCenter`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Data processing center | +| Path | **`science/LSAR/identification/processingDateTime`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Processing date and time (in UTC) in the format YYYY-mm-ddTHH:MM:SS | +| Path | **`science/LSAR/identification/processingType`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Nominal (or) Urgent (or) Custom (or) Undefined | +| Path | **`science/LSAR/identification/productDoi`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Digital Object Identifier (DOI) for the product | +| Path | **`science/LSAR/identification/productLevel`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product level. L0A: Unprocessed instrument data; L0B: Reformatted, unprocessed instrument data; L1: Processed instrument data in radar coordinates system; and L2: Processed instrument data in geocoded coordinates system | +| Path | **`science/LSAR/identification/productSpecificationVersion`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product specification version which represents the schema of this product | +| Path | **`science/LSAR/identification/productType`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product type | +| Path | **`science/LSAR/identification/productVersion`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product version which represents the structure of the product and the science content governed by the algorithm, input data, and processing parameters | +| Path | **`science/LSAR/identification/radarBand`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Acquired frequency band, either "L" or "S" | +| Path | **`science/LSAR/identification/trackNumber`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Track number | +| Path | **`science/LSAR/identification/zeroDopplerEndTime`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth stop time (in UTC) of the product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/zeroDopplerStartTime`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth start time (in UTC) of the product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/sourceData/runConfigurationContents`** | +| | GCOV QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Contents of the run configuration file associated with the processing of the source data | + + diff --git a/docs/product_specs/05d_rifg_qa_hdf5_spec.md b/docs/product_specs/05d_rifg_qa_hdf5_spec.md new file mode 100644 index 0000000..f20dcf2 --- /dev/null +++ b/docs/product_specs/05d_rifg_qa_hdf5_spec.md @@ -0,0 +1,384 @@ + +## RIFG QA HDF5 Contents + +Each QA HDF5 file includes a subset of the available options below, which will correspond to the available frequencies, polarizations, etc. in the input RIFG granule. + +* Possible Frequency groups: `frequencyA` + +* Possible Polarization groups: `HH`, `VV`, `HV`, `VH` + + +| | RIFG QA HDF5 Datasets, Attributes, and Additional Metadata | +| :---: | --------------------------------------- | +| Path | **`/` _(Root Group - Global Attributes)_** | +| | _contact:_ nisar-sds-ops@jpl.nasa.gov | +| | _institution:_ NASA JPL | +| | _mission_name:_ NISAR | +| | _reference_document:_ D-107726 NASA SDS Product Specification for Level-1 and Level-2 Quality Assurance | +| | _title:_ NISAR Quality Assurance Statistical Summary of RIFG HDF5 Product | +| | | | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/histogramBins`** | +| | RIFG QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/histogramDensity`** | +| | RIFG QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/max_value`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/mean_value`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/min_value`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/percentFill`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/percentInf`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/percentNan`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/percentNearZero`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/percentTotalInvalid`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, fill, or near-zero valued pixels. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/sample_stddev`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/wrappedInterferogram/histogramBins`** | +| | RIFG QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/wrappedInterferogram/histogramDensity`** | +| | RIFG QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/wrappedInterferogram/max_imag_value`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the imaginary component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/wrappedInterferogram/max_real_value`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the real component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/wrappedInterferogram/mean_imag_value`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the imaginary component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/wrappedInterferogram/mean_real_value`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the real component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/wrappedInterferogram/min_imag_value`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the imaginary component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/wrappedInterferogram/min_real_value`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the real component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/wrappedInterferogram/percentFill`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: (nan+nanj). | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/wrappedInterferogram/percentInf`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/wrappedInterferogram/percentNan`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/wrappedInterferogram/percentNearZero`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/wrappedInterferogram/percentTotalInvalid`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/wrappedInterferogram/sample_stddev_imag`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the imaginary component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/wrappedInterferogram/sample_stddev_real`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the real component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/listOfPolarizations`** | +| | RIFG QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ Polarizations for Frequency A. | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/histogramBins`** | +| | RIFG QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/histogramDensity`** | +| | RIFG QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/max_value`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/mean_value`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/min_value`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/percentFill`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/percentInf`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/percentNan`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/percentNearZero`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/percentTotalInvalid`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/sample_stddev`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/histogramBins`** | +| | RIFG QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/histogramDensity`** | +| | RIFG QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/max_value`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/mean_value`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/min_value`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/percentFill`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/percentInf`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/percentNan`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/percentNearZero`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/percentTotalInvalid`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, fill, or near-zero valued pixels. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/sample_stddev`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/histogramBins`** | +| | RIFG QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/histogramDensity`** | +| | RIFG QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/max_value`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/mean_value`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/min_value`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/percentFill`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/percentInf`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/percentNan`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/percentNearZero`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/percentTotalInvalid`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/sample_stddev`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/processing/QAProcessingDateTime`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ QA processing date and time (in UTC) in the format YYYY-mm-ddTHH:MM:SS | +| Path | **`science/LSAR/QA/processing/QASoftwareVersion`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ QA software version used for processing | +| Path | **`science/LSAR/QA/processing/runConfigurationContents`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Contents of the run configuration file with parameters used for QA processing | +| Path | **`science/LSAR/identification/boundingPolygon`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ OGR compatible WKT representing the bounding polygon of the image. Horizontal coordinates are WGS84 longitude followed by latitude (both in degrees), and the vertical coordinate is the height above the WGS84 ellipsoid in meters. The first point corresponds to the start-time, near-range radar coordinate, and the perimeter is traversed in counterclockwise order on the map. This means the traversal order in radar coordinates differs for left-looking and right-looking sensors. The polygon includes the four corners of the radar grid, with equal numbers of points distributed evenly in radar coordinates along each edge | +| | _epsg:_ EPSG code | +| | _ogr_geometry:_ polygon | +| Path | **`science/LSAR/identification/compositeReleaseId`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Unique version identifier of the science data production system | +| Path | **`science/LSAR/identification/diagnosticModeFlag`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** uint8 | +| | _description:_ Indicates if the radar operation mode is a diagnostic mode (1-2) or DBFed science (0): 0, 1, or 2 | +| Path | **`science/LSAR/identification/frameNumber`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** uint16 | +| | _description:_ Frame number | +| Path | **`science/LSAR/identification/granuleId`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Unique granule identification name | +| Path | **`science/LSAR/identification/instrumentName`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Name of the instrument used to collect the remote sensing data provided in this product | +| Path | **`science/LSAR/identification/isDithered`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if the pulse timing was varied (dithered) during acquisition, "False" otherwise | +| Path | **`science/LSAR/identification/isFullFrame`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if the product fully covers a NISAR frame, "False" if partial coverage | +| | _frameCoveragePercentage:_ Percentage of NISAR frame containing processed data | +| | _thresholdPercentage:_ Threshold percentage used to determine if the product is full frame or partial frame | +| Path | **`science/LSAR/identification/isGeocoded`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Flag to indicate if the product data is in the radar geometry ("False") or in the map geometry ("True") | +| Path | **`science/LSAR/identification/isMixedMode`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if this product is generated from reference and secondary RSLCs with different range bandwidths, "False" otherwise | +| Path | **`science/LSAR/identification/isUrgentObservation`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Flag indicating if observation is nominal ("False") or urgent ("True") | +| Path | **`science/LSAR/identification/listOfFrequencies`** | +| | RIFG QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of frequency layers available in the product | +| Path | **`science/LSAR/identification/lookDirection`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Look direction, either "Left" or "Right" | +| Path | **`science/LSAR/identification/missionId`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Mission identifier | +| Path | **`science/LSAR/identification/orbitPassDirection`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Orbit direction, either "Ascending" or "Descending" | +| Path | **`science/LSAR/identification/plannedDatatakeId`** | +| | RIFG QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of planned datatakes included in the product | +| Path | **`science/LSAR/identification/plannedObservationId`** | +| | RIFG QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of planned observations included in the product | +| Path | **`science/LSAR/identification/platformName`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Name of the platform used to collect the remote sensing data provided in this product | +| Path | **`science/LSAR/identification/processingCenter`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Data processing center | +| Path | **`science/LSAR/identification/processingDateTime`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Processing date and time (in UTC) in the format YYYY-mm-ddTHH:MM:SS | +| Path | **`science/LSAR/identification/processingType`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Nominal (or) Urgent (or) Custom (or) Undefined | +| Path | **`science/LSAR/identification/productDoi`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Digital Object Identifier (DOI) for the product | +| Path | **`science/LSAR/identification/productLevel`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product level. L0A: Unprocessed instrument data; L0B: Reformatted, unprocessed instrument data; L1: Processed instrument data in radar coordinates system; and L2: Processed instrument data in geocoded coordinates system | +| Path | **`science/LSAR/identification/productSpecificationVersion`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product specification version which represents the schema of this product | +| Path | **`science/LSAR/identification/productType`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product type | +| Path | **`science/LSAR/identification/productVersion`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product version which represents the structure of the product and the science content governed by the algorithm, input data, and processing parameters | +| Path | **`science/LSAR/identification/radarBand`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Acquired frequency band, either "L" or "S" | +| Path | **`science/LSAR/identification/referenceAbsoluteOrbitNumber`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Absolute orbit number for the reference RSLC | +| Path | **`science/LSAR/identification/referenceIsJointObservation`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if any portion of the reference RSLC was acquired in a joint observation mode (e.g., L-band and S-band simultaneously), "False" otherwise | +| Path | **`science/LSAR/identification/referenceZeroDopplerEndTime`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth stop time (in UTC) of reference RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/referenceZeroDopplerStartTime`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth start time (in UTC) of reference RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/secondaryAbsoluteOrbitNumber`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Absolute orbit number for the secondary RSLC | +| Path | **`science/LSAR/identification/secondaryIsJointObservation`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if any portion of the secondary RSLC was acquired in a joint observation mode (e.g., L-band and S-band simultaneously), "False" otherwise | +| Path | **`science/LSAR/identification/secondaryZeroDopplerEndTime`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth stop time (in UTC) of secondary RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/secondaryZeroDopplerStartTime`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth start time (in UTC) of secondary RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/trackNumber`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Track number | +| Path | **`science/LSAR/sourceData/runConfigurationContents`** | +| | RIFG QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Contents of the run configuration file associated with the processing of the source data | + + diff --git a/docs/product_specs/05e_runw_qa_hdf5_spec.md b/docs/product_specs/05e_runw_qa_hdf5_spec.md new file mode 100644 index 0000000..585f9f8 --- /dev/null +++ b/docs/product_specs/05e_runw_qa_hdf5_spec.md @@ -0,0 +1,503 @@ + +## RUNW QA HDF5 Contents + +Each QA HDF5 file includes a subset of the available options below, which will correspond to the available frequencies, polarizations, etc. in the input RUNW granule. + +* Possible Frequency groups: `frequencyA` + +* Possible Polarization groups: `HH`, `VV`, `HV`, `VH` + + +| | RUNW QA HDF5 Datasets, Attributes, and Additional Metadata | +| :---: | --------------------------------------- | +| Path | **`/` _(Root Group - Global Attributes)_** | +| | _contact:_ nisar-sds-ops@jpl.nasa.gov | +| | _institution:_ NASA JPL | +| | _mission_name:_ NISAR | +| | _reference_document:_ D-107726 NASA SDS Product Specification for Level-1 and Level-2 Quality Assurance | +| | _title:_ NISAR Quality Assurance Statistical Summary of RUNW HDF5 Product | +| | | | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/histogramBins`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/histogramDensity`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/max_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/mean_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/min_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/percentFill`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/percentInf`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/percentNan`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/percentNearZero`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/percentTotalInvalid`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, fill, or near-zero valued pixels. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/coherenceMagnitude/sample_stddev`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/connectedComponents/connectedComponentLabels`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** uint16 | +| | _description:_ List of all connected component labels, including 0 and the fill value `65535` | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/connectedComponents/connectedComponentPercentages`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Percentages of total raster area with each connected component label. Indices correspond to `connectedComponentLabels` | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/connectedComponents/numValidConnectedComponents`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** int64 | +| | _description:_ Number of valid connected components, excluding 0 and the fill value `65535` | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/connectedComponents/percentFill`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: 65535. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/connectedComponents/percentInf`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/connectedComponents/percentNan`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/connectedComponents/percentNearZero`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/connectedComponents/percentPixelsInLargestCC`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percentage of pixels in the largest valid connected component relative to the total image size. (0 and fill value (65535) are not valid connected components. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/connectedComponents/percentPixelsWithNonZeroCC`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percentage of pixels with non-zero, non-fill connected components relative to the total image size. (0 and fill value (65535) are not valid connected components. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/connectedComponents/percentTotalInvalid`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, fill, or near-zero valued pixels. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreen/histogramBins`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreen/histogramDensity`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/radians | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreen/max_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreen/mean_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreen/min_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreen/percentFill`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreen/percentInf`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreen/percentNan`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreen/percentNearZero`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreen/percentTotalInvalid`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreen/sample_stddev`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreenUncertainty/histogramBins`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreenUncertainty/histogramDensity`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/radians | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreenUncertainty/max_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreenUncertainty/mean_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreenUncertainty/min_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreenUncertainty/percentFill`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreenUncertainty/percentInf`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreenUncertainty/percentNan`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreenUncertainty/percentNearZero`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreenUncertainty/percentTotalInvalid`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/ionospherePhaseScreenUncertainty/sample_stddev`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/unwrappedPhase/histogramBins`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/unwrappedPhase/histogramDensity`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/radians | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/unwrappedPhase/max_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/unwrappedPhase/mean_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/unwrappedPhase/min_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/unwrappedPhase/percentFill`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/unwrappedPhase/percentInf`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/unwrappedPhase/percentNan`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/unwrappedPhase/percentNearZero`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/unwrappedPhase/percentTotalInvalid`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, fill, or near-zero valued pixels. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/interferogram/HH/unwrappedPhase/sample_stddev`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/listOfPolarizations`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ Polarizations for Frequency A. | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/histogramBins`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/histogramDensity`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/max_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/mean_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/min_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/percentFill`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/percentInf`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/percentNan`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/percentNearZero`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/percentTotalInvalid`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/sample_stddev`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/histogramBins`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/histogramDensity`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/max_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/mean_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/min_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/percentFill`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/percentInf`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/percentNan`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/percentNearZero`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/percentTotalInvalid`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, fill, or near-zero valued pixels. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/sample_stddev`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/histogramBins`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/histogramDensity`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/max_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/mean_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/min_value`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/percentFill`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/percentInf`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/percentNan`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/percentNearZero`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/percentTotalInvalid`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/sample_stddev`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/processing/QAProcessingDateTime`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ QA processing date and time (in UTC) in the format YYYY-mm-ddTHH:MM:SS | +| Path | **`science/LSAR/QA/processing/QASoftwareVersion`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ QA software version used for processing | +| Path | **`science/LSAR/QA/processing/browseImageRewrap`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** int64 | +| | _description:_ The multiple of pi for rewrapping the unwrapped phase layer for the browse PNG. 'None' if no rewrapping occurred. Example: If `browseImageRewrap` is 3, the unwrapped phase was rewrapped to the interval [0, 3pi). | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/phaseImageRewrap`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** int64 | +| | _description:_ The multiple of pi for rewrapping the unwrapped phase image in the report PDF. 'None' if no rewrapping occurred. Example: If `phaseImageRewrap`=3, the image was rewrapped to the interval [0, 3pi). | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/runConfigurationContents`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Contents of the run configuration file with parameters used for QA processing | +| Path | **`science/LSAR/identification/boundingPolygon`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ OGR compatible WKT representing the bounding polygon of the image. Horizontal coordinates are WGS84 longitude followed by latitude (both in degrees), and the vertical coordinate is the height above the WGS84 ellipsoid in meters. The first point corresponds to the start-time, near-range radar coordinate, and the perimeter is traversed in counterclockwise order on the map. This means the traversal order in radar coordinates differs for left-looking and right-looking sensors. The polygon includes the four corners of the radar grid, with equal numbers of points distributed evenly in radar coordinates along each edge | +| | _epsg:_ EPSG code | +| | _ogr_geometry:_ polygon | +| Path | **`science/LSAR/identification/compositeReleaseId`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Unique version identifier of the science data production system | +| Path | **`science/LSAR/identification/diagnosticModeFlag`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** uint8 | +| | _description:_ Indicates if the radar operation mode is a diagnostic mode (1-2) or DBFed science (0): 0, 1, or 2 | +| Path | **`science/LSAR/identification/frameNumber`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** uint16 | +| | _description:_ Frame number | +| Path | **`science/LSAR/identification/granuleId`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Unique granule identification name | +| Path | **`science/LSAR/identification/instrumentName`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Name of the instrument used to collect the remote sensing data provided in this product | +| Path | **`science/LSAR/identification/isDithered`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if the pulse timing was varied (dithered) during acquisition, "False" otherwise | +| Path | **`science/LSAR/identification/isFullFrame`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if the product fully covers a NISAR frame, "False" if partial coverage | +| | _frameCoveragePercentage:_ Percentage of NISAR frame containing processed data | +| | _thresholdPercentage:_ Threshold percentage used to determine if the product is full frame or partial frame | +| Path | **`science/LSAR/identification/isGeocoded`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Flag to indicate if the product data is in the radar geometry ("False") or in the map geometry ("True") | +| Path | **`science/LSAR/identification/isMixedMode`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if this product is generated from reference and secondary RSLCs with different range bandwidths, "False" otherwise | +| Path | **`science/LSAR/identification/isUrgentObservation`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Flag indicating if observation is nominal ("False") or urgent ("True") | +| Path | **`science/LSAR/identification/listOfFrequencies`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of frequency layers available in the product | +| Path | **`science/LSAR/identification/lookDirection`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Look direction, either "Left" or "Right" | +| Path | **`science/LSAR/identification/missionId`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Mission identifier | +| Path | **`science/LSAR/identification/orbitPassDirection`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Orbit direction, either "Ascending" or "Descending" | +| Path | **`science/LSAR/identification/plannedDatatakeId`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of planned datatakes included in the product | +| Path | **`science/LSAR/identification/plannedObservationId`** | +| | RUNW QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of planned observations included in the product | +| Path | **`science/LSAR/identification/platformName`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Name of the platform used to collect the remote sensing data provided in this product | +| Path | **`science/LSAR/identification/processingCenter`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Data processing center | +| Path | **`science/LSAR/identification/processingDateTime`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Processing date and time (in UTC) in the format YYYY-mm-ddTHH:MM:SS | +| Path | **`science/LSAR/identification/processingType`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Nominal (or) Urgent (or) Custom (or) Undefined | +| Path | **`science/LSAR/identification/productDoi`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Digital Object Identifier (DOI) for the product | +| Path | **`science/LSAR/identification/productLevel`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product level. L0A: Unprocessed instrument data; L0B: Reformatted, unprocessed instrument data; L1: Processed instrument data in radar coordinates system; and L2: Processed instrument data in geocoded coordinates system | +| Path | **`science/LSAR/identification/productSpecificationVersion`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product specification version which represents the schema of this product | +| Path | **`science/LSAR/identification/productType`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product type | +| Path | **`science/LSAR/identification/productVersion`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product version which represents the structure of the product and the science content governed by the algorithm, input data, and processing parameters | +| Path | **`science/LSAR/identification/radarBand`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Acquired frequency band, either "L" or "S" | +| Path | **`science/LSAR/identification/referenceAbsoluteOrbitNumber`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Absolute orbit number for the reference RSLC | +| Path | **`science/LSAR/identification/referenceIsJointObservation`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if any portion of the reference RSLC was acquired in a joint observation mode (e.g., L-band and S-band simultaneously), "False" otherwise | +| Path | **`science/LSAR/identification/referenceZeroDopplerEndTime`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth stop time (in UTC) of reference RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/referenceZeroDopplerStartTime`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth start time (in UTC) of reference RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/secondaryAbsoluteOrbitNumber`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Absolute orbit number for the secondary RSLC | +| Path | **`science/LSAR/identification/secondaryIsJointObservation`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if any portion of the secondary RSLC was acquired in a joint observation mode (e.g., L-band and S-band simultaneously), "False" otherwise | +| Path | **`science/LSAR/identification/secondaryZeroDopplerEndTime`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth stop time (in UTC) of secondary RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/secondaryZeroDopplerStartTime`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth start time (in UTC) of secondary RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/trackNumber`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Track number | +| Path | **`science/LSAR/sourceData/runConfigurationContents`** | +| | RUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Contents of the run configuration file associated with the processing of the source data | + + diff --git a/docs/product_specs/05f_gunw_qa_hdf5_spec.md b/docs/product_specs/05f_gunw_qa_hdf5_spec.md new file mode 100644 index 0000000..eeeaa67 --- /dev/null +++ b/docs/product_specs/05f_gunw_qa_hdf5_spec.md @@ -0,0 +1,607 @@ + +## GUNW QA HDF5 Contents + +Each QA HDF5 file includes a subset of the available options below, which will correspond to the available frequencies, polarizations, etc. in the input GUNW granule. + +* Possible Frequency groups: `frequencyA` + +* Possible Polarization groups: `HH`, `VV`, `HV`, `VH` + + +| | GUNW QA HDF5 Datasets, Attributes, and Additional Metadata | +| :---: | --------------------------------------- | +| Path | **`/` _(Root Group - Global Attributes)_** | +| | _contact:_ nisar-sds-ops@jpl.nasa.gov | +| | _institution:_ NASA JPL | +| | _mission_name:_ NISAR | +| | _reference_document:_ D-107726 NASA SDS Product Specification for Level-1 and Level-2 Quality Assurance | +| | _title:_ NISAR Quality Assurance Statistical Summary of GUNW HDF5 Product | +| | | | +| Path | **`science/LSAR/QA/data/frequencyA/listOfPolarizations`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ Polarizations for Frequency A. | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/histogramBins`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/histogramDensity`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/max_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/mean_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/min_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/percentFill`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/percentInf`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/percentNan`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/percentNearZero`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/percentTotalInvalid`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/alongTrackOffset/sample_stddev`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/histogramBins`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/histogramDensity`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/max_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/mean_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/min_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/percentFill`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/percentInf`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/percentNan`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/percentNearZero`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/percentTotalInvalid`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, fill, or near-zero valued pixels. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/correlationSurfacePeak/sample_stddev`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/histogramBins`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/histogramDensity`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/max_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/mean_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/min_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/percentFill`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/percentInf`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/percentNan`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/percentNearZero`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/percentTotalInvalid`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/slantRangeOffset/sample_stddev`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/coherenceMagnitude/histogramBins`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/coherenceMagnitude/histogramDensity`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/coherenceMagnitude/max_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/coherenceMagnitude/mean_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/coherenceMagnitude/min_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/coherenceMagnitude/percentFill`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/coherenceMagnitude/percentInf`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/coherenceMagnitude/percentNan`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/coherenceMagnitude/percentNearZero`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/coherenceMagnitude/percentTotalInvalid`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, fill, or near-zero valued pixels. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/coherenceMagnitude/sample_stddev`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/connectedComponents/connectedComponentLabels`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** uint16 | +| | _description:_ List of all connected component labels, including 0 and the fill value `65535` | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/connectedComponents/connectedComponentPercentages`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Percentages of total raster area with each connected component label. Indices correspond to `connectedComponentLabels` | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/connectedComponents/numValidConnectedComponents`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** int64 | +| | _description:_ Number of valid connected components, excluding 0 and the fill value `65535` | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/connectedComponents/percentFill`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: 65535. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/connectedComponents/percentInf`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/connectedComponents/percentNan`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/connectedComponents/percentNearZero`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/connectedComponents/percentPixelsInLargestCC`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percentage of pixels in the largest valid connected component relative to the total image size. (0 and fill value (65535) are not valid connected components. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/connectedComponents/percentPixelsWithNonZeroCC`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percentage of pixels with non-zero, non-fill connected components relative to the total image size. (0 and fill value (65535) are not valid connected components. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/connectedComponents/percentTotalInvalid`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, fill, or near-zero valued pixels. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreen/histogramBins`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreen/histogramDensity`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/radians | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreen/max_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreen/mean_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreen/min_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreen/percentFill`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreen/percentInf`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreen/percentNan`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreen/percentNearZero`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreen/percentTotalInvalid`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreen/sample_stddev`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreenUncertainty/histogramBins`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreenUncertainty/histogramDensity`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/radians | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreenUncertainty/max_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreenUncertainty/mean_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreenUncertainty/min_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreenUncertainty/percentFill`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreenUncertainty/percentInf`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreenUncertainty/percentNan`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreenUncertainty/percentNearZero`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreenUncertainty/percentTotalInvalid`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/ionospherePhaseScreenUncertainty/sample_stddev`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/unwrappedPhase/histogramBins`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/unwrappedPhase/histogramDensity`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/radians | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/unwrappedPhase/max_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/unwrappedPhase/mean_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/unwrappedPhase/min_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/unwrappedPhase/percentFill`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/unwrappedPhase/percentInf`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/unwrappedPhase/percentNan`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/unwrappedPhase/percentNearZero`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/unwrappedPhase/percentTotalInvalid`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, fill, or near-zero valued pixels. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/unwrappedInterferogram/HH/unwrappedPhase/sample_stddev`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ radians | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/coherenceMagnitude/histogramBins`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/coherenceMagnitude/histogramDensity`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/coherenceMagnitude/max_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/coherenceMagnitude/mean_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/coherenceMagnitude/min_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/coherenceMagnitude/percentFill`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/coherenceMagnitude/percentInf`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/coherenceMagnitude/percentNan`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/coherenceMagnitude/percentNearZero`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/coherenceMagnitude/percentTotalInvalid`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, fill, or near-zero valued pixels. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/coherenceMagnitude/sample_stddev`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/wrappedInterferogram/histogramBins`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/wrappedInterferogram/histogramDensity`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/wrappedInterferogram/max_imag_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the imaginary component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/wrappedInterferogram/max_real_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the real component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/wrappedInterferogram/mean_imag_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the imaginary component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/wrappedInterferogram/mean_real_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the real component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/wrappedInterferogram/min_imag_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the imaginary component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/wrappedInterferogram/min_real_value`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the real component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/wrappedInterferogram/percentFill`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: (nan+nanj). | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/wrappedInterferogram/percentInf`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/wrappedInterferogram/percentNan`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/wrappedInterferogram/percentNearZero`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/wrappedInterferogram/percentTotalInvalid`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/wrappedInterferogram/sample_stddev_imag`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the imaginary component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/wrappedInterferogram/HH/wrappedInterferogram/sample_stddev_real`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the real component of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/QAProcessingDateTime`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ QA processing date and time (in UTC) in the format YYYY-mm-ddTHH:MM:SS | +| Path | **`science/LSAR/QA/processing/QASoftwareVersion`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ QA software version used for processing | +| Path | **`science/LSAR/QA/processing/browseImageRewrap`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** int64 | +| | _description:_ The multiple of pi for rewrapping the unwrapped phase layer for the browse PNG. 'None' if no rewrapping occurred. Example: If `browseImageRewrap` is 3, the unwrapped phase was rewrapped to the interval [0, 3pi). | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/phaseImageRewrap`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** int64 | +| | _description:_ The multiple of pi for rewrapping the unwrapped phase image in the report PDF. 'None' if no rewrapping occurred. Example: If `phaseImageRewrap`=3, the image was rewrapped to the interval [0, 3pi). | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/runConfigurationContents`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Contents of the run configuration file with parameters used for QA processing | +| Path | **`science/LSAR/identification/boundingPolygon`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ OGR compatible WKT representing the bounding polygon of the image. Horizontal coordinates are WGS84 longitude followed by latitude (both in degrees), and the vertical coordinate is the height above the WGS84 ellipsoid in meters. The first point corresponds to the start-time, near-range radar coordinate, and the perimeter is traversed in counterclockwise order on the map. This means the traversal order in radar coordinates differs for left-looking and right-looking sensors. The polygon includes the four corners of the radar grid, with equal numbers of points distributed evenly in radar coordinates along each edge | +| | _epsg:_ EPSG code | +| | _ogr_geometry:_ polygon | +| Path | **`science/LSAR/identification/compositeReleaseId`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Unique version identifier of the science data production system | +| Path | **`science/LSAR/identification/diagnosticModeFlag`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** uint8 | +| | _description:_ Indicates if the radar operation mode is a diagnostic mode (1-2) or DBFed science (0): 0, 1, or 2 | +| Path | **`science/LSAR/identification/frameNumber`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** uint16 | +| | _description:_ Frame number | +| Path | **`science/LSAR/identification/granuleId`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Unique granule identification name | +| Path | **`science/LSAR/identification/instrumentName`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Name of the instrument used to collect the remote sensing data provided in this product | +| Path | **`science/LSAR/identification/isDithered`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if the pulse timing was varied (dithered) during acquisition, "False" otherwise | +| Path | **`science/LSAR/identification/isFullFrame`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if the product fully covers a NISAR frame, "False" if partial coverage | +| | _frameCoveragePercentage:_ Percentage of NISAR frame containing processed data | +| | _thresholdPercentage:_ Threshold percentage used to determine if the product is full frame or partial frame | +| Path | **`science/LSAR/identification/isGeocoded`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Flag to indicate if the product data is in the radar geometry ("False") or in the map geometry ("True") | +| Path | **`science/LSAR/identification/isMixedMode`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if this product is generated from reference and secondary RSLCs with different range bandwidths, "False" otherwise | +| Path | **`science/LSAR/identification/isUrgentObservation`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Flag indicating if observation is nominal ("False") or urgent ("True") | +| Path | **`science/LSAR/identification/listOfFrequencies`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of frequency layers available in the product | +| Path | **`science/LSAR/identification/lookDirection`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Look direction, either "Left" or "Right" | +| Path | **`science/LSAR/identification/missionId`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Mission identifier | +| Path | **`science/LSAR/identification/orbitPassDirection`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Orbit direction, either "Ascending" or "Descending" | +| Path | **`science/LSAR/identification/plannedDatatakeId`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of planned datatakes included in the product | +| Path | **`science/LSAR/identification/plannedObservationId`** | +| | GUNW QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of planned observations included in the product | +| Path | **`science/LSAR/identification/platformName`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Name of the platform used to collect the remote sensing data provided in this product | +| Path | **`science/LSAR/identification/processingCenter`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Data processing center | +| Path | **`science/LSAR/identification/processingDateTime`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Processing date and time (in UTC) in the format YYYY-mm-ddTHH:MM:SS | +| Path | **`science/LSAR/identification/processingType`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Nominal (or) Urgent (or) Custom (or) Undefined | +| Path | **`science/LSAR/identification/productDoi`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Digital Object Identifier (DOI) for the product | +| Path | **`science/LSAR/identification/productLevel`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product level. L0A: Unprocessed instrument data; L0B: Reformatted, unprocessed instrument data; L1: Processed instrument data in radar coordinates system; and L2: Processed instrument data in geocoded coordinates system | +| Path | **`science/LSAR/identification/productSpecificationVersion`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product specification version which represents the schema of this product | +| Path | **`science/LSAR/identification/productType`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product type | +| Path | **`science/LSAR/identification/productVersion`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product version which represents the structure of the product and the science content governed by the algorithm, input data, and processing parameters | +| Path | **`science/LSAR/identification/radarBand`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Acquired frequency band, either "L" or "S" | +| Path | **`science/LSAR/identification/referenceAbsoluteOrbitNumber`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Absolute orbit number for the reference RSLC | +| Path | **`science/LSAR/identification/referenceIsJointObservation`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if any portion of the reference RSLC was acquired in a joint observation mode (e.g., L-band and S-band simultaneously), "False" otherwise | +| Path | **`science/LSAR/identification/referenceZeroDopplerEndTime`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth stop time (in UTC) of reference RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/referenceZeroDopplerStartTime`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth start time (in UTC) of reference RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/secondaryAbsoluteOrbitNumber`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Absolute orbit number for the secondary RSLC | +| Path | **`science/LSAR/identification/secondaryIsJointObservation`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if any portion of the secondary RSLC was acquired in a joint observation mode (e.g., L-band and S-band simultaneously), "False" otherwise | +| Path | **`science/LSAR/identification/secondaryZeroDopplerEndTime`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth stop time (in UTC) of secondary RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/secondaryZeroDopplerStartTime`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth start time (in UTC) of secondary RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/trackNumber`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Track number | +| Path | **`science/LSAR/sourceData/runConfigurationContents`** | +| | GUNW QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Contents of the run configuration file associated with the processing of the source data | + + diff --git a/docs/product_specs/05g_roff_qa_hdf5_spec.md b/docs/product_specs/05g_roff_qa_hdf5_spec.md new file mode 100644 index 0000000..591052a --- /dev/null +++ b/docs/product_specs/05g_roff_qa_hdf5_spec.md @@ -0,0 +1,442 @@ + +## ROFF QA HDF5 Contents + +Each QA HDF5 file includes a subset of the available options below, which will correspond to the available frequencies, polarizations, etc. in the input ROFF granule. + +* Possible Frequency groups: `frequencyA` + +* Possible Polarization groups: `HH`, `VV`, `HV`, `VH` + +* Possible layer groups: `layer1`, `layer2`, `layer3` + + +| | ROFF QA HDF5 Datasets, Attributes, and Additional Metadata | +| :---: | --------------------------------------- | +| Path | **`/` _(Root Group - Global Attributes)_** | +| | _contact:_ nisar-sds-ops@jpl.nasa.gov | +| | _institution:_ NASA JPL | +| | _mission_name:_ NISAR | +| | _reference_document:_ D-107726 NASA SDS Product Specification for Level-1 and Level-2 Quality Assurance | +| | _title:_ NISAR Quality Assurance Statistical Summary of ROFF HDF5 Product | +| | | | +| Path | **`science/LSAR/QA/data/frequencyA/listOfPolarizations`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ Polarizations for Frequency A. | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/histogramBins`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/histogramDensity`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/max_value`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/mean_value`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/min_value`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/percentFill`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/percentInf`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/percentNan`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/percentNearZero`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/percentTotalInvalid`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/sample_stddev`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/histogramBins`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/histogramDensity`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/max_value`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/mean_value`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/min_value`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/percentFill`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/percentInf`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/percentNan`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/percentNearZero`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/percentTotalInvalid`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/sample_stddev`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/histogramBins`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/histogramDensity`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/max_value`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/mean_value`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/min_value`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/percentFill`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/percentInf`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/percentNan`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/percentNearZero`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/percentTotalInvalid`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, fill, or near-zero valued pixels. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/sample_stddev`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/histogramBins`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Histogram bin edges | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/histogramDensity`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/max_value`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/mean_value`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/min_value`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/percentFill`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/percentInf`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/percentNan`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/percentNearZero`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/percentTotalInvalid`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/sample_stddev`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/histogramBins`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/histogramDensity`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/max_value`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/mean_value`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/min_value`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/percentFill`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/percentInf`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/percentNan`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/percentNearZero`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/percentTotalInvalid`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/sample_stddev`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/histogramBins`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/histogramDensity`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/max_value`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/mean_value`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/min_value`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/percentFill`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/percentInf`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/percentNan`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/percentNearZero`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/percentTotalInvalid`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/sample_stddev`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/processing/QAProcessingDateTime`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ QA processing date and time (in UTC) in the format YYYY-mm-ddTHH:MM:SS | +| Path | **`science/LSAR/QA/processing/QASoftwareVersion`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ QA software version used for processing | +| Path | **`science/LSAR/QA/processing/azAndRngOffsetVarianceColorbarMinMax`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ The vmin and vmax values used to generate the plots for the az and slant range variance layers. The square root of these layers (i.e. the standard deviation of the offsets) was computed, clipped to this interval, and then plotted using this interval for the colorbar. If None, the interval was determined based on the units of the input layers: If `meters^2`, then [0.0, 10.0]. If `pixels^2`, then [0.0, 0.1]. Otherwise [0.0, max(sqrt(\), sqrt(\))] | +| | _units:_ meters | +| Path | **`science/LSAR/QA/processing/browseDecimation`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** int64 | +| | _description:_ Decimation strides for the browse image. Format: [\, \]. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/crossOffsetVarianceColorbarMinMax`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ The vmin and vmax values to generate the plots for the cross offset variance layer. If None, then the colorbar range was computed based on `crossOffsetVariancePercentileClipped` | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/processing/crossOffsetVariancePercentileClipped`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Percentile range that the cross offset variance raster was clipped to, which determines the colormap interval. Can be superseded by `crossOffsetVarianceColorbarMinMax` | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/quiverPlotColorbarIntervalFrequencyAPolarizationHHLayer1`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Colorbar interval for the slant range and along track offset layers' quiver plot(s). | +| | _units:_ meters | +| Path | **`science/LSAR/QA/processing/quiverPlotColorbarIntervalFrequencyAPolarizationHHLayer2`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Colorbar interval for the slant range and along track offset layers' quiver plot(s). | +| | _units:_ meters | +| Path | **`science/LSAR/QA/processing/quiverPlotColorbarIntervalFrequencyAPolarizationHHLayer3`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Colorbar interval for the slant range and along track offset layers' quiver plot(s). | +| | _units:_ meters | +| Path | **`science/LSAR/QA/processing/runConfigurationContents`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Contents of the run configuration file with parameters used for QA processing | +| Path | **`science/LSAR/identification/boundingPolygon`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ OGR compatible WKT representing the bounding polygon of the image. Horizontal coordinates are WGS84 longitude followed by latitude (both in degrees), and the vertical coordinate is the height above the WGS84 ellipsoid in meters. The first point corresponds to the start-time, near-range radar coordinate, and the perimeter is traversed in counterclockwise order on the map. This means the traversal order in radar coordinates differs for left-looking and right-looking sensors. The polygon includes the four corners of the radar grid, with equal numbers of points distributed evenly in radar coordinates along each edge | +| | _epsg:_ EPSG code | +| | _ogr_geometry:_ polygon | +| Path | **`science/LSAR/identification/compositeReleaseId`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Unique version identifier of the science data production system | +| Path | **`science/LSAR/identification/diagnosticModeFlag`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** uint8 | +| | _description:_ Indicates if the radar operation mode is a diagnostic mode (1-2) or DBFed science (0): 0, 1, or 2 | +| Path | **`science/LSAR/identification/frameNumber`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** uint16 | +| | _description:_ Frame number | +| Path | **`science/LSAR/identification/granuleId`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Unique granule identification name | +| Path | **`science/LSAR/identification/instrumentName`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Name of the instrument used to collect the remote sensing data provided in this product | +| Path | **`science/LSAR/identification/isDithered`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if the pulse timing was varied (dithered) during acquisition, "False" otherwise | +| Path | **`science/LSAR/identification/isFullFrame`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if the product fully covers a NISAR frame, "False" if partial coverage | +| | _frameCoveragePercentage:_ Percentage of NISAR frame containing processed data | +| | _thresholdPercentage:_ Threshold percentage used to determine if the product is full frame or partial frame | +| Path | **`science/LSAR/identification/isGeocoded`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Flag to indicate if the product data is in the radar geometry ("False") or in the map geometry ("True") | +| Path | **`science/LSAR/identification/isMixedMode`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if this product is generated from reference and secondary RSLCs with different range bandwidths, "False" otherwise | +| Path | **`science/LSAR/identification/isUrgentObservation`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Flag indicating if observation is nominal ("False") or urgent ("True") | +| Path | **`science/LSAR/identification/listOfFrequencies`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of frequency layers available in the product | +| Path | **`science/LSAR/identification/lookDirection`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Look direction, either "Left" or "Right" | +| Path | **`science/LSAR/identification/missionId`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Mission identifier | +| Path | **`science/LSAR/identification/orbitPassDirection`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Orbit direction, either "Ascending" or "Descending" | +| Path | **`science/LSAR/identification/plannedDatatakeId`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of planned datatakes included in the product | +| Path | **`science/LSAR/identification/plannedObservationId`** | +| | ROFF QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of planned observations included in the product | +| Path | **`science/LSAR/identification/platformName`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Name of the platform used to collect the remote sensing data provided in this product | +| Path | **`science/LSAR/identification/processingCenter`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Data processing center | +| Path | **`science/LSAR/identification/processingDateTime`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Processing date and time (in UTC) in the format YYYY-mm-ddTHH:MM:SS | +| Path | **`science/LSAR/identification/processingType`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Nominal (or) Urgent (or) Custom (or) Undefined | +| Path | **`science/LSAR/identification/productDoi`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Digital Object Identifier (DOI) for the product | +| Path | **`science/LSAR/identification/productLevel`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product level. L0A: Unprocessed instrument data; L0B: Reformatted, unprocessed instrument data; L1: Processed instrument data in radar coordinates system; and L2: Processed instrument data in geocoded coordinates system | +| Path | **`science/LSAR/identification/productSpecificationVersion`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product specification version which represents the schema of this product | +| Path | **`science/LSAR/identification/productType`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product type | +| Path | **`science/LSAR/identification/productVersion`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product version which represents the structure of the product and the science content governed by the algorithm, input data, and processing parameters | +| Path | **`science/LSAR/identification/radarBand`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Acquired frequency band, either "L" or "S" | +| Path | **`science/LSAR/identification/referenceAbsoluteOrbitNumber`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Absolute orbit number for the reference RSLC | +| Path | **`science/LSAR/identification/referenceIsJointObservation`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if any portion of the reference RSLC was acquired in a joint observation mode (e.g., L-band and S-band simultaneously), "False" otherwise | +| Path | **`science/LSAR/identification/referenceZeroDopplerEndTime`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth stop time (in UTC) of reference RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/referenceZeroDopplerStartTime`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth start time (in UTC) of reference RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/secondaryAbsoluteOrbitNumber`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Absolute orbit number for the secondary RSLC | +| Path | **`science/LSAR/identification/secondaryIsJointObservation`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if any portion of the secondary RSLC was acquired in a joint observation mode (e.g., L-band and S-band simultaneously), "False" otherwise | +| Path | **`science/LSAR/identification/secondaryZeroDopplerEndTime`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth stop time (in UTC) of secondary RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/secondaryZeroDopplerStartTime`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth start time (in UTC) of secondary RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/trackNumber`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Track number | +| Path | **`science/LSAR/sourceData/runConfigurationContents`** | +| | ROFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Contents of the run configuration file associated with the processing of the source data | + + diff --git a/docs/product_specs/05h_goff_qa_hdf5_spec.md b/docs/product_specs/05h_goff_qa_hdf5_spec.md new file mode 100644 index 0000000..0750ccd --- /dev/null +++ b/docs/product_specs/05h_goff_qa_hdf5_spec.md @@ -0,0 +1,442 @@ + +## GOFF QA HDF5 Contents + +Each QA HDF5 file includes a subset of the available options below, which will correspond to the available frequencies, polarizations, etc. in the input GOFF granule. + +* Possible Frequency groups: `frequencyA` + +* Possible Polarization groups: `HH`, `VV`, `HV`, `VH` + +* Possible layer groups: `layer1`, `layer2`, `layer3` + + +| | GOFF QA HDF5 Datasets, Attributes, and Additional Metadata | +| :---: | --------------------------------------- | +| Path | **`/` _(Root Group - Global Attributes)_** | +| | _contact:_ nisar-sds-ops@jpl.nasa.gov | +| | _institution:_ NASA JPL | +| | _mission_name:_ NISAR | +| | _reference_document:_ D-107726 NASA SDS Product Specification for Level-1 and Level-2 Quality Assurance | +| | _title:_ NISAR Quality Assurance Statistical Summary of GOFF HDF5 Product | +| | | | +| Path | **`science/LSAR/QA/data/frequencyA/listOfPolarizations`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ Polarizations for Frequency A. | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/histogramBins`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/histogramDensity`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/max_value`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/mean_value`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/min_value`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/percentFill`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/percentInf`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/percentNan`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/percentNearZero`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/percentTotalInvalid`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffset/sample_stddev`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/histogramBins`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/histogramDensity`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/max_value`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/mean_value`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/min_value`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/percentFill`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/percentInf`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/percentNan`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/percentNearZero`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/percentTotalInvalid`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/alongTrackOffsetVariance/sample_stddev`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/histogramBins`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/histogramDensity`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/max_value`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/mean_value`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/min_value`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/percentFill`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/percentInf`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/percentNan`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/percentNearZero`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/percentTotalInvalid`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, fill, or near-zero valued pixels. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/correlationSurfacePeak/sample_stddev`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/histogramBins`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Histogram bin edges | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/histogramDensity`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/max_value`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/mean_value`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/min_value`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/percentFill`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/percentInf`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/percentNan`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/percentNearZero`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/percentTotalInvalid`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/crossOffsetVariance/sample_stddev`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/histogramBins`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/histogramDensity`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/max_value`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/mean_value`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/min_value`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/percentFill`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/percentInf`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/percentNan`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/percentNearZero`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/percentTotalInvalid`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffset/sample_stddev`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ meters | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/histogramBins`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** float32 | +| | _description:_ Histogram bin edges | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/histogramDensity`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Normalized density of the histogram | +| | _units:_ 1/meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/max_value`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Maximum value of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/mean_value`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Arithmetic average of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/min_value`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Minimum value of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/percentFill`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements containing the fill value, which is: nan. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/percentInf`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a +/- inf value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/percentNan`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements with a NaN value. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/percentNearZero`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are within 1e-06 of zero. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/percentTotalInvalid`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float64 | +| | _description:_ Percent of dataset elements that are either NaN, Inf, or fill valued pixels. (Near-zero valued pixels are not included.) | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/data/frequencyA/pixelOffsets/HH/layer1/slantRangeOffsetVariance/sample_stddev`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** float32 | +| | _description:_ Standard deviation of the numeric data points | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/processing/QAProcessingDateTime`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ QA processing date and time (in UTC) in the format YYYY-mm-ddTHH:MM:SS | +| Path | **`science/LSAR/QA/processing/QASoftwareVersion`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ QA software version used for processing | +| Path | **`science/LSAR/QA/processing/azAndRngOffsetVarianceColorbarMinMax`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ The vmin and vmax values used to generate the plots for the az and slant range variance layers. The square root of these layers (i.e. the standard deviation of the offsets) was computed, clipped to this interval, and then plotted using this interval for the colorbar. If None, the interval was determined based on the units of the input layers: If `meters^2`, then [0.0, 10.0]. If `pixels^2`, then [0.0, 0.1]. Otherwise [0.0, max(sqrt(\), sqrt(\))] | +| | _units:_ meters | +| Path | **`science/LSAR/QA/processing/browseDecimation`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** int64 | +| | _description:_ Decimation strides for the browse image. Format: [\, \]. | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/crossOffsetVarianceColorbarMinMax`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ The vmin and vmax values to generate the plots for the cross offset variance layer. If None, then the colorbar range was computed based on `crossOffsetVariancePercentileClipped` | +| | _units:_ meters^2 | +| Path | **`science/LSAR/QA/processing/crossOffsetVariancePercentileClipped`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Percentile range that the cross offset variance raster was clipped to, which determines the colormap interval. Can be superseded by `crossOffsetVarianceColorbarMinMax` | +| | _units:_ 1 | +| Path | **`science/LSAR/QA/processing/quiverPlotColorbarIntervalFrequencyAPolarizationHHLayer1`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Colorbar interval for the slant range and along track offset layers' quiver plot(s). | +| | _units:_ meters | +| Path | **`science/LSAR/QA/processing/quiverPlotColorbarIntervalFrequencyAPolarizationHHLayer2`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Colorbar interval for the slant range and along track offset layers' quiver plot(s). | +| | _units:_ meters | +| Path | **`science/LSAR/QA/processing/quiverPlotColorbarIntervalFrequencyAPolarizationHHLayer3`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** float64 | +| | _description:_ Colorbar interval for the slant range and along track offset layers' quiver plot(s). | +| | _units:_ meters | +| Path | **`science/LSAR/QA/processing/runConfigurationContents`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Contents of the run configuration file with parameters used for QA processing | +| Path | **`science/LSAR/identification/boundingPolygon`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ OGR compatible WKT representing the bounding polygon of the image. Horizontal coordinates are WGS84 longitude followed by latitude (both in degrees), and the vertical coordinate is the height above the WGS84 ellipsoid in meters. The first point corresponds to the start-time, near-range radar coordinate, and the perimeter is traversed in counterclockwise order on the map. This means the traversal order in radar coordinates differs for left-looking and right-looking sensors. The polygon includes the four corners of the radar grid, with equal numbers of points distributed evenly in radar coordinates along each edge | +| | _epsg:_ EPSG code | +| | _ogr_geometry:_ polygon | +| Path | **`science/LSAR/identification/compositeReleaseId`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Unique version identifier of the science data production system | +| Path | **`science/LSAR/identification/diagnosticModeFlag`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** uint8 | +| | _description:_ Indicates if the radar operation mode is a diagnostic mode (1-2) or DBFed science (0): 0, 1, or 2 | +| Path | **`science/LSAR/identification/frameNumber`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** uint16 | +| | _description:_ Frame number | +| Path | **`science/LSAR/identification/granuleId`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Unique granule identification name | +| Path | **`science/LSAR/identification/instrumentName`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Name of the instrument used to collect the remote sensing data provided in this product | +| Path | **`science/LSAR/identification/isDithered`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if the pulse timing was varied (dithered) during acquisition, "False" otherwise | +| Path | **`science/LSAR/identification/isFullFrame`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if the product fully covers a NISAR frame, "False" if partial coverage | +| | _frameCoveragePercentage:_ Percentage of NISAR frame containing processed data | +| | _thresholdPercentage:_ Threshold percentage used to determine if the product is full frame or partial frame | +| Path | **`science/LSAR/identification/isGeocoded`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Flag to indicate if the product data is in the radar geometry ("False") or in the map geometry ("True") | +| Path | **`science/LSAR/identification/isMixedMode`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if this product is generated from reference and secondary RSLCs with different range bandwidths, "False" otherwise | +| Path | **`science/LSAR/identification/isUrgentObservation`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Flag indicating if observation is nominal ("False") or urgent ("True") | +| Path | **`science/LSAR/identification/listOfFrequencies`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of frequency layers available in the product | +| Path | **`science/LSAR/identification/lookDirection`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Look direction, either "Left" or "Right" | +| Path | **`science/LSAR/identification/missionId`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Mission identifier | +| Path | **`science/LSAR/identification/orbitPassDirection`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Orbit direction, either "Ascending" or "Descending" | +| Path | **`science/LSAR/identification/plannedDatatakeId`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of planned datatakes included in the product | +| Path | **`science/LSAR/identification/plannedObservationId`** | +| | GOFF QA dataset, **ndim:** 1-D array, **dtype:** fixed-length byte string | +| | _description:_ List of planned observations included in the product | +| Path | **`science/LSAR/identification/platformName`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Name of the platform used to collect the remote sensing data provided in this product | +| Path | **`science/LSAR/identification/processingCenter`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Data processing center | +| Path | **`science/LSAR/identification/processingDateTime`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Processing date and time (in UTC) in the format YYYY-mm-ddTHH:MM:SS | +| Path | **`science/LSAR/identification/processingType`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Nominal (or) Urgent (or) Custom (or) Undefined | +| Path | **`science/LSAR/identification/productDoi`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Digital Object Identifier (DOI) for the product | +| Path | **`science/LSAR/identification/productLevel`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product level. L0A: Unprocessed instrument data; L0B: Reformatted, unprocessed instrument data; L1: Processed instrument data in radar coordinates system; and L2: Processed instrument data in geocoded coordinates system | +| Path | **`science/LSAR/identification/productSpecificationVersion`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product specification version which represents the schema of this product | +| Path | **`science/LSAR/identification/productType`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product type | +| Path | **`science/LSAR/identification/productVersion`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Product version which represents the structure of the product and the science content governed by the algorithm, input data, and processing parameters | +| Path | **`science/LSAR/identification/radarBand`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Acquired frequency band, either "L" or "S" | +| Path | **`science/LSAR/identification/referenceAbsoluteOrbitNumber`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Absolute orbit number for the reference RSLC | +| Path | **`science/LSAR/identification/referenceIsJointObservation`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if any portion of the reference RSLC was acquired in a joint observation mode (e.g., L-band and S-band simultaneously), "False" otherwise | +| Path | **`science/LSAR/identification/referenceZeroDopplerEndTime`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth stop time (in UTC) of reference RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/referenceZeroDopplerStartTime`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth start time (in UTC) of reference RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/secondaryAbsoluteOrbitNumber`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Absolute orbit number for the secondary RSLC | +| Path | **`science/LSAR/identification/secondaryIsJointObservation`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ "True" if any portion of the secondary RSLC was acquired in a joint observation mode (e.g., L-band and S-band simultaneously), "False" otherwise | +| Path | **`science/LSAR/identification/secondaryZeroDopplerEndTime`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth stop time (in UTC) of secondary RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/secondaryZeroDopplerStartTime`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Azimuth start time (in UTC) of secondary RSLC product in the format YYYY-mm-ddTHH:MM:SS.sssssssss | +| Path | **`science/LSAR/identification/trackNumber`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** uint32 | +| | _description:_ Track number | +| Path | **`science/LSAR/sourceData/runConfigurationContents`** | +| | GOFF QA dataset, **ndim:** scalar, **dtype:** fixed-length byte string | +| | _description:_ Contents of the run configuration file associated with the processing of the source data | + + diff --git a/docs/product_specs/06a_appendix_a.md b/docs/product_specs/06a_appendix_a.md new file mode 100644 index 0000000..e188b7c --- /dev/null +++ b/docs/product_specs/06a_appendix_a.md @@ -0,0 +1,18 @@ + +# Appendix A: Reference Documents + +Reference documents are cited to provide additional information to readers. +In case of conflict between the documents and this document, the +Project shall review the conflict to find the most effective resolution. + +* [RD1] NISAR SDS L-SAR File Naming Conventions, JPL D-102255, Rev B, December 18, 2023 +* [RD2] HDF5 documentation at https://portal.hdfgroup.org/documentation, Accessed May 30, 2024 +* [RD3] NISAR L1 RSLC Product Specification Document, JPL D-102268, Rev E, November 8, 2024 +* [RD4] NISAR L1 RIFG Product Specification Document, JPL D-102270, Rev E, November 8, 2024 +* [RD5] NISAR L1 RUNW Product Specification Document, JPL D-102271, Rev E, November 8, 2024 +* [RD6] NISAR L1 ROFF Product Specification Document, JPL D-105009, Rev C, November 8, 2024 +* [RD7] NISAR L2 GSLC Product Specification Document, JPL D-102269, Rev E, November 8, 2024 +* [RD8] NISAR L2 GCOV Product Specification Document, JPL D-102274, Rev E, November 8, 2024 +* [RD9] NISAR L2 GUNW Product Specification Document, JPL D-102272, Rev E, November 8, 2024 +* [RD10] NISAR L2 GOFF Product Specification Document, JPL D-105010, Rev C, November 8, 2024 + diff --git a/docs/product_specs/images/BROWSE_GCOV_small.png b/docs/product_specs/images/BROWSE_GCOV_small.png new file mode 100644 index 0000000..1acf648 Binary files /dev/null and b/docs/product_specs/images/BROWSE_GCOV_small.png differ diff --git a/docs/product_specs/images/BROWSE_GOFF_small.png b/docs/product_specs/images/BROWSE_GOFF_small.png new file mode 100644 index 0000000..153600f Binary files /dev/null and b/docs/product_specs/images/BROWSE_GOFF_small.png differ diff --git a/docs/product_specs/images/BROWSE_GSLC_small.png b/docs/product_specs/images/BROWSE_GSLC_small.png new file mode 100644 index 0000000..f8982ca Binary files /dev/null and b/docs/product_specs/images/BROWSE_GSLC_small.png differ diff --git a/docs/product_specs/images/BROWSE_ROFF_small.png b/docs/product_specs/images/BROWSE_ROFF_small.png new file mode 100644 index 0000000..f4562b7 Binary files /dev/null and b/docs/product_specs/images/BROWSE_ROFF_small.png differ diff --git a/docs/product_specs/images/browse_GUNW_compressed.jpg b/docs/product_specs/images/browse_GUNW_compressed.jpg new file mode 100644 index 0000000..29f77fe Binary files /dev/null and b/docs/product_specs/images/browse_GUNW_compressed.jpg differ diff --git a/docs/product_specs/images/browse_RIFG_compressed.jpg b/docs/product_specs/images/browse_RIFG_compressed.jpg new file mode 100644 index 0000000..77face1 Binary files /dev/null and b/docs/product_specs/images/browse_RIFG_compressed.jpg differ diff --git a/docs/product_specs/images/browse_RSLC_compressed.jpg b/docs/product_specs/images/browse_RSLC_compressed.jpg new file mode 100644 index 0000000..d83fe11 Binary files /dev/null and b/docs/product_specs/images/browse_RSLC_compressed.jpg differ diff --git a/docs/product_specs/images/browse_RUNW_compressed.jpg b/docs/product_specs/images/browse_RUNW_compressed.jpg new file mode 100644 index 0000000..e4f9748 Binary files /dev/null and b/docs/product_specs/images/browse_RUNW_compressed.jpg differ diff --git a/docs/product_specs/images/geocoding.jpg b/docs/product_specs/images/geocoding.jpg new file mode 100644 index 0000000..14e7390 Binary files /dev/null and b/docs/product_specs/images/geocoding.jpg differ diff --git a/docs/product_specs/images/product_dependency.jpg b/docs/product_specs/images/product_dependency.jpg new file mode 100644 index 0000000..0288089 Binary files /dev/null and b/docs/product_specs/images/product_dependency.jpg differ diff --git a/docs/product_specs/images/qa_processing_pipeline.jpg b/docs/product_specs/images/qa_processing_pipeline.jpg new file mode 100644 index 0000000..241d85e Binary files /dev/null and b/docs/product_specs/images/qa_processing_pipeline.jpg differ diff --git a/docs/product_specs/images/report_az_rng_offsets.jpg b/docs/product_specs/images/report_az_rng_offsets.jpg new file mode 100644 index 0000000..52c9d69 Binary files /dev/null and b/docs/product_specs/images/report_az_rng_offsets.jpg differ diff --git a/docs/product_specs/images/report_az_rng_offsets_hist.jpg b/docs/product_specs/images/report_az_rng_offsets_hist.jpg new file mode 100644 index 0000000..9c98514 Binary files /dev/null and b/docs/product_specs/images/report_az_rng_offsets_hist.jpg differ diff --git a/docs/product_specs/images/report_az_spectra_rslc.jpg b/docs/product_specs/images/report_az_spectra_rslc.jpg new file mode 100644 index 0000000..b7b7e82 Binary files /dev/null and b/docs/product_specs/images/report_az_spectra_rslc.jpg differ diff --git a/docs/product_specs/images/report_backscatter_gcov.jpg b/docs/product_specs/images/report_backscatter_gcov.jpg new file mode 100644 index 0000000..6b46d65 Binary files /dev/null and b/docs/product_specs/images/report_backscatter_gcov.jpg differ diff --git a/docs/product_specs/images/report_backscatter_gslc.jpg b/docs/product_specs/images/report_backscatter_gslc.jpg new file mode 100644 index 0000000..6895a15 Binary files /dev/null and b/docs/product_specs/images/report_backscatter_gslc.jpg differ diff --git a/docs/product_specs/images/report_backscatter_rslc.jpg b/docs/product_specs/images/report_backscatter_rslc.jpg new file mode 100644 index 0000000..1814b3f Binary files /dev/null and b/docs/product_specs/images/report_backscatter_rslc.jpg differ diff --git a/docs/product_specs/images/report_cc.jpg b/docs/product_specs/images/report_cc.jpg new file mode 100644 index 0000000..485a1b9 Binary files /dev/null and b/docs/product_specs/images/report_cc.jpg differ diff --git a/docs/product_specs/images/report_cover_page.jpg b/docs/product_specs/images/report_cover_page.jpg new file mode 100644 index 0000000..a83840b Binary files /dev/null and b/docs/product_specs/images/report_cover_page.jpg differ diff --git a/docs/product_specs/images/report_iono_phs_screen.jpg b/docs/product_specs/images/report_iono_phs_screen.jpg new file mode 100644 index 0000000..f491597 Binary files /dev/null and b/docs/product_specs/images/report_iono_phs_screen.jpg differ diff --git a/docs/product_specs/images/report_iono_phs_screen_hist.jpg b/docs/product_specs/images/report_iono_phs_screen_hist.jpg new file mode 100644 index 0000000..9b2155a Binary files /dev/null and b/docs/product_specs/images/report_iono_phs_screen_hist.jpg differ diff --git a/docs/product_specs/images/report_offsets_cov_and_surf_peak.jpg b/docs/product_specs/images/report_offsets_cov_and_surf_peak.jpg new file mode 100644 index 0000000..ca6d7ef Binary files /dev/null and b/docs/product_specs/images/report_offsets_cov_and_surf_peak.jpg differ diff --git a/docs/product_specs/images/report_offsets_cov_and_surf_peak_hist.jpg b/docs/product_specs/images/report_offsets_cov_and_surf_peak_hist.jpg new file mode 100644 index 0000000..eef4d61 Binary files /dev/null and b/docs/product_specs/images/report_offsets_cov_and_surf_peak_hist.jpg differ diff --git a/docs/product_specs/images/report_offsets_quiver_goff.jpg b/docs/product_specs/images/report_offsets_quiver_goff.jpg new file mode 100644 index 0000000..0d43883 Binary files /dev/null and b/docs/product_specs/images/report_offsets_quiver_goff.jpg differ diff --git a/docs/product_specs/images/report_offsets_quiver_roff.jpg b/docs/product_specs/images/report_offsets_quiver_roff.jpg new file mode 100644 index 0000000..273153c Binary files /dev/null and b/docs/product_specs/images/report_offsets_quiver_roff.jpg differ diff --git a/docs/product_specs/images/report_offsets_variance.jpg b/docs/product_specs/images/report_offsets_variance.jpg new file mode 100644 index 0000000..0ee4844 Binary files /dev/null and b/docs/product_specs/images/report_offsets_variance.jpg differ diff --git a/docs/product_specs/images/report_offsets_variance_hist.jpg b/docs/product_specs/images/report_offsets_variance_hist.jpg new file mode 100644 index 0000000..80af992 Binary files /dev/null and b/docs/product_specs/images/report_offsets_variance_hist.jpg differ diff --git a/docs/product_specs/images/report_phase_histogram_rslc.jpg b/docs/product_specs/images/report_phase_histogram_rslc.jpg new file mode 100644 index 0000000..d154230 Binary files /dev/null and b/docs/product_specs/images/report_phase_histogram_rslc.jpg differ diff --git a/docs/product_specs/images/report_power_histogram_rslc.jpg b/docs/product_specs/images/report_power_histogram_rslc.jpg new file mode 100644 index 0000000..4cd4d3e Binary files /dev/null and b/docs/product_specs/images/report_power_histogram_rslc.jpg differ diff --git a/docs/product_specs/images/report_pta_cr_offsets_rslc.jpg b/docs/product_specs/images/report_pta_cr_offsets_rslc.jpg new file mode 100644 index 0000000..2e1216d Binary files /dev/null and b/docs/product_specs/images/report_pta_cr_offsets_rslc.jpg differ diff --git a/docs/product_specs/images/report_pta_impulse_response_rslc.jpg b/docs/product_specs/images/report_pta_impulse_response_rslc.jpg new file mode 100644 index 0000000..26bb998 Binary files /dev/null and b/docs/product_specs/images/report_pta_impulse_response_rslc.jpg differ diff --git a/docs/product_specs/images/report_range_spectra_rslc.jpg b/docs/product_specs/images/report_range_spectra_rslc.jpg new file mode 100644 index 0000000..67d79e4 Binary files /dev/null and b/docs/product_specs/images/report_range_spectra_rslc.jpg differ diff --git a/docs/product_specs/images/report_unw_coh.jpg b/docs/product_specs/images/report_unw_coh.jpg new file mode 100644 index 0000000..88bd0ea Binary files /dev/null and b/docs/product_specs/images/report_unw_coh.jpg differ diff --git a/docs/product_specs/images/report_unw_coh_hist.jpg b/docs/product_specs/images/report_unw_coh_hist.jpg new file mode 100644 index 0000000..9119777 Binary files /dev/null and b/docs/product_specs/images/report_unw_coh_hist.jpg differ diff --git a/docs/product_specs/images/report_unw_igram.jpg b/docs/product_specs/images/report_unw_igram.jpg new file mode 100644 index 0000000..3d450e7 Binary files /dev/null and b/docs/product_specs/images/report_unw_igram.jpg differ diff --git a/docs/product_specs/images/report_unw_igram_hist.jpg b/docs/product_specs/images/report_unw_igram_hist.jpg new file mode 100644 index 0000000..1c478ef Binary files /dev/null and b/docs/product_specs/images/report_unw_igram_hist.jpg differ diff --git a/docs/product_specs/images/report_wrapped_igram_coh.jpg b/docs/product_specs/images/report_wrapped_igram_coh.jpg new file mode 100644 index 0000000..71518e3 Binary files /dev/null and b/docs/product_specs/images/report_wrapped_igram_coh.jpg differ diff --git a/docs/product_specs/images/report_wrapped_igram_coh_hist.jpg b/docs/product_specs/images/report_wrapped_igram_coh_hist.jpg new file mode 100644 index 0000000..9248887 Binary files /dev/null and b/docs/product_specs/images/report_wrapped_igram_coh_hist.jpg differ