使用python

时间:2019-06-20 09:16:39

标签: python-3.x

我将尽最大可能总结我的问题。我有600个文件,每个文件都具有以下格式,例如:

//
segsites:8
position:0.0056,0.0065,0.008,0.009,0.1,0.127,0.232,0.879
00100010
11011000
00100100
10111000

数字“ segsites”为8,这表示“位置”将具有8个值,并且四行后跟位置,被称为snp矩阵,并且也具有8列。 请注意,这仅是一个示例,实际上每个文件中都有数千个segsite。

现在我要做的是将这个文件分成11个不同的文件。我这样做的方式是,例如我将1/11除以0.09090909090909091。因此,我的file_0应该具有所有介于0和0.09090909090909091之间的“位置”。为此,我使用以下代码:

def split_l(a,b):
    it = iter(b)
    start, sub = next(it), []
    for ele in a:
        if ele >= start:
            yield sub
            sub, start = [], next(it)
        sub.append(ele)
    yield sub

此代码有效。它会给我一个清单清单。现在我要做的就是

  1. 我想根据列表拆分snp矩阵。因此,如果列表列表中的第一个列表包含3个元素,则意味着file_0应该具有snpmatrix的前三列,如果第二个列表具有两个元素,则file_1应该具有snp矩阵的后两列。

  2. 此外,在读取单个文件时生成11个此类文件的最有效方法是什么。

我们将提供帮助和见解。

0 个答案:

没有答案