基于Word2Vec的质谱数据相似性度量。
spec2vec的Python项目详细描述
Spec2vec是一个受自然语言处理启发的新的光谱相似性评分 算法–Word2Vec。Word2Vec学习句子中单词之间的关系, spec2vec对质谱中的质量碎片和中性损失也有这样的作用。 谱相似性得分是基于所学的谱嵌入 从大量光谱数据中的碎片关系。在
如果您使用spec2vec进行研究,请引用以下参考文献:
{jroger-ft结构相似性研究,{jroger-ft,}改进的结构相似性,hubroger-ft,jj^2ft,通过质量向量学习
(如果您同时使用matchms: F、 Huber,S.Verhoeven,C.Meijer,H.Spreeuw,E.M.Villanueva Castilla,C.Geng,J.J.J.van der Hooft,S.Rogers,A.Belloum,F.Diblen,J.H.Spaaks,(2020年)。质谱数据的处理和相似性评价。开放源码软件杂志,5(52),2411,https://doi.org/10.21105/joss.02411)
谢谢!在
Badges | |
---|---|
fair-software.nl recommendations | |
1. Code repository | |
2. License | |
3. Community Registry | |
4. Enable Citation | |
5. Checklists | |
Code quality checks | |
Continuous integration | |
Documentation | |
Code Quality |
用户文档
有关更广泛的文档see our readthedocs。在
安装
先决条件:
- Python 3.7或3.8
- 推荐:Python
我们建议使用
conda create --name spec2vec python=3.8
conda activate spec2vec
conda install --channel nlesc --channel bioconda --channel conda-forge spec2vec
或者,spec2vec也可以使用pip安装。当将spec2vec与matchms一起使用时,需要注意的是,只有Anaconda安装才能确保正确安装rdkit,这是一些matchms过滤器函数所必需的(但是对于任何spec2vec相关的功能都不需要)。在
^{pr2}$示例
下面是一个如何处理参考光谱的大数据集的代码示例 从头开始训练word2vec模型。使用SpectrumDocument将光谱转换为文档,根据m/z比率(例如“peak@100.39”)将光谱峰值转换为“单词”。新的word2vec模型可以使用train_new_word2vec_model进行训练,除非另有指定,否则它将把训练参数设置为spec2vec默认值。Word2Vec模型从许多不同光谱的峰(“单词”)的共现中学习。 得到一个能给出一组 在给定光谱的情况下,需要对模型进行大规模和有代表性的训练 数据集。在
importosfrommatchms.filteringimportadd_lossesfrommatchms.filteringimportadd_parent_massfrommatchms.filteringimportdefault_filtersfrommatchms.filteringimportnormalize_intensitiesfrommatchms.filteringimportreduce_to_number_of_peaksfrommatchms.filteringimportrequire_minimum_number_of_peaksfrommatchms.filteringimportselect_by_mzfrommatchms.importingimportload_from_mgffromspec2vecimportSpectrumDocumentfromspec2vec.model_buildingimporttrain_new_word2vec_modeldefapply_my_filters(s):"""This is how one would typically design a desired pre- and post- processing pipeline."""s=default_filters(s)s=add_parent_mass(s)s=normalize_intensities(s)s=reduce_to_number_of_peaks(s,n_required=10,ratio_desired=0.5)s=select_by_mz(s,mz_from=0,mz_to=1000)s=add_losses(s,loss_mz_from=10.0,loss_mz_to=200.0)s=require_minimum_number_of_peaks(s,n_required=10)returns# Load data from MGF file and apply filtersspectrums=[spectrum_processing(s)forsinload_from_mgf("reference_spectrums.mgf")]# Omit spectrums that didn't qualify for analysisspectrums=[sforsinspectrumsifsisnotNone]# Create spectrum documentsreference_documents=[SpectrumDocument(s)forsinspectrums]model_file="references.model"model=train_new_word2vec_model(reference_documents,model_file,iterations=[10,20,30],workers=2,progress_logger=True)
一旦一个word2vec模型被训练好,spec2vec就可以计算相似性 基于此模型的质谱图之间。如果word2vec模型是 根据与申请的数据不同的数据进行培训,多个峰值(“单词”) 模型可能不知道(如果它们不是训练数据集的一部分)。到 对于这些情况,必须指定allowed_missing_percentage, 如下例所示。在
importgensimfrommatchmsimportcalculate_scoresfromspec2vecimportSpec2Vec# query_spectrums loaded from files using https://matchms.readthedocs.io/en/latest/api/matchms.importing.load_from_mgf.htmlquery_spectrums=[spectrum_processing(s)forsinload_from_mgf("query_spectrums.mgf")]# Omit spectrums that didn't qualify for analysisquery_spectrums=[sforsinquery_spectrumsifsisnotNone]# Create spectrum documentsquery_documents=[SpectrumDocument(s)forsinquery_spectrums]# Import pre-trained word2vec model (see code example above)model_file="references.model"model=gensim.models.Word2Vec.load(model_file)# Define similarity_functionspec2vec_similarity=Spec2Vec(model=model,intensity_weighting_power=0.5,allowed_missing_percentage=5.0)# Calculate scores on all combinations of reference spectrums and queriesscores=calculate_scores(reference_documents,query_documents,spec2vec_similarity)# Filter out self-comparisonsfiltered=[(reference,query,score)for(reference,query,score)inlist(scores)ifreference!=query]sorted_by_score=sorted(filtered,key=lambdaelem:elem[2],reverse=True)
术语表
^{tb2}$开发人员文档
安装
要安装spec2vec,请执行以下操作:
git clone https://github.com/iomega/spec2vec.git
cd spec2vec
conda env create --file conda/environment-dev.yml
conda activate spec2vec-dev
pip install --editable .
用以下方式运行皮棉:
prospector
运行测试(包括覆盖率):
pytest
康达包装
要在本地构建anaconda包,请执行以下操作:
conda deactivate
conda env create --file conda/environment-build.yml
conda activate spec2vec-build
BUILD_FOLDER=/tmp/spec2vec/_build
rm -rfv $BUILD_FOLDER;mkdir -p $BUILD_FOLDER
conda build --numpy 1.18.1 --no-include-recipe -c bioconda -c conda-forge \
--croot $BUILD_FOLDER ./conda
如果成功,将生成spec2vecconda包 spec2vec-<version>*.tar.bz2在$BUILD_FOLDER/noarch/中。你可以测试 本conda软件包的安装与:
# make a clean environment conda deactivate cd $(mktemp -d) conda env create --name test python=3.7 conda activate test conda install \ --channel bioconda \ --channel conda-forge \ --channel file://${CONDA_PREFIX}/noarch/ \ spec2vec
要在anaconda cloud上发布包,请执行以下操作:
anaconda --token ${{ secrets.ANACONDA_TOKEN }} upload --user nlesc --force $BUILD_FOLDER/noarch/*.tar.bz2
其中secrets.ANACONDA_TOKEN是要在Python云网站上生成的令牌。此机密应添加到GitHub存储库中。在
要从活动环境中删除spec2vec包:
conda remove spec2vec
要删除spec2vec环境:
conda env remove --name spec2vec
贡献
如果您想为spec2vec的开发做出贡献, 看看contribution guidelines。在
许可证
版权所有(c)2020年,荷兰eScience中心
根据Apache许可证2.0版(“许可证”)授权; 除非符合许可证,否则您不能使用此文件。 您可以在
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,软件 根据许可证分发的是“按原样”分发的, 没有任何明示或暗示的保证或条件。 有关管理权限和的特定语言,请参阅许可证 根据许可证的限制。在
学分
这个包是用Cookiecutter和NLeSC/python-template创建的。在
- 项目
标签: