An older version of the theoretical database is currently selected, click here to use the latest


The NASA Ames PAH IR Spectroscopic Database website follows the Model-View-Controller (MVC) architectural design pattern (with a few exceptions) and utilizing the FrontController design pattern. MVC is an architectural pattern commonly used in software engineering. Successful use of the pattern isolates business logic from user interface considerations, resulting in an application where it is easier to modify either the visual appearance of the application or the underlying business rules without affecting the other. In MVC, the model represents the information (the data) of the application; the view corresponds to elements of the user interface such as text, checkbox items, and so forth; and the controller manages the communication of data and the business rules used to manipulate the data to and from the model. To implement this MVC the technologies below, all free and open source software, have been used:

  1. LAMP
  2. Apache 2
  3. MySQL 5
  4. PHP 7
  5. HTML 5
  6. CSS
  7. jQuery
  8. C++
  9. Libraries, etc.
  1. LAMP:

    The acronym LAMP refers to a solution stack of software, usually free and open source software, used to run dynamic Web sites or servers*. The original expansion is as follows:

    • Linux, referring to the operating system.
    • Apache, the Web server.
    • MySQL, the database management system (or database server).
    • one of several scripting languages: Perl, PHP or Python.

    The combination of these technologies is used primarily to define a web server infrastructure, define a programming paradigm of developing software, and establish a software distribution package.

    Though the originators of these open source programs did not design them all to work specifically with each other, the combination has become popular because of its low acquisition cost and because of the ubiquity of its components (which come bundled with most current Linux distributions). When used in combination they represent a solution stack of technologies that support application servers.

    See also, how to install LAMP server on Ubuntu Linux.

    *The NASA Ames PAH IR Spectroscopic Database website is gracefully hosted by the SETI Institute.

    back to index

  2. Apache 2:

    Apache is a web server notable for playing a key role in the initial growth of the World Wide Web and in 2009 became the first web server to surpass the 100 million web site milestone. Apache was the first viable alternative to the Netscape Communications Corporation web server (currently known as Sun Java System Web Server), and has since evolved to rival other Unix-based web servers in terms of functionality and performance. The majority of all web servers using Apache are Linux web servers.

    Apache is developed and maintained by an open community of developers under the auspices of the Apache Software Foundation. The application is available for a wide variety of operating systems, including Unix, GNU, FreeBSD, Linux, Solaris, Novell NetWare, Mac OS X, Microsoft Windows, OS/2, TPF, and eComStation. Released under the Apache License, Apache is characterized as free and open source software.

    See also, HTTP Apache Server Project

    back to index

  3. MySQL 5:

    The project's source code is available under terms of the GNU General Public License, as well as under a variety of proprietary agreements. MySQL is owned and sponsored by a single for-profit firm, the Swedish company MySQL AB, now a subsidiary of Sun Microsystems, which holds the copyright to most of the codebase.

    MySQL is commonly used by free software projects which require a full-featured database management system, such as WordPress, phpBB and other software built on the LAMP software stack. It is also used in very high-scale World Wide Web products including Google and Facebook.

    MySQL is used in web applications and acts as the database component of the LAMP software stack. Its popularity for use with web applications is closely tied to the popularity of PHP, which is often combined with MySQL. Several high-traffic web sites (including Flickr, Facebook, Wikipedia, Google (though not for searches), Nokia and YouTube) use MySQL for its data storage and logging of user data.

    See also, MySQL database website

    back to index

  4. PHP 7:

    PHP is a widely-used general-purpose scripting language that is especially suited for web development and can be embedded into HTML. It generally runs on a web server, which is configured to take PHP code as input and create web page content as output. It can be deployed on most web servers and on almost every operating system and platform free of charge. PHP is installed on more than 20 million websites and 1 million web servers.

    PHP is a general-purpose scripting language that is especially suited for web development. PHP generally runs on a web server. Any PHP code in a requested file is executed by the PHP runtime, usually to create dynamic web page content. It can also be used for command-line scripting and client-side GUI applications. PHP can be deployed on most web servers, many operating systems and platforms, and can be used with many relational database management systems. It is available free of charge, and the PHP Group provides the complete source code for users to build, customize and extend for their own use.

    See also, PHP Reference Manual

    back to index

  5. HTML 5:

    HTML 5 is a software solution stack that defines the properties and behaviors of web page content by implementing a markup based pattern to it. HTML 5 is the fifth major version of the HTML standard, and subsumes XHTML. HTML 5 became a World Wide Web Consortium (W3C) Recommendation on January 2008 and became a W3C Recommendation in October 2014.

    See also, W3C Recommendation

    back to index

  6. CSS:

    CSS is a style sheet language used to describe the presentation (that is, the look and formatting) of a document written in a markup language. Its most common application is to style web pages written in HTML and XHTML, but the language can be applied to any kind of XML document, including SVG and XUL.

    CSS is designed primarily to enable the separation of document content (written in HTML or a similar markup language) from document presentation, including elements such as the colors, fonts, and layout. This separation can improve content accessibility, provide more flexibility and control in the specification of presentation characteristics, enable multiple pages to share formatting, and reduce complexity and repetition in the structural content (such as by allowing for tableless web design). CSS can also allow the same markup page to be presented in different styles for different rendering methods, such as on-screen, in print, by voice (when read out by a speech-based browser or screen reader) and on Braille-based, tactile devices. While the author of a document typically links that document to a CSS stylesheet, readers can use a different stylesheet, perhaps one on their own computer, to override the one the author has specified.

    See also, Cascading Style Sheets Home Page

    back to index

  7. jQuery:

    jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. It was released in January 2006 at BarCamp NYC by John Resig. Dual-licensed under the MIT License and the GNU General Public License, jQuery is free, open source software.

    Just as CSS separates "display" characteristics from the HTML structure, jQuery separates the "behavior" characteristics from the HTML structure. For example, instead of directly specifying the on-click event handler in the specification of a button element, a jQuery driven page would first identify the button element, and then modify its onclick event handler. This separation of behavior from structure is also referred to as the principle of Unobtrusive JavaScript.

    See also, The Write Less, Do More

    back to index

  8. C++:

    C++ is a general-purpose programming language. It is regarded as a middle-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell Labs as an enhancement to the C programming language and originally named "C with Classes". It was renamed to C++ in 1983.

    C++ is widely used in the software industry. Some of its application domains include systems software, application software, device drivers, embedded software, high-performance server and client applications, and entertainment software such as video games. Several groups provide both free and proprietary C++ compiler software, including the GNU Project, Microsoft, Intel, Borland and others.

    C++ is used to implement external tools whom require a faster computational process.

    See also, C++ Standard Library Documentation

    back to index

  9. Libraries, etc. :

    Also needed are a few libraries, etc.

    • Flotr2 (javascript library), to create zoomable spectra.
    • Jmol (Java viewer), to interact with 3D molecular structures.
    • JSmol (HTML5 viewer), to interact with 3D molecular structures.
    • jpGraph (PHP library), to create spectra and graphics.
    • Prism (Javascript library), to do syntax highlighting.
    • PHPMailer (PHP library), to send e-mails.
    • tmhOAuth (PHP library), to handle Twitter authentication.
    • plplot (C++ library), to create graphics in C++.
    • tclap (C++ library), to simplify the use of the command line arguments.
    • MySQL++ (C++ library), to access the server's MySQL database from C++.
    • gsl (C++ library), a numerical library.
    • CCfits (C++ library), for manipulating FITS formatted files.
    • TinyXML2 (C++ library), for manipulating XML (VOTABLE) formatted files.
    • (IP geolocation), for associating IP addresses with geographical locations.
    • geoPlugin (IP geolocation), for associating IP addresses with geographical locations.
    • CrossRef (DOI lookup), for associating references with DOIs.
    • (DOI translation), for formating references from DOIs.
    • Let's Encrypt (Certificate Authority), for SSL authentication.

    back to index

You are kindly asked to consider the following references for citation when using the database:

700 species present in version 2.00 of the theoretical database (Oct 29, 2013)