Welcome to pdstable’s documentation!

Introduction

pdstable contains a class, PdsTable, that can read PDS3 or PDS4 labels and their associated tables.

pdstable is a product of the PDS Ring-Moon Systems Node.

Installation

The pdstable module is available via the rms-pdstable package on PyPI and can be installed with:

pip install rms-pdstable

Getting Started

The pdstable module provides the PdsTable class, which can be used to read both PDS3 (.lbl) and PDS4 (.lblx or .xml) labels and their associated tables. A PdsTable object can be created easily:

from pdstable import PdsTable
p3 = PdsTable('label_filename.lbl')  # PDS3 label and table
p4 = PdsTable('label_filename.xml')  # PDS4 label and table

Once created, the PdsTable object has properties that can be used to access the contents of the table. Columns of values are represented by NumPy arrays.

rows = p3.rows  # The number of rows
columns = p3.columns # The number of columns
col_vals = p3.get_column("FILE_SPEC")  # All values in the FILE_SPEC column
col_mask = p3.get_column_mask("FILE_SPEC")  # The mask of invalid values

The entire table can be returned as a series of dictionaries, one per row. The dictionary keys are the names of the columns:

as_dicts = p3.dicts_by_row()

PDS3 labels can only point to a single table. However, PDS4 labels can point to multiple tables. If multiple tables are present in the label, you must specify which table you want to read. This can be done using an integer index or specifying a filename or regular expression:

p4 = PdsTable('multi_table_label.xml', table_file=3)  # Load the 3rd table
p4 = PdsTable('multi_table_label.xml', table_file='.*summary_index.*')

A wide variety of other features are available, many of which are designed to increase performance. These include:

  • Specifying a subset of columns to parse.

  • Reading only a subset of rows.

  • Using a faster but less rigorous label parser for PDS3 labels.

  • Searching for rows with a specific volume or bundle name and/or file specification.

Full details can be found in the module documentation.

Contributing

Information on contributing to this package can be found in the Contributing Guide.

Licensing

This code is licensed under the Apache License v2.0.

Indices and tables