忍者ブログ
バイオインフォマティックス技術者試験、情報処理試験など、IT系の試験を基礎から勉強します。また、Javaなどプログラミングを勉強します。

【BI技術者認定試験対策】転写活性化の新たな主役!「エンハンサーRNA(eRNA)」を攻略

遺伝子の転写を強化するDNA領域(エンハンサー)自体から転写され、ターゲット遺伝子の発現促進に関与するノンコーディングRNAについて整理しましょう。

1. 問題:エンハンサー領域から転写されるノンコーディングRNA

【 問題 】 ゲノム上のエンハンサー領域からRNAポリメラーゼIIによって転写される非コードRNAであり、プロモーター領域とのループ構造形成などを介して標的遺伝子の転写活性化を促進する分子を何と呼ぶでしょうか?

① eRNA(エンハンサーRNA)   ② miRNA(マイクロRNA)   ③ snRNA(核内小形RNA)   ④ tRNA(転移RNA)

2. 正解:転写制御RNAに関する正解

正解: ① eRNA(エンハンサーRNA / enhancer RNA)

3. 解説:エンハンサーの作動メカニズムとeRNAの役割

かつては単なる転写の副産物(ノイズ)と考えられていましたが、現在では遺伝子発現を正に制御する重要な分子として注目されています。

[ eRNA(エンハンサーRNA)の特徴 ]
由来:ゲノム上の「エンハンサー(転写促進領域)」から転写される非コードRNA。
転写様式:多くは双方向性(bidirectional)に転写され、ポリA付加を受けない短寿命なRNAが多い。
主な機能
  ・クロマチンループ形成の促進:エンハンサーとプロモーターを接近させる立体構造(ループ)の形成・安定化。
  ・RNAポリメラーゼIIのポージング解除:転写の一時停止を解除し、迅速な転写開始をサポート。

1. 試験のポイント: 「エンハンサー領域から転写される」「標的遺伝子の転写を促進・活性化するノンコーディングRNA=eRNA(エンハンサーRNA)」という直感的な定義と機能をセットで押さえましょう。
2. バイオインフォの視点: eRNAの同定には、新生RNAを網羅的にシーケンスするGRO-seqやPRO-seq、またはChIP-seq(H3K27acなどの活性型エンハンサーマークやRNA Pol IIの結合ピーク)とRNA-Seqの統合解析が用いられます。活性化しているエンハンサー部位の予測や、遠隔地の標的遺伝子との相互作用ネットワークの解析において重要なデータソースとなります。


4. まとめ

「エンハンサー領域から転写され、遺伝子発現を促進するRNA=eRNA(エンハンサーRNA)」です。システム開発で言えば、メインの処理プログラム(mRNA)を起動・加速させるために、設定サーバー(エンハンサー)側で一時的に生成されて通信ループを確立する「ハンドシェイク用信号(シグナル)コード」のような役割ですね!


PR

【BI技術者認定試験対策】タンパク質を作らない重要な調節者!「長鎖非コードRNA(lncRNA)」を攻略

タンパク質へと翻訳されない「非コードRNA(ncRNA)」のうち、200塩基以上の長さを持ち、染色体構造の制御や遺伝子発現調節を担う分子群について整理しましょう。

1. 問題:200塩基以上の非コードRNA

【 問題 】 転写されるもののタンパク質には翻訳されず、一般に200塩基以上の長さを持ち、クロマチンの構造変化や遺伝子発現の制御などに重要な役割を果たすRNAを何と呼ぶでしょうか?

① lncRNA(長鎖非コードRNA)   ② miRNA(マイクロRNA)   ③ siRNA(小鎖干渉RNA)   ④ rRNA(リボソームRNA)

2. 正解:非コードRNAの分類に関する正解

正解: ① lncRNA(長鎖非コードRNA / long non-coding RNA)

3. 解説:長さに応じたncRNAの区分と多様な機能

非コードRNA(ncRNA)は、その配列長によって「小型非コードRNA(200塩基未満:miRNAやsiRNAなど)」と「長鎖非コードRNA(200塩基以上:lncRNA)」に大きく分類されます。

[ lncRNA(長鎖非コードRNA)の特徴 ]
定義基準:タンパク質をコードしない領域から転写され、長さが200塩基以上のもの。
主な機能
  ・エピジェネティクス制御:ヒストン修飾酵素をゲノムの特定部位へ誘導(例:X染色体の不活性化を担うXist RNA)。
  ・転写制御:転写因子やRNAポリメラーゼと結合して転写を促進または抑制。
  ・分子スキャフォールド(足場):複数のタンパク質を一定の空間に集積させる足場として機能。

1. 試験のポイント: 「タンパク質に翻訳されない」「200塩基以上」というキーワードが出たら「lncRNA(長鎖非コードRNA)」が正解です。20〜25塩基程度の短い「miRNA(マイクロRNA)」や「siRNA」とのサイズ区分の違いは試験の頻出比較ポイントです。
2. バイオインフォの視点: lncRNAは一般にmRNAと比較して発現量が低く、組織特異性が高い傾向にあります。バイオインフォマティクスでは、RNA-Seqデータから `CPC2` や `FEELnc` などのソフトウェアを用いて「ORF(オープンリーディングフレーム)の有無」や「アミノ酸への翻訳ポテンシャル」を計算し、新規に検出された転写産物がmRNAかlncRNAかを予測・分類します。


4. まとめ

「200塩基以上のタンパク質を作らないRNA=lncRNA(長鎖非コードRNA)」です。システム開発で言えば、データそのものを出力する関数(mRNA)ではなく、設定ファイルの読み込みやメモリ配置、処理タスクのパイプライン化をバックグラウンドで管理・調整する「シェルスクリプトや設定オーケストレーター」のような役割ですね!


【生物学問題】進化の時間を測るものさし!「分子時計」を攻略

DNAやタンパク質の塩基・アミノ酸配列の変異が世代を超えてほぼ一定の速度で蓄積することを利用し、生物の分岐時期を推定する概念について整理しましょう。

1. 問題:配列変異による進化年代の推定手法

【 問題 】 DNAやタンパク質の塩基配列・アミノ酸配列に変異が蓄積する速度(変異速度)が、系統に関わらず時間経過とともにほぼ一定であるという説に基づき、生物種間の系統分岐の時期(進化の年代)を推定する尺度を何と呼ぶでしょうか?

① 分子時計   ② 遺伝子座   ③ 分子マーカー   ④ 系統樹構築法

2. 正解:進化生物学の用語に関する正解

正解: ① 分子時計(Molecular Clock / 分子進化の時計)

3. 解説:中立進化説と分子進化のスピード

分子時計の概念は、木村資生博士が提唱した「分子進化の中立説」(自然選択に対して有利でも不利でもない中立な変異が偶然の固定で広がるという説)が理論的支柱となっています。

[ 分子時計(Molecular Clock)のポイント ]
原理:生存に直接影響しにくいDNAの同義置換(アミノ酸が変わらない変異)や非コード領域の変異は、長い年月の中で「ほぼ一定のペース」で蓄積します。
年代測定の手法:化石などで分岐年代が判明している基準種を用いて変異速度(時計のカチカチ進む速さ)をキャリブレーション(校正)し、他の生物種同士の差異の大きさから「何百万年前に共通祖先から分かれたか」を算出します。

1. 試験のポイント: 「塩基配列やアミノ酸配列の置換速度が一定であることを利用して分岐年代を推測する=分子時計」です。分子進化の中立説とセットで問われることが多いため、関連付けて覚えておきましょう。
2. バイオインフォの視点: 分子系統樹の作成ツール(BEASTやMEGAなど)では、分子時計モデル(厳密な一定速度を仮定するStrict Clockモデルや、系統ごとに速度変化を許容するRelaxed Clockモデル)を適用し、ベイズ推論や最尤法を用いて系統樹のブランチ長から共通祖先の生存年代(TMRCA:Time to Most Recent Common Ancestor)を計算します。


4. まとめ

「配列の変異速度から系統の分岐時期を推測する=分子時計」です。システム開発で言えば、Gitリポジトリのコミットログの件数やタイムスタンプの蓄積ペースから、プロジェクトがいつ・どのブランチ(分岐)から分離して開発されてきたかの履歴・経過時間を分析するようなイメージですね!


【BI技術者認定試験対策】DNAの3つの立体構造!「B型・A型・Z型DNA」を攻略

通常生体内に存在するB型DNAをはじめ、環境や塩基配列によって変化するDNAの二重螺旋構造(B型・A型・Z型)の旋回方向と特徴を整理しましょう。

1. 問題:DNAの螺旋構造のバリエーション

【 問題 】 DNAの立体構造のうち、生体内で最も一般的な「右巻き」のB型DNA、脱水状態で現れる「右巻き」のA型DNAに対し、特定のアミノ酸・塩基交互配列などで見られる「左巻き」の立体構造を何型DNAと呼ぶでしょうか?

① Z型DNA   ② C型DNA   ③ H型DNA   ④ G型DNA

2. 正解:DNAの構造異性に関する正解

正解: ① Z型DNA(Z-DNA)

3. 解説:螺旋の向き(右巻き/左巻き)と3つの主要構造

DNA二重螺旋には、水分子の量や塩濃度、塩基配列の偏りによって主にB型・A型・Z型の3つの形態が存在します。

[ DNAの主要な3形態の対比 ]
B型DNA(右巻き):生体内の水溶液中で最も安定な標準的構造(ワトソン・クリック型)。
A型DNA(右巻き):乾燥状態(脱水条件)や、RNA-DNAハイブリッド鎖で見られる太く短い右巻き構造。
Z型DNA(左巻き):CとGが交互に並ぶ配列(GCリピート)などで見られる、糖リン酸骨格がジグザグ(Zig-zag)状になった唯一の「左巻き」構造

1. 試験のポイント: 「右巻き=B型(およびA型)」「左巻き=Z型」という螺旋の向きの組み合わせが出題の核になります。特に唯一の左巻きである「Z型DNA」は名称の由来(ジグザグ構造)とともに超頻出です。
2. バイオインフォの視点: ゲノム配列データからZ型DNA構造を形成しやすい領域(Z-DNA binding region)を予測するアルゴリズム(Z-Huntなど)が開発されています。Z型DNAは転写の非対称性やゲノムの不安定性、特定のクロマチンリモデリングや遺伝子発現制御に関与しているため、配列パターンからの構造予測解析が行われます。


4. まとめ

「標準的な右巻き=B型」、「脱水時の右巻き=A型」、「唯一の左巻き=Z型」です。システム開発で言えば、標準プロトコル(B型)をベースにしつつ、通信圧縮環境用の軽量フォーマット(A型)や、特殊な暗号化/可変長処理を施したジグザグ符号化データ(Z型)を使い分けるようなイメージですね!


【バイオインフォ実習】第5回:NCBI DBから複数配列を自動検索・一括取得!マルチFASTAの活用とSeqIO.parseによるループ統計解析

前回(第4回)は、あらかじめ判明している1つのアクセッション番号(TP53)を指定して、NCBI APIから単一データを取得する方法を解説しました。

しかし、実際のデータ解析の現場では、「特定の検索条件にヒットする複数の配列を一括取得し、まとめて統計解析や比較解析を行う」というフローが頻出します。

今回は、NCBIデータベースへのキーワード検索(esearch)から、複数データのマルチFASTA一括ダウンロード(efetch)、そしてBiopythonの SeqIO.parse() を使ったループ統計処理までを完全自動化するパイプラインを構築します。

1. マルチFASTA(Multi-FASTA)とは?

マルチFASTAとは、1つのファイル内に複数のDNA・RNA・タンパク質配列を順番に格納したフォーマットです。

>NC_013993.1 Homo sp. Altai mitochondrion, complete genome
GATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGCAT...
>NC_012920.1 Homo sapiens mitochondrion, complete genome
GATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGCAT...
>NC_011137.1 Homo sapiens neanderthalensis mitochondrion, complete genome
GATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGCAT...

単一FASTAとマルチFASTAの比較

  • 単一FASTA: 1ファイル = 1配列SeqIO.read() で読み込む)
  • マルチFASTA: 1ファイル = 複数の配列SeqIO.parse() でループ処理する)

複数種の比較解析(マルチプルアライメントや系統樹作成)や、特定の遺伝子群を一括処理する際に必須となる形式です。

2. 検索から一括取得・ループ解析までの完全コード

以下のスクリプトは、NCBIの nuccore データベースから「ヒト属のミトコンドリア完全ゲノム(RefSeq)」を検索し、ヒットした上位3件をマルチFASTA形式で自動取得して解析するコードです。

from Bio import Entrez, SeqIO
from Bio.SeqUtils import gc_fraction

# 1. 共通設定
Entrez.email = "your_email@example.com" # 自身のメールアドレスに変更してください

# 検索クエリ(ヒト属のRefSeqミトコンドリア完全ゲノム)
search_term = "Homo sapiens[Organism] AND mitochondrion[Title] AND srcdb_refseq[PROP]"
max_results = 3 # 取得件数上限

print(f"検索クエリ: {search_term}")
print("NCBI データベースを検索中...")

# 2. NCBI 検索(esearch): 条件に合う ID リストの取得
with Entrez.esearch(db="nuccore", term=search_term, retmax=max_results) as handle:
    search_results = Entrez.read(handle)

id_list = search_results["IdList"]
count = search_results["Count"]

print(f"検索ヒット件数: {count} 件")
print(f"取得対象 ID リスト (上位{len(id_list)}件): {id_list}\n")

if not id_list:
    print("該当するデータが見つかりませんでした。")
    exit()

# 3. NCBI 一括取得(efetch): 複数 ID を指定してマルチFASTAを受信
print("マルチFASTAデータを一括ダウンロード中...")

# id_list(GI番号等のリスト)をカンマ区切り文字列にして API に送る
with Entrez.efetch(db="nuccore", id=",".join(id_list), rettype="fasta", retmode="text") as handle:
    # 取得したマルチFASTAデータをローカルファイルに保存
    output_filename = "ncbi_multi_records.fasta"
    with open(output_filename, "w") as out_f:
        out_f.write(handle.read())

print(f"保存完了: {output_filename}\n")

# 4. SeqIO.parse() によるマルチFASTAのループ解析
print(f"=== {output_filename} の解析結果 ===")

# 複数配列が含まれるため SeqIO.parse を使用(イテレータ処理)
total_length = 0
record_count = 0

for record in SeqIO.parse(output_filename, "fasta"):
    record_count += 1
    seq_len = len(record.seq)
    total_length += seq_len
    
    # GC含有率の計算
    gc_val = gc_fraction(record.seq) * 100
    
    print(f"[{record_count}] ID: {record.id}")
    print(f" 概要: {record.description[:60]}...")
    print(f" 配列長: {seq_len:,} bp")
    print(f" GC率 : {gc_val:.2f}%")
    print("-" * 60)

# 全体の要約統計
avg_length = total_length / record_count if record_count > 0 else 0
print(f"解析完了: 合計 {record_count} 件 | 平均配列長: {avg_length:,.1f} bp")

3. 実行結果の確認

上記のプログラムを実行すると、アルタイ人(デニソワ人洞窟の個体)、現代人、ネアンデルタール人のミトコンドリア全ゲノムデータが自動で取得され、以下のようにパースされます。

検索クエリ: Homo sapiens[Organism] AND mitochondrion[Title] AND srcdb_refseq[PROP]
NCBI データベースを検索中...
検索ヒット件数: 3 件
取得対象 ID リスト (上位3件): ['292606408', '251831106', '196123578']

マルチFASTAデータを一括ダウンロード中...
保存完了: ncbi_multi_records.fasta

=== ncbi_multi_records.fasta の解析結果 ===
[1] ID: NC_013993.1
    概要: NC_013993.1 Homo sp. Altai mitochondrion, complete genome...
    配列長: 16,570 bp
    GC率 : 44.31%
------------------------------------------------------------
[2] ID: NC_012920.1
    概要: NC_012920.1 Homo sapiens mitochondrion, complete genome...
    配列長: 16,569 bp
    GC率 : 44.36%
------------------------------------------------------------
[3] ID: NC_011137.1
    概要: NC_011137.1 Homo sapiens neanderthalensis mitochondrion, complete...
    配列長: 16,565 bp
    GC率 : 44.39%
------------------------------------------------------------
解析完了: 合計 3 件 | 平均配列長: 16,568.0 bp

4. コードとデータ処理のポイント

一連のコードの中で、APIとBiopythonがどのように連動しているかをエンジニア目線で解説します。

  • esearch による内部ID(GI番号)の取得:
    Entrez.esearch を実行すると、search_results["IdList"]['292606408', '251831106', '196123578'] というGI番号(NCBI内部の識別ID)が動的に返されます。
  • カンマ区切りによる efetch の一括リクエスト:
    id=",".join(id_list) により、複数のGI番号を1つのリクエストとして送信しています。NCBIサーバーからまとめてマルチFASTA形式で返却されるため、通信回数を削減して効率的なダウンロードが可能です。
  • SeqIO.parse() によるメモリ効率の良いループ処理:
    SeqIO.read() は1ファイル1配列専用ですが、SeqIO.parse() は配列を1つずつ順番に読み込むイテレータ(Generator)として機能します。そのため、数百〜数千件の配列が含まれる大規模ファイルでもメモリを消費せずに高速処理できます。

5. ITエンジニア的まとめ

今回の実習のポイントは以下の通りです。

  • 自動検索と一括取得: esearch で得たIDリストをカンマ連結して efetch に送ることで、マルチFASTAの一括ダウンロードが可能。
  • イテレータ処理によるパイプライン化: 複数配列の解析には SeqIO.parse() を使用し、for ループで各レコードの塩基長やGC率を動的計算する。

次回は【バイオインフォ実習】第6回:GenBank形式ファイルからのアノテーション抽出とPandas DataFrame化に挑戦します!