Skip to content

BioSQL #
Find similar titles

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 #

2.2 LOCATION #

2.3 SEQFEATURE_RELATIONSHIP #

3. Ontology Terms and Relationships #

3.1 TERM #

3.2 TERM_RELATIONSHIP, TERM_DBXREF #

4. Transitive closure tables over hierarchical structures #

4.1 TERM_PATH, BIOENTRY_PATH, SEQFEATURE_PATH #

5. Annotation Bundle #

5.1 BIOENTRY_REFERENCE #

5.2 COMMENT #

5.3 BIOENTRY_QUALIFIER_VALUE, DBXREF_QUALIFIER_VALUE, LOCATION_QUALIFIER_VALUE, SEQFEATURE_QUALIFIER_VALUE #

5.4 REFERENCE #

5.5 DBXREF, BIOENTRY_DBXREF #

Suggested Pages #

0.0.1_20140628_0