<p>试着按照这些思路来做:</p>
<pre><code>#!/usr/bin/python
outfile = open ("missing_test.txt", "w")
def write_line(indiv, window, coverage, snp):
outline = "%s\t%s\t%s\t%s\n" % (indiv, window, coverage, snp)
outfile.write(outline)
with open("add_missing.txt", "r") as file:
lines = file.readlines()
write_line(*lines.pop(0).rstrip().split("\t"))
first_line = lines[0].split("\t")
last_indiv = first_line[0]
last_window = int(first_line[1])
for line in lines:
indiv, window, coverage, snp = line.split("\t")
window = int(window)
coverage = int(coverage)
snp = int(snp)
if indiv == last_indiv:
# If the current window is higher than expected,
# insert a line with the missing window.
# Repeat until we get to the expected window.
while window > last_window + 10000:
write_line(indiv, last_window + 10000, coverage, 0)
last_window += 10000
last_window = window
else:
last_indiv = indiv
last_window = window
write_line(indiv, window, coverage, snp)
</code></pre>
<p>它没有包含的是某个窗口号在给定的<code>indiv</code>中是第一个的期望,因为您没有定义该行为,而且您对此的评论相当混乱。你知道吗</p>
<hr/>
<p>缺失内容_测试.txt运行此脚本后:</p>
<blockquote>
<pre><code>indiv window coverage SNP
BABA_1 20000 10000 7
BABA_1 30000 10000 1
BABA_1 40000 10000 0
BABA_1 50000 10000 2
BABA_1 60000 10000 3
BABA_1 70000 10000 0
BABA_1 80000 10000 1
BABA_10 20000 10000 1
BABA_10 30000 10000 16
BABA_10 40000 10000 0
BABA_10 50000 10000 0
BABA_10 60000 10000 0
BABA_10 70000 10000 0
BABA_10 80000 10000 9
</code></pre>
</blockquote>