在 python 中使用“床”文件

use*_*814 2 python

我有一个包含 1000 行的 .bed 文件,每行中的单词由制表符 (\t) 分隔。如果我们将每个单词视为一列,则每行有 12 列。我需要一种方法将这个 .bed 文件转换为矩阵,以便我可以轻松访问它的列。例如,我需要访问列号 12。有什么办法可以做到吗?

我已经尝试过这个:

    import numpy as np
    data = np.genfromtxt("myFile.bed")
Run Code Online (Sandbox Code Playgroud)

但它不能正常工作。任何人都可以帮助我吗?

Jul*_*enD 5

BED 文件是标准的制表符分隔的文本文件。Tu 通常将其内容存储在内存中的方法是:

content = []
with open("myFile.bed")as f:
    for line in f:
        content.append(line.strip().split())
Run Code Online (Sandbox Code Playgroud)

您可以在此处使用 numpy 数组而不是列表,也可以np.asarray根据需要转换结果。

实际上很少需要矩阵,因为它们代表(基因组?)间隔并且通常非常大。大多数情况下,您在循环中的每一行修改/读取/执行某个函数:

with open("myFile.bed")as f:
    for line in f:
        L = line.strip().split()
        # ... do something with L
Run Code Online (Sandbox Code Playgroud)

否则,Pandas库会像在 R 中一样实现“数据帧”(但我从未使用过它)。