Skip to content

BioSQL #

Find similar titles

26회 업데이트 됨.

Edit
  • 최초 작성자
  • 최근 업데이트
    hspark

Structured data

Category
Software

BioSQL은 유전체 정보를 담을 수 있는 General 한 데이터 모델을 가지고 있는 스키마로써 다양한 종류의 유전체 정보의 데이터 구조 이해하고 데이터 모델 설계를 하는데 훌륭한 back bone의 역할을 할 수 있다.

BioSQL이란? #

BioSQL은 유전체 정보를 통합적으로 저장할 수 있는 관계형 데이터베이스(RDB)의 스키마이다.
여기에는 유전자 정보 및 각종 온톨로지(ontology) 정보 및 논문 정보 등 다양한 정보를 저장할 수 있도록 데이터 모델이 설계되었다. 또한, 여러 종류의 Bio* 프로젝트(BioJava, BioPython, BioPerl 등)에서 BioSQL 스키마가 적용된 데이터베이스의 데이터 처리할 수 있는 기능을 제공하는 라이브러리를 제공하고 있다.
BioSQL은 현재 PostgreSQL, MySQL, Oracle 등의 관계형 데이터베이스에 대한 DDL 파일을 제공하며 데이터베이스에 자동으로 DDL 파일이 적용될 수 있도록 스크립트 프로그램도 함께 제공하고 있다. 이를 활용하며 누구나 쉽게 BioSQL 스키마가 적용된 데이터베이스를 생성할 수 있고, 또한 NCBI로부터 Taxon정보를 자동으로 다운로드 받고 TAXON, TAXON_NAME 테이블에 초기 데이터를 로드 할 수 있는 스크립트도 제공하고 있다. 사용자는 몇 가지 스크립트 실행만으로 BioSQL가 적용된 데이터베이스를 생성할 수 있도록 하고 있다.

-출처 : http://biopython.org/wiki/BioSQL

BioSQL 스키마의 특징 #

약한 엔티티 유형(Weak Entity Type)의 모델을 가진다. 데이터 모델링에서 Entity 타입은 보통 '엔티티'라고 부르는 강한 엔티티 타입과 약한 엔티티 타입으로 구분할 수 있다. 강한 Entity 타입은 다른 엔티티의 참조 없이 독자적으로 존재할 수 있는 엔티티를 말한다. BioSQL의 엔티티들은 반드시 상위 객체를 가져야 하는 약한 엔티티 유형의 엔티티들로써 Bioentry를 중심으로 몇몇 엔티티들의 참조 관계를 가지는 구조로 데이터를 저장하도록 모델링 되어 있다.

BioSQL의 Entities #

BioSQL은 위에 ERD 그림에서 보이는 것처럼 크게 네 개의 카테고리(1~3, 5)로 유전체 정보를 저장하고 있으며, 4번째 Entity 그룹은 유전체 정보의 관계(계층구조) 정보만을 저장하고 있다.

1. Bioentry with Taxon and Namespace #

1.1 BIOENTRY #

BioSQL의 핵심엔티티이다. 하나의 엔트리 혹은 레코드정보를 가지며 레코드의 이름, 고유 아이디, 버전 정보 등을 저장한다. 공개된 public 데이터뿐만 아니라 개인데이터도 Bioentry 형태로 등록해서 관리 할 수 있다.

다음과 같이 GBK 포맷으로 된 서열정보는

LOCUS       S63169S6                  22 bp    DNA     linear   PRI 25-AUG-1993
DEFINITION  NDP=Norrie disease {first three exons, microdeletion regions}
ACCESSION   S63178
VERSION     S63178.1  GI:386456
...
//

다음과 같이 Bioentry 형태로 저장된다.

name:       S63169S6
accession:  S63178
identifier:     386456
division:       PRI
description:    NDP=Norrie disease {first three exons, microdeletion regions}
version:    1

1.2 BIODATABASE #

Biodatabase는 bioentry의 집합으로, 하나의 bioentry는 반드시 하나의 특정 biodatabase에 속하게 된다. 그러므로 하나의 Biodatabase는 여러 bioentry를 가지게 된다.

다음 SQL문을 통해 한 biodatabase 내에 속한 모든 bioentry의 accession 번호를 확인할 수 있다

 SELECT DISTINCT bioentry.accession
 FROM   bioentry JOIN biodatabase USING (biodatabase_id)
 WHERE  biodatabase.name = '[biodatabase name]'

1.3 BIOSEQUENCE #

BioSequence는 한 bioentry 마다 만들 수 있으며, bioentry의 raw 서열을 저장할 필요가 있을 때 생성한다. 서열과 서열 알파벳 ('protein', 'dna', 'rna'), 서열 길이를 저장한다.

다음 SQL문은 가장 긴 서열의 description을 보여준다.

SELECT   bioentry.description
 FROM     bioentry
          JOIN biodatabase USING (biodatabase_id)
          JOIN biosequence USING (bioentry_id)
 WHERE    biodatabase.name = 'genbank'
 ORDER BY biosequence.length DESC
 LIMIT 1

1.4 BIOENTRY RELATIONSHIP #

Bioentry가 서로 Relationship을 가질 때 사용한다.

1.5 TAXON, TAXON_NAME #

BioSQL은 taxonomic information을 관리할 수 있는 TAXON과 TAXON_NAME 테이블을 가진다. NCBItaxonomy database 의 구조를 반영하여 만들어 졌으며 bioentry의 organism정보를 이 테이블을 이용해여 관리할 수 있다 (하나의 bioentry는 오직 하나의 Taxon을 가지며 필수는 아니다).

NCBI가 제공하는 load_taxonomu.pl를 이용하면 Taxon과 taxon_name에 organism 정보를 로딩할 수 있다. TAXON 테이블의 taxon_id 필드에는 NCBI의 taxon id가 저장되고 TAXON_NAME의 name_class필드에는 Taxon 이름을 서명하는 정보 ('scientific name', 'common name', 'synonym' 등)이, name 필드에는 실제 taxon의 이름(예를 들어 'Homo sapiens')이 저장된다.

다음은 'Homo sapiens'의 parents Txon을 찾는 SQL 문이다.

 SELECT parent.ncbi_taxon_id
 FROM   taxon AS parent
        JOIN taxon AS child
        ON child.parent_taxon_id = parent.ncbi_taxon_id
        JOIN taxon_name
        ON taxon_name.taxon_id = child.ncbi_taxon_id
 WHERE  taxon_name.name = 'Homo sapiens';

2. Sequence Features with Location and Annotation #

2.1 SEQFEATURE #

BIOENTRY의 feature 정보 (STS, CDS, exon 등의 구조 정보 등) 는 BIOENTRY 등록 시 해당 레코드에서 정의된 특정 소스에 대한 정보 및 연관된 특정 qualifiers에 대하여 정의한다. 각 source, qualifier term 등의 상세정보는 TERM에서 정의된다.

2.2 LOCATION #

각 SEQFEATURE 에 대한 위치 정보를 정의한다. 해당 feature의 시작 위치, 종료 위치 및 방향성 등의 정보를 포함한다. 하나의 feature 정보에 불분명한 위치 형태를 위한 NULL 값의 위치 정보나 다중의 위치 정보 등을 처리할 수 있다. 또한, 연관된 bioentry의 dbxref_id 링크를 통한 원격 서열에 대한 위치 정보도 처리할 수 있다.

2.3 SEQFEATURE_RELATIONSHIP #

하나의 SEQFEATURE와 연관된 SUB-SEQFEATURE 에 대한 정보들도 포함된다. (Many-To-Many 관계를 가질 수 있다) 이러한 relationship 정보는 term_id 필드를 이용하여 TERM 테이블에서 조회할 수 있다.

3. Ontology Terms and Relationships #

3.1 ONTOLOGY, TERM #

ONTOLOGY 테이블은 기본적으로 특정 용어들의 사전 역할을 한다. TERM 테이블과 TERM_RELATIONSHIP 테이블의 ONTOLOGY_ID 항목에 대한 이름과 상세 정보를 연계해주는 역할을 한다.
TERM 테이블은 SEQFEATURE의 NAME 항목- "exon", "CDS", "5 'UTR" 등- 과 SOURCE 항목 - "GeneWise", "Glimmer"등-을 라벨하고, SEQFEATURE 와 SUB-FEATURE 의 하위 기능 간의 관계 유형을 정의하는 데 사용된다. SEQFEATURE는 해당 유형과 소스를 설명하는 용어를 하나만 가질 수 있지만 SEQFEATURES와 SUB-FEATURES 간의 관계에는 여러 용어와 관계를 맺을 수 있다.

3.2 TERM_RELATIONSHIP, TERM_DBXREF #

ONTOLOGY 와 TERM 테이블 간의 강력한 유틸리티는 계층 구조에서 서로 연관될 수 있다는 점이다. 예를 들면, "서열 유사성 검색"은 "BLAST 결과"또는 "HMMER PFAM 결과"와 같은, 더 구체적인 용어를 포함하는 일반적인 용어이다. "BLAST 결과"는 또한 "쌍별(pair-wise) 서열 정렬"에 대한 더 구체적인 용어일 수 있다. "BLAST 결과"는 "시퀀스 유사성 검색"의 결과이고 "쌍별 시퀀스 정렬"의 예로 볼 수 있다. 이를 대상(subject), 근거(predicate), 개체(object) (또는 부모(parents), 관계 유형(relationship type), 자식(child))라고 한다. TERM_RELATIONSHIP 테이블은 ONTOLOGY 와 TERM 테이블 간의 연관성을 위해, 대상/근거/객체 용어들 간 맵핑을 수행한다. 이 맵핑 (또는 "규칙 세트") 자체에는 별도의 온톨로지 간의 용어와의 맵핑을 위해 온톨로지 네임 스페이스 (ONTOLOGY_ID)가 제공되어야 한다. TERM_DBXREF 테이블은 온톨로지 용어에 대해 대다 관계를 통해 외부 데이터베이스를 연계할 수 있다.

4. Transitive closure tables over hierarchical structures #

4.1 TERM_PATH, BIOENTRY_PATH, SEQFEATURE_PATH #

TERM_PATH, BIOENTRY_PATH, SEQFEATURE_PATH 테이블은 모든 관계 데이터의 저장하기 위한 테이블이다. 데이터의 관계를 저장하다 보면, 데이터 간의 관계가 "전이폐쇄" 인 경우가 발생한다. 예를 들면, A와 B가 관련이 있고, B와 C가 관련이 있다면 A와 C는 있다고 가정하게 된다. 이때, A와 C의 관계 타입은 A와 B, B와 C의 개별 관계에 의존한다. (단, A와 C가 실제로 어떤 의미 있는 관계성이 없을 가능성도 있다.) 이런 경우 일반적으로 A, B, C 간 관련된 온톨로지 중 비중이 큰 공통 유형 관계 타입을 선택하여 저장한다.

5. Annotation Bundle #

Annotation은 Sequence Feature와 유사해 보일 수 있으나, Sequence Feature와 는 달리 전체 서열과 연계되기 때문에 서열위치 정보를 포함하지 않는다.

5.1 BIOENTRY_REFERENCE #

bioentry 와 참조문헌(reference) 정보를 저장하기 위해 사용된다. rank 항목에 값을 설정하여 연관된 bioentry의 참조 순서를 설정할 수 있다. 또한, start_pos 및 end_pos 항목에 값을 지정하면 bioentry 의 특정 위치에 연관된 참조 문헌 정보를 지정할 수 있다.

5.2 COMMENT #

bioentry의 설명 정보를 저장한다. 하나의 bioentry 에 하나 이상의 설명 데이터를 저장할 수 있으며, rank 항목에 설명 순서를 지정할 수 있다.

5.3 BIOENTRY_QUALIFIER_VALUE, DBXREF_QUALIFIER_VALUE, LOCATION_QUALIFIER_VALUE, SEQFEATURE_QUALIFIER_VALUE #

Ontology term과 각각 bioentry, dbxref, seqfeature, location 에 대한 정보를 저장하는 데 사용된다. Ontology term은 각각의 데이터를 검증하는 데 활용될 수 있다. Ontology 기반 seqfeature "메타테이블"은 이론적으로 bioentry에 대한 어떠한 정보든 저장하는 것이 가능하지만, 가장 일반적인 entity를 사용하는 것이 유용하다.

5.4 REFERENCE #

dbxref와 연계된 참조문헌(reference) 정보를 저장할 수 있다. 데이터의 고유성 보장을 위해 author, location, title 항목에 대한 체크섬을 수행한다.

5.5 DBXREF, BIOENTRY_DBXREF #

bioentry 의 참조 데이터베이스 정보를 등록하는데 사용된다. 각각의 참조데이터베이스들은 상호 참조를 하며, bioentry 와 dbxrefs 는 n:m의 관계를 가진다.

Suggested Pages #

0.0.1_20230725_7_v68