Giter Site home page Giter Site logo

doi-usgs / isis3 Goto Github PK

View Code? Open in Web Editor NEW
196.0 27.0 166.0 418.58 MB

Integrated Software for Imagers and Spectrometers v3. ISIS3 is a digital image processing software package to manipulate imagery collected by current and past NASA and International planetary missions.

Home Page: https://isis.astrogeology.usgs.gov

License: Other

Makefile 2.12% QMake 0.01% Roff 0.05% 1C Enterprise 0.02% Shell 0.04% XSLT 0.69% Perl 0.10% Python 0.24% C++ 93.05% HTML 0.12% Batchfile 0.01% C 0.76% CSS 0.22% PHP 0.47% JavaScript 0.10% IDL 0.13% CMake 0.40% Dockerfile 0.01% Jupyter Notebook 0.72% Smarty 0.73%

isis3's Introduction

ISIS

ISIS

Anaconda-Server Badge Anaconda-Server Badge Badge for DOI 10.5066/P13YBMZA

Table of Contents

Requests for Comment

The ISIS project uses a Request for Comment (RFC) model where major changes to the code base, data area, or binary delivery process are proposed, iterated on, and potentially adopted. Right now, RFCs are being housed in this repository's wiki.

Current open RFCs:

  • No Requests for Comment are currently open

We encourage all contributors and users to review open RFCs and comment, as these proposed changes will impact use of the software.

FAQ

We maintain a list of frequently encountered questions and issues. Before opening a new issue, please take a look at the FAQ.

ISIS Tutorials

Please refer to the GitHub wiki page ISIS Online Workshops for current ISIS tutorials.

Citing ISIS

The badge at the top of this README lists the DOI of the most recent ISIS version. As of 05/09/2024, the latest release of ISIS is version 8.0.3, and its DOI is 10.5066/P13YBMZA.

The Releases Page on GitHub lists the DOI for each version of ISIS. Older versions may be listed on Zenodo. It is good practice to cite the version of the software being used by the citing work, so others can reproduce your exact results.

Installation

This installation guide is for ISIS users interested in installing ISIS (3.6.0)+ through conda.

ISIS Installation With Conda

  1. Download either the Anaconda or Miniconda installation script for your OS platform. Anaconda is a much larger distribtion of packages supporting scientific python, while Miniconda is a minimal installation and not as large: Anaconda installer, Miniconda installer

  2. If you are running on some variant of Linux, open a terminal window in the directory where you downloaded the script, and run the following commands. In this example, we chose to do a full install of Anaconda, and our OS is Linux-based. Your file name may be different depending on your environment.

    chmod +x Anaconda3-5.3.0-Linux-x86_64.sh
    ./Anaconda3-5.3.0-Linux-x86_64.sh

    This will start the Anaconda installer which will guide you through the installation process.

  3. If you are running Mac OS X, a pkg file (which looks similar to Anaconda3-5.3.0-MacOSX-x86_64.pkg) will be downloaded. Double-click on the file to start the installation process.

  4. After the installation has finished, open up a bash prompt in your terminal window.

  5. If you have an ARM64 Mac (M1/M2) running Catalina (or later), additional prerequisites must be installed for ISIS to run in emulation:

  • Install XQuartz. (Tested with XQuartz 2.8.5 on MacOS Catalina)
  • Install Rosetta2. From the terminal run: /usr/sbin/softwareupdate --install-rosetta --agree-to-license
  • Include the # MacOS ARM64 Only lines below
  1. Next setup your Anaconda environment for ISIS. In the bash prompt, run the following commands:

    [!WARNING] ISIS 8.1.0 is incompatible with Python 3.10, 3.11, and 3.12 The conda create command below creates a conda environment with Python 3.9

    #MacOS ARM64 Only - Setup the new environment as an x86_64 environment
    export CONDA_SUBDIR=osx-64
    
    #Create a new conda environment to install ISIS in
    conda create -n isis python=3.9
    
    #Activate the environment
    conda activate isis
    
    #MacOS ARM64 Only - Force installation of x86_64 packages instead of ARM64
    conda config --env --set subdir osx-64
    
    #Add the following channels to the environment
    conda config --env --add channels conda-forge
    conda config --env --add channels usgs-astrogeology
    
    #Verify you have the correct channels:
    conda config --show channels
    
    #You should see:
    
    channels:
        - usgs-astrogeology
        - conda-forge
        - defaults
    
    #The order is important.  If conda-forge is before usgs-astrogeology, you will need to run:
    
    conda config --env --add channels usgs-astrogeology
    
    #Then set channel_priority to flexible in case there is a global channel_priority=strict setting
    conda config --env --set channel_priority flexible
  2. The environment is now ready to download ISIS and its dependencies:

    conda install -c usgs-astrogeology isis

    [!NOTE] The install may take 1 to 2 hours.

    If you would like to download an LTS version, follow the following format below:

    conda install -c "usgs-astrogeology/label/LTS" isis=8.0.1
  3. Finally, setup the environment variables:

    ISIS requires several environment variables to be set in order to run correctly. The variables include: ISISROOT and ISISDATA.

    More information about the ISISDATA environment variable and the ISIS Data Area can be found here.

    The following steps are only valid for versions of ISIS after 4.2.0. For older versions of ISIS follow the instructions in this readme file.

    There are two methods to configure the environment variables for ISIS:

    1. Using conda env config vars preferred

      Conda has a built in method for configuring environment variables that are specific to a conda environment since version 4.8. This version number applies only to the conda package, not to the version of miniconda or anaconda that was installed.

      To determine if your version of conda is recent enough run:

      conda --version
      

      If the version number is less than 4.8, update conda to a newer version by running:

      conda update -n base conda
      

      The version number should now be greater than 4.8.

      To use the built in environment variable configuration feature, first activate the environment by first running:

      conda activate isis
      

      After activation, the environment variables can be set using the syntax: conda config vars set KEY=VALUE. To set all the environment variables ISIS requires, run the following command, updating the path to ISISDATA as needed:

      conda env config vars set ISISROOT=$CONDA_PREFIX ISISDATA=[path to data directory]
      

      To make these changes take effect, re-activate the isis environment by running:

      conda activate isis
      

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

      Note This method will not enable tab completion for arguments in C-Shell.

    2. Using the provided isisVarInit.py script:

      To use the default values for: $ISISROOT and $ISISDATA, run the ISIS variable initialization script with default arguments:

      python $CONDA_PREFIX/scripts/isisVarInit.py
      

      Executing this script with no arguments will result in $ISISROOT=$CONDA_PREFIX and $ISISDATA=$CONDA_PREFIX/data. The user can specify different directories for $ISISDATA using the optional value:

      python $CONDA_PREFIX/scripts/isisVarInit.py --data-dir=[path to data directory]
      

      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 with one of the following commands:

      for Anaconda 3.4 and up - conda activate isis
      prior to Anaconda 3.4 - source activate isis
      

Installation with Docker

The ISIS production Dockerfile automates the conda installation process above. You can either build the Dockerfile yourself or use the usgsastro/isis image from DockerHub.

To build the Dockerfile

  1. Download the production Docker file
  2. Build the Dockerfile
docker build -t isis -f production.dockerfile .
  1. Run the Dockerfile
docker run -it isis bash

Run run the prebuilt image

docker run -it usgsastro/isis bash

Usage with the ISIS data area

Usually you'll want to mount an external directory containing the ISIS data. 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

Then download the data into /my/data/dir to make it accessible inside your container.

Practical Usage with other conda packages

If you don't use conda for anything else on your computer, you can skip this section.

If you use conda to install other packages, you may run into difficulties with adding the isis conda package to those environments or adding other conda packages to the isis environment you just created above. This is because the isis conda package pins a number of requirements that may clash with other packages.

At this time, we recommend creating the isis environment as detailed above, and then not adding any other conda packages to it. This is similar to the best practice usage of not adding any conda packages to your 'base' conda environment.

Instead, when you need to have a conda environment with other packages that also needs to be able to run ISIS programs, we have two different options. In both cases, we'll assume that you create a new environment called 'working' (but it could be named anything) that you want to add some conda packages to, but from which you also want ISIS access.

The first step is to create 'working' and add whatever conda packages you want.

Easy mode, with stacking

  1. conda activate isis

  2. conda activate --stack working

That's it. Told you it was easy.

This activates the isis environment, gets it all set up, and then it 'stacks' the new working environment on top of it. To get out, you'll have to conda deactivate two times to get out of working and then out of isis.

Harder mode, with activation script hacking

The above stacking situation may have issues if you have a particularly complicated set of packages or other dependencies. The idea here is that the only thing you really need in your 'working' environment are the ISIS environment variables and the path to the ISIS executables.

If the above paragraph sounded like gibberish, please seek help from your system administrator or local computer guru.

And we can do this via customizations in the conda environment's activate.d/ and deactivate.d/ directories. Adding these things can also be done manually from the command line, but encoding them in the activate.d/ and deactivate.d/ scripts is handy.

  1. Create your conda environment however you like, adding whatever packages you need. If you were reading the directions above, you've already done this.

  2. Locate the path to your conda environments:

    conda activate
    echo $CONDA_PREFIX
    conda deactivate
    

    You'll probably get a directory that is in your home directory and is named anaconda3 or miniconda3 or something similar. For the rest of this set of instructions, we'll refer to it as $HOME/anaconda3 to represent a directory named anaconda3 in your home directory, but this should be whatever you get from the above echo command.

  3. Locate the path to your ISIS conda environment:

    conda activate isis
    echo $CONDA_PREFIX
    conda deactivate
    

    This should probably be $HOME/anaconda3/envs/isis. You can see that it starts with whatever you got from step 1, and ends in the name of your isis environment, if you followed the installation instructions above, you called that environment 'isis'.

    You can do the same thing to find the path to your new 'working' environment, but in this example, it will be at $HOME/anaconda3/envs/working.

  4. Copy the ISIS activation and deactivation scripts to your new environment. Please note that the directory names in the instructions below are based on how you installed conda and what you named the 'isis' environment and the 'working' environment. You may not be able to just copy and paste these instructions directly, they are an example. Likewise, if your shell doesn't take the bash syntax in the .sh files, then you may need to select one of the other env_vars.* files in the isis directories.

    cd $HOME/anaconda3/envs/
    mkdir -p working/etc/conda/activate.d/
    mkdir -p working/etc/conda/deactivate.d/
    cp isis/etc/conda/activate.d/env_vars.sh working/etc/conda/activate.d/env_vars.sh
    cp isis/etc/conda/deactivate.d/env_vars.sh working/etc/conda/deactivate.d/env_vars.sh
    
  5. Edit the copied activation file in $HOME/anaconda3/envs/working/etc/conda/activate.d/ to add the ISIS executable directory to the path, by adding this line at the end:

    export PATH=$PATH:$ISISROOT/bin
    

    Or whatever is appropriate for your shell if you aren't using the .sh file. No matter how you do it, it is important that you add $ISISROOT/bin to the end of the current path in your working environment, and not at the beginning.

  6. Edit the copied deactivation file in $HOME/anaconda3/envs/working/etc/conda/deactivate.d/ to remove the path, by adding this line at the end:

    export PATH=`echo -n $PATH | awk -v RS=: -v ORS=: '/isis/ {next} {print}' | sed 's/:$//'`;`
    

    Or whatever is appropriate for your shell if you aren't using the .sh file. If your ISIS environment is not called isis, then you need to replace that part in the awk line above. You can look in the activate.d/env_vars.sh file to see what it should be.

Adding the lines in steps 5 and 6 manually adds the 'bin/' directory of the ISIS environment to your path (step 5), and then manually removes it (step 6) on deactivation. If you are using some other shell, you may need to use a different syntax to add and remove these elements to and from your path.

Updating

To update to the newest version of ISIS, run conda update -c usgs-astrogeology isis

To update to our latest release candidate , run conda update -c usgs-astrogeology/label/RC isis

Note that for ISIS versions 3.10 and above, new versions and release candidates will only be available under the package name isis and conda update isis3 and conda update -c usgs-astrogeology -c usgs-astrogeology/label/RC isis3 will not work for additional updates. Instead, after installing an isis package, conda update isis should be used to update to a new version and conda update -c usgs-astrogeology/label/RC isis to update to a new release candidate.

Operating System Requirements

ISIS runs on many UNIX variants. ISIS does not run natively on MS Windows, although it has been successfully run on Windows 10 using the Windows Subsystem for Linux (WSL). Instructions for doing this can be found here. The UNIX variants ISIS has been successfully built on are:

  • Ubuntu 18.04 LTS
  • Mac OS X 10.13.6 High Sierra
  • Fedora 28
  • CentOS 7.2

ISIS may be run on other Linux or macOS operating systems then those listed above, but it has not been tested and is not supported.

Hardware Requirements

Here are the minimum hardware requirements

  • 64-bit (x86) processors
  • 2 GB RAM
  • 2.5 GB of disk space for ISIS binaries
  • 10 GB to 510 GB disk space for ISIS data
  • 10 GB to many TB disk space for processing images
  • A quality graphics card

To build and compile ISIS requires following the instructions listed below, which are given on the GitHub wiki page for the ISIS project:

The ISIS Data Area

Ancillary Data

Many ISIS applications require ancillary data. For example, calibration applications require flat files to do flat field corrections, and map projection applications require DTMs to accurately compute intersections. Due to its size, this data is stored in a separate directory called the ISIS Data Area. Any location can be used for the ISIS Data Area, the software simply requires that the ISISDATA environment variable is set to its location.

Structure of the ISIS Data Area

Under the root directory of the ISIS Data Area pointed to by the ISISDATA/ISIS3DATA environment variable are a variety of sub-directories. Each mission supported by ISIS has a sub-directory that contains mission specific processing data such as flat files and mission specific SPICE. There are also data areas used by more generic applications. These sub-directories contain everything from templates to test data.

Versions of the ISIS Data Area

In ISIS version 4.1.0 and later, several files previously stored in the data area closely associated with ISIS applications were moved into version control with the ISIS source code. To support the use of data in ISIS versions predating 4.1.0 the downloadIsisData application will need to download the data named legacybase. This is explained further in the Full ISIS Data Download section.

Size of the ISIS Data Area

If you plan to work with data from all missions, then the download will require about 520 GB for all the ancillary data. However, most of this volume is taken up by SPICE files. We have a Web service that can be used in lieu of downloading all of the SPICE files. This reduces the total download size to about 10 GB.

Full ISIS Data Download

Warning: if you are looking to download ISIS data via rsync, this is no longer supported. The rsync server isisdist.astrogeology.usgs.gov was shutdown in November 30, 2022 and replaced with an Amazon S3 storage bucket specified in rclone.conf. The outdated rsync download information can be found here and updated instructions for downloading ISIS data are provided below.

The ISIS Data Area is hosted on a combination of AWS S3 buckets and public http servers e.g. NAIF, Jaxa, ESA and not through conda channels like the ISIS binaries. This requires using the downloadIsisData script from within a terminal window within your Unix distribution, or from within WSL if running Windows 10. Downloading all mission data requires over 520 GB of disk space. If you want to acquire only certain mission data click here. To download all ISIS data files, continue reading.

To download all ISIS data, use the following command:

downloadIsisData all $ISISDATA

Note: this applicaion takes in 3 parameters in the following order <mission> <download destination> <rclone command>
For more usage, run downloadIsisData --help or downloadIsisData -h.

Note: The above command downloads all ISIS data including the required base data area and all of the optional mission data areas.

Partial Download of ISIS Base Data

This data area contains data that is common between multiple missions such as DEMS and leap second kernels. As of ISIS 4.1, the base data area is no longer required to run many applications as data such as icons and templates has been moved into the binary distribution. If you plan to work with any applications that use camera models (e.g., cam2map, campt, qview), it is still recommended you download the base data area. To download the base data area run the following commands:

downloadIsisData base $ISISDATA

Note: For accessing ISIS Data for versions of ISIS prior to ISIS 4.1.0, you must download the legacybase area and not the base area when using this application as shown below:

downloadIsisData legacybase $ISISDATA

Partial Download of Mission Specific Data

There are many missions supported by ISIS. If you are only working with a few missions then you can save disk space by downloading only those specific data areas. If you want to limit the download even further, read the next section about the SPICE Web Service. Otherwise jump to the mission specific sections.

ISIS SPICE Web Service

ISIS can now use a service to retrieve the SPICE data for all instruments ISIS supports via the internet. To use this service instead of your local SPICE data, click the WEB check box in the spiceinit program GUI or type spiceinit web=yes at the command line. Using the ISIS SPICE Web Service will significantly reduce the size of the downloads from our data area. If you want to use this new service, without having to download all the SPICE data, add the following argument to the mission-specific downloadIsisData command:

--exclude="kernels/**"

For example:

downloadIsisData cassini $ISISDATA --exclude="kernels/**"

You can also use include argument to partially download specific kernels. For example, download only cks and fks of LRO mission:

downloadIsisData lro $ISISDATA --include="{ck/**,fk/**}"

WARNING: Some instruments require mission data to be present for radiometric calibration, which is not supported by the SPICE Web Server, and some programs that are designed to run an image from ingestion through the mapping phase do not have an option to use the SPICE Web Service. For information specific to an instrument, see the documentation for radiometric calibration programs.

Mission Specific Data Downloads

For versions of ISIS prior to ISIS 4.1.0, please use the --legacy flag

Mission Command
Apollo 15 downloadIsisData apollo15 $ISISDATA
Apollo 16 downloadIsisData apollo16 $ISISDATA
Apollo 17 downloadIsisData apollo17 $ISISDATA
Cassini downloadIsisData cassini $ISISDATA
Chandrayaan 1 downloadIsisData chandrayaan1 $ISISDATA
Clementine 1 downloadIsisData clementine1 $ISISDATA
Dawn downloadIsisData dawn $ISISDATA
ExoMars downloadIsisData tgo $ISISDATA
Galileo downloadIsisData galileo $ISISDATA
Hayabusa 2 downloadIsisData hayabusa2 $ISISDATA
Juno downloadIsisData juno $ISISDATA
Kaguya downloadIsisData kaguya $ISISDATA
Lunar Orbiter downloadIsisData lo $ISISDATA
Lunar Reconnaissance Orbiter downloadIsisData lro $ISISDATA
Mars Exploration Rover downloadIsisData mer $ISISDATA
Mariner10 downloadIsisData mariner10 $ISISDATA
Messenger downloadIsisData messenger $ISISDATA
Mars Express downloadIsisData mex $ISISDATA
Mars Global Surveyor downloadIsisData mgs $ISISDATA
Mars Reconnaissance Orbiter downloadIsisData mro $ISISDATA
Mars Science Laboratory downloadIsisData msl $ISISDATA
Mars Odyssey downloadIsisData odyssey $ISISDATA
Near downloadIsisData near $ISISDATA
New Horizons downloadIsisData newhorizons $ISISDATA
OSIRIS-REx downloadIsisData osirisrex $ISISDATA
Rolo downloadIsisData rolo $ISISDATA
Rosetta downloadIsisData rosetta $ISISDATA
Smart1 downloadIsisData smart1 $ISISDATA
Viking 1 downloadIsisData viking1 $ISISDATA
Viking 2 downloadIsisData viking2 $ISISDATA
Voyager 1 downloadIsisData voyager1 $ISISDATA
Voyager 2 downloadIsisData voyager2 $ISISDATA

ISIS Test Data

ISIS is comprised of two types of tests, custom Makefile based tests, and GTest based tests. Those that are GTest based, make economical use of data that exists on the ISIS3 repo along with the source, so no special data is required to run those other than the ISIS data area. The Makefile tests depend on a separate source of data that consists of a few gigabytes of input and expected output data used for testing ISIS applications. The Makefile based tests use the ISISTESTDATA environment variable to know where the required data are located. The total size of this test data decreases as we work towards converting Makefile tests to GTests.

How to download the ISIS test data with rclone

Test data is hosted using Amazon S3 storage buckets. We recommend using rclone to pull the data into a local directory. You can download rclone using their instructions (see: https://rclone.org/downloads/) or by using an anaconda environment (see: https://docs.anaconda.com/anaconda/install/). If you already have an anaconda environment up, install rclone with: conda install –c conda-forge rclone

Once rclone is installed, with $ISISROOT set, simply run: rclone --config $ISISROOT/etc/isis/rclone.conf sync asc_s3:asc-isisdata/isis_testData/ $ISISTESTDATA where:

  • $ISISTESTDATA is the environment variable defining the location of the isis test data.
  • --config overwrites the default config path, you want to use the rclone config that ships with ISIS.
  • asc_s3: is the name of S3 configuration in the configuration file that ships with ISIS. This can be whatever you want to name it, in this case it is named remote.
  • asc-isisdata/isis_testData/ is the name of the S3 bucket you’re downloading from

$ISISTESTDATA should now contain a full clone of the ISIS test data for running Makefile based tests.

Notes:

  • Users can download specific files from the bucket by adding path data or file information to the first argument, that is, to download only the ‘base’ folder from the isis_testData bucket, the user could call: rclone sync remote:asc-isisdata/isis_testData/base
  • It is important that users understand the difference in rclone’s ‘sync’ and ‘copy’ methods. ‘copy’ will overwrite all data in the destination with data from source. ‘sync’ replaces only changed data.
  • Syncing / copying in either direction (local -> remote or remote -> local) results in any changed data being overwritten. There is no warning message on overwrite.

Installing older versions of ISIS


How do I install ISIS2?

If you are looking for ISIS2, please refer to the ISIS 2 Installation Guide for instructions on downloading and installing ISIS 2.

How do I install ISIS3.5.2 or earlier?

If you are looking for a version of ISIS prior to 3.6.0, please refer to the Legacy ISIS3 Installation Guide for instructions on downloading and installing ISIS, versions prior to 3.6.0

How do I access the ISISDATA download script with ISIS 7.0.0 or earlier

You can download the script and config file from the repo:

# install rclone 
conda install -c conda-forge rclone

# download the script and rclone config file
curl -LJO https://github.com/USGS-Astrogeology/ISIS3/raw/dev/isis/scripts/downloadIsisData

curl -LJO https://github.com/USGS-Astrogeology/ISIS3/raw/dev/isis/config/rclone.conf

# run the script as normal, using --config to point to where you downloaded the config file 
python downloadIsisData --config rclone.conf <mission> $ISISDATA

The script does not support python2, sometimes you need to explicitly use python3 with python3 downloadIsisData <mission> $ISISDATA --config rclone.conf

Semantic Versioning and Its Role in Describing the Software

In 2019, the ISIS project adopted semantic versioning via its second Request for Comment (RFC). Semantic versioning was adopted as a tool to help quickly describe how changes to the software impact users and developers. Versions of ISIS are now using a Major.Minor.Bug scheme (e.g., 7.1.0).

The Major, Minor and Bug numbers are in order of importance. The final (Bug) number is incremented whenever one or more bug fixes are included in a version. Neither users nor developers should see any changes in the way ISIS programs are called or how the API operates as the final (Bug) number increments.

The first two numbers indicate whether the change(s) are breaking or non-breaking. What is a breaking change? If a change to the API, defined as programs (e.g., spiceinit or cam2map or pds2isis) and some text output (e.g., CSV output, but not .txt), alters how a user calls the program or parses the program output in a way that a scripted solution would fail, that change would be considered a breaking change. In other words, if a CSV output file removed or renamed a column, that would be breaking. If a CSV file added a new column, that would not be breaking. Likewise, if an application spiceinit adds a new argument, that is non-breaking. If the change removes, reorders, or changes how the application (CLI) is called, the change is breaking.

Users

Users of ISIS benefit from semantic versioning because they can quickly determine whether or not an upgrade of their current version could include changes that would be breaking. When deciding whether or not to upgrade, users can safely assume that an upgrade of the minor version number will only add capabilities. Users should be more cautious with changes to the major version, as some breaking change(s) are included. How should a user proceed? Users should reference the Changelog to understand what changes have been made that necessitated an increase in the Major version number.

Developers

Developers writing against the ISIS API or writing code for submission to the ISIS project also benefit from semantic versioning. For the former use case, writing against ISIS, developer concerns are similar to user concerns. When has the API made of command line tools and program outputs changed? Does that change impact my pipeline or code? Do I need to adjust my work before updating versions (for example, to gain access to new features)? These questions are answered by checking the versioning and the Changelog.

Developers should ensure that changes that break the API are well-marked. Before making a breaking change to the API, we require an RFC to solicit input from the broader community. The RFC process allows impacted persons to discuss the change, propose alterations, and finally adopt or pause the inclusion of the change in the code base.

What update cadence does the project anticipate from users and developers?

The project is in the process of adopting a Long Term Support(LTS) model. Once fully adopted, the project assumes that either (1) users and developers will freeze the version they are using with no expectation of updates or (2) users and developers will update at either each LTS version increment (updating every 18 months) or work on the quarterly release (therefore updating every 3 months). Users and developers using the LTS or current release versions will benefit from bug fixes and new non-API breaking features.

isis3's People

Contributors

acpaquette avatar agoinsusgs avatar amystamile-usgs avatar astrokew78 avatar austinsanders avatar chkim-usgs avatar chrisryancombs avatar cneubauerusgs avatar dcookastro avatar emlee99 avatar gsn9 avatar jcwbacker avatar jessemapel avatar jlaura avatar jusflag avatar kaitlyndlee avatar kberryusgs avatar kelvinrr avatar kledmundson avatar krisbecker avatar ladoramkershner avatar makaylas avatar mosesastro avatar paarongiroux avatar rbeyer avatar scsides avatar sgstapleton avatar tgiroux avatar traciesucharski avatar twilson271828 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

isis3's Issues

Merge isis3_mosaic_tracking into cmake

  • Merge dev into isis3_mosaic_tracking
  • Run tests on isis3_mosaic_tracking build
  • Merge dev into cmake
  • Merge isis3_mosaic_tracking into cmake
  • Run tests on cmake build

Trouble with the Install Instructions for WSL (windows running Ubuntu 16.0.4 LTS)

Notes from Trent
Not perfect sailing here for install. I am trying the new recipe on WSL (windows running Ubuntu 16.04.4 LTS). I usually have to fight a little but this time I am stuck on a QT issue.

Steps in notes.

I tried this:

sudo apt-get update
sudo apt install x11-apps
sudo apt-get install lxde

But now I get a QT error when it appears QT is nicely available.
libQt5Core.so.5: version `Qt_5.9' not found (required by qview)

I googled and found this:

sudo apt-get install qt5-default

this still doesn’t work. Here is my QT version

qmake --version
Using Qt version 5.9.6 in /home/thare/anaconda/envs/isis3/lib
At this point I am stuck…

BTW, there a few more minor comments in the file also. But I will try on a typical Linux system also. Perhaps an Ubuntu or Centos new VM.

Thus far I do like the new install environment. Perhaps we might need a Troubleshooting section (for those odd cases as we roll this out). Perhaps linked to a Github Wiki or ...? I think "library" hell (aka DLL hell) will be our biggest issue getting all these library quirks ironed out.

I may have more comments on the wording, but just wanted to get an initial "I am stuck" back to you all.

update internal automated builds

The current cronjob needs to be updated for testing the cmake branch.

  • provide a new development systems list for fedora28, ubuntu18.04, and macOS10.13
  • add centos7 to list when development environment is working
  • make sure to build the cmake branch
  • use the buildIsisCmakeAllSys script for building
  • schedule at different time than our current nightly automated build (maybe 6pm?)

Linking error on CentOS 7.x

With the new cmake development environment linking fails on CentOS 7.x

commands:

cd ./isis
conda env create -n isis3 -f environment.yml
source activate isis3
mkdir build
cd build
cmake .. (cmake flags not included)
make
 

error:

[ 40%] Linking CXX shared library ../lib/libisis3.so
[ 40%] Built target isis3
Scanning dependencies of target voyager
[ 40%] Building CXX object objects/CMakeFiles/voyager.dir/voyager/objs/VoyagerCamera/VoyagerCamera.cpp.o
[ 40%] Linking CXX shared library ../lib/libvoyager.so
[ 40%] Built target voyager
Scannig dependencies of target voycal_app
[ 40%] Building CXX object objects/CMakeFiles/voycal_app.dir/voyager/apps/voycal/voycal.cpp.o
[ 40%] Linking CXX executable ../bin/voycal
../lib/libisis3.so: error: undefined reference to 'pcl::io::load(std::string const&, pcl::PolygonMesh&)'
../lib/libisis3.so: error: undefined reference to 'geos::io::WKTReader::read(std::string const&)'
../lib/libisis3.so: error: undefined reference to 'geos::io::WKTWriter::write(geos::geom::Geometry const*)'
../lib/libisis3.so: error: undefined reference to 'geos::geom::Coordinate::toString() const'
../lib/libisis3.so: error: undefined reference to 'geos::operation::valid::TopologyValidationError::toString()'
../lib/libisis3.so: error: undefined reference to 'google::protobuf::internal::fixed_address_empty_string'
../lib/libisis3.so: error: undefined reference to 'google::protobuf::internal::WireFormatLite::ReadBytes(google::protobuf::io::CodedInputStream*, std::string*)'
../lib/libisis3.so: error: undefined reference to 'google::protobuf::io::CodedOutputStream::WriteStringWithSizeToArray(std::string const&, unsigned char*)'
../lib/libisis3.so: error: undefined reference to 'google::protobuf::internal::AssignDescriptors(std::string const&, google::protobuf::internal::MigrationSchema const*, google::protobuf::Message const* const*, unsigned int const*, google::protobuf::MessageFactory*, google::protobuf::Metadata*, google::protobuf::EnumDescriptor const**, google::protobuf::ServiceDescriptor const**)'
../lib/libisis3.so: error: undefined reference to 'google::protobuf::MessageFactory::InternalRegisterGeneratedFile(char const*, void (*)(std::string const&))'
../lib/libisis3.so: error: undefined reference to 'google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::string const&, google::protobuf::io::CodedOutputStream*)'
../lib/libisis3.so: error: undefined reference to 'google::protobuf::Message::GetTypeName() const'
../lib/libisis3.so: error: undefined reference to 'google::protobuf::Message::InitializationErrorString() const'
../lib/libisis3.so: error: undefined reference to 'google::protobuf::internal::OnShutdownDestroyString(std::string const*)'
collect2: error: ld returned 1 exit status
make[2]: *** [objects/CMakeFiles/voycal_app.dir/build.make:290: bin/voycal] Error 1
make[1]: *** [CMakeFiles/Makefile2:2806: objects/CMakeFiles/voycal_app.dir/all] Error 2
make: *** [Makefile:141: all] Error 2

Improve findfeature's overlap pre-processing

Right now, findfeatures does very rudimentary checks for overlaps between images. This has been worked around by using isisminer's overlap calculations and filtering. In order to make findfeatures more usable without isiminer, and to help handle errors in isisminer configs more gracefully, we should add the ability to recheck image footprint overlaps in findfeatures.

This is coming largely from comments on #556

Installation documentation for isis3.6.0 via conda

This issue can be worked on by multiple people. Tyler is currently iterating on the user-oriented installation guide (PR #443 ).

Update and review installation documentation for developers (in-house & external) and users.

The developer documentation is located on this GitHub's wiki.

The user documentation is our install guide hosted on our website (https://isis.astrogeology.usgs.gov)

User documentation:

  • Describes supported operating systems
  • Describes how to download isis3.6.0
  • Describes how to download isis3.6.0 data
  • Describes how to set up Linux/macOS environment for running isis3 applications

Developer documentation:

  • Describes operating systems supported for development
  • Describes how to download isis3.6.0 and dependencies for development
  • Describes how to download isis3.6.0 data for development
  • Describes how to download isis3.6.0 test data
  • Describes how to build and test isis3.6.0 (using cmake)
  • Describes PR process and expectations (CONTRIBUTING.md)

isis3 version defined in multiple places

The isis3 version is defined in 3 places that I could find:

  • isis/version contains the version number, date, and build status (alpha, beta, stable)
  • isis/CMakeLists.txt contains VERSION, VERSION_DATE, and RELEASE_STAGE variables
  • isis/CMakeLists.txt hard-codes the library version number (libisis3.6.0.${SO})

These should be consolidated so we don't have to maintain 3 places for versioning.

Also, the isis3_dependencies repo defines versioning for isis3 in its recipes/isis/meta.yaml file.

findfeatures - cv::Exception

data: /work/users/lweller/Isis3Tests/FindFeatures/cvException

isisversion: isis3.6.0rc and isis3beta2018-09-18 where I initially encountered the problem via a cluster run. Was hoping this was a node thing....

error:

terminate called after throwing an instance of 'cv::Exception'
  what():  /usgs/pkgs/local/v006/src/opencv/opencv-3.1.0/modules/core/src/lapack.cpp:798: error: (-215) type == CV_32F || type == CV_64F in function invert

./run.csh: line 2:  7791 Aborted                 (core dumped) 

command:

findfeatures algorithm=fast/brief maxthreads=7 match=N1500060756_2_callptr.cub fromlist=N1500060756_2_callptr_fromlist.lis fastgeom=true geomtype=camera epitolerance=3.0 ratio=0.65 hmgtolerance=3.0 networkid=N1500060756_2_callptr pointid='N1500060756_2_callptr_?????' onet=N1500060756_2_callptr.net tolist=N1500060756_2_callptr_cubes.lis tonotmatched=N1500060756_2_callptr_notmatched.lis description='Create image-image control network' debug=true debuglog=N1500060756_2_callptr.log

Merge bundle xyz into dev

Prerequisites:

  • dev merged into bundle xyz
  • bundle xyz is approved (by Debbie/Ken)

Requirements:

  • bundle xyz merged into cmake
  • builds and tests successfully on Fedora28, Ubuntu18.04, and macOS10.13

Create isis3.6.0 release candidate

Prerequisites:

  • Merge cmake into dev -- #457

Requirements:

  • create release branch (this is "freezing our code")
  • consider creating release-candidate tag
  • build and run tests
    • Fedora28
    • Ubuntu18.04
    • macOS10.13
  • upload Linux and macOS builds to anaconda
    • make sure to set version number appropriately (3.6.0-rc.0 or something like that) in meta file
  • Document these steps

findfeatures - "Failed to get geometry mapping" error

Running findfeatures via isisminer and cluster jobs using isis3beta2018-09-18 (and I think last weeks run was under the beta public release - error there as well).

I get the following error for 7 images:
Program = findfeatures
Class = "PROGRAMMER ERROR"
Code = 3
Message = "Failed to get geometry mapping for

See example under /work/users/lweller/Isis3Tests/FindFeatures/GeometryError/. LOG file in the top directory is stdout/err captured via slurm (ignore the rsync failures - directories didn't exist).

The input fromlist, debuglog and isisminer _matcher.cmd files are under the subdirectory N1489047533_2_Network/. The match image with full path can be found in the LOG, print.prt and matcher.cmd files. Any reference file on my /scratch area have since been moved, but everything necessary to duplicate is available.

I have not tried to rerun these failed images outside the cluster environment, but I suspect they would fail as well on the astrovm.

Anaconda/ISIS 3.6.0 installation issue

I had the same issue with having to add the conda-forge channel, but once past that, the install step fails with a dependency conflict:

bash-3.2$ conda install -c usgs-astrogeology isis3
Solving environment: failed

UnsatisfiableError: The following specifications were found to be in conflict:
  - isis3 -> armadillo==8.200.0 -> arpack -> *[track_features=blas_openblas]
  - qtconsole
Use "conda info <package>" to see the dependencies for each package.

Not sure how to proceed. This is on MacOS 10.13.6 (High Sierra)

Update README.md with more information about development

Update README so it contains:

  1. Information on where to install ISIS3 to for end-users ("If you are looking to install ISIS3 to run its applications, please see this installation guide"), which would point to our website's update installation guide.

  2. Many repos have README's that tell developers how to get started setting up their environment to develop in the project, including installation of dependencies and compilation instructions (we have a lot of this information in the wiki already, so we could migrate that here).

  3. It may be useful to put a link to the Contributing.md document for developers.

Feel free to comment for any ideas or suggestions.

Documentation on building ISIS3 don't match reality

I'm trying to build ISIS3 following the instructions in https://github.com/USGS-Astrogeology/ISIS3/wiki/Developing-ISIS3-with-cmake . At some point you say:

Set your ISISROOT to /the/path/to/your/build:
    setisis .

But there is no command setisis in my current environment.

I could assume you are trying to say $ set ISISROOT ., and considering the reader is using csh, but to this point, I learned that assuming may not be a good idea.

So, what should I do with this

Rewrite Color unit test in gtest

I have a PR opened for this: #532. Was hoping to get feedback on whether these tests should be parameterized? The PR includes the parameterized version of the tests, but I also have a non-parameterized approach in the code that is commented-out.

Pluto and Charon not in pdsImageProjection.trn

This isn't about the code in this repo, but about the contents of one of the files in $ISIS3DATA, specifically: $ISIS3DATA/base/translations/pdsImageProjection.trn

In the 'TargetName' group, neither Pluto nor Charon appear. Its been three years since New Horizons flew by, maybe time for those to be in there.

How do we handle dependency changes?

We can handle dependency change in a channel like conda-forge by calling out exact versions of our dependencies, which we do now (see cmake branch's environment.yml file).


However, what do we do if requested package version is broken (see #446)?

  1. How do we handle when a channel (e.g. conda-forge) hosts a specific version of a package we require and it has its label edited to something other than main?

  2. What is conda-forge's process for dealing with broken labels? What does broken mean? Does it mean there is a known bug in curl7.55.1, or that conda-forge's build of that version is broken?

  3. Should our version requirements be exact (X.Y.Z with build number), a little bit flexible (>= X.1. < X.2), or more generic?

  4. How do other recipe maintainers, like conda-forge, handle dependency changes for their packages they host)?

Finish Code Review Checklist

We need to finish our code review checklist for ISIS3. I've copied it out of our google doc and into the wiki so it's publicly available. Please take a minute and read it over. Any questions, comments, proposed edits can be discussed here.

Figure out why jigsaw test is giving different output on the same OS

The jigsaw test pole-ra-dec-w0-wDot-triaxial-radii is giving different output on different machines that are running MacOS 10.13. Prog27 and algol are giving the same output, while my machine is different.
Currently, a README.md file exists in the input saying that we know of this problem, however, it would be nice to know why this is happening. See the files below to see output.

Other output:
pole-ra-dec-w0-wDot-triaxial-radii_bundleout.txt

Prog27:
prog27Output.txt

FIND_FORTRAN not defined on Ubuntu

Using the conda dependencies, configuration fails with a FORTRAN_LIBRARY not defined error. Both the conda env and the underlying OS have libgfortran.so.3 installed. It looks like the error is being caused within the FindCholmod.cmake script.

Cannot install isis 3.6.0 with Anaconda

Hi there,

I'm attempting to follow the new installation instructions sent out with the e-mail today about the new release. When I enter:

conda install -c usgs-astrogeology isis3

I receive the following error message:

"Solving environment: failed

PackagesNotFoundError: The following packages are not available from current channels:

  • isis3
  • krb5==1.14.2=0
  • isis3
  • sqlite==3.13.0=1
  • isis3
  • mesalib==17.2.0=0
  • isis3
  • eigen==3.3.3=0
  • isis3
  • blas==1.1=openblas
  • isis3
  • libtiff==4.0.9=0
  • isis3
  • jpeg==9b=2
  • isis3
  • cspice==66-0
  • isis3
  • x264==20131218
  • isis3
  • xorg-kbproto==1.0.7=1
  • isis3
  • xorg-libxi
  • isis3
  • bzip2==1.0.6=1
  • isis3
  • cmake==3.9.1=0
  • isis3
  • geos==3.5.1
  • isis3
  • xorg-libsm
  • isis3
  • libxml2==2.9.7=0
  • isis3
  • mysql-connector-c==6.1.6=0
  • isis3
  • gmp==6.1.2=0
  • isis3
  • openblas==0.2.19=2
  • isis3
  • superlu==5.2.1=blas_openblas_201
  • isis3
  • xorg-libice
  • isis3
  • geotiff==1.4.2=1
  • isis3
  • armadillo==8.200.0
  • isis3
  • xorg-libx11==1.6.4=6
  • isis3
  • embree==2.14.0=0
  • isis3
  • suitesparse==4.5.4=blas_openblas_200
  • isis3
  • doxygen==1.8.14=0
  • isis3
  • nanoflann==1.2.2
  • isis3
  • nn==1.86.0=2
  • isis3
  • hdf5==1.8.18=2
  • isis3
  • openssl==1.0.2n=0
  • isis3
  • gsl==2.2.1=blas_openblas_3
  • isis3
  • icu==58.2=0
  • isis3
  • curl==7.60.0=0

Current channels:

Any idea what might be causing the error, and how I might fix it?

Thanks, Catherine

ISIS3/cmake curl==7.55.1=0 broken

When trying to set up the isis3 dependencies environment from our environment.yml file, the following error is issued:

ResolvePackageNotFound: 
  - curl==7.55.1=0

Looking at conda-forge's curl packages, the linux-64/curl-7.55.1-0.tar.bz2 file has the broken label. All of the linux 7.55.1-0 versions have the broken label, so it will not be found by conda using our environment specification (conda looks for main label packages).

This can be fixed quickly by changing the version to a higher package version in the main label hosted by conda-forge.

However, this potentially brings up some questions. I'll post these in a separate issue.

$ISISDATA under version control

This is piggybacking off of #350:

When I look at the base data area, I see that the translations are ~420k of test files, applications are 28K of text files, and icons are ~3MB of pngs. Why aren't we keeping these under version control with the source? If the concern is the pngs, we can convert to SVG.

If this were the case, @rbeyer could submit a PR (or we could PR in the fix just as easily) to address #350.

Merge cmake into dev

Prerequisites:

  • bundle xyz merged into cmake -- #455
  • isis3_mosaic_tracking merged into cmake -- #458
  • development applications integrated into cmake -- #461
  • outstanding PRs needed in release merged into dev
    • PostgreSQL -- #440
    • Clementine -- #450
    • isis3 version update -- #438
    • continue through rest of outstanding PRs...

Requirements:

  • merge dev into cmake
  • builds and tests successfully on:
    • Fedora28
    • Ubuntu18.04
    • macOS10.13
  • PR cmake into dev
    • describe the changes listed above in the PR
    • reference appropriate GitHub issues
    • reference Redmine issues (5520 -- integrate cmake ; 5521 -- integrate development applications)
    • reference Redmine issues for process mosaic tracking -- add ticket number here
    • reference Redmine issues for bundle xyz -- add ticket number here

There is a lot of housekeeping to do because of simultaneously creating new infrastructure issues with GitHub issues and addressing existing Redmine issues.

isis3.6.0 stable

Prerequisites:

  • release candidate -- #460

Requirements:

  • address any major issues in the release candidate

    • if dev has a patch fix, cherry-pick into the release branch
    • if release branch (release candidate) has issue, cherry-pick into dev
  • Supports CentOS7 for development

  • Post notification about release in forum / news

  • Document this process as you go

ISIS3/cmake PostgreSQL Missing

It appears the PostgreSQL library is not installed in the Anaconda isis3 environment. This means database access in ISIS3 (and this environment) to PostgreSQL databases may be broken. Specifically, the runtime dependencies for the Qt SQL PostgreSQL driver are:

zion[326]: otool -L ~/miniconda3/envs/isis3/plugins/sqldrivers/libqsqlpsql.dylib
~/miniconda3/envs/isis3/plugins/sqldrivers/libqsqlpsql.dylib:
        @rpath/../plugins/sqldrivers/libqsqlpsql.dylib (compatibility version 0.0.0, current version 0.0.0)
        @rpath/libQt5Sql.5.dylib (compatibility version 5.9.0, current version 5.9.6)
        /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
        @rpath/libQt5Core.5.dylib (compatibility version 5.9.0, current version 5.9.6)
        **@rpath/libpq.5.dylib (compatibility version 5.0.0, current version 5.10.0)**
        @rpath/libc++.1.dylib (compatibility version 1.0.0, current version 1.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.50.4)

The highlighted PostgreSQL library (libpq) is nowhere to be found in the Python isis3 env. Looks like simply installing PostgreSQL will solve this problem.

FYI, Sqlite and MySQL looks to be intact.

Spyder and ISIS3 conflict on MacOS High Sierra

Installed both Anaconda and ISIS.

ISIS worked perfect.

When trying to launch Spyder via the terminal, get the following wrong message:

——————————————————————————————————————

(base) 192:~ zhiyongxiao$ spyder
objc[8381]: Class RunLoopModeTracker is implemented in both /Applications/anaconda3/envs/python36/lib/libQt5Core.5.dylib (0x1097d0a80) and /ISIS3/isis/3rdParty/lib/QtCore.framework/Versions/5/QtCore (0xb16707980). One of the two will be used. Which one is undefined.
objc[8381]: Class NotificationReceiver is implemented in both /Applications/anaconda3/envs/python36/lib/libQt5Widgets.5.dylib (0xb0c82c1c8) and /ISIS3/isis/3rdParty/lib/QtWidgets.framework/Versions/5/QtWidgets (0xb16e71418). One of the two will be used. Which one is undefined.
objc[8381]: Class QCocoaPageLayoutDelegate is implemented in both /Applications/anaconda3/envs/python36/lib/libQt5PrintSupport.5.dylib (0xb12064ef0) and /ISIS3/isis/3rdParty/lib/QtPrintSupport.framework/Versions/5/QtPrintSupport (0xb169aaec0). One of the two will be used. Which one is undefined.
objc[8381]: Class QCocoaPrintPanelDelegate is implemented in both /Applications/anaconda3/envs/python36/lib/libQt5PrintSupport.5.dylib (0xb12064f40) and /ISIS3/isis/3rdParty/lib/QtPrintSupport.framework/Versions/5/QtPrintSupport (0xb169aaf10). One of the two will be used. Which one is undefined.
QObject::moveToThread: Current thread (0x7fa115c41eb0) is not the object's thread (0x7fffb1218380).
Cannot move to target thread (0x7fa115c41eb0)

You might be loading two sets of Qt binaries into the same process. Check that all plugins are compiled against the right Qt binaries. Export DYLD_PRINT_LIBRARIES=1 and check that only one set of binaries are being loaded.
This application failed to start because it could not find or load the Qt platform plugin "cocoa"
in "".

Available platform plugins are: cocoa, minimal, offscreen.

Reinstalling the application may fix this problem.
/Applications/anaconda3/envs/python36/bin/pythonw: line 3:  8381 Abort trap: 6           /Applications/anaconda3/envs/python36/python.app/Contents/MacOS/python "$@"

——————————————————————————————————————

Please advice.

Incorrect default for $ISISROOT in 3.6.0 Startup Scripts

It looks like /usgs/pkgs/isis3.6.0/isis/scripts/isis3Startup.sh is using the incorrect default for $ISISROOT and this is causing the wrong bin directory to be set. As I understand it, the correct default for $ISISROOT should be /usgs/pkgs/isis3.6.0/install

However, when I run source /usgs/pkgs/isis3.6.0/isis/scripts/isis3Startup.sh, my $PATH gets updated to include /usgs/pkgs/isis3/isis/bin, but this directory no longer exists in 3.6.0. As a result, I can't run any ISIS3 programs.

I haven't tested the analogous startup script for CSH, so I don't know if that script has the same issue. Either way, this should only affect internal USGS users because external users are expected to install 3.6.0 through conda. I have confirmed that this has broken PDS Services (MAP2 and POW).

Update "Managing Custom ISIS3 Dependencies" Wiki Page

https://github.com/USGS-Astrogeology/ISIS3/wiki/Managing-Custom-ISIS-Dependencies-(WIP)

  • Document describes how to set up environment to be able to build these recipes
  • Document describes what the recipes are
  • Document describes what the build.sh, meta.yaml, and metal.yaml.tmpl are
  • Document describes how to build locally using the python helper script
  • Document describes how to upload a package to the usgs-astrogeology anaconda site
  • Document points to official documentation for conda

Cannot create an ISIS3 conda environment using the instructions on the wiki

Using a fresh install of anaconda on a new laptop running Fedora 28, I tried to create a conda environment using the environment.yml file in the ISIS3 directory of a fresh git clone and the error message below was the result.

Has anyone else used the environment.yml file to setup their environment or is everyone else using something internal? And, is there a specific version of conda I should be using? (I'm using 4.5.11)

(base) bash-4.4$ conda env create -f environment.yml -n ISIS3
Solving environment: failed

# >>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<<<<<<<<<<<<

    Traceback (most recent call last):
      File "/home/kberry/anaconda3/lib/python3.7/site-packages/conda/exceptions.py", line 819, in __call__
        return func(*args, **kwargs)
      File "/home/kberry/anaconda3/lib/python3.7/site-packages/conda_env/cli/main.py", line 74, in do_call
        exit_code = getattr(module, func_name)(args, parser)
      File "/home/kberry/anaconda3/lib/python3.7/site-packages/conda_env/cli/main_create.py", line 108, in execute
        installer.install(prefix, pkg_specs, args, env)
      File "/home/kberry/anaconda3/lib/python3.7/site-packages/conda_env/installers/conda.py", line 35, in install
        unlink_link_transaction = solver.solve_for_transaction(prune=getattr(args, 'prune', False))
      File "/home/kberry/anaconda3/lib/python3.7/site-packages/conda/core/solve.py", line 518, in solve_for_transaction
        force_remove, force_reinstall)
      File "/home/kberry/anaconda3/lib/python3.7/site-packages/conda/core/solve.py", line 451, in solve_for_diff
        final_precs = self.solve_final_state(deps_modifier, prune, ignore_pinned, force_remove)
      File "/home/kberry/anaconda3/lib/python3.7/site-packages/conda/core/solve.py", line 180, in solve_final_state
        index, r = self._prepare(prepared_specs)
      File "/home/kberry/anaconda3/lib/python3.7/site-packages/conda/core/solve.py", line 592, in _prepare
        self.subdirs, prepared_specs)
      File "/home/kberry/anaconda3/lib/python3.7/site-packages/conda/core/index.py", line 215, in get_reduced_index
        new_records = query_all(spec)
      File "/home/kberry/anaconda3/lib/python3.7/site-packages/conda/core/index.py", line 184, in query_all
        return tuple(concat(future.result() for future in as_completed(futures)))
      File "/home/kberry/anaconda3/lib/python3.7/site-packages/conda/core/subdir_data.py", line 95, in query
        self.load()
      File "/home/kberry/anaconda3/lib/python3.7/site-packages/conda/core/subdir_data.py", line 149, in load
        _internal_state = self._load()
      File "/home/kberry/anaconda3/lib/python3.7/site-packages/conda/core/subdir_data.py", line 246, in _load
        _internal_state = self._process_raw_repodata_str(raw_repodata_str)
      File "/home/kberry/anaconda3/lib/python3.7/site-packages/conda/core/subdir_data.py", line 369, in _process_raw_repodata_str
        info['fn'] = fn
    TypeError: 'NoneType' object does not support item assignment

`$ /home/kberry/anaconda3/bin/conda-env create -f environment.yml -n ISIS3`

  environment variables:
                 CIO_TEST=<not set>
  CONDA_AUTO_UPDATE_CONDA=false
        CONDA_DEFAULT_ENV=base
                CONDA_EXE=/home/kberry/anaconda3/bin/conda
             CONDA_PREFIX=/home/kberry/anaconda3
    CONDA_PROMPT_MODIFIER=(base)
         CONDA_PYTHON_EXE=/home/kberry/anaconda3/bin/python
               CONDA_ROOT=/home/kberry/anaconda3
              CONDA_SHLVL=1
                  MANPATH=/usr/share/lmod/lmod/share/man:
               MODULEPATH=/etc/modulefiles:/usr/share/modulefiles:/usr/share/modulefiles/Linux:/
                          usr/share/modulefiles/Core:/usr/share/lmod/lmod/modulefiles/Core
                     PATH=/home/kberry/anaconda3/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/b
                          in:/bin:/usr/local/sbin:/usr/sbin
       REQUESTS_CA_BUNDLE=<not set>
            SSL_CERT_FILE=<not set>
            XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
         XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session1

     active environment : base
    active env location : /home/kberry/anaconda3
            shell level : 1
       user config file : /home/kberry/.condarc
 populated config files : 
          conda version : 4.5.11
    conda-build version : 3.15.1
         python version : 3.7.0.final.0
       base environment : /home/kberry/anaconda3  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/free/linux-64
                          https://repo.anaconda.com/pkgs/free/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/pro/linux-64
                          https://repo.anaconda.com/pkgs/pro/noarch
          package cache : /home/kberry/anaconda3/pkgs
                          /home/kberry/.conda/pkgs
       envs directories : /home/kberry/anaconda3/envs
                          /home/kberry/.conda/envs
               platform : linux-64
             user-agent : conda/4.5.11 requests/2.19.1 CPython/3.7.0 Linux/4.18.10-200.fc28.x86_64 fedora/28 glibc/2.27
                UID:GID : 76399:1800
             netrc file : None
           offline mode : False


An unexpected error has occurred. Conda has prepared the above report.
If submitted, this report will be used by core maintainers to improve
future releases of conda.
Would you like conda to send this report to the core maintainers?

ISIS3/cmake Binary Distribution Strategy

Not entirely sure what the plans are for a binary distribution of ISIS3/cmake are (exclusively through Anaconda?) but it appears currently all the runtime library dependencies are linked to the Anaconda isis3 env install. Specifically, there are no runtime libraries or plugins in $ISISROOT/3rdParty. This may cause problems for system-wide distributions for ground data processing systems as the individual/account used to pull ISIS3 and install in a traditional setting may not be accessible in all situations causing runtime breakage.

I tested a potential solution on my Mac that moved aside the ~/miniconda/envs/isis3/lib to lib.org and then simlinked $ISISROOT/3rdParty/lib -> ~/miniconda/envs/isis3/lib.org (qview, after the move and before the simlink, failed as expected with a library load error). This worked great! Which means adding a “make dist” or “make deploy” target that simply copies/installs all of ~/miniconda/envs/isis3/lib and plugins to 3rdParty like was done before, or something similar, appears to work just fine.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.