macでインフォマティクス

macでインフォマティクス

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

大規模なメタゲノムのシミュレータ CAMISIM

2019 3/8 タイトル修正 図追加

2021 6/5 追記

 

 16q rRNAアンプリコンとショットガンメタゲノムシーケンシングは、健康や病気に関するヒトマイクロバイオーム研究に広範に使われている[prepirntより ref.1, 2] 。私たちはその後、天然に存在する微生物群集は、生物多様性の広範な範囲をカバーしていることを学んだ。おそらくhalf a dozenのレベルから1万を超える微生物のpopulationsレベルの微生物多様性を含むことができ、代表的な分類群は大きく異なる可能性がある[ref.9-12]。これらの多様なコミュニティを分析することは困難である。この問題は、データ生成における幅広い実験設定の使用と、短期および長時間のシークエンシング技術の急速な進化によって悪化する[ref.13,14]。生成されるデータが非常に多様であるため、特定の実験設定に対する現実的なベンチマークデータセットを生成する可能性は、計算メタゲノミクスソフトウェアを評価するために不可欠である。

 メタゲノム解釈のクリティカルアセスメントのinitiative であるCAMIは、コンピュテーションメタゲノムソフトウェアの幅広く客観的なパフォーマンス概要を生成することを目的としたコミュニティの取り組みである[rwef.15]。 CAMIはベンチマーキングの課題を編成し、データの生成、ソフトウェアの適用、結果の解釈[ref.16]など、すべての面で標準の開発と再現性を促進する。
 ここでは、最初にCAMIの最初のチャレンジで使用されたシミュレートされたメタゲノムデータセットを生成するために書かれたCAMISIMについて説明する。 CAMISIMの有用性をいくつかのアプリケーションで実証する。著者らは、ヒトおよびマウスの腸内微生物のtaxonomyプロファイルから、複雑で多重反復のベンチマークデータセットを生成した[ref.1, 17]。数千もの小さな“minimally challenging metagenomes” をシミュレートし、ポピュラーなMEGAHIT [ref.18](紹介)やmetaSPAdes [ref.19]アセンブラ紹介)で、シーケンシングカバレッジ、ゲノムの進化的な相違、シーケンシングエラープロファイルなどの変化に伴う影響を特徴付けた。

 

 

f:id:kazumaxneo:20180810122531j:plain

CAMISIMのワークフロー。 Preprintより転載。

 

マニュアル

https://github.com/CAMI-challenge/CAMISIM/wiki/User-manual

f:id:kazumaxneo:20190224174529p:plain

Assembly graphs become more complex as coverage increases.

論文より転載


インストール

依存

python 2.7.10

  • Biopython
  • BIOM
  • NumPy
  • Matplotlib

Genome annotation

  • Hmmer3 or RNAmmer 1.2(RNAmmer is a wrapper of Hmmer2. Hmmer uses hidden markov profiles to search marker genes in sequences.)
  • Mothur(A multi tool program. Alignment of sequences and clustering.)
  • MUMmer(A genome alignment software)  

Perl 5

Simulation

  • ART(ART is a set of simulation tools to generate synthetic next-generation sequencing reads.)
  • wgsim(Read simulator which offers error-free and uniform error rates.)
  • NanoSim(Read simulator for the generation of Oxford Nanopore Technologies (ONT) reads. )
  • PBsim(Read simulator for generating Pacific Biosciences (PacBio) reads.)
  • SAMtools 1.0

本体 Github

依存が多いのでここではdockerコンテナを使う。

docker pull cami/camisim:latest

> python metagenomesimulation.py -h

 docker run --rm -it -v /Users/user/Documents/docker_share/:/home/ cami/camisim metagenomesimulation.py -h

usage: python metagenomesimulation.py configuration_file_path

 

    #######################################

    #    MetagenomeSimulationPipeline     #

    #    Version 0.0.6                    #

    #######################################

 

    Pipeline for the simulation of a metagenome

 

optional arguments:

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

  -v, --version         show program's version number and exit

  -silent, --silent     Hide unimportant Progress Messages.

  -debug, --debug_mode  more information, also temporary data will not be deleted

  -log LOGFILE, --logfile LOGFILE

                        output will also be written to this log file

 

optional config arguments:

  -seed SEED            seed for random number generators

  -s {0,1,2}, --phase {0,1,2}

                        available options: 0,1,2. Default: 0

                        0 -> Full run,

                        1 -> Only Comunity creation,

                        2 -> Only Readsimulator

  -id DATA_SET_ID, --data_set_id DATA_SET_ID

                        id of the dataset, part of prefix of read/contig sequence ids

  -p MAX_PROCESSORS, --max_processors MAX_PROCESSORS

                        number of available processors

 

required:

  config_file           path to the configuration file

ERROR: 0

——

> python genomeannotation.py

$ docker run --rm -it -v /Users/user/Documents/docker_share/:/home/ cami/camisim genomeannotation.py -h

usage: python genomeannotation.py configuration_file_path

 

#######################################

#    GenomeAnnotationPipeline         #

#    Version 0.0.6                    #

#######################################

 

Pipeline for the extraction of marker genes, clustering and taxonomic classification

 

optional arguments:

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

  -v, --version         show program's version number and exit

  -verbose, --verbose   display more information!

  -debug, --debug_mode  tmp folders will not be deleted!

  -log LOGFILE, --logfile LOGFILE

                        pipeline output will written to this log file

 

optional config arguments:

  -p MAX_PROCESSORS, --max_processors MAX_PROCESSORS

                        number of available processors

  -s {0,1,2,3}, --phase {0,1,2,3}

                        

                        0 -> Full run (Default)

                        1 -> Marker gene extraction

                        2 -> Gene alignment and clustering

                        3 -> Annotation of Genomes

 

required:

  config_file           path to the configuration file of the pipeline

——

> python metagenome_from_profile.py

ヘルプなし。

 

ラン

ホストの指定パスをinputとoutputとして認識してランする。初回はNCBI database("nodes.dmp", "merged.dmp", "names.dmp") をダウンロードするので時間がかかる。

docker run -it -v "/Volumes/test/CAMISIM/defaults:/input:rw" \
-v "/Volumes/test/CAMISIM/out:/output:rw" \
cami/camisim metagenome_from_profile.py \
-p /input/mini.biom -o /output

 

 

引用

CAMISIM: Simulating metagenomes and microbial communities.

Adrian Fritz, Peter Hofmann, Stephan Majda, Eik Dahms, Johannes Droege, Jessika Fiedler, Till R. Lesker, Peter Belmann, Matthew Z. DeMaere, Aaron E. Darling, Alexander Sczyrba, Andreas Bremges, Alice C. McHardy

bioRxiv, 300970. doi:10.1101/300970 

 

参考

Critical Assessment of Metagenome Interpretation—a benchmark of metagenomics software

Alexander Sczyrb, Peter Hofmann, Alice C McHardy

Nature Methods volume 14, pages 1063–1071 (2017)

 

ターゲットキャプチャシーケンシングをシミュレートする capsim

 高スループットシークエンシング(HTS)は、費用対効果が高く時間効率の良いサンプルの完全な遺伝情報を得る能力を持ち、ゲノム研究に大きく革命をもたらした。多くの臨床応用において、作用可能な領域のパネルのみが調査対象である(Bellos et al、2014; Samorodnitsky et al、2015)(Diagnostic Panels.  e.g., Takara )。これらの分析では、研究者は、合成されたオリゴヌクレオチド(プローブ)のプールを用いて、ハイブリダイゼーションを用いて興味のあるゲノム断片を選択的に捕捉するターゲットキャプチャシーケンシングプロトコルを使用することが多い(Gnirke et al、2009)。これにより、ゲノムシーケンシング全体と比較して、より低いコストでより迅速な結果を得ることができ、臨床検査でのスケーラブルなアプローチが可能になる。

 計算シミュレーションは、HTSデータ分析ツールの開発とベンチマーキングに不可欠である(Escalona et al、2016)。In silicoでのシミュレーションデータは、実際のデータよりも安価に生産することができる。それらは制御された条件下で生成され、完全に特徴づけることができる。さらに、シミュレーションは、研究者がシーケンシングプロトコルの性能を評価し、実験を実施する前に設計を最適化するのに役立つ。whole genome sequencing(Escalona et al、2016)とtargeted exome sequencing (Kim et al、2013)には数多くのシミュレータが利用可能だが、私たち(著者ら)の知る限りでは、現在のところキャプチャプロセスのダイナミクスをin silicoでシミュレートできるツールは存在しない。このようなツールは、計算解析パイプラインだけでなく、キャプチャデザインの効率を評価するのにも役立つと考えている。

 この論文では、目標とするキャプチャシーケンシングデータをシミュレートする必要性を満たすためのソフトウェアパッケージであるCapSimを紹介する。プローブセットが与えられると、CapSimは、in silicoにおけるプローブハイブリダイゼーションのダイナミクスをシミュレートし、シーケンシングされるフラグメントセットを生成する。既存のHTSシミュレーションツールとは異なり、CapSimは、フラグメンテーション、フラグメントキャプチャ、シーケンシングなど、シーケンス処理のあらゆる段階をエミュレートする。 CapSimはJavaで書かれており、あらゆるコンピューティングプラットフォーム上でネイティブに実行できるため、バイオインフォマティクスコミュニティに簡単にアクセスできる(どのような環境のバイオインフォマティシャンでも利用できる)。

 シーケンシングプロセスはDNAの断片化から始まる。CapSimは所定のサイズ分布を有するゲノム配列からフラグメントを繰り返しサンプリングしてこのプロセスをシミュレートする。いくつかのデータセットからの断片サイズ分布に最もよく適合することがわかったlog-logistic分布を用いて断片長をモデル化する(論文の補足資料参照)。

 ターゲットキャプチャシーケンシングの次のステップでは、DNA断片にハイブリダイゼーションにした標的プローブとそのDNA断片はビーズからpull downされる。ビーズは標的プローブとハイブリダイズしたDNA断片と特異的に結合している。CapSimはプローブをDNA断片にマッピングすることでこのプロセスをシミュレートする。計算上効率的であるために、CapSimは最初にプローブをゲノム配列にマップし、DNA断片がゲノムからサンプリングされると、greedy algorithmを使用してDNA断片に結合できるプローブの最大数を決定する。我々(著者ら)は、キャプチャされる確率がバインドしたプローブの数に比例し、断片長に反比例するキャプチャプロセスの確率論的性質をモデル化した。ハイブリダイゼーションのダイナミクスのこのシミュレーションは、Kim et al. (2013)よりもより現実的なキャプチャシーケンシングデータを生成することが示されている。 Kim et al. (2013)は、キャプチャシークエンシングをシミュレーションするための唯一のツールである(論文の結果参照)。

 次いで、キャプチャされたフラグメントはin silico sequencingされる。 Illuminaシーケンシングのために、CapSimはクラスター形成のDNA断片分布を導入ししている。 それはLog-Logistic分布を使用して、キャプチャステップからシミュレートされたDNA断片からサンプリングを行う(論文の補足資料を参照)。これらの選択されたDNA断片は、DNA断片の両末端からエラーありで配列が読み取られペアエンドシークエンシングシミュレーションに使用される。 PacBioシークエンシングのために、CapSimは、所与の分布からのポリメラーゼが読む長さをシミュレートする(補足資料参照)。DNA断片トのシークエンシングをシミュレートする際、CapSimはポリメラーゼが読める長さに達するまで、PacBioエラープロファイルを使い、2つの鎖のコピーを交互に行う。

 

 

BioinfomaticsのSEQUENCE ANALYSISに発表された論文です。大半のデータはsupplementaryにあります。

 

capsimに関するツイート。

 

Japsa(Just Another JAva Package for Sequence Analysis)マニュアル

http://japsa.readthedocs.io/en/latest/install.html

 

ダウンロード

mac os 10.13、java1.6環境でテストした。

Github

リリースよりjapsaをダウンロードする。

https://github.com/mdcao/japsa/releases

tar zxvf JapsaRelease.tar.gz
cd JapsaRelease
./install.sh

コンソールに表示される指示に従いインストールする。最後の質問のHDF libraryがなければ"none"と打つ。ここではbin/にパスを通した。

cd bin/
echo 'export PATH=$PATH:`pwd`' >> ~/.bash_profile && source ~/.bash_profile

jsa.sim.capsim --help

$ jsa.sim.capsim --help

Simulate capture sequencing

 

Usage: jsa.sim.capsim [options]

Options:

  --reference=s   Name of genome to be 

                  (REQUIRED)

  --probe=s       File containing probes mapped to the reference in bam format

                  (default='null')

  --logFile=s     Log file

                  (default='-')

  --ID=s          A unique ID for the data set

                  (default='')

  --miseq=s       Name of read file if miseq is simulated

                  (default='null')

  --pacbio=s      Name of read file if pacbio is simulated

                  (default='null')

  --fmedian=i     Median of fragment size at shearing

                  (default='2000')

  --fshape=d      Shape parameter of the fragment size distribution

                  (default='6.0')

  --num=i         Number of fragments 

                  (default='1000000')

  --pblen=i       PacBio: Average (polymerase) read length

                  (default='30000')

  --illen=i       Illumina: read length

                  (default='300')

  --seed=i        Random seed, 0 for a random seed

                  (default='0')

  --help          Display this usage and exit

                  (default='false')

 

——

 

 

ラン 

genepanelのfasta配列が見つからなかったので、biomartで生成する。ここでは、指定した領域から配列を出力している(gene idを持っているなら、biomartでidから配列を生成する方が王道。IDを別種のID、または遺伝子名に変換したいならDavidを使う)。

 

1、配列の準備

Gene panelの領域は、Perkin Elmer: Amplicon Panel Kitsの領域を使う。

http://www.biooscientific.com/Illumina-Amplicon-Panels

ここではColorectal Cancer -1 kitのターゲット領域を選んだ。 

http://www.biooscientific.com/NEXTflex-Colorectal-Cancer-1-Amplicon-Panel

 

Ensembl - BIomartにアクセスする。

http://asia.ensembl.org/biomart/martview/f5938f5b76d2d943d8c4a176709e376a

f:id:kazumaxneo:20180810003230p:plain

Ensembl Genes 93を選択、Human genome GRCh38を選択。

 

左のタブからFilterを選択。様々な条件で配列などを抽出できる。代表的なデータベースのIDからも配列は抽出できるが、ここではbedファイルしかないので、ポジション情報から配列を抽出する。Multiple regionにbedの配列をペーストする。bedファイルのタブはあらかじめ":"に置換してある。

f:id:kazumaxneo:20180810003114p:plain

 貼ったところ。

 

左のメニューからAttributeタブを選択。SequencesとcDNA sequencesを選択。

f:id:kazumaxneo:20180810003900p:plain

SequencesとcDNA sequencesを選んだところ。

 

左上のResultsをクリックして、配列を生成する。Compressed fileをダウンロードする。

f:id:kazumaxneo:20180810004054p:plain

ターゲット領域のMulti-FASTAファイルが準備できた。テストランでは、これをprobes.faとして使う。 capsimのランに移る。

 

2、capsim実行。

probes.faをリファレンスにmappingする。GRCh38はEnsembl humanからダウンロードした。

bowtie2-build ref.fa ref
bowtie2 --local --very-sensitive-local --mp 8 --rdg 10,8 --rfg 10,8 -k 10000 -f -x ref -U probes.fa -S probes.sam
samtools sort -O BAM probes.sam > probes.bam && samtools index probes.bam

capsimを実行。

#pacbio
jsa.sim.capsim --reference ref.fa --probe probes.bam --ID someid --fmedian 5000 --pacbio output --pblen 3000 --num 20000000

#Miseq
jsa.sim.capsim --reference ref.fa --probe probes.bam --ID someid --fmedian 500 --miseq output --illen 300 --num 20000000
  •  --ID    A unique ID for the data set  (default='')
  • --fmedian    Median of fragment size at shearing (default='2000')
  • --pacbio    Name of read file if pacbio is simulated (default='null')
  • --pblen      PacBio: Average (polymerase) read length   (default='30000')
  • --num        Number of fragments  (default='1000000')
  • --miseq     Name of read file if miseq is simulated (default='null')
  • --illen         Illumina: read length  (default='300')

マッピング結果。

figv -g ref.fa miseq.bam,Colorectal_Cancer_-1.bed

f:id:kazumaxneo:20180810090305p:plain

 

引用

Simulating the dynamics of targeted capture sequencing with CapSim
Cao MD, Ganesamoorthy D, Zhou C, Coin LJM

Bioinformatics. 2018 Mar 1;34(5):873-874. 

 

参考

TruSeq Amplicon Cancer Panel

https://jp.illumina.com/content/dam/illumina-marketing/apac/japan/documents/pdf/2012_illumina_truseq_amplicon_cancer_panel.pdf

 

 

 

 

 

YSTRなどのショートタンデムリピートを探す STRScan

 

 マイクロサテライトまたは単純配列反復(SSR)とも呼ばれる短いタンデムリピート(STR)は、タンデム反復ユニット(1〜6 bps)を約2〜30個含む短いストレッチのDNAである。 STRは、ヒトなどの哺乳動物ゲノムを含む多くの原核生物および真核生物ゲノムに存在する[論文より 1,2]。 50万以上のSTRがヒトゲノムで特徴づけられており、ヒトゲノム全体の約3%を構成している[ref.3]。多型性(polymorphism)が高いため、STRは遺伝マーカーとして一般的に使用されている[ref.4-7]。特に、STR遺伝子座の小さなセットは、1つの(時には未知の)供給源からの少量のヒトDNAにおいてPCRを用いて複数のSTR遺伝子座が増幅された同一性および親の検査に使用することができる(ref.8,9)。 PCR産物の長さは、他の供給源由来の1つ以上のヒトDNAサンプル(例えば、フォレンジックデータベース中)と比較される。このSTRタイピング手続きは、大部分が標準化されており、そのようなテストの対象となるSTR遺物は、STRBase [ref.10]などのpublucデータベースに収集されている。

 STRは大部分が「ジャンクDNA」と考えられているが、STRの中にはタンパク質コード遺伝子が含まれており、その産物は転写調節に関与するグルタミンリッチなドメインなど高等生物に機能的役割を果たすことが示されている[ref.11]。非コード領域のSTRでも、それらの下流遺伝子の発現調節に関与している可能性がある[ref.12]。特に、トリヌクレオチドリピートの不安定な拡大は、ヒト疾患に関連することが知られている[ref.13]。抜群の例はハンチントン病であり、ハンチントン(HTT)遺伝子におけるCAGトリプレットのタンデムリピートの拡大に​​よって引き起こされ、脳変性に至る可能性のある異なるタンパク質形態をもたらす遺伝的な神経変性疾患である[ref.14]。したがって、疾患感受性対立遺伝子におけるSTRプロファイリングは、これらの遺伝的障害を遺伝する高いリスクを有する個体のための遺伝子検査ツールとしてしばしば用いられる[ref.15]。

 STRの伝統的な実験分析は、プライマーをSTRに隣接するユニークな領域に設計し、PCRによる標的STR遺伝子座を増幅し、続いてゲル電気泳動を用いたPCR産物の長さ測定が行われる。長さはSTRのコピー数によって決まる。近年、次世代シーケンシング(NGS)技術の急速な進歩により、全ゲノムシーケンシング(WGS)がより手頃なものになっている。Tandem repeat finder[ref.16]のような従来のソフトウェアツールは、ヒトゲノムのようなアセンブリされたゲノム配列から新規なSTRを検出することができる[ref.17]。 WobデータのSTRプロファイリングに直接適用できるlobSTR [ref.18]やSTR-FM [ref.19]などの新しいソフトウェアツールとパイプラインも開発されている。最近の研究では、NGSデータからSTRを分析する能力が示されており、ヒト染色体STR(Y-STR)のプロファイルの分析を通じて、ヒトゲノム配列データからヒト個体の姓を推測することができ、オンラインの系譜(genealogy)データベース[ref.20]などがある。ゲノムワイドのSTRプロファイリングツールは、集団におけるSTR変異の調査を可能にしている[ref.19,21,22]。かなりの数のSTR遺伝子座がヒト集団中に広範に発現され、これはヒトゲノムにおける新規なregulatory variantsセットを表すかもしれないことが示された(ref.23)。

 本稿では、次世代シーケンシング(NGS)データのSTRプロファイリングのためのスタンドアロンのソフトウェアツールSTRScanを紹介する。ここでは、STRプロファイリングのためにターゲットアプローチを採用した。ゲノム全体スケール(lobSTRまたはSTR-FMの目標)ですべてのSTRを採掘するのではなく、ユーザーが定義したSTR locusのサブセット、つまり法医学または遺伝子検査に有用であり[24]、よって時間がかかるゲノムワイドのマッピング手順を回避するということである。結果として、本発明者らの方法は、リファレンスゲノム中から線状DNA配列として表されるSTR遺伝子座を配列比較することによる制限は起きず、DNA配列中のSTR同定のためファインチューニングしたアラインメントアルゴリズムを採用できることになる。本発明者らの方法は、全ゲノムシーケンシングデータからのマイニングに加え、PCRによるSTRエンリッチメントを行ったターゲットSTRのNGSデータに直接適用することができる。

 STRScanにおいて、各STR遺伝子座は1つまたは複数のタンデムコピーを含むパターンとその間にある配列によって表される。これはリファレンスゲノムから構築できる(例えばヒト)、そしてgreedy seed-extension戦略を使用して、シーケンシング配列の各STR遺伝子座を同定する(一部略)。

 著者らは、Sangerシーケンサー[ref.26]およびIlluminaシーケンサー(1000 Genomes Project [ref.27]によって生成された)の全ゲノムシーケンシング(WGS)データに対してSTRScanを試験した。 STRScanは、lobSTRやSTR-FMのような既存のソフトウェアツールと比較して、同等かそれ以下の計算時間を使用しながら、NGSデータからより多くのSTRを大幅に(平均20%)識別することができた。STRScanはDNA増幅と続く次世代シーケンシングによるSTRタイピングに使う準備が整っている。

 

STRScanに関するツイート。

 

STRScan HP

f:id:kazumaxneo:20180807213227p:plain

 

インストール

cent OS6のpython2.7.10でテストした。

依存

  • python2

プログラム本体は公式HPからダウンロードする。

http://darwin.informatics.indiana.edu/str/

tar -zxvf STRScan.tar.gz
cd STRScan/
make #binaryがはあるがsegmentation errorを起こすなら再ビルド

./STRScan

$ ./STRScan -h

./STRScan: option requires an argument -- 'h'

STRScan -i inpfile -p patfile -o outfile -g ngap -w window

-i InpFile: The input file name of sequence reads

-p PatFile: The input file name of short tandem repeat (STR) patterns

-o OutFile: The output file with profiled repeat copies 

-g maximum allowed gaps

-w maximum allowed windows of copy numbers

-q: input file is in fastq format (default in fasta format) 

-l: minimum lengths of the supported alignments of the spanning sequence

 

 

テストラン

cd STRScan/example/

 ランにはshort tandem repeatファイルが必要になる。テストではYSTR_pat(Y染色体のSTR:wiki)を使う。

> head -n 20 YSTR_pat

$ head -n 20 YSTR_pat

>DYS19 (TCTA)12CCTA(TCTA)3

atgccacccttttattatttctacggatattacttggactggaagacaag

gactcaggaatttgctggtcaatctctgcacctggaaatagtggctgggg

caccaggagtaatacttcgggccatggccatgtagtgaggacaaggagtc

catctgggttaaggagagtgtcactata

---

aaacactatatatatataacactatatatataatactatatatatattaa

aaaacactataacagaaactcagtagtcatagtgaaatcaaaaaataatc

acagtcaatttgatctcatacctagactgaaatatgaaacttcaaaagaa

aagaatgttaagaactttgggcttgtcaaaattttcctacatagataa

---

>DYS19  (TAGA)3TAGG(TAGA)12

gattattttttgatttcactatgactactgagtttctgttatagtgtttt

ttaatatatatatagtattatatatatagtgttatatatatatagtgttt

---

tatagtgacactctccttaacccagatggactccttgtcctcactacatg

gccatggcccgaagtattactcctggtgccccagccactatttccaggtg

---

>DYS385a (GAAA)14

agtgcatgtaatcccagctacttgggaggctgaggcagggtaattgtttg

このshort tandem repeatリストが指定したFASTAファイルtest.faに見つかるかを調べる。

STRScanを実行する。

STRScan -i test.fa -p YSTR_pat -o test-5.out -g 5 -w 3 -l 5

検索結果のFASTAとhit部位の情報ファイルが出力される。

 

残り3つのshort tandem repeatファイルでも同様にランする。

STRScan -i test.fq -p YSTR_pat -o test_fq-5.out -g 5 -w 3 -l 5 -q
STRScan -i test.fq -p CODIS_pat -o test_c-5.out -g 5 -w 3 -l 5 -q
STRScan -i test.fq -p CODIS_pat -o test_c_fq-5.out -g 5 -w 3 -l 5 -q

bedに変換する。

python ../ParseResult.py -r1 ref_CODIS.bed -f1 test_c-5.out | awk '!NF || !seen[$0]++' > test_c-5.bed

> cat test_c-5.bed

$ cat test_c-5.bed

CSF1PO -8|1 4 11 13

D7S820 NA|0 4 0 13

  1. First column: STR Marker
  2. Second column: (STRScan allele -Reference allele)*STR period | Number of supporting reads
  3. Third column: STR period Fourth column: STRScan reported allele
  4. Fifth column: reference allele  

 

ラン 

fastqの分析。fastaフォーマットの場合は"-q"を外す。

STRScan -i input.fa -p pattern_file -o output -g 5 -w 3 -l 5 -q
  • -i    the reads file (in fasta or fastq format; default is fasta, for fastq input, use -q)
  • -p   the input file of the STR library (in the format as you know)
  • -o   there output report file (there is also another file with .seq ext with the matched reads sequences in fasta format)
  • -g   alignment bandwidth, default 5
  • -l    the minimum length for the spanning sequence (upstream and downstream), default 5
  • -w   the maximum copy number exceeding the given copy number of STR, default 3 (e.g., for (CTT)10, the algorithm will allow for maximum 13 copies of the repeat units).
  • -q    input file is in fastq format (default in fasta format) 

出力はテストと同じようなbedファイルと、サポートするリード情報になる。

 

引用

STRScan: targeted profiling of short tandem repeats in whole-genome sequencing data

Haixu Tang and Etienne Nzabarushimana

BMC Bioinformatics. 2017; 18(Suppl 11): 398.

 

WIGファイルの圧縮と解凍を行う smallWig

 NGSのシークエンシング技術の発達により、DNA / RNAのシーケンスと発現解析のコストが劇的に減少した。 RNA-seqは、様々な種および生物、ならびに異なる器官および細胞集団の全トランスクリプトーム情報を提供する、重要かつ安価な技術になった。RNA-seq実験によって生成された膨大な量のデータは、データ記憶コストおよび通信帯域幅の要求を大幅に増加させる。 bigWigやcWigなどのRNA-seqデータ用の現在の圧縮ツールは、汎用の圧縮器(gzip)を使用しているが、最適な圧縮方式については改善の余地がある。著者らはsmall-wigというWIGデータ用のロスレス圧縮方式を新たに開発した。

 RNA-seq WIGファイルに対してsmallWig圧縮アルゴリズムのさまざまなバリエーションをテストした。その結果、smallWigは平均して18倍の圧縮率向上、最大2.5倍の圧縮時間の改善、bigWigと比較した場合の1.5倍の減圧時間の改善を示している。テストされたファイルでは、アルゴリズムのメモリ使用量は決して90 KBを超えなかった。考案された形式は、視覚化、要約統計解析、圧縮ファイルからの高速照会を可能にするランダムアクセス機能を備えており、bigWigと比較して桁違いの改善をもたらし、圧縮率がcWigによって生成されるもののほんの一部にすぎないことを示している。

 

 

インストール

cent OS6に導入した。

Github

git clone https://github.com/brushyy/smallWig.git
cd smallWig/
make 

> ./smallwig2wig

$ ./smallwig2wig 

To use:

 smallwig2wig [InputFile] [OutputFile] 

options: 

-s [ChrmName (e.g. chr1)] [Query Start (integer)] [Query End (integer)] 

subsequence query 

-p [total number of processes]

parallel realization, only availabe if -s is disabled and -r is enabled in encoding

> ./wig2smallwig 

$ ./wig2smallwig 

To use:

wig2smallwig InputFile OutputFile 

options: 

-m [N=0..9, uses 3 + 3*2^N MB memory, decompress should use same N] 

context mixing 

-r [B, encode block size from 8 to 32]

random access and encode by blocks of size 2^B

-p [total number of processes] 

parallel realization, only available if -r is enabled and -m is disabled

 

ラン

bamからwiggle形式への変換(紹介)(*1 )。

bam2wig input.bam

出力ディレクトリが作られ、中に input.wigができる。 

 

4スレッドパラレルに使い、smallwigに変換。

wig2smallwig input.wig out.swig -p 4
  •  -m [N=0..9, uses 3 + 3*2^N MB memory, decompress should use same N] 

 

全て解凍する。

smallwig2wig in.swig out.wig

chr1の300-500だけ解凍する。

smallwig2wig in.swig out.wig -s chr1 300 500

 

引用

smallWig: parallel compression of RNA-seq WIG files.

Wang Z, Weissman T, Milenkovic O.

Bioinformatics. 2016 Jan 15;32(2):173-80.

 

*1

似たコマンドが他にも存在するので注意してください。

 

50近いバクテリアの1万以上の機能未知遺伝子欠損の影響をまとめた Fitness Browser

注意: タイトルには 機能未知遺伝子だけ相手にしたように書いてますが、実験はゲノム全体の遺伝子をターゲットにランダムかつ網羅的に行われており、mutant phenotypeの影響を調べた遺伝子数自体は1万よりずっと多くなります。実験結果をまとめたFitness Browserデータベースには、アノテーションがついた遺伝子も含めて実験結果を閲覧、比較できるようになっています。

8/6,8/7 誤字脱字修正 

2019 6/25 Preprint追記

2019 9/5 36生物に増加を確認

2020 初頭 37生物に増加したのを確認

2020 10/11 41生物 

2020 12/15 42生物

2022 1/12 46生物

2024 2/08 48生物

2024 04/19 49生物

 

 

 何千もの(Thousands of)バクテリアゲノムがシーケンシングされ、数百万のタンパク質の推定アミノ酸配列が明らかにされてきた。これらのタンパク質のわずかな割合しか実験的に研究されておらず、ほとんどのタンパク質の機能は、実験的に特徴付けられたタンパク質との類似性から予測されているだけである。しかし、バクテリアタンパク質の約3分の1には、この手法でアノテーションを付ける十分な相同性を持つ機能解析済みのタンパク質が存在しない(論文より ref.1)。さらに、これらの予測はしばしば不正確であり、これは相同なタンパク質が異なる基質特異性を有する可能性があることが1つの理由である(ref,2)。このsequence-to-function のギャップは微生物学にとってますます増大する課題である。なぜなら、新しいバクテリアゲノムは常に増加する速度でシーケンシングされているが、実験によるタンパク質の機能解析のスピードは比較的遅いままであるからである(ref.1)。

 未知のタンパク質の機能を研究するための1つのアプローチは、複数の条件下での対応する遺伝子の機能喪失突然変異の結果を評価することである(ref,3,4,5,6)。突然変異の表現型を比較ゲノミクスと組み合わせ、タンパク質の一部について証拠に基づきアノテーションを付与することができる(ref.3,4)。トランスポゾン突然変異誘発とその後のシークエンシング(TnSeq)は、何千何万もの異なる突然変異株が混ざったまま増殖する単一の実験からゲノムワイドの突然変異表現型を測定する(ref.7, 8)。 TnSeqと各変異株のrandom DNA barcoding(RB-TnSeq)とのカップリングは、多くの条件で表現型を測定することを容易にする(ref.9)。この論文では、RB-TnSeqを使用して、複数の実験条件下で32のバクテリアのそれぞれから、何千もの(Thousands of)遺伝子の突然変異表現型を系統的に探索し、配列間のギャップを解明する(論文より 図1a)。

 

1、抽出したgenomic DNAにミニトランスポゾン(nptIIによるカナマイシン耐性あり)とトランスポザーゼを作用させ(認識サイトは"TA")、ミニトランスポゾンカセット入りgenomic DNAを作る。

2、1で得た transposed DNAを使いバクテリアを形質転換する。

3、形質転換したバクテリアを様々な条件で継代する。

4、バクテリアから選抜前後のDNAを抽出する。

5、MmeI(リンク)(認識サイトから18-20 bp離れた部位を切る)で消化する。トランスポゾンカセットは両端に20 bp導入された部位のゲノム配列を付けた状態で切り出される(cの真ん中のイラスト)。

6、図のprimer1と2でPCRをかけ、プライマーとゲノムを含む領域をエンリッチする(cのイラストの赤い領域はマーカーであり、シーケンシングの必要はない)。

7、次世代にかけ、(アダプターを除き、)リファレンスゲノムにmappingする。20 bpしかないので、間違ってmappingされる可能性もあるが、そのような部位は実験から除外される。

8、指定条件でフィルタリングし(*1)、TMMなどで正規化後(ツール例)、遺伝子ごとに、培養前後でタグの数が増減したか調べる。

f:id:kazumaxneo:20180805124314j:plain

Tn Seqの概略。ref.8(Tn-seq; high-throughput~:  Tim van Opijnen, et al)より転載。

本論文では、TnSeqを何万回(バクテリア数  x 実験した条件)と行い、結果をまとめている。

 

  • メモ1: 培養条件やgrowth mediaは、supplementaty tableファイル(S18)や、Fitness Browserの各バクテリア及び各条件のページに記載されている。本番の条件は、あらかじめ96-well( 150µl volume)で培養を行い、TECAN infinite 200 PRO(リンク)などでOD600をモニターし、効果的かどうか調べた上で選択されている(*2)。形質転換方法(conjugationかelectroporation)はtable S20参照。大半の疑問に対する回答は論文のmethod  sectionに書かれている。著者らの1つ前の論文も読んでおく(リンク)。
  • メモ2

    例えばある遺伝子Aのトランスポゾンタグが、指定条件の培養開始前は100で、培養後は0になっているなら、遺伝子Aはその条件への適応に必須な遺伝子であることが強く示唆される。そもそも培養前から0なら、遺伝子Aは生育に必須なessential geneであることが強く示唆される。ある条件での培養後に有意に増加しているなら、遺伝子Aは指定した培養条件では増殖を抑える負の役割を持っていたことが示唆される(*4)。そのため、色々な部位にタグが入った各々異なるlocusのノックアウト株をごちゃまぜにして(poolして)しばらく培養すると、その遺伝子破壊によって分裂速度に変化が生じることで、培養後の遺伝子破壊株の数に差が生じる(いわゆるダーウィン進化が起きる)。言い換えると、locusにタグを持つセルの適応度に応じて遺伝子ごとに見つかるタグ数が増減する(あるlocusにタグが入った細胞はすごく減り、別のlocusにタグが入った細胞は増える)。このタグ数変化を、論文のFitness BrowserではFitness valuesという単位に正規化して変換し(0が変化なし)、遺伝子ごとにデータベース化している。 各条件、3万〜50万の変異株のプールから調べている。総数は実験条件とバクテリア数の掛け算になるので、数百条件を32バクテリアで行うと、とんでもない量の実験をこなさなければならない。Supplementaryデータをみると、データが細かすぎて目がおかしくなる。

実際にはバクテリアによって少し改変したプロトコルが用いられている。詳細はhttps://mbio.asm.org/content/6/3/e00306-15.full参照。

 

  • Fitness Browser ヘルプ

http://fit.genomics.lbl.gov/cgi-bin/help.cgi

 

シュードモナス属など8種出てきているが、これは、シュードモナスの多様性が大きく、種間、属間の遺伝子保存性が低いため、比較時の精度を上げる目的で使われている(論文より)。

 

 

 

使い方

Fitness Browser にアクセスする。

f:id:kazumaxneo:20180805120237j:plain

 

例えばαプロテオバクテリアのAzospirillum brasilense Sp245のデータを開いてみる。

f:id:kazumaxneo:20180805161215j:plain

nitrogen sourceが35と最も多い。nitrogen sourceの35をクリックしてみる。

 

使われた窒素源一覧(実験が成功したものだけ掲載されている)が表示される。

f:id:kazumaxneo:20180805161413j:plain

一番上の窒素源がAmmonium chlorideの実験をクリック。

 

画面が切り替わる。この条件で特異的な変化を示した遺伝子を調べるにはSpecificをクリック。

f:id:kazumaxneo:20180805161637j:plain

 

2遺伝子検出されている。上のAZOBR_RS25125をクリック。

f:id:kazumaxneo:20180805161948j:plain

 

fitnessが-2以上なのは、上2つのAmmonium chlorideだけなのが確認できる。

f:id:kazumaxneo:20180805162107j:plain

fitnessは、その条件でgrowthへの影響がなければゼロになる。0以下のfitness値はその条件へのfitnessが下がったことを意味し、0以上のfitness値は、その条件へのfitnessが上がっていることを意味する。ヘルプによれば、-1から1の範囲はばらつきで結果の解釈は不明瞭であるが、-2以下、または2以上になると強いfitness効果があると記載されている。値の信頼度は隣にt-like test(t値やZ scoreと同じスケールの値)で示される。データが数千あるため、tが-4以下、または4以上(すなわち|t| > 4)をsiginificantと記載している。

 

次に+ Geneタブをクリックする。200遺伝子以上検出されているが、fitnessが最大の遺伝子でもfitnessは1.8に留まっている(ただしt scoreは2を超えている)。

f:id:kazumaxneo:20180805162235j:plain

 

by conditionから調べても同じことができる。また、by Genesからは、遺伝子名で検索できる。

Fitness Browser - Exp Search

f:id:kazumaxneo:20180805162720j:plain

 

試しに、by Genesから、pyruvate dehydrogenase complexを調べてみる。生物種はさっきと同じAzospirillum brasilense Sp245とする。

f:id:kazumaxneo:20180805163320j:plain

 

E1ユニットをコードする遺伝子をクリック。

f:id:kazumaxneo:20180805163520j:plain

 

fitnessは "no data"になっている。これはTnseqでシーケンスされたタグがゼロまたはゼロ近くでデータがえられなかったか(=> essential gene)、実験条件を満たせなかったため、データから除外された可能性を表している(*1)。

f:id:kazumaxneo:20180805190920p:plain

近隣の遺伝子も表示されている。よく見ると、E1の上流には、画面に収まる範囲でno dataになっていないORFが3つある(しかし3つともphenotypeは"insignificant")。その内、2つはhypothetical proteinとなっている。hypothetical proteinの1つAZOBR_RS22225の行の右端のinsigをクリックしてみる。

 

調べてみると、hypothetical proteinではあるが、炭素源、窒素源、ストレス(飢餓、抗生物質、温度変化などなど)、mobilityなど様々な条件でfitnessが増減していた。

f:id:kazumaxneo:20180805164641j:plain

近接のORFはどうなっているだろうか?(同じオペロンユニットで共転写されていたり、同じ転写因子の制御可にある可能性もある)。隣接遺伝子のfitness一覧を見るには、NearByのタブをクリックする。 f:id:kazumaxneo:20180805165002j:plain

AZOBR_RS22225の下流側に同じ向きで隣接するAZOBR_RS22220は、fittingのパターンが同じとは言い難い。AZOBR_RS22225とAZOBR_RS22220はオペロンかもしれないが、少なくとも機能は異なる可能性が高まった。AZOBR_RS22225の上流側に同じ向きで隣接するAZOBR_RS2223については、Tnseqのデータが出ていない。AZOBR_RS2223をクリックするとNCBIなどから引っ張ってきているアノテーションの詳細が表示される。DNA topoisomerase IVのアノテーションがついているので、必須遺伝子のためtagのシーケンシングが出なかったのだろうか(ORFサイズが大きいこともessential geneの可能性が高めている => シーケンスデプスにもよるが、サイズが大きいほど、たまたまtag数がゼロか非常に少なかったという可能性は低くなる)...などなど、色々考えられる。

 

次に、距離を問わず同じfitness傾向を示すORFを探すため、Cofitのタブをクリックする。AZOBR_RS22225と同じ傾向を示すTop cofit リストが表示される。同じ傾向を示した遺伝子は、(著者らによれば)同じpathwayで機能する可能性が高い。

f:id:kazumaxneo:20180805192030p:plain

 

該当するバクテリアを扱っていない場合、BLAST解析して、Fitness Browserで調べられた遺伝子から、クエリとホモロジーが高い遺伝子をpick upできる(似た一次構造をもつタンパク質ならfitnessも似ている可能性が高い)。

BLAST

f:id:kazumaxneo:20180805200220p:plain

ORFのアミノ酸配列、または塩基配列をペーストしてsearchをクリック。

 

しばらくするとblast結果が出てくる。e-value閾値を超えたリストが並ぶ。

f:id:kazumaxneo:20180805200156p:plain

 十分な相同性があるなら、同様のmutant phenotypeを示す可能性も高くなる。

 

他にもいくつかの機能があり、tophitを抽出してきたり、選択したデータから図を描いたりできます。

f:id:kazumaxneo:20180805195120p:plain

 

感想

ものすごい実験の数とデータ量に圧倒されますが、その分、使いこなせば、武器になるデータベースです。(なんせ、個々のバクテリアの研究者が実験を始める前に論文の著者らがknock out株を作ってgrowthが変化するかどうかをいろんな条件で手当たり次第に調べ、さらに、そのデータを比較可能な形で公開してくれているわけです。とんでもない話です)。

このデータベースの使い方ですが、いきなりhypothetical proteinを探し始めるより、まずはこれまで、または現在進行形で機能解析している遺伝子や、第三者によって機能がよく調べられきた遺伝子を使って、どんなfitnessを示すか調べてみて下さい。遊んでいるうちに使い方を学べることもありますが、機能解析が幅白い文脈で調べられている遺伝子を使う方が、この手法の可能性と限界が見えてくるんじゃないかと思います(*5)。

 

引用

Mutant phenotypes for thousands of bacterial genes of unknown function

Price MN, Wetmore KM, Waters RJ, Callaghan M, Ray J, Liu H, Kuehl JV, Melnyk RA, Lamson JS, Suh Y, Carlson HK, Esquivel Z, Sadeeshkumar H, Chakraborty R, Zane GM, Rubin BE, Wall JD, Visel A, Bristow J, Blow MJ, Arkin AP, Deutschbauer AM

Nature. 2018 May;557(7706):503-509. 

https://www.natureasia.com/ja-jp/nature/557/7706/s41586-018-0124-0/機能が未知の数千の細菌遺伝子の変異表現型

 

*1

論文の"Identifying essential or nearly essential genes"のパラグラフを参照。タグの分布をPoisson distributionと仮定し、遺伝子のサイズから偶然tagがゼロになる可能性が棄却された遺伝子のみ、Fitness Browserにデータが示されている。

 

*2

補足表には、本実験以上を断念した条件などもまとめられている(S4)。例えば、カナマイシンにnativeに耐性があった、など。

 

*3

Tn-Seqを説明した動画:

Tn-seq in Rhodobacter sphaeroides - mSystems®(American Society for Microbiology)

          2:20ごろに実際の挿入状況。 

 

*4 

変動するのは生物学的要因以外も考えられる。バイアスは先行研究で議論されている(pubmed

 

追記

*5

in vitroの解析で機能がわかっていると思っていたタンパク質に別の機能も備わっていることがこのデータから見えてくるかもしれません。

 

2019 6/25 追記

Large-scale chemical-genetics of the human gut bacterium Bacteroides thetaiotaomicron

Hualan Liu, Morgan N. Price, Hans K. Carlson, Yan Chen, Jayashree Ray, Anthony L. Shiver, Christopher J. Petzold, Kerwyn Casey Huang, Adam P. Arkin, Adam M. Deutschbauer
doi: https://doi.org/10.1101/573055

のデータが追記され、現在35種のデータを利用できるようになっています。

 

関連

GapMindやKEGGなどへのリンクも追加されています。

 

sam/bamがmalformedではないか調べるPicardのValidateSamFile

sam/bamをいじっていると、ヘッダーが無かったり重複したり、ダウンロードが不完全だったり、様々な理由でおかしくなってしまうことがある。PicardのValidateSamFileはsam/bamにエラーがないか分析するコマンド。実行するとエラーが見つかったところを教えてくれる。

 

GATKより。

https://software.broadinstitute.org/gatk/documentation/article.php?id=7571

f:id:kazumaxneo:20180804171929p:plain

 

Picard-toolsのインストール

 brewで導入できる。

brew install picard-tools

picard ValidateSamFile

$ picard ValidateSamFile

ERROR: Option 'INPUT' is required.

 

USAGE: ValidateSamFile [options]

 

Documentation: http://broadinstitute.github.io/picard/command-line-overview.html#ValidateSamFile

 

Validates a SAM or BAM file.

This tool reports on the validity of a SAM or BAM file relative to the SAM format specification.  This is useful for

troubleshooting errors encountered with other tools that may be caused by improper formatting, faulty alignments,

incorrect flag values, etc. 

 

By default, the tool runs in VERBOSE mode and will exit after finding 100 errors and output them to the console

(stdout). Therefore, it is often more practical to run this tool initially using the MODE=SUMMARY option.  This mode

outputs a summary table listing the numbers of all 'errors' and 'warnings'.

 

When fixing errors in your file, it is often useful to prioritize the severe validation errors and ignore the

errors/warnings of lesser concern.  This can be done using the IGNORE and/or IGNORE_WARNINGS arguments.  For helpful

suggestions on error prioritization, please follow this link to obtain additional documentation on ValidateSamFile

(https://www.broadinstitute.org/gatk/guide/article?id=7571).

 

After identifying and fixing your 'warnings/errors', we recommend that you rerun this tool to validate your SAM/BAM file

prior to proceeding with your downstream analysis.  This will verify that all problems in your file have been addressed.

 

Usage example:

 

java -jar picard.jar ValidateSamFile \

I=input.bam \

MODE=SUMMARY

 

To obtain a complete list with descriptions of both 'ERROR' and 'WARNING' messages, please see our additional 

documentation (https://www.broadinstitute.org/gatk/guide/article?id=7571) for this tool.

 

 

Version: 2.18.9-SNAPSHOT

 

 

Options:

 

--help

-h                            Displays options specific to this tool.

 

--stdhelp

-H                            Displays options specific to this tool AND options common to all Picard command line

                              tools.

 

--version                     Displays program version.

 

INPUT=File

I=File                        Input SAM/BAM file  Required. 

 

OUTPUT=File

O=File                        Output file or standard out if missing  Default value: null. 

 

MODE=Mode

M=Mode                        Mode of output  Default value: VERBOSE. This option can be set to 'null' to clear the

                              default value. Possible values: {VERBOSE, SUMMARY} 

 

IGNORE=Type                   List of validation error types to ignore.  Default value: null. Possible values:

                              {INVALID_QUALITY_FORMAT, INVALID_FLAG_PROPER_PAIR, INVALID_FLAG_MATE_UNMAPPED,

                              MISMATCH_FLAG_MATE_UNMAPPED, INVALID_FLAG_MATE_NEG_STRAND, MISMATCH_FLAG_MATE_NEG_STRAND,

                              INVALID_FLAG_FIRST_OF_PAIR, INVALID_FLAG_SECOND_OF_PAIR,

                              PAIRED_READ_NOT_MARKED_AS_FIRST_OR_SECOND, INVALID_FLAG_NOT_PRIM_ALIGNMENT,

                              INVALID_FLAG_SUPPLEMENTARY_ALIGNMENT, INVALID_FLAG_READ_UNMAPPED, INVALID_INSERT_SIZE,

                              INVALID_MAPPING_QUALITY, INVALID_CIGAR, ADJACENT_INDEL_IN_CIGAR, INVALID_MATE_REF_INDEX,

                              MISMATCH_MATE_REF_INDEX, INVALID_REFERENCE_INDEX, INVALID_ALIGNMENT_START,

                              MISMATCH_MATE_ALIGNMENT_START, MATE_FIELD_MISMATCH, INVALID_TAG_NM, MISSING_TAG_NM,

                              MISSING_HEADER, MISSING_SEQUENCE_DICTIONARY, MISSING_READ_GROUP, RECORD_OUT_OF_ORDER,

                              READ_GROUP_NOT_FOUND, RECORD_MISSING_READ_GROUP, INVALID_INDEXING_BIN,

                              MISSING_VERSION_NUMBER, INVALID_VERSION_NUMBER, TRUNCATED_FILE,

                              MISMATCH_READ_LENGTH_AND_QUALS_LENGTH, EMPTY_READ, CIGAR_MAPS_OFF_REFERENCE,

                              MISMATCH_READ_LENGTH_AND_E2_LENGTH, MISMATCH_READ_LENGTH_AND_U2_LENGTH,

                              E2_BASE_EQUALS_PRIMARY_BASE, BAM_FILE_MISSING_TERMINATOR_BLOCK, UNRECOGNIZED_HEADER_TYPE,

                              POORLY_FORMATTED_HEADER_TAG, HEADER_TAG_MULTIPLY_DEFINED,

                              HEADER_RECORD_MISSING_REQUIRED_TAG, HEADER_TAG_NON_CONFORMING_VALUE, INVALID_DATE_STRING,

                              TAG_VALUE_TOO_LARGE, INVALID_INDEX_FILE_POINTER, INVALID_PREDICTED_MEDIAN_INSERT_SIZE,

                              DUPLICATE_READ_GROUP_ID, MISSING_PLATFORM_VALUE, INVALID_PLATFORM_VALUE,

                              DUPLICATE_PROGRAM_GROUP_ID, MATE_NOT_FOUND, MATES_ARE_SAME_END,

                              MISMATCH_MATE_CIGAR_STRING, MATE_CIGAR_STRING_INVALID_PRESENCE,

                              INVALID_UNPAIRED_MATE_REFERENCE, INVALID_UNALIGNED_MATE_START, MISMATCH_CIGAR_SEQ_LENGTH,

                              MISMATCH_SEQ_QUAL_LENGTH, MISMATCH_FILE_SEQ_DICT, QUALITY_NOT_STORED, DUPLICATE_SAM_TAG,

                              CG_TAG_FOUND_IN_ATTRIBUTES} This option may be specified 0 or more times. 

 

MAX_OUTPUT=Integer

MO=Integer                    The maximum number of lines output in verbose mode  Default value: 100. This option can be

                              set to 'null' to clear the default value. 

 

IGNORE_WARNINGS=Boolean       If true, only report errors and ignore warnings.  Default value: false. This option can be

                              set to 'null' to clear the default value. Possible values: {true, false} 

 

VALIDATE_INDEX=Boolean        DEPRECATED.  Use INDEX_VALIDATION_STRINGENCY instead.  If true and input is a BAM file

                              with an index file, also validates the index.  Until this parameter is retired VALIDATE

                              INDEX and INDEX_VALIDATION_STRINGENCY must agree on whether to validate the index. 

                              Default value: true. This option can be set to 'null' to clear the default value. Possible

                              values: {true, false} 

 

INDEX_VALIDATION_STRINGENCY=IndexValidationStringency

                              If set to anything other than IndexValidationStringency.NONE and input is a BAM file with

                              an index file, also validates the index at the specified stringency. Until VALIDATE_INDEX

                              is retired, VALIDATE INDEX and INDEX_VALIDATION_STRINGENCY must agree on whether to

                              validate the index.  Default value: EXHAUSTIVE. This option can be set to 'null' to clear

                              the default value. Possible values: {EXHAUSTIVE, LESS_EXHAUSTIVE, NONE} 

 

IS_BISULFITE_SEQUENCED=Boolean

BISULFITE=Boolean             Whether the SAM or BAM file consists of bisulfite sequenced reads. If so, C->T is not

                              counted as an error in computing the value of the NM tag.  Default value: false. This

                              option can be set to 'null' to clear the default value. Possible values: {true, false} 

 

MAX_OPEN_TEMP_FILES=Integer   Relevant for a coordinate-sorted file containing read pairs only. Maximum number of file

                              handles to keep open when spilling mate info to disk. Set this number a little lower than

                              the per-process maximum number of file that may be open. This number can be found by

                              executing the 'ulimit -n' command on a Unix system.  Default value: 8000. This option can

                              be set to 'null' to clear the default value. 

 

SKIP_MATE_VALIDATION=Boolean

SMV=Boolean                   If true, this tool will not attempt to validate mate information. In general cases, this

                              option should not be used.  However, in cases where samples have very high duplication or

                              chimerism rates (> 10%), the mate validation process often requires extremely large

                              amounts of memory to run, so this flag allows you to forego that check.  Default value:

                              false. This option can be set to 'null' to clear the default value. Possible values:

                              {true, false} 

 

 

ラン 

bamを分析する。MODE=SUMMARYを外すと、異常なリードを全てプリントする。

picard ValidateSamFile I=input.bam MODE=SUMMARY 

$ picard ValidateSamFile I=~/Documents/input.sam MODE=SUMMARY

#一部略

MAX_OPEN_TEMP_FILES=8000 SKIP_MATE_VALIDATION=false VERBOSITY=INFO QUIET=false VALIDATION_STRINGENCY=STRICT COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false GA4GH_CLIENT_SECRETS=client_secrets.json USE_JDK_DEFLATER=false USE_JDK_INFLATER=false

[Sat Aug 04 17:26:55 JST 2018] Executing as kamisakakazuma@kamisakBookpuro on Mac OS X 10.13.6 x86_64; OpenJDK 64-Bit Server VM 1.8.0_92-b15; Deflater: Intel; Inflater: Intel; Provider GCS is not available; Picard version: 2.18.9-SNAPSHOT

No errors found

 

sam/bamに異常が見つからなければ、最後に"No errors found"が表示される。問題がある場合、WARNINGSかERRORSで内容が示される。

 

 

bamのリードグループを改変してプログラムの挙動を確かめる。

samtools view -H input.bam > modify_header.sam
vi modify_header.sam

オリジナル

@RG     ID:X    LB:Y    SM:sample1      PL:ILLUMINA

改変後

@RG     ID:X    LB:Y    SM:sample1      SM:sample1      PL:ILLUMINA

レアケース過ぎて例としては良くないが、手っ取り早くサンプル名を2つにしてみた。

修正ヘッダを元のbamヘッダー情報と置換する。

samtools reheader modify_header sinput.bam > reheaer.bam

ValidateSamFileを実行。

picard ValidateSamFile I=reheaer.bam MODE=SUMMARY 

ERROR:HEADER_TAG_MULTIPLY_DEFINED内容も含めてエラーを検出できている。

 

個別のケースの修正方法については、GAATKチュートリアルで書かれている例を参考にして下さい。

GATK | Doc #7571 | Errors in SAM/BAM files can be diagnosed with ValidateSamFile

 

引用

Picard Tools - By Broad Institute

アンプリコンシーケンシングのdenoiseを行う DUDE-Seq

 

 次世代シーケンシング(NGS)技術と呼ばれる新しい世代の高スループット、低コストのシークエンシング技術が、大規模な比較研究や進化研究などの生物医学研究を再構成している[ref.2-4]。自動サンガーシーケンシングと比較すると、NGSプラットフォームは、大幅に短いリードが大量に生成され、これは新しいさまざまな計算上の課題を引き起こす[ref.5]。

 全ゲノムシーケンシング(WGS)、クロマチン免疫沈降(ChIP)シーケンシング、およびターゲットシーケンシングを含むNGS [ref.6,7]を用いるいくつかのDNAシーケンシング法がある。 WGSは、生物のゲノムを解析してすべてのバリアントを捕獲し、潜在的な原因変異を同定するために使用される。De novoゲノムアセンブリにも使用されている。ChIPシーケンシングは、転写因子および他のタンパク質のゲノムワイドDNA結合部位を同定する。この論文の焦点であるターゲットシーケンシング(exome sequencing and amplicon sequencing)は、研究者が特定の表現型に関与する可能性のある関心領域を調べることに焦点を当てることができる費用対効果の高い方法である。以前の研究[ref.8,9]によれば、ターゲットシーケンシングはしばしば疾患関連遺伝子のエキソンの完全なカバレッジをもたらし、代替の方法は約90〜95%のカバレッジをもたらす。したがって、臨床の現場では、研究者は診断評価のためターゲットシーケンシングに頼っている傾向がある。

 分子レベルで蛍光標識に基づいて配列を検出するため、NGS技術は、通常、エマルジョンPCRまたはsolid-phase amplification[ref.1]によって増幅される鋳型を必要とするイメージングシステムに依存する。これらの増幅およびイメージングプロセスはエラーの入ったリード生成する。それが起源となって、誤ったホモポリマー長、挿入/欠失/置換の導入、およびPCRキメラ[ref.6]が生じ得る。イルミナを含む多くのプラットフォームでは置換エラーが支配的であり、挿入および欠失(indels)によるホモポリマーエラーは、454パイロシーケンシングおよびイオントレントでも豊富である。

 エラーを含むリードは、下流の分析(例えば、バリアントコールおよびゲノムアセンブリ)を複雑にし、解析パイプライン全体の品質を低下させるため、適切に処理する必要がある。Soft-clipping[ref.7]はリードの各塩基のクオリティに応じてリードの3 '末端をトリムする(クオリティコントロールの)最も単純なアプローチだが、情報が失われる[ref.10]。より洗練された方法は、シーケンスデータのエラーの検出と訂正に焦点を当てている[ref.11-20]。イルミナシーケンシングプラットフォームが広く使用されていることを考えると、ほとんどのエラー訂正アルゴリズムは置換エラーをターゲットにしている[ref.10]。

 最近のレビュー[ref.10,21]に要約されているように、NGSデータの現在のエラー訂正方法は以下のように分類できる: k-mer(すなわち、長さkのオリゴヌクレオチド)frequency/スペクトラムベース、multiple sequence alignment(MSA)ベース、および統計的な誤差モデルに基づく方法。 k-merベースの方法の背後にあるアイデアは、入力スペクトラムから信頼できるk-merリストを作成し、このスペクトラムによって表されるコンセンサスに基づいて信頼できないk-mersを修正することである[ref.13,20,22-25]。 k-merの長さに加えて、カバレッジ(k-mer発生)情報は、信頼できるk-mersを決定するために重要である。エラーが稀でランダムであり、カバレッジが均一であるという仮定の下で、十分に大きなkについては、ほとんどのエラーがk-mersをゲノム中に存在しないk-mer配列に変えることを期待することは合理的である。したがって、NGSによって得られた高カバレッジゲノム配列について、疑わしいk-merを同定し、コンセンサスに基づいてそれらを修正することができる。 MSAベースの方法[ref.12,16,26]は、関連する配列をそれらの類似性に従ってアライメントし、様々な技法、通常はアラインメントカラムのコンセンサスに基づいてアライメントしたリードを修正することで機能する。このアライメントベースのスキームは、indelエラーを修正するために本質的に適している。初期の方法は計算上の問題を抱えていたが、最近のアプローチでは高度なindexing手法を使用してアライメントを高速化している。統計的エラーモデルに基づく方法[ref.27-29]では、エラー発生を含んだシーケンシングプロセスを捕捉する統計的モデルが開発されている。これに関して、経験的な混同モデルは、例えば、アライメント結果、Phredクオリティスコア(自動DNAシーケンシングによって生成された核酸塩基のクオリティ尺度)[ref.30]から得られた情報、または他のパラメータを利用して、データセットから作成されることが多い。

 上記の方法は、多くの場合、さまざまなプラットフォームで良好なパフォーマンスを発揮するが、いくつかの制限もある。第1に、k-merベースのスキームは、トランスクリプトミックス、メタゲノミクス、ヘテロジニアスな細胞サンプル、または事前増幅されたライブラリ[ref.21]のように、カバレッジが変化すると予想される場合、不適格となる傾向がある。。第2に、不均一なカバレッジに関連する上記の問題を抱えていないMSAベースの方法は、アライメントした列に対するヒューリスティックかつ洗練されたコンセンサス決定規則の適用を必要とし、このような規則はしばしば特定のアプリケーションまたはシーケンスプラットフォームではセンシティブになるかもしれない。第3に、統計的なエラーモデルベースの方法は、基礎となるDNA配列に対する追加の確率論的モデリング仮定のために、計算上高価なスキーム(例えば、期待値最大化(EM))を使用する。さらに、このようなモデリングの前提条件に対して妥当性と精度にはほとんど注意が払われない。さらに、ほぼ最適または健全なエラー訂正性能が達成されたかどうかの理論的分析が行われているかに対しては、言うまでもない。最後に、3つの方法を適用する多くの既存のスキームは、入力シーケンスをマージすることによって作成された代表のコンセンサスノイズ除去シーケンスのみを返すことが多い。したがって、消滅後の配列の数はしばしば保存されない。一部のアプリケーションでは、これによってダウンストリーム分析に矛盾が生じることがある。これらの限界に対処するために、多くの既存のツールがパフォーマンスを改善するために3つの方法を補完的に組み合わせている[ref.10、21]。

 この論文では、代わりに、正確なDNA配列のノイズ除去のためにDiscrete Universal DEnoiser(DUDE)[ref.31 リンク]というアルゴリズムを適用した。 DUDEは、各ソースシンボルを独立して統計的に同一に破壊するノイズメカニズムによって破損した有限値成分(ソースシンボル)を有する再構成シーケンスの一般的なセッティングのために開発された。 DNA denoising の文献では、そのようなノイズモデルは、統計的エラーモデルベースの方法で一般的に使用されるconfusion matrixと同等である。オリジナルの論文[ref.31]に示されているように、DUDEは以下の設定に対して厳しい性能保証を示している。既知のノイズメカニズムを前提とした場合にのみ、元のクリーンソースデータに対して確率的モデリング仮定が行われていない場合でも、データが増加するあらゆるソースデータに対して最適なノイズ除去性能を普遍的に達成することが示される。上記のDUDEの設定は、DNA配列のノイズ除去の設定に当てはまることに注意する。すなわち、クリーンなDNA配列の正確な確率モデルを確立するのは難しいが、リファレンス配列に基づいてシーケンシングデバイスのノイズモデル(confusion matrix)を仮定するのは簡単である。

(一段落省略)

上記のDUDEアルゴリズムのユニークな性質を利用して、著者らの実験では、他の最先端の手法よりも優れていることを示している。具体的には、ターゲットアンプリコンシーケンシング(例えば、ガン遺伝子、16S rRNA、植物および動物のシーケンシング[ref.32])の適用可能な領域の中で、異なるライブラリー調製法およびDNAポリメラーゼで得られた16S rRNAベンチマークデータセットを使用して、アルゴリズムを使用して、ターゲットアンプリコンシーケンシングデータセットは、しばしばWGSやChIPデータセットよりも深いシーケンシングカバレッジを持っており、従来のk-merベースの手法では頻繁に増幅バイアス問題が発生する[ref.33]。対照的に、DUDE-Seqでは、シーケンスカバレッジが深くなるにつれて、コンテキストカウントベクトルがより確率の高いコンテキストを蓄積することがあり、ノイズ除去の堅牢性が向上する。 DUDEの2つのバージョンを、別々に、置換エラーとホモポリマーエラーに適用する(以下省略)。

 

公式サイト

http://data.snu.ac.kr/pub/dude-seq/

f:id:kazumaxneo:20180804162506p:plain

Github

 DUDE-Seqに関するツイート。


使い方

ここではweb版を紹介する。

f:id:kazumaxneo:20180804144512p:plain

fasta、fastq、またdatの圧縮ファイル(zipかgzip)を指定してsubmitする。指定できるパラメータはアルゴリズム1 (substitution-error correction) のkサイズとアルゴリズム2 (homopolymer-error correction)のkサイズ。

 

ジョブが終わると、denoiseされた配列がダウンロードできるようになる。

f:id:kazumaxneo:20180804163113p:plain

 

 

 

追記

ローカル版のインストール

ubuntu18.04のpython2.7.14でテストした。

依存

  • python2
  • libboost-dev
  • libgsl0-dev
  • liblapack-dev
  • zlib1g-dev

pythonライブラリ

sudo apt install libboost-dev libgsl0-dev liblapack-dev zlib1g-dev
pip install biom-format==1.3.0 #最新の2.1.6だとbiom.tableをimportできなかった
pip install cogent
pip install numpy
pip install qcli

本体 GIthub

git clone https://github.com/datasnu/dude-seq.git
cd dude-seq/

> python Scripts/process_sff.py -h

$ python Scripts/process_sff.py -h

Usage: process_sff.py [options] {-i/--input_dir INPUT_DIR}

 

[] indicates optional input (order unimportant)

{} indicates required input (order unimportant)

 

This script converts a directory of sff files into FASTA, QUAL and flowgram files.

 

 

Example usage: 

Print help message and exit

 process_sff.py -h

 

Simple example: Convert all the sffs in directory "sffs/" to fasta and qual.

 process_sff.py -i sffs/

 

Convert a single sff to fasta and qual.

 process_sff.py -i sffs/test.sff

 

Flowgram example: Convert all the sffs in directory "sffs/" to fasta and qual, along with a flowgram file.

 process_sff.py -i sffs/ -f

 

Convert a single sff to fasta and qual, along with a flowgram file.

 process_sff.py -i sffs/test.sff -f

 

Output example: Convert all the sffs in directory "sffs/" to fasta and qual, along with a flowgram file and write them to another directory.

 process_sff.py -i sffs/ -f -o output_dir

 

Options:

  --version             show program's version number and exit

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

  -v, --verbose         Print information during execution -- useful for

                        debugging [default: False]

  --no_trim             do not trim sequence/qual (requires --use_sfftools

                        option) [default: False]

  -f, --make_flowgram   generate a flowgram file. [default: False]

  -t, --convert_to_FLX  convert Titanium reads to FLX length. [default: False]

  --use_sfftools        use the external programs sfffile and sffinfo for

                        processing, instead of the equivalent python

                        implementation

  -o OUTPUT_DIR, --output_dir=OUTPUT_DIR

                        Input directory of sff files [default: same as input

                        dir]

 

  REQUIRED options:

    The following options must be provided under all circumstances.

 

    -i INPUT_DIR, --input_dir=INPUT_DIR

                        Input directory of sff files or a single sff filepath

                        [REQUIRED]

 

 

 

追記

ローカル版のインストール

ubuntu18.04のpython2.7.14でテストした。

依存

  • python2
  • libboost-dev
  • libgsl0-dev
  • liblapack-dev
  • zlib1g-dev

pythonライブラリ

sudo apt install libboost-dev libgsl0-dev liblapack-dev zlib1g-dev
pip install biom-format==1.3.0 #最新の2.1.6だとbiom.tableをimportできなかった
pip install cogent
pip install numpy
pip install qcli

本体 GIthub

git clone https://github.com/datasnu/dude-seq.git
cd dude-seq/

> python Scripts/process_sff.py -h

$ python Scripts/process_sff.py -h

Usage: process_sff.py [options] {-i/--input_dir INPUT_DIR}

 

[] indicates optional input (order unimportant)

{} indicates required input (order unimportant)

 

This script converts a directory of sff files into FASTA, QUAL and flowgram files.

 

 

Example usage: 

Print help message and exit

 process_sff.py -h

 

Simple example: Convert all the sffs in directory "sffs/" to fasta and qual.

 process_sff.py -i sffs/

 

Convert a single sff to fasta and qual.

 process_sff.py -i sffs/test.sff

 

Flowgram example: Convert all the sffs in directory "sffs/" to fasta and qual, along with a flowgram file.

 process_sff.py -i sffs/ -f

 

Convert a single sff to fasta and qual, along with a flowgram file.

 process_sff.py -i sffs/test.sff -f

 

Output example: Convert all the sffs in directory "sffs/" to fasta and qual, along with a flowgram file and write them to another directory.

 process_sff.py -i sffs/ -f -o output_dir

 

Options:

  --version             show program's version number and exit

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

  -v, --verbose         Print information during execution -- useful for

                        debugging [default: False]

  --no_trim             do not trim sequence/qual (requires --use_sfftools

                        option) [default: False]

  -f, --make_flowgram   generate a flowgram file. [default: False]

  -t, --convert_to_FLX  convert Titanium reads to FLX length. [default: False]

  --use_sfftools        use the external programs sfffile and sffinfo for

                        processing, instead of the equivalent python

                        implementation

  -o OUTPUT_DIR, --output_dir=OUTPUT_DIR

                        Input directory of sff files [default: same as input

                        dir]

 

  REQUIRED options:

    The following options must be provided under all circumstances.

 

    -i INPUT_DIR, --input_dir=INPUT_DIR

                        Input directory of sff files or a single sff filepath

                        [REQUIRED]

 

 

引用

DUDE-Seq: Fast, flexible, and robust denoising for targeted amplicon sequencing
Byunghan Lee, Taesup Moon, Sungroh Yoon, Tsachy Weissman

PLoS One. 2017; 12(7): e0181463. Published online 2017 Jul 27.