Java >= 5 (aka v1.5) is required.

http://opal.cs.arizona.edu/

Opal is software for aligning multiple biological sequences. It can align 
both protein and DNA sequences, and expects inputs to be in fasta format.

In benchmark tests, Opal aligns sequences with good accuracy. On DNA, 
accuracy is similar to that of MAFTT and Muscle; on protein, accuracy is 
similar to MAFFT, and better than Muscle. 

Details of the algorithms used in Opal are available in the original ISMB 
paper, which should be cited in the event Opal is used:
   Wheeler, T.J. and Kececioglu, J.D.
   Multiple alignment by aligning alignments,
   Proceedings of the 15th ISCB Conference on Intelligent Systems  
   for Molecular Biology (ISMB), Bioinformatics 23, i559-i568, 2007.
   
Significant acceleration with negligible loss in accuracy was achieved
after publication of that paper, through heuristic guide-tree construction 
(similar to the approach used in MAFFT and Muscle).

Quick-start
-----------

(1) After downloading opal.tgz, unpack with the command
  tar -xzf Opal.tgz
This will create a folder opal_x.y.z, containing four files:
  - 00README (this file)
  - Opal.jar (the heart of Opal, a Java jar file)
  - opal (a shell script that runs Opal.jar with appropriate Java flags)
  - predict_structure.pl (a perl script that handles the job of calling
    psipred, and collating the results into a format recognized by Opal.jar) 

(2) To build a alignment, use one of the following commands:

       ./opal unaligned_seqs.fasta > alignment.fasta
       (or)
       ./opal --in unaligned_seqs.fasta --out alignment.fasta


    To align two fixed alignments, run:
       ./opal --in alignment1.fasta --in2 alignment2.fasta


    For a full list of Opal arguments, use the --help flag:
       ./opal --help


Opal has been tested on unix and linux operating systems (including Mac OS X),
and should work on cygwin. It should also work in Windows by bypassing the 
shell script and directly calling Java.

If you receive an "out of memory" error message, you can increase the 
memory allocated to the Java VM by calling opal with the --mem flag, 
for example:
./opal --mem 2G unaligned_seqs.fasta > alignment.fasta

A more permanent increase to memory allocation can be acheived by editing 
the "mem" line in the opal shell script, for example, changing
   mem="1G"
to
   mem="2G"   



Alignment based on psipred-predicted protein structure 
------------------------------------------------------

Additional accuracy on protein sequence alignment is achieved by using a 
modified scoring scheme that incorporates protein secondary structure, as 
predicted by psipred. Details of this approach are available in the following 
paper, which should be cited if secondary-structure-based alignment is 
performed: 

   Kim, E., Wheeler, T.J., and Kececioglu, J.D.  Learning models for aligning
   protein sequence with predicted secondary structure, Proceedings of the 
   13th Conference on Research in Computational Molecular Biology (RECOMB), 
   Springer-Verlag Lecture Notes in Bioinformatics 5541: 586-605, 2009.

If you choose to use this approach follow these steps:

(1) Get psipred, e.g.
$ mkdir psipred32
$ cd psipred32
$ wget http://bioinfadmin.cs.ucl.ac.uk/downloads/psipred/psipred32.tar.gz
$ tar -xzf psipred32.tar.gz
$ cd src
$ make

(2) Open the psipred script runpsipred_single (in the psipred installation
directory), and modify the two lines:
set execdir
set datadir
to match to the absolute path of those directories

(3) Ensure that the the Opal script predict_structure.pl can find psipred.
Either:
  (a) place runpsipred_single in your PATH
  or
  (b) edit predict_structure.pl to set the path in which runpsipred_single
      is found, by editing the line:
        my $psipred_dir ; # if empty, use $PATH

(4) Opal may then be run with one additional argument: "--use_struct", as in:
  ./opal --use_struct unaligned_seqs.fasta > alignment.fasta          
  or
  ./opal --use_struct --in unaligned_seqs.fasta --out alignment.fasta



Bypassing the shell script 
--------------------------

If you wish to bypass the shell script, you can run Opal.jar directly with
a command like:
 java -server -Xmx1G -jar Opal.jar unaligned_seqs.fasta > alignment.fasta

If you are using structure predictions while calling Opal in this way, you 
must provide a structure file of the sort produced by predict_structure.pl.
Suppose such a file is named file.ss; then call Opal like:

 java -server -Xmx1G -jar Opal.jar --structure_file file.ss file.fasta > output

If you take this approach because of some failing in the opal shell script, 
please e-mail me so I can improve the shell script

Source code is included in the jar. Extract the jar 
('mv opal runopal; jar xf Opal.jar'), then enter the directory opal.


Default parameters
------------------

Default model parameters (substituion and gap scores) were selected by a 
process described in the ISMB paper. Those details specifically relate to 
parameters for protein sequences. A similar approach was used when choosing
parameters for DNA alignment, training on BRaliBase III 
(http://projects.binf.ku.dk/pgardner/bralibase/bralibase3/).