0

我正在尝试使用 pysam 模块的输出创建一个数据框,该模块用于基因组数据(Bam/Sam 文件)。Pysam.depth() 将表格输出为字符串。我已使用模块 StringIO 尝试将字符串解析为 pandas 数据帧,但出现错误:

pandas.errors.EmptyDataError: No columns to parse from file

如果我在终端中打开 python 并单独运行代码行,它就可以工作。

这是向您展示 pysam.depth() 的输出的样子:

>>>depths = pysam.depth('-a', '-r', "Y_unplaced:131349-131401", "file.bam"))
>>>print(depths)
Y_unplaced  131349  2864
Y_unplaced  131350  2861
Y_unplaced  131351  2855
Y_unplaced  131352  2848
Y_unplaced  131353  2842
Y_unplaced  131354  2837
Y_unplaced  131355  2840
...

这是我的一些代码:

dir = os.environ['PBS_O_WORKDIR']
file_list = open(dir + "/list_of_bams.txt", "r")
for line in file_list:
    sample = line.strip("\n")
    file = dir + "/" + sample.replace("-", "_") + ".bam"
    data1 = StringIO(pysam.depth('-a', '-r', "Y_unplaced:131349-131401", file))
    df1 = pd.read_csv(data1, sep='\t')

我已经包含了一些可能不必要的周边代码。我将在集群上运行它,并为“list_of_bams.txt”文件中的所有 bam 文件制作数据帧。

这是错误:

File "/rds/general/user/ajf316/ephemeral/bam/AgY53B.py", line 41, in <module>
    df1 = pd.read_csv(data1, sep='\t')
...
pandas.errors.EmptyDataError: No columns to parse from file

我没有遇到阅读错误(或一般使用 python!) - 也许 pysam.depth() 没有输出任何东西?这很奇怪,因为正如我所提到的,如果我在命令行中的 python 中运行它,它可以正常工作,如下所示:

>>> data1 = StringIO(pysam.depth('-a', '-r', "Y_unplaced:131349-131401","AB0117_C.bam"))
>>> df1 = pd.read_csv(data1, sep='\t')
>>> print(df1)
    Y_unplaced  131349  2864
0   Y_unplaced  131350  2861
1   Y_unplaced  131351  2855
2   Y_unplaced  131352  2848

这是与代码运行的第一个文件相同的文件,因此肯定有可能的输出。也许“文件”对象不正确?虽然那么错误应该在前一行吗?谢谢你的帮助!

4

0 回答 0