GenPerl | ||
GenPerl is a software development toolkit designed to facilitate the development of Perl scripts and applications in the area of genetic analysis. This includes a detailed genetic analysis object model implemented as a collection of OO Perl classes, and a series modules that implement an API for interacting with objects of these classes. The API includes functionality for managing the persistence of objects in a relational database. GenPerl does not include ready to use programs with friendly graphical user interfaces (GUIs). Instead, GenPerl provides reusable Perl modules that facilitate the development of applications for the storage, manipulation and analysis of genetic data. GenPerl enables the development applications which can process and analyze large quantities of data in customized ways that are typically difficult or impossible with large GUI-based systems. A CGI client application has been built using GenPerl, which demonstrates some of the functionality in GenPerl. Examples of code using GenPerl can be found in the GenPerl Tutorial document. GenPerl should be considered alpha software. |
||
Classes/Objects | API | Database |
The GenPerl object model is implemented as a series of Perl classes. GenPerl objects are instances of these classes.
Genetics::Object is the superclass for all GenPerl objects. The objects with which one interacts directly are:
|
The GenPerl API functionality is separated into the following packages.
The Genetics::API package contains general API methods that don't fit anywhere else right now. The Genetics::API::DB packages contain methods for managing the persistance of GenPerl objects in a relational database. These packages essentially constitute the middleware layer between client scripts and data in a GenPerl schema.
The Genetics::API::Analysis package contains methods related to the analysis of genetic data. This includes statistical tests, formatting of analysis files, etc.
|
In order to manage the persistance of GenPerl objects, the GenPerl API requires a relational database instance in which to store the data. Right now, the only supported databse is MySQL. I chose MySQL mainly because it's free, fast, and relatively simple to administrate. All database interaction in the API is implemented using DBI, and thus the API could, in theory, easily support the use of any RDBMS for which a DBD module exists. The DDL in this script can be used to create an appropriate schema in MySQL. |