擅长:python、mysql、java
<p>我有一个用于ChIP seq数据的工作流,我的fastq文件以MARK\u格式命名_复制.fastq.gz例如H3K4me3\u Liver\u B。快速Q.gz. 对于我的许多规则,我不需要为标记、组织和复制使用单独的通配符。我可以这样写规则:</p>
<pre><code>rule example:
input: "{library}.fq.gz"
output: "{library}.bam"
</code></pre>
<p>然后,对于需要有多个输入的规则,可能是通过复制组合在一起,或者在所有组织中执行某些操作,我有一个名为“libraries”的函数,它返回具有特定条件的库列表。例如,库(mark=“H3K4me3”)将返回该标记的所有库,或者库(tissue=“Liver”,replicate=“A”)将返回该特定组织样本中所有标记的库。我可以用它来编写需要组合多个库的规则,例如:</p>
<pre><code>rule example2:
input: lambda wildcards: expand("{library}.bam", library=libraries(mark=wildcards.mark))
output: "{mark}_Heatmap_Clustering.png"
</code></pre>
<p>为了解决一些奇怪或模棱两可的规则问题,我发现像这样设置一些通配符约束很有帮助:</p>
<pre><code>wildcard_constraints:
mark="[^_/]+",
tissue="[^_/]+",
replicate="[^_/]+",
library="[^_/]+_[^_/]+_[^_/]+"
</code></pre>
<p>希望您可以将这些想法应用到自己的工作流中。你知道吗</p>