
                               EMBOSS: needle
     _________________________________________________________________
   
                                Program needle
                                       
Function

   Needleman-Wunsch global alignment
   
Description

   This program uses the Needleman-Wunsch global alignment algorithm to
   find the optimum alignment (including gaps) of two sequences when
   considering their entire length.
   
   The Needleman-Wunsch algorithm is a member of the class of algorithms
   that can calculate the best score and alignment in the order of mn
   steps, (where 'n' and 'm' are the lengths of the two sequences). These
   dynamic programming algorithms were first developed for protein
   sequence comparison by Needleman and Wunsch, though similar methods
   were independently devised during the late 1960's and early 1970's for
   use in the fields of speech processing and computer science.
   
   What is the optimal alignment? Dynamic programming methods ensure the
   optimal global alignment by exploring all possible alignments and
   choosing the best. It does this by reading in a scoring matrix that
   contains values for every possible residue or nucleotide match. Needle
   finds an alignment with the maximum possible score where the score of
   an alignment is equal to the sum of the matches taken from the scoring
   matrix.
   
   An important problem is the treatment of gaps, i.e., spaces inserted
   to optimise the alignment score. A penalty is subtracted from the
   score for each gap opened (the 'gap open' penalty) and a penalty is
   subtracted from the score for the total number of gap spaces
   multiplied by a cost (the 'gap extension' penalty).
   
   Typically, the cost of extending a gap is set to be 5-10 times lower
   than the cost for opening a gap.
   
Usage

   Here is a sample session with needle.

% needle sw:hba_human sw:hbb_human

Gap opening penalty [10.0]:
Gap extension penalty [0.5]:
Output file [hba_human.needle]:

Command line arguments

   Mandatory qualifiers:
  [-sequencea]         sequence   Sequence USA
  [-seqall]            seqall     Sequence database USA
   -gapopen            float      The gap open penalty is the score taken away
                                  when a gap is created. The best value
                                  depends on the choice of comparison matrix.
                                  The default value assumes you are using the
                                  EBLOSUM62 matrix for protein sequences, and
                                  the EDNAFULL matrix for nucleotide
                                  sequences.
   -gapextend          float      The gap extension, penalty is added to the
                                  standard gap penalty for each base or
                                  residue in the gap. This is how long gaps
                                  are penalized. Usually you will expect a few
                                  long gaps rather than many short gaps, so
                                  the gap extension penalty should be lower
                                  than the gap penalty. An exception is where
                                  one or both sequences are single reads with
                                  possible sequencing errors in which case you
                                  would expect many single base gaps. You can
                                  get this result by setting the gap open
                                  penalty to zero (or very low) and using the
                                  gap extension penalty to control gap
                                  scoring.
  [-outfile]           align      (no help text) align value

   Optional qualifiers:
   -datafile           matrixf    Matrix file

   Advanced qualifiers:
   -[no]similarity     bool       Display percent identity and similarity

   General qualifiers:
  -help                bool       report command line options. More
                                  information on associated and general
                                  qualifiers can be found with -help -verbose
   

   Mandatory qualifiers Allowed values Default
   [-sequencea]
   (Parameter 1) Sequence USA Readable sequence Required
   [-seqall]
   (Parameter 2) Sequence database USA Readable sequence(s) Required
   -gapopen The gap open penalty is the score taken away when a gap is
   created. The best value depends on the choice of comparison matrix.
   The default value assumes you are using the EBLOSUM62 matrix for
   protein sequences, and the EDNAFULL matrix for nucleotide sequences.
   Floating point number from 1.0 to 100.0 10.0 for any sequence
   -gapextend The gap extension, penalty is added to the standard gap
   penalty for each base or residue in the gap. This is how long gaps are
   penalized. Usually you will expect a few long gaps rather than many
   short gaps, so the gap extension penalty should be lower than the gap
   penalty. An exception is where one or both sequences are single reads
   with possible sequencing errors in which case you would expect many
   single base gaps. You can get this result by setting the gap open
   penalty to zero (or very low) and using the gap extension penalty to
   control gap scoring. Floating point number from 0.0 to 10.0 0.5 for
   any sequence
   [-outfile]
   (Parameter 3) (no help text) align value Alignment file
   Optional qualifiers Allowed values Default
   -datafile Matrix file Comparison matrix file in EMBOSS data path
   EBLOSUM62 for protein
   EDNAFULL for DNA
   Advanced qualifiers Allowed values Default
   -[no]similarity Display percent identity and similarity Yes/No Yes
   
Input file format

   Any 2 sequence USAs of the same type (DNA or protein).
   
Output file format

   Here is the output file from the example run:
     _________________________________________________________________
   
Global: HBA_HUMAN vs HBB_HUMAN
Score: 290.50

HBA_HUMAN       1         VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFP 44
                           |:| :|: | | ||||  :  | | ||| |: : :| |: :|
HBB_HUMAN       1        VHLTPEEKSAVTALWGKV..NVDEVGGEALGRLLVVYPWTQRFFE 43

HBA_HUMAN       45       HF.DLS.....HGSAQVKGHGKKVADALTNAVAHVDDMPNALSAL 83
                          | |||      |: :|| |||||  | :: :||:|::    : |
HBB_HUMAN       44       SFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATL 88

HBA_HUMAN       84       SDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKF 128
                         |:||  || ||| ||:|| : |:  || |   |||| | |:  |
HBB_HUMAN       89       SELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKV 133

HBA_HUMAN       129      LASVSTVLTSKYR                                 141
                         :| |:  |  ||
HBB_HUMAN       134      VAGVANALAHKYH                                 146

%id = 45.32                     %similarity = 63.31
Overall %id = 43.15             Overall %similarity = 60.27
     _________________________________________________________________
   
   The %id is the percentage of identical matches between the two
   sequences over the reported aligned region.
   
   The %similarity is the percentage of matches between the two sequences
   over the reported aligned region where the scoring matrix value is
   greater or equal to 0.0.
   
   The Overall %id and Overall %similarity are calculated in a similar
   manner for the number of matches over the length of the longest of the
   two sequences.
   
Data files

   For protein sequences EBLOSUM62 is used for the substitution matrix.
   For nucleotide sequence, EDNAFULL is used. Others can be specified.
   
   EMBOSS data files are distributed with the application and stored in
   the standard EMBOSS data directory, which is defined by EMBOSS
   environment variable EMBOSS_DATA.
   
   Users can provide their own data files in their own directories.
   Project specific files can be put in the current directory, or for
   tidier directory listings in a subdirectory called ".embossdata".
   Files for all EMBOSS runs can be put in the user's home directory, or
   again in a subdirectory called ".embossdata".
   
   The directories are searched in the following order:
     * . (your current directory)
     * .embossdata (under your current directory)
     * ~/ (your home directory)
     * ~/.embossdata
       
Notes

   needle is a true imple,entation of the Needleman-Wunsch algorithm and
   so produces a full path matrix. It therefore cannot be used with
   genome sized sequences unless you've a lot of memory and a lot of
   time.
   
References

    1. Needleman, S. B. and Wunsch, C. D. (1970) J. Mol. Biol. 48,
       443-453.
    2. Kruskal, J. B. (1983) An overview of squence comparison In D.
       Sankoff and J. B. Kruskal, (ed.), Time warps, string edits and
       macromolecules: the theory and practice of sequence comparison,
       pp. 1-44 Addison Wesley.
       
Warnings

   needle is for aligning two sequences over their entire length. This
   works best with closely related sequences. If you use needle to align
   very distantly-related sequences, it will produce a result but much of
   the alignment may have little or no biological significance.
   
   A true Needleman Wunsch implementation like needle needs memory
   proportional to the product of the sequence lengths. For two sequences
   of length 10,000,000 and 1,000 it therefore needs memory proportional
   to 10,000,000,000 characters. Two arrays of this size are produced,
   one of ints and one of floats so multiply that figure by 8 to get the
   memory usage in bytes. That doesn't include other overheads. Therefore
   only use water and needle for accurate alignment of reasonably short
   sequences.
   
   If you run out of memory, try using stretcher instead.
   
Diagnostic Error Messages

Uncaught exception
 Assertion failed
 raised at ajmem.c:xxx

   Probably means you have run out of memory. Try using stretcher if this
   happens.
   
Exit status

   0 upon successful completion.
   
Known bugs

   None.
   
See also

   Program name                      Description
   alignwrap    Aligns a set of sequences to a seed alignment
   est2genome   Align EST and genomic DNA sequences
   stretcher    Finds the best global alignment between two sequences
   
   When you want an alignment that covers the whole length of both
   sequences, use needle. 
   
   When you are trying to find the best region of similarity between two
   sequences, use water.
   
   stretcher is a more suitable program to use to find global alignments
   of very long sequences.
   
Author(s)

   This application was written by Alan Bleasby (ableasby@hgmp.mrc.ac.uk)
   
History

Completed 8th July 1999.
Modified 26th July 1999 - scoring tweaked.
Modified 22 Oct 2000 - %ID and %Similaritty scores added.

Target users

   This program is intended to be used by everyone and everything, from
   naive users to embedded scripts.
   
Comments
