我将尽最大可能总结我的问题。我有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
此代码有效。它会给我一个清单清单。现在我要做的就是
我想根据列表拆分snp矩阵。因此,如果列表列表中的第一个列表包含3个元素,则意味着file_0应该具有snpmatrix的前三列,如果第二个列表具有两个元素,则file_1应该具有snp矩阵的后两列。
此外,在读取单个文件时生成11个此类文件的最有效方法是什么。
我们将提供帮助和见解。