planetarypy


Nameplanetarypy JSON
Version 0.32.0 PyPI version JSON
download
home_pagehttps://github.com/michaelaye/nbplanetary
SummaryPython Tools for Planetary Science
upload_time2024-05-07 15:48:43
maintainerNone
docs_urlNone
authorMichael Aye
requires_python>=3.9
licenseMIT License
keywords planetary science data analysis
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            PlanetaryPy
================

<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

# PlanetaryPy

> Beta release: This will become (part of) the core package of the
> [PlanetaryPy](https://planetarypy.org/) organisation.

Potential logo:![image.png](images/plp_logo_candidate.png)

## Install

``` bash
pip install planetarypy
```

This will pull in these other dependencies and their dependencies:

`tomlkit pandas pvl numpy python-dateutil tqdm lxml yarl hirise-tools kalasiris`

## Suggested standard abbreviations:

- Inside these docs the package will be called `PLPY` for brevity.
- A standard Python import could be: `plp` or `plpy`
  - because the last `p` in `plp` can be pronounced out, we consider
    these equivalent for human conversation and pronounce these
    “plippy”.

## General scope

First and foremost this package should provide support in working with
planetary science data.

With `working` we mean:

- locating
- retrieving
- reading
- further processing

of data.

### Locating

This library manages, via its `PDS tools`, multiple PDS3 index files per
instrument that can be used for identifying data of interest. These
index files are automatically downloaded and converted to the very
performant (and cloud-ready)
[parquet](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_parquet.html)
file format. \> Parquet is able to store advanced datatypes like
nan-capable integer and full datetime objects, as opposed to HDF5.

### Retrieving

The interface to getting data is via a path-retrieving function based on
a PDS product-id. If that product-id is available locally, the path will
be returned. If it is not, it will previously be downloaded, stored in a
systematic fashion organized by mission and instrument, and then the
local path will be returned.

### Reading

For now, the library only returns the path to the object and the user
needs to sort out the reading process. A recently funded NASA project
`Planetary Data Reader` will be integrated here, so that basic reading
into memory can be provided.

As such, we anticipate two classes of reading support: 1. basic reading
into numpy and/or xarray 1. added reader functionality like basic plots
and basic geospatial processing, as supported by interested parties

There will exist larger other packages that focus on working with a
given instrument’s data, in which case that package could become an
affiliated package with the `planetarypy` GitHub organization, if so
desired.

### Further processing

In the future, additional frequently used procedures will be added to
this library, e.g. \* frequently used GDAL/rasterio procedures \*
frequently used SPICE operations \* like surface illumination on a given
body

## PDS tools

Look at the `Apps` docs to see what `pds.apps` exist for easily getting
PDS indexes. The `find_index` app is specifically useful when you don’t
know what index files exist.

So far, the following indexes are supported (but not necessarily all
tested within PLPY):

- Cassini
  - ISS (all)
  - UVIS (all)
- MRO
  - CTX EDR
  - HiRISE
    - EDR, RDR, DTM
      - EDR index has a bug (as delivered by the team, reported), where
        I need to activate an existing fix for it.
- LRO
  - Diviner (DLRE)
    - EDR, RDR
  - LOLA
    - EDR, RDR

### More indexes

More indexes of other instruments can be easily added by following the
existing structure of what has been copied into your config at
`~/.planetarypy_config.toml`.

Please consider submitting a pull request for adding further PDS index
files into the config file at its source:
https://github.com/michaelaye/nbplanetary/blob/master/planetarypy/data/planetarypy_config.toml

## Utils

Find something in `Utils` for working with NASA timestamps and a well
working URL download function
[`url_retrieve`](https://michaelaye.github.io/planetarypy/api/utils.html#url_retrieve),
among other stuff.

## Experiment/Instrument Specific

So far, `planetarypy` supports CTX EDR and HiRISE RGB.NOMAP data. Look
at the
[`CTX`](https://michaelaye.github.io/planetarypy/api/ctx.html#ctx) and
`HiRISE` pages for descriptions of classes for working with these data.

## Bug reports

Please submit bug reports at
https://github.com/michaelaye/nbplanetary/issues

## How to use

### Indexes

See [PDS apps](api/02c_pds.apps.ipynb) for more details.

``` python
from planetarypy.pds.apps import get_index
```

``` python
ctrindex = get_index("mro.ctx", "edr", refresh=False)
ctrindex.sample(5, random_state=42)  # setting random_state to always get same files for docs
```

<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>VOLUME_ID</th>
      <th>FILE_SPECIFICATION_NAME</th>
      <th>ORIGINAL_PRODUCT_ID</th>
      <th>PRODUCT_ID</th>
      <th>IMAGE_TIME</th>
      <th>INSTRUMENT_ID</th>
      <th>INSTRUMENT_MODE_ID</th>
      <th>LINE_SAMPLES</th>
      <th>LINES</th>
      <th>SPATIAL_SUMMING</th>
      <th>...</th>
      <th>SUB_SOLAR_LATITUDE</th>
      <th>SUB_SPACECRAFT_LONGITUDE</th>
      <th>SUB_SPACECRAFT_LATITUDE</th>
      <th>SOLAR_DISTANCE</th>
      <th>SOLAR_LONGITUDE</th>
      <th>LOCAL_TIME</th>
      <th>IMAGE_SKEW_ANGLE</th>
      <th>RATIONALE_DESC</th>
      <th>DATA_QUALITY_DESC</th>
      <th>ORBIT_NUMBER</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>86101</th>
      <td>MROX_2757</td>
      <td>DATA/J07_047671_1256_XN_54S338W.IMG</td>
      <td>4A_04_10F0036A00</td>
      <td>J07_047671_1256_XN_54S338W</td>
      <td>2016-09-27 00:24:54.682</td>
      <td>CTX</td>
      <td>NIFL</td>
      <td>2528</td>
      <td>8192</td>
      <td>1</td>
      <td>...</td>
      <td>-19.41</td>
      <td>338.09</td>
      <td>-54.43</td>
      <td>207762612.4</td>
      <td>230.58</td>
      <td>15.48</td>
      <td>90.1</td>
      <td>Crater in Noachis Terra</td>
      <td>OK</td>
      <td>47671</td>
    </tr>
    <tr>
      <th>54420</th>
      <td>MROX_1819</td>
      <td>DATA/D10_031170_1808_XN_00N221W.IMG</td>
      <td>4A_04_109C017D00</td>
      <td>D10_031170_1808_XN_00N221W</td>
      <td>2013-03-21 06:58:09.892</td>
      <td>CTX</td>
      <td>NIFL</td>
      <td>5056</td>
      <td>7168</td>
      <td>1</td>
      <td>...</td>
      <td>-24.39</td>
      <td>221.52</td>
      <td>0.88</td>
      <td>209925149.5</td>
      <td>286.15</td>
      <td>14.49</td>
      <td>90.1</td>
      <td>Ride-along with HiRISE</td>
      <td>OK</td>
      <td>31170</td>
    </tr>
    <tr>
      <th>71053</th>
      <td>MROX_2331</td>
      <td>DATA/F10_039530_1470_XI_33S203W.IMG</td>
      <td>4A_04_10C9000F00</td>
      <td>F10_039530_1470_XI_33S203W</td>
      <td>2015-01-01 16:20:01.840</td>
      <td>CTX</td>
      <td>ITL</td>
      <td>5056</td>
      <td>52224</td>
      <td>1</td>
      <td>...</td>
      <td>-25.3</td>
      <td>203.96</td>
      <td>-33.12</td>
      <td>207070298.2</td>
      <td>263.93</td>
      <td>15.2</td>
      <td>90.4</td>
      <td>Terrain in Terra Cimmeria</td>
      <td>OK</td>
      <td>39530</td>
    </tr>
    <tr>
      <th>51385</th>
      <td>MROX_1742</td>
      <td>DATA/D04_028919_2026_XN_22N327W.IMG</td>
      <td>4A_04_109002A800</td>
      <td>D04_028919_2026_XN_22N327W</td>
      <td>2012-09-26 21:17:00.483</td>
      <td>CTX</td>
      <td>NIFL</td>
      <td>5056</td>
      <td>6144</td>
      <td>1</td>
      <td>...</td>
      <td>0.67</td>
      <td>327.06</td>
      <td>22.78</td>
      <td>219814412.3</td>
      <td>178.44</td>
      <td>15.53</td>
      <td>90.1</td>
      <td>Ride-along with HiRISE</td>
      <td>OK</td>
      <td>28919</td>
    </tr>
    <tr>
      <th>51923</th>
      <td>MROX_1757</td>
      <td>DATA/D05_029283_1524_XN_27S180W.IMG</td>
      <td>4A_04_1092020B00</td>
      <td>D05_029283_1524_XN_27S180W</td>
      <td>2012-10-25 05:44:21.786</td>
      <td>CTX</td>
      <td>NIFL</td>
      <td>5056</td>
      <td>9216</td>
      <td>1</td>
      <td>...</td>
      <td>-6.28</td>
      <td>178.36</td>
      <td>-27.56</td>
      <td>214830233.7</td>
      <td>194.72</td>
      <td>15.57</td>
      <td>90.1</td>
      <td>Ride-along with HiRISE</td>
      <td>OK</td>
      <td>29283</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 51 columns</p>
</div>

``` python
hirise_rdr = get_index("mro.hirise", "rdr")
hirise_rdr.sample(5, random_state=42)
```

<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>VOLUME_ID</th>
      <th>FILE_NAME_SPECIFICATION</th>
      <th>INSTRUMENT_HOST_ID</th>
      <th>INSTRUMENT_ID</th>
      <th>OBSERVATION_ID</th>
      <th>PRODUCT_ID</th>
      <th>PRODUCT_VERSION_ID</th>
      <th>TARGET_NAME</th>
      <th>ORBIT_NUMBER</th>
      <th>MISSION_PHASE_NAME</th>
      <th>...</th>
      <th>LINE_PROJECTION_OFFSET</th>
      <th>SAMPLE_PROJECTION_OFFSET</th>
      <th>CORNER1_LATITUDE</th>
      <th>CORNER1_LONGITUDE</th>
      <th>CORNER2_LATITUDE</th>
      <th>CORNER2_LONGITUDE</th>
      <th>CORNER3_LATITUDE</th>
      <th>CORNER3_LONGITUDE</th>
      <th>CORNER4_LATITUDE</th>
      <th>CORNER4_LONGITUDE</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>144822</th>
      <td>MROHR_0001</td>
      <td>RDR/ESP/ORB_074100_074199/ESP_074107_1410/ESP_...</td>
      <td>MRO</td>
      <td>HIRISE</td>
      <td>ESP_074107_1410</td>
      <td>ESP_074107_1410_COLOR</td>
      <td>1</td>
      <td>MARS</td>
      <td>74107</td>
      <td>Extended Science Phase</td>
      <td>...</td>
      <td>-4568562.5</td>
      <td>2009279.5</td>
      <td>-38.7446</td>
      <td>159.311</td>
      <td>-38.7465</td>
      <td>159.287</td>
      <td>-38.614</td>
      <td>159.269</td>
      <td>-38.6121</td>
      <td>159.293</td>
    </tr>
    <tr>
      <th>22518</th>
      <td>MROHR_0001</td>
      <td>RDR/ESP/ORB_014000_014099/ESP_014080_1040/ESP_...</td>
      <td>MRO</td>
      <td>HIRISE</td>
      <td>ESP_014080_1040</td>
      <td>ESP_014080_1040_RED</td>
      <td>1</td>
      <td>MARS</td>
      <td>14080</td>
      <td>Extended Science Phase</td>
      <td>...</td>
      <td>-3193960.0</td>
      <td>-845180.0</td>
      <td>-76.0185</td>
      <td>165.215</td>
      <td>-76.0315</td>
      <td>164.858</td>
      <td>-75.6958</td>
      <td>164.658</td>
      <td>-75.6831</td>
      <td>165.005</td>
    </tr>
    <tr>
      <th>86634</th>
      <td>MROHR_0001</td>
      <td>RDR/ESP/ORB_046300_046399/ESP_046395_1730/ESP_...</td>
      <td>MRO</td>
      <td>HIRISE</td>
      <td>ESP_046395_1730</td>
      <td>ESP_046395_1730_COLOR</td>
      <td>1</td>
      <td>MARS</td>
      <td>46395</td>
      <td>Extended Science Phase</td>
      <td>...</td>
      <td>-1584330.0</td>
      <td>-26573400.0</td>
      <td>-6.9957</td>
      <td>292.569</td>
      <td>-6.9979</td>
      <td>292.551</td>
      <td>-6.6838</td>
      <td>292.51</td>
      <td>-6.6815</td>
      <td>292.529</td>
    </tr>
    <tr>
      <th>138163</th>
      <td>MROHR_0001</td>
      <td>RDR/ESP/ORB_069100_069199/ESP_069178_2345/ESP_...</td>
      <td>MRO</td>
      <td>HIRISE</td>
      <td>ESP_069178_2345</td>
      <td>ESP_069178_2345_RED</td>
      <td>1</td>
      <td>MARS</td>
      <td>69178</td>
      <td>Extended Science Phase</td>
      <td>...</td>
      <td>12762196.0</td>
      <td>15708938.0</td>
      <td>53.8598</td>
      <td>76.7591</td>
      <td>53.8474</td>
      <td>76.602</td>
      <td>54.0013</td>
      <td>76.5672</td>
      <td>54.0137</td>
      <td>76.7249</td>
    </tr>
    <tr>
      <th>125490</th>
      <td>MROHR_0001</td>
      <td>RDR/ESP/ORB_063500_063599/ESP_063504_1995/ESP_...</td>
      <td>MRO</td>
      <td>HIRISE</td>
      <td>ESP_063504_1995</td>
      <td>ESP_063504_1995_COLOR</td>
      <td>1</td>
      <td>MARS</td>
      <td>63504</td>
      <td>Extended Science Phase</td>
      <td>...</td>
      <td>4638178.5</td>
      <td>12794202.0</td>
      <td>19.4523</td>
      <td>124.149</td>
      <td>19.45</td>
      <td>124.128</td>
      <td>19.5686</td>
      <td>124.113</td>
      <td>19.5709</td>
      <td>124.133</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 54 columns</p>
</div>

## Instrument tools

### CTX

``` python
from planetarypy.ctx import CTX
```

``` python
pid = ctrindex.sample(random_state=42).squeeze().PRODUCT_ID
pid
```

    'J07_047671_1256_XN_54S338W'

``` python
ctx = CTX(pid)
ctx
```

    PRODUCT_ID: J07_047671_1256_XN_54S338W
    URL: https://pds-imaging.jpl.nasa.gov/data/mro/mars_reconnaissance_orbiter/ctx/mrox_2757/data/J07_047671_1256_XN_54S338W.IMG
    source_path: /remote/trove/geo/planet/Mars/CTX/pds/mrox_2757/J07_047671_1256_XN_54S338W.IMG
    Shape: (8192, 2528)

``` python
ctx.source_path
```

    Path('/remote/trove/geo/planet/Mars/CTX/pds/mrox_2757/J07_047671_1256_XN_54S338W.IMG')

``` python
ctx.download()
```

    File exists. Use `overwrite=True` to download fresh.

## Acknowledgements

The creation of this library was in part supported by:

- NASA Cassini UVIS mission
- NASA SSW grant NNX15AH36G
- NASA PDART grant 80NSSC20K0875
- NASA SSW grant 80NSSC20K0748
- German Space Agency (DLR Bonn), grant 50 OO 2204, on behalf of the
  German Federal Ministry for Economic Affairs and Climate Action.
- This research has made use of the USGS Integrated Software for Imagers
  and Spectrometers (ISIS)(Laura et al. 2022).

<div id="refs" class="references csl-bib-body hanging-indent">

<div id="ref-laura_jason_2022_7443567" class="csl-entry">

Laura, Jason, Alex Acosta, Travis Addair, Lauren Adoram-Kershner, James
Alexander, Oleg Alexandrov, Stacey Alley, et al. 2022. *Integrated
Software for Imagers and Spectrometers* (version 7.2.0_RC1). Zenodo.
<https://doi.org/10.5281/zenodo.7443567>.

</div>

</div>

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/michaelaye/nbplanetary",
    "name": "planetarypy",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "planetary science, data analysis",
    "author": "Michael Aye",
    "author_email": "kmichael.aye@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/1c/22/6324e7729156a376d9b405f02fac598dab081707c2ffcecad780ace1ff77/planetarypy-0.32.0.tar.gz",
    "platform": null,
    "description": "PlanetaryPy\n================\n\n<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->\n\n# PlanetaryPy\n\n> Beta release: This will become (part of) the core package of the\n> [PlanetaryPy](https://planetarypy.org/) organisation.\n\nPotential logo:![image.png](images/plp_logo_candidate.png)\n\n## Install\n\n``` bash\npip install planetarypy\n```\n\nThis will pull in these other dependencies and their dependencies:\n\n`tomlkit pandas pvl numpy python-dateutil tqdm lxml yarl hirise-tools kalasiris`\n\n## Suggested standard abbreviations:\n\n- Inside these docs the package will be called `PLPY` for brevity.\n- A standard Python import could be: `plp` or `plpy`\n  - because the last `p` in `plp` can be pronounced out, we consider\n    these equivalent for human conversation and pronounce these\n    \u201cplippy\u201d.\n\n## General scope\n\nFirst and foremost this package should provide support in working with\nplanetary science data.\n\nWith `working` we mean:\n\n- locating\n- retrieving\n- reading\n- further processing\n\nof data.\n\n### Locating\n\nThis library manages, via its `PDS tools`, multiple PDS3 index files per\ninstrument that can be used for identifying data of interest. These\nindex files are automatically downloaded and converted to the very\nperformant (and cloud-ready)\n[parquet](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_parquet.html)\nfile format. \\> Parquet is able to store advanced datatypes like\nnan-capable integer and full datetime objects, as opposed to HDF5.\n\n### Retrieving\n\nThe interface to getting data is via a path-retrieving function based on\na PDS product-id. If that product-id is available locally, the path will\nbe returned. If it is not, it will previously be downloaded, stored in a\nsystematic fashion organized by mission and instrument, and then the\nlocal path will be returned.\n\n### Reading\n\nFor now, the library only returns the path to the object and the user\nneeds to sort out the reading process. A recently funded NASA project\n`Planetary Data Reader` will be integrated here, so that basic reading\ninto memory can be provided.\n\nAs such, we anticipate two classes of reading support: 1. basic reading\ninto numpy and/or xarray 1. added reader functionality like basic plots\nand basic geospatial processing, as supported by interested parties\n\nThere will exist larger other packages that focus on working with a\ngiven instrument\u2019s data, in which case that package could become an\naffiliated package with the `planetarypy` GitHub organization, if so\ndesired.\n\n### Further processing\n\nIn the future, additional frequently used procedures will be added to\nthis library, e.g. \\* frequently used GDAL/rasterio procedures \\*\nfrequently used SPICE operations \\* like surface illumination on a given\nbody\n\n## PDS tools\n\nLook at the `Apps` docs to see what `pds.apps` exist for easily getting\nPDS indexes. The `find_index` app is specifically useful when you don\u2019t\nknow what index files exist.\n\nSo far, the following indexes are supported (but not necessarily all\ntested within PLPY):\n\n- Cassini\n  - ISS (all)\n  - UVIS (all)\n- MRO\n  - CTX EDR\n  - HiRISE\n    - EDR, RDR, DTM\n      - EDR index has a bug (as delivered by the team, reported), where\n        I need to activate an existing fix for it.\n- LRO\n  - Diviner (DLRE)\n    - EDR, RDR\n  - LOLA\n    - EDR, RDR\n\n### More indexes\n\nMore indexes of other instruments can be easily added by following the\nexisting structure of what has been copied into your config at\n`~/.planetarypy_config.toml`.\n\nPlease consider submitting a pull request for adding further PDS index\nfiles into the config file at its source:\nhttps://github.com/michaelaye/nbplanetary/blob/master/planetarypy/data/planetarypy_config.toml\n\n## Utils\n\nFind something in `Utils` for working with NASA timestamps and a well\nworking URL download function\n[`url_retrieve`](https://michaelaye.github.io/planetarypy/api/utils.html#url_retrieve),\namong other stuff.\n\n## Experiment/Instrument Specific\n\nSo far, `planetarypy` supports CTX EDR and HiRISE RGB.NOMAP data. Look\nat the\n[`CTX`](https://michaelaye.github.io/planetarypy/api/ctx.html#ctx) and\n`HiRISE` pages for descriptions of classes for working with these data.\n\n## Bug reports\n\nPlease submit bug reports at\nhttps://github.com/michaelaye/nbplanetary/issues\n\n## How to use\n\n### Indexes\n\nSee [PDS apps](api/02c_pds.apps.ipynb) for more details.\n\n``` python\nfrom planetarypy.pds.apps import get_index\n```\n\n``` python\nctrindex = get_index(\"mro.ctx\", \"edr\", refresh=False)\nctrindex.sample(5, random_state=42)  # setting random_state to always get same files for docs\n```\n\n<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>VOLUME_ID</th>\n      <th>FILE_SPECIFICATION_NAME</th>\n      <th>ORIGINAL_PRODUCT_ID</th>\n      <th>PRODUCT_ID</th>\n      <th>IMAGE_TIME</th>\n      <th>INSTRUMENT_ID</th>\n      <th>INSTRUMENT_MODE_ID</th>\n      <th>LINE_SAMPLES</th>\n      <th>LINES</th>\n      <th>SPATIAL_SUMMING</th>\n      <th>...</th>\n      <th>SUB_SOLAR_LATITUDE</th>\n      <th>SUB_SPACECRAFT_LONGITUDE</th>\n      <th>SUB_SPACECRAFT_LATITUDE</th>\n      <th>SOLAR_DISTANCE</th>\n      <th>SOLAR_LONGITUDE</th>\n      <th>LOCAL_TIME</th>\n      <th>IMAGE_SKEW_ANGLE</th>\n      <th>RATIONALE_DESC</th>\n      <th>DATA_QUALITY_DESC</th>\n      <th>ORBIT_NUMBER</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>86101</th>\n      <td>MROX_2757</td>\n      <td>DATA/J07_047671_1256_XN_54S338W.IMG</td>\n      <td>4A_04_10F0036A00</td>\n      <td>J07_047671_1256_XN_54S338W</td>\n      <td>2016-09-27 00:24:54.682</td>\n      <td>CTX</td>\n      <td>NIFL</td>\n      <td>2528</td>\n      <td>8192</td>\n      <td>1</td>\n      <td>...</td>\n      <td>-19.41</td>\n      <td>338.09</td>\n      <td>-54.43</td>\n      <td>207762612.4</td>\n      <td>230.58</td>\n      <td>15.48</td>\n      <td>90.1</td>\n      <td>Crater in Noachis Terra</td>\n      <td>OK</td>\n      <td>47671</td>\n    </tr>\n    <tr>\n      <th>54420</th>\n      <td>MROX_1819</td>\n      <td>DATA/D10_031170_1808_XN_00N221W.IMG</td>\n      <td>4A_04_109C017D00</td>\n      <td>D10_031170_1808_XN_00N221W</td>\n      <td>2013-03-21 06:58:09.892</td>\n      <td>CTX</td>\n      <td>NIFL</td>\n      <td>5056</td>\n      <td>7168</td>\n      <td>1</td>\n      <td>...</td>\n      <td>-24.39</td>\n      <td>221.52</td>\n      <td>0.88</td>\n      <td>209925149.5</td>\n      <td>286.15</td>\n      <td>14.49</td>\n      <td>90.1</td>\n      <td>Ride-along with HiRISE</td>\n      <td>OK</td>\n      <td>31170</td>\n    </tr>\n    <tr>\n      <th>71053</th>\n      <td>MROX_2331</td>\n      <td>DATA/F10_039530_1470_XI_33S203W.IMG</td>\n      <td>4A_04_10C9000F00</td>\n      <td>F10_039530_1470_XI_33S203W</td>\n      <td>2015-01-01 16:20:01.840</td>\n      <td>CTX</td>\n      <td>ITL</td>\n      <td>5056</td>\n      <td>52224</td>\n      <td>1</td>\n      <td>...</td>\n      <td>-25.3</td>\n      <td>203.96</td>\n      <td>-33.12</td>\n      <td>207070298.2</td>\n      <td>263.93</td>\n      <td>15.2</td>\n      <td>90.4</td>\n      <td>Terrain in Terra Cimmeria</td>\n      <td>OK</td>\n      <td>39530</td>\n    </tr>\n    <tr>\n      <th>51385</th>\n      <td>MROX_1742</td>\n      <td>DATA/D04_028919_2026_XN_22N327W.IMG</td>\n      <td>4A_04_109002A800</td>\n      <td>D04_028919_2026_XN_22N327W</td>\n      <td>2012-09-26 21:17:00.483</td>\n      <td>CTX</td>\n      <td>NIFL</td>\n      <td>5056</td>\n      <td>6144</td>\n      <td>1</td>\n      <td>...</td>\n      <td>0.67</td>\n      <td>327.06</td>\n      <td>22.78</td>\n      <td>219814412.3</td>\n      <td>178.44</td>\n      <td>15.53</td>\n      <td>90.1</td>\n      <td>Ride-along with HiRISE</td>\n      <td>OK</td>\n      <td>28919</td>\n    </tr>\n    <tr>\n      <th>51923</th>\n      <td>MROX_1757</td>\n      <td>DATA/D05_029283_1524_XN_27S180W.IMG</td>\n      <td>4A_04_1092020B00</td>\n      <td>D05_029283_1524_XN_27S180W</td>\n      <td>2012-10-25 05:44:21.786</td>\n      <td>CTX</td>\n      <td>NIFL</td>\n      <td>5056</td>\n      <td>9216</td>\n      <td>1</td>\n      <td>...</td>\n      <td>-6.28</td>\n      <td>178.36</td>\n      <td>-27.56</td>\n      <td>214830233.7</td>\n      <td>194.72</td>\n      <td>15.57</td>\n      <td>90.1</td>\n      <td>Ride-along with HiRISE</td>\n      <td>OK</td>\n      <td>29283</td>\n    </tr>\n  </tbody>\n</table>\n<p>5 rows \u00d7 51 columns</p>\n</div>\n\n``` python\nhirise_rdr = get_index(\"mro.hirise\", \"rdr\")\nhirise_rdr.sample(5, random_state=42)\n```\n\n<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>VOLUME_ID</th>\n      <th>FILE_NAME_SPECIFICATION</th>\n      <th>INSTRUMENT_HOST_ID</th>\n      <th>INSTRUMENT_ID</th>\n      <th>OBSERVATION_ID</th>\n      <th>PRODUCT_ID</th>\n      <th>PRODUCT_VERSION_ID</th>\n      <th>TARGET_NAME</th>\n      <th>ORBIT_NUMBER</th>\n      <th>MISSION_PHASE_NAME</th>\n      <th>...</th>\n      <th>LINE_PROJECTION_OFFSET</th>\n      <th>SAMPLE_PROJECTION_OFFSET</th>\n      <th>CORNER1_LATITUDE</th>\n      <th>CORNER1_LONGITUDE</th>\n      <th>CORNER2_LATITUDE</th>\n      <th>CORNER2_LONGITUDE</th>\n      <th>CORNER3_LATITUDE</th>\n      <th>CORNER3_LONGITUDE</th>\n      <th>CORNER4_LATITUDE</th>\n      <th>CORNER4_LONGITUDE</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>144822</th>\n      <td>MROHR_0001</td>\n      <td>RDR/ESP/ORB_074100_074199/ESP_074107_1410/ESP_...</td>\n      <td>MRO</td>\n      <td>HIRISE</td>\n      <td>ESP_074107_1410</td>\n      <td>ESP_074107_1410_COLOR</td>\n      <td>1</td>\n      <td>MARS</td>\n      <td>74107</td>\n      <td>Extended Science Phase</td>\n      <td>...</td>\n      <td>-4568562.5</td>\n      <td>2009279.5</td>\n      <td>-38.7446</td>\n      <td>159.311</td>\n      <td>-38.7465</td>\n      <td>159.287</td>\n      <td>-38.614</td>\n      <td>159.269</td>\n      <td>-38.6121</td>\n      <td>159.293</td>\n    </tr>\n    <tr>\n      <th>22518</th>\n      <td>MROHR_0001</td>\n      <td>RDR/ESP/ORB_014000_014099/ESP_014080_1040/ESP_...</td>\n      <td>MRO</td>\n      <td>HIRISE</td>\n      <td>ESP_014080_1040</td>\n      <td>ESP_014080_1040_RED</td>\n      <td>1</td>\n      <td>MARS</td>\n      <td>14080</td>\n      <td>Extended Science Phase</td>\n      <td>...</td>\n      <td>-3193960.0</td>\n      <td>-845180.0</td>\n      <td>-76.0185</td>\n      <td>165.215</td>\n      <td>-76.0315</td>\n      <td>164.858</td>\n      <td>-75.6958</td>\n      <td>164.658</td>\n      <td>-75.6831</td>\n      <td>165.005</td>\n    </tr>\n    <tr>\n      <th>86634</th>\n      <td>MROHR_0001</td>\n      <td>RDR/ESP/ORB_046300_046399/ESP_046395_1730/ESP_...</td>\n      <td>MRO</td>\n      <td>HIRISE</td>\n      <td>ESP_046395_1730</td>\n      <td>ESP_046395_1730_COLOR</td>\n      <td>1</td>\n      <td>MARS</td>\n      <td>46395</td>\n      <td>Extended Science Phase</td>\n      <td>...</td>\n      <td>-1584330.0</td>\n      <td>-26573400.0</td>\n      <td>-6.9957</td>\n      <td>292.569</td>\n      <td>-6.9979</td>\n      <td>292.551</td>\n      <td>-6.6838</td>\n      <td>292.51</td>\n      <td>-6.6815</td>\n      <td>292.529</td>\n    </tr>\n    <tr>\n      <th>138163</th>\n      <td>MROHR_0001</td>\n      <td>RDR/ESP/ORB_069100_069199/ESP_069178_2345/ESP_...</td>\n      <td>MRO</td>\n      <td>HIRISE</td>\n      <td>ESP_069178_2345</td>\n      <td>ESP_069178_2345_RED</td>\n      <td>1</td>\n      <td>MARS</td>\n      <td>69178</td>\n      <td>Extended Science Phase</td>\n      <td>...</td>\n      <td>12762196.0</td>\n      <td>15708938.0</td>\n      <td>53.8598</td>\n      <td>76.7591</td>\n      <td>53.8474</td>\n      <td>76.602</td>\n      <td>54.0013</td>\n      <td>76.5672</td>\n      <td>54.0137</td>\n      <td>76.7249</td>\n    </tr>\n    <tr>\n      <th>125490</th>\n      <td>MROHR_0001</td>\n      <td>RDR/ESP/ORB_063500_063599/ESP_063504_1995/ESP_...</td>\n      <td>MRO</td>\n      <td>HIRISE</td>\n      <td>ESP_063504_1995</td>\n      <td>ESP_063504_1995_COLOR</td>\n      <td>1</td>\n      <td>MARS</td>\n      <td>63504</td>\n      <td>Extended Science Phase</td>\n      <td>...</td>\n      <td>4638178.5</td>\n      <td>12794202.0</td>\n      <td>19.4523</td>\n      <td>124.149</td>\n      <td>19.45</td>\n      <td>124.128</td>\n      <td>19.5686</td>\n      <td>124.113</td>\n      <td>19.5709</td>\n      <td>124.133</td>\n    </tr>\n  </tbody>\n</table>\n<p>5 rows \u00d7 54 columns</p>\n</div>\n\n## Instrument tools\n\n### CTX\n\n``` python\nfrom planetarypy.ctx import CTX\n```\n\n``` python\npid = ctrindex.sample(random_state=42).squeeze().PRODUCT_ID\npid\n```\n\n    'J07_047671_1256_XN_54S338W'\n\n``` python\nctx = CTX(pid)\nctx\n```\n\n    PRODUCT_ID: J07_047671_1256_XN_54S338W\n    URL: https://pds-imaging.jpl.nasa.gov/data/mro/mars_reconnaissance_orbiter/ctx/mrox_2757/data/J07_047671_1256_XN_54S338W.IMG\n    source_path: /remote/trove/geo/planet/Mars/CTX/pds/mrox_2757/J07_047671_1256_XN_54S338W.IMG\n    Shape: (8192, 2528)\n\n``` python\nctx.source_path\n```\n\n    Path('/remote/trove/geo/planet/Mars/CTX/pds/mrox_2757/J07_047671_1256_XN_54S338W.IMG')\n\n``` python\nctx.download()\n```\n\n    File exists. Use `overwrite=True` to download fresh.\n\n## Acknowledgements\n\nThe creation of this library was in part supported by:\n\n- NASA Cassini UVIS mission\n- NASA SSW grant NNX15AH36G\n- NASA PDART grant 80NSSC20K0875\n- NASA SSW grant 80NSSC20K0748\n- German Space Agency (DLR Bonn), grant 50 OO 2204, on behalf of the\n  German Federal Ministry for Economic Affairs and Climate Action.\n- This research has made use of the USGS Integrated Software for Imagers\n  and Spectrometers (ISIS)(Laura et al. 2022).\n\n<div id=\"refs\" class=\"references csl-bib-body hanging-indent\">\n\n<div id=\"ref-laura_jason_2022_7443567\" class=\"csl-entry\">\n\nLaura, Jason, Alex Acosta, Travis Addair, Lauren Adoram-Kershner, James\nAlexander, Oleg Alexandrov, Stacey Alley, et al. 2022. *Integrated\nSoftware for Imagers and Spectrometers* (version 7.2.0_RC1). Zenodo.\n<https://doi.org/10.5281/zenodo.7443567>.\n\n</div>\n\n</div>\n",
    "bugtrack_url": null,
    "license": "MIT License",
    "summary": "Python Tools for Planetary Science",
    "version": "0.32.0",
    "project_urls": {
        "Homepage": "https://github.com/michaelaye/nbplanetary"
    },
    "split_keywords": [
        "planetary science",
        " data analysis"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f3947ede440e4f1cdf074803c0fd02ca7e80fe21599325c6d2643428e0b2e566",
                "md5": "9a301e38f43f27f3a8c6bf836e8e9884",
                "sha256": "1d74dcb46c2f63a031e565fddcfbdf9d8081468f613b42afb02fce686745e766"
            },
            "downloads": -1,
            "filename": "planetarypy-0.32.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9a301e38f43f27f3a8c6bf836e8e9884",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 68102,
            "upload_time": "2024-05-07T15:48:41",
            "upload_time_iso_8601": "2024-05-07T15:48:41.155702Z",
            "url": "https://files.pythonhosted.org/packages/f3/94/7ede440e4f1cdf074803c0fd02ca7e80fe21599325c6d2643428e0b2e566/planetarypy-0.32.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1c226324e7729156a376d9b405f02fac598dab081707c2ffcecad780ace1ff77",
                "md5": "0cf66235bca405498f11c32ce0eab8cf",
                "sha256": "d25c67372a04a4fe325a384870bec4bff483c4c37cf7525225be3acfcf0aa77a"
            },
            "downloads": -1,
            "filename": "planetarypy-0.32.0.tar.gz",
            "has_sig": false,
            "md5_digest": "0cf66235bca405498f11c32ce0eab8cf",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 66840,
            "upload_time": "2024-05-07T15:48:43",
            "upload_time_iso_8601": "2024-05-07T15:48:43.896687Z",
            "url": "https://files.pythonhosted.org/packages/1c/22/6324e7729156a376d9b405f02fac598dab081707c2ffcecad780ace1ff77/planetarypy-0.32.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-07 15:48:43",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "michaelaye",
    "github_project": "nbplanetary",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "planetarypy"
}
        
Elapsed time: 0.24084s