输入数据
.
├── barcode01
│ └── fastq_runid_6292747b0109c4fa5918c50eb8204bb715f19ad0_0.fastq
├── barcode02
│ └── fastq_runid_6292747b0109c4fa5918c50eb8204bb715f19ad0_0.fastq
├── barcode03
│ └── fastq_runid_6292747b0109c4fa5918c50eb8204bb715f19ad0_0.fastq
├── barcode04
│ └── fastq_runid_6292747b0109c4fa5918c50eb8204bb715f19ad0_0.fastqSnakemake规则
rule symlink_results_demultiplex:
input:
inputdirectory+"/basecall/demultiplex/{sample_demultiplex}/{sample_runid}.fastq"
output:
outdirectory+"/mothur/{sample_demultiplex}.fastq"
threads: 1
shell:
"ln -s {input} {output}"但是,这个错误是因为没有使用相同的通配符。我想要创建一个符号链接,其中的输出文件只有barcode01.Quickq。我想删除多余的"fastq_runid_6292747b0109c4fa5918c50eb8204bb715f19ad0_0“部件。
做这件事最好的方法是什么?
发布于 2022-04-28 17:34:02
一种选择是在只依赖于{sample_demultiplex}通配符的函数中找到输入的文件名。此示例代码可能对此起作用,具体取决于您的文件夹的设置方式(现在它假设每个{sample_demultiplex} wilcard只对应于一个fastq文件)。
import os
import glob
def get_symlink_results_demultiplex_input(wildcards):
fastq_dir = os.path.join(inputdirectory, "/basecall/demultiplex/", wildcards.sample_demultiplex)
fastq_file = glob.glob("*.fastq", root_dir=fastq_dir)[0] # this assumes there is only ever one fastq file in a directory
return os.path.join(fastq_dir, fastq_file)
rule symlink_results_demultiplex:
input:
get_symlink_results_demultiplex_input
output:
outdirectory+"/mothur/{sample_demultiplex}.fastq"
threads: 1
shell:
"ln -s {input} {output}"https://stackoverflow.com/questions/72047212
复制相似问题