在做文字识别和自然语言处理时,countvectorizer 和tf-idf是常见的两种常见的对文字进行编码的方式。DNA在打断成kmer后,也可以按照文字编码的方式对kme进行编码。DNA如何编码可参考本人博客文章字符串(如DNA序列,蛋白质序列)的编码和用于机器学习和神经网络.
这篇文章展示如何将DNA序列打断成kmer然后用countvectorizer 和tf-idf来编码,当然也可以直接用文字来编码,如果用来处理word文本,直接从第2步开始。
1. 对dna 打断成kmer并处理成word格式
# 读取fasta 序列
from Bio import SeqIO
chromid = []
chromseq = []
for sample in SeqIO.parse("your——file.fa", "fasta"):
chromid.append(sample.id)
chromseq.append(str(sample.seq))
chrom.head()
读入的序列以字符串格式储层:
id seq
0 HF952106 atagtgaaaaagagatatttaacttgttgtctgatcttcgtgaaaa...
1 APOS01000035 ataaataaagtagcttgttgtgattttcggattaaaattgcgtcaa...
2 JKMH01000030 gctggtgaactccggcaccgaggccactatgagcgccgtgcggctg...
3 JDYX01000005 aaatgcttgagggttcgtaattaacttgaatacatcttcatcaata...
4 ALQS01000022 aggattggatcgaggtcaatgactaaagttgttttagtgacgggct...
#打断成6mer
def getKmers(sequence, size=6):
return [sequence[x:x+size].lower() for x in range(len(sequence) - size + 1)]
chrom['6mers'] = chrom.apply(lambda x: getKmers