GOGuide GO Guide

From Big Data Analytics Lab

Project GO Guide GENOS Download Publication




Go Guide

1. GO Guide 개요
GO Guide는 Gene Ontology를 검색하는 브라우저로서 웹 인터페이스를 통한 검색을 지원한다. 기본적으로 Gene Ontology상의 Term에 대한 정보, Gene Product에 대한 정보를 검색을 지원하며 키워드기반 검색뿐만 아니라 트리, 그래프 검색환경을 통한 Term간의 연결 관계 및 계층정보를 표현한다. 또한 이와 같은 탐색 환경에서 손쉽게 질의를 생성하는 기능을 제공함으로써 단순 키워드 검색으로 불가능한 복합적인 관계에 대한 정보 검색이 가능하다.

2. 실행 환경

  • 웹 브라우저 – Go Guide는 JSP 기반의 프로그램으로 다른 실행환경의 설치가 불필요하다. 단 그래프 탐색을 위해서는 자바가상머신의 설치가 필요하다.

자바가상머신은 다음의 주소에서 다운로드가 가능하다.
http://www.java.com/ko/download/manual.jsp

  • 펜티엄3 733Mhz 이상의 PC 권장 – 원활한 그래프 표현을 위한 최소 환경


3. 기능 설명
3.1 기본 화면
Image001.png
그림 1. 기본 화면

그림 1은 GO Guide의 전체 실행화면을 나타낸다. GO Guide는 크게 정보가 표현되는 (1)프레임과 키워드나 질의를 입력하는 (2)프레임으로 나뉘어져 있다. 프레임 (1)에서는 트리, 그래프 검색이 가능하며 특정 Term이나 Gene Product에 대한 상세정보, 질의 결과가 표시되며, 프레임 (2)에서는 키워드 입력 탭(Browse GO), 질의 생성 탭(Query GO), 분류 탭(Classify)으로 검색 하고자 하는 조건이나 질의를 입력하게 된다.
본 매뉴얼에서는 . ‘biosynthesis’라는 term에 대해 검색을 수행하는 과정을 통해 각 프레임과 기능을 설명한다.

3.2 키워드 도우미(Keyword Helper)
GO Guide에서는 검색을 위해 키워드를 입력할 때 정확한 키워드를 모르거나 편리한 입력을 지원하기 위해 특정 키워드가 들어간 단어를 검색해서 입력할 수 있게 해준다. ‘biosynthesis’라는 term을 입력하기 위해 프레임 (2)의 ‘Browse GO’ 탭에서 ‘bio’라는 단어를 입력하고 Help 버튼을 누르면 데이터베이스 상에서 ‘bio’로 시작되는 단어를 나열하고 원하는 단어를 선택할 수 있게 함으로써 사용자의 입력을 돕는다.
Image003.png
그림 2. 키워드 도우미

3.3 상세 정보 표현
이와 같은 과정을 통해 ‘biosynthesis’를 입력하고 Search 버튼을 누르면 그림 3과 같이 프레임 (1)에 ‘biosynthesis’ term에 대한 요약 정보가 나온다. 여기서 Name이나 Association 부분을 선택하면 해당 term을 위한 기능들이 메뉴로 나타난다. GO guide는 이와 같이 특정 대상에 대해 관련된 기능을 메뉴로 제공한다.
Image005.png
그림 3. 요약정보 표현
여기서 ‘biosynthesis’ term에 대한 상세 정보를 표현하기 위해서는 ‘Show term in detail’을 선택하면 그림 4와 같이 상세 정보가 표현된다.
Image007.png
그림 4. 상세정보 표현

3.4 트리 정보 표현 및 검색
그림 3에서 ‘Show term in tree’를 선택하면 그림 5와 같이 ‘biosynthesis’를 중심으로 한 계층구조를 나타내는 tree가 프레임 (1)에 생성되며, tree상의 term을 선택해서 트리를 통한 검색이 가능하다. 또한 한 노드를 선택 시 관련 기능이 메뉴로 표현되어 선택이 가능하다.

Image009.png
그림 5. tree 검색 화면

3.5 그래프 정보 표현 및 검색

그림 5의 오른쪽 상단에 ‘Graphical View’를 선택하면 그림 6과 같은 그래프 기반의 탐색 환경이 나타나며, 그래프의 연결 관계를 통해 탐색이 가능하다. 이때 수 많은 노드가 표현되어 탐색의 어려움이 발생하는 것을 막기 위해 탐색이 되고 있는 노드를 중심으로 거리(한 노드와 다른 노드간의 간선의 최소 수) 3까지의 노드만 표현하며 탐색이 표현된 그래프의 범위를 넘어갈 경우 연결된 부분이 동적으로 생성된다. 여기서도 마찬가지로 노드를 선택함으로써 그래프를 전개하며 탐색을 수행하거나 관련 기능이 메뉴로 표현된다.
Image011.png
그림 6. 그래프 검색 화면


지금까지 프레임 (1)에서 표현되는 모든 정보에서 해당 대상을 위한 메뉴가 표현되었는데, 탐색을 위한 기능은 조금씩 다를 수 있지만 질의 생성을 위해 공통적으로 ‘Put into Subject’, ‘Put into Object’ 메뉴를 가지고 있다. ‘Put into Subject’는 해당 term을 질의의 Subject로, ‘Put into Object’는 Object로 입력하는 것으로서, 이것은 프레임 (2)의 ‘Query Go’ 탭에서 질의를 생성하는데 있어 키워드, 트리, 그래프 기반에서 탐색하던 내용을 바로 질의로 연계할 수 있도록 지원한다.


3.6 질의 생성

프레임 (2)의 ‘Query Go’ 탭은 질의를 생성하는 것으로서 위와 같이 메뉴를 통한 입력뿐만 아니라 사용자가 직접 키워드를 넣어서 질의 생성이 가능하다. 여기서 질의는 특정 질의문을 기술하는 것이 아니라, RDF의 트리플 관계에 따라 Subject, Object, Predicate 관계를 기술하도록 하여 직관적으로 사용할 수 있으며, Predicate은 Gene Ontology에 기술되는 4가지 유형의 Predicate을 메뉴로 선택하도록 정형화 하였다. 따라서 사용자는 질의 문법에 구애 받지 않고 쉽게 질의를 생성할 수 있다. 질의에 대한 자세한 내용은 다음 장에서 자세히 다루어지며 여기서는 UI 동작과 관련하여 질의를 수행하는 예를 간단히 설명하도록 한다.

Image013.png
그림 7. 질의 생성 과정


‘Query Go’ 탭에서 찾고자하는 정보에 대한 트리플 관계를 모두 입력 하거나 그래프, 트리탐색 메뉴나 상세 정보 메뉴의 ‘put’을 사용함으로써 트리플 형태의 질의 문장을 만든 후 Add triple버튼을 누르면 새로운 창에 생성된 질의가 표현된다. 이때 질의는 여러 문장을 입력할 수 있으며 이와 같은 방법으로 복합적인 질의를 수행하는 질의문을 생성할 수 있으며 이것은 모두 새로운 창에 표현되고 질의가 완성되면 ‘send query’ 버튼을 눌러서 질의가 수행된다. 이때 'Show Gene Products'은 해당 Gene Product의 내용을, 'Show Intermediate Results'는 질의가 여런 단계를 거쳐 수행 될 경우 중간 결과를 표현하도록 한다. 다음의 그림 8은 이와 같은 과정을 거쳐 Biosynthesis term과 lipid metabolism term의 공통 자손의 term을 검색한 결과이다.

Image015.png

그림 8. 질의 수행 결과

3.7 분류(Classify)


Gene Product은 여러 Term에 관계가 될 수 있기 대문에 Gene Product에 대한 검색 결과에서 Gene Product가 Term들에게 어떻게 관계되는지를 표현하도록 프레임 (2)의 ‘Classify’ 탭에서 분류 기능을 지원한다.


Image017.png

그림 9. Gene Product 입력


그림 9와 같이 ‘Classify’ 탭에 분류를 통해 검색하고자 하는 Gene Product를 입력하고 ‘Add Gene Product’를 누르면 새 창에 입력한 Gene Product들이 입력되고, ‘send query’를 누르면 그림 10과 같이 해당 Gene Product들이 Trem들과 어떻게 연관 되는지를 트리 형태로 표현하고 각 요소의 왼쪽에 해당 Term에 관련된 Gene Product의 수를 표시한다.

Image019.png

그림 10. Gene Product와 Term에 대한 분류 표현

4. 질의 기능 설명
4.1 질의 및 분류 기능 개요
이론적으로는, ‘Query GO’ 및 ‘Classify’ 탭에서 제공하는 대부분의 기능들은 ‘Browse GO’ 탭의 브라우징 기능을 편리하게 도와주는 역할을 한다. 즉, 질의 처리기나 분류기를 통해 얻을 수 있는 결과들은 브라우징 기능만 이용해도 수동적으로 얻을 수 있다. 그러나, 예를 들어 biosynthesis와 lipid metabolism의 common descendent term들을 찾으려 할 때, 단순 브라우징만 이용하는 경우 biosynthesis의 모든 descendent term들과 lipid metabolism의 모든 descendent term들을 일일이 비교해 보아야 하지만, 질의 처리기를 이용하면 한 번의 질의로 원하는 결과를 얻을 수 있다. 또 다른 예로, 유전체 VKGC_HUMAN과 UROK_HUMAN가 둘 다 관여하는 term들을 찾으려 할 때, 단순 브라우징만 이용하는 경우 모든 term들의 상세 정보를 일일이 보면서 그 중 두 유전체가 관련되어 있는 term들을 찾아야 하고, 이는 현실적으로 거의 불가능하다. 하지만 분류기를 이용하면 한 번의 수행으로 원하는 결과를 얻을 수 있다.

4.2 Query GO 설명
Query GO 탭은 다음과 같이 구성되어 있다.
Image021.png


Query GO 탭의 질의문은 쉽게 이해할 수 있도록 구성되어 있다. ①은 질의 결과의 종류로서, term 또는 gene product를 선택하면 된다. ②와 ③은 합쳐져 하나의 term 또는 gene product를 지칭하고, ⑤와 ⑥도 마찬가지로 하나의 term 또는 gene product를 지칭한다. ④는 ②③과 ⑤⑥ 사이의 관계를 지칭한다. 하나의 문장이 완성되면 Add triple 버튼을 누른다. 이런 식으로 여러 문장들을 질의에 포함시킬 수 있다. 중요한 것은, X는 우리가 찾으려 하는 term/gene product를 지칭한다는 것이다. 즉, 예를 들어 biosynthesis와 lipid metabolism의 common descendent term들을 찾으려 한다면, “Find X such that X is descendent term of GO:0009058(biosynthesis의 ID)”와 “Find X such that X is descendent term of GO:0006629(lipid metabolism의 ID)”의 두 질의문으로 질의를 하면 된다. ④에 대해 좀 더 자세히 설명하자면, ④에서 ‘is child term of’나 ‘is descendent of’나 ‘is part of’가 선택된 경우엔 ④의 앞과 뒤에는 term들이 와야 하지만, ‘is annotated to’가 선택된 경우엔 ④의 앞엔 gene product가 오고 뒤엔 term이 와야 한다. ④의 앞과 뒤에 X가 올 수 있으므로 ‘is parent term of’나 ‘is ancestor of’와 같은 술어는 불필요하다.(‘is child term of’와 ‘is descendent of’를 이용하면 된다.)

4.3 Triple 개념
Triple 구조는 RDF 및 OWL에서 정보를 기술하기 위해 사용하는 데이터모델로서, 주어(subject), 술어(predicate), 목적어(object)로 구성된다. Triple은 다음과 같이 그래프로 표현될 수 있다.
Image023.png


GOGuide에서는 triple을 (Subject, Predicate, Object)와 같이 표현한다. 여기서 Subject는주체, Object는 객체, Predicate는 Subject와 Object의 관계를 기술한다. 이 때, Subject와 Object에는 GO term의 URI나 gene product ID 또는 변수가 올 수 있다. 변수는 변수명 앞에 물음표를 붙인다(예: ?x). Predicate에는 isSubClassOf(child term), isSubClassOf_Trans(descendent term), isPartOf(part-of relationship), isAnnotatedTo(term과 gene product의 연관 관계) 등이 올 수 있다. 예를 들어, x가 y의 child term이라는 것을 triple로 표시하면, (?x isSubClassOf ?y)와 같다.


4.4 Triple 생성기법


Query GO 탭에서 질의문을 입력하고 Add triple 버튼을 누를 때마다 별도의 창에 RQL triple과 유사한 triple이 추가된다. term에 관한 질의인 경우(즉, 질의문 입력시 ①에서 term이 선택된 경우), Show Gene Products 항목을 체크하면 질의 결과 term들에 대해 그들과 관련된 gene product들에 관한 정보도 함께 표시된다. 그리고, Show Intermediate Results 항목을 체크하면 triple들을 하나씩 추가하면서 triple 수행 결과를 보여준다. 그런데 주의할 점은, triple 창의 triple들은 RQL triple과 유사하게 생겼지만 RQL triple이 아니며, 내부적으로 SeRQL로 변환되어 처리된다는 것이다.



4.5 SeRQL 개념 설명
GoGuide는 사용자가 입력한 Triple형태의 질의를 내부적으로 SeRQL로 변환하여 사용한다. 그 이유는 GoGuide의 하부에서 사용되는 Sesame에서 지원하는 SeRQL 질의처리기가 다른 언어에 비해 좋은 성능을 보이며, RQL에 비해 표현력이 뛰어나기 때문이다. SeRQL의 표현을 살펴보면 다음과 같다.
Image025.png


위 그림은 SeRQL의 구조와 그 표현을 나타내고 Subject의 값이 “John”을 포함하는 스트링을 가지며 이 Subject의 Predicate값으로 각각 pre1과 pre2를 가지는 Object인 Obj1, Obj2를 찾는 질의문이다. SELECT문에서는 자기가 찾고자 하는 변수를 넣고 FROM 절에는 찾고자 하는 데이터의 구조가 들어가게 된다. 그리고 WHERE 절에서는 특정 조건이 들어가고 namespace가 설정되도록 된다. 특히 FROM 절에서는 expression 경로가 사용되어 질의가 처리된다.


4.6 SeRQL 설명
SeRQL(Sesame RQL)은 Sesame 시스템에서 사용하는 언어로서, RQL 표준에 제시된 기능들 중 대부분을 지원하고 있다. 사용자가 입력한 triple들은 온톨로지가 저장되어 있는 실제 OWL 문서 구조에 대한 SeRQL 질의로 변환되고, 시스템은 이를 처리한다. 다음 그림은 예제 질의문들과 그에 대응되는 triple들과 그에 대응되는 SeRQL 질의문을 보여주고 있다.
Image027.png

Image029.png

Image031.png

Image029.png

Image033.png

4.7 기본 질의예제

1.
원하는 것: germination의 child term들과 해당 term에 관련된 gene product들
Query GO 질의문: Find term X such that X is child term of GO:0009844
Triples: (?X isSubClassOf http://147.46.121.163/~hyjung/go#GO_0009844)

(?Y isAnnotatedTo ?X)

SeRQL query: SELECT X,NAME,GENESYMBOL,DATASOURCE,EVIDENCE
FROM {X} serql:directSubClassOf {<http://147.46.121.163/~hyjung/go#GO_0009844>}
{X} go:name {NAME},
{X} go:association {} go:evidence {A}; go:gene_product {B},
{A} go:evidence_code {EVIDENCE},
{B} go:name {GENESYMBOL};
go:dbxref {} go:database_symbol {DATASOURCE}

2.
원하는 것: antibiotic biosynthesis의 descendent term들
Query GO 질의문: Find term X such that X is descendent term of GO:0017000
Triples: (?X isSubClassOf_Trans http://147.46.121.163/~hyjung/go#GO_0017000)
SeRQL query: SELECT X,NAME
FROM {X} rdfs:subClassOf {<http://147.46.121.163/~hyjung/go#GO_0017000>}


3.
원하는 것: neuron differentiation의 parent term들
Query GO 질의문: Find term X such that GO:0030182 is child term of X
Triples: (http://147.46.121.163/~hyjung/go#GO_0017000 isSubClassOf ?X)
SeRQL query: SELECT X,NAME
FROM {<http://147.46.121.163/~hyjung/go#GO_0017000>} serql:directSubClassOf {X}

4.
원하는 것: adult behavior의 ancestor term들
Query GO 질의문: Find term X such that GO:0030534 is descendent term of X
Triples: (http://147.46.121.163/~hyjung/go#GO_0030534 isSubClassOf_Trans ?X)
SeRQL query: SELECT X,NAME
FROM {<http://147.46.121.163/~hyjung/go#GO_0030534>} rdfs:subClassOf {X}


5.
원하는 것: adult behavior와 cell communication의 common ancestor term들
Query GO 질의문: Find term X such that GO:0030534 is descendent term of X
and GO:0007154 is descendent term of X
Triples: (http://147.46.121.163/~hyjung/go#GO_0030534 isSubClassOf_Trans ?X)
(http://147.46.121.163/~hyjung/go#GO_0007154 isSubClassOf_Trans ?X)
SeRQL query: SELECT X,NAME
FROM {<http://147.46.121.163/~hyjung/go#GO_0030534>} rdfs:subClassOf {X},
{<http://147.46.121.163/~hyjung/go#GO_0007154>} rdfs:subClassOf {X}


6.
원하는 것: biosynthesis와 lipid metabolism의 common descendent term들
Query GO 질의문: Find term X such that X is descendent term of GO:0009058
and X is descendent term of GO:0006629
Triples: (?X isSubClassOf_Trans http://147.46.121.163/~hyjung/go#GO_0009058)
(?X isSubClassOf_Trans http://147.46.121.163/~hyjung/go#GO_0006629)
SeRQL query: SELECT X,NAME
FROM {X} rdfs:subClassOf {<http://147.46.121.163/~hyjung/go#GO_0009058>},
{X} rdfs:subClassOf {<http://147.46.121.163/~hyjung/go#GO_0006629>}


7.
원하는 것: proplastid의 일부분이면서 plastid stroma에 속하는 term들
Query GO 질의문: Find term X such that X is part of GO:0009537
and X is descendent term of GO:0009532
Triples: (?X isPartOf http://147.46.121.163/~hyjung/go#GO_0009537)
(?X isSubClassOf_Trans http://147.46.121.163/~hyjung/go#GO_0009532)
SeRQL query: SELECT X,NAME
FROM {X} serql:directSubClassOf {} owl:onProperty {part_of}; owl:someValuesFrom <http://147.46.121.163/~hyjung/go#GO_0009537>},
{X} rdfs:subClassOf {<http://147.46.121.163/~hyjung/go#GO_0009532>}

8.
원하는 것: gene product AA2A_HUMAN이 관여하는 모든 term들
Query GO 질의문: Find term X such that gene AA2A_HUMAN is annotated to X
Triples: (AA2A_HUMAN isAnnotatedTo ?X)
SeRQL query: SELECT TERM,NAME
FROM {TERM} go:association {} go:gene_product {} go:name {AA2A_HUMAN},
{TERM} go:name {NAME}

4.8 예제

proplastid의 일부분이면서 plastid stroma에 속하는것을 찾는 예제
Image035.png
Image037.png
Image039.png
Image041.png
Image043.png
Image045.png
Image047.png
Image049.png
Image051.png
Image053.png
Image055.png
Image057.png
Image059.png
Image061.png
Image063.png

Image065.png