向pandas数据框架输入字符串时出错?

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文件制作数据帧。

Here's the error:

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