1.es笔记六之聚合操作之指标聚合
2.学习笔记Unity 渲染——关于SRP以及SRP的笔记执行过程
3.Ovito+Python学习笔记(240220)
4.ovito 包学习笔记 (4):数据对象
5.Snakemake学习笔记一(基本流程)
6.SfM Revisited (COLMAP) 阅读笔记
es笔记六之聚合操作之指标聚合
聚合操作在 Elasticsearch(ES)中分为四大类: 1. **bucket 类型** - 用于分类分组,将符合条件的源码数据按照某个 key 分类到一组中。 2. **metric 类型** - 计算一组文档的开源相关值,如最大值、笔记最小值或平均值。源码 3. **matrix 类型** - 从文档中提取多个 key 的开源房屋中介管理系统源码值生成矩阵,不支持脚本。笔记 4. **pipeline 类型** - 将其他聚合的源码结果进一步聚合。 ES 支持聚合操作的开源嵌套,聚合结果可以再进行聚合。笔记 ### 指标聚合的源码基本结构 指标聚合操作的基本结构包括:**aggregation_name** - 聚合返回结果的名称,自定义。开源
**agg_name** - 聚合的笔记参数,如最大值、源码最小值、开源平均值。
**field** - 聚合字段。
例如,**平均值聚合**的基本结构:**aggs** - 表示聚合操作。
**avg_balance** - 聚合名称。
**avg** - 平均值聚合。
**balance** - 聚合字段。
### 脚本执行与结果处理 脚本执行允许在聚合结果的基础上进行定制化处理。例如,对平均值结果进行修正。 ### 缺失值补充 对于导入数据时可能缺少的字段值,可通过 **missing** 参数添加默认值。 ### 去重统计与聚合统计汇总 去重统计用于对某个字段进行统计,返回去重后的总数。聚合统计汇总参数 **stats** 可汇总一般聚合值,如总数、最大值、最小值等。 ### 最大值与最小值聚合 通过 **max** 和 **min** 关键字实现。 ### 百分位统计与排名 百分位统计使用 **percentiles** 关键字,百分位排名则根据数据获取系统中的百分位。 ### 字符串统计聚合 专门用于处理字符串类型数据的统计,如最长和最短长度、平均长度和熵值。 ### sum 统计总和 对特定字段进行总和计算,如 age 字段的 sum。 ### count 统计总数 统计文档总数。 ### top hit 操作 返回符合条件的前几条数据,通过 **size** 控制返回数量,桌面源码提取器可用于排序并获取特定数据。 以上介绍了 ES 中聚合操作的多种应用,包括指标聚合的基本结构、脚本执行、缺失值处理、去重统计、聚合统计汇总、最大值与最小值聚合、百分位统计、字符串统计聚合、sum 统计总和、count 统计总数与 top hit 操作。学习笔记Unity 渲染——关于SRP以及SRP的执行过程
本文主要整合了Unity渲染管线的相关资料,重点介绍了Unity的可编辑渲染管线(Scriptable Render Pipeline,SRP)及其执行过程。SRP包含通用渲染管线(Universal Render Pipeline,简称URP)和高清渲染管线(High Definition Render Pipeline,简称HDRP)。用户可以通过C#调用Unity提供的图形API自定义渲染管线,以满足项目需求。若想查看URP代码,可创建URP模板项目或安装URP插件,并在项目文件目录中找到URP的主要源码文件进行查看。
URP代码运行流程涉及到两个关键类:UniversalRenderPipelineAsset类和UniversalRenderPipeline类。UniversalRenderPipelineAsset类用于检查设置是否正确和进行初始化,其中CreatePipeline()和CreateRenderers()函数负责对RendererList进行检查和初始化。UniversalRenderPipeline类是URP渲染的主程序,其Render()方法是相机进行SRP渲染的主方法。在该类中,UniversalRenderPipeline还会调用如RenderCameraStack()、RenderSingleCamera()等方法来实现渲染过程。
渲染过程包括多个步骤:BeginCameraRendering、UpdateVolumeFramework、InitializeCameraData、RenderSingleCamera、EndCameraRendering。其中,RenderSingleCamera()函数尤其关键,它涉及剔除、执行渲染器命令以及提交渲染命令的多个步骤。在执行过程中,Unity会将渲染指令存储在命令列表中,直到最终调用Submit()时做统一的跟版网源码渲染。此外,本文还介绍了SRP Batcher,它通过批处理GPU命令来减少DrawCall之间的设置,从而提高渲染效率。
通过整合这些内容,本文详细阐述了Unity中的SRP及其执行过程,为开发者提供了深入了解渲染管线实现和优化技术的途径。
Ovito+Python学习笔记()
面对Ovito模块的安装难题,通过重新配置虚拟环境,问题迎刃而解。撰写开题报告并调整格式后,虽然还未呈交给导师,但自我感觉良好。
本周的首要任务是计算位错移动速度,选定Cantor合金的衍生体系,并进行单轴拉伸实验。今日的任务暂时无从下手,先熟悉Ovito模块的使用方法。
Ovito模块的强大功能包括导入导出模拟文件、建立数据处理管道、渲染三维图像或动画、查看处理结果以及编写自定义的modifier。
模块的数据处理管道按照Data -> FileSource -> Modifier 1 -> Modifier 2 -> ... -> Output的流程进行。
使用import_file函数加载模拟文件,通过pipeline.source访问,允许替换原始输入数据或对多个文件进行批量处理。pipeline.modifiers.append方法设置处理步骤。
导出文件的函数export_file用于输出处理后的结果。通过compute()方法访问数据处理的输出结果,数据存储在DataCollection中,包含cell、particles.position等对象,方便在脚本内调用。
在import_file后,通过pipeline.source.compute()访问初始文件,pipeline.compute()访问管道处理结果。使用pipeline.add_to_scene实现可视化,确保在导入文件后将其添加到scene中,通过ovito.scene访问当前scene,确保所有插入到当前scene的pipeline都能被导出。
明日的计划包括计算位错移动速度、验证层错能、选择衍生体系并提交报告给导师。云端软件源码出售回想起整个寒假,虽然没有实质性的工作和学习,但也积累了一定的经验和知识。
ovito 包学习笔记 (4):数据对象
Rong Zhao于年8月日发布了该笔记的版本1.0,后续会继续更新。
在ovito包中,数据以数据对象(data objects)形式组织,包含SimulationCell(盒子尺寸和边界条件)、Particles(每个粒子相关的属性及子对象Bonds)等。每种数据对象对应于ovito.data模块中的相应类,这些类共同继承自DataObject。
顶层类DataCollection代表了输入文件对应的完整数据集,修改器可以修改其下的各数据对象。Pipeline.compute()方法返回DataCollection对象,可通过其属性访问下层各数据对象。
Particles数据对象通过DataCollection.particles访问。Ovito以属性为中心表示每个粒子,Particles实质上是多个Property对象的集合。提供内置标准属性名称,并支持用户自定义。通过代码查看特定输入文件的原子属性。
类似Particles类,还有Bonds类、DataTable类和VoxelGrid类,它们的基类为PropertyContainer,工作机制与Particles类相似,均由一组Property对象组成,每个Property对象为数组类型。
全局属性通过访问DataCollection.attributes获取,返回Python字典类型,可来自输入文件或由修改器添加,如当前时间步、文件名等。
DataCollection.tables返回的数据表为Python字典类型,用于存储数据表信息。
以上是关于ovito包数据模型的笔记概览。欢迎在评论区提出宝贵意见。
Snakemake学习笔记一(基本流程)
Snakemake是一种强大的pipeline构建工具,本文将简要概述其基本流程和使用技巧。首先,通过Mamba代替Conda,提升构建速度。工作开始时,梦幻之灵源码设置好工作目录并搭建Snakemake环境,例如在基因组分析中,构建流程涉及读取单个或多个文件,明确输入(input)和输出(output),以及shell指令指定任务和结果定向。
当需要重新运行任务时,如果没有新输入,Snakemake会提示无事可做。通过修改输入文件的时间戳,可以触发重新计算。比对结果和排序同样使用shell指令中的通配符。完成基础步骤后,检查工作流程的DAG图(Directed Acyclic Graph),Snakemake利用Graphviz的dot命令生成可视化图表,实线和虚线分别表示实际运行和未运行的步骤。
对于文件收集,expand函数非常实用,特别是处理长shell命令时,建议拆分为多行。自定义脚本(Python和R)的使用,需要了解snakemake对象的访问规则。在目标输入规则方面,Snakemake不仅接受文件名作为目标,还支持规则名称,且默认第一条规则为工作流程的入口。最后,建议在Snakefile顶部设置一条目标规则,明确所有常规输出,以避免混乱。
通过这些步骤,你将能够更好地理解和使用Snakemake进行pipeline的高效构建与管理。
SfM Revisited (COLMAP) 阅读笔记
增量式、多层式、全局式是当前主流SfM方案。增量式SfM处理非结构化照片集最为流行,但其面临鲁棒性、精度、完整性、扩展性等问题。本文回顾了增量式SfM pipeline,从特征提取、匹配、几何校验生成场景图,到初始化图像配准、三角化场景点、异常值过滤、BA重优化的重建过程。
第一步是寻找中的相同场景,提取并匹配各中同一场景位置的2D像素点。接着,利用当前模型的3D点和新的对应2D特征,通过解PnP问题配准新,得到姿态估计和重建场景点云。重建阶段需要考虑内参估计,以实现准确的图像配准。
面对当前SOTA方法建模完整性和鲁棒性不足的挑战,如配准失败、系统输出错误模型,关键在于提高准确性和完整性。作者提出多模型几何校验策略,通过估计视角对的基础矩阵、关键矩阵、单应矩阵,以及判断规则,增强场景图,实现鲁棒场景重建。此外,作者不对全景式图像对进行三角化,避免劣化3D点,提升三角化和图像配准的鲁棒性。
在下一最优视角选择方面,决策基于外观、两视图对应性、当前增量式重建场景。常用策略是选择看到最多三角化点的图像,减小相机后方交会不确定性。不确定性驱动方法和实验展示了PnP求解精度取决于观测点数量和分布。对于网络集,标准PnP问题扩展至未校准相机内参估计。提出的多分辨率网格分析方法有效提升了视角选择效率。
三角化技术通常偏向外观一致对,容易引入误差。作者提出基于采样的三角化方法,利用传递性建立较大基线图像间的对应关系,提升三角化精度。考虑异常值处理,匹配技术的性能受限于特征轨迹的大量异常值和低精度相机位姿的反投影误差。Bundler方法通过采样执行双视图三角化,筛选符合约束的3D点。作者提出基于RANSAC的三角化方法,克服局限性,实现鲁棒性。
BA用于消除累积误差,作者在图像配准后在一组最相关上执行local BA,仅在模型增长固定百分比后再执行全局BA,以保证SfM运行时间线性增长。对于大规模问题,场景大部分不受BA影响,BA主要对新添加部分进行优化。将场景划分为多个分组,每个分组参数化为一个单独相机,将影响到的单独分一组,以得到最优结果。BA代价函数被重写,以适应场景分组。
科研文献管理的Pipeline,使用Zoreto,ZotFile和MEGA同步网盘
有效的文献管理对于科研工作至关重要。我分享的文献管理方法利用了开源软件Zoreto、ZotFile插件以及云服务MEGA,实现了高效、便捷的文献管理流程。 Zoreto是一款功能强大的开源文献管理软件,能妥善保存作者、标题、出版社、摘要、阅读笔记等信息,并支持与PDF文件等附件的集成。它还具备浏览器插件、在线同步功能,与文档编辑软件如Word、LibreOffice兼容,轻松生成文内引用和参考文献列表。 为优化Zoreto的附件管理,我采用了ZotFile插件。此插件能够自动重命名、移动PDF文件,或将PDF附件附加到Zoreto条目中。它还能将Zotero库中的PDF文件同步至移动端PDF阅读器,方便在移动设备上查看和批注文件。请注意,ZotFile不支持Zotero 7,Zotero 7用户可考虑使用zotero-attanger插件作为替代。 MEGA是一款功能强大的国外云盘服务,提供GB免费存储空间,支持任意文件夹的同步,非常适合存储和管理PDF文件。相比于其他云服务如坚果云,坚果云每月的上行流量限制仅为1GB,频繁编辑PDF文件时会消耗大量流量,限制了操作灵活性。而MEGA无需担心这类问题,支持文件版本管理,便于管理多个修订版本。 本文详细介绍了从数据管理到文件同步的整个流程,包括:使用Zoreto进行文献条目管理。
借助ZotFile插件对附件进行自动化处理,如重命名、移动PDF文件等。
设置MEGA本地同步文件夹,创建专用文件夹存储PDF文件。
在Zoreto同步设置中取消文件同步选项,仅进行数据同步。
在高级设置中,将链接附件的根目录设置为Zoreto文件夹,确保文件与元数据同步。
创建MEGA客户端内的同步设置,确保本地文件与云端文件保持一致。
使用此方法,创建文献条目时只需拖动PDF文件至Zoreto,软件会自动搜索并添加元信息。在论文网站如arxiv上,通过安装Zoreto扩展程序,可轻松添加新条目并下载论文。针对PDF附件,通过右键菜单功能即可轻松重命名并移动至本地同步盘,MEGA会自动完成文件同步,确保文件版本管理。 通过这种方式,科研人员能够高效管理文献资源,节省时间,提高工作效率。MEGA提供的云存储服务为文献管理提供了稳定的备份,确保数据安全,且支持版本控制功能,便于后续参考与协作。ovito 包学习笔记 (5):创建模型并导出为 LAMMPS 的 data 文件
Rong Zhao 在 年 月 日更新了学习笔记,致力于介绍 ovito 在创建模型和导出为 LAMMPS 的 data 文件过程中的应用。ovito 不仅提供了原子/分子模拟结果的可视化,还具备创建模型的功能,通过结合 ovito.io.export_file() 方法,可以导出模型用于模拟,如 LAMMPS 的 data 文件。作者基于 ovito 帮助文档的一个案例(Example B3)进行讲解。
原始案例代码如下,易于理解:
在上述代码基础上,作者继续使用 export_file() 方法导出 LAMMPS 的 data 文件。注意在第 3 行添加了 from ovito.io import export_file。
export_file() 方法的接口如下:
ovito.io.export_file(data, file, format, **params)
其中,data 是导出的对象,如 Pipeline、DataCollection、DataObject 或 None;file 是导出文件的路径,包含文件名;format 是导出文件的格式,指定为 LAMMPS 的 data 文件;params 是用于导出格式的一些参数,例如 atom_style,需额外指定。
如需了解更多关于 ovito 导出文件的概要,请参阅以下链接:
详细教程和接口帮助文档可在以下链接中找到:
作者强调,本文旨在分享如何使用 ovito 包创建模型并导出为 LAMMPS 的 data 文件的技巧。欢迎读者在留言区提出宝贵的建议和批评。
Netty笔记:netty实现WebSocket服务(web's IM)
Netty提供了一种实现WebSocket服务的高效方式,其中包含了一些关键的组件和处理流程。在构建WebSocket服务器时,通常涉及到HttpRequsetHandler和TextWebSocketFrameHandler等组件的使用,这些组件负责处理HTTP请求和WebSocket帧的接收与发送。
在处理聊天相关的WebSocket帧时,初始化Pipeline是必要的步骤。Pipeline是一个流程线,用于在数据流中执行一系列操作,Netty的Pipeline在数据处理流程中起到了核心作用。当处理WebSocket帧时,可以将相应的处理器添加到Pipeline中,以实现特定的功能,比如数据的解析、编码、解码等。
为了实现WebSocket服务,开发者通常会使用Channel类,这是Netty的核心类,用于表示单个网络连接。在WebSocket服务器的实现中,启动程序通常是通过ChannelFuture来完成的,这可以确保服务器在启动时能够正确地与客户端建立连接。
当涉及到安全通信时,Netty提供了SecurityChatWebSocketServerInitailizer类,用于初始化安全功能。这个类可以配置SSL/TLS安全协议,确保数据传输的安全性,防止数据被窃听或篡改。
此外,为了启动WebSocket服务,SecurityChatWebSocketServer是一个重要的类,它可以配置和启动服务器,提供安全的WebSocket通信。通常,这个类需要配置服务器端点、处理HTTP请求和WebSocket连接,并可能配置其他高级功能,如身份验证和授权。
总的来说,Netty通过提供一系列的组件和类,为开发者实现WebSocket服务提供了一个高效、灵活且安全的解决方案。从处理HTTP请求到初始化Pipeline,从启动服务器到实现安全通信,Netty的组件和方法覆盖了WebSocket服务实现的全过程,大大简化了开发过程。