ベスト プラクティスについて質問があります。具体的には、イルミナシーケンシングからの読み取りを逆多重化するための最適なsnakemakeパターンについて。私たちのワークフローでは、シーケンスの複数のレーンを逆多重化し、これらを 1 つの分析に組み合わせる必要があります。もちろん、レーンとサンプルの名前はわかっていますが、サンプル名はレーン間で同じではありません。レーンが 1 つだけの場合、次のようなことができます。
SAMPLES = [...]
rule demux:
input:
reads="lanes/lanename.fastq.gz",
key="keys/lanename.txt"
output:
reads=expand("reads/{sample}.fastq.gz", sample=SAMPLES)
...
ただし、複数のレーンがあるため、関数を出力ルールとして使用したくて行き詰まっています。以下はどのように可能なものに変換されますか:
LANES = {
"lane1": ["S1", "S2"],
"lane2": ["S3", "S4"],
"lane3": ["S5", "S6"],
}
rule demux:
input:
reads="lanes/{lane}.fastq.gz",
key="keys/{lane}.txt"
output:
reads=lambda wc: expand("reads/{sample}.fastq.gz", sample=LANES[wc.lane])
...
これが以前に回答されている場合、または私が見逃している明らかなアプローチがある場合は、ご容赦ください。
乾杯、 ケビン