Akamai Project:Â Designing KeOLA: The Keck Observation Log Archive
Project Site: W.M. Keck Observatory
Mentor:Â Luca Rizzi
Project Abstract:
In the course of any observing run, astronomers must keep track of many different pieces of information to effectively utilize their science data later. For each observation taken, they must track which object is being targeted, telescope configuration, where the frame is stored, and any notes they want to remember for later (among other things). Additionally, weather conditions, changes in seeing, and any other notes that apply to the night as a whole, must be logged. Currently, this is achieved through paper logs that the astronomer is responsible for filling out by hand and keeping track of afterwards. The goal of KeOLA is to create a software solution to replace these logs — tracking the data created in real-time, and filling in as many details as possible automatically — while achieving the same flexibility and ease of use as the paper logs. The software should provide a much more consistent and extensive archive for use by astronomers and support staff, mitigate gaps of information and errors, and save significant time. To achieve all the desired functionality, an entire software ecosystem had to be realized. A daemon to launch new logs based on the telescope schedule, a monitoring script to track new frames and extract all their FITS metadata in real time, a central database, an interface between the database and the user application, and a rich web client encompassing real-time log functionality, as well as administration tasks. All pieces were designed to be as logically independent and maintainable as possible, while still using cutting-edge technologies and techniques. Python was used for all server-side scripting; MongoDB, a document-based database, was selected due to its flexibility as the backend data store; a Python based microframework named Flask was utilized to serve data to the Web client; and a combination of sophisticated JavaScript libraries, including Backbone.js, were used for creating the browser-based client. As of now, the application has a majority of its core functionality in place, and is undergoing trials before being phased into normal use.