版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于Java框架处理和显示短回波时间磁共振光谱信号B. De Neuter, J. Luts, L. Vanhamme, P. Lemmerling, S. Van HuffelKatholieke Universiteit Leuven, Department Electrical Engineering, ESAT-SCD, Belgium文章信息: 文章历史:收到2004年12月2日收到修改稿2006年3月21日2006年9月1日接受关键词:Java,应用框架,核磁共振光谱(MRS),量化摘要: 磁共振波谱分析可以被用来确定在一个非侵入性的方式的特定化学物质的浓度,也被称为代谢产物。MR
2、S信号的频谱包含了对应于该代谢产物的波峰值。短回波时间信号的特点是大量重叠的代谢物的波峰和需要复杂的处理方法。以一个准确、快捷的方式处理这些信号,在临床环境中的的工具中是非常有用且必要的。因此,我们开发了新型的可综合的加工方法并且设计了一个可自由查看和开源框架。该框架具有一组抽象类,称为热点,它的目标是提供一个通用结构,并确定该程序的控制流。它提供构建块或组件,以帮助开发人员通过一个插件系统整合其在框架方法。该框架的设计通过统一建模语言(UML)和Java来实现。当开发人员实现了该框架,他得到了简单和用户友好的图形用户界面(GUI)的用来处理MRS数据的应用程序。本文详细介绍了框架和我们在它的
3、加工方法相结合的结构和实现。1、 绪论某些化学物质的浓度可以在非侵入性的方式下通过使用磁共振光谱来确定(MRS)。这些化学物质也被成为代谢产物。一种代谢产物对应于频谱MRS信号的一个或者多个峰值。一个峰或一组峰的面积是与相应代谢物的浓度有关系的。通过量化峰下的面积可以估计与其相关的代谢物的浓度的值。短回波时间MRS信号包含代谢物的信息比长回波时间MRS信号更多。短回波时间MRS信号的缺点是较低的信号噪声比(SNR ) ,存在严重重叠的峰和广阔的基线。这三个因素大大增加了准确定量的难度。先验知识被广泛用来解决这些问题。LCModel 2,3 和磁共振用户界面( MRUI ) 4,5 是两个量化短
4、回波时间MRS数据广泛使用的软件包。MRUI包含的时域方法Amares的(准确,严谨,高效的频谱拟合先进的方法) 6 和QUEST (基于量子估计定量) 7 。Amares方法属于类交互时域法,并通过最小化代价函数拟合参数化模型函数将数据。LCModel使用一个在频域工作的方法。LCModel和QUEST方法都适合的信号与调整的光谱的总和从一组来体外测量或模拟的代谢物。这需要时间来开发软件工具和设计一个图形用户界面(GUI)。如果代码的大部件可以以简单和直接的方式被重用,那将会很方便。为此框架8,9是整合各种方法在Java中创建。一个框架不存在唯一的定义。该定义可以参考文献中找到。10可能是最
5、有参考之一:“一个框架是一组类,体现了一种抽象的设计解决方案,以一系列相关问题”。框架可以被看作是一种影响设计和代码软件体系结构。抽象类从视图的执行点提供了一组热点。在这种方式下,热点灵活应用于代码连接到框架的框架。热点的每个实例创建一个新的应用程序。所有包含在框架中的代码可以容易地被重复使用。模块化设计是用来使框架更加灵活。中心在这个设计是插件系统。虽然这个插件系统是由Eclipse平台11的插件体系结构激励和影响的,Eclipse中的没有代码被用在这个插件系统中。在Java中,可以打包和分发代码的jar文件, JAR文件是用ZIP文件格式的存档的,它可用于数据压缩,存储和解压。另外,jar
6、文件中有一些改进的功能,包括电子签名,版本控制和密封包装,这是可能的,因为一个jar文件都有一个包含封装在其文件信息的清单文件。一个插件的框架是一个存储在jar文件并放置在目录中的插件的软件,它可以在安装目录中找的到。每次该应用程序启动时,它会首先在此目录中搜索所有可用的插件,这样一来,很容易添加或删除插件。因为框架的直到运行时才知道哪些插件可用,所以它将使用清单文件来识别插件的功能并定位到它在框架的哪个类中。例如,插件dspGUI有一个条目'InitGUI:dspGUI.Init'在它的清单文件中。当这个清单文件的查找在运行时,框架会知道该类dspGUI.Init将初始化插件
7、的图形用户界面。当有一个条目多个值,它们将被用分号隔开。因此,当指出到一个插件的条目时,插件中的清单文件的条目也就出来了。第2部分讨论了框架背后的一般的设计和思路。第三部分将详细讨论框架的MRS部分的具体设计,以及第四部分通过创建用于加工短回波时间MRS数据的应用程序展示了框架的说明。2、 框架的一般设计和思路。建议软件包的目标是提供一个图形用户界面做下一个开源许可证短回波时间MRS信号的量化,这意味着代码是免费提供在我们的网站1上,并且易于适应用户具体需求。虽然作者是在他们参加的MRUI项目中受到了的启发,但在这项工作中提出的新方法也有一些明显的差异。首先,相对于LCModel和MRUI拟议
8、的框架和软件包是免费且开源的。用户可以添加GUI组件以及定制现有的组件。这样的框架要提供一个简单的方法在插件的形状上添加功能,这导致了该软件的一个非常快的改善,此外,这允许使用在科学和临床环境中。其次,框架提供了新的时域方法,称为AQSES(短回波时域信号进行精确定量),做短回波时间定量12,13。最后,该框架提供了一个FIR滤波技术来从特定的频率范围14除去不需要的共振。从实施的角度看该框架的主要目标是:·使代码重用;·易于调整的I / O,预处理和处理方法;·易于添加或删除的I / O,预处理和处理方法;·易于维护的框架;不同的组件通过特定的接口进行
9、通信,该接口必须是灵活的且明确定义的。如在图1中可以看到的框架是建立与所包含的一个插件系统的不同层。一旦框架已启动了一小段代码,并允许我们编写框架中所有代码,作为一组不同的插件,那么该插件系统被加载并初始化。底部层提供像一个插件管理器和一般的图形用户界面(GUI),这无非是一个框架的菜单栏和工具栏的一般功能。实际上它是一个子框架,因为它提供的热点通过简单的图形用户界面和插件系统创建了应用程序。其他层的设计和构造和插件相类似。插件是被发现并在运行时加载的一小段代码。插件系统使得框架非常灵活,允许代码的重用并且可以很容易地扩展新功能的框架。在这一总体层的顶部,我们可以找到第二层中含dspSyste
10、m和dspGUI的插件,用于处理和显示MRS数据。两者都是子框架并且含有可以被实例化的热点。dspSystem子框架提供热点来加载,预处理和处理MRS数据。子框架dspGUI使得MRS数据呈现到屏幕和操纵子框架dsp-系统层成为可能。插件飞利浦和西门子从MRS分析仪中提取加载的MRS数据,分别由厂家飞利浦和西门子完成。Matlab插件在Matlab格式中加载MRS数据。ECC插件包含的代码来执行涡流校正和hlsvdpro插件包含执行HLSVD滤波15的代码。aqses插件包含一个方法来量化短回波时间MRS信号12,13。框架库包括一组插件来执行特定任务。3、 系统描述3.1、使用的技术统一建模
11、语言(UML)16和设计模式17是用来做框架的蓝图,因此可以对它有一个清晰的概述。设计模式是在一定的范围内对一定问题的模型解决方案,该框架的实现在Java中1820完成。Java是一种面向对象(OO)的编程语言,非常适合建立一个框架,因为它具有多态的概念,数据抽象和继承。多态性是指人们可以把不同的类型分配给一个单独的变量或参数的值。这个概念是用来获取该框架的不同组件之间的松耦合。抽象类和接口用于定义热点,并允许框架来指定用户必须执行的方法。继承可以很容易地从现有的创建新组件。该框架是在Linux和Windows测试,但它应该工作在Java虚拟机(JVM)存在的任何平台中。3.2、信号的设计MR
12、S信号作为自由感应衰减(FID)信号被获取。图2展示出了这种信号的UML图。类信号的每个实例都有类的前一个实例与其相关联。一个信号实例中包含的时域信号,该信号的名称和其他信息。在前一个实例可以发现,用于获取信号的协议。它包括开始时间,场强,采样间隔,信号的长度,发射频率和中心核。前一个实例被框架所使用,以确定两个信号是否通过相同的协议获得的。SignalFactory接口用于从类的头文件和类dspSystem.Signal中创建实例。3.3、MRS项目的设计为了处理框架中的MRS数据,用户需要开始新建一个MRS项目。一个项目包含了相同的协议下获得的零个或多个信号。在图3中可以看出,类dspPr
13、oject的实例与ProjectSignal的一个实例有关。类ProjectSignal是类dspSystem的子类, 信号的结果与模板有关联,在框架中的处理方法是基于模板的。模板是描述如何预处理和处理数据的文本文件。当数据被处理时,它存储的每个信号的结果从类结果到对应的对象中。使用模板时,有一个存储和设定的优势,方便人们以后的使用。这允许用户装载一个模板,并立即开始处理。3.4处理MRS数据在图4中我们可以看出不同的步骤来处理MRS数据。第一数据加载和可视化通过应用快速傅立叶变换到时域的信号。进行预处理和处理的数据,最后结果将显示到屏幕上。3.4.1 导入MRS数据文件插件dspSystem
14、(参见图1)中包含的代码来读取,并从不同的厂商导入数据文件。该框架可以从飞利浦和西门子核磁共振扫描仪中读取文件。它也可以读取存储在Matlab格式中的文件。该框架为不同的制造商导入MRS数据提供了一个热点的FileFormat(见图5),类IOManager将管理这个热点的实例,并使用Singleton模式实现。当创建这个类的单个实例时,它会从插件的dspIO条目起检查项目。此项目将指定热点的实例。例如,飞利浦插件,该插件是从FileFormat类中派生出的飞利浦类,用于从飞利浦核磁共振扫描仪来读出数据。该插件在其manifest文件具有条目“dspIO:philips.io.Philips&
15、#39;。类IOManager的单个实例将使用责任链模式组织热点文件格式的不同实例。此模式可以通过请求传递创建对象链,这是一个简单的方法,从不同的接收器解耦请求的发送者。在这种情况下,来自于 IOManager的实例是发送者和热点的不同实例是接收者。当文件需要加载时,它会通过链传递该文件,直到其中一个实例化可以加载它。如果文件到达链的结尾,将会抛出一个异常。通过这种方式可以动态地添加新的插件以及加载厂商的数据。3.4.2 预处理有两个热点需要进行预处理。一个是抽象类PreprocessingMethod,有三种预处理数据的方法,第一种方法预处理只有一个信号,第二个则预处理信号对象的数组,第三个
16、将预处理信号的所有项目中可用的对象,并从类信号返回的新对象 public abstract void preprocess(Signal signal, Objectparam); public abstract void preprocess(Signal signal, Objectparam); public abstract Signal preprocessAll(Signal signal, Objectparam);另一个热点是接口PreprocessFactory并创建类PreprocessingMethod的新实例,此接口的设计与抽象工厂模式类似。实例化这些热点有一个dspP
17、reprocessing条目指定的工厂类的插件。类PreprocessingManager将保持的预处理算法轨道。各个预处理算法应该有一个唯一的名称。预处理在一个项目中的数据,一个经过选择的预处理方法的名称和arameters此方法的项目。每一个预处理算法应该有一个唯一的名称。预处理一个项目中的数据,通过选中的预处理方法的名称和参数方法的项目。该项目将尝试找到正确的工厂类,创建类PreprocessingMethod的一个新实例,并启动预处理。传递给方法的参数都存储在Object类型的数组,Object类是类层次结构的根并且所有其他类都是从这个类派生出的子类。这样,框架不知道所传递的参数,这将
18、是松散耦合的预处理方法。它是由用户决定哪些参数将被传递。将立即对数据进行预处理。3.4.3处理类ProcessingMethod是一个热点,将用于该项目启动处理,用户可以使用这个热点整合他的处理方法框架。在类模板实例的处理方法中的设置。ProjectSignal的每个实例都有一个参考模板的实例。以这种方式,用户可以单独的从处理方法上对每个信号进行调整设置。模板可以被存储在用户可以使用常规的文本编辑器进行编辑的文本文件中,这将使得更简单的重复使用上述的设置。类模板有以下几种方法设置并且获得模板的配置: public abstract void setParameter(int index, Ob
19、ject param); public abstract void setParameter(int index, Object param); public abstract void setParameter(int index, int param); public abstract void setParameter(int index, double param); public abstract void setParameter(int index, String param); public abstract void setParameter(int index, boole
20、an param); public abstract Object getObjectParameter(int index); public abstract int getIntParameter(int index); public abstract double getDoubleParameter(int index); public abstract String getStringParameter(int index); public abstract boolean getBooleanParameter(int index); public abstract int get
21、IntParameter(int index); public abstract Object getObjectParameter(int index,Object param); public abstract int getIntParameter(int index,Object param); public abstract double getDoubleParameter(int index,Object param); public abstract String getStringParameter(int index,Object param); public abstra
22、ct boolean getBooleanParameter(int index,Object param); public abstract int getIntParameter(int index,Object param);该方法接受设置中被更改或退回的整数索引的注释,这些索引是由处理方法本身所定义的。因为它是由用户决定在运行时更改设置,DSP插件系统并不需要知道索引的确切含义。它只是通过在用户和模板之间的消息,处理数据后,结果被存储在结果实例中。类ProcessingMethodFactory是一个工厂类,用于从类ProcessingMethod和模板中创建实例。为了查找到可用的工厂
23、类,项目dspProcessing被引入了。在目前的应用中,被打包在插件aqses短回波时间MRS数据的定量分析的方法被开发。但因为热点是灵活的,它很容易创建一个完全不同的新的加工方法。4、处理短回波时间MRS数据的应用 在这一部分,必须尽力扩展以及展示框架的使用。例如,用户可以扩展该框架来加载新的文件格式,实现新的预处理方法或实施新的加工方法。这意味着它们应该提供一个与Java或可连接到Java的框架热点实现的插件以及为每个插件的列表文件。为了说明这个应用程序提出了新的方法在时域处理短回波时间MRS信号12,13。该方法通过使用包含一个数据库规定的先验知识在体外测量模型溶液的信号,在MRS时
24、域信号被装配由一个总和的体外代谢物的时域信号(在相同实验条件下获得的),并与样条曲线构成的基线调整。体外代谢信号的调整模型是通过频率、阻尼、相位和幅度参数共同作用的。这些参数之间的先验知识可以加进去。在一个数学公式内测量得到的MRS时域信号的长度M Y满足半参数模型。 (1)其中是数据库中的代谢物的振幅和更正数据库信号的未知参数。非参数项b(t)表示的基线,这是未知的大分子组分中不存在的代谢产物在数据库中访问产生的影响。w(t)是指在残留的水组分和表示噪声。非参数基线的刚度由正则化参数决定。所得到模型的参数的值通过非线性最小二乘算法(列文伯格 - 马夸尔特)来确定。广义交叉验证测试法用来确定最
25、好的偏见方差的权衡法。此外,残留的问题是处理在优化阶段14包含一个最大相位FIR滤波器。该方法将对每种代谢物的相位、振幅、阻尼和频率的校正进行计算。这些校正显示的结果面板上(参见图6)。此外,CramerRao下界适用于半参数非线性回归12,是用来取得学位的量化参数的不确定性。代谢物时域信号被存储在可以通过数据库编辑器创建和操纵的应用程序的数据库中,该方法封装在aqses插件中。实际的代码进行量化的数据是用Fortran 77编写的,并存储在一个共享库中。此代码是与平台相关的,已被编入Windows和Linux,因此使得应用程序依赖于平台。Fortran语言是一个较旧的语言,并且包含了广泛而行
26、之有效的数学库。出于这个原因也出于计算效率的原因,该方法需在Fortran 77上的实现。通过Java本地接口(JNI),并用C语言编写的接口,Fortran库与Java代码在插件中相连接。需要执行的工作量将在下一部分中展示。4.1、子框架dspSystem的实例 在子框架dspSystem中,整合AQSES方法需要具体列出以下五个热点: dspSject.Template, dspSject.Result, dspScessing.ProcessingMethod, dspScessing.ProcessingMetho
27、dFactory, dspSystem.io.DSPResultIO.Fig. 6 The result pane of the GUI. This panel becomes visible when there are results available for a MRS project. The contents of the panel is determined by the processing method. In our case that is the method AQSES.对应的实现是: aqses.system.AqsesTemplate, aqses.system
28、.result.AqsesResult, aqses.system.AqsesMethod, aqses.system.AqsesFactory, aqses.system.io.AqsesResultIO.对之后的条目添加插件aqses的清单文件: InitSystem: aqses.system.Init, dspProcessing: aqses.system.AqsesFactory第一个条目指定的类来初始化插件aqses的系统层,在初始化过程中的应用将决定它的运行平台和正确的复制共享库到工作目录中。通过这种方式可以使应用程序独立于Linux和Windows平台。第二个条目定义了在集成
29、dspSystem子框架工厂类时必要的方法。4.2、子框架dspGUI的实施为了在一个框架中完全整合的其方法,也需要从框架dspGUI实现热点。如果这些热点不落实,处理方法也不会通过图形用户界面可用的。但这可能发生在某种情况下,即该方法能够通过其他插件是唯一可访问的。该方法将执行以下热点: dspGUI.processing.ProcessingGUIMethod, dspGUI.processing.ProcessingMethodGUIFactory, dspGUI.result.resultPanel.对应的实现是: aqses.gui.AqsesGUIMethod, aqses.gui
30、.AqsesGUIFactory, aqses.gui.result.AqsesResultPanel. 下列条目是添加到aqses插件的文件: InitGUI: aqses.gui.Init, dspProcessingGUI: aqses.gui.AqsesGUIFactory子框架dspGUI可以通过工厂类aqses.gui.AqsesGUIFactory的实例来创建必要的类。当用户选择的处理方法,该框架将找到正确的工厂类,调用方法来初始化它,然后得到它需要在GUI中整合的方法中的组成部分。5、成果5.1 硬件和操作系统一般多媒体个人电脑对于开发和测试的框架的使用,所使用的操作系统是Wi
31、ndows98、Windows 2000、Windows XP以及Linux发行版的Redhat9.0、Fedora Core 2、Mandrake 9.2、Mandrake 10和Gentoo。个人电脑需要的配置,下面已经作为例子给出了: System model: Dell OptiPlex GX150; Operating system: Windows 2000; CPU: Pentium III 1 GHz; GPU: NVIDIA RIVA TNT2 Pro; Hard disk: 20 GB; Memory: 512MB. 5.2、软件所有的软件在网上都是可以免费下载的,下面列出
32、需要的工具: The Java 2 Platform, Standard Edition (J2SE). 这是由Sun公司提供的,并提供Java环境来运行和开发Java应用程序。至少需要使用1.4版本的框架。目前使用的版本是1.4.218。 Eclipse SDK, 这是一个开源的Java IDE。目前使用的版本是2.1.321。 Eclipse UML plug-in Omondo. 这个插件使得它可以同时与UML图和Java代码的工作。目前使用的版本是1.2.122 g77 and gcc. 这是GNU Fortran 编译器和GNU C 编译器, 这些编译器用于创建共享库,有Window
33、s和Linux操作系统的版本. 目前在Linux上使用的版本是3.3.3,在Windows上使用的版本是3.3.123。5、 结论一个免费的开源框架已经在本文中给出,它允许开发人员和研究人员能够更在其方法的设计和实现下更多的功夫,并且把它打包在一个软件工具中。它还允许重用很多代码来实现新的应用。在将来的,可用插件的数量将增长,因而框架将更加完善以及强大。通过使用插件系统,当应用程序启动时有一个小的要求,所有不同的插件必须被定位、初始化以及载入。但它允许开发者动态地改变框架,以使得它更加灵活。在该框架中,模板可以用于存储设置和自动执行处理数据。通过使用模板,可以做一个简单的图形用户界面,几乎没有
34、设置,而不丢失任何功能或任何会让图形用户界面复杂的设置。用这种方式,图形用户界面可以适合于该框架的用户。该框架将将在OSI批准的开源许可24中是可用的。这将激励人们创建自己的方法和插件,框架自身是由Java语言编写的并且是平台是独立的。正如应用程序中所示,用户还可以选择其它编程语言的嵌入代码,这将使应用程序与平台相关。然而,通过检查平台以及加载正确的共享库仍可以维护应用程序,Windows和Linux之间的平台无关性。致谢:Dr. Sabine Van Huffel is a full professor at the Katholieke Universiteit Leuven, Belgi
35、um. Research supported by Research Council KUL: GOA-AMBioRICS, several PhD/postdoc & fellow grants; Philippe Lemmerling was a postdoctoral fellow of the Fund for Scientific Research, Flanders (Belgium)(F.W.O.-Vlaanderen). Flemish Government: FWO: PhD/postdoc grants, projects, G.0269.02 (magnetic
36、 resonance spectroscopic imaging), research communities (ICCoS, ANMMM).PhD grants provided by IWT. Belgian Federal Government:DWTC (IUAP IV-02 (19962001) and IUAP V-22 (20022006)dynamical systems and control: computation, identification & modelling); EU: BIOPATTERN (contract no. FP6-2002-IST 508
37、803), eTUMOUR (contract no.FP6-2002-LIFESCIHEALTH 503094), and HealthAgents (contract no. FP6-2005-IST 027213).参考文献:1 J.A. Stanley, D.J. Drost, P.C. Williamson, R.T. Thompson, Theuse of a priori knowledge to quantify short echo in vivo 1HMR spectra, Magn. Reson. Med. 34 (1) (1995) 1724.2 S.W. Proven
38、cher, A constrained regularization method forinverting data represented by linear algebraic or integralequations, Comput. Phys. Commun. 27 (1982) 213227.3 LCModel Software Package.http:/www.s-4 A. Naressi, C. Couturier, J.M. Devos, M. Janssen, C. Mangeat,R. de Beer, D. Graveron-Demilly, Java-based g
39、raphical userinterface for the MRUI quantitation package, MAGMA 12(2001) 141152.5 MRUI software package. http:/carbon.uab.es/mrui.6 L. Vanhamme, A. van den Boogaart, S. Van Huffel, Improvedmethod for accurate and efficient quantification of MRS datawith use of prior-knowledge, J. Magn. Reson. 129 (1
40、999) 3543.7 H. Ratiney, M. Sdika, Y. Coenradie, S. Cavassila, D. vanOrmondt, D. Graveron-Demilly, Time-domainsemi-parametric estimation based on a metabolite basis set,NMR Biomed. 18 (1) (2005) 113.8 M.E. Fayad, D.C. Schmidt, R.E. Johnson, Building ApplicationFrameworks, Wiley, 1999.9 M.E. Fayad, D.
41、C. Schmidt, R.E. Johnson, ImplementingApplication Frameworks, Wiley, 1999.10 R.E. Johnson, B. Foote, Designing reusable classes, J.Object-Oriented Program. 1 (2) (1988) 2235.11 Eclipse Plug-in Architecture./articles/Article-Plug-inarchitecture/plugin architecture.html.12 D. Sima, S. Van Huffel, Regularized semiparametric modelidentification with application to NMR signal quantificationwith unknown macromolecular baseline, J. R. Stat. Soc. Ser. B68 (
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论