macでインフォマティクス

macでインフォマティクス

HTS (NGS) 関連のインフォマティクス情報についてまとめています。

複数のSVコール結果をマージする FusorSV

 

 欠損、重複、挿入、逆位、コピー数変化、転座などの構造変化(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コーラーが正しいことを示すスコアが付けられる。これらのスコアは、新しい目に見えないデータのフィルタポイントになるように効果的に使用できる。フィルタをクリアするセグメントは、フィルタをクリアしないと一緒にマージされるか破棄される。

(以下略)

 

f:id:kazumaxneo:20180604180746j:plain

オーバービュー。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ラン時に指定する。

f:id:kazumaxneo:20180728163627j:plain

 

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]  

出力ディレクト

f:id:kazumaxneo:20181107153345j:plain

統合されたvcfが出力される。

f:id:kazumaxneo:20181107153645j:plain

 

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のサーバ  からダウンロードできます。基本的なことですが、どの解析でも必ず同じリファレンスを使うようにしてください。

 

類似ツール