質問:
BWTベースのアライメントを計算するためのライブラリ
Daniel Standage
2017-06-07 00:19:48 UTC
view on stackexchange narkive permalink

BWAやBowtieなどのツールで普及している効率的なBurrows-WheelerTransform(BWT)アプローチを使用して、線形を計算する機能を追加したいソフトウェアツールを作成しています。ただし、私が知る限り、これらのツールとその派生物はどちらも、コマンドラインインターフェイスを介して厳密に呼び出されます。 C / C ++ APIを使用してBWTベースの読み取りアライメントを実装するライブラリはありますか?

Pythonバインディングも素晴らしいですが、おそらく期待するには多すぎます。

C / C ++ではありませんが、rust-bioにはBWT関連の機能があるようです:
四 答え:
#1
+11
Karel Brinda
2017-06-07 01:17:35 UTC
view on stackexchange narkive permalink

最初に、数百の読み取りマッパーが存在し、そのほとんどが公開されていることを指摘しましょう(たとえば、この論文の25〜29ページを参照)。新しいマッパーの開発は、おそらくプログラミング演習としてのみ意味があります。迅速な概念実証読み取りマッパーの開発は通常簡単ですが、既存の適切に調整されたマッパーの真の競合相手に変えることは、何年も続く可能性があります。

提供された説明から、どのくらいの期間続くかは明らかではありません。は参照、計算する必要のある線形の数などです。特定の状況では、既存のマッパーにラッパーを作成すると便利な場合があります(たとえば、マッパーの実行に subprocess.Popenを使用し、出力を解析するためのPySam);他の状況では、標準の動的計画法で十分な場合があります(たとえば、Pythonバインディングで SSWを使用する)。

おもちゃの読み取りマッパーを開発するとします。読み取りマッパーのほとんどは、いわゆるシードアンドエクステンドパラダイムに基づいています。簡単に言えば、最初にアライメントの候補を検出します。通常は、読み取りと参照の完全一致として検出します(ハッシュテーブルまたはフルテキストインデックス(BWTインデックスなど)を使用)。次に、通常は動的計画法に基づくアルゴリズムを使用して、これらの候補のアラインメントを計算し、最もよく得られたアラインメント(たとえば、アラインメントスコアが最も高いもの)を報告する必要があります。

2つの大きなアラインメントが存在します。読み取りマッパーの構築に簡単に使用できるBWTインデックスを実装する強力で適切にデバッグされたライブラリ:

YARAのことは聞いたことがありません…有名なマッパーもSeqAnを使用しています。 TopHatとBowtieの両方(私が知る限り、マッピング自体ではありませんが)。
ため息、私はBWAのSAM出力をディスクに書き込まないようにしたいと思っていましたが、PySAMは入力文字列をファイル名として扱い、StringIOオブジェクトを明示的にサポートしていません。名前付きパイプなどを調べる必要があると思います。
PySAMはファイルオブジェクトもサポートしています–http://pysam.readthedocs.io/en/latest/api.html#pysam.AlignmentFileを参照してください。 AlignmentFile(filepath_or_object、....: "filepath_or_objectがPythonファイルオブジェクトの場合、既に開いているファイルが使用されます。"
ええ、でも `proc.communicate`を実行すると、BWAのSAM出力が文字列として表示されます。通常の文字列のトリックはどれも機能しないようです。どういうわけか、PySAMにファイルシステムを読み取らせるためにファイルシステムを調べる必要があります。
#2
+9
user172818
2017-06-07 04:07:51 UTC
view on stackexchange narkive permalink

BWA-MEMはライブラリとして使用できます。ファイル bwa / example.cは、シングルエンドマッピングの基本機能を示しています。 bwa-memコマンドラインに同じマッピングを提供する必要があります。ヘッダー bwa / bwamem.hには、基本的なドキュメントが含まれています。ペアエンドマッピングは実行可能ですが、十分に公開されていません。 GATKやMSゲノミクスを含むいくつかのチームは、ライブラリとしてbwa-memを使用しています。

それは非常にクールです。
#3
+4
Konrad Rudolph
2017-06-07 00:44:57 UTC
view on stackexchange narkive permalink

SeqAnは、パラメータ化可能なアラインメントアルゴリズムで使用するBWTテーブルをサポートしています。

これを使用するには、 SeqAnショートリードアライナーを構築するための一般的な概要に従ってください

a>を選択し、例のように IndexQGram の代わりに FMIndex 特殊化を使用します。
#4
+1
Michael Hall
2019-04-29 05:39:31 UTC
view on stackexchange narkive permalink

Python APIをお探しの場合は、nanoporeが作成しました(どの程度「維持」されているかはわかりませんが) https://github.com/nanoporetech/bwapy



このQ&Aは英語から自動的に翻訳されました。オリジナルのコンテンツはstackexchangeで入手できます。これは、配布されているcc by-sa 3.0ライセンスに感謝します。
Loading...