如何解决多个通配符的 Snakemake qsub 规则
我正在尝试运行我的蛇形管道。这就是我到目前为止所拥有的,简而言之,我搜索了一些路径以找到所有 sheet.csv 文件,因为稍后我想在存储 sheet.csv 文件的所有目录上运行一些生物信息学工具(如规则所示) 运行)。然后我准备了 run 规则的输出(以及 rule all 输入)(使用 parseData(sheet)),如 get_samples() 中所示。输入看起来像这样例如
input = ["path1/a_l1_z1.fastq.gz","path1/a_l1_z2.fastq.gz","path1/a_l2_z1.fastq.gz","path1/a_l2_z2.fastq.gz","path2/abc_l1_c1.fastq.gz","path2/abc_l2_c2.fastq.gz"]
如果我希望规则 run 一次输出一个文件,这可能很容易工作,但是规则 run 可以一次输出多个文件,如输入所示而且我还必须为每条路径的每个车道添加规则 run 例如对于输入示例,我必须为所有这些列表运行一次,因为 qsub 为每个规则运行一次,我希望尽可能多地运行 bio 工具
["path1/a_l1_z1.fastq.gz","path1/a_l1_z2.fastq.gz"] #then for ["path1/a_l2_z1.fastq.gz","path1/a_l2_z2.fastq.gz"] #and then for another path
["path2/abc_l1_c1.fastq.gz"] # and finally for
["path2/abc_l2_c2.fastq.gz"]
我从来没有使用过集群设置,我也有点不确定我是否可以用蛇形来做到这一点。就像在这种情况下我会为输出做些什么?不确定这是否有效,但是我可以做一些类似于创建 dict 的操作并创建一些键作为通配符,其中每个值都引用上面的列表之一,然后为输出做一些事情,例如
expand("{samples}",samples=samples)
with samples=lambda wildcards: dict[wildcards.sample]
作为输入?
到目前为止的代码:
configfile: "config.yaml"
directory = config['startingPoint']
def getCsv():
sheet_path = Path(directory).glob('*/sheet.csv')
sheet_dict = {}
counter = 1
for f in sheet_path:
sheet_name = f.name.replace('.csv','')+str(counter)
sheet_dict[sheet_name] = str(f)
counter+=1
return sheet_dict
sheet_dict = getCsv()
def get_samples():
# get all samples
input=list()
for key in sheet_dict:
path = os.path.dirname(sheet_dict[key])
print(path)
if len(glob.glob(path+"/"+'**/*.fastq.gz',recursive=True)) > 0:
pass
else:
runFolders[key] = path
for key in runFolders:
path = runFolders[key]
sheet = os.path.join(path,"sheet.csv")
samples1,lanes,samples2 = parseData(sheet)
#samples1,samples2 are lists to create all possible outputs
input.extend(expand("{path}/{sample1}_{lane}_{sample2}.fastq.gz",path=path,sample1=samples1,lane=lanes,sample2=samples2))
return input
rule all:
input:
get_samples()
rule run:
params:
options=cfg["options"]
output:
expand("{path}/{sample1}_{lane}_{sample2}.fastq.gz",path=?,sample1=?,lane=?,sample2=?)
log:
log = "{path}/{sample1}{lane}{sample2}.log"
run:
some bioinformatics tool
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。