mcpField
S
snpeff-variant-annotation

snpeff-variant-annotation

github.com/jaechang-hitsデータ・データベース38439 回インストール1 週間前に更新
リポジトリ

snpeff-variant-annotation について

SnpEff と SnpSift で VCF の変異を注釈・フィルタリングするコマンドラインスキルです。機能的影響の確認、外部データベースによる補足、構造化データの出力に使えます。

主な機能

  1. 01VCF の機能的影響の注釈
  2. 02影響度に基づく変異フィルタリング
  3. 03ClinVar と dbSNP による補足
  4. 04タブ区切りフィールドの抽出
  5. 05Python による解析

活用シーン

  1. 01希少疾患やがんの候補変異の優先順位付け
  2. 02臨床分類と rsID の追加
  3. 03新生変異候補の特定
  4. 04統計解析用の注釈フィールド出力

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jaechang-hits/sciagent-skills --skill snpeff-variant-annotation

インストール後、Claude Code で/snpeff-variant-annotationを入力して読み込まれたか確認します。

詳細

SnpEff + SnpSift — バリアントのアノテーションとフィルタリング

概要

SnpEff は、機能的影響を予測して VCF ファイル内のバリアントにアノテーションを付与します。予測される情報には、影響度(HIGH、MODERATE、LOW、MODIFIER)、影響を受ける遺伝子と転写産物、アミノ酸置換、HGVS 表記が含まれます。SnpSift は、アノテーション済み VCF のフィルタリング、ソート、ClinVar や dbSNP などの外部データベースによる情報拡充を行う補助ツールです。両ツールを組み合わせることで、生のバリアントコールから、生物学的に解釈可能なフィルタリング済みバリアントセットを作成する高速で完結したパイプラインを構築できます。どちらも Java ベースで、コマンドラインまたは Python のサブプロセスから実行できます。事前構築済みのゲノムデータベース(hg38、GRCh37、mm10、その他 100 種以上)は、単一のコマンドでダウンロードできます。

使用する場面

  • GATK、DeepVariant、bcftools、その他のバリアントコーラーで作成した VCF ファイルに、手動レビューや後続のフィルタリングに先立って、予測される遺伝子レベルの機能的影響をアノテーションする場合
  • まれな疾患やがん遺伝子パネルの解析で、HIGH 影響度の終止コドン獲得、フレームシフト、スプライス部位バリアントに絞り込んで、臨床的に重要なバリアントを優先順位付けする場合
  • 研究間の比較や臨床レポート作成のため、バリアントセットに ClinVar の病原性分類と dbSNP の rsID を追加する場合
  • アノテーション済み VCF から構造化されたタブ区切りのフィールド(遺伝子、タンパク質変化、AF、ClinSig)を抽出し、統計解析用の pandas DataFrame に変換する場合
  • アレル頻度のしきい値、影響度フィルター、親の VCF による除外を組み合わせて、トリオ解析で候補となる de novo バリアントを特定する場合
  • アノテーション済みバリアントテーブルから影響の種類や影響度の棒グラフを描画するには、omics-plotting SKILL を使用してください
  • 1 回の実行で複数のデータベース(gnomAD、CADD、SpliceAI)から包括的にアノテーションする必要がある場合は、代わりに ANNOVAR を使用してください
  • REST API アクセスや VEP 固有のプラグイン(CADD、LOFTEE、SpliceRegion)が必要な場合は、代わりに Ensembl VEP を使用してください

前提条件

  • Java:Java 11 以降(SnpEff 5.x で必要)
  • SnpEff JAR:SnpEff のリリースページまたは conda/bioconda からダウンロードします
  • Python パッケージ(任意):Python 側での解析と可視化には cyvcf2、pandas、matplotlib、seaborn
  • 参照ゲノムデータベース:アセンブリごとに 1 回ダウンロードします(例:hg38、GRCh37、mm10)

インストール前に確認してください:現在の環境(例:pixi/conda 環境内)ですでにツールを利用できる場合があります。まず command -v snpEff を実行し、パスが返された場合は、以下のインストールコマンドを省略してください。pixi プロジェクト内で実行する場合は、snpEff 単体ではなく pixi run snpEff でツールを起動してください。

# Download SnpEff JAR
wget https://snpeff.blob.core.windows.net/versions/snpEff_latest_core.zip
unzip snpEff_latest_core.zip
# JAR is at snpEff/snpEff.jar and snpEff/SnpSift.jar

# Or via conda (recommended for reproducibility)
conda install -c bioconda snpeff

# Verify
java -jar snpEff/snpEff.jar -version
# SnpEff 5.2a (build 2024-02-06)

# Install Python packages for downstream parsing
pip install cyvcf2 pandas matplotlib seaborn

事前確認

解析コードを書く前に、以下の点をユーザーと確認してください。

decisions:
  - id: D1
    param: annotationDatabase
    kind: required
    source: upstream
    ask: "Which genome database should annotate these variants, and does its assembly match the VCF coordinates?"
    default: "the assembly the variants were called on"

  - id: D2
    param: transcriptScope
    kind: required
    source: user
    ask: "Report the consequence on every transcript of a gene, or only on the canonical one?"
    default: "all transcripts - the worst consequence across them is what most filters use"

  - id: D3
    param: filterExpression
    kind: required
    source: user
    ask: "Which annotated variants should survive into the final table - by predicted impact, population frequency, or clinical significance?"
    default: null

  - id: D4
    param: frequencySkip
    kind: optional_conditional
    source: user
    ask: "Skip annotating variants already common in the population?"
    default: "annotate everything"

  - id: D5
    param: summaryReport
    kind: optional
    source: user
    ask: "Generate the HTML summary alongside the annotated VCF?"
    default: "generated"

  - id: D6
    param: javaHeap
    kind: never_ask
    source: data
    reason: "Prevents out-of-memory on large VCFs; does not change annotations"
    default: "4-8 GB"

D3 には安全なデフォルト設定がありません。フィルターそのものが成果物だからです。まれな疾患に関する問いでは影響度の高い希少バリアントを残しますが、薬理ゲノム学に関する問いでは、影響度にかかわらず既知の臨床アノテーションを残します。他の人のフィルターをそのまま適用すると、気付かないうちにその人の問いに答えることになります。

クイックスタート

# 1. Download the hg38 genome database (one-time setup, ~1 GB)
java -jar snpEff/snpEff.jar download hg38

# 2. Annotate variants
java -jar snpEff/snpEff.jar \
    -v hg38 \
    input.vcf.gz \
    > annotated.vcf

# 3. Filter to HIGH-impact variants
java -jar snpEff/SnpSift.jar filter \
    "ANN[*].IMPACT = 'HIGH'" \
    annotated.vcf \
    > high_impact.vcf

echo "Done. Check snpEff_summary.html and snpEff_genes.txt for QC stats."

ワークフロー

ステップ 1:SnpEff をインストールし、ゲノムデータベースをダウンロードする

対象アセンブリ用の事前構築済みゲノムデータベースをダウンロードして確認します。データベースには Ensembl または UCSC の転写産物モデルが含まれており、SnpEff のローカルキャッシュディレクトリ(~/.snpEff/data/ または snpEff/data/)に構築されます。

# List all available databases (grep for your assembly)
java -jar snpEff/snpEff.jar databases | grep -i "GRCh38\|hg38"

# Download hg38 (Homo sapiens, GRCh38)
java -jar snpEff/snpEff.jar download hg38

# Download GRCh37 (older assemblies still widely used in clinical pipelines)
java -jar snpEff/snpEff.jar download GRCh37.75

# Download mouse mm10
java -jar snpEff/snpEff.jar download mm10

# List installed databases
ls ~/.snpEff/data/
ステップ 2:機能的影響を VCF にアノテーションする

SnpEff のアノテーションを実行して、各バリアントに ANN INFO フィールドを追加します。ANN フィールドには、各転写産物について、パイプ区切りのアノテーションが格納されます:Allele|Effect|Impact|Gene|GeneID|Feature|FeatureID|BioType|Rank|HGVS.c|HGVS.p|cDNA_pos|CDS_pos|Protein_pos|Distance|Errors。

# Annotate a gzipped VCF (outputs to stdout, pipe or redirect)
java -Xmx8g -jar snpEff/snpEff.jar \
    -v \
    -stats snpeff_summary.html \
    hg38 \
    input.vcf.gz \
    > annotated.vcf

# Compress and index the output for downstream tools
bgzip annotated.vcf
tabix -p vcf annotated.vcf.gz

echo "Annotated variants in annotated.vcf.gz"
echo "QC report: snpeff_summary.html"
echo "Gene table: snpEff_genes.txt"
ステップ 3:SnpSift で HIGH 影響度のバリアントをフィルタリングする

SnpSift の filter は、INFO フィールドと FORMAT フィールドに対するブール式を評価します。ANN[*] の構文では、各バリアントのすべての転写産物アノテーションを反復処理します。条件に一致する転写産物が 1 つでもあれば、そのバリアントが対象となります。

# Filter for HIGH-impact variants only (stop-gain, frameshift, splice-site)
java -jar snpEff/SnpSift.jar filter \
    "ANN[*].IMPACT = 'HIGH'" \
    annotated.vcf.gz \
    > high_impact.vcf

# Filter HIGH or MODERATE impact and allele frequency < 1%
# (requires AF in INFO field, e.g., from GATK or gnomAD annotation)
java -jar snpEff/SnpSift.jar filter \
    "(ANN[*].IMPACT = 'HIGH' | ANN[*].IMPACT = 'MODERATE') & (AF < 0.01)" \
    annotated.vcf.gz \
    > rare_functional.vcf

# Count filtered variants
grep -v "^#" high_impact.vcf | wc -l
ステップ 4:ClinVar と dbSNP の注釈を追加する

SnpSift の annotate は、染色体と位置を照合することで、参照 VCF(ClinVar、dbSNP)の INFO フィールドを対象の VCF に転送します。実行前に NCBI FTP から ClinVar と dbSNP の VCF をダウンロードしてください。

# Download reference databases (one-time setup)
# ClinVar (GRCh38)
wget https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/clinvar.vcf.gz
wget https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/clinvar.vcf.gz.tbi

# dbSNP (GRCh38, b156 or later)
wget https://ftp.ncbi.nlm.nih.gov/snp/latest_release/VCF/GCF_000001405.40.gz
wget https://ftp.ncbi.nlm.nih.gov/snp/latest_release/VCF/GCF_000001405.40.gz.tbi

# Annotate with ClinVar CLNSIG and CLNDN fields
java -jar snpEff/SnpSift.jar annotate \
    -info CLNSIG,CLNDN,CLNREVSTAT \
    clinvar.vcf.gz \
    annotated.vcf.gz \
    > annotated_clinvar.vcf

# Annotate with dbSNP rsIDs (adds RS field to INFO)
java -jar snpEff/SnpSift.jar annotate \
    GCF_000001405.40.gz \
    annotated_clinvar.vcf \
    > annotated_full.vcf

echo "ClinVar + dbSNP annotations added to annotated_full.vcf"
ステップ 5:フィールドをタブ区切り出力に抽出する

SnpSift の extractFields は、VCF の注釈をフラットなテーブルに変換します。最初の(最も重大な)転写産物注釈を取得するには ANN[0] を使用し、すべての転写産物を展開するには ANN[*] を使用します。

# Extract key fields: CHROM, POS, REF, ALT, impact, gene, protein change, AF, ClinVar sig
java -jar snpEff/SnpSift.jar extractFields \
    -s "," \
    -e "." \
    annotated_full.vcf \
    CHROM POS REF ALT \
    "ANN[0].GENE" \
    "ANN[0].EFFECT" \
    "ANN[0].IMPACT" \
    "ANN[0].HGVS_P" \
    "ANN[0].HGVS_C" \
    "ANN[0].FEATUREID" \
    AF \
    CLNSIG \
    CLNDN \
    > variants_table.tsv

# Preview
head -3 variants_table.tsv
# CHROM  POS   REF  ALT  ANN[0].GENE  ANN[0].EFFECT            ANN[0].IMPACT  ...
# chr1   69511 A    G    OR4F5        synonymous_variant        LOW            ...
# chr1   925952 G   A    SAMD11       missense_variant          MODERATE       ...
ステップ 6:Python で cyvcf2 を使用して注釈付き VCF を解析する

Python でプログラムから VCF を解析するには、cyvcf2(または PyVCF2)を使用します。cyvcf2 は htslib をラップしており、純粋な Python のパーサーより大幅に高速です。

import re
import pandas as pd
from cyvcf2 import VCF

records = []

for variant in VCF("annotated_full.vcf.gz"):
    ann_field = variant.INFO.get("ANN")
    if ann_field is None:
        continue

    # Take the first (most severe) annotation transcript
    first_ann = ann_field.split(",")[0].split("|")
    # ANN field columns (0-indexed): allele, effect, impact, gene, gene_id,
    # feature_type, feature_id, biotype, rank, hgvs_c, hgvs_p, ...
    effect   = first_ann[1] if len(first_ann) > 1 else "."
    impact   = first_ann[2] if len(first_ann) > 2 else "."
    gene     = first_ann[3] if len(first_ann) > 3 else "."
    hgvs_p   = first_ann[10] if len(first_ann) > 10 else "."

    records.append({
        "chrom":   variant.CHROM,
        "pos":     variant.POS,
        "ref":     variant.REF,
        "alt":     ",".join(variant.ALT),
        "gene":    gene,
        "effect":  effect,
        "impact":  impact,
        "hgvs_p":  hgvs_p,
        "af":      variant.INFO.get("AF", None),
        "clnsig":  variant.INFO.get("CLNSIG", "."),
    })

df = pd.DataFrame(records)
print(f"Total variants: {len(df)}")
print(df["impact"].value_counts())
# HIGH        342
# MODERATE   4218
# LOW        8903
# MODIFIER  51204
ステップ 7:要約統計と影響の可視化

バリアントの影響を影響度別に要約し、エクスポートしたテーブルに対して skills/data-visualization/omics-plotting/SKILL.md を読み、「Box / Violin / Bar」のレシピに従ってください(→ figures/variant_consequence_summary.png)。

# Consequence counts by impact (df from Step 6)
impact_order = ["HIGH", "MODERATE", "LOW", "MODIFIER"]
impact_counts = df["impact"].value_counts().reindex(impact_order, fill_value=0)

# Top 15 effects within HIGH and MODERATE
top_effects = (
    df[df["impact"].isin(["HIGH", "MODERATE"])]
    ["effect"]
    .str.replace("_", " ")
    .value_counts()
    .head(15)
)

# Save summary tables; render bar charts with the omics-plotting SKILL (`skills/data-visualization/omics-plotting/SKILL.md`) "Box / Violin / Bar" recipe.
impact_counts.rename("count").to_csv("variant_impact_counts.csv")
top_effects.rename("count").to_csv("variant_top_effects.csv")
print(impact_counts.to_string())

# HIGH-impact gene table
high_genes = (
    df[df["impact"] == "HIGH"]["gene"]
    .value_counts()
    .head(20)
    .rename("n_high_variants")
)
print("\nTop genes with HIGH-impact variants:")
print(high_genes.to_string())

主要なパラメーター

パラメーターデフォルト範囲/オプション効果
-Xmx (JVM heap)JVM のデフォルト(約 256 MB)4g~32g大規模な WGS VCF での OutOfMemoryError を防ぎます。実行ごとに約 4~8 GB を設定します
-v (verbose)オフフラグ染色体ごとの進捗状況と集計件数を stderr に出力します
-statssnpEff_summary.html任意の .html パス影響度の円グラフと遺伝子テーブルを含む、インタラクティブな QC サマリーを書き込みます
-noStatsオフフラグHTML レポートの生成を無効にします(バッチ実行が高速になります)
-canonオフフラグ遺伝子ごとに標準転写産物のみを注釈します(ANN フィールドのサイズを縮小します)
-maxAF無効0.0~1.0集団 AF がしきい値を超えるバリアントの注釈をスキップします(データベースに gnomAD が必要です)
filter expression (SnpSift)—ブール式ANN[*].IMPACT = 'HIGH'、AF < 0.001 & DP > 10、CLNSIG has 'Pathogenic'
-s separator (extractFields)タブ任意の文字列出力テーブルのフィールド区切り文字です。CSV には "," を使用します
-e empty value (extractFields)空任意の文字列欠損フィールドのプレースホルダーです。VCF の慣例に合わせるには "." を使用します

主要な概念

ANN フィールドの構造

各バリアントの ANN INFO フィールドには、予測された転写産物の影響ごとに 1 つの注釈が含まれ、カンマで区切られています。各注釈は、パイプで区切られた 16 個のフィールドからなる文字列です。

ANN=T|missense_variant|MODERATE|BRCA1|ENSG00000012048|transcript|ENST00000357654|protein_coding|12/23|c.1234A>T|p.Lys412Met|1234|1234|412|.|

最初の注釈(インデックス 0)が最も重大な影響です。バリアントが複数の転写産物または遺伝子に影響する場合、複数の注釈が生成されます。

影響度レベル
影響度バリアントの種類一般的な優先度
HIGH終止コドン獲得、フレームシフト、スプライスドナー/アクセプター、開始コドン喪失疾患候補。必ず確認してください
MODERATEミスセンス、インフレーム挿入欠失、スプライス領域病原性は保存性とドメインの状況によって異なります
LOW同義置換、終止コドン保持、開始コドン保持原因となることはまれです。対照として有用です
MODIFIERイントロン、遺伝子間、UTR、下流背景情報です。ほとんどの解析ではフィルターで除外します
ANN の HGVS 表記

SnpEff は cDNA(HGVS.c、例:c.1234A>T)とタンパク質(HGVS.p、例:p.Lys412Met)の両方の表記を提供します。非コードバリアントでは HGVS フィールドは空(.)です。FEATUREID フィールドには Ensembl または RefSeq の転写産物 ID が含まれ、データベース間での検索に使用できます。

SnpSift フィルター構文

SnpSift のフィルター式では、比較演算子(=、!=、<、>)、論理演算子(&、|、!)、部分文字列の照合に使う has 演算子を使用できます。任意の注釈転写産物との照合には ANN[*]、最初の注釈のみとの照合には ANN[0] を使用します。

# Compound filter: rare + damaging + not in ClinVar benign
(AF < 0.001) & (ANN[*].IMPACT = 'HIGH' | ANN[*].IMPACT = 'MODERATE') & !(CLNSIG has 'Benign')

よく使うレシピ

レシピ:デノボ候補をフィルターする(トリオ解析)

両親には存在せず、発端者に見られる、頻度が低く機能的影響の大きいバリアントを特定します。アレル頻度のフィルタリング、影響度によるフィルタリング、SnpSift による VCF の差分抽出を組み合わせます。

# Step 1: Annotate proband VCF
java -jar snpEff/snpEff.jar -v hg38 proband.vcf.gz > proband_ann.vcf

# Step 2: Filter rare HIGH/MODERATE variants not in either parent
# Requires proband, mother, and father VCFs to be jointly genotyped or
# use SnpSift filter on a multi-sample VCF
java -jar snpEff/SnpSift.jar filter \
    "(ANN[*].IMPACT = 'HIGH' | ANN[*].IMPACT = 'MODERATE') \
     & (AF < 0.001 | AF = '.') \
     & (GEN[proband].GT != './.') \
     & (GEN[mother].GT = '0/0' | GEN[mother].GT = '0|0') \
     & (GEN[father].GT = '0/0' | GEN[father].GT = '0|0')" \
    proband_ann.vcf \
    > denovo_candidates.vcf

# Step 3: Extract to table for review
java -jar snpEff/SnpSift.jar extractFields \
    denovo_candidates.vcf \
    CHROM POS REF ALT "ANN[0].GENE" "ANN[0].EFFECT" "ANN[0].IMPACT" \
    "ANN[0].HGVS_P" AF CLNSIG \
    > denovo_candidates.tsv

echo "De novo candidates: $(grep -v '^CHROM' denovo_candidates.tsv | wc -l)"
レシピ:タンパク質を変化させるバリアントをpandas DataFrameに抽出する

SnpSift extractFields の出力を使用して、注釈付きVCFをpandasに直接読み込み、後続の統計解析やML解析に利用します。

import subprocess
import io
import pandas as pd

VCF_IN   = "annotated_full.vcf.gz"
SNPSIFT  = "snpEff/SnpSift.jar"

# Run SnpSift extractFields via subprocess and capture stdout
cmd = [
    "java", "-jar", SNPSIFT, "extractFields",
    "-s", ",", "-e", ".",
    VCF_IN,
    "CHROM", "POS", "REF", "ALT",
    "ANN[0].GENE", "ANN[0].EFFECT", "ANN[0].IMPACT",
    "ANN[0].HGVS_P", "ANN[0].HGVS_C", "ANN[0].FEATUREID",
    "AF", "DP", "CLNSIG", "CLNDN",
]
result = subprocess.run(cmd, capture_output=True, text=True, check=True)
df = pd.read_csv(io.StringIO(result.stdout), sep="\t")
df.columns = [c.replace("ANN[0].", "") for c in df.columns]  # clean column names

# Keep protein-changing variants only
protein_changing = df[df["IMPACT"].isin(["HIGH", "MODERATE"])].copy()
protein_changing["AF"] = pd.to_numeric(protein_changing["AF"], errors="coerce")
protein_changing["DP"] = pd.to_numeric(protein_changing["DP"], errors="coerce")

print(f"Protein-changing variants: {len(protein_changing)}")
print(protein_changing[["GENE", "EFFECT", "IMPACT", "HGVS_P", "AF"]].head(10).to_string(index=False))
レシピ:カスタムゲノムデータベースを構築する

標準外の生物やカスタムアセンブリを扱う場合は、FASTAファイルとGTFファイルからSnpEffデータベースを構築します。

# 1. Set up directory structure under SnpEff's data directory
GENOME_NAME="my_organism"
mkdir -p snpEff/data/${GENOME_NAME}
cp my_genome.fa snpEff/data/${GENOME_NAME}/sequences.fa
cp my_annotation.gtf snpEff/data/${GENOME_NAME}/genes.gtf

# 2. Add genome entry to snpEff.config
echo "${GENOME_NAME}.genome : My Organism" >> snpEff/snpEff.config

# 3. Build the database
java -jar snpEff/snpEff.jar build \
    -gtf22 \
    -v \
    ${GENOME_NAME}

# 4. Verify
java -jar snpEff/snpEff.jar dump ${GENOME_NAME} | head -20
echo "Custom database built for ${GENOME_NAME}"

期待される出力

ファイル形式内容
annotated.vcf.gzbgzip圧縮VCFANN INFOフィールドを含む元のバリアント。バリアントごとに1レコード
snpEff_summary.htmlHTMLインタラクティブなQCレポート:結果の円グラフ、上位遺伝子、トランジション/トランスバージョン比
snpEff_genes.txtTSV遺伝子ごとの結果タイプ別バリアント数
high_impact.vcfVCFANN[*].IMPACT = 'HIGH' を満たすバリアントのサブセット
annotated_clinvar.vcfVCFClinVarの CLNSIG、CLNDN、CLNREVSTAT を追加した注釈付きVCF
variants_table.tsvTSV抽出フィールドのフラットテーブル。バリアントごとに1行(最初の転写産物)
variant_consequence_summary.pngPNG影響度レベルと上位の結果タイプの棒グラフ

トラブルシューティング

問題原因解決策
注釈処理中に OutOfMemoryError が発生するWGS VCFに対してデフォルトのJVMヒープが小さすぎる-jar の前に -Xmx8g(または -Xmx16g)を追加します:java -Xmx8g -jar snpEff.jar ...
すべてのバリアントで ERROR_CHROMOSOME_NOT_FOUND が発生する染色体名が一致していない(例:chr1 と 1)-noCheckChr フラグを渡すか、bcftools annotate --rename-chrs を使用してVCF内のコンティグ名を変更します
Database not found エラーが発生するゲノムデータベースがダウンロードされていないjava -jar snpEff.jar download hg38 を実行し、snpEff/data/ ディレクトリが存在することを確認します
すべてのバリアントで ANN フィールドが空になるVCFのリファレンスとゲノムデータベースのバージョンが異なるVCFでデータベースと同じアセンブリが使われていることを確認します(例:hg38とGRCh38 — Ensemblのビルドには GRCh38.86 を使用します)
SnpSiftフィルターでバリアントが1つも返されないフィルター式の構文エラー、またはフィールド名が誤っている小さなVCFで式をテストし、ANN[*].IMPACT と ANN[0].IMPACT のどちらが正しいか確認します。式は引用符で囲みます
snpSift annotate 後に CLNSIG フィールドがないClinVar VCFにインデックスがない、またはコンティグ名が一致していない注釈付けの前に tabix -p vcf clinvar.vcf.gz を実行し、染色体名が一致することを確認します
extractFields の出力にHGVS_P列がないバリアントが非コード領域にある、またはUTR/イントロンに影響する-e "." フラグを使って空のフィールドを埋めるか、先にコード領域のバリアントに絞り込みます
ANN フィールドが非常に大きい(転写産物が数千個)多数の転写産物が重複する領域にバリアントがある-canon フラグを追加して標準転写産物のみに注釈を付けるか、後続のフィルターで ANN[0] を使用します

参考資料

  • SnpEff Documentation — 使用方法、ANNフィールドの仕様、フィルター構文に関する包括的なガイド
  • SnpEff GitHub Repository — ソースコード、課題トラッカー、リリースノート
  • Cingolani P, et al. (2012) "A program for annotating and predicting the effects of single nucleotide polymorphisms, SnpEff: SNPs in the genome of Drosophila melanogaster strain w1118." Fly 6(2):80–92. doi:10.4161/fly.19695
  • ClinVar VCF FTP — アセンブリ別のClinVar VCFファイル
  • cyvcf2 Documentation — ステップ6で使用するPython用VCF解析ライブラリ

コメント