Welcome to POCS documentation!
PANOPTES is an open source citizen science project designed to find transiting exoplanets with digital cameras. The goal of PANOPTES is to establish a global network of of robotic cameras run by amateur astronomers and schools (or anyone!) in order to monitor, as continuously as possible, a very large number of stars. For more general information about the project, including the science case and resources for interested individuals, see the project overview.
POCS (PANOPTES Observatory Control System) is the main software driver for a PANOPTES unit, responsible for high-level control of the unit.
For more information, see the full documentation at: https://pocs.readthedocs.io.
If you are running a PANOPTES unit then you will most likely want an entire PANOPTES environment, which includes things like plate-solvers (to tell you what stars you are looking at) and other necessary tools for operation.
There is a bash shell script that will install an entire working POCS system on your computer. Some folks even report that it works on a Mac.
To install POCS via the script, open a terminal and enter (you will be prompted for your
curl -fsSL https://install.projectpanoptes.org > install-pocs.sh bash install-pocs.sh
wget -qO- https://install.projectpanoptes.org > install-pocs.sh bash install-pocs.sh
If you want just the POCS module, for instance if you want to override it in
your own OCS (see Huntsman-POCS
for an example), then install via
pip install panoptes-pocs
If you want the extra features, such as Google Cloud Platform connectivity, then use the extras options:
pip install "panoptes-pocs[google,focuser,testing]"
POCS requires three things to properly run:
- Environment variables that tell
POCSthe location of the main PANOPTES directory (
config-serverrunning to provide dynamic configuration.
Observatoryinstance that has details about the location of a POCS unit (real or simulated), which hardware is available, etc.
A minimal working example with a simulated
Observatory would be:
import os from panoptes.utils.config.server import config_server from panoptes.pocs.observatory import Observatory from panoptes.pocs.core import POCS os.environ['PANDIR'] = '/var/panoptes' conf_server = config_server('conf_files/pocs.yaml') I 01-20 01:01:10.886 Starting panoptes-config-server with config_file='conf_files/pocs.yaml' S 01-20 01:01:10.926 Config server Loaded 17 top-level items I 01-20 01:01:10.928 Config items saved to flask config-server I 01-20 01:01:10.934 Starting panoptes config server with localhost:6563 observatory = Observatory() I 01-20 01:01:16.157 Creating PanDB panoptes I 01-20 01:01:16.158 Initializing observatory I 01-20 01:01:16.158 Setting up location S 01-20 01:01:17.070 Observatory initialized pocs = POCS(observatory, simulators=['all']) I 01-20 01:01:20.408 Initializing PANOPTES unit - Generic PANOPTES Unit - Mauna Loa Observatory I 01-20 01:01:20.419 Making a POCS state machine from panoptes I 01-20 01:01:20.420 Loading state table: panoptes S 01-20 01:01:20.485 Unit says: Hi there! W 01-20 01:01:20.494 Scheduler not present W 01-20 01:01:20.495 Cameras not present W 01-20 01:01:20.496 Mount not present I 01-20 01:01:20.497 Scheduler not present, cannot get current observation. pocs.initialize() W 01-20 01:01:28.386 Scheduler not present W 01-20 01:01:28.388 Cameras not present W 01-20 01:01:28.389 Mount not present S 01-20 01:01:28.390 Unit says: Looks like we're missing some required hardware. Out: False
For a more realistic usage, see the full documentation at: https://pocs.readthedocs.io.
For actually deploying a PANOPTES unit, refer to the Operating Guider.
First clone the repository, then run the following from the project's root directory:
docker-compose -f tests/docker-compose.yaml build docker-compose -f tests/docker-compose.yaml up
By default that will build and run all tests. If you want to run one specific test, run the
pytests test_file.py on the
docker-compose -f tests/docker-compose.yaml run pocs "pytest tests/test_mount.py"