我在创建不同长度RNA序列的独热编码,因为长度不同,所以不同序列生成的矩阵维度不同,但是我想沿列堆叠这些不同维度的矩阵,而这是np.vstack()函数不支持的,想问一下有什么方法可以解决这个问题吗?因为序列长度差异太大,所以我不想把短的序列补齐。
这是我所用的代码:
import numpy as np
seq = []
with open('rna.fa', 'r') as f:
for line in f:
if line[0] == '>':
tokens = line[1:].split()
sequence = tokens[-1].strip().upper()
seq.append(sequence)
else:
pass
f.close()
print(len(seq))
def one_hot_encode(seq):
mapping = dict(zip("ACGTN", range(5)))
seq2 = [mapping[i] for i in sequence]
return np.eye(5)[seq2]
for i in range(1,5110):
xi = one_hot_encode(seq[i])
X = np.vstack((x,seq[i]))