This page assumes you are working standalone on your own laptop or desktop. To get started using Firefly inside the LSST Science Platform, see Getting Started.

Using Firefly in a standalone environment

Using lsst.display.firefly in a standalone environment, such as your laptop or desktop, is a supported use case. This page lays out how to use Docker to set up a fully functional environment to use the LSST Science Pipelines together with Firefly on your own machine.

Installing a Docker image of Science Pipelines

Instructions for using Docker images of the LSST Science Pipelines are available on the pipelines.lsst.io site. These images contain the Science Pipelines software (known colloquially as “the stack”) but do not contain Jupyterlab or the Firefly extension for Jupyterlab. This section shows how to install all these pieces for the example of the sixth weekly build of 2019, assuming you have already installed Docker and have it available on your machine.

First, change your directory to one that you want to mount inside your Docker container. Then, install the weekly build, taking care to leave ports open for Jupyterlab and optionally for other services.

docker run -itd -p 9888:9888 -p 9889:9889 -p 9890:9890 -v `pwd`:/home/vagrant/mnt --name lsst_w_2019_06 lsstsqre/centos:7-stack-lsst_distrib-w_2019_06

You will be able to use docker stop and docker start together with the name lsst_w_2019_06 to start and stop your Science Pipelines container.

Second, in a terminal window on your machine, open a shell inside the container.

docker exec -it lsst_w_2019_06 /bin/bash

From the container’s shell, set up Science Pipelines which includes Python and the conda distribution manager.

source /opt/lsst/software/stack/loadLSST.bash
setup lsst_distrib

This third step is needed only the first time you are setting up a Science Pipelines container, to install Jupyterlab and the Firefly Jupyterlab extension.

conda install jupyterlab nodejs ipywidgets
npm install —global babel-cli
jupyter labextension install @jupyter-widgets/jupyterlab-manager
jupyter labextension install jupyter_firefly_extensions
pip install jupyter_firefly_extensions
jupyter serverextension enable --py jupyter_firefly_extensions

Running a Docker image of Firefly

The commands in this section are run in a terminal on your machine, and not inside the container’s shell.

Start a Firefly server with 8 GB of memory on port 8080:

docker run -p 8080:8080 -e "MAX_JVM_SIZE=8G" --rm ipac/firefly:lsst-dev

In this case, the URL for Firefly will be http://localhost:8080/firefly.

Alternatively, to run it in the background on port 8090, saving logging information to a file:

docker run -p 8090:8080  -e "MAX_JVM_SIZE=8G" --rm ipac/firefly:lsst-dev >& my.log &

Useful Docker commands may be found in this cheat sheet.

Starting Jupyterlab

The commands in this section are to be used in your container’s shell. - For the Firefly Jupyter extension to work, you must set an environment variable or edit a configuration file to indicate how to connect to your Firefly server. To enable callbacks to work properly, it is recommended to find the network address of your machine and use that to set the FIREFLY_URL environment variable. On a Macintosh computer, that is found in System Preferences under Network.

export FIREFLY_URL=http://10.8.12.110:8080/firefly

Typically you will want to start Jupyterlab from the directory that you mounted inside your container, /home/vagrant/mnt.

cd /home/vagrant/mnt
jupyter lab --ip 0.0.0.0 --port 9888

Jupyterlab prints a long URL to copy and paste into a browser window on your machine. Typically what is printed needs some editing to start with 127.0.0.1. After pointing your web browser to the Jupyterlab URL, your Jupyterlab session will appear.

Removing the Firefly Jupyterlab extension

The Firefly Jupyterlab extension has not been extensively tested with this standalone setup with two Docker containers, one for the Science Pipelines and Jupyterlab, and one for Firefly. You may find it desirable or even necessary to disable the extension to use lsst.display.firefly.

To disable and uninstall the extension, issue these commands in your Science Platform container’s shell.

jupyter serverextension disable --py jupyter_firefly_extensions
pip uninstall jupyter_firefly_extensions
jupyter labextension uninstall jupyter_firefly_extensions

Listing installed extensions

Inside your Science Pipeline container’s shell, you can list the extensions that are installed for Jupyterlab.

jupyter labextension list
jupyter serverextension list

The server extension list will also indicate whether the extension is enabled.