RDKit 分子多样性挑选实战:rdSimDivPickers 模块的 MaxMin、Leader 与层次聚类算法全解析
科学计算科研机器学习【免费下载链接】rdkitThe official sources for the RDKit library项目地址https://gitcode.com/gh_mirrors/rd/rdkit点击查看免费下载导读本文围绕 RDKit 的rdkit.SimDivFilters.rdSimDivPickers模块展开它是 RDKit 官方提供的多样性/相似性挑选diversity similarity pickingC 扩展模块适用于虚拟筛选、化合物库去冗余、代表性化合物子集选取等典型场景。读完本文你将掌握MaxMinPicker、LeaderPicker、HierarchicalClusterPicker三大核心类的完整 API、参数语义与算法原理并能在自己的化合物指纹数据上直接构造距离矩阵、运行挑选并校验结果。模块定位一个面向多样性挑选的 C 扩展rdSimDivPickers是rdkit.SimDivFilters包下的核心扩展模块。在 Python 侧rdkit/SimDivFilters/__init__.py通过from rdkit.SimDivFilters import rdSimDivPickers导入该扩展并将其中全部成员重新导出from rdkit.SimDivFilters.rdSimDivPickers import *如果扩展不可用例如编译时未启用 Python 包装则置为None以保证包可以正常导入。该模块的 Python 绑定入口定义在 Code/SimDivPickers/Wrap/rdSimDivPickers.cpp其模块级 docstring 为 Module containing the diversity and similarity pickers内部依次包装三个类MaxMinPicker基于 MaxMin 算法的多样性挑选器LeaderPicker基于 Roger Sayle 提出的 Leader 算法球排除法的类似物的挑选器HierarchicalClusterPicker基于层次聚类的多样性挑选器。C 侧的实现位于 Code/SimDivPickers 目录DistPicker.h定义了抽象基类与下三角距离矩阵的索引函数MaxMinPicker.h、LeaderPicker.h、HierarchicalClusterPicker.h分别实现三种挑选策略该目录的 CMakeLists.txt 将三个源文件编译为SimDivPickers库并在启用包装时递归构建WrapBoost.Python与nbWrapnanobind两套绑定。三种挑选器都共享同一个抽象基类DistPicker见 Code/SimDivPickers/DistPicker.h其虚函数pick(distMat, poolSize, pickSize)约定distMat一维下三角距离矩阵double 数组元素个数应为poolSize*(poolSize-1)/2poolSize候选池大小pickSize需要挑选的个数不得超过poolSize返回值为被选中的元素下标RDKit::INT_VECT。矩阵下标通过getDistFromLTM换算ij返回 0ij时取distMat[i*(i-1)/2 j]。MaxMinPicker最大化最小距离的贪心挑选MaxMinPicker是使用频率最高的多样性挑选器对应算法文献为 Ashton 等发表于Quant. Struct.-Act. Relat., 21 (2002), 598-604的 MaxMin 方法。其核心思想记录在 Code/SimDivPickers/MaxMinPicker.h 的类注释中用合适的种子化合物初始化子集置x 1对数据集中剩余的每个化合物计算它与子集中每个化合物之间的距离不相似度并保留每个化合物对应的最小距离选取最小距离最大的那个化合物移入子集x x 1若x k则回到第 2 步。最终结果是两两距离尽可能大的k个化合物这正是多样性子集选取的核心目标。Pick基于完整距离矩阵Python 绑定定义在 Code/SimDivPickers/Wrap/MaxMinPicker.cpp签名与参数如下MaxMinPicker().Pick(distMat, poolSize, pickSize, firstPicks(), seed-1)参数类型默认值说明distMatnumpy 一维数组float64必填下三角距离矩阵poolSizeint必填候选池大小pickSizeint必填挑选个数必须小于poolSize否则抛出ValueErrorfirstPicks序列()预先指定的首批种子下标seedint-1随机数种子小于 0 时使用系统随机源播种包装层要求distMat必须是 numpy 数组PyArray_Check检查失败即抛ValueError并通过PyArray_ContiguousFromObject将其转换为连续的一维 double 数组后才进入 C 的pick()。C 侧会校验池为空、pickSize poolSize或firstPicks中下标超出poolSize时均抛出ValueErrorException。未提供firstPicks时第一个种子由boost::mt19937随机数生成器在[0, poolSize-1]内随机选取Code/SimDivPickers/MaxMinPicker.h 中lazyPick的实现。LazyPick 与 LazyBitVectorPick按需计算距离对于距离矩阵过大、无法一次性驻留内存的场景MaxMinPicker 提供惰性接口——由用户提供一个距离函数算法按需调用LazyPick(distFunc, poolSize, pickSize, firstPicks(), seed-1, useCacheNone)distFunc接收两个下标(i, j)并返回两点间距离。绑定 docstring 特别注明实现内部会缓存距离值客户端无需也不应自行缓存useCache参数已被废弃并忽略调用时会打印 warning。LazyBitVectorPick(objects, poolSize, pickSize, firstPicks(), seed-1, useCacheNone)直接传入一个位向量指纹序列。包装层把序列抽取为std::vectorconst ExplicitBitVect *使用 Code/SimDivPickers/Wrap/PickerHelpers.h 中的pyBVFunctor以 Tanimoto 距离1 - TanimotoSimilarity为距离函数执行同样的 MaxMin 算法。LazyPickWithThreshold(distFunc, poolSize, pickSize, threshold, firstPicks(), seed-1)与LazyBitVectorPickWithThreshold(objects, poolSize, pickSize, threshold, firstPicks(), seed-1)额外接收一个threshold距离阈值当算法算出的候选最小距离 threshold时提前终止返回(picks, threshold)元组——threshold会更新为实际达到的距离值。C 实现中threshold 0表示不提前终止见MaxMinPicker::lazyPick中if (maxOFmin threshold threshold 0.0) break;。测试验证与使用要点测试文件 Code/SimDivPickers/Wrap/testPickers.py 提供了大量可复现的实证test0MaxMin对 1000 个二维随机点调用Pick(self.dMat, 1000, 80, (886, 112))前两个选中的正是种子886、112同时验证了Pick与LazyPick结果一致以及非法的firstPicks如(1012,)、(-1,)会抛出ValueErrortestBitVectorMaxMin同一批位向量分别用LazyPick自写 Tanimoto 距离函数与LazyBitVectorPick在相同seed42下得到完全一致的结果testBitVectorMaxMin3用chembl_cyps.head.fps位于 Code/SimDivPickers/Wrap/test_data挑选 20 个指纹固定seed42可复现确定的下标序列传入firstPicks[374, 720, 690, 339, 875]后结果保持不变说明种子序列被正确采纳testBitVectorMaxMin4验证阈值接口——threshold-1.0时挑选 20 个并返回实际阈值约0.8977threshold0.91时提前终止只返回 13 个且返回阈值 0.91。要点seed决定随机种子的选取固定seed可复现结果不同seed通常得到不同子集见testNonUniqueCrash中的断言。LazyBitVectorPick与等价的自定义距离函数LazyPick在相同种子下结果一致因此当数据是指纹序列时优先使用前者代码更简洁且无需手写距离函数。LeaderPicker球排除式的快速多样性挑选LeaderPicker实现 Roger Sayle 提出的 Leader 算法与球排除法 sphere exclusion 类似包装代码见 Code/SimDivPickers/Wrap/LeaderPicker.cpp算法实现位于 Code/SimDivPickers/LeaderPicker.h。核心 APILeaderPicker().LazyBitVectorPick(objects, poolSize, threshold, pickSize0, firstPicks(), numThreads1) LeaderPicker().LazyPick(distFunc, poolSize, threshold, pickSize0, firstPicks(), numThreads1)与 MaxMin 最大的不同在于threshold是必填位置参数且其含义是距离即1 - similarity而不是相似度。例如 Tanimoto 相似度阈值 0.8 对应 distance 阈值 0.2LeaderPicker 文档字符串中给出的测试均使用threshold0.8、0.9这类距离值。pickSize默认为 0此时算法会一直挑选直到池子耗尽等价于pickSize poolSize见LeaderPicker::lazyPick中if (!pickSize) pickSize poolSize;。numThreads参数当前被忽略绑定 docstring 明确注明。算法流程单线程实现维护一个未选列表每轮取出列表首个元素作为新 leader种子用距离函数将其与列表中所有剩余元素逐一比较凡是距离 threshold的元素全部从列表中剔除排斥进该 leader 的球内直到列表为空或达到pickSize。由于最终任意两个被选元素之间的距离都严格大于threshold结果天然满足多样性约束。测试验证Code/SimDivPickers/Wrap/testPickers.py 中testBitVectorLeader1提供了清晰的验证逻辑对同一批chembl_cyps.head.fps指纹threshold0.8距离时选出 146 个threshold0.9时仅选出 14 个——阈值越大每个 leader 的排斥半径越大子集越小测试随后遍历所有配对断言任意两两之间的 Tanimoto 距离 threshold直接验证了算法的核心不变量pickSize10时恰好返回 10 个且同样满足两两距离约束。testLazyLeader用简单函数i - j作为距离验证LazyPick(func, 100, 20)返回[0, 21, 42, 63, 84]——即每个新 leader 会把距离 20 以内的元素全部剔除间隔 21 的等差序列正是预期结果。HierarchicalClusterPicker先聚类、再取代表元HierarchicalClusterPicker基于层次聚类做多样性挑选头文件见 Code/SimDivPickers/HierarchicalClusterPicker.h实现沿用Code/ML/Cluster下的 Murtagh 聚类代码。聚类方法与构造参数构造函数接收clusterMethod参数Python 侧通过HierarchicalClusterPicker.ClusterMethod枚举暴露绑定见 Code/SimDivPickers/Wrap/HierarchicalClusterPicker.cpp枚举值C 常量说明ClusterMethod.WARDWARD 1Ward 法最小方差ClusterMethod.SLINKSLINK 2单连接最近邻ClusterMethod.CLINKCLINK 3完全连接最远邻ClusterMethod.UPGMAUPGMA 4非加权平均连接ClusterMethod.MCQUITTYMCQUITTY 5McQuitty 法ClusterMethod.GOWERGOWER 6Gower 法ClusterMethod.CENTROIDCENTROID 7质心法两个方法Pick 与 Clusterpkr rdSimDivPickers.HierarchicalClusterPicker(rdSimDivPickers.ClusterMethod.WARD) pkr.Pick(distMat, poolSize, pickSize) # 返回代表元下标列表 pkr.Cluster(distMat, poolSize, pickSize) # 返回 clusters每个簇为一个下标列表Pick先将整个池子按指定方法做层次聚类当簇的数目合并到pickSize时停止然后在每个簇内计算各元素到簇内其余元素距离的平方和选取平方和最小最接近质心的元素作为该簇代表元。Cluster直接返回聚类结果每个元素是一个下标列表可用作后续分析。注意两点源码与测试均有印证距离矩阵会被算法修改头文件注释明确指出 this matrix WILL BE ALTERED during the picking。Python 包装层因此在进入 C 前用PyArray_CopyFromObject拷贝一份避免破坏用户传入的矩阵见HierarchicalPicks与HierarchicalClusters中的注释与实现。Pick要求pickSize poolSize包装层在HierarchicalPicks中显式检查并抛ValueError。测试验证Code/SimDivPickers/Wrap/testPickers.py 中的test1HierarchPick使用测试数据 Code/SimDivPickers/Wrap/test_data/points.csv带标签的二维点集Cluster(self.dMat, n, 2)划分出的两个簇内标签完全一致聚类正确而Pick返回(1, 30)作为两个簇的代表元。testIssue208与testInts则验证了对相同输入重复调用结果稳定且整数距离矩阵也能正确处理。纯 Python 层的补充接口TopNOverallPicker 与 SpreadPicker除 C 扩展外rdkit.SimDivFilters包还提供纯 Python 实现的相似性挑选类定义在 rdkit/SimDivFilters/SimilarityPickers.py适用于给定探针指纹、从库中挑选最相似化合物的场景TopNOverallPicker(numToPick10, probeFpsNone, dataSetNone, simMetricDataStructs.TanimotoSimilarity)对库中每个指纹计算其与所有探针相似度的最大值作为该指纹得分用 rdkit/DataStructs/TopNContainer.py 维护 Top-N 容器最终返回得分最高的numToPick个(fp, score)对结果按得分降序排列。SpreadPicker(numToPick10, probeFpsNone, dataSetNone, simMetricDataStructs.TanimotoSimilarity, expectPicklesTrue, onlyNamesFalse)为每个探针维护一个独立 Top-N 列表再以轮转取每行当前最优、跳过已被取走的元素的方式挑选使结果在多个探针间分散分布这正是其名称含义。expectPicklesFalse时允许dataSet为可转换为位向量的字符串onlyNamesTrue时结果只保留_fieldsFromDb[0]名称。两类 picker 均为惰性求值构造时_picks为None首次调用len(picker)或picker[i]才触发MakePicks()见GenericPicker基类与 rdkit/SimDivFilters/UnitTestSimilarityPickers.py 的test_TopNOverallPicker、test_SpreadPicker对惰性行为的断言。其 docstring 自带完整的 doctest 示例连接RDTestDatabase的simple_mols1表、生成 RDKFingerprint、用COC与CC(O)O作探针可直接作为上手模板。端到端实战从指纹到多样性子集综合以上 API下面给出一个可直接运行的完整流程涵盖构建池子 → 计算距离 → 多样性与相似性挑选 → 结果校验import numpy from rdkit import Chem, DataStructs from rdkit.SimDivFilters import rdSimDivPickers as rdsimdiv from rdkit.SimDivFilters.SimilarityPickers import TopNOverallPicker # 1. 构建化合物池与指纹 smis [CCO, CCOC, CC(O)O, CCN, C1CCCCC1, c1ccccc1, C#N, CC(C)C] mols [Chem.MolFromSmiles(s) for s in smis] fps [Chem.RDKFingerprint(m) for m in mols] # 2. 位向量版本MaxMin 多样性挑选固定种子可复现 picker rdsimdiv.MaxMinPicker() picks picker.LazyBitVectorPick(fps, len(fps), 4, seed42) print(MaxMin picks:, picks) # 3. 阈值版本同时返回终止时达到的距离 picks, threshold picker.LazyBitVectorPickWithThreshold(fps, len(fps), 4, -1.0, seed42) print(threshold reached:, threshold) # 4. Leader 算法按距离阈值排斥结果两两距离必大于阈值 lp rdsimdiv.LeaderPicker() ids lp.LazyBitVectorPick(fps, len(fps), 0.5) # 注意0.5 是距离1-相似度 for i in range(len(ids)): for j in range(i): d 1.0 - DataStructs.TanimotoSimilarity(fps[ids[i]], fps[ids[j]]) assert d 0.5 print(Leader picks:, ids) # 5. 层次聚类挑选构造欧氏距离矩阵可改用 rdMetricMatrixCalc n len(fps) dist_mat numpy.zeros(n * (n - 1) // 2, d) for i in range(n - 1): for j in range(i 1, n): d 1.0 - DataStructs.TanimotoSimilarity(fps[i], fps[j]) dist_mat[i * (i - 1) // 2 j] d # 注意仅填充下三角 hp rdsimdiv.HierarchicalClusterPicker(rdsimdiv.ClusterMethod.WARD) print(Hierarchical representative picks:, hp.Pick(dist_mat, n, 2)) print(Hierarchical clusters:, hp.Cluster(dist_mat, n, 2)) # 6. 探针驱动的相似性挑选纯 Python 层 probe Chem.RDKFingerprint(Chem.MolFromSmiles(CCO)) top TopNOverallPicker(numToPick3, probeFps[probe], dataSetfps) for fp, score in top: print(top match, score , score)运行前提需要已安装并正确编译的 RDKitrdSimDivPickers为 C 扩展需在构建时启用 Python 包装参见 Code/SimDivPickers/CMakeLists.txt 中的RDK_BUILD_BOOST_PYTHON_WRAPPERS/RDK_BUILD_NANOBIND_WRAPPERS选项。欧氏距离矩阵可借助rdkit.DataManip.Metric.rdMetricMatrixCalc的GetEuclideanDistMat直接生成测试testPickers.py即采用此方式若使用Pick系列方法务必遵守下三角一维布局约定。参数速查与常见陷阱场景关键参数注意事项MaxMinPickdistMat为下三角一维数组pickSize poolSizefirstPicks下标越界或为负会抛ValueErrorMaxMinLazyPickdistFunc(i, j)返回距离内部缓存距离客户端不要重复计算useCache已废弃忽略MaxMin 位向量接口objects为ExplicitBitVect序列与等价LazyPick结果一致固定seed复现MaxMin 阈值接口threshold为距离达到阈值提前终止返回元组(picks, actual_threshold)Leaderthreshold是距离不是相似度结果任意两两距离 thresholdpickSize0表示选完HierarchicalclusterMethod枚举 7 选 1Pick会修改矩阵包装层自动拷贝Pick要求pickSize poolSizeTopNOverall / SpreadprobeFps、dataSet、simMetric惰性求值SpreadPicker在探针间分散结果最常见的两类错误其一把 Leader 的threshold当作相似度传入导致排斥半径错误其二distMat布局不按下三角一维填充或pickSize不小于poolSize均会触发ValueError。对照上述速查表即可快速定位。小结rdSimDivPickers模块以统一的下三角距离矩阵 距离函数抽象承载了三种互补的挑选策略MaxMin 以贪心方式最大化子集内部最小距离适合精确的多样性优化Leader 以距离阈值排斥邻近点速度快、结果天然满足距离下限适合大规模库快速去冗余层次聚类则把挑选问题转化为聚类 取代表元并能顺带产出簇划分。配合纯 Python 层的TopNOverallPicker/SpreadPicker做探针驱动的相似性挑选RDKit 的SimDivFilters家族可以覆盖化合物库设计的绝大多数挑选需求。想深入了解实现细节的读者可继续阅读 Code/SimDivPickers/MaxMinPicker.h、Code/SimDivPickers/LeaderPicker.h、Code/SimDivPickers/HierarchicalClusterPicker.h 及对应的包装与测试文件。赞分享科学计算科研机器学习【免费下载链接】rdkitThe official sources for the RDKit library项目地址https://gitcode.com/gh_mirrors/rd/rdkit点击查看免费下载相关推荐RDKit 层次聚类核心模块解析rdkit.ML.Cluster.Clustering 与 Murtagh 算法实战指南RDKit 层次聚类核心模块解析rdkit.ML.Cluster.Clustering 与 Murtagh 算法实战指南 导读 rdkit.ML.Cluste科学计算科研机器学习RDKit Murtagh 层次聚类模块解析从 Fortran 算法到 Python 聚类树RDKit Murtagh 层次聚类模块解析从 Fortran 算法到 Python 聚类树 导读 RDKit 的 rdkit.ML.Cluster.Murt科学计算科研机器学习RDKit 分子指纹聚类指南ClusterMols 模块 API 与 Murtagh 层次聚类实战RDKit 分子指纹聚类指南ClusterMols 模块 API 与 Murtagh 层次聚类实战 导读 本文围绕 RDKit 官方文档 rdkit.Chem科学计算科研机器学习创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Assimp 3.3.1深度指南:工业级三维模型离线加载实战

Assimp 3.3.1深度指南:工业级三维模型离线加载实战

简介:assimp-3.3.1.zip 是一款面向游戏开发、三维图形编程及VR/AR应用工程师的跨平台3D模型导入库SDK,专为C开发者设计,解决多格式三维模型(如FBX、OBJ、3DS、DAE、GLTF等)统一解析与内存加载难题。资源包含完整源码、…

2026/10/15 18:51:26 阅读更多 →
JSP+Servlet+POI+JDBC实现Excel批量导入数据库实战

JSP+Servlet+POI+JDBC实现Excel批量导入数据库实战

1. 为什么“上传Excel导入数据库”这个老需求至今还在被反复搜索但凡做过几年企业级Web开发的人,对“上传Excel并把数据灌进数据库”这个需求都不会陌生。它几乎是所有后台管理系统的标配功能:财务要导入对账单、教务要导入学生成绩、仓储要导入库存清单…

2026/10/15 18:51:26 阅读更多 →
FPGA课设豆浆机面板:Verilog状态机与消抖实战解析

FPGA课设豆浆机面板:Verilog状态机与消抖实战解析

简介:一份FPGA课程设计用的豆浆机面板工程包,面向电子类本科生和HDL初学者,帮助解决豆浆机控制逻辑的建模与实现问题。整个设计使用Verilog硬件描述语言完成,系统包含模式选择、启动停止、加热和电机控制等功能,可切换…

2026/10/15 18:50:07 阅读更多 →

最新新闻

C语言笔试算法18题:内存与指针驱动的闭环训练体系

C语言笔试算法18题:内存与指针驱动的闭环训练体系

1. 这不是题库搬运,而是一套可闭环复用的C语言算法训练体系“18个笔试考试算法 C语言”——看到这个标题,很多人第一反应是:又一个刷题合集?点开就背代码?先别急着划走。我带过几十届校招辅导班,也参与过多…

2026/10/15 22:57:23 阅读更多 →
函数极限与连续考点全梳理:从极限计算到间断点与零点定理

函数极限与连续考点全梳理:从极限计算到间断点与零点定理

简介:本资源为函数极限与连续专题练习题PDF,适合高等数学初学者巩固概念或备考阶段自测使用。内容围绕极限存在性、连续性、同阶与高阶无穷小、无穷小量等价性等核心考点,共设置14道选择题,并配有完整题干与选项,便于读…

2026/10/15 22:57:23 阅读更多 →
前后端分离实践:Vue3+SpringBoot游戏商店系统开发详解

前后端分离实践:Vue3+SpringBoot游戏商店系统开发详解

1. 从需求到架构:游戏商店系统到底在解决什么问题不少同学看到"基于PHP、asp.net、java、Springboot、SSM、vue3的基VUE的游戏商店系统"这个标题时,第一反应是"疯了,怎么这么多技术栈揉在一起"。其实把这个标题拆开看&am…

2026/10/15 22:57:23 阅读更多 →
18bits Sigma-Delta DAC设计:架构选型、调制器与数字滤波器全解析

18bits Sigma-Delta DAC设计:架构选型、调制器与数字滤波器全解析

简介:这份资源是哈尔滨工业大学2014年工学硕士学位论文《18bits Sigma-Delta DAC的设计》,面向具备电子工程基础、对数模转换与Sigma-Delta技术有一定了解的研发人员和技术爱好者,帮助读者理解高精度、大带宽数模转换器的系统级设计原理与实现…

2026/10/15 22:57:23 阅读更多 →
单卡跑大模型:airllm分层推理与量化压缩实战指南

单卡跑大模型:airllm分层推理与量化压缩实战指南

1. 单卡跑大模型这件事,到底卡在哪第一次看到 airllm 这个项目的时候,我正在一台只有单张消费级显卡的机器上折腾一个 70B 级别的模型。显存报错几乎是必然的,OOM 的红色提示刷了满屏,那种感觉就像你明明有一整间仓库的货&#xf…

2026/10/15 22:57:23 阅读更多 →
Claude Code + DeepSeek 从零安装教程:面向纯小白,6 步拥有自己的 AI 编程助手|TaoToken 统一 Key 接入

Claude Code + DeepSeek 从零安装教程:面向纯小白,6 步拥有自己的 AI 编程助手|TaoToken 统一 Key 接入

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 22:56:22 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →