macでインフォマティクス

macでインフォマティクス

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

ゲノムのリアレンジメントを検出して視覚化する smashpp

2020 5/22 追記

 

 ゲノムのリアレンジメントの研究は、染色体の進化や遺伝的疾患、ガンなどの研究に重要な役割を果たしており、その研究は非常に重要である。本研究では、2つのDNA配列間の小規模・大規模なゲノムリアレンジメントを検出し、可視化するためのアラインメントフリーでメモリ効率の良いツール、Smash++を紹介する。この計算ソリューションは、データ圧縮技術を利用して2つの配列の情報内容を抽出し、リアレンジメントを見つける。また、SVG(Scalable Vector Graphics)画像を生成することで、検出されたリアレンジメントを自己および相対的な複雑さとともに可視化できるツール、Smash++ビジュアライザーも紹介する。
 細菌、真菌、鳥類、哺乳類の合成DNA配列とreal DNA配列を用いて実験を行った結果、提案したツールはゲノムリアレンジメントを正確に検出することができた。検出された領域は、アライメントに基づくアプローチやFISH(fluorescence in situ hybridization)解析を行った先行研究と一致していた。すべての実験において、最大メモリ使用量のピークは約1GBであり、Smash++は現在の標準的なコンピュータ上で実行可能である。

 

インストール

ubuntu18.04でテストした(macに導入する場合は ソースからビルドする。Github参照)。

Gihtub

#bioconda(link)
conda create -n smashpp
conda activate smashpp
conda install -y -c bioconda smashpp

smashpp

# smashpp 

SYNOPSIS

  ./smashpp [OPTIONS]  -r <REF-FILE>  -t <TAR-FILE>

  

OPTIONS

  Required:

  -r  <FILE>         = reference file (Seq/FASTA/FASTQ)      

  -t  <FILE>         = target file    (Seq/FASTA/FASTQ)      

  

  Optional:

  -l  <INT>          = level of compression: [0, 6]. Default -> 3

  -m  <INT>          = min segment size: [1, 4294967295]     -> 50

  -e  <FLOAT>        = entropy of 'N's: [0.0, 100.0]         -> 2.0

  -n  <INT>          = number of threads: [1, 255]           -> 4

  -f  <INT>          = filter size: [1, 4294967295]          -> 100

  -ft <INT/STRING>   = filter type (windowing function):     -> hann

                       {0/rectangular, 1/hamming, 2/hann,    

                       3/blackman, 4/triangular, 5/welch,    

                       6/sine, 7/nuttall}                    

  -fs [S][M][L]      = filter scale                          

                       {S/small, M/medium, L/large}          

  -d  <INT>          = sampling steps                        -> 1

  -th <FLOAT>        = threshold: [0.0, 20.0]                -> 1.5

  -rb <INT>          = ref beginning guard: [-32768, 32767]  -> 0

  -re <INT>          = ref ending guard: [-32768, 32767]     -> 0

  -tb <INT>          = tar beginning guard: [-32768, 32767]  -> 0

  -te <INT>          = tar ending guard: [-32768, 32767]     -> 0

  -ar                = consider asymmetric regions           -> no

  -nr                = do NOT compute self complexity        -> no

  -sb                = save sequence (input: FASTA/FASTQ)    -> no

  -sp                = save profile (*.prf)                  -> no

  -sf                = save filtered file (*.fil)            -> no

  -ss                = save segmented files (*.s[i])         -> no

  -sa                = save profile, filetered and           -> no

                       segmented files                       

  -rm k,[w,d,]ir,a,g/t,ir,a,g:...

  -tm k,[w,d,]ir,a,g/t,ir,a,g:...

                     = parameters of models                  

                <INT>  k:  context size                          

                <INT>  w:  width of sketch in log2 form,         

                           e.g., set 10 for w=2^10=1024          

                <INT>  d:  depth of sketch                       

                <INT>  ir: inverted repeat: {0, 1, 2}            

                           0: regular (not inverted)             

                           1: inverted, solely                   

                           2: both regular and inverted          

              <FLOAT>  a:  estimator                             

              <FLOAT>  g:  forgetting factor: [0.0, 1.0)         

                <INT>  t:  threshold (no. substitutions)         

  -ll                = list of compression levels            

  -h                 = usage guide                           

  -v                 = more information                      

  --version          = show version                          

  

AUTHOR

  Morteza Hosseini     seyedmorteza@ua.pt                    

  

SAMPLE

  ./smashpp -r ref -t tar -l 0 -m 1000

smashpp -viz

# smashpp -viz

SYNOPSIS

  ./smashpp -viz [OPTIONS]  -o <SVG-FILE>  <POS-FILE>

  

OPTIONS

  Required:

  <POS-FILE>         = position file, generated by           

                       Smash++ tool (*.pos)                      

  

  Optional:

  -o  <SVG-FILE>     = output image name (*.svg).    Default -> map.svg

  -rn <STRING>       = reference name shown on output. If it 

                       has spaces, use double quotes, e.g.   

                       "Seq label". Default: name in header  

                       of position file                      

  -tn <STRING>       = target name shown on output           

  -l  <INT>          = type of the link between maps: [1, 6] -> 1

  -c  <INT>          = color mode: [0, 1]                    -> 0

  -p  <FLOAT>        = opacity: [0.0, 1.0]                   -> 0.9

  -w  <INT>          = width of the sequence: [8, 100]       -> 10

  -s  <INT>          = space between sequences: [5, 200]     -> 40

  -tc <INT>          = total number of colors: [1, 255]      

  -rt <INT>          = reference tick: [1, 4294967295]       

  -tt <INT>          = target tick: [1, 4294967295]          

  -th [0][1]         = tick human readable: 0=false, 1=true  -> 1

  -m  <INT>          = minimum block size: [1, 4294967295]   -> 1

  -vv                = vertical view                         -> no

  -nrr               = do NOT show relative redundancy       -> no

                       (relative complexity)                 

  -nr                = do NOT show redunadancy               -> no

  -ni                = do NOT show inverse maps              -> no

  -ng                = do NOT show regular maps              -> no

  -n                 = show 'N' bases                        -> no

  -stat              = save stats (*.csv)                    -> stat.csv

  -h                 = usage guide                           

  -v                 = more information                      

  --version          = show version                          

  

AUTHOR

  Morteza Hosseini     seyedmorteza@ua.pt                    

  

SAMPLE

  ./smashpp -viz -vv -o simil.svg ref.tar.pos

 

 

 

テストラン1

1、配列比較

git clone https://github.com/smortezah/smashpp.git
cd smashpp/example/
smashpp -r ref -t tar

cat ref.tar.pos

# cat ref.tar.pos 

##SMASH++

##PARAM=<-r ref -t tar>

##INFO=<Ref=ref,RefSize=1000,Tar=tar,TarSize=1000>

#RBeg REnd RRelRdn RRdn TBeg TEnd TRelRdn TRdn Inv

0 510 0.5108 2.0000 497 1000 0.5120 2.0000 F

498 1000 0.1518 2.0000 508 0 0.1551 2.0000 T

 

2、視覚化

smashpp -viz -stat -o example.svg ref.tar.pos
  • -r    reference file (Seq/FASTA/FASTQ)      
  • -t    target file    (Seq/FASTA/FASTQ)      
     

f:id:kazumaxneo:20200522085852p:plain

"-vv"をつけると縦に出力される。

テストラン2 

cd smashpp/experiment/dataset/bacteria/Xanthomonas_oryzae_pv_oryzae/
smashpp -r MAFF_311018.seq -t PXO99A.seq -l 0 -m 1000
smashpp -viz -stat -o example.svg MAFF_311018.seq.PXO99A.seq.pos
  • -l    level of compression: [0, 6]. Default -> 3
  • -m   min segment size: [1, 4294967295]     -> 50

f:id:kazumaxneo:20200522090912p:plain

 

他にもいくつかの配列が用意されている。

f:id:kazumaxneo:20200522091327p:plain

引用 

Smash++: an alignment-free and memory-efficient tool to find genomic rearrangements
Morteza Hosseini, Diogo Pratas, Burkhard Morgenstern, Armando J Pinho
GigaScience, Volume 9, Issue 5, May 2020

 

関連