geo-database について
NCBI の GEO リポジトリで遺伝子発現・機能ゲノミクスデータを扱う研究者や分析者向けのスキルです。GEOparse、E-utilities、FTP を使った検索、取得、一括処理、分析を説明します。
主な機能
- 01GEO の研究と発現プロファイルの検索
- 02シリーズ・サンプルデータの取得
- 03補足ファイルと生データのダウンロード
- 04メタデータ・データセットの一括検索
- 05発現データの分析と比較
- 06GEOparse・E-utilities・FTP の利用
活用シーン
- 01疾患や条件に関する研究を検索
- 02トランスクリプトーム研究用データを取得
- 03複数研究の発現傾向を比較
- 04薬剤応答やバイオマーカーを調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ davila7/ claude-code-templates --skill geo-databaseインストール後、Claude Code で/geo-databaseを入力して読み込まれたか確認します。
同梱ファイルreferences/geo_reference.md
詳細
GEO データベース
概要
Gene Expression Omnibus(GEO)は、NCBI が公開しているハイスループット遺伝子発現およびファンクショナルゲノミクスデータのリポジトリです。GEO には、アレイベースとシーケンスベースの両方の実験から得られた 26 万 4,000 件を超える研究と、800 万を超えるサンプルが含まれています。
このスキルを使用するタイミング
このスキルは、遺伝子発現データセットの検索、実験データの取得、raw および処理済みファイルのダウンロード、発現プロファイルのクエリ、または GEO データを計算解析ワークフローに統合する場合に使用してください。
主な機能
1. GEO データの構成の理解
GEO は、異なる登録番号(accession)の種類を使用してデータを階層的に整理します。
Series(GSE): 関連するサンプルのセットからなる完全な実験
- 例: GSE123456
- 実験デザイン、サンプル、研究全体の情報を含みます
- GEO における最大の編成単位です
- 現在の件数: 264,928 件以上のシリーズ
Sample(GSM): 単一の実験サンプルまたは生物学的反復
- 例: GSM987654
- 個々のサンプルデータ、プロトコル、メタデータを含みます
- プラットフォームおよびシリーズにリンクされています
- 現在の件数: 8,068,632 件以上のサンプル
Platform(GPL): 使用されたマイクロアレイまたはシーケンシングプラットフォーム
- 例: GPL570(Affymetrix Human Genome U133 Plus 2.0 Array)
- 技術と、プローブまたは特徴量のアノテーションを記述します
- 複数の実験で共有されます
- 現在の件数: 27,739 件以上のプラットフォーム
DataSet(GDS): 一貫した形式でキュレーションされたコレクション
- 例: GDS5678
- 研究デザインごとに整理された、実験的に比較可能なサンプル
- 差次的解析向けに処理されています
- GEO データのサブセット(4,348 件のキュレーション済みデータセット)
- 迅速な比較解析に最適です
Profiles: 配列特徴量に紐づく遺伝子単位の発現データ
- 遺伝子名またはアノテーションで検索できます
- Entrez Gene への相互参照があります
- すべての研究を横断する遺伝子中心の検索が可能です
2. GEO データの検索
GEO DataSets 検索:
キーワード、生物種、または実験条件で研究を検索します。
from Bio import Entrez
# Configure Entrez (required)
Entrez.email = "[email protected]"
# Search for datasets
def search_geo_datasets(query, retmax=20):
"""Search GEO DataSets database"""
handle = Entrez.esearch(
db="gds",
term=query,
retmax=retmax,
usehistory="y"
)
results = Entrez.read(handle)
handle.close()
return results
# Example searches
results = search_geo_datasets("breast cancer[MeSH] AND Homo sapiens[Organism]")
print(f"Found {results['Count']} datasets")
# Search by specific platform
results = search_geo_datasets("GPL570[Accession]")
# Search by study type
results = search_geo_datasets("expression profiling by array[DataSet Type]")
GEO Profiles 検索:
遺伝子単位の発現パターンを検索します。
# Search for gene expression profiles
def search_geo_profiles(gene_name, organism="Homo sapiens", retmax=100):
"""Search GEO Profiles for a specific gene"""
query = f"{gene_name}[Gene Name] AND {organism}[Organism]"
handle = Entrez.esearch(
db="geoprofiles",
term=query,
retmax=retmax
)
results = Entrez.read(handle)
handle.close()
return results
# Find TP53 expression across studies
tp53_results = search_geo_profiles("TP53", organism="Homo sapiens")
print(f"Found {tp53_results['Count']} expression profiles for TP53")
高度な検索パターン:
# Combine multiple search terms
def advanced_geo_search(terms, operator="AND"):
"""Build complex search queries"""
query = f" {operator} ".join(terms)
return search_geo_datasets(query)
# Find recent high-throughput studies
search_terms = [
"RNA-seq[DataSet Type]",
"Homo sapiens[Organism]",
"2024[Publication Date]"
]
results = advanced_geo_search(search_terms)
# Search by author and condition
search_terms = [
"Smith[Author]",
"diabetes[Disease]"
]
results = advanced_geo_search(search_terms)
3. GEOparse による GEO データの取得(推奨)
GEOparse は、GEO データにアクセスするための主要な Python ライブラリです。
インストール:
uv pip install GEOparse
基本的な使い方:
import GEOparse
# Download and parse a GEO Series
gse = GEOparse.get_GEO(geo="GSE123456", destdir="./data")
# Access series metadata
print(gse.metadata['title'])
print(gse.metadata['summary'])
print(gse.metadata['overall_design'])
# Access sample information
for gsm_name, gsm in gse.gsms.items():
print(f"Sample: {gsm_name}")
print(f" Title: {gsm.metadata['title'][0]}")
print(f" Source: {gsm.metadata['source_name_ch1'][0]}")
print(f" Characteristics: {gsm.metadata.get('characteristics_ch1', [])}")
# Access platform information
for gpl_name, gpl in gse.gpls.items():
print(f"Platform: {gpl_name}")
print(f" Title: {gpl.metadata['title'][0]}")
print(f" Organism: {gpl.metadata['organism'][0]}")
発現データの扱い:
import GEOparse
import pandas as pd
# Get expression data from series
gse = GEOparse.get_GEO(geo="GSE123456", destdir="./data")
# Extract expression matrix
# Method 1: From series matrix file (fastest)
if hasattr(gse, 'pivot_samples'):
expression_df = gse.pivot_samples('VALUE')
print(expression_df.shape) # genes x samples
# Method 2: From individual samples
expression_data = {}
for gsm_name, gsm in gse.gsms.items():
if hasattr(gsm, 'table'):
expression_data[gsm_name] = gsm.table['VALUE']
expression_df = pd.DataFrame(expression_data)
print(f"Expression matrix: {expression_df.shape}")
補足ファイルへのアクセス:
import GEOparse
gse = GEOparse.get_GEO(geo="GSE123456", destdir="./data")
# Download supplementary files
gse.download_supplementary_files(
directory="./data/GSE123456_suppl",
download_sra=False # Set to True to download SRA files
)
# List available supplementary files
for gsm_name, gsm in gse.gsms.items():
if hasattr(gsm, 'supplementary_files'):
print(f"Sample {gsm_name}:")
for file_url in gsm.metadata.get('supplementary_file', []):
print(f" {file_url}")
データのフィルタリングとサブセット化:
import GEOparse
gse = GEOparse.get_GEO(geo="GSE123456", destdir="./data")
# Filter samples by metadata
control_samples = [
gsm_name for gsm_name, gsm in gse.gsms.items()
if 'control' in gsm.metadata.get('title', [''])[0].lower()
]
treatment_samples = [
gsm_name for gsm_name, gsm in gse.gsms.items()
if 'treatment' in gsm.metadata.get('title', [''])[0].lower()
]
print(f"Control samples: {len(control_samples)}")
print(f"Treatment samples: {len(treatment_samples)}")
# Extract subset expression matrix
expression_df = gse.pivot_samples('VALUE')
control_expr = expression_df[control_samples]
treatment_expr = expression_df[treatment_samples]
4. GEO へのアクセスに NCBI E-utilities を使用する
E-utilities は、GEO のメタデータへより低レベルなプログラムからのアクセスを提供します。
E-utilities の基本ワークフロー:
from Bio import Entrez
import time
Entrez.email = "[email protected]"
# Step 1: Search for GEO entries
def search_geo(query, db="gds", retmax=100):
"""Search GEO using E-utilities"""
handle = Entrez.esearch(
db=db,
term=query,
retmax=retmax,
usehistory="y"
)
results = Entrez.read(handle)
handle.close()
return results
# Step 2: Fetch summaries
def fetch_geo_summaries(id_list, db="gds"):
"""Fetch document summaries for GEO entries"""
ids = ",".join(id_list)
handle = Entrez.esummary(db=db, id=ids)
summaries = Entrez.read(handle)
handle.close()
return summaries
# Step 3: Fetch full records
def fetch_geo_records(id_list, db="gds"):
"""Fetch full GEO records"""
ids = ",".join(id_list)
handle = Entrez.efetch(db=db, id=ids, retmode="xml")
records = Entrez.read(handle)
handle.close()
return records
# Example workflow
search_results = search_geo("breast cancer AND Homo sapiens")
id_list = search_results['IdList'][:5]
summaries = fetch_geo_summaries(id_list)
for summary in summaries:
print(f"GDS: {summary.get('Accession', 'N/A')}")
print(f"Title: {summary.get('title', 'N/A')}")
print(f"Samples: {summary.get('n_samples', 'N/A')}")
print()
E-utilities によるバッチ処理:
from Bio import Entrez
import time
Entrez.email = "[email protected]"
def batch_fetch_geo_metadata(accessions, batch_size=100):
"""Fetch metadata for multiple GEO accessions"""
results = {}
for i in range(0, len(accessions), batch_size):
batch = accessions[i:i + batch_size]
# Search for each accession
for accession in batch:
try:
query = f"{accession}[Accession]"
search_handle = Entrez.esearch(db="gds", term=query)
search_results = Entrez.read(search_handle)
search_handle.close()
if search_results['IdList']:
# Fetch summary
summary_handle = Entrez.esummary(
db="gds",
id=search_results['IdList'][0]
)
summary = Entrez.read(summary_handle)
summary_handle.close()
results[accession] = summary[0]
# Be polite to NCBI servers
time.sleep(0.34) # Max 3 requests per second
except Exception as e:
print(f"Error fetching {accession}: {e}")
return results
# Fetch metadata for multiple datasets
gse_list = ["GSE100001", "GSE100002", "GSE100003"]
metadata = batch_fetch_geo_metadata(gse_list)
5. データファイルへの直接的な FTP アクセス
GEO データの FTP URL:
GEO データは FTP で直接ダウンロードできます。
import ftplib
import os
def download_geo_ftp(accession, file_type="matrix", dest_dir="./data"):
"""Download GEO files via FTP"""
# Construct FTP path based on accession type
if accession.startswith("GSE"):
# Series files
gse_num = accession[3:]
base_num = gse_num[:-3] + "nnn"
ftp_path = f"/geo/series/GSE{base_num}/{accession}/"
if file_type == "matrix":
filename = f"{accession}_series_matrix.txt.gz"
elif file_type == "soft":
filename = f"{accession}_family.soft.gz"
elif file_type == "miniml":
filename = f"{accession}_family.xml.tgz"
# Connect to FTP server
ftp = ftplib.FTP("ftp.ncbi.nlm.nih.gov")
ftp.login()
ftp.cwd(ftp_path)
# Download file
os.makedirs(dest_dir, exist_ok=True)
local_file = os.path.join(dest_dir, filename)
with open(local_file, 'wb') as f:
ftp.retrbinary(f'RETR {filename}', f.write)
ftp.quit()
print(f"Downloaded: {local_file}")
return local_file
# Download series matrix file
download_geo_ftp("GSE123456", file_type="matrix")
# Download SOFT format file
download_geo_ftp("GSE123456", file_type="soft")
ダウンロードに wget または curl を使用する:
# Download series matrix file
wget ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE123nnn/GSE123456/matrix/GSE123456_series_matrix.txt.gz
# Download all supplementary files for a series
wget -r -np -nd ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE123nnn/GSE123456/suppl/
# Download SOFT format family file
wget ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE123nnn/GSE123456/soft/GSE123456_family.soft.gz
6. GEO データの解析
品質管理と前処理:
import GEOparse
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Load dataset
gse = GEOparse.get_GEO(geo="GSE123456", destdir="./data")
expression_df = gse.pivot_samples('VALUE')
# Check for missing values
print(f"Missing values: {expression_df.isnull().sum().sum()}")
# Log transformation (if needed)
if expression_df.min().min() > 0: # Check if already log-transformed
if expression_df.max().max() > 100:
expression_df = np.log2(expression_df + 1)
print("Applied log2 transformation")
# Distribution plots
plt.figure(figsize=(12, 5))
plt.subplot(1, 2, 1)
expression_df.plot.box(ax=plt.gca())
plt.title("Expression Distribution per Sample")
plt.xticks(rotation=90)
plt.subplot(1, 2, 2)
expression_df.mean(axis=1).hist(bins=50)
plt.title("Gene Expression Distribution")
plt.xlabel("Average Expression")
plt.tight_layout()
plt.savefig("geo_qc.png", dpi=300, bbox_inches='tight')
差次的発現解析:
import GEOparse
import pandas as pd
import numpy as np
from scipy import stats
gse = GEOparse.get_GEO(geo="GSE123456", destdir="./data")
expression_df = gse.pivot_samples('VALUE')
# Define sample groups
control_samples = ["GSM1", "GSM2", "GSM3"]
treatment_samples = ["GSM4", "GSM5", "GSM6"]
# Calculate fold changes and p-values
results = []
for gene in expression_df.index:
control_expr = expression_df.loc[gene, control_samples]
treatment_expr = expression_df.loc[gene, treatment_samples]
# Calculate statistics
fold_change = treatment_expr.mean() - control_expr.mean()
t_stat, p_value = stats.ttest_ind(treatment_expr, control_expr)
results.append({
'gene': gene,
'log2_fold_change': fold_change,
'p_value': p_value,
'control_mean': control_expr.mean(),
'treatment_mean': treatment_expr.mean()
})
# Create results DataFrame
de_results = pd.DataFrame(results)
# Multiple testing correction (Benjamini-Hochberg)
from statsmodels.stats.multitest import multipletests
_, de_results['q_value'], _, _ = multipletests(
de_results['p_value'],
method='fdr_bh'
)
# Filter significant genes
significant_genes = de_results[
(de_results['q_value'] < 0.05) &
(abs(de_results['log2_fold_change']) > 1)
]
print(f"Significant genes: {len(significant_genes)}")
significant_genes.to_csv("de_results.csv", index=False)
相関およびクラスタリング解析:
import GEOparse
import seaborn as sns
import matplotlib.pyplot as plt
from scipy.cluster import hierarchy
from scipy.spatial.distance import pdist
gse = GEOparse.get_GEO(geo="GSE123456", destdir="./data")
expression_df = gse.pivot_samples('VALUE')
# Sample correlation heatmap
sample_corr = expression_df.corr()
plt.figure(figsize=(10, 8))
sns.heatmap(sample_corr, cmap='coolwarm', center=0,
square=True, linewidths=0.5)
plt.title("Sample Correlation Matrix")
plt.tight_layout()
plt.savefig("sample_correlation.png", dpi=300, bbox_inches='tight')
# Hierarchical clustering
distances = pdist(expression_df.T, metric='correlation')
linkage = hierarchy.linkage(distances, method='average')
plt.figure(figsize=(12, 6))
hierarchy.dendrogram(linkage, labels=expression_df.columns)
plt.title("Hierarchical Clustering of Samples")
plt.xlabel("Samples")
plt.ylabel("Distance")
plt.xticks(rotation=90)
plt.tight_layout()
plt.savefig("sample_clustering.png", dpi=300, bbox_inches='tight')
7. 複数データセットのバッチ処理
複数のシリーズのダウンロードと処理:
import GEOparse
import pandas as pd
import os
def batch_download_geo(gse_list, destdir="./geo_data"):
"""Download multiple GEO series"""
results = {}
for gse_id in gse_list:
try:
print(f"Processing {gse_id}...")
gse = GEOparse.get_GEO(geo=gse_id, destdir=destdir)
# Extract key information
results[gse_id] = {
'title': gse.metadata.get('title', ['N/A'])[0],
'organism': gse.metadata.get('organism', ['N/A'])[0],
'platform': list(gse.gpls.keys())[0] if gse.gpls else 'N/A',
'num_samples': len(gse.gsms),
'submission_date': gse.metadata.get('submission_date', ['N/A'])[0]
}
# Save expression data
if hasattr(gse, 'pivot_samples'):
expr_df = gse.pivot_samples('VALUE')
expr_df.to_csv(f"{destdir}/{gse_id}_expression.csv")
results[gse_id]['num_genes'] = len(expr_df)
except Exception as e:
print(f"Error processing {gse_id}: {e}")
results[gse_id] = {'error': str(e)}
# Save summary
summary_df = pd.DataFrame(results).T
summary_df.to_csv(f"{destdir}/batch_summary.csv")
return results
# Process multiple datasets
gse_list = ["GSE100001", "GSE100002", "GSE100003"]
results = batch_download_geo(gse_list)
研究横断的なメタアナリシス:
import GEOparse
import pandas as pd
import numpy as np
def meta_analysis_geo(gse_list, gene_of_interest):
"""Perform meta-analysis of gene expression across studies"""
results = []
for gse_id in gse_list:
try:
gse = GEOparse.get_GEO(geo=gse_id, destdir="./data")
# Get platform annotation
gpl = list(gse.gpls.values())[0]
# Find gene in platform
if hasattr(gpl, 'table'):
gene_probes = gpl.table[
gpl.table['Gene Symbol'].str.contains(
gene_of_interest,
case=False,
na=False
)
]
if not gene_probes.empty:
expr_df = gse.pivot_samples('VALUE')
for probe_id in gene_probes['ID']:
if probe_id in expr_df.index:
expr_values = expr_df.loc[probe_id]
results.append({
'study': gse_id,
'probe': probe_id,
'mean_expression': expr_values.mean(),
'std_expression': expr_values.std(),
'num_samples': len(expr_values)
})
except Exception as e:
print(f"Error in {gse_id}: {e}")
return pd.DataFrame(results)
# Meta-analysis for TP53
gse_studies = ["GSE100001", "GSE100002", "GSE100003"]
meta_results = meta_analysis_geo(gse_studies, "TP53")
print(meta_results)
インストールとセットアップ
Python ライブラリ
# Primary GEO access library (recommended)
uv pip install GEOparse
# For E-utilities and programmatic NCBI access
uv pip install biopython
# For data analysis
uv pip install pandas numpy scipy
# For visualization
uv pip install matplotlib seaborn
# For statistical analysis
uv pip install statsmodels scikit-learn
設定
NCBI E-utilities へのアクセスを設定します。
from Bio import Entrez
# Always set your email (required by NCBI)
Entrez.email = "[email protected]"
# Optional: Set API key for increased rate limits
# Get your API key from: https://www.ncbi.nlm.nih.gov/account/
Entrez.api_key = "your_api_key_here"
# With API key: 10 requests/second
# Without API key: 3 requests/second
一般的なユースケース
トランスクリプトーム研究
- 特定の条件における遺伝子発現データをダウンロードする
- 研究間で発現プロファイルを比較する
- 差次的に発現している遺伝子を特定する
- 複数のデータセットにまたがるメタアナリシスを実施する
薬剤応答研究
- 薬剤処理後の遺伝子発現変化を解析する
- 薬剤応答のバイオマーカーを特定する
- 細胞株または患者間で薬剤の効果を比較する
- 薬剤感受性の予測モデルを構築する
疾患生物学
- 疾患組織と正常組織における遺伝子発現を調べる
- 疾患に関連する発現シグネチャーを特定する
- 患者のサブグループや疾患ステージを比較する
- 発現と臨床転帰との相関を調べる
バイオマーカー探索
- 診断または予後のマーカーをスクリーニングする
- 独立したコホートをまたいでバイオマーカーを検証する
- プラットフォーム間でマーカーの性能を比較する
- 発現データと臨床データを統合する
主要な概念
SOFT(Simple Omnibus Format in Text): GEO の主要なテキストベースの形式で、メタデータとデータテーブルを含みます。GEOparse で容易に解析できます。
MINiML(MIAME Notation in Markup Language): GEO データのための XML 形式で、プログラムによるアクセスやデータ交換に使用されます。
Series Matrix: サンプルを列、遺伝子やプローブを行として並べたタブ区切りの発現マトリックスです。発現データを取得する最も高速な形式です。
MIAME 準拠: Minimum Information About a Microarray Experiment(マイクロアレイ実験に関する最小限の情報)の略で、GEO がすべての投稿に対して求める標準化されたアノテーションです。
発現値の種類: 異なる種類の発現測定値(生のシグナル、正規化済み、対数変換済みなど)です。必ずプラットフォームと処理方法を確認してください。
プラットフォームアノテーション: プローブやフィーチャーの ID を遺伝子に対応付けます。発現データを生物学的に解釈するために不可欠です。
GEO2R Web ツール
コーディングなしで手早く解析するには、GEO2R を使用します。
- GEO に統合された Web ベースの統計解析ツールです
- アクセス先: https://www.ncbi.nlm.nih.gov/geo/geo2r/?acc=GSExxxxx
- 差次的発現解析を実行します
- 再現性のために R スクリプトを生成します
- データをダウンロードする前の探索的解析に役立ちます
レート制限とベストプラクティス
NCBI E-utilities のレート制限:
- API キーなし: 毎秒 3 リクエスト
- API キーあり: 毎秒 10 リクエスト
- リクエストの間に遅延を入れてください:
time.sleep(0.34)(API キーなし)またはtime.sleep(0.1)(API キーあり)
FTP アクセス:
- FTP ダウンロードにはレート制限がありません
- 一括ダウンロードに推奨される方法です
- wget -r を使用するとディレクトリ全体をダウンロードできます
GEOparse のキャッシュ:
- GEOparse はダウンロードしたファイルを destdir に自動的にキャッシュします
- 以降の呼び出しではキャッシュされたデータを使用します
- ディスク容量を節約するために、定期的にキャッシュを削除してください
推奨される使い方:
- シリーズ単位のアクセスには GEOparse を使用してください(最も簡単です)
- メタデータの検索やバッチクエリには E-utilities を使用してください
- ファイルの直接ダウンロードや一括操作には FTP を使用してください
- 繰り返しのダウンロードを避けるため、データはローカルにキャッシュしてください
- Biopython を使用する場合は、必ず Entrez.email を設定してください
リソース
references/geo_reference.md
次の内容を網羅した詳細なリファレンスドキュメントです。
- E-utilities API の詳細な仕様とエンドポイント
- SOFT および MINiML ファイル形式の完全なドキュメント
- GEOparse の高度な使用パターンと例
- FTP ディレクトリ構造とファイル命名規則
- データ処理パイプラインと正規化手法
- 一般的な問題のトラブルシューティングとエラー処理
- プラットフォーム固有の考慮事項と注意点
詳細な技術情報や複雑なクエリパターンが必要な場合、または一般的でないデータ形式を扱う場合は、このリファレンスを参照してください。
重要な注意事項
データ品質に関する考慮事項
- GEO は、品質基準がさまざまなユーザー投稿データを受け付けています
- 必ずプラットフォームのアノテーションと処理方法を確認してください
- サンプルのメタデータと実験計画を検証してください
- 研究間のバッチ効果に注意してください
- 一貫性を保つため、生データの再処理を検討してください
ファイルサイズに関する警告
- Series matrix ファイルは大規模な研究では大きくなることがあります(1 GB を超える場合もあります)
- 補足ファイル(例: CEL ファイル)は非常に大きくなることがあります
- ダウンロード前に十分なディスク容量を確保してください
- サンプルを分割して段階的にダウンロードすることを検討してください
データの利用と引用
- GEO のデータは研究目的であれば自由に利用できます
- GEO データを使用する場合は、必ず元の研究を引用してください
- GEO データベースの引用: Barrett et al. (2013) Nucleic Acids Research
- 個別のデータセットに利用制限がある場合は、それを確認してください
- プログラムによるアクセスには NCBI のガイドラインに従ってください
よくある落とし穴
- プラットフォームによってプローブ ID が異なるため、アノテーションのマッピングが必要です
- 発現値は生データ、正規化済み、または対数変換済みのいずれの場合もあるため、メタデータを確認してください
- サンプルのメタデータは、研究ごとに書式が統一されていない場合があります
- シリーズによっては、シリーズマトリックスファイルが存在しません(古い投稿の場合)
- プラットフォームのアノテーションが古くなっている場合があります(遺伝子名の変更や ID の非推奨化など)
追加リソース
- GEO ウェブサイト: https://www.ncbi.nlm.nih.gov/geo/
- GEO 投稿ガイドライン: https://www.ncbi.nlm.nih.gov/geo/info/submission.html
- GEOparse ドキュメント: https://geoparse.readthedocs.io/
- E-utilities ドキュメント: https://www.ncbi.nlm.nih.gov/books/NBK25501/
- GEO FTP サイト: ftp://ftp.ncbi.nlm.nih.gov/geo/
- GEO2R ツール: https://www.ncbi.nlm.nih.gov/geo/geo2r/
- NCBI API キー: https://ncbiinsights.ncbi.nlm.nih.gov/2017/11/02/new-api-keys-for-the-e-utilities/
- Biopython チュートリアル: https://biopython.org/DIST/docs/tutorial/Tutorial.html