KR20130064195A - Visual pulse sequence edit system and the method thereof - Google Patents

Visual pulse sequence edit system and the method thereof Download PDF

Info

Publication number
KR20130064195A
KR20130064195A KR1020110130681A KR20110130681A KR20130064195A KR 20130064195 A KR20130064195 A KR 20130064195A KR 1020110130681 A KR1020110130681 A KR 1020110130681A KR 20110130681 A KR20110130681 A KR 20110130681A KR 20130064195 A KR20130064195 A KR 20130064195A
Authority
KR
South Korea
Prior art keywords
pulse
pulse sequence
visual
parameter
screen
Prior art date
Application number
KR1020110130681A
Other languages
Korean (ko)
Inventor
황보택근
염희정
은성종
김재승
박동균
정은영
정병희
심우호
Original Assignee
가천대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가천대학교 산학협력단 filed Critical 가천대학교 산학협력단
Priority to KR1020110130681A priority Critical patent/KR20130064195A/en
Publication of KR20130064195A publication Critical patent/KR20130064195A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04812Interaction techniques based on cursor appearance or behaviour, e.g. being affected by the presence of displayed objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0489Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using dedicated keyboard keys or combinations thereof
    • G06F3/04892Arrangements for controlling cursor position based on codes indicative of cursor displacements from one discrete location to another, e.g. using cursor control keys associated to different directions or using the tab key
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

PURPOSE: A visual pulse sequence editing system and a method thereof are provided to easily generate a visual pulse sequence code by supplying various editing functions and pulse components. CONSTITUTION: A visual pulse sequence program editor(100) generates and edits a pulse sequence component on a graphic screen. A pulse sequence editor complier(200) parses a pulse sequence graph screen generated through the visual pulse sequence program editor into a pulse sequence program code. The visual pulse sequence program editor includes a central lookup module. If a user adds or edits pulse components to the screen, the central lookup module shares attribute values to update and synchronize the pulse sequence graph screen according to the change of pulses.

Description

비주얼 펄스 시퀀스 편집 시스템 및 그 방법{Visual pulse sequence edit system and the method thereof}Visual pulse sequence edit system and the method

본 발명은 비주얼 펄스 시퀀스 편집 시스템 및 그 방법에 관한 것으로서, 보다 상세하게는 도형화된 펄스 컴포넌트 구성과 그래픽상에서의 다양한 편집 기능을 제공함으로써 직관적이고 효율적인 펄스 시퀀스 프로그래밍 가시화 방법을 제시한 비주얼 펄스 시퀀스 편집 시스템 및 그 방법에 대한 것이다.The present invention relates to a visual pulse sequence editing system and a method thereof, and more particularly to visual pulse sequence editing that provides an intuitive and efficient method for visualizing a pulse sequence programming by providing a variety of graphically edited pulse component configurations and graphic editing functions. System and method thereof.

도 1에서 보는 바와 같이 기존의 일반적인 펄스 시퀀스 프로그램 형태에서, 펄스 데이터를 프로그램 상으로 가시화 하려면 도1의 중앙 그림과 같이 펄스 프로그램을 작성이 필요하다. As shown in FIG. 1, in the conventional general pulse sequence program form, in order to visualize the pulse data onto the program, a pulse program needs to be created as shown in the center of FIG.

현재 대부분의 상용화된 펄스 시퀀스 프로그래밍 도구들은 텍스트 형식을 지원한다. 물론 복잡한 fMRI 펄스 시퀀스를 작성할 수 있다. Most commercially available pulse sequence programming tools now support text formats. Of course, you can write complex fMRI pulse sequences.

하지만, 펄스 시퀀스 프로그램 언어에 대한 세부적인 펄스 시퀀스 프로그램 코드를 직접 작성하는 것은 펄스 프로그래밍 언어에 대해 익숙하지 않은 fMRI 과학자들에게는 매우 힘든 업무가 될지도 모른다. However, writing detailed pulse sequence program code for a pulse sequence programming language can be a daunting task for fMRI scientists who are not familiar with pulse programming languages.

따라서 펄스 프로그래밍 언어를 학습 할 필요 없이, 펄스 시퀀스 프로그램을 작성하거나 기존의 펄스 시퀀스 프로그램을 수정 할 수 있는 GUI 플랫폼의 구현이 필요하게 되었다.Therefore, it is necessary to implement a GUI platform that can create a pulse sequence program or modify an existing pulse sequence program without learning a pulse programming language.

상술한 문제점을 해결하기 위하여 본 발명은 도형화된 펄스 컴포넌트 구성과 그래픽상에서의 다양한 편집 기능을 제공함으로써 직관적이고 효율적인 펄스 시퀀스 프로그래밍 가시화 방법을 제시하는 비주얼 펄스 시퀀스 편집 시스템 및 그 방법을 제공하는 데 목적이 있다.SUMMARY OF THE INVENTION In order to solve the above problems, an object of the present invention is to provide a visual pulse sequence editing system and method for providing an intuitive and efficient method for visualizing a pulse sequence programming by providing a figured pulse component configuration and various graphical editing functions. There is this.

본 발명은 펄스 시퀀스 컴포넌트(component)를 그래픽 화면에 생성하고 편집하도록 하는 비주얼 펄스 시퀀스 프로그램 편집기(visual pulse sequence program editor)와, 상기 비주얼 펄스 시퀀스 프로그램 편집기를 통해 생성된 펄스 시퀀스 그래프 화면(scene)을 펄스 시퀀스 프로그램 코드로 파싱(parsing)하는 펄스 시퀀스 편집기 컴파일러로 구성된다.The present invention provides a visual pulse sequence program editor for creating and editing a pulse sequence component on a graphic screen, and a pulse sequence graph scene generated through the visual pulse sequence program editor. It consists of a pulse sequence editor compiler that parses into pulse sequence program code.

상기 비주얼 펄스 시퀀스 프로그램 편집기는 센트럴 룩업모듈을 더 포함하고, 상기 센트럴 룩업모듈은 사용자가 펄스 시퀀스 화면에서 펄스 컴포넌트들을 추가하거나 편집할 때, 속성 값을 공유해 펄스의 높이나 넓이 등의 변화에 따라 실시간으로 펄스 시퀀스 그래프 화면을 갱신하고, 동기화한다.The visual pulse sequence program editor further includes a central lookup module, wherein when the user adds or edits pulse components in the pulse sequence screen, the central lookup module shares attribute values in real time according to a change in the height or width of the pulse. Update and synchronize the pulse sequence graph screen.

상기 비주얼 펄스 시퀀스 프로그램 편집기는 탑 컴포넌트들로 화면에 표시하며, 상기 화면에 표시된 탑 컴포넌트는 Pulse, Delay, Gradient 등의 속성 값 목록을 편집하는 파라미터(Parameter)모듈과, Pulse, Delay, Gradient 등의 펄스 컴포넌트 목록을 나타내는 팔렛(Palette) 모듈과, 펄스 시퀀스 프로그램을 보여주는 펄스 시퀀스 그래프 화면(Pulse Scene) 모듈과, 펄스 위젯(widget) 목록을 표시하는 인스펙터(Inspector) 모듈과, 선택된 펄스 위젯에 대한 속성 및 인덱스를 편집할 수 있도록 하는 속성 창(Properties) 모듈과, 펄스 시퀀스 프로그램 프로젝트를 관리하는 프로젝트(Project) 모듈로 구성된다.The visual pulse sequence program editor is displayed on the screen as top components, and the top component displayed on the screen includes a parameter module for editing a property value list such as pulse, delay, gradient, and the like. Palette module showing a list of pulse components, Pulse Scene graph display module showing a pulse sequence program, Inspector module showing a list of pulse widgets, and properties for the selected pulse widget. And a property window module for editing an index and a project module for managing a pulse sequence program project.

상기 비주얼 펄스 시퀀스 프로그램 편집기는 펄스 파라미터 탑 컴포넌트에 펄스 파라미터 입력 테이블이 추가되는 데, 상기 펄스 파라미터 탑 컴포넌트는 Pulse, Delay, Gradient 를 포함하는 펄스 종류별로 탭을 구성하고, 상기 탭 안에 펄스의 넓이(duration), 진폭(power, amplitude) 을 포함하는 속성 값을 탭으로 표시하고, 상기 파라미터 테이블을 구성하는 하나의 상기 탭에는 파라미터 테이블 모델 (AbstractParameterTableModel)클래스, 테이블 패널(TablePanel) 클래스, 파라미터(Parameters) 클래스로 구성되며, 상기 파라미터 테이블 모델 (AbstractParameterTableModel)클래스는 펄스 테이블의 행과 열에 입력되는 데이터를 관리하고, 속성 값 변화에 대한 이벤트를 감지하고, 상기 테이블 패널(TablePanel) 클래스는 파라미터 테이블 모델을 표시하고, 상기 파라미터(Parameters) 클래스는 테이블 모델의 속성 값을 타 모듈과 공유하고 모든 테이블 모델의 속성 값을 배열로 저장하며 상기 센트럴 룩업에 등록하고, 상기 파라미터 모듈과 센트럴 룩업에 등록된 다른 모듈의 파라미터 속성 값을 동기화하여, 사용자가 파라미터 속성 값을 입력하거나 수정 할 때, 펄스 신 시퀀스 그래프의 화면과 속성 창에 변경된 속성 값이 적용되도록 하여 통합된 입력 창을 통한 파라미터 입력 방식과, 펄스 시퀀스 프로그램 작업 중에도 파라미터 수정이 가능하다.In the visual pulse sequence program editor, a pulse parameter input table is added to a pulse parameter top component. The pulse parameter top component configures a tap for each pulse type including pulse, delay, and gradient, and the width of the pulse in the tap ( attribute values, including duration, power, amplitude, are displayed as tabs, and one of the tabs constituting the parameter table includes a parameter table model class, a table panel class, and parameters The parameter table model (AbstractParameterTableModel) class manages the data inputted to the rows and columns of the pulse table, detects the event of the property value change, and the TablePanel class displays the parameter table model The Parameter class is By sharing attribute values of a table model with other modules, storing the attribute values of all table models in an array, registering them in the central lookup, and synchronizing the parameter attribute values of the parameter module with another module registered in the central lookup. When entering or modifying the parameter property value, the changed property value is applied to the screen and property window of the pulse scene sequence graph so that the parameter can be modified through the integrated input window and the parameter can be modified during the pulse sequence program.

본 발명은 비주얼 펄스 시퀀스 프로그램 편집기를 통하여 펄스 시퀀스 컴포넌트(component)를 그래픽 화면에 생성하고 편집하는 단계와, 펄스 시퀀스 편집기 컴파일러를 통하여 상기 비주얼 펄스 시퀀스 프로그램 편집기를 통해 생성된 펄스 시퀀스 그래프 화면(scene)을 펄스 시퀀스 프로그램 코드로 파싱(parsing)하는 단계로 구성되되, 상기 비주얼 펄스 시퀀스 프로그램 편집기에 포함된 센트럴 룩업모듈을 통하여, 사용자가 펄스 시퀀스 화면에서 펄스 컴포넌트들을 추가하거나 편집할 때, 속성 값을 공유해 펄스의 높이나 넓이 등의 변화에 따라 실시간으로 펄스 시퀀스 그래프 화면을 갱신하고, 동기화하는 단계가 더 포함되어 구성된다.The present invention provides a method of generating and editing a pulse sequence component on a graphic screen through a visual pulse sequence program editor, and a pulse sequence graph scene generated through the visual pulse sequence program editor through a pulse sequence editor compiler. Parsing into pulse sequence program code, and through the central lookup module included in the visual pulse sequence program editor, when the user adds or edits pulse components in the pulse sequence screen, the attribute values are shared. The method may further include updating and synchronizing the pulse sequence graph screen in real time according to a change in the height or width of the pulse.

본 발명에 따르면 도형화되고, 그래픽상에서의 다양한 편집 기능을 제공함으로써 직관적이고 효율적인 방법을 제시하고 있다.According to the present invention, it provides an intuitive and efficient method by providing a variety of editing functions graphically and graphically.

본 발명에 따르면 쉽게 시각화된 펄스 시퀀스 프로그램 코드를 생성 할 수 있다. According to the present invention, it is possible to easily generate a visualized pulse sequence program code.

도1은 종래 발명을 상호 비교한 도면.
도2는 본 발명에 대한 전체적인 개념을 보여주는 개념도.
도3은 본 발명에 따른 비주얼 펄스 시퀀스 편집 시스템의 구성을 구체적으로 보여주는 도면.
도4는 본 발명의 비주얼 펄스 시퀀스 편집 시스템에 따라 설계된 펄스 빈(bean)을 보여주는 도면.
도5는 본 발명에 따른 비주얼 펄스 시퀀스 편집 시스템의 센트럴 룩업 개념도.
도6은 본 발명에 따른 비주얼 펄스 시퀀스 프로그램 편집기를 개략적으로 보여주는 도면.
도7은 본 발명에 따른 비주얼 펄스 시퀀스 편집 시스템의 비주얼 펄스 시퀀스 프로그램 편집기를 보여주는 도면.
도8은 본 발명에 따른 파라미터 입력 방식을 보여주는 도면.
도9는 본 발명에 따른 펄스 컴포넌트를 보여주는 도면.
도10은 본 발명에 따라 펄스 컴포넌트를 생성하기 위한 모듈을 보여주는 도면.
도11은 본 발명에 따른 펄스 시퀀스 그래프 화면의 클래스 다이어그램을 보여주는 도면.
도12는 본 발명에 따른 펄스 시퀀스 화면을 보여주는 도면.
도13은 본 발명에 따른 팝업 메뉴 프로바이더(WidgetPopupMenuProvider) 클래스를 보여주는 도면.
도14는 본 발명에 따라 행의 위젯을 선택하여 정렬하는 방식을 보여주는 도면.
도15는 본 발명에 따른 펄스 신 그래프 화면을 보여주는 도면.
도16은 본 발명에 따른 프로젝트 모듈의 구조를 보여주는 도면.
도17은 본 발명에 따른 펄스 프로그램 데이터 오브젝트(PulseProgramDataObject)와 펄스 프로그램 데이터 노드(PulseProgramDataNode)를 보여주는 도면.
도18은 본 발명에 따른 프로젝트 템플릿(project templates)을 안내 하기 위한 샘플 프로젝트를 제공하는 것을 보여주는 도면.
도19는 본 발명에 따른 컴파일러 기능을 보여주는 도면.
도20은 본 발명에 따른 펄스 시퀀스 프로그램은 텍스트 편집기를 보여주는 도면.
도21은 본 발명에 따라 텍스트 편집창과 전환할 수 있는 UI를 보여주는 도면.
도 22, 23은 기존의 Bruker의 펄스 프로그래밍언어와 비교한 도면.
도24는 본 발명에 따른 펄스 시퀀스 프로그램의 예를 보여주는 도면.
도25는 본 발명에 따라 스펙트로미터 조정(Spectrometer Control), 데이터 처리(Data Processing), 시뮬레이션(Simulation), 가시화(Visualization) 로 구분되어 출시되는 것을 보여주는 도면.
도26은 본 발명에 따라 필요한 하드웨어 명령어들(pulses, gradient pulses, timings)을 보여주는 도면.
1 is a diagram comparing the prior invention.
2 is a conceptual diagram showing the overall concept of the present invention.
Figure 3 is a diagram showing in detail the configuration of a visual pulse sequence editing system according to the present invention.
4 shows a pulse bean designed according to the visual pulse sequence editing system of the present invention.
5 is a conceptual view of a central lookup of a visual pulse sequence editing system according to the present invention;
6 is a schematic representation of a visual pulse sequence program editor in accordance with the present invention.
Figure 7 shows a visual pulse sequence program editor of the visual pulse sequence editing system according to the present invention.
8 illustrates a parameter input method according to the present invention.
9 illustrates a pulse component in accordance with the present invention.
10 shows a module for generating a pulse component in accordance with the present invention.
11 is a class diagram of a pulse sequence graph screen according to the present invention;
Figure 12 shows a pulse sequence screen according to the present invention.
Figure 13 illustrates a Popup Menu Provider (WidgetPopupMenuProvider) class in accordance with the present invention.
14 illustrates a method of selecting and sorting widgets in a row in accordance with the present invention.
15 shows a pulse scene graph screen according to the present invention;
Figure 16 shows the structure of a project module according to the present invention.
Figure 17 shows a Pulse Program Data Object (PulseProgramDataObject) and a Pulse Program Data Node (PulseProgramDataNode) in accordance with the present invention.
18 is a diagram showing providing a sample project for guiding project templates according to the present invention.
19 illustrates a compiler function in accordance with the present invention.
20 is a pulse sequence program in accordance with the present invention showing a text editor.
21 is a view showing a UI that can be switched with the text edit window in accordance with the present invention.
22 and 23 are diagrams compared with the pulse programming language of Bruker.
Figure 24 shows an example of a pulse sequence program according to the present invention.
FIG. 25 is a diagram illustrating the release of spectrometer control, data processing, simulation, and visualization according to the present invention; FIG.
Figure 26 illustrates hardware instructions (pulses, gradient pulses, timings) needed in accordance with the present invention.

이하 본 발명의 실시를 위한 구체적인 내용을 도면을 참고하여 자세히 설명한다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, the present invention will be described in detail with reference to the drawings.

도3은 본 발명에 따른 비주얼 펄스 시퀀스 편집 시스템의 구성을 구체적으로 보여주는 도면으로서, 본 발명의 일실시예에 따라 펄스 시퀀스 프로그래밍 생성기 프레임워크는 크게 3가지로 구성된다. 3 is a view showing in detail the configuration of a visual pulse sequence editing system according to the present invention, the pulse sequence programming generator framework is largely composed of three according to an embodiment of the present invention.

비주얼 펄스 시퀀스 프로그램 편집기(visual pulse sequence program editor;100)는 펄스 시퀀스 컴포넌트(component)를 그래픽 화면에 생성하고 편집하도록 한다. The visual pulse sequence program editor 100 allows a pulse sequence component to be created and edited on a graphic screen.

컴파일러(200)는 앞서 비주얼 펄스 시퀀스 프로그램 편집기에 그려진 펄스 시퀀스 그래프 화면(scene)을 펄스 시퀀스 프로그램 코드로 파싱(parsing)한다. The compiler 200 parses a pulse sequence graph scene drawn in the visual pulse sequence program editor into pulse sequence program code.

그리고 그래프 화면과 펄스 시퀀스 프로그램 코드 생성을 위해 필요한 펄스 시퀀스 컴포넌트의 종류와 파라미터(parameter) 값들에 대한 자료구조로 구성된다. And it consists of graph structure and data structure of pulse sequence component type and parameter values necessary for pulse sequence program code generation.

도4는 본 발명의 비주얼 펄스 시퀀스 편집 시스템에 따라 설계된 펄스 빈(bean)을 보여주는 도면으로서, 앞서 언급한 프레임워크는 넷빈즈 플랫폼(netbeans platform) 기반으로, 다음 도 4와 같이 펄스 빈(bean)으로 설계된다. FIG. 4 is a diagram illustrating a pulse bean designed according to the visual pulse sequence editing system of the present invention. The aforementioned framework is based on a netbeans platform. Is designed.

펄스 빈은 서브 모듈들을 포함하는 모듈 수트(module suites) 구조이다. 모듈 수트는 펄스 신(scene) 모듈과 센트럴 룩업(central lookup) 객체를 포함한다.The pulse bin is a module suites structure containing submodules. The module suite includes a pulse scene module and a central lookup object.

펄스 신 모듈은 비주얼 에디터 및 컴파일러를 구성하는 패키지들로 구성된다. The pulse scene module consists of the packages that make up the visual editor and compiler.

그리고 센트럴 룩업은 이 패키지들 간에 공유되는 인스턴스를 관리해주는 전역 클래스의 역할을 한다.The central lookup acts as a global class that manages instances shared between these packages.

도5는 본 발명에 따른 비주얼 펄스 시퀀스 편집 시스템의 센트럴 룩업 개념도로서, 상기 센트럴 룩업은 사용자가 펄스 시퀀스 화면에서 펄스 컴포넌트들을 추가하거나 편집할 때, 속성 값을 공유해 펄스의 높이나 넓이 등의 변화에 따라 실시간으로 펄스 시퀀스 그래프 화면을 갱신하고, 다른 모듈과 동기화 되도록 한다. 5 is a conceptual diagram of a central lookup of a visual pulse sequence editing system according to the present invention, wherein the central lookup is configured to share attribute values when a user adds or edits pulse components in a pulse sequence screen according to a change in height or width of a pulse. Update the pulse sequence graph screen in real time and synchronize it with other modules.

기존의 룩업(lookup)은 키로써 항목이 구별되어 있는 배열이나 표에서 데이터 항목을 골라내는 프로그래밍 기법을 말한다. 기존 룩업에서 응용된 넷빈즈 플랫폼의 룩업은 일반적으로 객체 인스턴스들을 관리하기 위해 사용되는 개념이다. 주로 어플리케이션(application)내에서 모듈들이 서로 통신하도록 사용된다. 앞서 설명한 룩업을 본 특허에 제시한 프레임워크에 맞춘 것이 센트럴 룩업이다. Conventional lookup is a programming technique that selects data items from an array or table whose items are identified by their key. The lookup of the NetBeans platform applied in the existing lookup is a concept generally used to manage object instances. It is mainly used to communicate modules with each other in an application. It is the central lookup that aligns the lookup described above with the framework presented in this patent.

이러한 센트럴 룩업의 개념도는 다음 도 5와 같다. 모듈 수트에 포함된 각 모듈로부터 클래스 객체가 등록되면 센트럴 룩업에서 보관한다. 그리고 다른 모듈에서 등록된 클래스 객체를 요청하면, 해당되는 룩업 결과를 반환한다. A conceptual diagram of such a central lookup is as shown in FIG. 5. When a class object is registered from each module in the module suite, it is kept in the central lookup. When a class object is requested from another module, the corresponding lookup result is returned.

도6은 본 발명에 따른 비주얼 펄스 시퀀스 프로그램 편집기를 개략적으로 보여주는 도면으로서, 비주얼 펄스 시퀀스 프로그램 편집기는 fMRI 관련 종사자가 펄스 시퀀스 프로그래밍에 대한 학습 없이 펄스 시퀀스를 그래픽 상에서 디자인할 수 있도록 하는 것을 목표로 한다. 6 is a schematic diagram of a visual pulse sequence program editor according to the present invention, which aims to enable a fMRI-related person to graphically design a pulse sequence without learning about pulse sequence programming. .

따라서 사용자가 비주얼 펄스 시퀀스 프로그램 편집기를 이용해 펄스 시퀀스 프로그램 코드를 생성하는 유즈 케이스 다이어그램(use case diagram)을 유추할 수 있다. This allows the user to infer a use case diagram for generating pulse sequence program code using the Visual Pulse Sequence Program Editor.

도7은 본 발명에 따른 비주얼 펄스 시퀀스 편집 시스템의 비주얼 펄스 시퀀스 프로그램 편집기를 보여주는 도면으로서, 본 발명에서 제안한 비주얼 펄스 시퀀스 프로그램 편집기는 모듈별 특성에 맞춘 탑 컴포넌트들로 화면에 표시된다. 화면에 표시된 탑 컴포넌트는 다음과 같다.FIG. 7 is a diagram illustrating a visual pulse sequence program editor of the visual pulse sequence editing system according to the present invention. The visual pulse sequence program editor proposed in the present invention is displayed on the screen with top components adapted to the characteristics of each module. The top components displayed on the screen are as follows.

*파라미터(Parameter): Pulse, Delay, Gradient 등의 속성 값 목록을 편집함Parameter: Edit the list of property values such as Pulse, Delay, Gradient, etc.

*팔렛(Palette): Pulse, Delay, Gradient 등의 펄스 컴포넌트 목록을 나타냄* Palette: Displays a list of pulse components such as Pulse, Delay, Gradient, etc.

*펄스 시퀀스 그래프 화면(Pulse Scene): 펄스 시퀀스 프로그램을 보여줌Pulse sequence graph: shows the pulse sequence program

*인스펙터(Inspector): 펄스 위젯(widget) 목록을 표시함Inspector: displays a list of pulse widgets

*속성 창(Properties): 선택된 펄스 위젯에 대한 속성 및 인덱스를 편집함Properties window: Edits properties and indexes for the selected pulse widget.

*프로젝트(Project): 펄스 시퀀스 프로그램 프로젝트를 관리함Project: manages pulse sequence program project

도8은 본 발명에 따른 파라미터 입력 방식을 보여주는 도면으로서, 기존 Bruker 프로그램은 파라미터 종류에 따라 별도의 입력이 필요했으나, 본 특허에서 제안하는 파라미터 입력 방식은 통합된 입력 창을 구현해 기존 방식을 개선하였다. 또한 펄스 시퀀스 프로그램 작업 중에도 파라미터 수정이 가능하도록, 플랫폼 하단에 펄스 파라미터 탑 컴포넌트(PulseParameterTopComponent)를 배치하였다. 8 is a view showing a parameter input method according to the present invention, the existing Bruker program requires a separate input according to the parameter type, but the parameter input method proposed in this patent has improved the existing method by implementing an integrated input window . In addition, the PulseParameterTopComponent is placed at the bottom of the platform to enable parameter modification during pulse sequence program work.

또한 도 8은 파라미터 모듈에 대한 클래스 다이어그램으로, 펄스 파라미터 탑 컴포넌트에 펄스 파라미터 입력 테이블이 추가되는 구조를 보여준다. 펄스 파라미터 탑 컴포넌트는 Pulse, Delay, Gradient 등의 펄스 종류별로 탭을 구성하고, 그 안에 펄스의 넓이(duration), 진폭(power, amplitude) 등의 속성 값들을 탭으로 표시한다.8 is a class diagram of a parameter module, and shows a structure in which a pulse parameter input table is added to a pulse parameter top component. The pulse parameter top component configures taps by pulse types such as Pulse, Delay, and Gradient, and displays attribute values such as pulse width and power in them.

즉 파라미터 테이블을 구성하는 하나의 탭 에는 아래의 세 가지 클래스가 필요하다. In other words, the following three classes are required for one tab of the parameter table.

*AbstractParameterTableModel :: AbstractTableModelAbstractParameterTableModel :: AbstractTableModel

*TablePanel :: JPanelTablePanel :: JPanel

*Parameters* Parameters

우선 파라미터 테이블 모델 (AbstractParameterTableModel)클래스는 펄스 테이블의 행과 열에 입력되는 데이터를 관리하고, 속성 값 변화에 대한 이벤트를 감지한다. 그리고 테이블 패널(TablePanel) 클래스는 파라미터 테이블 모델을 표시하고, 파라미터(Parameters) 클래스에서 테이블 모델의 속성 값을 다른 모듈과 공유한다. First of all, the ParameterParameterModelModel class manages data entered into rows and columns of a pulse table and detects events about attribute value changes. The TablePanel class displays the parameter table model, and the Parameter class shares the attribute values of the table model with other modules.

파라미터 클래스는 모든 테이블 모델의 속성 값을 배열로 저장하고 있으며, 앞서 언급한 센트럴 룩업에 등록된다. 이는 파라미터 모듈과 센트럴 룩업에 등록된 다른 모듈의 파라미터 속성 값을 동기화하기 위해서이다. 즉 사용자가 파라미터 속성 값을 입력하거나 수정 할 때, 펄스 신 시퀀스 그래프의 화면과 속성 창에 변경된 속성 값이 적용된다. The parameter class stores the attribute values of all table models in an array and is registered in the aforementioned central lookup. This is to synchronize the parameter attribute values of the parameter module and other modules registered in the central lookup. That is, when the user enters or modifies the parameter property value, the changed property value is applied to the screen and property window of the pulse scene sequence graph.

도9는 본 발명에 따른 펄스 컴포넌트를 보여주는 도면으로서, 펄스 컴포넌트는 다음 도 9과 같이, 펄스 위젯(PulseWidget), 펄스 노드(PulseNode), 펄스 모델(PulseModel) 클래스로 구성하였다. 새로운 펄스 컴포넌트를 생성하기 위해서, 아래의 세 가지 클래스를 구현하고 팔렛에 추가 하여야 한다. FIG. 9 is a diagram illustrating a pulse component according to the present invention. The pulse component includes a pulse widget, a pulse node, and a pulse model class as shown in FIG. 9. To create a new pulse component, you must implement the following three classes and add them to the palette.

*펄스 위젯: PaintProvider 인터페이스를 구현하여, 화면상에 펄스 컴포넌트를 그려주는 위젯임Pulse widget: Implements the PaintProvider interface to draw a pulse component on the screen.

*펄스 노드: 팔렛 탑 컴포넌트에서 보여 지는 노드임 * Pulse Node: Node shown in the Palette Top component

*펄스 모델: 펄스 위젯과 펄스 노드를 변환을 위한 정보를 가지는 모델임* Pulse model: This model contains information for converting pulse widgets and pulse nodes.

사용자가 팔렛 탑 컴포넌트에서 선택하는 펄스 컴포넌트는 펄스 노드로 구성된다. 펄스 노드는 각 속성의 인덱스 정보를 가지고 있고, 프로퍼티 창을 생성해주는 역할을 한다. 선택된 펄스 노드는 드래그 앤 드롭 하는 동안 펄스 모델을 생성한다. 그리고 드롭 하면, 펄스 모델은 펄스 노드를 펄스 위젯으로 변환하며, 펄스 위젯은 펄스 컴포넌트의 형태, 높이, 넓이 등에 따라 펄스 시퀀스 그래프 화면에 펄스 컴포넌트를 그려준다.The pulse component that the user selects from the pallet top component consists of pulse nodes. The pulse node has index information of each property and creates a property window. The selected pulse node creates a pulse model during drag and drop. When dropped, the pulse model converts the pulse node into a pulse widget, which draws the pulse component on the pulse sequence graph screen according to the shape, height, and width of the pulse component.

도10은 본 발명에 따라 펄스 컴포넌트를 생성하기 위한 모듈을 보여주는 도면으로서, 본 발명에서 제안한 팔렛은 새로운 펄스 컴포넌트를 생성하기 위한 모듈이다. 펄스 컴포넌트들을 종류에 따라 트리 형태로 보여주었으며, 펄스 시퀀스 그래프 화면으로 드래그 앤 드롭 할 수 있도록 하였다. 10 is a view showing a module for generating a pulse component according to the present invention, the pallet proposed in the present invention is a module for generating a new pulse component. The pulse components are shown in tree form according to their types, and can be dragged and dropped onto the pulse sequence graph screen.

이러한 팔렛 기능 구현을 위해서, 기존 넷빈즈에서 제공되는 팔렛 모듈을 본 특허에 맞게 구현하였다. 기본적으로 넷빈즈 IDE는 팔렛 모듈을 구성하고 있으며, 표시되는 컴포넌트들을 넷빈즈 편집기로 드래그 앤 드롭 할 수 있도록 한다. 팔렛의 자료는 팔렛 컨트롤러(PaletteController)에서 관리한다. In order to implement such a pallet function, the pallet module provided by the existing NetBeans was implemented according to the present patent. By default, the Netbeans IDE consists of a palette module that allows you to drag and drop the displayed components into the Netbeans editor. Palette data is managed by the PaletteController.

그리고 팔렛 컨트롤러를 탑 컴포넌트의 룩업에 등록함으로써, 해당 탑 컴포넌트가 활성화 되면 팔렛이 자동으로 열리도록 한다.By registering the palette controller in the lookup of the top component, the palette is automatically opened when the top component is activated.

그러나 넷빈즈 IDE의 팔렛은 수정이 안 되도록 하고 있다. 따라서 기존 넷빈즈 팔렛 API를 이용해, 펄스 컴포넌트를 표시하는 팔렛을 구현하였다. 펄스 시퀀스 그래프 화면의 탑 컴포넌트가 활성화되면, 팔렛을 생성한다. 팔렛을 생성하기 위해서, 해당 탑 컴포넌트의 룩업에는 팔렛 컨트롤러가 등록되어야 한다. However, the Palettes of the Netbeans IDE do not allow modification. Therefore, using the existing NetBeans palette API, we implemented a palette that displays pulse components. When the top component of the pulse sequence graph screen is activated, a palette is created. In order to create a palette, the palette controller must be registered in the lookup of the top component.

기본적으로 제공되는 팔렛 컨트롤러를 본 특허에 맞게 재구성하기 위해서, 팔렛을 지원하는 PaletteUtils 클래스를 구현하였다. 이 클래스는 팔렛의 자료, 액션, 드래그 앤 드롭 핸들러 등을 지원한다. 특히 팔렛에 자료를 제공하는 노드 계층을 생성하기 위해서, 다음과 같이 아래의 네 가지 클래스를 구현하였다. In order to reconfigure the provided pallet controller according to the patent, the PaletteUtils class is implemented to support the pallet. This class supports palette data, actions, drag and drop handlers, and more. In particular, to create a node hierarchy that provides data to the palette, the following four classes are implemented:

*PaletteCategoryNodeContainer* PaletteCategoryNodeContainer

: 팔렛의 모든 카테고리 노드를 포함하는 컨테이너임  : Container containing all category nodes in the palette

*PaletteCategoryNode* PaletteCategoryNode

: 하나의 카테고리 노드이며, 새로운 팔렛 펄스 노드 컨테이너를 생성함  : One category node, creating a new pallet pulse node container

*PaletteNodeContainer* PaletteNodeContainer

: 하나의 카테고리에 속하는 모든 펄스 노드를 포함하는 컨테이너임  : Container containing all pulse nodes belonging to one category

*PaletteStructure : 새로운 카테고리나 새로운 펄스 컴포넌트를 등록함. 팔렛의 모든 카테고리와 펄스 노드 목록을 관리함PaletteStructure: Registers a new category or new pulse component. Manages a list of all categories and pulse nodes in the palette

도11은 본 발명에 따른 펄스 시퀀스 그래프 화면의 클래스 다이어그램을 보여주는 도면으로서, 펄스 시퀀스 그래프 화면의 클래스 다이어그램은 크게 펄스 신 탑 컴포넌트(PulseSceneTopComponent), 펄스 신(PulseScene) 그리고 펄스 신 레이아웃(PulseSceneLayout)으로 구성하였다. FIG. 11 is a diagram showing a class diagram of a pulse sequence graph screen according to the present invention. The class diagram of the pulse sequence graph screen is largely composed of a pulse scene component, a pulse scene and a pulse scene layout. It was.

또한 펄스 신 탑 컴포넌트는 펄스 신과, 펄스 시퀀스 프로그램 코드를 전환하여 보여주는 역할을 한다. 이를 위해, 펄스 신 탑 컴포넌트 상단에는 소스(source)와 디자인(design)버튼을 포함한 툴바(tool bar)를 구성하였다. 해당 액션 이벤트에 따라 소스 버튼이면 텍스트 영역에서 펄스 시퀀스 프로그램 코드를 보여주고, 디자인 버튼이면 펄스 신을 보여준다. In addition, the pulse scene tower component converts and displays a pulse scene and a pulse sequence program code. To do this, a tool bar was configured on top of the pulse tower component, including a source and a design button. According to the action event, the source button shows the pulse sequence program code in the text area, and the design button shows the pulse scene.

펄스 신은 펄스 시퀀스 그래프가 그려지는 가장 중요한 부분이다. 비주얼한 펄스 시퀀스 그래프 화면을 보여주기 위해서, 넷빈즈 비주얼 라이브러리 API의 신(scene) 클래스를 상속받아 펄스 신에 맞게 구현하였다. 신은 그 자체가 하나의 위젯이며, 표시된 위젯들의 현재 계층에 대한 루트 요소이다.The pulse scene is the most important part of the pulse sequence graph. To show the visual pulse sequence graph screen, we inherited the scene class of the NetBeans Visual Library API and implemented it for the pulse scene. The scene is itself a widget and the root element for the current hierarchy of displayed widgets.

따라서 펄스 신은 트리구조의 루트 요소가 되어, 하위 모든 위젯을 표시하고 관리한다. 또한 여러 종류의 위젯을 그려지는 순서와 역할에 따라 독립적으로 관리하고자, 몇 개의 레이어(layer) 위젯을 이용하였다. 레이어 위젯은 화면에 그려지지 않는 위젯이며, 다른 유형의 위젯들을 조직하기 위한 레이어로 사용된다. 펄스 신에 포함된 레이어 위젯의 종류는 다음과 같다.Thus, the pulse scene becomes the root element of the tree structure, displaying and managing all subordinate widgets. In addition, several layer widgets were used to manage the various widgets independently in the order and role they are drawn. Layer widgets are widgets that are not drawn on the screen and are used as layers to organize other types of widgets. The types of layer widgets included in the pulse scene are as follows.

메인 레이어: 펄스 신 레이아웃을 통해 펄스 위젯을 관리함Main layer: manages pulse widgets via pulse scene layout

필러 레이어: 펄스 위젯 간의 정렬을 위한 필러 위젯 및 정렬 표시 위젯 관리함Filler layer: Manages the Filler widget and Sort Display widget for sorting between pulse widgets

루프 레이어: 반복 구문의 경계선 표시를 위한 루프 위젯 관리함Loop layer: Managed loop widget for displaying the border of repeating statements

인터렉션 레이어: 반복 구문의 경계선을 연결하는 위젯을 추가하여 관리함Interaction layer: adds and manages widgets that connect the boundaries of repeating statements

백그라운드 레이어: 드래그 선택 시 선택 펄스 위젯 및 선택 영역 표시 위젯 관리함Background layer: manages selection pulse widget and selection display widget when dragging

가이드라인 레이어: 펄스 시퀀스 그래프의 행을 표시Guidelines layer: displays rows of the pulse sequence graph

이하 표1은 비주얼 펄스 시퀀스 프로그램 편집기 주요 기능을 나타낸다.Table 1 below shows the main functions of the visual pulse sequence program editor.

Figure pat00001
Figure pat00001

도12는 본 발명에 따른 펄스 시퀀스 화면을 보여주는 도면으로서, 선택과 이동 기능은 펄스 시퀀스 화면에서 펄스 위젯을 선택하고, 이동하기 위해서 사용된다. 펄스 위젯의 선택은 단일 선택과 연속 선택의 두 가지 경우가 있다. 단일 선택은 펄스 신의 펄스 위젯을 마우스 왼쪽 클릭한 경우이다. 연속 선택은 키보드의 컨트롤키를 누른 상태에서 마우스 왼쪽 클릭하거나, 마우스를 드래그 앤 드롭해서 사각형 영역으로 선택하는 경우이다.12 is a diagram showing a pulse sequence screen according to the present invention, in which selection and movement functions are used to select and move a pulse widget on a pulse sequence screen. There are two cases of selecting a pulse widget: single selection and continuous selection. Single selection is when the left mouse button is clicked on the pulse widget of the pulse scene. Continuous selection is when you click the left mouse button while holding down the control keys on the keyboard or drag and drop the mouse to select a rectangular area.

도13은 본 발명에 따른 팝업 메뉴 프로바이더(WidgetPopupMenuProvider) 클래스를 보여주는 도면으로서, 기본적으로 탑 컴포넌트는 화면에 표시된 노드(node)들 중 선택된 노드에 대해서, 인스펙터와 속성 창에 갱신되도록 한다. 하지만, 펄스 신에서는 펄스 위젯이 선택되므로, 위젯을 탑 컴포넌트에서 알 수 있는 노드로 변경해야한다. 따라서 선택된 펄스 위젯들을 펄스 노드로 변경해, 펄스 노드 컨테이너에 저장하였다. 생성된 펄스 노드 컨테이너를 펄스 신 탑 컴포넌트에 등록하여, 선택된 펄스 위젯을 전역에서 알 수 있도록 하였다.FIG. 13 is a diagram illustrating a popup menu provider (WidgetPopupMenuProvider) class according to the present invention. Basically, a top component is updated in an inspector and an attribute window for a selected node among nodes displayed on a screen. However, in the pulse scene, the pulse widget is selected, so we need to change the widget to a node known from the top component. Therefore, the selected pulse widgets were changed to pulse nodes and stored in the pulse node container. The created pulse node container is registered in the pulse tower component so that the selected pulse widget can be known globally.

그리고 펄스 위젯을 이동 하도록 하기 위해서, 마우스가 처음 클릭 될 때의 위치와 이동 할 펄스 위젯을 저장한다. 이 후 마우스가 릴리즈 될 때의 위치로 펄스 위젯의 위치를 갱신한다. 위치 갱신은 메인 레이어 위젯에 포함된 펄스 위젯의 순서를 변경하는 것으로 이루어지며, 이동 펄스 위젯과 타겟 펄스 위젯의 인덱스를 이용한다.And in order to move the pulse widget, we store the position when the mouse is first clicked and the pulse widget to be moved. After that, update the position of the pulse widget to the position when the mouse is released. The location update consists of changing the order of the pulse widgets included in the main layer widget, and uses the indexes of the moving pulse widget and the target pulse widget.

또한 선택과 이동 이외의 편집, 루프, 정렬 등에 대한 이벤트를 선택하기 위해서, 팝업 메뉴를 이용한다. 펄스 위젯을 선택하고 마우스 오른쪽 버튼을 클릭하면, 팝업 메뉴가 생성된다. 팝업 메뉴는 앞서 언급한 도 13의 팝업 메뉴 프로바이더(WidgetPopupMenuProvider) 클래스에 의해 생성된다. 위젯 팝업 메뉴 프로바이더 클래스는 팝업 메뉴를 생성하고, 액션 리스너를 통해 정의된 액션 명령어에 따라 이벤트를 수행한다. The pop-up menu is also used to select events for editing, looping, sorting, etc. other than selection and movement. Select the pulse widget and right-click to create a popup menu. The pop-up menu is generated by the pop-up menu provider (WidgetPopupMenuProvider) class of FIG. 13 mentioned above. The widget popup menu provider class creates a popup menu and executes events according to action commands defined through action listeners.

선택된 펄스 위젯을 편집하는 기능은 펄스 시퀀스 화면에서 펄스 위젯을 복사, 붙여넣기, 삭제 하기위해서 사용한다. 선택된 위젯을 복사하고 붙여넣기 할 때는 각 선택 펄스 위젯의 해당 열(row)로 붙여 넣는다.The function to edit the selected pulse widget is used to copy, paste and delete the pulse widget in the pulse sequence screen. When copying and pasting selected widgets, paste them into the corresponding row of each selection pulse widget.

도14는 본 발명에 따라 행의 위젯을 선택하여 정렬하는 방식을 보여주는 도면으로서, 정렬 기능은 같은 시간대로 펄스 시퀀스를 맞추기 위해서 사용되며, GUI상에서 선택 된 위젯들의 시간(가로) 축을 맞춰주도록 한다. FIG. 14 is a diagram illustrating a method of selecting and sorting widgets in a row according to the present invention, wherein the sorting function is used to align pulse sequences in the same time zone, and allows the time (horizontal) axis of the selected widgets to be aligned on the GUI.

또한 각 행의 위젯을 선택 후 마우스 오른쪽 버튼 클릭해 'Align' 메뉴를 선택해 새로운 필러(filler) 위젯을 생성한다. 그러면 선택 된 위젯들은 가장 오른쪽에 위치한 위젯의 가운데 좌표에 맞춰 정렬된다.You can also create a new filler widget by selecting the widget in each row and right-clicking on it to select the 'Align' menu. The selected widgets are then aligned with the center coordinates of the rightmost widget.

Figure pat00002
Figure pat00002

표 2. 필러 레이어 위젯의 주요 함수Table 2. Key functions of the filler layer widget

도15는 본 발명에 따른 펄스 신 그래프 화면을 보여주는 도면으로서, 루프 기능은 반복 구문을 생성하기 위해서 사용하며, 펄스 신 그래프 화면에서 시작 펄스 위젯과 끝 펄스 위젯을 연결하는 선으로 표시된다. FIG. 15 is a diagram illustrating a pulse scene graph screen according to the present invention, wherein a loop function is used to generate a repetitive phrase, and is represented by a line connecting a start pulse widget and an end pulse widget on a pulse scene graph screen.

또한 도 15와 같이 두 위젯을 선택 후 마우스 오른쪽 버튼을 클릭하고, 팝업 메뉴의 ‘Loop’를 선택하면 새로운 루프가 그려진다.In addition, as shown in FIG. 15, after selecting two widgets, clicking the right mouse button and selecting 'Loop' from the pop-up menu, a new loop is drawn.

새로운 루프를 추가는 선택된 두 위젯 중 왼쪽에 있는 위젯의 시작 좌표와 오른 쪽에 있는 위젯의 끝 좌표를 통해, 가장 아래 행의 하단에 꺾인 화살표 모양으로 표시된다. 하나의 루트는 루프 위젯(LoopWidget) 클래스로 구현하였으며, 루프의 경계선을 그리는 루프 바운더리 위젯(LoopBoundaryWidget) 클래스 두 개로 구성된다. 이 루프 위젯 클래스들은 루프 레이어 위젯의 자식 노드로 추가된다. Adding a new loop is indicated by a curved arrow at the bottom of the bottom row, with the start coordinates of the widget on the left and the end coordinates of the widget on the right of the two selected widgets. One route is implemented as the LoopWidget class, and consists of two LoopBoundaryWidget classes that draw the loop boundaries. These loop widget classes are added as child nodes of the loop layer widget.

루프 안에 위젯이 삽입 되는 경우는 루프 밖의 위젯이 안으로 삽입되거나, 팔렛에서 루프 안으로 새로운 위젯을 추가 할 때이다. 삽입된 위젯이 루프 안에 있으면, 해당 루프의 너비가 삽입된 위젯의 너비만큼 넓어지도록 한다. When a widget is inserted into a loop, it is either when the widget outside the loop is inserted inside or when a new widget is added into the loop from the palette. If the inserted widget is inside a loop, make sure that the loop's width is as wide as the inserted widget.

루프 안에 있는 위젯들이 이동 할 때는, 다음의 두 가지 경우에 대한 처리가 필요하다. 우선 루프 안에 있는 위젯이 왼쪽 경계선의 왼쪽으로 이동하면, 루프를 제거한다. 그리고 루프 안에 있는 위젯이 오른쪽 경계선의 오른쪽으로 이동하면, 루프의 오른쪽 경계선이 그만큼 늘어나도록 한다.When the widgets in the loop move, you need to handle the following two cases: First, if the widget in the loop moves to the left of the left border, remove the loop. And if the widget in the loop moves to the right of the right border, the right border of the loop will stretch that much.

또한 사용자가 루프를 삭제 할 수 있도록 구현하였다. 마우스로 특정 루프를 클릭해 선택하고, 선택된 루프의 색을 변경한다. 선택된 루프를 마우스 오른쪽 클릭하면 팝업 메뉴가 나오며 ‘Remove’ 메뉴를 클릭하면 해당 루프가 삭제된다.Also, the user can delete the loop. Click on a specific loop with the mouse to select it and change the color of the selected loop. Right-clicking on the selected loop brings up a pop-up menu, and clicking the 'Remove' menu deletes the loop.

앞서 언급한 루프의 기능을 위해, 구현한 주요 클래스는 다음 표 3.3과 같다.For the functions of the aforementioned loop, the main classes implemented are shown in Table 3.3.

Figure pat00003
Figure pat00003

표 3 루프 주요 클래스Table 3 Loop Main Classes

도16은 본 발명에 따른 프로젝트 모듈의 구조를 보여주는 도면으로서, 프로젝트 팩토리의 역할을 하는 펄스 프로젝트 펙토리(PulseProjectFactory)는 프로젝트가 존재하는지를 검사해 펄스 프로젝트(PulseProject)를 새로 생성하거나 기존의 펄스 프로젝트를 로드한다. 또한 로드된 프로젝트에 대한 속성과 파일들을 저장한다. 16 is a view showing the structure of a project module according to the present invention, in which a pulse project factory serving as a project factory checks whether a project exists and creates a new pulse project or loads an existing pulse project. do. It also saves properties and files for the loaded project.

도17은 본 발명에 따른 펄스 프로그램 데이터 오브젝트(PulseProgramDataObject)와 펄스 프로그램 데이터 노드(PulseProgramDataNode)를 보여주는 도면으로서, 비주얼 펄스 시퀀스 프로그램 편집기에서 각 .ppg 파일을 열거나 인식하기 위해서, 펄스 프로그램 데이터 오브젝트(PulseProgramDataObject)와 펄스 프로그램 데이터 노드(PulseProgramDataNode)로 구성된다. 17 is a diagram showing a pulse program data object (PulseProgramDataObject) and a pulse program data node (PulseProgramDataNode) according to the present invention. In order to open or recognize each .ppg file in the visual pulse sequence program editor, a pulse program data object (PulseProgramDataObject) is shown. ) And a pulse program data node (PulseProgramDataNode).

프로젝트에 특정한 파일 확장자와 MIME 타입을 등록 하기위한 팩토리(factory)인 넷빈즈의 데이터 로더(DataLoader)를 통해 펄스 프로그램 데이터 오브젝트를 생성한다. 생성된 펄스 프로그램 데이터 오브젝트는 프로젝트 윈도우와 파일 윈도우가 열렸을 때 .ppg의 모든 파일들이 프로젝트 폴더 아래에 나타나게 한다. Create a pulse program data object through NetBeans' DataLoader, a factory for registering file extensions and MIME types specific to the project. The generated pulse program data object causes all files in the .ppg to appear under the project folder when the project window and the file window are opened.

프로젝트 안의 각 파일들은 펄스 프로그램 데이터 노드에 의해 특정 아이콘이 지정되거나 액션이 지정된다. 각 액션은 메인 파일 지정, 펄스 신 그래프 화면 열기 및 저장 등이 지정 되어있다.Each file in the project is assigned a specific icon or action by a pulse program data node. For each action, the main file designation, pulse scene graph screen opening and saving are designated.

도18은 본 발명에 따른 프로젝트 템플릿(project templates)을 안내 하기 위한 샘플 프로젝트를 제공하는 것을 보여주는 도면으로서, 사용자가 프로젝트를 새로 생성할 때, 프로젝트 템플릿(project templates)을 안내 하기 위해서 샘플 프로젝트를 제공한다. 샘플 프로젝트는 샘플(sample)과 엠티(empty) 패키지로 구성된다. FIG. 18 is a diagram showing providing a sample project for guiding project templates according to the present invention. When the user newly creates a project, FIG. 18 provides a sample project for guiding project templates. do. The sample project consists of a sample and an empty package.

샘플 패키지는 기본 펄스 시퀀스 코드가 입력된 프로젝트 템플릿을 제공하고, 엠티 패키지는 기본 프로젝트 코드가 입력되지 않은 빈 .ppg 파일만을 제공한다. 또한, 메뉴에서 프로젝트를 새로 생성하거나, 프로젝트 윈도우에서 직접 프로젝트를 생성할 수 있다.The sample package provides a project template with the default pulse sequence code entered, and the empty package provides only an empty .ppg file with no default project code. You can also create a new project from the menu, or create a project directly from the project window.

도19는 본 발명에 따른 컴파일러 기능을 보여주는 도면으로서, 컴파일러는 크게 두 가지 기능을 한다. 첫 번째는 사용자가 생성한 펄스 시퀀스 그래프 화면을 파싱해 펄스 시퀀스 프로그램 파일(.ppg)을 생성한다. 19 is a view showing a compiler function according to the present invention, the compiler has two functions. The first one parses the pulse sequence graph screen created by the user and creates a pulse sequence program file (.ppg).

두 번째는 텍스트 형식의 펄스 시퀀스 프로그램 파일을 파싱해서 다시 펄스 시퀀스 그래프 화면에 그려주고 파라미터 값을 넣는다. The second one parses a textual pulse sequence program file, draws it on the pulse sequence graph screen, and puts the parameter value.

앞서 언급한 펄스 시퀀스 그래프 화면은 Pulse, Delay, Gradient와 같은 펄스 컴포넌트와 루프 등을 그림으로 그려주는 화면이다. 이 펄스 시퀀스 그래프 화면을 펄스 시퀀스 프로그램 파일로 파싱해주기 위해서 별도의 자료구조를 설계하였다. The aforementioned pulse sequence graph screen is a screen that draws pulse components and loops such as Pulse, Delay, and Gradient as a picture. A separate data structure was designed to parse this pulse sequence graph screen into a pulse sequence program file.

펄스 시퀀스 그래프 화면은 각 펄스 컴포넌트를 트리구조로 저장한다. 또한 각 펄스 컴포넌트는 고유한 라벨과 종류, 넓이, 높이, 속성, 인덱스 등의 파싱에 필요한 정보를 가진다. 이 정보는 문자열로 얻을 수 있으며, 일종의 태그와 같이 사용한다. The pulse sequence graph screen stores each pulse component in a tree structure. Each pulse component also has its own label, type, width, height, attributes, and information needed for parsing. This information can be obtained as a string and used like a tag.

우선 펄스 시퀀스 그래프 화면에 저장된 펄스 컴포넌트 목록을 각 행(row)에 맞게 순차적으로 토큰 분석(tokenizing)한다. 그리고 Pulse, Delay, Gradient, 루프 등으로 구성된 심볼 테이블(symbol table)에서 비주얼 키워드(visual keyword)를 검사한다. 비주얼 키워드가 존재하면 펄스 컴포넌트의 넓이, 높이, 속성, 인덱스 등이 포함된 문자열 태그에서 속성 값을 가져온다. 마지막으로 파라미터 테이블에서 인덱스의 속성 값을 넣어주고, 펄스 시퀀스 프로그램 코드를 생성한다. 비주얼 키워드가 존재하지 않으면 다시 토큰 분석을 시도 하도록 한다.First, the token component list stored in the pulse sequence graph screen is sequentially tokenized for each row. The visual keyword is examined in a symbol table consisting of pulses, delays, gradients, and loops. If a visual keyword is present, the attribute value is taken from a string tag that contains the width, height, attributes, and index of the pulse component. Finally, input the attribute value of the index in the parameter table and generate the pulse sequence program code. If the visual keyword does not exist, try token analysis again.

도20은 본 발명에 따른 펄스 시퀀스 프로그램은 텍스트 편집기를 보여주는 도면으로서, 기존 텍스트 기반의 Bruker의 펄스 시퀀스 프로그램 편집기는 도 20과 같이 사용자인 fMRI 과학자들은 펄스 프로그래밍 언어에 대한 훈련이 필요하며, 펄스 시퀀스 프로그램은 텍스트 편집기를 사용하고 텍스트 파일로 저장 한다.20 is a diagram showing a pulse sequence program in accordance with the present invention, a text editor, the existing text-based Bruker pulse sequence program editor, as shown in Figure 20 fMRI scientists of the user needs training in the pulse programming language, pulse sequence The program uses a text editor and saves it as a text file.

제안한 비주얼 펄스 시퀀스 프로그래밍 생성기의 성능 평가를 위하여 본 특허에서는 크게 3가지 진단 기준을 통하여 평가하였다. 첫 번째로 생성된 코드의 비교를 통한 정확도 평가, 두 번째는 평균 작업 시간을 통한 효율성 평가, 그리고 마지막으로 사용자의 평가를 통한 편의성 평가로 구성된다. In order to evaluate the performance of the proposed visual pulse sequence programming generator, this patent is evaluated through three diagnostic criteria. The first consists of evaluating the accuracy of the generated code, the second evaluating the efficiency of the average work time, and finally the user's convenience.

따라서 본 발명에 따르면 먼저 제안 방법의 정확도 평가를 수행하였고, 효율성과 편의성 부분의 평가를 위해 현재 의료분야의 펄스 신호처리 전문가들에게 한 달 정도의 기간 동안 테스트 버전을 배포하여 사용하게 하였다. 즉 생성한 코드의 비교를 통한 정확도 평가의 처리 방법을 나타낸다. Therefore, according to the present invention, the accuracy of the proposed method was first evaluated, and the test version was distributed to the pulse signal processing experts in the medical field for about one month for evaluation of efficiency and convenience. That is, the method of processing accuracy evaluation by comparing the generated code is shown.

Figure pat00004
Figure pat00004

표 4. 코드 비교를 통한 정확도 실험 결과Table 4. Accuracy test results by code comparison

도21은 본 발명에 따라 텍스트 편집창과 전환할 수 있는 UI를 보여주는 도면으로서, 비주얼 펄스 시퀀스 편집기는 다음 도 21과 같이, 텍스트 편집창과 전환할 수 있는 UI를 제공한다. 이로써 펄스 시퀀스 그래프 화면 생성 후 부정확한 결과를 얻었거나, 좀 더 복잡한 펄스 시퀀스 프로그래밍이 필요한 경우 사용자가 직접 텍스트를 수정할 수 있도록 하였다. FIG. 21 is a diagram illustrating a UI capable of switching with a text edit window according to the present invention. The visual pulse sequence editor provides a UI capable of switching with a text edit window as shown in FIG. 21. This results in inaccurate results after creating the pulse sequence graph screen, or allows the user to directly modify the text if more complex pulse sequence programming is required.

도 22, 23은 기존의 Bruker의 펄스 프로그래밍언어와 비교한 도면으로서, 해당 실험을 통하여 기존의 Bruker의 펄스 프로그래밍언어와 비교해 펄스 기존의 텍스트 기반의 펄스 시퀀스 프로그램을 시각화 시켜 펄스 프로그래밍 언어에 대한 훈련 없이 편집이 가능하며 사용자에게 직관적인 정보제공이 가능하였다.22 and 23 are diagrams comparing the pulse programming language of Bruker, which is compared to the pulse programming language of Bruker through the experiment, and visualizes the pulse-based text-based pulse sequence program without training for the pulse programming language. It was possible to edit and provide intuitive information to the user.

도24는 본 발명에 따른 펄스 시퀀스 프로그램의 예를 보여주는 도면으로서, 기존의 펄스 시퀀스 프로그램에는 대표적으로 Bruker 펄스 시퀀스 프로그램이 많이 사용되고 있으며, 그 외에 MatNMR, AMBER, MRIcro 등 40여가지의 다양한 펄스 시퀀스 프로그램들이 존재한다. 이러한 펄스 시퀀스 프로그램은 90년도 초반부터 활성화가 되어온 것들로, 같은 펄스 시퀀스 프로그램이라고 하더라도 데이터 처리 목적에 따라 서로 다른 종류로 출시되고 있다.24 is a view showing an example of a pulse sequence program according to the present invention, Bruker pulse sequence program is typically used in the conventional pulse sequence program, in addition to 40 various pulse sequence programs such as MatNMR, AMBER, MRIcro Are present. These pulse sequence programs have been activated since the early 90's, and even the same pulse sequence programs are released in different types according to data processing purposes.

대표적인 예로 Bruker 펄스 시퀀스 프로그램은 ‘95년도부터 출시가 활발하게 되어온 프로그램으로 WINNMR 1D, WINNMR 2D, WIN-SpecEdit, WIN-DAIZY, WIN-Xpert 등 서로 다른 펄스 분석 목적에 맞게 다양한 펄스 프로그램 패키지를 출시하였다. 이는 NMR 분석 프로그램의 대표주자인 Bruker의 가장 큰 장점으로 뽑힌다. 그러나 별도의 NMR 측정에 필요한 파라미터 정보가 필요한 것은 Bruker 프로그램에 있다 단점으로 지적된다. 다음 도 24는 Bruker의 프로그램 샘플로 각 패키지마다 공통으로 작업되는 텍스트 기반의 파라미터 입력 창을 나타낸다.As a representative example, Bruker pulse sequence program has been active since '95 and launched various pulse program packages for different pulse analysis purposes such as WINNMR 1D, WINNMR 2D, WIN-SpecEdit, WIN-DAIZY, and WIN-Xpert. . This is one of Bruker's greatest strengths in the NMR analysis program. However, the need for parameter information for separate NMR measurements lies in the Bruker program. Next, FIG. 24 shows a text-based parameter input window which is commonly used for each package as a Bruker program sample.

일반적으로 Bruker 프로그램의 경우 각 모듈에 해당되는 NMR 분석을 하기 위해서 별도의 텍스트 기반 파라미터를 입력하게 된다. 이러한 부분은 사용자에게 있어 단점이 될 수 있는 부분이다. 해당 NMR 분석을 위해 파라미터 별로 모든 정보를 알고 있어야 하며 별도의 프로그램 코딩이 추가되는 부분 역시 사용하는데 있어 특정 수준 이상의 지식을 요구하게 되는 것이 문제이다.In general, in the case of Bruker programs, separate text-based parameters are entered for NMR analysis for each module. This part can be a disadvantage for the user. The problem is that all the information must be known for each NMR analysis, and additional information coding requires additional knowledge.

도25는 본 발명에 따라 스펙트로미터 조정(Spectrometer Control), 데이터 처리(Data Processing), 시뮬레이션(Simulation), 가시화(Visualization) 로 구분되어 출시되는 것을 보여주는 도면으로서, 상기 Bruker와 달리 다른 종류의 프로그램들은 별도의 싱글 패키지로의 출시되어왔다. FIG. 25 is a diagram illustrating the release of spectrometer control, data processing, simulation, and visualization in accordance with the present invention. It has been released as a separate single package.

일반적으로 분석 목적에 맞게 출시된다는 의미는 크게 펄스 분석의 종류가 스펙트로미터 조정(Spectrometer Control), 데이터 처리(Data Processing), 시뮬레이션(Simulation), 가시화(Visualization) 로 구분되어 출시된다는 의미이다. 이는 다음 도 25에서 분석 목적에 맞게 출시되어온 대표 프로그램들을 나타내었다.In general, it means that it is released for analysis purposes. It means that the pulse analysis is mainly classified into spectrometer control, data processing, simulation, and visualization. This represents representative programs that have been released for analysis purposes in FIG. 25.

이 중 DAMARIS의 경우 Achim G에 의해 개발된 프로그램으로 NMR Spectrometer Controls를 위한 프레임 워크가 개발되었다. 그러나 가시화나 시뮬레이션 하는 부분의 성능 부족으로 펄스 프로그램의 데이터 처리에는 부적합한 형태로 출시되었다. 그리고 MathWorks사의 matNMR을 들 수 있다. matNMR은 Matlab을 통한 대표적인 데이터 처리 프로그램으로 Matlab기반의 NMR과 EPR 스펙트럼의 툴박스를 이용한 것으로 높은 유연성과 호환성을 갖는 것이 가장 큰 특징이다. 다만 다양한 툴박스의 사용으로 시스템의 부담이 적지 않은 것이 단점으로 뽑힌다. Among them, DAMARIS, a program developed by Achim G, developed a framework for NMR Spectrometer Controls. However, due to the lack of performance in the part of the visualization or simulation, it was released in an unsuitable form for data processing in the pulse program. Another example is MathWorks' matNMR. matNMR is a representative data processing program through Matlab, which uses Matlab-based NMR and EPR spectrum toolboxes, and is characterized by high flexibility and compatibility. However, the use of various toolboxes is not a small burden on the system.

시뮬레이션 패키지 중 AMBER의 경우는 NMR 구조의 관계도를 보다 다양한 케이스 별로 시뮬레이션을 할수 있는 대표적인 시뮬레이션 패키지이다. 특히 다른 시뮬레이션 패키지에 비해 보다 직관적이고 빠른 처리 속도가 장점으로 여겨진다. 마지막으로 가시화 패키지 중에 Chris Rorden에 의해 개발된 MRIcro는 다양한 의료 데이터 포맷의 컨버팅과 가시화가 주 목적인 프로그램으로, 대표적으로 DICOM, ECAT, NEMA, GE Signa & LX, Interfile, Picker CT, Siemens Magnetom, 그 외 다양한 raw 데이터 포맷 등을 처리해주는 것이 장점이다.Among the simulation packages, AMBER is a representative simulation package that can simulate the relationship diagram of NMR structure by various cases. In particular, more intuitive and faster processing speed is considered to be an advantage over other simulation packages. Finally, MRIcro, developed by Chris Rorden, is one of the visualization packages that focuses on the conversion and visualization of various medical data formats, including DICOM, ECAT, NEMA, GE Signa & LX, Interfile, Picker CT, Siemens Magnetom, and others. The advantage is that it handles various raw data formats.

그러나 현재 대부분의 상용화된 펄스 시퀀스 프로그래밍 도구들은 텍스트 형식을 지원한다. 물론 복잡한 MRI 펄스 시퀀스를 작성할 수 있다. 하지만, 펄스 시퀀스 프로그램 언어에 대한 세부적인 펄스 시퀀스 프로그램 코드를 직접 작성하는 것은 펄스 프로그래밍 언어에 대해 익숙하지 않은 사람들에게는 매우 힘든 업무가 될지도 모른다. However, most commercially available pulse sequence programming tools now support text formats. Of course, you can write complex MRI pulse sequences. However, writing detailed pulse sequence program code for a pulse sequence programming language can be a daunting task for those unfamiliar with the pulse programming language.

따라서 본 발명은 펄스 시퀀스를 시각화하여 쉽게 펄스 시퀀스 프로그램 코드를 생성 할 수 있도록 fMRI기반의 비주얼 펄스 시퀀스 프로그래밍 생성기를 제안하는 것으로, 펄스 프로그래밍 언어를 학습 할 필요 없이 펄스 시퀀스 프로그램의 신규 작성이나 기존 펄스 시퀀스 프로그램의 수정을 할 수 있는 기존과 차별화된 GUI 플랫폼을 구현하였다.Therefore, the present invention proposes a visual pulse sequence programming generator based on fMRI to visualize a pulse sequence so that a pulse sequence program code can be easily generated. A new pulse sequence program or an existing pulse sequence can be created without learning a pulse programming language. Implemented a GUI platform different from the existing one to modify the program.

도26은 본 발명에 따라 필요한 하드웨어 명령어들(pulses, gradient pulses, timings)을 보여주는 도면으로서, 펄스 시퀀스는 획득된 MR영상을 기반으로 하는 것으로, 이를 측정하는 기술을 말한다. 펄스 시퀀스는 원하는 형식의 데이터를 획득하기 위해서 필요한 하드웨어 명령어들(pulses, gradient pulses, timings)도 포함하며, 적절한 펄스 시퀀스 프로그램 명령어들을 순차적으로 하는 펄스 시퀀스 프로그램의 형식으로 설정한다.FIG. 26 is a diagram illustrating hardware commands (pulses, gradient pulses, timings) required according to the present invention, and the pulse sequence is based on the acquired MR image, and refers to a technique for measuring the same. The pulse sequence also includes the hardware instructions (pulses, gradient pulses, timings) needed to obtain the data in the desired format, and sets the pulse sequence program format to the appropriate pulse sequence program instructions sequentially.

펄스 시퀀스 프로그램은 라인의 숫자로 구성된 ASCII 텍스트이다. 간단한 Brucker의 펄스 시퀀스 프로그램 예제로 다음 도 26과 같이 프로그래밍 되며, 각 라인은 하드웨어나 소프트웨어에 의해 수행되어야 할 어떤 행동을 지정하는 하나 이상의 펄스 시퀀스 프로그램 명령문을 포함 할 수 있다.The pulse sequence program is ASCII text consisting of numbers on a line. A simple Brucker pulse sequence program example is programmed as shown in FIG. 26, where each line may contain one or more pulse sequence program statements that specify certain actions to be performed by hardware or software.

100 : 비주얼 펄스 시퀀스 프로그램 편집기(visual pulse sequence program editor)
200 : 컴파일러
100: visual pulse sequence program editor
200: compiler

Claims (5)

펄스 시퀀스 컴포넌트(component)를 그래픽 화면에 생성하고 편집하도록 하는 비주얼 펄스 시퀀스 프로그램 편집기(visual pulse sequence program editor)와;
상기 비주얼 펄스 시퀀스 프로그램 편집기를 통해 생성된 펄스 시퀀스 그래프 화면(scene)을 펄스 시퀀스 프로그램 코드로 파싱(parsing)하는 펄스 시퀀스 편집기 컴파일러;
로 구성되는 것을 특징으로 하는 비주얼 펄스 시퀀스 편집 시스템.
A visual pulse sequence program editor for creating and editing a pulse sequence component on a graphic screen;
A pulse sequence editor compiler for parsing a pulse sequence graph scene generated by the visual pulse sequence program editor into pulse sequence program code;
Visual pulse sequence editing system, characterized in that consisting of.
제1항에 있어서,
상기 비주얼 펄스 시퀀스 프로그램 편집기는,
센트럴 룩업모듈을 더 포함하고,
상기 센트럴 룩업모듈은 사용자가 펄스 시퀀스 화면에서 펄스 컴포넌트들을 추가하거나 편집할 때, 속성 값을 공유해 펄스의 높이나 넓이 등의 변화에 따라 실시간으로 펄스 시퀀스 그래프 화면을 갱신하고, 동기화하는 것을 특징으로 하는 비주얼 펄스 시퀀스 편집 시스템.
The method of claim 1,
The visual pulse sequence program editor,
Further includes a central lookup module,
When the user adds or edits pulse components in the pulse sequence screen, the central lookup module updates and synchronizes the pulse sequence graph screen in real time according to a change in the height or width of the pulse by sharing property values. Pulse sequence editing system.
제1항에 있어서,
상기 비주얼 펄스 시퀀스 프로그램 편집기는,
탑 컴포넌트들로 화면에 표시하며, 상기 화면에 표시된 탑 컴포넌트는 Pulse, Delay, Gradient 등의 속성 값 목록을 편집하는 파라미터(Parameter)모듈과, Pulse, Delay, Gradient 등의 펄스 컴포넌트 목록을 나타내는 팔렛(Palette) 모듈과, 펄스 시퀀스 프로그램을 보여주는 펄스 시퀀스 그래프 화면(Pulse Scene) 모듈과, 펄스 위젯(widget) 목록을 표시하는 인스펙터(Inspector) 모듈과, 선택된 펄스 위젯에 대한 속성 및 인덱스를 편집할 수 있도록 하는 속성 창(Properties) 모듈과, 펄스 시퀀스 프로그램 프로젝트를 관리하는 프로젝트(Project) 모듈로 구성되는 것을 특징으로 하는 비주얼 펄스 시퀀스 편집 시스템.
The method of claim 1,
The visual pulse sequence program editor,
The top components displayed on the screen are displayed on the screen, and the top component displayed on the screen includes a parameter module for editing a property value list such as pulse, delay, and gradient, and a palette representing a list of pulse components such as pulse, delay, and gradient. Palette module, Pulse Scene Graph module showing pulse sequence program, Inspector module showing pulse widget list, and properties and indexes for selected pulse widgets. A visual pulse sequence editing system comprising: a Properties window module, and a Project module for managing a pulse sequence program project.
제1항 또는 제2항에 있어서,
상기 비주얼 펄스 시퀀스 프로그램 편집기는,
펄스 파라미터 탑 컴포넌트에 펄스 파라미터 입력 테이블이 추가되는 데, 상기 펄스 파라미터 탑 컴포넌트는 Pulse, Delay, Gradient 를 포함하는 펄스 종류별로 탭을 구성하고, 상기 탭 안에 펄스의 넓이(duration), 진폭(power, amplitude) 을 포함하는 속성 값을 탭으로 표시하고, 상기 파라미터 테이블을 구성하는 하나의 상기 탭에는 파라미터 테이블 모델 (AbstractParameterTableModel)클래스, 테이블 패널(TablePanel) 클래스, 파라미터(Parameters) 클래스로 구성되며,
상기 파라미터 테이블 모델 (AbstractParameterTableModel)클래스는 펄스 테이블의 행과 열에 입력되는 데이터를 관리하고, 속성 값 변화에 대한 이벤트를 감지하고, 상기 테이블 패널(TablePanel) 클래스는 파라미터 테이블 모델을 표시하고, 상기 파라미터(Parameters) 클래스는 테이블 모델의 속성 값을 타 모듈과 공유하고 모든 테이블 모델의 속성 값을 배열로 저장하며 상기 센트럴 룩업에 등록하고,
상기 파라미터 모듈과 센트럴 룩업에 등록된 다른 모듈의 파라미터 속성 값을 동기화하여, 사용자가 파라미터 속성 값을 입력하거나 수정 할 때, 펄스 신 시퀀스 그래프의 화면과 속성 창에 변경된 속성 값이 적용되도록 하여 통합된 입력 창을 통한 파라미터 입력 방식과, 펄스 시퀀스 프로그램 작업 중에도 파라미터 수정이 가능한 것을 특징으로 하는 비주얼 펄스 시퀀스 편집 시스템.
The method according to claim 1 or 2,
The visual pulse sequence program editor,
A pulse parameter input table is added to the pulse parameter top component, wherein the pulse parameter top component configures taps by pulse types including pulses, delays, and gradients, and the widths, amplitudes, the attribute value including amplitude is displayed as a tab, and the one tab constituting the parameter table includes a parameter table model class, a table panel class, and a parameter class.
The parameter table model class manages data input to rows and columns of a pulse table, detects an event about a change in an attribute value, and the table panel class displays a parameter table model, and the parameter ( Parameters class shares the property values of the table model with other modules, stores the property values of all table models in an array, and registers them in the central lookup.
Synchronize the parameter attribute values of the parameter module with other modules registered in the central lookup so that when the user enters or modifies the parameter attribute values, the changed attribute values are applied to the screen and the attribute window of the pulse scene sequence graph. Visual pulse sequence editing system, characterized in that the parameter input method through the input window, and the parameters can be modified during the pulse sequence program operation.
비주얼 펄스 시퀀스 프로그램 편집기를 통하여 펄스 시퀀스 컴포넌트(component)를 그래픽 화면에 생성하고 편집하는 단계와;
펄스 시퀀스 편집기 컴파일러를 통하여 상기 비주얼 펄스 시퀀스 프로그램 편집기를 통해 생성된 펄스 시퀀스 그래프 화면(scene)을 펄스 시퀀스 프로그램 코드로 파싱(parsing)하는 단계;로 구성되되,
상기 비주얼 펄스 시퀀스 프로그램 편집기에 포함된 센트럴 룩업모듈을 통하여, 사용자가 펄스 시퀀스 화면에서 펄스 컴포넌트들을 추가하거나 편집할 때, 속성 값을 공유해 펄스의 높이나 넓이 등의 변화에 따라 실시간으로 펄스 시퀀스 그래프 화면을 갱신하고, 동기화하는 단계가 더 포함되어 구성되는 것을 특징으로 하는 비주얼 펄스 시퀀스 편집 방법.
Creating and editing a pulse sequence component on a graphic screen through a visual pulse sequence program editor;
Parsing a pulse sequence graph scene generated by the visual pulse sequence program editor through a pulse sequence editor compiler into pulse sequence program code;
Through the central lookup module included in the visual pulse sequence program editor, when the user adds or edits pulse components in the pulse sequence screen, the attribute values are shared to display the pulse sequence graph screen in real time according to the change of the height or width of the pulse. And updating and synchronizing.
KR1020110130681A 2011-12-08 2011-12-08 Visual pulse sequence edit system and the method thereof KR20130064195A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110130681A KR20130064195A (en) 2011-12-08 2011-12-08 Visual pulse sequence edit system and the method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110130681A KR20130064195A (en) 2011-12-08 2011-12-08 Visual pulse sequence edit system and the method thereof

Publications (1)

Publication Number Publication Date
KR20130064195A true KR20130064195A (en) 2013-06-18

Family

ID=48861205

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110130681A KR20130064195A (en) 2011-12-08 2011-12-08 Visual pulse sequence edit system and the method thereof

Country Status (1)

Country Link
KR (1) KR20130064195A (en)

Similar Documents

Publication Publication Date Title
US10223338B2 (en) Visual designer for editing large schemaless XML file
CN103207779B (en) Apparatus and method for source code patch
Marcus et al. When and how to visualize traceability links?
JP4179537B2 (en) Processing web editor for data processing on digital oscilloscopes or similar equipment
WO2018048791A1 (en) Techniques for automatically generating documentation for computer programs
US8429548B2 (en) Automatically suggesting graphical program elements for inclusion in a graphical program
US8868524B2 (en) Floating merge selection viewer
Sánchez Ramón et al. Model-driven reverse engineering of legacy graphical user interfaces
CA2937964A1 (en) Systems and methods for bi-directional visual scripting for programming languages
CN103282879A (en) Screen creation system for programmable indicator
GB2434658A (en) Method, apparatus and computer program product for providing status of a process
US9547409B2 (en) Navigable graph of a service level management document
US20020054155A1 (en) Data module design system
US9569182B2 (en) Integrated development environment and method
Lumertz et al. User interfaces metamodel based on graphs
US20070136333A1 (en) Method of inspection and a user interface for a business measure modeling tool
US7676790B1 (en) Plasma processing system component analysis software and methods and systems for creating the same
JP2016181301A (en) Information processing apparatus, control method of information processing apparatus, and program
Chen et al. T-star: a text-based istar modeling tool
KR20130064195A (en) Visual pulse sequence edit system and the method thereof
US20200409672A1 (en) Constraint based authoring
Honkonen et al. WOKE: A novel workflow model editor
Borgfeld Tool Support for Layout Algorithm Development with ELK
Nelli Beginning JavaScript Charts: With jqPlot, d3, and Highcharts
Loth Enhancing ProMoEE and DyVProMo with Additional Features to Foster Empirical Studies in the Context of Process Models Comprehension

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application