|Next| |Contents| |Previous|


6. Input/Output:

Making FAKtory Extensible

Another key problem in producing a useful system is that of making sure it can handle a wide range of input and output data formats, and that it can be linked to other programs. To address this, the FAKtory uses the idea of user specifiable pre- and post-processors.

The FAKtory proper is capable only of importing files in a single, simple format that is a superset of the FASTA format. However, one of the configuration options for the Input stage of the pipeline, is the specification of a command-level program (and options if desired) to be used as a preprocessor for all file imports. Whenever fragments are to be input to FAKtory, it first calls this program (if specified) with each file to be input, and grabs the output of the program as the FAKtory-formatted file to input to the system proper. That is, the program is assumed to be a translator from the given data format to FAKtory format. Anyone can write such a translation preprocessor whenever the need arises. For example, we receive data from different labs to use for testing purposes. It generally takes us less than an hour to write a program that will translate between the supplied format and FAKtory format. We have also written a translator, ABI2fak that takes ABI sequencer files, extracts basic information, the comment line, and the waveform, and produces a FAKtory input file describing this data. The translator and its specification in the Input Preferences panel can be done by a master user. End-users simply ask to import files, oblivious to the presence of this mechanism.

Exporting information is handled similarly. In an Output Preferences panel, one may specify a list of post-processing programs, assigning a menu name to each and specifying whether the program is to receive a consensus sequence or a multi-alignment in FAKtory's format. The list of menus names becomes the contents of an Output Menu that occurs on both the Layout Edit and Finishing panels. Selecting one of these names from the menu causes the corresponding post-processing program to be invoked on the currently selected assembly or contigs. The post-processing program can be any program capable of reading the FAKtory-formatted information passed to it. Moreover, the program is run in a separate process from the FAKtory so that the two can be running simultaneously. For example, we are currently preparing programs that will submit Blast searches, will log results with Terry Gaasterland's Magpie system, and run Grail on consensus sequences. The Grail postprocessor actually opens up its own window on the screen and runs concurrently with FAKtory.

In summary, the simple pre- and post-processor scheme we employ allows one to easily extend FAKtory to accept any input format and to run any post-analysis software concurrently with the FAKtory. We will supply an initial small library of such programs, anticipating that users will contribute additional extension programs over time.



|Previous| |Contents| |Next|