我想编辑一个排序的 Fastq 文件,并删除仅在某些字符位置重复的行。理想情况下,我会遍历输入文件中的每一行并输出一个文件,该文件只有一个任何唯一字符集的实例。
所以如下图。我只对查看每行的前 6 个字符、后 6 个字符和中间字符的一部分感兴趣,并且只保留三个序列的每个唯一组合的一个实例。
AAAAAACCCCCCCCCCCCTTTTTTTTTTCCCCCCCCAAAAAA Start by comparing to this line
AAAAAACCCAAACCCCCCTTTTTTTTTTCCCCCCCCAAAAAA 1-6, 19-28, 37-42 are same, so delete
AAAAAACCCCCCCCCCCCTTTTTTTTTTCCCAAACCAAAAAA 1-6, 19-28, 37-42 are same, so delete
TTTTTTCCCCCCCCCCCCTTTTTTTTTTCCCCCCCCAAAAAA 1-6 and 36-42 are same but 37-42 are different so keep
如上例所示,如果我们取一个仅包含 4 行的文件,并且我正在查看字符 1-6、19-28、37-42,则第 2 行和第 3 行将被删除,或者不会输出到输出文件因为它们在每个所需位置都有相同的字符,但由于第 4 行不同,因此不会被删除。
我从下面的代码开始,我的想法是将每个位置设置为一个变量(但我不知道必须得到中间序列),然后在我们遍历输入文件时与每一行进行比较。
with open(current_file, 'r') as f:
next(f)
for line in f:
start = line[:6]
end = line[-7:]
如果有帮助,这些文件也是 5-10GB,所以不是很小。我将不胜感激任何帮助。谢谢。