【问题标题】:code error in word2vec program for DNA sequence用于 DNA 序列的 word2vec 程序中的代码错误
【发布时间】: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


【解决方案1】:

您需要确保您的sequences 是一个 python 序列,其中每个项目都是一个标记列表,其中标记是您要查找的“单词”(例如多个相关的 11 个字符)结合位点')。如果它是一个只有“AGTC”字符的字符串序列,则标记将只是AGTC

size=2 可能不会生成有趣的向量,至少对于包含数百或数千个标记的词汇表而言不会。

min_count,只要您的全套示例将丢弃任何至少没有出现那么多次的令牌。

如果您将数据集提供给类初始化,则无需调用train():它将已经自动启动训练。 (如果您在 INFO 级别运行日志记录,这从输出中会很明显。)

【讨论】:

  • 我无法将sequence 从 ATCG 以外的任何地方更改,因为它是一个核苷酸序列。
  • 您需要提供您的域的“单词”(无论是什么)作为令牌列表,Word2Vec 才能工作。如果您只提供像“ATTGATCGCTAGCTCTAGCTGACTG”这样的原始字符串,它就无法工作,因为这不是Word2Vec 所期望的输入,并且它将看到的唯一标记是AGT 和@987654335 @ – & 仅仅 4 个字不会有帮助。它必须更像是一堆列表,比如:['ATTATC', 'AGTA', 'TCGCGA', 'CTCCAACG'],这样它才能学习这些多于一个字母的分组之间的关系。因此,您必须修改您的 sequences 以匹配有意义的 Word2Vec 输入格式。
  • 谢谢,现在已经很清楚了,但我还有一个问题..如何为单词创建这个标记。此外,提供的绑定站点不只是四个,我有一个大约 20000 个的列表。
  • 我需要更多关于您的数据原始格式的信息,以及这个特定的非传统的 Word2Vec 问题域(DNA 而不是人类自然语言),以了解如何按摩将原始数据转换为类似句子的“文本”,其中 DNA 范围为“单词”。 (是否存在一种数据形式,其中多个 11 个碱基对“结合位点”按顺序一起出现,类似于一个包含许多 11 个字母单词的句子?)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 2018-12-26
  • 1970-01-01
相关资源
最近更新 更多