微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我正在尝试使用以下规则从 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 举报,一经查实,本站将立刻删除。