生信脚本练习(12)求fasta文件各序列长度并统计作图

题目要求是要从一个fasta文件中统计出每条序列的长度分布,并作图。

代码如下:

import os
import getpass
import matplotlib.pyplot as plt
usr = getpass.getuser()
os.chdir('c:/Users/' + usr + '/Desktop')
seq_len = {}
# 把fasta文件全部读取做成字典,键是带‘>’的那一行,值是序列
def readfasta(filename):
    fa = open(filename, 'r')
    res = {}
    ID = ''
    for line in fa:
        if line.startswith('>'):           
            ID = line.strip('\n')
            res[ID] = ''
        else:           
            res[ID] += line.strip('\n')
    return res
seq = readfasta('Test1.fa')

# 做成另外一个字典字典,键是带‘>’的那一行,值是序列长度:
for k,v in seq.items():
    seq_len[k] = len(v)
seq_len_sort = sorted(seq_len.items(), key=lambda x: x[1])
seq_len_sort = dict(seq_len_sort)

location = {}
lenth_a = 0
lenth_b = 500
bar = 500
# 通过循环的方式找到每个窗口区间内的长度分布,这里选的窗口是500
# 这里的4500是排序之后根据最大值看出来的
while lenth_b &
  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值