MotDB


AJACS32/bono のバックアップの現在との差分(No.1)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
[[講習会のページに戻る>AJACS32]]

&size(36){コマンドラインで遺伝子配列を解析する};

----
~目次
#contents
----
事前調査: Mac: 4, Windows: 16, N/A: 1

* はじめに:参加者アンケート [#r2e170d6]
- おもにMacの人:x
- おもにWindowsの人:
- iPhoneの人:
--そのうちiPhoneは体の一部の人:
- iPadの人:
- バイオインフォマティクスを使っている人:
- プログラミングをたしなむ人:
- データベースを構築している人:
- データベースを構築したい人:
- ライフサイエンス統合データベースセンターの存在を知っていた人:
* はじめに: 参加者アンケート [#r2e170d6]
- おもにMacの人:5
- おもにWindowsの人:9
- iPhoneの人:4
--そのうちiPhoneは体の一部の人:2
- iPadの人:4
- バイオインフォマティクスを使っている人:0
- プログラミングをたしなむ人:0
- データベースを構築している人:0
- データベースを構築したい人:0
- ライフサイエンス統合データベースセンターの存在を知っていた人:3

* 必要なコンピュータリテラシー [#xf9175d0]

** Google [#e3077b51]

> http://www.google.co.jp/

Google(「グーグル」と読みます)検索することを「ググる」といいます。そこでインターネット上では、自分でインターネット検索もせずにあれこれと質問をしてくるユーザーに対して以下のようにいうことがあります。

&size(30){ググれカス};

- 【実習B1】''DBCLS''でググりなさい。何件ヒットがありますか?
#fold(←こたえは左の+マークをクリックすると出てきます,2011年5月17日現在、約 227,000 件)
#fold(←こたえは左の+マークをクリックすると出てきます,2012年7月26日現在、約 1,040,000  件)

でもこれは「ウェブ全体から検索」した結果なのです。

- 【実習B2】ググった結果のページ中で「日本語のページを検索」のリンクを探してクリックしなさい。
#fold(←こたえ。上記の結果と比較してどう変化するでしょうか?,2011年5月17日現在、約 252,000 件)
#fold(←こたえ。上記の結果と比較してどう変化するでしょうか?,2012年7月26日現在、約  593,000 件)

- 【実習B3】さらに検索窓右下の「検索オプション」をクリックして絞り込みをかけてみなさい。''ドメイン''で'''.ac.jp'''を指定すると何件ぐらいに絞り込まれますか?
#fold(←こたえ。得られる結果にはどういった特徴があるだろうか?,2011年5月17日現在、約17,000 件で、ドメインがdbcls.rois.ac.jpのサイトばかりがヒットしてくるといった特徴がある)
- 【実習B3】さらに画面最下部の「検索オプション」をクリックして絞り込みをかけてみなさい。''ドメイン''で'''.ac.jp'''を指定すると何件ぐらいに絞り込まれますか?
#fold(←こたえ。得られる結果にはどういった特徴があるだろうか?,2012年7月26日現在、約15,700 件で、ドメインがdbcls.rois.ac.jpのサイトばかりがヒットしてくるといった特徴がある)

- 【応用B4】さらに見るべきヒットを絞り込むにはどういうオプションを指定すればいいだろうか?
#fold(←こたえ。,例えば、「キーワードを含めない」オプションで'''rois'''を指定してみる)

- 【応用B5】'DBCLS' は「ライフサイエンス統合データベースセンター」の略号であるが、たまに「ライフサイエンス総合データベースセンター」と間違えられる。そう間違えられている例を"で囲うことでインターネット検索エンジンを用いて抽出しなさい。
#fold(←こたえ。,"ライフサイエンス総合データベースセンター”でググって、「キーワードを含めない」オプションで'''ライフサイエンス統合データーベースセンター'''を指定してみる)

- 【実習D1】'SPF'でググリなさい。どういったことが起こるか?
- 【実習B6】'SPF'でググリなさい。どういったことが起こるか?
#fold(←こたえ。,例えば、'DBCLS'でGoogle検索しても「ライフサイエンス統合データベースセンター」以外の'DBCLS'はインターネット上にそれほどないため困らないのであるが、短い略語の場合は同義語がインターネット上に多数存在して調べたい情報に行き着くまでに非常に苦労することになります。)

つまり、こういうことです。

&size(30){[[ググるなあぶない>http://motdb.dbcls.jp/?plugin=attach&pcmd=open&file=donotgoogle.jpg&refer=AJACS26%2Fbono]]};
&size(36){[[ググるなあぶない>http://motdb.dbcls.jp/?plugin=attach&pcmd=open&file=donotgoogle.jpg&refer=AJACS26%2Fbono]]};

** 脱線: GGRNA [#y1eedffd]

> http://ggrna.dbcls.jp/

遺伝子名や断片配列(塩基配列やアミノ酸配列)でRefSeqを検索できるサイト。DBCLS謹製。

http://lifesciencedb.jp/image/small_video_icon.png
[[GGRNAで遺伝子をGoogleのように検索する>http://togotv.dbcls.jp/20120124.html]] 


** cygwin(windowsの人のみ) [#vef33a7b]
cygwinをまだインストールしていない人は以下の動画を参考にインストールしてください。

http://lifesciencedb.jp/image/small_video_icon.png
[[WindowsでUNIX! 1. Cygwin インストール編>http://togotv.dbcls.jp/20110520.html]] 

** UNIX コマンド [#de3fd902]

http://lifesciencedb.jp/image/small_video_icon.png
[[WindowsでUNIX! 2. ファイル操作編>http://togotv.dbcls.jp/20110929.html]] 

- cd
- pwd
- ls
- cp
- mv
- rm


http://lifesciencedb.jp/image/small_video_icon.png
[[WindowsでUNIX! 3. ファイル操作応用編>http://togotv.dbcls.jp/20120710.html]] 

#ref(sample.zip)

- wc
- less
- gzip
- tar
- mkdir
- find

ここで紹介した以外に大きなファイルを扱う際に先頭の数行だけを表示する head、末尾の数行だけを表示する tailなどがあります。
> % head sample1.fa
> % tail sample1.fa

細かいオプションなどはググるまでもなく

> % man head

などすることでマニュアルが参照できます。


* Local BLAST [#e17b6eed]
できる人は統合TVみてどんどん進めてってください。

ひょっとすると今使っているLANの制限で、以下動画の中で指示のあるFTPサイトにアクセス出来ないかもしれません。
BLASTのダウンロードサイト(臨時)として
> http://dbcls.rois.ac.jp/~bono/docs/120728AJACS/LocalBLAST/

DBのダウンロードサイト(臨時)として

> http://dbcls.rois.ac.jp/~bono/docs/120728AJACS/db/

を用意したので、こちらから必要なファイルをダウンロードしてください。

Windowsのcygwin上でのLocal BLASTを試みる人は、BLASTのプログラムのFTPサイト(のミラーサイト)
> http://dbcls.rois.ac.jp/~bono/docs/120728AJACS/LocalBLAST/ 
から
> ncbi-blast-2.2.26+-ia32-win32.tar.gz (32ビットのwindowsの方)
> ncbi-blast-2.2.26+-x64-win64.tar.gz (64ビットのwindowsの方)

をダウンロードし、以下の統合TVのMacOSX版の方でやってみてください(中上級者向け)。その際、展開したプログラムファイルは

> cp ~/ncbi-blast-2.2.26+/bin/* /usr/local/bin

などとしてコマンドサーチパスが通ったところにコピーしておいて下さい。

** Windows [#n783a910]

http://lifesciencedb.jp/image/small_video_icon.png
[[Local BLAST の使い方〜導入・準備編〜 2011>http://togotv.dbcls.jp/20110119.html]] 

http://lifesciencedb.jp/image/small_video_icon.png
[[Local BLAST の使い方〜検索実行・オプション編〜 2011>http://togotv.dbcls.jp/20110225.html]] 

使用するテスト配列のファイルはこちらです。

#ref(test.txt)

#ref(test1.txt)

#ref(testnt.txt)

#ref(testdouble.txt)

** MacOSX [#o5cee03c]

http://lifesciencedb.jp/image/small_video_icon.png
[[Local BLAST の使い方〜導入・準備編(MacOSX版)〜 2011>http://togotv.dbcls.jp/20110420.html]] 

http://lifesciencedb.jp/image/small_video_icon.png
[[Local BLAST の使い方〜検索実行・オプション編(MacOSX版)〜 2011>http://togotv.dbcls.jp/20110608.html]] 

使用するテスト配列のファイルはこちらです。

#ref(test.txt)

#ref(test1.txt)

#ref(testnt.txt)

#ref(testdouble.txt)



* データ後処理 [#z7c0084b]
** 数える [#y173062b]
大規模にBLASTを計算するといくつヒットがあったかなどが一目ではわからなくなってきます。そういった「数える」必要があるときにコマンドラインでの処理が役に立ちます。

- FASTAファイルの配列のエントリ数を。例えば、上で用いたyeastのアミノ酸配列のDB(FASTA形式)の配列エントリ数を数える場合。
> grep -c ^\> yeast.aa

6298と出れば正解です。これが(データベース中の)yeastのアミノ酸配列数です。

- BLASTの結果ファイル(-outfmt 6オプションでタブ区切り出力したもの)で、ヒットのあったエントリ数を。自分で結果ファイルを用意しても構いませんが、ここでは以下の結果ファイルのサンプル(ファイル名:testfmt6.out)で説明します。

#ref(testfmt6.out)

処理する前にこれがどんなファイルか見ましょう。

> less testfmt6.out


一行が長くて見づらいですね。lessのオプションに-S (Sは大文字のS)というものがあります。すると…。

> less -S testfmt6.out

見やすくなりましたね。

-- 1カラム目(一番左のカラム)を抜き出し(cut -f1)、ソートして重なりのない状態にして(sort -u)出力する。

> cut -f1 testfmt6.out | sort -u | less

さらに、数える(wc)。

> cut -f1 testfmt6.out | sort -u | wc

これによってヒットがあったクエリの数が数えられます。これぐらいの数なら人の目でも数えられますが、多くなると不可能になってくるので、こういうコマンドが大変重宝します。

-- ヒットのあったDB中のエントリが記載されている2カラム目を抜き出し(cut -f2)、
--- ソートして(sort)数える(wc)。
> cut -f2 testfmt6.out | sort | wc

--- ソートして重なりのない状態にして(sort -u)数える(wc)。
> cut -f2 testfmt6.out | sort -u | wc

この違いは重複したエントリによるものです。それが何回でてきたか知るには?

-- ヒットのあった数をそれぞれのエントリごとに。count.prlというPerlスクリプトを使って。

> which perl

といれて

> $ which perl
> which: no perl in (/usr/local/bin:/usr/bin:/cygdrive/c/ProgramFiles/Parallels/ParallelsTools/Applications:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files/MacType)

のように no perl と出たらPerlがインストールされていません。cygwinのインストール画面でオプション設定でPerlをインストールしてください。ちなみにMacOSXの場合は買った状態でPerlがインストールされています。

> while(<>) {
>         my($word) = split;
>         $num{$word}++;
> }
> foreach (sort keys %num) {
>         print "$_\t$num{$_}\n";
> }

> cut -f2 testfmt6.out | sort | perl count.prl | less

** ベストヒットだけを抽出 [#dcf9cf96]
BLASTの出力ファイル(-outfmt 6オプションでタブ区切り出力したもの)をテキスト処理するやり方もありますが、Local BLASTが実行可能となった今、普通にBLASTのオプションで -max_target_seqs 1 を指定するほうが早いです。例えば、

> blastp -db yeast.aa -query mito.aa -out mito_vs_yeast.out -outfmt 6 -max_target_seqs 1

これでquery: mito.aa db: yeast.aaのベストヒットが抽出できます。

** おまけ:改行コード問題 [#y8b3afb0]
出てきたBLASTの結果。テキストファイルなのにある種のソフトウェアではうまく認識されないことがあります。その場合、この問題を疑ってください。

*** 改行コード問題とは? [#yf6119ab]
使用プラットフォーム(OS)によって改行コードが異なるため、、
- Macのテキストファイル
#ref(mac.txt)
> % od -c mac.txt
> 0000000   c   a   r   r   i   a   g   e       r   e   t   u   r   n  \r
> 0000020   m   a   c

-Unixのテキストファイル
#ref(unix.txt)
> % od -c unix.txt
> 0000000   l   i   n   e       f   e   e   d  \n   u   n   i   x
> 0000016

-Windowsのテキストファイル
#ref(win.txt)
> % od -c win.txt 
> 0000000   C   R       a   n   d       L   F  \r  \n   w   i   n
> 0000016


*** その対処法 [#q75d09de]
いくつかやり方がありますが、一番汎用性の高いものを紹介します。

以下のperlワンライナーでmac改行形式のファイル(mac.txt)がUNIX改行形式のファイル(mac_conv_unix.txt)に変換されます。

> perl  -pe 's/\r/\n/g' mac.txt > mac_conv_unix.txt


&size(30){つぶやけ、されば救われん};