【GEOparseの使い方】GEOのデータをpythonで解析する

本記事では、pythonのライブラリである、GEOparseを用いて、GEOのデータを取得・解析する手法について解説します。

GEOとは

NCBIのGEO(Gene Expression Omnibus)は、遺伝子発現情報のデータベースであり、マイクロアレイやRNA-seq実験などで得られたデータが登録されています。

NCBI GEO

GEOを利用して、実験データや遺伝子発現プロファイルデータを検索・ダウンロードすることができます。

NCBIのウェブサイトでは、データセットの検索やダウンロードが簡単にできます。また、NCBIが提供する「GEO2R」などのツールを利用することで、ブラウザ上でデータをより簡単に解析することができます。

今回は上記のような方法ではなく、pythonのライブラリを用いて、GEOのデータを取得・解析する方法を解説します。

GEOparseのインストール

GEOparseはpipでインストールできます。

GEOparseのGithubページ

pip install GEOparse

GEOparseの使い方

GEOparseの公式ドキュメントは以下のサイトから確認できます。

GEOparseの公式ドキュメント

GEOparseでGEOデータセットを取得する

早速、GEOからデータを取得していきます。今回は、GSE221791のデータを使います。

GSEはGene Set Experimentの略で、複数の遺伝子発現データセットをまとめたセットを表します。

GSE221791 abstract

GSE221791は上記の画像のように、アルツハイマー病モデルマウスにCKという薬剤を投与した実験の遺伝子発現をマイクロアレイで取得した結果が登録されています。

GEOparseでデータを取得するには、python上で以下のコマンドを実行します。get_GEOの引数で、geoに取得したいGSE番号、destdirにデータの保存先を指定します。

import GEOparse
gse = GEOparse.get_GEO(geo="GSE221791", destdir="./data")

コマンドを実行すると、GSE221791_family.soft.gzがNCBIのサイトからダウンロードされます。

これで下記のSOFT formatted family filesをダウンロードしたことになります。

GSE221791 softファイル

NCBIのサイトから手動でダウンロードしたデータが既にある場合は、destdirにデータの保存場所を指定することでpythonのオブジェクトにパースすることが可能です。

もちろん、手動でNCBIのサイトからダウンロードすることも可能ですが、複数のGSEデータセットをダウンロードしたい場合などは、GEOparseを使うと楽になりそうです。

取得したデータの中身を確認する

pythonのオブジェクトとしてパースされた中身にはたくさんのデータが入っています。

以下のコマンドで中身にどんなデータが入っているかを確認します。

dir(gse)

出力を確認すると多くのデータが入っていることを確認できます。

['__class__', '__delattr__',
(中略) , 
'database', 'download_SRA', 'download_supplementary_files', 
'geotype', 'get_accession', 'get_metadata_attribute', 'get_type',
 'gpls', 'gsms', 'merge_and_average', 'metadata', 'name', 'phenotype_data',
 'pivot_and_annotate', 'pivot_samples', 'relations', 'show_metadata', 'to_soft']

具体的に見てみましょう。

GPLは、Gene Expression Platformの略で、遺伝子発現データの測定に使用される技術を表します。

GPLには、マイクロアレイやRNA-seqなどのさまざまな技術が登録されています。

print(gse.gpls)

出力結果

{'GPL23038': <d: GPL23038>}

GSMは、Gene Set Memberの略で、遺伝子発現データセットの中の1つのサンプルを表します。

print(gse.gsms)
print(len(gse.gsms))

出力結果

{'GSM6896571': <SAMPLE: GSM6896571>, 'GSM6896572': <SAMPLE: GSM6896572>, 'GSM6896573': <SAMPLE: GSM6896573>, 'GSM6896574': <SAMPLE: GSM6896574>, 'GSM6896575': <SAMPLE: GSM6896575>, 'GSM6896576': <SAMPLE: GSM6896576>}6

GSE221791には6つのGSMが含まれていることがわかります。

メタデータをまとめて確認してみます。

from pprint import pprint
pprint(gse.metadata)

出力は省略しますが、GSE221791に関する多くのメタデータ情報を確認することができます。

遺伝子発現データを解析する

各サンプルの遺伝子発現量データを表形式でまとめるには以下のコマンドを実行します。

gene_matrix_data = gse.pivot_samples("VALUE")
gene_matrix_data

出力結果

geoparse_output

これでプローブIDと各サンプルの遺伝子発現量を示すテーブルデータが得られました。

このテーブルデータを解析することで、複数のサンプル間の遺伝子発現量の違いなどを解析していくことができます。

おわりに

本記事では、pythonのライブラリである、GEOparseを用いて、GEOのデータを取得・解析する手法について解説しました。

ぜひ、pythonを利用した解析も試してみてください。