python处理序列文件(fasta格式)
大家好,这里是想做生信大恐龙🦖的生信小白。2022年新年快乐啊,这次记录一下基因组学的实验。
前言
基因组学,十分难学!可能与该学期因为学生工作没上一个月课有关,学基因组学的感觉就很难受,平时老师讲都没认真听,这时候处理文件就很难受了!!!但是大学生就是“在一个大一点的学校里面学会自己学”,经过一番摸爬滚打总算解决了这个修改名字的问题。
提示:以下是本篇文章正文内容,下面案例可供参考
一、记录
问题:
做Blast之前请改下序列名,在各自序列名后面加上GCF编号
如将WP_003333770.1改成WP_003333770.1:GCF_000010165
二、解决方法
import os #导入os库
FilePath = "C:/Users/86184/Desktop/data" #放在桌面上的数据文件夹
FileList = os.listdir(FilePath) #遍历文件夹中所有文件,产生一个列表
#---------修改数据名称---------#
for file in FileList: #遍历文件夹中的每一个文件
lastname = file[0:13] #切片处理,提取前13个字符
oldf = open("C:/Users/86184/Desktop/data/{}".format(file),"r").readlines() #按行全部读取文件
newf = open("C:/Users/86184/Desktop/result/{}.faa".format(lastname),'w') #将结果输出到新文件
n = 0 #用来防止产生空行,在下面的判断中使用
for line in oldf: #遍历待处理文件中的每一行
if line.startswith('>'): #判断首个符号是不是'>'
firstname = line[0:15] #切片处理,得到前15个字符
other = line[15:] #后续的其他字符
n += 1
if n == 1: #判断是不是首行,以免产生空行
newf.write("{}:{}{}".format(firstname,lastname,other)) #将处理后数据写入新文件
else:
newf.write("{}:{}{}".format(firstname,lastname,other)) #同上
else:
newf.write(line) #序列数据不需要处理
总结
请永远相信自己,遇到问题的时候不要轻易相信其他人的解决方法!有时候自己想的更有创新性与高效性。