Biopython-quick-guide
Biopython-はじめに
Biopythonは、Python用の最大かつ最も人気のあるバイオインフォマティクスパッケージです。 一般的なバイオインフォマティクスタスク用のさまざまなサブモジュールが含まれています。 主にPythonで書かれたChapmanとChangによって開発されました。 また、ソフトウェアの複雑な計算部分を最適化するCコードも含まれています。 Windows、Linux、Mac OS Xなどで実行されます。
基本的に、Biopythonは、DNA文字列の逆補完、タンパク質配列のモチーフの検索など、DNA、RNAおよびタンパク質配列の操作を処理する機能を提供するPythonモジュールのコレクションです。 GenBank、SwissPort、FASTAなどのすべての主要な遺伝的データベースを読み取るための多くのパーサーと、Python環境内でNCBI BLASTN、Entrezなどの他の一般的なバイオインフォマティクスソフトウェア/ツールを実行するためのラッパー/インターフェイスを提供します。 BioPerl、BioJava、BioRubyなどの兄弟プロジェクトがあります。
特徴
Biopythonは移植性があり、明確で、構文を習得しやすいです。 顕著な特徴のいくつかを以下に示します-
- 解釈されたインタラクティブなオブジェクト指向。
- FASTA、PDB、GenBank、Blast、SCOP、PubMed/Medline、ExPASy関連の形式をサポートしています。
- シーケンス形式を処理するオプション。
- タンパク質構造を管理するツール。
- BioSQL-シーケンスと機能および注釈を保存するためのSQLテーブルの標準セット。
- NCBIサービス(Blast、Entrez、PubMed)およびExPASYサービス(SwissProt、Prosite)を含むオンラインサービスおよびデータベースへのアクセス。
- Blast、Clustalw、EMBOSSなどのローカルサービスへのアクセス。
目標
Biopythonの目標は、Python言語を介したバイオインフォマティクスへのシンプルで標準的な広範なアクセスを提供することです。 Biopythonの具体的な目標は以下のとおりです-
- バイオインフォマティクスリソースへの標準化されたアクセスを提供します。
- 高品質で再利用可能なモジュールとスクリプト。
- クラスタコード、PDB、NaiveBayes、およびマルコフモデルで使用できる高速配列操作。
- ゲノムデータ分析。
利点
Biopythonは必要なコードが非常に少なく、次の利点があります-
- クラスタリングで使用されるマイクロアレイデータタイプを提供します。
- ツリービュータイプのファイルを読み書きします。
- PDBの解析、表現、分析に使用される構造データをサポートします。
- Medlineアプリケーションで使用されるジャーナルデータをサポートします。
- すべてのバイオインフォマティクスプロジェクトで広く使用されている標準データベースであるBioSQLデータベースをサポートします。
- バイオインフォマティクスファイルを_format固有のレコードオブジェクトまたはシーケンスと機能の汎用クラスに解析するモジュールを提供することにより、パーサー開発をサポートします。
- クックブックスタイルに基づく明確なドキュメント。
サンプルケーススタディ
私たちはいくつかのユースケース(集団遺伝学、RNA構造など)をチェックし、この分野でBiopythonがどのように重要な役割を果たしているかを理解してみましょう-
集団遺伝学
集団遺伝学は、集団内の遺伝的変異の研究であり、空間および時間にわたる集団の遺伝子および対立遺伝子の頻度の変化の調査およびモデリングを伴います。
Biopythonは、集団遺伝学用のBio.PopGenモジュールを提供します。 このモジュールには、古典的な集団遺伝学に関する情報を収集するために必要なすべての機能が含まれています。
RNA構造
私たちの生活に不可欠な3つの主要な生体高分子は、DNA、RNA、タンパク質です。 タンパク質は細胞の働き者であり、酵素として重要な役割を果たします。 DNA(デオキシリボ核酸)は、細胞の「青写真」と見なされます。 細胞が成長し、栄養素を取り込み、増殖するために必要なすべての遺伝情報が含まれています。 RNA(リボ核酸)は、細胞内で「DNAコピー」として機能します。
Biopythonは、ヌクレオチド、DNAおよびRNAのビルディングブロックを表すBio.Sequenceオブジェクトを提供します。
Biopython-インストール
このセクションでは、Biopythonをマシンにインストールする方法について説明します。 インストールは非常に簡単で、5分以上かかりません。
- ステップ1 *-Pythonインストールの検証
Biopythonは、Python 2.5以降のバージョンで動作するように設計されています。 そのため、最初にpythonをインストールすることが必須です。 コマンドプロンプトで以下のコマンドを実行します-
以下に定義されています-
適切にインストールされている場合、Pythonのバージョンが表示されます。 それ以外の場合は、最新バージョンのpythonをダウンロードしてインストールし、コマンドを再実行してください。
- ステップ2 *-pipを使用してBiopythonをインストールする
すべてのプラットフォームでコマンドラインからpipを使用してBiopythonを簡単にインストールできます。 以下のコマンドを入力します-
次の応答が画面に表示されます-
Biopythonの古いバージョンを更新するには-
次の応答が画面に表示されます-
このコマンドを実行すると、古いバージョンのBiopythonおよびNumPy(Biopythonはそれに依存します)は、最新バージョンをインストールする前に削除されます。
- ステップ3 *-Biopythonインストールの検証
これで、マシンにBiopythonが正常にインストールされました。 Biopythonが正しくインストールされていることを確認するには、Pythonコンソールで次のコマンドを入力します-
Biopythonのバージョンを示しています。
代替方法-ソースを使用してBiopythonをインストールする
ソースコードを使用してBiopythonをインストールするには、以下の指示に従ってください-
次のリンクからBiopythonの最新リリースをダウンロードします-https://biopython.org/wiki/Download
現在、最新バージョンは biopython-1.72 です。
ファイルをダウンロードし、圧縮アーカイブファイルを解凍し、ソースコードフォルダーに移動して、以下のコマンドを入力します-
これは、以下に示すように、ソースコードからBiopythonをビルドします-
今、以下のコマンドを使用してコードをテストします-
最後に、以下のコマンドを使用してインストールします-
Biopython-シンプルなアプリケーションの作成
バイオインフォマティクスファイルを解析してコンテンツを印刷する簡単なBiopythonアプリケーションを作成しましょう。 これは、Biopythonの一般的な概念と、それがバイオインフォマティクスの分野でどのように役立つかを理解するのに役立ちます。
- ステップ1 *-まず、サンプルシーケンスファイル“ example.fasta”を作成し、その中に以下のコンテンツを入れます。
拡張子_fasta_は、シーケンスファイルのファイル形式を示します。 FASTAは、バイオインフォマティクスソフトウェアであるFASTAに由来するため、その名前が付けられています。 FASTA形式には複数のシーケンスが1つずつ配置され、各シーケンスには独自のID、名前、説明、実際のシーケンスデータが含まれます。
ステップ2 *-新しいPythonスクリプト simple_example.py "を作成し、以下のコードを入力して保存します。
コードをもう少し詳しく見てみましょう-
- 行1 *は、Bio.SeqIOモジュールで利用可能な解析クラスをインポートします。 Bio.SeqIOモジュールは異なる形式のシーケンスファイルの読み取りと書き込みに使用され、「parse」クラスはシーケンスファイルのコンテンツの解析に使用されます。
- 行2 *は、Bio.SeqRecordモジュールで使用可能なSeqRecordクラスをインポートします。 このモジュールはシーケンスレコードの操作に使用され、SeqRecordクラスはシーケンスファイルで使用可能な特定のシーケンスを表すために使用されます。
- 行3 "*は、Bio.Seqモジュールで使用可能なSeqクラスをインポートします。 このモジュールはシーケンスデータを操作するために使用され、Seqクラスはシーケンスファイルで利用可能な特定のシーケンスレコードのシーケンスデータを表すために使用されます。
- 行5 *は、通常のpython関数openを使用して「example.fasta」ファイルを開きます。
- 行7 *は、シーケンスファイルのコンテンツを解析し、そのコンテンツをSeqRecordオブジェクトのリストとして返します。
- 行9-15 *は、Python forループを使用してレコードをループし、ID、名前、説明、シーケンスデータなどのシーケンスレコード(SqlRecord)の属性を出力します。
- 行15 *は、アルファベットクラスを使用してシーケンスのタイプを出力します。
- ステップ3 *-コマンドプロンプトを開き、シーケンスファイル「example.fasta」を含むフォルダーに移動して、以下のコマンドを実行します-
- ステップ4 *-Pythonはスクリプトを実行し、サンプルファイル「example.fasta」で使用可能なすべてのシーケンスデータを出力します。 出力は次の内容のようになります。
この例では、parse、SeqRecord、Seqの3つのクラスを見てきました。 これらの3つのクラスはほとんどの機能を提供します。これらのクラスについては、次のセクションで学習します。
Biopython-シーケンス
シーケンスは、生物のタンパク質、DNA、またはRNAを表すために使用される一連の文字です。 Seqクラスで表されます。 SeqクラスはBio.Seqモジュールで定義されています。
以下に示すように、Biopythonで簡単なシーケンスを作成しましょう-
ここでは、単純なタンパク質シーケンス AGCT を作成し、各文字は* A ラニン、 G リシン、 C システイン、 T *レオニンを表します。
各Seqオブジェクトには2つの重要な属性があります-
- データ-実際のシーケンス文字列(AGCT)
- アルファベット-シーケンスのタイプを表すために使用されます。 e.g. DNA配列、RNA配列など デフォルトでは、シーケンスを表しておらず、本質的に汎用です。
アルファベットモジュール
Seqオブジェクトには、シーケンスタイプ、文字、および可能な操作を指定するAlphabet属性が含まれています。 Bio.Alphabetモジュールで定義されています。 アルファベットは以下のように定義できます-
アルファベットモジュールは、さまざまなタイプのシーケンスを表す以下のクラスを提供します。 アルファベット-すべてのタイプのアルファベットの基本クラス。
SingleLetterAlphabet-サイズ1の文字を含む汎用アルファベット。 それはアルファベットから派生し、他のすべてのアルファベットタイプはそれから派生します。
ProteinAlphabet-一般的な単一文字のタンパク質アルファベット。
NucleotideAlphabet-一般的な1文字のヌクレオチドアルファベット。
DNAAlphabet-一般的な1文字のDNAアルファベット。
RNAAlphabet-一般的な1文字のRNAアルファベット。
BiopythonモジュールのBio.Alphabet.IUPACは、IUPACコミュニティで定義されている基本的なシーケンスタイプを提供します。 次のクラスが含まれています-
- * IUPACタンパク質(タンパク質)*-20個の標準アミノ酸のIUPACタンパク質アルファベット。
- * ExtendedIUPACProtein(extended_protein)*-Xを含む拡張大文字IUPACタンパク質1文字アルファベット。
- * IUPACAmbiguousDNA(ambiguous_dna)*-大文字のIUPACあいまいなDNA。
- * IUPACUnambiguousDNA(unambiguous_dna)*-大文字のIUPAC unambiguous DNA(GATC)。
- * ExtendedIUPACDNA(extended_dna)*-拡張IUPAC DNAアルファベット。
- * IUPACAmbiguousRNA(ambiguous_rna)*-大文字のIUPAC ambiguous RNA。
- * IUPACUnambiguousRNA(unambiguous_rna)*-大文字のIUPAC unambiguous RNA(GAUC)。
以下に示すように、IUPACProteinクラスの簡単な例を考えてください-
また、BiopythonはBio.Dataモジュールを通じてすべてのバイオインフォマティクス関連の構成データを公開します。 たとえば、IUPACData.protein_lettersにはIUPACProteinアルファベットの可能な文字があります。
基本操作
このセクションでは、Seqクラスで使用可能なすべての基本操作について簡単に説明します。 シーケンスはPython文字列に似ています。 シーケンスのスライス、カウント、連結、検索、分割、ストリップなどのPython文字列操作を実行できます。
以下のコードを使用して、さまざまな出力を取得します。
シーケンスの最初の値を取得するには
最初の2つの値を印刷するには。
すべての値を印刷するには
長さとカウントの操作を実行します。
- 2つのシーケンスを追加します。*
ここで、上記の2つのシーケンスオブジェクト、seq1、seq2は汎用のDNAシーケンスであるため、それらを追加して新しいシーケンスを作成できます。 以下に指定されているタンパク質配列やDNA配列など、互換性のないアルファベットを含む配列を追加することはできません-
2つ以上のシーケンスを追加するには、まずPythonリストに保存し、次に「forループ」を使用して取得し、最後に以下に示すように一緒に追加します-
以下のセクションでは、要件に基づいて出力を取得するためのさまざまなコードを示します。
シーケンスの大文字小文字を変更するには
- PythonメンバーシップとID演算子を確認するには。*
指定されたシーケンス内の単一の文字または文字のシーケンスを検索します。
分割操作を実行します。
シーケンスでストリップ操作を実行します。
Biopython-高度なシーケンス操作
この章では、Biopythonが提供する高度なシーケンス機能のいくつかについて説明します。
補数および逆補数
ヌクレオチド配列を逆補完して、新しい配列を取得できます。 また、補完されたシーケンスを逆補完して元のシーケンスを取得することもできます。 Biopythonは、この機能を実行するための2つの方法- complement および reverse_complement を提供します。 このためのコードは以下のとおりです-
ここで、complement()メソッドを使用すると、DNAまたはRNAシーケンスを補完できます。 reverse_complement()メソッドは、結果のシーケンスを左から右に補完および反転します。 以下に示されています-
Biopythonは、Bio.Data.IUPACDataが提供するambiguous_dna_complement変数を使用して補数演算を実行します。
GCコンテンツ
ゲノムDNAの塩基組成(GCコンテンツ)は、ゲノムの機能と種の生態に大きな影響を与えると予測されています。 GC含有量は、GCヌクレオチドの数を全ヌクレオチドで割ったものです。
GCヌクレオチドの内容を取得するには、次のモジュールをインポートし、次の手順を実行します-
転写
転写は、DNA配列をRNA配列に変換するプロセスです。 実際の生物学的転写プロセスでは、逆相補(TCAG→CUGA)を実行して、DNAをテンプレート鎖とみなしてmRNAを取得しています。 ただし、バイオインフォマティクスなどのBiopythonでは、通常、コーディングストランドを直接操作し、文字TをUに変更することでmRNA配列を取得できます。
上記の簡単な例は次のとおりです-
転写を逆にするには、以下のコードに示すように、TがUに変更されます-
DNAテンプレート鎖を取得するには、以下のように逆転写されたRNAを逆相補します-
翻訳
翻訳は、RNA配列をタンパク質配列に翻訳するプロセスです。 以下に示すようにRNA配列を検討してください-
今、上記のコードにtranslate()関数を適用します-
上記のRNA配列は単純です。 RNAシーケンス、AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAを考慮し、translate()を適用します-
ここでは、停止コドンはアスタリスク「*」で示されています。
translate()メソッドでは、最初の停止コドンで停止することができます。 これを実行するには、translate()でto_stop = Trueを次のように割り当てることができます-
ここでは、終止コドンは含まれていないため、結果の配列には含まれていません。
変換テーブル
NCBIの「遺伝コード」ページには、Biopythonで使用される変換テーブルの完全なリストがあります。 コードを視覚化するための標準的なテーブルの例を見てみましょう-
Biopythonはこの表を使用してDNAをタンパク質に変換し、停止コドンを見つけます。
Biopython-シーケンスI/O操作
Biopythonは、ファイル(任意のストリーム)に対してシーケンスを読み書きするためのモジュールBio.SeqIOを提供します。 バイオインフォマティクスで利用可能なほぼすべてのファイル形式をサポートしています。 ほとんどのソフトウェアは、ファイル形式ごとに異なるアプローチを提供します。 しかし、Biopythonは、SeqRecordオブジェクトを介して、解析されたシーケンスデータをユーザーに提示するために、意識的に単一のアプローチに従います。
次のセクションでSeqRecordの詳細を学びましょう。
SeqRecord
Bio.SeqRecordモジュールは、シーケンスのメタ情報とシーケンスデータ自体を以下に示すように保持するSeqRecordを提供します-
- seq-これは実際のシーケンスです。
- id-これは、指定されたシーケンスのプライマリ識別子です。 デフォルトのタイプは文字列です。
- name-それはシーケンスの名前です。 デフォルトのタイプは文字列です。
- description-シーケンスに関する人間が読める情報を表示します。
- annotations-シーケンスに関する追加情報の辞書です。
SeqRecordは、以下に指定されているようにインポートできます。
これからのセクションで実際のシーケンスファイルを使用してシーケンスファイルを解析することの微妙な違いを理解しましょう。
シーケンスファイル形式の解析
このセクションでは、最も一般的な2つのシーケンスファイル形式 FASTA および GenBank を解析する方法について説明します。
ファスタ
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()メソッドを提供し、次のようにインポートできます-
parse()メソッドには2つの引数が含まれます。1つ目はファイルハンドル、2つ目はファイル形式です。
ここで、parse()メソッドは、反復ごとにSeqRecordを返す反復可能なオブジェクトを返します。 反復可能であるため、多くの洗練された簡単な方法を提供し、いくつかの機能を見てみましょう。
次()
_next()_メソッドは、反復可能なオブジェクトで使用可能な次のアイテムを返します。これを使用して、以下に示す最初のシーケンスを取得できます-
ここでは、FASTA形式はシーケンス注釈をサポートしていないため、seq_record.annotationsは空です。
リスト理解
以下のリスト内包表記を使用して、反復可能なオブジェクトをリストに変換できます。
ここでは、lenメソッドを使用して合計カウントを取得しました。 次のように最大長のシーケンスを取得できます-
以下のコードを使用してシーケンスをフィルタリングすることもできます-
SqlRecordオブジェクト(解析済みデータ)のコレクションをファイルに書き込むことは、以下のようにSeqIO.writeメソッドを呼び出すのと同じくらい簡単です-
このメソッドは、以下に指定されている形式を変換するために効果的に使用することができます-
GenBank
これは、遺伝子のより豊富なシーケンス形式であり、さまざまな種類の注釈のフィールドが含まれています。 BiopythonはサンプルのGenBankファイルを提供し、https://github.com/biopython/biopython/blob/master/Doc/examples/ls_orchid.fasta [[[2]] master/Doc/examples/ls_orchid.fasta。]
以来、Biopythonは単一の関数parseを提供して、すべてのバイオインフォマティクス形式を解析します。 GenBank形式の解析は、parseメソッドの形式オプションを変更するのと同じくらい簡単です。
同じためのコードは以下に与えられています-
Biopython-配列アライメント
- 配列アラインメント*は、2つ以上の配列(DNA、RNAまたはタンパク質配列)を特定の順序で配列して、それらの間の類似領域を識別するプロセスです。
同様の領域を特定することで、種間で保存されている特性、遺伝的に異なる種の近さ、種の進化方法などの多くの情報を推測できます。 Biopythonは、配列アライメントの広範なサポートを提供します。
この章でBiopythonが提供する重要な機能のいくつかを学びましょう-
解析シーケンスのアライメント
Biopythonは、配列アライメントを読み書きするためのモジュールBio.AlignIOを提供します。 バイオインフォマティクスでは、以前に学習したシーケンスデータと同様に、シーケンスアラインメントデータを指定するために利用できる多くの形式があります。 Bio.AlignIOは、Bio.SeqIOがシーケンスデータで動作し、Bio.AlignIOがシーケンスアラインメントデータで動作することを除いて、Bio.SeqIOと同様のAPIを提供します。
学習を開始する前に、インターネットからサンプルの配列アライメントファイルをダウンロードしてみましょう。
サンプルファイルをダウンロードするには、以下の手順に従ってください-
- ステップ1 *-お気に入りのブラウザを開き、http://pfam.xfam.org/family/browse Webサイトにアクセスします。 すべてのPfamファミリがアルファベット順に表示されます。
- ステップ2 *-シード値の数が少ないファミリを1つ選択します。 最小限のデータが含まれており、アライメントを簡単に操作できます。 ここで、PF18225を選択/クリックすると、http://pfam.xfam.org/family/PF18225に移動して、配列アライメントなどの詳細が表示されます。
- ステップ3 *-アラインメントセクションに移動し、ストックホルム形式のシーケンスアラインメントファイル(PF18225_seed.txt)をダウンロードします。
以下のようにBio.AlignIOを使用して、ダウンロードした配列アライメントファイルを読み取ってみましょう-
Bio.AlignIOモジュールのインポート
読み取りメソッドを使用した読み取りアライメント。 readメソッドは、指定されたファイルで使用可能な単一のアライメントデータを読み取るために使用されます。 指定されたファイルに多くのアライメントが含まれている場合、解析メソッドを使用できます。 parseメソッドは、Bio.SeqIOモジュールのparseメソッドと同様の反復可能なアライメントオブジェクトを返します。
整列オブジェクトを印刷します。
また、配列だけでなく、以下で利用可能なシーケンス(SeqRecord)を確認することができます-
複数の配置
一般に、ほとんどの配列アライメントファイルには単一のアライメントデータが含まれており、 read メソッドを使用して解析するだけで十分です。 マルチシーケンスアラインメントの概念では、2つ以上のシーケンスが比較され、それらの間のサブシーケンスの最適な一致が得られ、単一ファイルで複数のシーケンスアラインメントが行われます。
入力配列アライメント形式に複数の配列アライメントが含まれている場合、以下に指定されているように*読み取り*メソッドの代わりに*解析*メソッドを使用する必要があります-
ここで、parseメソッドは反復可能なアライメントオブジェクトを返し、実際のアライメントを取得するために反復できます。
ペアワイズ配列アライメント
ペアごとの配列アライメント*は、一度に2つの配列のみを比較し、可能な限り最良の配列アライメントを提供します。 *Pairwise は理解しやすく、結果として生じる配列アライメントから推測するのに例外的です。
Biopythonには、ペアワイズ法を使用してアライメントシーケンスを識別するための特別なモジュール Bio.pairwise2 が用意されています。 Biopythonは、アライメントシーケンスを見つけるために最適なアルゴリズムを適用し、他のソフトウェアと同等です。
ペアワイズモジュールを使用して、2つの単純で仮説的なシーケンスのシーケンスアラインメントを見つける例を作成しましょう。 これは、配列アライメントの概念と、Biopythonを使用してプログラムする方法を理解するのに役立ちます。
ステップ1
以下のコマンドでモジュール pairwise2 をインポートします-
ステップ2
2つのシーケンス、seq1とseq2を作成します-
ステップ3
seq1およびseq2とともにメソッドpairwise2.align.globalxxを呼び出して、以下のコード行を使用してアライメントを見つけます-
ここで、 globalxx メソッドは実際の作業を実行し、指定されたシーケンスで可能な限り最良のアライメントを見つけます。 実際、Bio.pairwise2は、さまざまなシナリオでアライメントを見つけるために、以下の規則に従う一連のメソッドを提供します。
ここで、シーケンスアライメントタイプとは、global_または_localのアライメントタイプを指します。 global typeは、シーケンス全体を考慮してシーケンスのアライメントを検出しています。 ローカルタイプは、指定されたシーケンスのサブセットも調べて、シーケンスのアライメントを検出します。 これは面倒ですが、指定されたシーケンス間の類似性についてのより良いアイデアを提供します。
- Xは一致スコアを指します。 可能な値は、x(完全一致)、m(同一の文字に基づくスコア)、d(文字と一致スコアを備えたユーザー提供辞書)、最後にc(カスタムスコアリングアルゴリズムを提供するユーザー定義関数)です。
- Yはギャップペナルティを表します。 可能な値は、x(ギャップペナルティなし)、s(両方のシーケンスに同じペナルティ)、d(各シーケンスに異なるペナルティ)、最後にc(カスタムギャップペナルティを提供するユーザー定義関数)です。
したがって、localdsも有効なメソッドであり、ローカルアライメント手法、一致用のユーザー指定辞書、および両方のシーケンスのユーザー指定ギャップペナルティを使用してシーケンスのアライメントを検索します。
ここで、blosum62は、一致スコアを提供するためにpairwise2モジュールで使用可能な辞書を指します。 -10はギャップオープンペナルティを示し、-1はギャップ拡張ペナルティを示します。
ステップ4
反復可能な整列オブジェクトをループし、個々の整列オブジェクトを取得して印刷します。
ステップ5
Bio.pairwise2モジュールは、フォーマットメソッド、format_alignmentを提供して、結果をよりよく視覚化します-
Biopythonには、配列アライメントを行うための別のモジュールAlignもあります。 このモジュールは、アルゴリズム、モード、マッチスコア、ギャップペナルティなどのパラメータの設定だけに異なるAPIセットを提供します。Alignオブジェクトの簡単な外観は次のとおりです-
配列アライメントツールのサポート
Biopythonは、Bio.Align.Applicationsモジュールを介して多くの配列アライメントツールへのインターフェイスを提供します。 ツールの一部を以下に示します-
- ClustalW
- 筋
- エンボス針と水
最も一般的なアライメントツールClustalWを使用して、配列アライメントを作成するBiopythonの簡単な例を作成しましょう。
- ステップ1 *-Clustalwプログラムをhttp://www.clustal.org/download/current/からダウンロードしてインストールします。 また、システムパスを「clustal」インストールパスで更新します。
- ステップ2 *-モジュールBio.Align.ApplicationsからClustalwCommanLineをインポートします。
- ステップ3 *-入力ファイル、Biopythonパッケージで利用可能なopuntia.fastaでClustalwCommanLineを呼び出してcmdを設定します。 https://raw.githubusercontent.com/biopython/biopython/master/Doc/examples/opuntia.fasta
- ステップ4 *-cmd()を呼び出すと、clustalwコマンドが実行され、結果のアライメントファイルopuntia.alnの出力が提供されます。
- ステップ5 *-以下のようにアライメントファイルを読み取り、印刷します-
Biopython-BLASTの概要
BLASTは、 Basic Local Alignment Search Tool の略です。 生物学的配列間の類似領域を見つけます。 Biopythonは、NCBI BLAST操作を処理するBio.Blastモジュールを提供します。 BLASTは、ローカル接続またはインターネット接続で実行できます。
次のセクションでこれらの2つの接続を簡単に理解しましょう-
インターネット経由で実行する
Biopythonは、BLASTのオンラインバージョンを呼び出すBio.Blast.NCBIWWWモジュールを提供します。 これを行うには、次のモジュールをインポートする必要があります-
NCBIWWモジュールは、BLASTオンラインバージョンhttps://blast.ncbi.nlm.nih.gov/Blast.cgiを照会するqblast関数を提供します。 qblastは、オンラインバージョンでサポートされているすべてのパラメーターをサポートしています。
このモジュールに関するヘルプを取得するには、以下のコマンドを使用し、機能を理解します-
通常、qblast関数の引数は、BLAST Webページで設定できるさまざまなパラメーターに基本的に類似しています。 これにより、qblast関数の理解が容易になり、使用するための学習曲線が縮小されます。
接続と検索
BLASTオンラインバージョンの接続と検索のプロセスを理解するために、Biopythonを介してオンラインBLASTサーバーに対して単純なシーケンス検索(ローカルシーケンスファイルで利用可能)を行いましょう。
ステップ1 *-Biopythonディレクトリに *blast_example.fasta という名前のファイルを作成し、入力として以下のシーケンス情報を提供します
- ステップ2 *-NCBIWWWモジュールをインポートします。
ステップ3 *-python IOモジュールを使用して、シーケンスファイル *blast_example.fasta を開きます。
- ステップ4 *-ここで、メインデータとしてシーケンスデータを渡すqblast関数を呼び出します。 もう1つのパラメーターは、データベース(nt)と内部プログラム(blastn)を表します。
- ステップ5 *-以下に示すように、fastaファイル全体を使用するのではなく、Seqオブジェクトを使用しても同じ機能を実行できます-
ここで、メインパラメータとしてSeqオブジェクトであるrecord.seqを渡すqblast関数を呼び出します。
BLASTは、シーケンスに識別子を自動的に割り当てます。
- ステップ6 *-result_handleオブジェクトには結果全体が含まれ、後で使用するためにファイルに保存できます。
結果ファイルの解析方法については、後のセクションで説明します。
スタンドアロンBLASTの実行
このセクションでは、ローカルシステムでBLASTを実行する方法について説明します。 ローカルシステムでBLASTを実行すると、高速になり、独自のデータベースを作成してシーケンスを検索することもできます。
BLASTの接続
一般に、BLASTをローカルで実行することは、サイズが大きく、ソフトウェアを実行するために余分な労力が必要で、コストがかかるため、お勧めしません。 オンラインBLASTは、基本的および高度な目的には十分です。 もちろん、ローカルにインストールする必要がある場合があります。
多くの時間と大量のネットワークを必要とするオンラインで頻繁に検索を行っていることを考慮してください。独自のシーケンスデータまたはIP関連の問題がある場合は、ローカルにインストールすることをお勧めします。
これを行うには、以下の手順に従う必要があります-
- ステップ1 *-指定されたリンクを使用して最新のブラストバイナリをダウンロードしてインストールします-ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/
- ステップ2 *-以下のリンクを使用して、最新の必要なデータベースをダウンロードして解凍します-ftp://ftp.ncbi.nlm.nih.gov/blast/db/
BLASTソフトウェアは、サイトに多くのデータベースを提供します。 ブラストデータベースサイトからftp://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/alu.n.gz[alu.n.gz]ファイルをダウンロードし、aluフォルダーに解凍します。 このファイルはFASTA形式です。 ブラストアプリケーションでこのファイルを使用するには、まずファイルをFASTA形式からブラストデータベース形式に変換する必要があります。 BLASTは、この変換を行うmakeblastdbアプリケーションを提供します。
以下のコードスニペットを使用してください-
上記のコードを実行すると、入力ファイルalu.nが解析され、複数のファイルalun.nsq、alun.nsiなどとしてBLASTデータベースが作成されます。 これで、このデータベースにクエリを実行してシーケンスを見つけることができます。
ローカルサーバーにBLASTをインストールし、サンプルのBLASTデータベース、 alun を照会します。
- ステップ3 *-データベースを照会するサンプルシーケンスファイルを作成しましょう。 ファイルsearch.fsaを作成し、以下のデータをそこに入れます。
シーケンスデータはalu.nファイルから収集されます。したがって、データベースと一致します。
ステップ4 *-BLASTソフトウェアは、データベースを検索するための多くのアプリケーションを提供し、blastnを使用します。 *blastnアプリケーションには、db、query、outの少なくとも3つの引数が必要です。 db は、検索対象のデータベースを指します。 query は一致するシーケンスで、 out は結果を保存するファイルです。 今、この単純なクエリを実行するために以下のコマンドを実行します-
上記のコマンドを実行すると、以下に示すように results.xml ファイルで検索され、出力が得られます(部分的にデータ)
上記のコマンドは、以下のコードを使用してPython内で実行できます-
ここで、最初のものは爆風出力へのハンドルであり、2番目は爆風コマンドによって生成される可能性のあるエラー出力です。
出力ファイルをコマンドライン引数(out =“ results.xml”)として提供し、出力形式をXML(outfmt = 5)として設定しているため、出力ファイルは現在の作業ディレクトリに保存されます。
BLAST結果の解析
一般に、BLAST出力はNCBIXMLモジュールを使用してXML形式として解析されます。 これを行うには、次のモジュールをインポートする必要があります-
ここで、 Python open method を使用してファイルを直接開き、以下に示すように use NCBIXML parse method を使用します-
これにより、次のような出力が生成されます-
Biopython-Entrezデータベース
Entrezを介してアクセスできる一般的なデータベースの一部を以下に示します-
- パブメッド
- パブメッドセントラル
- ヌクレオチド(GenBank配列データベース)
- タンパク質(配列データベース)
- ゲノム(全ゲノムデータベース)
- 構造(三次元高分子構造)
- 分類(GenBankの生物)
- SNP(一塩基多型)
- UniGene(転写配列の遺伝子指向クラスター)
- CDD(保存タンパク質ドメインデータベース)
- 3Dドメイン(Entrez構造からのドメイン)
上記のデータベースに加えて、Entrezはフィールド検索を実行するためにより多くのデータベースを提供します。
Biopythonは、EntrezデータベースにアクセスするためのEntrez固有のモジュールBio.Entrezを提供します。 この章では、Biopythonを使用してEntrezにアクセスする方法を学びましょう-
データベース接続手順
Entrezの機能を追加するには、次のモジュールをインポートします-
次に、以下のコードで誰が接続されているかを特定するためにメールを設定します-
次に、Entrezツールパラメーターを設定します。デフォルトでは、Biopythonです。
ここで、以下に定義されているように、各データベースのインデックス用語カウント、最終更新、および利用可能なリンクを見つけるために* einfo関数を呼び出します-
einfoメソッドは、以下に示すように、その読み取りメソッドを介して情報へのアクセスを提供するオブジェクトを返します-
データはXML形式であり、Pythonオブジェクトとしてデータを取得するには、* Entrez.einfo()メソッドが呼び出されたらすぐに *Entrez.read メソッドを使用します-
ここで、レコードは、以下に示すように、1つのキー、DbListを持つ辞書です-
DbListキーにアクセスすると、以下に示すデータベース名のリストが返されます-
基本的に、EntrezモジュールはEntrez検索システムから返されたXMLを解析し、Python辞書とリストとして提供します。
検索データベース
Entrezデータベースのいずれかを検索するには、Bio.Entrez.esearch()モジュールを使用できます。 以下に定義されています-
間違ったdbを割り当てると、それは戻ります
データベース全体を検索する場合は、 Entrez.egquery を使用できます。 これは Entrez.esearch と似ていますが、キーワードを指定してデータベースパラメータをスキップするだけで十分です。
レコードを取得する
Enterzは、Entrezからレコードの完全な詳細を検索およびダウンロードするための特別な方法であるefetchを提供します。 次の簡単な例を検討してください-
これで、SeqIOオブジェクトを使用して簡単にレコードを読み取ることができます
Biopython-PDBモジュール
Biopythonは、ポリペプチド構造を操作するBio.PDBモジュールを提供します。 PDB(Protein Data Bank)は、オンラインで入手可能な最大のタンパク質構造リソースです。 タンパク質-タンパク質、タンパク質-DNA、タンパク質-RNA複合体など、多くの異なるタンパク質構造をホストします。
PDBをロードするには、以下のコマンドを入力します-
タンパク質構造ファイル形式
PDBは3つの異なる形式でタンパク質構造を配布します-
- BiopythonでサポートされていないXMLベースのファイル形式
- 特別にフォーマットされたテキストファイルであるpdbファイル形式
- PDBx/mmCIFファイル形式
Protein Data Bankによって配布されたPDBファイルには、フォーマットエラーが含まれている可能性があり、そのために曖昧になったり、解析が難しくなったりします。 Bio.PDBモジュールは、これらのエラーを自動的に処理しようとします。
Bio.PDBモジュールは2つの異なるパーサーを実装します。1つはmmCIF形式で、もう1つはpdb形式です。
各形式を詳細に解析する方法を学びましょう-
mmCIFパーサー
以下のコマンドを使用して、PDBサーバーからmmCIF形式のサンプルデータベースをダウンロードしましょう-
これにより、指定されたファイル(2fat.cif)がサーバーからダウンロードされ、現在の作業ディレクトリに保存されます。
ここで、PDBListは、オンラインPDB FTPサーバーからファイルをリストおよびダウンロードするオプションを提供します。 retrieve_pdb_fileメソッドには、拡張子なしでダウンロードするファイルの名前が必要です。 retrieve_pdb_fileには、ダウンロードディレクトリ、pdir、およびファイルの形式file_formatを指定するオプションもあります。 ファイル形式の可能な値は次のとおりです-
- 「mmCif」(デフォルト、PDBx/mmCifファイル)
- “ pdb”(フォーマットPDB)
- 「xml」(PMDML/XML形式)
- 「mmtf」(高圧縮) *「バンドル」(大規模構造のPDB形式のアーカイブ)
CIFファイルをロードするには、以下に指定されているようにBio.MMCIF.MMCIFParserを使用します-
ここでは、QUIETはファイルの解析中に警告を抑制します。* get_structureはファイルを解析し、2FAT *(最初の引数)としてidを持つ構造を返します。
上記のコマンドを実行した後、ファイルを解析し、可能な場合は警告を出力します。
今、以下のコマンドを使用して構造を確認します-
ファイルの解析に成功し、タンパク質の構造を取得しました。 タンパク質構造の詳細と取得方法については、後の章で説明します。
PDBパーサー
以下のコマンドを使用して、PDBサーバーからPDB形式のサンプルデータベースをダウンロードしましょう-
これにより、指定したファイル(pdb2fat.ent)がサーバーからダウンロードされ、現在の作業ディレクトリに保存されます。
pdbファイルをロードするには、以下に指定されているようにBio.PDB.PDBParserを使用します-
ここで、get_structureはMMCIFParserに似ています。 PERMISSIVEオプションは、タンパク質データを可能な限り柔軟に解析しようとします。
次に、以下に示すコードスニペットで構造とそのタイプを確認します-
さて、ヘッダー構造には辞書情報が格納されています。 これを実行するには、以下のコマンドを入力します-
名前を取得するには、次のコードを使用します-
また、以下のコードで日付と解像度を確認することができます-
PDB構造
PDB構造は、2つのチェーンを含む単一のモデルで構成されます。
- 残基数を含むチェーンL
- 残基数を含むチェーンH
各残基は複数の原子で構成され、各原子は(x、y、z)座標で表される3D位置を持ちます。
以下のセクションで原子の構造を詳細に取得する方法を学びましょう-
モデル
Structure.get_models()メソッドは、モデルの反復子を返します。 以下に定義されています-
ここで、モデルは正確に1つの3D立体配座を表します。 1つ以上のチェーンが含まれています。
鎖
Model.get_chain()メソッドは、チェーンの反復子を返します。 以下に定義されています-
ここで、Chainは適切なポリペプチド構造、つまり、結合した残基の連続した配列を表します。
残基
Chain.get_residues()メソッドは、残基の反復子を返します。 以下に定義されています-
さて、Residueはアミノ酸に属する原子を保持しています。
原子
Residue.get_atom()は、以下で定義されているように、原子の反復子を返します-
アトムは、アトムの3D座標を保持し、ベクターと呼ばれます。 以下に定義されています
x、y、z座標値を表します。
Biopython-Motifオブジェクト
配列モチーフは、ヌクレオチドまたはアミノ酸の配列パターンです。 配列モチーフは、隣接していない可能性のあるアミノ酸の三次元配列によって形成されます。 Biopythonは、以下に指定されているように、配列モチーフの機能にアクセスするための独立したモジュールBio.motifsを提供します-
単純なDNAモチーフの作成
以下のコマンドを使用して簡単なDNAモチーフ配列を作成しましょう-
シーケンス値をカウントするには、以下のコマンドを使用します-
次のコードを使用して、シーケンス内の「A」をカウントします-
あなたがカウントの列にアクセスしたい場合は、以下のコマンドを使用します-
シーケンスロゴの作成
次に、シーケンスロゴの作成方法について説明します。
以下のシーケンスを考慮してください-
次のリンクを使用して独自のロゴを作成できます-http://weblogo.berkeley.edu/
上記のシーケンスを追加して新しいロゴを作成し、seq.pngという名前の画像をbiopythonフォルダーに保存します。
イメージを作成した後、次のコマンドを実行します-
このDNA配列モチーフは、LexA結合モチーフの配列ロゴとして表されます。
JASPARデータベース
JASPARは最も人気のあるデータベースの1つです。 シーケンスの読み取り、書き込み、スキャンのためのモチーフ形式のいずれかの機能を提供します。 各モチーフのメタ情報を保存します。 モジュールBio.motifsには、メタ情報の属性を表す特別なクラスjaspar.Motifが含まれています。
次の注目すべき属性タイプがあります-
- matrix_id-一意のJASPARモチーフID
- name-モチーフの名前
- tf_family-モチーフのファミリー、例えば 「ヘリックス-ループ-ヘリックス」
- data_type-モチーフで使用されるデータのタイプ。
biopythonフォルダーのsample.sitesにあるJASPARサイト形式を作成しましょう。 以下に定義されています-
上記のファイルでは、モチーフインスタンスを作成しました。 さて、上記のインスタンスからモチーフオブジェクトを作成しましょう-
ここで、データは、sample.sitesファイルからすべてのモチーフインスタンスを読み取ります。
データからすべてのインスタンスを印刷するには、以下のコマンドを使用します-
以下のコマンドを使用して、すべての値をカウントします-
Biopython-BioSQLモジュール
- MySQL(biosqldb-mysql.sql)
- PostgreSQL(biosqldb-pg.sql) Oracle(biosqldb-ora/ 。sql) *SQLite(biosqldb-sqlite.sql)
また、JavaベースのHSQLDBおよびDerbyデータベースの最小限のサポートも提供します。
BioPythonは、BioSQLベースのデータベースを操作するための非常にシンプルで簡単で高度なORM機能を提供します。* BioPythonは、次の機能を実行するモジュールBioSQL *を提供します-
- BioSQLデータベースを作成/削除する
- BioSQLデータベースに接続する
- GenBank、Swisport、BLAST結果、Entrez結果などのシーケンスデータベースを解析し、BioSQLデータベースに直接ロードします
- BioSQLデータベースからシーケンスデータを取得する
- NCBI BLASTから分類データを取得し、BioSQLデータベースに保存します
- BioSQLデータベースに対してSQLクエリを実行する
BioSQLデータベーススキーマの概要
BioSQLの詳細を説明する前に、BioSQLスキーマの基本を理解しましょう。 BioSQLスキーマは、シーケンスデータ、シーケンス機能、シーケンスカテゴリ/オントロジー、および分類情報を保持する25以上のテーブルを提供します。 重要なテーブルのいくつかは次のとおりです-
- バイオデータベース
- バイオエントリー
- バイオシーケンス
- seqfeature
- 分類群
- taxon_name
- アントロジー
- term
- dxref
BioSQLデータベースの作成
このセクションでは、BioSQLチームが提供するスキーマを使用して、サンプルのBioSQLデータベースbiosqlを作成します。 始めるのは本当に簡単で、複雑な設定がないので、SQLiteデータベースを使用します。
ここでは、以下の手順を使用して、SQLiteベースのBioSQLデータベースを作成します。
- ステップ1 *-SQLiteデータベースエンジンをダウンロードしてインストールします。
- ステップ2 *-GitHub URLからBioSQLプロジェクトをダウンロードします。 https://github.com/biosql/biosql
- ステップ3 *-コンソールを開き、mkdirを使用してディレクトリを作成し、入力します。
- ステップ4 *-以下のコマンドを実行して、新しいSQLiteデータベースを作成します。
- ステップ5 *-BioSQLプロジェクト(/sql/biosqldb-sqlite.sql`)からbiosqldb-sqlite.sqlファイルをコピーし、現在のディレクトリに保存します。
- ステップ6 *-以下のコマンドを実行して、すべてのテーブルを作成します。
これで、すべてのテーブルが新しいデータベースに作成されました。
- ステップ7 *-データベース内のすべての新しいテーブルを表示するには、以下のコマンドを実行します。
最初の3つのコマンドは、フォーマットされた方法で結果を表示するようにSQLiteを構成する構成コマンドです。
- ステップ8 *-BioGenチームhttps://raw.githubusercontent.com/biopython/biopython/master/Doc/examples/ls_orchid.gbkが提供するサンプルGenBankファイルls_orchid.gbkを現在のディレクトリにコピーし、orchidとして保存します。 .gbk。
- ステップ9 *-以下のコードを使用してpythonスクリプトload_orchid.pyを作成し、実行します。
上記のコードは、ファイル内のレコードを解析し、それをpythonオブジェクトに変換し、BioSQLデータベースに挿入します。 後のセクションでコードを分析します。
最後に、新しいBioSQLデータベースを作成し、いくつかのサンプルデータをロードします。 次の章で重要な表について説明します。
シンプルなER図
taxonおよびtaxon_nameは分類の詳細であり、すべてのエントリはこのテーブルを参照して分類情報を指定します。
スキーマを理解した後、次のセクションでいくつかのクエリを見てみましょう。
BioSQLクエリ
データがどのように構成され、テーブルが互いに関連しているかをよりよく理解するために、いくつかのSQLクエリを掘り下げてみましょう。 先に進む前に、以下のコマンドを使用してデータベースを開き、いくつかの書式設定コマンドを設定しましょう-
- .headerと.modeは、データを視覚化するためのフォーマットオプションです*。 また、SQLiteエディターを使用してクエリを実行することもできます。
以下に示すように、システムで使用可能な仮想シーケンスデータベースをリストします-
ここでは、 _ orchid_ という1つのデータベースのみがあります。
以下のコードを使用して、データベース orchid で使用可能なエントリ(上位3)を一覧表示します
エントリに関連付けられているシーケンスの詳細をリストします(アクセッション-Z78530、名前-C。 fasciculatum 5.8S rRNA遺伝子とITS1およびITS2 DNA)指定されたコード-
エントリに関連付けられている完全なシーケンスを取得します(アクセッション-Z78530、名前-C。 fasciculatum 5.8S rRNA遺伝子とITS1およびITS2 DNA)以下のコードを使用して-
バイオデータベースに関連付けられた分類群のリスト
BioSQLデータベースにデータをロードする
この章では、シーケンスデータをBioSQLデータベースに読み込む方法を学びましょう。 前のセクションでデータベースにデータをロードするコードがすでにあり、コードは次のとおりです-
私たちはコードのすべての行とその目的をより深く見ていきます-
- 行1 *-SeqIOモジュールをロードします。
- 行2 *-BioSeqDatabaseモジュールをロードします。 このモジュールは、BioSQLデータベースと対話するためのすべての機能を提供します。
- 行3 *-osモジュールをロードします。
- 行5 *-open_databaseは、構成されたドライバー(ドライバー)で指定されたデータベース(db)を開き、BioSQLデータベース(サーバー)にハンドルを返します。 Biopythonは、sqlite、mysql、postgresql、oracleデータベースをサポートしています。
- 行6-10 *-load_database_sqlメソッドは、外部ファイルからsqlをロードして実行します。 commitメソッドはトランザクションをコミットします。 すでにスキーマを使用してデータベースを作成しているため、この手順をスキップできます。
- 行12 *-new_databaseメソッドは、新しい仮想データベースorchidを作成し、蘭データベースに対してコマンドを実行するためのハンドルdbを返します。
- 13行目-loadメソッドは、シーケンスエントリ(反復可能なSeqRecord)をランデータベースにロードします。 SqlIO.parseはGenBankデータベースを解析し、その中のすべてのシーケンスを反復可能なSeqRecordとして返します。 loadメソッドの2番目のパラメーター(True)は、NCBIブラストWebサイトからシーケンスデータの分類の詳細を取得するように指示します(システムでまだ利用できない場合)。
- 行14 *-commitはトランザクションをコミットします。
- 行15 *-closeはデータベース接続を閉じ、サーバーハンドルを破棄します。
シーケンスデータを取得する
以下のように、蘭データベースから識別子2765658でシーケンスをフェッチします-
ここで、server ["orchid"]は、仮想databaseorchidからデータを取得するためのハンドルを返します。 lookup メソッドは、基準に基づいてシーケンスを選択するオプションを提供し、識別子2765658を持つシーケンスを選択しました。 lookup は、シーケンス情報をSeqRecordobjectとして返します。 SeqRecordの操作方法はすでにわかっているため、そこからデータを取得するのは簡単です。
データベースを削除する
データベースの削除は、適切なデータベース名でremove_databaseメソッドを呼び出し、次に指定されたとおりにコミットするだけです。
Biopython-集団遺伝学
集団遺伝学は進化論において重要な役割を果たします。 種と同じ種内の2人以上の個体間の遺伝的差異を分析します。
Biopythonは人口遺伝学向けのBio.PopGenモジュールを提供し、主に `GenePop、Michel RaymondとFrancois Roussetが開発した人気のある遺伝学パッケージをサポートしています。
シンプルなパーサー
GenePop形式を解析して概念を理解するための簡単なアプリケーションを作成しましょう。
下記のリンクでBiopythonチームが提供するgenePopファイルをダウンロードします-https://raw.githubusercontent.com/biopython/biopython/master/Tests/PopGen/c3line.gen
以下のコードスニペットを使用してGenePopモジュールをロードします-
以下のようにGenePop.readメソッドを使用してファイルを解析します-
以下に示すように、遺伝子座と人口の情報を表示します-
ここで、ファイルには3つの遺伝子座と3つの母集団があります。最初の母集団には4つのレコード、2番目の母集団には3つのレコード、3番目の母集団には5つのレコードがあります。 record.populationsは、各遺伝子座の対立遺伝子データを持つすべての集団のセットを示します。
GenePopファイルを操作する
Biopythonには、軌跡および個体群データを削除するオプションがあります。
位置によって設定された母集団を削除する
位置による軌跡の削除、
名前で軌跡を削除する
GenePopソフトウェアとのインターフェース
Biopythonは、GenePopソフトウェアとやり取りするためのインターフェイスを提供し、それにより多くの機能を公開します。 Bio.PopGen.GenePopモジュールは、この目的に使用されます。 このような使いやすいインターフェイスの1つがEasyControllerです。 GenePopファイルの解析方法を確認し、EasyControllerを使用して分析を行います。
まず、GenePopソフトウェアをインストールし、インストールフォルダをシステムパスに配置します。 GenePopファイルに関する基本情報を取得するには、EasyControllerオブジェクトを作成し、次に指定されているget_basic_infoメソッドを呼び出します-
ここで、最初の項目は母集団リストであり、2番目の項目は遺伝子座リストです。
特定の遺伝子座のすべての対立遺伝子リストを取得するには、以下に指定されているように遺伝子座名を渡すことによりget_alleles_all_popsメソッドを呼び出します-
特定の母集団と遺伝子座ごとに対立遺伝子リストを取得するには、以下に示すように遺伝子座名と母集団の位置を渡してget_allelesを呼び出します-
同様に、EasyControllerは多くの機能を公開しています:対立遺伝子頻度、遺伝子型頻度、多遺伝子座F統計、Hardy-Weinberg平衡、連鎖不平衡など。
Biopython-ゲノム解析
ゲノムは、そのすべての遺伝子を含むDNAの完全なセットです。 ゲノム解析とは、個々の遺伝子とその遺伝における役割の研究を指します。
ゲノム図
ゲノム図は、遺伝情報をチャートとして表します。 BiopythonはBio.Graphics.GenomeDiagramモジュールを使用してGenomeDiagramを表します。 GenomeDiagramモジュールには、ReportLabのインストールが必要です。
ダイアグラムを作成する手順
図を作成するプロセスは、一般的に以下の単純なパターンに従います-
- 表示する機能の個別のセットごとにFeatureSetを作成し、Bio.SeqFeatureオブジェクトをそれらに追加します。
- 表示するグラフごとにGraphSetを作成し、グラフデータを追加します。
- ダイアグラム上で必要な各トラックのトラックを作成し、必要なトラックにGraphSetsとFeatureSetsを追加します。
- ダイアグラムを作成し、それにトラックを追加します。
- 画像を描画するようにダイアグラムに指示します。
- 画像をファイルに書き込みます。
入力GenBankファイルの例を見てみましょう-
[[3]] 以下で説明します、
以下に示すように、最初にすべてのモジュールをインポートします-
今、データを読み取るためにSeqIOモジュールをインポートします-
ここでは、レコードはgenbankファイルからシーケンスを読み取ります。
次に、空の図を作成して、トラックと機能セットを追加します-
今、私たちは以下に定義されているように緑から灰色への代替色を使用して色のテーマの変更を適用することができます-
これで、画面に以下の応答が表示されます-
上記の入力レコードの図を描きましょう-
上記のコマンドを実行すると、Biopythonディレクトリに次の画像が保存されます。
また、以下の変更を行うことにより、円形形式で画像を描くことができます-
染色体の概要
DNA分子は、染色体と呼ばれる糸状の構造にパッケージ化されています。 各染色体は、その構造をサポートするヒストンと呼ばれるタンパク質の周りに何度もしっかりとコイル状に巻かれたDNAで構成されています。
細胞が分裂していない場合、染色体は細胞の核では見えません。顕微鏡でも見えません。 ただし、染色体を構成するDNAは細胞分裂中により密に詰まり、顕微鏡で見ることができます。
ヒトでは、各細胞には通常23組の染色体が含まれており、合計46組です。 常染色体と呼ばれるこれらのペアの22は、男性と女性の両方で同じように見えます。 23番目のペアである性染色体は、男性と女性で異なります。 女性はX染色体のコピーを2つ持っていますが、男性はX染色体とY染色体を1つ持っています。
Biopython-表現型マイクロアレイ
表現型は、特定の化学物質または環境に対して生物が示す観察可能な特性または特性として定義されます。 表現型マイクロアレイは、多数の化学物質および環境に対する生物の反応を同時に測定し、データを分析して遺伝子変異、遺伝子特性などを理解します。
Biopythonは、表現型データを分析するための優れたモジュールBio.Phenotypeを提供します。 この章では、表現型マイクロアレイデータを解析、補間、抽出、分析する方法を学びましょう。
構文解析
表現型マイクロアレイデータは、CSVとJSONの2つの形式になります。 Biopythonは両方の形式をサポートしています。 Biopythonパーサーは、表現型マイクロアレイデータを解析し、PlateRecordオブジェクトのコレクションとして返します。 各PlateRecordオブジェクトには、WellRecordオブジェクトのコレクションが含まれています。 各WellRecordオブジェクトは、8行12列の形式でデータを保持します。 8行はAからHで表され、12列は01から12で表されます。 たとえば、4 ^ th ^行と6 ^ th ^列はD06で表されます。
次の例で構文の形式と概念を理解しましょう-
- ステップ1 *-Biopythonチームが提供するPlates.csvファイルをダウンロードします-https://raw.githubusercontent.com/biopython/biopython/master/Doc/examples/Plates.csv
- ステップ2 *-以下のようにphenotpeモジュールをロードします-
- ステップ3 *-データファイルとフォーマットオプション(「pm-csv」)を渡すphenotype.parseメソッドを呼び出します。 以下のように反復可能なPlateRecordを返します。
- ステップ4 *-リストの最初のプレートに以下のようにアクセスします-
- ステップ5 *-前に説明したように、プレートにはそれぞれ12個のアイテムを持つ8つの行が含まれています。 WellRecordは以下に指定されているように2つの方法でアクセスすることができます-
- ステップ6 *-各ウェルには異なる時点で一連の測定値があり、以下で指定するforループを使用してアクセスできます-
補間
内挿により、データをより詳細に分析できます。 Biopythonは、WellRecordデータを補間して、中間時点の情報を取得するメソッドを提供します。 構文はリストのインデックス付けに似ているため、簡単に学習できます。
20.1時間でデータを取得するには、以下に指定されているように、単にインデックス値として渡します-
開始時刻と終了時刻を渡すだけでなく、以下に指定することができます-
上記のコマンドは、1時間間隔で20時間から30時間のデータを補間します。 デフォルトでは、間隔は1時間であり、任意の値に変更できます。 たとえば、次のように15分(0.25時間)間隔を指定します-
分析および抽出
Biopythonは、Gompertz、Logistic、およびRichardsシグモイド関数を使用してWellRecordデータを分析するのに適したメソッドを提供します。 既定では、fitメソッドはGompertz関数を使用します。 タスクを完了するには、WellRecordオブジェクトのfitメソッドを呼び出す必要があります。 コーディングは次のとおりです-
Biopythonは高度な分析を行うためにscipyモジュールに依存しています。 scipyモジュールを使用せずに、min、max、average_heightの詳細を計算します。
Biopython-プロット
この章では、シーケンスのプロット方法について説明します。 このトピックに移る前に、プロットの基本を理解しましょう。
プロット
Matplotlibは、さまざまな形式で高品質の数値を生成するPythonプロットライブラリです。 折れ線グラフ、ヒストグラム、棒グラフ、円グラフ、散布図など、さまざまな種類のプロットを作成できます。
- pyLabは、数値モジュールnumpyとグラフィカルプロットモジュールpyplotを組み合わせたmatplotlibに属するモジュールです。** Biopythonは、シーケンスのプロットにpylabモジュールを使用します。 これを行うには、以下のコードをインポートする必要があります-
インポートする前に、pipコマンドと以下のコマンドを使用してmatplotlibパッケージをインストールする必要があります-
サンプル入力ファイル
Biopythonディレクトリに plot.fasta という名前のサンプルファイルを作成し、次の変更を追加します-
折れ線グラフ
次に、上記のfastaファイルの単純なラインプロットを作成しましょう。
- ステップ1 *-SeqIOモジュールをインポートして、fastaファイルを読み取ります。
- ステップ2 *-入力ファイルを解析します。
- ステップ3 *-pylabモジュールをインポートしましょう。
- ステップ4 *-x軸とy軸のラベルを割り当てて折れ線グラフを構成します。
- ステップ5 *-グリッド表示を設定して折れ線グラフを構成します。
- ステップ6 *-plotメソッドを呼び出し、入力としてレコードを提供することにより、単純な折れ線グラフを描画します。
- ステップ7 *-最後に以下のコマンドを使用してチャートを保存します。
結果
上記のコマンドを実行すると、Biopythonディレクトリに次の画像が保存されます。
ヒストグラムチャート
ヒストグラムは連続データに使用され、ビンはデータの範囲を表します。 ヒストグラムの描画は、pylab.plotを除いて折れ線グラフと同じです。 代わりに、レコード(bin)のcustum値を使用して、pylabモジュールのhistメソッドを呼び出します(5)。 完全なコーディングは次のとおりです-
- ステップ1 *-SeqIOモジュールをインポートして、fastaファイルを読み取ります。
- ステップ2 *-入力ファイルを解析します。
- ステップ3 *-pylabモジュールをインポートしましょう。
- ステップ4 *-x軸とy軸のラベルを割り当てて折れ線グラフを構成します。
- ステップ5 *-グリッド表示を設定して折れ線グラフを構成します。
- ステップ6 *-plotメソッドを呼び出し、入力としてレコードを提供することにより、単純な折れ線グラフを描画します。
- ステップ7 *-最後に以下のコマンドを使用してチャートを保存します。
結果
上記のコマンドを実行すると、Biopythonディレクトリに次の画像が保存されます。
シーケンスのGCパーセンテージ
GCパーセンテージは、さまざまなシーケンスを比較するために一般的に使用される分析データの1つです。 一連のシーケンスのGCパーセンテージを使用して簡単な折れ線グラフを作成し、すぐに比較できます。 ここでは、データをシーケンス長からGCパーセンテージに変更するだけです。 完全なコーディングは以下のとおりです-
- ステップ1 *-SeqIOモジュールをインポートして、fastaファイルを読み取ります。
- ステップ2 *-入力ファイルを解析します。
- ステップ3 *-pylabモジュールをインポートしましょう。
- ステップ4 *-x軸とy軸のラベルを割り当てて折れ線グラフを構成します。
- ステップ5 *-グリッド表示を設定して折れ線グラフを構成します。
- ステップ6 *-plotメソッドを呼び出し、入力としてレコードを提供することにより、単純な折れ線グラフを描画します。
- ステップ7 *-最後に以下のコマンドを使用してチャートを保存します。
結果
上記のコマンドを実行すると、Biopythonディレクトリに次の画像が保存されます。
Biopython-クラスター分析
一般に、クラスター分析は、同じグループ内のオブジェクトのセットをグループ化します。 この概念は、主にデータマイニング、統計データ分析、機械学習、パターン認識、画像分析、バイオインフォマティクスなどで使用されます。 クラスターがさまざまな分析でどのように広く使用されているかを理解するために、さまざまなアルゴリズムによって実現できます。
バイオインフォマティクスによると、クラスター分析は主に遺伝子発現データ分析で使用され、類似した遺伝子発現を持つ遺伝子のグループを見つけます。
この章では、実際のデータセットでのクラスタリングの基礎を理解するために、Biopythonの重要なアルゴリズムを確認します。
Biopythonは、すべてのアルゴリズムを実装するためにBio.Clusterモジュールを使用します。 次のアルゴリズムをサポートしています-
- 階層的クラスタリング
- K-クラスタリング
- 自己組織化マップ
- 主成分分析
上記のアルゴリズムについて簡単に紹介します。
階層的クラスタリング
階層的クラスタリングを使用して、距離測定によって各ノードをその最近傍にリンクし、クラスターを作成します。 Bio.Clusterノードには、左、右、距離の3つの属性があります。 以下に示すように簡単なクラスターを作成しましょう-
あなたがツリーベースのクラスタリングを構築したい場合は、以下のコマンドを使用します-
Bio.Clusterモジュールを使用して階層クラスタリングを実行しましょう。
距離が配列で定義されていることを考慮してください。
>>> Bio.Clusterからtreeclusterをインポート>>> cluster = treecluster(distance)>>> print(cluster)(2、1):0.666667(-1、0):9.66667
>>> Bio.Clusterからkclusterをインポート>>> numpyから配列をインポート>>> data = array([[clusterid、error、found = kcluster(data)>>> print(clusterid)[0 0 1] >>>印刷(見つかった)1
>>> distance = array([[以下のコマンドを使用してk-medoidクラスタリングを計算できます-
例を考えてみましょう。
kcluster関数は、Seqインスタンスではなくデータ行列を入力として受け取ります。 シーケンスを行列に変換し、それをkcluster関数に提供する必要があります。
データを数値要素のみを含む行列に変換する1つの方法は、 numpy.fromstring 関数を使用することです。 基本的に、シーケンス内の各文字を対応するASCII文字に変換します。
これにより、kcluster関数が認識し、シーケンスのクラスター化に使用するエンコードされたシーケンスの2D配列が作成されます。
自己組織化マップ
このアプローチは、人工ニューラルネットワークの一種です。 これはコホネンによって開発され、しばしばコホネンマップと呼ばれます。 長方形のトポロジーに基づいてアイテムをクラスターに編成します。
以下に示すように、同じ配列距離を使用して簡単なクラスターを作成しましょう-
>>> numpy import arrayから>>> numpy import meanから>>> numpy import covから>>> numpy.linalg import eigから
#行列を定義>>> A = array([[print(A)[[各列の平均を計算>>> M = mean(A.T、axis = 1)>>> print(M) [ 3. 4.]
#列の平均を引くことで列を中央に配置>>> C = A-M
>>> print(C)[[中心行列の共分散行列を計算>>> V = cov(C.T)
>>> print(V)[[共分散行列の固有分解>>>値、ベクトル= eig(V)
>>> print(vectors)[[print(values) [ 8. 0.]
>>> Bio.Clusterからpcaをインポート>>> numpyから配列をインポート>>> data = array([[columnmean、axes、components、eigenvalues = pca(data)>>> print(columnmean) [ 3. 4.] >>> print(coordinates)[[print(components)[[print(eigenvalues) [ 4. 0.]
Biopython-機械学習
バイオインフォマティクスは、機械学習アルゴリズムを適用する優れた分野です。 ここには、多数の生物の遺伝情報があり、これらすべての情報を手動で分析することはできません。 適切な機械学習アルゴリズムを使用すると、これらのデータから多くの有用な情報を抽出できます。 Biopythonは、教師付き機械学習を行うための有用なアルゴリズムセットを提供します。
教師あり学習は、入力変数(X)と出力変数(Y)に基づいています。 アルゴリズムを使用して、入力から出力へのマッピング関数を学習します。 以下に定義されています-
このアプローチの主な目的は、マッピング関数を近似することです。新しい入力データ(x)がある場合、そのデータの出力変数(Y)を予測できます。
ロジスティック回帰モデル
ロジスティック回帰は、教師あり機械学習アルゴリズムです。 予測変数の加重和を使用してKクラス間の差を見つけるために使用されます。 イベント発生の確率を計算し、癌の検出に使用できます。
Biopythonは、ロジスティック回帰アルゴリズムに基づいて変数を予測するBio.LogisticRegressionモジュールを提供します。 現在、Biopythonは2つのクラス(K = 2)に対してのみロジスティック回帰アルゴリズムを実装しています。
k最近傍
k最近傍も教師あり機械学習アルゴリズムです。 最近傍に基づいてデータを分類することにより機能します。 Biopythonは、k最近傍アルゴリズムに基づいて変数を予測するBio.KNNモジュールを提供します。
ナイーブベイズ
単純ベイズ分類器は、ベイズの定理に基づいた分類アルゴリズムのコレクションです。 それは単一のアルゴリズムではなく、すべてが共通の原則を共有するアルゴリズムのファミリーです。 分類されるフィーチャのペアはすべて互いに独立しています。 Biopythonは、Naive Bayesアルゴリズムで動作するBio.NaiveBayesモジュールを提供します。
マルコフモデル
マルコフモデルは、確率変数の集合として定義される数学的システムであり、特定の確率的ルールに従って、ある状態から別の状態への遷移を経験します。 Biopythonは、マルコフモデルで動作する* Bio.MarkovModelおよびBio.HMM.MarkovModelモジュールを提供します*。
Biopython-テスト手法
Biopythonには、さまざまな条件下でソフトウェアをテストするための広範なテストスクリプトがあり、ソフトウェアにバグがないことを確認します。 テストスクリプトを実行するには、Biopythonのソースコードをダウンロードしてから、以下のコマンドを実行します-
これにより、すべてのテストスクリプトが実行され、次の出力が得られます-
また、以下に指定されているように個々のテストスクリプトを実行することもできます-
結論
私たちが学んだように、Biopythonはバイオインフォマティクスの分野で重要なソフトウェアの1つです。 Pythonで記述されているため(学習および記述が容易)、バイオインフォマティクスの分野でのあらゆる計算および操作に対処するための広範な機能を提供します。 また、ほとんどすべての一般的なバイオインフォマティクスソフトウェアに簡単で柔軟なインターフェイスを提供して、その機能も活用しています。