[英]How to specify number of characters in each line in python?
我有一个包含两个基因序列的fasta文件,我要删除的是fasta标头(以“>”开头的行),连接其余各行,并以每行50个字符的长度输出该序列。 我取得了一些进步,但最终被打击了。
这是我的斋戒序列:
>Potrs164783
AGGAAGTGTGAGATTGAAAAAACATTACTATTGAGGAATTTTTGACCAGATCAGAATTGAACCAACATGATGAAGGGGAT
TGTTTGCCATCAGAATATGGCATGAAATTTCTCCCCTAGATCGGTTCAAGCTCCTGTAGGTTTGGAGTCCTTAGTGAGAA
CTTTCTTAAGAGAATCTAATCTGGTCTGTTCCTCGTCATAAGTTAAAGAAAAACTTGAAACAAATAACAAGCATGCATAA
>Potrs164784
TTACCCTCTACCAGCACCAATGCCTATGATCTTACAAAAATCCTTAATAAAAAGAAATCCAAAACCATTGTTACCATTCC
GGAATTACATTCTGAGATAAAAACCCTCAAATCTGAATTACAATCCCTTAAACAAGCCCAACAAAAAGACTCTGCCATAC
我想要的输出是这样的
>conc
AGGAAGTGTGAGATTGAAAAAACATTACTATTGAGGAATTTTTGACCAGA
TCAGAATTGAACCAACATGATGAAGGGGATTGTTTGCCATCAGAATATGG
CATGAAATTTCTCCCCTAGATCGGTTCAAGCTCCTGTAGGTTTGGAGTCC
TTAGTGAGAACTTTCTTAAGAGAATCTAATCTGGTCTGTTCCTCGTCATA
AGTTAAAGAAAAACTTGAAACAAATAACAAGCATGCATAAACCATATGGC
ATTTTGCATCCATTTGTGCATTTCATTTAGTTTACTTGCATTCATTCAGG
到目前为止,我的脚本是
final = list()
with open("test.fa", 'r') as fh_in:
for line in fh_in:
line = line.strip()
if not line.startswith(">"):
final.append(line)
final2 = "".join(final)
with open("testconcat.fa", 'w') as fh_out:
fh_out.write(">con")
fh_out.write("\n")
fh_out.write(final2)
如何确保每行只写50个字符?
您可以使用内置的textwrap库
import textwrap
final2 = "".join(final)
print '\n'.join(textwrap.wrap(final2, 50)
当大的文件时,如果你做的加入,在内存切片等,你可能最终得到奇怪的问题,你会为被消耗相对更多的内存appending
每一行,然后splitting
他们再次陷入平分块实际上之前写入文件。
我认为避免此类问题的最佳方法是对文件而不是内存进行操作,换句话说,您应该在阅读时同时进行书写。
>>> with open('test.fa', 'r') as r, open('testconcat.fa', 'w') as w:
... for line in r:
... if not line.startswith(">"):
... w.write(line.strip())
>>> with open('testconcat.fa', 'r+') as w:
... chunk = 50
... i = 0
... while next(w, None):
... w.seek(((i + 1) * chunk) + i)
... w.write('\n')
... i = i + 1
>>> cat testconcat.fa
AGGAAGTGTGAGATTGAAAAAACATTACTATTGAGGAATTTTTGACCAGA
CAGAATTGAACCAACATGATGAAGGGGATTGTTTGCCATCAGAATATGGC
TGAAATTTCTCCCCTAGATCGGTTCAAGCTCCTGTAGGTTTGGAGTCCTT
GTGAGAACTTTCTTAAGAGAATCTAATCTGGTCTGTTCCTCGTCATAAGT
AAAGAAAAACTTGAAACAAATAACAAGCATGCATAATTACCCTCTACCAG
ACCAATGCCTATGATCTTACAAAAATCCTTAATAAAAAGAAATCCAAAAC
ATTGTTACCATTCCGGAATTACATTCTGAGATAAAAACCCTCAAATCTGA
TTACAATCCCTTAAACAAGCCCAACAAAAAGACTCTGCCATAC
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.