栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

使用python简单实现K核苷酸频率(KNF,k-nucleotide frequencies)或K-mer频率

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用python简单实现K核苷酸频率(KNF,k-nucleotide frequencies)或K-mer频率

K核苷酸频率(KNF,k-nucleotide frequencies)或K-mer频率
KNF描述了序列中存在k个核苷酸的所有可能的多核苷酸的频率。如果k=2,则计算的为双核苷酸频率(即AA、AT、AG、AC、……TT),共42=16种;如果k=3,则计算的为双核苷酸频率(即AAA、AAT、AAG、AAC、……TTT),共43=64种;以此类推。
K-mer频率方法与上面所述相同。

from itertools import product  #定义包
def nucleotide_frequency(seq,k):  #seq为输入的多个序列,k为几核苷酸
    X = []
    char = []  
    for i in product('ACGT', repeat = k):  #笛卡尔积(有放回抽样排列)
        char.append(''.join(i))  #去除引号后存放到char里,即把('A,A,A')转变成(AAA)形式
    for s in seq:  #循环调用每一个序列
        frequence = []  #定义空列表,用于存放计算好的频率
        for a in char:  #循环取char里的k核苷酸类型
            number = 0
            for j in range(len(s)-k+1):  #在单个序列中进行循环取k间隔片段
                if s[j:j+k] == a:  #判断k间隔片段是否和char里的k核苷酸类型相等
                    number += 1  
            char_frequence = number/(len(s)-k+1)  #计算频率,此时序列长度=原序列长度-k+1
            frequence.append(char_frequence)
        X.append(frequence)
    return X
#用具体数据进行调用
knf = nucleotide_frequency(data,k)  #data为具体数据,k的值根据需要自己设定
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/915926.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号