제2장

합성생물학 레지스트리 생태계

기술적 기초

2.1 레지스트리가 해결하는 문제

WIA-BIO-021 v1.0.0은 합성생물학 파츠(part)의 등록, 저장, 공유를 하나의 틀로 묶는 표준입니다. 파츠는 기능이 정의된 DNA/RNA 서열의 단위입니다. 이 표준은 iGEM, Addgene, SynBioHub 같은 기존 레지스트리와 상호운용하면서도 데이터 무결성과 재현성을 유지하는 것을 목표로 합니다. 이 장에서는 그 바탕이 되는 분류 체계, 식별자 규칙, 메타데이터 구조를 차례로 살펴봅니다.

표준의 철학은 홍익인간(弘益人間)입니다. 서열과 특성 데이터를 같은 형식으로 공유하면 연구자가 이미 검증된 파츠를 다시 만들지 않고 재사용할 수 있고, 이것이 전 세계적 협업의 전제가 된다는 입장입니다.

2.2 핵심 용어

이후 절에서 쓰는 용어를 먼저 정리합니다.

2.3 일곱 가지 기본 파츠 유형

명세는 파츠를 일곱 가지 기본 유형으로 분류하고, 유형마다 고유한 속성 목록을 정의합니다. 프로모터는 세기와 유도성을, RBS는 번역 개시율과 간격 요건을, 터미네이터는 종결 효율과 방향성을 기록하는 식입니다.

유형(코드)역할명명 규칙예시
Promoter (PRO)전사 개시BBa_P[번호] 또는 BBa_J[번호]BBa_J23100, BBa_R0011
RBS번역 개시BBa_B[번호]BBa_B0034, BBa_B0030
CDS단백질 코딩BBa_C[번호] 또는 BBa_E[번호]BBa_E0040(GFP), BBa_E1010(mRFP1)
Terminator (TER)전사 종결BBa_B[번호] 또는 BBa_T[번호]BBa_B0015, BBa_B0010
Plasmid Backbone (VEC)파츠 유지·증식BBa_pSB[번호]BBa_pSB1C3, BBa_pSB1A3
Composite (COM)다중 파츠 조립체BBa_K[번호]BBa_K123456
Regulatory (REG)결합 부위·오퍼레이터(명세에 규칙 없음)-

RBS와 터미네이터가 모두 BBa_B 접두를 쓸 수 있다는 점에 유의해야 합니다. 접두 문자만으로는 유형을 확정할 수 없으므로, 유형은 접두가 아니라 type 필드로 판단해야 합니다.

2.4 파츠 식별자

식별자는 BBa_[Type][Number] 형태를 따릅니다. 예를 들어 BBa_K123456은 K 계열 복합 파츠입니다. 레지스트리에 등록할 때 이 값은 partId가 되어 파츠를 유일하게 가리킵니다. 복합 파츠는 구성 파츠 목록, 조립 방법, 기대 기능, 검증 상태를 속성으로 가집니다. 따라서 식별자 하나로 그 파츠가 어떤 하위 파츠로 만들어졌는지 추적할 수 있습니다.

2.5 수명주기 상태

모든 파츠는 수명주기 상태를 가지며, 명세는 일곱 개의 상태와 두 글자 코드를 정의합니다.

상태코드설명
PlanningPL파츠 설계 단계
OrderedORDNA 합성 주문됨
AvailableAV레지스트리에서 이용 가능
CharacterizedCH실험 데이터 확보
ValidatedVA독립적으로 검증됨
DeprecatedDP대체되었거나 문제가 있음
DeletedDL레지스트리에서 제거됨

Characterized는 데이터가 있다는 뜻이고, Validated는 제3자가 확인했다는 뜻입니다. 두 상태를 구분해 두면 이용자가 데이터의 신뢰 수준을 가늠할 수 있습니다.

2.6 안전 등급 분류

파츠는 생물안전 등급(Biosafety Level)으로도 분류되며, 모든 파츠가 이 값을 필수 메타데이터로 가집니다.

BSL-1: 최소 위험 (예: GFP, 표준 프로모터)
BSL-2: 중간 위험 (예: 포유류 세포 작업)
BSL-3: 심각한 위험 (예: 병원성 생물 유래 파츠)
BSL-4: 극도의 위험 (접근 제한)

등록 시점에 안전 등급을 의무적으로 적도록 한 것은 공유 레지스트리에서 위험 파츠가 다른 파츠와 구분 없이 유통되는 것을 막기 위한 장치입니다. BSL-4는 접근 제한과 함께 다룹니다.

2.7 필수 메타데이터

등록되는 모든 파츠는 아래 항목을 반드시(MUST) 포함해야 합니다.

{
  "partId": "BBa_K123456",
  "partName": "Strong GFP Expression Device",
  "type": "composite",
  "subtype": "reporter",
  "status": "available",
  "safetyLevel": "BSL-1",
  "author": {
    "name": "Team iGEM 2024",
    "affiliation": "MIT",
    "email": "igem@mit.edu"
  },
  "created": "2024-06-15T10:30:00Z",
  "modified": "2024-08-20T14:45:00Z",
  "version": "1.2.0",
  "license": "CC-BY-4.0"
}

작성자 정보가 이름, 소속, 이메일로 구조화되어 있고, 생성·수정 시각이 UTC 타임스탬프로 남는다는 점이 중요합니다. version과 license가 필수이므로 어떤 파츠든 개정 이력과 재사용 조건을 함께 확인할 수 있습니다.

2.8 서열 메타데이터와 형식

서열은 별도 객체로 기술합니다. 서열 문자열 외에 길이, 저장 형식, 서열 종류, 체크섬, 그리고 서열 위의 기능 영역(features)을 담습니다.

{
  "sequence": {
    "nucleotides": "ATGCGTAAAGGAGAAGAACTTTTC...",
    "length": 1234,
    "format": "raw|fasta|genbank|sbol",
    "sequenceType": "dna|rna|protein",
    "checksum": "sha256:abc123...",
    "features": [
      { "type": "promoter", "start": 1, "end": 35, "strand": "+", "name": "J23100" },
      { "type": "RBS", "start": 40, "end": 52, "strand": "+", "name": "B0034" }
    ]
  }
}

format은 raw, fasta, genbank, sbol 중 하나이며 sequenceType은 dna, rna, protein 중 하나입니다. features는 시작·끝 좌표와 가닥(strand) 방향을 가지므로, 복합 파츠 안에서 프로모터와 RBS가 어디에 놓였는지 좌표로 확인할 수 있습니다. 체크섬은 sha256 접두를 붙인 형태로, 서열이 전송·변환 과정에서 바뀌지 않았는지 검증하는 데 씁니다.

2.9 생물학적 맥락과 문서화

같은 서열이라도 숙주와 배양 조건에 따라 거동이 달라집니다. 그래서 명세는 생물학적 맥락을 별도 블록으로 기록하게 합니다.

문서화 블록은 설명(description), 설계 노트(designNotes), 논문 참고문헌(DOI, 제목, 저자, 연도), 외부 데이터베이스 링크(GenBank 접근 번호 등)로 구성됩니다. 외부 링크 덕분에 레지스트리 항목에서 원 서열 자료로 곧바로 이동할 수 있습니다.

2.10 SDK와 CLI로 보는 데이터 모델

데이터 모델은 TypeScript SDK(@wia/bio-021)에서 registerPart, searchParts, getPartDetails, updatePartCharacterization 함수로 드러납니다. 등록 호출은 앞서 본 필수 메타데이터와 거의 같은 항목을 받습니다.

const part = await registerPart({
  partId: 'BBa_K123456',
  name: 'Strong Constitutive Promoter',
  type: 'promoter',
  sequence: 'TTGACAGCTAGCTCAGTCCTAGGTATAATGCTAGC',
  author: 'Team iGEM 2024',
  safetyLevel: 'BSL-1',
  license: 'CC-BY-4.0'
});

const results = await searchParts({
  type: 'promoter',
  organism: 'E. coli',
  strength: 'high'
});

검색 조건이 유형, 숙주, 세기처럼 분류 체계의 속성과 일치한다는 점에 주목할 만합니다. 명령줄 도구 wia-bio-021도 같은 모델을 노출합니다.

wia-bio-021 register --id BBa_K123456 --type promoter --sequence-file promoter.fasta
wia-bio-021 export --id BBa_K123456 --format sbol --output part.xml
wia-bio-021 import --file plasmid.gb --format genbank
wia-bio-021 characterize --id BBa_K123456 --strength 1500 --growth-rate 0.8

SBOL로 내보내고 GenBank 파일을 가져오는 명령이 따로 있다는 것은 SBOL과 GenBank 호환이 이 표준의 핵심 요건임을 보여 줍니다.

2.11 상호운용 구조와 범위

명세 본문은 열 개 절로 구성됩니다. 앞의 여섯 절(소개, 파츠 분류, 메타데이터, 서열 형식, SBOL 준수, 특성 데이터)이 이 장에서 다룬 데이터 형식의 골격이고, 나머지 네 절이 운영 규칙입니다.

범위는 BioBrick 파츠뿐 아니라 BioBrick이 아닌 파츠의 분류까지 포함합니다. 저장 형식은 SBOL을 기준으로 하여 상호운용성을 최대한 확보합니다.

2.12 요약과 다음 장으로의 연결

이 장에서는 WIA-BIO-021이 파츠를 일곱 유형으로 나누고, BBa_[Type][Number] 식별자와 일곱 단계의 상태 코드로 관리하며, BSL-1부터 BSL-4까지의 안전 등급을 필수 항목으로 붙인다는 점을 확인했습니다. 메타데이터는 필수 항목, 서열(체크섬과 feature 좌표 포함), 생물학적 맥락, 문서화의 네 블록으로 나뉩니다. 이 블록들이 SDK 함수와 CLI 명령의 입출력이 되고, SBOL과 GenBank 변환을 통해 외부 레지스트리와 이어집니다.

다음 장에서는 이 데이터 모델을 이용하는 쪽으로 넘어갑니다. 파츠를 실제로 등록하고 검색하며 특성 데이터를 갱신할 때 어떤 정보가 오가는지, 그리고 BioBrick 조립 표준과 어떻게 연결되는지를 살펴보겠습니다.