将字符串输入到熊猫数据框时出错?

时间:2019-08-15 09:40:08

标签: python pandas stringio pysam

我正在尝试使用用于基因组数据(Bam / Sam文件)的pysam模块的输出来创建数据框。 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

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

0 个答案:

没有答案
相关问题