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
In the #nanoporeconf data theatre, @mitenjain et al have been busy... Announcing a new assembler (SHASTA) and not one but two new polishers (MarginPolish, HELEN) for making large scale reference-quality human genomes. pic.twitter.com/XdLFIsGu0e
— Sam Nicholls (@samstudio8) May 23, 2019
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