2. Installation
The Recipe System is the automation part of DRAGONS. DRAGONS is available as a conda package. The installation instructions below will install all the necessary dependencies.
The use of the bash
shell is recommended.
2.1. Install Miniforge
We recommend using Miniforge instead of Anaconda. It is smaller and installs contents from conda-forge which is now our main channel for python packages. The overall size of the installation will therefore be much smaller than a full Anaconda installation. The instructions below are for Miniforge.
Anaconda will work just fine too if you prefer or have a business need for it. We just don’t provide instructions for its installation. Whether you use Miniforge or Anaconda will not impact the DRAGONS installation as long as your using the correct conda channels.
2.1.1. Download and install Miniforge
If you already have Miniforge installed (or Anaconda and don’t want to move to Miniforge), you can skip this step and go to the Install DRAGONS section below.
If not, then your first step is to get and install Miniforge. You can download it from the Miniforge github page. The direct links to the Linux and Mac installer are provided in the table below.
Miniforge Page: https://github.com/conda-forge/miniforge |
Linux x64_86 Installer: Miniforge3-Linux-x86_64.sh |
MacOSX x64_86 Installer: Miniforge3-MacOSX-x86_64.sh |
Warning
arm64 MacOS Users!!! (That’s M1/M2/M etc) DRAGONS is not yet built with the arm64 architecture. Some dependencies are also either not available for arm64 or not reliable. The x86 build will work. All you need to do is install the x64_86 version of Miniforge (or Anaconda). That way, the x64_86 binaries will automatically be seeked, and found.
arm64 machines can run x86 binaries via the Rosetta interface. It is seamless.
The current version of DRAGONS has been tested with Python 3.10. At the time of this writing, Miniforge installs Python 3.10 by default. (Other version of Python can subsequently be installed.)
To install, run the installer that you have downloaded.
Type the following in a terminal, replacing the .sh
file name with the name
of the file you have downloaded.
$ /bin/bash Miniforge3-MacOSX-x86_64.sh
($
indicates the terminal prompt.)
Note
For the arm64 Macs, it will tell you that the architecture does not match. That’s okay, type yes to accept.
At "Do you wish to update your shell profile to automatically initialize conda?"
,
answer no. The script sometimes put the “conda init” information in the
wrong shell file (observed on Mac). To avoid confusion do the initialization
manually:
$ ~/miniforge3/bin/conda init
Note
To prevent the “base” environment from loading automatically, do:
$ conda config --set auto_activate_base false
2.1.2. Verify Miniforge installation
Make sure that ~/miniforge3/bin/conda
is in your PATH
by doing:
$ which conda
It should show a path with miniforge3
, not anaconda
.
Note
If you had a previous installation of Anaconda, you might need to find the Anaconda’s “conda initialize” block and comment it out. Look in files like .bash_profile, .bashrc, .zshrc.
The conda init command should have added conda configurations to the
~/.bash_profile
for you (or .bashrc
, .zshrc
). If conda
is not found,
try:
$ source ~/.bash_profile
The code Miniforge adds to the .bash_profile
will automatically activate
Miniforge. To activate or deactivate Miniforge manually:
$ conda activate
$ conda deactivate
2.2. Install DRAGONS
With Miniforge installed and ready to go, now we can install DRAGONS and the necessary dependencies.
Add conda-forge and the Gemini channel. Those channels host the conda packages that we will need.
$ conda config --add channels conda-forge
$ conda config --add channels http://astroconda.gemini.edu/public
The content of the ~/.condarc file should look like this (the order matters):
channels:
- http://astroconda.gemini.edu/public
- conda-forge
The next step is to create a virtual environment and install the DRAGONS software and its dependencies in it. The name of the environment can be anything you like. Here we use “dragons” as the name and we request Python 3.10.
$ conda create -n dragons python=3.10 "numpy<2" dragons ds9
Note
DRAGONS is not currently compatible with the recent release of numpy version 2. We’re working on it. In the meantime, ensure that numpy v1 is installed.
To use this environment, activate it:
$ conda activate dragons
You will need to activate the environment whenever you start a new shell.
If you are planning to use it all the time, you might want to add the
command to your .bash_profile
, after the “conda init” block.
2.3. Configure DRAGONS
DRAGONS requires a configuration file dragonsrc
that is located in
~/.dragons/
:
$ cd ~
$ mkdir .dragons
$ cd .dragons
$ touch dragonsrc
Open dragonsrc
with your favorite editor and add these lines:
[interactive]
browser = safari
[calibs]
databases = ~/.dragons/dragons.db get
The browser can be set to any of “safari”, “chrome”, or “firefox”, depending on your preferences. The path and name of the calibration database can be anything, as long at the path exists. The “get” means that DRAGONS will get calibrations from that database. The “store” option can be added after the “get” to have DRAGONS automatically add new processed calibrations to the database. See any of the tutorials to learn how to use the calibration manager.
On a new installation, you will need to configure ds9
buffer
configurations:
$ cd ~
$ cp $CONDA_PREFIX/lib/python3.10/site-packages/gempy/numdisplay/imtoolrc ~/.imtoolrc
$ vi .bash_profile # or use your favorite editor
Add this line to the .bash_profile:
export IMTOOLRC=~/.imtoolrc
It is recommended to increase the Operating System limit on the number of opened files. We have seen an increase in reports of the error “Too many open files” when reducing spectroscopy data.
In your .bash_profile, add the following line to overcome that OS limitation:
ulimit -n 1024
2.4. Test the installation
Start up the Python interpreter and import astrodata
and the
gemini_instruments
packages:
$ python
>>> import astrodata
>>> import gemini_instruments
If the imports are successful, i.e. no errors show up, exit Python (Ctrl-D).
Now test that reduce
runs. There may be some delay as package modules
are compiled and loaded:
$ reduce --help
This will print the reduce
help to the screen.
If you have Gemini FITS files available, you can test that DRAGONS is functioning as expected as follow (replace the file name with the name of your file):
$ reduce N20180106S0700.fits -r prepare
If all is well, you will see something like:
--- reduce, v3.1.0 ---
All submitted files appear valid
Found 'prepare' as a primitive.
================================================================================
RECIPE: prepare
================================================================================
PRIMITIVE: prepare
------------------
PRIMITIVE: validateData
-----------------------
.
PRIMITIVE: standardizeStructure
-------------------------------
.
PRIMITIVE: standardizeHeaders
-----------------------------
PRIMITIVE: standardizeObservatoryHeaders
----------------------------------------
Updating keywords that are common to all Gemini data
.
PRIMITIVE: standardizeInstrumentHeaders
---------------------------------------
Updating keywords that are specific to NIRI
.
.
.
Wrote N20180106S0700_prepared.fits in output directory
reduce completed successfully.