我有一个包含多个目录的目录:/test/cond1//test/cond2//test/cond3//test/cond4/所有子目录都有几个不同的文件:cond1 : a1.txt, a2.txtcond2 : b1.txt, b2.txt, b3.txtcond3 : c1.txt, c2.txt, c4.txtcond4 : d1.txt,c2.txt, c4.txt, d2.txt我正在使用 Snakemake 运行命令,我需要通过 cond 获取所有文件,并用空白分隔我尝试这样做:def get_motifs_tf(wildcards): file_list = sorted(glob.glob("tf_final/{wildcards.cond}/*.bed")) return " ".join(file_list)这是我的规则snakemakerule compute_combi_enrichment: """ For a given input, compute the enrichment in n-wise TF combinations using OLOGRAM-MODL. """ input: query = 'input/core_silencer/{cond}/core_silencer.bed', excl = "input/exclude_region_dhs.bed", genome = "input/mm9.chromsizes" params: trs = get_motifs_tf, minibatch_number = 16, minibatch_size = 10 # Modulate depending on available RAM threads: 8 # Do not use 16 threads to not vampirize all the cluster output: 'output/ologram_result/{cond}/00_ologram_stats.tsv', shell: """ set +u; source /gpfs/tagc/home/Apps/anaconda3/bin/activate dev; set -u gtftk ologram -z -c {input.genome} -p {input.query} --more-bed {params.trs} \ -o output/ologram_result/{wildcards.cell_line} --force-chrom-peak --force-chrom-more-bed \ -V 3 -k {threads} -mn {params.minibatch_number} -ms {params.minibatch_size} \ --more-bed-multiple-overlap --bed-excl {input.excl} --no-date \ --multiple-overlap-max-number-of-combinations 80 """在 --more-bed {params.trs} 中我预计会得到:/test/cond1/a1.txt /test/cond1/a2.txt然后/test/cond2/b1.txt /test/cond2/b2.txt /test/cond2/b3.txt等等...
1 回答
手掌心
TA贡献1942条经验 获得超3个赞
我解决了它:
函数中的通配符必须在 stp 中转换并且不带括号:
def get_motifs_tf(wildcards): file_list = sorted(glob.glob("tf_final/"+str(wildcards.cond)+"/*.bed")) return " ".join(file_list)
- 1 回答
- 0 关注
- 107 浏览
添加回答
举报
0/150
提交
取消