|
最近发现学习python的方法在于完成一个个小课题,这样对于个人对于python的掌握提高很大。这一次分析一段将fasta文件中的每一段序列分割成80个字母一行的序列。首先我有这样一个fasta文件。
执行完代码之后就会得到这样一个文件
先把完整代码展示一下
#前面这部分就是把这个fasta文件的基因名字和序列放入到字典中,之前一篇博客有详细讲。
seq={}
fr=open('16s.fasta','r')#'16s.fasta这里应该写出绝对路径,否则Python找不到你的文件',因为我把文件放在#了家(home)目录下,所以直接写文件名字就可以.
for line in fr:
if line[0] =='>':
key=line.strip()
seq[key]=[]
else:
seq[key].append(line.strip())
fr.close
#至此就得到了以基因名为键(key)以序列为值(value)的字典seq
#下面是对字典进行一些操纵
fw=open('80gap_16s.fasta','w')#用open方法打开一个文件用于写入,并从开头开始编辑,即原有内容会被##删除。如果该文件不存在,创建新文件。
#用for循环遍历字典
for key,value in seq.items():
fw.write(key)#基因名并不需要任何操作直接写入新建的文件
fw.write('\n')#输入换行,如果不这样做,序列会直接跟在基因名后面。
valuel = ''.join(value)#把基因序列连接起来
seqlen=len(valuel)#连接一起的基因序列总长
for cut in range(0,seqlen,80):#使用range函数80为步长,for循环做切片,
fw.write(valuel[cut:cut+80]+' ')#然后将基因片段一段一段的写入文件并在它们之间加入空格。
fw.write('\n')#写完一个基因后写加入换行,开始新的一段循环
fw.close#关闭文件
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-22 20:47
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社