Pandas 如何最有效地从窄峰(BED6+;4)格式文件检索数据?

Pandas 如何最有效地从窄峰(BED6+;4)格式文件检索数据?,pandas,bioinformatics,samtools,Pandas,Bioinformatics,Samtools,我正在从事一个生物信息学项目,该项目涉及非常大的格式化文件,如下所示: (列为'chrom、chromStart、chromEnd、name、score、strand、signalValue、pValue、qValue、peak') 我有一种方法可以索引文件(在samtools中使用tabix)和查询行,方法是输入chr编号和范围并获得正确的行(我使用它是因为我的队友说这是最快的方法) 例如,如果我的查询是chr1:713835-714424,我将得到以下结果: chr1 713835

我正在从事一个生物信息学项目,该项目涉及非常大的格式化文件,如下所示:

(列为'chrom、chromStart、chromEnd、name、score、strand、signalValue、pValue、qValue、peak')

我有一种方法可以索引文件(在samtools中使用tabix)和查询行,方法是输入chr编号和范围并获得正确的行(我使用它是因为我的队友说这是最快的方法)

例如,如果我的查询是chr1:713835-714424,我将得到以下结果:

chr1    713835  714424  chr1.1  1000    .   0.1621  10.6    -1  253
我希望能够输入chr num和range并单独获得253分。

我通过将结果转换为数据帧(使用熊猫)实现了这一点

有更好的办法吗

如果有一种使用samtools的方法,那将是最好的,但我很难理解它


谢谢

熊猫是严重的过度捕杀。如果您也在使用
tabix
进行查询,则命令序列如下:

$ tabix input.bed.gz # index the input
$ tabix input.bed.gz chr1:713835-714424 # query the input
chr1    713835  714424  chr1.1  1000    .   0.1621  10.6    -1  253
您可以通过管道将
tabix
查询的输出传输到Unix
cut
实用程序,以仅选择第10列:

$ tabix input.bed.gz chr1:713835-714424 | cut -f 10
253

如果您知道数据总是以制表符分隔,并且分数总是在第10列,您可能不需要将数据转换为数据框:只需将查询结果通过管道传输到一个简单的文本处理命令行实用程序,如
awk
cut
,即可仅选择分数列。如果您包含了所有相关的详细信息,例如您当前使用的命令,这将非常有用。您正在使用tabix进行查询吗?当您要求samtools解决方案时,您是指samtool包装中的任何工具(例如tabix)?
$ tabix input.bed.gz # index the input
$ tabix input.bed.gz chr1:713835-714424 # query the input
chr1    713835  714424  chr1.1  1000    .   0.1621  10.6    -1  253
$ tabix input.bed.gz chr1:713835-714424 | cut -f 10
253