NMR(核磁共振)仪器控制软件开发-基于DRAW2D的FID图和Spectrum图处理-毕业论文_第1页
NMR(核磁共振)仪器控制软件开发-基于DRAW2D的FID图和Spectrum图处理-毕业论文_第2页
NMR(核磁共振)仪器控制软件开发-基于DRAW2D的FID图和Spectrum图处理-毕业论文_第3页
NMR(核磁共振)仪器控制软件开发-基于DRAW2D的FID图和Spectrum图处理-毕业论文_第4页
NMR(核磁共振)仪器控制软件开发-基于DRAW2D的FID图和Spectrum图处理-毕业论文_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科毕业论文(科研训练、毕业设计)题 目:NMR(核磁共振)仪器控制软件开发基于DRAW2D的FID图和Spectrum图处理姓 名:学 院:软件学院系:软件工程专 业:软件工程年 级: 学 号:指导教师: 职称: 年 月摘要核磁共振产生的脉冲序列在时间域上的响应函数,被称为FID(自由感应衰减)信号。在计算机屏幕上,模拟FID信号得到的图形,称为FID图形。用计算机对FID信号,进行傅立叶变换,可以得到频率域的核磁共振谱。在计算机上,模拟核磁共振谱得到的图形,称为Spectrum图。如何高效的显示和处理FID图和Spectrum图,一直是核磁共振谱仪研制中的一个难题,因为FID图和Spectrum图的结构非常复杂,它们又包含了坐标轴和网格等子图。另外为了提高用户与图形之间的交互性,又需要FID图和Spectrum图具有高效的处理用户事件的能力。本文的主要目的就是为了解决如何高效的显示和处理FID图和Spectrum图。为了实现这一目标,本文对FID图和Spectrum图做了详细的需求分析。在此基础上,本文运用JAVA的最新技术DRAW2D,架构了FID图和Spectrum图的层次结构,用DRAW2D库设计了FID图和Spectrum图的类图,这为显示和处理FID图和Spectrum图提供了基础。另外,为了高效的显示和处理FID图和Spectrum图,提高用户和图形之间的交互性,本文介绍了几种矢量数据压缩算法,并设计和实现了一种新的矢量数据压缩算法。为了让FID图显示在屏幕上,本文实现了用户坐标系与设备坐标系的转换。本文还简单的介绍了整个项目的需求分析和模块划分,对FID图和Spectrum图处理过程中用到的JAVA最新技术SWT,JFACE, RCP, DRAW2D,SVN也作了简单的介绍。关键词:核磁共振; FID; Spectrum; DRAW2D; 矢量数据压缩算法AbstractThe response function which The NMR(nuclear magnetic resonance) produces in the time domain is called FID (Free Induction Decay) signal. The graph which we simulate the FID signal on the computer screen is called FID graph. By computer, we carries on the Fourier transformation to the FID signal, then we can obtain the spectrum of the nuclear magnetic resonance in the frequency domain. On the computer, the graph which we simulate the spectrum is called the Spectrum graph. How effectively display and process the FID graph and the Spectrum graph is always a difficult problem in nuclear magnetic resonance spectrometer development, because both the FID graphs structure and the Spectrum graphs structure are extremely complex, they have contained subgraphs such as coordinate axis graph and grid graph. Moreover in order to enhance the communion between the user and the graph, the FID graph and the Spectrum graph needs to have the ability that can effectively process the users event.This thesiss main purpose is to solve the problem that how can we effectively display and process the FID graph and the Spectrum graph. In order to achieve this goal, this thesis has made the detailed demand analysis to the FID graph and the Spectrum graph. In this foundation, this thesis utilize JAVAs newest technical DRAW2D to build the hierarchical structure of FID graph and the Spectrum graph, and design the class diagrams of FID graph and the Spectrum graph. It provides the foundation of how to demonstrate and process the FID graph and the Spectrum graph. Moreover, in order to effectively demonstrate and process the FID graph and the Spectrum graph, and enhances the interaction between the user and the graphics, this thesis introduces several kinds of vector data compression algorithm. In addition to that,it designes and implements a new kind of vector data compression algorithm. In order to display the FID graph and the Spectrum graph on the screen, this thesis implements the transformation between the user coordinate system and uquipment coordinate system.This thesis also simply introduces the demand analysis and the module division of the entire project, Moreover, this thesis makes a simple introduction of JAVAs newest technology such as SWT, JFACE, RCP, DRAW2D that we use during the process of FID graph and the Spectrum graph.Key words:NMR; FID; Spectrum; DRAW2D; VDCA(Vector Data Compression Algorithm)目录第1章 引言11.1 课题背景及研究意义11.2 本文工作内容1第2章 系统开发环境32.1 本文开发环境32.1.1 开发工具介绍32.1.2 其他52.2 JAVA新技术简介52.2.1 SWT52.2.2 JFACE72.2.3 RCP72.2.4 DRAW2D8第3章 系统设计113.1 需求分析113.2 系统流程图123.3 系统模块划分123.3.1 系统模块的定义123.3.2系统模块的关系153.4 使用RCP开发系统界面16第4章 FID图和Spectrum图处理244.1 需求分析244.1.1 FID图的定义244.1.2 Spectrum图的定义244.1.3 图形(FID图、Spectrum图)基本操作254.1.4 坐标系转换264.1.5 矢量数据压缩算法284.2 功能要求344.2.1 FID图处理的功能需求344.2.2 Spectrum图处理的功能需求384.3 使用DRAW2D搭建图形框架394.4 详细设计404.5 模块实现44第5章 总结47致 谢48参考文献49Contentschapter 1. Introduction11.1 Backgrounds and research significance of this thesis11.2 Contents of this thesis1chapter 2. System development environment32.1 Development environment of this thesis32.1.1 Introduction of development kits32.1.2 Other conditions52.2 Introduction of newest JAVA technologies52.2.1 SWT52.2.2 JFACE72.2.3 RCP72.2.4 DRAW2D8chapter 3. System design113.1 Software demand analysis113.2 System flow chart123.3 Software module division123.3.1 Definition of system modules123.3.2 Relationship of system modules153.4 Software surface design by RCP16chapter 4. FID graph and Spectrum graph processing244.1 Analysis of software demand244.1.1 Definition of FID graph244.1.2 Definition of Spectrum graph244.1.3 Basic processing of graph254.1.4 Transformation of Coordinate system264.1.5 Vector data compression algorithm284.2 Function request344.2.1 Function request of FID graph344.2.2 Function request of Spectrum graph384.3 DRAW2D framework394.4 Detailed designment404.5 Realization of this module44Chapter 5. Conclusions47Acknowledgements48References49NMR(核磁共振)仪器控制软件开发基于DRAW2D的FID图和Spectrum图处理第一章 引言1.1 课题背景及研究意义核磁共振技术早期仅限于原子核的磁矩、电四极矩和自旋的测量,随后则被广泛地用于确定分子结构,用于对生物在组织与活体组织的分析、病理分析、医疗诊断、产品无损检测等诸多方面。还可以用来观测一些动态过程(如生化过程、化学过程等)的变化。其突出优点有:速度快、绿色环保、对操作人员的健康没有影响。核磁共振的基本原理是:是将物质放在特殊的磁场中,用无线电射频脉冲激发物质内的原子核,引起原子核共振,并吸收能量。在停止射频脉冲后,原子核按特定频率发出射电信号,并将吸收的能量释放出来,被体外的接受器收录,经电子计算机处理获得图像。通过对图像的分析,可以获取物质的相关性质。为贯彻落实国家中长期科学和技术发展规划纲要( 2006-2020 年),提升国产科学仪器设备的市场竞争力,增强科研自主装备能力,有效支撑我国科技自主创新和经济社会发展,2006年初科学技术部向全国各界征集“十一五”科学仪器研究开发项目建议。科技部共收到842份建议,经充分凝练,召开20多次会议征求300多位专家意见,历时十个月,最后确定“十一五”前三年精选13个课题为重点攻关内容,“300MHZ500MHZ核磁共振波谱仪的研制”为其中之一。该课题目标是:“从自主创新研究核磁共振波谱仪核心技术入手,发展核磁共振应用软件,系统集成核磁共振波谱仪,建立国家核磁共振波谱仪研制平台,提高和增强核磁共振及相关领域的持续创新能力和国际竞争力。”目前,国家在该领域的研究仍然属于空白,国内核磁共振领域的研究都是依赖国外几家大厂商生产的核磁共振设备。尽管我国已进口350多台谱仪,总价值超过一亿美元,却依旧远远无法满足科研需求,这种局面显然已成为自主创新的桎梏,这种局面显然已成为自主创新的桎梏,迫切需要在国家中长期科学和技术规划纲要指引下探询一条实现核磁共振谱仪研-学-产相结合的道路,实现核磁共振谱仪自主创新与集成。1.2 本文工作内容本论文以核磁共振控制软件的开发为背景,讨论如何高效的显示和处理FID图和Spectrum图的难题。本文一共有5章,第1章为引言,介绍了项目的背景和研究意义;第2章概述了系统的开发环境,并且对本文使用的JAVA最新技术:SWT、JFACE、RCP、DRAW2D和SVN做了一个简单的介绍;第3章分析了核磁共振控制软件的系统需求和模块划分,简单的介绍了整个项目;第4章是本文的重点,分析和研究了FID图和Spectrum图的显示和处理过程,用DRAW2D技术分析了FID图和Spectrum图的图形层次,并且用这项技术实现了对FID图和Spectrum图的显示和处理。为了能高效的显示FID图和Spectrum图,本文第4章介绍了矢量数据压缩算法,它主要用于对FID数据进行压缩。另外,为了能够让FID图和Spectrum图显示在屏幕上,第4章还介绍了如何在用户坐标系和设备坐标系之间的转换。本文第4章将通过需求分析,功能需求,使用DRAW2D搭建图形框架,详细设计,和模块实现5个小节来说明FID图和Spectrum图的实现;第5章总结了本文遇到的难题和解决方案。本文通过上述5章内容,解决了如何高效的显示和处理FID图和Spectrum图的难题。第二章 系统开发环境2.1 本文开发环境2.1.1 开发工具介绍这次项目使用的开发工具是Eclipse 3.31,下面对Eclipse做一个简单的介绍。Eclipse最初是由IBM捐献给开源社区的,目前已经发展成为人气最旺的JAVA IDE。Eclipse插件化的功能模块吸引了无数开发者开发,他们利用Eclipse来开发功能插件。事实上,Eclipse已经超越了一般JAVA IDE的概念。Eclipse是一个平台,一个开放的平台,你可以为Eclipse添加任何你想要的功能,比如播放音乐,观看电影,聊天这些不是天方夜谭,而是已经实现的事实。虽然Eclipse可以添加很多附加功能,可以编辑C/C+,可以编辑Word文件,可以开发UML等等,但是Eclipse最基本,也是最强大的功能还是JAVA IDE。因为本文采用了RCP开发技术,而RCP项目开发要依赖Eclipse的基本结构和基本组件,如果不了解Eclipse的基本架构,将无法开展RCP插件项目开发。所以在这里介绍一下,Eclipse的基本结构和基本组件如图2-1。图2-1 Eclipse基本架构如图2-1所示,下面将逐一介绍各个组件,这些组件在项目中都要使用到: Menu bar:菜单栏。Eclipse的菜单栏是动态的,也就是说,根据所编辑的内容不同,显示的菜单也可以不一样。 Tool bar:工具栏。和菜单栏一样,如果工具栏编辑的内容不同,则显示的工具也将不同。 Editor:编辑器。Eclipse的主要编辑工作是在Editor里面完成的。需要注意的一点是Editor并不就是指文本编辑器,它可以根据用户的需要自己设计。例如,在本次项目中,图形的编辑工作都是在编辑器里完成的。View:视图。视图是为了方便用户操作,它提供了一些辅助功能,例如在视图里可以编辑属性。比如最常见的Outline(大纲)视图往往用来提供当前编辑文档的结构。值得注意的一点是,视图也可以拥有自己的菜单栏和工具栏。例如,本次项目的Layer视图(Layer视图用于管理图形的层次),它就具有“增加图层”,“删除图层”,“锁定图层”和“选择图层”等一些操作。Page:页。一个页用于表示当前用户的工作状态,它包括View和Editor。Eclipse提供了获取当前活动页的方法:Activator.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().通过上述方法,可以获取当前活动页。另外,可以通过当前页获取当前View和Editor,这样就可以操作View和Editor。Workbench Window:工作台窗口。工作台窗口涵盖所有上述组件。Eclipse允许创建多个工作台。可以通过Window-New window菜单,创建当前工作台的副本。除了上述介绍的几个组件外,这里再介绍Eclipse的另外两个概念,因为它们不仅关系到Eclipse的运行状况,而且与本次的项目开发也有着密切的关系。其中的一个概念是“Work Space”,在Eclipse启动的时候都要求指定一个Work Space,而且Work Space是不能被共用的。也就是说在同一时间,同一个Work Space只可以被一个Eclipse使用。但是一个Work Space是可以被多个Workbench Window共享的。很容易联想到,Workbench Window上面还有一层Workbench。事实上Workbench才是Eclipse的UI的最高管理者。Work Space在Eclipse项目部署和启动的时候,意义比较重大。另外一个概念是“Perspective”,中文翻译是“透视图(或者观察点)”。所谓Perspective是指当前Page的布局。最常见的是JAVA透视图和Debug透视图,可以看到这两个透视图的Page布局完全不一样。通过切换透视图可以很方便的切换开发环境以完成不同功能的开发。这里可以看出View和Editor的区别,Editor是在不同的透视图中共享的,而View不是。2.1.2 其他(1)开发语言:JAVA JDK1.6.0JDK1.6在性能和质量上,比JDK1.5有了比较大的提高。(2)开发平台:Windows XP;Linux (3)开发使用的插件:GEF-ALL-3.3RC,Subclipse-1.2.4GEF-ALL-3.3RC插件,包含了org.eclipse.DRAW2D_3.2.100.v20070529.jar,提供了DRAW2D开发所需要的所有类。Subclipse-1.2.4插件,主要用于项目开发过程中的版本管理。(4)软件建模:EclipseUML2007(5)软件管理:IBM Rational ClearCase(6)性能测试:IBM Rational Quantify(7)团队开发: SVN. Subversion2 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。这些数据放置在一个中央资料档案库 (Repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。SVN具有以下几个特色:目录、重命名以及文件元数据都被标示了版本;提交具有真正的原子性;SVN比CVS有更高的性能;SVN的分支(Branching)与标记(Tagging)操作是轻量级的。本文使用SVN来进行团队开发和版本控制。2.2 JAVA新技术简介2.2.1 SWTSWT是IBM开发一套跨平台的GUI开发框架。本文为什么用SWT来创建GUI,而不用Sun创建的AWT呢? AWT存在LCD(最小公分母方法)问题,LCD问题导致了它失去主要的平台特性,它只会使用为所有 JAVA 主机环境定义的 GUI 组件。换句话说,如果平台A有窗口组件140而平台B有窗口组件2025,那么这个跨平台的AWT框架只能提供这两个集合的交集,即2025。为了解决AWT存在的问题,Sun又创建了SWING组件,SWING 是在 AWT 组件基础上构建的,SWING只为诸如窗口和框架之类的顶层组件使用对等体,大部分组件(JComponent 及其子类)都是使用纯 JAVA 代码来模拟的。因此,SWING 通常看起来并不像是本地程序。SWING应用程序仍然存在它们本地配对物所没有的性能问题,而且,SWING应用程序消耗了太多的内存,故不适合用于PDA和移动电话等小型设备。IBM为了解决AWT/SWING存在的问题,创建了新的GUI库叫做SWT,它解决了AWT和SWING框架中的问题。SWT框架使用JNI访问本地窗口组件(Native Widgets),如果一个窗口组件在主机平台上不能获得,那么SWT会模拟这个不能获取的窗口组件。Display, Shell和Widgets是一个SWT应用程序的基础材料。Displays用于管理事件循环(Event Loops)和控制UI线程和其他线程之间的通讯。Shell是应用程序中由操作系统窗体管理器来管理的窗体。任何SWT应用程序都需要至少一个Display实例和1个或更多的Shell实例3。图2-2显示了SWT中基本元素之间的关系。图2-2 不同视角看SWT程序图2-2说明了一个SWT应用程序的不同看法。最左边的子图是简化的UI对象的继承图。中间的那副子图是UI对象的包含结构图。第三幅图就是创建了的UI图。使用SWT使得用户可以直接获得各种组件,并如愿的将它们定位和设置。不必担心最终用户的操作系统如何,当在应用程序中加入一个按钮,它就会在Windows中表现得如同Windows的按钮,在Mac中如Mac的按钮,当然在Linux中亦是如此。用户会认为这是为他们的机器定制,而他们并不清楚事实上仅用SWT写了一遍代码。2.2.2 JFACE为避免一遍遍地使用SWT来写重复的代码,Eclipse的设计者用Eclipse工作台产生了JFACE。这个类库提供大量的快捷方式以削减因单独使用SWT而大量耗费的时间,但另一方面,JFACE不能完全取代SWT。JFACE包含了以下4个大类:第一个也是广为使用的大类包含有Viewer(阅读器)类。在SWT中,一个GUI组件的信息和外观通常是被绑定在一起的。然而,Viewer将这些方面分离了,并允许在不同的表单中使用相同的信息。例如,在SWT中的树的信息是不能被从树对象中分离出来的,但是在JFACE的一个树阅读器中的相同信息却可以在一个表阅读器或是列表阅读器中显示。第二个大类包含有动作和实施,即Action类。这些适配器简化了事件的处理,并将处理用户命令的反应,从引发那种反应的GUI事件中分离出来。这一点可以通过实例得以很好地说明。在SWT中,如果有四个不同的按钮都是去关闭一个对话框的,那么你必须要写上四遍不同的事件处理规程(代码)即便它们完成相同的结果。在JFACE中,这四个规程可以整合在一个动作(Action)中,然后JFACE可以自动会将这四个按钮作为该行为的实施者。第三大类包含有图案和字体的注册。在SWT中,以最小的分配方式保持字体和图案的内存资源是相当重要的,字体和图案都在消耗操作系统的资源。但是由于有了JFACE的注册机制,这些资源可以按需分配和释放。因此如果使用多个的图案和字体,不必关注如何地手工回收垃圾.最后一个大类包含有JFACE的对话框和向导。这一些由于它们拓展了SWT对话框的能力,应该是最容易能够被理解的。JFACE提供的对话框可以展示信息、提示错误、显示某一过程的进度,额外的,JFACE还提供了一组特别的对话框称为:向导。向导指引着用户完成一组任务,如:安装软件或是设置一个输入文件等。2.2.3 RCP RCP的全称是Rich Client Platform,可以把它看成是Eclipse的骨架,其他的插件是器官与血肉。可以把这个骨架拿过来填入自己的器官和血肉,这样就创造了自己的“Eclipse”! 使用RCP来开发JAVA桌面应用可以把开发的焦点转移到系统的逻辑功能上,而不是界面上。自己的程序可以继承Eclipse的风格与功能,而不用自己去编写诸如菜单,工具条,子窗口等等的界面元素。甚至可以把Eclipse本身的功能插件,比如Console拿来放在自己的程序里,这样就避免了很多重复开发。 Eclipse提供了一些RCP程序的模板,通过PDE的插件创建向导能直接生成一个可用的RCP程序。可以通过模板Hello RCP创建一个简单的RCP程序。通过这个简单的模板,可以研究RCP应用程序的基本结构。RCP应用程序的结构都包含6个基本类和3个配置文件,因为这些元素在插件的运行过程中起着非常重要的作用,另外在本项目中也要用到这些类,所以下面解释一下这些元素: (1)Application4:这个类是程序的入口,虽然没有Main函数,但是这个类实现了IPlatformRunnable接口,当JVM完毕,初始化RCP框架以后会调用这个类的run函数来完成UI设置和开始执行指定的程序功能。在绝大多数RCP程序中,这个类不用更改。 (2)ApplicationActionBarAdvisor4:简单的说这个类是用来配置程序的菜单栏和工具栏的。 (3)ApplicationWorkbenchAdvisor4:这个类是RCP程序的Workbench,RCP是Eclipse的简化,但是所有的组件都是和Eclipse一样的。一个RCP程序也只能有一个Workbench。 (4)ApplicationWorkbenchWindowAdvisor4:这个类是RCP的WorkbenchWindow,隶属于当前的Workbench。可以有多个WorkbenchWindow。 (5)Activator:这个类代表本次创建的插件,因为RCP程序也是一个插件,Eclipse中所有的插件都必须继承AbstractUIPlugin。这个类提供了很多和插件相关的信息,比如插件的资源,配置等等。 (6)Perspective:是新建的RCP程序的默认透视图。可以在这个类中指定View和Editor的布局。 (7)plugin.xml:这个文件是插件的配置文件,该文件描述了程序使用的插件,以及具体是怎么配置这些插件的等等。 (8)perties:这个文件用来配置插件的编译信息,用于指定JVM是如何编译插件的。 (9)MANIFEST.MF:这个文件用来指定插件的元数据,比如插件的版本信息。一般来说,这个文件不用手动的去更改。2.2.4 DRAW2D DRAW2D5是SWT平台上的图形库,可以用它定制属于自己的、不依赖于特定操作系统本地组件的上层组件;也可以用它开发基于图形的应用程序。DRAW2D库依赖于SWT(不依赖JFACE),提供了完整的图形应用程序开发包,使用它几乎可以作出任意的图形,但是除了简单的几何图形以外,任何图形都需要自己手绘、或者用已有的图形进行组合;另外DRAW2D不支持对各种事件的响应,所以如果要让图形能够处理事件,必须自己添加代码,这样虽然麻烦一点,但增加了图形处理的灵活性。DRAW2D的基本结构如图2-3。图2-3 DRAW2D基本结构DRAW2D 通过被称为LightWeightSystem(以下简称LWS)的部件与SWT 中的某一个Canvas 实例相连,这个Canvas 在DRAW2D 应用程序里一般是应用程序的Shell,在界面上虽然看不到LWS 的存在,但其他所有能看到的图形都是放在它里面的,这些图形按父子包含关系形成一个树状的层次结构。LWS 6是DRAW2D 的核心部件,它包含三个主要组成部分:(1)RootFigure。 RootFigure是LWS 中所有图形的根,也就是说其他图形都是直接或间接放在RootFigure 里的。(2)EventDispatcher。EventDispatcher把Canvas 上的各种事件分派给RootFigure,这些事件最终会被分派给适当的图形,要注意的是这个RootFigure 和应用程序中最顶层的IFigure 不是同一个对象,前者是看不见的被LWS 内部使用的,而后者通常会是一个可见的画布,它是直接放在前者中的。(3)UpdateManager用来重绘图形,当Canvas 被要求重绘时,LWS 会调用它的performUpdate()方法。LWS 是连接SWT 和DRAW2D 的桥梁,利用它,不仅可以轻松创建任意形状的图形(不仅仅限于矩形),同时能够节省系统资源(因为LWS是轻量级组件)。第三章 系统设计3.1 需求分析NMR7(Nuclear Magnetic Resonance)仪器控制软件是300Hz500MHz超导核磁共振谱仪系统的随机软件,它用于对谱仪进行控制,完成NMR实验设计、采样、数据处理及仪器和用户管理。NMR系统设计的主要目标是:(1)实时准确灵活的控制谱仪硬件(2)丰富易用的实验设计(图形化脉冲序列设计)。软件要求具有图形化的脉冲序列设计界面,支持硬脉冲、软脉冲、梯度脉冲、组合脉冲、自定义脉冲波形等,支持顺序、随机、条件、循环等脉冲执行次序。脉冲源文件以文本方式保存,软件必须支持手工对脉冲源文件的编辑。软件要提供脉冲序列执行结果模拟。(3)强大易用的数据处理(达到现有的商业化NMR数据处理软件水平)(4)跨平台(Windows、Linux和Unix)(5)人性化的用户界面。界面风格国际化,支持多语言(中、繁、英等)显示、输入(标注)、打印(输出),支持语言、皮肤(风格样式)切换。软件的开发流程要求模块化,并且要严格遵循软件工程的基本原则,要有严格、完整、及时更新的软件详细设计文档。采用工业标准的菜单,键盘和鼠标操作,用户界面友好,具有较好的操作性和较高的智能化。对谱仪硬件有完善的控制能力,具有方便的脉冲序列设计功能。软件的设计必须时时注意可扩展性、简单性、易读性、高效性的原则,要为软件开发过程中不断出现的新要求、新问题做出足够的准备。要实行过程控制,开发过程实时监督,不断安排进行检测。各个模块可以独立同时进行,也可以按先后顺序进行开发,但必须时时注意各个模块间的协调。3.2 系统流程图核磁共振控制软件的系统流程图,如图3-1。图3-1 系统流程图3.3 系统模块划分3.3.1 系统模块的定义 (一) 仪器控制模块,具体要求如下:(1)开发仪器状态检测与监控模块(仪器控制的动态部分,需要计算机实时控制)。通过通讯模块来实现仪器状态的传输与控制,如探头温度的检测、控制与保护,采样的启动、脉冲序列的发送、采样信号的检测,样品的弹出、弹入,气路控制。(2)开发仪器硬件参数设置模块(仪器控制的静态部分,一次设置后,仪器自动完成后续功能。通过通讯模块进行某些硬件参数的设置,包括某些硬件的开关设置,如梯度场线圈的打开与关闭,探测通道的选择,探头温度的设置。(3)开发脉冲序列设计模块。要提供足够函数功能来完成对仪器的一切可能的控制,包括:各种RF脉冲激发(硬脉冲、软脉冲,各种轮廓脉冲),梯度脉冲的激发,信号采集,时间等待。采用JAVA语言作为脉冲序列的描述语言。(4)开发匀场、锁场操作模块。要具有自动匀场(包括梯度自动匀场)、自动锁场的功能。(5)扩展Eclipse自带的脚本解释器,解释命令行。(二) 通讯模块,具体要求如下:(1)开发数据传输协议模块。定义客户端与服务器端数据传输的协议。(2)定义通讯传输数据结构,与数据池访问模块相配合。(3)研究基本Linux、Windows平台下通讯能力的问题,着重解决实时性、稳定性、容错性、抗干扰的问题。(4)构建基于JAVA平台的网络传输构架,着重检测网络通讯的实时性、稳定性、容错性、抗干扰的问题。(5)模块的复杂度视仪器的数字化和智能化水平而定,但总的目标是要封装整个仪器的硬件特性,实现仪器硬件和计算机虚拟仪器之间沟通的桥梁。(三) 基本数据处理模块,具体要求如下:(1)实现对1D和2D谱的完全处理能力,包括傅氏变换、差谱、相位矫正、半自动和手工基线校正、峰积分、相加减。(2)实现在时域和频域对2D谱进行剪辑变换,均衡变换、旋转、投影。(3)1D谱(组)的峰拟合。(4)计算信噪比。(5)化学位移定标。(6)驰豫分析。(7)参考去卷积。(8)研究、收集所需各种算法或现有源代码,可采用独立模块,不限于JAVA语言,但需要某种接口方式。(四) 界面框架模块,具体要求如下:(1)作为主框架模块,需要调度所有其它模块的线程。(2)采用工业标准的菜单,键盘和鼠标操作,用户界面友好,具有较好的操作性和较高的智能化。(3)整个软件界面将参照VNMRJ操作界面,软件初具规模后其界面框架可选择性进行差异化处理,以避免界面过于雷同而引起问题。具有如下几块主要工作区:菜单栏 (所有功能均可以在菜单栏中实现)工具栏(可动态变化)文件浏览器 (实验数据文件列表)脉冲序列库列表硬件设置栏(温度设置、匀场设置、锁场设置)图形输出设置按钮命令行输入栏作图区(FID显示、谱显示、脉冲序列显示、匀场显示、锁场显示)操作控制区简要信息输出栏(4)要有帮助索引(五) 数据输出模块,具体要求如下:(1)存储采集的原始数据,包括1维FID、2维FID。(2)存储变换后的数据,包括1D、2D谱数据。(3)存储脉冲序列文件,仪器设置参数文件。(4)存储其它需要输出的数据,包括图形文件(提供矢量化的图形文件)、拟合的数据。(5)存储临时文件,采样、变换、计算过程中需要存储的各式数据。(6)具有很方便的图形打印功能。(7)读写匀场信息文件。(六) 图形模块,具体要求如下:(1)实现脉冲序列的图形化设计模块。(2)创建和制作strip图,投影和重叠图。(3)提供大量的函数用来创造和显示2D等高线图、堆积谱、3D网格图,堆图和光栅图。(4)剪切谱的某个区域、将图谱的全部或者一部分放大并按原有的格式输出,或者以gif,pdf和postscript格式输出,以便在web浏览器中显示,可对放大区域进行调平。(5)用文字、数字和希腊字母对峰进行注释,具有增强的峰注释功能。(6)先进的报告生成系统:用户可以方便地将图谱、结构、峰列表和化学位移分配表复制、粘贴到字处理文件中。(7)自动谱图处理。(七) 扩展的数据处理模块,具体要求如下:(1)提供各种格式数据的相互转换功能,支持多种仪器文件格式(Bruker,Varian,JEOL,NMRPipe,NUTS,Felix,JCAMP,Galactic,Triad,NMR-Compass)的读取和转换。(2)处理、调相(rephase)和显示多维数据,包括MEM和LP重构。(3)对1D到2D数据的快速和有效的自动峰检测,运用网格智能化(Grid-Intelligence)等多种精密方法进行峰的筛选,提取化学位移和其他波谱参数,同时去除噪声干扰峰、合并峰位、确定多重峰的中心,还可以手工添加、删除及合并峰。(4)广泛的线形拟合功能,包括虚3D数据的直接拟合,比如驰豫系列,J调制系列。(5)可以对1D和2D谱进行两种类型的线性预测。(6)按任何指数函数进行拟合。(7)建立波谱、化合物结构、峰列表和化学位移分配表的用户数据库,方便了用户的浏览、搜索和比较。可以导入第三方波谱数据库的波谱、分子式、峰列表和化学位移分配表。专家系统。(8)多项式基线矫正。(9)消除杂峰。(10)提供代谢组学中的模式识别功能。(11)Hadamard变换。(八) 数据池访问模块,具体要求如下:提供其它模块与数据池之间的接口,所有对数据池数据的访问和修改均需经过数据池访问模块来实现。(九) NMR模拟模块,具体要求如下:(1)创建模拟的时域或频域数据。(2)POM模拟软件包。(3)考虑引入其它第三方模拟模块。(十) 数据池,具体要求如下:(1)数据通讯结构定义,数据传输包的头结构,控制信息结构定义,数据采集信息结构定义,状态检测信息结构定义。(2)数据处理结构定义,包括全局变量设置(当前仪器状态变量,当前脉冲序列中的某些变量,采样变量),局部变量规范(定义出各个模块常用的某些变量,并进行规范)。(3)数据存储结构定义,包括1D、2D的FID、谱数据的存储结构,脉冲序列文件的存储结构,仪器环境参数的存储结构。(4)存储所有的重要参数,系统变量,脉冲序列和当前采样信号。3.3.2系统模块的关系模块间的关系如图3-2,它的特点是如下:(1)菜单驱动(2) 以数据为中心(3) 硬件封装,实现最大程度的硬件无关性(4) 统一的数据池访问接口,便于管理数据,提高数据的安全性。图3-2 模块关系图3.4 使用RCP开发系统界面这次项目,采用的是RCP插件开发。在第二章已经简单介绍了RCP的概念。在这里要介绍一下如何应用RCP来开发客户端的用户界面。先来看一下图3-3和图3-4。它们都是用户在操作系统 Microsoft Windows XP Professional (SP2)下运行NMR控制软件得到的默认用户界面。通过比较可以发现,图3-3和图3-4组件的风格虽然有着比较大的差别,但是它们显示的内容却是完全一样的。为什么会这样呢?图3-3 Deepinpl主题下的软件运行界面图3-4 Windows经典主题下的软件运行界面出现上面状况的原因是图3-3是在Deepinpl主题下运行软件得到的,而图3-4是在Windows经典主题下运行软件得到的。可以发现软件运行后组件的风格与操作系统所选择的主题密切相关。这是因为在RCP 中,构成UI 元素的是由SWT/JFACE 提供的UI 部件。在第二章已经谈到过了SWT和JFACE的优点。这也正是为什么要在项目中使用SWT和JFACE的原因。虽然组件的风格不同了,但组件的内容并没有改变。可以看到图3-3和图3-4都具有菜单栏、工具栏、视图、编辑器。RCP是如何创建菜单栏、工具栏、视图和编辑器的呢?要解决上面的问题,必须先了解Eclipse的插件结构图(如图3-5)和plugin.xml描述文件,Workbench 和 Workspace是 Eclipse 平台的两个必备的插件它们提供了大多数插件使用的扩展点。 一个插件工程目录下,可以发现总有一个文件叫一个叫plugin.xml,p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论