Miniature Model Organism Sequence Aligner
CSS Perl JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Mimosa - Miniature Model Organism Sequence Aligner

What is Mimosa?

Mimosa is a application which provides an web interface to various sequence alignment programs and sequence databases. Currently BLAST is supported, and support for other alignment programs, such as BLASTP and BWA are planned.

What does Mimosa do?

Mimosa allows evolutionary researchers to run sequence alignment programs on nucleotides or proteins, and request sequences from various sequence databases, all from a friendly web interface.

Who is Mimosa for?

Mimosa is intended to be used by evolutionary biology researchers who do sequence alignment against sets of nucleotide or protein data. These sets could all be for different organisms, or all the same organism. Mimosa doesn't care.

If the data is public, Mimosa can be installed on a publicly-availabe website, and allow sequence aligment by collaborators. If the data is pre-publication and still actively changing, Mimosa can also be setup to only be accessed by certain persons, either people on the local intranet, or those logging in with a username and password.

Why does Mimosa exist? Aren't there a lot of things that already do this?

Mimosa exists to solve the problem of making a standalone sequence alignment web interface. All existing sequence alignment web interfaces are either tightly coupled to legacy codebases, difficult to deploy, or just plain unfriendly to end users.

Mimosa plans on being an easy-to-install standalone sequence aligner, which can be integrated into an existing website via a REST interface.

How do I get Mimosa?

You can install Mimosa from CPAN (where it is called .

If you use cpanminus (preferred) :

cpanm App::Mimosa

If you use

cpan App::Mimosa

Installing non-Perl dependencies

Mimosa requires the 'fastacmd' binary and some image libraries. If you are on a Debian-ish system, you can install these with apt-get:

apt-get install libgd2-xpm-dev blast2

Cloning via Git

If you have cpanminus:

git clone git://
cd mimosa
cpanm --installdeps . # install necessary Perl dependencies
perl Build.PL

If you don't have cpanminus:

git clone git://
cd mimosa
perl Build.PL
./Build --installdeps # install necessary Perl dependencies

How do I run the Mimosa test suite ?

After you have run the command

perl Build.PL

you can either type:

./Build test

or use prove:

prove -lrv t/

to run the Mimosa test suite.

How do I deploy a Mimosa schema?

If you want to use Mimosa with SQLite, that is the default:

perl script/

If you want to deploy Mimosa to an already installed Chado schema, pass the --chado flag

perl script/ --chado 1

This will also require you to give the proper DSN to your Chado instance in app_mimosa.conf.

If you want to use a different config file:

perl script/ --chado 1 --conf my_other.conf

If you want to deploy an empty schema, because you plan to load custom sequence sets later on:

perl script/ --chado 1 --empty 1 --conf some.conf

How do I start Mimosa ?

To start Mimosa on the default port of 3000 :

perl -Ilib script/

If you want to run it on a specific port, then pass the -p param :

perl -Ilib script/ -p 8080

How do I hack on Mimosa ?

If you are developing a new feature in Mimosa, and you want start a new Mimosa instance with the default database, there is a convenient script:


That will remove mimosa.db, deploy a new mimosa_db, and start a new Mimosa instance on port 8080 with DBIC_TRACE=1 set so every SQL statement run will be shown.

Each new Mimosa feature should have a new test file in t/ of the form t/NNN_feature_name.t .

How do I configure Mimosa ?

The file called "app_mimosa.conf" contaings your configuration. In it, you can tell Mimosa what your database backend is (SQLite, MySQL, PostgreSQL, Oracle, and anything else that DBI supports) and set various paramters. Here is a partial list:

min_sequence_input_length 6

This sets the smallest sequence input length. If a sequence smaller than this length is submitted, an exception is thrown and an error page is shown to the user.

allow_anonymous 1

Whether to allow anonymous people (those that have not authenticated) to submit jobs for reports.

disable_qsub 1

Disable qsub job queueing support, which means jobs will be run on the local machine.

tmp_dir /tmp/mimosa

The temporary directory that Mimosa can use.

job_runtime_max 30

The default maximum time that a job can take, if it is happening during a request cycle. Defaults to thirty seconds.

sequence_data_dir examples/data

The directory where sequence data can be found.


This Config key is a container for Bio::Chado::Schema-related configuration. It has:

schema_class App::Mimosa::Schema::BCS

The schema class.

traits undef

A trait, such as "Caching", which is good for production, but not testing.

The Model::BCS container has a container, which contains the "dsn" config key.

dsn dbi:SQLite:./mimosa.db

The default is to deploy to a SQLite database in the current directory, but if you want to use this with a currently-existing Chado installation, you should but the connection information in this config key.

What is Mimosa written in?

Mimosa is written in Perl 5, HTML, CSS, and JavaScript. On the server side, it uses Moose, BioPerl, Bio::Chado::Schema, Bio::BLAST::Database, Digest::SHA1, the Catalyst web framework and many other CPAN modules. On the client side, it uses JQuery and ExtJS.

How can I help hack on Mimosa or otherwise get involved?

Please join our mailing list at and take a look at our Github issues for ideas about what we need help with: . Please use Mimosa and tell us how we can improve it and help it meet your sequence alignment needs.

You are also welcome to join the #gmod IRC channel on, where many GMOD developers hang out and talk about various GMOD projects.