macでインフォマティクス

macでインフォマティクス

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

HIVディープシーケンシングのマッピングとバリアントコールパイプライン hivmmer

 現在、いくつかの次世代シーケンシングマシンが病原体およびウイルスの研究に使用されている(Chabria et al、2014; Quin ones-Mateu et al、2014)。過去20年間に開発された多くの次世代シーケンシングプラットフォームおよびアプローチのうち、イルミナのシークエンシング技術は、主に歩留まりの向上とコストの削減により市場を支配してきた(Goodwin et al、2016)。イルミナ技術を用いたHIVサンプルのディープシーケンシングは、ウィルスの疫学、臨床的遺伝子型判定、抗レトロウィルス薬耐性の研究で頻繁に使用されている。例えば、ディープシーケンシングは、薬物耐性変異のより敏感なアッセイを提供し得る(Brumme and Poon、2016)。現在の臨床基準であるサンガーシークエンシングは、20%以下の頻度で突然変異を検出することは不可能であるか、この数値は臨床的には関連性がある可能性がある(A vilaR uteetal、2016)。ディープシーケンシングを用いた研究やこれらの臨床基準の関心は、そのシーケンシングプロトコルのエラー率の測定である。エラーは、サンプル調製(RNAゲノムのcDNAへの逆転写およびウイルスゲノムの増幅を含む)、ライブラリー調製、シークエンシングおよびbase callingにおいて生じ得る。
エラー率測定は、下流の分析において不確実性を生じる。例えば、ゲノム増幅中に導入されたエラーは、実際の突然変異と区別することは困難である。突然変異は、プロセスの初期段階で導入され、増幅され、後の段階で高い頻度で発生する可能性があるからである。 PCR中のrecombinationは、臨床的に関連する「真の」ウイルスのrecombinationと区別することは困難である。低頻度の突然変異は、シークエンシングおよびbase callingエラーと区別することが困難であり、シーケンスアライメントで正確なシーケンスオーバーラップを正確に特定することに依存するリードアライメント、アセンブリおよびハプロタイプ再構築を混乱させる可能性がある。    Beerenwinkel et al(2012)は、RT-PCRステップ中に導入されたartifactsが、ディープシーケンシングのHIVデータにおいて、個々のハプロタイプを再構成してウイルスの多様性を正確に見積もるための最大のチャレンジであると推測している。

 近年の多くのHIV研究では、Illuminaシークエンシングエラーに対して、シークエンシングエラーと区別がつかないという理由で、グローバルな頻度閾値(通常は1%)を適用してこれ以下のバリアントを除外している。このアプローチは
シーケンシングプロトコルの典型的なエラーレートを推定する必要があり、これがバリアントコールのしきい値として使用される。
シークエンシングエラー率を評価する最も一般的なアプローチは、既知のシーケンスのリードを分析することである。リードを既知シーケンスに合わせ、アライメントのミスマッチの頻度を数える。 HIVのcontentsでは、これはHIVプラスミドと既知の配列とのmixtureをシーケンシングすることによって達成できる。この研究では、このアプローチを使って、Illumina MiSeqプラットフォームによるHIV polシーケンシングの新しいパイプラインhivmmerを導入し、それを他のバリアントコールパイプラインと比較する。既存のパイプラインは、ショートリードアライナーを使用して塩基空間でHIVのリファレンス(such as HXB2; accession K03455)にアライメントするか、またはデノボアセンブリするが、hivmmerは確率的アライナーHMMER(Eddy、2011)を使用して、アミノ酸空間におけるより敏感なアライメントを行う。

 

f:id:kazumaxneo:20181113014914p:plain

Pipeline steps. Githubより

 

 hivmmerに関するツイート


インストール

Hivmmer requires Python 3.6. On 64-bit Linux, it is also possible to install hivmmer using prebuilt packages from the kantorlab Anaconda channel.

依存

  • FASTX-Toolkit 0.0.14
  • HMMER 3.2.1
  • PEAR 0.9.11

本体 Github

#公式ではcondaの仮想環境での導入を推奨しているが、ここでは直接導入
conda install -y -c kantorlab hivmmer

#dockerイメージも用意されている
docker pull kantorlab/hivmmer

> hivmmer -h

$ hivmmer -h

usage: hivmmer --id ID --fq1 FASTQ1 --fq2 FASTQ2 --ref REFERENCE [--cpu N]

               [--region REGION] [--allow-stop-codons]

               [-h|--help] [-v|--version]

 



実行方法

1、解析対象の遺伝子のprotein.fastaの準備

 

2、マルチプルアライメント及びhmmプロファイルの作成

mafft --auto input_proteins.fa > multiple_alignment.fa

#HMMERを使い、hmmプロファイルを作成
hmmbuild proteins-mafft.hmm multiple_alignment.fa

HIVのpol(HXB2 coordinates 2253-3296)(参考)に関しては、HIVデータベース(link)を元にすでにプロファイルが作成されているので、1-2の作業はスキップできる。

 

参考

HIV polに関しては、専用コマンドで作成されている。

hivmmer-trim-reference HIV1_ALL_2016_2253-3870_DNA.fasta >HIV1_ALL_2016_2253-3870_DNA.trimmed.aa.fasta

hmmbuild HIV1_ALL_2016_2253-3870_DNA.trimmed.aa.hmm HIV1_ALL_2016_2253-3870_DNA.trimmed.aa.fasta

 

3、hivmmer実行

hivmmer --id ID --fq1 pair1.fq --fq2 pair2.fq --ref proteins-mafft.hmm --cpu 4

 

 テストラン

git clone https://github.com/kantorlab/hivmmer.git
cd /hivmmer/test/
hivmmer --id ID --fq1 5VM_1.fastq --fq2 5VM_2.fastq --ref pol.hmm

 出力(hmmsearchが繰り返されるため1と2がある)

f:id:kazumaxneo:20181113020121p:plain

> head -n 20 ID.hmmsearch2.aavf

$ head -n 20 ID.hmmsearch2.aavf

##fileformat=AAVFv1.0

##fileDate=20181112 16:58:39

##source=hivmmer-0.1.2

##reference=ID.hmmsearch2.ref.consensus.fa

##INFO=<ID=AC,Number=.,Type=String,Description="Alternate Codon">

##INFO=<ID=ACC,Number=.,Type=Float,Description="Alternate Codon Count, for each Alternate Codon, in the same order as listed.">

##INFO=<ID=ACF,Number=.,Type=Float,Description="Alternate Codon Frequency, for each Alternate Codon, in the same order as listed.">

##FILTER=<ID=cov10,Description="Alternate Count < 10">

##FILTER=<ID=freq0.01,Description="Alternate Frequency < 0.01">

#CHROM GENE POS REF ALT FILTER ALT_FREQ COVERAGE INFO

pol-consensus PR 1 P P PASS 1.0 25 AC=cct;ACC=25;ACF=1.0

pol-consensus PR 2 Q Q PASS 1.0 25 AC=cag;ACC=25;ACF=1.0

pol-consensus PR 3 I I PASS 1.0 25 AC=atc;ACC=25;ACF=1.0

pol-consensus PR 4 T T PASS 1.0 25 AC=act;ACC=25;ACF=1.0

pol-consensus PR 5 L L PASS 1.0 26 AC=ctt;ACC=26;ACF=1.0

pol-consensus PR 6 W W PASS 1.0 26 AC=tgg;ACC=26;ACF=1.0

pol-consensus PR 7 Q Q PASS 1.0 29 AC=caa,cag;ACC=17,12;ACF=0.5862068965517241,0.41379310344827586

pol-consensus PR 8 R R PASS 1.0 29 AC=cga;ACC=29;ACF=1.0

pol-consensus PR 9 P P PASS 1.0 29 AC=ccc;ACC=29;ACF=1.0

pol-consensus PR 10 L L PASS 1.0 29 AC=ctc;ACC=29;ACF=1.0

 

> cat ID.hmmsearch2.ref.consensus.fa

$ cat ID.hmmsearch2.ref.consensus.fa

>pol-consensus

PQITLWQRPLVTIKIGGQLKEALLDTGADDTVLEEMELPGRWKPKMIGGIGGFIKVRQYD

QILIEICGHKAIGTVLVGPTPVNIIGRNLLTQIGCTLNFPISPIETVPVKLKPGMDGPKV

KQWPLTEEKIKALVEICTEMEKEGKISKIGPENPYNTPVFAIKKKDSTKWRKLVDFRELN

KRTQDFWEVQLGIPHPAGLKKKKSVTVLDVGDAYFSVPLDKDFRKYTAFTIPSINNETPG

IRYQYNVLPQGWKGSPAIFQSSLTKILEPFRKQNPDIVIYQYLDDLYVGSDLEIGQHRTK

IEELRQHLLKWGFTTPDKKHQKEPPFLWMGYELHPDKWTVQPIVLPEKDSWTVNDIQKLV

GKLNWASQIYAGIKVRQLCKLLRGTKALTEVVPLTEEAELELAENREILKEPVHGVYYDP

SKDLIAEIQKQGQGQWTYQIYQEPFKNLKTGKYARLRGAHTNDVKQLTEAVQKIATESIV

IWGKTPKFKLPIQKETWEAWWTEYWQATWIPEWEFVNTPPLVKLWYQLEKEPIIGAETF

 

引用

Measurement error and variant-calling in deep Illumina sequencing of HIV

 

既知変異を保護しながらロングリードRNA seqのエラーを訂正する TranscriptClean

 

 従来のショートリードRNAシークエンシングは、様々な用途における遺伝子発現を定量するために広く使用されている。ショートリードリードは正確で費用効果が高いが、一般に数キロベース長ある全長哺乳動物アイソフォームを解決する能力が欠けている(論文より Conesa、2016)。 Pacific Biosciences(PacBio)やOxford Nanoporeなどのロングリードシーケンシングプラットフォームを使うことでショートリードの転写再構成の課題を回避できるが、エラー率は大幅に高くなる。 Raw PacBioのリードは、1塩基ミスマッチやmicroindelsを含む確率的エラーが11〜15%ある(Eid、2009)。Microindelsがあるとスプライスジャンクションの位置を誤る可能性があるため、Microindelsはアイソフォームマッピング中に特に問題になる。

 PacBio ToFU分析パイプラインでのCircular consensus correctionおよびリードポリッシュステップでは、rawリードが処理されると、ほとんどの転写産物のエラー率を大幅に低下させる(Eid、2009; Gordon、2015)。しかし、この訂正プロセスは、同一のインサート分子上の複数のシークエンシングパスが利用可能である場合にのみ有効であり、転写物長が増加すると可能性が低下する(Rhoads and Au、2015)。

 この問題に対処するために、ToFUパイプラインの下流で転写産物を訂正するための様々なPacBio特有のツールが開発されている。 TAPIS、HapIsoおよびSQANTIは、エキソン内のindelsを補正するためのリファレンスガイドアプローチを用いている(Abdel-Ghany、2016; Mangul et al、2017; Tardaguila、2018)。 HapIsoは、ロングリードをフェージングにするハプロタイプawareな方式で、1塩基バリアントとエラーを区別する。 TAPISとSQANTIは、スプライスジャンクションクオリティフィルタを使用し、後者はランダムフォレスト分類子を使用して、影響を受けた転写産物を削除することによって残りのエラーを処理する。これらの方法では、よりクリーンなPacBioデータセットが生成されるが、microindelsエラーに起因する非標準的なスプライスジャンクションを訂正しようとするものはない。さらに、HapIsoは、フェージングのために遺伝子あたり複数の転写産物を必要とするが、これはシーケンシングデプスおよび遺伝子発現レベルに依存しない。

 TranscriptCleanは、リファレンスゲノム、スプライスアノテーションおよびバリアントファイルを使用して、PacBio転写産物中のミスマッチ、microindelsおよび非標準のスプライスジャンクションを訂正し、一方で既知のバリアントは保護するプログラムである。 GM12878(Tilgner、2014)の公的に入手可能なPacBioヒトトランスクリプトーム上でTranscriptCleanを実行することにより、これらの転写産物に存在するindelsの99%、ミスマッチの98%および非標準スプライスジャンクションの39%を修正した。これにより、非標準スプライスジャンクションのために、以前のワークフローの下で廃棄されたであろう転写産物32536を回収することができた。

 TranscriptCleanは、SAMフォーマットの転写産物を処理し、リファレンスゲノムに対する挿入、欠失およびミスマッチを探す。サイズ閾値以下(デフォルト≤5bp)のIndelsは、リファレンス配列と一致するように変更される。転写産物中のミスマッチは参照塩基に置き換えられる。 Indelおよびミスマッチ訂正は、バリアント認識モードで実行して、関心のあるバリアントをユーザーに削除しないようにすることもできる。このモードでは、ユーザーが提供するVCFファイル上の既知のバリアントポジションとシーケンスが一致しない場合にのみ、ミスマッチとインデルがリファレンスシーケンスに変更される。この方法の潜在的な欠点は、VCFで提供されていないnovelなSNPまたはRNA編集イベントを除去することである。

 TranscriptCleanの出力は、修正されたSAMファイルで、CIGAR、シーケンス、MD / NMフィールドが更新される。また、個々のエラーや記録の変更を追跡するログファイルとともに、修正されたシーケンスのfastaファイルも出力する。アクセサリスクリプトgenerate_report.Rは、TranscriptCleanの結果を要約した数値を生成する。

 

 

論文では、GM12878のPacbioシーケンシングデータ(論文)に適用されている。

SRAリンク

https://www.ncbi.nlm.nih.gov/sra/?term=SRP036136

 

インストール

ubuntu16.04のminiconda2.4.0.5環境でテストした(docker使用。ホストOS: mac os10.12)。

依存

TranscriptClean is designed to be run with Python version 2.7

conda install -c bioconda -y Bedtools==2.25.0 pybedtools==0.7.8 pyfasta==0.5.2

本体 Github

git clone https://github.com/dewyman/TranscriptClean.git
cd TranscriptClean/

python TranscriptClean.py -h

$ python TranscriptClean.py -h

Usage: TranscriptClean.py [options]

 

Options:

  -h, --help            show this help message and exit

  -s FILE, --sam=FILE   Input SAM file containing transcripts to correct

  -g FILE, --genome=FILE

                        Reference genome fasta file. Should be the

                        same one used during mapping to generate the sam file.

  -j FILE, --spliceJns=FILE

                        Splice junction file obtained by mapping Illumina

                        reads to the genome using STAR. More formats may be

                        supported in the future.

  -v FILE, --variants=FILE

                        VCF formatted file of variants to avoid

                        correcting away in the data (optional).

  --maxLenIndel=MAXLENINDEL

                        Maximum size indel to correct (Default: 5 bp)

  --maxSJOffset=MAXSJOFFSET

                        Maximum distance from annotated splice

                        junction to correct (Default: 5 bp)

  -o FILE, --outprefix=FILE

                        output file prefix. '_clean' plus a file

                        extension will be added to the end.

  -m CORRECTMISMATCHES, --correctMismatches=CORRECTMISMATCHES

                        If set to false, TranscriptClean will skip

                        mismatch correction. Default: True

  -i CORRECTINDELS, --correctIndels=CORRECTINDELS

                        If set to false, TranscriptClean will skip indel

                        correction. Default: True

  --correctSJs=CORRECTSJS

                        If set to false, TranscriptClean will skip

                        splice junction correction. Default: True, but

                        requires                       splice junction

                        annotation file to work.

  --dryRun              If this option is set, TranscriptClean will read

                        in the sam file and record all insertions, deletions,

                        mismatches, and noncanonical splice junctions, but it

                        will                       skip correction. This is

                        useful for checking the distribution

                        of transcript errors in the data before running

                        correction.

  --primaryOnly         If this option is set, TranscriptClean will only

                        output primary mappings of transcripts (ie it will

                        filter                       out unmapped and

                        multimapped lines from the SAM input.

 

実行方法

python TranscriptClean.py --sam transcripts.sam --genome hg38.fa --outprefix /my/path/outfile

 

 

 

引用

TranscriptClean: Variant-aware correction of indels, mismatches, and splice junctions in long-read transcripts
Wyman D, Mortazavi A

Bioinformatics. 2018 Jun 15

 

 

GenomeUPlot

 

 構造変化(SV)を有するサンプルの全ゲノムシーケンシング(WGS)データでは、そのような異常をシンプルなプロットで視覚化する必要性を生じさせる。 WGSデータの従来の2次元表現は、円形または線形レイアウトを頻繁に使用する。これらの表現にはいくつかの利点があるが、主な欠点は2次元空間を効率的に使用しないことである。我々はGenome U-Plotと呼ばれるレイアウトを提案する。このレイアウトは、2次元表面に染色体を広げ、本質的に空間解像度を4倍にする。これにより、欠失、増幅、および染色体修復・再生などのSVを視覚化することによって、新しい洞察および仮説を生成することができる。Genome U-Plotの主な特徴は、階層化されたレイアウト、その高い空間分解能、および改善された美的品質である。我々は、従来の視覚化スキーマとGenome U-Plotとを、線交差数および交差角度分解能などの視覚化メトリクスを用いて比較する。我々の測定基準に基づいて、得られたグラフの可読性を少なくとも2倍向上させ、重要な特徴を明らかにし、重要なゲノムの変化を容易に同定できるようにする。

 

GenomeUPlotに関するツイート

 

インストール

依存

  • yarn(Node.js package manager which is much faster than NPM)
npm install --global yarn

本体 Github

git clone https://github.com/gaitat/GenomeUPlot.git
cd GenomeUPlot/
yarn install

 

テストラン

yarn start

#別のタブから
open http://localhost:8000/GenomePlot.html?sampleId=LNCAP -a safari

#または
open http://localhost:8000/GenomePlot.html?sampleId=NA12878 -a safari

 

f:id:kazumaxneo:20181110203608p:plain

 

Circos

f:id:kazumaxneo:20181110204004p:plain

hg19とhg38のcytobandファイルはublic/reference/cytobandsに準備されています。それ以外に必要なデータ構造についてはGithubを読んでください。circos plotで使うフォーマットに準じているようです。

引用

Genome U-Plot: a whole genome visualization
Athanasios Gaitatzes Sarah H Johnson James B Smadbeck George Vasmatzis

Bioinformatics, Volume 34, Issue 10, 15 May 2018, Pages 1629–1634

 

Structural Variation Engine (SVE)

 

先日紹介したFusoSVのSVコールパイプラインSVEを紹介する。

 

f:id:kazumaxneo:20181110182031j:plain

Core Frameworks and Extension. Githubより

 

インストール 

依存関係が多いためdockerコンテナを使ったランが推奨されている。

Github

docker pull timothyjamesbecker/sve

> docker run --rm timothyjamesbecker/sve /software/SVE/scripts/prepare_ref.py -h

$ docker run --rm -v $PWD/:/data timothyjamesbecker/sve /software/SVE/scripts/prepare_ref.py -h

usage: prepare_ref.py [-h] [-g | -r REF_PATH] [-t TARGET] [-o OUT_DIR]

                      [-l LEN] [-c CHR] [-P CPUS] [-d DATABASE] [-e]

 

Prepares a random fasta reference or existing fasta reference file for

downstream SV analysis. This includes chrom copying, indexing, masking and all

associated one-time processecies that need to be done before || per sample or

other || means can be started in indepencence.

 

optional arguments:

  -h, --help            show this help message and exit

  -g, --gen_rnd         generate a rgXXX.fa file using -L and -C [False]

  -r REF_PATH, --ref_path REF_PATH

                        fasta reference file [None]

  -t TARGET, --target TARGET

                        comma sperated list of stage names to filenames

                        (wildcards will work for multiple files) note: this is

                        a nessesary step for use with breakseq2 and some other

                        callers that rely on specific libraries/files. [EX] -t

                        breakseq:/data/breakseq2_bplib_20150129* [None]

  -o OUT_DIR, --out_dir OUT_DIR

                        output directory to store resulting files [~/refs]

  -l LEN, --len LEN     random reference total length [None]

  -c CHR, --chr CHR     random reference number of chroms [3]

  -P CPUS, --cpus CPUS  number of cpus/cores to use [1]

  -d DATABASE, --database DATABASE

                        database configuration file [SVE/data/svedb.config]

  -e, --erase_db        wipe the SVEDB [False]

> $ docker run --rm timothyjamesbecker/sve /software/SVE/scripts/prepare_bam.py -h

$ docker run --rm -itv $PWD:/data/ timothyjamesbecker/sve /software/SVE/scripts/prepare_bam.py -h

usage: prepare_bam.py [-h] [-a ALGORITHM] [-g] [-m] [-s SAMPLE] [-o OUT_DIR]

                      [-r REF] [-d DATABASE] [-f FQS] [-b BAM] [-P CPUS]

                      [-T THREADS] [-M MEM]

 

Processes Illumina PE .fq reads into a .bam file given a reference .fa file as

input. [Note] mem, piped_mem, piped_split sub-pipelines assume reads > 75bp in

length

 

optional arguments:

  -h, --help            show this help message and exit

  -a ALGORITHM, --algorithm ALGORITHM

                        aln|mem|piped_mem|piped_split|speed_seq [piped_split]

  -g, --replace_rg      replace reads groups [False]

  -m, --mark_duplicates

                        mark duplicate reads [False]

  -s SAMPLE, --sample SAMPLE

                        sample name [input]

  -o OUT_DIR, --out_dir OUT_DIR

                        output directory to store resulting files [None]

  -r REF, --ref REF     fasta reference file path [None]

  -d DATABASE, --database DATABASE

                        database configuration file [SVE/data]

  -f FQS, --fqs FQS     fq comma-sep file path list [None] [EX PE] --fqs

                        ~/data/sample1_FWD.fq,~/data/sample1_REV.fq

  -b BAM, --bam BAM     bam file path [None]

  -P CPUS, --cpus CPUS  number of cpus for alignment and sorting, ect [1]

  -T THREADS, --threads THREADS

                        number of threads per CPU [4]

  -M MEM, --mem MEM     ram in GB units to use for processing per cpu/thread

                        unit [4]

——

> docker run --rm timothyjamesbecker/sve /software/SVE/scripts/auto.py -h

 $ docker run --rm -itv $PWD:/data/ timothyjamesbecker/sve /software/SVE/scripts/auto.py -h

usage: auto.py [-h] [-o OUT_DIR] [-r REF] [-f FQS] [-b BAM] [-s SAMPLE]

               [-t TARGET] [-m MODEL] [-P CPUS] [-T THREADS] [-M MEM]

               [-a ALGORITHM] [-R REALIGN] [-v]

 

Autonomous Structural Variation Engine:

Given a .fa reference file and a pair: NA12878_1.fq.gz,NA12878_2.fq.gz, 

produce a FusorSV VCF file all_samples_merge.vcf with comprehensive merged SV calls using a fusion model.

#[USAGE] auto.py --ref --fqs|bam --out_dir

#----------------------------------------------------------------------------------------------------------------- 

 

optional arguments:

  -h, --help            show this help message and exit

  -o OUT_DIR, --out_dir OUT_DIR

                        output directory to store resulting files [None]

  -r REF, --ref REF     fasta reference path (if indexes are not found, run (A)) [None]

  -f FQS, --fqs FQS     fq comma-sep file path list [None]

                        [EX PE] --fqs ~/data/sample1_FWD.fq,~/data/sample1_REV.fq

  -b BAM, --bam BAM     BAM format file for use without alignment or for realignmnet [None]

  -s SAMPLE, --sample SAMPLE

                        Sample identifier [infered from BAM|fastq read 1 trimmed by . and _]

  -t TARGET, --target TARGET

                        maps a stage name to a comma seperated list of filenames with a colon : (wildcards will work for multiple files)

                        multiple mappings are sperated by a semi colon ; This is a nessesary step when using breakseq2 and some other callers 

                        that rely on specific libraries/files with a new reference. The SVE image has hg19 libraries for breakseq2 included.

                        [EX] -t delly:/data/exclude_list.bed;breakseq:/data/breakseq2_bplib_20150129*

                        [None]

  -m MODEL, --model MODEL

                        data fusion model [FusorSV/data/models/g1k_v37_decoy.P3.pickle]

  -P CPUS, --cpus CPUS  number of cpus for alignment and sorting, ect [1]

  -T THREADS, --threads THREADS

                        number of threads per CPU [4]

  -M MEM, --mem MEM     ram in GB units to use for processing per cpu/thread unit [4]

  -a ALGORITHM, --algorithm ALGORITHM

                        alignment/realignment algorithm pipeline [speed_seq]

  -R REALIGN, --realign REALIGN

                        does realignment of the BAM file to the reference [place holder]

  -v, --verbose         stderr and stdout from all stages [False]

——

> docker run --rm  timothyjamesbecker/sve /software/SVE/scripts/variant_processor.py -h

$ docker run --rm -itv $PWD:/data/ timothyjamesbecker/sve /software/SVE/scripts/variant_processor.py -h

usage: variant_processor.py [-h] [-o OUT_DIR] [-r REF] [-b BAMS]

                            [-D READ_DEPTH] [-L READ_LENGTH] [-t TARGETS]

                            [-s STAGES] [-c CHROMS] [-p PARTITIONS] [--debug]

                            [-d DATABASE] [-e] [-v]

 

Shortened Version of the SVE that uses pre-made .bam files Allthough .bam

files are not compatible with all callers such as Variation Hunter

 

optional arguments:

  -h, --help            show this help message and exit

  -o OUT_DIR, --out_dir OUT_DIR

                        output directory to store resulting files

  -r REF, --ref REF     fasta reference file path

  -b BAMS, --bams BAMS  BAM comma-sep bam file path list, assuming matching

                        bam.bai is in place... [EX] --bam ~/data/sample1.bam,~

                        /data/sample2.bam,~/data/sample3.bam

  -D READ_DEPTH, --read_depth READ_DEPTH

                        Average Depth of Coverage in ROI

  -L READ_LENGTH, --read_length READ_LENGTH

                        Read Length

  -t TARGETS, --targets TARGETS

                        target region files for input: vcf,bd,1gk formats

  -s STAGES, --stages STAGES

                        stage name list

  -c CHROMS, --chroms CHROMS

                        chrom name list

  -p PARTITIONS, --partitions PARTITIONS

                        number of partitions or ||L

  --debug               save result/error data to db

  -d DATABASE, --database DATABASE

                        database configuration file

  -e, --erase_db        reset and clear the schema bound db

  -v, --verbose         be verbose with caller stdout/stderr

2018年11月現在、 10のSVコーラーがサポートされている。

  • 1. BreakDancer (with VCF converter)
  • 2. BreakSeq2
  • 3. cnMOPS (with VCF converter)
  • 4. CNVnator
  • 5. Delly2
  • 6. Hydra-Multi (with VCF converter)
  • 7. GATK Haplotype Caller 3.6 (with SV size VCF filter)
  • 8. GenomeSTRiP2.0 (both SVDiscovery and CNVdiscovery) (with DEL/DUP VCF converter)
  • 9. Lumpy-SV
  • 10. Tigra-SV (and EXT pipeline)

 

実行方法

Autonomous Mode: アライメント、SVコール、FusorSVによるマージのすべてのステップが実行される。fastaの拡張子は".fa"になっている必要がある。

docker run -v $PWD/:/data -it timothyjamesbecker/sve /software/SVE/scripts/auto.py \
-r /data/ref/human_g1k_v37_decoy.fa \
-f /data/sample1/sample1_1.fq,/data/sample1/sample1_2.fq \
-o /data/run_sample1/

1000Genomesのphase3のリファレンス使用がdefaultになっている(リンク)。

 

個別実行

1、リファレンスindex等の準備(初回のみ必要)

docker run -v $PWD/:/data timothyjamesbecker/sve \
/software/SVE/scripts/prepare_ref.py \
-r /data/human_g1k_v37_decoy.fa \
-t breakseq:/data/breakseq2*.fna \
-o /data/ref/ \
-P 12

FASTAファイルの拡張子は".fa"になっている必要がある。かなり時間がかかる。ジョブが終わると、ref/にFASTAファイルと関連indexが出力される。以降のランにはこのディレクトリのFASTAファイルを指定する。

 

2、speedseqをalignerに使いBAMを作成

docker run -v $PWD/:/data timothyjamesbecker/sve \
/software/SVE/scripts/prepare_bam.py \
-r /data/ref/human_g1k_v37_decoy.fa \
-f /data/sample1/sample1_1.fq,/data/sample1/sample1_2.fq \
-o /data/bams/ \
-P 4 -T 6 -M 4 -a speed_seq
  • -P   number of cpus for alignment and sorting, ect [1]
  • -T   number of threads per CPU [4]
  • -M   MEM ram in GB units to use for processing per cpu/thread
    unit [4]
  •  -a    aln|mem|piped_mem|piped_split|speed_seq [piped_split]

-P 4 -T 6 -M 4で24コアCPU、96GBメモリを使う(コアあたり4GB)。

 

3、bamを使いSVコール

docker run -v $PWD/:/data timothyjamesbecker/sve \
/software/SVE/scripts/variant_processor.py \
-r /data/ref/human_g1k_v37_decoy.fa \
-b /data/bams/sample1.bam \
-o /data/vcfs/ \
-s breakdancer,gatk_haplo,delly,lumpy,cnvnator

#more sv caller
docker run -v $PWD/:/data timothyjamesbecker/sve \
/software/SVE/scripts/variant_processor.py \
-r /data/ref/human_g1k_v37_decoy.fa \
-b /data/bams/sample1.bam \
-o /data/vcfs/ \
-s breakdancer,gatk_haplo,delly,lumpy,cnvnator,breakseq,cnmops,hydra,genome_strip,tigra

 

4、FusorSVによるSVのマージ

docker run -v $PWD/:/data timothyjamesbecker/sve \
software/FusorSV/FusorSV.py \
-r /data/ref/human_g1k_v37_decoy.fa \
-c 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,X,Y \
-i /data/vcfs/ \
-o /data/fused/ \
-f /data/models/human_g1k_v37_decoy.P3.pickle.gz\
-p 2\
-M 0.5\
-L DEFAULT
  • -p    number of cores to use in || [1]
  • -M   reciprocal overlap needed for clustering [0.5]
  • -L    liftover chain file path or default [./data/hg19ToHg38.over.chain.gz]
  • -c or --chroms is an optional chrom list if you only want calls that were made on specific sequences.The default is 1-22,X,Y,MT with auto-sensing of (chr prefix)
  • -i or --in_dir takes the VCF directory that was produced from step

 

引用

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.

 

関連/類似ツール

 

複数ゲノムを比較し、結果をインタラクティブに視覚化する AliTV

 2018 11/12 リンクエラー修正

2019 3/9 分かりにくい部分を修正

 

 過去10年にわたるショートリードシーケンシング、ロングリードシーケンシングおよびアセンブリの進歩(Salzberg et al、2011; Chin et al、2013; Hackl et al、2014)は、全ゲノムシーケンシングの扉を様々な分野の生物学者に開いた。公開されている配列データベースには既に数千ものドラフトゲノムと完全なゲノムが含まれており(Benson et al、2013)、さらに多くのものが進行中である(Pagani et al、2012)。特に、近年のアウトブレイク(Rasko et al、2011)に関連する病原菌株のハイスループットシークエンシングプロジェクト、およびメタゲノムおよびシングルセルシーケンシングアプローチを用いた微生物群集やパンゲノムを標的とする大規模生態学的研究がこのプロセスに寄与している(Turnbaugh et al、2007; Kashtan et al。、2014)。これらの豊富なデータセットは大規模な進化プロセスのために探索することができ、それにはゲノム組換え(Didelot、Méric&Falush、2012; Namouchi et al、2012; Yahara et al、2014)、アイランド伝達および水平遺伝子伝達(Fischer、2015; Touchon&Rocha、2007)、また、移動性または内在性のウイルスエレメントのしばしば関連するダイナミクス(Avrani et al、2011; Coleman et al、2006; Langille、Hsiao&Brinkman)が含まれる 。全ゲノム比較の他の応用には、paleopolyploidization events(Vanneste et al、2014)および腫瘍の異種性の定量的測定(Schwarz et al、2015)が含まれる。

 しかし、得られた全ゲノム比較の適切な解釈を容易にするために、視覚化が重要である。アライメントしたゲノムのインタラクティブなグラフィカル表現を提供するための最初のツールの1つはMauve(Darling et al、2004)であった。 Mauveは、色と結合線で示される同種のシンテニーブロックを持つ同一直線上のレイアウトでゲノムを表す(Mauve紹介)。対話型スタンドアローンビューアーACT(Carver et al、2008)は、アライメントブロックに加えて、遺伝子などのゲノムアノテーション表現をサポートしている(ACT 紹介)。 RライブラリgenoPlotR(Guy、Kultima&Andersson、2010)とPythonベースのアプリケーションEasyFig(Sullivan、Petty&Beatson、2011)はいずれも共線形レイアウトとと機能 annotationsをサポートしているが、静止画を生成するように設計されており、インタラクティブな分析機能を欠いている。

 線形レイアウトに加え、ゲノムの環状表現を行うツールが開発されている。BLASTatlas(Hallin、Binnewies&Ussery、2008)およびBRIG(Alikhan et al、2011)は、個々のゲノムのデータを表すために複数の同心円リングを使用し、BRIGはインタラクティブなグラフィカルインターフェースも提供する(BRIG紹介)。 GenomeRing(Herbig et al、2012)も同様に環状表現を用いるが、すべてのゲノムを同じリング上に置き、シンテニーブロックはリングの中心に伸びるアークで接続する。

(一部略)

 既存のソフトウェアは、インタラクティブなツールはデータの探索には役立つが、図のエクスポートや品質の高いサポートは限られている。スクリプトベースのツールは、より高度なカスタマイズと図生成品質を提供するが、それぞれの言語に精通している必要があり、しばしば生成に時間がかかる。 SybilなどのWebベースおよびデータベースベースのスイートでは、アップロードとインポートの手順が利用を複雑にし、適用性を制限している。

 ここでは、複数の全ゲノムアライメントのインタラクティブな視覚化のために設計されたスタンドアローンのアプリケーションAliTV(Alignment Toolbox and visualization)を紹介する。 AliTVは新しい全ゲノムアライメントを直接読んだり、自動的に生成したり、結果をすばやく探索したり、視覚化を操作したりカスタマイズしたりすることを目指している。 AliTVは、共通フォーマット(FASTAGenBank、GFF、MAF、Newickなど)で配列とアノテーションまたはアライメントデータを読み取り、内部的にlastzを使用してアラインメントを計算する(Harris、2007)。ユーザーフレンドリーなインターフェイスは、最先端のD3.js JavaScriptフレームワーク上に構築され、一般的なWebブラウザでプラットフォームに依存しない方法で利用できる。ゲノムは、アノテーションと任意の系統樹を含む、高度にカスタマイズ可能な共直線レイアウトで表される。ツリーはAliTVによって計算されるのではなく、データ生成時に提供される必要がある。また、ゲノムの順序は、リアレンジメントを最小限に抑えるために自動的には最適化されない。カスタマイズは、ユーザーによる図の保存、再ロード、および高品質のSVGファイルへのエクスポートに対応している。

 

HP

https://alitvteam.github.io/AliTV/

Documentation

https://alitv.readthedocs.io/en/latest/index.html

 AliTVに関するツイート


インストール

ubuntu16.04でテストした(docker使用。ホストOS: mac os10.12)。

依存

#cpanmがないなら入れておく。
cd /usr/local/bin/
curl -LOk http://xrl.us/cpanm
chmod +x cpanm

#lastz
git clone https://github.com/lastz/lastz.git
cd lastz/
make
sudo make install

 本体 GIthub

AliTV-Perl interface

git clone --recursive https://github.com/AliTVTeam/AliTV
cd AliTV/AliTV-perl-interface/
cpanm --installdeps .

# perl bin/alitv.pl -h                            

Usage:

        # complex configuration via yml file

        alitv.pl [OPTIONS] options.yml

 

        # OR

 

        # easy alternative including the generation of a yml file

        alitv.pl [OPTIONS] *.fasta

 

Options:

    --project Project name

        The name of the project will be the given argument. If this

        parameter was not provided, one project name will be auto generated.

        This will be the base name for the log file, the yml file, and the

        output file. If a YML file is provided, this value will be

        overwritten by the basename of the YML file.

 

    --output Output file

        The name of the output file. If non is provided, the output file

        name will be based on the project name. If STDOUT should be used,

        please set the output filename to "-" via option "alitv.pl --output

        -".

 

    --logfile Log file

        The name of the log file. If non is provided, the log file name will

        be based on the project name.

 

    --overwrite or --force Overwrite existing project.yml or output.json

    files

        Default behaviour is to keep existing project yml and json files. If

        "--overwrite" or "--force" is specified, the files will be

        overwritten. Overwriting can be expicitly disabled by

        "--no-overwrite" or "--no-force" parameter.

すぐ使えるようにdockerイメージも上げておきます。

docker pull kazumax/alitv

#カレントと/dataを共有して立ち上げる
docker run --rm -itv $PWD:/data kazumax/alitv
cd /AliTV/AliTV-perl-interface/

#test run
perl bin/alitv.pl --project simple data/chloroset/*.fasta

#カレントにsimple~が出力されるので、これを下のdemoサイトでimportする。

  

テストラン

/data/chloroset/のfastaファイルを分析する。

f:id:kazumaxneo:20181109193353j:plain

 

cd /AliTV/AliTV-perl-interface/
perl bin/alitv.pl --project simple data/chloroset/*.fasta

fasta以外に、genbankファイルを使用できる(*1)。

 

デモサイトを使い可視化する。

https://alitvteam.github.io/AliTV/d3/AliTV.html

上のimportからjsonファイルを読み込む。

f:id:kazumaxneo:20190309112250j:plain

右端のimport => load JSONを選択、jsonファイルを読み込む。

 

結果が可視化された。

f:id:kazumaxneo:20181110131441j:plainアライメント結果がカラーのリンクで可視化された。色は、右下のカラーグラデーションに従い、2配列間の高さを表している。上の図では、カーソルを配列の上に合わせて、その配列のアライメントだけハイライト表示している。

 

相同性の下限値を変更して、相同性が高い領域のみリンクを表示することもできる。上のメニューからFilterlingを選択。下限値を92%まで上げた。

f:id:kazumaxneo:20181110132252j:plain

赤~黄色~薄緑のリンクが表示されなくなった。

 

 

図はインタラクティブに操作可能。対象の配列の上で右クリック、change orientationを選択。

f:id:kazumaxneo:20181110130528j:plain

指定した配列の向きが逆になった。

f:id:kazumaxneo:20181110130534j:plain

 

move upとmove downボタンで上下の並びを順番を入れ替えられる。

f:id:kazumaxneo:20181110131043j:plain

 

自動ソートにも対応している。上のメニューのOrderからauto-orderを選択。

f:id:kazumaxneo:20181110135324j:plain

上に記載されているルールに従いソートされた。

 

結果はSVGで出力できる。

f:id:kazumaxneo:20181110140512j:plain

 

その他、ドラッグして拡大したり、カスタマイズした状態のjsonをexportすることもできます。著者らが準備した動画をみてください。

引用

AliTV—interactive visualization of whole genome comparisons

Markus J. Ankenbrand​, Sonja Hohlfeld​, Thomas Hackl, Frank Förster​

June 12, 2017

 

*1

annotation trackがあれば遺伝子も表示できる。

上のメニュー → show hide annotations → geneの表示にチェックをつけてapply

 

 

関連


 

アセンブリ配列やゲノムから遺伝子配列をblast検索できるwebツール SimpleSynteny

 

 異なる生物ゲノムの保存されたシンテニーのパターンを理解することは、分子生物学の分野における中心的な事業である。元々synteny(以後シンテニー)は細胞遺伝学によって定義され、単一の染色体上に位置する2つ以上の遺伝子座の存在を言及した(論文より ref.1)。次世代シークエンシングの普及と全ゲノムデータセットアセンブリによって、シンテニーはcollinearity、または遺伝子の順序と向きの保存と交換可能に記述することにも一般的になった。定性的には、シンテニーは、関連するスケールに応じて異なる形態を取ることができる。 マクロシンテニーは、全染色体スケールでの遺伝子順序のcollinearityを意味し、マイクロシンテニーは、所与の染色体サブ領域にわたってcollinearityを示す少数の遺伝子を意味する。mesosynteny は、collinearityなしの染色体での遺伝子保存として特徴付けられる。染色体の再編成、遺伝子のlossesとgains、染色体の重複や消失を含む様々なプロセスによってシンテニーの程度は時間の経過とともに分解されるため、生物学者は生物と遺伝子ファミリーの進化的相違に関する質問に対処することができる。シンテニー探査の焦点は、単一の染色体上の遺伝子に限定され、ゲノム全体の構成を検討するために拡大され、クエスチョン(ref.3)に応じて複数の種間で実施され得る。

 シンテニーを評価するためのコンピュータツールは、比較ゲノム研究、特に多数のコンティグを含むドラフトゲノムアセンブリの増殖のために、ますます重要な構成要素となっている。新規なシンテニー領域を検出するためのプログラムのいくつかの例は、Proteny(ref.4)、i-ADHoRe(ref/5)またはDRIMM-Synteny(ref.6)を含む。追加の予測ソフトウェアツールの最近の要約が(ref.7)に提供されているが、視覚化については(ref.8)で利用可能である。一般に、シンテニーを推定するための各プログラムは、収容されたゲノム数、スコアリングの方法、分析のスケール(マイクロ対マクロシンティック)およびユーザーインターフェースコマンドライン対グラフィカル/ウェブベース)のトレードオフを提供する)。特定のプロジェクトのためのプログラムを選択するとき、密接に関連した分類群を扱うときにはより優れたものがあり、異なる分類群ではより良いものがある(4,7)ことに留意されている。したがって、同じデータセットの結果はプログラム間で大きく異なる可能性がある(ref.9)。

(一段落省略)

 私たち(著者ら)のパイプラインは、あらかじめ選択された遺伝子ターゲットセットを探索する研究者にとってより詳細な視点を提供する。 Yeast Gene Order Browser(ref.13)のような、キュレーションされたゲノムのサブセットのシンテニーを表示する専用のブラウザとは異なり、ユーザーは任意のゲノムから得られたコンティグをアップロードできる。アクセシビリティに重点が置かれているため、高度なコンピュータやスクリプティングスキルのない人にとっても使いやすいツールとなっている。(以下省略)

 

FAQ

https://www.dveltri.com/simplesynteny/faq.html

 

使い方

https://www.dveltri.com/simplesynteny/ にアクセスする。

f:id:kazumaxneo:20181108153537p:plain

 

使用できるファイルには以下のような制限がある。読んでおく。

f:id:kazumaxneo:20181108162753p:plain

 

E.coli K12のゲノム配列からE.coli 0157の遺伝子を探してみる。

step1: まず左のウィンドウに、ゲノムのFASTAファイルをローカルディスクから選択しアップロードする。コード領域のFASTAもあれば、shiftキーを押して両方アップロードする。同様に、クエリとする遺伝子のFASTAファイルもアップロードする。

f:id:kazumaxneo:20181108163145p:plain

 

下の方にスクロールし、先ほどアップロードした配列を改めて選択する。最後に、必要であればblastのパラメータを変更する。Proceed step2ボタンを押す。

f:id:kazumaxneo:20181108162842p:plain

 

step2: 可視化する必要がないクエリヒットがあれば削る。終わったらProceed step3ボタンを押す。

f:id:kazumaxneo:20181108163048p:plain

 

step3: 一番下のgenerate~ボタンを押すことで結果が可視化される。

f:id:kazumaxneo:20181108163057p:plain

 下に表示されているパラメータを変更することで、その場で結果を修正することもできる。 色の濃さはBLAST hitのスコアの高さを表す。

f:id:kazumaxneo:20181109070126p:plain

マニュアルより

 

 

デモラン

デモでは、ゲノムとコード領域のアミノ酸配列fastaを使っている。

step1 ゲノムを選択して、Proceed step2ボタンを押す。

https://www.dveltri.com/simplesynteny/demo.html

f:id:kazumaxneo:20181108154616p:plain

 

結果。

f:id:kazumaxneo:20181108153828p:plain

FLIPとMOVEボタンを押せば表示位置を微調整できる。

 

アセンブリした配列やゲノムなどから、特定の遺伝子や遺伝子クラスターをさっと探したい時に役立ちそうですね。プライマーのような短い配列ではe-valueをあげてもヒットしないので注意して下さい(-task blastn-shortフラグが必要)。Advancedモードでは、より本格的な探索のために、CMAPフォーマットでジョブを投げることができるようになっています。

SimpleSynteny

引用

SimpleSynteny: a web-based tool for visualization of microsynteny across multiple species

Veltri D, Wight MM, Crouch JA
Nucleic Acids Res. 2016

 

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

 

類似ツール