JZXBK的个人博客分享 http://blog.sciencenet.cn/u/JZXBK

博文

生信 python 练习题 把每条FASTA序列分割成80个字母一行的序列

已有 4932 次阅读 2020-6-13 17:49 |系统分类:科研笔记

最近发现学习python的方法在于完成一个个小课题,这样对于个人对于python的掌握提高很大。这一次分析一段将fasta文件中的每一段序列分割成80个字母一行的序列。首先我有这样一个fasta文件。image.png

执行完代码之后就会得到这样一个文件

image.png

先把完整代码展示一下


#前面这部分就是把这个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#关闭文件







https://blog.sciencenet.cn/blog-3419243-1237731.html

上一篇:R语言 PCA PCoA ggplot2
下一篇:微生物 物种丰度 网络图 R语言 Gephi network
收藏 IP: 118.77.177.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-22 20:47

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部