問題タブ [snakemake]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-3.x - Snakemakeで部分的に展開するには?
最初に、LETTERS x NUMS の組み合わせに対して 4 つのファイルを生成し、次に NUMS を要約して、LETTERS の要素ごとに 1 つのファイルを取得しようとしています。
このスネークファイルを実行すると、次のエラーが発生します。
パーシャルexpand
は不可のようです。の制限expand
ですか?もしそうなら、どうすれば回避できますか?
python - 2 つの異なるルール パスが特定の出力を生成できる場合、snakemake はあいまいさを回避できますか?
初期ワークフロー
ペアエンド データから出力を生成できるスネークファイルがあります。
このスネークファイルには、構成ファイル ( get_raw_data
) に格納されている情報を指定してデータを「インストール」するルールがあります。
次に、そのデータを使用して、残りのワークフローが依存する中間ファイルを生成するルールを作成します ( run_tophat
)。
これらのルールの入力と出力は次のとおりです (OPJ
は を表しますos.path.join
)。
(このルールの実装については後で詳しく説明します)
そして(単純化すると)私の主なルールは次のようになります。
ワークフローをシングルエンド データに拡張する
シングルエンドのデータに対してワークフローを実行する必要があります。
データがシングルエンドかペアエンドかによって、最終出力の名前パターンが異なることは避けたいと思います。
入力と出力が次のようなシングルエンド データ (get_raw_data_single_end
および) で機能する、上記の 2 つのルールのバリアントを簡単に作成できます。run_tophat_single_end
正しいルールパスを選択するのに十分な情報をsnakemakeに提供するにはどうすればよいですか?
lib
構成ファイルには、ワイルドカードが次の方法でシングルエンド データまたはペアエンド データに関連付けられているかどうかに関する情報が含まれています。ライブラリ名は、lib2raw
またはlib2raw_single_end
辞書のキーです (両方の辞書は構成ファイルから読み取られます)。
同じライブラリ名が両方の辞書のキーになるとは思っていません。したがって、ワークフローのシングルエンド分岐とペアエンド分岐のどちらを実行してほしいかは、ある意味で曖昧ではありません。
関数lib2data
(これらの辞書を使用する) は、 と の両方get_raw_data
で使用されget_raw_data_single_end
、データを「インストール」するために実行するシェル コマンドを決定します。
以下は、この関数の簡略化されたバージョンです (実際の関数には、SRR 識別子からデータのコマンドを生成するための追加のブランチが含まれています)。
出力を除けば、2 つのget_raw_data*
ルールは同じであり、次のように機能します。
ルールの入力と出力ではコード化されておらず、構成ファイルと関数でのみコード化されている情報が与えられた場合、snakemake は正しいルール パスを決定できますか?
そうではないようです。実際、新しいスネークファイルをテストしようとしています (*_single_end
ルールを追加して)、ただし、ルール.KeyError
の実行中に発生しますがget_raw_data
、ルールが実行されているライブラリはシングルエンド データに関連付けられています。
目的の動作を実現するにはどうすればよいですか (構成内の情報を使用して正しいブランチを選択できる 2 つのブランチのワークフロー)。
編集:KeyError
エラーが原因でしたlib2data
正しい辞書を使用してライブラリ名に関連付けられたデータを取得した後、次のエラーが発生します。
get_raw_data*
編集 2:ルールへの入力の追加
snakemake メーリング リストでこの投稿を読んだ後、あいまいさを避けるためにルールに入力を追加しようとしました。
これにより、(これを再現することはできません。現在は次のようになります:)MissingInputException
. 不思議なことに、欠落していると報告されているファイルが存在します。トリックは機能するはずですか?
「データ インストール」ルールへの入力を指定する私の方法は、snakemake を正しいルールに導くには明らかに不十分です。
snakemake - 「snakemake --config」を使用してコマンドにフラグを渡す
Snakemake チュートリアルを読みましたが、「snakemake --config ...」を使用してパラメーターを変更する方法は明らかであり、これらは実行中のコマンドに渡されます。「--config」を使用してコマンドにフラグを渡すことはできますか? たとえば、「--config」の使用に基づいて、これらのコマンドのいずれかを実行する Snakefile を作成できますか?
makefile - Snakemake: ターゲット ファイルの代わりに名前ルール
これは、snakemake チュートリアルの高度なセクションからの短い例です。
ここで、このルールを数か月前に作成し、出力ファイル名を覚えていないとしましょう。私の理解では、エラーが発生するため、ルール名を呼び出して snakemake を実行することはできません。
まず、「サンプル」セクションを参照することは明らかであるため、snakemake がラムダ関数を使用して構成ファイルから入力ファイルを推測できない理由がわかりません。
第二に、これに対する回避策はありますか?古き良き Makefile を使用して古い Makefile を使用し、次のように入力して同じ bwa_map ルールを実行するのは非常に簡単だからです。
よろしくお願いします。ブノワ
snakemake - Snakemakeで明示的および暗黙的なルールを表現するには?
Snakemakeを理解するために、従来の Makefile の例と Snakemake を比較したいと思います。前提条件の教育的な例で作成するための優れた紹介ページがあります。
これを Snakemake ファイルに変換しようとしました。この投稿の最後を参照してください。touch
動作しますが、記事ごとにコマンドを繰り返す必要があります。明示的ルールと暗黙的ルールを (ワイルドカードを使用して) 区別することで、make のアプローチをコピーしようとしましたが、成功しませんでした。現在の方法よりもエレガントな方法はありますか?
python - snakemake ルールによって作成されたログ ファイルへのアクセス
Snakefile 内からルールごとに作成されたログ ファイルをプログラムで一覧表示する方法はありますか? DAG を利用する必要がありますか? はいの場合、その方法は?
背景: 作成されたすべてのログ ファイルをまとめて削除したいと考えています (クラスター ログのみが別のフォルダーにあり、一部の出力ファイルは対応してログ ファイルと呼ばれています)。このために、プログラムの実行によって作成された可能性があり、偶然にもログ グロブと一致するログ ファイルを除外します。
shellcmd_tracking ファイルの解析がより簡単になるなど、代替手段はありますか?
ありがとう、アンドレアス
snakemake - snakemake: ルールからの可変数の出力を処理する方法
bcl2fastq を実行して、bcl 形式から fastq ファイルを生成したいと考えています。
シーケンス モードに関するシーケンス設定と使用されたインデックスの数に応じて、read1、read2、index1 または read1、read2、index1、index2 などを生成できます。
私がやりたいことは、読み取り出力番号情報を次のように config.yaml ファイルに入れることです。
生成する必要がある読み取り出力 (fastq.gz ファイル) の数をルールに自動的に判断させます。
それを達成するために出力セクションをどのように書くのですか?
以下は私が持っているもので、このルールから毎回1つのファイルしか出力できません。したがって、実際には、このルールを I1、I2、R1、および R2 に対してそれぞれ 4 回実行しますが、これは私が望んでいるものではありません。45行目で修正するには?45 行目で、{readid}
の 1 つであると想定されていますI1,I2,R1,R2
。