Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/css/neoteroi-mkdocs.css
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@

.nt-card a:hover,
.nt-card a:focus {
color: var(--md-accent-fg-color);
color: var(#7359df);
}


Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,150 @@
# Installing ISIS

## Prerequisites

??? "Conda"
## Install via script

If you don't have conda yet, download and install it. We recommend getting conda through [MiniForge](https://github.com/conda-forge/miniforge?tab=readme-ov-file#miniforge).
You can install miniforge and ISIS at the same time using a bash script. This will walk you through the process and set environmment variables for you.

```bash
bash <(curl https://raw.githubusercontent.com/DOI-USGS/ISIS3/refs/heads/dev/isis/scripts/install_isis.sh)
```

!!! warning "If you use conda/miniconda and not miniforge"

If you use the script, we require removing a basic anaconda ior miniconda install for [miniforge.](https://github.com/conda-forge/miniforge). Miniforge is far faster. ISIS can take hours to resolve on a anaconda installation compared to a few minutes for miniforge.

??? info "Script Details"

The `install_isis.sh` script is a bash script that automates the installation process of the USGS ISIS software.

## Prerequisites

Before running the installation script, ensure you have:

- A Linux or macOS operating system
- Sufficient disk space (at least 40GB recommended for software + base data)
- Internet connection
- Bash shell

## Script Parameters

The script accepts several command-line arguments to customize the installation:

| Parameter | Description |
|-----------|-------------|
| `-m, --miniforge-dir` | Installation directory |
| `-l, --anaconda-label` | Conda channel to use (default: `usgs-astrogeology`) |
| `-p, --data-prefix` | The directory where ISISDATA is located |
| `-v, --isis-version` | ISIS version to install, `latest` always installs latest |
| `-n, --env-name` | Name of the conda environment |
| `--no-data` | Skip Data Downloads (flag) |
| `--download-base` | Download Base Data |
| `-h, --help` | Display help information |

## Installation Process

The script performs the following steps:

1. **Install Miniforge** (if method is `conda`): Downloads and installs Miniconda if not already available
2. **Create Environment**: Sets up a conda environment with required packages
3. **Install ISIS**: Installs ISIS software either from conda packages or source code
4. **Download Data**: Fetches required data files based on specified options
5. **Set Up Environment Variables**: Configures necessary environment variables

??? Info "CLI Examples"

=== "wget"

```bash
wget -O install_isis.sh https://raw.githubusercontent.com/DOI-USGS/ISIS3/refs/heads/dev/isis/scripts/install_isis.sh"
```

=== "curl"

```bash
curl -fsSLo install_isis.sh https://raw.githubusercontent.com/DOI-USGS/ISIS3/refs/heads/dev/isis/scripts/install_isis.sh"
```

In order to install ISIS in a CI or other automated pipeline, set flags for the label, version, env name and `--no-data` to skip data install. Install data via [downloadIsisData.py](isis-data-area.md).

### Specific Install Examples

=== "Latest main"

```bash
./install_isis.sh -l main -v latest -n isislatest -p $HOME/isisdata --no-data
```

=== "Latest dev"

```bash
./install_isis.sh -l dev -m $HOME/miniforge -v latest -n isisdev -p $HOME/isisdata --no-data
```

=== "Latest lts"

```bash
./install_isis.sh -l lts -v latest -n isislts -p $HOME/isisdata --no-data
```

=== "Specific Version"

```bash
./install_isis.sh --force-mamba -m $HOME/miniforge/ -l main -v 8.3.0 -n isis8.3.0 -p $HOME/isisdata --download-base
```

## After install consideratrions

### ISIS DATA

The script can download various types of ISIS data:

- **Base Data**: Essential data required for ISIS functionality
- **Mission-specific Data**: Data for specific planetary missions

We recommend only installing base, and use web spice for most spice operations. See [ISIS Data Docs](isis-data-area.md) for more information.

## Environment Variables

Key environment variables set up by the script:

- `ISISROOT`: Points to the ISIS installation directory
- `ISISDATA`: Points to the ISIS data directory
- `PATH`: Updated to include ISIS binaries

On activation, the environment will automatically set ISISROOT, ISISDATA, and PATH for you. To change these variables after installation in case they were set incorrectly or your ISISDATA folder changes, see [setting environment variables](# Environmental Variables).

## Updating ISIS

!!! Warning
Mamba is bad at updating envs after they have been created. This often causes conflicts and long resolve times. If you installed ISIS using this script, we reccomnend simply deleting the old environment and creating new one. Or versioning your env names.


```bash
# initial install
./install_isis.sh -l main -v 8.0.0 -n isis8.0.0 -p $HOME/isisdata --download-base

# After 8.3.0 release
./install_isis.sh -l main -v 8.3.0 -n isis8.3.0 -p $HOME/isisdata --no-data
```


## Additional Resources

- [ISIS GitHub Repository](https://github.com/USGS-Astrogeology/ISIS3)
- [Report ISIS Issues](https://github.com/DOI-USGS/ISIS3/issues)


## Install Manually Via Miniforge
### Prerequisites

??? "Mamba/Miniforge"

If you don't have mamba yet, download and install it. We recommend getting mamba through [MiniForge](https://github.com/mamba-forge/miniforge?tab=readme-ov-file#miniforge).

```sh
# Via Miniforge:
curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
curl -L -O "https://github.com/mamba-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
bash Miniforge3-$(uname)-$(uname -m).sh
```

Expand All @@ -21,14 +157,14 @@
```


## Conda Environment
### Mamba Environment

=== "Native Mac/Unix"

```sh
# Create conda environment, then activate it.
conda create -n isis
conda activate isis
# Create mamba environment, then activate it.
mamba create -n isis
mamba activate isis
```

=== "x86 on ARM Macs"
Expand All @@ -37,11 +173,11 @@
# ARM Macs Only - Setup the new environment as x86_64
export CONDA_SUBDIR=osx-64

#Create a new conda environment to install ISIS in
conda create -n isis python>=3.9
#Create a new mamba environment to install ISIS in
mamba create -n isis python>=3.9

#Activate the environment
conda activate isis
mamba activate isis

# ARM Macs Only - Force installation of x86_64 packages, not ARM64
conda config --env --set subdir osx-64
Expand Down Expand Up @@ -83,26 +219,26 @@ conda config --show channels
conda config --env --set channel_priority flexible
```

## Downloading ISIS
### Downloading ISIS

The environment is now ready to download ISIS and its dependencies:

=== "Latest Release"

```sh
conda install -c usgs-astrogeology isis
mamba install -c usgs-astrogeology isis
```

=== "LTS"

```sh
conda install -c usgs-astrogeology/label/LTS isis
mamba install -c usgs-astrogeology/label/LTS isis
```

=== "Release Candidate"

```sh
conda install -c usgs-astrogeology/label/RC isis
mamba install -c usgs-astrogeology/label/RC isis
```


Expand All @@ -122,41 +258,41 @@ ISIS requires these environment variables to be set in order to run correctly:

???+ example "Setting Environmental Variables"

The **Conda Env** method is recommended, and the **Python Script** automates that method:
The **mamba Env** method is recommended, and the **Python Script** automates that method:

=== "Conda Env"
=== "mamba Env"

??? "Requires Conda 4.8 or above"
??? "Requires mamba 4.8 or above"

Check your conda version, and update if needed:
Check your mamba version, and update if needed:

```sh
# Check version
conda --version
mamba --version

# Update
conda update -n base conda
mamba update -n base mamba
```

1. Activate your ISIS environment.
```
conda activate isis
mamba activate isis

# Now you can set variables with:
# conda config vars set KEY=VALUE
```

1. This command sets both required variables (fill in your `ISISDATA` path):

conda env config vars set ISISROOT=$CONDA_PREFIX ISISDATA=[your data path]
mamba env config vars set ISISROOT=$CONDA_PREFIX ISISDATA=[your data path]

1. Re-activate your isis environment.
```sh
conda deactivate
conda activate isis
mamba deactivate
mamba activate isis
```

The environment variables are now set and ISIS is ready for use every time the isis conda environment is activated.
The environment variables are now set and ISIS is ready for use every time the isis mamba environment is activated.


=== "Python Script"
Expand All @@ -172,8 +308,8 @@ ISIS requires these environment variables to be set in order to run correctly:
Now every time the isis environment is activated, `$ISISROOT` and `$ISISDATA` will be set to the values passed to isisVarInit.py.
This does not happen retroactively, so re-activate the isis environment:

conda deactivate
conda activate isis
mamba deactivate
mamba activate isis


=== "export (shell)"
Expand All @@ -191,7 +327,7 @@ ISIS requires these environment variables to be set in order to run correctly:
Use the python script per instructions from [the old readme](https://github.com/USGS-Astrogeology/ISIS3/blob/adf52de0a04b087411d53f3fe1c9218b06dff92e/README.md).


## The ISIS Data Area
### The ISIS Data Area

Many ISIS apps need extra data to carry out their functions. This data varies depending on the mission, and may be quite large, so it is not included with ISIS; You will need to [download it separately](../../how-to-guides/environment-setup-and-maintenance/isis-data-area.md).

Expand All @@ -204,36 +340,36 @@ Many ISIS apps need extra data to carry out their functions. This data varies d
-----


## Updating ISIS
### Updating ISIS

If ISIS was already installed with Conda, you can update it with:
If ISIS was already installed with mamba, you can update it with:

=== "Latest Release"

```sh
conda update -c usgs-astrogeology isis
mamba update -c usgs-astrogeology isis
```

=== "LTS"

```sh
conda update -c usgs-astrogeology/label/LTS isis
mamba update -c usgs-astrogeology/label/LTS isis
```

=== "Release Candidate"

```sh
conda update -c usgs-astrogeology/label/RC isis
mamba update -c usgs-astrogeology/label/RC isis
```


## Uninstalling ISIS

To uninstall ISIS, deactivate the ISIS Conda Environment, and then remove it. If you want to uninstall conda as well, see your conda installation's website ([Miniforge](https://github.com/conda-forge/miniforge?tab=readme-ov-file#uninstallation) if you installed conda with the above instructions).
To uninstall ISIS, deactivate the ISIS mamba Environment, and then remove it. If you want to uninstall mamba as well, see your mamba installation's website ([Miniforge](https://github.com/mamba-forge/miniforge?tab=readme-ov-file#uninstallation) if you installed mamba with the above instructions).

```sh
conda deactivate
conda env remove -n isis
mamba deactivate
mamba env remove -n isis
```

-----
Expand All @@ -242,7 +378,7 @@ conda env remove -n isis

!!! quote ""

The ISIS production Dockerfile automates the conda installation process above.
The ISIS production Dockerfile automates the mamba installation process above.
You can either build the Dockerfile yourself or use the
[usgsastro/isis](https://hub.docker.com/repository/docker/usgsastro/isis)
image from DockerHub.
Expand Down Expand Up @@ -272,7 +408,7 @@ conda env remove -n isis
The data is not included in the Docker image.

```
docker run -v /my/data/dir:/opt/conda/data -v /my/testdata/dir:/opt/conda/testData -it usgsastro/isis bash
docker run -v /my/data/dir:/opt/mamba/data -v /my/testdata/dir:/opt/mamba/testData -it usgsastro/isis bash
```

Then [download the data](#the-isis-data-area) into /my/data/dir to make it accessible inside your
Expand Down
10 changes: 5 additions & 5 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,26 @@ If looking for something specific, you can use the search function.

These docs use a simple system of defining software documentation in four categories based on the composition and goal of a particular piece of documentation:

::cards:: cols=1
::cards:: cols=2

[
{
"title": "Getting Started",
"title": ":material-clock-fast: <u>__Getting Started__</u>",
"content": "Step-by-step tutorials for beginners to get started with different aspects of the Astro software portfolio; this is the best place to learn new things as a beginner to some of our software or those unfamiliar with particular parts of the code.",
"url" : getting-started/index.md
},
{
"title": "How-To Guides",
"title": ":material-check-all: <u>__How-To Guides__</u>",
"content": "Examples on how-to complete common software tasks; for intermediate to advanced users who want examples on how to accomplish a particular task.",
"url" : how-to-guides/index.md
},
{
"title": "Concepts",
"title": ":material-text-long: <u>__Concepts__</u>",
"content": "Write-ups that define and explain concepts that apply to our software; this is for anyone who wants a better understanding of particular higher-level concepts.",
"url" : concepts/index.md
},
{
"title": "Software Manuals",
"title": ":material-book-open-variant-outline: <u>__Software Manuals__</u>",
"content": "Links to in-depth software manuals; contains in-depth references to a particular software project's apps and APIs.",
"url" : manuals/index.md
},
Expand Down
Loading