我试图用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