Google Summer of Code Ideas

From MSL-Libraries
Revision as of 00:48, 29 March 2013 by Sabareeshs (talk | contribs)
Jump to navigationJump to search

MSL (Molecular Software Libraries) is an open source C++ library of objects related to macromolecular modeling.

Goal

The goal of MSL is to create a toolbox to enable a programmer to design powerful and advanced applications for molecular analysis, modeling, prediction and design. At the same time, MSL should also allow the rapid creation of applications that perform simple tasks (for example, measuring the distance between two atoms).

History

MSL has been developed in the past 5 years (9 years if we include its early predecessor). It has an extensive code base (over 150 objects and 100,000 lines of code). After years in beta, the first stable version (1.0) was released in 2012.

The code can be downloaded at the MSL SourceForge page and the entire development tree is available at the MSL SVN repository. Several examples are now available in the repository that demonstrate the capabilities of MSL objects in modeling applications.

MSL is described in its primary citation:

  • Kulp DW, Subramaniam S, Donald JE, Hannigan BT, Mueller BK, Grigoryan G and Senes A "Structural informatics, modeling and design with an open-source Molecular Software Library (MSL)", J Comput. Chem. 2012 33(20), 1645-61 (Download PDF)
MSL OBJECT HIERARCHY

MSL has been extensively used in scientific publications encompassing a variety of applications. For example, protein structure prediction, protein design, protein engineering and modeling algorithms/methods, and others.


Current development

The focus so far has been on creating a flexible yet powerful software framework that is easily accessible to programmers familiar with C++/object-orientation. This will continue to be the main theme of MSL development and we are striving to improve the core framework through

  • more advanced objects
  • more efficient implementations
  • implementing more modeling algorithms and protocols

Another important direction is making MSL more accessible to a wider audience by

  • creating interfaces to other programming languages
  • making distribution of MSL easier
  • building ready-to-use applications
  • hosting MSL applications on web servers for public use


With these goals in mind, we have come up with a list of project ideas that will greatly help MSL developers and users.

Ideas

1) Implementing a generic language-interface (swig.org) allowing for easy MSL use in python, R, perl, octave, etc.

Brief explanation:

Expected results:

Knowledge Prerequisite:



2) MSL-light

Brief explanation:

Expected results:

Knowledge Prerequisite:



3) Convert MSL pointers to using a Smart/Owning pointer system

Brief explanation:

Expected results:

Knowledge Prerequisite:



4) Create a centralized program options mechanism that makes options management easier.

Brief explanation: MSL has an advanced OptionParser object that supports name/value based program options. A mechanism needs to be implemented to group program options for MSL that uses the underlying OptionParser.

Expected results: The mechanism developed should facilitate easy option handling in MSL applications.

Knowledge Prerequisite: C++


5) Create Debian/Ubuntu deb packages and Redhat rpm packages to facilitate distribution and installation.

Brief explanation: The MSL needs to be compiled from source. It would be convenient to distribute MSL as a .deb and/or .rpm package like other open source software.

Expected results: One-click/commmand MSL installation.

Knowledge Prerequisite: Linux, Make

6) Creating a web interface to run MSL programs.


Brief explanation:

There are several MSL applications that are directly useful to structural biologists. For example, the sidechain modeling programs, the structure prediction programs, etc., are of general interest and it would be useful to create a web interface that allows the use these applications with a minimal/no knowledge of MSL.


Expected results:

A page on the lab website that manages jobs submitted by users. This may also involve running multiple programs on the lab cluster, post processing, and making the results available.


Knowledge Prerequisite:

Scripting Languages and Web Design


Please email sabareeshs@gmail.com if you would like to work on any of these ideas.