Space Py Quest is a gravitational wave interferometer parameter optimisation game, written in Python and run in a Jupyter notebook. It is based on the original game Space Time Quest, available as apps for iOS, Android, Windows, Linux and MacOs at https://www.laserlabs.org/spacetimequest.php. Both versions of the game can be used for teaching and public engagement. The apps are easy to use and provide a playful way to introduce detector design and technology. This Python version allows students to also look into the underlying noise models.
Space Py Quest is played from a Jupyter notebook that consists of a single plot displaying multiple noise curves and the detector sensitivity. By modifying the detector's physical properties, the user can change the noise and sensitivity and thus design their own detector. A drop-down menu provides access to controls for the interferometer's variable parameters. Additional controls are available for adjusting the limits of the x- and y-axes, and for adding and removing individual noise curves from the total calculation.
The Science Run option tool is a button, which returns a 'Score': the complexity and cost of the instrument; the number of detections for Supernova, Black Hole binaries and Neutron Star binaries; the range to which the detector can sense binary system mergers; and the weighted total observation range of the detector. Note that the scoring algorithm in Space Py Quest is not identical to the one used in Space Time Quest, so that this code cannot be trivially used to get the top score in the Space Time Quest leader board.
There are slightly more complex ways of interacting with the game. Space Py Quest allows the user to add their own noise models if they wish, using the ScoreCalculator class's SetNoiseModels function, which is held in score.py. The new models can be written into a script, as examplified in userDefinedNoise.py. Alternatively, they can be automatically generated using functions defined in translate.py.
Space Py Quest should be run with Python versions at or above 3.5.4, and with the Bokeh package at version 0.12.9 or above.
Space Py Quest consistent of a Jupyter notebook SpacePyQuest.ipynb
and a Python module pystq
. Experienced user can clone this git repository to obtain both.
It is also possible to install the core module pystq
with Python package
managers. When you chose this option you need to manually download the
notebook SpacePyQuest.ipynb,
and then install the pystq
module with pip or conda:
Simply type
pip install pystq
.
Type
conda install -c isobelmarguarethe pystq
.
If the installation was succesful, start Jupyter in the folder containing the file SpacePyQuest.ipynb
.
Below we provide some suggestions for installing the required Python packages for less experienced users. Based on previous work with diverse groups of people, for example, such as during summer schools, we recommend the use of Anacoda, which is cross platform, well documented and provides an easy to install and well managed Python environment.
(If this does not apply to you, skip to Example 2.) Download either Miniconda or the full Anaconda package. Miniconda is quicker to install and perfectly adequate for the purposes of Space Py Quest, while Anaconda would be preferable if you use Python for other purposes as well. To download and install Miniconda, follow the instructions here: [https://conda.io/miniconda.html]. The download page for Anaconda is available here: [https://www.anaconda.com/download/]. Ensure that you are installing Python versions at or above 3.5.4.
See also the Anaconda user guide for more advice on chosing between Anaconda and Miniconda.
Open an Anaconda or Miniconda terminal. You can check that you are running a Python version at or above 3.5.4. by typing python --version
. If you are not, run conda update python
first.
Run the command conda install jupyter
to install Jupyter. You will need to confirm the install by pressing 'y' when prompted.
Bokeh is an interactive graphics library for Python. To install this, open a command window and run conda install bokeh
.
Great! Open a command window and navigate to the SpacePyQuest folder. Run the command jupyter notebook SpacePyQuest.ipynb
.
This project was created by Philip Jones and Isobel Romero-Shaw, with support from Roshni Vincent and Andreas Freise. The code has been generated from the original game Space Time Quest with permission.
This project is licensed under the GNU General Public License 3 - see the gpl-3.0.md file for details