目录
Spec2Vec
前言:自己最近在做的工作是LC-MS解谱相关的工作,PLoS Computational Biology在今年2月也发表了一种新的计算质谱相似度的方法。新的算法Spec2Vec是基于自然语言处理中Word2Vec改进而来,与传统的余弦相似度相比,Spec2Vec提高了质谱相似度与结构相似度之间的相关性。该模块是使用Python编写的,但安装该模块运行后发现有几个bugs,因此发出来大家一起分享一下,希望自己踩过的坑别人就不要再踩了,毕竟还是很新的文章,在写这篇博客前还没搜到国内有相关的介绍……
安装
因为是Python,安装非常方便,使用pip或者anaconda都可以。
pip install spec2vec
pip install gensim
Bugs
直接运行文档中给出的demo后,报错了……
TypeError: __init__() got an unexpected keyword argument 'size'
当然实际运行下来错误不止这一个,折腾了我好久才弄好,总结起来都是几个参数名称的错误
找到自己安装Python的路径,进入安装spec2vec的文件夹
Python>Lib>site-packages>spec2vec
model_building.py中,
set_spec2vec_defaults(**settings)函数,107行,defaults里面的键 “size” 改为 "vector_size"
learning_rates_to_gensim_style(num_of_epochs, **settings)函数,135行,settings的键 “iter” 改为 "epochs"
Spec2Vec.py中,_get_word_decimals(model)函数,181行,model.wv.vocab 改为 model.wv.key_to_index
vector_operations.py中,_check_model_coverage()函数,第51行,同样是 model.wv.vocab 改为 model.wv.key_to_index
为什么会有这种错误
因为Spec2Vec是基于Gensim的,在Gensim 3.X到4.X版本升级中,有几个参数的名字发生了变化,具体见下:
https://github.com/RaRe-Technologies/gensim/wiki/Migrating-from-Gensim-3.x-to-4
前面两个错误size和vector_size,iter和epochs,都是Spec2Vec 在内部两个模块调用之间出错的,估计是两个人写的模块,一个人按照3.X版本的接口名称来写,另一个按4.X来写。
至于vocab和key_to_index,就是在用3.X的接口来调用了4.X的Gensim。
所以说但凡文章作者发出来前完整地把这玩意跑一遍,都不至于这会有这么简单的错误!!!