Biopython-sequence-io-operations

提供:Dev Guides
移動先:案内検索

Biopython-シーケンスI/O操作

Biopythonは、ファイル(任意のストリーム)に対してシーケンスを読み書きするためのモジュールBio.SeqIOを提供します。 バイオインフォマティクスで利用可能なほぼすべてのファイル形式をサポートしています。 ほとんどのソフトウェアは、ファイル形式ごとに異なるアプローチを提供します。 しかし、Biopythonは、SeqRecordオブジェクトを介して、解析されたシーケンスデータをユーザーに提示するために、意識的に単一のアプローチに従います。

次のセクションでSeqRecordの詳細を学びましょう。

SeqRecord

Bio.SeqRecordモジュールは、シーケンスのメタ情報とシーケンスデータ自体を以下に示すように保持するSeqRecordを提供します-

  • seq-これは実際のシーケンスです。
  • id-これは、指定されたシーケンスのプライマリ識別子です。 デフォルトのタイプは文字列です。
  • name-それはシーケンスの名前です。 デフォルトのタイプは文字列です。
  • description-シーケンスに関する人間が読める情報を表示します。
  • annotations-シーケンスに関する追加情報の辞書です。

SeqRecordは、以下に指定されているようにインポートできます。

from Bio.SeqRecord import SeqRecord

これからのセクションで実際のシーケンスファイルを使用してシーケンスファイルを解析することの微妙な違いを理解しましょう。

シーケンスファイル形式の解析

このセクションでは、最も一般的な2つのシーケンスファイル形式 FASTA および GenBank を解析する方法について説明します。

ファスタ

*FASTA* は、シーケンスデータを保存するための最も基本的なファイル形式です。 もともと、FASTAは、バイオインフォマティクスの初期の進化の間に開発され、主に配列の類似性を検索するために開発された、DNAとタンパク質の配列アライメント用のソフトウェアパッケージです。

BiopythonはサンプルのFASTAファイルを提供し、https://github.com/biopython/biopython/blob/master/Doc/examples/ls_orchid.fasta [[[1]] master/Doc/examples/ls_orchid.fasta。]

このファイルをダウンロードし、Biopythonサンプルディレクトリに「orchid.fasta」*として保存します。

Bio.SeqIOモジュールは、シーケンスファイルを処理するparse()メソッドを提供し、次のようにインポートできます-

from Bio.SeqIO import parse

parse()メソッドには2つの引数が含まれます。1つ目はファイルハンドル、2つ目はファイル形式です。

>>> file = open('path/to/biopython/sample/orchid.fasta')
>>> for record in parse(file, "fasta"):
...    print(record.id)
...
gi|2765658|emb|Z78533.1|CIZ78533
gi|2765657|emb|Z78532.1|CCZ78532
..........
..........
gi|2765565|emb|Z78440.1|PPZ78440
gi|2765564|emb|Z78439.1|PBZ78439
>>>

ここで、parse()メソッドは、反復ごとにSeqRecordを返す反復可能なオブジェクトを返します。 反復可能であるため、多くの洗練された簡単な方法を提供し、いくつかの機能を見てみましょう。

次()

_next()_メソッドは、反復可能なオブジェクトで使用可能な次のアイテムを返します。これを使用して、以下に示す最初のシーケンスを取得できます-

>>> first_seq_record = next(SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta'))
>>> first_seq_record.id 'gi|2765658|emb|Z78533.1|CIZ78533'
>>> first_seq_record.name 'gi|2765658|emb|Z78533.1|CIZ78533'
>>> first_seq_record.seq Seq('CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGG...CGC', SingleLetterAlphabet())
>>> first_seq_record.description 'gi|2765658|emb|Z78533.1|CIZ78533 C.irapeanum 5.8S rRNA gene and ITS1 and ITS2 DNA'
>>> first_seq_record.annotations
{}
>>>

ここでは、FASTA形式はシーケンス注釈をサポートしていないため、seq_record.annotationsは空です。

リスト理解

以下のリスト内包表記を使用して、反復可能なオブジェクトをリストに変換できます。

>>> seq_iter = SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta')
>>> all_seq = [seq_record for seq_record in seq_iter] >>> len(all_seq)
94
>>>

ここでは、lenメソッドを使用して合計カウントを取得しました。 次のように最大長のシーケンスを取得できます-

>>> seq_iter = SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta')
>>> max_seq = max(len(seq_record.seq) for seq_record in seq_iter)
>>> max_seq
789
>>>

以下のコードを使用してシーケンスをフィルタリングすることもできます-

>>> seq_iter = SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta')
>>> seq_under_600 = [seq_record for seq_record in seq_iter if len(seq_record.seq) < 600]
>>> for seq in seq_under_600:
...    print(seq.id)
...
gi|2765606|emb|Z78481.1|PIZ78481
gi|2765605|emb|Z78480.1|PGZ78480
gi|2765601|emb|Z78476.1|PGZ78476
gi|2765595|emb|Z78470.1|PPZ78470
gi|2765594|emb|Z78469.1|PHZ78469
gi|2765564|emb|Z78439.1|PBZ78439
>>>

SqlRecordオブジェクト(解析済みデータ)のコレクションをファイルに書き込むことは、以下のようにSeqIO.writeメソッドを呼び出すのと同じくらい簡単です-

file = open("converted.fasta", "w)
SeqIO.write(seq_record, file, "fasta")

このメソッドは、以下に指定されている形式を変換するために効果的に使用することができます-

file = open("converted.gbk", "w)
SeqIO.write(seq_record, file, "genbank")

GenBank

これは、遺伝子のより豊富なシーケンス形式であり、さまざまな種類の注釈のフィールドが含まれています。 BiopythonはサンプルのGenBankファイルを提供し、https://github.com/biopython/biopython/blob/master/Doc/examples/ls_orchid.fasta [[[2]] master/Doc/examples/ls_orchid.fasta。]

*'orchid.gbk'* としてBiopythonサンプルディレクトリにファイルをダウンロードして保存します

以来、Biopythonは単一の関数parseを提供して、すべてのバイオインフォマティクス形式を解析します。 GenBank形式の解析は、parseメソッドの形式オプションを変更するのと同じくらい簡単です。

同じためのコードは以下に与えられています-

>>> from Bio import SeqIO
>>> from Bio.SeqIO import parse
>>> seq_record = next(parse(open('path/to/biopython/sample/orchid.gbk'),'genbank'))
>>> seq_record.id
'Z78533.1'
>>> seq_record.name
'Z78533'
>>> seq_record.seq Seq('CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGG...CGC', IUPACAmbiguousDNA())
>>> seq_record.description
'C.irapeanum 5.8S rRNA gene and ITS1 and ITS2 DNA'
>>> seq_record.annotations {
   'molecule_type': 'DNA',
   'topology': 'linear',
   'data_file_division': 'PLN',
   'date': '30-NOV-2006',
   'accessions': ['Z78533'],
   'sequence_version': 1,
   'gi': '2765658',
   'keywords': ['5.8S ribosomal RNA', '5.8S rRNA gene', 'internal transcribed spacer', 'ITS1', 'ITS2'],
   'source': 'Cypripedium irapeanum',
   'organism': 'Cypripedium irapeanum',
   'taxonomy': [
      'Eukaryota',
      'Viridiplantae',
      'Streptophyta',
      'Embryophyta',
      'Tracheophyta',
      'Spermatophyta',
      'Magnoliophyta',
      'Liliopsida',
      'Asparagales',
      'Orchidaceae',
      'Cypripedioideae',
      'Cypripedium'],
   'references': [
      Reference(title = 'Phylogenetics of the slipper orchids (Cypripedioideae:
      Orchidaceae): nuclear rDNA ITS sequences', ...),
      Reference(title = 'Direct Submission', ...)
   ]
}