我有一个.bed文件,其中包含1000行,每行中的单词用制表符(\t)分隔。如果我们把每个单词看作一列,那么每一行都有12列。我需要一种将这个.bed文件转换成矩阵的方法,这样我就可以轻松地访问它的列。例如,我需要访问第12列。有什么方法可以做到吗?
我已经试过了:
import numpy as np
data = np.genfromtxt("myFile.bed")但它不能正常工作。有人能帮我吗?
发布于 2014-08-09 03:39:05
床文件是标准的标签分隔文本文件。将其内容存储在内存中的常用方法是:
content = []
with open("myFile.bed")as f:
for line in f:
content.append(line.strip().split())您可以在这里使用numpy数组而不是列表,或者如果需要,可以用np.asarray转换结果。
实际上,你很少需要它的矩阵,因为它们代表(基因组?)间隔期往往很大。大多数情况下,您在循环中的每一行修改/读取/执行某些函数:
with open("myFile.bed")as f:
for line in f:
L = line.strip().split()
# ... do something with L否则,熊猫库将实现“数据帧”,如R(但我从未使用过)。
发布于 2020-04-22 08:17:47
使用吡喃,这是非常简单的
import pyranges as pr
path = pr.get_example_path("aorta.bed")
gr = pr.read_bed(path)
# +--------------+-----------+-----------+------------+-----------+--------------+
# | Chromosome | Start | End | Name | Score | Strand |
# | (category) | (int32) | (int32) | (object) | (int64) | (category) |
# |--------------+-----------+-----------+------------+-----------+--------------|
# | chr1 | 9939 | 10138 | H3K27me3 | 7 | + |
# | chr1 | 9953 | 10152 | H3K27me3 | 5 | + |
# | chr1 | 10024 | 10223 | H3K27me3 | 1 | + |
# | chr1 | 10246 | 10445 | H3K27me3 | 4 | + |
# | ... | ... | ... | ... | ... | ... |
# | chr1 | 9978 | 10177 | H3K27me3 | 7 | - |
# | chr1 | 10001 | 10200 | H3K27me3 | 5 | - |
# | chr1 | 10127 | 10326 | H3K27me3 | 1 | - |
# | chr1 | 10241 | 10440 | H3K27me3 | 6 | - |
# +--------------+-----------+-----------+------------+-----------+--------------+
# Stranded PyRanges object has 11 rows and 6 columns from 1 chromosomes.
# For printing, the PyRanges was sorted on Chromosome and Strand.
df = gr.df
# Chromosome Start End Name Score Strand
# 0 chr1 9939 10138 H3K27me3 7 +
# 1 chr1 9953 10152 H3K27me3 5 +
# 2 chr1 10024 10223 H3K27me3 1 +
# 3 chr1 10246 10445 H3K27me3 4 +
# 4 chr1 110246 110445 H3K27me3 1 +
# 5 chr1 9916 10115 H3K27me3 5 -
# 6 chr1 9951 10150 H3K27me3 8 -
# 7 chr1 9978 10177 H3K27me3 7 -
# 8 chr1 10001 10200 H3K27me3 5 -
# 9 chr1 10127 10326 H3K27me3 1 -
# 10 chr1 10241 10440 H3K27me3 6 -https://stackoverflow.com/questions/25213673
复制相似问题