问题描述
我正在尝试使用以下规则从 snakemake 中使用 python 脚本
rule split_cells:
input:
base_path + "{sample}_aligned/{sample}Mito.sortedByCoord.out.bam"
output:
base_path + "{sample}_aligned/Cellular_Mitos/"
conda:
"DsmPipeline2.yaml" # used for running pysam
script:
"scripts/split.py"
在脚本中,我希望它创建上面规则中所述的输出目录。我尝试通过使用 os.mkdir 创建 snakemake.output 目录来做到这一点。当我这样做时,os.mkdir 抛出了一个错误,说明:
TypeError: expected str,bytes or os.pathLike object,not InputFiles
为了解决这个问题,我尝试使用 split.py 中的以下代码将 snakemake.output 的类型更改为 str
import pysam
import sys
import os
print(snakemake.output)
print(type(snakemake.output))
print(type(str(snakemake.output)))
# create the output directory
os.mkdir(str(snakemake.output))
我尝试一直打印类型以诊断问题并按预期获得以下输出:
/rds/general/user/rest_of_file_path
<class 'snakemake.io.OutputFiles'>
<class 'str'>
然而 os.mkdir 仍然抛出一个类型错误,检测到类型为 InputFiles
TypeError: expected str,not InputFiles
首先,在一般的 Python 术语中,如何解释这种行为?其次,我如何在snakemake中的脚本中实际转换snakemake.input/snakemake.output对象的实例类型,此外,我如何让脚本使用这些snakemake对象来创建目录?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)