diff --git a/docs/getting-started/data/image_to_ground/image-to-ground.zip b/docs/getting-started/data/image_to_ground/image-to-ground.zip new file mode 100644 index 0000000000000000000000000000000000000000..3131be61adc1262f8b3d7de22992886ce98983da Binary files /dev/null and b/docs/getting-started/data/image_to_ground/image-to-ground.zip differ diff --git a/docs/getting-started/data/image_to_ground/mro_B10_72W.tm b/docs/getting-started/data/image_to_ground/mro_B10_72W.tm new file mode 100755 index 0000000000000000000000000000000000000000..4cdd3ea5e5c0120db36b4751f830740d6e5d23d8 --- /dev/null +++ b/docs/getting-started/data/image_to_ground/mro_B10_72W.tm @@ -0,0 +1,49 @@ +KPL/MK + + This meta-kernel lists the MRO SPICE kernels providing coverage for + 2009. All of the kernels listed below are archived in the MRO SPICE + data set (DATA_SET_ID = "MRO-M-SPICE-6-V1.0"). This set of files and + the order in which they are listed were picked to provide the best + available data and the most complete coverage for the specified year + based on the information about the kernels available at the time + this meta-kernel was made. For detailed information about the + kernels listed below refer to the internal comments included in the + kernels and the documentation accompanying the MRO SPICE data set. + + It is recommended that users make a local copy of this file and + modify the value of the PATH_VALUES keyword to point to the actual + location of the MRO SPICE data set's ``data'' directory on their + system. Replacing ``/'' with ``\'' and converting line terminators + to the format native to the user's system may also be required if + this meta-kernel is to be used on a non-UNIX workstation. + + This file was created on February 24, 2021 by Marc Costa Sitja, NAIF/JPL. + The original name of this file was mro_2009_v14.tm. + + \begindata + + PATH_VALUES = ( '.' ) + + PATH_SYMBOLS = ( 'KERNELS' ) + + KERNELS_TO_LOAD = ( + + '$KERNELS/naif0012.tls' + + '$KERNELS/pck00008.tpc' + + '$KERNELS/mro_sclkscet_00082_65536.tsc' + + '$KERNELS/mro_v16.tf' + + '$KERNELS/mro_ctx_v11.ti' + + '$KERNELS/B10_013341_1010_XN_79S172W_0.bsp' + '$KERNELS/B10_013341_1010_XN_79S172W_1.bsp' + + '$KERNELS/mro_sc_psp_090526_090601_0_sliced_-74000.bc' + '$KERNELS/mro_sc_psp_090526_090601_1_sliced_-74000.bc' + + ) + + \begintext diff --git a/docs/getting-started/using-ale/isd-generate.md b/docs/getting-started/using-ale/isd-generate.md new file mode 100644 index 0000000000000000000000000000000000000000..f3cc92ee8b7a5ebc61e99b6750aac56f81f47257 --- /dev/null +++ b/docs/getting-started/using-ale/isd-generate.md @@ -0,0 +1,358 @@ + +# Generating an ISD with isd_generate + +## Prerequisites + +Before you can generate an ISD, you will need: + +- [ALE](https://github.com/DOI-USGS/ale?tab=readme-ov-file#setting-up-dependencies-with-conda-recommended) +- An image ([Locating Image Data](../../getting-started/using-isis-first-steps/locating-and-ingesting-image-data.md)) + formatted according to your driver type. +- SPICE Data according to your driver type. + +### Driver Types + +=== "NaifSpice + IsisLabel" + + For NaifSpice + IsisLabel Drivers, you will need: + + - An image [imported](../../getting-started/using-isis-first-steps/locating-and-ingesting-image-data.md#introduction-to-importing) into [ISIS](../../how-to-guides/environment-setup-and-maintenance/installing-isis-via-anaconda.md) .cub format with a [`-2isis` app](https://isis.astrogeology.usgs.gov/Application/index.html). + + - NAIF SPICE Kernels (See [Setting up NAIF Data](#setting-up-naif-data)). + + +=== "IsisSpice" + + For IsisSpice Drivers, you will need: + + - An image [imported](../../getting-started/using-isis-first-steps/locating-and-ingesting-image-data.md#introduction-to-importing) into [ISIS](../../how-to-guides/environment-setup-and-maintenance/installing-isis-via-anaconda.md) .cub format with a [`-2isis` app](https://isis.astrogeology.usgs.gov/Application/index.html), + + - AND the image must be [`spiceinit`ed](https://isis.astrogeology.usgs.gov/Application/presentation/Tabbed/spiceinit/spiceinit.html) with `spiceinit from=<your.cub>`. + + +=== "Pds3Label" + + For Pds3Label Drivers, you will need: + + - An image in PDS3 format + + - NAIF SPICE Kernels (See [Setting up NAIF Data](#setting-up-naif-data)). + + + +??? info "Driver Types: NaifSpice, IsisSpice, IsisLabel, and Pds3Label." + + *NaifSpice* drivers use the NAIF Kernels to look up spice data to an image, while *IsisSpice* drivers depend on the image already having spice data attached with `spiceinit`. + + *IsisLabel* drivers use images in the ISIS .cub format, while *Pds3Label* drivers use images in the PDS format. + + **NaifSpice + IsisLabel** is the most commonly used driver type, but you can check the ALE driver to find out if IsisSpice or Pds3Label drivers are available instead or in addition: + + 1. Look at the [drivers in the ALE repository](https://github.com/DOI-USGS/ale/tree/main/ale/drivers). + 1. Click on the drivers for the spacecraft that captured your image. + 1. Find the class for your sensor, and look for NaifSpice, IsisSpice, IsisLabel, or Pds3Label next to the class name. + + There may be a class for both NaifSpice and IsisSpice; in that case you can use either, or use the `-n` or `-i` argument to specify which one to use. You might use `-i` for IsisSpice if you want to avoid re-`spiceinit`ing a .cub. + + By default, ALE will run through different drivers until either it finds one that works (at which point it will stop), or all drivers fail. + +----- + +## Using isd_generate + +The basic usage of isd_generate is as follows: + +```sh +isd_generate [--arguments] [your-image-name] +``` + +----- + +!!! example "isd_generate default run, no arguments" + + To run isd_generate with no arguments on a .cub named [B10_013341_1010_XN_79S172W.cub](../../getting-started/data/image_to_ground/B10_013341_1010_XN_79S172W.cub): + + ```sh + isd_generate B10_013341_1010_XN_79S172W.cub + ``` + +----- + +### Output + +Upon a successful run of `isd_generate`, an uncompressed ISD file will be generated. +By default, this is your image's name, with a .json file extension (i.e. `B10_013341_1010_XN_79S172W.json`). + +!!! example "Specifying Output" + + [Example .cub](../../getting-started/data/image_to_ground/B10_013341_1010_XN_79S172W.cub) + + To output to a specified filename, use `--out` or `-o`. This example outputs a 'MyIsd.json' file: + + ```sh + isd_generate -o MyIsd.json B10_013341_1010_XN_79S172W.cub + ``` + + To output a brotli-compressed ISD, use `--compress` or `-c`. This results in a .br file: + + ```sh + isd_generate -c B10_013341_1010_XN_79S172W.cub + ``` + + To uncompress an ISD (converts .br to .json): + + ```sh + python -c "import ale.isd_generate as isdg; isdg.decompress_json('B10_013341_1010_XN_79S172W.br')" + ``` + + +### Verbosity + +When using the `--verbose` (`-v`) argument, program run information +is printed to the console, followed by the text of the ISD. This can be helpful when [troubleshooting](#troubleshooting). + + +### NAIF SPICE Data and Kernels + +To ensure the use of a NaifSpice Driver (and NAIF SPICE Data) to generate an ISD, use the `--only_naif_spice` (`-n`) flag. If you have a `spiceinit`ed .cub and you want to avoid re-`spiceinit`ing it or using NAIF SPICE Data, use the `--only-isis-spice` (`-i`) flag. + +When using an NAIF SPICE Data, you can specify a metakernel using the `--kernel` (`-k`) argument, followed by the path to your metakernel. + +!!! example "Using a NaifSpice Driver with a metakernel" + + Folder with example NAIF Data: + [[Download as .zip](../../getting-started/data/image_to_ground/image-to-ground.zip)] + [[View in GitHub](https://github.com/DOI-USGS/asc-public-docs/tree/main/docs/getting-started/data/image_to_ground)] + + This folder contains NAIF Data consisting of the various kernels + necessary to generate an ISD for the `B10_013341_1010_XN_79S172W` image. + You can open the kernels ending in `.t*` and view their contents as text files. + The kernels ending in `.b*` are binary kernels; + [NAIF SPICE Utilities](https://naif.jpl.nasa.gov/naif/utilities.html) + can be used to investigate their contents. + + `mro_B10_72W.tm` is the metakernel file. + If you open it, you can see it is a list of other kernels. + If you needed to use specific kernels, you could copy a metakernal and edit the list. + + To use a NaifSpice Driver and specify a metakernal: + + ```sh + isd_generate -n -k mro_B10_72W.tm B10_013341_1010_XN_79S172W.cub + ``` + +## Troubleshooting + +!!! bug "Troubleshooting Checklist" + + - [ ] Is your image in ISIS format (or PDS format for Pds3Label Drivers)? + - [use](../../getting-started/using-isis-first-steps/locating-and-ingesting-image-data.md#introduction-to-importing) + a [`-2isis` app](https://isis.astrogeology.usgs.gov/Application/index.html) to convert images to ISIS format. + - [ ] Do you have spice data... + - If using a NaifSpice Driver: + - [ ] Spice Data [Downloaded from NAIF](#downloading-naif-spice-data-with-wget)? + - [ ] [`$ALESPICEROOT` set](#setting-alespiceroot)? + - [ ] [Metakernel `PATH_VALUE` set](#setting-the-path-value-in-a-metakernel)? + - If using an IsisSpice Driver: + - [ ] Spice Data attached to your image by [`spiceinit`](https://isis.astrogeology.usgs.gov/Application/presentation/Tabbed/spiceinit/spiceinit.html)? + - [ ] Check what's wrong with a `--verbose` run. + +----- +### Investigating with --verbose + +Use the `--verbose` (`-v`) argument to troubleshoot and see why ALE might not be recognizing your image. +Check for info about the failure under `Trying <class 'ale.drivers.[X]_drivers...'>` where [X] is +ALE's abbreviation for the spacecraft/sensor that captured your image. + +```sh +isd_generate -v B10_013341_1010_XN_79S172W.cub +``` + +If requesting assistance, it may be helpful to post what version of ALE you have, shown with: + +```sh +isd_generate --version +``` + +----- + +## Setting Up NAIF Data + +For use of NAIF Data with ISIS, see [The ISIS Data Area](https://github.com/DOI-USGS/ISIS3/blob/dev/README.md#the-isis-data-area). For use of NAIF data with ALE, continue below. + +### Downloading NAIF SPICE Data with wget + +!!! warning "" + + [[NAIF SPICE Data Home](https://naif.jpl.nasa.gov/naif/data.html)] + [[Getting Spice Kernels from the NAIF Server](https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/Tutorials/pdf/individual_docs/34_naif_server.pdf)] + + If you have enough space, NAIF recommends downloading the entire dataset for your spacecraft, detailed below. + Otherwise, you can try subsetting the data as detailed in the [NAIF Server tutorial](https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/Tutorials/pdf/individual_docs/34_naif_server.pdf). + You will need `wget`, a common download utility. + + Let's download the Clementine archive as a test. + + 1. Find your mission on the [PDS SPICE Archives](https://naif.jpl.nasa.gov/naif/data_archived.html) and copy the **Archive Link**. + + - The url for the Clementine archive is: + `https://naif.jpl.nasa.gov/pub/naif/pds/data/clem1-l-spice-6-v1.0/clsp_1000` + + 1. `cd` into you spice folder, the folder you have or will set as `$ALESPICEROOT`. + + 1. Piece together the `wget` command. + 1. Starting with this base command... (Don't run it yet!) + `wget -m -nH --cut-dirs=5 -R 'index.html*'` + + 1. add the url... + `-nv https://naif.jpl.nasa.gov/pub/naif/pds/data/clem1-l-spice-6-v1.0/` + + 1. then filter by the directory path (last half of url)... + `-I pub/naif/pds/data/clem1-l-spice-6-v1.0/` + + 1. and download into this folder (just the folder at the end of the url). + `-P clem1-l-spice-6-v1.0/` + + 1. Run the complete wget command: + + ```sh + wget -m -nH --cut-dirs=5 -R 'index.html*' -nv https://naif.jpl.nasa.gov/pub/naif/pds/data/clem1-l-spice-6-v1.0/clsp_1000 -I pub/naif/pds/data/clem1-l-spice-6-v1.0/clsp_1000 -P clem1-l-spice-6-v1.0/ + ``` + + ----- + *The Mars Reconnaissansce Orbiter (MRO) archive, which corresponds to the B10_013341_1010_XN_79S172W we've been using, is 340 GB. If you will be working with MRO images, and you have the space, you can try downloading the MRO Spice data.* + +### Setting $ALESPICEROOT + +!!! warning "" + + When you are using a NaifSpice Driver, ALE looks under the `$ALESPICEROOT` directory for SPICE Kernels. + You can echo it to see if it is set. + + ```sh + echo $ALESPICEROOT + ``` + + To work with MRO images like the example image on this page, you might download the MRO NAIF SPICE Kernels to a data drive. + If your directory structure looks like `/Volumes/data/spice-data/mro-m-spice-6-v1.0/mrosp_1000`, then you should set `$ALESPICEROOT` like: + + ```sh + export ALESPICEROOT=/Volumes/data/spice-data + ``` + +### Setting the Path Value in a metakernel + +!!! warning "" + + When you use a NaifSpice Driver, the your $ALESPICEROOT must point to the relevant NAIF SPICE Data, + and the metakernel within that data must be set. + + ```sh + isd_generate -n -v B10_013341_1010_XN_79S172W.cub + ``` + + If the path value in your metakernel has not been set, you may get an error like this: + + ```sh + File B10_013341_1010_XN_79S172W.cub: No Such Driver for Label + ``` + + Look up further in the verbose data, and if an unset metakernel is causing the problem, you will find something like: + + ```sh + Trying <class 'ale.drivers.mro_drivers.MroCtxIsisLabelNaifSpiceDriver'> + Failed: + ================================================================================ + + Toolkit version: CSPICE_N0067 + + SPICE(NOSUCHFILE) -- + + The first file './data/lsk/naif0012.tls' specified by KERNELS_TO_LOAD in the file /Volumes/data/spice-data/mro-m-spice-6-v1.0/mrosp_1000/extras/mk/mro_2009_v14.tm could not be located. + ``` + + You will need to open that .tm file (`mro_2009_v14.tm`), and change the PATH_VALUES line to point to your data; the folder containing folders for lsk, pck, sclk, fk, ik, spk, ck, etc... + + ``` + PATH_VALUES = ( './data' ) + ``` + + if your `$ALESPICEROOT` is `/Volumes/data/spice-data`, and you are working with an MRO image, you might change it to: + + ``` + PATH_VALUES = ( '/Volumes/data/spice-data/mro-m-spice-6-v1.0/mrosp_1000/data' ) + ``` + + Now save the metakernel try again, and, if your SPICE Data is correctly configured, you should not see the same error: + + ```sh + isd_generate -n -v B10_013341_1010_XN_79S172W.cub + ``` + + +## Arguments + +### Output File + +`-o`, `--out` [filename] + +: Optional output file. If not specified, this will be set to + the input filename with its final suffix replaced with .json. + If multiple input files are provided, this option will be ignored + and the default strategy of replacing their final suffix with + .json will be used to generate the output file paths. + +`-c`, `--compress` + +: Output a compressed isd json file with .br file extension. + Ale uses the brotli compression algorithm. + To decompress an isd file run: + `python -c "import ale.isd_generate as isdg; isdg.decompress_json('/path/to/isd.br')"` + +### ALE Processing Settings and Info + +`-v`, `--verbose` + +: Display extra information as program runs. + +`--version` + +: Shows ALE version number + +`--max_workers` [integer] + +: If more than one file is provided to work on, this program + will engage multiprocessing to parallelize the work. This + multiprocessing will default to the number of processors on the + machine. If you want to throttle this to use less resources on + your machine, indicate the number of processors you want to use. + +### Spice Data + +`-k`, `--kernel` [filename] + +: Typically this is an optional metakernel file, care should be + taken by the user that it is applicable to all of the input + files. It can also be a single ISIS cube, which is sometimes + needed if the input file is a label file. + +`-i`, `--only_isis_spice` + +: Only use drivers that read from spiceinit'd ISIS cubes. + +`-n`, `--only_naif_spice` + +: Only use drivers that generate fresh spice data. + +### Spatial Settings + +`-l`, `--local` + +: Generate local spice data, an isd that is unaware of itself relative + to target body. This is largely used for landed/rover data. + +`-N`, `--nadir` + +: Generate nadir spice pointing, an isd that has pointing + directly towards the center of the target body. + diff --git a/docs/getting-started/using-isis-first-steps/locating-and-ingesting-image-data.md b/docs/getting-started/using-isis-first-steps/locating-and-ingesting-image-data.md index c2a234918b26fb6218d015eccb4b10bc53aa6219..0c3239eea7a801b545a71ab3cb0b34847aa31480 100644 --- a/docs/getting-started/using-isis-first-steps/locating-and-ingesting-image-data.md +++ b/docs/getting-started/using-isis-first-steps/locating-and-ingesting-image-data.md @@ -12,13 +12,12 @@ Atlas Planetary Image Atlas -The internet has greatly improved the ability to locate and download -planetary data. The Planetary Data System (PDS) Planetary Image Atlas is +The Planetary Data System (PDS) Planetary Image Atlas is the most comprehensive source for planetary data from current and past -planetary missions. The web site provides tools to help you find image +planetary missions. It provides tools to help you find image data that covers your area of interest in the vast quantities available. -[Planetary Data System Image Atlas.](http://pdsimg.jpl.nasa.gov/Atlas) +[Planetary Data System Image Atlas.](https://pds-imaging.jpl.nasa.gov/search) Data can be found for each planet, some example missions and instruments listed below. diff --git a/mkdocs.yml b/mkdocs.yml index fbc32900d210718317f43875cc23d83bd6746dc7..b02500acab57b438092a11427e1715c485e9b804 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -48,6 +48,8 @@ nav: - Adding SPICE: getting-started/using-isis-first-steps/adding-spice.md - Exporting ISIS Data: getting-started/using-isis-first-steps/exporting-isis-data.md - ISIS FAQ: getting-started/using-isis-first-steps/isis-faq.md + - Using Ale: + - Generating an ISD: getting-started/using-ale/isd-generate.md - Archive: - Demos and Workshops: getting-started/archive/isis-demos-and-workshops.md - How-To Guides: @@ -179,3 +181,5 @@ markdown_extensions: - pymdownx.snippets: auto_append: - definitions.md + - pymdownx.tabbed: + alternate_style: true