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