Software Technology
We built Ensemble on open source and commercial software development environments. The open source packages are often collectively called the LAMP platform by software developers (http://www.onlamp.com/pub/a/onlamp/2001/01/25/lamp.html). LAMP is an acronym that refers to a combination of four systems and software packages: the Linux operating system, Apache web server, MySQL database server, and a choice of Perl, PHP or Python scripting languages. Our LAMP system includes the PHP scripting language. Although we developed Ensemble on the LAMP platform, Linux and Apache are not essential components. Most of Ensemble’s modules can easily be ported to other operating systems and web server applications.
MySQL and PHP have been in widespread use for a number of years and are employed by organizations and companies that depend on reliable software and uninterrupted operation.The PHP scripting language runs on a web server to provide dynamic content to web pages. PHP is capable of performing calculations, storing variables associated with a session, and communicating with a MySQL server. A PHP session is typically a series of web pages which require the exchange of information. For example, a series of web pages that implement a “shopping cart” function on an online store track the items that the customer added to the shopping cart. HTML, the markup language web browsers interpret for formatting web pages, is not capable of tracking this information in any meaningful way. HTML is transmitted via HTTP, which is a stateless protocol. PHP tracks the session state through variables that are stored on the web server for the duration of the session. Temporary variables may also be used within the PHP script. PHP code is executed by the Apache web server. It dynamically generates HTML code in real-time for formatting text and graphics on a web browser. A user typically interacts with a PHP web page through HTML formatted text or forms. Data entered on an HTML form can be submitted to PHP scripts for processing.
MySQL is a database application which implements a language called Structured Query Language (SQL). SQL provides standards for communication and record storage. Numerous applications and programming environments, including PHP and Matlab, are capable of communication with MySQL databases. An open source web-based MySQL administration program called phpMyAdmin (The phpMyAdmin Project) is used in our lab for database maintenance and for making specialized changes to the database.
Matlab and Flash (Adobe Systems, San Jose CA, formerly by Macromedia) are two commercial applications used in Ensemble. Matlab is an analysis tool which has been used by our lab for a number of years and is in widespread use by the scientific community. This makes it a natural choice for the analysis environment used in Ensemble. Flash is a popular multimedia plug-in that provides the capability to present audio and video through a web browser. Overall, Flash meets many experiments’ requirements for controlled presentation of audio and video, and it is extensible in terms of offering interactivity to users. Most web browsers are bundled with a player for presenting Flash movies, or if not included, can be easily downloaded free of charge and installed. The Flash application, for creating Flash movies, is available to academic institutions often at a reduced cost.