From ad576c4e1f069294e59eaeabc77addf4afed3210 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Wed, 13 Mar 2024 15:56:12 -0700 Subject: [PATCH 01/46] Changed xpath behavior, reordered functions --- pds4indextools/pds4_create_xml_index.py | 265 ++++++++++-------------- 1 file changed, 113 insertions(+), 152 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index d38b3f8..47625a9 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -1,50 +1,3 @@ -""" -XML Bundle Scraper - -This script scrapes XML files within specified directories, extracts information from -user-defined XML elements, and generates a CSV index file. The script provides options -for customizing the extraction process, such as specifying XPath headers, limiting -search levels, and selecting elements to scrape. - -Usage: - python xml_bundle_scraper.py - [--elements-file ELEMENTS_FILE] - [--xpaths] - [--output-file OUTPUT_FILE] - [--verbose] - [--sort-by SORT_BY] - [--clean-header-field-names] - [--extra-file-info EXTRA_FILE_INFO] - [--config-file CONFIG_FILE] - -Arguments: - directorypath The path to the directory containing the bundle to scrape. - pattern The glob pattern(s) (which may include wildcards like *, ?, - and **) for the files you wish to index. Multiple patterns - may be specified separated by spaces. Surround each pattern - with quotes. - --elements-file ELEMENTS_FILE - Optional text file containing elements to scrape. - --xpaths Activate XPath headers in the final index file. - --output-file OUTPUT_FILE - The output path and filename for the resulting index file. - --verbose Activate verbose printed statements during runtime. - --sort-by SORT_BY Sort the index file by a chosen set of columns. - --clean-header-field-names - Replace the ":" and "/" with Windows-friendly characters. - --extra-file-info EXTRA_FILE_INFO - Add additional column(s) to the index file containing file or - bundle information. Possible values are: "LID", "filename", - "filepath", "bundle", and "bundle_lid". Multiple values may be - specified separated by spaces. - --config-file CONFIG_FILE - An optional .ini configuration file for further customization. - -Example: -python3 pds4_create_xml_index.py "glob_path1" "glob_path2" ---output_file --elements-file sample_elements.txt --verbose -""" - import argparse import configparser from lxml import etree @@ -54,6 +7,32 @@ import sys +def convert_header_to_xpath(root, xpath_find, namespaces): + """Convert an XML header path to an XPath expression. + + Inputs: + root The root element of the XML document. + xpath_find Original XML header path. + namespaces Dictionary of XML namespace mappings. + + Returns: + Converted XPath expression. + """ + sections = xpath_find.split('/') + xpath_final = '' + portion = '' + for sec in sections[1:]: + portion = portion + '/' + sec + tag = str(root.xpath(portion, namespaces=namespaces)[0].tag) + if '*' in sec: + sec = sec[1:] + if ':' in sec: + sec = '' + xpath_final = xpath_final + '/' + tag + sec + + return xpath_final + + def default_value_for_nil(config, data_type, nil_value): """Find the default value for a nilled element. @@ -75,42 +54,16 @@ def default_value_for_nil(config, data_type, nil_value): return default -def convert_header_to_tag(path, root, namespaces): - """Convert an XPath expression to an XML tag. - - Inputs: - path XPath expression. - root The root element of the XML document. - namespaces Dictionary of XML namespace mappings. - - Returns: - Converted XML tag. - """ - tag = str(root.xpath(path, namespaces=namespaces)[0].tag) - - return tag - - -def convert_header_to_xpath(root, xpath_find, namespaces): - """Convert an XML header path to an XPath expression. - - Inputs: - root The root element of the XML document. - xpath_find Original XML header path. - namespaces Dictionary of XML namespace mappings. - - Returns: - Converted XPath expression. - """ - sections = xpath_find.split('/') - xpath_final = '' - portion = '' - for sec in sections[1:]: - portion = portion + '/' + sec - tag = str(root.xpath(portion, namespaces=namespaces)[0].tag) - xpath_final = xpath_final + '/' + tag +def grab_elements(xpath): + elements = () + parts = xpath.split('/') - return xpath_final + for part in parts: + if '[' in part: + part = part.split('[') + elements += (part[0],) + + return elements def load_config_file(specified_config_file): @@ -146,57 +99,6 @@ def load_config_file(specified_config_file): return config -def update_nillable_elements_from_xsd_file(xsd_file, nillable_elements_info): - """Store all nillable elements and their data types in a dictionary. - - Inputs: - xsd file An XML Schema Definition file. - nillable_elements_info A dictionary containing nillable element information. - """ - tree = etree.fromstring(requests.get(xsd_file).content) - namespace = {'xs': 'http://www.w3.org/2001/XMLSchema'} - - elements_with_nillable = tree.xpath('//xs:element[@nillable="true"]', - namespaces=namespace) - - for element in elements_with_nillable: - name = element.get('name') - type_attribute = element.get('type') - if type_attribute not in nillable_elements_info.keys(): - if type_attribute: - # Split the type attribute to handle namespace:typename format - type_parts = type_attribute.split(':') - # Take the last part as the type name - type_name = type_parts[-1] - - # Attempt to find the type definition in the document - type_definition_xpath = (f'//xs:simpleType[@name="{type_name}"] | ' - f'//xs:complexType[@name="{type_name}"]') - type_definition = tree.xpath( - type_definition_xpath, namespaces=namespace) - - if type_definition: - # Take the first match - type_definition = type_definition[0] - base_type = None - # For complexType with simpleContent or simpleType, find base attr - if type_definition.tag.endswith('simpleType'): - restriction = type_definition.find('.//xs:restriction', - namespaces=namespace) - if restriction is not None: - base_type = restriction.get('base') - elif type_definition.tag.endswith('complexType'): - extension = type_definition.find('.//xs:extension', - namespaces=namespace) - if extension is not None: - base_type = extension.get('base') - - nillable_elements_info[name] = ( - base_type or 'External or built-in type') - else: - # Type definition not found, might be external or built-in type - nillable_elements_info[name] = 'External or built-in type' - def process_schema_location(file_path): """Process schema location from an XML file. @@ -222,7 +124,7 @@ def process_schema_location(file_path): return xsd_urls -def process_tags(xml_results, key, root, namespaces, prefixes, args): +def process_tags(xml_results, key, root, namespaces, prefixes): """Process XML tags based on the provided options. If the --xpaths command is used, the XPath is converted into a format that @@ -238,24 +140,13 @@ def process_tags(xml_results, key, root, namespaces, prefixes, args): root The root element of the XML tree. namespaces A dictionary containing XML namespace mappings. prefixes A dictionary containing XML namespace prefixes. - args Command-line arguments. """ - if args.xpaths: - key_new = convert_header_to_xpath(root, key, namespaces) - for namespace in prefixes.keys(): - if namespace in key_new: - key_new = key_new.replace( - '{'+namespace+'}', prefixes[namespace]+':') - xml_results[key_new] = xml_results[key] - del xml_results[key] - else: - key_new = convert_header_to_tag(key, root, namespaces) - for namespace in prefixes.keys(): - if namespace in key_new: - key_new = key_new.replace( - '{'+namespace+'}', prefixes[namespace]+':') - xml_results[key_new] = xml_results[key] - del xml_results[key] + key_new = convert_header_to_xpath(root, key, namespaces) + for namespace in prefixes.keys(): + if namespace in key_new: + key_new = key_new.replace( + '{'+namespace+'}', prefixes[namespace]+':') + xml_results[key_new] = xml_results.pop(key) def store_element_text(element, tree, results_dict, nillable_elements_info, config, label): @@ -319,6 +210,58 @@ def traverse_and_store(element, tree, results_dict, elements_to_scrape, nillable_elements_info, config, label) +def update_nillable_elements_from_xsd_file(xsd_file, nillable_elements_info): + """Store all nillable elements and their data types in a dictionary. + + Inputs: + xsd file An XML Schema Definition file. + nillable_elements_info A dictionary containing nillable element information. + """ + tree = etree.fromstring(requests.get(xsd_file).content) + namespace = {'xs': 'http://www.w3.org/2001/XMLSchema'} + + elements_with_nillable = tree.xpath('//xs:element[@nillable="true"]', + namespaces=namespace) + + for element in elements_with_nillable: + name = element.get('name') + type_attribute = element.get('type') + if type_attribute not in nillable_elements_info.keys(): + if type_attribute: + # Split the type attribute to handle namespace:typename format + type_parts = type_attribute.split(':') + # Take the last part as the type name + type_name = type_parts[-1] + + # Attempt to find the type definition in the document + type_definition_xpath = (f'//xs:simpleType[@name="{type_name}"] | ' + f'//xs:complexType[@name="{type_name}"]') + type_definition = tree.xpath( + type_definition_xpath, namespaces=namespace) + + if type_definition: + # Take the first match + type_definition = type_definition[0] + base_type = None + # For complexType with simpleContent or simpleType, find base attr + if type_definition.tag.endswith('simpleType'): + restriction = type_definition.find('.//xs:restriction', + namespaces=namespace) + if restriction is not None: + base_type = restriction.get('base') + elif type_definition.tag.endswith('complexType'): + extension = type_definition.find('.//xs:extension', + namespaces=namespace) + if extension is not None: + base_type = extension.get('base') + + nillable_elements_info[name] = ( + base_type or 'External or built-in type') + else: + # Type definition not found, might be external or built-in type + nillable_elements_info[name] = 'External or built-in type' + + def write_results_to_csv(results_list, args, output_csv_path): """Write results from a list of dictionaries to a CSV file. @@ -359,7 +302,7 @@ def main(): 'specified, all elements found in the XML files are ' 'included.') - parser.add_argument('--xpaths', action='store_true', + parser.add_argument('--disambiguate-xpaths', action='store_true', help='If specified, use full XPaths in the column ' 'headers. If not specified, use only elements tags.') @@ -442,6 +385,23 @@ def main(): process_tags(xml_results, key, root, namespaces, prefixes, args) + if args.disambiguate_xpaths: + elements = () + xpath_elements = [] + for key in list(xml_results.keys()): + xpath_elements.append(grab_elements(key)) + + duplicates = [t for t in set(xpath_elements) if xpath_elements.count(t) > 1] + + for key in list(xml_results.keys()): + elements = grab_elements(key) + if elements not in duplicates: + value = elements[-1] + else: + value = key + xml_results[value] = xml_results.pop(key) + + lid = xml_results.get('pds:logical_identifier', 'Missing_LID') # Attach extra columns if asked for. @@ -467,3 +427,4 @@ def main(): if __name__ == '__main__': main() + \ No newline at end of file From 9777a60b10118b30029f1bb8500a2546b01d670b Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Wed, 13 Mar 2024 16:33:20 -0700 Subject: [PATCH 02/46] Added missing documentation and fixed existing documentation --- pds4indextools/pds4_create_xml_index.py | 57 +++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index 47625a9..4643ac3 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -1,3 +1,47 @@ +""" +XML Bundle Scraper +This script scrapes XML files within specified directories, extracts information from +user-defined XML elements, and generates a CSV index file. The script provides options +for customizing the extraction process, such as specifying XPath headers, limiting +search levels, and selecting elements to scrape. +Usage: + python xml_bundle_scraper.py + [--elements-file ELEMENTS_FILE] + [--disambiguate-xpaths] + [--output-file OUTPUT_FILE] + [--verbose] + [--sort-by SORT_BY] + [--clean-header-field-names] + [--extra-file-info EXTRA_FILE_INFO] + [--config-file CONFIG_FILE] +Arguments: + directorypath The path to the directory containing the bundle to scrape. + pattern The glob pattern(s) (which may include wildcards like *, ?, + and **) for the files you wish to index. Multiple patterns + may be specified separated by spaces. Surround each pattern + with quotes. + --elements-file ELEMENTS_FILE + Optional text file containing elements to scrape. + --disambiguate-xpaths + Replace unique XPath headers with shortened versions. + --output-file OUTPUT_FILE + The output path and filename for the resulting index file. + --verbose Activate verbose printed statements during runtime. + --sort-by SORT_BY Sort the index file by a chosen set of columns. + --clean-header-field-names + Replace the ":" and "/" with Windows-friendly characters. + --extra-file-info EXTRA_FILE_INFO + Add additional column(s) to the index file containing file or + bundle information. Possible values are: "LID", "filename", + "filepath", "bundle", and "bundle_lid". Multiple values may be + specified separated by spaces. + --config-file CONFIG_FILE + An optional .ini configuration file for further customization. +Example: +python3 pds4_create_xml_index.py "glob_path1" "glob_path2" +--output_file --elements-file sample_elements.txt --verbose +""" + import argparse import configparser from lxml import etree @@ -55,6 +99,14 @@ def default_value_for_nil(config, data_type, nil_value): def grab_elements(xpath): + """Extract elements from an XPath in the order they appear. + + Inputs: + xpath The XPath of a scraped element + + Returns: + The tuple of elements the XPath is composed of. + """ elements = () parts = xpath.split('/') @@ -103,7 +155,7 @@ def load_config_file(specified_config_file): def process_schema_location(file_path): """Process schema location from an XML file. - Args: + Inputs: file_path Path to the XML file. Returns: @@ -383,7 +435,7 @@ def main(): for key in list(xml_results.keys()): process_tags(xml_results, key, root, - namespaces, prefixes, args) + namespaces, prefixes) if args.disambiguate_xpaths: elements = () @@ -427,4 +479,3 @@ def main(): if __name__ == '__main__': main() - \ No newline at end of file From d8961791d83ea8527a567c0fa875bd6c171c63d2 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Thu, 14 Mar 2024 11:55:40 -0700 Subject: [PATCH 03/46] Fixed issue with missing columns --- pds4indextools/pds4_create_xml_index.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index 4643ac3..08e5983 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -440,6 +440,7 @@ def main(): if args.disambiguate_xpaths: elements = () xpath_elements = [] + tags = [] for key in list(xml_results.keys()): xpath_elements.append(grab_elements(key)) @@ -447,8 +448,10 @@ def main(): for key in list(xml_results.keys()): elements = grab_elements(key) - if elements not in duplicates: - value = elements[-1] + tag = elements[-1] + if elements not in duplicates and elements[-1] not in tags: + value = tag + tags.append(tag) else: value = key xml_results[value] = xml_results.pop(key) From d8514f6a316123225d5586d2cd1054cf2387176c Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Thu, 28 Mar 2024 14:22:48 -0700 Subject: [PATCH 04/46] XPaths are now renumbered --- pds4indextools/pds4_create_xml_index.py | 147 +++++++++++++++++++++--- 1 file changed, 132 insertions(+), 15 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index 08e5983..81e5649 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -43,7 +43,9 @@ """ import argparse +from collections import namedtuple import configparser +from itertools import groupby from lxml import etree import pandas as pd from pathlib import Path @@ -51,6 +53,10 @@ import sys +SplitXPath = namedtuple('SplitXPath', + ['xpath', 'parent', 'child', 'prefix', 'num']) + + def convert_header_to_xpath(root, xpath_find, namespaces): """Convert an XML header path to an XPath expression. @@ -176,18 +182,18 @@ def process_schema_location(file_path): return xsd_urls -def process_tags(xml_results, key, root, namespaces, prefixes): +def process_tags(label_results, key, root, namespaces, prefixes): """Process XML tags based on the provided options. If the --xpaths command is used, the XPath is converted into a format that contains the names and namespaces of all the parent elements of that element. If the --xpaths command is not used, the XPath is converted into the associated element tag of that element, and given its associated namespace. These - values then replace their old versions in the xml_results dictionary. + values then replace their old versions in the label_results dictionary. Inputs: - xml_results A dictionary containing XML data to be processed. + label_results A dictionary containing XML data to be processed. key The key representing the XML tag to be processed. root The root element of the XML tree. namespaces A dictionary containing XML namespace mappings. @@ -198,7 +204,114 @@ def process_tags(xml_results, key, root, namespaces, prefixes): if namespace in key_new: key_new = key_new.replace( '{'+namespace+'}', prefixes[namespace]+':') - xml_results[key_new] = xml_results.pop(key) + label_results[key_new] = label_results.pop(key) + + +def renumber_xpaths(xpaths): + """Renumber a list of XPaths to be sequential at each level. + + lxml appends a unique ID in [] after each tag based on its physical position + in the XML hierarcy. For example: + + /pds:Product_Observational/pds:Observation_Area[2]/ + pds:Observing_System[4]/pds:name[1] + + For ease of use, we would rather have these numbers based on the occurrence + number rather than the physical position. + + This function takes in a list of XPaths (or XPath fragments) and renumbers + them at each level of the hierarchy such that each unique tag name is + numbered sequentially starting at 1. The list of XPaths must already be + sorted such that the numbers at each level are in ascending order. + Further, if there are multiple occurrences of a tag at a level, those + occurrences must be next to each other with no other tags in between. + + Input: + xpaths The list of XPaths or XPath fragments. + + Returns: + A dictionary containing a mapping from the original XPaths to the + renumbered XPaths. + """ + + def split_xpath_prefix_and_num(xpath): + """Convert an XPath into a SplitXPath namedtuple. + + Each XPath is of the form: + or + / where includes all further levels of the + hierarchy + is of the form: + or + [] where [] is an optional unique ID + + If there is no , None is used. If there is no [], None is + used. + + Inputs: + xpath The XPath to be converted + + Returns: + a SplitXPath namedtuple + """ + parent, child, *_ = xpath.split('/', 1) + [None] + try: + idx = parent.index('[') + except ValueError: + return SplitXPath(xpath, parent, child, parent, None) + return SplitXPath(xpath, parent, child, parent[:idx], int(parent[idx+1:-1])) + + xpath_map = {} + + # split_xpaths is a list containing tuples of + # (full_xpath, parent, child, prefix_of_parent, num_of_parent) + # If there is no child, child is None + # If there is no number in [n], num_of_parent is None + split_xpaths = [split_xpath_prefix_and_num(x) for x in xpaths] + + # Group split_xpaths by prefix + for prefix, prefix_group in groupby(split_xpaths, lambda x: x.prefix): + prefix_group_list = list(prefix_group) + + # The parents in the resulting group may have unique IDs. + # We collect those IDs and create a mapping from the original numbers + # to a new set of suffixes of the form "[]" where is sequentially + # increasing starting at 1. We also add a special entry for the empty + # suffix when there is no number. + unique_nums = sorted(list(set(x.num for x in prefix_group_list + if x.num is not None))) + renumber_map = {x: f'[{i+1}]' for i, x in enumerate(unique_nums)} + renumber_map[None] = '' + + # We further group these by unique parent (including the number) + # and recursively process all children for each unique parent. + # When the child map is returned, we update our map using the number + # remapping for the current parent combined with the child map. + for parent, parent_group in groupby(prefix_group_list, + lambda x: x.parent): + parent_group_list = list(parent_group) + + # Find all the entries that have children, package them up, + # and call renumber_xpaths recursively to renumber the next level + # down. + children = [x for x in parent_group_list if x.child is not None] + if children: + child_map = renumber_xpaths([x.child for x in children]) + xpath_map.update( + {f'{x.parent}/{x.child}': + f'{x.prefix}{renumber_map[x.num]}/{child_map[x.child]}' + for x in children} + ) + + # Find all the entries that have no children. These are leaf + # nodes. Renumber them. + no_children = [x for x in parent_group_list if x.child is None] + xpath_map.update( + {f'{x.parent}': f'{x.prefix}{renumber_map[x.num]}' + for x in no_children} + ) + + return xpath_map def store_element_text(element, tree, results_dict, nillable_elements_info, config, label): @@ -429,24 +542,28 @@ def main(): namespaces['pds'] = namespaces.pop(None) prefixes = {v: k for k, v in namespaces.items()} - xml_results = {} - traverse_and_store(root, tree, xml_results, elements_to_scrape, + label_results = {} + traverse_and_store(root, tree, label_results, elements_to_scrape, nillable_elements_info, config, file) - for key in list(xml_results.keys()): - process_tags(xml_results, key, root, + for key in list(label_results.keys()): + process_tags(label_results, key, root, namespaces, prefixes) + + new_xpaths = renumber_xpaths(label_results.keys()) + for key, value in new_xpaths.items(): + label_results[value] = label_results.pop(key) if args.disambiguate_xpaths: elements = () xpath_elements = [] tags = [] - for key in list(xml_results.keys()): + for key in list(label_results.keys()): xpath_elements.append(grab_elements(key)) duplicates = [t for t in set(xpath_elements) if xpath_elements.count(t) > 1] - for key in list(xml_results.keys()): + for key in list(label_results.keys()): elements = grab_elements(key) tag = elements[-1] if elements not in duplicates and elements[-1] not in tags: @@ -454,10 +571,10 @@ def main(): tags.append(tag) else: value = key - xml_results[value] = xml_results.pop(key) + label_results[value] = label_results.pop(key) - lid = xml_results.get('pds:logical_identifier', 'Missing_LID') + lid = label_results.get('pds:logical_identifier', 'Missing_LID') # Attach extra columns if asked for. bundle_lid = ':'.join(lid.split(':')[:4]) @@ -465,10 +582,10 @@ def main(): extras = {'LID': lid, 'filepath': filepath, 'filename': file.name, 'bundle': bundle, 'bundle_lid': bundle_lid} if args.extra_file_info: - xml_results = {**{ele: extras[ele] for ele in args.extra_file_info}, - **xml_results} + label_results = {**{ele: extras[ele] for ele in args.extra_file_info}, + **label_results} - result_dict = {'Results': xml_results} + result_dict = {'Results': label_results} all_results.append(result_dict) if args.output_file: From fb8ccdbc59a436a4b0a801c4606e676a5aedc897 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Thu, 28 Mar 2024 15:37:59 -0700 Subject: [PATCH 05/46] Fixing typos and missing spaces --- pds4indextools/pds4_create_xml_index.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index 81e5649..e4cba13 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -4,6 +4,7 @@ user-defined XML elements, and generates a CSV index file. The script provides options for customizing the extraction process, such as specifying XPath headers, limiting search levels, and selecting elements to scrape. + Usage: python xml_bundle_scraper.py [--elements-file ELEMENTS_FILE] @@ -14,6 +15,7 @@ [--clean-header-field-names] [--extra-file-info EXTRA_FILE_INFO] [--config-file CONFIG_FILE] + Arguments: directorypath The path to the directory containing the bundle to scrape. pattern The glob pattern(s) (which may include wildcards like *, ?, @@ -37,6 +39,7 @@ specified separated by spaces. --config-file CONFIG_FILE An optional .ini configuration file for further customization. + Example: python3 pds4_create_xml_index.py "glob_path1" "glob_path2" --output_file --elements-file sample_elements.txt --verbose @@ -194,10 +197,10 @@ def process_tags(label_results, key, root, namespaces, prefixes): Inputs: label_results A dictionary containing XML data to be processed. - key The key representing the XML tag to be processed. - root The root element of the XML tree. - namespaces A dictionary containing XML namespace mappings. - prefixes A dictionary containing XML namespace prefixes. + key The key representing the XML tag to be processed. + root The root element of the XML tree. + namespaces A dictionary containing XML namespace mappings. + prefixes A dictionary containing XML namespace prefixes. """ key_new = convert_header_to_xpath(root, key, namespaces) for namespace in prefixes.keys(): @@ -468,8 +471,8 @@ def main(): 'included.') parser.add_argument('--disambiguate-xpaths', action='store_true', - help='If specified, use full XPaths in the column ' - 'headers. If not specified, use only elements tags.') + help='If specified, uses tags of unique XPaths. Any values with ' + 'duplicate values will still use their full XPath.') parser.add_argument('--output-file', type=str, help='The output filepath ending with your chosen filename for ' From 9ca02eb0dcac829be23bf4df4856189a207fcb63 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Fri, 29 Mar 2024 10:47:36 -0700 Subject: [PATCH 06/46] Changed comments in renumber_xpaths --- pds4indextools/pds4_create_xml_index.py | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index e4cba13..e93ebb3 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -266,30 +266,17 @@ def split_xpath_prefix_and_num(xpath): xpath_map = {} - # split_xpaths is a list containing tuples of - # (full_xpath, parent, child, prefix_of_parent, num_of_parent) - # If there is no child, child is None - # If there is no number in [n], num_of_parent is None split_xpaths = [split_xpath_prefix_and_num(x) for x in xpaths] # Group split_xpaths by prefix for prefix, prefix_group in groupby(split_xpaths, lambda x: x.prefix): prefix_group_list = list(prefix_group) - # The parents in the resulting group may have unique IDs. - # We collect those IDs and create a mapping from the original numbers - # to a new set of suffixes of the form "[]" where is sequentially - # increasing starting at 1. We also add a special entry for the empty - # suffix when there is no number. unique_nums = sorted(list(set(x.num for x in prefix_group_list if x.num is not None))) renumber_map = {x: f'[{i+1}]' for i, x in enumerate(unique_nums)} renumber_map[None] = '' - # We further group these by unique parent (including the number) - # and recursively process all children for each unique parent. - # When the child map is returned, we update our map using the number - # remapping for the current parent combined with the child map. for parent, parent_group in groupby(prefix_group_list, lambda x: x.parent): parent_group_list = list(parent_group) From 1ca64dacbd4b0b8cbb069219f9cc8d876e418b29 Mon Sep 17 00:00:00 2001 From: Robert French Date: Fri, 29 Mar 2024 11:27:07 -0700 Subject: [PATCH 07/46] Update .gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 68bc17f..c1744b8 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ share/python-wheels/ .installed.cfg *.egg MANIFEST +**/_version.py # PyInstaller # Usually these files are written by a python script from a template @@ -123,7 +124,7 @@ celerybeat.pid .env .venv env/ -venv/ +*venv*/ ENV/ env.bak/ venv.bak/ From b8f4ff3a42f2e44de3a526206e34bbcef78b5d82 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Fri, 29 Mar 2024 16:06:26 -0700 Subject: [PATCH 08/46] Making changes according to pull request --- pds4indextools/pds4_create_xml_index.py | 137 +++++++++++++++--------- 1 file changed, 88 insertions(+), 49 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index e93ebb3..ad1dd2d 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -1,5 +1,6 @@ """ XML Bundle Scraper + This script scrapes XML files within specified directories, extracts information from user-defined XML elements, and generates a CSV index file. The script provides options for customizing the extraction process, such as specifying XPath headers, limiting @@ -8,7 +9,7 @@ Usage: python xml_bundle_scraper.py [--elements-file ELEMENTS_FILE] - [--disambiguate-xpaths] + [--simplify-xpaths] [--output-file OUTPUT_FILE] [--verbose] [--sort-by SORT_BY] @@ -24,8 +25,7 @@ with quotes. --elements-file ELEMENTS_FILE Optional text file containing elements to scrape. - --disambiguate-xpaths - Replace unique XPath headers with shortened versions. + --simplify-xpaths Replace unique XPath segments with shortened versions. --output-file OUTPUT_FILE The output path and filename for the resulting index file. --verbose Activate verbose printed statements during runtime. @@ -61,7 +61,12 @@ def convert_header_to_xpath(root, xpath_find, namespaces): - """Convert an XML header path to an XPath expression. + """Replace hierarchal components of XPath with attribute names and namespaces. + + While the XPaths are accurate to the hierarchy of the elements referenced, they + provide no information on their own without the attributed label file for reference. + This function replaces the asterisks with the respective names of the elements and + attributes they represent. Inputs: root The root element of the XML document. @@ -107,7 +112,7 @@ def default_value_for_nil(config, data_type, nil_value): return default -def grab_elements(xpath): +def split_into_elements(xpath): """Extract elements from an XPath in the order they appear. Inputs: @@ -185,15 +190,11 @@ def process_schema_location(file_path): return xsd_urls -def process_tags(label_results, key, root, namespaces, prefixes): - """Process XML tags based on the provided options. - - If the --xpaths command is used, the XPath is converted into a format that - contains the names and namespaces of all the parent elements of that element. - If the --xpaths command is not used, the XPath is converted into the - associated element tag of that element, and given its associated namespace. These - values then replace their old versions in the label_results dictionary. +def process_headers(label_results, key, root, namespaces, prefixes): + """Process headers to have more readable contents. + Processes XPath headers by converting parts of the XPath into element tags, + replacing namespaces with prefixes, and updating the label_results dictionary. Inputs: label_results A dictionary containing XML data to be processed. @@ -228,16 +229,48 @@ def renumber_xpaths(xpaths): sorted such that the numbers at each level are in ascending order. Further, if there are multiple occurrences of a tag at a level, those occurrences must be next to each other with no other tags in between. + For example, these are not permitted: + + /a[2]/b[1] + /a[1]/b[1] + + or: + + /a[1]/b[1] + /c[1] + /a[3]/b[1] + + Renumbering example: + + Original: + a + /b[5]/c[5] + /b[5]/c[7] + /b[5]/c[9] + /b[7]/c[5] + /b[7]/c[7] + /b[9]/c[9] + + Renumbered: + a + /b[1]/c[1] + /b[1]/c[2] + /b[1]/c[3] + /b[2]/c[1] + /b[2]/c[2] + /b[3]/c[1] Input: + xpaths The list of XPaths or XPath fragments. Returns: + A dictionary containing a mapping from the original XPaths to the renumbered XPaths. """ - def split_xpath_prefix_and_num(xpath): + def split_xpath_prefix_and_num(s): """Convert an XPath into a SplitXPath namedtuple. Each XPath is of the form: @@ -250,33 +283,40 @@ def split_xpath_prefix_and_num(xpath): If there is no , None is used. If there is no [], None is used. - - Inputs: - xpath The XPath to be converted - - Returns: - a SplitXPath namedtuple """ - parent, child, *_ = xpath.split('/', 1) + [None] + parent, child, *_ = s.split('/', 1) + [None] try: idx = parent.index('[') except ValueError: - return SplitXPath(xpath, parent, child, parent, None) - return SplitXPath(xpath, parent, child, parent[:idx], int(parent[idx+1:-1])) + return SplitXPath(s, parent, child, parent, None) + return SplitXPath(s, parent, child, parent[:idx], int(parent[idx+1:-1])) xpath_map = {} + # split_xpaths is a list containing tuples of + # (full_xpath, parent, child, prefix_of_parent, num_of_parent) + # If there is no child, child is None + # If there is no number in [n], num_of_parent is None split_xpaths = [split_xpath_prefix_and_num(x) for x in xpaths] # Group split_xpaths by prefix for prefix, prefix_group in groupby(split_xpaths, lambda x: x.prefix): prefix_group_list = list(prefix_group) + # The parents in the resulting group may have unique IDs. + # We collect those IDs and create a mapping from the original numbers + # to a new set of suffixes of the form "[]" where is sequentially + # increasing starting at 1. We also add a special entry for the empty + # suffix when there is no number. unique_nums = sorted(list(set(x.num for x in prefix_group_list if x.num is not None))) renumber_map = {x: f'[{i+1}]' for i, x in enumerate(unique_nums)} renumber_map[None] = '' + # We further group these by unique parent (including the number) + # and recursively process all children for each unique parent. + # When the child map is returned, we update our map using the number + # remapping for the current parent combined with the child map. for parent, parent_group in groupby(prefix_group_list, lambda x: x.parent): parent_group_list = list(parent_group) @@ -457,7 +497,7 @@ def main(): 'specified, all elements found in the XML files are ' 'included.') - parser.add_argument('--disambiguate-xpaths', action='store_true', + parser.add_argument('--simplify-xpaths', action='store_true', help='If specified, uses tags of unique XPaths. Any values with ' 'duplicate values will still use their full XPath.') @@ -536,32 +576,31 @@ def main(): traverse_and_store(root, tree, label_results, elements_to_scrape, nillable_elements_info, config, file) - for key in list(label_results.keys()): - process_tags(label_results, key, root, - namespaces, prefixes) + for key in label_results.keys(): + process_headers(label_results, key, root, namespaces, prefixes) - new_xpaths = renumber_xpaths(label_results.keys()) - for key, value in new_xpaths.items(): - label_results[value] = label_results.pop(key) - - if args.disambiguate_xpaths: - elements = () - xpath_elements = [] - tags = [] - for key in list(label_results.keys()): - xpath_elements.append(grab_elements(key)) - - duplicates = [t for t in set(xpath_elements) if xpath_elements.count(t) > 1] - - for key in list(label_results.keys()): - elements = grab_elements(key) - tag = elements[-1] - if elements not in duplicates and elements[-1] not in tags: - value = tag - tags.append(tag) - else: - value = key - label_results[value] = label_results.pop(key) + xpath_map = renumber_xpaths(label_results.keys()) + for old_xpath, new_xpath in xpath_map.items(): + label_results[new_xpath] = label_results.pop(old_xpath) + + if args.simplify_xpaths: + elements = () + xpath_elements = [] + tags = [] + for key in label_results.keys(): + xpath_elements.append(split_into_elements(key)) + + duplicates = [t for t in set(xpath_elements) if xpath_elements.count(t) > 1] + + for key in list(label_results.keys()): + elements = split_into_elements(key) + tag = elements[-1] + if elements not in duplicates and elements[-1] not in tags: + value = tag + tags.append(tag) + else: + value = key + label_results[value] = label_results.pop(key) lid = label_results.get('pds:logical_identifier', 'Missing_LID') From b69fd179cbbb15fa2fe50809aa7766f957e280ee Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 9 Apr 2024 08:06:17 -0700 Subject: [PATCH 09/46] Adding in current unit tests and dummy files --- test_files/elements_file_success.csv | 2 + test_files/tester_config.ini | 17 +++ test_files/tester_label_1.xml | 28 +++++ tests/test_pds4_create_xml_index.py | 161 +++++++++++++++++++++++++++ 4 files changed, 208 insertions(+) create mode 100644 test_files/elements_file_success.csv create mode 100644 test_files/tester_config.ini create mode 100644 test_files/tester_label_1.xml create mode 100644 tests/test_pds4_create_xml_index.py diff --git a/test_files/elements_file_success.csv b/test_files/elements_file_success.csv new file mode 100644 index 0000000..db8e808 --- /dev/null +++ b/test_files/elements_file_success.csv @@ -0,0 +1,2 @@ +/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:title[1] +urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img diff --git a/test_files/tester_config.ini b/test_files/tester_config.ini new file mode 100644 index 0000000..4afeaa0 --- /dev/null +++ b/test_files/tester_config.ini @@ -0,0 +1,17 @@ +[pds:ASCII_Integer] +inapplicable=-9999 +missing=-9988 +unknown=-9977 +anticipated=-9966 + +[pds:ASCII_Real] +inapplicable=-9999.0 +missing=-9988.0 +unknown=-9977.0 +anticipated=-9966.0 + +[pds:ASCII_Short_String_Collapsed] +inapplicable=inapplicable_alt +missing=missing_alt +unknown=unknown_alt +anticipated=anticipated_alt diff --git a/test_files/tester_label_1.xml b/test_files/tester_label_1.xml new file mode 100644 index 0000000..39e54f5 --- /dev/null +++ b/test_files/tester_label_1.xml @@ -0,0 +1,28 @@ + + + + urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n + 1.0 + Cassini ISS Image 1455200455n.img + 1.11.0.0 + + + Cassini Orbiter Imaging Science Subsystem + + Cassini Orbiter + Spacecraft + + urn:nasa:pds:context:instrument_host:spacecraft.co + is_instrument_host + + + + + + diff --git a/tests/test_pds4_create_xml_index.py b/tests/test_pds4_create_xml_index.py new file mode 100644 index 0000000..f4f57df --- /dev/null +++ b/tests/test_pds4_create_xml_index.py @@ -0,0 +1,161 @@ +import pandas as pd +from pathlib import Path +import pytest +import os +import sys +sys.path.append(str(Path(__file__).resolve().parent.parent / Path("pds4indextools"))) +import pds4_create_xml_index as tools +import tempfile + + +def test_elements_file(): + # Get the path to the test_files directory + root_dir = Path(__file__).resolve().parent.parent + test_files_dir = root_dir / 'test_files' + # THE PATH TO THE GOLDEN COPY + golden_file = str(test_files_dir / 'elements_file_success.csv') + new_file = 'elements_file.csv' + + # Create a temporary directory in the same location as the test_files directory + with tempfile.TemporaryDirectory(dir=test_files_dir.parent) as temp_dir: + temp_dir_path = Path(temp_dir) + + # THE PATH TO THE NEW FILE + path_to_file = temp_dir_path / new_file + + cmd_line = [ + str(test_files_dir), + 'tester_label_1.xml', + '--elements-file', + str(root_dir / 'samples/sample_elements.txt'), + '--output-file', + str(path_to_file) + ] + + # Call main() function with the simulated command line arguments + tools.main(cmd_line) + + # Assert that the file now exists + assert os.path.isfile(path_to_file) + + # Open and compare the two files + with open(path_to_file, 'rb') as created: + formed = created.read() + + with open(golden_file, 'rb') as new: + expected = new.read() + + assert formed == expected + + +def test_load_config_object(): + config_object = tools.load_config_file(None) + + assert config_object['pds:ASCII_Date_Time_YMD_UTC']['inapplicable'] == '0001-01-01T12:00Z' + assert config_object['pds:ASCII_Date_Time_YMD_UTC']['missing'] == '0002-01-01T12:00Z' + assert config_object['pds:ASCII_Date_Time_YMD_UTC']['unknown'] == '0003-01-01T12:00Z' + assert config_object['pds:ASCII_Date_Time_YMD_UTC']['anticipated'] == '0004-01-01T12:00Z' + + assert config_object['pds:ASCII_Date_Time_YMD']['inapplicable'] == '0001-01-01T12:00' + assert config_object['pds:ASCII_Date_Time_YMD']['missing'] == '0002-01-01T12:00' + assert config_object['pds:ASCII_Date_Time_YMD']['unknown'] == '0003-01-01T12:00' + assert config_object['pds:ASCII_Date_Time_YMD']['anticipated'] == '0004-01-01T12:00' + + assert config_object['pds:ASCII_Date_YMD']['inapplicable'] == '0001-01-01' + assert config_object['pds:ASCII_Date_YMD']['missing'] == '0002-01-01' + assert config_object['pds:ASCII_Date_YMD']['unknown'] == '0003-01-01' + assert config_object['pds:ASCII_Date_YMD']['anticipated'] == '0004-01-01' + + assert config_object['pds:ASCII_Integer']['inapplicable'] == '-999' + assert config_object['pds:ASCII_Integer']['missing'] == '-998' + assert config_object['pds:ASCII_Integer']['unknown'] == '-997' + assert config_object['pds:ASCII_Integer']['anticipated'] == '-996' + + assert config_object['pds:ASCII_Real']['inapplicable'] == '-999.0' + assert config_object['pds:ASCII_Real']['missing'] == '-998.0' + assert config_object['pds:ASCII_Real']['unknown'] == '-997.0' + assert config_object['pds:ASCII_Real']['anticipated'] == '-996.0' + + assert config_object['pds:ASCII_Short_String_Collapsed']['inapplicable'] == 'inapplicable' + assert config_object['pds:ASCII_Short_String_Collapsed']['missing'] == 'missing' + assert config_object['pds:ASCII_Short_String_Collapsed']['unknown'] == 'unknown' + assert config_object['pds:ASCII_Short_String_Collapsed']['anticipated'] == 'anticipated' + + + # Tests that the config_object is loaded over. + config_object = tools.load_config_file("../test_files/tester_config.ini") + + assert config_object['pds:ASCII_Date_YMD']['inapplicable'] == '0001-01-01' + assert config_object['pds:ASCII_Date_YMD']['missing'] == '0002-01-01' + assert config_object['pds:ASCII_Date_YMD']['unknown'] == '0003-01-01' + assert config_object['pds:ASCII_Date_YMD']['anticipated'] == '0004-01-01' + + assert config_object['pds:ASCII_Integer']['inapplicable'] == '-9999' + assert config_object['pds:ASCII_Integer']['missing'] == '-9988' + assert config_object['pds:ASCII_Integer']['unknown'] == '-9977' + assert config_object['pds:ASCII_Integer']['anticipated'] == '-9966' + + assert config_object['pds:ASCII_Real']['inapplicable'] == '-9999.0' + assert config_object['pds:ASCII_Real']['missing'] == '-9988.0' + assert config_object['pds:ASCII_Real']['unknown'] == '-9977.0' + assert config_object['pds:ASCII_Real']['anticipated'] == '-9966.0' + + assert config_object['pds:ASCII_Short_String_Collapsed']['inapplicable'] == 'inapplicable_alt' + assert config_object['pds:ASCII_Short_String_Collapsed']['missing'] == 'missing_alt' + assert config_object['pds:ASCII_Short_String_Collapsed']['unknown'] == 'unknown_alt' + assert config_object['pds:ASCII_Short_String_Collapsed']['anticipated'] == 'anticipated_alt' + + +# now, a bad config file + with pytest.raises(SystemExit): + with pytest.raises(OSError): + tools.load_config_file("non_existent_file.ini") + + +def test_default_value_for_nil(): + config_object = tools.load_config_file(None) + integer = 'pds:ASCII_Integer' + double_float = 'pds:ASCII_Real' + + assert config_object['pds:ASCII_Integer']['inapplicable'] == '-999' + assert tools.default_value_for_nil(config_object, integer, 'inapplicable') == -999 + assert config_object['pds:ASCII_Integer']['missing'] == '-998' + assert tools.default_value_for_nil(config_object, integer, 'missing') == -998 + assert config_object['pds:ASCII_Integer']['unknown'] == '-997' + assert tools.default_value_for_nil(config_object, integer, 'unknown') == -997 + assert config_object['pds:ASCII_Integer']['anticipated'] == '-996' + assert tools.default_value_for_nil(config_object, integer, 'anticipated') == -996 + + + assert config_object['pds:ASCII_Real']['inapplicable'] == '-999.0' + assert tools.default_value_for_nil(config_object, double_float, 'inapplicable') == -999.0 + assert config_object['pds:ASCII_Real']['missing'] == '-998.0' + assert tools.default_value_for_nil(config_object, double_float, 'missing') == -998.0 + assert config_object['pds:ASCII_Real']['unknown'] == '-997.0' + assert tools.default_value_for_nil(config_object, double_float, 'unknown') == -997.0 + assert config_object['pds:ASCII_Real']['anticipated'] == '-996.0' + assert tools.default_value_for_nil(config_object, double_float, 'anticipated') == -996.0 + + + +def test_split_into_elements(): + xpath = '/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:name[1]' + pieces = tools.split_into_elements(xpath) + assert pieces == ('pds:Observation_Area', 'pds:Observing_System', 'pds:name') + + + +def test_process_schema_location(): + test_files_dir = Path(__file__).resolve().parent.parent / 'test_files' + label_file = 'tester_label_1.xml' + schema_files = tools.process_schema_location(test_files_dir / label_file) + assert schema_files[0] == 'https://pds.nasa.gov/pds4/pds/v1/PDS4_PDS_1B00.xsd' + assert schema_files[1] == 'https://pds.nasa.gov/pds4/disp/v1/PDS4_DISP_1B00.xsd' + assert schema_files[2] == 'https://pds.nasa.gov/pds4/mission/cassini/v1/PDS4_CASSINI_1B00_1300.xsd' + + + + + +# root_dir = Path(__file__).resolve().parent.parent +# print(root_dir) \ No newline at end of file From 2e34cd8c8784ab97ba52f51b89a9773dca763082 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 9 Apr 2024 08:15:19 -0700 Subject: [PATCH 10/46] committing in-progress changes for main merge --- pds4indextools/pds4_create_xml_index.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index ad1dd2d..aafb161 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -48,6 +48,7 @@ import argparse from collections import namedtuple import configparser +import functools from itertools import groupby from lxml import etree import pandas as pd @@ -176,8 +177,11 @@ def process_schema_location(file_path): List of XSD URLs extracted from the schema location. """ # Load and parse the XML file - tree = etree.parse(file_path) - root = tree.getroot() + try: + tree = etree.parse(file_path) + root = tree.getroot() + except OSError: + print('Given file does not exist') # Extract the xsi:schemaLocation attribute value schema_location_values = root.get( @@ -405,6 +409,10 @@ def traverse_and_store(element, tree, results_dict, elements_to_scrape, nillable_elements_info, config, label) +@functools.cache +def download_xsd_file(xsd_file): + return etree.fromstring(requests.get(xsd_file).content) + def update_nillable_elements_from_xsd_file(xsd_file, nillable_elements_info): """Store all nillable elements and their data types in a dictionary. @@ -412,7 +420,7 @@ def update_nillable_elements_from_xsd_file(xsd_file, nillable_elements_info): xsd file An XML Schema Definition file. nillable_elements_info A dictionary containing nillable element information. """ - tree = etree.fromstring(requests.get(xsd_file).content) + tree = download_xsd_file(xsd_file) namespace = {'xs': 'http://www.w3.org/2001/XMLSchema'} elements_with_nillable = tree.xpath('//xs:element[@nillable="true"]', @@ -480,7 +488,7 @@ def write_results_to_csv(results_list, args, output_csv_path): df.to_csv(output_csv_path, index=False, na_rep='NaN') -def main(): +def main(cmd_line=None): parser = argparse.ArgumentParser() parser.add_argument('directorypath', type=str, help='The path to the directory containing the bundleset, bundle, ' @@ -525,7 +533,10 @@ def main(): help='Read a user-specified configuration file.. File must be a ' '.ini file.') - args = parser.parse_args() + if cmd_line is None: + args = parser.parse_args() + else: + args = parser.parse_args(cmd_line) verboseprint = print if args.verbose else lambda *a, **k: None @@ -576,7 +587,7 @@ def main(): traverse_and_store(root, tree, label_results, elements_to_scrape, nillable_elements_info, config, file) - for key in label_results.keys(): + for key in list(label_results.keys()): process_headers(label_results, key, root, namespaces, prefixes) xpath_map = renumber_xpaths(label_results.keys()) From ecbf6d3c8564e90ac328e082689fe62abce6458a Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 9 Apr 2024 10:09:10 -0700 Subject: [PATCH 11/46] Fixing sample_elements.txt to work correctly with unit tests --- samples/sample_elements.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/samples/sample_elements.txt b/samples/sample_elements.txt index b7c00c4..2b336e8 100644 --- a/samples/sample_elements.txt +++ b/samples/sample_elements.txt @@ -1,4 +1,3 @@ logical_identifier version_id -publication_year -publication_date \ No newline at end of file +title From 086588f0cd8f794b071b5f00898c562ccbe57aa7 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 9 Apr 2024 12:54:03 -0700 Subject: [PATCH 12/46] Adding generated golden copies and more checks in unit tests --- test_files/elements_file_success_2.csv | 3 + test_files/elements_file_success_3.csv | 4 + test_files/elements_file_success_4.csv | 3 + test_files/elements_list_tester.txt | 6 + test_files/tester_label_2.xml | 442 +++++++++++++++++++++++++ test_files/tester_label_3.xml | 308 +++++++++++++++++ tests/test_pds4_create_xml_index.py | 81 ++++- 7 files changed, 829 insertions(+), 18 deletions(-) create mode 100644 test_files/elements_file_success_2.csv create mode 100644 test_files/elements_file_success_3.csv create mode 100644 test_files/elements_file_success_4.csv create mode 100644 test_files/elements_list_tester.txt create mode 100644 test_files/tester_label_2.xml create mode 100644 test_files/tester_label_3.xml diff --git a/test_files/elements_file_success_2.csv b/test_files/elements_file_success_2.csv new file mode 100644 index 0000000..a74b7ba --- /dev/null +++ b/test_files/elements_file_success_2.csv @@ -0,0 +1,3 @@ +/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:title[1] +urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img +urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope diff --git a/test_files/elements_file_success_3.csv b/test_files/elements_file_success_3.csv new file mode 100644 index 0000000..fec4c55 --- /dev/null +++ b/test_files/elements_file_success_3.csv @@ -0,0 +1,4 @@ +/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:title[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Modification_History[1]/pds:Modification_Detail/pds:version_id[1] +urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,NaN +urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope,NaN +urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,Cassini ISS Image 1357539630n.img,1.0 diff --git a/test_files/elements_file_success_4.csv b/test_files/elements_file_success_4.csv new file mode 100644 index 0000000..07f1138 --- /dev/null +++ b/test_files/elements_file_success_4.csv @@ -0,0 +1,3 @@ +/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:start_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:stop_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[2]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[3]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[4]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[5]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[6]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[7]/pds:lid_reference[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Modification_History[1]/pds:Modification_Detail/pds:version_id[1] +urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared,urn:nasa:pds:context:investigation:observing_campaign.earth-based-uranus-stellar-occultations,urn:nasa:pds:context:facility:observatory.irtf-maunakea,urn:nasa:pds:context:telescope:irtf-maunakea.3m2,urn:nasa:pds:context:instrument:multi-host.generic_insp_hsp,urn:nasa:pds:context:target:planet.uranus,urn:nasa:pds:context:target:ring.uranus.rings,urn:nasa:pds:uranus_occ_support:document:earth-based-uranus-stellar-occultations-user-guide,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_obs_geom,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_earth,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_alt,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_occult,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_normalization,urn:nasa:pds:uranus_occ_support,NaN +urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN,urn:nasa:pds:context:investigation:mission.cassini-huygens,urn:nasa:pds:context:instrument_host:spacecraft.co,urn:nasa:pds:context:instrument:issna.co,NaN,urn:nasa:pds:context:target:calibration_field.dark_sky,NaN,urn:nasa:pds:cassini_iss_cruise:data_raw:index,urn:nasa:pds:cassini_iss_cruise:data_raw:body-geometry,urn:nasa:pds:cassini_iss_cruise:body-inventory,urn:nasa:pds:cassini_iss_cruise:ring-geometry,urn:nasa:pds:cassini_iss_saturn:document:iss-data-user-guide,urn:nasa:pds:cassini_iss_cruise:browse_raw:1357539630n-full,NaN,1.0 diff --git a/test_files/elements_list_tester.txt b/test_files/elements_list_tester.txt new file mode 100644 index 0000000..e1e0fee --- /dev/null +++ b/test_files/elements_list_tester.txt @@ -0,0 +1,6 @@ +logical_identifier +version_id +start_date_time +stop_date_time +wavelength_range +lid_reference \ No newline at end of file diff --git a/test_files/tester_label_2.xml b/test_files/tester_label_2.xml new file mode 100644 index 0000000..790941d --- /dev/null +++ b/test_files/tester_label_2.xml @@ -0,0 +1,442 @@ + + + + + + + + urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult + 1.0 + Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope + 1.14.0.0 + Product_Observational + + French, Richard G.; McGhee-French, Colleen A.; Gordon, Mitchell K. + 2020 + uranus atmosphere + uranus atmosphere stellar occultation + uranus atmosphere stellar occultation time series + uranus rings + uranus rings stellar occultation + uranus rings stellar occultation radial profile + Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope. + + + + + 1998-11-06T04:38:18.7028Z + 1998-11-06T05:52:29.0559Z + + + Science + Calibrated + Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope. + + Infrared + Atmospheres + Structure + + + Infrared + Ring-Moon Systems + Ring Occultation Profile + + + + Earth-based Observations of Uranus System Stellar Occultations + Observing Campaign + + urn:nasa:pds:context:investigation:observing_campaign.earth-based-uranus-stellar-occultations + data_to_investigation + + + + IRTF 320cm Telescope + + Infra Red Telescope Facility-Maunakea + Host + + urn:nasa:pds:context:facility:observatory.irtf-maunakea + is_facility + + + + IRTF 3.2m + Telescope + + urn:nasa:pds:context:telescope:irtf-maunakea.3m2 + is_telescope + + + + Generic InSb High Speed Photometer + Instrument + + urn:nasa:pds:context:instrument:multi-host.generic_insp_hsp + is_instrument + + + + + Uranus + NAIF ID 799 + Planet + + urn:nasa:pds:context:target:planet.uranus + data_to_target + + + + Uranus Rings + Uranian Ring System + Ring + + urn:nasa:pds:context:target:ring.uranus.rings + data_to_target + + + + + + + SPK + ura111.bsp + + + SPK + vgr2.ura111.bsp + + + SPK + earthstns_itrf93_040916.bsp + + + BPC + earth_720101_031229.bpc + + + LSK + naif0012.tls + + These kernel files were used in the generation of the products in the parent bundle. Some or all of them may not have been used directly in the generation of this product. + + + + + stellar + egress + both + Y + poor + equator + 2MASS 20462044-1838345 + 1.81 + 1.2000 + 0.5000 + 0.020000000 + none + 1.0 + 0.00000 + 1903.00000 + 2416.00000 + 1998-11-06T00:00:00.0000Z + 16698.7028 + 21149.0559 + -36400838.1146 + -36396387.7615 + 1998-11-06T04:38:18.4919Z + 1998-11-06T05:52:29.2668Z + 19964.02157 + 75510.23132 + 17.29299 + 65.91696 + 5.2772 + 53.9012 + -38.14472 + 51.85528 + + + + + + + urn:nasa:pds:uranus_occ_support:document:earth-based-uranus-stellar-occultations-user-guide + data_to_document + The User Guide for Earth-based Uranus Stellar Occultations. + + + urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_obs_geom + data_to_browse + Diagram of the Uranus system showing the occultation track. + + + urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_earth + data_to_browse + Diagram of the view of the Earth from Uranus at mid-occultation Time. + + + urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_alt + data_to_browse + Plot of the altitude (in degrees) of Uranus and the sun relative to the horizon over the duration of the occulation. + + + urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_occult + data_to_browse + Low resolution plot of counts vs. time for the entire occultation. + + + urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_normalization + data_to_browse + Illustrates some of the processing steps involved in normalizing a time-series occultation light curve from counts per second to units of stellar flux. + + + urn:nasa:pds:uranus_occ_support:data:uranus_occultation_ring_fit_rfrench_20201201::1.0 + data_to_resource + The fitted model of the ring system upon which the data are based. + + + urn:nasa:pds:uranus_occ_support + data_to_resource + The support bundle for all of the Earth-based Uranus system occultations. + + + + + u149_irtf_320cm_2200nm_counts-v-time_occult.tab + data + 2021-04-05T23:18:20Z + +
+ 0 + 264 + UTF-8 Text + Provides the column headers, separated by commas, for the data table. +
+ + 264 + 10551 + This is a calibrated time series of an occultation by the Uranus system + generated from an earth-based stellar occultation. The data are uniformly spaced in time, and + normalized in units of stellar intensity. The data may include occultations by both the rings + and the planet, or just the planet. The occultation by the rings, if present, is based on + the equatorial ring plane radius sampled at each time point, computed from an orbit + model for the ring system. + + Carriage-Return Line-Feed + + 15 + 0 + 212 + + Observed Event Time + 1 + 1 + ASCII_Real + 16 + second + The instant at which photons were received at the observer location. It is + represented in the Universal Coordinated Time system, as a number of elapsed + seconds since the time given by the reference_time_utc attribute specified in this file. + It refers to the middle of the bin. + + + + Observed Event TDB + 2 + 19 + ASCII_Real + 16 + second + The instant at which photons were received at the observer location. It is represented + in the 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch. + + + + Mean Signal + 3 + 37 + ASCII_Real + 16 + Mean counts received by the instrument during this time bin. The background + signal has not been subtracted. Refer to NOTE FLAG for guidance on validity of data. + + + 999999999.999999 + + + 999999999.999999 + + + + Normalized Signal + 4 + 55 + ASCII_Real + 10 + Normalized signal during this time bin, in units of the unocculted stellar signal, + such that 1.0 corresponds to the full unocculted star signal and + 0.0 corresponds to no counts from the star (a completely opaque ring). + NORMALIZED SIGNAL = (MEAN_SIGNAL - BACKGROUND_MODEL)/(UNOCCULTED STAR MODEL) + This is an approximate normalization, computed using regional polynomial fits. + For high-precision photometry of ring events, use locally computed normalization. + + + 999.999999 + + + 999.999999 + + + + Sky-plane F + 5 + 67 + ASCII_Real + 13 + Kilometer + The east/west component of r sky (positive in the east direction), in km. + + + + Sky-plane G + 6 + 82 + ASCII_Real + 13 + Kilometer + The north/south component of r sky (positive in the north direction), in km. + + + + Sky-plane Radius + 7 + 97 + ASCII_Real + 13 + Kilometer + The length of the radius vector in the plane of the sky measured from the center of the occulting object to the position of the occulted star or spacecraft, in km. + + + + Ring Radius + 8 + 112 + ASCII_Real + 12 + Kilometer + Radial distance of the occultation intercept point (middle of the bin) from + the center of the planet, in km. Distances are measured along the equator plane. + + + + Ring Longitude + 9 + 126 + ASCII_Real + 8 + Degree + Inertial longitude on the ring plane corresponding to the midpoint of the bin. + + + + Observed Ring Azimuth + 10 + 136 + ASCII_Real + 9 + Degree + Angle measured at a point in the ring plane, starting from the direction of + a photon heading to the observer, and ending at the direction of a local radial vector. + This angle is projected into the ring plane and measured in the prograde direction. + + + + Ring Event TDB + 11 + 147 + ASCII_Real + 16 + second + The time at which photons left the ring plane. This time is earlier than the associated + OBSERVED EVENT TDB by an amount equal to the light travel time. It is represented in the + 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch. + + + + Unocculted Star Model + 12 + 165 + ASCII_Real + 16 + Model of the unocculted star signal as a function of ring plane radius. This is necessary + because of variations in atmospheric transparency and other time-dependent effects. + + + 999999999.999999 + + + 999999999.999999 + + + + Background Model + 13 + 183 + ASCII_Real + 16 + Model of the non-stellar background signal (which may vary over the course of the + occultation) due to instrumental offsets applied during the recording and/or sky brightness + and contributions from reflected sunlight from the rings and planet. + + + 999999999.999999 + + + 999999999.999999 + + + + Number Of Samples Per Bin + 14 + 201 + ASCII_Integer + 4 + The number of raw data points per bin. + + + Note Flag + 15 + 207 + ASCII_Integer + 4 + A numerical flag that associates + specific comments with individual data bins. When more than one + comment applies, the values are summed. The values and their + associated comments are: + 0: radius and longitude are based on Uranus equatorial plane. + 1: radius and longitude are based inclined ring plane model + referred to in metadata associated with file. + 2: observed ring occultation event + 4: telescope pointed to nearby sky for background level check + 8: input signal from time source, not from photometer on telescope + 16: line of sight intersects planet + 32: dawn/dusk - rapid background level change; + no background or star intensity estimate. + 64: unreliable data (e.g., clouds, telescope + guiding error, or instrument adjustment); + no background or star intensity estimate. + + + + +
+
diff --git a/test_files/tester_label_3.xml b/test_files/tester_label_3.xml new file mode 100644 index 0000000..e12700e --- /dev/null +++ b/test_files/tester_label_3.xml @@ -0,0 +1,308 @@ + + + + + + + + + urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n + 1.0 + Cassini ISS Image 1357539630n.img + 1.11.0.0 + Product_Observational + + + 2020-03-31 + 1.0 + Initial PDS4 Version. Migrated from the PDS3 data product. + + + + + + This data file was migrated from the original PDS3 file: + COISS_1004/data/1357539422_1357559280/N1357539630_1.IMG + The content of this data file was reorganized in order to make it PDS4 + compliant. Specifically, prefix bytes were removed from each line of + the image and appended at the end. The resulting data file remains + compatible with the VICAR standard. Values for instrument attributes + have been derived from the corresponding values in the original PDS3 + label. + + + 2001-01-07T06:08:47.793Z + 2001-01-07T06:08:48.013Z + + + Science + Raw + + Near Infrared + Ring-Moon Systems + + + + Cassini-Huygens + Mission + + urn:nasa:pds:context:investigation:mission.cassini-huygens + data_to_investigation + + + + Cassini Orbiter Imaging Science Subsystem + + Cassini Orbiter + Spacecraft + + urn:nasa:pds:context:instrument_host:spacecraft.co + is_instrument_host + + + + Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera + Instrument + ISSNA + + urn:nasa:pds:context:instrument:issna.co + is_instrument + + + + + Dark Sky + Calibration Field + + urn:nasa:pds:context:target:calibration_field.dark_sky + data_to_target + + + + + + EARTH-JUPITER CRUISE + 1 + 1357539630.068 + 1357539630.123 + N/A + ON + 6.870842 + N/A + ISS_C23ST_OCCULT001_UVIS_B.icf + 730 + 0. + TABLE + NO + -89.243546 + 112 + 2001-007T19:58:04.616 + 2001-007T19:58:32.295 + -1 + -1 + -1 + 220. + P0 + GRN + -0.468354 + 1.2 + 29 + ISS V7.0 11-22-2000 + 2001-007T06:08:48.013 + 1357539630 + 2001-007T06:08:48.013 + SCIENCE + 182.783997 + FULL + LOSSLESS + 999 + 999 + 999 + 999 + -1. + -1. + 3.150372 + ON + Information not provided + 0 + NO + UVIS_C23ST_OCCULT001_PRIME_C + 0.71269 + -999. + -999 + 9 + 2001-008T10:55:49.000 + FINAL + Information not provided + N/A + DARK SKY + 1 + 0 + 11 + -1 + 1.633024 + C23 + -1 + ISS_C23ST_OCCULT001_UVIS + NACONLY + ENABLED + 2001-007T06:08:47.793 + 2001-007T06:08:48.013 + Information not provided + -1 + -1 + + + + + + + image + display_settings_to_array + + + Sample + Left to Right + Line + Top to Bottom + + + + + + + + urn:nasa:pds:cassini_iss_cruise:data_raw:index + data_to_resource + The index table of basic parameters associated with each observation. + + + urn:nasa:pds:cassini_iss_cruise:data_raw:body-geometry + data_to_resource + The index table of body surface geometry information associated with each observation. + + + urn:nasa:pds:cassini_iss_cruise:body-inventory + data_to_resource + An index listing every Saturn system body expected to fall within each field of view. + + + urn:nasa:pds:cassini_iss_cruise:ring-geometry + data_to_resource + The index table of ring geometry information associated with each observation. + + + urn:nasa:pds:cassini_iss_saturn:document:iss-data-user-guide + data_to_document + The ISS Data User's Guide + + + urn:nasa:pds:cassini_iss_cruise:browse_raw:1357539630n-full + data_to_browse + + The browse image in JPEG format that illustrates the scientific content + of this image. + + + + + CO-E/V/J-ISSNA/ISSWA-2-EDR-V1.0:COISS_1004:data/1357539422_1357559280:N1357539630_1.IMG + + data_to_raw_source_product + PDS RMS Node + + The original PDS3 version of this product. The form of the reference is + dataset_id:volume_id:directory_path:file_name. + + + + + + + 1357539630n.img + 2019-06-12T22:05:54Z + a468693f67593587d224116c5ade995a + + + + +
+ 0 + 4096 + VICAR2 +
+ + + + + telemetry-table + 4096 + 1 + Last Index Fastest + + UnsignedByte + + + telemetry + 2 + 1 + + + + + + + image + 6144 + 2 + Last Index Fastest + + UnsignedByte + DN + + + Line + 1024 + 1 + + + Sample + 1024 + 2 + + + + + + + 1054720 + 2 + Last Index Fastest + + UnsignedByte + + + Line + 1024 + 1 + + + prefix-sample + 24 + 2 + + +
+
diff --git a/tests/test_pds4_create_xml_index.py b/tests/test_pds4_create_xml_index.py index f4f57df..9dd7d39 100644 --- a/tests/test_pds4_create_xml_index.py +++ b/tests/test_pds4_create_xml_index.py @@ -8,31 +8,76 @@ import tempfile -def test_elements_file(): - # Get the path to the test_files directory - root_dir = Path(__file__).resolve().parent.parent - test_files_dir = root_dir / 'test_files' - # THE PATH TO THE GOLDEN COPY - golden_file = str(test_files_dir / 'elements_file_success.csv') - new_file = 'elements_file.csv' - +# These two variables are the same for all tests, so we can either declare them as +# global variables, or get the root_dir at the setup stage before running each test +root_dir = Path(__file__).resolve().parent.parent +test_files_dir = root_dir / 'test_files' + +# Set parameters values that you would like to pass into test_elements_file, +# in this case, I assume we are running the same test with different sets of +# golden_file new_file, and cmd_line. +@pytest.mark.parametrize( + 'golden_file,new_file,cmd_line', + [ + # simple test cases + (str(test_files_dir / 'elements_file_success.csv'), + 'elements_file.csv', + [ + str(test_files_dir), + 'tester_label_1.xml', + '--elements-file', + str(root_dir / 'samples/sample_elements.txt'), + '--output-file', + ] + ), + (str(test_files_dir / 'elements_file_success_2.csv'), + 'elements_file_2.csv', + [ + str(test_files_dir), + 'tester_label_1.xml', + 'tester_label_2.xml', + '--elements-file', + str(root_dir / 'samples/sample_elements.txt'), + '--output-file', + ] + ), + (str(test_files_dir / 'elements_file_success_3.csv'), + 'elements_file_3.csv', + [ + str(test_files_dir), + 'tester_label_1.xml', + 'tester_label_2.xml', + 'tester_label_3.xml', + '--elements-file', + str(root_dir / 'samples/sample_elements.txt'), + '--output-file', + ] + ), + + # complicated test cases + (str(test_files_dir / 'elements_file_success_4.csv'), + 'elements_file_4.csv', + [ + str(test_files_dir), + 'tester_label_2.xml', + 'tester_label_3.xml', + '--elements-file', + str(root_dir / 'test_files/elements_list_tester.txt'), + '--output-file', + ] + ) + ] + ) + +def test_elements_file(golden_file, new_file, cmd_line): # Create a temporary directory in the same location as the test_files directory with tempfile.TemporaryDirectory(dir=test_files_dir.parent) as temp_dir: temp_dir_path = Path(temp_dir) # THE PATH TO THE NEW FILE path_to_file = temp_dir_path / new_file - - cmd_line = [ - str(test_files_dir), - 'tester_label_1.xml', - '--elements-file', - str(root_dir / 'samples/sample_elements.txt'), - '--output-file', - str(path_to_file) - ] - # Call main() function with the simulated command line arguments + cmd_line.append(str(path_to_file)) tools.main(cmd_line) # Assert that the file now exists From 7659b3608151a4c2f0d6bcd49fb643c0bb7d512b Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Wed, 10 Apr 2024 11:27:37 -0700 Subject: [PATCH 13/46] Changing unit tests and dummy files to reflect intended functionality --- samples/element_2.txt | 1 + samples/element_3.txt | 2 ++ samples/element_4.txt | 0 samples/sample_elements.txt | 6 +++--- test_files/elements_file_success_2.csv | 5 ++--- test_files/elements_file_success_3.csv | 7 +++---- test_files/elements_file_success_4.csv | 7 ++++--- tests/test_pds4_create_xml_index.py | 15 +++++++-------- 8 files changed, 22 insertions(+), 21 deletions(-) create mode 100644 samples/element_2.txt create mode 100644 samples/element_3.txt create mode 100644 samples/element_4.txt diff --git a/samples/element_2.txt b/samples/element_2.txt new file mode 100644 index 0000000..0948229 --- /dev/null +++ b/samples/element_2.txt @@ -0,0 +1 @@ +**/geom:spice_kernel_file_name\[*\] \ No newline at end of file diff --git a/samples/element_3.txt b/samples/element_3.txt new file mode 100644 index 0000000..490d31a --- /dev/null +++ b/samples/element_3.txt @@ -0,0 +1,2 @@ +**/pds:Observing_System_Component\[*\]/pds:name\[*\] +**/pds:Target_Identification\[*\]/pds:name\[*\] \ No newline at end of file diff --git a/samples/element_4.txt b/samples/element_4.txt new file mode 100644 index 0000000..e69de29 diff --git a/samples/sample_elements.txt b/samples/sample_elements.txt index 2b336e8..da163f4 100644 --- a/samples/sample_elements.txt +++ b/samples/sample_elements.txt @@ -1,3 +1,3 @@ -logical_identifier -version_id -title +/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1] +/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1] +/pds:Product_Observational/pds:Identification_Area[1]/pds:title[1] \ No newline at end of file diff --git a/test_files/elements_file_success_2.csv b/test_files/elements_file_success_2.csv index a74b7ba..2fdda85 100644 --- a/test_files/elements_file_success_2.csv +++ b/test_files/elements_file_success_2.csv @@ -1,3 +1,2 @@ -/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:title[1] -urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img -urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope +/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name +ura111.bsp,vgr2.ura111.bsp,earthstns_itrf93_040916.bsp,earth_720101_031229.bpc,naif0012.tls \ No newline at end of file diff --git a/test_files/elements_file_success_3.csv b/test_files/elements_file_success_3.csv index fec4c55..1002f27 100644 --- a/test_files/elements_file_success_3.csv +++ b/test_files/elements_file_success_3.csv @@ -1,4 +1,3 @@ -/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:title[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Modification_History[1]/pds:Modification_Detail/pds:version_id[1] -urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,NaN -urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope,NaN -urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,Cassini ISS Image 1357539630n.img,1.0 +/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:name[1] +Infra Red Telescope Facility-Maunakea,IRTF 3.2m,Generic InSb High Speed Photometer,Uranus,Uranus Rings +Cassini Orbiter,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,NaN,Dark Sky,NaN \ No newline at end of file diff --git a/test_files/elements_file_success_4.csv b/test_files/elements_file_success_4.csv index 07f1138..575cc22 100644 --- a/test_files/elements_file_success_4.csv +++ b/test_files/elements_file_success_4.csv @@ -1,3 +1,4 @@ -/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:start_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:stop_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[2]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[3]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[4]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[5]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[6]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[7]/pds:lid_reference[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Modification_History[1]/pds:Modification_Detail/pds:version_id[1] -urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared,urn:nasa:pds:context:investigation:observing_campaign.earth-based-uranus-stellar-occultations,urn:nasa:pds:context:facility:observatory.irtf-maunakea,urn:nasa:pds:context:telescope:irtf-maunakea.3m2,urn:nasa:pds:context:instrument:multi-host.generic_insp_hsp,urn:nasa:pds:context:target:planet.uranus,urn:nasa:pds:context:target:ring.uranus.rings,urn:nasa:pds:uranus_occ_support:document:earth-based-uranus-stellar-occultations-user-guide,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_obs_geom,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_earth,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_alt,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_occult,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_normalization,urn:nasa:pds:uranus_occ_support,NaN -urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN,urn:nasa:pds:context:investigation:mission.cassini-huygens,urn:nasa:pds:context:instrument_host:spacecraft.co,urn:nasa:pds:context:instrument:issna.co,NaN,urn:nasa:pds:context:target:calibration_field.dark_sky,NaN,urn:nasa:pds:cassini_iss_cruise:data_raw:index,urn:nasa:pds:cassini_iss_cruise:data_raw:body-geometry,urn:nasa:pds:cassini_iss_cruise:body-inventory,urn:nasa:pds:cassini_iss_cruise:ring-geometry,urn:nasa:pds:cassini_iss_saturn:document:iss-data-user-guide,urn:nasa:pds:cassini_iss_cruise:browse_raw:1357539630n-full,NaN,1.0 +/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:title[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:information_model_version[1],/pds:Product_Observational/pds:Observing_System[1]/pds:name[1],/pds:Product_Observational/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:name[1],/pds:Product_Observational/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:type[1],/pds:Product_Observational/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:product_class[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Modification_History[1]/pds:Modification_Detail/pds:modification_date[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Modification_History[1]/pds:Modification_Detail/pds:version_id[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:start_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:stop_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:purpose[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:processing_level[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:discipline_name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:mission_phase_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:spacecraft_clock_count_partition,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:spacecraft_clock_start_count,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:spacecraft_clock_stop_count,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:limitations,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:antiblooming_state_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:bias_strip_mean,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:calibration_lamp_state_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:command_file_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:command_sequence_number,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:dark_strip_mean,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:data_conversion_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:delayed_readout_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:detector_temperature,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:electronics_bias,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:earth_received_start_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:earth_received_stop_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:expected_maximum_full_well,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/comment()[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:expected_maximum_DN_sat,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:expected_packets,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:exposure_duration,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:filter_name_1,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:filter_name_2,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:filter_temperature,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:flight_software_version_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:gain_mode_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:ground_software_version_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_mid_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_number,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_observation_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:instrument_data_rate,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:instrument_mode_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_malgo,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_tb,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_blocks,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_quant,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_rate_expected_bits,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_rate_actual_bits,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_ratio,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:light_flood_state_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:method_description,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:missing_lines,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:missing_packet_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:observation_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:optics_temperature_front,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:optics_temperature_back,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:order_number,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:parallel_clock_voltage_index,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_product_creation_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_product_version_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_target_desc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_target_list,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_target_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pre-pds_version_number,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:prepare_cycle_index,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:readout_cycle_index,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:received_packets,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sensor_head_electronics_temperature,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sequence_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sequence_number,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sequence_title,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:shutter_mode_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:shutter_state_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:start_time_doy,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:stop_time_doy,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:telemetry_format_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:valid_maximum_full_well,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:valid_maximum_DN_sat,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/pds:Local_Internal_Reference[1]/pds:local_identifier_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/pds:Local_Internal_Reference[1]/pds:local_reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/disp:Display_Direction/disp:horizontal_display_axis,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/disp:Display_Direction/disp:horizontal_display_direction,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/disp:Display_Direction/disp:vertical_display_axis,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/disp:Display_Direction/disp:vertical_display_direction,/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[2]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[2]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[3]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[3]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[4]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[4]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[5]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[5]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[6]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[6]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Source_Product_External[1]/pds:external_source_product_identifier[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Source_Product_External[1]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Source_Product_External[1]/pds:curating_facility[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:file_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:creation_date_time[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:md5_checksum[1],/pds:Product_Observational/pds:File_Area_Observational[1]/comment()[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:object_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:parsing_standard_id[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:local_identifier[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:axes[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:axis_index_order[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:Element_Array[1]/pds:data_type,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:Axis_Array[1]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:Axis_Array[1]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:Axis_Array[1]/pds:sequence_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:local_identifier[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:axes[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:axis_index_order[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Element_Array[1]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Element_Array[1]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[1]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[1]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[1]/pds:sequence_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[2]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[2]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[2]/pds:sequence_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:axes[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:axis_index_order[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Element_Array[1]/pds:data_type,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[1]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[1]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[1]/pds:sequence_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[2]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[2]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[2]/pds:sequence_number[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:author_list[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:publication_year[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[2],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[3],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[4],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[5],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[6],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:facet1[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:discipline_name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:facet1[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:alternate_designation[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:alternate_designation[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:kernel_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_direction,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_series_direction,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:planetary_occultation_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:data_quality_score,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:ring_plane,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:star_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fresnel_scale,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:projected_star_diameter,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_projected_star_diameter,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fractional_error_star_counts,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_time_constant,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_wavelength,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_wavelength,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:reference_time_utc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_event_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_event_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_start_tdb,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_stop_tdb,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_start_time_utc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_stop_time_utc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_radius,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_radius,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_longitude,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_longitude,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_ring_elevation,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:light_source_incidence_angle,/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[7]/pds:lidvid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[7]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[8]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[8]/pds:reference_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:local_identifier[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:records[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:record_delimiter[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:fields[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:groups[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:record_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:field_length[1] +urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,1.11.0.0,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN +urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,Cassini ISS Image 1357539630n.img,1.11.0.0,NaN,NaN,NaN,NaN,NaN,Product_Observational,2020-03-31,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Science,Raw,Near Infrared,Ring-Moon Systems,Cassini-Huygens,Mission,urn:nasa:pds:context:investigation:mission.cassini-huygens,data_to_investigation,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,Instrument,urn:nasa:pds:context:instrument:issna.co,is_instrument,Dark Sky,Calibration Field,urn:nasa:pds:context:target:calibration_field.dark_sky,data_to_target,EARTH-JUPITER CRUISE,1,1357539630.068,1357539630.123,N/A,ON,6.870842,N/A,ISS_C23ST_OCCULT001_UVIS_B.icf,730,0,TABLE,NO,-89.243546,112,2001-007T19:58:04.616,2001-007T19:58:32.295,-1,Unknown,-1,-1,220,P0,GRN,-0.468354,1.2,29,ISS V7.0 11-22-2000,2001-007T06:08:48.013,1357539630,2001-007T06:08:48.013,SCIENCE,182.783997,FULL,LOSSLESS,999,999,999,999,-1,-1,3.150372,ON,Information not provided,0,NO,UVIS_C23ST_OCCULT001_PRIME_C,0.71269,-999,-999,9,2001-008T10:55:49.000,FINAL,Information not provided,N/A,DARK SKY,1,0,11,-1,1.633024,C23,-1,ISS_C23ST_OCCULT001_UVIS,NACONLY,ENABLED,2001-007T06:08:47.793,2001-007T06:08:48.013,Information not provided,-1,-1,image,display_settings_to_array,Sample,Left to Right,Line,Top to Bottom,urn:nasa:pds:cassini_iss_cruise:data_raw:index,data_to_resource,urn:nasa:pds:cassini_iss_cruise:data_raw:body-geometry,data_to_resource,urn:nasa:pds:cassini_iss_cruise:body-inventory,data_to_resource,urn:nasa:pds:cassini_iss_cruise:ring-geometry,data_to_resource,urn:nasa:pds:cassini_iss_saturn:document:iss-data-user-guide,data_to_document,urn:nasa:pds:cassini_iss_cruise:browse_raw:1357539630n-full,data_to_browse,CO-E/V/J-ISSNA/ISSWA-2-EDR-V1.0:COISS_1004:data/1357539422_1357559280:N1357539630_1.IMG,data_to_raw_source_product,PDS RMS Node,1357539630n.img,2019-06-12T22:05:54Z,a468693f67593587d224116c5ade995a,Line prefix bytes,0,4096,VICAR2,telemetry-table,4096,1,Last Index Fastest,UnsignedByte,telemetry,2,1,image,6144,2,Last Index Fastest,UnsignedByte,DN,Line,1024,1,Sample,1024,2,1054720,2,Last Index Fastest,UnsignedByte,Line,1024,1,prefix-sample,24,2,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN +urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope,1.14.0.0,NaN,NaN,NaN,NaN,NaN,Product_Observational,NaN,NaN,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Science,Calibrated,Infrared,Atmospheres,Earth-based Observations of Uranus System Stellar Occultations,Observing Campaign,urn:nasa:pds:context:investigation:observing_campaign.earth-based-uranus-stellar-occultations,data_to_investigation,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,Host,urn:nasa:pds:context:facility:observatory.irtf-maunakea,is_facility,IRTF 3.2m,Telescope,urn:nasa:pds:context:telescope:irtf-maunakea.3m2,is_telescope,Uranus,Planet,urn:nasa:pds:context:target:planet.uranus,data_to_target,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,urn:nasa:pds:uranus_occ_support:document:earth-based-uranus-stellar-occultations-user-guide,data_to_document,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_obs_geom,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_earth,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_alt,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_occult,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_normalization,data_to_browse,NaN,NaN,NaN,u149_irtf_320cm_2200nm_counts-v-time_occult.tab,2021-04-05T23:18:20Z,NaN,NaN,0,264,UTF-8 Text,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,"French, Richard G.; McGhee-French, Colleen A.; Gordon, Mitchell K.",2020,uranus atmosphere,uranus atmosphere stellar occultation,uranus atmosphere stellar occultation time series,uranus rings,uranus rings stellar occultation,uranus rings stellar occultation radial profile,Structure,Infrared,Ring-Moon Systems,Ring Occultation Profile,Generic InSb High Speed Photometer,Instrument,urn:nasa:pds:context:instrument:multi-host.generic_insp_hsp,is_instrument,NAIF ID 799,Uranus Rings,Uranian Ring System,Ring,urn:nasa:pds:context:target:ring.uranus.rings,data_to_target,LSK,naif0012.tls,stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528,urn:nasa:pds:uranus_occ_support:data:uranus_occultation_ring_fit_rfrench_20201201::1.0,data_to_resource,urn:nasa:pds:uranus_occ_support,data_to_resource,data,264,10551,Carriage-Return Line-Feed,15,0,212,Observed Event Time,1,1,ASCII_Real,16,second,Observed Event TDB,2,19,ASCII_Real,16,second,Mean Signal,3,37,ASCII_Real,16,999999999.999999,999999999.999999,Normalized Signal,4,55,ASCII_Real,10,999.999999,999.999999,Sky-plane F,5,67,ASCII_Real,13,Kilometer,Sky-plane G,6,82,ASCII_Real,13,Kilometer,Sky-plane Radius,7,97,ASCII_Real,13,Kilometer,Ring Radius,8,112,ASCII_Real,12,Kilometer,Ring Longitude,9,126,ASCII_Real,8,Degree,Observed Ring Azimuth,10,136,ASCII_Real,9,Degree,Ring Event TDB,11,147,ASCII_Real,16,second,Unocculted Star Model,12,165,ASCII_Real,16,999999999.999999,999999999.999999,Background Model,13,183,ASCII_Real,16,999999999.999999,999999999.999999,Number Of Samples Per Bin,14,201,ASCII_Integer,4,Note Flag,15,207,ASCII_Integer,4 \ No newline at end of file diff --git a/tests/test_pds4_create_xml_index.py b/tests/test_pds4_create_xml_index.py index 9dd7d39..633283a 100644 --- a/tests/test_pds4_create_xml_index.py +++ b/tests/test_pds4_create_xml_index.py @@ -30,39 +30,38 @@ '--output-file', ] ), + # Okay, basic capture (str(test_files_dir / 'elements_file_success_2.csv'), 'elements_file_2.csv', [ str(test_files_dir), - 'tester_label_1.xml', 'tester_label_2.xml', '--elements-file', - str(root_dir / 'samples/sample_elements.txt'), + str(root_dir / 'samples/element_2.txt'), '--output-file', ] ), + # Multiple partial captures (str(test_files_dir / 'elements_file_success_3.csv'), 'elements_file_3.csv', [ str(test_files_dir), - 'tester_label_1.xml', 'tester_label_2.xml', 'tester_label_3.xml', '--elements-file', - str(root_dir / 'samples/sample_elements.txt'), + str(root_dir / 'samples/element_3.txt'), '--output-file', ] ), - # complicated test cases + # exclusion test (str(test_files_dir / 'elements_file_success_4.csv'), 'elements_file_4.csv', [ str(test_files_dir), - 'tester_label_2.xml', - 'tester_label_3.xml', + 'tester_label_*.xml', '--elements-file', - str(root_dir / 'test_files/elements_list_tester.txt'), + str(root_dir / 'test_files/elements_4.txt'), '--output-file', ] ) From 67bcc3372addc347e9f6becf5f0b0fc1ddc38b61 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Wed, 10 Apr 2024 12:13:38 -0700 Subject: [PATCH 14/46] Fixing sample_elements.txt --- samples/sample_elements.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/samples/sample_elements.txt b/samples/sample_elements.txt index da163f4..4873589 100644 --- a/samples/sample_elements.txt +++ b/samples/sample_elements.txt @@ -1,3 +1,3 @@ -/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1] -/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1] -/pds:Product_Observational/pds:Identification_Area[1]/pds:title[1] \ No newline at end of file +/pds:Product_Observational/pds:Identification_Area\[1\]/pds:logical_identifier\[1\] +/pds:Product_Observational/pds:Identification_Area\[1\]/pds:version_id\[1\] +/pds:Product_Observational/pds:Identification_Area\[1\]/pds:title\[1\] \ No newline at end of file From 6fd1eb135cdb172fe0484b48ec03db24043cf5fa Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Wed, 10 Apr 2024 12:19:23 -0700 Subject: [PATCH 15/46] forgot to add a saved file --- samples/element_4.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/samples/element_4.txt b/samples/element_4.txt index e69de29..baa43fa 100644 --- a/samples/element_4.txt +++ b/samples/element_4.txt @@ -0,0 +1,2 @@ +!**/pds:comment\[*\] +!**/pds:description\[*\] \ No newline at end of file From 29cf5d1a113c91b554eea66b187cbfc98e26ebfd Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Thu, 11 Apr 2024 14:56:28 -0700 Subject: [PATCH 16/46] Adding more unit tests and dummy files --- samples/element_extra_file_info.txt | 2 + samples/elements_clean_header_field_names.txt | 5 + samples/elements_xpath_simplify.txt | 1 + .../clean_header_field_names_success_1.csv | 2 + .../clean_header_field_names_success_2.csv | 3 + test_files/extra_file_info_success_1.csv | 2 + test_files/extra_file_info_success_2.csv | 4 + test_files/simplify_xpaths_success_1.csv | 2 + test_files/simplify_xpaths_success_2.csv | 4 + test_files/tester_label_1.xml | 2 - tests/test_pds4_create_xml_index.py | 331 +++++++++++++----- 11 files changed, 276 insertions(+), 82 deletions(-) create mode 100644 samples/element_extra_file_info.txt create mode 100644 samples/elements_clean_header_field_names.txt create mode 100644 samples/elements_xpath_simplify.txt create mode 100644 test_files/clean_header_field_names_success_1.csv create mode 100644 test_files/clean_header_field_names_success_2.csv create mode 100644 test_files/extra_file_info_success_1.csv create mode 100644 test_files/extra_file_info_success_2.csv create mode 100644 test_files/simplify_xpaths_success_1.csv create mode 100644 test_files/simplify_xpaths_success_2.csv diff --git a/samples/element_extra_file_info.txt b/samples/element_extra_file_info.txt new file mode 100644 index 0000000..65411e6 --- /dev/null +++ b/samples/element_extra_file_info.txt @@ -0,0 +1,2 @@ +logical_identifier +version_id \ No newline at end of file diff --git a/samples/elements_clean_header_field_names.txt b/samples/elements_clean_header_field_names.txt new file mode 100644 index 0000000..4df8900 --- /dev/null +++ b/samples/elements_clean_header_field_names.txt @@ -0,0 +1,5 @@ +logical_identifier +version_id +start_date_time +stop_date_time +wavelength_range \ No newline at end of file diff --git a/samples/elements_xpath_simplify.txt b/samples/elements_xpath_simplify.txt new file mode 100644 index 0000000..934edc8 --- /dev/null +++ b/samples/elements_xpath_simplify.txt @@ -0,0 +1 @@ +name \ No newline at end of file diff --git a/test_files/clean_header_field_names_success_1.csv b/test_files/clean_header_field_names_success_1.csv new file mode 100644 index 0000000..42b3105 --- /dev/null +++ b/test_files/clean_header_field_names_success_1.csv @@ -0,0 +1,2 @@ +__pds_Product_Observational__pds_Identification_Area[1]__pds_logical_identifier[1],__pds_Product_Observational__pds_Identification_Area[1]__pds_version_id[1],__pds_Product_Observational__pds_Identification_Area[1]__pds_title[1],__pds_Product_Observational__pds_Identification_Area[1]__pds_information_model_version[1],__pds_Product_Observational__pds_Observing_System[1]__pds_name[1],__pds_Product_Observational__pds_Observing_System[1]__pds_Observing_System_Component[1]__pds_name[1],__pds_Product_Observational__pds_Observing_System[1]__pds_Observing_System_Component[1]__pds_type[1],__pds_Product_Observational__pds_Observing_System[1]__pds_Observing_System_Component[1]__pds_Internal_Reference[1]__pds_lid_reference[1],__pds_Product_Observational__pds_Observing_System[1]__pds_Observing_System_Component[1]__pds_Internal_Reference[1]__pds_reference_type[1] +urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,1.11.0.0,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host diff --git a/test_files/clean_header_field_names_success_2.csv b/test_files/clean_header_field_names_success_2.csv new file mode 100644 index 0000000..32c1ddf --- /dev/null +++ b/test_files/clean_header_field_names_success_2.csv @@ -0,0 +1,3 @@ +__pds_Product_Observational__pds_Identification_Area[1]__pds_logical_identifier[1],__pds_Product_Observational__pds_Identification_Area[1]__pds_version_id[1],__pds_Product_Observational__pds_Observation_Area[1]__pds_Time_Coordinates[1]__pds_start_date_time[1],__pds_Product_Observational__pds_Observation_Area[1]__pds_Time_Coordinates[1]__pds_stop_date_time[1],__pds_Product_Observational__pds_Observation_Area[1]__pds_Primary_Result_Summary[1]__pds_Science_Facets[1]__pds_wavelength_range[1],__pds_Product_Observational__pds_Observation_Area[1]__pds_Primary_Result_Summary[1]__pds_Science_Facets[2]__pds_wavelength_range[1] +urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN +urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared diff --git a/test_files/extra_file_info_success_1.csv b/test_files/extra_file_info_success_1.csv new file mode 100644 index 0000000..6cf5575 --- /dev/null +++ b/test_files/extra_file_info_success_1.csv @@ -0,0 +1,2 @@ +filename,filepath,/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:title[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:information_model_version[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:product_class[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:author_list[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:publication_year[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[2],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[3],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[4],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[5],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[6],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:description[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:start_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:stop_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:purpose[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:processing_level[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:description[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:discipline_name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:facet1[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:discipline_name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:facet1[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:alternate_designation[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:alternate_designation[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:kernel_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:comment,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_direction,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_series_direction,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:planetary_occultation_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:data_quality_score,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:ring_plane,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:star_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fresnel_scale,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:projected_star_diameter,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_projected_star_diameter,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fractional_error_star_counts,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_time_constant,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_wavelength,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_wavelength,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:reference_time_utc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_event_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_event_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_start_tdb,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_stop_tdb,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_start_time_utc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_stop_time_utc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_radius,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_radius,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_longitude,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_longitude,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_ring_elevation,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:light_source_incidence_angle,/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[1]/pds:comment[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[2]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[2]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[2]/pds:comment[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[3]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[3]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[3]/pds:comment[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[4]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[4]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[4]/pds:comment[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[5]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[5]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[5]/pds:comment[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[6]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[6]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[6]/pds:comment[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[7]/pds:lidvid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[7]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[7]/pds:comment[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[8]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[8]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[8]/pds:comment[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:file_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:local_identifier[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:creation_date_time[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:object_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:parsing_standard_id[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:records[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:record_delimiter[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:fields[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:groups[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:record_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:description[1] +tester_label_2.xml,tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope,1.14.0.0,Product_Observational,"French, Richard G.; McGhee-French, Colleen A.; Gordon, Mitchell K.",2020,uranus atmosphere,uranus atmosphere stellar occultation,uranus atmosphere stellar occultation time series,uranus rings,uranus rings stellar occultation,uranus rings stellar occultation radial profile,Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope.,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Science,Calibrated,Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope.,Infrared,Atmospheres,Structure,Infrared,Ring-Moon Systems,Ring Occultation Profile,Earth-based Observations of Uranus System Stellar Occultations,Observing Campaign,urn:nasa:pds:context:investigation:observing_campaign.earth-based-uranus-stellar-occultations,data_to_investigation,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,Host,urn:nasa:pds:context:facility:observatory.irtf-maunakea,is_facility,IRTF 3.2m,Telescope,urn:nasa:pds:context:telescope:irtf-maunakea.3m2,is_telescope,Generic InSb High Speed Photometer,Instrument,urn:nasa:pds:context:instrument:multi-host.generic_insp_hsp,is_instrument,Uranus,NAIF ID 799,Planet,urn:nasa:pds:context:target:planet.uranus,data_to_target,Uranus Rings,Uranian Ring System,Ring,urn:nasa:pds:context:target:ring.uranus.rings,data_to_target,LSK,naif0012.tls,These kernel files were used in the generation of the products in the parent bundle. Some or all of them may not have been used directly in the generation of this product.,stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528,urn:nasa:pds:uranus_occ_support:document:earth-based-uranus-stellar-occultations-user-guide,data_to_document,The User Guide for Earth-based Uranus Stellar Occultations.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_obs_geom,data_to_browse,Diagram of the Uranus system showing the occultation track.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_earth,data_to_browse,Diagram of the view of the Earth from Uranus at mid-occultation Time.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_alt,data_to_browse,Plot of the altitude (in degrees) of Uranus and the sun relative to the horizon over the duration of the occulation.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_occult,data_to_browse,Low resolution plot of counts vs. time for the entire occultation.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_normalization,data_to_browse,Illustrates some of the processing steps involved in normalizing a time-series occultation light curve from counts per second to units of stellar flux.,urn:nasa:pds:uranus_occ_support:data:uranus_occultation_ring_fit_rfrench_20201201::1.0,data_to_resource,The fitted model of the ring system upon which the data are based.,urn:nasa:pds:uranus_occ_support,data_to_resource,The support bundle for all of the Earth-based Uranus system occultations.,u149_irtf_320cm_2200nm_counts-v-time_occult.tab,data,2021-04-05T23:18:20Z,0,264,UTF-8 Text,"Provides the column headers, separated by commas, for the data table.",264,10551,"This is a calibrated time series of an occultation by the Uranus system generated from an earth-based stellar occultation. The data are uniformly spaced in time, and normalized in units of stellar intensity. The data may include occultations by both the rings and the planet, or just the planet. The occultation by the rings, if present, is based on the equatorial ring plane radius sampled at each time point, computed from an orbit model for the ring system.",Carriage-Return Line-Feed,15,0,212,Observed Event Time,1,1,ASCII_Real,16,second,"The instant at which photons were received at the observer location. It is represented in the Universal Coordinated Time system, as a number of elapsed seconds since the time given by the reference_time_utc attribute specified in this file. It refers to the middle of the bin.",Observed Event TDB,2,19,ASCII_Real,16,second,"The instant at which photons were received at the observer location. It is represented in the 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch.",Mean Signal,3,37,ASCII_Real,16,Mean counts received by the instrument during this time bin. The background signal has not been subtracted. Refer to NOTE FLAG for guidance on validity of data.,999999999.999999,999999999.999999,Normalized Signal,4,55,ASCII_Real,10,"Normalized signal during this time bin, in units of the unocculted stellar signal, such that 1.0 corresponds to the full unocculted star signal and 0.0 corresponds to no counts from the star (a completely opaque ring). NORMALIZED SIGNAL = (MEAN_SIGNAL - BACKGROUND_MODEL)/(UNOCCULTED STAR MODEL) This is an approximate normalization, computed using regional polynomial fits. For high-precision photometry of ring events, use locally computed normalization.",999.999999,999.999999,Sky-plane F,5,67,ASCII_Real,13,Kilometer,"The east/west component of r sky (positive in the east direction), in km.",Sky-plane G,6,82,ASCII_Real,13,Kilometer,"The north/south component of r sky (positive in the north direction), in km.",Sky-plane Radius,7,97,ASCII_Real,13,Kilometer,"The length of the radius vector in the plane of the sky measured from the center of the occulting object to the position of the occulted star or spacecraft, in km.",Ring Radius,8,112,ASCII_Real,12,Kilometer,"Radial distance of the occultation intercept point (middle of the bin) from the center of the planet, in km. Distances are measured along the equator plane.",Ring Longitude,9,126,ASCII_Real,8,Degree,Inertial longitude on the ring plane corresponding to the midpoint of the bin.,Observed Ring Azimuth,10,136,ASCII_Real,9,Degree,"Angle measured at a point in the ring plane, starting from the direction of a photon heading to the observer, and ending at the direction of a local radial vector. This angle is projected into the ring plane and measured in the prograde direction.",Ring Event TDB,11,147,ASCII_Real,16,second,"The time at which photons left the ring plane. This time is earlier than the associated OBSERVED EVENT TDB by an amount equal to the light travel time. It is represented in the 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch.",Unocculted Star Model,12,165,ASCII_Real,16,Model of the unocculted star signal as a function of ring plane radius. This is necessary because of variations in atmospheric transparency and other time-dependent effects.,999999999.999999,999999999.999999,Background Model,13,183,ASCII_Real,16,Model of the non-stellar background signal (which may vary over the course of the occultation) due to instrumental offsets applied during the recording and/or sky brightness and contributions from reflected sunlight from the rings and planet.,999999999.999999,999999999.999999,Number Of Samples Per Bin,14,201,ASCII_Integer,4,The number of raw data points per bin.,Note Flag,15,207,ASCII_Integer,4,"A numerical flag that associates specific comments with individual data bins. When more than one comment applies, the values are summed. The values and their associated comments are: 0: radius and longitude are based on Uranus equatorial plane. 1: radius and longitude are based inclined ring plane model referred to in metadata associated with file. 2: observed ring occultation event 4: telescope pointed to nearby sky for background level check 8: input signal from time source, not from photometer on telescope 16: line of sight intersects planet 32: dawn/dusk - rapid background level change; no background or star intensity estimate. 64: unreliable data (e.g., clouds, telescope guiding error, or instrument adjustment); no background or star intensity estimate." diff --git a/test_files/extra_file_info_success_2.csv b/test_files/extra_file_info_success_2.csv new file mode 100644 index 0000000..5862f18 --- /dev/null +++ b/test_files/extra_file_info_success_2.csv @@ -0,0 +1,4 @@ +filename,/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Modification_History[1]/pds:Modification_Detail/pds:version_id[1] +tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN +tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,1.0 +tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,NaN diff --git a/test_files/simplify_xpaths_success_1.csv b/test_files/simplify_xpaths_success_1.csv new file mode 100644 index 0000000..f0ad48c --- /dev/null +++ b/test_files/simplify_xpaths_success_1.csv @@ -0,0 +1,2 @@ +pds:logical_identifier,pds:version_id,pds:title,pds:information_model_version,pds:name,/pds:Product_Observational/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:name[1],pds:type,pds:lid_reference,pds:reference_type +urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,1.11.0.0,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host diff --git a/test_files/simplify_xpaths_success_2.csv b/test_files/simplify_xpaths_success_2.csv new file mode 100644 index 0000000..90a3331 --- /dev/null +++ b/test_files/simplify_xpaths_success_2.csv @@ -0,0 +1,4 @@ +pds:name,/pds:Product_Observational/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:name[1] +Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN +Cassini-Huygens,NaN,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,Dark Sky,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN +Earth-based Observations of Uranus System Stellar Occultations,NaN,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,IRTF 3.2m,Uranus,Generic InSb High Speed Photometer,Uranus Rings,Observed Event Time,Observed Event TDB,Mean Signal,Normalized Signal,Sky-plane F,Sky-plane G,Sky-plane Radius,Ring Radius,Ring Longitude,Observed Ring Azimuth,Ring Event TDB,Unocculted Star Model,Background Model,Number Of Samples Per Bin,Note Flag diff --git a/test_files/tester_label_1.xml b/test_files/tester_label_1.xml index 39e54f5..228c2ca 100644 --- a/test_files/tester_label_1.xml +++ b/test_files/tester_label_1.xml @@ -23,6 +23,4 @@ - - diff --git a/tests/test_pds4_create_xml_index.py b/tests/test_pds4_create_xml_index.py index 633283a..be0a008 100644 --- a/tests/test_pds4_create_xml_index.py +++ b/tests/test_pds4_create_xml_index.py @@ -13,84 +13,6 @@ root_dir = Path(__file__).resolve().parent.parent test_files_dir = root_dir / 'test_files' -# Set parameters values that you would like to pass into test_elements_file, -# in this case, I assume we are running the same test with different sets of -# golden_file new_file, and cmd_line. -@pytest.mark.parametrize( - 'golden_file,new_file,cmd_line', - [ - # simple test cases - (str(test_files_dir / 'elements_file_success.csv'), - 'elements_file.csv', - [ - str(test_files_dir), - 'tester_label_1.xml', - '--elements-file', - str(root_dir / 'samples/sample_elements.txt'), - '--output-file', - ] - ), - # Okay, basic capture - (str(test_files_dir / 'elements_file_success_2.csv'), - 'elements_file_2.csv', - [ - str(test_files_dir), - 'tester_label_2.xml', - '--elements-file', - str(root_dir / 'samples/element_2.txt'), - '--output-file', - ] - ), - # Multiple partial captures - (str(test_files_dir / 'elements_file_success_3.csv'), - 'elements_file_3.csv', - [ - str(test_files_dir), - 'tester_label_2.xml', - 'tester_label_3.xml', - '--elements-file', - str(root_dir / 'samples/element_3.txt'), - '--output-file', - ] - ), - - # exclusion test - (str(test_files_dir / 'elements_file_success_4.csv'), - 'elements_file_4.csv', - [ - str(test_files_dir), - 'tester_label_*.xml', - '--elements-file', - str(root_dir / 'test_files/elements_4.txt'), - '--output-file', - ] - ) - ] - ) - -def test_elements_file(golden_file, new_file, cmd_line): - # Create a temporary directory in the same location as the test_files directory - with tempfile.TemporaryDirectory(dir=test_files_dir.parent) as temp_dir: - temp_dir_path = Path(temp_dir) - - # THE PATH TO THE NEW FILE - path_to_file = temp_dir_path / new_file - # Call main() function with the simulated command line arguments - cmd_line.append(str(path_to_file)) - tools.main(cmd_line) - - # Assert that the file now exists - assert os.path.isfile(path_to_file) - - # Open and compare the two files - with open(path_to_file, 'rb') as created: - formed = created.read() - - with open(golden_file, 'rb') as new: - expected = new.read() - - assert formed == expected - def test_load_config_object(): config_object = tools.load_config_file(None) @@ -198,8 +120,257 @@ def test_process_schema_location(): assert schema_files[2] == 'https://pds.nasa.gov/pds4/mission/cassini/v1/PDS4_CASSINI_1B00_1300.xsd' +def test_extra_file_info(): + pass + + +# Set parameters values that you would like to pass into test_elements_file, +# in this case, I assume we are running the same test with different sets of +# golden_file new_file, and cmd_line. +@pytest.mark.parametrize( + 'golden_file,new_file,cmd_line', + [ + # simple test cases + # (str(test_files_dir / 'elements_file_success.csv'), + # 'elements_file.csv', + # [ + # str(test_files_dir), + # 'tester_label_1.xml', + # '--elements-file', + # str(root_dir / 'samples/sample_elements.txt'), + # '--output-file', + # ] + # ), + # # Okay, basic capture + # (str(test_files_dir / 'elements_file_success_2.csv'), + # 'elements_file_2.csv', + # [ + # str(test_files_dir), + # 'tester_label_2.xml', + # '--elements-file', + # str(root_dir / 'samples/element_2.txt'), + # '--output-file', + # ] + # ), + # # Multiple partial captures + # (str(test_files_dir / 'elements_file_success_3.csv'), + # 'elements_file_3.csv', + # [ + # str(test_files_dir), + # 'tester_label_2.xml', + # 'tester_label_3.xml', + # '--elements-file', + # str(root_dir / 'samples/element_3.txt'), + # '--output-file', + # ] + # ), + + # # exclusion test + # (str(test_files_dir / 'elements_file_success_4.csv'), + # 'elements_file_4.csv', + # [ + # str(test_files_dir), + # 'tester_label_*.xml', + # '--elements-file', + # str(root_dir / 'test_files/element_4.txt'), + # '--output-file', + # ] + # ) + + + ] + ) + +def test_elements_file(golden_file, new_file, cmd_line): + # Create a temporary directory in the same location as the test_files directory + with tempfile.TemporaryDirectory(dir=test_files_dir.parent) as temp_dir: + temp_dir_path = Path(temp_dir) + + # THE PATH TO THE NEW FILE + path_to_file = temp_dir_path / new_file + # Call main() function with the simulated command line arguments + cmd_line.append(str(path_to_file)) + tools.main(cmd_line) + + # Assert that the file now exists + assert os.path.isfile(path_to_file) + + # Open and compare the two files + with open(path_to_file, 'rb') as created: + formed = created.read() + + with open(golden_file, 'rb') as new: + expected = new.read() + + assert formed == expected + + + +# Set parameters values that you would like to pass into test_elements_file, +# in this case, I assume we are running the same test with different sets of +# golden_file new_file, and cmd_line. +@pytest.mark.parametrize( + 'golden_file,new_file,cmd_line', + [ + (str(test_files_dir / 'simplify_xpaths_success_1.csv'), + 'simplify_xpaths_1.csv', + [ + str(test_files_dir), + 'tester_label_1.xml', + '--simplify-xpaths', + '--output-file', + ] + ), + + (str(test_files_dir / 'simplify_xpaths_success_2.csv'), + 'simplify_xpaths_2.csv', + [ + str(test_files_dir), + 'tester_label_*.xml', + '--simplify-xpaths', + '--elements-file', + str(root_dir / 'samples/elements_xpath_simplify.txt'), + '--output-file', + ] + ) + + ] + ) + +def test_simplify_xpaths(golden_file, new_file, cmd_line): + # Create a temporary directory in the same location as the test_files directory + with tempfile.TemporaryDirectory(dir=test_files_dir.parent) as temp_dir: + temp_dir_path = Path(temp_dir) + + # THE PATH TO THE NEW FILE + path_to_file = temp_dir_path / new_file + # Call main() function with the simulated command line arguments + cmd_line.append(str(path_to_file)) + tools.main(cmd_line) + + # Assert that the file now exists + assert os.path.isfile(path_to_file) + + # Open and compare the two files + with open(path_to_file, 'rb') as created: + formed = created.read() + + with open(golden_file, 'rb') as new: + expected = new.read() + + assert formed == expected + + + +# Set parameters values that you would like to pass into test_elements_file, +# in this case, I assume we are running the same test with different sets of +# golden_file new_file, and cmd_line. +@pytest.mark.parametrize( + 'golden_file,new_file,cmd_line', + [ + (str(test_files_dir / 'extra_file_info_success_1.csv'), + 'extra_file_info_1.csv', + [ + str(test_files_dir), + 'tester_label_2.xml', + '--extra-file-info', + 'filename', + 'filepath', + '--output-file', + ] + ), + + (str(test_files_dir / 'extra_file_info_success_2.csv'), + 'extra_file_info_2.csv', + [ + str(test_files_dir), + 'tester_label_*.xml', + '--elements-file', + str(root_dir / 'samples/element_extra_file_info.txt'), + '--extra-file-info', + 'filename', + '--output-file', + ] + ) + + ] + ) + +def test_extra_file_info(golden_file, new_file, cmd_line): + # Create a temporary directory in the same location as the test_files directory + with tempfile.TemporaryDirectory(dir=test_files_dir.parent) as temp_dir: + temp_dir_path = Path(temp_dir) + + # THE PATH TO THE NEW FILE + path_to_file = temp_dir_path / new_file + # Call main() function with the simulated command line arguments + cmd_line.append(str(path_to_file)) + tools.main(cmd_line) + + # Assert that the file now exists + assert os.path.isfile(path_to_file) + + # Open and compare the two files + with open(path_to_file, 'rb') as created: + formed = created.read() + + with open(golden_file, 'rb') as new: + expected = new.read() + + assert formed == expected + +# in this case, I assume we are running the same test with different sets of +# golden_file new_file, and cmd_line. +@pytest.mark.parametrize( + 'golden_file,new_file,cmd_line', + [ + (str(test_files_dir / 'clean_header_field_names_success_1.csv'), + 'clean_header_field_names_1.csv', + [ + str(test_files_dir), + 'tester_label_1.xml', + '--clean-header-field-names', + '--output-file', + ] + ), + + (str(test_files_dir / 'clean_header_field_names_success_2.csv'), + 'clean_header_field_names_2.csv', + [ + str(test_files_dir), + 'tester_label_1.xml', + 'tester_label_2.xml', + '--elements-file', + str(root_dir / 'samples/elements_clean_header_field_names.txt'), + '--clean-header-field-names', + '--output-file', + ] + ), + + ] + ) + +def test_clean_header_field_names(golden_file, new_file, cmd_line): + # Create a temporary directory in the same location as the test_files directory + with tempfile.TemporaryDirectory(dir=test_files_dir.parent) as temp_dir: + temp_dir_path = Path(temp_dir) + + # THE PATH TO THE NEW FILE + path_to_file = temp_dir_path / new_file + # Call main() function with the simulated command line arguments + cmd_line.append(str(path_to_file)) + tools.main(cmd_line) + + # Assert that the file now exists + assert os.path.isfile(path_to_file) + + # Open and compare the two files + with open(path_to_file, 'rb') as created: + formed = created.read() + + with open(golden_file, 'rb') as new: + expected = new.read() -# root_dir = Path(__file__).resolve().parent.parent -# print(root_dir) \ No newline at end of file + assert formed == expected \ No newline at end of file From d863ac61bd680a8c5fe63193e7871765668b06e8 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Mon, 15 Apr 2024 09:51:17 -0700 Subject: [PATCH 17/46] Adding --sort-by unit tests --- test_files/sort_by_success.csv | 4 ++ test_files/sort_by_success_2.csv | 4 ++ tests/test_pds4_create_xml_index.py | 65 +++++++++++++++++++++++++++-- 3 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 test_files/sort_by_success.csv create mode 100644 test_files/sort_by_success_2.csv diff --git a/test_files/sort_by_success.csv b/test_files/sort_by_success.csv new file mode 100644 index 0000000..25b7fae --- /dev/null +++ b/test_files/sort_by_success.csv @@ -0,0 +1,4 @@ +/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Modification_History[1]/pds:Modification_Detail/pds:version_id[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:start_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:stop_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:wavelength_range[1] +urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN +urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN,NaN +urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,NaN,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared diff --git a/test_files/sort_by_success_2.csv b/test_files/sort_by_success_2.csv new file mode 100644 index 0000000..25b7fae --- /dev/null +++ b/test_files/sort_by_success_2.csv @@ -0,0 +1,4 @@ +/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Modification_History[1]/pds:Modification_Detail/pds:version_id[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:start_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:stop_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:wavelength_range[1] +urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN +urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN,NaN +urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,NaN,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared diff --git a/tests/test_pds4_create_xml_index.py b/tests/test_pds4_create_xml_index.py index be0a008..faa2f5c 100644 --- a/tests/test_pds4_create_xml_index.py +++ b/tests/test_pds4_create_xml_index.py @@ -120,10 +120,6 @@ def test_process_schema_location(): assert schema_files[2] == 'https://pds.nasa.gov/pds4/mission/cassini/v1/PDS4_CASSINI_1B00_1300.xsd' -def test_extra_file_info(): - pass - - # Set parameters values that you would like to pass into test_elements_file, # in this case, I assume we are running the same test with different sets of # golden_file new_file, and cmd_line. @@ -353,6 +349,67 @@ def test_extra_file_info(golden_file, new_file, cmd_line): ) def test_clean_header_field_names(golden_file, new_file, cmd_line): + # Create a temporary directory in the same location as the test_files directory + with tempfile.TemporaryDirectory(dir=test_files_dir.parent) as temp_dir: + temp_dir_path = Path(temp_dir) + + # THE PATH TO THE NEW FILE + path_to_file = temp_dir_path / new_file + # Call main() function with the simulated command line arguments + cmd_line.append(str(path_to_file)) + tools.main(cmd_line) + + # Assert that the file now exists + assert os.path.isfile(path_to_file) + + # Open and compare the two files + with open(path_to_file, 'rb') as created: + formed = created.read() + + with open(golden_file, 'rb') as new: + expected = new.read() + + assert formed == expected + + + + # in this case, I assume we are running the same test with different sets of +# golden_file new_file, and cmd_line. +@pytest.mark.parametrize( + 'golden_file,new_file,cmd_line', + [ + ( + str(test_files_dir / 'sort_by_success.csv'), + 'sort_by_1.csv', + [ + str(test_files_dir), + 'tester_label_*.xml', + '--elements-file', + str(root_dir / 'samples/elements_clean_header_field_names.txt'), + '--sort-by', + '/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1]', + '--output-file', + ] + ), + + ( + str(test_files_dir / 'sort_by_success_2.csv'), + 'sort_by_2.csv', + [ + str(test_files_dir), + 'tester_label_*.xml', + '--elements-file', + str(root_dir / 'samples/elements_clean_header_field_names.txt'), + '--sort-by', + '/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1]', + '/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:start_date_time[1]', + '--output-file', + ] + ) + ] +) + +def test_sort_by(golden_file, new_file, cmd_line): # Create a temporary directory in the same location as the test_files directory with tempfile.TemporaryDirectory(dir=test_files_dir.parent) as temp_dir: temp_dir_path = Path(temp_dir) From 5d10625958e50fc3398fcfe3c819d036f59188ed Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Mon, 15 Apr 2024 11:00:56 -0700 Subject: [PATCH 18/46] Cleaning up comments --- tests/test_pds4_create_xml_index.py | 32 ++++++++++++++++------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/tests/test_pds4_create_xml_index.py b/tests/test_pds4_create_xml_index.py index faa2f5c..bc65ba8 100644 --- a/tests/test_pds4_create_xml_index.py +++ b/tests/test_pds4_create_xml_index.py @@ -120,9 +120,12 @@ def test_process_schema_location(): assert schema_files[2] == 'https://pds.nasa.gov/pds4/mission/cassini/v1/PDS4_CASSINI_1B00_1300.xsd' -# Set parameters values that you would like to pass into test_elements_file, -# in this case, I assume we are running the same test with different sets of -# golden_file new_file, and cmd_line. +# Set parameters values that you would like to pass into test_elements_file. +# In this case, we are running the same test with different sets of +# golden_file, new_file, and cmd_line. + +# Currently, element_file unit tests are commented out due to the current code not +# creating intended results. @pytest.mark.parametrize( 'golden_file,new_file,cmd_line', [ @@ -202,9 +205,9 @@ def test_elements_file(golden_file, new_file, cmd_line): -# Set parameters values that you would like to pass into test_elements_file, -# in this case, I assume we are running the same test with different sets of -# golden_file new_file, and cmd_line. +# Set parameters values that you would like to pass into test_simplify_xpaths. +# In this case, we are running the same test with different sets of +# golden_file, new_file, and cmd_line. @pytest.mark.parametrize( 'golden_file,new_file,cmd_line', [ @@ -258,9 +261,9 @@ def test_simplify_xpaths(golden_file, new_file, cmd_line): -# Set parameters values that you would like to pass into test_elements_file, -# in this case, I assume we are running the same test with different sets of -# golden_file new_file, and cmd_line. +# Set parameters values that you would like to pass into test_extra_file_info. +# In this case, I assume we are running the same test with different sets of +# golden_file, new_file, and cmd_line. @pytest.mark.parametrize( 'golden_file,new_file,cmd_line', [ @@ -316,9 +319,9 @@ def test_extra_file_info(golden_file, new_file, cmd_line): assert formed == expected - -# in this case, I assume we are running the same test with different sets of -# golden_file new_file, and cmd_line. +# Set parameters values that you would like to pass into test_clean_header_field_names. +# In this case, I assume we are running the same test with different sets of +# golden_file, new_file, and cmd_line. @pytest.mark.parametrize( 'golden_file,new_file,cmd_line', [ @@ -373,8 +376,9 @@ def test_clean_header_field_names(golden_file, new_file, cmd_line): - # in this case, I assume we are running the same test with different sets of -# golden_file new_file, and cmd_line. +# Set parameters values that you would like to pass into test_sort_by. +# In this case, I assume we are running the same test with different sets of +# golden_file, new_file, and cmd_line. @pytest.mark.parametrize( 'golden_file,new_file,cmd_line', [ From 3e60ecd17f6739bd14edf899a670f8177d61756e Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 16 Apr 2024 16:19:50 -0700 Subject: [PATCH 19/46] Added tests, changed and added dummy files --- .DS_Store | Bin 0 -> 8196 bytes pds4indextools/.DS_Store | Bin 0 -> 6148 bytes samples/.DS_Store | Bin 0 -> 6148 bytes samples/elements_xpath_simplify_2.txt | 1 + samples/elements_xpath_simplify_3.txt | 70 +++++++++++++++++++++++ test_files/.DS_Store | Bin 0 -> 8196 bytes test_files/elements_file_success_4.csv | 8 +-- test_files/extra_file_info_success_2.csv | 8 +-- test_files/simplify_xpaths_success_3.csv | 2 + test_files/simplify_xpaths_success_4.csv | 2 + test_files/sort_by_success.csv | 8 +-- test_files/sort_by_success_2.csv | 8 +-- test_files/tester_label_3.xml | 18 ------ tests/test_pds4_create_xml_index.py | 28 ++++++++- 14 files changed, 117 insertions(+), 36 deletions(-) create mode 100644 .DS_Store create mode 100644 pds4indextools/.DS_Store create mode 100644 samples/.DS_Store create mode 100644 samples/elements_xpath_simplify_2.txt create mode 100644 samples/elements_xpath_simplify_3.txt create mode 100644 test_files/.DS_Store create mode 100644 test_files/simplify_xpaths_success_3.csv create mode 100644 test_files/simplify_xpaths_success_4.csv diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a3893fc16f543bf8a8d6e2a733f765cf8dfd2824 GIT binary patch literal 8196 zcmeHML2nyH6n>MYc-_!ulO~XYkXHDD)F`BFiWDJK<2aNEnuOR5iQ3|>y%TrIddKXp zlcrH5pW(z0fIBCyNc;gVT)82B0$e#D`pwMRbv6zXm#Rut2>xnXw_Dld7?1^f$MjxSF0-9nNFbo(53)% zvNXkD+8pDKR0kGQ>}u5J#I!lFbY_-jC``=`J4dM#D{3^YVZbnOk^z~!PpW*qOv}ge z_f;y>U5r#|j#}ic1fo$7L>>AFG4>Yl`+rqYPREsxRcLR}3YB141+LQVq1NAItaJ1! zw3qM+R;fbE$LFFCp*=S+*ClF`M=>psPaz~uk0~L6zkuS5?T`P*w!R;?(>4B7ZwG#y z%+LSEM$V0%eOI-5Z~A<{W=}1NFme5mN6NtW zI8^R`?uVY(FNsd*#mcs#2duo6uh}z)hu0Tx&N??17msG0!^P|Kv(Cbe_l}P8)^y?B z_cv<0K`RtrE4GQH#~@wQ&;3?1`=9*mRiZEuVH0}NhtxeljlkZQV6p)w=MCf$YZaUu{&kD13c|pGH79A9!_6T2RkRF7HWvuVl^jrF*D=enHh7?bYa!TPV?+u zkH|F*&X&`5&rDx=^37A!Al|#Q7P!~d(FuADs8vn zhs~{oKTazC6JE0?GpZZh`{G$w^`H%%sb?L^-R+3;Q2ATi*@=0wH6U--?D4n}i6B@P zv7h)N+`b><{8>qOYbD$fm~jth&stj!#hW~efhTOX9t3Wk2Ww$TB#CHkyHVtZO?t)`+(hIAG6Qc25T^n`7F{7MtX;z zyo3e{i}5gY!!tp0z8@sRu8YCY81R1f#B+K{Gh@Kz(|`XzdkZ%!G7K07`V6qqa;03t zWA9w;kEDXkwH?%lsIo}Cu0~~oMy2CGm5u}Z|1gB?KvmilQ|xL)56W}@Apmbj=KeSL LzkW%6dGG(Hg4S?5 literal 0 HcmV?d00001 diff --git a/pds4indextools/.DS_Store b/pds4indextools/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b9e343405d5262ba6c4ec623e8375feac9226f58 GIT binary patch literal 6148 zcmeHK%SyyR5UkccEO=Qw?M0X`2nc>aSk{AQKS15bVIgirSI}Gj$WPR&>2Woht0K}J zda9?VyC*5gJOJ42adiqz0F0?ZlQAH24-OraV4>w2S6Jd6YusQrQ0OnZ^zKvKVTA{r z;q&{i*?Yn*8sY|9My%Pd82fzDw97@)E|@FgUZ~Y;7FxjZzTQXP4lSRCvsAg-reDKO zzSPKtq6r3qfnXpQ2nK$D0q)t7@sVS+!9Xw&4D1=u`jDu?x?ty+mku^MK5Kj=l+f0Z zSeOdd1v^KMP|Q<_o@(WaVV+KZDsgqe&e79hd1lrrGrwP6EYD7V%HgouG1_1t80a%_ z=-r9-|8xE_gO~h%O7wz(VBnuIV59lve8!I|d+WE)(_WjX*Hnq(IvEt&y+Z&yT1TdN d(8rT(#?=KoM^%wOrxW8KkO_$<82AMS-T&`@Px<64n6C3J^Q?yXTw)%V zX1n0~w#FPIj(f-Y0vT5_=ZZ4i;;AOF z_Lw9RrTMXGW(t@BrofLWz&%^6C0{HvQ@|83 z1vV9s??Xfvj1}{M{?oz29|4F>c6(!8eiVfhDaMLjiTC@QcMnr+$tFY3?#MUu5l0aM^#Dd3uet3jVj z(!F(SakAG&^lQ49#N`1$DXjRdn6a`IAJM(BKavVDR?Gvkhh{$lUIr^nfnQbN1B_O6 A`2YX_ literal 0 HcmV?d00001 diff --git a/samples/elements_xpath_simplify_2.txt b/samples/elements_xpath_simplify_2.txt new file mode 100644 index 0000000..6e4a710 --- /dev/null +++ b/samples/elements_xpath_simplify_2.txt @@ -0,0 +1 @@ +**/rings:Occultation_Time_Series/* \ No newline at end of file diff --git a/samples/elements_xpath_simplify_3.txt b/samples/elements_xpath_simplify_3.txt new file mode 100644 index 0000000..90a9b10 --- /dev/null +++ b/samples/elements_xpath_simplify_3.txt @@ -0,0 +1,70 @@ +mission_phase_name +spacecraft_clock_count_partition +spacecraft_clock_start_count +spacecraft_clock_stop_count +limitations +antiblooming_state_flag +bias_strip_mean +calilbration_lamp_state_flag +command_file_name +command_sequence_number +dark_strip_mean +data_conversion_type +delayed_readout_flag +detector_temperature +electronics_bias +earth_recieved_start_time +earth_recieved_stop_time +expected_maximum_full_well +expected_maximum_DN_sat +expected_packets +exposure_duration +filter_name_1 +filter_name_2 +filter_temperature +flight_software_version_id +gain_mode_id +ground_software_version_id +image_mid_time +image_number +image_time +image_observation_type +instrument_data_rate +intrument_mode_id +inst_cmprs_type +inst_cmprs_param_malgo +inst_cmprs_param_tb +inst_cmprs_param_blocks +inst_cmprs_param_quant +inst_cmprs_rate_expected_bits +inst_cmprs_rate_actual_bits +inst_cmprs_ratio +light_flood_state_flag +method_description +missing_lines +missing_packet_flag +observation_id +optics_temperature_front +optics_temperature_back +order_number +parallel_clock_voltage_index +pds3_product_creation_time +pds3_product_version_type +pds3_target_desc +pds3_target_list +pds3_target_name +pre-pds_version_number +prepare_cycle_index +readout_cycle_index +received_packets +sensor_head_electronics_temperature +sequence_id +sequence_number +sequence_title +shutter_mode_id +shutter_state_id +start_time_doy +stop_time_doy +telemetry_format_id +valid_maximum_full_well +valid_maximum_DN_sat \ No newline at end of file diff --git a/test_files/.DS_Store b/test_files/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..066e8b8cac354026aa5f9af4b5f5e4bd922cb919 GIT binary patch literal 8196 zcmeHM%}(1u5dIc8ARz(elnO=iiDM*6AHYO#=$QvFNl3twODYnoaPysa;1zhjp2|0~ z+v4~K5d|ScW~JTn+B@IQd^2ln5&*7ydvOS~0Bo|0+}+|()8x7IN?Qweb|@Y7fomkV z!Vo=NR94#!W55_N28;n?z!>-l4Dg#RZL{IK@1NRe3>X6|$$-2cB6g8+khz!o>foRy z0Oba6YvVQR0M&_tjDyU*R8?a7>cIt77fKB0)%iS<<&<%dxtCrY&a1lpq&EI0LZ}ofOv9#A$wS1^HUt_9vi$CIP*@JrP|Ip@6 z!TS9L5EHy$=Mtz#_1+89OQ3#lK)o-awrUv2$mxXqChU?OGTsnxiW#Q!`LK3b!fSIa zS8;uh`p?lxnQbGCD{*SfG(~QKk?`Y+WvmX7p(ky%B z=>U=EVzxMPgUwDdx5&m9jmp2+Bs{BQWjMtpBPDF7^N~{9iU@lpgpB_7H5+_PW@IEQ zVemxGS@9Bvcv6F*dHq^Dcomment()[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:expected_maximum_DN_sat,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:expected_packets,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:exposure_duration,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:filter_name_1,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:filter_name_2,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:filter_temperature,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:flight_software_version_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:gain_mode_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:ground_software_version_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_mid_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_number,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_observation_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:instrument_data_rate,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:instrument_mode_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_malgo,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_tb,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_blocks,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_quant,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_rate_expected_bits,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_rate_actual_bits,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_ratio,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:light_flood_state_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:method_description,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:missing_lines,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:missing_packet_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:observation_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:optics_temperature_front,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:optics_temperature_back,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:order_number,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:parallel_clock_voltage_index,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_product_creation_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_product_version_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_target_desc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_target_list,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_target_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pre-pds_version_number,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:prepare_cycle_index,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:readout_cycle_index,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:received_packets,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sensor_head_electronics_temperature,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sequence_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sequence_number,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sequence_title,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:shutter_mode_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:shutter_state_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:start_time_doy,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:stop_time_doy,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:telemetry_format_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:valid_maximum_full_well,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:valid_maximum_DN_sat,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/pds:Local_Internal_Reference[1]/pds:local_identifier_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/pds:Local_Internal_Reference[1]/pds:local_reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/disp:Display_Direction/disp:horizontal_display_axis,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/disp:Display_Direction/disp:horizontal_display_direction,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/disp:Display_Direction/disp:vertical_display_axis,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/disp:Display_Direction/disp:vertical_display_direction,/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[2]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[2]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[3]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[3]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[4]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[4]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[5]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[5]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[6]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[6]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Source_Product_External[1]/pds:external_source_product_identifier[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Source_Product_External[1]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Source_Product_External[1]/pds:curating_facility[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:file_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:creation_date_time[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:md5_checksum[1],/pds:Product_Observational/pds:File_Area_Observational[1]/comment()[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:object_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:parsing_standard_id[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:local_identifier[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:axes[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:axis_index_order[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:Element_Array[1]/pds:data_type,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:Axis_Array[1]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:Axis_Array[1]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:Axis_Array[1]/pds:sequence_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:local_identifier[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:axes[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:axis_index_order[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Element_Array[1]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Element_Array[1]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[1]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[1]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[1]/pds:sequence_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[2]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[2]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[2]/pds:sequence_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:axes[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:axis_index_order[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Element_Array[1]/pds:data_type,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[1]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[1]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[1]/pds:sequence_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[2]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[2]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[2]/pds:sequence_number[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:author_list[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:publication_year[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[2],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[3],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[4],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[5],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[6],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:facet1[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:discipline_name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:facet1[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:alternate_designation[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:alternate_designation[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:kernel_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_direction,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_series_direction,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:planetary_occultation_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:data_quality_score,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:ring_plane,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:star_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fresnel_scale,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:projected_star_diameter,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_projected_star_diameter,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fractional_error_star_counts,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_time_constant,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_wavelength,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_wavelength,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:reference_time_utc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_event_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_event_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_start_tdb,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_stop_tdb,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_start_time_utc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_stop_time_utc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_radius,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_radius,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_longitude,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_longitude,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_ring_elevation,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:light_source_incidence_angle,/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[7]/pds:lidvid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[7]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[8]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[8]/pds:reference_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:local_identifier[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:records[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:record_delimiter[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:fields[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:groups[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:record_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:field_length[1] -urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,1.11.0.0,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN -urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,Cassini ISS Image 1357539630n.img,1.11.0.0,NaN,NaN,NaN,NaN,NaN,Product_Observational,2020-03-31,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Science,Raw,Near Infrared,Ring-Moon Systems,Cassini-Huygens,Mission,urn:nasa:pds:context:investigation:mission.cassini-huygens,data_to_investigation,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,Instrument,urn:nasa:pds:context:instrument:issna.co,is_instrument,Dark Sky,Calibration Field,urn:nasa:pds:context:target:calibration_field.dark_sky,data_to_target,EARTH-JUPITER CRUISE,1,1357539630.068,1357539630.123,N/A,ON,6.870842,N/A,ISS_C23ST_OCCULT001_UVIS_B.icf,730,0,TABLE,NO,-89.243546,112,2001-007T19:58:04.616,2001-007T19:58:32.295,-1,Unknown,-1,-1,220,P0,GRN,-0.468354,1.2,29,ISS V7.0 11-22-2000,2001-007T06:08:48.013,1357539630,2001-007T06:08:48.013,SCIENCE,182.783997,FULL,LOSSLESS,999,999,999,999,-1,-1,3.150372,ON,Information not provided,0,NO,UVIS_C23ST_OCCULT001_PRIME_C,0.71269,-999,-999,9,2001-008T10:55:49.000,FINAL,Information not provided,N/A,DARK SKY,1,0,11,-1,1.633024,C23,-1,ISS_C23ST_OCCULT001_UVIS,NACONLY,ENABLED,2001-007T06:08:47.793,2001-007T06:08:48.013,Information not provided,-1,-1,image,display_settings_to_array,Sample,Left to Right,Line,Top to Bottom,urn:nasa:pds:cassini_iss_cruise:data_raw:index,data_to_resource,urn:nasa:pds:cassini_iss_cruise:data_raw:body-geometry,data_to_resource,urn:nasa:pds:cassini_iss_cruise:body-inventory,data_to_resource,urn:nasa:pds:cassini_iss_cruise:ring-geometry,data_to_resource,urn:nasa:pds:cassini_iss_saturn:document:iss-data-user-guide,data_to_document,urn:nasa:pds:cassini_iss_cruise:browse_raw:1357539630n-full,data_to_browse,CO-E/V/J-ISSNA/ISSWA-2-EDR-V1.0:COISS_1004:data/1357539422_1357559280:N1357539630_1.IMG,data_to_raw_source_product,PDS RMS Node,1357539630n.img,2019-06-12T22:05:54Z,a468693f67593587d224116c5ade995a,Line prefix bytes,0,4096,VICAR2,telemetry-table,4096,1,Last Index Fastest,UnsignedByte,telemetry,2,1,image,6144,2,Last Index Fastest,UnsignedByte,DN,Line,1024,1,Sample,1024,2,1054720,2,Last Index Fastest,UnsignedByte,Line,1024,1,prefix-sample,24,2,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN -urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope,1.14.0.0,NaN,NaN,NaN,NaN,NaN,Product_Observational,NaN,NaN,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Science,Calibrated,Infrared,Atmospheres,Earth-based Observations of Uranus System Stellar Occultations,Observing Campaign,urn:nasa:pds:context:investigation:observing_campaign.earth-based-uranus-stellar-occultations,data_to_investigation,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,Host,urn:nasa:pds:context:facility:observatory.irtf-maunakea,is_facility,IRTF 3.2m,Telescope,urn:nasa:pds:context:telescope:irtf-maunakea.3m2,is_telescope,Uranus,Planet,urn:nasa:pds:context:target:planet.uranus,data_to_target,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,urn:nasa:pds:uranus_occ_support:document:earth-based-uranus-stellar-occultations-user-guide,data_to_document,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_obs_geom,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_earth,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_alt,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_occult,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_normalization,data_to_browse,NaN,NaN,NaN,u149_irtf_320cm_2200nm_counts-v-time_occult.tab,2021-04-05T23:18:20Z,NaN,NaN,0,264,UTF-8 Text,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,"French, Richard G.; McGhee-French, Colleen A.; Gordon, Mitchell K.",2020,uranus atmosphere,uranus atmosphere stellar occultation,uranus atmosphere stellar occultation time series,uranus rings,uranus rings stellar occultation,uranus rings stellar occultation radial profile,Structure,Infrared,Ring-Moon Systems,Ring Occultation Profile,Generic InSb High Speed Photometer,Instrument,urn:nasa:pds:context:instrument:multi-host.generic_insp_hsp,is_instrument,NAIF ID 799,Uranus Rings,Uranian Ring System,Ring,urn:nasa:pds:context:target:ring.uranus.rings,data_to_target,LSK,naif0012.tls,stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528,urn:nasa:pds:uranus_occ_support:data:uranus_occultation_ring_fit_rfrench_20201201::1.0,data_to_resource,urn:nasa:pds:uranus_occ_support,data_to_resource,data,264,10551,Carriage-Return Line-Feed,15,0,212,Observed Event Time,1,1,ASCII_Real,16,second,Observed Event TDB,2,19,ASCII_Real,16,second,Mean Signal,3,37,ASCII_Real,16,999999999.999999,999999999.999999,Normalized Signal,4,55,ASCII_Real,10,999.999999,999.999999,Sky-plane F,5,67,ASCII_Real,13,Kilometer,Sky-plane G,6,82,ASCII_Real,13,Kilometer,Sky-plane Radius,7,97,ASCII_Real,13,Kilometer,Ring Radius,8,112,ASCII_Real,12,Kilometer,Ring Longitude,9,126,ASCII_Real,8,Degree,Observed Ring Azimuth,10,136,ASCII_Real,9,Degree,Ring Event TDB,11,147,ASCII_Real,16,second,Unocculted Star Model,12,165,ASCII_Real,16,999999999.999999,999999999.999999,Background Model,13,183,ASCII_Real,16,999999999.999999,999999999.999999,Number Of Samples Per Bin,14,201,ASCII_Integer,4,Note Flag,15,207,ASCII_Integer,4 \ No newline at end of file +/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:title[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:information_model_version[1],/pds:Product_Observational/pds:Observing_System[1]/pds:name[1],/pds:Product_Observational/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:name[1],/pds:Product_Observational/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:type[1],/pds:Product_Observational/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:product_class[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:start_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:stop_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:purpose[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:processing_level[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:discipline_name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:mission_phase_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:spacecraft_clock_count_partition,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:spacecraft_clock_start_count,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:spacecraft_clock_stop_count,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:limitations,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:antiblooming_state_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:bias_strip_mean,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:calibration_lamp_state_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:command_file_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:command_sequence_number,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:dark_strip_mean,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:data_conversion_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:delayed_readout_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:detector_temperature,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:electronics_bias,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:earth_received_start_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:earth_received_stop_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:expected_maximum_full_well,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/comment()[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:expected_maximum_DN_sat,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:expected_packets,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:exposure_duration,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:filter_name_1,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:filter_name_2,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:filter_temperature,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:flight_software_version_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:gain_mode_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:ground_software_version_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_mid_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_number,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_observation_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:instrument_data_rate,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:instrument_mode_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_malgo,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_tb,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_blocks,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_quant,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_rate_expected_bits,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_rate_actual_bits,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_ratio,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:light_flood_state_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:method_description,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:missing_lines,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:missing_packet_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:observation_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:optics_temperature_front,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:optics_temperature_back,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:order_number,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:parallel_clock_voltage_index,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_product_creation_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_product_version_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_target_desc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_target_list,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_target_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pre-pds_version_number,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:prepare_cycle_index,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:readout_cycle_index,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:received_packets,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sensor_head_electronics_temperature,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sequence_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sequence_number,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sequence_title,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:shutter_mode_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:shutter_state_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:start_time_doy,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:stop_time_doy,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:telemetry_format_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:valid_maximum_full_well,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:valid_maximum_DN_sat,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/pds:Local_Internal_Reference[1]/pds:local_identifier_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/pds:Local_Internal_Reference[1]/pds:local_reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/disp:Display_Direction/disp:horizontal_display_axis,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/disp:Display_Direction/disp:horizontal_display_direction,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/disp:Display_Direction/disp:vertical_display_axis,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/disp:Display_Direction/disp:vertical_display_direction,/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[2]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[2]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[3]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[3]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[4]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[4]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[5]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[5]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[6]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[6]/pds:reference_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:file_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:creation_date_time[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:md5_checksum[1],/pds:Product_Observational/pds:File_Area_Observational[1]/comment()[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:object_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:parsing_standard_id[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:local_identifier[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:axes[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:axis_index_order[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:Element_Array[1]/pds:data_type,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:Axis_Array[1]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:Axis_Array[1]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:Axis_Array[1]/pds:sequence_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:local_identifier[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:axes[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:axis_index_order[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Element_Array[1]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Element_Array[1]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[1]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[1]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[1]/pds:sequence_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[2]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[2]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[2]/pds:sequence_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:axes[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:axis_index_order[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Element_Array[1]/pds:data_type,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[1]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[1]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[1]/pds:sequence_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[2]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[2]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[2]/pds:sequence_number[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:author_list[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:publication_year[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[2],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[3],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[4],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[5],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[6],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:facet1[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:discipline_name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:facet1[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:alternate_designation[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:alternate_designation[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:kernel_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_direction,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_series_direction,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:planetary_occultation_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:data_quality_score,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:ring_plane,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:star_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fresnel_scale,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:projected_star_diameter,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_projected_star_diameter,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fractional_error_star_counts,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_time_constant,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_wavelength,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_wavelength,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:reference_time_utc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_event_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_event_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_start_tdb,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_stop_tdb,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_start_time_utc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_stop_time_utc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_radius,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_radius,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_longitude,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_longitude,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_ring_elevation,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:light_source_incidence_angle,/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[7]/pds:lidvid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[7]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[8]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[8]/pds:reference_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:local_identifier[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:records[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:record_delimiter[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:fields[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:groups[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:record_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:field_length[1] +urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,1.11.0.0,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN +urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,Cassini ISS Image 1357539630n.img,1.11.0.0,NaN,NaN,NaN,NaN,NaN,Product_Observational,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Science,Raw,Near Infrared,Ring-Moon Systems,Cassini-Huygens,Mission,urn:nasa:pds:context:investigation:mission.cassini-huygens,data_to_investigation,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,Instrument,urn:nasa:pds:context:instrument:issna.co,is_instrument,Dark Sky,Calibration Field,urn:nasa:pds:context:target:calibration_field.dark_sky,data_to_target,EARTH-JUPITER CRUISE,1,1357539630.068,1357539630.123,N/A,ON,6.870842,N/A,ISS_C23ST_OCCULT001_UVIS_B.icf,730,0,TABLE,NO,-89.243546,112,2001-007T19:58:04.616,2001-007T19:58:32.295,-1,Unknown,-1,-1,220,P0,GRN,-0.468354,1.2,29,ISS V7.0 11-22-2000,2001-007T06:08:48.013,1357539630,2001-007T06:08:48.013,SCIENCE,182.783997,FULL,LOSSLESS,999,999,999,999,-1,-1,3.150372,ON,Information not provided,0,NO,UVIS_C23ST_OCCULT001_PRIME_C,0.71269,-999,-999,9,2001-008T10:55:49.000,FINAL,Information not provided,N/A,DARK SKY,1,0,11,-1,1.633024,C23,-1,ISS_C23ST_OCCULT001_UVIS,NACONLY,ENABLED,2001-007T06:08:47.793,2001-007T06:08:48.013,Information not provided,-1,-1,image,display_settings_to_array,Sample,Left to Right,Line,Top to Bottom,urn:nasa:pds:cassini_iss_cruise:data_raw:index,data_to_resource,urn:nasa:pds:cassini_iss_cruise:data_raw:body-geometry,data_to_resource,urn:nasa:pds:cassini_iss_cruise:body-inventory,data_to_resource,urn:nasa:pds:cassini_iss_cruise:ring-geometry,data_to_resource,urn:nasa:pds:cassini_iss_saturn:document:iss-data-user-guide,data_to_document,urn:nasa:pds:cassini_iss_cruise:browse_raw:1357539630n-full,data_to_browse,1357539630n.img,2019-06-12T22:05:54Z,a468693f67593587d224116c5ade995a,Line prefix bytes,0,4096,VICAR2,telemetry-table,4096,1,Last Index Fastest,UnsignedByte,telemetry,2,1,image,6144,2,Last Index Fastest,UnsignedByte,DN,Line,1024,1,Sample,1024,2,1054720,2,Last Index Fastest,UnsignedByte,Line,1024,1,prefix-sample,24,2,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN +urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope,1.14.0.0,NaN,NaN,NaN,NaN,NaN,Product_Observational,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Science,Calibrated,Infrared,Atmospheres,Earth-based Observations of Uranus System Stellar Occultations,Observing Campaign,urn:nasa:pds:context:investigation:observing_campaign.earth-based-uranus-stellar-occultations,data_to_investigation,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,Host,urn:nasa:pds:context:facility:observatory.irtf-maunakea,is_facility,IRTF 3.2m,Telescope,urn:nasa:pds:context:telescope:irtf-maunakea.3m2,is_telescope,Uranus,Planet,urn:nasa:pds:context:target:planet.uranus,data_to_target,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,urn:nasa:pds:uranus_occ_support:document:earth-based-uranus-stellar-occultations-user-guide,data_to_document,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_obs_geom,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_earth,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_alt,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_occult,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_normalization,data_to_browse,u149_irtf_320cm_2200nm_counts-v-time_occult.tab,2021-04-05T23:18:20Z,NaN,NaN,0,264,UTF-8 Text,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,"French, Richard G.; McGhee-French, Colleen A.; Gordon, Mitchell K.",2020,uranus atmosphere,uranus atmosphere stellar occultation,uranus atmosphere stellar occultation time series,uranus rings,uranus rings stellar occultation,uranus rings stellar occultation radial profile,Structure,Infrared,Ring-Moon Systems,Ring Occultation Profile,Generic InSb High Speed Photometer,Instrument,urn:nasa:pds:context:instrument:multi-host.generic_insp_hsp,is_instrument,NAIF ID 799,Uranus Rings,Uranian Ring System,Ring,urn:nasa:pds:context:target:ring.uranus.rings,data_to_target,LSK,naif0012.tls,stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528,urn:nasa:pds:uranus_occ_support:data:uranus_occultation_ring_fit_rfrench_20201201::1.0,data_to_resource,urn:nasa:pds:uranus_occ_support,data_to_resource,data,264,10551,Carriage-Return Line-Feed,15,0,212,Observed Event Time,1,1,ASCII_Real,16,second,Observed Event TDB,2,19,ASCII_Real,16,second,Mean Signal,3,37,ASCII_Real,16,999999999.999999,999999999.999999,Normalized Signal,4,55,ASCII_Real,10,999.999999,999.999999,Sky-plane F,5,67,ASCII_Real,13,Kilometer,Sky-plane G,6,82,ASCII_Real,13,Kilometer,Sky-plane Radius,7,97,ASCII_Real,13,Kilometer,Ring Radius,8,112,ASCII_Real,12,Kilometer,Ring Longitude,9,126,ASCII_Real,8,Degree,Observed Ring Azimuth,10,136,ASCII_Real,9,Degree,Ring Event TDB,11,147,ASCII_Real,16,second,Unocculted Star Model,12,165,ASCII_Real,16,999999999.999999,999999999.999999,Background Model,13,183,ASCII_Real,16,999999999.999999,999999999.999999,Number Of Samples Per Bin,14,201,ASCII_Integer,4,Note Flag,15,207,ASCII_Integer,4 \ No newline at end of file diff --git a/test_files/extra_file_info_success_2.csv b/test_files/extra_file_info_success_2.csv index 5862f18..e53c69c 100644 --- a/test_files/extra_file_info_success_2.csv +++ b/test_files/extra_file_info_success_2.csv @@ -1,4 +1,4 @@ -filename,/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Modification_History[1]/pds:Modification_Detail/pds:version_id[1] -tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN -tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,1.0 -tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,NaN +filename,/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1] +tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0 +tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0 +tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0 diff --git a/test_files/simplify_xpaths_success_3.csv b/test_files/simplify_xpaths_success_3.csv new file mode 100644 index 0000000..6ddcae1 --- /dev/null +++ b/test_files/simplify_xpaths_success_3.csv @@ -0,0 +1,2 @@ +rings:occultation_type,rings:occultation_direction,rings:time_series_direction,rings:planetary_occultation_flag,rings:data_quality_score,rings:ring_plane,rings:star_name,rings:fresnel_scale,rings:projected_star_diameter,rings:sigma_projected_star_diameter,rings:fractional_error_star_counts,rings:time_constant_type,rings:time_constant,rings:sigma_time_constant,rings:minimum_wavelength,rings:maximum_wavelength,rings:reference_time_utc,rings:minimum_observed_event_time,rings:maximum_observed_event_time,rings:observed_event_start_tdb,rings:observed_event_stop_tdb,rings:earth_received_start_time_utc,rings:earth_received_stop_time_utc,rings:minimum_ring_radius,rings:maximum_ring_radius,rings:minimum_ring_longitude,rings:maximum_ring_longitude,rings:minimum_observed_ring_azimuth,rings:maximum_observed_ring_azimuth,rings:observed_ring_elevation,rings:light_source_incidence_angle +stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528 \ No newline at end of file diff --git a/test_files/simplify_xpaths_success_4.csv b/test_files/simplify_xpaths_success_4.csv new file mode 100644 index 0000000..8e8aa57 --- /dev/null +++ b/test_files/simplify_xpaths_success_4.csv @@ -0,0 +1,2 @@ +cassini:mission_phase_name,cassini:spacecraft_clock_count_partition,cassini:spacecraft_clock_start_count,cassini:spacecraft_clock_stop_count,cassini:limitations,cassini:antiblooming_state_flag,cassini:bias_strip_mean,cassini:command_file_name,cassini:command_sequence_number,cassini:dark_strip_mean,cassini:data_conversion_type,cassini:delayed_readout_flag,cassini:detector_temperature,cassini:electronics_bias,cassini:expected_maximum_full_well,cassini:expected_maximum_DN_sat,cassini:expected_packets,cassini:exposure_duration,cassini:filter_name_1,cassini:filter_name_2,cassini:filter_temperature,cassini:flight_software_version_id,cassini:gain_mode_id,cassini:ground_software_version_id,cassini:image_mid_time,cassini:image_number,cassini:image_time,cassini:image_observation_type,cassini:instrument_data_rate,cassini:inst_cmprs_type,cassini:inst_cmprs_param_malgo,cassini:inst_cmprs_param_tb,cassini:inst_cmprs_param_blocks,cassini:inst_cmprs_param_quant,cassini:inst_cmprs_rate_expected_bits,cassini:inst_cmprs_rate_actual_bits,cassini:inst_cmprs_ratio,cassini:light_flood_state_flag,cassini:method_description,cassini:missing_lines,cassini:missing_packet_flag,cassini:observation_id,cassini:optics_temperature_front,cassini:optics_temperature_back,cassini:order_number,cassini:parallel_clock_voltage_index,cassini:pds3_product_creation_time,cassini:pds3_product_version_type,cassini:pds3_target_desc,cassini:pds3_target_list,cassini:pds3_target_name,cassini:pre-pds_version_number,cassini:prepare_cycle_index,cassini:readout_cycle_index,cassini:received_packets,cassini:sensor_head_electronics_temperature,cassini:sequence_id,cassini:sequence_number,cassini:sequence_title,cassini:shutter_mode_id,cassini:shutter_state_id,cassini:start_time_doy,cassini:stop_time_doy,cassini:telemetry_format_id,cassini:valid_maximum_full_well,cassini:valid_maximum_DN_sat +EARTH-JUPITER CRUISE,1,1357539630.068,1357539630.123,N/A,ON,6.870842,ISS_C23ST_OCCULT001_UVIS_B.icf,730,0,TABLE,NO,-89.243546,112,-1,-1,-1,220,P0,GRN,-0.468354,1.2,29,ISS V7.0 11-22-2000,2001-007T06:08:48.013,1357539630,2001-007T06:08:48.013,SCIENCE,182.783997,LOSSLESS,999,999,999,999,-1,-1,3.150372,ON,Information not provided,0,NO,UVIS_C23ST_OCCULT001_PRIME_C,0.71269,-999,-999,9,2001-008T10:55:49.000,FINAL,Information not provided,N/A,DARK SKY,1,0,11,-1,1.633024,C23,-1,ISS_C23ST_OCCULT001_UVIS,NACONLY,ENABLED,2001-007T06:08:47.793,2001-007T06:08:48.013,Information not provided,-1,-1 \ No newline at end of file diff --git a/test_files/sort_by_success.csv b/test_files/sort_by_success.csv index 25b7fae..1ba7a56 100644 --- a/test_files/sort_by_success.csv +++ b/test_files/sort_by_success.csv @@ -1,4 +1,4 @@ -/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Modification_History[1]/pds:Modification_Detail/pds:version_id[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:start_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:stop_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:wavelength_range[1] -urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN -urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN,NaN -urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,NaN,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared +/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:start_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:stop_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:wavelength_range[1] +urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN +urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN +urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared diff --git a/test_files/sort_by_success_2.csv b/test_files/sort_by_success_2.csv index 25b7fae..1ba7a56 100644 --- a/test_files/sort_by_success_2.csv +++ b/test_files/sort_by_success_2.csv @@ -1,4 +1,4 @@ -/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Modification_History[1]/pds:Modification_Detail/pds:version_id[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:start_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:stop_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:wavelength_range[1] -urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN -urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN,NaN -urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,NaN,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared +/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:start_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:stop_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:wavelength_range[1] +urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN +urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN +urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared diff --git a/test_files/tester_label_3.xml b/test_files/tester_label_3.xml index e12700e..400b67c 100644 --- a/test_files/tester_label_3.xml +++ b/test_files/tester_label_3.xml @@ -23,13 +23,6 @@ Cassini ISS Image 1357539630n.img 1.11.0.0 Product_Observational - - - 2020-03-31 - 1.0 - Initial PDS4 Version. Migrated from the PDS3 data product. - - @@ -216,17 +209,6 @@ of this image. - - - CO-E/V/J-ISSNA/ISSWA-2-EDR-V1.0:COISS_1004:data/1357539422_1357559280:N1357539630_1.IMG - - data_to_raw_source_product - PDS RMS Node - - The original PDS3 version of this product. The form of the reference is - dataset_id:volume_id:directory_path:file_name. - - diff --git a/tests/test_pds4_create_xml_index.py b/tests/test_pds4_create_xml_index.py index bc65ba8..e89a528 100644 --- a/tests/test_pds4_create_xml_index.py +++ b/tests/test_pds4_create_xml_index.py @@ -1,4 +1,3 @@ -import pandas as pd from pathlib import Path import pytest import os @@ -171,7 +170,7 @@ def test_process_schema_location(): # str(test_files_dir), # 'tester_label_*.xml', # '--elements-file', - # str(root_dir / 'test_files/element_4.txt'), + # str(root_dir / 'samples/element_4.txt'), # '--output-file', # ] # ) @@ -232,6 +231,31 @@ def test_elements_file(golden_file, new_file, cmd_line): '--output-file', ] ) + # Test commented out until main code is fixed + # (str(test_files_dir / 'simplify_xpaths_success_3.csv'), + # 'simplify_xpaths_3.csv', + # [ + # str(test_files_dir), + # 'tester_label_2.xml', + # '--simplify-xpaths', + # '--elements-file', + # str(root_dir / 'samples/elements_xpath_simplify_2.txt'), + # '--output-file', + # ] + # ) + + # Test commented out until main code is fixed + # (str(test_files_dir / 'simplify_xpaths_success_4.csv'), + # 'simplify_xpaths_3.csv', + # [ + # str(test_files_dir), + # 'tester_label_3.xml', + # '--simplify-xpaths', + # '--elements-file', + # str(root_dir / 'samples/elements_xpath_simplify_3.txt'), + # '--output-file', + # ] + # ) ] ) From 3e42b26ad29020457d62fdc46dacc97941f91ef0 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Thu, 18 Apr 2024 10:33:52 -0700 Subject: [PATCH 20/46] Changed square brackets to angled brackets --- samples/element_2.txt | 2 +- samples/element_3.txt | 4 +- samples/element_4.txt | 4 +- samples/element_extra_file_info.txt | 4 +- samples/elements_clean_header_field_names.txt | 10 +- samples/elements_xpath_simplify.txt | 2 +- samples/elements_xpath_simplify_2.txt | 2 +- samples/elements_xpath_simplify_3.txt | 139 +++++++++--------- samples/sample_elements.txt | 6 +- .../clean_header_field_names_success_1.csv | 2 +- .../clean_header_field_names_success_2.csv | 2 +- test_files/elements_file_success.csv | 2 +- test_files/elements_file_success_2.csv | 2 +- test_files/elements_file_success_3.csv | 2 +- test_files/elements_file_success_4.csv | 2 +- test_files/elements_list_tester.txt | 6 - test_files/extra_file_info_success_1.csv | 2 +- test_files/extra_file_info_success_2.csv | 2 +- test_files/simplify_xpaths_success_1.csv | 2 +- test_files/simplify_xpaths_success_2.csv | 2 +- test_files/sort_by_success.csv | 2 +- test_files/sort_by_success_2.csv | 2 +- 22 files changed, 98 insertions(+), 105 deletions(-) delete mode 100644 test_files/elements_list_tester.txt diff --git a/samples/element_2.txt b/samples/element_2.txt index 0948229..e25a1ec 100644 --- a/samples/element_2.txt +++ b/samples/element_2.txt @@ -1 +1 @@ -**/geom:spice_kernel_file_name\[*\] \ No newline at end of file +**/geom:spice_kernel_file_name<*> \ No newline at end of file diff --git a/samples/element_3.txt b/samples/element_3.txt index 490d31a..c0e1657 100644 --- a/samples/element_3.txt +++ b/samples/element_3.txt @@ -1,2 +1,2 @@ -**/pds:Observing_System_Component\[*\]/pds:name\[*\] -**/pds:Target_Identification\[*\]/pds:name\[*\] \ No newline at end of file +**/pds:Observing_System_Component<*>/pds:name<*> +**/pds:Target_Identification<*>/pds:name<*> \ No newline at end of file diff --git a/samples/element_4.txt b/samples/element_4.txt index baa43fa..f7b8c49 100644 --- a/samples/element_4.txt +++ b/samples/element_4.txt @@ -1,2 +1,2 @@ -!**/pds:comment\[*\] -!**/pds:description\[*\] \ No newline at end of file +!**/pds:comment<*> +!**/pds:description<*> \ No newline at end of file diff --git a/samples/element_extra_file_info.txt b/samples/element_extra_file_info.txt index 65411e6..c9e4c2f 100644 --- a/samples/element_extra_file_info.txt +++ b/samples/element_extra_file_info.txt @@ -1,2 +1,2 @@ -logical_identifier -version_id \ No newline at end of file +**/pds:logical_identifier<*> +**/pds:version_id<*> \ No newline at end of file diff --git a/samples/elements_clean_header_field_names.txt b/samples/elements_clean_header_field_names.txt index 4df8900..866a2ca 100644 --- a/samples/elements_clean_header_field_names.txt +++ b/samples/elements_clean_header_field_names.txt @@ -1,5 +1,5 @@ -logical_identifier -version_id -start_date_time -stop_date_time -wavelength_range \ No newline at end of file +**/pds:logical_identifier<*> +**/pds:version_id<*> +**/pds:start_date_time<*> +**/pds:stop_date_time<*> +**/pds:wavelength_range<*> \ No newline at end of file diff --git a/samples/elements_xpath_simplify.txt b/samples/elements_xpath_simplify.txt index 934edc8..6d8bac9 100644 --- a/samples/elements_xpath_simplify.txt +++ b/samples/elements_xpath_simplify.txt @@ -1 +1 @@ -name \ No newline at end of file +**/pds:name<*> \ No newline at end of file diff --git a/samples/elements_xpath_simplify_2.txt b/samples/elements_xpath_simplify_2.txt index 6e4a710..6eed56f 100644 --- a/samples/elements_xpath_simplify_2.txt +++ b/samples/elements_xpath_simplify_2.txt @@ -1 +1 @@ -**/rings:Occultation_Time_Series/* \ No newline at end of file +**/rings:Occultation_Time_Series<*>/* \ No newline at end of file diff --git a/samples/elements_xpath_simplify_3.txt b/samples/elements_xpath_simplify_3.txt index 90a9b10..88e0027 100644 --- a/samples/elements_xpath_simplify_3.txt +++ b/samples/elements_xpath_simplify_3.txt @@ -1,70 +1,69 @@ -mission_phase_name -spacecraft_clock_count_partition -spacecraft_clock_start_count -spacecraft_clock_stop_count -limitations -antiblooming_state_flag -bias_strip_mean -calilbration_lamp_state_flag -command_file_name -command_sequence_number -dark_strip_mean -data_conversion_type -delayed_readout_flag -detector_temperature -electronics_bias -earth_recieved_start_time -earth_recieved_stop_time -expected_maximum_full_well -expected_maximum_DN_sat -expected_packets -exposure_duration -filter_name_1 -filter_name_2 -filter_temperature -flight_software_version_id -gain_mode_id -ground_software_version_id -image_mid_time -image_number -image_time -image_observation_type -instrument_data_rate -intrument_mode_id -inst_cmprs_type -inst_cmprs_param_malgo -inst_cmprs_param_tb -inst_cmprs_param_blocks -inst_cmprs_param_quant -inst_cmprs_rate_expected_bits -inst_cmprs_rate_actual_bits -inst_cmprs_ratio -light_flood_state_flag -method_description -missing_lines -missing_packet_flag -observation_id -optics_temperature_front -optics_temperature_back -order_number -parallel_clock_voltage_index -pds3_product_creation_time -pds3_product_version_type -pds3_target_desc -pds3_target_list -pds3_target_name -pre-pds_version_number -prepare_cycle_index -readout_cycle_index -received_packets -sensor_head_electronics_temperature -sequence_id -sequence_number -sequence_title -shutter_mode_id -shutter_state_id -start_time_doy -stop_time_doy -telemetry_format_id -valid_maximum_full_well -valid_maximum_DN_sat \ No newline at end of file +**/rings:mission_phase_name<*> +**/rings:spacecraft_clock_count_partition<*> +**/rings:spacecraft_clock_start_count<*> +**/rings:spacecraft_clock_stop_count<*> +**/rings:limitations<*> +**/rings:antiblooming_state_flag<*> +**/rings:calilbration_lamp_state_flag<*> +**/rings:command_file_name<*> +**/rings:command_sequence_number<*> +**/rings:dark_strip_mean<*> +**/rings:data_conversion_type<*> +**/rings:delayed_readout_flag<*> +**/rings:detector_temperature<*> +**/rings:electronics_bias<*> +**/rings:earth_recieved_start_time<*> +**/rings:earth_recieved_stop_time<*> +**/rings:expected_maximum_full_well<*> +**/rings:expected_maximum_DN_sat<*> +**/rings:expected_packets<*> +**/rings:exposure_duration<*> +**/rings:filter_name_1<*> +**/rings:filter_name_2<*> +**/rings:filter_temperature<*> +**/rings:flight_software_version_id<*> +**/rings:gain_mode_id<*> +**/rings:ground_software_version_id<*> +**/rings:image_mid_time<*> +**/rings:image_number<*> +**/rings:image_time<*> +**/rings:image_observation_type<*> +**/rings:instrument_data_rate<*> +**/rings:intrument_mode_id<*> +**/rings:inst_cmprs_type<*> +**/rings:inst_cmprs_param_malgo<*> +**/rings:inst_cmprs_param_tb<*> +**/rings:inst_cmprs_param_blocks<*> +**/rings:inst_cmprs_param_quant<*> +**/rings:inst_cmprs_rate_expected_bits<*> +**/rings:inst_cmprs_rate_actual_bits<*> +**/rings:inst_cmprs_ratio<*> +**/rings:light_flood_state_flag<*> +**/rings:method_description<*> +**/rings:missing_lines<*> +**/rings:missing_packet_flag<*> +**/rings:observation_id +**/rings:optics_temperature_front<*> +**/rings:optics_temperature_back<*> +**/rings:order_number<*> +**/rings:parallel_clock_voltage_index<*> +**/rings:pds3_product_creation_time<*> +**/rings:pds3_product_version_type<*> +**/rings:pds3_target_desc<*> +**/rings:pds3_target_list<*> +**/rings:pds3_target_name<*> +**/rings:pre-pds_version_number<*> +**/rings:prepare_cycle_index<*> +**/rings:readout_cycle_index<*> +**/rings:received_packets<*> +**/rings:sensor_head_electronics_temperature<*> +**/rings:sequence_id<*> +**/rings:sequence_number<*> +**/rings:sequence_title<*> +**/rings:shutter_mode_id<*> +**/rings:shutter_state_id<*> +**/rings:start_time_doy<*> +**/rings:stop_time_doy<*> +**/rings:telemetry_format_id<*> +**/rings:valid_maximum_full_well<*> +**/rings:valid_maximum_DN_sat<*> \ No newline at end of file diff --git a/samples/sample_elements.txt b/samples/sample_elements.txt index 4873589..ddef3eb 100644 --- a/samples/sample_elements.txt +++ b/samples/sample_elements.txt @@ -1,3 +1,3 @@ -/pds:Product_Observational/pds:Identification_Area\[1\]/pds:logical_identifier\[1\] -/pds:Product_Observational/pds:Identification_Area\[1\]/pds:version_id\[1\] -/pds:Product_Observational/pds:Identification_Area\[1\]/pds:title\[1\] \ No newline at end of file +/pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1> +/pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1> +/pds:Product_Observational/pds:Identification_Area<1>/pds:title<1> \ No newline at end of file diff --git a/test_files/clean_header_field_names_success_1.csv b/test_files/clean_header_field_names_success_1.csv index 42b3105..5d2a7c9 100644 --- a/test_files/clean_header_field_names_success_1.csv +++ b/test_files/clean_header_field_names_success_1.csv @@ -1,2 +1,2 @@ -__pds_Product_Observational__pds_Identification_Area[1]__pds_logical_identifier[1],__pds_Product_Observational__pds_Identification_Area[1]__pds_version_id[1],__pds_Product_Observational__pds_Identification_Area[1]__pds_title[1],__pds_Product_Observational__pds_Identification_Area[1]__pds_information_model_version[1],__pds_Product_Observational__pds_Observing_System[1]__pds_name[1],__pds_Product_Observational__pds_Observing_System[1]__pds_Observing_System_Component[1]__pds_name[1],__pds_Product_Observational__pds_Observing_System[1]__pds_Observing_System_Component[1]__pds_type[1],__pds_Product_Observational__pds_Observing_System[1]__pds_Observing_System_Component[1]__pds_Internal_Reference[1]__pds_lid_reference[1],__pds_Product_Observational__pds_Observing_System[1]__pds_Observing_System_Component[1]__pds_Internal_Reference[1]__pds_reference_type[1] +__pds_Product_Observational__pds_Identification_Area<1>__pds_logical_identifier<1>,__pds_Product_Observational__pds_Identification_Area<1>__pds_version_id<1>,__pds_Product_Observational__pds_Identification_Area<1>__pds_title<1>,__pds_Product_Observational__pds_Identification_Area<1>__pds_information_model_version<1>,__pds_Product_Observational__pds_Observing_System<1>__pds_name<1>,__pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_name<1>,__pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_type<1>,__pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_Internal_Reference<1>__pds_lid_reference<1>,__pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_Internal_Reference<1>__pds_reference_type<1> urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,1.11.0.0,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host diff --git a/test_files/clean_header_field_names_success_2.csv b/test_files/clean_header_field_names_success_2.csv index 32c1ddf..841a0d7 100644 --- a/test_files/clean_header_field_names_success_2.csv +++ b/test_files/clean_header_field_names_success_2.csv @@ -1,3 +1,3 @@ -__pds_Product_Observational__pds_Identification_Area[1]__pds_logical_identifier[1],__pds_Product_Observational__pds_Identification_Area[1]__pds_version_id[1],__pds_Product_Observational__pds_Observation_Area[1]__pds_Time_Coordinates[1]__pds_start_date_time[1],__pds_Product_Observational__pds_Observation_Area[1]__pds_Time_Coordinates[1]__pds_stop_date_time[1],__pds_Product_Observational__pds_Observation_Area[1]__pds_Primary_Result_Summary[1]__pds_Science_Facets[1]__pds_wavelength_range[1],__pds_Product_Observational__pds_Observation_Area[1]__pds_Primary_Result_Summary[1]__pds_Science_Facets[2]__pds_wavelength_range[1] +__pds_Product_Observational__pds_Identification_Area<1>__pds_logical_identifier<1>,__pds_Product_Observational__pds_Identification_Area<1>__pds_version_id<1>,__pds_Product_Observational__pds_Observation_Area<1>__pds_Time_Coordinates<1>__pds_start_date_time<1>,__pds_Product_Observational__pds_Observation_Area<1>__pds_Time_Coordinates<1>__pds_stop_date_time<1>,__pds_Product_Observational__pds_Observation_Area<1>__pds_Primary_Result_Summary<1>__pds_Science_Facets<1>__pds_wavelength_range<1>,__pds_Product_Observational__pds_Observation_Area<1>__pds_Primary_Result_Summary<1>__pds_Science_Facets<2>__pds_wavelength_range<1> urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared diff --git a/test_files/elements_file_success.csv b/test_files/elements_file_success.csv index db8e808..50e9fe7 100644 --- a/test_files/elements_file_success.csv +++ b/test_files/elements_file_success.csv @@ -1,2 +1,2 @@ -/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:title[1] +/pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:title<1> urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img diff --git a/test_files/elements_file_success_2.csv b/test_files/elements_file_success_2.csv index 2fdda85..3eb7503 100644 --- a/test_files/elements_file_success_2.csv +++ b/test_files/elements_file_success_2.csv @@ -1,2 +1,2 @@ -/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name +/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name ura111.bsp,vgr2.ura111.bsp,earthstns_itrf93_040916.bsp,earth_720101_031229.bpc,naif0012.tls \ No newline at end of file diff --git a/test_files/elements_file_success_3.csv b/test_files/elements_file_success_3.csv index 1002f27..5f38299 100644 --- a/test_files/elements_file_success_3.csv +++ b/test_files/elements_file_success_3.csv @@ -1,3 +1,3 @@ -/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:name[1] +/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1> Infra Red Telescope Facility-Maunakea,IRTF 3.2m,Generic InSb High Speed Photometer,Uranus,Uranus Rings Cassini Orbiter,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,NaN,Dark Sky,NaN \ No newline at end of file diff --git a/test_files/elements_file_success_4.csv b/test_files/elements_file_success_4.csv index e6bbdef..b156a9a 100644 --- a/test_files/elements_file_success_4.csv +++ b/test_files/elements_file_success_4.csv @@ -1,4 +1,4 @@ -/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:title[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:information_model_version[1],/pds:Product_Observational/pds:Observing_System[1]/pds:name[1],/pds:Product_Observational/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:name[1],/pds:Product_Observational/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:type[1],/pds:Product_Observational/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:product_class[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:start_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:stop_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:purpose[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:processing_level[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:discipline_name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:mission_phase_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:spacecraft_clock_count_partition,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:spacecraft_clock_start_count,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:spacecraft_clock_stop_count,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:limitations,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:antiblooming_state_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:bias_strip_mean,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:calibration_lamp_state_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:command_file_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:command_sequence_number,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:dark_strip_mean,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:data_conversion_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:delayed_readout_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:detector_temperature,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:electronics_bias,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:earth_received_start_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:earth_received_stop_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:expected_maximum_full_well,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/comment()[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:expected_maximum_DN_sat,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:expected_packets,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:exposure_duration,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:filter_name_1,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:filter_name_2,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:filter_temperature,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:flight_software_version_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:gain_mode_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:ground_software_version_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_mid_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_number,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_observation_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:instrument_data_rate,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:instrument_mode_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_malgo,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_tb,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_blocks,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_quant,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_rate_expected_bits,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_rate_actual_bits,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_ratio,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:light_flood_state_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:method_description,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:missing_lines,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:missing_packet_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:observation_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:optics_temperature_front,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:optics_temperature_back,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:order_number,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:parallel_clock_voltage_index,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_product_creation_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_product_version_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_target_desc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_target_list,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_target_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pre-pds_version_number,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:prepare_cycle_index,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:readout_cycle_index,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:received_packets,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sensor_head_electronics_temperature,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sequence_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sequence_number,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sequence_title,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:shutter_mode_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:shutter_state_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:start_time_doy,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:stop_time_doy,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:telemetry_format_id,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:valid_maximum_full_well,/pds:Product_Observational/pds:Observation_Area[1]/pds:Mission_Area[1]/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:valid_maximum_DN_sat,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/pds:Local_Internal_Reference[1]/pds:local_identifier_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/pds:Local_Internal_Reference[1]/pds:local_reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/disp:Display_Direction/disp:horizontal_display_axis,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/disp:Display_Direction/disp:horizontal_display_direction,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/disp:Display_Direction/disp:vertical_display_axis,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/disp:Display_Settings/disp:Display_Direction/disp:vertical_display_direction,/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[2]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[2]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[3]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[3]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[4]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[4]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[5]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[5]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[6]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[6]/pds:reference_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:file_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:creation_date_time[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:md5_checksum[1],/pds:Product_Observational/pds:File_Area_Observational[1]/comment()[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:object_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:parsing_standard_id[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:local_identifier[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:axes[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:axis_index_order[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:Element_Array[1]/pds:data_type,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:Axis_Array[1]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:Axis_Array[1]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array[1]/pds:Axis_Array[1]/pds:sequence_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:local_identifier[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:axes[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:axis_index_order[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Element_Array[1]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Element_Array[1]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[1]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[1]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[1]/pds:sequence_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[2]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[2]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D_Image[1]/pds:Axis_Array[2]/pds:sequence_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:axes[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:axis_index_order[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Element_Array[1]/pds:data_type,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[1]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[1]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[1]/pds:sequence_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[2]/pds:axis_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[2]/pds:elements[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Array_2D[1]/pds:Axis_Array[2]/pds:sequence_number[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:author_list[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:publication_year[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[2],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[3],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[4],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[5],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[6],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:facet1[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:discipline_name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:facet1[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:alternate_designation[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:alternate_designation[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:kernel_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_direction,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_series_direction,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:planetary_occultation_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:data_quality_score,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:ring_plane,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:star_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fresnel_scale,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:projected_star_diameter,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_projected_star_diameter,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fractional_error_star_counts,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_time_constant,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_wavelength,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_wavelength,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:reference_time_utc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_event_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_event_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_start_tdb,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_stop_tdb,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_start_time_utc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_stop_time_utc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_radius,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_radius,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_longitude,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_longitude,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_ring_elevation,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:light_source_incidence_angle,/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[7]/pds:lidvid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[7]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[8]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[8]/pds:reference_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:local_identifier[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:records[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:record_delimiter[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:fields[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:groups[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:record_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:field_length[1] +/pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:title<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:information_model_version<1>,/pds:Product_Observational/pds:Observing_System<1>/pds:name<1>,/pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,/pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:type<1>,/pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:product_class<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:purpose<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:processing_level<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:discipline_name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:mission_phase_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:spacecraft_clock_count_partition,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:spacecraft_clock_start_count,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:spacecraft_clock_stop_count,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:limitations,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:antiblooming_state_flag,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:bias_strip_mean,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:calibration_lamp_state_flag,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:command_file_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:command_sequence_number,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:dark_strip_mean,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:data_conversion_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:delayed_readout_flag,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:detector_temperature,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:electronics_bias,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:earth_received_start_time,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:earth_received_stop_time,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:expected_maximum_full_well,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/comment()<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:expected_maximum_DN_sat,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:expected_packets,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:exposure_duration,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:filter_name_1,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:filter_name_2,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:filter_temperature,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:flight_software_version_id,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:gain_mode_id,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:ground_software_version_id,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_mid_time,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_number,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_time,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_observation_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:instrument_data_rate,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:instrument_mode_id,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_malgo,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_tb,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_blocks,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_quant,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_rate_expected_bits,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_rate_actual_bits,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_ratio,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:light_flood_state_flag,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:method_description,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:missing_lines,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:missing_packet_flag,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:observation_id,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:optics_temperature_front,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:optics_temperature_back,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:order_number,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:parallel_clock_voltage_index,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_product_creation_time,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_product_version_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_target_desc,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_target_list,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_target_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pre-pds_version_number,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:prepare_cycle_index,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:readout_cycle_index,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:received_packets,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sensor_head_electronics_temperature,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sequence_id,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sequence_number,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sequence_title,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:shutter_mode_id,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:shutter_state_id,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:start_time_doy,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:stop_time_doy,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:telemetry_format_id,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:valid_maximum_full_well,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:valid_maximum_DN_sat,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings/pds:Local_Internal_Reference<1>/pds:local_identifier_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings/pds:Local_Internal_Reference<1>/pds:local_reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings/disp:Display_Direction/disp:horizontal_display_axis,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings/disp:Display_Direction/disp:horizontal_display_direction,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings/disp:Display_Direction/disp:vertical_display_axis,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings/disp:Display_Direction/disp:vertical_display_direction,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:reference_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:file_name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:creation_date_time<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:md5_checksum<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/comment()<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:offset<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:object_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:parsing_standard_id<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:local_identifier<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:offset<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:axes<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:axis_index_order<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:Element_Array<1>/pds:data_type,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:Axis_Array<1>/pds:axis_name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:Axis_Array<1>/pds:elements<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:Axis_Array<1>/pds:sequence_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:local_identifier<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:offset<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:axes<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:axis_index_order<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Element_Array<1>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Element_Array<1>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<1>/pds:axis_name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<1>/pds:elements<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<1>/pds:sequence_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<2>/pds:axis_name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<2>/pds:elements<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<2>/pds:sequence_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:offset<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:axes<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:axis_index_order<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Element_Array<1>/pds:data_type,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<1>/pds:axis_name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<1>/pds:elements<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<1>/pds:sequence_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<2>/pds:axis_name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<2>/pds:elements<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<2>/pds:sequence_number<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:author_list<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:publication_year<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<2>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<3>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<4>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<5>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<6>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:facet1<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:discipline_name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:facet1<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:alternate_designation<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:alternate_designation<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:kernel_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_direction,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_series_direction,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:planetary_occultation_flag,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:data_quality_score,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:ring_plane,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:star_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fresnel_scale,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:projected_star_diameter,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_projected_star_diameter,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fractional_error_star_counts,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_time_constant,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_wavelength,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_wavelength,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:reference_time_utc,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_event_time,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_event_time,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_start_tdb,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_stop_tdb,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_start_time_utc,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_stop_time_utc,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_radius,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_radius,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_longitude,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_longitude,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_ring_elevation,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:light_source_incidence_angle,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:lidvid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:reference_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:local_identifier<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:offset<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:records<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:record_delimiter<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:fields<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:groups<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:record_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Special_Constants<1>/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Field_Statistics<1>/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Special_Constants<1>/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Field_Statistics<1>/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Special_Constants<1>/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Field_Statistics<1>/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Special_Constants<1>/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Field_Statistics<1>/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_length<1> urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,1.11.0.0,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,Cassini ISS Image 1357539630n.img,1.11.0.0,NaN,NaN,NaN,NaN,NaN,Product_Observational,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Science,Raw,Near Infrared,Ring-Moon Systems,Cassini-Huygens,Mission,urn:nasa:pds:context:investigation:mission.cassini-huygens,data_to_investigation,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,Instrument,urn:nasa:pds:context:instrument:issna.co,is_instrument,Dark Sky,Calibration Field,urn:nasa:pds:context:target:calibration_field.dark_sky,data_to_target,EARTH-JUPITER CRUISE,1,1357539630.068,1357539630.123,N/A,ON,6.870842,N/A,ISS_C23ST_OCCULT001_UVIS_B.icf,730,0,TABLE,NO,-89.243546,112,2001-007T19:58:04.616,2001-007T19:58:32.295,-1,Unknown,-1,-1,220,P0,GRN,-0.468354,1.2,29,ISS V7.0 11-22-2000,2001-007T06:08:48.013,1357539630,2001-007T06:08:48.013,SCIENCE,182.783997,FULL,LOSSLESS,999,999,999,999,-1,-1,3.150372,ON,Information not provided,0,NO,UVIS_C23ST_OCCULT001_PRIME_C,0.71269,-999,-999,9,2001-008T10:55:49.000,FINAL,Information not provided,N/A,DARK SKY,1,0,11,-1,1.633024,C23,-1,ISS_C23ST_OCCULT001_UVIS,NACONLY,ENABLED,2001-007T06:08:47.793,2001-007T06:08:48.013,Information not provided,-1,-1,image,display_settings_to_array,Sample,Left to Right,Line,Top to Bottom,urn:nasa:pds:cassini_iss_cruise:data_raw:index,data_to_resource,urn:nasa:pds:cassini_iss_cruise:data_raw:body-geometry,data_to_resource,urn:nasa:pds:cassini_iss_cruise:body-inventory,data_to_resource,urn:nasa:pds:cassini_iss_cruise:ring-geometry,data_to_resource,urn:nasa:pds:cassini_iss_saturn:document:iss-data-user-guide,data_to_document,urn:nasa:pds:cassini_iss_cruise:browse_raw:1357539630n-full,data_to_browse,1357539630n.img,2019-06-12T22:05:54Z,a468693f67593587d224116c5ade995a,Line prefix bytes,0,4096,VICAR2,telemetry-table,4096,1,Last Index Fastest,UnsignedByte,telemetry,2,1,image,6144,2,Last Index Fastest,UnsignedByte,DN,Line,1024,1,Sample,1024,2,1054720,2,Last Index Fastest,UnsignedByte,Line,1024,1,prefix-sample,24,2,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope,1.14.0.0,NaN,NaN,NaN,NaN,NaN,Product_Observational,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Science,Calibrated,Infrared,Atmospheres,Earth-based Observations of Uranus System Stellar Occultations,Observing Campaign,urn:nasa:pds:context:investigation:observing_campaign.earth-based-uranus-stellar-occultations,data_to_investigation,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,Host,urn:nasa:pds:context:facility:observatory.irtf-maunakea,is_facility,IRTF 3.2m,Telescope,urn:nasa:pds:context:telescope:irtf-maunakea.3m2,is_telescope,Uranus,Planet,urn:nasa:pds:context:target:planet.uranus,data_to_target,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,urn:nasa:pds:uranus_occ_support:document:earth-based-uranus-stellar-occultations-user-guide,data_to_document,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_obs_geom,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_earth,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_alt,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_occult,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_normalization,data_to_browse,u149_irtf_320cm_2200nm_counts-v-time_occult.tab,2021-04-05T23:18:20Z,NaN,NaN,0,264,UTF-8 Text,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,"French, Richard G.; McGhee-French, Colleen A.; Gordon, Mitchell K.",2020,uranus atmosphere,uranus atmosphere stellar occultation,uranus atmosphere stellar occultation time series,uranus rings,uranus rings stellar occultation,uranus rings stellar occultation radial profile,Structure,Infrared,Ring-Moon Systems,Ring Occultation Profile,Generic InSb High Speed Photometer,Instrument,urn:nasa:pds:context:instrument:multi-host.generic_insp_hsp,is_instrument,NAIF ID 799,Uranus Rings,Uranian Ring System,Ring,urn:nasa:pds:context:target:ring.uranus.rings,data_to_target,LSK,naif0012.tls,stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528,urn:nasa:pds:uranus_occ_support:data:uranus_occultation_ring_fit_rfrench_20201201::1.0,data_to_resource,urn:nasa:pds:uranus_occ_support,data_to_resource,data,264,10551,Carriage-Return Line-Feed,15,0,212,Observed Event Time,1,1,ASCII_Real,16,second,Observed Event TDB,2,19,ASCII_Real,16,second,Mean Signal,3,37,ASCII_Real,16,999999999.999999,999999999.999999,Normalized Signal,4,55,ASCII_Real,10,999.999999,999.999999,Sky-plane F,5,67,ASCII_Real,13,Kilometer,Sky-plane G,6,82,ASCII_Real,13,Kilometer,Sky-plane Radius,7,97,ASCII_Real,13,Kilometer,Ring Radius,8,112,ASCII_Real,12,Kilometer,Ring Longitude,9,126,ASCII_Real,8,Degree,Observed Ring Azimuth,10,136,ASCII_Real,9,Degree,Ring Event TDB,11,147,ASCII_Real,16,second,Unocculted Star Model,12,165,ASCII_Real,16,999999999.999999,999999999.999999,Background Model,13,183,ASCII_Real,16,999999999.999999,999999999.999999,Number Of Samples Per Bin,14,201,ASCII_Integer,4,Note Flag,15,207,ASCII_Integer,4 \ No newline at end of file diff --git a/test_files/elements_list_tester.txt b/test_files/elements_list_tester.txt deleted file mode 100644 index e1e0fee..0000000 --- a/test_files/elements_list_tester.txt +++ /dev/null @@ -1,6 +0,0 @@ -logical_identifier -version_id -start_date_time -stop_date_time -wavelength_range -lid_reference \ No newline at end of file diff --git a/test_files/extra_file_info_success_1.csv b/test_files/extra_file_info_success_1.csv index 6cf5575..2bb3db0 100644 --- a/test_files/extra_file_info_success_1.csv +++ b/test_files/extra_file_info_success_1.csv @@ -1,2 +1,2 @@ -filename,filepath,/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:title[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:information_model_version[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:product_class[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:author_list[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:publication_year[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[2],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[3],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[4],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[5],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:keyword[6],/pds:Product_Observational/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:description[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:start_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:stop_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:purpose[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:processing_level[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:description[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:discipline_name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:facet1[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:discipline_name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:facet1[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Investigation_Area[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:alternate_designation[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:alternate_designation[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:kernel_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/geom:Geometry/geom:SPICE_Kernel_Files/geom:comment,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_direction,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_series_direction,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:planetary_occultation_flag,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:data_quality_score,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:ring_plane,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:star_name,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fresnel_scale,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:projected_star_diameter,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_projected_star_diameter,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fractional_error_star_counts,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant_type,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_time_constant,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_wavelength,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_wavelength,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:reference_time_utc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_event_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_event_time,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_start_tdb,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_stop_tdb,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_start_time_utc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_stop_time_utc,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_radius,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_radius,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_longitude,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_longitude,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_ring_elevation,/pds:Product_Observational/pds:Observation_Area[1]/pds:Discipline_Area[1]/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:light_source_incidence_angle,/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[1]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[1]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[1]/pds:comment[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[2]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[2]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[2]/pds:comment[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[3]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[3]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[3]/pds:comment[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[4]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[4]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[4]/pds:comment[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[5]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[5]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[5]/pds:comment[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[6]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[6]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[6]/pds:comment[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[7]/pds:lidvid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[7]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[7]/pds:comment[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[8]/pds:lid_reference[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[8]/pds:reference_type[1],/pds:Product_Observational/pds:Reference_List[1]/pds:Internal_Reference[8]/pds:comment[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:file_name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:local_identifier[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:File[1]/pds:creation_date_time[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:object_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:parsing_standard_id[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Header[1]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:offset[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:records[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:record_delimiter[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:fields[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:groups[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:record_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:unit[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:Special_Constants[1]/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:Field_Statistics[1]/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:description[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:field_number[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:field_location[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:data_type[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:field_length[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:description[1] +filename,filepath,/pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:title<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:information_model_version<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:product_class<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:author_list<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:publication_year<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<2>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<3>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<4>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<5>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<6>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:description<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:purpose<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:processing_level<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:description<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:discipline_name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:facet1<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:discipline_name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:facet1<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:alternate_designation<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:alternate_designation<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:kernel_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:comment,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_direction,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_series_direction,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:planetary_occultation_flag,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:data_quality_score,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:ring_plane,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:star_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fresnel_scale,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:projected_star_diameter,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_projected_star_diameter,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fractional_error_star_counts,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_time_constant,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_wavelength,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_wavelength,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:reference_time_utc,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_event_time,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_event_time,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_start_tdb,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_stop_tdb,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_start_time_utc,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_stop_time_utc,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_radius,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_radius,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_longitude,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_longitude,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_ring_elevation,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:light_source_incidence_angle,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:comment<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:comment<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:comment<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:comment<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:comment<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:comment<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:lidvid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:comment<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:comment<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:file_name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:local_identifier<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:creation_date_time<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:offset<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:object_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:parsing_standard_id<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:offset<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:records<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:record_delimiter<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:fields<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:groups<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:record_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Special_Constants<1>/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Field_Statistics<1>/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Special_Constants<1>/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Field_Statistics<1>/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Special_Constants<1>/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Field_Statistics<1>/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Special_Constants<1>/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Field_Statistics<1>/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:description<1> tester_label_2.xml,tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope,1.14.0.0,Product_Observational,"French, Richard G.; McGhee-French, Colleen A.; Gordon, Mitchell K.",2020,uranus atmosphere,uranus atmosphere stellar occultation,uranus atmosphere stellar occultation time series,uranus rings,uranus rings stellar occultation,uranus rings stellar occultation radial profile,Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope.,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Science,Calibrated,Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope.,Infrared,Atmospheres,Structure,Infrared,Ring-Moon Systems,Ring Occultation Profile,Earth-based Observations of Uranus System Stellar Occultations,Observing Campaign,urn:nasa:pds:context:investigation:observing_campaign.earth-based-uranus-stellar-occultations,data_to_investigation,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,Host,urn:nasa:pds:context:facility:observatory.irtf-maunakea,is_facility,IRTF 3.2m,Telescope,urn:nasa:pds:context:telescope:irtf-maunakea.3m2,is_telescope,Generic InSb High Speed Photometer,Instrument,urn:nasa:pds:context:instrument:multi-host.generic_insp_hsp,is_instrument,Uranus,NAIF ID 799,Planet,urn:nasa:pds:context:target:planet.uranus,data_to_target,Uranus Rings,Uranian Ring System,Ring,urn:nasa:pds:context:target:ring.uranus.rings,data_to_target,LSK,naif0012.tls,These kernel files were used in the generation of the products in the parent bundle. Some or all of them may not have been used directly in the generation of this product.,stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528,urn:nasa:pds:uranus_occ_support:document:earth-based-uranus-stellar-occultations-user-guide,data_to_document,The User Guide for Earth-based Uranus Stellar Occultations.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_obs_geom,data_to_browse,Diagram of the Uranus system showing the occultation track.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_earth,data_to_browse,Diagram of the view of the Earth from Uranus at mid-occultation Time.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_alt,data_to_browse,Plot of the altitude (in degrees) of Uranus and the sun relative to the horizon over the duration of the occulation.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_occult,data_to_browse,Low resolution plot of counts vs. time for the entire occultation.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_normalization,data_to_browse,Illustrates some of the processing steps involved in normalizing a time-series occultation light curve from counts per second to units of stellar flux.,urn:nasa:pds:uranus_occ_support:data:uranus_occultation_ring_fit_rfrench_20201201::1.0,data_to_resource,The fitted model of the ring system upon which the data are based.,urn:nasa:pds:uranus_occ_support,data_to_resource,The support bundle for all of the Earth-based Uranus system occultations.,u149_irtf_320cm_2200nm_counts-v-time_occult.tab,data,2021-04-05T23:18:20Z,0,264,UTF-8 Text,"Provides the column headers, separated by commas, for the data table.",264,10551,"This is a calibrated time series of an occultation by the Uranus system generated from an earth-based stellar occultation. The data are uniformly spaced in time, and normalized in units of stellar intensity. The data may include occultations by both the rings and the planet, or just the planet. The occultation by the rings, if present, is based on the equatorial ring plane radius sampled at each time point, computed from an orbit model for the ring system.",Carriage-Return Line-Feed,15,0,212,Observed Event Time,1,1,ASCII_Real,16,second,"The instant at which photons were received at the observer location. It is represented in the Universal Coordinated Time system, as a number of elapsed seconds since the time given by the reference_time_utc attribute specified in this file. It refers to the middle of the bin.",Observed Event TDB,2,19,ASCII_Real,16,second,"The instant at which photons were received at the observer location. It is represented in the 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch.",Mean Signal,3,37,ASCII_Real,16,Mean counts received by the instrument during this time bin. The background signal has not been subtracted. Refer to NOTE FLAG for guidance on validity of data.,999999999.999999,999999999.999999,Normalized Signal,4,55,ASCII_Real,10,"Normalized signal during this time bin, in units of the unocculted stellar signal, such that 1.0 corresponds to the full unocculted star signal and 0.0 corresponds to no counts from the star (a completely opaque ring). NORMALIZED SIGNAL = (MEAN_SIGNAL - BACKGROUND_MODEL)/(UNOCCULTED STAR MODEL) This is an approximate normalization, computed using regional polynomial fits. For high-precision photometry of ring events, use locally computed normalization.",999.999999,999.999999,Sky-plane F,5,67,ASCII_Real,13,Kilometer,"The east/west component of r sky (positive in the east direction), in km.",Sky-plane G,6,82,ASCII_Real,13,Kilometer,"The north/south component of r sky (positive in the north direction), in km.",Sky-plane Radius,7,97,ASCII_Real,13,Kilometer,"The length of the radius vector in the plane of the sky measured from the center of the occulting object to the position of the occulted star or spacecraft, in km.",Ring Radius,8,112,ASCII_Real,12,Kilometer,"Radial distance of the occultation intercept point (middle of the bin) from the center of the planet, in km. Distances are measured along the equator plane.",Ring Longitude,9,126,ASCII_Real,8,Degree,Inertial longitude on the ring plane corresponding to the midpoint of the bin.,Observed Ring Azimuth,10,136,ASCII_Real,9,Degree,"Angle measured at a point in the ring plane, starting from the direction of a photon heading to the observer, and ending at the direction of a local radial vector. This angle is projected into the ring plane and measured in the prograde direction.",Ring Event TDB,11,147,ASCII_Real,16,second,"The time at which photons left the ring plane. This time is earlier than the associated OBSERVED EVENT TDB by an amount equal to the light travel time. It is represented in the 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch.",Unocculted Star Model,12,165,ASCII_Real,16,Model of the unocculted star signal as a function of ring plane radius. This is necessary because of variations in atmospheric transparency and other time-dependent effects.,999999999.999999,999999999.999999,Background Model,13,183,ASCII_Real,16,Model of the non-stellar background signal (which may vary over the course of the occultation) due to instrumental offsets applied during the recording and/or sky brightness and contributions from reflected sunlight from the rings and planet.,999999999.999999,999999999.999999,Number Of Samples Per Bin,14,201,ASCII_Integer,4,The number of raw data points per bin.,Note Flag,15,207,ASCII_Integer,4,"A numerical flag that associates specific comments with individual data bins. When more than one comment applies, the values are summed. The values and their associated comments are: 0: radius and longitude are based on Uranus equatorial plane. 1: radius and longitude are based inclined ring plane model referred to in metadata associated with file. 2: observed ring occultation event 4: telescope pointed to nearby sky for background level check 8: input signal from time source, not from photometer on telescope 16: line of sight intersects planet 32: dawn/dusk - rapid background level change; no background or star intensity estimate. 64: unreliable data (e.g., clouds, telescope guiding error, or instrument adjustment); no background or star intensity estimate." diff --git a/test_files/extra_file_info_success_2.csv b/test_files/extra_file_info_success_2.csv index e53c69c..0f6163f 100644 --- a/test_files/extra_file_info_success_2.csv +++ b/test_files/extra_file_info_success_2.csv @@ -1,4 +1,4 @@ -filename,/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1] +filename,/pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1> tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0 tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0 tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0 diff --git a/test_files/simplify_xpaths_success_1.csv b/test_files/simplify_xpaths_success_1.csv index f0ad48c..dbcb476 100644 --- a/test_files/simplify_xpaths_success_1.csv +++ b/test_files/simplify_xpaths_success_1.csv @@ -1,2 +1,2 @@ -pds:logical_identifier,pds:version_id,pds:title,pds:information_model_version,pds:name,/pds:Product_Observational/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:name[1],pds:type,pds:lid_reference,pds:reference_type +pds:logical_identifier,pds:version_id,pds:title,pds:information_model_version,pds:name,/pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:type,pds:lid_reference,pds:reference_type urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,1.11.0.0,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host diff --git a/test_files/simplify_xpaths_success_2.csv b/test_files/simplify_xpaths_success_2.csv index 90a3331..81897b4 100644 --- a/test_files/simplify_xpaths_success_2.csv +++ b/test_files/simplify_xpaths_success_2.csv @@ -1,4 +1,4 @@ -pds:name,/pds:Product_Observational/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[2]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[1]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:Observing_System_Component[3]/pds:name[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Target_Identification[2]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[1]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[2]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[3]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[4]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[5]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[6]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[7]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[8]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[9]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[10]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[11]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[12]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[13]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[14]/pds:name[1],/pds:Product_Observational/pds:File_Area_Observational[1]/pds:Table_Character[1]/pds:Record_Character[1]/pds:Field_Character[15]/pds:name[1] +pds:name,/pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:name<1> Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN Cassini-Huygens,NaN,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,Dark Sky,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN Earth-based Observations of Uranus System Stellar Occultations,NaN,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,IRTF 3.2m,Uranus,Generic InSb High Speed Photometer,Uranus Rings,Observed Event Time,Observed Event TDB,Mean Signal,Normalized Signal,Sky-plane F,Sky-plane G,Sky-plane Radius,Ring Radius,Ring Longitude,Observed Ring Azimuth,Ring Event TDB,Unocculted Star Model,Background Model,Number Of Samples Per Bin,Note Flag diff --git a/test_files/sort_by_success.csv b/test_files/sort_by_success.csv index 1ba7a56..d10ac4d 100644 --- a/test_files/sort_by_success.csv +++ b/test_files/sort_by_success.csv @@ -1,4 +1,4 @@ -/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:start_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:stop_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:wavelength_range[1] +/pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1> urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared diff --git a/test_files/sort_by_success_2.csv b/test_files/sort_by_success_2.csv index 1ba7a56..d10ac4d 100644 --- a/test_files/sort_by_success_2.csv +++ b/test_files/sort_by_success_2.csv @@ -1,4 +1,4 @@ -/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1],/pds:Product_Observational/pds:Identification_Area[1]/pds:version_id[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:start_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:stop_date_time[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[1]/pds:wavelength_range[1],/pds:Product_Observational/pds:Observation_Area[1]/pds:Primary_Result_Summary[1]/pds:Science_Facets[2]/pds:wavelength_range[1] +/pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1> urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared From 1f27dd41188692f57f8f748d80801405e5afb3b4 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 23 Apr 2024 08:08:07 -0700 Subject: [PATCH 21/46] Fixed code functionality for unit tests --- pds4indextools/pds4_create_xml_index.py | 112 ++++++++++--- samples/element_2.txt | 2 +- samples/element_4.txt | 4 +- samples/element_extra_file_info.txt | 4 +- samples/elements_clean_header_field_names.txt | 10 +- samples/elements_xpath_simplify.txt | 2 +- samples/elements_xpath_simplify_2.txt | 2 +- samples/elements_xpath_simplify_3.txt | 138 ++++++++-------- samples/sample_elements.txt | 6 +- test_files/.DS_Store | Bin 8196 -> 8196 bytes .../clean_header_field_names_success_1.csv | 2 +- .../clean_header_field_names_success_2.csv | 2 +- test_files/elements_file_success.csv | 2 +- test_files/elements_file_success_2.csv | 4 +- test_files/elements_file_success_3.csv | 6 +- test_files/elements_file_success_4.csv | 8 +- test_files/extra_file_info_success_1.csv | 4 +- test_files/extra_file_info_success_2.csv | 2 +- test_files/simplify_xpaths_success_1.csv | 2 +- test_files/simplify_xpaths_success_2.csv | 2 +- test_files/simplify_xpaths_success_3.csv | 4 +- test_files/simplify_xpaths_success_4.csv | 4 +- test_files/sort_by_success.csv | 2 +- test_files/sort_by_success_2.csv | 2 +- test_files/tester_label_3.xml | 32 ++-- tests/test_pds4_create_xml_index.py | 147 +++++++++--------- 26 files changed, 284 insertions(+), 221 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index aafb161..fe55072 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -48,6 +48,7 @@ import argparse from collections import namedtuple import configparser +import fnmatch import functools from itertools import groupby from lxml import etree @@ -113,24 +114,39 @@ def default_value_for_nil(config, data_type, nil_value): return default -def split_into_elements(xpath): - """Extract elements from an XPath in the order they appear. +def filter_dict_by_glob_patterns(input_dict, glob_patterns): + """Filter a dictionary based on a list of glob patterns matching for keys. Inputs: - xpath The XPath of a scraped element - + input_dict: The dictionary to filter. + glob_patterns: A list of glob patterns to match against dictionary keys. + Returns: - The tuple of elements the XPath is composed of. + Filtered dictionary with desired contents """ - elements = () - parts = xpath.split('/') + filtered_dict = {} + + if glob_patterns is not None: + if not all(pat.startswith('!') for pat in glob_patterns): + print('ye') + for key, value in input_dict.items(): + if any(fnmatch.fnmatch(key, pat) + for pat in glob_patterns) and 'cyfunction' not in key: + filtered_dict[key] = value + else: + filtered_dict = dict(input_dict) + glob_patterns = [pat.replace('!', '') + for pat in glob_patterns] + for key in list(filtered_dict.keys()): + if any(fnmatch.fnmatch(key, pat) + for pat in glob_patterns) or 'cyfunction' in key: + del filtered_dict[key] + else: + for key, value in input_dict.items(): + if 'cyfunction' not in key: + filtered_dict[key] = value - for part in parts: - if '[' in part: - part = part.split('[') - elements += (part[0],) - - return elements + return filtered_dict def load_config_file(specified_config_file): @@ -199,6 +215,8 @@ def process_headers(label_results, key, root, namespaces, prefixes): Processes XPath headers by converting parts of the XPath into element tags, replacing namespaces with prefixes, and updating the label_results dictionary. + If a duplicate XPath is encountered, it appends an underscore and a number + to make the XPath unique. Inputs: label_results A dictionary containing XML data to be processed. @@ -212,9 +230,19 @@ def process_headers(label_results, key, root, namespaces, prefixes): if namespace in key_new: key_new = key_new.replace( '{'+namespace+'}', prefixes[namespace]+':') + if key_new in label_results: + # If the XPath already exists, append an underscore and a number + i = 1 + while True: + new_key = f"{key_new}_{i}" + if new_key not in label_results: + key_new = new_key + break + i += 1 label_results[key_new] = label_results.pop(key) + def renumber_xpaths(xpaths): """Renumber a list of XPaths to be sequential at each level. @@ -290,7 +318,7 @@ def split_xpath_prefix_and_num(s): """ parent, child, *_ = s.split('/', 1) + [None] try: - idx = parent.index('[') + idx = parent.index('<') except ValueError: return SplitXPath(s, parent, child, parent, None) return SplitXPath(s, parent, child, parent[:idx], int(parent[idx+1:-1])) @@ -314,7 +342,7 @@ def split_xpath_prefix_and_num(s): # suffix when there is no number. unique_nums = sorted(list(set(x.num for x in prefix_group_list if x.num is not None))) - renumber_map = {x: f'[{i+1}]' for i, x in enumerate(unique_nums)} + renumber_map = {x: f'<{i+1}>' for i, x in enumerate(unique_nums)} renumber_map[None] = '' # We further group these by unique parent (including the number) @@ -348,6 +376,26 @@ def split_xpath_prefix_and_num(s): return xpath_map +def split_into_elements(xpath): + """Extract elements from an XPath in the order they appear. + + Inputs: + xpath The XPath of a scraped element + + Returns: + The tuple of elements the XPath is composed of. + """ + elements = () + parts = xpath.split('/') + + for part in parts: + if '<' in part: + part = part.split('<') + elements += (part[0],) + + return elements + + def store_element_text(element, tree, results_dict, nillable_elements_info, config, label): """Store text content of an XML element in a results dictionary. @@ -385,7 +433,7 @@ def store_element_text(element, tree, results_dict, nillable_elements_info, conf print(f'Non-nillable element in {label} has no associated text: {tag}') -def traverse_and_store(element, tree, results_dict, elements_to_scrape, +def traverse_and_store(element, tree, results_dict, nillable_elements_info, config, label): """Traverse an XML tree and store text content of specified elements in a dictionary. @@ -393,19 +441,14 @@ def traverse_and_store(element, tree, results_dict, elements_to_scrape, element The current XML element. tree The XML tree. results_dict Dictionary to store results. - prefixes Dictionary of XML namespace prefixes. - elements_to_scrape Optional list of elements to scrape. nillable_elements_info A dictionary containing nillable element information. config The configuration data. label The name of the label file. """ - tag = str(element.tag) - if elements_to_scrape is None or any(tag.endswith("}" + elem) - for elem in elements_to_scrape): - store_element_text(element, tree, results_dict, + store_element_text(element, tree, results_dict, nillable_elements_info, config, label) for child in element: - traverse_and_store(child, tree, results_dict, elements_to_scrape, + traverse_and_store(child, tree, results_dict, nillable_elements_info, config, label) @@ -584,12 +627,32 @@ def main(cmd_line=None): prefixes = {v: k for k, v in namespaces.items()} label_results = {} - traverse_and_store(root, tree, label_results, elements_to_scrape, + traverse_and_store(root, tree, label_results, nillable_elements_info, config, file) for key in list(label_results.keys()): process_headers(label_results, key, root, namespaces, prefixes) + for key in list(label_results.keys()): + key_new = key.replace('[', '<') + key_new = key_new.replace(']', '>') + label_results[key_new] = label_results.pop(key) + + label_results = filter_dict_by_glob_patterns(label_results, elements_to_scrape) + + for key in list(label_results.keys()): + parts = key.split('/') + new_parts = [] + for part in parts: + if not part.endswith('>') and parts.index(part) != 1: + part = part+'<1>' + new_parts.append(part) + else: + new_parts.append(part) + key_new = '/'.join(new_parts[1:]) + label_results[key_new] = label_results.pop(key) + + xpath_map = renumber_xpaths(label_results.keys()) for old_xpath, new_xpath in xpath_map.items(): label_results[new_xpath] = label_results.pop(old_xpath) @@ -599,6 +662,7 @@ def main(cmd_line=None): xpath_elements = [] tags = [] for key in label_results.keys(): + stuff = split_into_elements(key) xpath_elements.append(split_into_elements(key)) duplicates = [t for t in set(xpath_elements) if xpath_elements.count(t) > 1] diff --git a/samples/element_2.txt b/samples/element_2.txt index e25a1ec..fa2e6be 100644 --- a/samples/element_2.txt +++ b/samples/element_2.txt @@ -1 +1 @@ -**/geom:spice_kernel_file_name<*> \ No newline at end of file +**/geom:spice_kernel_file_name* \ No newline at end of file diff --git a/samples/element_4.txt b/samples/element_4.txt index f7b8c49..03312c0 100644 --- a/samples/element_4.txt +++ b/samples/element_4.txt @@ -1,2 +1,2 @@ -!**/pds:comment<*> -!**/pds:description<*> \ No newline at end of file +!**/pds:description* +!**/pds:comment* \ No newline at end of file diff --git a/samples/element_extra_file_info.txt b/samples/element_extra_file_info.txt index c9e4c2f..b187fa2 100644 --- a/samples/element_extra_file_info.txt +++ b/samples/element_extra_file_info.txt @@ -1,2 +1,2 @@ -**/pds:logical_identifier<*> -**/pds:version_id<*> \ No newline at end of file +**/pds:logical_identifier* +**/pds:version_id* \ No newline at end of file diff --git a/samples/elements_clean_header_field_names.txt b/samples/elements_clean_header_field_names.txt index 866a2ca..626d969 100644 --- a/samples/elements_clean_header_field_names.txt +++ b/samples/elements_clean_header_field_names.txt @@ -1,5 +1,5 @@ -**/pds:logical_identifier<*> -**/pds:version_id<*> -**/pds:start_date_time<*> -**/pds:stop_date_time<*> -**/pds:wavelength_range<*> \ No newline at end of file +**/pds:logical_identifier* +**/pds:version_id* +**/pds:start_date_time* +**/pds:stop_date_time* +**/pds:wavelength_range* \ No newline at end of file diff --git a/samples/elements_xpath_simplify.txt b/samples/elements_xpath_simplify.txt index 6d8bac9..cc21130 100644 --- a/samples/elements_xpath_simplify.txt +++ b/samples/elements_xpath_simplify.txt @@ -1 +1 @@ -**/pds:name<*> \ No newline at end of file +**/pds:name* \ No newline at end of file diff --git a/samples/elements_xpath_simplify_2.txt b/samples/elements_xpath_simplify_2.txt index 6eed56f..9655eff 100644 --- a/samples/elements_xpath_simplify_2.txt +++ b/samples/elements_xpath_simplify_2.txt @@ -1 +1 @@ -**/rings:Occultation_Time_Series<*>/* \ No newline at end of file +**/rings:Occultation_Time_Series* \ No newline at end of file diff --git a/samples/elements_xpath_simplify_3.txt b/samples/elements_xpath_simplify_3.txt index 88e0027..8a9b834 100644 --- a/samples/elements_xpath_simplify_3.txt +++ b/samples/elements_xpath_simplify_3.txt @@ -1,69 +1,69 @@ -**/rings:mission_phase_name<*> -**/rings:spacecraft_clock_count_partition<*> -**/rings:spacecraft_clock_start_count<*> -**/rings:spacecraft_clock_stop_count<*> -**/rings:limitations<*> -**/rings:antiblooming_state_flag<*> -**/rings:calilbration_lamp_state_flag<*> -**/rings:command_file_name<*> -**/rings:command_sequence_number<*> -**/rings:dark_strip_mean<*> -**/rings:data_conversion_type<*> -**/rings:delayed_readout_flag<*> -**/rings:detector_temperature<*> -**/rings:electronics_bias<*> -**/rings:earth_recieved_start_time<*> -**/rings:earth_recieved_stop_time<*> -**/rings:expected_maximum_full_well<*> -**/rings:expected_maximum_DN_sat<*> -**/rings:expected_packets<*> -**/rings:exposure_duration<*> -**/rings:filter_name_1<*> -**/rings:filter_name_2<*> -**/rings:filter_temperature<*> -**/rings:flight_software_version_id<*> -**/rings:gain_mode_id<*> -**/rings:ground_software_version_id<*> -**/rings:image_mid_time<*> -**/rings:image_number<*> -**/rings:image_time<*> -**/rings:image_observation_type<*> -**/rings:instrument_data_rate<*> -**/rings:intrument_mode_id<*> -**/rings:inst_cmprs_type<*> -**/rings:inst_cmprs_param_malgo<*> -**/rings:inst_cmprs_param_tb<*> -**/rings:inst_cmprs_param_blocks<*> -**/rings:inst_cmprs_param_quant<*> -**/rings:inst_cmprs_rate_expected_bits<*> -**/rings:inst_cmprs_rate_actual_bits<*> -**/rings:inst_cmprs_ratio<*> -**/rings:light_flood_state_flag<*> -**/rings:method_description<*> -**/rings:missing_lines<*> -**/rings:missing_packet_flag<*> -**/rings:observation_id -**/rings:optics_temperature_front<*> -**/rings:optics_temperature_back<*> -**/rings:order_number<*> -**/rings:parallel_clock_voltage_index<*> -**/rings:pds3_product_creation_time<*> -**/rings:pds3_product_version_type<*> -**/rings:pds3_target_desc<*> -**/rings:pds3_target_list<*> -**/rings:pds3_target_name<*> -**/rings:pre-pds_version_number<*> -**/rings:prepare_cycle_index<*> -**/rings:readout_cycle_index<*> -**/rings:received_packets<*> -**/rings:sensor_head_electronics_temperature<*> -**/rings:sequence_id<*> -**/rings:sequence_number<*> -**/rings:sequence_title<*> -**/rings:shutter_mode_id<*> -**/rings:shutter_state_id<*> -**/rings:start_time_doy<*> -**/rings:stop_time_doy<*> -**/rings:telemetry_format_id<*> -**/rings:valid_maximum_full_well<*> -**/rings:valid_maximum_DN_sat<*> \ No newline at end of file +**/cassini:mission_phase_name* +**/cassini:spacecraft_clock_count_partition* +**/cassini:spacecraft_clock_start_count* +**/cassini:spacecraft_clock_stop_count* +**/cassini:limitations* +**/cassini:antiblooming_state_flag* +**/cassini:calilbration_lamp_state_flag* +**/cassini:command_file_name* +**/cassini:command_sequence_number* +**/cassini:dark_strip_mean* +**/cassini:data_conversion_type* +**/cassini:delayed_readout_flag* +**/cassini:detector_temperature* +**/cassini:electronics_bias* +**/cassini:earth_recieved_start_time* +**/cassini:earth_recieved_stop_time* +**/cassini:expected_maximum_full_well* +**/cassini:expected_maximum_DN_sat* +**/cassini:expected_packets* +**/cassini:exposure_duration* +**/cassini:filter_name_1* +**/cassini:filter_name_2* +**/cassini:filter_temperature* +**/cassini:flight_software_version_id* +**/cassini:gain_mode_id* +**/cassini:ground_software_version_id* +**/cassini:image_mid_time* +**/cassini:image_number* +**/cassini:image_time* +**/cassini:image_observation_type* +**/cassini:instrument_data_rate* +**/cassini:intrument_mode_id* +**/cassini:inst_cmprs_type* +**/cassini:inst_cmprs_param_malgo* +**/cassini:inst_cmprs_param_tb* +**/cassini:inst_cmprs_param_blocks* +**/cassini:inst_cmprs_param_quant* +**/cassini:inst_cmprs_rate_expected_bits* +**/cassini:inst_cmprs_rate_actual_bits* +**/cassini:inst_cmprs_ratio* +**/cassini:light_flood_state_flag* +**/cassini:method_description* +**/cassini:missing_lines* +**/cassini:missing_packet_flag* +**/cassini:observation_id +**/cassini:optics_temperature_front* +**/cassini:optics_temperature_back* +**/cassini:order_number* +**/cassini:parallel_clock_voltage_index* +**/cassini:pds3_product_creation_time* +**/cassini:pds3_product_version_type* +**/cassini:pds3_target_desc* +**/cassini:pds3_target_list* +**/cassini:pds3_target_name* +**/cassini:pre-pds_version_number* +**/cassini:prepare_cycle_index* +**/cassini:readout_cycle_index* +**/cassini:received_packets* +**/cassini:sensor_head_electronics_temperature* +**/cassini:sequence_id* +**/cassini:sequence_number* +**/cassini:sequence_title* +**/cassini:shutter_mode_id* +**/cassini:shutter_state_id* +**/cassini:start_time_doy* +**/cassini:stop_time_doy* +**/cassini:telemetry_format_id* +**/cassini:valid_maximum_full_well* +**/cassini:valid_maximum_DN_sat* \ No newline at end of file diff --git a/samples/sample_elements.txt b/samples/sample_elements.txt index ddef3eb..60bcf6a 100644 --- a/samples/sample_elements.txt +++ b/samples/sample_elements.txt @@ -1,3 +1,3 @@ -/pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1> -/pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1> -/pds:Product_Observational/pds:Identification_Area<1>/pds:title<1> \ No newline at end of file +/pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier* +/pds:Product_Observational/pds:Identification_Area<1>/pds:version_id* +/pds:Product_Observational/pds:Identification_Area<1>/pds:title* diff --git a/test_files/.DS_Store b/test_files/.DS_Store index 066e8b8cac354026aa5f9af4b5f5e4bd922cb919..47f875b1e4c09c721a6446901740ddc50bef71b3 100644 GIT binary patch delta 34 qcmZp1XmOa}&&aniU^hP_-)0^GeWuObLKRG#H}ixrZ)TVH%MJj&TMD`W delta 99 zcmZp1XmOa}&&a__pds_logical_identifier<1>,__pds_Product_Observational__pds_Identification_Area<1>__pds_version_id<1>,__pds_Product_Observational__pds_Identification_Area<1>__pds_title<1>,__pds_Product_Observational__pds_Identification_Area<1>__pds_information_model_version<1>,__pds_Product_Observational__pds_Observing_System<1>__pds_name<1>,__pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_name<1>,__pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_type<1>,__pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_Internal_Reference<1>__pds_lid_reference<1>,__pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_Internal_Reference<1>__pds_reference_type<1> +pds_Product_Observational__pds_Identification_Area<1>__pds_logical_identifier<1>,pds_Product_Observational__pds_Identification_Area<1>__pds_version_id<1>,pds_Product_Observational__pds_Identification_Area<1>__pds_title<1>,pds_Product_Observational__pds_Identification_Area<1>__pds_information_model_version<1>,pds_Product_Observational__pds_Observing_System<1>__pds_name<1>,pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_name<1>,pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_type<1>,pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_Internal_Reference<1>__pds_lid_reference<1>,pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_Internal_Reference<1>__pds_reference_type<1> urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,1.11.0.0,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host diff --git a/test_files/clean_header_field_names_success_2.csv b/test_files/clean_header_field_names_success_2.csv index 841a0d7..c06708d 100644 --- a/test_files/clean_header_field_names_success_2.csv +++ b/test_files/clean_header_field_names_success_2.csv @@ -1,3 +1,3 @@ -__pds_Product_Observational__pds_Identification_Area<1>__pds_logical_identifier<1>,__pds_Product_Observational__pds_Identification_Area<1>__pds_version_id<1>,__pds_Product_Observational__pds_Observation_Area<1>__pds_Time_Coordinates<1>__pds_start_date_time<1>,__pds_Product_Observational__pds_Observation_Area<1>__pds_Time_Coordinates<1>__pds_stop_date_time<1>,__pds_Product_Observational__pds_Observation_Area<1>__pds_Primary_Result_Summary<1>__pds_Science_Facets<1>__pds_wavelength_range<1>,__pds_Product_Observational__pds_Observation_Area<1>__pds_Primary_Result_Summary<1>__pds_Science_Facets<2>__pds_wavelength_range<1> +pds_Product_Observational__pds_Identification_Area<1>__pds_logical_identifier<1>,pds_Product_Observational__pds_Identification_Area<1>__pds_version_id<1>,pds_Product_Observational__pds_Observation_Area<1>__pds_Time_Coordinates<1>__pds_start_date_time<1>,pds_Product_Observational__pds_Observation_Area<1>__pds_Time_Coordinates<1>__pds_stop_date_time<1>,pds_Product_Observational__pds_Observation_Area<1>__pds_Primary_Result_Summary<1>__pds_Science_Facets<1>__pds_wavelength_range<1>,pds_Product_Observational__pds_Observation_Area<1>__pds_Primary_Result_Summary<1>__pds_Science_Facets<2>__pds_wavelength_range<1> urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared diff --git a/test_files/elements_file_success.csv b/test_files/elements_file_success.csv index 50e9fe7..08b5633 100644 --- a/test_files/elements_file_success.csv +++ b/test_files/elements_file_success.csv @@ -1,2 +1,2 @@ -/pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:title<1> +pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:title<1> urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img diff --git a/test_files/elements_file_success_2.csv b/test_files/elements_file_success_2.csv index 3eb7503..cb2b366 100644 --- a/test_files/elements_file_success_2.csv +++ b/test_files/elements_file_success_2.csv @@ -1,2 +1,2 @@ -/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name -ura111.bsp,vgr2.ura111.bsp,earthstns_itrf93_040916.bsp,earth_720101_031229.bpc,naif0012.tls \ No newline at end of file +pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_2<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_3<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_4<1> +ura111.bsp,vgr2.ura111.bsp,earthstns_itrf93_040916.bsp,earth_720101_031229.bpc,naif0012.tls diff --git a/test_files/elements_file_success_3.csv b/test_files/elements_file_success_3.csv index 5f38299..e564167 100644 --- a/test_files/elements_file_success_3.csv +++ b/test_files/elements_file_success_3.csv @@ -1,3 +1,3 @@ -/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1> -Infra Red Telescope Facility-Maunakea,IRTF 3.2m,Generic InSb High Speed Photometer,Uranus,Uranus Rings -Cassini Orbiter,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,NaN,Dark Sky,NaN \ No newline at end of file +pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1> +Infra Red Telescope Facility-Maunakea,IRTF 3.2m,Generic InSb High Speed Photometer,Uranus,Uranus Rings +Cassini Orbiter,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,NaN,Dark Sky,NaN diff --git a/test_files/elements_file_success_4.csv b/test_files/elements_file_success_4.csv index b156a9a..ebcebcb 100644 --- a/test_files/elements_file_success_4.csv +++ b/test_files/elements_file_success_4.csv @@ -1,4 +1,4 @@ -/pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:title<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:information_model_version<1>,/pds:Product_Observational/pds:Observing_System<1>/pds:name<1>,/pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,/pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:type<1>,/pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:product_class<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:purpose<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:processing_level<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:discipline_name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:mission_phase_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:spacecraft_clock_count_partition,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:spacecraft_clock_start_count,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:spacecraft_clock_stop_count,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:limitations,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:antiblooming_state_flag,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:bias_strip_mean,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:calibration_lamp_state_flag,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:command_file_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:command_sequence_number,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:dark_strip_mean,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:data_conversion_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:delayed_readout_flag,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:detector_temperature,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:electronics_bias,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:earth_received_start_time,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:earth_received_stop_time,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:expected_maximum_full_well,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/comment()<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:expected_maximum_DN_sat,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:expected_packets,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:exposure_duration,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:filter_name_1,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:filter_name_2,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:filter_temperature,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:flight_software_version_id,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:gain_mode_id,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:ground_software_version_id,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_mid_time,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_number,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_time,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:image_observation_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:instrument_data_rate,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:instrument_mode_id,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_malgo,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_tb,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_blocks,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_param_quant,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_rate_expected_bits,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_rate_actual_bits,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:inst_cmprs_ratio,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:light_flood_state_flag,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:method_description,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:missing_lines,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:missing_packet_flag,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:observation_id,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:optics_temperature_front,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:optics_temperature_back,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:order_number,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:parallel_clock_voltage_index,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_product_creation_time,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_product_version_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_target_desc,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_target_list,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pds3_target_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:pre-pds_version_number,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:prepare_cycle_index,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:readout_cycle_index,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:received_packets,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sensor_head_electronics_temperature,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sequence_id,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sequence_number,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:sequence_title,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:shutter_mode_id,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:shutter_state_id,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:start_time_doy,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:stop_time_doy,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:telemetry_format_id,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:valid_maximum_full_well,/pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini/cassini:ISS_Specific_Attributes/cassini:valid_maximum_DN_sat,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings/pds:Local_Internal_Reference<1>/pds:local_identifier_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings/pds:Local_Internal_Reference<1>/pds:local_reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings/disp:Display_Direction/disp:horizontal_display_axis,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings/disp:Display_Direction/disp:horizontal_display_direction,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings/disp:Display_Direction/disp:vertical_display_axis,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings/disp:Display_Direction/disp:vertical_display_direction,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:reference_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:file_name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:creation_date_time<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:md5_checksum<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/comment()<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:offset<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:object_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:parsing_standard_id<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:local_identifier<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:offset<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:axes<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:axis_index_order<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:Element_Array<1>/pds:data_type,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:Axis_Array<1>/pds:axis_name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:Axis_Array<1>/pds:elements<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:Axis_Array<1>/pds:sequence_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:local_identifier<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:offset<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:axes<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:axis_index_order<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Element_Array<1>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Element_Array<1>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<1>/pds:axis_name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<1>/pds:elements<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<1>/pds:sequence_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<2>/pds:axis_name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<2>/pds:elements<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<2>/pds:sequence_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:offset<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:axes<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:axis_index_order<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Element_Array<1>/pds:data_type,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<1>/pds:axis_name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<1>/pds:elements<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<1>/pds:sequence_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<2>/pds:axis_name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<2>/pds:elements<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<2>/pds:sequence_number<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:author_list<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:publication_year<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<2>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<3>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<4>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<5>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<6>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:facet1<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:discipline_name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:facet1<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:alternate_designation<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:alternate_designation<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:kernel_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_direction,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_series_direction,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:planetary_occultation_flag,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:data_quality_score,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:ring_plane,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:star_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fresnel_scale,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:projected_star_diameter,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_projected_star_diameter,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fractional_error_star_counts,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_time_constant,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_wavelength,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_wavelength,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:reference_time_utc,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_event_time,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_event_time,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_start_tdb,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_stop_tdb,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_start_time_utc,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_stop_time_utc,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_radius,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_radius,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_longitude,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_longitude,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_ring_elevation,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:light_source_incidence_angle,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:lidvid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:reference_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:local_identifier<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:offset<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:records<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:record_delimiter<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:fields<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:groups<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:record_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Special_Constants<1>/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Field_Statistics<1>/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Special_Constants<1>/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Field_Statistics<1>/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Special_Constants<1>/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Field_Statistics<1>/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Special_Constants<1>/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Field_Statistics<1>/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_length<1> -urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,1.11.0.0,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN -urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,Cassini ISS Image 1357539630n.img,1.11.0.0,NaN,NaN,NaN,NaN,NaN,Product_Observational,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Science,Raw,Near Infrared,Ring-Moon Systems,Cassini-Huygens,Mission,urn:nasa:pds:context:investigation:mission.cassini-huygens,data_to_investigation,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,Instrument,urn:nasa:pds:context:instrument:issna.co,is_instrument,Dark Sky,Calibration Field,urn:nasa:pds:context:target:calibration_field.dark_sky,data_to_target,EARTH-JUPITER CRUISE,1,1357539630.068,1357539630.123,N/A,ON,6.870842,N/A,ISS_C23ST_OCCULT001_UVIS_B.icf,730,0,TABLE,NO,-89.243546,112,2001-007T19:58:04.616,2001-007T19:58:32.295,-1,Unknown,-1,-1,220,P0,GRN,-0.468354,1.2,29,ISS V7.0 11-22-2000,2001-007T06:08:48.013,1357539630,2001-007T06:08:48.013,SCIENCE,182.783997,FULL,LOSSLESS,999,999,999,999,-1,-1,3.150372,ON,Information not provided,0,NO,UVIS_C23ST_OCCULT001_PRIME_C,0.71269,-999,-999,9,2001-008T10:55:49.000,FINAL,Information not provided,N/A,DARK SKY,1,0,11,-1,1.633024,C23,-1,ISS_C23ST_OCCULT001_UVIS,NACONLY,ENABLED,2001-007T06:08:47.793,2001-007T06:08:48.013,Information not provided,-1,-1,image,display_settings_to_array,Sample,Left to Right,Line,Top to Bottom,urn:nasa:pds:cassini_iss_cruise:data_raw:index,data_to_resource,urn:nasa:pds:cassini_iss_cruise:data_raw:body-geometry,data_to_resource,urn:nasa:pds:cassini_iss_cruise:body-inventory,data_to_resource,urn:nasa:pds:cassini_iss_cruise:ring-geometry,data_to_resource,urn:nasa:pds:cassini_iss_saturn:document:iss-data-user-guide,data_to_document,urn:nasa:pds:cassini_iss_cruise:browse_raw:1357539630n-full,data_to_browse,1357539630n.img,2019-06-12T22:05:54Z,a468693f67593587d224116c5ade995a,Line prefix bytes,0,4096,VICAR2,telemetry-table,4096,1,Last Index Fastest,UnsignedByte,telemetry,2,1,image,6144,2,Last Index Fastest,UnsignedByte,DN,Line,1024,1,Sample,1024,2,1054720,2,Last Index Fastest,UnsignedByte,Line,1024,1,prefix-sample,24,2,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN -urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope,1.14.0.0,NaN,NaN,NaN,NaN,NaN,Product_Observational,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Science,Calibrated,Infrared,Atmospheres,Earth-based Observations of Uranus System Stellar Occultations,Observing Campaign,urn:nasa:pds:context:investigation:observing_campaign.earth-based-uranus-stellar-occultations,data_to_investigation,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,Host,urn:nasa:pds:context:facility:observatory.irtf-maunakea,is_facility,IRTF 3.2m,Telescope,urn:nasa:pds:context:telescope:irtf-maunakea.3m2,is_telescope,Uranus,Planet,urn:nasa:pds:context:target:planet.uranus,data_to_target,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,urn:nasa:pds:uranus_occ_support:document:earth-based-uranus-stellar-occultations-user-guide,data_to_document,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_obs_geom,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_earth,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_alt,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_occult,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_normalization,data_to_browse,u149_irtf_320cm_2200nm_counts-v-time_occult.tab,2021-04-05T23:18:20Z,NaN,NaN,0,264,UTF-8 Text,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,"French, Richard G.; McGhee-French, Colleen A.; Gordon, Mitchell K.",2020,uranus atmosphere,uranus atmosphere stellar occultation,uranus atmosphere stellar occultation time series,uranus rings,uranus rings stellar occultation,uranus rings stellar occultation radial profile,Structure,Infrared,Ring-Moon Systems,Ring Occultation Profile,Generic InSb High Speed Photometer,Instrument,urn:nasa:pds:context:instrument:multi-host.generic_insp_hsp,is_instrument,NAIF ID 799,Uranus Rings,Uranian Ring System,Ring,urn:nasa:pds:context:target:ring.uranus.rings,data_to_target,LSK,naif0012.tls,stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528,urn:nasa:pds:uranus_occ_support:data:uranus_occultation_ring_fit_rfrench_20201201::1.0,data_to_resource,urn:nasa:pds:uranus_occ_support,data_to_resource,data,264,10551,Carriage-Return Line-Feed,15,0,212,Observed Event Time,1,1,ASCII_Real,16,second,Observed Event TDB,2,19,ASCII_Real,16,second,Mean Signal,3,37,ASCII_Real,16,999999999.999999,999999999.999999,Normalized Signal,4,55,ASCII_Real,10,999.999999,999.999999,Sky-plane F,5,67,ASCII_Real,13,Kilometer,Sky-plane G,6,82,ASCII_Real,13,Kilometer,Sky-plane Radius,7,97,ASCII_Real,13,Kilometer,Ring Radius,8,112,ASCII_Real,12,Kilometer,Ring Longitude,9,126,ASCII_Real,8,Degree,Observed Ring Azimuth,10,136,ASCII_Real,9,Degree,Ring Event TDB,11,147,ASCII_Real,16,second,Unocculted Star Model,12,165,ASCII_Real,16,999999999.999999,999999999.999999,Background Model,13,183,ASCII_Real,16,999999999.999999,999999999.999999,Number Of Samples Per Bin,14,201,ASCII_Integer,4,Note Flag,15,207,ASCII_Integer,4 \ No newline at end of file +pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:title<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:information_model_version<1>,pds:Product_Observational/pds:Observing_System<1>/pds:name<1>,pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:type<1>,pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:product_class<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:purpose<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:processing_level<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:discipline_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:mission_phase_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:spacecraft_clock_count_partition<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:spacecraft_clock_start_count<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:spacecraft_clock_stop_count<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:limitations<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:antiblooming_state_flag<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:bias_strip_mean<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:calibration_lamp_state_flag<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:command_file_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:command_sequence_number<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:dark_strip_mean<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:data_conversion_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:delayed_readout_flag<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:detector_temperature<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:electronics_bias<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:earth_received_start_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:earth_received_stop_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:expected_maximum_full_well<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:expected_maximum_DN_sat<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:expected_packets<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:exposure_duration<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:filter_name_1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:filter_name_2<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:filter_temperature<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:flight_software_version_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:gain_mode_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:ground_software_version_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:image_mid_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:image_number<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:image_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:image_observation_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:instrument_data_rate<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:instrument_mode_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:inst_cmprs_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:inst_cmprs_param_malgo<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:inst_cmprs_param_tb<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:inst_cmprs_param_blocks<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:inst_cmprs_param_quant<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:inst_cmprs_rate_expected_bits<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:inst_cmprs_rate_actual_bits<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:inst_cmprs_ratio<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:light_flood_state_flag<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:method_description<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:missing_lines<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:missing_packet_flag<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:observation_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:optics_temperature_front<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:optics_temperature_back<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:order_number<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:parallel_clock_voltage_index<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:pds3_product_creation_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:pds3_product_version_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:pds3_target_desc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:pds3_target_list<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:pds3_target_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:pre-pds_version_number<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:prepare_cycle_index<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:readout_cycle_index<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:received_packets<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:sensor_head_electronics_temperature<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:sequence_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:sequence_number<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:sequence_title<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:shutter_mode_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:shutter_state_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:start_time_doy<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:stop_time_doy<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:telemetry_format_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:valid_maximum_full_well<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:valid_maximum_DN_sat<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings<1>/pds:Local_Internal_Reference<1>/pds:local_identifier_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings<1>/pds:Local_Internal_Reference<1>/pds:local_reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings<1>/disp:Display_Direction<1>/disp:horizontal_display_axis<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings<1>/disp:Display_Direction<1>/disp:horizontal_display_direction<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings<1>/disp:Display_Direction<1>/disp:vertical_display_axis<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings<1>/disp:Display_Direction<1>/disp:vertical_display_direction<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:reference_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:file_name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:creation_date_time<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:md5_checksum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:offset<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:object_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:parsing_standard_id<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:local_identifier<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:offset<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:axes<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:axis_index_order<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:Element_Array<1>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:Axis_Array<1>/pds:axis_name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:Axis_Array<1>/pds:elements<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:Axis_Array<1>/pds:sequence_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:local_identifier<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:offset<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:axes<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:axis_index_order<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Element_Array<1>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Element_Array<1>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<1>/pds:axis_name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<1>/pds:elements<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<1>/pds:sequence_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<2>/pds:axis_name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<2>/pds:elements<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<2>/pds:sequence_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:offset<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:axes<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:axis_index_order<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Element_Array<1>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<1>/pds:axis_name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<1>/pds:elements<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<1>/pds:sequence_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<2>/pds:axis_name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<2>/pds:elements<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<2>/pds:sequence_number<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:author_list<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:publication_year<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<2>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<3>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<4>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<5>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<6>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:facet1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:discipline_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:facet1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:alternate_designation<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:alternate_designation<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_2<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_2<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_3<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_3<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_4<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_4<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:comment<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:occultation_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:occultation_direction<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:time_series_direction<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:planetary_occultation_flag<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:data_quality_score<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:ring_plane<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:star_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:fresnel_scale<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:projected_star_diameter<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:sigma_projected_star_diameter<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:fractional_error_star_counts<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:time_constant_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:time_constant<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:sigma_time_constant<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_wavelength<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_wavelength<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:reference_time_utc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_observed_event_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_observed_event_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:observed_event_start_tdb<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:observed_event_stop_tdb<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:earth_received_start_time_utc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:earth_received_stop_time_utc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_ring_radius<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_ring_radius<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_ring_longitude<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_ring_longitude<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_observed_ring_azimuth<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_observed_ring_azimuth<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:observed_ring_elevation<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:light_source_incidence_angle<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:lidvid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:reference_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:local_identifier<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:offset<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:records<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:record_delimiter<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:fields<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:groups<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:record_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_length<1> +urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,1.11.0.0,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN +urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,Cassini ISS Image 1357539630n.img,1.11.0.0,NaN,NaN,NaN,NaN,NaN,Product_Observational,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Science,Raw,Near Infrared,Ring-Moon Systems,Cassini-Huygens,Mission,urn:nasa:pds:context:investigation:mission.cassini-huygens,data_to_investigation,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,Instrument,urn:nasa:pds:context:instrument:issna.co,is_instrument,Dark Sky,Calibration Field,urn:nasa:pds:context:target:calibration_field.dark_sky,data_to_target,EARTH-JUPITER CRUISE,1,1357539630.068,1357539630.123,N/A,ON,6.870842,N/A,ISS_C23ST_OCCULT001_UVIS_B.icf,730,0.,TABLE,NO,-89.243546,112,2001-007T19:58:04.616,2001-007T19:58:32.295,-1,-1,-1,220.,P0,GRN,-0.468354,1.2,29,ISS V7.0 11-22-2000,2001-007T06:08:48.013,1357539630,2001-007T06:08:48.013,SCIENCE,182.783997,FULL,LOSSLESS,999,999,999,999,-1.,-1.,3.150372,ON,Information not provided,0,NO,UVIS_C23ST_OCCULT001_PRIME_C,0.71269,-999.,-999,9,2001-008T10:55:49.000,FINAL,Information not provided,N/A,DARK SKY,1,0,11,-1,1.633024,C23,-1,ISS_C23ST_OCCULT001_UVIS,NACONLY,ENABLED,2001-007T06:08:47.793,2001-007T06:08:48.013,Information not provided,-1,-1,image,display_settings_to_array,Sample,Left to Right,Line,Top to Bottom,urn:nasa:pds:cassini_iss_cruise:data_raw:index,data_to_resource,urn:nasa:pds:cassini_iss_cruise:data_raw:body-geometry,data_to_resource,urn:nasa:pds:cassini_iss_cruise:body-inventory,data_to_resource,urn:nasa:pds:cassini_iss_cruise:ring-geometry,data_to_resource,urn:nasa:pds:cassini_iss_saturn:document:iss-data-user-guide,data_to_document,urn:nasa:pds:cassini_iss_cruise:browse_raw:1357539630n-full,data_to_browse,1357539630n.img,2019-06-12T22:05:54Z,a468693f67593587d224116c5ade995a,0,4096,VICAR2,telemetry-table,4096,1,Last Index Fastest,UnsignedByte,telemetry,2,1,image,6144,2,Last Index Fastest,UnsignedByte,DN,Line,1024,1,Sample,1024,2,1054720,2,Last Index Fastest,UnsignedByte,Line,1024,1,prefix-sample,24,2,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN +urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope,1.14.0.0,NaN,NaN,NaN,NaN,NaN,Product_Observational,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Science,Calibrated,Infrared,Atmospheres,Earth-based Observations of Uranus System Stellar Occultations,Observing Campaign,urn:nasa:pds:context:investigation:observing_campaign.earth-based-uranus-stellar-occultations,data_to_investigation,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,Host,urn:nasa:pds:context:facility:observatory.irtf-maunakea,is_facility,IRTF 3.2m,Telescope,urn:nasa:pds:context:telescope:irtf-maunakea.3m2,is_telescope,Uranus,Planet,urn:nasa:pds:context:target:planet.uranus,data_to_target,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,urn:nasa:pds:uranus_occ_support:document:earth-based-uranus-stellar-occultations-user-guide,data_to_document,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_obs_geom,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_earth,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_alt,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_occult,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_normalization,data_to_browse,u149_irtf_320cm_2200nm_counts-v-time_occult.tab,2021-04-05T23:18:20Z,NaN,0,264,UTF-8 Text,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,"French, Richard G.; McGhee-French, Colleen A.; Gordon, Mitchell K.",2020,uranus atmosphere,uranus atmosphere stellar occultation,uranus atmosphere stellar occultation time series,uranus rings,uranus rings stellar occultation,uranus rings stellar occultation radial profile,Structure,Infrared,Ring-Moon Systems,Ring Occultation Profile,Generic InSb High Speed Photometer,Instrument,urn:nasa:pds:context:instrument:multi-host.generic_insp_hsp,is_instrument,NAIF ID 799,Uranus Rings,Uranian Ring System,Ring,urn:nasa:pds:context:target:ring.uranus.rings,data_to_target,SPK,ura111.bsp,SPK,vgr2.ura111.bsp,SPK,earthstns_itrf93_040916.bsp,BPC,earth_720101_031229.bpc,LSK,naif0012.tls,These kernel files were used in the generation of the products in the parent bundle. Some or all of them may not have been used directly in the generation of this product.,stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528,urn:nasa:pds:uranus_occ_support:data:uranus_occultation_ring_fit_rfrench_20201201::1.0,data_to_resource,urn:nasa:pds:uranus_occ_support,data_to_resource,data,264,10551,Carriage-Return Line-Feed,15,0,212,Observed Event Time,1,1,ASCII_Real,16,second,Observed Event TDB,2,19,ASCII_Real,16,second,Mean Signal,3,37,ASCII_Real,16,999999999.999999,999999999.999999,Normalized Signal,4,55,ASCII_Real,10,999.999999,999.999999,Sky-plane F,5,67,ASCII_Real,13,Kilometer,Sky-plane G,6,82,ASCII_Real,13,Kilometer,Sky-plane Radius,7,97,ASCII_Real,13,Kilometer,Ring Radius,8,112,ASCII_Real,12,Kilometer,Ring Longitude,9,126,ASCII_Real,8,Degree,Observed Ring Azimuth,10,136,ASCII_Real,9,Degree,Ring Event TDB,11,147,ASCII_Real,16,second,Unocculted Star Model,12,165,ASCII_Real,16,999999999.999999,999999999.999999,Background Model,13,183,ASCII_Real,16,999999999.999999,999999999.999999,Number Of Samples Per Bin,14,201,ASCII_Integer,4,Note Flag,15,207,ASCII_Integer,4 diff --git a/test_files/extra_file_info_success_1.csv b/test_files/extra_file_info_success_1.csv index 2bb3db0..ee9afee 100644 --- a/test_files/extra_file_info_success_1.csv +++ b/test_files/extra_file_info_success_1.csv @@ -1,2 +1,2 @@ -filename,filepath,/pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:title<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:information_model_version<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:product_class<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:author_list<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:publication_year<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<2>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<3>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<4>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<5>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<6>,/pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:description<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:purpose<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:processing_level<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:description<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:discipline_name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:facet1<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:discipline_name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:facet1<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:alternate_designation<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:alternate_designation<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:kernel_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:SPICE_Kernel_Identification/geom:spice_kernel_file_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry/geom:SPICE_Kernel_Files/geom:comment,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:occultation_direction,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_series_direction,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:planetary_occultation_flag,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:data_quality_score,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:ring_plane,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:star_name,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fresnel_scale,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:projected_star_diameter,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_projected_star_diameter,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:fractional_error_star_counts,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant_type,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:time_constant,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:sigma_time_constant,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_wavelength,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_wavelength,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:reference_time_utc,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_event_time,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_event_time,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_start_tdb,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_event_stop_tdb,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_start_time_utc,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:earth_received_stop_time_utc,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_radius,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_radius,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_ring_longitude,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_ring_longitude,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:minimum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:maximum_observed_ring_azimuth,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:observed_ring_elevation,/pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems/rings:Occultation_Time_Series/rings:light_source_incidence_angle,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:comment<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:comment<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:comment<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:comment<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:comment<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:comment<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:lidvid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:comment<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:lid_reference<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:reference_type<1>,/pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:comment<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:file_name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:local_identifier<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:creation_date_time<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:offset<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:object_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:parsing_standard_id<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:offset<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:records<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:record_delimiter<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:fields<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:groups<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:record_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Special_Constants<1>/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Field_Statistics<1>/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Special_Constants<1>/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Field_Statistics<1>/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:unit<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Special_Constants<1>/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Field_Statistics<1>/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Special_Constants<1>/pds:missing_constant,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Field_Statistics<1>/pds:maximum,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:description<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_number<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_location<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:data_type<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_length<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:description<1> -tester_label_2.xml,tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope,1.14.0.0,Product_Observational,"French, Richard G.; McGhee-French, Colleen A.; Gordon, Mitchell K.",2020,uranus atmosphere,uranus atmosphere stellar occultation,uranus atmosphere stellar occultation time series,uranus rings,uranus rings stellar occultation,uranus rings stellar occultation radial profile,Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope.,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Science,Calibrated,Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope.,Infrared,Atmospheres,Structure,Infrared,Ring-Moon Systems,Ring Occultation Profile,Earth-based Observations of Uranus System Stellar Occultations,Observing Campaign,urn:nasa:pds:context:investigation:observing_campaign.earth-based-uranus-stellar-occultations,data_to_investigation,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,Host,urn:nasa:pds:context:facility:observatory.irtf-maunakea,is_facility,IRTF 3.2m,Telescope,urn:nasa:pds:context:telescope:irtf-maunakea.3m2,is_telescope,Generic InSb High Speed Photometer,Instrument,urn:nasa:pds:context:instrument:multi-host.generic_insp_hsp,is_instrument,Uranus,NAIF ID 799,Planet,urn:nasa:pds:context:target:planet.uranus,data_to_target,Uranus Rings,Uranian Ring System,Ring,urn:nasa:pds:context:target:ring.uranus.rings,data_to_target,LSK,naif0012.tls,These kernel files were used in the generation of the products in the parent bundle. Some or all of them may not have been used directly in the generation of this product.,stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528,urn:nasa:pds:uranus_occ_support:document:earth-based-uranus-stellar-occultations-user-guide,data_to_document,The User Guide for Earth-based Uranus Stellar Occultations.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_obs_geom,data_to_browse,Diagram of the Uranus system showing the occultation track.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_earth,data_to_browse,Diagram of the view of the Earth from Uranus at mid-occultation Time.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_alt,data_to_browse,Plot of the altitude (in degrees) of Uranus and the sun relative to the horizon over the duration of the occulation.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_occult,data_to_browse,Low resolution plot of counts vs. time for the entire occultation.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_normalization,data_to_browse,Illustrates some of the processing steps involved in normalizing a time-series occultation light curve from counts per second to units of stellar flux.,urn:nasa:pds:uranus_occ_support:data:uranus_occultation_ring_fit_rfrench_20201201::1.0,data_to_resource,The fitted model of the ring system upon which the data are based.,urn:nasa:pds:uranus_occ_support,data_to_resource,The support bundle for all of the Earth-based Uranus system occultations.,u149_irtf_320cm_2200nm_counts-v-time_occult.tab,data,2021-04-05T23:18:20Z,0,264,UTF-8 Text,"Provides the column headers, separated by commas, for the data table.",264,10551,"This is a calibrated time series of an occultation by the Uranus system generated from an earth-based stellar occultation. The data are uniformly spaced in time, and normalized in units of stellar intensity. The data may include occultations by both the rings and the planet, or just the planet. The occultation by the rings, if present, is based on the equatorial ring plane radius sampled at each time point, computed from an orbit model for the ring system.",Carriage-Return Line-Feed,15,0,212,Observed Event Time,1,1,ASCII_Real,16,second,"The instant at which photons were received at the observer location. It is represented in the Universal Coordinated Time system, as a number of elapsed seconds since the time given by the reference_time_utc attribute specified in this file. It refers to the middle of the bin.",Observed Event TDB,2,19,ASCII_Real,16,second,"The instant at which photons were received at the observer location. It is represented in the 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch.",Mean Signal,3,37,ASCII_Real,16,Mean counts received by the instrument during this time bin. The background signal has not been subtracted. Refer to NOTE FLAG for guidance on validity of data.,999999999.999999,999999999.999999,Normalized Signal,4,55,ASCII_Real,10,"Normalized signal during this time bin, in units of the unocculted stellar signal, such that 1.0 corresponds to the full unocculted star signal and 0.0 corresponds to no counts from the star (a completely opaque ring). NORMALIZED SIGNAL = (MEAN_SIGNAL - BACKGROUND_MODEL)/(UNOCCULTED STAR MODEL) This is an approximate normalization, computed using regional polynomial fits. For high-precision photometry of ring events, use locally computed normalization.",999.999999,999.999999,Sky-plane F,5,67,ASCII_Real,13,Kilometer,"The east/west component of r sky (positive in the east direction), in km.",Sky-plane G,6,82,ASCII_Real,13,Kilometer,"The north/south component of r sky (positive in the north direction), in km.",Sky-plane Radius,7,97,ASCII_Real,13,Kilometer,"The length of the radius vector in the plane of the sky measured from the center of the occulting object to the position of the occulted star or spacecraft, in km.",Ring Radius,8,112,ASCII_Real,12,Kilometer,"Radial distance of the occultation intercept point (middle of the bin) from the center of the planet, in km. Distances are measured along the equator plane.",Ring Longitude,9,126,ASCII_Real,8,Degree,Inertial longitude on the ring plane corresponding to the midpoint of the bin.,Observed Ring Azimuth,10,136,ASCII_Real,9,Degree,"Angle measured at a point in the ring plane, starting from the direction of a photon heading to the observer, and ending at the direction of a local radial vector. This angle is projected into the ring plane and measured in the prograde direction.",Ring Event TDB,11,147,ASCII_Real,16,second,"The time at which photons left the ring plane. This time is earlier than the associated OBSERVED EVENT TDB by an amount equal to the light travel time. It is represented in the 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch.",Unocculted Star Model,12,165,ASCII_Real,16,Model of the unocculted star signal as a function of ring plane radius. This is necessary because of variations in atmospheric transparency and other time-dependent effects.,999999999.999999,999999999.999999,Background Model,13,183,ASCII_Real,16,Model of the non-stellar background signal (which may vary over the course of the occultation) due to instrumental offsets applied during the recording and/or sky brightness and contributions from reflected sunlight from the rings and planet.,999999999.999999,999999999.999999,Number Of Samples Per Bin,14,201,ASCII_Integer,4,The number of raw data points per bin.,Note Flag,15,207,ASCII_Integer,4,"A numerical flag that associates specific comments with individual data bins. When more than one comment applies, the values are summed. The values and their associated comments are: 0: radius and longitude are based on Uranus equatorial plane. 1: radius and longitude are based inclined ring plane model referred to in metadata associated with file. 2: observed ring occultation event 4: telescope pointed to nearby sky for background level check 8: input signal from time source, not from photometer on telescope 16: line of sight intersects planet 32: dawn/dusk - rapid background level change; no background or star intensity estimate. 64: unreliable data (e.g., clouds, telescope guiding error, or instrument adjustment); no background or star intensity estimate." +filename,filepath,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:title<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:information_model_version<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:product_class<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:author_list<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:publication_year<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<2>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<3>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<4>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<5>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<6>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:description<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:purpose<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:processing_level<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:description<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:discipline_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:facet1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:discipline_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:facet1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:alternate_designation<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:alternate_designation<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_2<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_2<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_3<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_3<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_4<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_4<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:comment<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:occultation_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:occultation_direction<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:time_series_direction<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:planetary_occultation_flag<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:data_quality_score<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:ring_plane<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:star_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:fresnel_scale<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:projected_star_diameter<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:sigma_projected_star_diameter<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:fractional_error_star_counts<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:time_constant_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:time_constant<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:sigma_time_constant<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_wavelength<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_wavelength<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:reference_time_utc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_observed_event_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_observed_event_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:observed_event_start_tdb<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:observed_event_stop_tdb<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:earth_received_start_time_utc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:earth_received_stop_time_utc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_ring_radius<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_ring_radius<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_ring_longitude<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_ring_longitude<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_observed_ring_azimuth<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_observed_ring_azimuth<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:observed_ring_elevation<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:light_source_incidence_angle<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:lidvid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:comment<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:file_name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:local_identifier<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:creation_date_time<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:offset<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:object_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:parsing_standard_id<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:offset<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:records<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:record_delimiter<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:fields<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:groups<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:record_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:description<1> +tester_label_2.xml,tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope,1.14.0.0,Product_Observational,"French, Richard G.; McGhee-French, Colleen A.; Gordon, Mitchell K.",2020,uranus atmosphere,uranus atmosphere stellar occultation,uranus atmosphere stellar occultation time series,uranus rings,uranus rings stellar occultation,uranus rings stellar occultation radial profile,Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope.,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Science,Calibrated,Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope.,Infrared,Atmospheres,Structure,Infrared,Ring-Moon Systems,Ring Occultation Profile,Earth-based Observations of Uranus System Stellar Occultations,Observing Campaign,urn:nasa:pds:context:investigation:observing_campaign.earth-based-uranus-stellar-occultations,data_to_investigation,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,Host,urn:nasa:pds:context:facility:observatory.irtf-maunakea,is_facility,IRTF 3.2m,Telescope,urn:nasa:pds:context:telescope:irtf-maunakea.3m2,is_telescope,Generic InSb High Speed Photometer,Instrument,urn:nasa:pds:context:instrument:multi-host.generic_insp_hsp,is_instrument,Uranus,NAIF ID 799,Planet,urn:nasa:pds:context:target:planet.uranus,data_to_target,Uranus Rings,Uranian Ring System,Ring,urn:nasa:pds:context:target:ring.uranus.rings,data_to_target,SPK,ura111.bsp,SPK,vgr2.ura111.bsp,SPK,earthstns_itrf93_040916.bsp,BPC,earth_720101_031229.bpc,LSK,naif0012.tls,These kernel files were used in the generation of the products in the parent bundle. Some or all of them may not have been used directly in the generation of this product.,stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528,urn:nasa:pds:uranus_occ_support:document:earth-based-uranus-stellar-occultations-user-guide,data_to_document,The User Guide for Earth-based Uranus Stellar Occultations.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_obs_geom,data_to_browse,Diagram of the Uranus system showing the occultation track.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_earth,data_to_browse,Diagram of the view of the Earth from Uranus at mid-occultation Time.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_alt,data_to_browse,Plot of the altitude (in degrees) of Uranus and the sun relative to the horizon over the duration of the occulation.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_occult,data_to_browse,Low resolution plot of counts vs. time for the entire occultation.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_normalization,data_to_browse,Illustrates some of the processing steps involved in normalizing a time-series occultation light curve from counts per second to units of stellar flux.,urn:nasa:pds:uranus_occ_support:data:uranus_occultation_ring_fit_rfrench_20201201::1.0,data_to_resource,The fitted model of the ring system upon which the data are based.,urn:nasa:pds:uranus_occ_support,data_to_resource,The support bundle for all of the Earth-based Uranus system occultations.,u149_irtf_320cm_2200nm_counts-v-time_occult.tab,data,2021-04-05T23:18:20Z,0,264,UTF-8 Text,"Provides the column headers, separated by commas, for the data table.",264,10551,"This is a calibrated time series of an occultation by the Uranus system generated from an earth-based stellar occultation. The data are uniformly spaced in time, and normalized in units of stellar intensity. The data may include occultations by both the rings and the planet, or just the planet. The occultation by the rings, if present, is based on the equatorial ring plane radius sampled at each time point, computed from an orbit model for the ring system.",Carriage-Return Line-Feed,15,0,212,Observed Event Time,1,1,ASCII_Real,16,second,"The instant at which photons were received at the observer location. It is represented in the Universal Coordinated Time system, as a number of elapsed seconds since the time given by the reference_time_utc attribute specified in this file. It refers to the middle of the bin.",Observed Event TDB,2,19,ASCII_Real,16,second,"The instant at which photons were received at the observer location. It is represented in the 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch.",Mean Signal,3,37,ASCII_Real,16,Mean counts received by the instrument during this time bin. The background signal has not been subtracted. Refer to NOTE FLAG for guidance on validity of data.,999999999.999999,999999999.999999,Normalized Signal,4,55,ASCII_Real,10,"Normalized signal during this time bin, in units of the unocculted stellar signal, such that 1.0 corresponds to the full unocculted star signal and 0.0 corresponds to no counts from the star (a completely opaque ring). NORMALIZED SIGNAL = (MEAN_SIGNAL - BACKGROUND_MODEL)/(UNOCCULTED STAR MODEL) This is an approximate normalization, computed using regional polynomial fits. For high-precision photometry of ring events, use locally computed normalization.",999.999999,999.999999,Sky-plane F,5,67,ASCII_Real,13,Kilometer,"The east/west component of r sky (positive in the east direction), in km.",Sky-plane G,6,82,ASCII_Real,13,Kilometer,"The north/south component of r sky (positive in the north direction), in km.",Sky-plane Radius,7,97,ASCII_Real,13,Kilometer,"The length of the radius vector in the plane of the sky measured from the center of the occulting object to the position of the occulted star or spacecraft, in km.",Ring Radius,8,112,ASCII_Real,12,Kilometer,"Radial distance of the occultation intercept point (middle of the bin) from the center of the planet, in km. Distances are measured along the equator plane.",Ring Longitude,9,126,ASCII_Real,8,Degree,Inertial longitude on the ring plane corresponding to the midpoint of the bin.,Observed Ring Azimuth,10,136,ASCII_Real,9,Degree,"Angle measured at a point in the ring plane, starting from the direction of a photon heading to the observer, and ending at the direction of a local radial vector. This angle is projected into the ring plane and measured in the prograde direction.",Ring Event TDB,11,147,ASCII_Real,16,second,"The time at which photons left the ring plane. This time is earlier than the associated OBSERVED EVENT TDB by an amount equal to the light travel time. It is represented in the 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch.",Unocculted Star Model,12,165,ASCII_Real,16,Model of the unocculted star signal as a function of ring plane radius. This is necessary because of variations in atmospheric transparency and other time-dependent effects.,999999999.999999,999999999.999999,Background Model,13,183,ASCII_Real,16,Model of the non-stellar background signal (which may vary over the course of the occultation) due to instrumental offsets applied during the recording and/or sky brightness and contributions from reflected sunlight from the rings and planet.,999999999.999999,999999999.999999,Number Of Samples Per Bin,14,201,ASCII_Integer,4,The number of raw data points per bin.,Note Flag,15,207,ASCII_Integer,4,"A numerical flag that associates specific comments with individual data bins. When more than one comment applies, the values are summed. The values and their associated comments are: 0: radius and longitude are based on Uranus equatorial plane. 1: radius and longitude are based inclined ring plane model referred to in metadata associated with file. 2: observed ring occultation event 4: telescope pointed to nearby sky for background level check 8: input signal from time source, not from photometer on telescope 16: line of sight intersects planet 32: dawn/dusk - rapid background level change; no background or star intensity estimate. 64: unreliable data (e.g., clouds, telescope guiding error, or instrument adjustment); no background or star intensity estimate." diff --git a/test_files/extra_file_info_success_2.csv b/test_files/extra_file_info_success_2.csv index 0f6163f..028f6f6 100644 --- a/test_files/extra_file_info_success_2.csv +++ b/test_files/extra_file_info_success_2.csv @@ -1,4 +1,4 @@ -filename,/pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1> +filename,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1> tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0 tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0 tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0 diff --git a/test_files/simplify_xpaths_success_1.csv b/test_files/simplify_xpaths_success_1.csv index dbcb476..f7b7e89 100644 --- a/test_files/simplify_xpaths_success_1.csv +++ b/test_files/simplify_xpaths_success_1.csv @@ -1,2 +1,2 @@ -pds:logical_identifier,pds:version_id,pds:title,pds:information_model_version,pds:name,/pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:type,pds:lid_reference,pds:reference_type +pds:logical_identifier,pds:version_id,pds:title,pds:information_model_version,pds:name,pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:type,pds:lid_reference,pds:reference_type urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,1.11.0.0,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host diff --git a/test_files/simplify_xpaths_success_2.csv b/test_files/simplify_xpaths_success_2.csv index 81897b4..58e70a7 100644 --- a/test_files/simplify_xpaths_success_2.csv +++ b/test_files/simplify_xpaths_success_2.csv @@ -1,4 +1,4 @@ -pds:name,/pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:name<1>,/pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:name<1> +pds:name,pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:name<1> Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN Cassini-Huygens,NaN,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,Dark Sky,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN Earth-based Observations of Uranus System Stellar Occultations,NaN,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,IRTF 3.2m,Uranus,Generic InSb High Speed Photometer,Uranus Rings,Observed Event Time,Observed Event TDB,Mean Signal,Normalized Signal,Sky-plane F,Sky-plane G,Sky-plane Radius,Ring Radius,Ring Longitude,Observed Ring Azimuth,Ring Event TDB,Unocculted Star Model,Background Model,Number Of Samples Per Bin,Note Flag diff --git a/test_files/simplify_xpaths_success_3.csv b/test_files/simplify_xpaths_success_3.csv index 6ddcae1..0b16b98 100644 --- a/test_files/simplify_xpaths_success_3.csv +++ b/test_files/simplify_xpaths_success_3.csv @@ -1,2 +1,2 @@ -rings:occultation_type,rings:occultation_direction,rings:time_series_direction,rings:planetary_occultation_flag,rings:data_quality_score,rings:ring_plane,rings:star_name,rings:fresnel_scale,rings:projected_star_diameter,rings:sigma_projected_star_diameter,rings:fractional_error_star_counts,rings:time_constant_type,rings:time_constant,rings:sigma_time_constant,rings:minimum_wavelength,rings:maximum_wavelength,rings:reference_time_utc,rings:minimum_observed_event_time,rings:maximum_observed_event_time,rings:observed_event_start_tdb,rings:observed_event_stop_tdb,rings:earth_received_start_time_utc,rings:earth_received_stop_time_utc,rings:minimum_ring_radius,rings:maximum_ring_radius,rings:minimum_ring_longitude,rings:maximum_ring_longitude,rings:minimum_observed_ring_azimuth,rings:maximum_observed_ring_azimuth,rings:observed_ring_elevation,rings:light_source_incidence_angle -stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528 \ No newline at end of file +rings:occultation_type,rings:occultation_direction,rings:time_series_direction,rings:planetary_occultation_flag,rings:data_quality_score,rings:ring_plane,rings:star_name,rings:fresnel_scale,rings:projected_star_diameter,rings:sigma_projected_star_diameter,rings:fractional_error_star_counts,rings:time_constant_type,rings:time_constant,rings:sigma_time_constant,rings:minimum_wavelength,rings:maximum_wavelength,rings:reference_time_utc,rings:minimum_observed_event_time,rings:maximum_observed_event_time,rings:observed_event_start_tdb,rings:observed_event_stop_tdb,rings:earth_received_start_time_utc,rings:earth_received_stop_time_utc,rings:minimum_ring_radius,rings:maximum_ring_radius,rings:minimum_ring_longitude,rings:maximum_ring_longitude,rings:minimum_observed_ring_azimuth,rings:maximum_observed_ring_azimuth,rings:observed_ring_elevation,rings:light_source_incidence_angle +stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528 diff --git a/test_files/simplify_xpaths_success_4.csv b/test_files/simplify_xpaths_success_4.csv index 8e8aa57..7655f49 100644 --- a/test_files/simplify_xpaths_success_4.csv +++ b/test_files/simplify_xpaths_success_4.csv @@ -1,2 +1,2 @@ -cassini:mission_phase_name,cassini:spacecraft_clock_count_partition,cassini:spacecraft_clock_start_count,cassini:spacecraft_clock_stop_count,cassini:limitations,cassini:antiblooming_state_flag,cassini:bias_strip_mean,cassini:command_file_name,cassini:command_sequence_number,cassini:dark_strip_mean,cassini:data_conversion_type,cassini:delayed_readout_flag,cassini:detector_temperature,cassini:electronics_bias,cassini:expected_maximum_full_well,cassini:expected_maximum_DN_sat,cassini:expected_packets,cassini:exposure_duration,cassini:filter_name_1,cassini:filter_name_2,cassini:filter_temperature,cassini:flight_software_version_id,cassini:gain_mode_id,cassini:ground_software_version_id,cassini:image_mid_time,cassini:image_number,cassini:image_time,cassini:image_observation_type,cassini:instrument_data_rate,cassini:inst_cmprs_type,cassini:inst_cmprs_param_malgo,cassini:inst_cmprs_param_tb,cassini:inst_cmprs_param_blocks,cassini:inst_cmprs_param_quant,cassini:inst_cmprs_rate_expected_bits,cassini:inst_cmprs_rate_actual_bits,cassini:inst_cmprs_ratio,cassini:light_flood_state_flag,cassini:method_description,cassini:missing_lines,cassini:missing_packet_flag,cassini:observation_id,cassini:optics_temperature_front,cassini:optics_temperature_back,cassini:order_number,cassini:parallel_clock_voltage_index,cassini:pds3_product_creation_time,cassini:pds3_product_version_type,cassini:pds3_target_desc,cassini:pds3_target_list,cassini:pds3_target_name,cassini:pre-pds_version_number,cassini:prepare_cycle_index,cassini:readout_cycle_index,cassini:received_packets,cassini:sensor_head_electronics_temperature,cassini:sequence_id,cassini:sequence_number,cassini:sequence_title,cassini:shutter_mode_id,cassini:shutter_state_id,cassini:start_time_doy,cassini:stop_time_doy,cassini:telemetry_format_id,cassini:valid_maximum_full_well,cassini:valid_maximum_DN_sat -EARTH-JUPITER CRUISE,1,1357539630.068,1357539630.123,N/A,ON,6.870842,ISS_C23ST_OCCULT001_UVIS_B.icf,730,0,TABLE,NO,-89.243546,112,-1,-1,-1,220,P0,GRN,-0.468354,1.2,29,ISS V7.0 11-22-2000,2001-007T06:08:48.013,1357539630,2001-007T06:08:48.013,SCIENCE,182.783997,LOSSLESS,999,999,999,999,-1,-1,3.150372,ON,Information not provided,0,NO,UVIS_C23ST_OCCULT001_PRIME_C,0.71269,-999,-999,9,2001-008T10:55:49.000,FINAL,Information not provided,N/A,DARK SKY,1,0,11,-1,1.633024,C23,-1,ISS_C23ST_OCCULT001_UVIS,NACONLY,ENABLED,2001-007T06:08:47.793,2001-007T06:08:48.013,Information not provided,-1,-1 \ No newline at end of file +cassini:mission_phase_name,cassini:spacecraft_clock_count_partition,cassini:spacecraft_clock_start_count,cassini:spacecraft_clock_stop_count,cassini:limitations,cassini:antiblooming_state_flag,cassini:command_file_name,cassini:command_sequence_number,cassini:dark_strip_mean,cassini:data_conversion_type,cassini:delayed_readout_flag,cassini:detector_temperature,cassini:electronics_bias,cassini:expected_maximum_full_well,cassini:expected_maximum_DN_sat,cassini:expected_packets,cassini:exposure_duration,cassini:filter_name_1,cassini:filter_name_2,cassini:filter_temperature,cassini:flight_software_version_id,cassini:gain_mode_id,cassini:ground_software_version_id,cassini:image_mid_time,cassini:image_number,cassini:image_time,cassini:image_observation_type,cassini:instrument_data_rate,cassini:inst_cmprs_type,cassini:inst_cmprs_param_malgo,cassini:inst_cmprs_param_tb,cassini:inst_cmprs_param_blocks,cassini:inst_cmprs_param_quant,cassini:inst_cmprs_rate_expected_bits,cassini:inst_cmprs_rate_actual_bits,cassini:inst_cmprs_ratio,cassini:light_flood_state_flag,cassini:method_description,cassini:missing_lines,cassini:missing_packet_flag,cassini:observation_id,cassini:optics_temperature_front,cassini:optics_temperature_back,cassini:order_number,cassini:parallel_clock_voltage_index,cassini:pds3_product_creation_time,cassini:pds3_product_version_type,cassini:pds3_target_desc,cassini:pds3_target_list,cassini:pds3_target_name,cassini:pre-pds_version_number,cassini:prepare_cycle_index,cassini:readout_cycle_index,cassini:received_packets,cassini:sensor_head_electronics_temperature,cassini:sequence_id,cassini:sequence_number,cassini:sequence_title,cassini:shutter_mode_id,cassini:shutter_state_id,cassini:start_time_doy,cassini:stop_time_doy,cassini:telemetry_format_id,cassini:valid_maximum_full_well,cassini:valid_maximum_DN_sat +EARTH-JUPITER CRUISE,1,1357539630.068,1357539630.123,N/A,ON,ISS_C23ST_OCCULT001_UVIS_B.icf,730,0.,TABLE,NO,-89.243546,112,-1,-1,-1,220.,P0,GRN,-0.468354,1.2,29,ISS V7.0 11-22-2000,2001-007T06:08:48.013,1357539630,2001-007T06:08:48.013,SCIENCE,182.783997,LOSSLESS,999,999,999,999,-1.,-1.,3.150372,ON,Information not provided,0,NO,UVIS_C23ST_OCCULT001_PRIME_C,0.71269,-999.,-999,9,2001-008T10:55:49.000,FINAL,Information not provided,N/A,DARK SKY,1,0,11,-1,1.633024,C23,-1,ISS_C23ST_OCCULT001_UVIS,NACONLY,ENABLED,2001-007T06:08:47.793,2001-007T06:08:48.013,Information not provided,-1,-1 diff --git a/test_files/sort_by_success.csv b/test_files/sort_by_success.csv index d10ac4d..f819dbb 100644 --- a/test_files/sort_by_success.csv +++ b/test_files/sort_by_success.csv @@ -1,4 +1,4 @@ -/pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1> +pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1> urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared diff --git a/test_files/sort_by_success_2.csv b/test_files/sort_by_success_2.csv index d10ac4d..f819dbb 100644 --- a/test_files/sort_by_success_2.csv +++ b/test_files/sort_by_success_2.csv @@ -1,4 +1,4 @@ -/pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,/pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,/pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1> +pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1> urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared diff --git a/test_files/tester_label_3.xml b/test_files/tester_label_3.xml index 400b67c..b9dc36c 100644 --- a/test_files/tester_label_3.xml +++ b/test_files/tester_label_3.xml @@ -103,9 +103,9 @@ 112 2001-007T19:58:04.616 2001-007T19:58:32.295 - -1 - -1 - -1 + -1 + -1 + -1 220. P0 GRN @@ -120,12 +120,12 @@ 182.783997 FULL LOSSLESS - 999 - 999 - 999 - 999 - -1. - -1. + 999 + 999 + 999 + 999 + -1. + -1. 3.150372 ON Information not provided @@ -134,7 +134,7 @@ UVIS_C23ST_OCCULT001_PRIME_C 0.71269 -999. - -999 + -999 9 2001-008T10:55:49.000 FINAL @@ -144,18 +144,18 @@ 1 0 11 - -1 + -1 1.633024 C23 - -1 + -1 ISS_C23ST_OCCULT001_UVIS NACONLY ENABLED 2001-007T06:08:47.793 2001-007T06:08:48.013 Information not provided - -1 - -1 + -1 + -1 @@ -218,7 +218,7 @@ a468693f67593587d224116c5ade995a - +
0 @@ -226,7 +226,7 @@ VICAR2
- + telemetry-table diff --git a/tests/test_pds4_create_xml_index.py b/tests/test_pds4_create_xml_index.py index e89a528..4cfec7c 100644 --- a/tests/test_pds4_create_xml_index.py +++ b/tests/test_pds4_create_xml_index.py @@ -104,7 +104,7 @@ def test_default_value_for_nil(): def test_split_into_elements(): - xpath = '/pds:Product_Observational/pds:Observation_Area[1]/pds:Observing_System[1]/pds:name[1]' + xpath = '/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1>' pieces = tools.split_into_elements(xpath) assert pieces == ('pds:Observation_Area', 'pds:Observing_System', 'pds:name') @@ -129,51 +129,51 @@ def test_process_schema_location(): 'golden_file,new_file,cmd_line', [ # simple test cases - # (str(test_files_dir / 'elements_file_success.csv'), - # 'elements_file.csv', - # [ - # str(test_files_dir), - # 'tester_label_1.xml', - # '--elements-file', - # str(root_dir / 'samples/sample_elements.txt'), - # '--output-file', - # ] - # ), - # # Okay, basic capture - # (str(test_files_dir / 'elements_file_success_2.csv'), - # 'elements_file_2.csv', - # [ - # str(test_files_dir), - # 'tester_label_2.xml', - # '--elements-file', - # str(root_dir / 'samples/element_2.txt'), - # '--output-file', - # ] - # ), - # # Multiple partial captures - # (str(test_files_dir / 'elements_file_success_3.csv'), - # 'elements_file_3.csv', - # [ - # str(test_files_dir), - # 'tester_label_2.xml', - # 'tester_label_3.xml', - # '--elements-file', - # str(root_dir / 'samples/element_3.txt'), - # '--output-file', - # ] - # ), - - # # exclusion test - # (str(test_files_dir / 'elements_file_success_4.csv'), - # 'elements_file_4.csv', - # [ - # str(test_files_dir), - # 'tester_label_*.xml', - # '--elements-file', - # str(root_dir / 'samples/element_4.txt'), - # '--output-file', - # ] - # ) + (str(test_files_dir / 'elements_file_success.csv'), + 'elements_file.csv', + [ + str(test_files_dir), + 'tester_label_1.xml', + '--elements-file', + str(root_dir / 'samples/sample_elements.txt'), + '--output-file', + ] + ), + # Okay, basic capture + (str(test_files_dir / 'elements_file_success_2.csv'), + 'elements_file_2.csv', + [ + str(test_files_dir), + 'tester_label_2.xml', + '--elements-file', + str(root_dir / 'samples/element_2.txt'), + '--output-file', + ] + ), + # Multiple partial captures + (str(test_files_dir / 'elements_file_success_3.csv'), + 'elements_file_3.csv', + [ + str(test_files_dir), + 'tester_label_2.xml', + 'tester_label_3.xml', + '--elements-file', + str(root_dir / 'samples/element_3.txt'), + '--output-file', + ] + ), + + # exclusion test + (str(test_files_dir / 'elements_file_success_4.csv'), + 'elements_file_4.csv', + [ + str(test_files_dir), + 'tester_label_*.xml', + '--elements-file', + str(root_dir / 'samples/element_4.txt'), + '--output-file', + ] + ) ] @@ -230,32 +230,31 @@ def test_elements_file(golden_file, new_file, cmd_line): str(root_dir / 'samples/elements_xpath_simplify.txt'), '--output-file', ] + ), + + (str(test_files_dir / 'simplify_xpaths_success_3.csv'), + 'simplify_xpaths_3.csv', + [ + str(test_files_dir), + 'tester_label_2.xml', + '--simplify-xpaths', + '--elements-file', + str(root_dir / 'samples/elements_xpath_simplify_2.txt'), + '--output-file', + ] + ), + + (str(test_files_dir / 'simplify_xpaths_success_4.csv'), + 'simplify_xpaths_3.csv', + [ + str(test_files_dir), + 'tester_label_3.xml', + '--simplify-xpaths', + '--elements-file', + str(root_dir / 'samples/elements_xpath_simplify_3.txt'), + '--output-file', + ] ) - # Test commented out until main code is fixed - # (str(test_files_dir / 'simplify_xpaths_success_3.csv'), - # 'simplify_xpaths_3.csv', - # [ - # str(test_files_dir), - # 'tester_label_2.xml', - # '--simplify-xpaths', - # '--elements-file', - # str(root_dir / 'samples/elements_xpath_simplify_2.txt'), - # '--output-file', - # ] - # ) - - # Test commented out until main code is fixed - # (str(test_files_dir / 'simplify_xpaths_success_4.csv'), - # 'simplify_xpaths_3.csv', - # [ - # str(test_files_dir), - # 'tester_label_3.xml', - # '--simplify-xpaths', - # '--elements-file', - # str(root_dir / 'samples/elements_xpath_simplify_3.txt'), - # '--output-file', - # ] - # ) ] ) @@ -415,7 +414,7 @@ def test_clean_header_field_names(golden_file, new_file, cmd_line): '--elements-file', str(root_dir / 'samples/elements_clean_header_field_names.txt'), '--sort-by', - '/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1]', + 'pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>', '--output-file', ] ), @@ -429,8 +428,8 @@ def test_clean_header_field_names(golden_file, new_file, cmd_line): '--elements-file', str(root_dir / 'samples/elements_clean_header_field_names.txt'), '--sort-by', - '/pds:Product_Observational/pds:Identification_Area[1]/pds:logical_identifier[1]', - '/pds:Product_Observational/pds:Observation_Area[1]/pds:Time_Coordinates[1]/pds:start_date_time[1]', + 'pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>', + 'pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>', '--output-file', ] ) From a50e0c6665d314720742ae18d480cb13632c889e Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 23 Apr 2024 08:19:48 -0700 Subject: [PATCH 22/46] removing .DS_Store files --- pds4indextools/.DS_Store | Bin 6148 -> 0 bytes samples/.DS_Store | Bin 6148 -> 0 bytes test_files/.DS_Store | Bin 8196 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 pds4indextools/.DS_Store delete mode 100644 samples/.DS_Store delete mode 100644 test_files/.DS_Store diff --git a/pds4indextools/.DS_Store b/pds4indextools/.DS_Store deleted file mode 100644 index b9e343405d5262ba6c4ec623e8375feac9226f58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%SyyR5UkccEO=Qw?M0X`2nc>aSk{AQKS15bVIgirSI}Gj$WPR&>2Woht0K}J zda9?VyC*5gJOJ42adiqz0F0?ZlQAH24-OraV4>w2S6Jd6YusQrQ0OnZ^zKvKVTA{r z;q&{i*?Yn*8sY|9My%Pd82fzDw97@)E|@FgUZ~Y;7FxjZzTQXP4lSRCvsAg-reDKO zzSPKtq6r3qfnXpQ2nK$D0q)t7@sVS+!9Xw&4D1=u`jDu?x?ty+mku^MK5Kj=l+f0Z zSeOdd1v^KMP|Q<_o@(WaVV+KZDsgqe&e79hd1lrrGrwP6EYD7V%HgouG1_1t80a%_ z=-r9-|8xE_gO~h%O7wz(VBnuIV59lve8!I|d+WE)(_WjX*Hnq(IvEt&y+Z&yT1TdN d(8rT(#?=KoM^%wOrxW8KkO_$<82AMS-T&`@Px<64n6C3J^Q?yXTw)%V zX1n0~w#FPIj(f-Y0vT5_=ZZ4i;;AOF z_Lw9RrTMXGW(t@BrofLWz&%^6C0{HvQ@|83 z1vV9s??Xfvj1}{M{?oz29|4F>c6(!8eiVfhDaMLjiTC@QcMnr+$tFY3?#MUu5l0aM^#Dd3uet3jVj z(!F(SakAG&^lQ49#N`1$DXjRdn6a`IAJM(BKavVDR?Gvkhh{$lUIr^nfnQbN1B_O6 A`2YX_ diff --git a/test_files/.DS_Store b/test_files/.DS_Store deleted file mode 100644 index 47f875b1e4c09c721a6446901740ddc50bef71b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHM%Sr=55Uf!Tf*|TCB7r@56nuQZ8uZ}V4~R)jbYV4;7>T#N`w#wt-{(oIdj{F; zLlPn)*aI`QvpZeWQ`56cCjeY)a(xIi0IahLZf&rsDDqrtsjP%Mn?y%@;2v$ zYfS-Dpsax8?)&H=)vP_AzxOd>Ha|eZCn@v!HnaNgGvItCb)bghkyl^Zg@=Coa$xlZ5H zLL4-?^9iHifjghj%V&ByWv|0^+-g+J8OFP3(#kpPQCm?s z!3}px)J|qkn);S!*eNiiTyIz7*YC-cilhY&o}d{ozT=RURB&h<&g+N7autU}U7mv* zij4P&_Wf5KtT6?aRbbT7zdE^}y`yoJOu*MYlRRul)!1XSS From 197f9f034fcfabb79f5ff5ac524e0e7da336d246 Mon Sep 17 00:00:00 2001 From: esimpsons3ti <110258030+esimpsons3ti@users.noreply.github.com> Date: Tue, 23 Apr 2024 09:48:52 -0700 Subject: [PATCH 23/46] Delete .DS_Store --- .DS_Store | Bin 8196 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index a3893fc16f543bf8a8d6e2a733f765cf8dfd2824..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHML2nyH6n>MYc-_!ulO~XYkXHDD)F`BFiWDJK<2aNEnuOR5iQ3|>y%TrIddKXp zlcrH5pW(z0fIBCyNc;gVT)82B0$e#D`pwMRbv6zXm#Rut2>xnXw_Dld7?1^f$MjxSF0-9nNFbo(53)% zvNXkD+8pDKR0kGQ>}u5J#I!lFbY_-jC``=`J4dM#D{3^YVZbnOk^z~!PpW*qOv}ge z_f;y>U5r#|j#}ic1fo$7L>>AFG4>Yl`+rqYPREsxRcLR}3YB141+LQVq1NAItaJ1! zw3qM+R;fbE$LFFCp*=S+*ClF`M=>psPaz~uk0~L6zkuS5?T`P*w!R;?(>4B7ZwG#y z%+LSEM$V0%eOI-5Z~A<{W=}1NFme5mN6NtW zI8^R`?uVY(FNsd*#mcs#2duo6uh}z)hu0Tx&N??17msG0!^P|Kv(Cbe_l}P8)^y?B z_cv<0K`RtrE4GQH#~@wQ&;3?1`=9*mRiZEuVH0}NhtxeljlkZQV6p)w=MCf$YZaUu{&kD13c|pGH79A9!_6T2RkRF7HWvuVl^jrF*D=enHh7?bYa!TPV?+u zkH|F*&X&`5&rDx=^37A!Al|#Q7P!~d(FuADs8vn zhs~{oKTazC6JE0?GpZZh`{G$w^`H%%sb?L^-R+3;Q2ATi*@=0wH6U--?D4n}i6B@P zv7h)N+`b><{8>qOYbD$fm~jth&stj!#hW~efhTOX9t3Wk2Ww$TB#CHkyHVtZO?t)`+(hIAG6Qc25T^n`7F{7MtX;z zyo3e{i}5gY!!tp0z8@sRu8YCY81R1f#B+K{Gh@Kz(|`XzdkZ%!G7K07`V6qqa;03t zWA9w;kEDXkwH?%lsIo}Cu0~~oMy2CGm5u}Z|1gB?KvmilQ|xL)56W}@Apmbj=KeSL LzkW%6dGG(Hg4S?5 From 6dda4bfb354663b0180168707244473dc1fe5749 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 23 Apr 2024 10:32:35 -0700 Subject: [PATCH 24/46] Fixing filtering behavior --- pds4indextools/pds4_create_xml_index.py | 15 +++++++++++++-- samples/element_4.txt | 4 ++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index fe55072..442203d 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -128,11 +128,22 @@ def filter_dict_by_glob_patterns(input_dict, glob_patterns): if glob_patterns is not None: if not all(pat.startswith('!') for pat in glob_patterns): - print('ye') + negated = [] + positive = [] + for pat in glob_patterns: + if pat.startswith('!'): + pat = pat.replace('!', '') + negated.append(pat) + else: + positive.append(pat) for key, value in input_dict.items(): if any(fnmatch.fnmatch(key, pat) - for pat in glob_patterns) and 'cyfunction' not in key: + for pat in positive) and 'cyfunction' not in key: filtered_dict[key] = value + for key, value in list(filtered_dict.items()): + if any(fnmatch.fnmatch(key, pat) + for pat in negated) or 'cyfunction' in key: + del filtered_dict[key] else: filtered_dict = dict(input_dict) glob_patterns = [pat.replace('!', '') diff --git a/samples/element_4.txt b/samples/element_4.txt index 03312c0..923c709 100644 --- a/samples/element_4.txt +++ b/samples/element_4.txt @@ -1,2 +1,2 @@ -!**/pds:description* -!**/pds:comment* \ No newline at end of file +**/*comment* +!**/geom:comment* \ No newline at end of file From fb190b39d38c49712294c6591f4fc8c146826d79 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 23 Apr 2024 13:00:41 -0700 Subject: [PATCH 25/46] fixing unit test --- test_files/elements_file_success_4.csv | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test_files/elements_file_success_4.csv b/test_files/elements_file_success_4.csv index ebcebcb..ae43f57 100644 --- a/test_files/elements_file_success_4.csv +++ b/test_files/elements_file_success_4.csv @@ -1,4 +1,4 @@ -pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:title<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:information_model_version<1>,pds:Product_Observational/pds:Observing_System<1>/pds:name<1>,pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:type<1>,pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:product_class<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:purpose<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:processing_level<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:discipline_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:mission_phase_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:spacecraft_clock_count_partition<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:spacecraft_clock_start_count<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:spacecraft_clock_stop_count<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:limitations<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:antiblooming_state_flag<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:bias_strip_mean<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:calibration_lamp_state_flag<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:command_file_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:command_sequence_number<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:dark_strip_mean<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:data_conversion_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:delayed_readout_flag<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:detector_temperature<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:electronics_bias<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:earth_received_start_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:earth_received_stop_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:expected_maximum_full_well<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:expected_maximum_DN_sat<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:expected_packets<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:exposure_duration<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:filter_name_1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:filter_name_2<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:filter_temperature<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:flight_software_version_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:gain_mode_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:ground_software_version_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:image_mid_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:image_number<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:image_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:image_observation_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:instrument_data_rate<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:instrument_mode_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:inst_cmprs_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:inst_cmprs_param_malgo<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:inst_cmprs_param_tb<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:inst_cmprs_param_blocks<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:inst_cmprs_param_quant<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:inst_cmprs_rate_expected_bits<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:inst_cmprs_rate_actual_bits<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:inst_cmprs_ratio<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:light_flood_state_flag<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:method_description<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:missing_lines<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:missing_packet_flag<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:observation_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:optics_temperature_front<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:optics_temperature_back<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:order_number<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:parallel_clock_voltage_index<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:pds3_product_creation_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:pds3_product_version_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:pds3_target_desc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:pds3_target_list<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:pds3_target_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:pre-pds_version_number<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:prepare_cycle_index<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:readout_cycle_index<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:received_packets<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:sensor_head_electronics_temperature<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:sequence_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:sequence_number<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:sequence_title<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:shutter_mode_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:shutter_state_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:start_time_doy<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:stop_time_doy<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:telemetry_format_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:valid_maximum_full_well<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Mission_Area<1>/cassini:Cassini<1>/cassini:ISS_Specific_Attributes<1>/cassini:valid_maximum_DN_sat<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings<1>/pds:Local_Internal_Reference<1>/pds:local_identifier_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings<1>/pds:Local_Internal_Reference<1>/pds:local_reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings<1>/disp:Display_Direction<1>/disp:horizontal_display_axis<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings<1>/disp:Display_Direction<1>/disp:horizontal_display_direction<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings<1>/disp:Display_Direction<1>/disp:vertical_display_axis<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/disp:Display_Settings<1>/disp:Display_Direction<1>/disp:vertical_display_direction<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:reference_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:file_name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:creation_date_time<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:md5_checksum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:offset<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:object_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:parsing_standard_id<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:local_identifier<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:offset<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:axes<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:axis_index_order<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:Element_Array<1>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:Axis_Array<1>/pds:axis_name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:Axis_Array<1>/pds:elements<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array<1>/pds:Axis_Array<1>/pds:sequence_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:local_identifier<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:offset<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:axes<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:axis_index_order<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Element_Array<1>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Element_Array<1>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<1>/pds:axis_name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<1>/pds:elements<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<1>/pds:sequence_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<2>/pds:axis_name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<2>/pds:elements<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D_Image<1>/pds:Axis_Array<2>/pds:sequence_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:offset<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:axes<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:axis_index_order<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Element_Array<1>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<1>/pds:axis_name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<1>/pds:elements<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<1>/pds:sequence_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<2>/pds:axis_name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<2>/pds:elements<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Array_2D<1>/pds:Axis_Array<2>/pds:sequence_number<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:author_list<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:publication_year<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<2>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<3>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<4>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<5>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<6>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:facet1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:discipline_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:facet1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:alternate_designation<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:alternate_designation<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_2<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_2<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_3<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_3<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_4<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_4<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:comment<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:occultation_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:occultation_direction<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:time_series_direction<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:planetary_occultation_flag<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:data_quality_score<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:ring_plane<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:star_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:fresnel_scale<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:projected_star_diameter<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:sigma_projected_star_diameter<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:fractional_error_star_counts<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:time_constant_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:time_constant<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:sigma_time_constant<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_wavelength<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_wavelength<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:reference_time_utc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_observed_event_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_observed_event_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:observed_event_start_tdb<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:observed_event_stop_tdb<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:earth_received_start_time_utc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:earth_received_stop_time_utc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_ring_radius<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_ring_radius<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_ring_longitude<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_ring_longitude<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_observed_ring_azimuth<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_observed_ring_azimuth<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:observed_ring_elevation<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:light_source_incidence_angle<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:lidvid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:reference_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:local_identifier<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:offset<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:records<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:record_delimiter<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:fields<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:groups<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:record_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_length<1> -urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,1.11.0.0,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN -urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,Cassini ISS Image 1357539630n.img,1.11.0.0,NaN,NaN,NaN,NaN,NaN,Product_Observational,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Science,Raw,Near Infrared,Ring-Moon Systems,Cassini-Huygens,Mission,urn:nasa:pds:context:investigation:mission.cassini-huygens,data_to_investigation,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,Instrument,urn:nasa:pds:context:instrument:issna.co,is_instrument,Dark Sky,Calibration Field,urn:nasa:pds:context:target:calibration_field.dark_sky,data_to_target,EARTH-JUPITER CRUISE,1,1357539630.068,1357539630.123,N/A,ON,6.870842,N/A,ISS_C23ST_OCCULT001_UVIS_B.icf,730,0.,TABLE,NO,-89.243546,112,2001-007T19:58:04.616,2001-007T19:58:32.295,-1,-1,-1,220.,P0,GRN,-0.468354,1.2,29,ISS V7.0 11-22-2000,2001-007T06:08:48.013,1357539630,2001-007T06:08:48.013,SCIENCE,182.783997,FULL,LOSSLESS,999,999,999,999,-1.,-1.,3.150372,ON,Information not provided,0,NO,UVIS_C23ST_OCCULT001_PRIME_C,0.71269,-999.,-999,9,2001-008T10:55:49.000,FINAL,Information not provided,N/A,DARK SKY,1,0,11,-1,1.633024,C23,-1,ISS_C23ST_OCCULT001_UVIS,NACONLY,ENABLED,2001-007T06:08:47.793,2001-007T06:08:48.013,Information not provided,-1,-1,image,display_settings_to_array,Sample,Left to Right,Line,Top to Bottom,urn:nasa:pds:cassini_iss_cruise:data_raw:index,data_to_resource,urn:nasa:pds:cassini_iss_cruise:data_raw:body-geometry,data_to_resource,urn:nasa:pds:cassini_iss_cruise:body-inventory,data_to_resource,urn:nasa:pds:cassini_iss_cruise:ring-geometry,data_to_resource,urn:nasa:pds:cassini_iss_saturn:document:iss-data-user-guide,data_to_document,urn:nasa:pds:cassini_iss_cruise:browse_raw:1357539630n-full,data_to_browse,1357539630n.img,2019-06-12T22:05:54Z,a468693f67593587d224116c5ade995a,0,4096,VICAR2,telemetry-table,4096,1,Last Index Fastest,UnsignedByte,telemetry,2,1,image,6144,2,Last Index Fastest,UnsignedByte,DN,Line,1024,1,Sample,1024,2,1054720,2,Last Index Fastest,UnsignedByte,Line,1024,1,prefix-sample,24,2,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN -urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope,1.14.0.0,NaN,NaN,NaN,NaN,NaN,Product_Observational,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Science,Calibrated,Infrared,Atmospheres,Earth-based Observations of Uranus System Stellar Occultations,Observing Campaign,urn:nasa:pds:context:investigation:observing_campaign.earth-based-uranus-stellar-occultations,data_to_investigation,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,Host,urn:nasa:pds:context:facility:observatory.irtf-maunakea,is_facility,IRTF 3.2m,Telescope,urn:nasa:pds:context:telescope:irtf-maunakea.3m2,is_telescope,Uranus,Planet,urn:nasa:pds:context:target:planet.uranus,data_to_target,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,urn:nasa:pds:uranus_occ_support:document:earth-based-uranus-stellar-occultations-user-guide,data_to_document,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_obs_geom,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_earth,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_alt,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_occult,data_to_browse,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_normalization,data_to_browse,u149_irtf_320cm_2200nm_counts-v-time_occult.tab,2021-04-05T23:18:20Z,NaN,0,264,UTF-8 Text,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,"French, Richard G.; McGhee-French, Colleen A.; Gordon, Mitchell K.",2020,uranus atmosphere,uranus atmosphere stellar occultation,uranus atmosphere stellar occultation time series,uranus rings,uranus rings stellar occultation,uranus rings stellar occultation radial profile,Structure,Infrared,Ring-Moon Systems,Ring Occultation Profile,Generic InSb High Speed Photometer,Instrument,urn:nasa:pds:context:instrument:multi-host.generic_insp_hsp,is_instrument,NAIF ID 799,Uranus Rings,Uranian Ring System,Ring,urn:nasa:pds:context:target:ring.uranus.rings,data_to_target,SPK,ura111.bsp,SPK,vgr2.ura111.bsp,SPK,earthstns_itrf93_040916.bsp,BPC,earth_720101_031229.bpc,LSK,naif0012.tls,These kernel files were used in the generation of the products in the parent bundle. Some or all of them may not have been used directly in the generation of this product.,stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528,urn:nasa:pds:uranus_occ_support:data:uranus_occultation_ring_fit_rfrench_20201201::1.0,data_to_resource,urn:nasa:pds:uranus_occ_support,data_to_resource,data,264,10551,Carriage-Return Line-Feed,15,0,212,Observed Event Time,1,1,ASCII_Real,16,second,Observed Event TDB,2,19,ASCII_Real,16,second,Mean Signal,3,37,ASCII_Real,16,999999999.999999,999999999.999999,Normalized Signal,4,55,ASCII_Real,10,999.999999,999.999999,Sky-plane F,5,67,ASCII_Real,13,Kilometer,Sky-plane G,6,82,ASCII_Real,13,Kilometer,Sky-plane Radius,7,97,ASCII_Real,13,Kilometer,Ring Radius,8,112,ASCII_Real,12,Kilometer,Ring Longitude,9,126,ASCII_Real,8,Degree,Observed Ring Azimuth,10,136,ASCII_Real,9,Degree,Ring Event TDB,11,147,ASCII_Real,16,second,Unocculted Star Model,12,165,ASCII_Real,16,999999999.999999,999999999.999999,Background Model,13,183,ASCII_Real,16,999999999.999999,999999999.999999,Number Of Samples Per Bin,14,201,ASCII_Integer,4,Note Flag,15,207,ASCII_Integer,4 +pds:Product_Observational/pds:Observation_Area<1>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:comment<1> +NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN +"This data file was migrated from the original PDS3 file: COISS_1004/data/1357539422_1357559280/N1357539630_1.IMG The content of this data file was reorganized in order to make it PDS4 compliant. Specifically, prefix bytes were removed from each line of the image and appended at the end. The resulting data file remains compatible with the VICAR standard. Values for instrument attributes have been derived from the corresponding values in the original PDS3 label.",The index table of basic parameters associated with each observation.,The index table of body surface geometry information associated with each observation.,An index listing every Saturn system body expected to fall within each field of view.,The index table of ring geometry information associated with each observation.,The ISS Data User's Guide,The browse image in JPEG format that illustrates the scientific content of this image.,NaN,NaN +NaN,The User Guide for Earth-based Uranus Stellar Occultations.,Diagram of the Uranus system showing the occultation track.,Diagram of the view of the Earth from Uranus at mid-occultation Time.,Plot of the altitude (in degrees) of Uranus and the sun relative to the horizon over the duration of the occulation.,Low resolution plot of counts vs. time for the entire occultation.,Illustrates some of the processing steps involved in normalizing a time-series occultation light curve from counts per second to units of stellar flux.,The fitted model of the ring system upon which the data are based.,The support bundle for all of the Earth-based Uranus system occultations. From 2c98bf735a7f0fadb4067193c6696d3c8c5fe5aa Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 23 Apr 2024 14:02:16 -0700 Subject: [PATCH 26/46] added --dump-available-elements command line argument --- pds4indextools/pds4_create_xml_index.py | 40 +++++++++++++++++-------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index 442203d..e44f915 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -137,24 +137,20 @@ def filter_dict_by_glob_patterns(input_dict, glob_patterns): else: positive.append(pat) for key, value in input_dict.items(): - if any(fnmatch.fnmatch(key, pat) - for pat in positive) and 'cyfunction' not in key: + if any(fnmatch.fnmatch(key, pat) for pat in positive): filtered_dict[key] = value for key, value in list(filtered_dict.items()): - if any(fnmatch.fnmatch(key, pat) - for pat in negated) or 'cyfunction' in key: + if any(fnmatch.fnmatch(key, pat) for pat in negated): del filtered_dict[key] else: filtered_dict = dict(input_dict) glob_patterns = [pat.replace('!', '') for pat in glob_patterns] for key in list(filtered_dict.keys()): - if any(fnmatch.fnmatch(key, pat) - for pat in glob_patterns) or 'cyfunction' in key: + if any(fnmatch.fnmatch(key, pat) for pat in glob_patterns): del filtered_dict[key] else: for key, value in input_dict.items(): - if 'cyfunction' not in key: filtered_dict[key] = value return filtered_dict @@ -586,6 +582,10 @@ def main(cmd_line=None): parser.add_argument('--config-file', type=str, help='Read a user-specified configuration file.. File must be a ' '.ini file.') + parser.add_argument('--dump-available-elements', action='store_true', + help='Give a .txt file of all elements within given label ' + 'file(s). This file can be used as a base file for ' + '--elements-file.') if cmd_line is None: args = parser.parse_args() @@ -649,8 +649,6 @@ def main(cmd_line=None): key_new = key_new.replace(']', '>') label_results[key_new] = label_results.pop(key) - label_results = filter_dict_by_glob_patterns(label_results, elements_to_scrape) - for key in list(label_results.keys()): parts = key.split('/') new_parts = [] @@ -663,11 +661,16 @@ def main(cmd_line=None): key_new = '/'.join(new_parts[1:]) label_results[key_new] = label_results.pop(key) - + for key in list(label_results.keys()): + if 'cyfunction' in key: + del label_results[key] + xpath_map = renumber_xpaths(label_results.keys()) for old_xpath, new_xpath in xpath_map.items(): label_results[new_xpath] = label_results.pop(old_xpath) + label_results = filter_dict_by_glob_patterns(label_results, elements_to_scrape) + if args.simplify_xpaths: elements = () xpath_elements = [] @@ -708,8 +711,21 @@ def main(cmd_line=None): else: output_path = args.directorypath / Path('index_file.csv') - verboseprint(f'Output file generated at {output_path}') - write_results_to_csv(all_results, args, output_path) + + if args.dump_available_elements: + verboseprint(f'Elements file generated at {output_path}') + elements = [] + for label in all_results: + for values in label.values(): + for x in values.keys(): + elements.append(x) + with open(output_path, 'w') as file: + for item in elements: + file.write("%s\n" % item) + else: + + verboseprint(f'Index file generated at {output_path}') + write_results_to_csv(all_results, args, output_path) if __name__ == '__main__': From e2249f4be8bbdc8f6cb0e1d25bc6cefed213b25f Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Mon, 29 Apr 2024 13:55:43 -0700 Subject: [PATCH 27/46] Moving files into new subdirectories --- .../clean_header_field_names_success_1.csv | 2 + .../clean_header_field_names_success_2.csv | 3 + test_files/expected/elements_file_success.csv | 2 + .../expected/elements_file_success_2.csv | 2 + .../expected/elements_file_success_3.csv | 3 + .../expected/elements_file_success_4.csv | 4 + .../expected/extra_file_info_success_1.csv | 2 + .../expected/extra_file_info_success_2.csv | 4 + .../expected/simplify_xpaths_success_1.csv | 2 + .../expected/simplify_xpaths_success_2.csv | 4 + .../expected/simplify_xpaths_success_3.csv | 2 + .../expected/simplify_xpaths_success_4.csv | 2 + test_files/expected/sort_by_success.csv | 4 + test_files/expected/sort_by_success_2.csv | 4 + test_files/expected/tester_config.ini | 17 + test_files/labels/tester_label_1.xml | 26 ++ test_files/labels/tester_label_2.xml | 442 ++++++++++++++++++ test_files/labels/tester_label_3.xml | 290 ++++++++++++ test_files/samples/element_2.txt | 1 + test_files/samples/element_3.txt | 2 + test_files/samples/element_4.txt | 2 + .../samples/element_extra_file_info.txt | 2 + .../elements_clean_header_field_names.txt | 5 + .../samples/elements_xpath_simplify.txt | 1 + .../samples/elements_xpath_simplify_2.txt | 1 + .../samples/elements_xpath_simplify_3.txt | 69 +++ test_files/samples/sample_elements.txt | 3 + 27 files changed, 901 insertions(+) create mode 100644 test_files/expected/clean_header_field_names_success_1.csv create mode 100644 test_files/expected/clean_header_field_names_success_2.csv create mode 100644 test_files/expected/elements_file_success.csv create mode 100644 test_files/expected/elements_file_success_2.csv create mode 100644 test_files/expected/elements_file_success_3.csv create mode 100644 test_files/expected/elements_file_success_4.csv create mode 100644 test_files/expected/extra_file_info_success_1.csv create mode 100644 test_files/expected/extra_file_info_success_2.csv create mode 100644 test_files/expected/simplify_xpaths_success_1.csv create mode 100644 test_files/expected/simplify_xpaths_success_2.csv create mode 100644 test_files/expected/simplify_xpaths_success_3.csv create mode 100644 test_files/expected/simplify_xpaths_success_4.csv create mode 100644 test_files/expected/sort_by_success.csv create mode 100644 test_files/expected/sort_by_success_2.csv create mode 100644 test_files/expected/tester_config.ini create mode 100644 test_files/labels/tester_label_1.xml create mode 100644 test_files/labels/tester_label_2.xml create mode 100644 test_files/labels/tester_label_3.xml create mode 100644 test_files/samples/element_2.txt create mode 100644 test_files/samples/element_3.txt create mode 100644 test_files/samples/element_4.txt create mode 100644 test_files/samples/element_extra_file_info.txt create mode 100644 test_files/samples/elements_clean_header_field_names.txt create mode 100644 test_files/samples/elements_xpath_simplify.txt create mode 100644 test_files/samples/elements_xpath_simplify_2.txt create mode 100644 test_files/samples/elements_xpath_simplify_3.txt create mode 100644 test_files/samples/sample_elements.txt diff --git a/test_files/expected/clean_header_field_names_success_1.csv b/test_files/expected/clean_header_field_names_success_1.csv new file mode 100644 index 0000000..d39cecb --- /dev/null +++ b/test_files/expected/clean_header_field_names_success_1.csv @@ -0,0 +1,2 @@ +pds_Product_Observational__pds_Identification_Area<1>__pds_logical_identifier<1>,pds_Product_Observational__pds_Identification_Area<1>__pds_version_id<1>,pds_Product_Observational__pds_Identification_Area<1>__pds_title<1>,pds_Product_Observational__pds_Identification_Area<1>__pds_information_model_version<1>,pds_Product_Observational__pds_Observing_System<1>__pds_name<1>,pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_name<1>,pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_type<1>,pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_Internal_Reference<1>__pds_lid_reference<1>,pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_Internal_Reference<1>__pds_reference_type<1> +urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,1.11.0.0,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host diff --git a/test_files/expected/clean_header_field_names_success_2.csv b/test_files/expected/clean_header_field_names_success_2.csv new file mode 100644 index 0000000..c06708d --- /dev/null +++ b/test_files/expected/clean_header_field_names_success_2.csv @@ -0,0 +1,3 @@ +pds_Product_Observational__pds_Identification_Area<1>__pds_logical_identifier<1>,pds_Product_Observational__pds_Identification_Area<1>__pds_version_id<1>,pds_Product_Observational__pds_Observation_Area<1>__pds_Time_Coordinates<1>__pds_start_date_time<1>,pds_Product_Observational__pds_Observation_Area<1>__pds_Time_Coordinates<1>__pds_stop_date_time<1>,pds_Product_Observational__pds_Observation_Area<1>__pds_Primary_Result_Summary<1>__pds_Science_Facets<1>__pds_wavelength_range<1>,pds_Product_Observational__pds_Observation_Area<1>__pds_Primary_Result_Summary<1>__pds_Science_Facets<2>__pds_wavelength_range<1> +urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN +urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared diff --git a/test_files/expected/elements_file_success.csv b/test_files/expected/elements_file_success.csv new file mode 100644 index 0000000..08b5633 --- /dev/null +++ b/test_files/expected/elements_file_success.csv @@ -0,0 +1,2 @@ +pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:title<1> +urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img diff --git a/test_files/expected/elements_file_success_2.csv b/test_files/expected/elements_file_success_2.csv new file mode 100644 index 0000000..cb2b366 --- /dev/null +++ b/test_files/expected/elements_file_success_2.csv @@ -0,0 +1,2 @@ +pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_2<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_3<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_4<1> +ura111.bsp,vgr2.ura111.bsp,earthstns_itrf93_040916.bsp,earth_720101_031229.bpc,naif0012.tls diff --git a/test_files/expected/elements_file_success_3.csv b/test_files/expected/elements_file_success_3.csv new file mode 100644 index 0000000..e564167 --- /dev/null +++ b/test_files/expected/elements_file_success_3.csv @@ -0,0 +1,3 @@ +pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1> +Infra Red Telescope Facility-Maunakea,IRTF 3.2m,Generic InSb High Speed Photometer,Uranus,Uranus Rings +Cassini Orbiter,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,NaN,Dark Sky,NaN diff --git a/test_files/expected/elements_file_success_4.csv b/test_files/expected/elements_file_success_4.csv new file mode 100644 index 0000000..ae43f57 --- /dev/null +++ b/test_files/expected/elements_file_success_4.csv @@ -0,0 +1,4 @@ +pds:Product_Observational/pds:Observation_Area<1>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:comment<1> +NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN +"This data file was migrated from the original PDS3 file: COISS_1004/data/1357539422_1357559280/N1357539630_1.IMG The content of this data file was reorganized in order to make it PDS4 compliant. Specifically, prefix bytes were removed from each line of the image and appended at the end. The resulting data file remains compatible with the VICAR standard. Values for instrument attributes have been derived from the corresponding values in the original PDS3 label.",The index table of basic parameters associated with each observation.,The index table of body surface geometry information associated with each observation.,An index listing every Saturn system body expected to fall within each field of view.,The index table of ring geometry information associated with each observation.,The ISS Data User's Guide,The browse image in JPEG format that illustrates the scientific content of this image.,NaN,NaN +NaN,The User Guide for Earth-based Uranus Stellar Occultations.,Diagram of the Uranus system showing the occultation track.,Diagram of the view of the Earth from Uranus at mid-occultation Time.,Plot of the altitude (in degrees) of Uranus and the sun relative to the horizon over the duration of the occulation.,Low resolution plot of counts vs. time for the entire occultation.,Illustrates some of the processing steps involved in normalizing a time-series occultation light curve from counts per second to units of stellar flux.,The fitted model of the ring system upon which the data are based.,The support bundle for all of the Earth-based Uranus system occultations. diff --git a/test_files/expected/extra_file_info_success_1.csv b/test_files/expected/extra_file_info_success_1.csv new file mode 100644 index 0000000..ee9afee --- /dev/null +++ b/test_files/expected/extra_file_info_success_1.csv @@ -0,0 +1,2 @@ +filename,filepath,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:title<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:information_model_version<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:product_class<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:author_list<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:publication_year<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<2>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<3>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<4>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<5>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<6>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:description<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:purpose<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:processing_level<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:description<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:discipline_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:facet1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:discipline_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:facet1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:alternate_designation<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:alternate_designation<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_2<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_2<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_3<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_3<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_4<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_4<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:comment<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:occultation_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:occultation_direction<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:time_series_direction<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:planetary_occultation_flag<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:data_quality_score<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:ring_plane<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:star_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:fresnel_scale<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:projected_star_diameter<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:sigma_projected_star_diameter<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:fractional_error_star_counts<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:time_constant_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:time_constant<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:sigma_time_constant<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_wavelength<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_wavelength<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:reference_time_utc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_observed_event_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_observed_event_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:observed_event_start_tdb<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:observed_event_stop_tdb<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:earth_received_start_time_utc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:earth_received_stop_time_utc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_ring_radius<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_ring_radius<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_ring_longitude<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_ring_longitude<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_observed_ring_azimuth<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_observed_ring_azimuth<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:observed_ring_elevation<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:light_source_incidence_angle<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:lidvid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:comment<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:file_name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:local_identifier<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:creation_date_time<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:offset<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:object_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:parsing_standard_id<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:offset<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:records<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:record_delimiter<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:fields<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:groups<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:record_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:description<1> +tester_label_2.xml,tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope,1.14.0.0,Product_Observational,"French, Richard G.; McGhee-French, Colleen A.; Gordon, Mitchell K.",2020,uranus atmosphere,uranus atmosphere stellar occultation,uranus atmosphere stellar occultation time series,uranus rings,uranus rings stellar occultation,uranus rings stellar occultation radial profile,Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope.,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Science,Calibrated,Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope.,Infrared,Atmospheres,Structure,Infrared,Ring-Moon Systems,Ring Occultation Profile,Earth-based Observations of Uranus System Stellar Occultations,Observing Campaign,urn:nasa:pds:context:investigation:observing_campaign.earth-based-uranus-stellar-occultations,data_to_investigation,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,Host,urn:nasa:pds:context:facility:observatory.irtf-maunakea,is_facility,IRTF 3.2m,Telescope,urn:nasa:pds:context:telescope:irtf-maunakea.3m2,is_telescope,Generic InSb High Speed Photometer,Instrument,urn:nasa:pds:context:instrument:multi-host.generic_insp_hsp,is_instrument,Uranus,NAIF ID 799,Planet,urn:nasa:pds:context:target:planet.uranus,data_to_target,Uranus Rings,Uranian Ring System,Ring,urn:nasa:pds:context:target:ring.uranus.rings,data_to_target,SPK,ura111.bsp,SPK,vgr2.ura111.bsp,SPK,earthstns_itrf93_040916.bsp,BPC,earth_720101_031229.bpc,LSK,naif0012.tls,These kernel files were used in the generation of the products in the parent bundle. Some or all of them may not have been used directly in the generation of this product.,stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528,urn:nasa:pds:uranus_occ_support:document:earth-based-uranus-stellar-occultations-user-guide,data_to_document,The User Guide for Earth-based Uranus Stellar Occultations.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_obs_geom,data_to_browse,Diagram of the Uranus system showing the occultation track.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_earth,data_to_browse,Diagram of the view of the Earth from Uranus at mid-occultation Time.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_alt,data_to_browse,Plot of the altitude (in degrees) of Uranus and the sun relative to the horizon over the duration of the occulation.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_occult,data_to_browse,Low resolution plot of counts vs. time for the entire occultation.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_normalization,data_to_browse,Illustrates some of the processing steps involved in normalizing a time-series occultation light curve from counts per second to units of stellar flux.,urn:nasa:pds:uranus_occ_support:data:uranus_occultation_ring_fit_rfrench_20201201::1.0,data_to_resource,The fitted model of the ring system upon which the data are based.,urn:nasa:pds:uranus_occ_support,data_to_resource,The support bundle for all of the Earth-based Uranus system occultations.,u149_irtf_320cm_2200nm_counts-v-time_occult.tab,data,2021-04-05T23:18:20Z,0,264,UTF-8 Text,"Provides the column headers, separated by commas, for the data table.",264,10551,"This is a calibrated time series of an occultation by the Uranus system generated from an earth-based stellar occultation. The data are uniformly spaced in time, and normalized in units of stellar intensity. The data may include occultations by both the rings and the planet, or just the planet. The occultation by the rings, if present, is based on the equatorial ring plane radius sampled at each time point, computed from an orbit model for the ring system.",Carriage-Return Line-Feed,15,0,212,Observed Event Time,1,1,ASCII_Real,16,second,"The instant at which photons were received at the observer location. It is represented in the Universal Coordinated Time system, as a number of elapsed seconds since the time given by the reference_time_utc attribute specified in this file. It refers to the middle of the bin.",Observed Event TDB,2,19,ASCII_Real,16,second,"The instant at which photons were received at the observer location. It is represented in the 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch.",Mean Signal,3,37,ASCII_Real,16,Mean counts received by the instrument during this time bin. The background signal has not been subtracted. Refer to NOTE FLAG for guidance on validity of data.,999999999.999999,999999999.999999,Normalized Signal,4,55,ASCII_Real,10,"Normalized signal during this time bin, in units of the unocculted stellar signal, such that 1.0 corresponds to the full unocculted star signal and 0.0 corresponds to no counts from the star (a completely opaque ring). NORMALIZED SIGNAL = (MEAN_SIGNAL - BACKGROUND_MODEL)/(UNOCCULTED STAR MODEL) This is an approximate normalization, computed using regional polynomial fits. For high-precision photometry of ring events, use locally computed normalization.",999.999999,999.999999,Sky-plane F,5,67,ASCII_Real,13,Kilometer,"The east/west component of r sky (positive in the east direction), in km.",Sky-plane G,6,82,ASCII_Real,13,Kilometer,"The north/south component of r sky (positive in the north direction), in km.",Sky-plane Radius,7,97,ASCII_Real,13,Kilometer,"The length of the radius vector in the plane of the sky measured from the center of the occulting object to the position of the occulted star or spacecraft, in km.",Ring Radius,8,112,ASCII_Real,12,Kilometer,"Radial distance of the occultation intercept point (middle of the bin) from the center of the planet, in km. Distances are measured along the equator plane.",Ring Longitude,9,126,ASCII_Real,8,Degree,Inertial longitude on the ring plane corresponding to the midpoint of the bin.,Observed Ring Azimuth,10,136,ASCII_Real,9,Degree,"Angle measured at a point in the ring plane, starting from the direction of a photon heading to the observer, and ending at the direction of a local radial vector. This angle is projected into the ring plane and measured in the prograde direction.",Ring Event TDB,11,147,ASCII_Real,16,second,"The time at which photons left the ring plane. This time is earlier than the associated OBSERVED EVENT TDB by an amount equal to the light travel time. It is represented in the 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch.",Unocculted Star Model,12,165,ASCII_Real,16,Model of the unocculted star signal as a function of ring plane radius. This is necessary because of variations in atmospheric transparency and other time-dependent effects.,999999999.999999,999999999.999999,Background Model,13,183,ASCII_Real,16,Model of the non-stellar background signal (which may vary over the course of the occultation) due to instrumental offsets applied during the recording and/or sky brightness and contributions from reflected sunlight from the rings and planet.,999999999.999999,999999999.999999,Number Of Samples Per Bin,14,201,ASCII_Integer,4,The number of raw data points per bin.,Note Flag,15,207,ASCII_Integer,4,"A numerical flag that associates specific comments with individual data bins. When more than one comment applies, the values are summed. The values and their associated comments are: 0: radius and longitude are based on Uranus equatorial plane. 1: radius and longitude are based inclined ring plane model referred to in metadata associated with file. 2: observed ring occultation event 4: telescope pointed to nearby sky for background level check 8: input signal from time source, not from photometer on telescope 16: line of sight intersects planet 32: dawn/dusk - rapid background level change; no background or star intensity estimate. 64: unreliable data (e.g., clouds, telescope guiding error, or instrument adjustment); no background or star intensity estimate." diff --git a/test_files/expected/extra_file_info_success_2.csv b/test_files/expected/extra_file_info_success_2.csv new file mode 100644 index 0000000..028f6f6 --- /dev/null +++ b/test_files/expected/extra_file_info_success_2.csv @@ -0,0 +1,4 @@ +filename,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1> +tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0 +tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0 +tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0 diff --git a/test_files/expected/simplify_xpaths_success_1.csv b/test_files/expected/simplify_xpaths_success_1.csv new file mode 100644 index 0000000..f7b7e89 --- /dev/null +++ b/test_files/expected/simplify_xpaths_success_1.csv @@ -0,0 +1,2 @@ +pds:logical_identifier,pds:version_id,pds:title,pds:information_model_version,pds:name,pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:type,pds:lid_reference,pds:reference_type +urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,1.11.0.0,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host diff --git a/test_files/expected/simplify_xpaths_success_2.csv b/test_files/expected/simplify_xpaths_success_2.csv new file mode 100644 index 0000000..58e70a7 --- /dev/null +++ b/test_files/expected/simplify_xpaths_success_2.csv @@ -0,0 +1,4 @@ +pds:name,pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:name<1> +Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN +Cassini-Huygens,NaN,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,Dark Sky,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN +Earth-based Observations of Uranus System Stellar Occultations,NaN,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,IRTF 3.2m,Uranus,Generic InSb High Speed Photometer,Uranus Rings,Observed Event Time,Observed Event TDB,Mean Signal,Normalized Signal,Sky-plane F,Sky-plane G,Sky-plane Radius,Ring Radius,Ring Longitude,Observed Ring Azimuth,Ring Event TDB,Unocculted Star Model,Background Model,Number Of Samples Per Bin,Note Flag diff --git a/test_files/expected/simplify_xpaths_success_3.csv b/test_files/expected/simplify_xpaths_success_3.csv new file mode 100644 index 0000000..0b16b98 --- /dev/null +++ b/test_files/expected/simplify_xpaths_success_3.csv @@ -0,0 +1,2 @@ +rings:occultation_type,rings:occultation_direction,rings:time_series_direction,rings:planetary_occultation_flag,rings:data_quality_score,rings:ring_plane,rings:star_name,rings:fresnel_scale,rings:projected_star_diameter,rings:sigma_projected_star_diameter,rings:fractional_error_star_counts,rings:time_constant_type,rings:time_constant,rings:sigma_time_constant,rings:minimum_wavelength,rings:maximum_wavelength,rings:reference_time_utc,rings:minimum_observed_event_time,rings:maximum_observed_event_time,rings:observed_event_start_tdb,rings:observed_event_stop_tdb,rings:earth_received_start_time_utc,rings:earth_received_stop_time_utc,rings:minimum_ring_radius,rings:maximum_ring_radius,rings:minimum_ring_longitude,rings:maximum_ring_longitude,rings:minimum_observed_ring_azimuth,rings:maximum_observed_ring_azimuth,rings:observed_ring_elevation,rings:light_source_incidence_angle +stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528 diff --git a/test_files/expected/simplify_xpaths_success_4.csv b/test_files/expected/simplify_xpaths_success_4.csv new file mode 100644 index 0000000..7655f49 --- /dev/null +++ b/test_files/expected/simplify_xpaths_success_4.csv @@ -0,0 +1,2 @@ +cassini:mission_phase_name,cassini:spacecraft_clock_count_partition,cassini:spacecraft_clock_start_count,cassini:spacecraft_clock_stop_count,cassini:limitations,cassini:antiblooming_state_flag,cassini:command_file_name,cassini:command_sequence_number,cassini:dark_strip_mean,cassini:data_conversion_type,cassini:delayed_readout_flag,cassini:detector_temperature,cassini:electronics_bias,cassini:expected_maximum_full_well,cassini:expected_maximum_DN_sat,cassini:expected_packets,cassini:exposure_duration,cassini:filter_name_1,cassini:filter_name_2,cassini:filter_temperature,cassini:flight_software_version_id,cassini:gain_mode_id,cassini:ground_software_version_id,cassini:image_mid_time,cassini:image_number,cassini:image_time,cassini:image_observation_type,cassini:instrument_data_rate,cassini:inst_cmprs_type,cassini:inst_cmprs_param_malgo,cassini:inst_cmprs_param_tb,cassini:inst_cmprs_param_blocks,cassini:inst_cmprs_param_quant,cassini:inst_cmprs_rate_expected_bits,cassini:inst_cmprs_rate_actual_bits,cassini:inst_cmprs_ratio,cassini:light_flood_state_flag,cassini:method_description,cassini:missing_lines,cassini:missing_packet_flag,cassini:observation_id,cassini:optics_temperature_front,cassini:optics_temperature_back,cassini:order_number,cassini:parallel_clock_voltage_index,cassini:pds3_product_creation_time,cassini:pds3_product_version_type,cassini:pds3_target_desc,cassini:pds3_target_list,cassini:pds3_target_name,cassini:pre-pds_version_number,cassini:prepare_cycle_index,cassini:readout_cycle_index,cassini:received_packets,cassini:sensor_head_electronics_temperature,cassini:sequence_id,cassini:sequence_number,cassini:sequence_title,cassini:shutter_mode_id,cassini:shutter_state_id,cassini:start_time_doy,cassini:stop_time_doy,cassini:telemetry_format_id,cassini:valid_maximum_full_well,cassini:valid_maximum_DN_sat +EARTH-JUPITER CRUISE,1,1357539630.068,1357539630.123,N/A,ON,ISS_C23ST_OCCULT001_UVIS_B.icf,730,0.,TABLE,NO,-89.243546,112,-1,-1,-1,220.,P0,GRN,-0.468354,1.2,29,ISS V7.0 11-22-2000,2001-007T06:08:48.013,1357539630,2001-007T06:08:48.013,SCIENCE,182.783997,LOSSLESS,999,999,999,999,-1.,-1.,3.150372,ON,Information not provided,0,NO,UVIS_C23ST_OCCULT001_PRIME_C,0.71269,-999.,-999,9,2001-008T10:55:49.000,FINAL,Information not provided,N/A,DARK SKY,1,0,11,-1,1.633024,C23,-1,ISS_C23ST_OCCULT001_UVIS,NACONLY,ENABLED,2001-007T06:08:47.793,2001-007T06:08:48.013,Information not provided,-1,-1 diff --git a/test_files/expected/sort_by_success.csv b/test_files/expected/sort_by_success.csv new file mode 100644 index 0000000..f819dbb --- /dev/null +++ b/test_files/expected/sort_by_success.csv @@ -0,0 +1,4 @@ +pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1> +urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN +urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN +urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared diff --git a/test_files/expected/sort_by_success_2.csv b/test_files/expected/sort_by_success_2.csv new file mode 100644 index 0000000..f819dbb --- /dev/null +++ b/test_files/expected/sort_by_success_2.csv @@ -0,0 +1,4 @@ +pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1> +urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN +urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN +urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared diff --git a/test_files/expected/tester_config.ini b/test_files/expected/tester_config.ini new file mode 100644 index 0000000..4afeaa0 --- /dev/null +++ b/test_files/expected/tester_config.ini @@ -0,0 +1,17 @@ +[pds:ASCII_Integer] +inapplicable=-9999 +missing=-9988 +unknown=-9977 +anticipated=-9966 + +[pds:ASCII_Real] +inapplicable=-9999.0 +missing=-9988.0 +unknown=-9977.0 +anticipated=-9966.0 + +[pds:ASCII_Short_String_Collapsed] +inapplicable=inapplicable_alt +missing=missing_alt +unknown=unknown_alt +anticipated=anticipated_alt diff --git a/test_files/labels/tester_label_1.xml b/test_files/labels/tester_label_1.xml new file mode 100644 index 0000000..228c2ca --- /dev/null +++ b/test_files/labels/tester_label_1.xml @@ -0,0 +1,26 @@ + + + + urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n + 1.0 + Cassini ISS Image 1455200455n.img + 1.11.0.0 + + + Cassini Orbiter Imaging Science Subsystem + + Cassini Orbiter + Spacecraft + + urn:nasa:pds:context:instrument_host:spacecraft.co + is_instrument_host + + + + diff --git a/test_files/labels/tester_label_2.xml b/test_files/labels/tester_label_2.xml new file mode 100644 index 0000000..790941d --- /dev/null +++ b/test_files/labels/tester_label_2.xml @@ -0,0 +1,442 @@ + + + + + + + + urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult + 1.0 + Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope + 1.14.0.0 + Product_Observational + + French, Richard G.; McGhee-French, Colleen A.; Gordon, Mitchell K. + 2020 + uranus atmosphere + uranus atmosphere stellar occultation + uranus atmosphere stellar occultation time series + uranus rings + uranus rings stellar occultation + uranus rings stellar occultation radial profile + Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope. + + + + + 1998-11-06T04:38:18.7028Z + 1998-11-06T05:52:29.0559Z + + + Science + Calibrated + Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope. + + Infrared + Atmospheres + Structure + + + Infrared + Ring-Moon Systems + Ring Occultation Profile + + + + Earth-based Observations of Uranus System Stellar Occultations + Observing Campaign + + urn:nasa:pds:context:investigation:observing_campaign.earth-based-uranus-stellar-occultations + data_to_investigation + + + + IRTF 320cm Telescope + + Infra Red Telescope Facility-Maunakea + Host + + urn:nasa:pds:context:facility:observatory.irtf-maunakea + is_facility + + + + IRTF 3.2m + Telescope + + urn:nasa:pds:context:telescope:irtf-maunakea.3m2 + is_telescope + + + + Generic InSb High Speed Photometer + Instrument + + urn:nasa:pds:context:instrument:multi-host.generic_insp_hsp + is_instrument + + + + + Uranus + NAIF ID 799 + Planet + + urn:nasa:pds:context:target:planet.uranus + data_to_target + + + + Uranus Rings + Uranian Ring System + Ring + + urn:nasa:pds:context:target:ring.uranus.rings + data_to_target + + + + + + + SPK + ura111.bsp + + + SPK + vgr2.ura111.bsp + + + SPK + earthstns_itrf93_040916.bsp + + + BPC + earth_720101_031229.bpc + + + LSK + naif0012.tls + + These kernel files were used in the generation of the products in the parent bundle. Some or all of them may not have been used directly in the generation of this product. + + + + + stellar + egress + both + Y + poor + equator + 2MASS 20462044-1838345 + 1.81 + 1.2000 + 0.5000 + 0.020000000 + none + 1.0 + 0.00000 + 1903.00000 + 2416.00000 + 1998-11-06T00:00:00.0000Z + 16698.7028 + 21149.0559 + -36400838.1146 + -36396387.7615 + 1998-11-06T04:38:18.4919Z + 1998-11-06T05:52:29.2668Z + 19964.02157 + 75510.23132 + 17.29299 + 65.91696 + 5.2772 + 53.9012 + -38.14472 + 51.85528 + + + + + + + urn:nasa:pds:uranus_occ_support:document:earth-based-uranus-stellar-occultations-user-guide + data_to_document + The User Guide for Earth-based Uranus Stellar Occultations. + + + urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_obs_geom + data_to_browse + Diagram of the Uranus system showing the occultation track. + + + urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_earth + data_to_browse + Diagram of the view of the Earth from Uranus at mid-occultation Time. + + + urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_alt + data_to_browse + Plot of the altitude (in degrees) of Uranus and the sun relative to the horizon over the duration of the occulation. + + + urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_occult + data_to_browse + Low resolution plot of counts vs. time for the entire occultation. + + + urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_normalization + data_to_browse + Illustrates some of the processing steps involved in normalizing a time-series occultation light curve from counts per second to units of stellar flux. + + + urn:nasa:pds:uranus_occ_support:data:uranus_occultation_ring_fit_rfrench_20201201::1.0 + data_to_resource + The fitted model of the ring system upon which the data are based. + + + urn:nasa:pds:uranus_occ_support + data_to_resource + The support bundle for all of the Earth-based Uranus system occultations. + + + + + u149_irtf_320cm_2200nm_counts-v-time_occult.tab + data + 2021-04-05T23:18:20Z + +
+ 0 + 264 + UTF-8 Text + Provides the column headers, separated by commas, for the data table. +
+ + 264 + 10551 + This is a calibrated time series of an occultation by the Uranus system + generated from an earth-based stellar occultation. The data are uniformly spaced in time, and + normalized in units of stellar intensity. The data may include occultations by both the rings + and the planet, or just the planet. The occultation by the rings, if present, is based on + the equatorial ring plane radius sampled at each time point, computed from an orbit + model for the ring system. + + Carriage-Return Line-Feed + + 15 + 0 + 212 + + Observed Event Time + 1 + 1 + ASCII_Real + 16 + second + The instant at which photons were received at the observer location. It is + represented in the Universal Coordinated Time system, as a number of elapsed + seconds since the time given by the reference_time_utc attribute specified in this file. + It refers to the middle of the bin. + + + + Observed Event TDB + 2 + 19 + ASCII_Real + 16 + second + The instant at which photons were received at the observer location. It is represented + in the 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch. + + + + Mean Signal + 3 + 37 + ASCII_Real + 16 + Mean counts received by the instrument during this time bin. The background + signal has not been subtracted. Refer to NOTE FLAG for guidance on validity of data. + + + 999999999.999999 + + + 999999999.999999 + + + + Normalized Signal + 4 + 55 + ASCII_Real + 10 + Normalized signal during this time bin, in units of the unocculted stellar signal, + such that 1.0 corresponds to the full unocculted star signal and + 0.0 corresponds to no counts from the star (a completely opaque ring). + NORMALIZED SIGNAL = (MEAN_SIGNAL - BACKGROUND_MODEL)/(UNOCCULTED STAR MODEL) + This is an approximate normalization, computed using regional polynomial fits. + For high-precision photometry of ring events, use locally computed normalization. + + + 999.999999 + + + 999.999999 + + + + Sky-plane F + 5 + 67 + ASCII_Real + 13 + Kilometer + The east/west component of r sky (positive in the east direction), in km. + + + + Sky-plane G + 6 + 82 + ASCII_Real + 13 + Kilometer + The north/south component of r sky (positive in the north direction), in km. + + + + Sky-plane Radius + 7 + 97 + ASCII_Real + 13 + Kilometer + The length of the radius vector in the plane of the sky measured from the center of the occulting object to the position of the occulted star or spacecraft, in km. + + + + Ring Radius + 8 + 112 + ASCII_Real + 12 + Kilometer + Radial distance of the occultation intercept point (middle of the bin) from + the center of the planet, in km. Distances are measured along the equator plane. + + + + Ring Longitude + 9 + 126 + ASCII_Real + 8 + Degree + Inertial longitude on the ring plane corresponding to the midpoint of the bin. + + + + Observed Ring Azimuth + 10 + 136 + ASCII_Real + 9 + Degree + Angle measured at a point in the ring plane, starting from the direction of + a photon heading to the observer, and ending at the direction of a local radial vector. + This angle is projected into the ring plane and measured in the prograde direction. + + + + Ring Event TDB + 11 + 147 + ASCII_Real + 16 + second + The time at which photons left the ring plane. This time is earlier than the associated + OBSERVED EVENT TDB by an amount equal to the light travel time. It is represented in the + 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch. + + + + Unocculted Star Model + 12 + 165 + ASCII_Real + 16 + Model of the unocculted star signal as a function of ring plane radius. This is necessary + because of variations in atmospheric transparency and other time-dependent effects. + + + 999999999.999999 + + + 999999999.999999 + + + + Background Model + 13 + 183 + ASCII_Real + 16 + Model of the non-stellar background signal (which may vary over the course of the + occultation) due to instrumental offsets applied during the recording and/or sky brightness + and contributions from reflected sunlight from the rings and planet. + + + 999999999.999999 + + + 999999999.999999 + + + + Number Of Samples Per Bin + 14 + 201 + ASCII_Integer + 4 + The number of raw data points per bin. + + + Note Flag + 15 + 207 + ASCII_Integer + 4 + A numerical flag that associates + specific comments with individual data bins. When more than one + comment applies, the values are summed. The values and their + associated comments are: + 0: radius and longitude are based on Uranus equatorial plane. + 1: radius and longitude are based inclined ring plane model + referred to in metadata associated with file. + 2: observed ring occultation event + 4: telescope pointed to nearby sky for background level check + 8: input signal from time source, not from photometer on telescope + 16: line of sight intersects planet + 32: dawn/dusk - rapid background level change; + no background or star intensity estimate. + 64: unreliable data (e.g., clouds, telescope + guiding error, or instrument adjustment); + no background or star intensity estimate. + + + + +
+
diff --git a/test_files/labels/tester_label_3.xml b/test_files/labels/tester_label_3.xml new file mode 100644 index 0000000..b9dc36c --- /dev/null +++ b/test_files/labels/tester_label_3.xml @@ -0,0 +1,290 @@ + + + + + + + + + urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n + 1.0 + Cassini ISS Image 1357539630n.img + 1.11.0.0 + Product_Observational + + + + This data file was migrated from the original PDS3 file: + COISS_1004/data/1357539422_1357559280/N1357539630_1.IMG + The content of this data file was reorganized in order to make it PDS4 + compliant. Specifically, prefix bytes were removed from each line of + the image and appended at the end. The resulting data file remains + compatible with the VICAR standard. Values for instrument attributes + have been derived from the corresponding values in the original PDS3 + label. + + + 2001-01-07T06:08:47.793Z + 2001-01-07T06:08:48.013Z + + + Science + Raw + + Near Infrared + Ring-Moon Systems + + + + Cassini-Huygens + Mission + + urn:nasa:pds:context:investigation:mission.cassini-huygens + data_to_investigation + + + + Cassini Orbiter Imaging Science Subsystem + + Cassini Orbiter + Spacecraft + + urn:nasa:pds:context:instrument_host:spacecraft.co + is_instrument_host + + + + Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera + Instrument + ISSNA + + urn:nasa:pds:context:instrument:issna.co + is_instrument + + + + + Dark Sky + Calibration Field + + urn:nasa:pds:context:target:calibration_field.dark_sky + data_to_target + + + + + + EARTH-JUPITER CRUISE + 1 + 1357539630.068 + 1357539630.123 + N/A + ON + 6.870842 + N/A + ISS_C23ST_OCCULT001_UVIS_B.icf + 730 + 0. + TABLE + NO + -89.243546 + 112 + 2001-007T19:58:04.616 + 2001-007T19:58:32.295 + -1 + -1 + -1 + 220. + P0 + GRN + -0.468354 + 1.2 + 29 + ISS V7.0 11-22-2000 + 2001-007T06:08:48.013 + 1357539630 + 2001-007T06:08:48.013 + SCIENCE + 182.783997 + FULL + LOSSLESS + 999 + 999 + 999 + 999 + -1. + -1. + 3.150372 + ON + Information not provided + 0 + NO + UVIS_C23ST_OCCULT001_PRIME_C + 0.71269 + -999. + -999 + 9 + 2001-008T10:55:49.000 + FINAL + Information not provided + N/A + DARK SKY + 1 + 0 + 11 + -1 + 1.633024 + C23 + -1 + ISS_C23ST_OCCULT001_UVIS + NACONLY + ENABLED + 2001-007T06:08:47.793 + 2001-007T06:08:48.013 + Information not provided + -1 + -1 + + + + + + + image + display_settings_to_array + + + Sample + Left to Right + Line + Top to Bottom + + + + + + + + urn:nasa:pds:cassini_iss_cruise:data_raw:index + data_to_resource + The index table of basic parameters associated with each observation. + + + urn:nasa:pds:cassini_iss_cruise:data_raw:body-geometry + data_to_resource + The index table of body surface geometry information associated with each observation. + + + urn:nasa:pds:cassini_iss_cruise:body-inventory + data_to_resource + An index listing every Saturn system body expected to fall within each field of view. + + + urn:nasa:pds:cassini_iss_cruise:ring-geometry + data_to_resource + The index table of ring geometry information associated with each observation. + + + urn:nasa:pds:cassini_iss_saturn:document:iss-data-user-guide + data_to_document + The ISS Data User's Guide + + + urn:nasa:pds:cassini_iss_cruise:browse_raw:1357539630n-full + data_to_browse + + The browse image in JPEG format that illustrates the scientific content + of this image. + + + + + + + 1357539630n.img + 2019-06-12T22:05:54Z + a468693f67593587d224116c5ade995a + + + + +
+ 0 + 4096 + VICAR2 +
+ + + + + telemetry-table + 4096 + 1 + Last Index Fastest + + UnsignedByte + + + telemetry + 2 + 1 + + + + + + + image + 6144 + 2 + Last Index Fastest + + UnsignedByte + DN + + + Line + 1024 + 1 + + + Sample + 1024 + 2 + + + + + + + 1054720 + 2 + Last Index Fastest + + UnsignedByte + + + Line + 1024 + 1 + + + prefix-sample + 24 + 2 + + +
+
diff --git a/test_files/samples/element_2.txt b/test_files/samples/element_2.txt new file mode 100644 index 0000000..fa2e6be --- /dev/null +++ b/test_files/samples/element_2.txt @@ -0,0 +1 @@ +**/geom:spice_kernel_file_name* \ No newline at end of file diff --git a/test_files/samples/element_3.txt b/test_files/samples/element_3.txt new file mode 100644 index 0000000..c0e1657 --- /dev/null +++ b/test_files/samples/element_3.txt @@ -0,0 +1,2 @@ +**/pds:Observing_System_Component<*>/pds:name<*> +**/pds:Target_Identification<*>/pds:name<*> \ No newline at end of file diff --git a/test_files/samples/element_4.txt b/test_files/samples/element_4.txt new file mode 100644 index 0000000..923c709 --- /dev/null +++ b/test_files/samples/element_4.txt @@ -0,0 +1,2 @@ +**/*comment* +!**/geom:comment* \ No newline at end of file diff --git a/test_files/samples/element_extra_file_info.txt b/test_files/samples/element_extra_file_info.txt new file mode 100644 index 0000000..b187fa2 --- /dev/null +++ b/test_files/samples/element_extra_file_info.txt @@ -0,0 +1,2 @@ +**/pds:logical_identifier* +**/pds:version_id* \ No newline at end of file diff --git a/test_files/samples/elements_clean_header_field_names.txt b/test_files/samples/elements_clean_header_field_names.txt new file mode 100644 index 0000000..626d969 --- /dev/null +++ b/test_files/samples/elements_clean_header_field_names.txt @@ -0,0 +1,5 @@ +**/pds:logical_identifier* +**/pds:version_id* +**/pds:start_date_time* +**/pds:stop_date_time* +**/pds:wavelength_range* \ No newline at end of file diff --git a/test_files/samples/elements_xpath_simplify.txt b/test_files/samples/elements_xpath_simplify.txt new file mode 100644 index 0000000..cc21130 --- /dev/null +++ b/test_files/samples/elements_xpath_simplify.txt @@ -0,0 +1 @@ +**/pds:name* \ No newline at end of file diff --git a/test_files/samples/elements_xpath_simplify_2.txt b/test_files/samples/elements_xpath_simplify_2.txt new file mode 100644 index 0000000..9655eff --- /dev/null +++ b/test_files/samples/elements_xpath_simplify_2.txt @@ -0,0 +1 @@ +**/rings:Occultation_Time_Series* \ No newline at end of file diff --git a/test_files/samples/elements_xpath_simplify_3.txt b/test_files/samples/elements_xpath_simplify_3.txt new file mode 100644 index 0000000..8a9b834 --- /dev/null +++ b/test_files/samples/elements_xpath_simplify_3.txt @@ -0,0 +1,69 @@ +**/cassini:mission_phase_name* +**/cassini:spacecraft_clock_count_partition* +**/cassini:spacecraft_clock_start_count* +**/cassini:spacecraft_clock_stop_count* +**/cassini:limitations* +**/cassini:antiblooming_state_flag* +**/cassini:calilbration_lamp_state_flag* +**/cassini:command_file_name* +**/cassini:command_sequence_number* +**/cassini:dark_strip_mean* +**/cassini:data_conversion_type* +**/cassini:delayed_readout_flag* +**/cassini:detector_temperature* +**/cassini:electronics_bias* +**/cassini:earth_recieved_start_time* +**/cassini:earth_recieved_stop_time* +**/cassini:expected_maximum_full_well* +**/cassini:expected_maximum_DN_sat* +**/cassini:expected_packets* +**/cassini:exposure_duration* +**/cassini:filter_name_1* +**/cassini:filter_name_2* +**/cassini:filter_temperature* +**/cassini:flight_software_version_id* +**/cassini:gain_mode_id* +**/cassini:ground_software_version_id* +**/cassini:image_mid_time* +**/cassini:image_number* +**/cassini:image_time* +**/cassini:image_observation_type* +**/cassini:instrument_data_rate* +**/cassini:intrument_mode_id* +**/cassini:inst_cmprs_type* +**/cassini:inst_cmprs_param_malgo* +**/cassini:inst_cmprs_param_tb* +**/cassini:inst_cmprs_param_blocks* +**/cassini:inst_cmprs_param_quant* +**/cassini:inst_cmprs_rate_expected_bits* +**/cassini:inst_cmprs_rate_actual_bits* +**/cassini:inst_cmprs_ratio* +**/cassini:light_flood_state_flag* +**/cassini:method_description* +**/cassini:missing_lines* +**/cassini:missing_packet_flag* +**/cassini:observation_id +**/cassini:optics_temperature_front* +**/cassini:optics_temperature_back* +**/cassini:order_number* +**/cassini:parallel_clock_voltage_index* +**/cassini:pds3_product_creation_time* +**/cassini:pds3_product_version_type* +**/cassini:pds3_target_desc* +**/cassini:pds3_target_list* +**/cassini:pds3_target_name* +**/cassini:pre-pds_version_number* +**/cassini:prepare_cycle_index* +**/cassini:readout_cycle_index* +**/cassini:received_packets* +**/cassini:sensor_head_electronics_temperature* +**/cassini:sequence_id* +**/cassini:sequence_number* +**/cassini:sequence_title* +**/cassini:shutter_mode_id* +**/cassini:shutter_state_id* +**/cassini:start_time_doy* +**/cassini:stop_time_doy* +**/cassini:telemetry_format_id* +**/cassini:valid_maximum_full_well* +**/cassini:valid_maximum_DN_sat* \ No newline at end of file diff --git a/test_files/samples/sample_elements.txt b/test_files/samples/sample_elements.txt new file mode 100644 index 0000000..60bcf6a --- /dev/null +++ b/test_files/samples/sample_elements.txt @@ -0,0 +1,3 @@ +/pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier* +/pds:Product_Observational/pds:Identification_Area<1>/pds:version_id* +/pds:Product_Observational/pds:Identification_Area<1>/pds:title* From f204109c91b485c92b4be92440136ba384f9b24a Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Thu, 16 May 2024 16:10:38 -0700 Subject: [PATCH 28/46] Making changes according to pull request --- pds4indextools/pds4_create_xml_index.py | 136 +++-- pds4indextools/values.yaml | 10 + samples/element_2.txt | 1 - samples/element_3.txt | 2 - samples/element_4.txt | 2 - samples/elements_clean_header_field_names.txt | 5 - samples/elements_xpath_simplify.txt | 1 - samples/elements_xpath_simplify_2.txt | 1 - samples/sample_elements.txt | 3 - .../clean_header_field_names_success_1.csv | 2 - .../clean_header_field_names_success_2.csv | 3 - test_files/elements_file_success.csv | 2 - test_files/elements_file_success_2.csv | 2 - test_files/elements_file_success_3.csv | 3 - test_files/elements_file_success_4.csv | 4 - .../clean_header_field_names_success_1.txt | 9 + .../clean_header_field_names_success_2.txt | 8 + test_files/expected/elements_file_success.csv | 2 - .../expected/elements_file_success_1.txt | 3 + .../expected/elements_file_success_2.csv | 2 - .../expected/elements_file_success_2.txt | 5 + .../expected/elements_file_success_3.csv | 3 - .../expected/elements_file_success_3.txt | 8 + .../expected/elements_file_success_4.csv | 4 - .../expected/elements_file_success_4.txt | 15 + .../expected/extra_file_info_success_1.csv | 4 +- .../expected/extra_file_info_success_3.csv | 4 + .../expected/simplify_xpaths_success_1.csv | 2 - .../expected/simplify_xpaths_success_1.txt | 9 + .../expected/simplify_xpaths_success_2.csv | 4 - .../expected/simplify_xpaths_success_2.txt | 29 + .../expected/simplify_xpaths_success_3.csv | 2 - .../expected/simplify_xpaths_success_3.txt | 31 + .../expected/simplify_xpaths_success_4.csv | 2 - .../expected/simplify_xpaths_success_4.txt | 64 +++ ...t_by_success.csv => sort_by_success_1.csv} | 0 test_files/expected/sort_by_success_2.csv | 8 +- test_files/extra_file_info_success_1.csv | 2 - test_files/extra_file_info_success_2.csv | 4 - test_files/samples/element_1.txt | 3 + test_files/samples/element_empty.txt | 0 .../samples/element_extra_file_info.txt | 2 - .../samples/element_extra_file_info_2.txt | 0 .../samples/elements_xpath_simplify.txt | 1 - .../samples/elements_xpath_simplify_2.txt | 2 +- .../samples/elements_xpath_simplify_3.txt | 70 +-- .../samples/elements_xpath_simplify_4.txt | 0 test_files/samples/sample_elements.txt | 3 - test_files/simplify_xpaths_success_1.csv | 2 - test_files/simplify_xpaths_success_2.csv | 4 - test_files/simplify_xpaths_success_3.csv | 2 - test_files/simplify_xpaths_success_4.csv | 2 - test_files/sort_by_success.csv | 4 - test_files/sort_by_success_2.csv | 4 - test_files/tester_config.ini | 17 - test_files/tester_label_1.xml | 26 - test_files/tester_label_2.xml | 442 -------------- test_files/tester_label_3.xml | 290 ---------- tests/test_pds4_create_xml_index.py | 542 +++++++----------- tests/test_pds4_create_xml_index_2.py | 121 ++++ 60 files changed, 615 insertions(+), 1323 deletions(-) create mode 100644 pds4indextools/values.yaml delete mode 100644 samples/element_2.txt delete mode 100644 samples/element_3.txt delete mode 100644 samples/element_4.txt delete mode 100644 samples/elements_clean_header_field_names.txt delete mode 100644 samples/elements_xpath_simplify.txt delete mode 100644 samples/elements_xpath_simplify_2.txt delete mode 100644 samples/sample_elements.txt delete mode 100644 test_files/clean_header_field_names_success_1.csv delete mode 100644 test_files/clean_header_field_names_success_2.csv delete mode 100644 test_files/elements_file_success.csv delete mode 100644 test_files/elements_file_success_2.csv delete mode 100644 test_files/elements_file_success_3.csv delete mode 100644 test_files/elements_file_success_4.csv create mode 100644 test_files/expected/clean_header_field_names_success_1.txt create mode 100644 test_files/expected/clean_header_field_names_success_2.txt delete mode 100644 test_files/expected/elements_file_success.csv create mode 100644 test_files/expected/elements_file_success_1.txt delete mode 100644 test_files/expected/elements_file_success_2.csv create mode 100644 test_files/expected/elements_file_success_2.txt delete mode 100644 test_files/expected/elements_file_success_3.csv create mode 100644 test_files/expected/elements_file_success_3.txt delete mode 100644 test_files/expected/elements_file_success_4.csv create mode 100644 test_files/expected/elements_file_success_4.txt create mode 100644 test_files/expected/extra_file_info_success_3.csv delete mode 100644 test_files/expected/simplify_xpaths_success_1.csv create mode 100644 test_files/expected/simplify_xpaths_success_1.txt delete mode 100644 test_files/expected/simplify_xpaths_success_2.csv create mode 100644 test_files/expected/simplify_xpaths_success_2.txt delete mode 100644 test_files/expected/simplify_xpaths_success_3.csv create mode 100644 test_files/expected/simplify_xpaths_success_3.txt delete mode 100644 test_files/expected/simplify_xpaths_success_4.csv create mode 100644 test_files/expected/simplify_xpaths_success_4.txt rename test_files/expected/{sort_by_success.csv => sort_by_success_1.csv} (100%) delete mode 100644 test_files/extra_file_info_success_1.csv delete mode 100644 test_files/extra_file_info_success_2.csv create mode 100644 test_files/samples/element_1.txt create mode 100644 test_files/samples/element_empty.txt delete mode 100644 test_files/samples/element_extra_file_info.txt rename samples/element_extra_file_info.txt => test_files/samples/element_extra_file_info_2.txt (100%) delete mode 100644 test_files/samples/elements_xpath_simplify.txt rename samples/elements_xpath_simplify_3.txt => test_files/samples/elements_xpath_simplify_4.txt (100%) delete mode 100644 test_files/samples/sample_elements.txt delete mode 100644 test_files/simplify_xpaths_success_1.csv delete mode 100644 test_files/simplify_xpaths_success_2.csv delete mode 100644 test_files/simplify_xpaths_success_3.csv delete mode 100644 test_files/simplify_xpaths_success_4.csv delete mode 100644 test_files/sort_by_success.csv delete mode 100644 test_files/sort_by_success_2.csv delete mode 100644 test_files/tester_config.ini delete mode 100644 test_files/tester_label_1.xml delete mode 100644 test_files/tester_label_2.xml delete mode 100644 test_files/tester_label_3.xml create mode 100644 tests/test_pds4_create_xml_index_2.py diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index e44f915..8bff3a7 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -114,7 +114,28 @@ def default_value_for_nil(config, data_type, nil_value): return default -def filter_dict_by_glob_patterns(input_dict, glob_patterns): +def extract_logical_identifier(tree): + """Extract the logical_identifier element from an XML tree. + + Inputs: + tree: The XML tree. + + Returns: + The text content of the logical_identifier element, or None if not found. + """ + # Define namespace mapping + namespaces = {'pds': 'http://pds.nasa.gov/pds4/pds/v1'} + + # Find logical_identifier element within Identification_Area + logical_identifier = tree.find('.//pds:Identification_Area/pds:logical_identifier', namespaces=namespaces) + + if logical_identifier is not None: + return logical_identifier.text.strip() + else: + return None + + +def filter_dict_by_glob_patterns(input_dict, glob_patterns, verboseprint): """Filter a dictionary based on a list of glob patterns matching for keys. Inputs: @@ -126,34 +147,27 @@ def filter_dict_by_glob_patterns(input_dict, glob_patterns): """ filtered_dict = {} - if glob_patterns is not None: - if not all(pat.startswith('!') for pat in glob_patterns): - negated = [] - positive = [] - for pat in glob_patterns: - if pat.startswith('!'): - pat = pat.replace('!', '') - negated.append(pat) - else: - positive.append(pat) - for key, value in input_dict.items(): - if any(fnmatch.fnmatch(key, pat) for pat in positive): - filtered_dict[key] = value - for key, value in list(filtered_dict.items()): - if any(fnmatch.fnmatch(key, pat) for pat in negated): - del filtered_dict[key] - else: - filtered_dict = dict(input_dict) - glob_patterns = [pat.replace('!', '') - for pat in glob_patterns] - for key in list(filtered_dict.keys()): - if any(fnmatch.fnmatch(key, pat) for pat in glob_patterns): - del filtered_dict[key] + if glob_patterns is None: + return input_dict + + if glob_patterns == []: + print('Given elements file is empty.') + sys.exit(1) else: - for key, value in input_dict.items(): - filtered_dict[key] = value - - return filtered_dict + for pattern in glob_patterns: + if not pattern.startswith('!'): + verboseprint(f'Adding elements according to: {pattern}') + for key, value in input_dict.items(): + if fnmatch.fnmatch(key, pattern): + filtered_dict[key] = value + else: + verboseprint(f'Removing elements according to: {pattern}') + pattern = pattern.replace('!', '') + for key, value in list(filtered_dict.items()): + if fnmatch.fnmatch(key, pattern): + del filtered_dict[key] + + return filtered_dict def load_config_file(specified_config_file): @@ -202,11 +216,11 @@ def process_schema_location(file_path): # Load and parse the XML file try: tree = etree.parse(file_path) - root = tree.getroot() except OSError: print('Given file does not exist') # Extract the xsi:schemaLocation attribute value + root = tree.getroot() schema_location_values = root.get( '{http://www.w3.org/2001/XMLSchema-instance}schemaLocation' ).split() @@ -249,7 +263,6 @@ def process_headers(label_results, key, root, namespaces, prefixes): label_results[key_new] = label_results.pop(key) - def renumber_xpaths(xpaths): """Renumber a list of XPaths to be sequential at each level. @@ -392,13 +405,13 @@ def split_into_elements(xpath): Returns: The tuple of elements the XPath is composed of. """ - elements = () + elements = [] parts = xpath.split('/') for part in parts: if '<' in part: part = part.split('<') - elements += (part[0],) + elements.append(part[0]) return elements @@ -528,12 +541,18 @@ def write_results_to_csv(results_list, args, output_csv_path): df = pd.DataFrame(rows) + for c in df.columns: + number = c.split('/')[-1].split('<')[0].split('_')[-1] + if number.isdigit(): + c_new = c.replace('_'+number, '') + df.rename(columns={c: c_new}, inplace=True) + if args.sort_by: df.sort_values(by=args.sort_by, inplace=True) if args.clean_header_field_names: df.rename(columns=lambda x: x.replace( - ':', '_').replace('/', '__'), inplace=True) + ':', '_').replace('/', '__').replace('<', '_').replace('>', ''), inplace=True) df.to_csv(output_csv_path, index=False, na_rep='NaN') @@ -597,16 +616,19 @@ def main(cmd_line=None): config = load_config_file(args.config_file) directory_path = Path(args.directorypath) + verboseprint(f'Chosen directory path: {directory_path}') patterns = args.pattern + verboseprint(f'Chosen pattern(s): {patterns}') nillable_elements_info = {} label_files = [] all_results = [] + tags = [] for pattern in patterns: files = directory_path.glob(f"{pattern}") label_files.extend(files) - verboseprint(f'{len(label_files)} matching files found') + verboseprint(f'{len(label_files)} matching file(s) found') if label_files == []: print(f'No files matching {pattern} found in directory: {directory_path}') @@ -668,31 +690,41 @@ def main(cmd_line=None): xpath_map = renumber_xpaths(label_results.keys()) for old_xpath, new_xpath in xpath_map.items(): label_results[new_xpath] = label_results.pop(old_xpath) - - label_results = filter_dict_by_glob_patterns(label_results, elements_to_scrape) + + verboseprint('Now filtering label results according to given element file.') + label_results = filter_dict_by_glob_patterns(label_results, elements_to_scrape, verboseprint) if args.simplify_xpaths: + verboseprint('Simplifying XPath headers.') elements = () xpath_elements = [] - tags = [] + names = [] for key in label_results.keys(): stuff = split_into_elements(key) - xpath_elements.append(split_into_elements(key)) + xpath_elements.append(stuff) + names.append(stuff[-1]) + + duplicates = [tuple(t) for t in set(map(tuple, xpath_elements)) + if xpath_elements.count(t) > 1] - duplicates = [t for t in set(xpath_elements) if xpath_elements.count(t) > 1] + duplicate_names = {tag for tag in names if names.count(tag) > 1} + + if duplicate_names: + verboseprint(f'Duplicate tags found: {duplicate_names}') for key in list(label_results.keys()): elements = split_into_elements(key) tag = elements[-1] - if elements not in duplicates and elements[-1] not in tags: + tags.append(tag) + if elements not in duplicates and elements[-1] not in duplicate_names: value = tag - tags.append(tag) else: value = key label_results[value] = label_results.pop(key) - - lid = label_results.get('pds:logical_identifier', 'Missing_LID') + lid = extract_logical_identifier(tree) + if lid is None: + lid = label_results.get('pds:logical_identifier', 'Missing_LID') # Attach extra columns if asked for. bundle_lid = ':'.join(lid.split(':')[:4]) @@ -700,6 +732,8 @@ def main(cmd_line=None): extras = {'LID': lid, 'filepath': filepath, 'filename': file.name, 'bundle': bundle, 'bundle_lid': bundle_lid} if args.extra_file_info: + verboseprint( '--extra-file-info requested ' + f'for the following: {args.extra_file_info}') label_results = {**{ele: extras[ele] for ele in args.extra_file_info}, **label_results} @@ -719,11 +753,23 @@ def main(cmd_line=None): for values in label.values(): for x in values.keys(): elements.append(x) + + for x in elements: + tag = x.split('/')[-1].split('<')[0] + number = x.split('/')[-1].split('<')[0].split('_')[-1] + if number.isdigit() and tag not in tags: + y = x.replace('_'+number, '') + elements[elements.index(x)] = y + with open(output_path, 'w') as file: for item in elements: - file.write("%s\n" % item) - else: + if args.clean_header_field_names: + verboseprint('--clean-header-field-names chosen. Headers reformatted.') + item = item.replace( + ':', '_').replace('/', '__').replace('<', '_').replace('>', '') + file.write("%s\n" % item) + else: verboseprint(f'Index file generated at {output_path}') write_results_to_csv(all_results, args, output_path) diff --git a/pds4indextools/values.yaml b/pds4indextools/values.yaml new file mode 100644 index 0000000..529e42b --- /dev/null +++ b/pds4indextools/values.yaml @@ -0,0 +1,10 @@ +{ + "/pds:Product_Ancillary/pds:Identification_Area[1]/pds:version_id[1]": "1.0", + "/pds:Product_Ancillary/pds:Identification_Area[1]/pds:title[1]": "Index file", + "/pds:Product_Ancillary/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:author_list[1]": "Simpson, Emilie", + "/pds:Product_Ancillary/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:editor_list[1]": "Simpson, Emilie", + "/pds:Product_Ancillary/pds:Identification_Area[1]/pds:Modification_History[1]/pds:Modification_Detail/pds:modification_date[1]": "2024-05-01T12:59:60", + "/pds:Product_Ancillary/pds:Identification_Area[1]/pds:Modification_History[1]/pds:Modification_Detail/pds:version_id[1]": "1.0", + "/pds:Product_Ancillary/pds:Identification_Area[1]/pds:Modification_History[1]/pds:Modification_Detail/pds:description[1]": "Initial version" + +} \ No newline at end of file diff --git a/samples/element_2.txt b/samples/element_2.txt deleted file mode 100644 index fa2e6be..0000000 --- a/samples/element_2.txt +++ /dev/null @@ -1 +0,0 @@ -**/geom:spice_kernel_file_name* \ No newline at end of file diff --git a/samples/element_3.txt b/samples/element_3.txt deleted file mode 100644 index c0e1657..0000000 --- a/samples/element_3.txt +++ /dev/null @@ -1,2 +0,0 @@ -**/pds:Observing_System_Component<*>/pds:name<*> -**/pds:Target_Identification<*>/pds:name<*> \ No newline at end of file diff --git a/samples/element_4.txt b/samples/element_4.txt deleted file mode 100644 index 923c709..0000000 --- a/samples/element_4.txt +++ /dev/null @@ -1,2 +0,0 @@ -**/*comment* -!**/geom:comment* \ No newline at end of file diff --git a/samples/elements_clean_header_field_names.txt b/samples/elements_clean_header_field_names.txt deleted file mode 100644 index 626d969..0000000 --- a/samples/elements_clean_header_field_names.txt +++ /dev/null @@ -1,5 +0,0 @@ -**/pds:logical_identifier* -**/pds:version_id* -**/pds:start_date_time* -**/pds:stop_date_time* -**/pds:wavelength_range* \ No newline at end of file diff --git a/samples/elements_xpath_simplify.txt b/samples/elements_xpath_simplify.txt deleted file mode 100644 index cc21130..0000000 --- a/samples/elements_xpath_simplify.txt +++ /dev/null @@ -1 +0,0 @@ -**/pds:name* \ No newline at end of file diff --git a/samples/elements_xpath_simplify_2.txt b/samples/elements_xpath_simplify_2.txt deleted file mode 100644 index 9655eff..0000000 --- a/samples/elements_xpath_simplify_2.txt +++ /dev/null @@ -1 +0,0 @@ -**/rings:Occultation_Time_Series* \ No newline at end of file diff --git a/samples/sample_elements.txt b/samples/sample_elements.txt deleted file mode 100644 index 60bcf6a..0000000 --- a/samples/sample_elements.txt +++ /dev/null @@ -1,3 +0,0 @@ -/pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier* -/pds:Product_Observational/pds:Identification_Area<1>/pds:version_id* -/pds:Product_Observational/pds:Identification_Area<1>/pds:title* diff --git a/test_files/clean_header_field_names_success_1.csv b/test_files/clean_header_field_names_success_1.csv deleted file mode 100644 index d39cecb..0000000 --- a/test_files/clean_header_field_names_success_1.csv +++ /dev/null @@ -1,2 +0,0 @@ -pds_Product_Observational__pds_Identification_Area<1>__pds_logical_identifier<1>,pds_Product_Observational__pds_Identification_Area<1>__pds_version_id<1>,pds_Product_Observational__pds_Identification_Area<1>__pds_title<1>,pds_Product_Observational__pds_Identification_Area<1>__pds_information_model_version<1>,pds_Product_Observational__pds_Observing_System<1>__pds_name<1>,pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_name<1>,pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_type<1>,pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_Internal_Reference<1>__pds_lid_reference<1>,pds_Product_Observational__pds_Observing_System<1>__pds_Observing_System_Component<1>__pds_Internal_Reference<1>__pds_reference_type<1> -urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,1.11.0.0,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host diff --git a/test_files/clean_header_field_names_success_2.csv b/test_files/clean_header_field_names_success_2.csv deleted file mode 100644 index c06708d..0000000 --- a/test_files/clean_header_field_names_success_2.csv +++ /dev/null @@ -1,3 +0,0 @@ -pds_Product_Observational__pds_Identification_Area<1>__pds_logical_identifier<1>,pds_Product_Observational__pds_Identification_Area<1>__pds_version_id<1>,pds_Product_Observational__pds_Observation_Area<1>__pds_Time_Coordinates<1>__pds_start_date_time<1>,pds_Product_Observational__pds_Observation_Area<1>__pds_Time_Coordinates<1>__pds_stop_date_time<1>,pds_Product_Observational__pds_Observation_Area<1>__pds_Primary_Result_Summary<1>__pds_Science_Facets<1>__pds_wavelength_range<1>,pds_Product_Observational__pds_Observation_Area<1>__pds_Primary_Result_Summary<1>__pds_Science_Facets<2>__pds_wavelength_range<1> -urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN -urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared diff --git a/test_files/elements_file_success.csv b/test_files/elements_file_success.csv deleted file mode 100644 index 08b5633..0000000 --- a/test_files/elements_file_success.csv +++ /dev/null @@ -1,2 +0,0 @@ -pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:title<1> -urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img diff --git a/test_files/elements_file_success_2.csv b/test_files/elements_file_success_2.csv deleted file mode 100644 index cb2b366..0000000 --- a/test_files/elements_file_success_2.csv +++ /dev/null @@ -1,2 +0,0 @@ -pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_2<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_3<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_4<1> -ura111.bsp,vgr2.ura111.bsp,earthstns_itrf93_040916.bsp,earth_720101_031229.bpc,naif0012.tls diff --git a/test_files/elements_file_success_3.csv b/test_files/elements_file_success_3.csv deleted file mode 100644 index e564167..0000000 --- a/test_files/elements_file_success_3.csv +++ /dev/null @@ -1,3 +0,0 @@ -pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1> -Infra Red Telescope Facility-Maunakea,IRTF 3.2m,Generic InSb High Speed Photometer,Uranus,Uranus Rings -Cassini Orbiter,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,NaN,Dark Sky,NaN diff --git a/test_files/elements_file_success_4.csv b/test_files/elements_file_success_4.csv deleted file mode 100644 index ae43f57..0000000 --- a/test_files/elements_file_success_4.csv +++ /dev/null @@ -1,4 +0,0 @@ -pds:Product_Observational/pds:Observation_Area<1>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:comment<1> -NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN -"This data file was migrated from the original PDS3 file: COISS_1004/data/1357539422_1357559280/N1357539630_1.IMG The content of this data file was reorganized in order to make it PDS4 compliant. Specifically, prefix bytes were removed from each line of the image and appended at the end. The resulting data file remains compatible with the VICAR standard. Values for instrument attributes have been derived from the corresponding values in the original PDS3 label.",The index table of basic parameters associated with each observation.,The index table of body surface geometry information associated with each observation.,An index listing every Saturn system body expected to fall within each field of view.,The index table of ring geometry information associated with each observation.,The ISS Data User's Guide,The browse image in JPEG format that illustrates the scientific content of this image.,NaN,NaN -NaN,The User Guide for Earth-based Uranus Stellar Occultations.,Diagram of the Uranus system showing the occultation track.,Diagram of the view of the Earth from Uranus at mid-occultation Time.,Plot of the altitude (in degrees) of Uranus and the sun relative to the horizon over the duration of the occulation.,Low resolution plot of counts vs. time for the entire occultation.,Illustrates some of the processing steps involved in normalizing a time-series occultation light curve from counts per second to units of stellar flux.,The fitted model of the ring system upon which the data are based.,The support bundle for all of the Earth-based Uranus system occultations. diff --git a/test_files/expected/clean_header_field_names_success_1.txt b/test_files/expected/clean_header_field_names_success_1.txt new file mode 100644 index 0000000..dcae6d7 --- /dev/null +++ b/test_files/expected/clean_header_field_names_success_1.txt @@ -0,0 +1,9 @@ +pds_Product_Observational__pds_Identification_Area_1__pds_logical_identifier_1 +pds_Product_Observational__pds_Identification_Area_1__pds_version_id_1 +pds_Product_Observational__pds_Identification_Area_1__pds_title_1 +pds_Product_Observational__pds_Identification_Area_1__pds_information_model_version_1 +pds_Product_Observational__pds_Observing_System_1__pds_name_1 +pds_Product_Observational__pds_Observing_System_1__pds_Observing_System_Component_1__pds_name_1 +pds_Product_Observational__pds_Observing_System_1__pds_Observing_System_Component_1__pds_type_1 +pds_Product_Observational__pds_Observing_System_1__pds_Observing_System_Component_1__pds_Internal_Reference_1__pds_lid_reference_1 +pds_Product_Observational__pds_Observing_System_1__pds_Observing_System_Component_1__pds_Internal_Reference_1__pds_reference_type_1 diff --git a/test_files/expected/clean_header_field_names_success_2.txt b/test_files/expected/clean_header_field_names_success_2.txt new file mode 100644 index 0000000..651105c --- /dev/null +++ b/test_files/expected/clean_header_field_names_success_2.txt @@ -0,0 +1,8 @@ +pds_Product_Observational__pds_Identification_Area_1__pds_logical_identifier_1 +pds_Product_Observational__pds_Identification_Area_1__pds_version_id_1 +pds_Product_Observational__pds_Identification_Area_1__pds_logical_identifier_1 +pds_Product_Observational__pds_Identification_Area_1__pds_version_id_1 +pds_Product_Observational__pds_Observation_Area_1__pds_Time_Coordinates_1__pds_start_date_time_1 +pds_Product_Observational__pds_Observation_Area_1__pds_Time_Coordinates_1__pds_stop_date_time_1 +pds_Product_Observational__pds_Observation_Area_1__pds_Primary_Result_Summary_1__pds_Science_Facets_1__pds_wavelength_range_1 +pds_Product_Observational__pds_Observation_Area_1__pds_Primary_Result_Summary_1__pds_Science_Facets_2__pds_wavelength_range_1 diff --git a/test_files/expected/elements_file_success.csv b/test_files/expected/elements_file_success.csv deleted file mode 100644 index 08b5633..0000000 --- a/test_files/expected/elements_file_success.csv +++ /dev/null @@ -1,2 +0,0 @@ -pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:title<1> -urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img diff --git a/test_files/expected/elements_file_success_1.txt b/test_files/expected/elements_file_success_1.txt new file mode 100644 index 0000000..83b63d7 --- /dev/null +++ b/test_files/expected/elements_file_success_1.txt @@ -0,0 +1,3 @@ +pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1> +pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1> +pds:Product_Observational/pds:Identification_Area<1>/pds:title<1> diff --git a/test_files/expected/elements_file_success_2.csv b/test_files/expected/elements_file_success_2.csv deleted file mode 100644 index cb2b366..0000000 --- a/test_files/expected/elements_file_success_2.csv +++ /dev/null @@ -1,2 +0,0 @@ -pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_2<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_3<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_4<1> -ura111.bsp,vgr2.ura111.bsp,earthstns_itrf93_040916.bsp,earth_720101_031229.bpc,naif0012.tls diff --git a/test_files/expected/elements_file_success_2.txt b/test_files/expected/elements_file_success_2.txt new file mode 100644 index 0000000..f927538 --- /dev/null +++ b/test_files/expected/elements_file_success_2.txt @@ -0,0 +1,5 @@ +pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1> diff --git a/test_files/expected/elements_file_success_3.csv b/test_files/expected/elements_file_success_3.csv deleted file mode 100644 index e564167..0000000 --- a/test_files/expected/elements_file_success_3.csv +++ /dev/null @@ -1,3 +0,0 @@ -pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1> -Infra Red Telescope Facility-Maunakea,IRTF 3.2m,Generic InSb High Speed Photometer,Uranus,Uranus Rings -Cassini Orbiter,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,NaN,Dark Sky,NaN diff --git a/test_files/expected/elements_file_success_3.txt b/test_files/expected/elements_file_success_3.txt new file mode 100644 index 0000000..c58a30d --- /dev/null +++ b/test_files/expected/elements_file_success_3.txt @@ -0,0 +1,8 @@ +pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1> diff --git a/test_files/expected/elements_file_success_4.csv b/test_files/expected/elements_file_success_4.csv deleted file mode 100644 index ae43f57..0000000 --- a/test_files/expected/elements_file_success_4.csv +++ /dev/null @@ -1,4 +0,0 @@ -pds:Product_Observational/pds:Observation_Area<1>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:comment<1> -NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN -"This data file was migrated from the original PDS3 file: COISS_1004/data/1357539422_1357559280/N1357539630_1.IMG The content of this data file was reorganized in order to make it PDS4 compliant. Specifically, prefix bytes were removed from each line of the image and appended at the end. The resulting data file remains compatible with the VICAR standard. Values for instrument attributes have been derived from the corresponding values in the original PDS3 label.",The index table of basic parameters associated with each observation.,The index table of body surface geometry information associated with each observation.,An index listing every Saturn system body expected to fall within each field of view.,The index table of ring geometry information associated with each observation.,The ISS Data User's Guide,The browse image in JPEG format that illustrates the scientific content of this image.,NaN,NaN -NaN,The User Guide for Earth-based Uranus Stellar Occultations.,Diagram of the Uranus system showing the occultation track.,Diagram of the view of the Earth from Uranus at mid-occultation Time.,Plot of the altitude (in degrees) of Uranus and the sun relative to the horizon over the duration of the occulation.,Low resolution plot of counts vs. time for the entire occultation.,Illustrates some of the processing steps involved in normalizing a time-series occultation light curve from counts per second to units of stellar flux.,The fitted model of the ring system upon which the data are based.,The support bundle for all of the Earth-based Uranus system occultations. diff --git a/test_files/expected/elements_file_success_4.txt b/test_files/expected/elements_file_success_4.txt new file mode 100644 index 0000000..428dbc3 --- /dev/null +++ b/test_files/expected/elements_file_success_4.txt @@ -0,0 +1,15 @@ +pds:Product_Observational/pds:Observation_Area<1>/pds:comment<1> +pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:comment<1> +pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:comment<1> +pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:comment<1> +pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:comment<1> +pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:comment<1> +pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:comment<1> +pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:comment<1> +pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:comment<1> +pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:comment<1> +pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:comment<1> +pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:comment<1> +pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:comment<1> +pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:comment<1> +pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:comment<1> diff --git a/test_files/expected/extra_file_info_success_1.csv b/test_files/expected/extra_file_info_success_1.csv index ee9afee..d40644f 100644 --- a/test_files/expected/extra_file_info_success_1.csv +++ b/test_files/expected/extra_file_info_success_1.csv @@ -1,2 +1,2 @@ -filename,filepath,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:title<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:information_model_version<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:product_class<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:author_list<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:publication_year<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<2>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<3>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<4>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<5>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<6>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:description<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:purpose<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:processing_level<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:description<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:discipline_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:facet1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:discipline_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:facet1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:alternate_designation<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:alternate_designation<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_2<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_2<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_3<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_3<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_4<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_4<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:comment<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:occultation_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:occultation_direction<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:time_series_direction<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:planetary_occultation_flag<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:data_quality_score<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:ring_plane<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:star_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:fresnel_scale<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:projected_star_diameter<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:sigma_projected_star_diameter<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:fractional_error_star_counts<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:time_constant_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:time_constant<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:sigma_time_constant<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_wavelength<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_wavelength<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:reference_time_utc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_observed_event_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_observed_event_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:observed_event_start_tdb<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:observed_event_stop_tdb<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:earth_received_start_time_utc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:earth_received_stop_time_utc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_ring_radius<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_ring_radius<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_ring_longitude<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_ring_longitude<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_observed_ring_azimuth<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_observed_ring_azimuth<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:observed_ring_elevation<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:light_source_incidence_angle<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:lidvid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:comment<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:file_name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:local_identifier<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:creation_date_time<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:offset<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:object_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:parsing_standard_id<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:offset<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:records<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:record_delimiter<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:fields<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:groups<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:record_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:description<1> -tester_label_2.xml,tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope,1.14.0.0,Product_Observational,"French, Richard G.; McGhee-French, Colleen A.; Gordon, Mitchell K.",2020,uranus atmosphere,uranus atmosphere stellar occultation,uranus atmosphere stellar occultation time series,uranus rings,uranus rings stellar occultation,uranus rings stellar occultation radial profile,Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope.,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Science,Calibrated,Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope.,Infrared,Atmospheres,Structure,Infrared,Ring-Moon Systems,Ring Occultation Profile,Earth-based Observations of Uranus System Stellar Occultations,Observing Campaign,urn:nasa:pds:context:investigation:observing_campaign.earth-based-uranus-stellar-occultations,data_to_investigation,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,Host,urn:nasa:pds:context:facility:observatory.irtf-maunakea,is_facility,IRTF 3.2m,Telescope,urn:nasa:pds:context:telescope:irtf-maunakea.3m2,is_telescope,Generic InSb High Speed Photometer,Instrument,urn:nasa:pds:context:instrument:multi-host.generic_insp_hsp,is_instrument,Uranus,NAIF ID 799,Planet,urn:nasa:pds:context:target:planet.uranus,data_to_target,Uranus Rings,Uranian Ring System,Ring,urn:nasa:pds:context:target:ring.uranus.rings,data_to_target,SPK,ura111.bsp,SPK,vgr2.ura111.bsp,SPK,earthstns_itrf93_040916.bsp,BPC,earth_720101_031229.bpc,LSK,naif0012.tls,These kernel files were used in the generation of the products in the parent bundle. Some or all of them may not have been used directly in the generation of this product.,stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528,urn:nasa:pds:uranus_occ_support:document:earth-based-uranus-stellar-occultations-user-guide,data_to_document,The User Guide for Earth-based Uranus Stellar Occultations.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_obs_geom,data_to_browse,Diagram of the Uranus system showing the occultation track.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_earth,data_to_browse,Diagram of the view of the Earth from Uranus at mid-occultation Time.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_alt,data_to_browse,Plot of the altitude (in degrees) of Uranus and the sun relative to the horizon over the duration of the occulation.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_occult,data_to_browse,Low resolution plot of counts vs. time for the entire occultation.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_normalization,data_to_browse,Illustrates some of the processing steps involved in normalizing a time-series occultation light curve from counts per second to units of stellar flux.,urn:nasa:pds:uranus_occ_support:data:uranus_occultation_ring_fit_rfrench_20201201::1.0,data_to_resource,The fitted model of the ring system upon which the data are based.,urn:nasa:pds:uranus_occ_support,data_to_resource,The support bundle for all of the Earth-based Uranus system occultations.,u149_irtf_320cm_2200nm_counts-v-time_occult.tab,data,2021-04-05T23:18:20Z,0,264,UTF-8 Text,"Provides the column headers, separated by commas, for the data table.",264,10551,"This is a calibrated time series of an occultation by the Uranus system generated from an earth-based stellar occultation. The data are uniformly spaced in time, and normalized in units of stellar intensity. The data may include occultations by both the rings and the planet, or just the planet. The occultation by the rings, if present, is based on the equatorial ring plane radius sampled at each time point, computed from an orbit model for the ring system.",Carriage-Return Line-Feed,15,0,212,Observed Event Time,1,1,ASCII_Real,16,second,"The instant at which photons were received at the observer location. It is represented in the Universal Coordinated Time system, as a number of elapsed seconds since the time given by the reference_time_utc attribute specified in this file. It refers to the middle of the bin.",Observed Event TDB,2,19,ASCII_Real,16,second,"The instant at which photons were received at the observer location. It is represented in the 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch.",Mean Signal,3,37,ASCII_Real,16,Mean counts received by the instrument during this time bin. The background signal has not been subtracted. Refer to NOTE FLAG for guidance on validity of data.,999999999.999999,999999999.999999,Normalized Signal,4,55,ASCII_Real,10,"Normalized signal during this time bin, in units of the unocculted stellar signal, such that 1.0 corresponds to the full unocculted star signal and 0.0 corresponds to no counts from the star (a completely opaque ring). NORMALIZED SIGNAL = (MEAN_SIGNAL - BACKGROUND_MODEL)/(UNOCCULTED STAR MODEL) This is an approximate normalization, computed using regional polynomial fits. For high-precision photometry of ring events, use locally computed normalization.",999.999999,999.999999,Sky-plane F,5,67,ASCII_Real,13,Kilometer,"The east/west component of r sky (positive in the east direction), in km.",Sky-plane G,6,82,ASCII_Real,13,Kilometer,"The north/south component of r sky (positive in the north direction), in km.",Sky-plane Radius,7,97,ASCII_Real,13,Kilometer,"The length of the radius vector in the plane of the sky measured from the center of the occulting object to the position of the occulted star or spacecraft, in km.",Ring Radius,8,112,ASCII_Real,12,Kilometer,"Radial distance of the occultation intercept point (middle of the bin) from the center of the planet, in km. Distances are measured along the equator plane.",Ring Longitude,9,126,ASCII_Real,8,Degree,Inertial longitude on the ring plane corresponding to the midpoint of the bin.,Observed Ring Azimuth,10,136,ASCII_Real,9,Degree,"Angle measured at a point in the ring plane, starting from the direction of a photon heading to the observer, and ending at the direction of a local radial vector. This angle is projected into the ring plane and measured in the prograde direction.",Ring Event TDB,11,147,ASCII_Real,16,second,"The time at which photons left the ring plane. This time is earlier than the associated OBSERVED EVENT TDB by an amount equal to the light travel time. It is represented in the 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch.",Unocculted Star Model,12,165,ASCII_Real,16,Model of the unocculted star signal as a function of ring plane radius. This is necessary because of variations in atmospheric transparency and other time-dependent effects.,999999999.999999,999999999.999999,Background Model,13,183,ASCII_Real,16,Model of the non-stellar background signal (which may vary over the course of the occultation) due to instrumental offsets applied during the recording and/or sky brightness and contributions from reflected sunlight from the rings and planet.,999999999.999999,999999999.999999,Number Of Samples Per Bin,14,201,ASCII_Integer,4,The number of raw data points per bin.,Note Flag,15,207,ASCII_Integer,4,"A numerical flag that associates specific comments with individual data bins. When more than one comment applies, the values are summed. The values and their associated comments are: 0: radius and longitude are based on Uranus equatorial plane. 1: radius and longitude are based inclined ring plane model referred to in metadata associated with file. 2: observed ring occultation event 4: telescope pointed to nearby sky for background level check 8: input signal from time source, not from photometer on telescope 16: line of sight intersects planet 32: dawn/dusk - rapid background level change; no background or star intensity estimate. 64: unreliable data (e.g., clouds, telescope guiding error, or instrument adjustment); no background or star intensity estimate." +filename,filepath,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:title<1> +tester_label_2.xml,labels/tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope diff --git a/test_files/expected/extra_file_info_success_3.csv b/test_files/expected/extra_file_info_success_3.csv new file mode 100644 index 0000000..c6a73fa --- /dev/null +++ b/test_files/expected/extra_file_info_success_3.csv @@ -0,0 +1,4 @@ +filename,filepath,LID,bundle,bundle_lid,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1> +tester_label_1.xml,labels/tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0 +tester_label_3.xml,labels/tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0 +tester_label_2.xml,labels/tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0 diff --git a/test_files/expected/simplify_xpaths_success_1.csv b/test_files/expected/simplify_xpaths_success_1.csv deleted file mode 100644 index f7b7e89..0000000 --- a/test_files/expected/simplify_xpaths_success_1.csv +++ /dev/null @@ -1,2 +0,0 @@ -pds:logical_identifier,pds:version_id,pds:title,pds:information_model_version,pds:name,pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:type,pds:lid_reference,pds:reference_type -urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,1.11.0.0,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host diff --git a/test_files/expected/simplify_xpaths_success_1.txt b/test_files/expected/simplify_xpaths_success_1.txt new file mode 100644 index 0000000..e179908 --- /dev/null +++ b/test_files/expected/simplify_xpaths_success_1.txt @@ -0,0 +1,9 @@ +pds:logical_identifier +pds:version_id +pds:title +pds:information_model_version +pds:Product_Observational/pds:Observing_System<1>/pds:name<1> +pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1> +pds:type +pds:lid_reference +pds:reference_type diff --git a/test_files/expected/simplify_xpaths_success_2.csv b/test_files/expected/simplify_xpaths_success_2.csv deleted file mode 100644 index 58e70a7..0000000 --- a/test_files/expected/simplify_xpaths_success_2.csv +++ /dev/null @@ -1,4 +0,0 @@ -pds:name,pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:name<1> -Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN -Cassini-Huygens,NaN,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,Dark Sky,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN -Earth-based Observations of Uranus System Stellar Occultations,NaN,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,IRTF 3.2m,Uranus,Generic InSb High Speed Photometer,Uranus Rings,Observed Event Time,Observed Event TDB,Mean Signal,Normalized Signal,Sky-plane F,Sky-plane G,Sky-plane Radius,Ring Radius,Ring Longitude,Observed Ring Azimuth,Ring Event TDB,Unocculted Star Model,Background Model,Number Of Samples Per Bin,Note Flag diff --git a/test_files/expected/simplify_xpaths_success_2.txt b/test_files/expected/simplify_xpaths_success_2.txt new file mode 100644 index 0000000..8ba0061 --- /dev/null +++ b/test_files/expected/simplify_xpaths_success_2.txt @@ -0,0 +1,29 @@ +pds:Product_Observational/pds:Observing_System<1>/pds:name<1> +pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1> +pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:name<1> +pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:name<1> +pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:name<1> +pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:name<1> +pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:name<1> +pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:name<1> +pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:name<1> +pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:name<1> +pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:name<1> +pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:name<1> +pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:name<1> +pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:name<1> +pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:name<1> +pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:name<1> +pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:name<1> diff --git a/test_files/expected/simplify_xpaths_success_3.csv b/test_files/expected/simplify_xpaths_success_3.csv deleted file mode 100644 index 0b16b98..0000000 --- a/test_files/expected/simplify_xpaths_success_3.csv +++ /dev/null @@ -1,2 +0,0 @@ -rings:occultation_type,rings:occultation_direction,rings:time_series_direction,rings:planetary_occultation_flag,rings:data_quality_score,rings:ring_plane,rings:star_name,rings:fresnel_scale,rings:projected_star_diameter,rings:sigma_projected_star_diameter,rings:fractional_error_star_counts,rings:time_constant_type,rings:time_constant,rings:sigma_time_constant,rings:minimum_wavelength,rings:maximum_wavelength,rings:reference_time_utc,rings:minimum_observed_event_time,rings:maximum_observed_event_time,rings:observed_event_start_tdb,rings:observed_event_stop_tdb,rings:earth_received_start_time_utc,rings:earth_received_stop_time_utc,rings:minimum_ring_radius,rings:maximum_ring_radius,rings:minimum_ring_longitude,rings:maximum_ring_longitude,rings:minimum_observed_ring_azimuth,rings:maximum_observed_ring_azimuth,rings:observed_ring_elevation,rings:light_source_incidence_angle -stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528 diff --git a/test_files/expected/simplify_xpaths_success_3.txt b/test_files/expected/simplify_xpaths_success_3.txt new file mode 100644 index 0000000..08fc585 --- /dev/null +++ b/test_files/expected/simplify_xpaths_success_3.txt @@ -0,0 +1,31 @@ +rings:occultation_type +rings:occultation_direction +rings:time_series_direction +rings:planetary_occultation_flag +rings:data_quality_score +rings:ring_plane +rings:star_name +rings:fresnel_scale +rings:projected_star_diameter +rings:sigma_projected_star_diameter +rings:fractional_error_star_counts +rings:time_constant_type +rings:time_constant +rings:sigma_time_constant +rings:minimum_wavelength +rings:maximum_wavelength +rings:reference_time_utc +rings:minimum_observed_event_time +rings:maximum_observed_event_time +rings:observed_event_start_tdb +rings:observed_event_stop_tdb +rings:earth_received_start_time_utc +rings:earth_received_stop_time_utc +rings:minimum_ring_radius +rings:maximum_ring_radius +rings:minimum_ring_longitude +rings:maximum_ring_longitude +rings:minimum_observed_ring_azimuth +rings:maximum_observed_ring_azimuth +rings:observed_ring_elevation +rings:light_source_incidence_angle diff --git a/test_files/expected/simplify_xpaths_success_4.csv b/test_files/expected/simplify_xpaths_success_4.csv deleted file mode 100644 index 7655f49..0000000 --- a/test_files/expected/simplify_xpaths_success_4.csv +++ /dev/null @@ -1,2 +0,0 @@ -cassini:mission_phase_name,cassini:spacecraft_clock_count_partition,cassini:spacecraft_clock_start_count,cassini:spacecraft_clock_stop_count,cassini:limitations,cassini:antiblooming_state_flag,cassini:command_file_name,cassini:command_sequence_number,cassini:dark_strip_mean,cassini:data_conversion_type,cassini:delayed_readout_flag,cassini:detector_temperature,cassini:electronics_bias,cassini:expected_maximum_full_well,cassini:expected_maximum_DN_sat,cassini:expected_packets,cassini:exposure_duration,cassini:filter_name_1,cassini:filter_name_2,cassini:filter_temperature,cassini:flight_software_version_id,cassini:gain_mode_id,cassini:ground_software_version_id,cassini:image_mid_time,cassini:image_number,cassini:image_time,cassini:image_observation_type,cassini:instrument_data_rate,cassini:inst_cmprs_type,cassini:inst_cmprs_param_malgo,cassini:inst_cmprs_param_tb,cassini:inst_cmprs_param_blocks,cassini:inst_cmprs_param_quant,cassini:inst_cmprs_rate_expected_bits,cassini:inst_cmprs_rate_actual_bits,cassini:inst_cmprs_ratio,cassini:light_flood_state_flag,cassini:method_description,cassini:missing_lines,cassini:missing_packet_flag,cassini:observation_id,cassini:optics_temperature_front,cassini:optics_temperature_back,cassini:order_number,cassini:parallel_clock_voltage_index,cassini:pds3_product_creation_time,cassini:pds3_product_version_type,cassini:pds3_target_desc,cassini:pds3_target_list,cassini:pds3_target_name,cassini:pre-pds_version_number,cassini:prepare_cycle_index,cassini:readout_cycle_index,cassini:received_packets,cassini:sensor_head_electronics_temperature,cassini:sequence_id,cassini:sequence_number,cassini:sequence_title,cassini:shutter_mode_id,cassini:shutter_state_id,cassini:start_time_doy,cassini:stop_time_doy,cassini:telemetry_format_id,cassini:valid_maximum_full_well,cassini:valid_maximum_DN_sat -EARTH-JUPITER CRUISE,1,1357539630.068,1357539630.123,N/A,ON,ISS_C23ST_OCCULT001_UVIS_B.icf,730,0.,TABLE,NO,-89.243546,112,-1,-1,-1,220.,P0,GRN,-0.468354,1.2,29,ISS V7.0 11-22-2000,2001-007T06:08:48.013,1357539630,2001-007T06:08:48.013,SCIENCE,182.783997,LOSSLESS,999,999,999,999,-1.,-1.,3.150372,ON,Information not provided,0,NO,UVIS_C23ST_OCCULT001_PRIME_C,0.71269,-999.,-999,9,2001-008T10:55:49.000,FINAL,Information not provided,N/A,DARK SKY,1,0,11,-1,1.633024,C23,-1,ISS_C23ST_OCCULT001_UVIS,NACONLY,ENABLED,2001-007T06:08:47.793,2001-007T06:08:48.013,Information not provided,-1,-1 diff --git a/test_files/expected/simplify_xpaths_success_4.txt b/test_files/expected/simplify_xpaths_success_4.txt new file mode 100644 index 0000000..a1d7d69 --- /dev/null +++ b/test_files/expected/simplify_xpaths_success_4.txt @@ -0,0 +1,64 @@ +cassini:mission_phase_name +cassini:spacecraft_clock_count_partition +cassini:spacecraft_clock_start_count +cassini:spacecraft_clock_stop_count +cassini:limitations +cassini:antiblooming_state_flag +cassini:command_file_name +cassini:command_sequence_number +cassini:dark_strip_mean +cassini:data_conversion_type +cassini:delayed_readout_flag +cassini:detector_temperature +cassini:electronics_bias +cassini:expected_maximum_full_well +cassini:expected_maximum_DN_sat +cassini:expected_packets +cassini:exposure_duration +cassini:filter_name_1 +cassini:filter_name_2 +cassini:filter_temperature +cassini:flight_software_version_id +cassini:gain_mode_id +cassini:ground_software_version_id +cassini:image_mid_time +cassini:image_number +cassini:image_time +cassini:image_observation_type +cassini:instrument_data_rate +cassini:inst_cmprs_type +cassini:inst_cmprs_param_malgo +cassini:inst_cmprs_param_tb +cassini:inst_cmprs_param_blocks +cassini:inst_cmprs_param_quant +cassini:inst_cmprs_rate_expected_bits +cassini:inst_cmprs_rate_actual_bits +cassini:inst_cmprs_ratio +cassini:light_flood_state_flag +cassini:method_description +cassini:missing_lines +cassini:missing_packet_flag +cassini:optics_temperature_front +cassini:optics_temperature_back +cassini:order_number +cassini:parallel_clock_voltage_index +cassini:pds3_product_creation_time +cassini:pds3_product_version_type +cassini:pds3_target_desc +cassini:pds3_target_list +cassini:pds3_target_name +cassini:pre-pds_version_number +cassini:prepare_cycle_index +cassini:readout_cycle_index +cassini:received_packets +cassini:sensor_head_electronics_temperature +cassini:sequence_id +cassini:sequence_number +cassini:sequence_title +cassini:shutter_mode_id +cassini:shutter_state_id +cassini:start_time_doy +cassini:stop_time_doy +cassini:telemetry_format_id +cassini:valid_maximum_full_well +cassini:valid_maximum_DN_sat diff --git a/test_files/expected/sort_by_success.csv b/test_files/expected/sort_by_success_1.csv similarity index 100% rename from test_files/expected/sort_by_success.csv rename to test_files/expected/sort_by_success_1.csv diff --git a/test_files/expected/sort_by_success_2.csv b/test_files/expected/sort_by_success_2.csv index f819dbb..a54b0bd 100644 --- a/test_files/expected/sort_by_success_2.csv +++ b/test_files/expected/sort_by_success_2.csv @@ -1,4 +1,4 @@ -pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1> -urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN -urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN -urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared +bundle_lid,filepath,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1> +urn:nasa:pds:cassini_iss_cruise,labels/tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN +urn:nasa:pds:cassini_iss_saturn,labels/tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN +urn:nasa:pds:uranus_occ_u149_irtf_320cm,labels/tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared diff --git a/test_files/extra_file_info_success_1.csv b/test_files/extra_file_info_success_1.csv deleted file mode 100644 index ee9afee..0000000 --- a/test_files/extra_file_info_success_1.csv +++ /dev/null @@ -1,2 +0,0 @@ -filename,filepath,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:title<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:information_model_version<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:product_class<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:author_list<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:publication_year<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<2>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<3>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<4>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<5>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:keyword<6>,pds:Product_Observational/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:description<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:purpose<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:processing_level<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:description<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:discipline_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:facet1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:discipline_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:facet1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:alternate_designation<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:alternate_designation<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_1<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_2<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_2<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_3<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_3<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:kernel_type_4<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name_4<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:comment<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:occultation_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:occultation_direction<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:time_series_direction<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:planetary_occultation_flag<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:data_quality_score<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:ring_plane<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:star_name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:fresnel_scale<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:projected_star_diameter<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:sigma_projected_star_diameter<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:fractional_error_star_counts<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:time_constant_type<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:time_constant<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:sigma_time_constant<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_wavelength<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_wavelength<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:reference_time_utc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_observed_event_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_observed_event_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:observed_event_start_tdb<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:observed_event_stop_tdb<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:earth_received_start_time_utc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:earth_received_stop_time_utc<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_ring_radius<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_ring_radius<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_ring_longitude<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_ring_longitude<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:minimum_observed_ring_azimuth<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:maximum_observed_ring_azimuth<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:observed_ring_elevation<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/rings:Ring_Moon_Systems<1>/rings:Occultation_Time_Series<1>/rings:light_source_incidence_angle<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:lidvid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:comment<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:lid_reference<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:reference_type<1>,pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:comment<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:file_name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:local_identifier<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:File<1>/pds:creation_date_time<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:offset<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:object_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:parsing_standard_id<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Header<1>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:offset<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:records<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:record_delimiter<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:fields<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:groups<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:record_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:unit<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Special_Constants<1>/pds:missing_constant<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:Field_Statistics<1>/pds:maximum<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:description<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_number<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_location<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:data_type<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:field_length<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:description<1> -tester_label_2.xml,tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope,1.14.0.0,Product_Observational,"French, Richard G.; McGhee-French, Colleen A.; Gordon, Mitchell K.",2020,uranus atmosphere,uranus atmosphere stellar occultation,uranus atmosphere stellar occultation time series,uranus rings,uranus rings stellar occultation,uranus rings stellar occultation radial profile,Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope.,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Science,Calibrated,Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope.,Infrared,Atmospheres,Structure,Infrared,Ring-Moon Systems,Ring Occultation Profile,Earth-based Observations of Uranus System Stellar Occultations,Observing Campaign,urn:nasa:pds:context:investigation:observing_campaign.earth-based-uranus-stellar-occultations,data_to_investigation,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,Host,urn:nasa:pds:context:facility:observatory.irtf-maunakea,is_facility,IRTF 3.2m,Telescope,urn:nasa:pds:context:telescope:irtf-maunakea.3m2,is_telescope,Generic InSb High Speed Photometer,Instrument,urn:nasa:pds:context:instrument:multi-host.generic_insp_hsp,is_instrument,Uranus,NAIF ID 799,Planet,urn:nasa:pds:context:target:planet.uranus,data_to_target,Uranus Rings,Uranian Ring System,Ring,urn:nasa:pds:context:target:ring.uranus.rings,data_to_target,SPK,ura111.bsp,SPK,vgr2.ura111.bsp,SPK,earthstns_itrf93_040916.bsp,BPC,earth_720101_031229.bpc,LSK,naif0012.tls,These kernel files were used in the generation of the products in the parent bundle. Some or all of them may not have been used directly in the generation of this product.,stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528,urn:nasa:pds:uranus_occ_support:document:earth-based-uranus-stellar-occultations-user-guide,data_to_document,The User Guide for Earth-based Uranus Stellar Occultations.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_obs_geom,data_to_browse,Diagram of the Uranus system showing the occultation track.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_earth,data_to_browse,Diagram of the view of the Earth from Uranus at mid-occultation Time.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_alt,data_to_browse,Plot of the altitude (in degrees) of Uranus and the sun relative to the horizon over the duration of the occulation.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_occult,data_to_browse,Low resolution plot of counts vs. time for the entire occultation.,urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_normalization,data_to_browse,Illustrates some of the processing steps involved in normalizing a time-series occultation light curve from counts per second to units of stellar flux.,urn:nasa:pds:uranus_occ_support:data:uranus_occultation_ring_fit_rfrench_20201201::1.0,data_to_resource,The fitted model of the ring system upon which the data are based.,urn:nasa:pds:uranus_occ_support,data_to_resource,The support bundle for all of the Earth-based Uranus system occultations.,u149_irtf_320cm_2200nm_counts-v-time_occult.tab,data,2021-04-05T23:18:20Z,0,264,UTF-8 Text,"Provides the column headers, separated by commas, for the data table.",264,10551,"This is a calibrated time series of an occultation by the Uranus system generated from an earth-based stellar occultation. The data are uniformly spaced in time, and normalized in units of stellar intensity. The data may include occultations by both the rings and the planet, or just the planet. The occultation by the rings, if present, is based on the equatorial ring plane radius sampled at each time point, computed from an orbit model for the ring system.",Carriage-Return Line-Feed,15,0,212,Observed Event Time,1,1,ASCII_Real,16,second,"The instant at which photons were received at the observer location. It is represented in the Universal Coordinated Time system, as a number of elapsed seconds since the time given by the reference_time_utc attribute specified in this file. It refers to the middle of the bin.",Observed Event TDB,2,19,ASCII_Real,16,second,"The instant at which photons were received at the observer location. It is represented in the 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch.",Mean Signal,3,37,ASCII_Real,16,Mean counts received by the instrument during this time bin. The background signal has not been subtracted. Refer to NOTE FLAG for guidance on validity of data.,999999999.999999,999999999.999999,Normalized Signal,4,55,ASCII_Real,10,"Normalized signal during this time bin, in units of the unocculted stellar signal, such that 1.0 corresponds to the full unocculted star signal and 0.0 corresponds to no counts from the star (a completely opaque ring). NORMALIZED SIGNAL = (MEAN_SIGNAL - BACKGROUND_MODEL)/(UNOCCULTED STAR MODEL) This is an approximate normalization, computed using regional polynomial fits. For high-precision photometry of ring events, use locally computed normalization.",999.999999,999.999999,Sky-plane F,5,67,ASCII_Real,13,Kilometer,"The east/west component of r sky (positive in the east direction), in km.",Sky-plane G,6,82,ASCII_Real,13,Kilometer,"The north/south component of r sky (positive in the north direction), in km.",Sky-plane Radius,7,97,ASCII_Real,13,Kilometer,"The length of the radius vector in the plane of the sky measured from the center of the occulting object to the position of the occulted star or spacecraft, in km.",Ring Radius,8,112,ASCII_Real,12,Kilometer,"Radial distance of the occultation intercept point (middle of the bin) from the center of the planet, in km. Distances are measured along the equator plane.",Ring Longitude,9,126,ASCII_Real,8,Degree,Inertial longitude on the ring plane corresponding to the midpoint of the bin.,Observed Ring Azimuth,10,136,ASCII_Real,9,Degree,"Angle measured at a point in the ring plane, starting from the direction of a photon heading to the observer, and ending at the direction of a local radial vector. This angle is projected into the ring plane and measured in the prograde direction.",Ring Event TDB,11,147,ASCII_Real,16,second,"The time at which photons left the ring plane. This time is earlier than the associated OBSERVED EVENT TDB by an amount equal to the light travel time. It is represented in the 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch.",Unocculted Star Model,12,165,ASCII_Real,16,Model of the unocculted star signal as a function of ring plane radius. This is necessary because of variations in atmospheric transparency and other time-dependent effects.,999999999.999999,999999999.999999,Background Model,13,183,ASCII_Real,16,Model of the non-stellar background signal (which may vary over the course of the occultation) due to instrumental offsets applied during the recording and/or sky brightness and contributions from reflected sunlight from the rings and planet.,999999999.999999,999999999.999999,Number Of Samples Per Bin,14,201,ASCII_Integer,4,The number of raw data points per bin.,Note Flag,15,207,ASCII_Integer,4,"A numerical flag that associates specific comments with individual data bins. When more than one comment applies, the values are summed. The values and their associated comments are: 0: radius and longitude are based on Uranus equatorial plane. 1: radius and longitude are based inclined ring plane model referred to in metadata associated with file. 2: observed ring occultation event 4: telescope pointed to nearby sky for background level check 8: input signal from time source, not from photometer on telescope 16: line of sight intersects planet 32: dawn/dusk - rapid background level change; no background or star intensity estimate. 64: unreliable data (e.g., clouds, telescope guiding error, or instrument adjustment); no background or star intensity estimate." diff --git a/test_files/extra_file_info_success_2.csv b/test_files/extra_file_info_success_2.csv deleted file mode 100644 index 028f6f6..0000000 --- a/test_files/extra_file_info_success_2.csv +++ /dev/null @@ -1,4 +0,0 @@ -filename,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1> -tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0 -tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0 -tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0 diff --git a/test_files/samples/element_1.txt b/test_files/samples/element_1.txt new file mode 100644 index 0000000..83b63d7 --- /dev/null +++ b/test_files/samples/element_1.txt @@ -0,0 +1,3 @@ +pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1> +pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1> +pds:Product_Observational/pds:Identification_Area<1>/pds:title<1> diff --git a/test_files/samples/element_empty.txt b/test_files/samples/element_empty.txt new file mode 100644 index 0000000..e69de29 diff --git a/test_files/samples/element_extra_file_info.txt b/test_files/samples/element_extra_file_info.txt deleted file mode 100644 index b187fa2..0000000 --- a/test_files/samples/element_extra_file_info.txt +++ /dev/null @@ -1,2 +0,0 @@ -**/pds:logical_identifier* -**/pds:version_id* \ No newline at end of file diff --git a/samples/element_extra_file_info.txt b/test_files/samples/element_extra_file_info_2.txt similarity index 100% rename from samples/element_extra_file_info.txt rename to test_files/samples/element_extra_file_info_2.txt diff --git a/test_files/samples/elements_xpath_simplify.txt b/test_files/samples/elements_xpath_simplify.txt deleted file mode 100644 index cc21130..0000000 --- a/test_files/samples/elements_xpath_simplify.txt +++ /dev/null @@ -1 +0,0 @@ -**/pds:name* \ No newline at end of file diff --git a/test_files/samples/elements_xpath_simplify_2.txt b/test_files/samples/elements_xpath_simplify_2.txt index 9655eff..cc21130 100644 --- a/test_files/samples/elements_xpath_simplify_2.txt +++ b/test_files/samples/elements_xpath_simplify_2.txt @@ -1 +1 @@ -**/rings:Occultation_Time_Series* \ No newline at end of file +**/pds:name* \ No newline at end of file diff --git a/test_files/samples/elements_xpath_simplify_3.txt b/test_files/samples/elements_xpath_simplify_3.txt index 8a9b834..9655eff 100644 --- a/test_files/samples/elements_xpath_simplify_3.txt +++ b/test_files/samples/elements_xpath_simplify_3.txt @@ -1,69 +1 @@ -**/cassini:mission_phase_name* -**/cassini:spacecraft_clock_count_partition* -**/cassini:spacecraft_clock_start_count* -**/cassini:spacecraft_clock_stop_count* -**/cassini:limitations* -**/cassini:antiblooming_state_flag* -**/cassini:calilbration_lamp_state_flag* -**/cassini:command_file_name* -**/cassini:command_sequence_number* -**/cassini:dark_strip_mean* -**/cassini:data_conversion_type* -**/cassini:delayed_readout_flag* -**/cassini:detector_temperature* -**/cassini:electronics_bias* -**/cassini:earth_recieved_start_time* -**/cassini:earth_recieved_stop_time* -**/cassini:expected_maximum_full_well* -**/cassini:expected_maximum_DN_sat* -**/cassini:expected_packets* -**/cassini:exposure_duration* -**/cassini:filter_name_1* -**/cassini:filter_name_2* -**/cassini:filter_temperature* -**/cassini:flight_software_version_id* -**/cassini:gain_mode_id* -**/cassini:ground_software_version_id* -**/cassini:image_mid_time* -**/cassini:image_number* -**/cassini:image_time* -**/cassini:image_observation_type* -**/cassini:instrument_data_rate* -**/cassini:intrument_mode_id* -**/cassini:inst_cmprs_type* -**/cassini:inst_cmprs_param_malgo* -**/cassini:inst_cmprs_param_tb* -**/cassini:inst_cmprs_param_blocks* -**/cassini:inst_cmprs_param_quant* -**/cassini:inst_cmprs_rate_expected_bits* -**/cassini:inst_cmprs_rate_actual_bits* -**/cassini:inst_cmprs_ratio* -**/cassini:light_flood_state_flag* -**/cassini:method_description* -**/cassini:missing_lines* -**/cassini:missing_packet_flag* -**/cassini:observation_id -**/cassini:optics_temperature_front* -**/cassini:optics_temperature_back* -**/cassini:order_number* -**/cassini:parallel_clock_voltage_index* -**/cassini:pds3_product_creation_time* -**/cassini:pds3_product_version_type* -**/cassini:pds3_target_desc* -**/cassini:pds3_target_list* -**/cassini:pds3_target_name* -**/cassini:pre-pds_version_number* -**/cassini:prepare_cycle_index* -**/cassini:readout_cycle_index* -**/cassini:received_packets* -**/cassini:sensor_head_electronics_temperature* -**/cassini:sequence_id* -**/cassini:sequence_number* -**/cassini:sequence_title* -**/cassini:shutter_mode_id* -**/cassini:shutter_state_id* -**/cassini:start_time_doy* -**/cassini:stop_time_doy* -**/cassini:telemetry_format_id* -**/cassini:valid_maximum_full_well* -**/cassini:valid_maximum_DN_sat* \ No newline at end of file +**/rings:Occultation_Time_Series* \ No newline at end of file diff --git a/samples/elements_xpath_simplify_3.txt b/test_files/samples/elements_xpath_simplify_4.txt similarity index 100% rename from samples/elements_xpath_simplify_3.txt rename to test_files/samples/elements_xpath_simplify_4.txt diff --git a/test_files/samples/sample_elements.txt b/test_files/samples/sample_elements.txt deleted file mode 100644 index 60bcf6a..0000000 --- a/test_files/samples/sample_elements.txt +++ /dev/null @@ -1,3 +0,0 @@ -/pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier* -/pds:Product_Observational/pds:Identification_Area<1>/pds:version_id* -/pds:Product_Observational/pds:Identification_Area<1>/pds:title* diff --git a/test_files/simplify_xpaths_success_1.csv b/test_files/simplify_xpaths_success_1.csv deleted file mode 100644 index f7b7e89..0000000 --- a/test_files/simplify_xpaths_success_1.csv +++ /dev/null @@ -1,2 +0,0 @@ -pds:logical_identifier,pds:version_id,pds:title,pds:information_model_version,pds:name,pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:type,pds:lid_reference,pds:reference_type -urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,Cassini ISS Image 1455200455n.img,1.11.0.0,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Spacecraft,urn:nasa:pds:context:instrument_host:spacecraft.co,is_instrument_host diff --git a/test_files/simplify_xpaths_success_2.csv b/test_files/simplify_xpaths_success_2.csv deleted file mode 100644 index 58e70a7..0000000 --- a/test_files/simplify_xpaths_success_2.csv +++ /dev/null @@ -1,4 +0,0 @@ -pds:name,pds:Product_Observational/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<3>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<4>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<5>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<6>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<7>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<8>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<9>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<10>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<11>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<12>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<13>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<14>/pds:name<1>,pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<15>/pds:name<1> -Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN -Cassini-Huygens,NaN,Cassini Orbiter Imaging Science Subsystem,Cassini Orbiter,Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera,Dark Sky,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN -Earth-based Observations of Uranus System Stellar Occultations,NaN,IRTF 320cm Telescope,Infra Red Telescope Facility-Maunakea,IRTF 3.2m,Uranus,Generic InSb High Speed Photometer,Uranus Rings,Observed Event Time,Observed Event TDB,Mean Signal,Normalized Signal,Sky-plane F,Sky-plane G,Sky-plane Radius,Ring Radius,Ring Longitude,Observed Ring Azimuth,Ring Event TDB,Unocculted Star Model,Background Model,Number Of Samples Per Bin,Note Flag diff --git a/test_files/simplify_xpaths_success_3.csv b/test_files/simplify_xpaths_success_3.csv deleted file mode 100644 index 0b16b98..0000000 --- a/test_files/simplify_xpaths_success_3.csv +++ /dev/null @@ -1,2 +0,0 @@ -rings:occultation_type,rings:occultation_direction,rings:time_series_direction,rings:planetary_occultation_flag,rings:data_quality_score,rings:ring_plane,rings:star_name,rings:fresnel_scale,rings:projected_star_diameter,rings:sigma_projected_star_diameter,rings:fractional_error_star_counts,rings:time_constant_type,rings:time_constant,rings:sigma_time_constant,rings:minimum_wavelength,rings:maximum_wavelength,rings:reference_time_utc,rings:minimum_observed_event_time,rings:maximum_observed_event_time,rings:observed_event_start_tdb,rings:observed_event_stop_tdb,rings:earth_received_start_time_utc,rings:earth_received_stop_time_utc,rings:minimum_ring_radius,rings:maximum_ring_radius,rings:minimum_ring_longitude,rings:maximum_ring_longitude,rings:minimum_observed_ring_azimuth,rings:maximum_observed_ring_azimuth,rings:observed_ring_elevation,rings:light_source_incidence_angle -stellar,egress,both,Y,poor,equator,2MASS 20462044-1838345,1.81,1.2000,0.5000,0.020000000,none,1.0,0.00000,1903.00000,2416.00000,1998-11-06T00:00:00.0000Z,16698.7028,21149.0559,-36400838.1146,-36396387.7615,1998-11-06T04:38:18.4919Z,1998-11-06T05:52:29.2668Z,19964.02157,75510.23132,17.29299,65.91696,5.2772,53.9012,-38.14472,51.85528 diff --git a/test_files/simplify_xpaths_success_4.csv b/test_files/simplify_xpaths_success_4.csv deleted file mode 100644 index 7655f49..0000000 --- a/test_files/simplify_xpaths_success_4.csv +++ /dev/null @@ -1,2 +0,0 @@ -cassini:mission_phase_name,cassini:spacecraft_clock_count_partition,cassini:spacecraft_clock_start_count,cassini:spacecraft_clock_stop_count,cassini:limitations,cassini:antiblooming_state_flag,cassini:command_file_name,cassini:command_sequence_number,cassini:dark_strip_mean,cassini:data_conversion_type,cassini:delayed_readout_flag,cassini:detector_temperature,cassini:electronics_bias,cassini:expected_maximum_full_well,cassini:expected_maximum_DN_sat,cassini:expected_packets,cassini:exposure_duration,cassini:filter_name_1,cassini:filter_name_2,cassini:filter_temperature,cassini:flight_software_version_id,cassini:gain_mode_id,cassini:ground_software_version_id,cassini:image_mid_time,cassini:image_number,cassini:image_time,cassini:image_observation_type,cassini:instrument_data_rate,cassini:inst_cmprs_type,cassini:inst_cmprs_param_malgo,cassini:inst_cmprs_param_tb,cassini:inst_cmprs_param_blocks,cassini:inst_cmprs_param_quant,cassini:inst_cmprs_rate_expected_bits,cassini:inst_cmprs_rate_actual_bits,cassini:inst_cmprs_ratio,cassini:light_flood_state_flag,cassini:method_description,cassini:missing_lines,cassini:missing_packet_flag,cassini:observation_id,cassini:optics_temperature_front,cassini:optics_temperature_back,cassini:order_number,cassini:parallel_clock_voltage_index,cassini:pds3_product_creation_time,cassini:pds3_product_version_type,cassini:pds3_target_desc,cassini:pds3_target_list,cassini:pds3_target_name,cassini:pre-pds_version_number,cassini:prepare_cycle_index,cassini:readout_cycle_index,cassini:received_packets,cassini:sensor_head_electronics_temperature,cassini:sequence_id,cassini:sequence_number,cassini:sequence_title,cassini:shutter_mode_id,cassini:shutter_state_id,cassini:start_time_doy,cassini:stop_time_doy,cassini:telemetry_format_id,cassini:valid_maximum_full_well,cassini:valid_maximum_DN_sat -EARTH-JUPITER CRUISE,1,1357539630.068,1357539630.123,N/A,ON,ISS_C23ST_OCCULT001_UVIS_B.icf,730,0.,TABLE,NO,-89.243546,112,-1,-1,-1,220.,P0,GRN,-0.468354,1.2,29,ISS V7.0 11-22-2000,2001-007T06:08:48.013,1357539630,2001-007T06:08:48.013,SCIENCE,182.783997,LOSSLESS,999,999,999,999,-1.,-1.,3.150372,ON,Information not provided,0,NO,UVIS_C23ST_OCCULT001_PRIME_C,0.71269,-999.,-999,9,2001-008T10:55:49.000,FINAL,Information not provided,N/A,DARK SKY,1,0,11,-1,1.633024,C23,-1,ISS_C23ST_OCCULT001_UVIS,NACONLY,ENABLED,2001-007T06:08:47.793,2001-007T06:08:48.013,Information not provided,-1,-1 diff --git a/test_files/sort_by_success.csv b/test_files/sort_by_success.csv deleted file mode 100644 index f819dbb..0000000 --- a/test_files/sort_by_success.csv +++ /dev/null @@ -1,4 +0,0 @@ -pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1> -urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN -urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN -urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared diff --git a/test_files/sort_by_success_2.csv b/test_files/sort_by_success_2.csv deleted file mode 100644 index f819dbb..0000000 --- a/test_files/sort_by_success_2.csv +++ /dev/null @@ -1,4 +0,0 @@ -pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1> -urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN -urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN -urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared diff --git a/test_files/tester_config.ini b/test_files/tester_config.ini deleted file mode 100644 index 4afeaa0..0000000 --- a/test_files/tester_config.ini +++ /dev/null @@ -1,17 +0,0 @@ -[pds:ASCII_Integer] -inapplicable=-9999 -missing=-9988 -unknown=-9977 -anticipated=-9966 - -[pds:ASCII_Real] -inapplicable=-9999.0 -missing=-9988.0 -unknown=-9977.0 -anticipated=-9966.0 - -[pds:ASCII_Short_String_Collapsed] -inapplicable=inapplicable_alt -missing=missing_alt -unknown=unknown_alt -anticipated=anticipated_alt diff --git a/test_files/tester_label_1.xml b/test_files/tester_label_1.xml deleted file mode 100644 index 228c2ca..0000000 --- a/test_files/tester_label_1.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n - 1.0 - Cassini ISS Image 1455200455n.img - 1.11.0.0 - - - Cassini Orbiter Imaging Science Subsystem - - Cassini Orbiter - Spacecraft - - urn:nasa:pds:context:instrument_host:spacecraft.co - is_instrument_host - - - - diff --git a/test_files/tester_label_2.xml b/test_files/tester_label_2.xml deleted file mode 100644 index 790941d..0000000 --- a/test_files/tester_label_2.xml +++ /dev/null @@ -1,442 +0,0 @@ - - - - - - - - urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult - 1.0 - Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope - 1.14.0.0 - Product_Observational - - French, Richard G.; McGhee-French, Colleen A.; Gordon, Mitchell K. - 2020 - uranus atmosphere - uranus atmosphere stellar occultation - uranus atmosphere stellar occultation time series - uranus rings - uranus rings stellar occultation - uranus rings stellar occultation radial profile - Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope. - - - - - 1998-11-06T04:38:18.7028Z - 1998-11-06T05:52:29.0559Z - - - Science - Calibrated - Derived normalized signal vs. time for the entire Uranus system occultation of star u149 (2MASS 20462044-1838345) observed from the IRTF 320cm Telescope. - - Infrared - Atmospheres - Structure - - - Infrared - Ring-Moon Systems - Ring Occultation Profile - - - - Earth-based Observations of Uranus System Stellar Occultations - Observing Campaign - - urn:nasa:pds:context:investigation:observing_campaign.earth-based-uranus-stellar-occultations - data_to_investigation - - - - IRTF 320cm Telescope - - Infra Red Telescope Facility-Maunakea - Host - - urn:nasa:pds:context:facility:observatory.irtf-maunakea - is_facility - - - - IRTF 3.2m - Telescope - - urn:nasa:pds:context:telescope:irtf-maunakea.3m2 - is_telescope - - - - Generic InSb High Speed Photometer - Instrument - - urn:nasa:pds:context:instrument:multi-host.generic_insp_hsp - is_instrument - - - - - Uranus - NAIF ID 799 - Planet - - urn:nasa:pds:context:target:planet.uranus - data_to_target - - - - Uranus Rings - Uranian Ring System - Ring - - urn:nasa:pds:context:target:ring.uranus.rings - data_to_target - - - - - - - SPK - ura111.bsp - - - SPK - vgr2.ura111.bsp - - - SPK - earthstns_itrf93_040916.bsp - - - BPC - earth_720101_031229.bpc - - - LSK - naif0012.tls - - These kernel files were used in the generation of the products in the parent bundle. Some or all of them may not have been used directly in the generation of this product. - - - - - stellar - egress - both - Y - poor - equator - 2MASS 20462044-1838345 - 1.81 - 1.2000 - 0.5000 - 0.020000000 - none - 1.0 - 0.00000 - 1903.00000 - 2416.00000 - 1998-11-06T00:00:00.0000Z - 16698.7028 - 21149.0559 - -36400838.1146 - -36396387.7615 - 1998-11-06T04:38:18.4919Z - 1998-11-06T05:52:29.2668Z - 19964.02157 - 75510.23132 - 17.29299 - 65.91696 - 5.2772 - 53.9012 - -38.14472 - 51.85528 - - - - - - - urn:nasa:pds:uranus_occ_support:document:earth-based-uranus-stellar-occultations-user-guide - data_to_document - The User Guide for Earth-based Uranus Stellar Occultations. - - - urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_obs_geom - data_to_browse - Diagram of the Uranus system showing the occultation track. - - - urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_earth - data_to_browse - Diagram of the view of the Earth from Uranus at mid-occultation Time. - - - urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_alt - data_to_browse - Plot of the altitude (in degrees) of Uranus and the sun relative to the horizon over the duration of the occulation. - - - urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_occult - data_to_browse - Low resolution plot of counts vs. time for the entire occultation. - - - urn:nasa:pds:uranus_occ_u149_irtf_320cm:browse:2200nm_counts-v-time_normalization - data_to_browse - Illustrates some of the processing steps involved in normalizing a time-series occultation light curve from counts per second to units of stellar flux. - - - urn:nasa:pds:uranus_occ_support:data:uranus_occultation_ring_fit_rfrench_20201201::1.0 - data_to_resource - The fitted model of the ring system upon which the data are based. - - - urn:nasa:pds:uranus_occ_support - data_to_resource - The support bundle for all of the Earth-based Uranus system occultations. - - - - - u149_irtf_320cm_2200nm_counts-v-time_occult.tab - data - 2021-04-05T23:18:20Z - -
- 0 - 264 - UTF-8 Text - Provides the column headers, separated by commas, for the data table. -
- - 264 - 10551 - This is a calibrated time series of an occultation by the Uranus system - generated from an earth-based stellar occultation. The data are uniformly spaced in time, and - normalized in units of stellar intensity. The data may include occultations by both the rings - and the planet, or just the planet. The occultation by the rings, if present, is based on - the equatorial ring plane radius sampled at each time point, computed from an orbit - model for the ring system. - - Carriage-Return Line-Feed - - 15 - 0 - 212 - - Observed Event Time - 1 - 1 - ASCII_Real - 16 - second - The instant at which photons were received at the observer location. It is - represented in the Universal Coordinated Time system, as a number of elapsed - seconds since the time given by the reference_time_utc attribute specified in this file. - It refers to the middle of the bin. - - - - Observed Event TDB - 2 - 19 - ASCII_Real - 16 - second - The instant at which photons were received at the observer location. It is represented - in the 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch. - - - - Mean Signal - 3 - 37 - ASCII_Real - 16 - Mean counts received by the instrument during this time bin. The background - signal has not been subtracted. Refer to NOTE FLAG for guidance on validity of data. - - - 999999999.999999 - - - 999999999.999999 - - - - Normalized Signal - 4 - 55 - ASCII_Real - 10 - Normalized signal during this time bin, in units of the unocculted stellar signal, - such that 1.0 corresponds to the full unocculted star signal and - 0.0 corresponds to no counts from the star (a completely opaque ring). - NORMALIZED SIGNAL = (MEAN_SIGNAL - BACKGROUND_MODEL)/(UNOCCULTED STAR MODEL) - This is an approximate normalization, computed using regional polynomial fits. - For high-precision photometry of ring events, use locally computed normalization. - - - 999.999999 - - - 999.999999 - - - - Sky-plane F - 5 - 67 - ASCII_Real - 13 - Kilometer - The east/west component of r sky (positive in the east direction), in km. - - - - Sky-plane G - 6 - 82 - ASCII_Real - 13 - Kilometer - The north/south component of r sky (positive in the north direction), in km. - - - - Sky-plane Radius - 7 - 97 - ASCII_Real - 13 - Kilometer - The length of the radius vector in the plane of the sky measured from the center of the occulting object to the position of the occulted star or spacecraft, in km. - - - - Ring Radius - 8 - 112 - ASCII_Real - 12 - Kilometer - Radial distance of the occultation intercept point (middle of the bin) from - the center of the planet, in km. Distances are measured along the equator plane. - - - - Ring Longitude - 9 - 126 - ASCII_Real - 8 - Degree - Inertial longitude on the ring plane corresponding to the midpoint of the bin. - - - - Observed Ring Azimuth - 10 - 136 - ASCII_Real - 9 - Degree - Angle measured at a point in the ring plane, starting from the direction of - a photon heading to the observer, and ending at the direction of a local radial vector. - This angle is projected into the ring plane and measured in the prograde direction. - - - - Ring Event TDB - 11 - 147 - ASCII_Real - 16 - second - The time at which photons left the ring plane. This time is earlier than the associated - OBSERVED EVENT TDB by an amount equal to the light travel time. It is represented in the - 'Barycentric Dynamical Time' system, as a number of elapsed seconds since the J2000 epoch. - - - - Unocculted Star Model - 12 - 165 - ASCII_Real - 16 - Model of the unocculted star signal as a function of ring plane radius. This is necessary - because of variations in atmospheric transparency and other time-dependent effects. - - - 999999999.999999 - - - 999999999.999999 - - - - Background Model - 13 - 183 - ASCII_Real - 16 - Model of the non-stellar background signal (which may vary over the course of the - occultation) due to instrumental offsets applied during the recording and/or sky brightness - and contributions from reflected sunlight from the rings and planet. - - - 999999999.999999 - - - 999999999.999999 - - - - Number Of Samples Per Bin - 14 - 201 - ASCII_Integer - 4 - The number of raw data points per bin. - - - Note Flag - 15 - 207 - ASCII_Integer - 4 - A numerical flag that associates - specific comments with individual data bins. When more than one - comment applies, the values are summed. The values and their - associated comments are: - 0: radius and longitude are based on Uranus equatorial plane. - 1: radius and longitude are based inclined ring plane model - referred to in metadata associated with file. - 2: observed ring occultation event - 4: telescope pointed to nearby sky for background level check - 8: input signal from time source, not from photometer on telescope - 16: line of sight intersects planet - 32: dawn/dusk - rapid background level change; - no background or star intensity estimate. - 64: unreliable data (e.g., clouds, telescope - guiding error, or instrument adjustment); - no background or star intensity estimate. - - - - -
-
diff --git a/test_files/tester_label_3.xml b/test_files/tester_label_3.xml deleted file mode 100644 index b9dc36c..0000000 --- a/test_files/tester_label_3.xml +++ /dev/null @@ -1,290 +0,0 @@ - - - - - - - - - urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n - 1.0 - Cassini ISS Image 1357539630n.img - 1.11.0.0 - Product_Observational - - - - This data file was migrated from the original PDS3 file: - COISS_1004/data/1357539422_1357559280/N1357539630_1.IMG - The content of this data file was reorganized in order to make it PDS4 - compliant. Specifically, prefix bytes were removed from each line of - the image and appended at the end. The resulting data file remains - compatible with the VICAR standard. Values for instrument attributes - have been derived from the corresponding values in the original PDS3 - label. - - - 2001-01-07T06:08:47.793Z - 2001-01-07T06:08:48.013Z - - - Science - Raw - - Near Infrared - Ring-Moon Systems - - - - Cassini-Huygens - Mission - - urn:nasa:pds:context:investigation:mission.cassini-huygens - data_to_investigation - - - - Cassini Orbiter Imaging Science Subsystem - - Cassini Orbiter - Spacecraft - - urn:nasa:pds:context:instrument_host:spacecraft.co - is_instrument_host - - - - Cassini Orbiter Imaging Science Subsystem - Narrow Angle Camera - Instrument - ISSNA - - urn:nasa:pds:context:instrument:issna.co - is_instrument - - - - - Dark Sky - Calibration Field - - urn:nasa:pds:context:target:calibration_field.dark_sky - data_to_target - - - - - - EARTH-JUPITER CRUISE - 1 - 1357539630.068 - 1357539630.123 - N/A - ON - 6.870842 - N/A - ISS_C23ST_OCCULT001_UVIS_B.icf - 730 - 0. - TABLE - NO - -89.243546 - 112 - 2001-007T19:58:04.616 - 2001-007T19:58:32.295 - -1 - -1 - -1 - 220. - P0 - GRN - -0.468354 - 1.2 - 29 - ISS V7.0 11-22-2000 - 2001-007T06:08:48.013 - 1357539630 - 2001-007T06:08:48.013 - SCIENCE - 182.783997 - FULL - LOSSLESS - 999 - 999 - 999 - 999 - -1. - -1. - 3.150372 - ON - Information not provided - 0 - NO - UVIS_C23ST_OCCULT001_PRIME_C - 0.71269 - -999. - -999 - 9 - 2001-008T10:55:49.000 - FINAL - Information not provided - N/A - DARK SKY - 1 - 0 - 11 - -1 - 1.633024 - C23 - -1 - ISS_C23ST_OCCULT001_UVIS - NACONLY - ENABLED - 2001-007T06:08:47.793 - 2001-007T06:08:48.013 - Information not provided - -1 - -1 - - - - - - - image - display_settings_to_array - - - Sample - Left to Right - Line - Top to Bottom - - - - - - - - urn:nasa:pds:cassini_iss_cruise:data_raw:index - data_to_resource - The index table of basic parameters associated with each observation. - - - urn:nasa:pds:cassini_iss_cruise:data_raw:body-geometry - data_to_resource - The index table of body surface geometry information associated with each observation. - - - urn:nasa:pds:cassini_iss_cruise:body-inventory - data_to_resource - An index listing every Saturn system body expected to fall within each field of view. - - - urn:nasa:pds:cassini_iss_cruise:ring-geometry - data_to_resource - The index table of ring geometry information associated with each observation. - - - urn:nasa:pds:cassini_iss_saturn:document:iss-data-user-guide - data_to_document - The ISS Data User's Guide - - - urn:nasa:pds:cassini_iss_cruise:browse_raw:1357539630n-full - data_to_browse - - The browse image in JPEG format that illustrates the scientific content - of this image. - - - - - - - 1357539630n.img - 2019-06-12T22:05:54Z - a468693f67593587d224116c5ade995a - - - - -
- 0 - 4096 - VICAR2 -
- - - - - telemetry-table - 4096 - 1 - Last Index Fastest - - UnsignedByte - - - telemetry - 2 - 1 - - - - - - - image - 6144 - 2 - Last Index Fastest - - UnsignedByte - DN - - - Line - 1024 - 1 - - - Sample - 1024 - 2 - - - - - - - 1054720 - 2 - Last Index Fastest - - UnsignedByte - - - Line - 1024 - 1 - - - prefix-sample - 24 - 2 - - -
-
diff --git a/tests/test_pds4_create_xml_index.py b/tests/test_pds4_create_xml_index.py index 4cfec7c..0210550 100644 --- a/tests/test_pds4_create_xml_index.py +++ b/tests/test_pds4_create_xml_index.py @@ -8,436 +8,247 @@ # These two variables are the same for all tests, so we can either declare them as -# global variables, or get the root_dir at the setup stage before running each test -root_dir = Path(__file__).resolve().parent.parent -test_files_dir = root_dir / 'test_files' +# global variables, or get the ROOT_DIR at the setup stage before running each test +ROOT_DIR = Path(__file__).resolve().parent.parent +test_files_dir = ROOT_DIR / 'test_files' +samples_dir = test_files_dir / 'samples' +expected_dir = test_files_dir / 'expected' +labels_dir = test_files_dir / 'labels' -def test_load_config_object(): - config_object = tools.load_config_file(None) - - assert config_object['pds:ASCII_Date_Time_YMD_UTC']['inapplicable'] == '0001-01-01T12:00Z' - assert config_object['pds:ASCII_Date_Time_YMD_UTC']['missing'] == '0002-01-01T12:00Z' - assert config_object['pds:ASCII_Date_Time_YMD_UTC']['unknown'] == '0003-01-01T12:00Z' - assert config_object['pds:ASCII_Date_Time_YMD_UTC']['anticipated'] == '0004-01-01T12:00Z' - - assert config_object['pds:ASCII_Date_Time_YMD']['inapplicable'] == '0001-01-01T12:00' - assert config_object['pds:ASCII_Date_Time_YMD']['missing'] == '0002-01-01T12:00' - assert config_object['pds:ASCII_Date_Time_YMD']['unknown'] == '0003-01-01T12:00' - assert config_object['pds:ASCII_Date_Time_YMD']['anticipated'] == '0004-01-01T12:00' - - assert config_object['pds:ASCII_Date_YMD']['inapplicable'] == '0001-01-01' - assert config_object['pds:ASCII_Date_YMD']['missing'] == '0002-01-01' - assert config_object['pds:ASCII_Date_YMD']['unknown'] == '0003-01-01' - assert config_object['pds:ASCII_Date_YMD']['anticipated'] == '0004-01-01' - - assert config_object['pds:ASCII_Integer']['inapplicable'] == '-999' - assert config_object['pds:ASCII_Integer']['missing'] == '-998' - assert config_object['pds:ASCII_Integer']['unknown'] == '-997' - assert config_object['pds:ASCII_Integer']['anticipated'] == '-996' - - assert config_object['pds:ASCII_Real']['inapplicable'] == '-999.0' - assert config_object['pds:ASCII_Real']['missing'] == '-998.0' - assert config_object['pds:ASCII_Real']['unknown'] == '-997.0' - assert config_object['pds:ASCII_Real']['anticipated'] == '-996.0' - - assert config_object['pds:ASCII_Short_String_Collapsed']['inapplicable'] == 'inapplicable' - assert config_object['pds:ASCII_Short_String_Collapsed']['missing'] == 'missing' - assert config_object['pds:ASCII_Short_String_Collapsed']['unknown'] == 'unknown' - assert config_object['pds:ASCII_Short_String_Collapsed']['anticipated'] == 'anticipated' - - - # Tests that the config_object is loaded over. - config_object = tools.load_config_file("../test_files/tester_config.ini") - - assert config_object['pds:ASCII_Date_YMD']['inapplicable'] == '0001-01-01' - assert config_object['pds:ASCII_Date_YMD']['missing'] == '0002-01-01' - assert config_object['pds:ASCII_Date_YMD']['unknown'] == '0003-01-01' - assert config_object['pds:ASCII_Date_YMD']['anticipated'] == '0004-01-01' - - assert config_object['pds:ASCII_Integer']['inapplicable'] == '-9999' - assert config_object['pds:ASCII_Integer']['missing'] == '-9988' - assert config_object['pds:ASCII_Integer']['unknown'] == '-9977' - assert config_object['pds:ASCII_Integer']['anticipated'] == '-9966' - - assert config_object['pds:ASCII_Real']['inapplicable'] == '-9999.0' - assert config_object['pds:ASCII_Real']['missing'] == '-9988.0' - assert config_object['pds:ASCII_Real']['unknown'] == '-9977.0' - assert config_object['pds:ASCII_Real']['anticipated'] == '-9966.0' - - assert config_object['pds:ASCII_Short_String_Collapsed']['inapplicable'] == 'inapplicable_alt' - assert config_object['pds:ASCII_Short_String_Collapsed']['missing'] == 'missing_alt' - assert config_object['pds:ASCII_Short_String_Collapsed']['unknown'] == 'unknown_alt' - assert config_object['pds:ASCII_Short_String_Collapsed']['anticipated'] == 'anticipated_alt' - - -# now, a bad config file - with pytest.raises(SystemExit): - with pytest.raises(OSError): - tools.load_config_file("non_existent_file.ini") - - -def test_default_value_for_nil(): - config_object = tools.load_config_file(None) - integer = 'pds:ASCII_Integer' - double_float = 'pds:ASCII_Real' - - assert config_object['pds:ASCII_Integer']['inapplicable'] == '-999' - assert tools.default_value_for_nil(config_object, integer, 'inapplicable') == -999 - assert config_object['pds:ASCII_Integer']['missing'] == '-998' - assert tools.default_value_for_nil(config_object, integer, 'missing') == -998 - assert config_object['pds:ASCII_Integer']['unknown'] == '-997' - assert tools.default_value_for_nil(config_object, integer, 'unknown') == -997 - assert config_object['pds:ASCII_Integer']['anticipated'] == '-996' - assert tools.default_value_for_nil(config_object, integer, 'anticipated') == -996 - - - assert config_object['pds:ASCII_Real']['inapplicable'] == '-999.0' - assert tools.default_value_for_nil(config_object, double_float, 'inapplicable') == -999.0 - assert config_object['pds:ASCII_Real']['missing'] == '-998.0' - assert tools.default_value_for_nil(config_object, double_float, 'missing') == -998.0 - assert config_object['pds:ASCII_Real']['unknown'] == '-997.0' - assert tools.default_value_for_nil(config_object, double_float, 'unknown') == -997.0 - assert config_object['pds:ASCII_Real']['anticipated'] == '-996.0' - assert tools.default_value_for_nil(config_object, double_float, 'anticipated') == -996.0 - - - -def test_split_into_elements(): - xpath = '/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1>' - pieces = tools.split_into_elements(xpath) - assert pieces == ('pds:Observation_Area', 'pds:Observing_System', 'pds:name') - - - -def test_process_schema_location(): - test_files_dir = Path(__file__).resolve().parent.parent / 'test_files' - label_file = 'tester_label_1.xml' - schema_files = tools.process_schema_location(test_files_dir / label_file) - assert schema_files[0] == 'https://pds.nasa.gov/pds4/pds/v1/PDS4_PDS_1B00.xsd' - assert schema_files[1] == 'https://pds.nasa.gov/pds4/disp/v1/PDS4_DISP_1B00.xsd' - assert schema_files[2] == 'https://pds.nasa.gov/pds4/mission/cassini/v1/PDS4_CASSINI_1B00_1300.xsd' - - -# Set parameters values that you would like to pass into test_elements_file. -# In this case, we are running the same test with different sets of -# golden_file, new_file, and cmd_line. - -# Currently, element_file unit tests are commented out due to the current code not -# creating intended results. @pytest.mark.parametrize( 'golden_file,new_file,cmd_line', [ - # simple test cases - (str(test_files_dir / 'elements_file_success.csv'), - 'elements_file.csv', + # Testing --elements-file + (str(expected_dir / 'elements_file_success_1.txt'), + 'elements_file.txt', [ str(test_files_dir), - 'tester_label_1.xml', + 'labels/tester_label_1.xml', + '--dump-available-elements', '--elements-file', - str(root_dir / 'samples/sample_elements.txt'), - '--output-file', + str(samples_dir / 'element_1.txt'), + '--output-file' ] ), - # Okay, basic capture - (str(test_files_dir / 'elements_file_success_2.csv'), - 'elements_file_2.csv', + + (str(expected_dir / 'elements_file_success_2.txt'), + 'elements_file_2.txt', [ str(test_files_dir), - 'tester_label_2.xml', + 'labels/tester_label_2.xml', + '--dump-available-elements', '--elements-file', - str(root_dir / 'samples/element_2.txt'), - '--output-file', + str(samples_dir / 'element_2.txt'), + '--output-file', ] ), - # Multiple partial captures - (str(test_files_dir / 'elements_file_success_3.csv'), - 'elements_file_3.csv', + + (str(expected_dir / 'elements_file_success_3.txt'), + 'elements_file_3.txt', [ str(test_files_dir), - 'tester_label_2.xml', - 'tester_label_3.xml', + 'labels/tester_label_2.xml', + 'labels/tester_label_3.xml', + '--dump-available-elements', '--elements-file', - str(root_dir / 'samples/element_3.txt'), + str(samples_dir / 'element_3.txt'), '--output-file', ] ), - # exclusion test - (str(test_files_dir / 'elements_file_success_4.csv'), - 'elements_file_4.csv', + + (str(expected_dir / 'elements_file_success_4.txt'), + 'elements_file_4.txt', [ str(test_files_dir), - 'tester_label_*.xml', + 'labels/tester_label_*.xml', + '--dump-available-elements', '--elements-file', - str(root_dir / 'samples/element_4.txt'), + str(samples_dir / 'element_4.txt'), '--output-file', ] - ) - - - ] - ) - -def test_elements_file(golden_file, new_file, cmd_line): - # Create a temporary directory in the same location as the test_files directory - with tempfile.TemporaryDirectory(dir=test_files_dir.parent) as temp_dir: - temp_dir_path = Path(temp_dir) - - # THE PATH TO THE NEW FILE - path_to_file = temp_dir_path / new_file - # Call main() function with the simulated command line arguments - cmd_line.append(str(path_to_file)) - tools.main(cmd_line) - - # Assert that the file now exists - assert os.path.isfile(path_to_file) - - # Open and compare the two files - with open(path_to_file, 'rb') as created: - formed = created.read() - - with open(golden_file, 'rb') as new: - expected = new.read() - - assert formed == expected - - - -# Set parameters values that you would like to pass into test_simplify_xpaths. -# In this case, we are running the same test with different sets of -# golden_file, new_file, and cmd_line. -@pytest.mark.parametrize( - 'golden_file,new_file,cmd_line', - [ - (str(test_files_dir / 'simplify_xpaths_success_1.csv'), - 'simplify_xpaths_1.csv', - [ + ), + + # Testing --simplify-xpaths + (str(expected_dir / 'simplify_xpaths_success_1.txt'), + 'simplify_xpaths_1.txt', + [ str(test_files_dir), - 'tester_label_1.xml', + 'labels/tester_label_1.xml', + '--dump-available-elements', '--simplify-xpaths', '--output-file', - ] + ] ), - (str(test_files_dir / 'simplify_xpaths_success_2.csv'), - 'simplify_xpaths_2.csv', - [ + (str(expected_dir / 'simplify_xpaths_success_2.txt'), + 'simplify_xpaths_2.txt', + [ str(test_files_dir), - 'tester_label_*.xml', + 'labels/tester_label_*.xml', + '--dump-available-elements', '--simplify-xpaths', '--elements-file', - str(root_dir / 'samples/elements_xpath_simplify.txt'), + str(samples_dir / 'elements_xpath_simplify_2.txt'), '--output-file', - ] + ] ), - (str(test_files_dir / 'simplify_xpaths_success_3.csv'), - 'simplify_xpaths_3.csv', - [ + (str(expected_dir / 'simplify_xpaths_success_3.txt'), + 'simplify_xpaths_3.txt', + [ str(test_files_dir), - 'tester_label_2.xml', + 'labels/tester_label_2.xml', + '--dump-available-elements', '--simplify-xpaths', '--elements-file', - str(root_dir / 'samples/elements_xpath_simplify_2.txt'), + str(samples_dir / 'elements_xpath_simplify_3.txt'), '--output-file', - ] + ] ), - (str(test_files_dir / 'simplify_xpaths_success_4.csv'), - 'simplify_xpaths_3.csv', - [ + (str(expected_dir / 'simplify_xpaths_success_4.txt'), + 'simplify_xpaths_4.txt', + [ str(test_files_dir), - 'tester_label_3.xml', + 'labels/tester_label_3.xml', + '--dump-available-elements', '--simplify-xpaths', '--elements-file', - str(root_dir / 'samples/elements_xpath_simplify_3.txt'), - '--output-file', - ] - ) - - ] - ) - -def test_simplify_xpaths(golden_file, new_file, cmd_line): - # Create a temporary directory in the same location as the test_files directory - with tempfile.TemporaryDirectory(dir=test_files_dir.parent) as temp_dir: - temp_dir_path = Path(temp_dir) - - # THE PATH TO THE NEW FILE - path_to_file = temp_dir_path / new_file - # Call main() function with the simulated command line arguments - cmd_line.append(str(path_to_file)) - tools.main(cmd_line) - - # Assert that the file now exists - assert os.path.isfile(path_to_file) - - # Open and compare the two files - with open(path_to_file, 'rb') as created: - formed = created.read() - - with open(golden_file, 'rb') as new: - expected = new.read() - - assert formed == expected - - - -# Set parameters values that you would like to pass into test_extra_file_info. -# In this case, I assume we are running the same test with different sets of -# golden_file, new_file, and cmd_line. -@pytest.mark.parametrize( - 'golden_file,new_file,cmd_line', - [ - (str(test_files_dir / 'extra_file_info_success_1.csv'), - 'extra_file_info_1.csv', - [ + str(samples_dir / 'elements_xpath_simplify_4.txt'), + '--output-file', + ] + ), + + # Testing --extra-file-info + (str(expected_dir / 'extra_file_info_success_1.csv'), + 'extra_file_info_1.csv', + [ str(test_files_dir), - 'tester_label_2.xml', + 'labels/tester_label_2.xml', + '--elements-file', + str(samples_dir / 'element_1.txt'), '--extra-file-info', 'filename', 'filepath', '--output-file', - ] + ] ), - (str(test_files_dir / 'extra_file_info_success_2.csv'), - 'extra_file_info_2.csv', - [ + (str(expected_dir / 'extra_file_info_success_2.csv'), + 'extra_file_info_2.csv', + [ str(test_files_dir), - 'tester_label_*.xml', + 'labels/tester_label_*.xml', '--elements-file', - str(root_dir / 'samples/element_extra_file_info.txt'), + str(samples_dir / 'element_extra_file_info_2.txt'), '--extra-file-info', 'filename', '--output-file', - ] - ) - - ] - ) - -def test_extra_file_info(golden_file, new_file, cmd_line): - # Create a temporary directory in the same location as the test_files directory - with tempfile.TemporaryDirectory(dir=test_files_dir.parent) as temp_dir: - temp_dir_path = Path(temp_dir) - - # THE PATH TO THE NEW FILE - path_to_file = temp_dir_path / new_file - # Call main() function with the simulated command line arguments - cmd_line.append(str(path_to_file)) - tools.main(cmd_line) - - # Assert that the file now exists - assert os.path.isfile(path_to_file) - - # Open and compare the two files - with open(path_to_file, 'rb') as created: - formed = created.read() - - with open(golden_file, 'rb') as new: - expected = new.read() - - assert formed == expected - + ] + ), -# Set parameters values that you would like to pass into test_clean_header_field_names. -# In this case, I assume we are running the same test with different sets of -# golden_file, new_file, and cmd_line. -@pytest.mark.parametrize( - 'golden_file,new_file,cmd_line', - [ - (str(test_files_dir / 'clean_header_field_names_success_1.csv'), - 'clean_header_field_names_1.csv', - [ + (str(expected_dir / 'extra_file_info_success_3.csv'), + 'extra_file_info_3.csv', + [ str(test_files_dir), - 'tester_label_1.xml', + 'labels/tester_label_*.xml', + '--elements-file', + str(samples_dir / 'element_extra_file_info_2.txt'), + '--extra-file-info', + 'filename', + 'filepath', + 'LID', + 'bundle', + 'bundle_lid', + '--output-file', + ] + ), + + # Testing --clean-header-field-names + (str(expected_dir / 'clean_header_field_names_success_1.txt'), + 'clean_header_field_names_1.txt', + [ + str(test_files_dir), + 'labels/tester_label_1.xml', + '--dump-available-elements', '--clean-header-field-names', '--output-file', - ] + ] ), - (str(test_files_dir / 'clean_header_field_names_success_2.csv'), - 'clean_header_field_names_2.csv', - [ + (str(expected_dir / 'clean_header_field_names_success_2.txt'), + 'clean_header_field_names_2.txt', + [ str(test_files_dir), - 'tester_label_1.xml', - 'tester_label_2.xml', + 'labels/tester_label_1.xml', + 'labels/tester_label_2.xml', + '--dump-available-elements', '--elements-file', - str(root_dir / 'samples/elements_clean_header_field_names.txt'), + str(samples_dir / 'elements_clean_header_field_names.txt'), '--clean-header-field-names', '--output-file', - ] + ] + ), + (str(expected_dir / 'clean_header_field_names_success_1.txt'), + 'clean_header_field_names_1.txt', + [ + str(test_files_dir), + 'labels/tester_label_1.xml', + '--dump-available-elements', + '--clean-header-field-names', + '--output-file', + ] ), - ] - ) - -def test_clean_header_field_names(golden_file, new_file, cmd_line): - # Create a temporary directory in the same location as the test_files directory - with tempfile.TemporaryDirectory(dir=test_files_dir.parent) as temp_dir: - temp_dir_path = Path(temp_dir) - - # THE PATH TO THE NEW FILE - path_to_file = temp_dir_path / new_file - # Call main() function with the simulated command line arguments - cmd_line.append(str(path_to_file)) - tools.main(cmd_line) - - # Assert that the file now exists - assert os.path.isfile(path_to_file) - - # Open and compare the two files - with open(path_to_file, 'rb') as created: - formed = created.read() - - with open(golden_file, 'rb') as new: - expected = new.read() - - assert formed == expected - - - -# Set parameters values that you would like to pass into test_sort_by. -# In this case, I assume we are running the same test with different sets of -# golden_file, new_file, and cmd_line. -@pytest.mark.parametrize( - 'golden_file,new_file,cmd_line', - [ - ( - str(test_files_dir / 'sort_by_success.csv'), + (str(expected_dir / 'clean_header_field_names_success_2.txt'), + 'clean_header_field_names_2.txt', + [ + str(test_files_dir), + 'labels/tester_label_1.xml', + 'labels/tester_label_2.xml', + '--dump-available-elements', + '--elements-file', + str(samples_dir / 'elements_clean_header_field_names.txt'), + '--clean-header-field-names', + '--output-file', + ] + ), + + # Testing --sort by + (str(expected_dir / 'sort_by_success_1.csv'), 'sort_by_1.csv', [ str(test_files_dir), - 'tester_label_*.xml', + 'labels/tester_label_*.xml', '--elements-file', - str(root_dir / 'samples/elements_clean_header_field_names.txt'), + str(samples_dir / 'elements_clean_header_field_names.txt'), '--sort-by', 'pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>', '--output-file', ] - ), - - ( - str(test_files_dir / 'sort_by_success_2.csv'), + ), + + (str(expected_dir / 'sort_by_success_2.csv'), 'sort_by_2.csv', [ str(test_files_dir), - 'tester_label_*.xml', + 'labels/tester_label_*.xml', '--elements-file', - str(root_dir / 'samples/elements_clean_header_field_names.txt'), + str(samples_dir / 'elements_clean_header_field_names.txt'), + '--extra-file-info', + 'bundle_lid', + 'filepath', '--sort-by', - 'pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>', - 'pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>', + 'bundle_lid', '--output-file', ] - ) - ] -) - -def test_sort_by(golden_file, new_file, cmd_line): - # Create a temporary directory in the same location as the test_files directory + ), + ] + ) +def test_success(golden_file, new_file, cmd_line): + # Create a temporary directory with tempfile.TemporaryDirectory(dir=test_files_dir.parent) as temp_dir: temp_dir_path = Path(temp_dir) @@ -457,4 +268,45 @@ def test_sort_by(golden_file, new_file, cmd_line): with open(golden_file, 'rb') as new: expected = new.read() - assert formed == expected \ No newline at end of file + assert formed == expected + + + + +# Testing --extra-file-info (failure case) +@pytest.mark.parametrize( + 'cmd_line', + [ + ( + str(test_files_dir), + 'labels/tester_label_*.xml', + '--elements-file', + str(samples_dir / 'element_1.txt'), + '--extra-file-info', + 'bad_element', + '--output-file', + ), + ( + str(test_files_dir), # directory path + ' bad_directory/labels/tester_label_*.xml', # non-existent directory + '--elements-file', + str(samples_dir / 'element_1.txt'), # elements file + '--extra-file-info', # extra file info + 'filename', + '--output-file', + ), + ( + str(test_files_dir), # directory path + 'labels/tester_label_*.xml', + '--elements-file', + str(samples_dir / 'element_empty.txt'), # empty elements file + '--output-file', + ), + ] +) +def test_failures(cmd_line): + # Call main() function with the simulated command line arguments + with pytest.raises(SystemExit) as e: + tools.main(cmd_line) + assert e.type == SystemExit + assert e.value.code != 0 # Check that the exit code indicates failure \ No newline at end of file diff --git a/tests/test_pds4_create_xml_index_2.py b/tests/test_pds4_create_xml_index_2.py new file mode 100644 index 0000000..aa593a8 --- /dev/null +++ b/tests/test_pds4_create_xml_index_2.py @@ -0,0 +1,121 @@ +from pathlib import Path +import pytest +import sys +sys.path.append(str(Path(__file__).resolve().parent.parent / Path("pds4indextools"))) +import pds4_create_xml_index as tools + + +# These two variables are the same for all tests, so we can either declare them as +# global variables, or get the ROOT_DIR at the setup stage before running each test +ROOT_DIR = Path(__file__).resolve().parent.parent +test_files_dir = ROOT_DIR / 'test_files' +expected_dir = test_files_dir / 'expected' +labels_dir = test_files_dir / 'labels' + + + +# Testing load_config_file() +def test_load_config_object(): + config_object = tools.load_config_file(None) + + assert config_object['pds:ASCII_Date_Time_YMD_UTC']['inapplicable'] == '0001-01-01T12:00Z' + assert config_object['pds:ASCII_Date_Time_YMD_UTC']['missing'] == '0002-01-01T12:00Z' + assert config_object['pds:ASCII_Date_Time_YMD_UTC']['unknown'] == '0003-01-01T12:00Z' + assert config_object['pds:ASCII_Date_Time_YMD_UTC']['anticipated'] == '0004-01-01T12:00Z' + + assert config_object['pds:ASCII_Date_Time_YMD']['inapplicable'] == '0001-01-01T12:00' + assert config_object['pds:ASCII_Date_Time_YMD']['missing'] == '0002-01-01T12:00' + assert config_object['pds:ASCII_Date_Time_YMD']['unknown'] == '0003-01-01T12:00' + assert config_object['pds:ASCII_Date_Time_YMD']['anticipated'] == '0004-01-01T12:00' + + assert config_object['pds:ASCII_Date_YMD']['inapplicable'] == '0001-01-01' + assert config_object['pds:ASCII_Date_YMD']['missing'] == '0002-01-01' + assert config_object['pds:ASCII_Date_YMD']['unknown'] == '0003-01-01' + assert config_object['pds:ASCII_Date_YMD']['anticipated'] == '0004-01-01' + + assert config_object['pds:ASCII_Integer']['inapplicable'] == '-999' + assert config_object['pds:ASCII_Integer']['missing'] == '-998' + assert config_object['pds:ASCII_Integer']['unknown'] == '-997' + assert config_object['pds:ASCII_Integer']['anticipated'] == '-996' + + assert config_object['pds:ASCII_Real']['inapplicable'] == '-999.0' + assert config_object['pds:ASCII_Real']['missing'] == '-998.0' + assert config_object['pds:ASCII_Real']['unknown'] == '-997.0' + assert config_object['pds:ASCII_Real']['anticipated'] == '-996.0' + + assert config_object['pds:ASCII_Short_String_Collapsed']['inapplicable'] == 'inapplicable' + assert config_object['pds:ASCII_Short_String_Collapsed']['missing'] == 'missing' + assert config_object['pds:ASCII_Short_String_Collapsed']['unknown'] == 'unknown' + assert config_object['pds:ASCII_Short_String_Collapsed']['anticipated'] == 'anticipated' + + + # Tests that the config_object is loaded over. + config_object = tools.load_config_file(expected_dir / 'tester_config.ini') + + assert config_object['pds:ASCII_Date_YMD']['inapplicable'] == '0001-01-01' + assert config_object['pds:ASCII_Date_YMD']['missing'] == '0002-01-01' + assert config_object['pds:ASCII_Date_YMD']['unknown'] == '0003-01-01' + assert config_object['pds:ASCII_Date_YMD']['anticipated'] == '0004-01-01' + + assert config_object['pds:ASCII_Integer']['inapplicable'] == '-9999' + assert config_object['pds:ASCII_Integer']['missing'] == '-9988' + assert config_object['pds:ASCII_Integer']['unknown'] == '-9977' + assert config_object['pds:ASCII_Integer']['anticipated'] == '-9966' + + assert config_object['pds:ASCII_Real']['inapplicable'] == '-9999.0' + assert config_object['pds:ASCII_Real']['missing'] == '-9988.0' + assert config_object['pds:ASCII_Real']['unknown'] == '-9977.0' + assert config_object['pds:ASCII_Real']['anticipated'] == '-9966.0' + + assert config_object['pds:ASCII_Short_String_Collapsed']['inapplicable'] == 'inapplicable_alt' + assert config_object['pds:ASCII_Short_String_Collapsed']['missing'] == 'missing_alt' + assert config_object['pds:ASCII_Short_String_Collapsed']['unknown'] == 'unknown_alt' + assert config_object['pds:ASCII_Short_String_Collapsed']['anticipated'] == 'anticipated_alt' + + + # now, a bad config file + with pytest.raises(SystemExit): + with pytest.raises(OSError): + tools.load_config_file("non_existent_file.ini") + + +# Testing default_value_for_nil() +def test_default_value_for_nil(): + config_object = tools.load_config_file(None) + integer = 'pds:ASCII_Integer' + double_float = 'pds:ASCII_Real' + + assert config_object['pds:ASCII_Integer']['inapplicable'] == '-999' + assert tools.default_value_for_nil(config_object, integer, 'inapplicable') == -999 + assert config_object['pds:ASCII_Integer']['missing'] == '-998' + assert tools.default_value_for_nil(config_object, integer, 'missing') == -998 + assert config_object['pds:ASCII_Integer']['unknown'] == '-997' + assert tools.default_value_for_nil(config_object, integer, 'unknown') == -997 + assert config_object['pds:ASCII_Integer']['anticipated'] == '-996' + assert tools.default_value_for_nil(config_object, integer, 'anticipated') == -996 + + + assert config_object['pds:ASCII_Real']['inapplicable'] == '-999.0' + assert tools.default_value_for_nil(config_object, double_float, 'inapplicable') == -999.0 + assert config_object['pds:ASCII_Real']['missing'] == '-998.0' + assert tools.default_value_for_nil(config_object, double_float, 'missing') == -998.0 + assert config_object['pds:ASCII_Real']['unknown'] == '-997.0' + assert tools.default_value_for_nil(config_object, double_float, 'unknown') == -997.0 + assert config_object['pds:ASCII_Real']['anticipated'] == '-996.0' + assert tools.default_value_for_nil(config_object, double_float, 'anticipated') == -996.0 + + +# Testing split_into_elements() +def test_split_into_elements(): + xpath = '/pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1>' + pieces = tools.split_into_elements(xpath) + assert pieces == ['pds:Observation_Area', 'pds:Observing_System', 'pds:name'] + + +# Testing process_schema_location() +def test_process_schema_location(): + label_file = 'tester_label_1.xml' + schema_files = tools.process_schema_location(labels_dir / label_file) + assert schema_files[0] == 'https://pds.nasa.gov/pds4/pds/v1/PDS4_PDS_1B00.xsd' + assert schema_files[1] == 'https://pds.nasa.gov/pds4/disp/v1/PDS4_DISP_1B00.xsd' + assert schema_files[2] == 'https://pds.nasa.gov/pds4/mission/cassini/v1/PDS4_CASSINI_1B00_1300.xsd' From d056a47f931248f216cc603b434489cf1f470d24 Mon Sep 17 00:00:00 2001 From: Robert French Date: Mon, 20 May 2024 13:05:53 -0700 Subject: [PATCH 29/46] Changes to work with Python 3.8 --- pds4indextools/pds4_create_xml_index.py | 38 ++++++++++++------------- requirements.txt | 10 +++---- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index 8bff3a7..be7e937 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -12,7 +12,7 @@ [--simplify-xpaths] [--output-file OUTPUT_FILE] [--verbose] - [--sort-by SORT_BY] + [--sort-by SORT_BY] [--clean-header-field-names] [--extra-file-info EXTRA_FILE_INFO] [--config-file CONFIG_FILE] @@ -32,7 +32,7 @@ --sort-by SORT_BY Sort the index file by a chosen set of columns. --clean-header-field-names Replace the ":" and "/" with Windows-friendly characters. - --extra-file-info EXTRA_FILE_INFO + --extra-file-info EXTRA_FILE_INFO Add additional column(s) to the index file containing file or bundle information. Possible values are: "LID", "filename", "filepath", "bundle", and "bundle_lid". Multiple values may be @@ -41,7 +41,7 @@ An optional .ini configuration file for further customization. Example: -python3 pds4_create_xml_index.py "glob_path1" "glob_path2" +python3 pds4_create_xml_index.py "glob_path1" "glob_path2" --output_file --elements-file sample_elements.txt --verbose """ @@ -65,9 +65,9 @@ def convert_header_to_xpath(root, xpath_find, namespaces): """Replace hierarchal components of XPath with attribute names and namespaces. - While the XPaths are accurate to the hierarchy of the elements referenced, they + While the XPaths are accurate to the hierarchy of the elements referenced, they provide no information on their own without the attributed label file for reference. - This function replaces the asterisks with the respective names of the elements and + This function replaces the asterisks with the respective names of the elements and attributes they represent. Inputs: @@ -141,7 +141,7 @@ def filter_dict_by_glob_patterns(input_dict, glob_patterns, verboseprint): Inputs: input_dict: The dictionary to filter. glob_patterns: A list of glob patterns to match against dictionary keys. - + Returns: Filtered dictionary with desired contents """ @@ -149,7 +149,7 @@ def filter_dict_by_glob_patterns(input_dict, glob_patterns, verboseprint): if glob_patterns is None: return input_dict - + if glob_patterns == []: print('Given elements file is empty.') sys.exit(1) @@ -200,7 +200,7 @@ def load_config_file(specified_config_file): except OSError: print(f'Unable to read configuration file: {specified_config_file}') sys.exit(1) - + return config @@ -232,7 +232,7 @@ def process_schema_location(file_path): def process_headers(label_results, key, root, namespaces, prefixes): - """Process headers to have more readable contents. + """Process headers to have more readable contents. Processes XPath headers by converting parts of the XPath into element tags, replacing namespaces with prefixes, and updating the label_results dictionary. @@ -412,7 +412,7 @@ def split_into_elements(xpath): if '<' in part: part = part.split('<') elements.append(part[0]) - + return elements @@ -451,7 +451,7 @@ def store_element_text(element, tree, results_dict, nillable_elements_info, conf parent_check = len(element) if not parent_check: print(f'Non-nillable element in {label} has no associated text: {tag}') - + def traverse_and_store(element, tree, results_dict, nillable_elements_info, config, label): @@ -472,7 +472,7 @@ def traverse_and_store(element, tree, results_dict, nillable_elements_info, config, label) -@functools.cache +@functools.lru_cache(maxsize=None) def download_xsd_file(xsd_file): return etree.fromstring(requests.get(xsd_file).content) @@ -665,7 +665,7 @@ def main(cmd_line=None): for key in list(label_results.keys()): process_headers(label_results, key, root, namespaces, prefixes) - + for key in list(label_results.keys()): key_new = key.replace('[', '<') key_new = key_new.replace(']', '>') @@ -682,7 +682,7 @@ def main(cmd_line=None): new_parts.append(part) key_new = '/'.join(new_parts[1:]) label_results[key_new] = label_results.pop(key) - + for key in list(label_results.keys()): if 'cyfunction' in key: del label_results[key] @@ -690,7 +690,7 @@ def main(cmd_line=None): xpath_map = renumber_xpaths(label_results.keys()) for old_xpath, new_xpath in xpath_map.items(): label_results[new_xpath] = label_results.pop(old_xpath) - + verboseprint('Now filtering label results according to given element file.') label_results = filter_dict_by_glob_patterns(label_results, elements_to_scrape, verboseprint) @@ -703,10 +703,10 @@ def main(cmd_line=None): stuff = split_into_elements(key) xpath_elements.append(stuff) names.append(stuff[-1]) - + duplicates = [tuple(t) for t in set(map(tuple, xpath_elements)) if xpath_elements.count(t) > 1] - + duplicate_names = {tag for tag in names if names.count(tag) > 1} if duplicate_names: @@ -721,7 +721,7 @@ def main(cmd_line=None): else: value = key label_results[value] = label_results.pop(key) - + lid = extract_logical_identifier(tree) if lid is None: lid = label_results.get('pds:logical_identifier', 'Missing_LID') @@ -753,7 +753,7 @@ def main(cmd_line=None): for values in label.values(): for x in values.keys(): elements.append(x) - + for x in elements: tag = x.split('/')[-1].split('<')[0] number = x.split('/')[-1].split('<')[0].split('_')[-1] diff --git a/requirements.txt b/requirements.txt index 33e185c..f1906d1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ -coverage==7.4.3 -lxml==5.1.0 -pandas==2.2.1 -pytest==8.0.2 -requests==2.31.0 \ No newline at end of file +coverage +lxml +pandas +pytest +requests \ No newline at end of file From 590f1a98efcb19475f92dfe72d6d890f1f545a95 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Mon, 20 May 2024 17:39:19 -0700 Subject: [PATCH 30/46] Making changes discussed on 05/20/2024 --- pds4indextools/pds4_create_xml_index.py | 6 ++- .../expected/elements_file_success_4.txt | 6 --- .../expected/extra_file_info_success_2.csv | 2 +- .../expected/extra_file_info_success_3.csv | 2 +- tests/test_pds4_create_xml_index.py | 50 ++++++++++--------- 5 files changed, 34 insertions(+), 32 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index be7e937..fc556aa 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -474,7 +474,11 @@ def traverse_and_store(element, tree, results_dict, @functools.lru_cache(maxsize=None) def download_xsd_file(xsd_file): - return etree.fromstring(requests.get(xsd_file).content) + try: + return etree.fromstring(requests.get(xsd_file).content) + except etree.XMLSyntaxError: + print(f'The dictionary file {xsd_file} could not be loaded.') + sys.exit(1) def update_nillable_elements_from_xsd_file(xsd_file, nillable_elements_info): """Store all nillable elements and their data types in a dictionary. diff --git a/test_files/expected/elements_file_success_4.txt b/test_files/expected/elements_file_success_4.txt index 428dbc3..3076bf0 100644 --- a/test_files/expected/elements_file_success_4.txt +++ b/test_files/expected/elements_file_success_4.txt @@ -5,11 +5,5 @@ pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:co pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:comment<1> pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:comment<1> pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:comment<1> -pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:comment<1> -pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:comment<1> -pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:comment<1> -pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<4>/pds:comment<1> -pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:comment<1> -pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:comment<1> pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:comment<1> pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:comment<1> diff --git a/test_files/expected/extra_file_info_success_2.csv b/test_files/expected/extra_file_info_success_2.csv index 028f6f6..09dbc04 100644 --- a/test_files/expected/extra_file_info_success_2.csv +++ b/test_files/expected/extra_file_info_success_2.csv @@ -1,4 +1,4 @@ filename,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1> tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0 -tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0 tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0 +tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0 diff --git a/test_files/expected/extra_file_info_success_3.csv b/test_files/expected/extra_file_info_success_3.csv index c6a73fa..35ab791 100644 --- a/test_files/expected/extra_file_info_success_3.csv +++ b/test_files/expected/extra_file_info_success_3.csv @@ -1,4 +1,4 @@ filename,filepath,LID,bundle,bundle_lid,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1> tester_label_1.xml,labels/tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0 -tester_label_3.xml,labels/tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0 tester_label_2.xml,labels/tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0 +tester_label_3.xml,labels/tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0 diff --git a/tests/test_pds4_create_xml_index.py b/tests/test_pds4_create_xml_index.py index 0210550..dd3c6a3 100644 --- a/tests/test_pds4_create_xml_index.py +++ b/tests/test_pds4_create_xml_index.py @@ -24,7 +24,7 @@ 'elements_file.txt', [ str(test_files_dir), - 'labels/tester_label_1.xml', + str(labels_dir.name / Path('tester_label_1.xml')), '--dump-available-elements', '--elements-file', str(samples_dir / 'element_1.txt'), @@ -36,7 +36,7 @@ 'elements_file_2.txt', [ str(test_files_dir), - 'labels/tester_label_2.xml', + str(labels_dir.name / Path('tester_label_2.xml')), '--dump-available-elements', '--elements-file', str(samples_dir / 'element_2.txt'), @@ -48,8 +48,8 @@ 'elements_file_3.txt', [ str(test_files_dir), - 'labels/tester_label_2.xml', - 'labels/tester_label_3.xml', + str(labels_dir.name / Path('tester_label_2.xml')), + str(labels_dir.name / Path('tester_label_3.xml')), '--dump-available-elements', '--elements-file', str(samples_dir / 'element_3.txt'), @@ -62,10 +62,10 @@ 'elements_file_4.txt', [ str(test_files_dir), - 'labels/tester_label_*.xml', + str(labels_dir.name / Path('tester_label_*.xml')), '--dump-available-elements', '--elements-file', - str(samples_dir / 'element_4.txt'), + str(samples_dir / 'element_4.txt'), '--output-file', ] ), @@ -75,7 +75,7 @@ 'simplify_xpaths_1.txt', [ str(test_files_dir), - 'labels/tester_label_1.xml', + str(labels_dir.name / Path('tester_label_1.xml')), '--dump-available-elements', '--simplify-xpaths', '--output-file', @@ -86,7 +86,7 @@ 'simplify_xpaths_2.txt', [ str(test_files_dir), - 'labels/tester_label_*.xml', + str(labels_dir.name / Path('tester_label_*.xml')), '--dump-available-elements', '--simplify-xpaths', '--elements-file', @@ -99,7 +99,7 @@ 'simplify_xpaths_3.txt', [ str(test_files_dir), - 'labels/tester_label_2.xml', + str(labels_dir.name / Path('tester_label_2.xml')), '--dump-available-elements', '--simplify-xpaths', '--elements-file', @@ -112,7 +112,7 @@ 'simplify_xpaths_4.txt', [ str(test_files_dir), - 'labels/tester_label_3.xml', + str(labels_dir.name / Path('tester_label_3.xml')), '--dump-available-elements', '--simplify-xpaths', '--elements-file', @@ -126,7 +126,7 @@ 'extra_file_info_1.csv', [ str(test_files_dir), - 'labels/tester_label_2.xml', + str(labels_dir.name / Path('tester_label_2.xml')), '--elements-file', str(samples_dir / 'element_1.txt'), '--extra-file-info', @@ -140,11 +140,13 @@ 'extra_file_info_2.csv', [ str(test_files_dir), - 'labels/tester_label_*.xml', + str(labels_dir.name / Path('tester_label_*.xml')), '--elements-file', str(samples_dir / 'element_extra_file_info_2.txt'), '--extra-file-info', 'filename', + '--sort-by', + 'filename', '--output-file', ] ), @@ -153,7 +155,7 @@ 'extra_file_info_3.csv', [ str(test_files_dir), - 'labels/tester_label_*.xml', + str(labels_dir.name / Path('tester_label_*.xml')), '--elements-file', str(samples_dir / 'element_extra_file_info_2.txt'), '--extra-file-info', @@ -162,6 +164,8 @@ 'LID', 'bundle', 'bundle_lid', + '--sort-by', + 'filename', '--output-file', ] ), @@ -171,7 +175,7 @@ 'clean_header_field_names_1.txt', [ str(test_files_dir), - 'labels/tester_label_1.xml', + str(labels_dir.name / Path('tester_label_1.xml')), '--dump-available-elements', '--clean-header-field-names', '--output-file', @@ -182,8 +186,8 @@ 'clean_header_field_names_2.txt', [ str(test_files_dir), - 'labels/tester_label_1.xml', - 'labels/tester_label_2.xml', + str(labels_dir.name / Path('tester_label_1.xml')), + str(labels_dir.name / Path('tester_label_2.xml')), '--dump-available-elements', '--elements-file', str(samples_dir / 'elements_clean_header_field_names.txt'), @@ -195,7 +199,7 @@ 'clean_header_field_names_1.txt', [ str(test_files_dir), - 'labels/tester_label_1.xml', + str(labels_dir.name / Path('tester_label_1.xml')), '--dump-available-elements', '--clean-header-field-names', '--output-file', @@ -206,8 +210,8 @@ 'clean_header_field_names_2.txt', [ str(test_files_dir), - 'labels/tester_label_1.xml', - 'labels/tester_label_2.xml', + str(labels_dir.name / Path('tester_label_1.xml')), + str(labels_dir.name / Path('tester_label_2.xml')), '--dump-available-elements', '--elements-file', str(samples_dir / 'elements_clean_header_field_names.txt'), @@ -221,7 +225,7 @@ 'sort_by_1.csv', [ str(test_files_dir), - 'labels/tester_label_*.xml', + str(labels_dir.name / Path('tester_label_*.xml')), '--elements-file', str(samples_dir / 'elements_clean_header_field_names.txt'), '--sort-by', @@ -234,7 +238,7 @@ 'sort_by_2.csv', [ str(test_files_dir), - 'labels/tester_label_*.xml', + str(labels_dir.name / Path('tester_label_*.xml')), '--elements-file', str(samples_dir / 'elements_clean_header_field_names.txt'), '--extra-file-info', @@ -279,7 +283,7 @@ def test_success(golden_file, new_file, cmd_line): [ ( str(test_files_dir), - 'labels/tester_label_*.xml', + str(labels_dir.name / Path('tester_label_*.xml')), '--elements-file', str(samples_dir / 'element_1.txt'), '--extra-file-info', @@ -297,7 +301,7 @@ def test_success(golden_file, new_file, cmd_line): ), ( str(test_files_dir), # directory path - 'labels/tester_label_*.xml', + str(labels_dir.name / Path('tester_label_*.xml')), '--elements-file', str(samples_dir / 'element_empty.txt'), # empty elements file '--output-file', From 0080e492aa7bf310c8914d04efae1e4bfc4afec1 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 21 May 2024 13:09:48 -0700 Subject: [PATCH 31/46] Fixing unit test functionality --- pds4indextools/pds4_create_xml_index.py | 3 ++- .../clean_header_field_names_success_2.txt | 2 -- .../expected/elements_file_success_3.txt | 3 --- .../expected/simplify_xpaths_success_2.txt | 5 ---- tests/test_pds4_create_xml_index.py | 24 ------------------- 5 files changed, 2 insertions(+), 35 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index fc556aa..269d43a 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -756,7 +756,8 @@ def main(cmd_line=None): for label in all_results: for values in label.values(): for x in values.keys(): - elements.append(x) + if x not in elements: + elements.append(x) for x in elements: tag = x.split('/')[-1].split('<')[0] diff --git a/test_files/expected/clean_header_field_names_success_2.txt b/test_files/expected/clean_header_field_names_success_2.txt index 651105c..edbcc1e 100644 --- a/test_files/expected/clean_header_field_names_success_2.txt +++ b/test_files/expected/clean_header_field_names_success_2.txt @@ -1,7 +1,5 @@ pds_Product_Observational__pds_Identification_Area_1__pds_logical_identifier_1 pds_Product_Observational__pds_Identification_Area_1__pds_version_id_1 -pds_Product_Observational__pds_Identification_Area_1__pds_logical_identifier_1 -pds_Product_Observational__pds_Identification_Area_1__pds_version_id_1 pds_Product_Observational__pds_Observation_Area_1__pds_Time_Coordinates_1__pds_start_date_time_1 pds_Product_Observational__pds_Observation_Area_1__pds_Time_Coordinates_1__pds_stop_date_time_1 pds_Product_Observational__pds_Observation_Area_1__pds_Primary_Result_Summary_1__pds_Science_Facets_1__pds_wavelength_range_1 diff --git a/test_files/expected/elements_file_success_3.txt b/test_files/expected/elements_file_success_3.txt index c58a30d..4a4fec9 100644 --- a/test_files/expected/elements_file_success_3.txt +++ b/test_files/expected/elements_file_success_3.txt @@ -3,6 +3,3 @@ pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Ob pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1> pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1> pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1> -pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1> -pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1> -pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1> diff --git a/test_files/expected/simplify_xpaths_success_2.txt b/test_files/expected/simplify_xpaths_success_2.txt index 8ba0061..5b59b1b 100644 --- a/test_files/expected/simplify_xpaths_success_2.txt +++ b/test_files/expected/simplify_xpaths_success_2.txt @@ -5,12 +5,7 @@ pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:na pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1> pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1> pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1> -pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds:name<1> -pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1> -pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1> -pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1> pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1> -pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1> pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1> pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:name<1> pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:name<1> diff --git a/tests/test_pds4_create_xml_index.py b/tests/test_pds4_create_xml_index.py index dd3c6a3..9daf3fd 100644 --- a/tests/test_pds4_create_xml_index.py +++ b/tests/test_pds4_create_xml_index.py @@ -182,30 +182,6 @@ ] ), - (str(expected_dir / 'clean_header_field_names_success_2.txt'), - 'clean_header_field_names_2.txt', - [ - str(test_files_dir), - str(labels_dir.name / Path('tester_label_1.xml')), - str(labels_dir.name / Path('tester_label_2.xml')), - '--dump-available-elements', - '--elements-file', - str(samples_dir / 'elements_clean_header_field_names.txt'), - '--clean-header-field-names', - '--output-file', - ] - ), - (str(expected_dir / 'clean_header_field_names_success_1.txt'), - 'clean_header_field_names_1.txt', - [ - str(test_files_dir), - str(labels_dir.name / Path('tester_label_1.xml')), - '--dump-available-elements', - '--clean-header-field-names', - '--output-file', - ] - ), - (str(expected_dir / 'clean_header_field_names_success_2.txt'), 'clean_header_field_names_2.txt', [ From 7ec83e1f4a86f3b700fbcaeee18f890a65791173 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 21 May 2024 13:39:29 -0700 Subject: [PATCH 32/46] Attempting to fix Windows failures on unit tests --- .../expected/extra_file_info_success_1.csv | 2 +- .../expected/extra_file_info_success_3.csv | 6 +- test_files/expected/sort_by_success_2.csv | 6 +- tests/test_pds4_create_xml_index.py | 74 +++++++++---------- 4 files changed, 44 insertions(+), 44 deletions(-) diff --git a/test_files/expected/extra_file_info_success_1.csv b/test_files/expected/extra_file_info_success_1.csv index d40644f..efda3aa 100644 --- a/test_files/expected/extra_file_info_success_1.csv +++ b/test_files/expected/extra_file_info_success_1.csv @@ -1,2 +1,2 @@ filename,filepath,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:title<1> -tester_label_2.xml,labels/tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope +tester_label_2.xml,tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope diff --git a/test_files/expected/extra_file_info_success_3.csv b/test_files/expected/extra_file_info_success_3.csv index 35ab791..6ee2318 100644 --- a/test_files/expected/extra_file_info_success_3.csv +++ b/test_files/expected/extra_file_info_success_3.csv @@ -1,4 +1,4 @@ filename,filepath,LID,bundle,bundle_lid,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1> -tester_label_1.xml,labels/tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0 -tester_label_2.xml,labels/tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0 -tester_label_3.xml,labels/tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0 +tester_label_1.xml,tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0 +tester_label_2.xml,tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0 +tester_label_3.xml,tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0 diff --git a/test_files/expected/sort_by_success_2.csv b/test_files/expected/sort_by_success_2.csv index a54b0bd..aaf3d53 100644 --- a/test_files/expected/sort_by_success_2.csv +++ b/test_files/expected/sort_by_success_2.csv @@ -1,4 +1,4 @@ bundle_lid,filepath,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1> -urn:nasa:pds:cassini_iss_cruise,labels/tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN -urn:nasa:pds:cassini_iss_saturn,labels/tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN -urn:nasa:pds:uranus_occ_u149_irtf_320cm,labels/tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared +urn:nasa:pds:cassini_iss_cruise,tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN +urn:nasa:pds:cassini_iss_saturn,tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN +urn:nasa:pds:uranus_occ_u149_irtf_320cm,tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared diff --git a/tests/test_pds4_create_xml_index.py b/tests/test_pds4_create_xml_index.py index 9daf3fd..16509e7 100644 --- a/tests/test_pds4_create_xml_index.py +++ b/tests/test_pds4_create_xml_index.py @@ -23,8 +23,8 @@ (str(expected_dir / 'elements_file_success_1.txt'), 'elements_file.txt', [ - str(test_files_dir), - str(labels_dir.name / Path('tester_label_1.xml')), + str(labels_dir), + 'tester_label_1.xml', '--dump-available-elements', '--elements-file', str(samples_dir / 'element_1.txt'), @@ -35,8 +35,8 @@ (str(expected_dir / 'elements_file_success_2.txt'), 'elements_file_2.txt', [ - str(test_files_dir), - str(labels_dir.name / Path('tester_label_2.xml')), + str(labels_dir), + 'tester_label_2.xml', '--dump-available-elements', '--elements-file', str(samples_dir / 'element_2.txt'), @@ -47,9 +47,9 @@ (str(expected_dir / 'elements_file_success_3.txt'), 'elements_file_3.txt', [ - str(test_files_dir), - str(labels_dir.name / Path('tester_label_2.xml')), - str(labels_dir.name / Path('tester_label_3.xml')), + str(labels_dir), + 'tester_label_2.xml', + 'tester_label_3.xml', '--dump-available-elements', '--elements-file', str(samples_dir / 'element_3.txt'), @@ -61,8 +61,8 @@ (str(expected_dir / 'elements_file_success_4.txt'), 'elements_file_4.txt', [ - str(test_files_dir), - str(labels_dir.name / Path('tester_label_*.xml')), + str(labels_dir), + 'tester_label_*.xml', '--dump-available-elements', '--elements-file', str(samples_dir / 'element_4.txt'), @@ -74,8 +74,8 @@ (str(expected_dir / 'simplify_xpaths_success_1.txt'), 'simplify_xpaths_1.txt', [ - str(test_files_dir), - str(labels_dir.name / Path('tester_label_1.xml')), + str(labels_dir), + 'tester_label_1.xml', '--dump-available-elements', '--simplify-xpaths', '--output-file', @@ -85,8 +85,8 @@ (str(expected_dir / 'simplify_xpaths_success_2.txt'), 'simplify_xpaths_2.txt', [ - str(test_files_dir), - str(labels_dir.name / Path('tester_label_*.xml')), + str(labels_dir), + 'tester_label_*.xml', '--dump-available-elements', '--simplify-xpaths', '--elements-file', @@ -98,8 +98,8 @@ (str(expected_dir / 'simplify_xpaths_success_3.txt'), 'simplify_xpaths_3.txt', [ - str(test_files_dir), - str(labels_dir.name / Path('tester_label_2.xml')), + str(labels_dir), + 'tester_label_2.xml', '--dump-available-elements', '--simplify-xpaths', '--elements-file', @@ -111,8 +111,8 @@ (str(expected_dir / 'simplify_xpaths_success_4.txt'), 'simplify_xpaths_4.txt', [ - str(test_files_dir), - str(labels_dir.name / Path('tester_label_3.xml')), + str(labels_dir), + 'tester_label_3.xml', '--dump-available-elements', '--simplify-xpaths', '--elements-file', @@ -125,8 +125,8 @@ (str(expected_dir / 'extra_file_info_success_1.csv'), 'extra_file_info_1.csv', [ - str(test_files_dir), - str(labels_dir.name / Path('tester_label_2.xml')), + str(labels_dir), + 'tester_label_2.xml', '--elements-file', str(samples_dir / 'element_1.txt'), '--extra-file-info', @@ -139,8 +139,8 @@ (str(expected_dir / 'extra_file_info_success_2.csv'), 'extra_file_info_2.csv', [ - str(test_files_dir), - str(labels_dir.name / Path('tester_label_*.xml')), + str(labels_dir), + 'tester_label_*.xml', '--elements-file', str(samples_dir / 'element_extra_file_info_2.txt'), '--extra-file-info', @@ -154,8 +154,8 @@ (str(expected_dir / 'extra_file_info_success_3.csv'), 'extra_file_info_3.csv', [ - str(test_files_dir), - str(labels_dir.name / Path('tester_label_*.xml')), + str(labels_dir), + 'tester_label_*.xml', '--elements-file', str(samples_dir / 'element_extra_file_info_2.txt'), '--extra-file-info', @@ -174,8 +174,8 @@ (str(expected_dir / 'clean_header_field_names_success_1.txt'), 'clean_header_field_names_1.txt', [ - str(test_files_dir), - str(labels_dir.name / Path('tester_label_1.xml')), + str(labels_dir), + 'tester_label_1.xml', '--dump-available-elements', '--clean-header-field-names', '--output-file', @@ -185,9 +185,9 @@ (str(expected_dir / 'clean_header_field_names_success_2.txt'), 'clean_header_field_names_2.txt', [ - str(test_files_dir), - str(labels_dir.name / Path('tester_label_1.xml')), - str(labels_dir.name / Path('tester_label_2.xml')), + str(labels_dir), + 'tester_label_1.xml', + 'tester_label_2.xml', '--dump-available-elements', '--elements-file', str(samples_dir / 'elements_clean_header_field_names.txt'), @@ -200,8 +200,8 @@ (str(expected_dir / 'sort_by_success_1.csv'), 'sort_by_1.csv', [ - str(test_files_dir), - str(labels_dir.name / Path('tester_label_*.xml')), + str(labels_dir), + 'tester_label_*.xml', '--elements-file', str(samples_dir / 'elements_clean_header_field_names.txt'), '--sort-by', @@ -213,8 +213,8 @@ (str(expected_dir / 'sort_by_success_2.csv'), 'sort_by_2.csv', [ - str(test_files_dir), - str(labels_dir.name / Path('tester_label_*.xml')), + str(labels_dir), + 'tester_label_*.xml', '--elements-file', str(samples_dir / 'elements_clean_header_field_names.txt'), '--extra-file-info', @@ -258,8 +258,8 @@ def test_success(golden_file, new_file, cmd_line): 'cmd_line', [ ( - str(test_files_dir), - str(labels_dir.name / Path('tester_label_*.xml')), + str(labels_dir), + 'tester_label_*.xml', '--elements-file', str(samples_dir / 'element_1.txt'), '--extra-file-info', @@ -267,7 +267,7 @@ def test_success(golden_file, new_file, cmd_line): '--output-file', ), ( - str(test_files_dir), # directory path + str(labels_dir), # directory path ' bad_directory/labels/tester_label_*.xml', # non-existent directory '--elements-file', str(samples_dir / 'element_1.txt'), # elements file @@ -276,8 +276,8 @@ def test_success(golden_file, new_file, cmd_line): '--output-file', ), ( - str(test_files_dir), # directory path - str(labels_dir.name / Path('tester_label_*.xml')), + str(labels_dir), # directory path + 'tester_label_*.xml', '--elements-file', str(samples_dir / 'element_empty.txt'), # empty elements file '--output-file', From 97bef088dd01f8cf55a35b149e6cc793cf442d27 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 21 May 2024 14:04:17 -0700 Subject: [PATCH 33/46] Attempting to fix Windows functionality for unit tests --- pds4indextools/pds4_create_xml_index.py | 5 ++ .../expected/extra_file_info_success_1.csv | 2 +- .../expected/extra_file_info_success_3.csv | 6 +- test_files/expected/sort_by_success_2.csv | 6 +- tests/test_pds4_create_xml_index.py | 74 +++++++++---------- 5 files changed, 49 insertions(+), 44 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index 269d43a..5321212 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -545,6 +545,11 @@ def write_results_to_csv(results_list, args, output_csv_path): df = pd.DataFrame(rows) + for c in df.columns: + c_new = c.replace('\\\\', '/') + df.rename(columns={c: c_new}, inplace=True) + + for c in df.columns: number = c.split('/')[-1].split('<')[0].split('_')[-1] if number.isdigit(): diff --git a/test_files/expected/extra_file_info_success_1.csv b/test_files/expected/extra_file_info_success_1.csv index efda3aa..d40644f 100644 --- a/test_files/expected/extra_file_info_success_1.csv +++ b/test_files/expected/extra_file_info_success_1.csv @@ -1,2 +1,2 @@ filename,filepath,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:title<1> -tester_label_2.xml,tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope +tester_label_2.xml,labels/tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope diff --git a/test_files/expected/extra_file_info_success_3.csv b/test_files/expected/extra_file_info_success_3.csv index 6ee2318..35ab791 100644 --- a/test_files/expected/extra_file_info_success_3.csv +++ b/test_files/expected/extra_file_info_success_3.csv @@ -1,4 +1,4 @@ filename,filepath,LID,bundle,bundle_lid,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1> -tester_label_1.xml,tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0 -tester_label_2.xml,tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0 -tester_label_3.xml,tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0 +tester_label_1.xml,labels/tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0 +tester_label_2.xml,labels/tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0 +tester_label_3.xml,labels/tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0 diff --git a/test_files/expected/sort_by_success_2.csv b/test_files/expected/sort_by_success_2.csv index aaf3d53..a54b0bd 100644 --- a/test_files/expected/sort_by_success_2.csv +++ b/test_files/expected/sort_by_success_2.csv @@ -1,4 +1,4 @@ bundle_lid,filepath,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1> -urn:nasa:pds:cassini_iss_cruise,tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN -urn:nasa:pds:cassini_iss_saturn,tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN -urn:nasa:pds:uranus_occ_u149_irtf_320cm,tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared +urn:nasa:pds:cassini_iss_cruise,labels/tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN +urn:nasa:pds:cassini_iss_saturn,labels/tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN +urn:nasa:pds:uranus_occ_u149_irtf_320cm,labels/tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared diff --git a/tests/test_pds4_create_xml_index.py b/tests/test_pds4_create_xml_index.py index 16509e7..9daf3fd 100644 --- a/tests/test_pds4_create_xml_index.py +++ b/tests/test_pds4_create_xml_index.py @@ -23,8 +23,8 @@ (str(expected_dir / 'elements_file_success_1.txt'), 'elements_file.txt', [ - str(labels_dir), - 'tester_label_1.xml', + str(test_files_dir), + str(labels_dir.name / Path('tester_label_1.xml')), '--dump-available-elements', '--elements-file', str(samples_dir / 'element_1.txt'), @@ -35,8 +35,8 @@ (str(expected_dir / 'elements_file_success_2.txt'), 'elements_file_2.txt', [ - str(labels_dir), - 'tester_label_2.xml', + str(test_files_dir), + str(labels_dir.name / Path('tester_label_2.xml')), '--dump-available-elements', '--elements-file', str(samples_dir / 'element_2.txt'), @@ -47,9 +47,9 @@ (str(expected_dir / 'elements_file_success_3.txt'), 'elements_file_3.txt', [ - str(labels_dir), - 'tester_label_2.xml', - 'tester_label_3.xml', + str(test_files_dir), + str(labels_dir.name / Path('tester_label_2.xml')), + str(labels_dir.name / Path('tester_label_3.xml')), '--dump-available-elements', '--elements-file', str(samples_dir / 'element_3.txt'), @@ -61,8 +61,8 @@ (str(expected_dir / 'elements_file_success_4.txt'), 'elements_file_4.txt', [ - str(labels_dir), - 'tester_label_*.xml', + str(test_files_dir), + str(labels_dir.name / Path('tester_label_*.xml')), '--dump-available-elements', '--elements-file', str(samples_dir / 'element_4.txt'), @@ -74,8 +74,8 @@ (str(expected_dir / 'simplify_xpaths_success_1.txt'), 'simplify_xpaths_1.txt', [ - str(labels_dir), - 'tester_label_1.xml', + str(test_files_dir), + str(labels_dir.name / Path('tester_label_1.xml')), '--dump-available-elements', '--simplify-xpaths', '--output-file', @@ -85,8 +85,8 @@ (str(expected_dir / 'simplify_xpaths_success_2.txt'), 'simplify_xpaths_2.txt', [ - str(labels_dir), - 'tester_label_*.xml', + str(test_files_dir), + str(labels_dir.name / Path('tester_label_*.xml')), '--dump-available-elements', '--simplify-xpaths', '--elements-file', @@ -98,8 +98,8 @@ (str(expected_dir / 'simplify_xpaths_success_3.txt'), 'simplify_xpaths_3.txt', [ - str(labels_dir), - 'tester_label_2.xml', + str(test_files_dir), + str(labels_dir.name / Path('tester_label_2.xml')), '--dump-available-elements', '--simplify-xpaths', '--elements-file', @@ -111,8 +111,8 @@ (str(expected_dir / 'simplify_xpaths_success_4.txt'), 'simplify_xpaths_4.txt', [ - str(labels_dir), - 'tester_label_3.xml', + str(test_files_dir), + str(labels_dir.name / Path('tester_label_3.xml')), '--dump-available-elements', '--simplify-xpaths', '--elements-file', @@ -125,8 +125,8 @@ (str(expected_dir / 'extra_file_info_success_1.csv'), 'extra_file_info_1.csv', [ - str(labels_dir), - 'tester_label_2.xml', + str(test_files_dir), + str(labels_dir.name / Path('tester_label_2.xml')), '--elements-file', str(samples_dir / 'element_1.txt'), '--extra-file-info', @@ -139,8 +139,8 @@ (str(expected_dir / 'extra_file_info_success_2.csv'), 'extra_file_info_2.csv', [ - str(labels_dir), - 'tester_label_*.xml', + str(test_files_dir), + str(labels_dir.name / Path('tester_label_*.xml')), '--elements-file', str(samples_dir / 'element_extra_file_info_2.txt'), '--extra-file-info', @@ -154,8 +154,8 @@ (str(expected_dir / 'extra_file_info_success_3.csv'), 'extra_file_info_3.csv', [ - str(labels_dir), - 'tester_label_*.xml', + str(test_files_dir), + str(labels_dir.name / Path('tester_label_*.xml')), '--elements-file', str(samples_dir / 'element_extra_file_info_2.txt'), '--extra-file-info', @@ -174,8 +174,8 @@ (str(expected_dir / 'clean_header_field_names_success_1.txt'), 'clean_header_field_names_1.txt', [ - str(labels_dir), - 'tester_label_1.xml', + str(test_files_dir), + str(labels_dir.name / Path('tester_label_1.xml')), '--dump-available-elements', '--clean-header-field-names', '--output-file', @@ -185,9 +185,9 @@ (str(expected_dir / 'clean_header_field_names_success_2.txt'), 'clean_header_field_names_2.txt', [ - str(labels_dir), - 'tester_label_1.xml', - 'tester_label_2.xml', + str(test_files_dir), + str(labels_dir.name / Path('tester_label_1.xml')), + str(labels_dir.name / Path('tester_label_2.xml')), '--dump-available-elements', '--elements-file', str(samples_dir / 'elements_clean_header_field_names.txt'), @@ -200,8 +200,8 @@ (str(expected_dir / 'sort_by_success_1.csv'), 'sort_by_1.csv', [ - str(labels_dir), - 'tester_label_*.xml', + str(test_files_dir), + str(labels_dir.name / Path('tester_label_*.xml')), '--elements-file', str(samples_dir / 'elements_clean_header_field_names.txt'), '--sort-by', @@ -213,8 +213,8 @@ (str(expected_dir / 'sort_by_success_2.csv'), 'sort_by_2.csv', [ - str(labels_dir), - 'tester_label_*.xml', + str(test_files_dir), + str(labels_dir.name / Path('tester_label_*.xml')), '--elements-file', str(samples_dir / 'elements_clean_header_field_names.txt'), '--extra-file-info', @@ -258,8 +258,8 @@ def test_success(golden_file, new_file, cmd_line): 'cmd_line', [ ( - str(labels_dir), - 'tester_label_*.xml', + str(test_files_dir), + str(labels_dir.name / Path('tester_label_*.xml')), '--elements-file', str(samples_dir / 'element_1.txt'), '--extra-file-info', @@ -267,7 +267,7 @@ def test_success(golden_file, new_file, cmd_line): '--output-file', ), ( - str(labels_dir), # directory path + str(test_files_dir), # directory path ' bad_directory/labels/tester_label_*.xml', # non-existent directory '--elements-file', str(samples_dir / 'element_1.txt'), # elements file @@ -276,8 +276,8 @@ def test_success(golden_file, new_file, cmd_line): '--output-file', ), ( - str(labels_dir), # directory path - 'tester_label_*.xml', + str(test_files_dir), # directory path + str(labels_dir.name / Path('tester_label_*.xml')), '--elements-file', str(samples_dir / 'element_empty.txt'), # empty elements file '--output-file', From 874401f62d8950ec24d7cb511013a4b3b36f2513 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 21 May 2024 14:13:07 -0700 Subject: [PATCH 34/46] Changing filepath variable string representation --- pds4indextools/pds4_create_xml_index.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index 5321212..50f3d2a 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -662,7 +662,7 @@ def main(cmd_line=None): for url in xml_urls: update_nillable_elements_from_xsd_file(url, nillable_elements_info) - filepath = file.relative_to(args.directorypath) + filepath = repr(file.relative_to(args.directorypath)) namespaces = root.nsmap namespaces['pds'] = namespaces.pop(None) From 6c2489bd7bd19410a217ab47a2b847d9e8ea4e94 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 21 May 2024 14:19:27 -0700 Subject: [PATCH 35/46] Attempting new fix for unit tests --- pds4indextools/pds4_create_xml_index.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index 50f3d2a..eaa2537 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -546,6 +546,7 @@ def write_results_to_csv(results_list, args, output_csv_path): df = pd.DataFrame(rows) for c in df.columns: + c = repr(str(c)) c_new = c.replace('\\\\', '/') df.rename(columns={c: c_new}, inplace=True) @@ -662,7 +663,7 @@ def main(cmd_line=None): for url in xml_urls: update_nillable_elements_from_xsd_file(url, nillable_elements_info) - filepath = repr(file.relative_to(args.directorypath)) + filepath = file.relative_to(args.directorypath) namespaces = root.nsmap namespaces['pds'] = namespaces.pop(None) From fe63eaf025266356e583468c54ee1edf6f12d638 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 21 May 2024 14:24:30 -0700 Subject: [PATCH 36/46] Attempting new fix --- pds4indextools/pds4_create_xml_index.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index eaa2537..e2af6cc 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -544,13 +544,6 @@ def write_results_to_csv(results_list, args, output_csv_path): rows.append(result_dict['Results']) df = pd.DataFrame(rows) - - for c in df.columns: - c = repr(str(c)) - c_new = c.replace('\\\\', '/') - df.rename(columns={c: c_new}, inplace=True) - - for c in df.columns: number = c.split('/')[-1].split('<')[0].split('_')[-1] if number.isdigit(): @@ -663,7 +656,8 @@ def main(cmd_line=None): for url in xml_urls: update_nillable_elements_from_xsd_file(url, nillable_elements_info) - filepath = file.relative_to(args.directorypath) + filepath = repr(str(file.relative_to(args.directorypath))) + filepath = filepath.replace('\\\\', '/') namespaces = root.nsmap namespaces['pds'] = namespaces.pop(None) From 82bc3b6f2ad74cf248f907fc21c49da89352f52e Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 21 May 2024 17:20:04 -0700 Subject: [PATCH 37/46] Making several fixes according to discussions on 5/21/2024 --- pds4indextools/pds4_create_xml_index.py | 24 +++---- .../expected/elements_file_success_4.txt | 2 +- .../expected/identical_labels_success.csv | 4 ++ .../expected/simplify_xpaths_success_2.txt | 2 +- test_files/labels/identical_label_1.xml | 68 +++++++++++++++++++ test_files/labels/identical_label_2.xml | 68 +++++++++++++++++++ test_files/labels/identical_label_3.xml | 68 +++++++++++++++++++ test_files/samples/identical_elements.txt | 6 ++ tests/test_pds4_create_xml_index.py | 67 +++++++++++++----- 9 files changed, 277 insertions(+), 32 deletions(-) create mode 100644 test_files/expected/identical_labels_success.csv create mode 100644 test_files/labels/identical_label_1.xml create mode 100644 test_files/labels/identical_label_2.xml create mode 100644 test_files/labels/identical_label_3.xml create mode 100644 test_files/samples/identical_elements.txt diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index e2af6cc..1f2bbca 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -604,8 +604,8 @@ def main(cmd_line=None): parser.add_argument('--config-file', type=str, help='Read a user-specified configuration file.. File must be a ' '.ini file.') - parser.add_argument('--dump-available-elements', action='store_true', - help='Give a .txt file of all elements within given label ' + parser.add_argument('--dump-available-xpaths', action='store_true', + help='Give a .txt file of all xpaths within given label ' 'file(s). This file can be used as a base file for ' '--elements-file.') @@ -656,8 +656,8 @@ def main(cmd_line=None): for url in xml_urls: update_nillable_elements_from_xsd_file(url, nillable_elements_info) - filepath = repr(str(file.relative_to(args.directorypath))) - filepath = filepath.replace('\\\\', '/') + filepath = str(file.relative_to(args.directorypath)) + filepath = Path(filepath.replace('\\', '/')) namespaces = root.nsmap namespaces['pds'] = namespaces.pop(None) @@ -750,24 +750,24 @@ def main(cmd_line=None): output_path = args.directorypath / Path('index_file.csv') - if args.dump_available_elements: - verboseprint(f'Elements file generated at {output_path}') - elements = [] + if args.dump_available_xpaths: + verboseprint(f'XPaths file generated at {output_path}') + xpaths = [] for label in all_results: for values in label.values(): for x in values.keys(): - if x not in elements: - elements.append(x) + if x not in xpaths: + xpaths.append(x) - for x in elements: + for x in xpaths: tag = x.split('/')[-1].split('<')[0] number = x.split('/')[-1].split('<')[0].split('_')[-1] if number.isdigit() and tag not in tags: y = x.replace('_'+number, '') - elements[elements.index(x)] = y + xpaths[xpaths.index(x)] = y with open(output_path, 'w') as file: - for item in elements: + for item in xpaths: if args.clean_header_field_names: verboseprint('--clean-header-field-names chosen. Headers reformatted.') item = item.replace( diff --git a/test_files/expected/elements_file_success_4.txt b/test_files/expected/elements_file_success_4.txt index 3076bf0..36850ef 100644 --- a/test_files/expected/elements_file_success_4.txt +++ b/test_files/expected/elements_file_success_4.txt @@ -1,4 +1,3 @@ -pds:Product_Observational/pds:Observation_Area<1>/pds:comment<1> pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<1>/pds:comment<1> pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<2>/pds:comment<1> pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<3>/pds:comment<1> @@ -7,3 +6,4 @@ pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<5>/pds:co pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<6>/pds:comment<1> pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<7>/pds:comment<1> pds:Product_Observational/pds:Reference_List<1>/pds:Internal_Reference<8>/pds:comment<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:comment<1> diff --git a/test_files/expected/identical_labels_success.csv b/test_files/expected/identical_labels_success.csv new file mode 100644 index 0000000..3e0cd40 --- /dev/null +++ b/test_files/expected/identical_labels_success.csv @@ -0,0 +1,4 @@ +filename,pds:Product_Collection/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Collection/pds:Identification_Area<1>/pds:title<1>,pds:Product_Collection/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:editor_list<1>,pds:Product_Collection/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:description<1>,pds:Product_Collection/pds:File_Area_Inventory<1>/pds:File<1>/pds:file_name<1>,pds:Product_Collection/pds:File_Area_Inventory<1>/pds:Inventory<1>/pds:record_delimiter<1> +identical_label_1.xml,urn:nasa:pds:bundle_1:document,Label 1,"M. W. Evans, M. K. Gordon, M. R. Showalter, and M. S. Tiscareno",This is the first of three identical labels.,some_collection_1.csv,Carriage-Return Line-Feed +identical_label_2.xml,urn:nasa:pds:bundle_2:document,Label 2,"M. W. Evans, M. S. Tiscareno",This is the second of three identical labels.,some_collection_2.csv,Line-Feed +identical_label_3.xml,urn:nasa:pds:bundle_3:document,Label 3,"M. R. Showalter, M. S. Tiscareno",This is the third of three identical labels.,some_collection_3.csv,Carriage-Return Line-Feed diff --git a/test_files/expected/simplify_xpaths_success_2.txt b/test_files/expected/simplify_xpaths_success_2.txt index 5b59b1b..3c41d9b 100644 --- a/test_files/expected/simplify_xpaths_success_2.txt +++ b/test_files/expected/simplify_xpaths_success_2.txt @@ -4,8 +4,8 @@ pds:Product_Observational/pds:Observation_Area<1>/pds:Investigation_Area<1>/pds: pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:name<1> pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<1>/pds:name<1> pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<2>/pds:name<1> -pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1> pds:Product_Observational/pds:Observation_Area<1>/pds:Observing_System<1>/pds:Observing_System_Component<3>/pds:name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<1>/pds:name<1> pds:Product_Observational/pds:Observation_Area<1>/pds:Target_Identification<2>/pds:name<1> pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<1>/pds:name<1> pds:Product_Observational/pds:File_Area_Observational<1>/pds:Table_Character<1>/pds:Record_Character<1>/pds:Field_Character<2>/pds:name<1> diff --git a/test_files/labels/identical_label_1.xml b/test_files/labels/identical_label_1.xml new file mode 100644 index 0000000..0e94693 --- /dev/null +++ b/test_files/labels/identical_label_1.xml @@ -0,0 +1,68 @@ + + + + + + urn:nasa:pds:bundle_1:document + 1.1 + Label 1 + 1.11.0.0 + Product_Collection + + M. W. Evans, M. K. Gordon, M. R. Showalter, and M. S. Tiscareno + 2023 + + This is the first of three identical labels. + + + + + 2024-05-21 + 1.1 + Updated LIDVID of Users Guide to reflect updated version + + + 2020-03-31 + 1.0 + Initial version + + + + + Document + + + + some_collection_1.csv + 2023-07-20T13:46:52 + 3d330c619690d633c8f91a28cffd9756 + + + 0 + PDS DSV 1 + 3 + Carriage-Return Line-Feed + Comma + + 2 + 0 + + Member Status + 1 + ASCII_String + 1 + + + LIDVID_LID + 2 + ASCII_LIDVID_LID + 255 + + + inventory_has_member_product + + + diff --git a/test_files/labels/identical_label_2.xml b/test_files/labels/identical_label_2.xml new file mode 100644 index 0000000..6ddbb6a --- /dev/null +++ b/test_files/labels/identical_label_2.xml @@ -0,0 +1,68 @@ + + + + + + urn:nasa:pds:bundle_2:document + 1.1 + Label 2 + 1.11.0.0 + Product_Collection + + M. W. Evans, M. S. Tiscareno + 2023 + + This is the second of three identical labels. + + + + + 2024-05-21 + 1.1 + Updated LIDVID of Users Guide to reflect updated version + + + 2020-03-31 + 1.0 + Initial version + + + + + Document + + + + some_collection_2.csv + 2023-07-20T13:46:52 + 3d330c619690d633c8f91a28cffd9756 + + + 0 + PDS DSV 1 + 3 + Line-Feed + Comma + + 2 + 0 + + Member Status + 1 + ASCII_String + 1 + + + LIDVID_LID + 2 + ASCII_LIDVID_LID + 255 + + + inventory_has_member_product + + + diff --git a/test_files/labels/identical_label_3.xml b/test_files/labels/identical_label_3.xml new file mode 100644 index 0000000..e49195b --- /dev/null +++ b/test_files/labels/identical_label_3.xml @@ -0,0 +1,68 @@ + + + + + + urn:nasa:pds:bundle_3:document + 1.1 + Label 3 + 1.11.0.0 + Product_Collection + + M. R. Showalter, M. S. Tiscareno + 2023 + + This is the third of three identical labels. + + + + + 2024-05-21 + 1.1 + Updated LIDVID of Users Guide to reflect updated version + + + 2020-03-31 + 1.0 + Initial version + + + + + Document + + + + some_collection_3.csv + 2023-07-20T13:46:52 + 3d330c619690d633c8f91a28cffd9756 + + + 0 + PDS DSV 1 + 3 + Carriage-Return Line-Feed + Comma + + 2 + 0 + + Member Status + 1 + ASCII_String + 1 + + + LIDVID_LID + 2 + ASCII_LIDVID_LID + 255 + + + inventory_has_member_product + + + diff --git a/test_files/samples/identical_elements.txt b/test_files/samples/identical_elements.txt new file mode 100644 index 0000000..910d1fe --- /dev/null +++ b/test_files/samples/identical_elements.txt @@ -0,0 +1,6 @@ +pds:Product_Collection/pds:Identification_Area<1>/pds:logical_identifier<1> +pds:Product_Collection/pds:Identification_Area<1>/pds:title<1> +pds:Product_Collection/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:editor_list<1> +pds:Product_Collection/pds:Identification_Area<1>/pds:Citation_Information<1>/pds:description<1> +pds:Product_Collection/pds:File_Area_Inventory<1>/pds:File<1>/pds:file_name<1> +pds:Product_Collection/pds:File_Area_Inventory<1>/pds:Inventory<1>/pds:record_delimiter<1> diff --git a/tests/test_pds4_create_xml_index.py b/tests/test_pds4_create_xml_index.py index 9daf3fd..9146bcb 100644 --- a/tests/test_pds4_create_xml_index.py +++ b/tests/test_pds4_create_xml_index.py @@ -25,7 +25,7 @@ [ str(test_files_dir), str(labels_dir.name / Path('tester_label_1.xml')), - '--dump-available-elements', + '--dump-available-xpaths', '--elements-file', str(samples_dir / 'element_1.txt'), '--output-file' @@ -37,7 +37,7 @@ [ str(test_files_dir), str(labels_dir.name / Path('tester_label_2.xml')), - '--dump-available-elements', + '--dump-available-xpaths', '--elements-file', str(samples_dir / 'element_2.txt'), '--output-file', @@ -50,7 +50,7 @@ str(test_files_dir), str(labels_dir.name / Path('tester_label_2.xml')), str(labels_dir.name / Path('tester_label_3.xml')), - '--dump-available-elements', + '--dump-available-xpaths', '--elements-file', str(samples_dir / 'element_3.txt'), '--output-file', @@ -62,8 +62,10 @@ 'elements_file_4.txt', [ str(test_files_dir), - str(labels_dir.name / Path('tester_label_*.xml')), - '--dump-available-elements', + str(labels_dir.name / Path('tester_label_1.xml')), + str(labels_dir.name / Path('tester_label_2.xml')), + str(labels_dir.name / Path('tester_label_3.xml')), + '--dump-available-xpaths', '--elements-file', str(samples_dir / 'element_4.txt'), '--output-file', @@ -76,7 +78,7 @@ [ str(test_files_dir), str(labels_dir.name / Path('tester_label_1.xml')), - '--dump-available-elements', + '--dump-available-xpaths', '--simplify-xpaths', '--output-file', ] @@ -86,8 +88,10 @@ 'simplify_xpaths_2.txt', [ str(test_files_dir), - str(labels_dir.name / Path('tester_label_*.xml')), - '--dump-available-elements', + str(labels_dir.name / Path('tester_label_1.xml')), + str(labels_dir.name / Path('tester_label_2.xml')), + str(labels_dir.name / Path('tester_label_3.xml')), + '--dump-available-xpaths', '--simplify-xpaths', '--elements-file', str(samples_dir / 'elements_xpath_simplify_2.txt'), @@ -100,7 +104,7 @@ [ str(test_files_dir), str(labels_dir.name / Path('tester_label_2.xml')), - '--dump-available-elements', + '--dump-available-xpaths', '--simplify-xpaths', '--elements-file', str(samples_dir / 'elements_xpath_simplify_3.txt'), @@ -113,7 +117,7 @@ [ str(test_files_dir), str(labels_dir.name / Path('tester_label_3.xml')), - '--dump-available-elements', + '--dump-available-xpaths', '--simplify-xpaths', '--elements-file', str(samples_dir / 'elements_xpath_simplify_4.txt'), @@ -140,7 +144,9 @@ 'extra_file_info_2.csv', [ str(test_files_dir), - str(labels_dir.name / Path('tester_label_*.xml')), + str(labels_dir.name / Path('tester_label_1.xml')), + str(labels_dir.name / Path('tester_label_2.xml')), + str(labels_dir.name / Path('tester_label_3.xml')), '--elements-file', str(samples_dir / 'element_extra_file_info_2.txt'), '--extra-file-info', @@ -155,7 +161,9 @@ 'extra_file_info_3.csv', [ str(test_files_dir), - str(labels_dir.name / Path('tester_label_*.xml')), + str(labels_dir.name / Path('tester_label_1.xml')), + str(labels_dir.name / Path('tester_label_2.xml')), + str(labels_dir.name / Path('tester_label_3.xml')), '--elements-file', str(samples_dir / 'element_extra_file_info_2.txt'), '--extra-file-info', @@ -176,7 +184,7 @@ [ str(test_files_dir), str(labels_dir.name / Path('tester_label_1.xml')), - '--dump-available-elements', + '--dump-available-xpaths', '--clean-header-field-names', '--output-file', ] @@ -188,7 +196,7 @@ str(test_files_dir), str(labels_dir.name / Path('tester_label_1.xml')), str(labels_dir.name / Path('tester_label_2.xml')), - '--dump-available-elements', + '--dump-available-xpaths', '--elements-file', str(samples_dir / 'elements_clean_header_field_names.txt'), '--clean-header-field-names', @@ -201,7 +209,9 @@ 'sort_by_1.csv', [ str(test_files_dir), - str(labels_dir.name / Path('tester_label_*.xml')), + str(labels_dir.name / Path('tester_label_1.xml')), + str(labels_dir.name / Path('tester_label_2.xml')), + str(labels_dir.name / Path('tester_label_3.xml')), '--elements-file', str(samples_dir / 'elements_clean_header_field_names.txt'), '--sort-by', @@ -214,7 +224,9 @@ 'sort_by_2.csv', [ str(test_files_dir), - str(labels_dir.name / Path('tester_label_*.xml')), + str(labels_dir.name / Path('tester_label_1.xml')), + str(labels_dir.name / Path('tester_label_2.xml')), + str(labels_dir.name / Path('tester_label_3.xml')), '--elements-file', str(samples_dir / 'elements_clean_header_field_names.txt'), '--extra-file-info', @@ -225,6 +237,21 @@ '--output-file', ] ), + + (str(expected_dir / 'identical_labels_success.csv'), + 'identical_labels.csv', + [ + str(test_files_dir), + str(labels_dir.name / Path('identical_label_*.xml')), + '--elements-file', + str(samples_dir / 'identical_elements.txt'), + '--extra-file-info', + 'filename', + '--sort-by', + 'filename', + '--output-file' + ] + ), ] ) def test_success(golden_file, new_file, cmd_line): @@ -259,7 +286,9 @@ def test_success(golden_file, new_file, cmd_line): [ ( str(test_files_dir), - str(labels_dir.name / Path('tester_label_*.xml')), + str(labels_dir.name / Path('tester_label_1.xml')), + str(labels_dir.name / Path('tester_label_2.xml')), + str(labels_dir.name / Path('tester_label_3.xml')), '--elements-file', str(samples_dir / 'element_1.txt'), '--extra-file-info', @@ -277,7 +306,9 @@ def test_success(golden_file, new_file, cmd_line): ), ( str(test_files_dir), # directory path - str(labels_dir.name / Path('tester_label_*.xml')), + str(labels_dir.name / Path('tester_label_1.xml')), + str(labels_dir.name / Path('tester_label_2.xml')), + str(labels_dir.name / Path('tester_label_3.xml')), '--elements-file', str(samples_dir / 'element_empty.txt'), # empty elements file '--output-file', From cb31c90f83bd5b0a2bedf6f63ab34c7bb4fa57bc Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 21 May 2024 17:23:29 -0700 Subject: [PATCH 38/46] Quick check for a typo --- pds4indextools/pds4_create_xml_index.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index 1f2bbca..54572f1 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -657,7 +657,7 @@ def main(cmd_line=None): update_nillable_elements_from_xsd_file(url, nillable_elements_info) filepath = str(file.relative_to(args.directorypath)) - filepath = Path(filepath.replace('\\', '/')) + filepath = Path(filepath.replace('\\\\', '/')) namespaces = root.nsmap namespaces['pds'] = namespaces.pop(None) From 14fd13004325821591a0eb3e848a10ced435a346 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 21 May 2024 17:29:57 -0700 Subject: [PATCH 39/46] Trying another fix for the filepath issue --- pds4indextools/pds4_create_xml_index.py | 3 +-- test_files/expected/extra_file_info_success_1.csv | 2 +- test_files/expected/extra_file_info_success_3.csv | 6 +++--- test_files/expected/sort_by_success_2.csv | 6 +++--- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index 54572f1..32a8506 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -656,8 +656,7 @@ def main(cmd_line=None): for url in xml_urls: update_nillable_elements_from_xsd_file(url, nillable_elements_info) - filepath = str(file.relative_to(args.directorypath)) - filepath = Path(filepath.replace('\\\\', '/')) + filepath = str(file.relative_to(args.directorypath)).replace('\\\\', '/') namespaces = root.nsmap namespaces['pds'] = namespaces.pop(None) diff --git a/test_files/expected/extra_file_info_success_1.csv b/test_files/expected/extra_file_info_success_1.csv index d40644f..f27da08 100644 --- a/test_files/expected/extra_file_info_success_1.csv +++ b/test_files/expected/extra_file_info_success_1.csv @@ -1,2 +1,2 @@ filename,filepath,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:title<1> -tester_label_2.xml,labels/tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope +tester_label_2.xml,'labels/tester_label_2.xml',urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope diff --git a/test_files/expected/extra_file_info_success_3.csv b/test_files/expected/extra_file_info_success_3.csv index 35ab791..9b58385 100644 --- a/test_files/expected/extra_file_info_success_3.csv +++ b/test_files/expected/extra_file_info_success_3.csv @@ -1,4 +1,4 @@ filename,filepath,LID,bundle,bundle_lid,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1> -tester_label_1.xml,labels/tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0 -tester_label_2.xml,labels/tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0 -tester_label_3.xml,labels/tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0 +tester_label_1.xml,'labels/tester_label_1.xml',urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0 +tester_label_2.xml,'labels/tester_label_2.xml',urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0 +tester_label_3.xml,'labels/tester_label_3.xml',urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0 diff --git a/test_files/expected/sort_by_success_2.csv b/test_files/expected/sort_by_success_2.csv index a54b0bd..2d13e72 100644 --- a/test_files/expected/sort_by_success_2.csv +++ b/test_files/expected/sort_by_success_2.csv @@ -1,4 +1,4 @@ bundle_lid,filepath,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1> -urn:nasa:pds:cassini_iss_cruise,labels/tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN -urn:nasa:pds:cassini_iss_saturn,labels/tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN -urn:nasa:pds:uranus_occ_u149_irtf_320cm,labels/tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared +urn:nasa:pds:cassini_iss_cruise,'labels/tester_label_3.xml',urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN +urn:nasa:pds:cassini_iss_saturn,'labels/tester_label_1.xml',urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN +urn:nasa:pds:uranus_occ_u149_irtf_320cm,'labels/tester_label_2.xml',urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared From a6850f237bbd1bbf02d84101d94874e28112d913 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 21 May 2024 17:33:29 -0700 Subject: [PATCH 40/46] Fixing new typos --- test_files/expected/extra_file_info_success_1.csv | 2 +- test_files/expected/extra_file_info_success_3.csv | 6 +++--- test_files/expected/sort_by_success_2.csv | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/test_files/expected/extra_file_info_success_1.csv b/test_files/expected/extra_file_info_success_1.csv index f27da08..d40644f 100644 --- a/test_files/expected/extra_file_info_success_1.csv +++ b/test_files/expected/extra_file_info_success_1.csv @@ -1,2 +1,2 @@ filename,filepath,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:title<1> -tester_label_2.xml,'labels/tester_label_2.xml',urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope +tester_label_2.xml,labels/tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,Calibrated Time Series of the Uranus System Occultation of Star u149 (2MASS 20462044-1838345) Observed from the IRTF 320cm Telescope diff --git a/test_files/expected/extra_file_info_success_3.csv b/test_files/expected/extra_file_info_success_3.csv index 9b58385..35ab791 100644 --- a/test_files/expected/extra_file_info_success_3.csv +++ b/test_files/expected/extra_file_info_success_3.csv @@ -1,4 +1,4 @@ filename,filepath,LID,bundle,bundle_lid,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1> -tester_label_1.xml,'labels/tester_label_1.xml',urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0 -tester_label_2.xml,'labels/tester_label_2.xml',urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0 -tester_label_3.xml,'labels/tester_label_3.xml',urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0 +tester_label_1.xml,labels/tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0 +tester_label_2.xml,labels/tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0 +tester_label_3.xml,labels/tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0 diff --git a/test_files/expected/sort_by_success_2.csv b/test_files/expected/sort_by_success_2.csv index 2d13e72..a54b0bd 100644 --- a/test_files/expected/sort_by_success_2.csv +++ b/test_files/expected/sort_by_success_2.csv @@ -1,4 +1,4 @@ bundle_lid,filepath,pds:Product_Observational/pds:Identification_Area<1>/pds:logical_identifier<1>,pds:Product_Observational/pds:Identification_Area<1>/pds:version_id<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:start_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Time_Coordinates<1>/pds:stop_date_time<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<1>/pds:wavelength_range<1>,pds:Product_Observational/pds:Observation_Area<1>/pds:Primary_Result_Summary<1>/pds:Science_Facets<2>/pds:wavelength_range<1> -urn:nasa:pds:cassini_iss_cruise,'labels/tester_label_3.xml',urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN -urn:nasa:pds:cassini_iss_saturn,'labels/tester_label_1.xml',urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN -urn:nasa:pds:uranus_occ_u149_irtf_320cm,'labels/tester_label_2.xml',urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared +urn:nasa:pds:cassini_iss_cruise,labels/tester_label_3.xml,urn:nasa:pds:cassini_iss_cruise:data_raw:1357539630n,1.0,2001-01-07T06:08:47.793Z,2001-01-07T06:08:48.013Z,Near Infrared,NaN +urn:nasa:pds:cassini_iss_saturn,labels/tester_label_1.xml,urn:nasa:pds:cassini_iss_saturn:data_raw:1455200455n,1.0,NaN,NaN,NaN,NaN +urn:nasa:pds:uranus_occ_u149_irtf_320cm,labels/tester_label_2.xml,urn:nasa:pds:uranus_occ_u149_irtf_320cm:data:2200nm_counts-v-time_occult,1.0,1998-11-06T04:38:18.7028Z,1998-11-06T05:52:29.0559Z,Infrared,Infrared From 7ecb136ecac216ef160efb4a0247b65ff176ca8b Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 21 May 2024 17:44:55 -0700 Subject: [PATCH 41/46] Trying new fix for filepath issue --- pds4indextools/pds4_create_xml_index.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index 32a8506..9f4b766 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -656,7 +656,7 @@ def main(cmd_line=None): for url in xml_urls: update_nillable_elements_from_xsd_file(url, nillable_elements_info) - filepath = str(file.relative_to(args.directorypath)).replace('\\\\', '/') + filepath = str(file.relative_to(args.directorypath)).replace('\\', '/') namespaces = root.nsmap namespaces['pds'] = namespaces.pop(None) From d62288e2b9b662fe07da1883fdeaad89e9cfb0b9 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Wed, 22 May 2024 14:59:59 -0700 Subject: [PATCH 42/46] Fixed numbering --- pds4indextools/pds4_create_xml_index.py | 35 +++++++++++++++++-- .../expected/elements_file_success_2.txt | 8 ++--- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index 9f4b766..3866512 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -93,6 +93,33 @@ def convert_header_to_xpath(root, xpath_find, namespaces): return xpath_final +def correct_duplicates(label_results): + """Correct numbering of XPaths to have correct predicates. + + Some namespaces do not contain predicates, and as a result must be made artificially + unique via injected substrings. This function aids in the reformatting of these + strings so they match the syntax of the renumbering function. Note that this function + does not affect elements or attributes that natively contain the '_num' substring + (cassini:filter_name_1 and cassini:filter_name_2, for example). + + Inputs: + label_results The dictionary of XML results + """ + element_names = [] + for key in list(label_results.keys()): + tag = key.split('/')[-1].split('<')[0] + number = tag.split('_')[-1] + if number.isdigit(): + cropped = tag.replace('_'+number, '') + if any(cropped == x for x in element_names): + key_new = key.replace(('_' +number+'<1>'), + '<1>') + parent = key_new.split('/')[-2].split('<')[0] + key_new = key_new.replace(parent+'<1>', parent+'<'+str(int(number)+1)+'>') + label_results[key_new] = label_results.pop(key) + element_names.append(tag) + + def default_value_for_nil(config, data_type, nil_value): """Find the default value for a nilled element. @@ -118,7 +145,7 @@ def extract_logical_identifier(tree): """Extract the logical_identifier element from an XML tree. Inputs: - tree: The XML tree. + tree The XML tree. Returns: The text content of the logical_identifier element, or None if not found. @@ -139,7 +166,7 @@ def filter_dict_by_glob_patterns(input_dict, glob_patterns, verboseprint): """Filter a dictionary based on a list of glob patterns matching for keys. Inputs: - input_dict: The dictionary to filter. + input_dict The dictionary to filter. glob_patterns: A list of glob patterns to match against dictionary keys. Returns: @@ -694,6 +721,8 @@ def main(cmd_line=None): for old_xpath, new_xpath in xpath_map.items(): label_results[new_xpath] = label_results.pop(old_xpath) + correct_duplicates(label_results) + verboseprint('Now filtering label results according to given element file.') label_results = filter_dict_by_glob_patterns(label_results, elements_to_scrape, verboseprint) @@ -725,6 +754,8 @@ def main(cmd_line=None): value = key label_results[value] = label_results.pop(key) + correct_duplicates(label_results) + lid = extract_logical_identifier(tree) if lid is None: lid = label_results.get('pds:logical_identifier', 'Missing_LID') diff --git a/test_files/expected/elements_file_success_2.txt b/test_files/expected/elements_file_success_2.txt index f927538..71e9443 100644 --- a/test_files/expected/elements_file_success_2.txt +++ b/test_files/expected/elements_file_success_2.txt @@ -1,5 +1,5 @@ pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1> -pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1> -pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1> -pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1> -pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<1>/geom:spice_kernel_file_name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<2>/geom:spice_kernel_file_name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<3>/geom:spice_kernel_file_name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<4>/geom:spice_kernel_file_name<1> +pds:Product_Observational/pds:Observation_Area<1>/pds:Discipline_Area<1>/geom:Geometry<1>/geom:SPICE_Kernel_Files<1>/geom:SPICE_Kernel_Identification<5>/geom:spice_kernel_file_name<1> From fa4f55eb2ec36a7d523b92449b76f798e4f3783d Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Wed, 22 May 2024 15:54:52 -0700 Subject: [PATCH 43/46] Fixing main docstring, made more PEP8 compliant --- pds4indextools/pds4_create_xml_index.py | 55 +++++++++++++++---------- 1 file changed, 33 insertions(+), 22 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index 3866512..b5d750d 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -1,13 +1,16 @@ """ -XML Bundle Scraper - -This script scrapes XML files within specified directories, extracts information from -user-defined XML elements, and generates a CSV index file. The script provides options -for customizing the extraction process, such as specifying XPath headers, limiting -search levels, and selecting elements to scrape. - +PDS4 Indexing Tool + +This script scrapes label files within specified directories, extracts information from +user-defined XPaths/elements, and generates either an index file or a .txt file containing +the XPaths available to the user. The script provides options for customizing the +extraction process, such as: + - Specifying desired content by either limiting the results or requesting additional + file information. + - Sorting the resulting file by a user-specified value. + - Allowing for a user-made configuration file (.ini) for further custom content. Usage: - python xml_bundle_scraper.py + python pds4_create_xml_index.py [--elements-file ELEMENTS_FILE] [--simplify-xpaths] [--output-file OUTPUT_FILE] @@ -16,6 +19,7 @@ [--clean-header-field-names] [--extra-file-info EXTRA_FILE_INFO] [--config-file CONFIG_FILE] + [--dump-available-xpaths] Arguments: directorypath The path to the directory containing the bundle to scrape. @@ -39,6 +43,10 @@ specified separated by spaces. --config-file CONFIG_FILE An optional .ini configuration file for further customization. + --dump-available-xpaths + Create a .txt file containing all available XPath headers for + given label file(s). Can be modified and used as a file for + --elements-file Example: python3 pds4_create_xml_index.py "glob_path1" "glob_path2" @@ -112,8 +120,7 @@ def correct_duplicates(label_results): if number.isdigit(): cropped = tag.replace('_'+number, '') if any(cropped == x for x in element_names): - key_new = key.replace(('_' +number+'<1>'), - '<1>') + key_new = key.replace(('_' +number+'<1>'),'<1>') parent = key_new.split('/')[-2].split('<')[0] key_new = key_new.replace(parent+'<1>', parent+'<'+str(int(number)+1)+'>') label_results[key_new] = label_results.pop(key) @@ -154,7 +161,8 @@ def extract_logical_identifier(tree): namespaces = {'pds': 'http://pds.nasa.gov/pds4/pds/v1'} # Find logical_identifier element within Identification_Area - logical_identifier = tree.find('.//pds:Identification_Area/pds:logical_identifier', namespaces=namespaces) + logical_identifier = tree.find( + './/pds:Identification_Area/pds:logical_identifier', namespaces=namespaces) if logical_identifier is not None: return logical_identifier.text.strip() @@ -186,7 +194,7 @@ def filter_dict_by_glob_patterns(input_dict, glob_patterns, verboseprint): verboseprint(f'Adding elements according to: {pattern}') for key, value in input_dict.items(): if fnmatch.fnmatch(key, pattern): - filtered_dict[key] = value + filtered_dict[key] = value else: verboseprint(f'Removing elements according to: {pattern}') pattern = pattern.replace('!', '') @@ -388,7 +396,7 @@ def split_xpath_prefix_and_num(s): # increasing starting at 1. We also add a special entry for the empty # suffix when there is no number. unique_nums = sorted(list(set(x.num for x in prefix_group_list - if x.num is not None))) + if x.num is not None))) renumber_map = {x: f'<{i+1}>' for i, x in enumerate(unique_nums)} renumber_map[None] = '' @@ -493,7 +501,7 @@ def traverse_and_store(element, tree, results_dict, label The name of the label file. """ store_element_text(element, tree, results_dict, - nillable_elements_info, config, label) + nillable_elements_info, config, label) for child in element: traverse_and_store(child, tree, results_dict, nillable_elements_info, config, label) @@ -507,6 +515,7 @@ def download_xsd_file(xsd_file): print(f'The dictionary file {xsd_file} could not be loaded.') sys.exit(1) + def update_nillable_elements_from_xsd_file(xsd_file, nillable_elements_info): """Store all nillable elements and their data types in a dictionary. @@ -590,8 +599,8 @@ def write_results_to_csv(results_list, args, output_csv_path): def main(cmd_line=None): parser = argparse.ArgumentParser() parser.add_argument('directorypath', type=str, - help='The path to the directory containing the bundleset, bundle, ' - 'or collection you wish to scrape') + help='The path to the directory containing the bundleset, ' + 'bundle, or collection you wish to scrape') parser.add_argument('pattern', type=str, nargs='+', help='The glob pattern(s) for the files you wish to index. They ' @@ -723,8 +732,10 @@ def main(cmd_line=None): correct_duplicates(label_results) - verboseprint('Now filtering label results according to given element file.') - label_results = filter_dict_by_glob_patterns(label_results, elements_to_scrape, verboseprint) + verboseprint( + 'Now filtering label results according to given element file.') + label_results = filter_dict_by_glob_patterns( + label_results, elements_to_scrape, verboseprint) if args.simplify_xpaths: verboseprint('Simplifying XPath headers.') @@ -766,10 +777,10 @@ def main(cmd_line=None): extras = {'LID': lid, 'filepath': filepath, 'filename': file.name, 'bundle': bundle, 'bundle_lid': bundle_lid} if args.extra_file_info: - verboseprint( '--extra-file-info requested ' + verboseprint('--extra-file-info requested ' f'for the following: {args.extra_file_info}') label_results = {**{ele: extras[ele] for ele in args.extra_file_info}, - **label_results} + **label_results} result_dict = {'Results': label_results} all_results.append(result_dict) @@ -779,7 +790,6 @@ def main(cmd_line=None): else: output_path = args.directorypath / Path('index_file.csv') - if args.dump_available_xpaths: verboseprint(f'XPaths file generated at {output_path}') xpaths = [] @@ -799,7 +809,8 @@ def main(cmd_line=None): with open(output_path, 'w') as file: for item in xpaths: if args.clean_header_field_names: - verboseprint('--clean-header-field-names chosen. Headers reformatted.') + verboseprint( + '--clean-header-field-names chosen. Headers reformatted.') item = item.replace( ':', '_').replace('/', '__').replace('<', '_').replace('>', '') file.write("%s\n" % item) From 0588a4191152427b30e4bb5553c8353ac5a032ed Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Tue, 4 Jun 2024 14:31:12 -0700 Subject: [PATCH 44/46] Fixed docstrings to be in Google format --- pds4indextools/pds4_create_xml_index.py | 193 +++++++++++++----------- pds4indextools/values.yaml | 30 ++-- 2 files changed, 127 insertions(+), 96 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index b5d750d..f545dac 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -9,6 +9,7 @@ file information. - Sorting the resulting file by a user-specified value. - Allowing for a user-made configuration file (.ini) for further custom content. + Usage: python pds4_create_xml_index.py [--elements-file ELEMENTS_FILE] @@ -49,8 +50,8 @@ --elements-file Example: -python3 pds4_create_xml_index.py "glob_path1" "glob_path2" ---output_file --elements-file sample_elements.txt --verbose + python3 pds4_create_xml_index.py "glob_path1" "glob_path2" + --output_file --elements-file sample_elements.txt --verbose """ import argparse @@ -71,20 +72,21 @@ def convert_header_to_xpath(root, xpath_find, namespaces): - """Replace hierarchal components of XPath with attribute names and namespaces. + """ + Replace hierarchical components of XPath with attribute names and namespaces. While the XPaths are accurate to the hierarchy of the elements referenced, they provide no information on their own without the attributed label file for reference. This function replaces the asterisks with the respective names of the elements and attributes they represent. - Inputs: - root The root element of the XML document. - xpath_find Original XML header path. - namespaces Dictionary of XML namespace mappings. + Args: + root (Element): The root element of the XML document. + xpath_find (str): Original XML header path. + namespaces (dict): Dictionary of XML namespace mappings. Returns: - Converted XPath expression. + str: Converted XPath expression. """ sections = xpath_find.split('/') xpath_final = '' @@ -102,7 +104,8 @@ def convert_header_to_xpath(root, xpath_find, namespaces): def correct_duplicates(label_results): - """Correct numbering of XPaths to have correct predicates. + """ + Correct numbering of XPaths to have correct predicates. Some namespaces do not contain predicates, and as a result must be made artificially unique via injected substrings. This function aids in the reformatting of these @@ -110,8 +113,8 @@ def correct_duplicates(label_results): does not affect elements or attributes that natively contain the '_num' substring (cassini:filter_name_1 and cassini:filter_name_2, for example). - Inputs: - label_results The dictionary of XML results + Args: + label_results (dict): The dictionary of XML results. """ element_names = [] for key in list(label_results.keys()): @@ -128,15 +131,16 @@ def correct_duplicates(label_results): def default_value_for_nil(config, data_type, nil_value): - """Find the default value for a nilled element. + """ + Find the default value for a nilled element. - Inputs: - config The configuration data. - data_type The attribute describing the data type of the element. - nil_value The associated value for nilReason. + Args: + config (dict): The configuration data. + data_type (str): The attribute describing the data type of the element. + nil_value (str): The associated value for nilReason. Returns: - Default replacement value of correct data type. + Any: Default replacement value of correct data type. """ if data_type == 'pds:ASCII_Integer': default = config[data_type].getint(nil_value) @@ -149,13 +153,15 @@ def default_value_for_nil(config, data_type, nil_value): def extract_logical_identifier(tree): - """Extract the logical_identifier element from an XML tree. + """ + Extract the logical_identifier element from an XML tree. - Inputs: - tree The XML tree. + Args: + tree (ElementTree.Element): The XML tree. Returns: - The text content of the logical_identifier element, or None if not found. + str or None: The text content of the logical_identifier element, + or None if not found. """ # Define namespace mapping namespaces = {'pds': 'http://pds.nasa.gov/pds4/pds/v1'} @@ -171,14 +177,15 @@ def extract_logical_identifier(tree): def filter_dict_by_glob_patterns(input_dict, glob_patterns, verboseprint): - """Filter a dictionary based on a list of glob patterns matching for keys. + """ + Filter a dictionary based on a list of glob patterns matching for keys. - Inputs: - input_dict The dictionary to filter. - glob_patterns: A list of glob patterns to match against dictionary keys. + Args: + input_dict (dict): The dictionary to filter. + glob_patterns (list): A list of glob patterns to match against dictionary keys. Returns: - Filtered dictionary with desired contents + dict: Filtered dictionary with desired contents. """ filtered_dict = {} @@ -206,17 +213,19 @@ def filter_dict_by_glob_patterns(input_dict, glob_patterns, verboseprint): def load_config_file(specified_config_file): - """Create a config object from a given configuration file. + """ + Create a config object from a given configuration file. This will always load in the default configuration file 'pds4indextools.ini'. In the event a specified configuration file is given, the contents of that file will override what is in the default configuration file. - Inputs: - specified_config_file Name of or path to a specified configuration file. + Args: + specified_config_file (str, optional): Name of or path to a specified + configuration file. Returns: - A ConfigParser object. + configparser.ConfigParser: A ConfigParser object. """ config = configparser.ConfigParser() module_dir = Path(__file__).resolve().parent @@ -240,13 +249,14 @@ def load_config_file(specified_config_file): def process_schema_location(file_path): - """Process schema location from an XML file. + """ + Process schema location from an XML file. - Inputs: - file_path Path to the XML file. + Args: + file_path (str): Path to the XML file. Returns: - List of XSD URLs extracted from the schema location. + list: List of XSD URLs extracted from the schema location. """ # Load and parse the XML file try: @@ -267,19 +277,20 @@ def process_schema_location(file_path): def process_headers(label_results, key, root, namespaces, prefixes): - """Process headers to have more readable contents. + """ + Process headers to have more readable contents. Processes XPath headers by converting parts of the XPath into element tags, replacing namespaces with prefixes, and updating the label_results dictionary. If a duplicate XPath is encountered, it appends an underscore and a number to make the XPath unique. - Inputs: - label_results A dictionary containing XML data to be processed. - key The key representing the XML tag to be processed. - root The root element of the XML tree. - namespaces A dictionary containing XML namespace mappings. - prefixes A dictionary containing XML namespace prefixes. + Args: + label_results (dict): A dictionary containing XML data to be processed. + key (str): The key representing the XML tag to be processed. + root (Element): The root element of the XML tree. + namespaces (dict): A dictionary containing XML namespace mappings. + prefixes (dict): A dictionary containing XML namespace prefixes. """ key_new = convert_header_to_xpath(root, key, namespaces) for namespace in prefixes.keys(): @@ -299,10 +310,11 @@ def process_headers(label_results, key, root, namespaces, prefixes): def renumber_xpaths(xpaths): - """Renumber a list of XPaths to be sequential at each level. + """ + Renumber a list of XPaths to be sequential at each level. lxml appends a unique ID in [] after each tag based on its physical position - in the XML hierarcy. For example: + in the XML hierarchy. For example: /pds:Product_Observational/pds:Observation_Area[2]/ pds:Observing_System[4]/pds:name[1] @@ -318,14 +330,14 @@ def renumber_xpaths(xpaths): occurrences must be next to each other with no other tags in between. For example, these are not permitted: - /a[2]/b[1] - /a[1]/b[1] + /a[2]/b[1] + /a[1]/b[1] - or: + or: - /a[1]/b[1] - /c[1] - /a[3]/b[1] + /a[1]/b[1] + /c[1] + /a[3]/b[1] Renumbering example: @@ -347,18 +359,16 @@ def renumber_xpaths(xpaths): /b[2]/c[2] /b[3]/c[1] - Input: - - xpaths The list of XPaths or XPath fragments. + Args: + xpaths (list): The list of XPaths or XPath fragments. Returns: - - A dictionary containing a mapping from the original XPaths to the - renumbered XPaths. + dict: A dictionary containing a mapping from the original XPaths to the renumbered XPaths. """ def split_xpath_prefix_and_num(s): - """Convert an XPath into a SplitXPath namedtuple. + """ + Convert an XPath into a SplitXPath namedtuple. Each XPath is of the form: or @@ -370,6 +380,12 @@ def split_xpath_prefix_and_num(s): If there is no , None is used. If there is no [], None is used. + + Args: + xpath (str): The XPath string to convert. + + Returns: + SplitXPath: A namedtuple containing the parent, child, and num elements of the XPath. """ parent, child, *_ = s.split('/', 1) + [None] try: @@ -432,13 +448,14 @@ def split_xpath_prefix_and_num(s): def split_into_elements(xpath): - """Extract elements from an XPath in the order they appear. + """ + Extract elements from an XPath in the order they appear. - Inputs: - xpath The XPath of a scraped element + Args: + xpath (str): The XPath of a scraped element. Returns: - The tuple of elements the XPath is composed of. + tuple: The tuple of elements the XPath is composed of. """ elements = [] parts = xpath.split('/') @@ -452,15 +469,16 @@ def split_into_elements(xpath): def store_element_text(element, tree, results_dict, nillable_elements_info, config, label): - """Store text content of an XML element in a results dictionary. - - Inputs: - element The XML element. - tree The XML tree. - results_dict Dictionary to store results. - nillable_elements_info A dictionary containing nillable element information. - config The configuration data. - label The name of the label file. + """ + Store text content of an XML element in a results dictionary. + + Args: + element (Element): The XML element. + tree (ElementTree): The XML tree. + results_dict (dict): Dictionary to store results. + nillable_elements_info (dict): A dictionary containing nillable element information. + config (dict): The configuration data. + label (str): The name of the label file. """ if element.text and element.text.strip(): xpath = tree.getpath(element) @@ -490,15 +508,16 @@ def store_element_text(element, tree, results_dict, nillable_elements_info, conf def traverse_and_store(element, tree, results_dict, nillable_elements_info, config, label): - """Traverse an XML tree and store text content of specified elements in a dictionary. - - Inputs: - element The current XML element. - tree The XML tree. - results_dict Dictionary to store results. - nillable_elements_info A dictionary containing nillable element information. - config The configuration data. - label The name of the label file. + """ + Traverse an XML tree and store text content of specified elements in a dictionary. + + Args: + element (Element): The current XML element. + tree (ElementTree): The XML tree. + results_dict (dict): Dictionary to store results. + nillable_elements_info (dict): A dictionary containing nillable element information. + config (dict): The configuration data. + label (str): The name of the label file. """ store_element_text(element, tree, results_dict, nillable_elements_info, config, label) @@ -517,11 +536,12 @@ def download_xsd_file(xsd_file): def update_nillable_elements_from_xsd_file(xsd_file, nillable_elements_info): - """Store all nillable elements and their data types in a dictionary. + """ + Store all nillable elements and their data types in a dictionary. - Inputs: - xsd file An XML Schema Definition file. - nillable_elements_info A dictionary containing nillable element information. + Args: + xsd_file (str): An XML Schema Definition file. + nillable_elements_info (dict): A dictionary containing nillable element information. """ tree = download_xsd_file(xsd_file) namespace = {'xs': 'http://www.w3.org/2001/XMLSchema'} @@ -569,11 +589,12 @@ def update_nillable_elements_from_xsd_file(xsd_file, nillable_elements_info): def write_results_to_csv(results_list, args, output_csv_path): - """Write results from a list of dictionaries to a CSV file. + """ + Write results from a list of dictionaries to a CSV file. - Inputs: - results_list List of dictionaries containing results. - output_csv_path The output directory and filename. + Args: + results_list (list): List of dictionaries containing results. + output_csv_path (str): The output directory and filename. """ rows = [] for result_dict in results_list: diff --git a/pds4indextools/values.yaml b/pds4indextools/values.yaml index 529e42b..b218a43 100644 --- a/pds4indextools/values.yaml +++ b/pds4indextools/values.yaml @@ -1,10 +1,20 @@ -{ - "/pds:Product_Ancillary/pds:Identification_Area[1]/pds:version_id[1]": "1.0", - "/pds:Product_Ancillary/pds:Identification_Area[1]/pds:title[1]": "Index file", - "/pds:Product_Ancillary/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:author_list[1]": "Simpson, Emilie", - "/pds:Product_Ancillary/pds:Identification_Area[1]/pds:Citation_Information[1]/pds:editor_list[1]": "Simpson, Emilie", - "/pds:Product_Ancillary/pds:Identification_Area[1]/pds:Modification_History[1]/pds:Modification_Detail/pds:modification_date[1]": "2024-05-01T12:59:60", - "/pds:Product_Ancillary/pds:Identification_Area[1]/pds:Modification_History[1]/pds:Modification_Detail/pds:version_id[1]": "1.0", - "/pds:Product_Ancillary/pds:Identification_Area[1]/pds:Modification_History[1]/pds:Modification_Detail/pds:description[1]": "Initial version" - -} \ No newline at end of file +{'version_id': '1.1', +'title': 'Tested Index File', +'Citation_Information': {}, +'Modification_Detail': {}, +'Internal_Reference': {}, +'External_Reference': {}, +'Source_Product_Internal': {}, +'Source_Product_External': {}, + + + +} + + + + + + + + From 1d68a86f6cf503b8ae95a8806ec95f4e7455e4cb Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Wed, 12 Jun 2024 09:46:19 -0700 Subject: [PATCH 45/46] Fixed minor typo --- pds4indextools/pds4_create_xml_index.py | 39 +++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index f545dac..3df58c4 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -21,6 +21,7 @@ [--extra-file-info EXTRA_FILE_INFO] [--config-file CONFIG_FILE] [--dump-available-xpaths] + [--fixed-width] Arguments: directorypath The path to the directory containing the bundle to scrape. @@ -48,6 +49,7 @@ Create a .txt file containing all available XPath headers for given label file(s). Can be modified and used as a file for --elements-file + --fixed-width Create a fixed-width index file. Example: python3 pds4_create_xml_index.py "glob_path1" "glob_path2" @@ -65,6 +67,7 @@ from pathlib import Path import requests import sys +import tabulate SplitXPath = namedtuple('SplitXPath', @@ -524,6 +527,11 @@ def traverse_and_store(element, tree, results_dict, for child in element: traverse_and_store(child, tree, results_dict, nillable_elements_info, config, label) + + +def tabulate_dataframe(dataframe, filepath): + content = tabulate(dataframe.values.tolist(), list(dataframe.columns), tablefmt="plain") + open(filepath, "w").write(content) @functools.lru_cache(maxsize=None) @@ -596,6 +604,26 @@ def write_results_to_csv(results_list, args, output_csv_path): results_list (list): List of dictionaries containing results. output_csv_path (str): The output directory and filename. """ + + def pad_column_values_and_headers(df): + col_widths = {} + + # Calculate max width for each column based on header and values + for col in df.columns: + max_width = max(df[col].astype(str).apply(len).max(), len(col)) + col_widths[col] = max_width + + # Create a new DataFrame with padded values + padded_df = df.copy() + for col in df.columns: + padded_df[col] = df[col].astype(str).apply(lambda x: x.ljust(col_widths[col])) + + # Pad headers + padded_headers = {col: col.ljust(col_widths[col]) for col in df.columns} + padded_df = padded_df.rename(columns=padded_headers) + + return padded_df + rows = [] for result_dict in results_list: rows.append(result_dict['Results']) @@ -613,8 +641,13 @@ def write_results_to_csv(results_list, args, output_csv_path): if args.clean_header_field_names: df.rename(columns=lambda x: x.replace( ':', '_').replace('/', '__').replace('<', '_').replace('>', ''), inplace=True) + + if args.fixed_width: + padded_df = pad_column_values_and_headers(df) + padded_df.to_csv(output_csv_path, index=False, na_rep='NaN') - df.to_csv(output_csv_path, index=False, na_rep='NaN') + else: + df.to_csv(output_csv_path, index=False, na_rep='NaN') def main(cmd_line=None): @@ -659,12 +692,14 @@ def main(cmd_line=None): '"bundle_lid", and "bundle". If using multiple, separate ' 'with spaces.') parser.add_argument('--config-file', type=str, - help='Read a user-specified configuration file.. File must be a ' + help='Read a user-specified configuration file. File must be a ' '.ini file.') parser.add_argument('--dump-available-xpaths', action='store_true', help='Give a .txt file of all xpaths within given label ' 'file(s). This file can be used as a base file for ' '--elements-file.') + parser.add_argument('--fixed-width', action='store_true', + help='Create an index file that is fixed-width.') if cmd_line is None: args = parser.parse_args() From e3bcc15a4d9e53d8fd2dc1b17df8c914f96fde44 Mon Sep 17 00:00:00 2001 From: Emilie Simpson Date: Wed, 12 Jun 2024 09:49:24 -0700 Subject: [PATCH 46/46] Fixxing error --- pds4indextools/pds4_create_xml_index.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pds4indextools/pds4_create_xml_index.py b/pds4indextools/pds4_create_xml_index.py index 3df58c4..1c5f96d 100644 --- a/pds4indextools/pds4_create_xml_index.py +++ b/pds4indextools/pds4_create_xml_index.py @@ -67,7 +67,6 @@ from pathlib import Path import requests import sys -import tabulate SplitXPath = namedtuple('SplitXPath', @@ -527,11 +526,6 @@ def traverse_and_store(element, tree, results_dict, for child in element: traverse_and_store(child, tree, results_dict, nillable_elements_info, config, label) - - -def tabulate_dataframe(dataframe, filepath): - content = tabulate(dataframe.values.tolist(), list(dataframe.columns), tablefmt="plain") - open(filepath, "w").write(content) @functools.lru_cache(maxsize=None)