FastEI论文阅读

前言

       研究FastEI(Ultra-fast and accurate electron ionization mass spectrum matching for compound identification with million-scale in-silico library)有很长时间了,现在来总结一下,梳理一下认知。PS:为什么要加红呢,这是一个重点,即EI-MS,作者使用的是一级谱。

        论文地址:https://www.nature.com/articles/s41467-023-39279-7,Github项目地址:https://github.com/Qiong-Yang/FastEI。

概要

       这篇文章做的工作是小分子质谱匹配,就是说给定一个小分子的质谱,然后根据这个质谱到数据库中检索与它相近的质谱,并返回相应的分子信息。FastEI取得的成绩就是在较大的数据集上(in-silico library,数据量是百万级别)取得了较好的效果:Top10的召回率是80.4%,Top1的召回率是36.7%。此外作者还做了个检索程序,可以在电脑上运行。

架构

       模型需要分为两条线来说,一条线是查询:给定查询的实验谱(Query spectrum),将实验谱经Word2vec模型转化为嵌入向量(Spectral embeddings),用嵌入向量进行匹配,返回近似结果;另一条线是建库:给定分子信息, 经NEIMS模型转化为预测谱(分子信息和预测谱存入数据库中),再转化为嵌入向量,用嵌入向量构造检索架构(HNSW)。

模型

       下面来分别介绍一下用来生成预测谱的NEIMS、将质谱转化为嵌入向量的Spec2vec、加速检索速度的HNSW。

NEIMS

       NEIMS的全称是Neural Electron-Ionization Mass Spectrometry,论文地址:https://pubs.acs.org/doi/full/10.1021/acscentsci.9b00085。这个模型的原理就是先调用rdkit生成ECFPS分子指纹(关于ECFPS,可以去看这个博客:https://www.jianshu.com/p/8167a050debc),然后使用全连接神经网络去预测它的质谱。这个项目的Github地址:https://github.com/brain-research/deep-molecular-massspec。顺便吐槽一下:这是个19年的陈年老项目,用的是tensorflow1.13.2,然后Contributors也不解答issue了。

Spec2vec

        Spec2vec这个方法脑洞确实比较大,其作者是收到自然语言处理Word2vec的启发,将质谱的每一个峰表示为“Peak@m/z”这一word,然后再将这个word转化为vector。我觉得这样做的信息损耗也太大了,直接将质谱信息转化为vector不好吗?论文地址:https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1008724,Github项目地址:https://github.com/iomega/spec2vec。

HNSW

        HNSW的全称是Hierarchical Navigable Small-World graph,意为分层可导航小世界图,是用来快速检索的。要快速检索的原因是数据量比较大,你不可能去一一比对。它是一个贪心算法:从顶层到底层,向量逐层增加;从顶层进入,找到最近邻,向下深入,再找最近邻……一直找到底层的最近邻,将底层的Topk最近邻返回。论文地址:https://ieeexplore.ieee.org/abstract/document/8594636,Github项目地址:https://github.com/nmslib/hnswlib。

数据

       这个项目用到了三大数据集,分别是NIST2017、HMDB和ChEMBL 28。其中NIST是付费的,需要用到它的验证集和测试集,其余用NEIMS生成预测谱就可以。除了这三大数据集,还有10种 作者提出了四大过滤原则,分别是分子质量≤1000道尔顿、只含11种元素(H, C, O, N, P, S, Cl, F, Br, I, Si)、非离子化合物、LogP∈[-12,24]。

        在经过四大条件过滤之后, 三大数据集之间进行去重,确保没有重复元素。过滤和去重之后的数据集称为f-NIST、f-ChEMBL和f-HMDB。

实验结果

        这里主要展示一下召回率,in-silico library的召回率要比expanded library高一些,因为数据多了肯定。

结语

        有问题欢迎在评论区讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/796251.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode: 21. 合并两个有序链表 + 链表】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

axios快速入门

一、环境配置 1.1概述 上古浏览器页面在向服务器请求数据时,因为返回的是整个页面的数据,页面都会强制刷新一下,这对于用户来讲并不是很友好。并且我们只是需要修改页面的部分数据,但是从服务器端发送的却是整个页面的数据&#…

攻防世界 Broadcast 题目解析

Broadcast 一:题目 二:解析 将压缩包解压,得到如上图所示,打开task.py,之后得到flag 这个有点简单了,不要被解压后文件太多所迷惑。

InnoDB中的索引方案

文章目录 InnoDB中的索引方案 InnoDB支持多种类型的索引,包括B-tree索引、全文索引、哈希索引等。B-tree索引是InnoDB存储引擎的默认索引类型,适用于所有的数据类型,包括字符串、数字和日期等。 以下是创建InnoDB表及其B-tree索引的示例代码…

VBA数据库解决方案第九讲:把数据库的内容在工作表中显示

《VBA数据库解决方案》教程(版权10090845)是我推出的第二套教程,目前已经是第二版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法…

2024年阿里云4核8G服务器多少钱一年?4C8G服务器955元

阿里云服务器4核8G租用优惠价格955元一年,配置为云服务器ECS通用算力型u1实例4核8G配置、ESSD Entry盘20G-40G、1M-3M带宽,实例规格为ecs.u1-c1m2.xlarge,阿里云优惠活动 yunfuwuqiba.com/go/aliyun 活动链接打开如下图: 阿里云4核…

【数据结构】ArrayList详解

目录 前言 1. 线性表 2. 顺序表 3. ArrayList的介绍和使用 3.1 语法格式 3.2 添加元素 3.3 删除元素 3.4 截取部分arrayList 3.5 其他方法 4. ArrayList的遍历 5.ArrayList的扩容机制 6. ArrayList的优缺点 结语 前言 在集合框架中,ArrayList就是一个…

spring boot学习第十六篇:配置多数据源

1、代码参考: dynamic-ds/spring-boot-dynamic-ds at main veminhe/dynamic-ds GitHub 2、验证 2.1调用POST接口http://localhost:8081/hmblogs/blog/addBlog 2.2改动数据源为BJ 然后调用接口添加数据 然后查看ds0库的博客数据

【最新可用】Claude国内镜像,可上传图片,可用Claude3全系模型(包括Pro版本的Opus)!亲测比GPT好用!

亲测可用,镜像地址:Claude 3 镜像 使用方法 访问镜像:Claude 3 镜像 2. 点击设置,配置授权码,关闭设置。这里免费赠送一个体验版的授权码 sk-SZcJyvx3RXRID624E2D3795578Df44C7Af03F2909a8f5eA0 即可发起对话啦&…

Android Studio学习9——使用Logcat打印日志

在Android开发中,Logcat是一个工具,它允许开发者查看设备或模拟器的日志信息。开发者可以使用Log类来打印日志信息,这对于调试和错误排查非常有帮助。 v 或 verbose: 最低等级,显示所有消息。d 或 debug: 用于调试消息。i 或 info…

深入浅出 -- 系统架构之负载均衡Nginx动静分离

一、Nginx动静分离 动静分离应该是听的次数较多的性能优化方案,那先思考一个问题:为什么需要做动静分离呢?它带来的好处是什么? 其实这个问题也并不难回答,当你搞懂了网站的本质后,自然就理解了动静分离的重…

Docker安装mysql并且设置主从

Docker安装部署mysql 下载镜像 docker pull mysql:5.7.35查看镜像 docker images启动 直接启动不挂载文件 docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD123456 -d mysql:5.7.35挂载文件 docker run -p 3306:3306 --name mysql \ -v /usr/local/docker/m…

【Linux】环境基础开发工具使用——gcc/g++使用

Linux编译器-gcc/g使用 1. 背景知识 1. 预处理(进行宏替换 ) 2. 编译(生成汇编 ) 3. 汇编(生成机器可识别代码) 4. 连接(生成可执行文件或库文件 ) 2. gcc如何完成 格式 gcc [ 选项 ] 要编译的文件 [ 选…

代码随想录第19天

654. 最大二叉树 已解答 中等 相关标签 相关企业 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀…

Linux shell编程学习笔记45:uname命令-获取Linux系统信息

0 前言 linux 有多个发行版本,不同的版本都有自己的版本号。 如何知道自己使用的Linux的系统信息呢? 使用uname命令、hostnamectl命令,或者通过查看/proc/version文件来了解这些信息。 我们先看看uname命令。 1 uname 命令的功能和格式 …

官方竞价排名是否对SEO自然排名有影响?

很多站长有疑问,如果使用搜索引擎官方的SEM竞价,是否对之前做的SEO自然优化排名有影响。这个问题我自己也有疑问。 因为很多站长认为是起绝对反作用,什么只要用了竞价,停止之后,原本很好的排名都会掉光。我们不否定一…

Linux:部署搭建zabbix6(1)

1.基础介绍 Zabbix:企业级开源监控解决方案https://www.zabbix.com/cn这个是zabbix的官网,你可以进去看到由官方给你提供的专业介绍和获取到最新版本的功能介绍,还有各种安装,由于官方安装是多种复杂的,我这里就单独挑…

【stm32】软件I2C读写MPU6050

软件I2C读写MPU6050(文章最后附上源码) 编码 概况 首先建立通信层的.c和.h模块 在通信层里写好I2C底层的GPIO初始化 以及6个时序基本单元 起始、终值、发送一个字节、接收一个字节、发送应答、接收应答 写好I2C通信层之后,再建立MPU6050的.c和.h模块 基于I2C通…

Python基于深度学习的屋内烟雾检测系统的研究与实现,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

【原创】springboot+vue校园座位预约管理系统设计与实现

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…