Я пытался разработать код для чтения нуклеотида в формате fasta в виде строк (каждый вход - как одно слово), а затем использовать уже известные последовательности сайтов связывания (длиной 11 п.н.) для поиска среди нуклеотидных последовательностей с помощью модели word2vec
Файл fasta выглядит так, и все значения читаются в виде последовательностей в виде строки
`sequence:
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)]
Что нужно изменить, чтобы получить связь между двумя сайтами связывания, а не двумя / более парами оснований?