Technical Aspects
Bonaparte is based on client-server architecture. This means that the computational
core—the part of Bonaparte that actually computes the probabilities—and
the Bonaparte database run on a dedicated server (or servers). Clients communicate with
this server over a network. Since all computations are performed on the server,
you don′t need expensive client hardware.
Bonaparte′s core runs on a Java application server. By default this is
Apache Tomcat
running on FreeBSD UNIX. The default
database is MySQL.
Bonaparte′s client runs in a web browser. It is developed on/for Firefox, but any browser
that supports Scalable Vector Graphics (SVG) should work—browsers that do not support SVG show
the images as bitmaps.
Features
- Concurrent user system with UNIX style access rights.
- Database with "roll back" capability
- Automated import from existing data sources (for example: CODIS) through XML
- Automated (scheduled) matching procedures
- Matches against elimination profiles to find contaminated samples
- Custom population statistics and mutation models
- Manual matching procedures
- AJAX (GWT/GXT) based web interface--Java interface is in development
- Drag and drop pedigree editor
- Supports import of Microsoft Excel files with profile data (STR, Y-STR and Mitochondrial DNA)
- Modular design: easy to add multiple servers with load balancers or another GUI
- Abstraction techologies such as iBatis and JServlet allow for easy change of components (
e.g. switch MySQL to PostgreSQL or Tomcat to JBOSS)
Database
The Bonaparte database is designed with three things in mind
- The database should have the capability to be "rolled back" to any previous state.
- The database must be support a concurrent user system.
- Easy crash recovery
The "roll back" capability means that a user is able to select a historic version of the database—a view
of the database at time t that filters out data created after time t—and work with that database.
The purpose of this is that (for legal reasons) it might be required to re-confirm old matches or investigate what data was
exactly available at what time.
This versioning is accomplished by keeping a full edit history of all data, e.g. users can inspect who modified what, when and how.
Concurrency is implemented through the use of private branches. A user can start editing
an object and work with this new object, while the rest of the users still see the object
as it was before that editing took place. Only when the user chooses to publish his modifications they become visible to the other users as well.
Since Bonaparte is a client-server based system; it is sensitive to network service interruptions or browser crashes. In order to
minimize the loss of work in such events, a crash recovery mechanism has been implemented. The system automatically saves
users′ work data to a private branch. In case of a crash, all users have to do is restart their browser and they can resume
editing where they left off.
The XML Data Interface
There are two ways of getting data into Bonaparte: via the Excel import functionality provided
in the graphical user interface (only STR, Y-STR and Mitochondrial profile data) or via the XML import (any data; for example
profiles, individuals, pedigrees and sample information).
The latter option is used to connect the system to existing infrastructure.
The use of XML as import format ensures that data from any source can be imported,
whether it is coming from CODIS, Postgresql, Excel files or even text files (from robots). All imported data is validated against
rules in XML Schema (XSD) files.
The XML format documentation is available upon request.
The Graphical User Interface
For the GUI we choose an AJAX based approach (using GWT).
The use of asynchronous communication ensures that users suffer a lot less GUI
lag than is the case with conventional web sites. The pedigree editor is not implemented
in Javascript but as Java applet (thus requiring clients to have Java 1.6 enabled in their browsers).
Due to the drag and drop functionality, the pedigree editor is too complex and
computationally intensive to be implemented using Javascript.
Try our fully operational demo
A free demonstration version of the Bonaparte system is available, but since the system is client-server based you cannot simply download it. Instead we have Bonaparte running on one of our servers. All you have to do is register (if you have not already done so) and use the credentials we provide you to log on.