这是一篇在知识共享署名许可(https://creativecommons.org/licenses/by/4.0/)条款下发布的开放获取文章,该许可允许在任何媒体上不受限制地使用、分发和复制,前提是原始作品首次发表在JMIR Formative Research上,并适当引用。必须包括完整的书目信息,到https://formative.www.mybigtv.com上原始出版物的链接,以及版权和许可信息。
疼痛是一种不愉快的感觉,预示着潜在的或实际的身体伤害。身体疼痛的位置可以通过手绘在2D或3D(人体模型)表面地图上进行交流和记录。徒手疼痛图通常是有效疼痛问卷(例如,简短疼痛清单)的一部分,并使用未划分身体轮廓的2D模板。对图纸的同时分析可以生成疼痛频率图,这在临床上对于识别疾病中常见疼痛的区域是有用的。基于网格的方法(将模板划分为单元格)允许轻松生成疼痛频率图,但是网格的粒度会影响数据捕获的准确性和最终用户的可用性。无网格模板规避了与网格创建和选择相关的问题,并为最类似于纸质图纸的图纸提供了公正的基础。然而,绘制区域的精确捕获在制作疼痛频率图方面提出了相当大的挑战。虽然基于web的应用程序和基于移动的应用程序可以广泛地用于手绘数字绘图,但缺乏从无网格绘图生成疼痛频率图的工具。
我们试图提供一种算法,可以处理任意数量的无网格2D身体模板上的手绘图,以生成疼痛频率图。我们设想在临床或研究环境中使用该算法,以促进疾病诊断或疾病之间人类疼痛解剖学的细粒度比较,或作为指导监测或发现治疗的结果指标。
我们设计了一个基于网络的工具,使用无网格2D身体模板捕获徒手疼痛图。每个绘图由重叠的矩形(可缩放矢量图形)组成
该算法生成了代表身体模板上唯一位置的非重叠矩形。每个矩形都有一个重叠频率,表示在该位置有疼痛的参与者的数量。当转换成HTML文件时,输出可以在web浏览器上呈现为疼痛频率图。输出矩形的布局(垂直-水平)可以根据主体区域的尺寸来指定。输出还可以导出为CSV文件,以便进一步分析。
虽然需要在更大的临床数据集中进一步验证,但目前形式的算法允许从任何2D身体模板上的任意数量的手绘图生成疼痛频率图。
疼痛是一种不愉快的感觉,表明身体部位可能或已经受到伤害[
疼痛频率图是通过同时分析所有数字疼痛图来计算参与者共有的疼痛位置而生成的。为了帮助可视化,这些地图还使用颜色代码来根据它们在被研究样本中出现的频率突出显示身体上的位置。这种图谱在临床上对于确定感觉通常与疾病解剖有关的部位是有用的[
生成疼痛频率图的难易程度主要取决于所使用的身体模板的性质。身体模板的解剖位置已预先设定及界定[
的
在本文中,我们描述了一种新颖且无偏的算法,专门用于从一般2D全身模板上的徒手疼痛图生成空间疼痛频率图。我们还评估了该算法的Python脚本的性能,并通过从2个临床数据集获得的疼痛图生成疼痛频率图来演示其实用性。
人体的图像轮廓(或模板)嵌入到HTML页面中,以创建数字身体模板(人体模型)来捕获疼痛位置的绘图。
身体模板的响应性(即,突出显示或放大或缩小一个区域的能力)需要向量,这些向量使用线、点和形状来表示身体的不同区域(边界)。使用可缩放矢量图形(Scalable Vector Graphics, SVG),一种基于xml的语言,可以显示矢量并创建响应式主体模板。
通过插入基本的SVG元素(如圆形和矩形),可以将疼痛的位置记录在任何身体模板上。通过将这些形状的位置和大小指定为核心属性来插入它们。例如,圆需要坐标(
在SVG中可以创建圆形和矩形元素:
我们使用了SVG
我们下载了一幅无性的人体轮廓图(TIFF),它是改编自亨利·海德爵士早期作品中最古老的模板之一[
为了便于从身体疼痛部位的绘图中获取数据,我们首先开发了
为了使身体疼痛图作为基于web的工具易于访问,我们将HTML文档放置在运行启用了安全套接字层(SSL)的Apache HTTP web服务器的安全Linux机器上(
人体模板(人体模型)显示4个区域。包围每个区域的最紧密的矩形(边界框)以黑色显示。
两栏布局的HTML网页。左列包含所有控件元素(按钮),右列包含Scalable Vector Graphics主体模板。参与者可以点击模板上的任何地方(分为4个区域)来定位他们的疼痛;这里展示的是一幅身体区域的疼痛图,它由不同大小的重叠正方形(相同宽度和高度的矩形)组成。这些图纸被输入到算法中。
每个参与者通过他们的网络浏览器安全地访问身体疼痛图工具。疼痛图被捕获并存储在MongoDB数据库中。疼痛记录的样例JSON文档(表示可伸缩矢量图形
疼痛频率图是由参与者用矩形笔尖在给定的身体模板上绘制的几幅图叠加而成的。每个参与者的画表明疼痛在身体上的位置,可以由多个重叠的矩形组成。当所有绘图叠加时,矩形重叠的程度令人感兴趣。描述的算法
重叠计算算法的关键步骤是(1)数据分解,(2)创建分区,(3)合并分区创建无重叠矩形,(4)优化无重叠矩形。
2D重叠计算的第一步是在给定的2D身体模板上分解来自所有参与者图纸的源数据。
让
假设每个矩形都有属性
在这一步中,我们沿着x轴和y轴创建不重叠的分区。每个分区是一个大小不等的间隔窗口,表示由至少一个矩形包围的区域。
让
这个函数
这个步骤包括合并X和Y分区(不重叠的间隔窗口)来创建不重叠的矩形。
让
我们定义
对于任何
每一个元素
在前面的步骤中,我们生成了不重叠的矩形,其中一些可能是相邻的。
这一步描述了对所有观察到的重叠部分(
让
这两个矩形
水平合并产生更宽的矩形,而垂直合并产生更长的矩形(
算法的输入和输出说明。(A) A、B和C是在身体模板上画了重叠的红、蓝、绿矩形的个体。(B)这些重叠的矩形输入到算法中。输出是11个不重叠的矩形(水平布局),在括号中命名为1到11。每个矩形代表一个位置与疼痛的比例。例如,A(1) = 1/3, AB (3) = 2/3, ABC(6) = 3/3。(C)这显示了垂直布局中算法的输出。可以根据疼痛的位置选择布局(水平或更宽的矩形或垂直或更长的矩形)。对于腿部来说,当布局是垂直的时候,矩形可能会更好地可视化,而对于腹部区域来说,水平布局是首选。(D)当输入是由一个人绘制的单幅图时,算法输出的插图(a, B和C是同一个人)。 In this case, the output is simply 5 nonoverlapping rectangles instead of 11 each with a proportion of 1.0. (E) A, B and C are individuals who have drawn red, blue and green rectangles that overlap in a nested fashion, on a body template. These nested rectangles when inputted to the algorithm produce 9 nonoverlapping rectangles, with (F) showing the horizontal and (G) showing the vertical layout. (H) The demonstration of the output (ie, 1 nonoverlapping rectangle) when the input is a single drawing consisting of nested rectangles. This tends to occur when the individual elects to switch between pencil (tip) size: small, medium and large.
为了实现重叠计算算法,我们在Python编程语言版本3.9中开发了一个命令行工作流[
我们检查了算法的Python脚本的性能
我们假设每个人的画都是由一个矩形组成的(类似于一只鼠标)
本次模拟共生成了10个数据集。第一个数据集由10,000个矩形组成,对于每个连续的数据集,矩形的数量增加10,000个。对于每个数据集,对矩形的原点坐标进行采样,而不从有序对集合(
我们假设一个典型的参与者绘制的疼痛位置由100个矩形组成(相当于100只老鼠)
本次模拟共生成了10个数据集。第一个数据集由100个参与者组成,对于每个连续的数据集,我们增加100个参与者的数量。对于每个参与者,从一组有序对(
每个模拟生成10个CSV文件供算法分析。CSV文件由以下列组成,即
最后,我们使用了来自2个临床数据集的数字疼痛图;第一个数据集(数据集1)包括23名被筛选参加临床药物试验的个体(ISRCTN68734605) [
模拟是为了评估该算法的Python脚本的性能
模拟以评估算法的Python脚本- compute_overlap.py的性能。y轴显示脚本的执行时间(以秒为单位),x轴显示脚本处理的矩形数量。脚本的输出,非重叠矩形的数量显示为红色。图(A)显示了脚本在模拟1中生成的数据集上的性能,其中每个参与者绘制的矩形数量被设置为1,图(B)显示了模拟2中生成的数据集上的性能,其中每个参与者绘制的矩形数量被设置为100。
我们首先从MongoDB数据库中存储的2个数据集中提取所有绘图(具有相同宽度和高度属性的
为了生成疼痛频率图,我们只使用了来自2个临床数据集的可见且唯一(不相同)的记录。来自同一参与者的相同录音(
CSV数据集由Python脚本独立处理
随后使用Python脚本将2个临床数据集的非重叠矩形绘制在身体模板上
参与者在使用身体疼痛图工具时,用铅笔和橡皮擦点击2个临床数据集。
特征 | 数据集1 | 数据集2 | |||
参与者,N | 23 | 30. | |||
|
|||||
|
铅笔一个 | 174.6 (208.5) | 138.9 (108.2) | ||
|
橡皮擦b | 16.7 (32.7) | 1.5 (4.2) | ||
可见和独特的铅笔点击,平均(SD) | 141.0 (176.5) | 133.1 (105.5) | |||
铅笔平均尺寸c,均值(SD) | 26.6 (10.3) | 25.2 (6.0) |
一个每次铅笔点击表示疼痛位置的记录,并创建一个可缩放的矢量图形
b单击橡皮擦隐藏先前插入的可缩放矢量图形
c根据可见的和独特的铅笔点击记录(绘制)疼痛位置。
在每个区域为2个临床数据集制作了可见和独特的铅笔记录一个。
特征 | 数据集1 | 数据集2 | |
录音,N | 3242 | 3993 | |
|
|||
|
前面 | 1381 (42.6) | 800 (20.0) |
|
侧(右) | 80 (2.5) | 0 (0.0) |
|
侧(左) | 103 (3.2) | 11 (0.3) |
|
回来 | 1678 (51.7) | 3182 (79.7) |
一个数据来自可伸缩矢量图形绘图,并提供给算法的Python脚本以生成疼痛频率图。
从筛选临床药物试验的患者(N=23)中获得的徒手疼痛图(数据集1)产生的疼痛频率图说明。在交互式地图(HTML格式)中,用户可以滑动渐变条上的黑色指针(如图中所示),根据重叠阈值(即<=重叠比例)查看位置,并将地图保存为PNG文件。
从诊断为慢性原发性背痛的患者(N=30)获得的徒手疼痛图(数据集2)绘制的疼痛频率图。
在身体模板上绘制疼痛位置在研究和疼痛临床中得到了越来越广泛的应用。这些通常是调查问卷的一部分(例如,简短疼痛量表[
在本文中,我们首先描述了身体疼痛图[
该算法的主要优点是可以处理来自任何未划分的主体模板的数据。换句话说,身体模板不需要使用固定数量的网格来划分(例如,geoain,在3D人体模型上渲染的身体表面图[
该算法接受单个CSV(纯文本)文件,其中包含捕获为矩形的疼痛记录,并生成不重叠的矩形。每个不重叠的矩形是身体模板上的唯一位置,并带有重叠频率,表示该位置疼痛的参与者数量。输出,当转换成HTML文件时,可以在现代web浏览器(例如,Google Chrome, Mozilla Firefox或Microsoft Edge)上可行地呈现,或者以所需的分辨率打印以发布,正如我们为2个临床数据集所示。该算法还包含了优化疼痛频率图显示的特征。矩形可以在水平(更宽)或垂直(更长;
由于个体可以在身体模板上自由绘制,因此算法产生的输出(即不重叠的矩形)具有很高的粒度。给定所需的空间信息(身体区域内的x-y坐标),可以回顾性地创建网格并根据需要重新分配细胞和解剖标签。该算法的输出可以使用线性代数进行坐标变换,并进行标记,以便与其他具有解剖标签(例如手臂和腿)的身体地图集或模板在性质上保持协调[
该算法生成不重叠的矩形,不需要知道二维体模板内的区域边界。因此,输出中的一些矩形可能部分落在这些区域之外。当绘图包含主体区域的边界(或接近边界)时,就会发生这种溢出。对于生成疼痛频率图来说,这不是问题,因为落在区域之外的矩形可以使用SVG轻松地屏蔽(隐藏)。对于其他分析目的,可以通过以下方法(1)将主体模板划分为小区域并应用边界框校正以按区域过滤输出的非重叠矩形或(2)创建一个
该算法经过优化,仅为至少有一个参与者绘制的身体模板的位置生成疼痛频率数据。添加
软件工具(R软件包、CHOIR Body Map [
为带有边界或网格的身体模板生成疼痛频率图是很简单的,因为位置是预定义和固定的,并且需要推断选择每个位置的参与者的数量[
在研究中,使用无边界和无网格的身体模板进行徒手绘图,使用定制的工具同时分析他们的绘图。这些工具并非在公共领域内免费提供[
我们的算法和之前研究中使用的其他方法的主要目的是生成疼痛频率图,这需要同时分析参与者提供的所有手绘图。以前的研究将徒手疼痛图存储为位图图像(例如PNG);因此,生成疼痛频率图需要对所有像素进行提取和分析[
我们的算法处理图形,其中疼痛位置用矩形表示(笔尖是一个正方形,本质上是一个矩形)。这有几个优点,例如,来自图纸的输入可以简单地存储为CSV(纯文本)文件,因为所有位置都表示为带有属性的矩形
长期以来,身体图谱一直被用于研究和临床实践,以促进疼痛和其他感觉之间的交流[
我们的徒手疼痛绘图工具(身体疼痛图[
由于该算法已经作为Python命令行工作流实现,因此可以通过cron守护进程(Linux环境)调度自动疼痛频率图构建,并使用几个标准(例如,矩形的区域,重叠频率,宽度和高度)过滤和可视化输出。Python脚本可通过联系对应作者(AD)获取。
我们设想在临床或研究环境中使用该算法,以促进疾病诊断或疾病之间人类疼痛解剖学的细粒度比较,或作为指导监测或发现治疗的结果指标。
协作健康结果信息注册中心
脑功能磁共振成像
安全套接字层
可缩放矢量图形
作者要感谢Ingrid Scholtes和Gill Ison帮助我们获得了这两个数据集中使用的数字疼痛图,并感谢Alasdair Kerslake测试身体疼痛图工具。他们还想感谢Folkert Tangerman对算法的反馈。AD目前由英国医学研究委员会和Versus关节炎基金(MR/W002426/1)和Advanced Pain Discovery平台支持。临床数据集(数据集1和2)来自英国医学研究委员会(MR/J013129/1)和Versus Arthritis(赠款21538)资助的独立项目。
没有宣布。