单细胞测序数据分析流程的最佳实践
单细胞测试数据分析流程是整个论文数据分析过程中相对固定的部分,有一定的标准流程,以下整理了发表论文的相关内容供简要了解,详细内容可以参照2019年发表的综述:Luecken MD, Theis FJ. Current best practices in single-cell RNA-seq analysis: a tutorial. Mol Syst Biol. 2019 Jun 19;15(6):e8746. doi: 10.15252/msb.20188746. PMID: 31217225; PMCID: PMC6582955.
1.质量控制
- 目的 :确保单细胞基因表达数据中所有细胞条形码数据对应活细胞,并去除低质量或无信息的细胞和基因,提升数据质量,为后续分析提供可靠数据基础。通过检查细胞相关指标和转录本情况,过滤异常值,减少噪声干扰。
- 注意事项: 综合考虑多个指标,如每个条形码的计数深度、检测到的基因数量以及线粒体基因计数的比例。这些指标单独分析可能导致误判,例如高线粒体基因计数比例的细胞不一定是低质量细胞,也可能参与呼吸过程。所以要联合考虑这些指标进行阈值设定。 数据集细胞类型的异质性会使质量控制指标分布呈现多个峰值,此时需谨慎设定阈值,避免误判。通常仅将最低计数深度和基因数峰值视为非活细胞,且高计数过滤时,过滤掉的细胞比例不应超过预期的双细胞率。 环境基因表达会干扰下游分析,在基于液滴的scRNA-seq数据集中可进行校正,也可在下游分析中忽略强环境基因。同时,质量控制效果需依据下游分析性能评估,可能需要多次调整阈值。
- 最佳实践:通过寻找基因数量、计数深度和线粒体读取比例的异常峰值进行质量控制,联合考虑这些协变量,而非单独分析。 尽量设置宽松的质量控制阈值,若下游聚类结果难以解释,再重新审视质量控制步骤。当样本间质量控制协变量分布不同时,分别为每个样本确定质量控制阈值,以考虑样本质量差异。
2.标准化
- 目的:由于单细胞RNA测序过程中存在多种可导致计数深度差异的因素,标准化旨在消除这些差异,使基因表达数据在细胞间具有可比性,从而准确反映基因表达的真实差异。
- 注意事项:不同的标准化方法适用于不同类型的scRNA-seq数据。例如,基于全长协议的数据可能受益于考虑基因长度的标准化方法,而非全长数据集则有其他更合适的方法。目前对于是否对基因进行标准化(缩放基因计数使其均值为0、方差为1)尚无共识,需根据具体分析目的谨慎选择。标准化后的数据通常进行log(x + 1)转换,虽然这一转换有诸多益处,如使距离代表log倍数变化、减轻均值 - 方差关系、减少数据偏度等,但也可能引入虚假的差异表达效应,尤其是当标准化大小因子分布在测试组间差异较大时。
- 最佳实践:对于非全长数据集,推荐使用scran进行标准化。也可通过scone工具评估不同的标准化方法,尤其适用于基于平板的数据集。对于全长scRNA-seq协议,可使用批量方法校正基因长度。在本教程中,倾向于不对基因表达进行缩放,以保留更多生物学信息。 对标准化后的数据进行log(x + 1)转换,以便用于假设数据呈正态分布的下游分析方法,但需注意其可能带来的虚假效应。
3.数据校正和整合
- 目的:数据校正旨在进一步去除标准化后数据中存在的技术和生物学协变量的影响,如批次效应、细胞周期效应等,使数据更接近真实的生物学信号。数据整合则是将来自多个实验的数据合并,以增加数据的信息量和分析的全面性。
- 注意事项:在回归去除生物学效应时,需要谨慎考虑。例如,去除细胞周期效应虽有助于推断发育轨迹,但也可能掩盖其他重要的生物学信号,且细胞大小等因素也可能影响对细胞周期效应的判断。 校正技术效应时,除了使用回归方法,对于基于平板的scRNA-seq数据集,由于其细胞间计数深度变化较大,可能需要采用更严格的归一化程序,如下采样或非线性归一化方法。 批次效应校正和数据整合应采用不同方法,数据整合工具可能会对简单批次效应过度校正。此外,表达恢复(去噪或插补)虽能改善基因 - 基因相关性的估计,但可能会引入虚假相关信号,在探索性数据分析中使用时需谨慎。
- 最佳实践:仅在进行轨迹推断且其他感兴趣的生物学过程不会被掩盖时,才回归去除生物学协变量。 联合回归去除技术和生物学协变量,而非依次进行。当批次间细胞类型和状态组成一致时,推荐使用ComBat进行批次校正。用户应谨慎对待仅在表达恢复后发现的信号,探索性分析时最好不进行这一步骤。
4. 特征选择
- 目的:单细胞RNA测序数据维度高,包含大量基因,但并非所有基因都对研究有意义。特征选择旨在筛选出能反映数据变异性、对后续分析有价值的基因,降低数据维度,减轻下游分析工具的计算负担,同时减少噪声干扰,提高分析效率和准确性。
- 注意事项:选择的高变基因数量需根据数据集的复杂程度合理确定。一般在1000 - 5000个之间,但初步研究表明,在一定范围内改变高变基因数量,对下游分析结果影响较小。不过,若数量过少,可能无法充分捕捉数据中的变异信息;数量过多,则可能引入过多噪声。 特征选择方法依赖基因表达的均值和方差,因此在基因表达值被归一化到零均值和单位方差,或使用模型拟合残差作为归一化表达值时,不能使用此类方法。所以在进行特征选择前,需谨慎考虑数据的预处理方式。
- 最佳实践:根据数据集复杂度,选择1000 - 5000个高变基因用于下游分析。可采用Scanpy和Seurat中基于基因平均表达进行分箱,选取方差与均值比值最高的基因作为高变基因的方法。为避免选择受批次效应等技术因素影响的基因,最好在技术数据校正后进行高变基因选择。
5. 降维
- 目的:单细胞表达矩阵维度高,直接分析和可视化困难。降维算法将其嵌入低维空间,在尽可能保留数据内在结构的同时,减少维度,便于数据可视化和后续分析。降维的主要目标包括可视化,将数据集以二维或三维坐标展示,直观呈现数据特征;以及数据总结,找到数据的固有维度,提取关键信息,为下游分析提供支持。
- 注意事项:不同的降维方法适用于不同的分析目的。线性降维方法如主成分分析(PCA),虽然在捕捉数据结构方面可能不如非线性方法,但它是许多聚类和轨迹推断工具的基础,且其线性特性使降维空间中的距离具有一致的解释性。非线性降维方法如t - 分布随机邻域嵌入(t - SNE)和均匀流形近似与投影(UMAP),在可视化方面表现出色,但解释性相对较弱。 选择降维方法时,需明确是用于可视化还是数据总结。例如,t - SNE在可视化时可能夸大细胞群体间差异,忽略潜在联系,且其困惑度参数的选择对聚类结果影响较大;而UMAP在处理大规模数据时具有速度和可扩展性优势。
- 最佳实践:对于一般目的的数据总结,推荐使用PCA。它通过最大化每个维度捕获的残差方差生成降维结果,通常可根据“肘部”启发式方法或基于置换检验的Jackstraw方法确定主成分数量。在进行轨迹推断总结时,扩散映射是PCA的合适替代方法,其扩散成分能突出数据中的转换,适用于研究连续过程,如细胞分化。 对于探索性可视化,推荐使用UMAP,其速度快且可扩展性强,能较好地展示数据的整体分布和细胞群体关系。此外,分区图抽象(PAGA)结合UMAP可用于可视化特别复杂的数据集,通过将细胞聚类表示为节点,轨迹表示为边,更清晰地呈现数据的拓扑结构。
6. 可视化
- 目的:将降维后的数据以直观的图形展示,帮助研究人员快速理解数据的分布特征、细胞群体间的关系以及基因表达模式,从而发现潜在的生物学规律,为后续分析和生物学解释提供依据。
- 注意事项:t - SNE可视化虽能突出局部相似性,但可能扭曲全局结构,且困惑度参数的选择对结果影响显著,不同参数值可能导致图中显示的细胞簇数量差异较大,需谨慎调整。 不同可视化方法对数据的呈现方式不同,在选择时需根据数据特点和研究目的进行权衡。例如,当研究细胞群体的全局关系和潜在连接时,t - SNE可能不太适用;而当数据量较大,需要快速了解数据整体结构时,UMAP则更具优势。
- 最佳实践:在没有特定生物学问题的情况下,UMAP是探索性数据可视化的最佳选择,它能够在保留数据拓扑结构的同时,快速处理大规模数据,清晰展示细胞群体的分布情况。 PAGA与UMAP结合可有效可视化复杂数据集。PAGA通过构建基于聚类的图结构,简化数据的可视化表示,帮助研究人员更好地理解细胞群体之间的关系和数据的整体拓扑结构。
7. 聚类分析
- 目的:将具有相似基因表达谱的细胞归为一组,以推断细胞的身份,揭示数据中的细胞异质性,为后续深入分析细胞类型、功能及状态变化等提供基础。
- 注意事项:聚类算法众多,不同算法对数据的要求和聚类结果存在差异。如k - 均值聚类需预先设定聚类数量,该数量往往难以准确预估,需通过启发式方法校准;且不同距离度量方式(如欧氏距离、余弦相似度、基于相关性的距离等)对聚类结果有影响,需根据数据特点选择合适的度量方式。 聚类得到的细胞簇不一定直接对应明确的细胞类型,细胞身份受多种因素影响,同一细胞类型在不同状态下可能被分到不同簇中。因此,使用 “细胞身份” 这一术语更为准确。在注释细胞簇时,需谨慎选择参考数据库或文献中的标记基因,避免因数据集差异导致的注释偏差。
- 最佳实践:推荐使用基于单细胞KNN图的Louvain社区检测算法进行聚类。该算法在处理单细胞RNAseq数据时表现出色,能够有效检测出细胞簇,且其模块化优化函数中的分辨率参数可调整聚类的尺度,便于用户根据需求探索不同层次的细胞结构。聚类不必局限于单一分辨率,对特定细胞簇进行子聚类是深入研究数据中更详细子结构的有效方法,但需注意避免将噪声误判为有意义的模式。
8. 轨迹分析
- 目的:细胞的发育和分化是连续动态的过程,聚类分析无法充分描述这种变化。轨迹分析旨在通过构建细胞间的动态模型,推断细胞的分化轨迹,揭示细胞从一种状态转变为另一种状态的过程,以及在这个过程中基因表达的变化规律。
- 注意事项:不同的轨迹推断方法适用于不同复杂程度的轨迹模型。简单的线性或分叉轨迹可选择Slingshot等方法,而复杂的图、树或多分叉轨迹则更适合PAGA等方法。在选择方法时,需对预期的轨迹有一定的预判,且最好使用多种方法相互验证,避免方法偏差导致的错误推断。 推断出的轨迹不一定真实反映生物学过程,可能仅代表转录相似性。因此,需要收集更多证据来验证,如进行扰动实验、分析推断的调控基因动态以及参考RNA速度等信息。
- 最佳实践:参考Saelens等人2018年的综述,根据预期轨迹的复杂程度选择合适的轨迹推断方法。在典型工作流程中,轨迹推断通常应用于降维后的数据;若存在其他同时发生的生物学过程影响,可先回归去除这些过程的生物学效应,以更准确地推断目标轨迹。 由于目前缺乏评估轨迹不确定性的有效方法,在解释轨迹结果时需谨慎,综合多方面证据进行判断,避免过度解读。
9. 基因水平分析
- 目的:从基因层面深入探究单细胞数据中的分子信号,包括检测不同实验条件下基因的差异表达、分析基因集的功能富集情况以及推断基因调控网络,以揭示基因在细胞过程中的作用机制和相互关系。
- 注意事项:在进行差异表达测试时,应使用未经校正的测量数据,并将技术协变量纳入模型,以准确估计差异表达基因。同时,要警惕模型中混淆变量的影响,仔细检查设计矩阵的秩,确保模型设定合理,避免因变量混淆导致错误的结果解读。基因集分析中,选择合适的数据库(如MSigDB、Gene Ontology、KEGG、Reactome等)和富集分析工具至关重要,不同数据库和工具的注释和算法存在差异,可能影响分析结果的准确性和可靠性。 基因调控网络推断方法在单细胞数据上的表现仍有待提高,推断出的调控关系存在不确定性。因此,应关注基因模块间的调控关系,而非单个基因的调控边,以提高结果的可靠性。
- 最佳实践:推荐使用MAST或limma进行差异表达测试。MAST使用障碍模型考虑了单细胞数据中的dropout现象,在处理单细胞数据时表现出色;limma - voom在保证性能的同时,运行速度更快,可根据数据规模和计算资源选择合适的工具。在基因集分析中,根据研究目的选择相关的数据库对基因进行分组,然后使用可靠的富集分析工具进行测试,以深入解读差异表达结果。对于基因调控网络推断,虽然目前方法存在局限性,但在谨慎使用的前提下,仍可帮助识别生物学过程的因果调节因子,为进一步研究提供线索。
10. 分析平台
- 目的:单细胞分析工作流程由多个独立开发的工具组成,分析平台通过提供一致的数据格式,促进数据在不同工具间的流动,为构建完整的分析流程提供基础框架,降低分析门槛,提高分析效率。
- 注意事项:不同类型的分析平台各有优缺点和适用场景。命令行平台功能强大,但对用户的编程能力有一定要求;图形用户界面(GUI)平台操作简便,适合非专业用户进行探索性分析,但可能在灵活性和处理大规模数据能力上存在限制。选择平台时,需综合考虑自身的专业技能水平、数据规模以及分析目的。 部分平台对计算资源有较高要求,特别是在处理大规模单细胞数据集时,可能会受到本地计算能力或服务器资源的限制。在选择平台时,要充分评估自身的计算资源状况,确保平台能够正常运行。
- 最佳实践:对于熟悉编程的用户,可选择命令行平台。其中,Scater在质量控制和预处理方面表现突出;Seurat功能全面,拥有丰富的工具和教程;scanpy作为基于Python的平台,在处理大规模数据时具有良好的扩展性,且能充分利用Python在机器学习领域的优势。对于非专业用户或进行探索性分析时,可选择图形用户界面平台。如Granatum集成的方法较多,能满足多样化的分析需求;ASAP操作便捷,但在处理大规模数据时存在局限性。若本地计算资源充足,可考虑使用在本地服务器上运行的平台和GUI包装器,如FASTGenomics、iSEE、IS - CellR等,以获得更好的性能和灵活性。
相关文章:
单细胞测序数据分析流程的最佳实践
单细胞测试数据分析流程是整个论文数据分析过程中相对固定的部分,有一定的标准流程,以下整理了发表论文的相关内容供简要了解,详细内容可以参照2019年发表的综述:Luecken MD, Theis FJ. Current best practices in single-cell RN…...
Elasticsearch:RAG 和 grounding 的价值
作者:来自 Elastic Toms Mura 了解 RAG、grounding,以及如何通过将 LLM 连接到你的文档来减少幻觉。 更多阅读:Elasticsearch:在 Elastic 中玩转 DeepSeek R1 来实现 RAG 应用 想获得 Elastic 认证吗?查看下一期 Elast…...
经典算法 求解台阶问题
求解台阶问题 题目描述 实现一个算法求解台阶问题。介绍如下: 对于高度为 n 的台阶,从下往上走,每一步的阶数为 1、2 或 3 中的一个。问要走到顶部一共有多少种走法。 输入描述 输入一个数字 N: 1 ≤ N ≤ 35表示台阶的高度 …...
伊甸园之东: 农业革命与暴力的复杂性
农业革命的开始 农业革命是人类历史上的第一次重大经济和社会变革,标志着人们从狩猎采集转向农耕。 该变革虽然进展缓慢,却彻底改变了人类的生活方式和社会结构。狩猎采集社会的特征 狩猎采集者生活在小规模、低密度的部落中,依赖于不稳定的自…...
MCP多智能体消息传递机制(Message Passing Between Agents)
目录 🚀 MCP多智能体消息传递机制(Message Passing Between Agents) 🌟 为什么要引入消息传递机制? 🏗️ 核心设计:Agent间消息传递模型 🛠️ 1. 定义标准消息格式 Ὦ…...
Deformable DETR模型解读(附源码+论文)
Deformable DETR 论文链接:Deformable DETR: Deformable Transformers for End-to-End Object Detection 官方链接:Deformable-DETR(这个需要在linux上运行,所以我是用的是mmdetection里面的Deformable DERT,看了一下源码基本是…...
游戏引擎学习第255天:构建配置树
为今天的内容设定背景 今天的任务是构建性能分析(profiling)视图。 目前来看,展示性能分析图形本身并不复杂,大部分相关功能在昨天已经实现。图形显示部分应该相对直接,工作量不大。 真正需要解决的问题,是…...
JavaScript性能优化实战之调试与性能检测工具
在进行 JavaScript 性能优化时,了解和使用正确的调试与性能检测工具至关重要。它们能够帮助我们识别性能瓶颈,精确定位问题,并做出有针对性的优化措施。本文将介绍一些常见的调试和性能检测工具,帮助你更好地分析和优化你的 JavaScript 代码。 1️⃣ Chrome DevTools Chro…...
C#VisionMaster算子二次开发(非方案版)
前言 在网上VisionMaster的教程通常都是按照方案执行的形式,当然海康官方也是推荐使用整体方案的形式进行开发。但是由于我是做标准设备的,为了适配原有的软件框架和数据结构,就需要将特定需要使用的算子进行二次封装。最直接的好处是&#…...
计算机总线系统入门:理解数据传输的核心
一、总线系统简介:计算机内部的交通网络 在计算机系统中,总线是指连接各个组件的一组共享信号线或传输通道,用于在系统内不同的硬件模块之间传递数据、地址、控制信号等信息。它类似于交通系统中的道路,帮助计算机各个部件&#…...
【Linux】Petalinux驱动开发基础
基于Petalinux做Linux驱动开发。 部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 1 一个完整的Linux系统(针对Zynq) 1.1 PS部分 1.2 PL部分(若…...
提升办公效率的PDF转图片实用工具
软件介绍 这款专注于PDF文档处理的工具功能单一但实用,能够将PDF文件内容智能提取并自动拼接成长图,为用户提供便捷的图片化文档处理方案,无需复杂设置即可轻松上手。 简洁直观的用户界面 软件界面设计简洁清爽,没有任何多余…...
动态库与ELF加载
目录 动态库 ELF格式 ELF和后缀的区别 什么是目标文件 ELF文件中的地址--虚拟地址 动静态库和可执行文件 动态库ELF加载 为什么编译时静态库需要指定库?而运行时不需要指定库的,但是动态库需要呢? 总结: 动态库 动态库制作需要的.o文件需要使…...
算法每日一题 | 入门-顺序结构-数字反转
数字反转 题目描述 输入一个不小于 且小于 ,同时包括小数点后一位的一个浮点数,例如 ,要求把这个数字翻转过来,变成 并输出。 输入格式 一行一个浮点数 输出格式 一行一个浮点数 输入输出样例 #1 输入 #1 123.4输出 #1 …...
ROS2学习笔记|实现订阅消息并朗读的详细步骤
本教程将详细介绍如何使用 ROS 2 实现一个节点订阅另一个节点发布的消息,并将接收到的消息通过 espeakng 库进行朗读的完整流程。以下步骤假设你已经安装好了 ROS 2 环境(以 ROS 2 Humble 为例),并熟悉基本的 Linux 操作。 注意&…...
【Hot 100】 146. LRU 缓存
目录 引言LRU 缓存官方解题LRU实现📌 实现步骤分解步骤 1:定义双向链表节点步骤 2:创建伪头尾节点(关键设计)步骤 3:实现链表基础操作操作 1:添加节点到头部操作 2:移除任意节点 步骤…...
web应用开发说明文档
工程目录结构 FACTORY--bin #网络流可执行程序 参考后文1.1部分文字说明webrtc-streamer--deployment #部署相关的配置--mysql #参考1.3 mysql数据库详细说明--conf #存放mysql的配置文件--data #存放pem加密…...
快速搜索与管理PDF文档的专业工具
软件介绍 在处理大量PDF文档时,专业的文档管理工具能显著提升工作效率。这款工具能够帮助用户快速检索PDF内容,并提供了便捷的合并与拆分功能,让复杂的PDF操作变得简单高效。 多文件内容检索能力 不同于传统PDF阅读器的单文件搜索局…...
在GPU集群上使用Megatron-LM进行高效的大规模语言模型训练
摘要 大型语言模型在多个任务中已取得了最先进的准确率。然而,训练这些模型的效率仍然面临挑战,原因有二:a) GPU内存容量有限,即使在多GPU服务器上也无法容纳大型模型;b) 所需的计算操作数量可能导致不现实的训练时间。因此,提出了新的模型并行方法,如张量并行和流水线…...
NocoDB:开源的 Airtable 替代方案
NocoDB:开源的 Airtable 替代方案 什么是 NocoDB?NocoDB 的主要特点丰富的电子表格界面工作流自动化应用商店程序化访问 NocoDB 的应用场景使用 Docker 部署 NocoDB1. 创建数据目录2. 运行 Docker 容器3. 访问 NocoDB 注意事项总结 什么是 NocoDB&#x…...
关于Python:7. Python数据库操作
一、sqlite3(轻量级本地数据库) sqlite3 是 Python 内置的模块,用于操作 SQLite 数据库。 SQLite 是一个轻量级、零配置的关系型数据库系统,整个数据库保存在一个文件中,适合小型项目和本地存储。 SQLite 不需要安装…...
修改ollama.service都可以实现什么?
通过修改 ollama.service 系统服务单元文件,可以实现以下核心配置变更: 一、网络与访问控制 监听地址与端口 通过 Environment="OLLAMA_HOST=0.0.0.0:11434" 修改服务绑定的 IP 和端口: 0.0.0.0 允许所有网络接口访问(默认仅限本地 127.0.0.1)。示例:改为 0.0.…...
k8s笔记——kubebuilder工作流程
kubebuilder工作流程 Kubebuilder 工作流程详解 Kubebuilder 是 Kubernetes 官方推荐的 Operator 开发框架,用于构建基于 Custom Resource Definitions (CRD) 的控制器。以下是其核心工作流程的完整说明: 1. 初始化项目 # 创建项目目录 mkdir my-opera…...
长江学者答辩ppt美化_特聘教授_校企联聘学者_青年长江学者PPT案例模板
WordinPPT / 持续为双一流高校、科研院所、企业等提供PPT制作系统服务。 长江学者特聘教授 “长江学者奖励计划”中的一类,是高层次人才计划的重要组成部分,旨在吸引和培养具有国际领先水平的学科带头人。特聘教授需全职在国内高校工作,是高…...
Vscode/Code-Server 安装中文包——CI/CD
前言 啊好多人问我怎么还不更新,其实本月是已经写了一篇测评的,但是鉴于过于超前会给产品带来不好的影响,所以就没有公开。那么既然这样本月就再更新一篇。 首先 声明 一点,安装中文包的初衷不是看不懂英文,也不是对…...
【信息系统项目管理师-论文真题】2012上半年论文详解(包括解题思路和写作要点)
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题1:论信息系统工程的风险管理1、写作要点2、解题思路对项目风险的认识和项目风险管理的基本过程、主要方法、工具信息系统项目最主要的风险是什么试题2:论信息系统工程项目可行性研究1、写作要点2、解题思…...
PowerPC架构详解:定义、应用及特点
一、PowerPC架构的定义 PowerPC(Performance Optimization With Enhanced RISC – Performance Computing) 是一种由IBM、摩托罗拉(现NXP)和苹果于1991年联合开发的精简指令集(RISC)处理器架构,…...
IP伪装、代理池与分布式爬虫
一、动态代理IP应用:代理池的获取、选择与使用 代理池技术的核心是通过动态切换IP地址,让爬虫看起来像不同用户在访问网站,从而规避封禁。 (一)代理池的获取途径 1. 免费代理:低成本但高风险 免费代理可…...
【Arthas】火焰图优化应用CPU(问题原因:获取调用栈)
优化场景总结归纳 1. 问题背景 现象:在公共搜索功能中,火焰图分析发现 获取Java调用栈(StackTrace) 占用了约 6%的CPU(日常流量下),系统高负载时占比更高。原因: 每次外部API调用时…...
回溯算法详解(Java实现):从组合到排列的全面解析
引言 回溯算法是一种强大的算法思想,广泛应用于解决各种组合优化问题。它通过系统性地尝试所有可能的解,并在发现当前路径无法得到解时立即回溯,从而高效地找到问题的解。在本文中,我们将深入探讨回溯算法的核心思想、三要素、通…...
【BLE】【nRF Connect】 精讲nRF Connect自动化测试套件(宏录制、XML脚本)
目录 前言 1. nRF Connect自动化测试介绍 1.1. nRF connect宏录制功能介绍 1.2. 电脑端XML方式 1.3 实际应用案例 1.3.1 BLE 稳定性测试 1.3.2 设备固件更新(DFU)测试 1.3.3 批量设备配置 1.4 操作步骤 1.5 注意事项 2. nRF Connect日志记录 2.1. 日志记录功能 …...
springboot war包tomcat中运行报错,启动过滤器异常,一个或多个筛选器启动失败。
错误信息: "level": "ERROR", "thread": "localhost-startStop-1", "class": "o.a.c.c.C.[.[localhost].[/Crmeb-admin]", …...
基于开源AI大模型与AI智能名片S2B2C商城小程序的线上活动执行优化研究
摘要:本文以开源AI大模型、AI智能名片及S2B2C商城小程序为技术载体,探讨线上活动执行阶段的效能提升路径。通过分析某科技展会案例,发现AI智能名片可将参会者信息采集效率提升60%,S2B2C商城小程序的21链动模式使活动裂变传播速度提…...
解决奥壹oelove婚恋原生小程序上架问题,彻底解决解对问题增强版旗舰版通用
现在很多客户还不了解OElove小程序上架流程!因为很多用户对技术无感!随意上架工作都是要靠官方来辅助!这样在在二开性就会失去很多主动权!本人商业用户有全新原生态小程序源码(注意:这是原生非Uniapp&#…...
Java SE(7)——类和对象(二)
1.包(package) 1.1 包的定义 在Java中,包是一种用于组织和管理类,接口和其他包的机制。主要作用是防止命名冲突,并提供一种访问控制机制 1.2 package关键字 package关键字的主要作用是声明当前类在哪个包里面。 当然,用户也可以…...
Python 装饰器优化策略模式:电商促销折扣的优雅解法
问题背景:促销策略的重复陷阱 在电商促销系统中,我们曾面临这样的痛点: promos [fidelity_promo, bulk_item_promo, large_order_promo] # 6.1节原始方案 def best_promo(order):return max(promo(order) for promo in promos)当新增new…...
redis延时队列详细介绍
Redis延时队列是一种利用Redis数据结构的功能来实现延时任务调度的方法。在Redis中,常用的数据结构包括List(列表)和Sorted Set(有序集合)。延时队列通常是通过有序集合来实现的。 具体实现步骤如下: 将延…...
PHP 开发工程师如何借助 DeepSeek 提升工作效率
在当今数字化时代,PHP 开发工程师面临着不断提高工作效率和应对复杂项目需求的挑战。DeepSeek 作为一款先进的人工智能工具,为 PHP 开发工程师提供了一系列强大的功能,能够显著助力其日常工作。从代码生成与优化,到文档撰写和知识…...
Vibe Coding 新时代:AI 辅助编程完全指南
第一章:什么是 Vibe Coding?AI 编程的新范式 在传统编程的世界里,程序员需要掌握语法、算法和框架,一行一行地编写代码。但随着人工智能的快速发展,一种全新的编程方式正在兴起——这就是 Vibe Coding(氛围编程)。 Vibe Coding 的定义 Vibe Coding 是由 AI 研究者 An…...
Oracle RAC ‘Metrics Global Cache Blocks Lost‘告警解决处理
1. 引言: 前段时间鄙人检查处理过Oracle RAC Metrics Global Cache Blocks Lost’告警,在此总结分享下针对该报警的原因分析及处理办法。 2. 具体事件 通过排查发现造成该告警的原因是共享存储控制器损坏导致的。由于发生已经有段时间了,没…...
Go语言入门基础:协程
第21章 协程 目录 21.1 启动Go协程 协程的概念与特点启动协程的方法及示例协程执行顺序的控制 21.2 通道 通道类型及表示方式21.2.1 实例化通道21.2.2 数据缓冲21.2.3 单向通道21.2.4 通道与select语句 21.3 互斥锁 协程并发访问的逻辑问题互斥锁的使用示例 21.4 WaitGroup类…...
Servlet+tomcat
serverlet 定义:是一个接口,定义了java类被浏览器(tomcat识别)的规则 所以我们需要自定义一个类,实现severlet接口复写方法 通过配置类实现路径和servlet的对应关系 执行原理 当用户在浏览器输入路径,会…...
中间件和组件
文章目录 1. 前言2. 中间件介绍3. 组件介绍4. 区别对比5. 简单类比6. 总结 中间件和组件 1. 前言 中间件和组件是软件开发中两个重要的概念,但它们的定位和作用完全不同。中间件解决的事通信、跨系统、安全等问题,组件是解决具体业务模块,提高…...
piccolo-large-zh-v2 和 bge-m3哪个效果好?
环境: piccolo-large-zh-v2 bge-m3 问题描述: piccolo-large-zh-v2 和 bge-m3哪个效果好? 解决方案: 比较Piccolo-large-zh-v2(商汤)与BGE-M3(智源)的效果时,需结合…...
《告别试错式开发:TDD的精准质量锻造术》
深度解锁TDD:应用开发的创新密钥 在应用开发的复杂版图中,如何雕琢出高质量、高可靠性的应用,始终是开发者们不懈探索的核心命题。测试驱动开发(TDD),作为一种颠覆性的开发理念与方法,正逐渐成…...
哈希函数详解(SHA-2系列、SHA-3系列、SM3国密)案例:构建简单的区块链——密码学基础
文章目录 一、密码哈希函数概述1.1 哈希函数的基本概念1.2 哈希函数在数据安全中的应用 二、SHA-2系列算法详解2.1 SHA-2的起源与发展2.2 SHA-256技术细节与实现2.3 SHA-384和SHA-512的特点2.4 SHA-2系列算法的安全性评估 三、SHA-3系列算法详解3.1 SHA-3的起源与设计理念3.2 K…...
CUDA输出“hello world”
在我们学习任何一门编程语言的时候, 无疑当我们真正用其输出“hello world”的时候, 我们已经成功入门, 接下来要做的就是从入门到放弃了😆 接下来我们通过对比C和CUDA来学习CUDA的运行逻辑: C中的hello worldCUDA中的hello world文本编辑器编写源代码, 比如vscod…...
计算机视觉与深度学习 | 视觉里程计算法综述(传统+深度)
视觉里程计算法综述 1. 算法分类与原理1.1 传统几何方法1.2 深度学习方法2. 关键公式与模型2.1 本征矩阵分解2.2 深度学习模型架构3. 代码实现与开源项目3.1 传统方法实现3.2 深度学习方法实现4. 挑战与未来方向总结传统视觉里程计算法综述1. 算法分类与核心原理1.1 特征点法1.…...
c++ 函数参数传递
C 中的值传递和地址传递 在 C 中,函数参数传递主要有两种方式:值传递和地址传递(指针传递和引用传递都属于地址传递的变体)。 1. 值传递 特点 函数接收的是实参的副本对形参的修改不会影响原始变量适用于小型数据(…...
计算机视觉与深度学习 | 什么是图像金字塔?
图像金字塔详解 图像金字塔 图像金字塔详解1. **定义**2. **原理与公式****2.1 高斯金字塔****2.2 拉普拉斯金字塔**3. **代码示例****3.1 使用OpenCV实现****3.2 手动实现高斯模糊与降采样**4. **应用场景**5. **关键点总结**1. 定义 图像金字塔是一种多尺度图像表示方法,将…...