Skip to content

First Open Chemistry Beta Release

Open Chemistry

We are pleased to announce the first beta release of the Open Chemistry suite of cross platform, open-source, BSD-licensed tools and libraries - Avogadro 2, MoleQueue and MongoChem. They are being released in beta, before all planned features are complete, to get feedback from the community following the open-source mantra of “release early, release often”. We will be making regular releases over the coming months, as well as automatically generating nightly binaries. A Source article from 2011 introduced the project, slides from FOSDEM describe it more recently, and the 0.5.0 release binaries can be downloaded here.

Open Chemistry workflow

These three desktop applications can each be used independently, but also have the capability of working together. Avogadro 2 is a rewrite of Avogadro that addresses many of the limitations we saw. This includes things such as the rendering code, scalability, scriptability, and increased flexibility, enabling us to effectively address the current and upcoming challenges in computational chemistry and related fields. MoleQueue provides desktop services for executing standalone programs both locally and on remote batch schedulers, such as Sun Grid Engine, PBS and SLURM. MongoChem provides chemically-aware search, storage, and informatics visualization using MongoDB and VTK.

Open Chemistry library organization

Avogadro 2

Avogadro 2 is a rewrite of Avogadro; please see the recently-published paper for more details on Avogadro 1. Avogadro has been very successful over the years, and we would like to thank all of our contributors and supporters, including the core development team: Geoff Hutchison, Donald Curtis, David Lonie, Tim Vandermeersch, Benoit Jacob, Carsten Niehaus, and Marcus Hanwell. We also recently obtained permission from almost all authors to relicense the existing code under the 3-clause BSD license, which will make migration of code to the new architecture much easier.

Avogadro 2 rendering a molecular orbital

Some notable new features of Avogadro 2 include:

  • Scalable data structures capable of addressing the needs of large molecular systems.
  • A flexible file I/O API supporting seamless addition of formats at runtime.
  • A Python-based input generator API, creating an input for a range of quantum codes.
  • A specialized scene graph for supporting scalable molecular rendering.
  • OpenGL 2.1/GLSL based rendering, employing point sprites, VBOs, etc.
  • Unit tests for core classes, with ongoing work to improve coverage.
  • Binary installers generated nightly.
  • Use of MoleQueue to run computational codes such as NWChem, MOPAC, GAMESS, etc.

Avogadro is not yet feature complete, but we invite you to try it out along with the suite of applications as we continue to improve it. The new Avogadro libraries feature much finer granularity; whereas before we provided a single library with all API, there is now a layered API in multiple libraries. The Core and IO libraries have minimal dependencies, with the rendering library adding a dependence on OpenGL, and the Qt libraries adding Qt 4 dependencies. This allows us to reuse the code in many more places than was possible before, with rendering possible on a server without Qt/X, and the Core/IO libraries being suitable for command line use or integration into non-graphical applications.

MoleQueue

MoleQueue is a new application developed to satisfy the need to execute computational chemistry codes locally and remotely. Rather than adding this functionality directory to Avogadro 2, it has been developed as a standalone system-tray resident application that runs a graphical application and a local server (using local sockets for communication). It supports the configuration of multiple queues (local and remote), each containing one-or-more programs to be executed. Applications communicate with MoleQueue using JSON-RPC 2.0 over a local socket, and receive updates as the job state changes. A recent Source article describes MoleQueue in more detail.

MoleQueue queue configuration

In addition to the system-tray resident application, MoleQueue provides a Qt 4-based client library that can easily be integrated into Qt applications, providing a familiar signal-slot based API for job submission, monitoring, and retrieval. The project has remained general in its approach, containing no chemistry specific API, and has already been used by several other projects at Kitware in different application domains. Communicating with the MoleQueue server from other languages is quite simple, with the client code having minimal requirements for connecting to a named local socket and constructing JSON strings conforming to the JSON-RPC 2.0 specification.

MongoChem

MongoChem is another new application developed as part of the Open Chemistry suite of tools, leveraging MongoDB, VTK, and AvogadroLibs to provide chemical informatics on the desktop. It seeks to address the need for researchers and groups to be able to effectively store, index, search and retrieve relevant chemical data. It supports the use of a central database server where all data can be housed, and enables the significant feature set of MongoDB to be leveraged, such as sharding, replication and efficient storage of large data files. We have been able to reuse several powerful cheminformatics libraries such as Open Babel and Chemkit to generate identifiers, molecular fingerprints and other artifacts as well as developing out features in the Avogadro libraries to support approaches to large datasets involving many files.

MongoChem

We have taken advantage of the charts developed in VTK and 2D chemical structure depiction in Open Babel to deliver immersive charts that are capable of displaying multiple dimensions of the data. Linked selection allows for selection in one view, such as parallel coordinate; views of that selection in a scatter plot matrix, and the table view. The detail dialog for a given molecule shows 2D structure depiction, an interactive 3D visualization when geometry is available and support for tagging and/or annotation. We have also developed an early preview of a web interface to the same data using ParaViewWeb, enabling you to share data more widely if desired. This also features a 3D interactive view using the ParaViewWeb image streaming technology which works in almost all modern browsers.

Putting Them Together

Each of the applications in the Open Chemistry suite listens for connections on a named local socket, and provides a simple JSON-RPC 2.0 based API. Avogadro 2 is capable of generating input files for several computational chemistry codes, including GAMESS and NWChem, and can use MoleQueue to execute these programs and keep track of the job states. Avogadro 2 can also query MongoChem for similar molecules to the one currently displayed, and see a listing sorted by similarity. MongoChem is capable of searching large collections of molecules, and can use the RPC API to open any selected molecule in the active Avogadro 2 session.

Acknowledgements

The development of the Open Chemistry workbench has been funded by a US Army SBIR with the Engineering Research Development Center under contract (W912HZ-12-C-0005) at Kitware, Inc.

Originally published on the Kitware blog

Trackbacks

www.nature.com on : PingBack

Show preview

Comments

Display comments as Linear | Threaded

Magnus Lundborg on :

Magnus LundborgThis seems very impressive. Thanks for doing this for the research society. I look forward to testing this.

Andre on :

AndreThis looks pretty cool. Sometimes more specialized solutions are really helpful because of their closer integration, as opposed to generic solutions such as full-blown Workflow Engines like https://kepler-project.org/ http://pegasus.isi.edu/ or http://www.taverna.org.uk/
Do you have a wiki page or something about the Details of MoleQueue? E.g. about the data staging? And for monitoring I guess you are parsing qstat output? To be honest my experience isn't that good with that approach. The Globus poll implementation uses that as well, and it regularly gives me headaches. Here is a famous one: Globus uses the full Job-ID string to grep for the status line in qstat output, but Torque 2.5.x cuts the ID after 12 chars for standard qstat output. But I guess your focus is anyway more on the integration right to the desktop of the researcher, which I think is great.
Do you know some of the compchem efforts in Grid, e.g. https://www3.compchem.unipg.it/compchem/ in Europe and https://www.gridchem.org/ in the states? Maybe they would be happy to have/test Open Chemistry.
I will for sure take a look at it, if only for curiosity. :-)
Cheers

Marcus D. Hanwell on :

Marcus D. HanwellThanks for your comments, there is a MoleQueue article I linked to in the blog post (http://www.kitware.com/source/home/post/93), and some documentation on our wiki of the JSON-RPC 2.0 protocol. We are parsing qstat output, which isn't ideal but the backend is abstracted. If better APIs/interfaces to batch schedulers are made available we will happily add them. I am aware of the comp chem efforts, it would be great to work with them but as I understand it we need current users to ask them to add our programs.

The focus is most certainly on desktop integration, providing an abstraction over several remote batch schedulers. As improved batch schedulers with improved APIs become available MoleQueue could take advantage of them, while maintaining a consistent local API removing the need for the application code to be ported. Hopefully this makes things a little clearer, certainly open to more input if you think of anything else after taking a look!

Add Comment

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.
To leave a comment you must approve it via e-mail, which will be sent to your address after submission.
Gravatar, Identica, Twitter, MyBlogLog, Pavatar, Favatar author images supported.
You can use [geshi lang=lang_name [,ln={y|n}]][/geshi] tags to embed source code snippets.
Form options