将包含整数计数的压缩包含的二进制文件解卷积为人类可读数字

时间:2017-11-20 12:52:51

标签: linux binary bioinformatics

我需要将包含整数计数的文件gzip压缩文件解码为人类可读数字,以便我可以对它们进行汇总(fx均值,中位数等)。

可以找到其中一个文件的示例here(572字节)

根据official documentation它应该包含1001个整数计数(表示片段长度分布)编码为“有符号,32位整数(具有机器本机字节序”) - 有人可以帮我提取它们。

1 个答案:

答案 0 :(得分:1)

使用Python 2.7读取文件,使用numpy计算平均值和中位数:

import gzip
import os
import struct
import numpy as np

directory = '/path/to/file'
filename = 'fld.gz'
path = os.path.join(directory, filename)

counts = []
size = 4 # standard size for an int is 4, see:
         # https://docs.python.org/2/library/struct.html#format-characters
with gzip.open(path, 'rb') as f:
    byte = f.read(size)
    while byte:

        count, = struct.unpack('i', byte)
        counts.append(count)

        byte = f.read(size)


print len(counts) # prints indeed 1001

counts = np.array(counts)
print np.mean(counts)
print np.median(counts)