【发布时间】:2019-06-04 15:12:08
【问题描述】:
我一直在尝试开发一种代码,以将 fasta 格式的核苷酸读取为字符串(每个输入为一个单词),然后使用已知的结合位点序列(11 bp 长)通过 word2vec 模型在核苷酸序列中搜索
fasta 文件的样子,所有值都按字符串顺序读取
`序列:
ATCGTGACGTGACGTGACGT
CGTAGCTAGAGCTAGCGGATCGA
绑定站点在数据框中存储为 df['binding'] 的列
ATGACTCAGCA
GTGACTAAGCA
ATGACTCAGCA
ATGACTCAGCA
...
这是我在 python 中的代码:
import gensim
import logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
model = gensim.models.Word2Vec(sequences, size=2, min_count=len(sequences), sg = 1)
model.train(sequences,total_examples=len(sequences),epochs=10)
w1 = df['binding']
model.wv.most_similar(positive=w1)
我希望获得每个绑定站点之间的关系,但它会抛出错误,因为 KeyError: "word 'ATGACTCAGCA' not in vocabulary" 这里 ATGACTCAGCA 是 df['binding'] 中的第一个值
如果我更改w1 = df['binding'] to w1='A',我得到的结果是
[('T', 0.9952122569084167),
('G', 0.9772425889968872),
('C', 0.9460670351982117)]
应该改变什么来获得两个结合位点之间的关系而不是两个/更多碱基对?
【问题讨论】:
-
在将每个单独的字符串输入 model.wv.most_similar() 时,您是否尝试过逐行遍历数据框?
-
迭代不起作用,我也尝试采用单独的绑定站点值。没有什么可以接受单个 bp 在这里工作。
标签: python-3.x list word2vec fasta