欠損、重複、挿入、逆位、コピー数変化、転座などの構造変化(SV)は、ヒトの遺伝的多様性の最も重要な決定因子の1つである。 1000ゲノムプロジェクト(1000GP)などのコンソーシアムの取り組みは、典型的なゲノムが2100〜2500のSV(> 50bp)を含み、SNPの約5倍の2000万bpに渡って影響を及ぼすと最近推定している[論文より ref.1]。一塩基多型(SNP)とは対照的に、SVはゲノムの連続した大きな領域に影響を及ぼし、オープンリーディングフレームの改変、選択的スプライシングされたメッセンジャーRNAの生成、転写因子結合部位の変更、調節領域内のゲインまたはロス、およびクロマチン構造の変化が含まれる[ref.2]。さらに、SVは、10年以上にわたるゲノムワイド関連研究(GWAS)の複雑なヒト疾患および形質への"missing heritability"問題を説明することができるという仮説も立てられている[ref.3-4](わかりやすい解説)。これまでのところ、これらの研究は、主に原因変異の同定のための市販のSNP遺伝子型同定用マイクロアレイに依存しており、したがってSVはassociation testsから見逃されていた。
ヒト生物学に大きな影響を及ぼす可能性があるにもかかわらず、SVは、SV検出のための包括的で堅牢な方法が欠如しているのが主な原因で、ヒトの疾患において特徴づけられておらず、理解されていない。過去10年間に、イルミナのペアエンドシーケンシングリードを使用してSVを検出するために多くのアルゴリズムが開発されてきた(論文の追加ファイル1:図S1)。これらのアルゴリズムを慎重に分析すると、異なるアルゴリズム(read-depth [RD]、 paired-end reads [PE]、 そして split reads [SR])を使用していて、異なるタイプのSVにはそれぞれ異なる長所と短所がある。著者らが知る限り、すべてのタイプのSVおよびヒトゲノムのすべてのサイズ範囲を特定するアルゴリズムには至っていない。この問題を克服するために、より最近では、特定のゲノムコンソーシアム研究では、単一のパイプラインに複数のSVコールアルゴリズムを組み合わせて、大半がオーバーラップするようなコールからなる統一SVコールセットを生成している[ref.1,5]。単一のアルゴリズムよりも高品質な統一されたSVコールセットを得るため、コンセンサスベースの戦略、または他の戦略を使用する、複数のアルゴリズムのSVコールを組み合わせる方法[ref.6,7](metaSV, LUMPY)(metaSV紹介)が以前開発されている。しかしながら、複数のアルゴリズムからのSVコールを組み合わせる最適化された方法は依然として不明である。単純にSVの集合体を取ると、高い偽陽性率が得られ、一方、重複SVをとることは、偽陰性率が高くなる。この現象は、複数のアルゴリズムからのコールセットをインテリジェントに結合して、ヒトゲノム中のSVを包括的に同定することができるSV検出パイプラインを開発する必要性を強調している。現在、疾患研究および臨床での全ゲノムシーケンシング(WGS)ベースのSV検出の普及を阻むもう一つの課題は、rawシーケンシングデータセットを処理し、多重検出を用いてSVを包括的に予測する堅牢なエンドツーエンドなパイプラインメソッドが欠如していることである。解決策として、著者らは、8つの一般的なSVコールメソッドの集合をマージする計算インフラストラクチャFusorSVを紹介する。 FusorSVは、SVコーラー1グループの成績を特定の真の集合に対して特徴づけるため、データマイニング手法を採用している。目的は、パフォーマンスthresholdを満たすコーラーの可能な組み合わせをすべて選択することである。
ツール管理の問題を軽減するために、アライメント、クオリティ管理、8つの最先端のSVコールアルゴリズム(BreakDancer [ref.8]、BreakSeq2 [ref.9]、cnMOPS [ref.10]、CNVnator [ref.11]、DELLY [ref.12]、GenomeSTRiP [redf.13,14] 1、Hydra [ref.15]およびLUMPY [ref.7])を統合するSVEを発表する。 SVEは、FASTQ、アライメントBAM、またはVCF(Variant Call Format)などの任意のレベルのデータ入力に使用でき、統一されたVCFをその出力として生成する(論文 Additionalファイル1:図S2)。次に、著者らは1000GPの27のディープカバレッジサンプルにSVEを適用した(図1)[ref.1、16、17]。
FusorSVは、異なるアルゴリズムからのSVコールをインテリジェントに受け取り、偽陽性を最小限に抑え、それらを組み合わせ発見を最大限にする独自のデータマイニング方法を採用している。 FusorSVは、異なるSVコールアルゴリズムが真のセットと比較してどの程度性能が優れているかを学習し、その情報を決定プロセスに適用する。アルゴリズム間のパフォーマンス情報と類似性を使用して、SVコーラーの最小セットを相互排除の概念を使用して選択することができる。これにより、コンセンサス(例えば二つ以上のコーラーが検出している)または他のヒューリスティックに基づいてSVコールをマージするアプローチよりも正確で包括的である。
著者らは、特定のSVコーラーからの特定のSVコールと genomic coordinate spaceの塩基対(つまりポジション)との関連をマークするために、用語「projection」を使用する(論文図2)。 2つの異なるコーラーからのコールが重複していた場合、この情報はコーラー識別子の形でprojectionにマークされる。これにより、coordinate space 内に連続したセグメントが作成され、これらのセグメントには、SVコーラーが正しいことを示すスコアが付けられる。これらのスコアは、新しい目に見えないデータのフィルタポイントになるように効果的に使用できる。フィルタをクリアするセグメントは、フィルタをクリアしないと一緒にマージされるか破棄される。
(以下略)
オーバービュー。Githubより転載。
FusorSVに関するツイート
インストール
dockerを使いmac10.12でテストした。
依存
- 2.7.6 < python < 2.7.12
- cython 0.23.4+
- 0.9.0 < pysam < 0.9.2
- numpy 1.10.0+
Optional
- bx-python 0.5.0 (optional for crossmap liftover)
- mygene 3.0.0 (optional for gene annotations)
本体 Github
ここではdockerイメージをpullしてテストする。
docker pull timothyjamesbecker/fusorsv
動作確認
>docker run --rm -it timothyjamesbecker/fusorsv FusorSV.py --test_libs
$ docker run --rm -i -t -v /Users/user/data/:/data timothyjamesbecker/fusorsv FusorSV.py --test_libs
fusion_utils.so and bindings are functional!
version=0.1.2
——
ヘルプ
>docker run --rm -it timothyjamesbecker/fusorsv FusorSV.py -h
$ docker run --rm -i -t timothyjamesbecker/fusorsv FusorSV.py -h
usage: FusorSV.py [-h] [-r REF_PATH] [-i IN_DIR] [-a CTG_DIR] [-c CHROMS]
[-o OUT_DIR] [-m SV_MASK] [-f APPLY_FUSION_MODEL_PATH]
[-p CPUS] [--k_fold K_FOLD] [--n_k N_K] [--bins BINS]
[--obs OBS] [--min_g MIN_G] [--over_m OVER_M]
[--pre_cluster] [--smoothing] [--detail]
[-S STAGE_MAP_JSON_FILE] [-E STAGE_EXCLUDE_LIST]
[-F SAMPLE_FOLDER_EXCLUDE] [-M CLUSTER_OVERLAP]
[-L LIFT_OVER] [-C] [-T] [--no_merge] [--merge]
FusorSV - A Data Fusion Method for Multi Source (VCF4.0+) Structural Variation Analysis
Timothy James Becker, PhD candidate, UCONN 05/25/2016-06/19/2018
version=0.1.2
optional arguments:
-h, --help show this help message and exit
-r REF_PATH, --ref_path REF_PATH
reference fasta needed to write vcf or g1k output files [None]
-i IN_DIR, --in_dir IN_DIR
input directory with sample named folders and caller id tagged vcf files
[EX] /path/sample/sample_S4.vcf implies that there are calls of id 4 for sample [None]
-a CTG_DIR, --ctg_dir CTG_DIR
assembly contig directory [None]
-c CHROMS, --chroms CHROMS
comma seperated chrom listing [1,2,...22,X,Y,MT]
-o OUT_DIR, --out_dir OUT_DIR
outputdirectory to save ...bam.bai/ into [None]
-m SV_MASK, --sv_mask SV_MASK
user supplied svmask file in BED3 format [None]
-f APPLY_FUSION_MODEL_PATH, --apply_fusion_model_path APPLY_FUSION_MODEL_PATH
apply a fusion model *.pickle.gz
-p CPUS, --cpus CPUS number of cores to use in || [1]
--k_fold K_FOLD k_fold cross validation, k=0 implies no validation [0]
--n_k N_K number of times to do k_fold [1]
--bins BINS number of requested discriminating features [14]
--obs OBS number of observations needed per bin [1000]
--min_g MIN_G minimum group expectation contribution [0.0]
--over_m OVER_M overlap allowed before removal in merge step [0.0]
--pre_cluster cluster the calls for all samples first [False]
--smoothing brkpt_smoothing algo [False]
--detail provide a more detailed output [False]
-S STAGE_MAP_JSON_FILE, --stage_map_json_file STAGE_MAP_JSON_FILE
1:1 mapping of caller ids to stage names (and back):
stage_map_json_file -> {0:'True',-1:'fusorSV',1:'MetaSV',4:'BreakDancer',9:'cnMOPS',10:'CNVnator',
11:'Delly',13:'GATK',14:'GenomeSTRiP',17:'Hydra',18:'Lumpy',35:'BreakSeq',
36:'Pindel',38:'Tigra'} [../data/stage_map.json]
-E STAGE_EXCLUDE_LIST, --stage_exclude_list STAGE_EXCLUDE_LIST
comma seperated id list to exclude from test/training [1,13,36]
-F SAMPLE_FOLDER_EXCLUDE, --sample_folder_exclude SAMPLE_FOLDER_EXCLUDE
comma seperated folder names to exclude [None]
-M CLUSTER_OVERLAP, --cluster_overlap CLUSTER_OVERLAP
reciprocal overlap needed for clustering [0.5]
-L LIFT_OVER, --lift_over LIFT_OVER
liftover chain file path or default [./data/hg19ToHg38.over.chain.gz]
-C, --clean keep all kfold run data and print extra details [False]
-T, --test_libs test the installation libraries and print version [False]
--no_merge set to not merge output for large sample applications [False]
--merge perform a merge and exit for large sample applications [False]
——
テストラン
最低限、ランにはVCFファイルのディレクトリのパスと出力ディレクトリのパスを与える必要がある。
FusorSV.py -i meta_caller_RC1/HG00096/ -o results/
テストデータで動作を確認する。テスト データのダウンロードと解凍。
wget https://github.com/timothyjamesbecker/FusorSV/releases/download/0.1.0-beta/meta_caller_RC1.tar.gz
tar -xzf meta_caller_RC1.tar.gz
テストデータには、検体分のディレクトリが含まれ、そのそれぞれに各SVコーラーの解析結果vcfファイル(ごく一部だけ)が含まれる構造になっている。このディレクトリをFusorSVラン時に指定する。
FusorSVを実行する。データはホストの/data/に全て置いてあるものとする(*1)。
docker run --rm -i -t -v $PWD:/data timothyjamesbecker/fusorsv \
FusorSV.py
-r /data/human_g1k_v37_decoy.fa
-m /data/human_g1k_v37_decoy.bed \
-i /data/meta_caller_RC1 \
-f DEFAULT \
-o /data/test/ -M 0.5 \
-L DEFAULT -p 4
-
-i input directory with sample named folders and caller id
-
-m user supplied svmask file in BED3 format [None]
-
-M reciprocal overlap needed for clustering [0.5]
-
-L liftover chain file path or default
- -p CPUS, --cpus CPUS number of cores to use in || [1]
出力ディレクトリ
統合されたvcfが出力される。
fusionモデルと、マージの方法についてはGithubでも説明されています。論文と合わせて確認して下さい。アライメントとSVコールを行うSVEは、別途紹介します。
2018 11/11 SVE追記
引用
FusorSV: an algorithm for optimally combining data from multiple structural variation detection methods
Becker T, Lee WP, Leone J, Zhu Q1, Zhang C, Liu S, Sargent J, Shanker K, Mil-Homens A, Cerveira E, Ryan M, Cha J, Navarro FCP, Galeev T, Gerstein M, Mills RE, Shin DG, Lee C, Malhotra A
Genome Biol. 2018 Mar 20;19(1):38.
*1
FusorSVはdecoy配列つきヒトリファレンスを使っています。Heng Liらが作ったdecoy配列つきヒトゲノム配列は、不完全なヒトゲノム配列に起因する誤ったリードのマッピングを排除できるデコイ配列つきのリファレンスゲノムです。より正確な情報はこの質問スレッドや(Biostars)、こちらの記事をどうぞ(リンク)。デコイつきリファレンスは1000 genomeのサーバやGATKのサーバ からダウンロードできます。基本的なことですが、どの解析でも必ず同じリファレンスを使うようにしてください。
類似ツール