DeCypher

January 12th, 2012 (updated March 14th, 2013)

DeCypher® is a product of Active Motif. I have been working on this product since 1997 for TimeLogic and then Active Motif when they bought TimeLogic. This page describes some of the interesting technology that is used in the product and also some of the things I had to do while working on the product that were both programming and non-programming tasks. More product information is available on the TimeLogic Product Website.

Working on this is currently my day job.

The DeCypher product is used to quickly compare generic or protein data sets. DeCypher uses a hardware accelerator card to provide a very fast search capability.

image

The index page for the DeCypher web interface.

DeCypher includes a command line interface that can be run on various client platforms as well as a web interface running on Apache on the DeCypher server. All processing for search features, user authorization and authentication, and job management, is done on the DeCypher server using native processes and services.

Server-side processing is done with programs written in C++ as well as device drivers written in C.

image

The search daemon.

A user interface is available on the server for job monitoring but it is rarely used since most DeCypher systems are installed in computer rack sin computer rooms. Most features can be controlled remotely and all job submissions are done from any number of client systems.

Some of the key technologies used in DeCypher are:

Sockets and proprietary protocols are used for inter-process communications. Command line programs running on any client system can submit jobs to the DeCypher system. A master DeCypher system can offload jobs to a slave system to increase performance. The search daemon and command line interface server daemon share status and both validate user account information with the user agent daemon process.
User management is done using a session key system and a DES3-based hash comparison system for password authentication. The user authentication and authorization system uses proprietary mechanisms to facilitate cross platform interoperability.
Search algorithms like Smith-Waterman and BLAST run on accelerated hardware using FPGA chips and those algorithms are also run in software to create human-readable output. Search algorithms in software are highly optimized in source code and incorporate SIMD instructions to gain further optimizations where possible. SIMD instructions provide an 8x increase in data processing capability for pipelined algorithms.
Multi-threading is used extensively to manage jobs and job data processing. Multi-processing is also used to facilitate unlimited client system connections for command line job submission. Individual jobs also use multi-threading to increase algorithms speed by running multiple data sets simultaneously.
Windows, Linux, and Solaris device drivers provide support for the custom FPGA hardware. The device drivers share a common code base allowing the application to driver communications to be identical on multiple computing platforms. device drivers have been written to support ISA, PCI, and PCIE busses and devices.

For the DeCypher product, I have been tasked with designing and writing code and have also contributed to every aspect of product design including user interface design and documentation.

Most of the product code is written in C++ with some written in C and JavaScript with HTML being used for the web interface source files. During the 15 years spent working on this product, other languages and technologies were minimally used like Java and Python.