Help us understand the problem. What is going on with this article?

Biopython Tutorial and Cookbook和訳 (Chapter 1,2)

More than 1 year has passed since last update.

バイオインフォマティシャン目指す身として、Biopythonを使えるようになりたかった。それだけです。訳す必要はそんなになかったです。。
途中めんどくさくなってサボってます。

Biopython Tutorial and Cookbookの和訳

参考
Biopython Tutorial and Cookbook
Biopython web site

Chapter 1 Introduction

1.1 What is Biopython?

Biopythonは計算分子生物学のための無料で利用可能なPython製ツールです。
Pythonはオブジェクト指向型、インタプリタ型言語で、計算科学において一般的になってきています。容易に学ぶことができ、非常に明瞭なシンタックスとモジュールによる拡張性を持つ、C、C++、FORTRANで書かれた言語です。
BioPythonの目的は、高品質で再利用可能なモジュールやクラスを作ることで、バイオインフォマティクス領域においてPythonをできるだけ簡単に利用できるようにすることです。
Biopythonは様々なバイオインフォマティクスのファイルフォーマット (BLASTClustalwFASTAGenbank など)、オンラインサービス (NCBIExPASy など) へのアクセス、一般的、一般的でないプログラム (ClustalwDSSP、MS/MSなど) へのインターフェース、標準的な配列のクラス、KD木データ構造、ドキュメント形式といったクラスタリング用のモジュールを含んでいます。

1.2 What can I find in the Biopython package

主要なBioPythonの特徴は以下の通りです。

  • 下記フォーマットを含むバイオインフォマティクス関連ファイルをPythonで扱いやすいデータ構造にパースすることができます。

    • Blast output – both from standalone and WWW
    • Blast
    • Clustalw
    • FASTA
    • GenBank
    • PubMed and Medline
    • ExPASy files, like Enzyme and Prosite
    • SCOP, including ‘dom’ and ‘lin’ files
    • UniGene
    • SwissProt
  • サポートされているフォーマットのファイルはイテレータ化、あるいはインデックス化することで、辞書型を介してアクセスすることができます。

  • 各種オンラインサービスを扱うことができます。

    • NCBI – Blast, Entrez and PubMed services
    • ExPASy – Swiss-Prot and Prosite entries, as well as Prosite searches
  • 一般的なバイオインフォマティクスツールへのインターフェースを持っています。

    • Standalone Blast from NCBI
    • Clustalw alignment program
    • EMBOSS command line tools
  • 配列、配列のID、配列のメタデータを扱うための標準的なクラスを利用することができます。

  • 転写、翻訳、分子量計算といった、配列に対する一般的な作業を行うことができます。

  • k近傍法、単純ベイズ、サポートベクターマシンを用いたクラスタリングを行うことができます。

  • 置換配列を作り、それを扱うための標準的な方法を含む配列を扱うことができます。

  • 並列可能なタスクの並列化が簡単にできます。

  • 配列操作、翻訳、BLASTの実行等を行うためのGUIベースのプログラムを含んでいます。

  • このチュートリアルのほかに、wiki、ウェブサイト、メーリスなどのモジュールを用いるための広範なドキュメントとヘルプページを参照することができます。

  • BioPerl、BioJavaプロジェクトからもサポートされている、配列データベーススキーマ (BioSQL) との統合が可能です。

1.3 Installing Biopython

download: http://biopython.org/wiki/Download

対応OS:Windows、Mac、Linux

$ python setup.py build
$ python setup.py test
$ sudo python setup.py install

Python、Biopython 依存関係のインストールを含めた詳細なインストール手順は以下に記載してあります。

1.4 Frequently Asked Questions (FAQ)

1. リファレンスは?

application note [1, Cock et al., 2009]
For the official project announcement: [13, Chapman and Chang, 2000];
For Bio.PDB: [18, Hamelryck and Manderick, 2003];
For Bio.Cluster: [14, De Hoon et al., 2004];
For Bio.Graphics.GenomeDiagram: [2, Pritchard et al., 2006];
For Bio.Phylo and Bio.Phylo.PAML: [9, Talevich et al., 2012];
For the FASTQ file format as supported in Biopython, BioPerl, BioRuby, BioJava, and EMBOSS: [7, Cock et al., 2010]

2. “Biopython”? “BioPython”?
正しくは“Biopython”。 “BioPython”じゃない

以下省略。

Chapter 2 Quick Start – What can you do with Biopython?

このセクションでは、BioPythonを手短に始められるように、何ができるのかについての概要とどう使うのかがわかるように作られています。このセクションのすべての例は、基礎的なPythonの知識があること、そしてBiopythonがインストール済みであることを前提としています。もしPythonの知識のブラッシュアップが必要な場合は、Pythonの公式ドキュメントが始めるのに必要な大量の資料を無料提供しています (http://www.python.org/doc/)。

いくつかの作業はデータベースへのアクセスを必要とするため、実行にインターネット環境を必要とする場合があります。

2.1 General overview of what Biopython provides

introductionで述べたように、BioPythonはコンピュータの前で働く生物学者が関心のある "object" を扱うことを可能にするライブラリのセットです。ユーザーは、少しのプログラミング経験(Pythonはもちろん)を有する、若しくはプログラムを学ぶことに関心を持っている必要があります。Biopythonは、特定のファイルフォーマットをパースすることではなく、関心のある問題に集中できるように再利用可能なライブラリを提供することで(もちろん、存在していないパーサーを書き、Biopythonに貢献することによって助けたいならば、どうぞ!)、プログラマとしての作業をより簡単にすることを目的としています。

Biopythonについて一つ気に留めておいてほしいことは、「同じことをする」複数の方法を提供することが多いということです。私にとって、これはイライラする可能性があります。しかし、このことはまた、多くの柔軟性とライブラリを超えた操作性を与えるため、実際には有益ともなり得ます。このチュートリアルでは一般的、あるいは容易な方法を示します。ほかの方法を学びたい場合は、 Cookbook (Chapter 20, この章はイケてるトリックとtipsを含んでいます)、 the Advanced section(Chapter 22)、ビルトインの docstrigs(Pythonのヘルプコマンド、APIの文書を介して)、究極的にはそのコードそのものの中を見るとよい。

2.2 Working with sequences

議論の余地はありますが、バイオインフォマティクスにおいて中心となるオブジェクトは配列です。すなわち、Biopythonのメカニズムへのquick introductionは配列、すなわちSecオブジェクトを扱うことから始まります。これについては、Chapter 3でより詳しく議論します。
配列のことを考えるとき、我々はAGTACACTGGTといった文字列のことを多くの時間で考える。こういったSeqオブジェクトは以下のように作ることができる。
下記で “>>>” はPythonのプロンプトであることを表しています。

>>> from Bio.Seq import Seq
>>> my_seq = Seq("AGTACACTGGT")
>>> my_seq
Seq('AGTACACTGGT', Alphabet())
>>> print(my_seq)
AGTACACTGGT
>>> my_seq.alphabet
Alphabet()

ここで得たものは、遺伝子アルファベットからなるSeqオブジェクトである - DNAか、タンパクかといったことは指定していない(そう、タンパクは多くのアラニン、グリシン、システイン、トレオニンを持っている!)事実を反映している。アルファベットについてはChapter 3でさらに説明する。

アルファベットを持つことに加え、SeqオブジェクトはPythonの文字列とはそれがサポートしているメソッドにおいて、異なる。このことはただの文字列では行うことができない。

>>> my_seq
Seq('AGTACACTGGT', Alphabet())
>>> my_seq.complement()
Seq('TCATGTGACCA', Alphabet())
>>> my_seq.reverse_complement()
Seq('ACCAGTGTACT', Alphabet())

次に最も重要なクラスはSeqRecord、即ちSequence Recordである。これは、identifier, name and descriptionを含むアノテーションが付いた配列(Seqオブジェクト)を持っている。配列ファイルフォーマットの読み書きに使うBio.SeqIOモジュールは、SeqRecordオブジェクトとともに働く。これは以下で紹介し、詳細はChapter 5で説明する。

ここではBiopythonの配列クラスの基本的な特徴とその使用法を扱う。Biopythonのライブラリと関わることがどういったことかわかったら、面白さと、生物学的なファイルフォーマットを扱う面白い世界を掘り下げていこう!

2.3 A usage example

パーサーと、Biopythonでできる全てのことのまさにその中に飛び込む前に、すること全てに刺激を与えるような事例を準備しましょう。このチュートリアルに一切の生物学がなかったら、どうしてそれを読みたいと思うでしょうか。

私は植物が好きなので、植物をベースにした事例を持っている必要がある(ほかの生物のファンを考えず、申し訳ない!)。私たちの温室へ行き、
Lady Slipper Orchidsに驚く程とりつかれた(もしなぜかと思うのなら、FlickrもしくはGoogle Image SearchでLady Slipper Orchidsの写真を見てみてほしい)。

もちろん、orchidsは見た目が美しいのだが、それだけでなく、進化と系統学を学ぶ人にとって、非常に面白い。そこで、Lady Slipper 進化の分子的研究を行うために、建設的な提案を書くことを考えているとし、どういった研究がすでに行われており、そこにどういったことが付け足せるのかを知りたいとしよう。
少し論文を読むと、Lady Slipper OrchidsはOrchidaceaeファミリーCypripedioideaeサブファミリーに属しそれはCypripedium, Paphiopedilum, Phragmipedium, Selenipedium and Mexipediumの5つの属から構成されていること、が分かった。

このことは、私たちはさらに多くのことを掘り下げ始めるのに十分である。そこで、どのようにBiooythonのツールが助けとなり得るのかを、見てみよう。Section 2.4で配列をパースすることから始める。しかし、orchidsは同様に後になって戻ってくる。-例えば、PubMedをorchids関連論文のために検索する。また、Chapter 9では、配列データをGenBankから抽出する。Chapter 10であるorchidsのタンパクのデータをSwissProtから抽出する。Section 6.4.1.では、orchidタンパクのClustalWマルチプルアライメントを行う。

2.4 Parsing sequence file formats

バイオインフォマティクスにおける多くの作業は、生物学的な情報を持つように設計された多くのファイルフォーマットを扱う。これらのファイルは、面白い生物学的データでいっぱいであり、これらのファイルをある種のプログラミング言語で扱いやすいようなフォーマットにパースすることが試みられている。しかし、かなり定期的にそのファイルフォーマットが変わること、フォーマット中には最高によくデザインされたパーサーでさえ壊れうる部分を含むことがあることから、これらのファイルをパースするというタスクは、ストレスのたまる作業だ。

いまから、Bio.SeqIOモジュールを紹介する。-Chapter 5では、さらに多くのことがわかる。私たちの友人であるlady slipper orchidsをオンラインで検索することから始める。この導入をシンプルなものにするために、NCBIを手動で用いる。Entrez online searchを用いて、Cypripedioideae について述べられているNCBIにある核酸データベースを見てみよう、

このチュートリアルが書かれたとき、この検索はたったの94ヒットしかしなかった。私たちはこれらをFASTAフォーマット、GenBankのテキストファイル(ls_orchid.fastals_orchid.gbk (Biopythonのソースコードとともに docs/tutorial/examples/下))で保存した。

あなたがこの検索を今かけたら、数百の結果が得られる!チュートリアルにしたがって、同様の遺伝子リストが見たいとき、上記の二つのファイルをダウンロードするか、Biopythonソースコード中docs/examples/からコピーすればよい。Section 2.5では、Python中でこういった検索をどのようにかけるのかを見る。

2.4.1 Simple FASTA parsing example

好きなテキストエディタでlady slipper orchidsのFASTAファイル(ls_orchid.fasta)を開くと、ファイルがこんな感じで始まるのがわかる:

>gi|2765658|emb|Z78533.1|CIZ78533 C.irapeanum 5.8S rRNA gene and ITS1 and ITS2 DNA
CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGGAATAAACGATCGAGTG
AATCCGGAGGACCGGTGTACTCAGCTCACCGGGGGCATTGCTCCCGTGGTGACCCTGATTTGTTGTTGGG
...

このファイルは94の文字を含んでいる。各行は“>”で始まり、そのあとに一行もしくは数行の配列が続く。これをPythonで試してみよう:

from Bio import SeqIO
for seq_record in SeqIO.parse("ls_orchid.fasta", "fasta"):
    print(seq_record.id)
    print(repr(seq_record.seq))
    print(len(seq_record))

こんな感じのものが映し出されるはずだ:

gi|2765658|emb|Z78533.1|CIZ78533
Seq('CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGG...CGC', SingleLetterAlphabet())
740
...
gi|2765564|emb|Z78439.1|PBZ78439
Seq('CATTGTTGAGATCACATAATAATTGATCGAGTTAATCTGGAGGATCTGTTTACT...GCC', SingleLetterAlphabet())
592

FASTAフォーマットはアルファベットを指定していないことを考えると、Bio.SeqIOはDNA特異的なものより、より汎用なSingleLetterAlphabet()が初期状態となっている。

2.4.2 Simple GenBank parsing example

今度は、代わりにGenBankファイルであるls_orchid.gbkをロードしましょう。これを行うスクリプトは、上記でFASTAファイルに用いたスニペットとほとんど同じものです。我々が変更した唯一の違いは、ファイルネームとフォーマットの文字列である。

from Bio import SeqIO
for seq_record in SeqIO.parse("ls_orchid.gbk", "genbank"):
    print(seq_record.id)
    print(repr(seq_record.seq))
    print(len(seq_record))
This should give:
Z78533.1
Seq('CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGG...CGC', IUPACAmbiguousDNA())
740
...
Z78439.1
Seq('CATTGTTGAGATCACATAATAATTGATCGAGTTAATCTGGAGGATCTGTTTACT...GCC', IUPACAmbiguousDNA())
592

このとき、Bio.SeqIOは気の利いたアルファベットであるIUPAC Ambiguous DNAを選ぶことができる。また、より短い文字列がseq_record.idとして用いられていることに気づくだろう。

2.4.3 I love parsing – please don’t stop talking about it!

Biopythonは多くのパーサーを持っていて、それぞれはその配列のフォーマットに基づいた特徴を持っています。Chapter 5でBio.SeqIOをより詳細に扱い、Chapter 6ではBio.AlignIOを紹介します。

最もよく使われえるファイルフォーマットは Bio.SeqIOBio.AlignIO中にパーサーが存在しますが、あまり使われていなかったり、古いファイルフォーマットに対するパーサーはまだありません。最新の情報についてはSeqIOAlignIO を確認する、もしくはメーリスで聞いてください。wikiでは最新のサポートされたファイルフォーマットのリストといくつかの例を参照することができます。
特異的なパーサーやそれを使ってイケてることをするための他のドキュメントとしては、Cookbook (このチュートリアルのChapter 20) が有用です。もし探している情報が見つからない場合、忙しい執筆者を助けると思ってcookbookの提案を考えてみてください。

2.5 Connecting with biological databases

バイオインフォマティクスで行う一般的な作業の一つに、生物学的データベースから情報を抽出することが挙げられます。手動でデータベースに接続することは、特に繰り返し行う必要がある場合には冗長な作業になります。いくつかのオンラインデータベースをPythonのスクリプトから利用可能にすることで時間とエネルギーを節約することをBiopythonは試みています。現在、Biopythonを用いて下記のデータベースからデータを抽出することができます。

  • Entrez (and PubMed) from the NCBI – See Chapter 9.
  • ExPASy – See Chapter 10.
  • SCOP – See the Bio.SCOP.search() function.

対応するモジュールによって、これらのページのCGIスクリプトを対話的に利用し、扱いやすいフォーマットによって結果を得ることができます。いくつかの場合、出力データは情報をより簡単に抽出するために、Biopythonのパーサーと統合することができます。

2.6 What to do next

今やあなたはここまでやり遂げ、うまくいっていれば、今やあなたはBiopythonの基礎をよく理解し、効率の良い仕事をし始める準備ができているはずです。まずはこのチュートリアルを読み終えるのが良いでしょう。それからもし興味があれば、ソースコード及び自動生成されたドキュメントを読むと良いでしょう。

何がしたいのかイメージできて、Biopython中のどのライブラリを用いることでそれを達成できるのかわかったら、Cookbook(Chapter 20) を読むのが良いです。ここには、あなたがしたいことと似たようなことをするためのコードが含まれているかもしれません。
コーディングを楽しんで!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした