                           README for standalone MEGABLAST
                              (last updated 7/2/2004)

    Mega BLAST uses the greedy algorithm of Zhang et al. [1] for nucleotide
    sequence alignment search and concatenates many queries to save time spent
    scanning the database. This program is optimized for aligning sequences that
    differ slightly as a result of sequencing or other similar "errors". It is up to
    10 times faster than more common sequence similarity programs and therefore can
    be used to swiftly compare two large sets of sequences against each other.

    Most of the options are similar to those in the blastall binary (see README.bls
    file for their descriptions). Note that megablast binary does not require the
    program option. Below are the more detailed explanations of some of the options
    either specific to Mega BLAST or having different meaning:

    -----------------------------

    -W Word size.

       When W is divisible by 4, it guarantees that all perfect matches of length
       W + 3 will be found by Mega BLAST search, however perfect matches of length
       as low as W might also be found, although the latter is not guaranteed. Any
       value of W not divisible by 4 is equivalent to the nearest value divisible by
       4 (with 4*i+2 equivalent to 4*i).

    -----------------------------

    -G, -E Affine gapping penalties.

       If these options are not set (both are 0), then non-affine gapping is assumed
       with gap opening penalty 0 and gap extension penalty E, that can be computed
       from match reward r and mismatch penalty q by the formula: E = r/2 - q. The
       affine version of Mega BLAST requires significantly more memory, so it should
       be avoided if possible, especially when some of the query or database
       sequences are very long.

    -----------------------------

    -D Type of the Mega BLAST output.

       0: Produce one-line output for each alignment, in the form

          'subject-id'=='[+-]query-id' (s_off q_off s_end q_end) score

          Here subject(query)-id is a gi number, an accession or some other type of
          identifier found in the FASTA definition line of the respective sequence.

          + or - corresponds to same or different strand alignment.

          Score for non-affine gapping parameters means the total number of
          differences (mismatches + gaps). For affine case it is the actual (raw)
          score of the alignment.

       1: Show the same output as level 0, plus the endpoints and percentage
          of identical nucleotides for each ungapped segment in the alignment.

       2: Show the traditional BLAST (blastn) output.

       3: Show one-line output for each alignment, with the following fields
          tab-separated:

          Query id, Subject id, percent of identity, alignment length, number of
          mismatches (not including gaps), number of gap openings, start of
          alignment in query, end of alignment in query, start of alignment in
          subject, end of alignment in subject, expected value, bit score.

          If the alignment is from a reverse strand, the subject start and end are
          printed in the reverse order, reflecting the actual direction of the
          alignment.

    -----------------------------
    -F Filtering

       This option is described in the README.bls file and in general works
       identically to other BLAST programs. It actually contains two different
       options: the type of filtering and what stages of the search should mask the
       filtered regions. The option is specified by a string that contains all types
       of filters the user wants to apply, separated by semicolons or spaces. The
       available filters for nucleotide BLAST or Mega BLAST searches are:

            D - dust
            R - Human repeats
            V - Vector screen
            L - low complexity (equivalent to D)

       Finally, if letter 'm' is included in the filter string, all types of
       filters are used to mask the query sequence regions only on the word finding
       stage and do not affect the extension stage.

       E.g. if the option -F "m D;R" is specified, then both dust and human repeats
       filtering will be applied, but the alignments will be extended through the
       filtered areas. With option -F "L;V" the dust and vector screen filters will
       be applied, and the filtered areas will be masked for all stages of the
       search.

       The -F m option affects the lower case filtering (specified by the -U option)
       as well. Therefore if one wants to use lower case filtering, but allow the
       extension through lower case regions of the query sequence, the -F m -U T
       combination of options must be used.

    -----------------------------

    -X X-dropoff value.

       As in BLAST, this values provides a cutoff threshold for the extension
       algorithm tree exploration. When the score of a given branch drops below the
       current best score minus the X-dropoff, the exploration of this branch
       stops.
    -y X-dropoff for ungapped extensions.
    -Z X-dropoff for the final gapped extension.
       Both -y and -Z are used only in conjunction with -n T option, i.e. when
       non-greedy gapped extension is performed, like in blastn.

       Note that all of these are the raw values, as opposed to bit values for other
       variations of BLAST.
    -----------------------------

    -e The cutoff expectation value.

       By default this value is set to a very large number, i.e. effectively there
       is no expectation value cutoff.

    -----------------------------

    -v Maximal number of database sequences to report alignments from.
    -b Maximal number of reported alignments for a given database sequence.

       These options are meaningful only in conjunction with -D 2.

    -----------------------------

    -J Believe the query defline.

       The default is T (TRUE) for all types of output except -D 2. In the latter
       case, the default is F (FALSE), unless a SeqAlign ASN.1 output is required,
       specified by the -O option.
       Note: this option must be set to F (FALSE) if the sequence IDs in the FASTA
       file are not unique.

    -----------------------------

    -M Maximal total length of queries to be concatenated for a single megablast
       search.

       Setting this value to smaller than default (20,000,000) can reduce the memory
       image of the program for large searches.

    -----------------------------

    -P Maximal number of positions for a hash value.

       This option provides for a very simple type of filtering if it is set to a
       non-zero value. Namely, any pattern of length 12 when word size is greater
       than or equal to 16 (8 for smaller word sizes), that appears in all of the
       query sequences together more than P times, is masked and not included in the
       search look-up table. If such masking occurs, megablast shows a warning
       message on the standard output. This can be useful when running megablast for
       very long unmasked sequences, in which case when -P option is not set, the
       search might take a very long time.

    -----------------------------

    -O ASN.1 Seqalign file.

       This option specifies a file name for writing ASN.1 output. It is only
       meaningful in conjunction with -D 2. The ASN.1 will consist of separate
       ASN.1 codes for each query sequence:

       Seq-annot ::= {
          All hits for first query
                     }
       Seq-annot ::= {
          All hits for second query
                     }
       etc.

    -----------------------------

    -s Minimal hit score to report.

       By default this value is set to W, where W is the wordsize (-W option),
       i.e. is ignored (since all found alignments are extended from an exact match
       of length at least W).

    -----------------------------

    -Q Masked query output.

       All regions of the query sequences, that were hit by any found alignment, are
       masked by N's. The output is written to a file specified by the -Q option. It
       can be used only in conjunction with -D 2.

    -----------------------------

    -f Show full IDs in the output.

       By default, for -D 0 and -D 1 outputs, the sequence IDs are reported as GIs
       or accession numbers (if GIs are not available). If -f is set to T, full IDs
       will be shown, unless -J option is set to F. In the latter case full deflines
       will be shown for the query sequences.

    -----------------------------

    -U Use lower case filtering of FASTA sequences.

       Like in blastall binary, this option allows to treat lower case in the query
       sequences as masked residues. The deafult for this option is set to FALSE,
       in which case the lower case is treated identically to upper case.

    -----------------------------

    -p Cutoff by percentage of identity

       The alignments with identity percentage below the value of this option are
       not reported in all output formats except -D 0 (with the latter the traceback
       is not performed, so it is impossible to calculate the percentage of identical
       residues).

    -----------------------------

    -t Discontiguous word template length.

       If this is not zero, the discontiguous word approach is used. The supported
       template lengths are 16, 18, and 21. The word size (-W parameter) must be 11 or
       12 in this case.

    -N Discontiguous template type: coding (0), non-coding (1), or both (2).
       For each of the three template lengths, two discontiguous templates are
       supported. One of them, called coding, is based on the '110' pattern, the other
       is optimal, or close to optimal, based on the hit probability simulations for
       random sequences.

       The exact templates are:
       W = 11, t = 16, coding:     1101101101101101
       W = 11, t = 16, non-coding: 1110010110110111
       W = 12, t = 16, coding:     1111101101101101
       W = 12, t = 16, non-coding: 1110110110110111
       W = 11, t = 18, coding:     101101100101101101
       W = 11, t = 18, non-coding: 111010010110010111
       W = 12, t = 18, coding:     101101101101101101
       W = 12, t = 18, non-coding: 111010110010110111
       W = 11, t = 21, coding:     100101100101100101101
       W = 11, t = 21, non-coding: 111010010100010010111
       W = 12, t = 21, coding:     100101101101100101101
       W = 12, t = 21, non-coding: 111010010110010010111

       If 'both' option is chosen, then all initial matches satisfying either one of the
       two types of templates are extended.

    -----------------------------

    -g Generate words for every base of the database.

       Both in blastn and traditional megablast, the database sequences are compressed
       4:1, and words are looked up only at the beginning of each byte, i.e. at every 4th
       base. This option prescribes to lookup words starting at any arbitrary base
       of the database sequence.

    -----------------------------

    -H Maximal number of HSPs to save per database sequence.

    -----------------------------

[1] Zhang Z., Schwartz S., Wagner L., & Miller W. (2000), "A greedy algorithm for aligning DNA sequences", J Comput Biol 2000; 7(1-2):203-14. Medline