K-mer特征提取one-hot编码

K-mer特征提取one-hot编码


定义K-mer函数,把序列转换成密码子形式

def Kmers_funct(seq): 
    X = [None]*len(seq)    #若数据只有一个序列,可不用此定义
    for i in range(len(seq)):  #若数据只有一个序列,可不用此循环
        a = seq[i]
        t=0
        l=[]
        for index in range(len(a)):
            t=a[index:index+3]
            if (len(t))==3:
                l.append(t)
        X[i] = l
    return np.array(X)  #具体看返回需要,也可直接:return X

调用Kmers_funct函数

X = Kmers_funct(x)

数据去重复

lists_X = np.unique(X)  #去除重复数据
print(lists_X)  #去除重复数据后的数据
print(len(lists_X))  #去除重复数据后的数据长度

将Kmers_funct提取后的数据编码为one-hot

def encode_matrix(seq_matrix):
    seq_X = [None]*len(seq_matrix)  #若数据只有一个序列,可不用此定义
    for j in range(len(seq_matrix)):  #若数据只有一个序列,可不用此循环
        data = seq_matrix[j]
        ind_to_char = lists_X
        # 定义字符到整数的映射
        char_to_int = dict((c, i) for i, c in enumerate(ind_to_char))  #枚举
        int_to_char = dict((i, c) for i, c in enumerate(ind_to_char))
        #整数编码
        integer_encoded = [char_to_int[char] for char in data]
        #one-hot编码
        onehot_encoded = list()
        for value in integer_encoded:
            letter = [0 for _ in range(len(ind_to_char))]  #one-hot编码长度=去除重复后所剩余数据的个数
            letter[value] = 1
            onehot_encoded.append(letter)
        seq_X[j] = onehot_encoded
    return seq_X
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值