Next: , Previous: , Up: Introduction   [Contents]

1.1 Description of the program

The main goal of MafFilter is to apply a series of "filters" to the original input file. A “filter” can be seen as a small program that takes as input one or several maf blocks, and outputs one or several maf block, after performing some actions on them:

                         +--------+
   Alignment block(s)    |        |   Alignment block(s)
------------------------>+ Filter +------------------------>
                         |        |
                         +--------+

We can roughly distinguish four types of filters:

A run of MafFilter typically consists in a workflow of filters, applied in a serial way, the output of one filter being taken as input as the next one. In the current version of MafFilter, only linear workflows are possible, without branching:

    +----------+    +----------+    +----------+
    |          |    |          |    |          |
--->+ Filter 1 +--->+ Filter 2 +--->+ Filter 3 +---> Etc.
    |          |    |          |    |          |
    +----------+    +----------+    +----------+

Branching processes can however be achieved by outputing the alignment blocks at the branching point, and run various instances of MafFilter on the resulting files:

     Run 1
    +----------+    +----------+    +----------+
    |          |    |          |    |          |
--->+ Filter 1 +--->+ Filter 2 +--->+ Filter 3 +---> Etc.
    |          |    |          |    |          |
    +----------+    +----+-----+    +----------+
                         |
                         |    +------------+
                         |    |            |
     Run 2               +--->+ Filter 2.1 +---> Etc.
                              |            |
                              +------------+

Some filters allow to generate additional data associated to each alignment block, such as phylogenetic trees. Such data cannot be written to file together with the blocks, as the MAF format does not support this. These data are however stored in memory by MafFilter together with the block, as “extra-data”. Extra-data are associated with a special tag which is used for refering to them, including for writting them in appropriate output files.

The next section describes how to specify the series of filters to be applied, and the next chapter provides an exhaustive list of available filters.