1. 写程序 `formatFasta-2.py`, 读入 test2.fa,把每条 FASTA 序列分割成 80 个字母一行的序列

列举了两种结构

seq,name = '',''
SEQ = []
i = 0 
with open("../test2.fa") as lines:
    for line in lines:
        if line.startswith(">"):  #ID行
            length = len(seq)   #序列行的处理
            for i in range(0,length,80):
                seq1 = seq[i:i+80]  #存储80个字符
                SEQ.append(seq1)  
            if name != '':  #因为一开始多了一行空格,通过这一步删除
                print(name+str(SEQ))   

            line = line.split()[0] #提取出ID
            name = line
            seq=''  #序列数据清空
            SEQ = []
        else:
            seq += line.strip('\n')  #seq存储序列数据

第一次写的,还debug了好久,逻辑理解起来有点困难 

with open("/home/eva/Luolab/data/test2.fa") as file:
    seqName,seq = '',''
    splitnum = 80
    while True:
        line = file.readline()
        line = line.strip("\n")
        
        if (line.startswith(">") or not line) and seqName:
            print(seqName)
            length = len(seq)
            for i in range(0,length,splitnum):
                result = seq[i:i+splitnum]
                print(result)
            print(length)
        if line.startswith(">"):
            seqName = line.split()[0]
            seq = ''
        else:
            seq += line
        if not line: break

使用 while True的结构,更加值得学习的一种格式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值