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.
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.
|