macでインフォマティクス

macでインフォマティクス

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

ロングリードのドラフトアセンブリをpolishする marginpolish

2019 6/13 tweetリンク追加、誤字修正

 

 MarginPolishはグラフベースのアセンブリのpolisher。入力としてFASTAアセンブリとインデックス付きBAM(ONTのアセンブリ配列へのアラインメント)を受け取り、polishingしたFASTAアセンブリを生成する。

 MarginPolishはスタンドアロンでも機能するが、超高速ナノポアアセンブラShastaとマルチタスクRNNポリッシャHELENを含むアセンブリパイプラインの一部にもなっている。 HELENはMarginPolishによって生成されたイメージを操作する。

概要

MarginPolishはBAMからリードとアライメントを取得し、アライメントで観察された一致、挿入、欠失を説明する初期グラフを生成、複数の可能性のあるアラインメントに対する確率を決定する。すべてのリードが調整されると、グラフ内の各ノードについて加重調整スコアが生成され、これらを使用してグラフ内の最も可能性の高いパスが決定される。このプロセスは繰り返され、繰り返しの合間にアライメントの総重み付き尤度が減少するまで、または設定された最大繰り返し数に達するまで続く。これにより、ナノポアリードの主なエラー原因となるホモポリマーが低減される。

 

 

アセンブリワークフロー詳細については、HELENレポジトリのドキュメントに記載されている。

helen/walkthrough.md at master · kishwarshafin/helen · GitHub

 

  


Shastaでドラフトアセンブリし、MarginpolishとHELENでエラーを減らすフローで開発されています。ShastaやHELENについては近いうちに紹介します。

 

インストール

centos6でテストした。

依存

If compiling on Ubuntu, this will install all required packages: (Githubより)

apt-get -y install git make gcc g++ autoconf zlib1g-dev libcurl4-openssl-dev libbz2-dev libhdf5-dev


#MarginPolish is compiled with cmake. We recommend using the latest cmake version, but 3.7 and higher are supported:
wget https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4-Linux-x86_64.sh && sudo mkdir /opt/cmake && sudo sh cmake-3.14.4-Linux-x86_64.sh --prefix=/opt/cmake --skip-license && sudo ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake
cmake --version

 本体 Github

git clone https://github.com/UCSC-nanopore-cgl/marginPolish.git
cd marginPolish
git submodule update --init

mkdir build
cd build
cmake ..
make -j 12

> ./marginPolish 

$ ./marginPolish 

usage: marginPolish <BAM_FILE> <ASSEMBLY_FASTA> <PARAMS> [options]

Version: 1.0.0 

 

Polishes the ASSEMBLY_FASTA using alignments in BAM_FILE.

 

Required arguments:

    BAM_FILE is the alignment of reads to the assembly (or reference).

    ASSEMBLY_FASTA is the reference sequence BAM file in fasta format.

    PARAMS is the file with marginPolish parameters.

 

Default options:

    -h --help                : Print this help screen

    -a --logLevel            : Set the log level [default = info]

    -t --threads             : Set number of concurrent threads [default = 1]

    -o --outputBase          : Name to use for output files [default = 'output']

    -r --region              : If set, will only compute for given chromosomal region.

                                 Format: chr:start_pos-end_pos (chr3:2000-3000).

 

HELEN feature generation options:

    -f --produceFeatures     : output features for HELEN.

    -F --featureType         : output features of chunks for HELEN.  Valid types:

                                 splitRleWeight:  [default] run lengths split into chunks

                                 nuclAndRlWeight: split into nucleotide and run length (RL across nucleotides)

                                 rleWeight:       weighted likelihood from POA nodes (RLE)

                                 simpleWeight:    weighted likelihood from POA nodes (non-RLE)

    -L --splitRleWeightMaxRL : max run length (for 'splitRleWeight' type only) [default = 10]

    -u --trueReferenceBam    : true reference aligned to ASSEMBLY_FASTA, for HELEN

                               features.  Setting this parameter will include labels

                               in output.

 

Miscellaneous supplementary output options:

    -i --outputRepeatCounts  : Output base to write out the repeat counts [default = NULL]

    -j --outputPoaTsv        : Output base to write out the poa as TSV file [default = NULL]

 

 

テストラン

1、ドラフトアセンブリfastaに対してminimap2でロングリードをmappingし、bamを作成する。

 

2、bamとpolishing対象のfastaを指定する。

marginPolish long_reads.bam input.fasta \
/path/to/MarginPolish/params/allParams.np.json -o output -t 20 2>log

進捗logが大量に出力されたので2>logとした。ランが終わるとoutput.faが出力される。

 

まとめ

 現在もまだ開発中のようですが、マニュアルが整備されており、パフォーマンスも良かったので早めに紹介しました。テストした限り、Raconより高速に動作しつつ、polishing率もRacon/pilonよりMarginpolishの方が多くなっていました。

引用

GitHub - UCSC-nanopore-cgl/MarginPolish