当前位置: 首页 > news >正文

论文阅读:A fast, scalable and versatile tool for analysis of single-cell omics data

Zhang, K., Zemke, N.R., Armand, E.J. et al. A fast, scalable and versatile tool for analysis of single-cell omics data. Nat Methods 21, 217–227 (2024).

论文地址:https://doi.org/10.1038/s41592-023-02139-9

代码地址:https://github.com/kaizhang/SnapATAC2/


摘要

单细胞组学技术在复杂组织中基因调控研究领域带来了革命性进展。分析这些数据集的一大计算挑战在于,将大规模、高维数据投影到低维空间的同时,保留细胞之间的相对关系。这种低维嵌入对于分解细胞异质性和重建细胞类型特异的基因调控程序至关重要。然而,传统的降维技术在计算效率和全面处理不同分子模式下的细胞多样性方面面临挑战。为此,我们引入了一种非线性降维算法并将其整合到Python包SnapATAC2中。该算法不仅能够更精确地捕捉单细胞组学数据的异质性,还能确保运行效率和内存使用的优化,其性能随细胞数量线性扩展。我们的算法在多种单细胞组学数据集上表现出卓越的性能、可扩展性和多功能性,包括单细胞转座酶可及染色质测序(scATAC-seq)、单细胞RNA测序(scRNA-seq)、单细胞Hi-C以及单细胞多组学数据集。这充分表明了其在推动单细胞分析领域发展的实用价值。

引言

单细胞组学技术的快速发展,使得对基因组中编码的基因调控程序的分析达到了前所未有的分辨率和规模。单细胞基因组、转录组、开放染色质图谱、组蛋白修饰、转录因子结合位点、DNA甲基化和染色质结构等的分析,为理解细胞身份和调控机制提供了宝贵的见解。然而,单细胞组学数据的极大规模和复杂性常常带来显著的计算挑战,迫切需要开发高效、可扩展且鲁棒性强的数据分析方法。

分析单细胞组学数据的一个关键步骤是将高维数据投影到低维空间,同时保留细胞之间的相对关系,这一过程被称为降维。降维对于后续分析(如聚类、批次效应校正、数据整合和可视化)的成功至关重要。有效的降维技术是可视化不同细胞群体、识别稀有细胞类型以及描绘细胞类型特异性转录调控程序的基础。目前,单细胞组学降维算法主要分为线性和非线性两类。线性降维算法如主成分分析(PCA),被SCANPY和Seurat用于单细胞RNA测序(scRNA-seq)数据分析;潜在语义索引(LSI)被ArchR和Signac用于单细胞开放染色质测序(scATAC-seq)数据分析。这些算法因其计算效率和可扩展性而广受欢迎,但在处理具有复杂非线性结构的数据集(如单细胞Hi-C和单细胞多模态组学数据集)时并不理想。

非线性降维方法则更擅长捕捉复杂且常常是非线性的细胞关系。例如,潜在狄利克雷分布(LDA)被用于scATAC-seq和scHi-C数据;基于拉普拉斯的算法被用于scRNA-seq和scATAC-seq数据;各种用于scRNA-seq、scATAC-seq和scHi-C数据的神经网络模型。这些非线性降维方法已成为单细胞数据可视化的标准方法,例如t分布邻域嵌入(t-SNE)和统一流形近似与投影(UMAP)尽管最近对其可靠性和有效性提出了一些质疑。尽管非线性方法在处理复杂结构和低维流形投影方面表现出色,但通常计算效率较低且可扩展性有限。例如,LDA依赖于马尔科夫链蒙特卡罗算法进行模型训练,收敛速度慢,计算成本高且难以并行化,使其难以应用于大型数据集。基于拉普拉斯的技术(如我们之前的SnapATAC工作)需要计算所有细胞对之间的相似性矩阵,导致内存使用随细胞数量呈二次增长。深度神经网络模型虽然性能强大,但训练成本高,通常需要图形处理单元(GPU)等专用硬件支持。

在本研究中,我们提出了一种非线性降维算法,能够在解析复杂组织的细胞组成时兼顾计算效率和准确性。我们的关键创新在于使用矩阵无关的谱嵌入算法,将单细胞组学数据投影到保留数据内在几何特性的低维空间。不同于传统的谱嵌入方法(需要构建图拉普拉斯矩阵,存储需求随细胞数量呈二次增长),我们的算法通过使用Lanczos算法隐式操作拉普拉斯矩阵,避免了这一计算昂贵的步骤。这一策略显著降低了时间和空间复杂度,使其随单细胞数据的细胞数量线性扩展。

为了评估算法的准确性和实用性,我们在包含不同实验方案、物种和组织类型的多种数据集上进行了广泛的基准测试。结果表明,我们的矩阵无关谱嵌入算法在速度、可扩展性和解析细胞异质性方面均优于现有方法。此外,我们展示了该算法可扩展到多种单细胞组学数据的分子模式,利用来自不同单细胞组学数据类型的互补信息揭示细胞异质性。

我们将这些算法改进实现为一个Python包SnapATAC2。这是对原始SnapATAC的重大升级,提供了显著的改进,包括更快的速度、更低的内存使用、更可靠的性能以及面向多种单细胞组学数据的综合分析框架。SnapATAC2可从 https://github.com/kaizhang/SnapATAC2/ 免费获取。

SnapATAC2 工作流程概览

SnapATAC2 是一种全面且高性能的单细胞组学数据分析解决方案。与原版 SnapATAC 相似,SnapATAC2 提供了丰富的功能,覆盖 scATAC-seq 数据分析流程的多个阶段。此外,SnapATAC2 的设计具有高度灵活性,可适用于多种单细胞组学数据类型。例如,其降维子程序不仅可用于 scATAC-seq 数据,还能适配 scRNA-seq、单细胞 DNA 甲基化和 scHi-C 数据,体现了其强大的适应性。

为了提升性能和可扩展性,SnapATAC2 使用了 Rust 编程语言来执行计算密集型子程序,并提供了 Python 接口以实现便捷的安装和友好的用户体验。这种组合使得 SnapATAC2 能高效处理大规模单细胞组学数据,同时适用于不同研究背景的用户。此外,为了进一步提高在处理大规模单细胞数据时的可扩展性,SnapATAC2 尽可能采用磁盘数据结构和外存算法,使其在分析大型数据集时不至于过度占用系统资源。

SnapATAC2 具有模块化和可定制性,用户可以根据特定需求调整分析流程,同时还能与 scverse 生态系统中的其他软件包(如 SCANPY 和 scvi-tools)无缝集成,从而增强其适用性和功能性。

SnapATAC2 包括四个主要模块:预处理嵌入/聚类功能富集分析以及多模态组学分析(如图 1a 所示)。

  • 预处理模块 负责处理原始 BAM 文件、评估数据质量、生成计数矩阵以及识别双重细胞,为后续分析奠定了坚实基础。
  • SnapATAC2 的核心是其 嵌入/聚类模块,其中引入了一种新的降维算法,用于识别独特的细胞簇并揭示生物学模式。
  • 功能富集模块 提供了详细的数据解读,包括差异可及性分析和基序分析。
  • 多模态组学分析模块 则允许研究人员整合多种生物数据,分析复杂且多面的生物学数据集,并构建基因调控网络以加深对生物学机制的理解。

讨论

在本研究中,我们介绍了用于分析多种单细胞组学数据的工具 SnapATAC2。相比现有的降维方法,SnapATAC2 在准确性、抗噪性和可扩展性方面表现更为出色,为研究者提供了强大的工具来通过单细胞基因组学、转录组学和表观基因组学分析探究基因调控程序。

SnapATAC2 的一个显著优势是其与单细胞分析生态系统中广泛使用的软件工具的无缝兼容性。通过采用 AnnData 数据格式,SnapATAC2 能轻松与 SCANPY、scvi-tools 和 SCENIC+ 等成熟软件包集成。这一功能对于需要进行专业分析(如数据插补或轨迹推断)的研究者尤为有利,从而进一步增强了 SnapATAC2 的核心功能。

SnapATAC2 的关键创新在于其 基于矩阵自由光谱嵌入算法的降维方法。尽管已有许多算法被提出用于加速光谱嵌入,但 SnapATAC2 的算法独树一帜,因为它不依赖于子采样或近似计算,而是提供精确解。该算法不仅在细胞聚类和异质性识别方面优于现有方法,还保持了计算效率,非常适合于大规模单细胞组学数据分析。此外,我们通过将该矩阵自由光谱嵌入算法应用于多种单细胞数据类型(包括 scATAC-seq、scRNA-seq、单细胞 DNA 甲基化、scHi-C 和单细胞多组学数据),验证了其通用性。

算法局限性
目前,矩阵自由光谱嵌入算法仅基于余弦相似度计算。然而,对于某些数据类型,研究者可能更倾向于使用其他度量方法来量化细胞间的相似性。例如,我们的研究发现,对于在转录组和表位索引实验中使用的蛋白表达数据,欧几里得距离能够提供更准确的结果。未来的开发可以扩展矩阵自由算法以适应其他相似性度量方法。一种潜在的解决方案是利用一小组标记点将数据转化为稀疏特征向量,然后应用可扩展的矩阵自由光谱嵌入算法。

综上,SnapATAC2 在单细胞数据分析领域代表了一项重要进展,为研究表观基因组学提供了一种易于使用、可扩展且高性能的解决方案。随着持续的开发与优化,SnapATAC2 有潜力成为单细胞多组学数据分析的通用工具,最终推动新的生物学发现的实现。


模型的创新点在于在降维计算阶段降低了计算复杂度且具有可扩展性,后续将关注具体的计算复杂度

相关文章:

论文阅读:A fast, scalable and versatile tool for analysis of single-cell omics data

Zhang, K., Zemke, N.R., Armand, E.J. et al. A fast, scalable and versatile tool for analysis of single-cell omics data. Nat Methods 21, 217–227 (2024). 论文地址:https://doi.org/10.1038/s41592-023-02139-9 代码地址:https://github.com…...

【从零开始的LeetCode-算法】43. 网络延迟时间

有 n 个网络节点,标记为 1 到 n。 给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] (ui, vi, wi),其中 ui 是源节点,vi 是目标节点, wi 是一个信号从源节点传递到目标节点的时间。 现在,…...

一文理解 Python 编程语言中的 .strip() 方法

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ Python 中的 strip() 方法:初学者友好指南 在 Python 中,strip() 是一个极为实用的字符串方法,主要用于移除字符串首尾的特定字符。默认情况下,它会清除…...

solr 远程命令执行 (CVE-2019-17558)

漏洞描述 Apache Velocity是一个基于Java的模板引擎,它提供了一个模板语言去引用由Java代码定义的对象。Velocity是Apache基金会旗下的一个开源软件项目,旨在确保Web应用程序在表示层和业务逻辑层之间的隔离(即MVC设计模式)。 Apa…...

【cocos creator】下拉框

https://download.csdn.net/download/K86338236/90038176 const { ccclass, property } cc._decorator;type DropDownOptionData {optionString?: string,optionSf?: cc.SpriteFrame } type DropDownItemData {label: cc.Label,sprite: cc.Sprite,toggle: cc.Toggle }cccl…...

从 Llama 1 到 3.1:Llama 模型架构演进详解

编者按: 面对 Llama 模型家族的持续更新,您是否想要了解它们之间的关键区别和实际性能表现?本文将探讨 Llama 系列模型的架构演变,梳理了 Llama 模型从 1.0 到 3.1 的完整演进历程,深入剖析了每个版本的技术创新&#…...

电话机器人的最佳应用

电话机器人的最佳应用 作者:开源呼叫中心系统 FreeIPCC,Github地址:https://github.com/lihaiya/freeipcc 电话机器人在多个领域中都展现出了其独特的优势和广泛的应用前景。以下是对电话机器人最佳应用的详细归纳: 一、销售与营…...

[面试]-golang基础面试题总结

文章目录 panic 和 recover**注意事项**使用 pprof、trace 和 race 进行性能调试。**Go Module**:Go中new和make的区别 Channel什么是 Channel 的方向性?如何对 Channel 进行方向限制?Channel 的缓冲区大小对于 Channel 和 Goroutine 的通信有…...

Fakelocation Server服务器/专业版 ubuntu

前言:需要Ubuntu系统 Fakelocation开源文件系统需求 Ubuntu | Fakelocation | 任务一 任务一 更新Ubuntu(安装下载不再赘述) sudo -i # 提权 sudo apt update # 更新软件包列表 sudo apt upgrade # 升级已安装的软…...

Node.js的http模块:创建HTTP服务器、客户端示例

新书速览|Vue.jsNode.js全栈开发实战-CSDN博客 《Vue.jsNode.js全栈开发实战(第2版)(Web前端技术丛书)》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) 要使用http模块,只需要在文件中通过require(http)引入即可。…...

Jackson 对象与json数据互转工具类JacksonUtil

下面是一个基于 Jackson 的工具类 JacksonUtil,用于在 Java 项目中实现对象与 JSON 数据之间的互相转换。该工具类具有简洁、易用、通用的特点。 package com.fy.common.util;import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core…...

【ArcGISPro】根据yaml构建原始Pro的conda环境

使用场景 我们不小心把原始arcgispro-py3的conda环境破坏了,我们就可以使用以下方法进行修复 查找文件 在arcgis目录下找到yaml文件 如果没找到请复制以下内容到新的yaml文件 channels: - esri - defaults dependencies: - anyio=4.2.0=py311haa95532_0 - appdirs=1.4.4=p…...

对撞双指针(七)三数之和

15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组…...

反向代理服务器的用途

代理服务器在网络中扮演着重要的角色,它们可以优化流量、保护服务器以及提高安全性。在代理服务器中,反向代理服务器是一种特殊类型,常用于Web服务器前,它具备多种功能,能够确保网络流量的顺畅传输。那么,让…...

一些好的AI技术学习平台和资料(动态更新)

1. 大模型 1.1 提示词(Prompt) 目前,大模型技术已经深入到工作生活的方方面面,各技术大厂的大模型也层出不穷,从开始的OpenAI一家独大,到当今世界的“百模大战”。从一些日常使用的角度来说,模…...

wireshark抓包分析HTTP协议,HTTP协议执行流程,

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 使用WireShark工具抓取「HTTP协议」的数据包&#…...

路由缓存后跳转到新路由时,上一路由中的tip信息框不销毁问题解决

上一路由tip信息框不销毁问题解决 路由缓存篇问题描述及截图解决思路关键代码 路由缓存篇 传送门 问题描述及截图 路由缓存后跳转新路由时,上一个路由的tip信息框没销毁。 解决思路 在全局路由守卫中获取DOM元素,通过css去控制 关键代码 修改文…...

【Angular】async详解

在 Angular 中,async 关键字用于定义异步函数,通常与 await 一起使用来处理 Promise。这使得异步代码看起来更像同步代码,从而更容易理解和维护。 基本用法 定义异步函数:使用 async 关键字。等待 Promise 解析:使用…...

springboot/ssm综合小区管理系统Java社区物业停车缴费系统web物业源码

springboot/ssm综合小区管理系统Java社区物业停车缴费系统web物业源码 基于springboot(可改ssm)htmlvue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库&…...

【51单片机】程序实验56.独立按键-矩阵按键

主要参考学习资料:B站【普中官方】51单片机手把手教学视频 前置知识:C语言 单片机套装:普中STC51单片机开发板A4标准版套餐7 码字不易,求点赞收藏加关注(•ω•̥) 有问题欢迎评论区讨论~ 目录 独立按键按键介绍实验5 独立按键 矩…...

SAP 零售方案 CAR 系统的介绍与研究

前言 当今时代,零售业务是充满活力和活力的业务领域之一。每天,由于销售运营和客户行为,它都会生成大量数据。因此,公司迫切需要管理数据并从中检索见解。它将帮助公司朝着正确的方向发展他们的业务。 这就是为什么公司用来处理…...

2024 APMCM亚太数学建模C题 - 宠物行业及相关产业的发展分析和策略 完整参考论文(2)

5.2 问题一模型的建立与求解 5.2.1 分析发展情况 为了更好地理解数据的变化趋势,利用matlab通过六个子图对宠物行业中的关键变量进行了可视化展示。 图 1. 宠物数量变化展示了 猫数量、狗数量 和 总宠物数量 在 2019-2023 年间的变化趋势。结果显示:猫的数量呈逐年上升的趋…...

嵌入式的C/C++:深入理解 static、const 与 volatile 的用法与特点

目录 一、static 1、static 修饰局部变量 2、 static 修饰全局变量 3、static 修饰函数 4、static 修饰类成员 5、小结 二、const 1、const 修饰普通变量 2、const 修饰指针 3、const 修饰函数参数 4. const 修饰函数返回值 5. const 修饰类成员 6. const 与 #defi…...

【数据库设计】软件系统需要同时设计注册日志表和登录日志表吗

是的,通常情况下,注册日志表和登录日志表是分别设计的,分别记录不同类型的事件信息。 注册日志表 记录用户的注册信息、注册方式以及是否成功等内容。登录日志表 记录用户每次登录的时间、IP 地址、设备信息、登录状态等内容。 尽管这两者看…...

vim 一次注释多行 的几种方法

在 Vim 中一次注释多行是一个常见操作。可以使用以下方法根据你的具体需求选择合适的方式: 方法 1:手动插入注释符 进入正常模式: 按 Esc 确保进入正常模式。 选择需要注释的多行: 移动到第一行,按下 Ctrlv 进入可视块…...

手机无法连接服务器1302什么意思?

你有没有遇到过手机无法连接服务器,屏幕上显示“1302”这样的错误代码?尤其是在急需使用手机进行工作或联系朋友时,突然出现的连接问题无疑会带来不少麻烦。那么,什么是1302错误,它又意味着什么呢? 1302错…...

Git(一)基本使用

目录 一、使用git -v 查看安装git版本 二、使用mkdir 创建一个文件,并使用 git init 在该目录下创建一个本地仓库, 三、通过git clone命令接入线上仓库 四、使用git status查看仓库状态信息 五、利用echo写入一个文件 并使用cat进行查看 【Linux】e…...

sklearn中常用数据集简介

scikit-learn库中提供了包括分类、回归、聚类、降维等多种机器学习任务所需的常用数据集,方便进行实验和研究,它们主要被封装在sklearn.datasets中,本文对其中一些常用的数据集进行简单的介绍。 1.Iris(鸢尾花)数据集…...

LRU缓存

什么是LRU缓存? LRU(Least Recently Used)是最近最少使用算法,是操作系统中用于分页置换的算法,如果要向内存中添加分页,并且内存分页已满的情况下,就选出最近一段时间最不常用的分页进行置换(…...

.net6 使用 FreeSpire.XLS 实现 excel 转 pdf - docker 部署

FreeSpire.XLS && Aspose.Cells包都可以实现。实现过程中发现如下问题: 本地测试通过, docker部署服务器后报错: The type initializer for Spire.Xls.Core.Spreadsheet.XlsPageSetupBase threw an exception. 由于缺少依赖&#xf…...

HttpServletRequest req和前端的关系,req.getParameter详细解释,req.getParameter和前端的关系

HttpServletRequest 对象在后端和前端之间起到了桥梁的作用,它包含了来自客户端的所有请求信息。通过 HttpServletRequest 对象,后端可以获取前端发送的请求参数、请求头、请求方法等信息,并根据这些信息进行相应的处理。以下是对 HttpServle…...

[Python3] Sanic 框架构建高并发的 Web 服务

在 Python3 中使用 Sanic 框架来构建高并发的 Web 服务时,Sanic 因其异步和基于事件驱动的架构能够很好地处理高并发请求。下面是如何使用 Sanic 的一些要点和示例代码。 1. 安装 Sanic 首先确保你安装了 Sanic,可以通过以下命令安装: pip…...

5.5 W5500 TCP服务端与客户端

文章目录 1、TCP介绍2、W5500简介2.1 关键函数socketlistensendgetSn_RX_RSRrecv自动心跳包检测getSn_SR 1、TCP介绍 TCP 服务端: 创建套接字[socket]:服务器首先创建一个套接字,这是网络通信的端点。绑定套接字[bind]:服务器将…...

【Flutter】搭建Flutter开发环境,安卓开发

Flutter是谷歌开源的一个跨平台开发的框架,方便好用,这里以Windows 上构建 Flutter Android 应用为例,记录下我搭建环境时碰到的一些问题以及解决。 第一步:参考官网:开发 Android 应用 | Flutter 中文文档 - Flutter …...

【机器学习】——朴素贝叶斯模型

💻博主现有专栏: C51单片机(STC89C516),c语言,c,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux&#xf…...

k8s rainbond centos7/win10 -20241124

参考 https://www.rainbond.com/ 国内一站式云原生平台 对centos7环境支持不太行 [lighthouseVM-16-5-centos ~]$ curl -o install.sh https://get.rainbond.com && bash ./install.sh 2024-11-24 09:56:57 ERROR: Ops! Docker daemon is not running. Start docke…...

ctfshow单身杯2024wp

文章目录 ctfshow单身杯2024wp签到好玩的PHPezzz_sstiez_inject ctfshow单身杯2024wp 签到好玩的PHP 考点&#xff1a;序列化反序列化 <?phperror_reporting(0);highlight_file(__FILE__);class ctfshow {private $d ;private $s ;private $b ;private $ctf ;public …...

深入解密 K 均值聚类:从理论基础到 Python 实践

1. 引言 在机器学习领域&#xff0c;聚类是一种无监督学习的技术&#xff0c;用于将数据集分组成若干个类别&#xff0c;使得同组数据之间具有更高的相似性。这种技术在各个领域都有广泛的应用&#xff0c;比如客户细分、图像压缩和市场分析等。聚类的目标是使得同类样本之间的…...

【代码pycharm】动手学深度学习v2-08 线性回归 + 基础优化算法

课程链接 线性回归的从零开始实现 import random import torch from d2l import torch as d2l# 人造数据集 def synthetic_data(w,b,num_examples):Xtorch.normal(0,1,(num_examples,len(w)))ytorch.matmul(X,w)bytorch.normal(0,0.01,y.shape) # 加入噪声return X,y.reshape…...

Python绘制太极八卦

文章目录 系列目录写在前面技术需求1. 图形绘制库的支持2. 图形绘制功能3. 参数化设计4. 绘制控制5. 数据处理6. 用户界面 完整代码代码分析1. rset() 函数2. offset() 函数3. taiji() 函数4. bagua() 函数5. 绘制过程6. 技术亮点 写在后面 系列目录 序号直达链接爱心系列1Pyth…...

sklearn学习

介绍&#xff1a;scaler&#xff1a;换算的意思 1. 归一化MinMaxScaler() 归一化的意思是将一堆数&#xff0c;如果比较离散&#xff0c;为了让数据更适合模型训练&#xff0c;将离散的数据压缩到0到1之间&#xff0c;以方便模型更高效优质的学习&#xff0c;而对数据的预处理…...

# [Unity] 【游戏开发】Unity开发基础2-Unity脚本编程基础详解

Unity脚本编程是创建互动式游戏体验的核心技能之一。本文将详细讲解Unity脚本编程的基础知识,包括变量和数据类型、程序逻辑、方法等方面,并通过实例展示如何使用这些基本知识完成简单功能的实现。 1. 新建Unity脚本的基本结构 当在Unity中创建一个脚本时,Unity会生成如下基…...

【强化学习的数学原理】第02课-贝尔曼公式-笔记

学习资料&#xff1a;bilibili 西湖大学赵世钰老师的【强化学习的数学原理】课程。链接&#xff1a;强化学习的数学原理 西湖大学 赵世钰 文章目录 一、为什么return重要&#xff1f;如何计算return&#xff1f;二、state value的定义三、Bellman公式的详细推导四、公式向量形式…...

C语言-数学基础问题

一.奇数、偶数问题 1.从键盘上输入一个整数&#xff0c;判断并输出它是奇数还是偶数。 //从键盘上输入一个整数&#xff0c;判断并输出它是奇数还是偶数。 main() {int i;printf("输入一个整数:\n");scanf("%d",&i);if(i%20)printf("它是偶数\n…...

2024算法基础公选课练习四(综合2)

一、前言 最后几个题确实有难度&#xff0c;这次有两题没整出来 二、题目总览 三、具体题目 3.1 问题 A: 水题系列1-B(班级排位) 思路 最暴力的思路是写线段树&#xff0c;然后暴力枚举两个端点&#xff0c;总体时间复杂度为O(n^2*logn)最坏会到1e9的数量级&#xff0c;可能…...

小程序-使用 iconfont 图标库报错:Failed to load font

官方默认可以忽略此错误&#xff0c;在清除缓存后首次刷新会显示此错误&#xff0c;重新渲染错误消失 解决方法&#xff1a; 在 iconfont 图标库选择项目设置 选中 Base64 保存&#xff0c;重新点击链接 -> 复制代码到项目中 操作步骤&#xff1a;...

鲸鱼机器人和乐高机器人的比较

鲸鱼机器人和乐高机器人各有其独特的优势和特点&#xff0c;家长在选择时可以根据孩子的年龄、兴趣、经济能力等因素进行综合考虑&#xff0c;选择最适合孩子的教育机器人产品。 优势 鲸鱼机器人 1&#xff09;价格亲民&#xff1a;鲸鱼机器人的产品价格相对乐高更为亲民&…...

解决单元测试时找不到类名

场景&#xff1a; springboot单元测试mockito对mapper进行mock时&#xff1a; tk.mybatis.mapper.mapperexception: 无法获取实体类 XX.xx 对应的表名 分析&#xff1a; 使用了一个方法&#xff1a;Example examplenew Example(User.class); 进入源码后发现Entityhelper没…...

簡單易懂:如何在Windows系統中修改IP地址?

無論是為了連接到一個新的網路&#xff0c;還是為了解決網路連接問題&#xff0c;修改IP地址都是一個常見的操作。本文將詳細介紹如何在Windows系統中修改IP地址&#xff0c;包括靜態IP地址的設置和動態IP地址的獲取。 IP地址是什麼&#xff1f; IP地址是互聯網協議地址的簡稱…...

(详细文档!)java swing学生信息管理系统 +mysql

第一章&#xff1a;系统功能分析 1.1、系统简介与开发背景 学生信息管理系统是在信息化时代&#xff0c;特别是在教育领域中产生的。随着学校规模的不断扩大和信息化技术的不断发展&#xff0c;传统的纸质档案管理方式已经无法满足学校对学生信息管理的需求&#xff0c;因此需…...