BLAST+


未だに、`legacy blast` を使って説明しているのが多いけど、個人使用においては、`blast+` を使わない意味が無いですよ。と。
特に `-m8` 相当で、`subject length` とか、 `subject title` とか出せるんだから、、、、

って書いてた古文書発見[^1]。

[^1]: ちなみに、今ポストされてる文章は、2015 年のもの。多分 10 年後でも legacy blast は残ってるんだろーなー、、、

その中から、 `makeblastdb` と `blastn`、 `legacy_blast.pl` の所を記載。
他のコマンドに関しては、`legacy_blast.pl` での変換、及び `-help` での確認を。

## makeblastdb

`formatdb` の代り

```
$ makeblastdb -dbtype nucl  -parse_seqids -in INPUT
```

INPUT にファスタ名を

* help => `makeblastdb -help`


## blastn

`megablast` の代り。


例えば、

```
$ megablast -d BLASTDB -i INPUT -o OUTPUT -m 8 -v 1 -b 1 -e 1e-10 -F F
```
は、

```
$ blastn -db BLASTDB -query INPUT -evalue 1e-10 -num_descriptions 1 -num_alignments 1 -out OUTPUT -outfmt 6 -dust no
```

となる[^2]。

[^2]: `-num_descriptions 1` と `-num_alignments 1` が排他的らしいので、別のオプション `-max_target_seqs 1` などを使う。


### `blastall -p blastn` の代り

`blastn -task blastn` であるが、 `megablast` 機能を OFF にし、遅くなるだけなので脳内からは消し去るべき。

### `bl2seq` の代り

`bl2seq` も吸収されて、 `XXXXX -query FASTA -sbject FASTA` に。`XXXXX` は、`blastn` とか `blastp` とか。

### `-outfmt 6`
これは `-m 8` に相当するが、`-outfmt '6 STR'` を指定する事によって、拡張させる事が出来る。もちろんデフォルトの状態から減らす事も出来るが、混乱を避ける為に、減らしたりカスタマイズしすぎたりするのは避けるべき[^3]。

[^3]: あたり前だけど、`blastx`, `blastp` などでも同様。 

```
-outfmt '6 std stitle qlen slen'
```

現在はこの形式で使用している。


```
   Options 6, 7, and 10 can be additionally configured to produce
   a custom format specified by space delimited format specifiers.
   The supported format specifiers are:
            qseqid means Query Seq-id
               qgi means Query GI
              qacc means Query accesion
           qaccver means Query accesion.version
              qlen means Query sequence length
            sseqid means Subject Seq-id
         sallseqid means All subject Seq-id(s), separated by a ';'
               sgi means Subject GI
            sallgi means All subject GIs
              sacc means Subject accession
           saccver means Subject accession.version
           sallacc means All subject accessions
              slen means Subject sequence length
            qstart means Start of alignment in query
              qend means End of alignment in query
            sstart means Start of alignment in subject
              send means End of alignment in subject
              qseq means Aligned part of query sequence
              sseq means Aligned part of subject sequence
            evalue means Expect value
          bitscore means Bit score
             score means Raw score
            length means Alignment length
            pident means Percentage of identical matches
            nident means Number of identical matches
          mismatch means Number of mismatches
          positive means Number of positive-scoring matches
           gapopen means Number of gap openings
              gaps means Total number of gaps
              ppos means Percentage of positive-scoring matches
            frames means Query and subject frames separated by a '/'
            qframe means Query frame
            sframe means Subject frame
              btop means Blast traceback operations (BTOP)
           staxids means unique Subject Taxonomy ID(s), separated by a ';'
                         (in numerical order)
         sscinames means unique Subject Scientific Name(s), separated by a ';'
         scomnames means unique Subject Common Name(s), separated by a ';'
        sblastnames means unique Subject Blast Name(s), separated by a ';'
                         (in alphabetical order)
        sskingdoms means unique Subject Super Kingdom(s), separated by a ';'
                         (in alphabetical order) 
            stitle means Subject Title
        salltitles means All Subject Title(s), separated by a '<>'
           sstrand means Subject Strand
             qcovs means Query Coverage Per Subject
           qcovhsp means Query Coverage Per HSP
   When not provided, the default value is:
   'qseqid sseqid pident length mismatch gapopen qstart qend sstart send
   evalue bitscore', which is equivalent to the keyword 'std'
```


## legacy_blast.pl

legacy blast のコマンド文字列を BLAST+ で実行したいのであれば、

```
$ legacy_blast.pl コマンド文字列
```

としてコマンド変換する。
但し、パスが `/usr/bin/` 決め打ちとなっているので、


```
$ legacy_blast.pl コマンド文字列 --print_only
```

で、変換後のコマンドを確認編集してから実行するのが良い。