基于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 repositoryGitHub Badge
2. LicenseLicense Badge
3. Community RegistryConda Badgespec2vec on PyPIResearch Software Directory Badge
4. Enable CitationZenodo Badge
5. ChecklistsCII Best Practices BadgeHowfairis Badge
Code quality checks
Continuous integrationAnaconda BuildAnaconda Publish
DocumentationDocumentation Status
Code QualitySonarcloud Quality GateSonarcloud Coverage

用户文档

有关更广泛的文档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

除非适用法律要求或书面同意,软件 根据许可证分发的是“按原样”分发的, 没有任何明示或暗示的保证或条件。 有关管理权限和的特定语言,请参阅许可证 根据许可证的限制。在

学分

这个包是用CookiecutterNLeSC/python-template创建的。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我可以使用Hibernate连接不同的数据库并从表中导入数据吗?没有预定义的对象类   java为什么getBoundsInLocal获取错误的坐标?   java在处理并发哈希映射时必须使用锁   java将过滤的JTable数据导出到文本文件   从命令行编译java不使用库   Java使用方法和构造函数绘制图形   java理解优先级队列中的排序方法   尝试解密文件时,java CipherInputStream为空   在Java中将字符串解析为长字符串   java我想在raspberry pi重新启动时在crontabe中执行arecord命令   弹性搜索弹性搜索Lucene公式的Java计算   java使用apachepoi和docx4j读取doc文件   swing显示JavaGUI是否需要特殊处理?   java使用字符串进行数学运算   java在SpringMVC中用JSP初始化菜单项选择表单数据的最佳方法   无多线程的java多客户端程序   swing如何在Java中对BuffereImage进行去饱和?   java在安卓中创建自定义地图