如何在脚本中更改蛇形.输入/蛇形.输出的对象类型以创建目录?

问题描述

我正在尝试使用以下规则从 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 (将#修改为@)