TKOv3 가이드를 PX459 올리고로 바꾸는 일을 도구로 옮겼다
유전자 이름 하나로 TKOv3 가이드 4개와 주문할 올리고 서열을 꺼내는 도구를 만들어 공개했습니다. 손으로 하면 매번 틀리던 두 가지 — 5' G 추가와 BbsI 사이트 확인 — 를 자동으로 처리합니다.
CRISPR 녹아웃 실험을 시작할 때 매번 같은 일을 한다. 표적 유전자를 정하고, 라이브러리에서 가이드 서열을 찾고, 그 20 nt를 벡터에 넣을 수 있는 올리고 한 쌍으로 바꿔서 주문한다. 계산 자체는 어렵지 않다. 그런데 이 단순한 변환에서 실수가 반복됐고, 실수의 대가는 대개 2주 뒤에 “콜로니가 자라긴 했는데 시퀀싱이 이상하다”로 돌아온다.
그래서 이 과정을 도구로 옮겼다.
→ TKOv3 → PX459 올리고 설계기 (/tools 메뉴에도 있습니다)
유전자 이름을 넣으면 끝이다. 쉼표로 여러 개를 한 번에 넣어도 된다.
무엇을 다루는 도구인가
TKOv3 (Toronto KnockOut v3, Hart et al. G3 2017)는 Moffat 랩에서 만든 유전체 규모 녹아웃 라이브러리다. 유전자당 가이드 4개씩, 총 71,090개 가이드로 18,000여 개 단백코딩 유전자를 덮는다. 풀 스크리닝용으로 만들어진 라이브러리지만, 개별 유전자를 하나씩 녹아웃할 때도 여기 등재된 가이드를 쓰는 편이 낫다 — 이미 대규모 스크리닝에서 성능이 검증된 서열이기 때문이다. 새 가이드를 설계 도구로 뽑아 쓰는 것보다 실패 확률이 낮다.
PX459 (pSpCas9(BB)-2A-Puro V2.0)는 그 가이드를 개별로 넣을 때 쓰는 벡터다. BbsI로 잘라 열고, 어닐링한 올리고 두 개를 Golden Gate로 끼워 넣는다. 올리고 규칙은 Ran et al. Nat Protoc 2013을 따른다.
도구가 하는 일은 이 둘을 잇는 것이다. 라이브러리에서 가이드를 꺼내고, PX459에 들어갈 형태로 바꾸고, 들어가지 않을 것을 미리 걸러 낸다.
손으로 하면 틀리는 두 가지
1. 5’ G — 붙일 때와 안 붙일 때
sgRNA는 U6 프로모터로 전사되는데, U6는 G에서 전사를 시작할 때 효율이 가장 좋다. 그래서 spacer가 G로 시작하지 않으면 앞에 G를 하나 덧붙인다.
문제는 이 G를 spacer가 이미 G로 시작할 때도 습관적으로 붙이는 것이다. 그러면 21 nt spacer가 되어 표적 인식이 달라진다. 반대로 필요한데 빼먹으면 전사 효율이 떨어진다. 그리고 F 올리고에 G를 넣었으면 R 올리고 끝에도 대응하는 C를 넣어야 어닐링했을 때 양쪽 오버행이 맞는다 — 이걸 빠뜨리는 것이 가장 흔한 실수다.
도구는 첫 염기를 보고 갈라진다.
| spacer 첫 염기 | Forward | Reverse | 길이 |
|---|---|---|---|
| G로 시작 | CACC + spacer | AAAC + 역상보 | 24-mer |
| G가 아님 | CACC + G + spacer | AAAC + 역상보 + C | 25-mer |
TP53으로 실제 나오는 결과를 보면 차이가 분명하다.
TP53_g1 spacer GATCCACTCACAGTTTCCAT (G로 시작)
F CACCGATCCACTCACAGTTTCCAT 24 nt
R AAACATGGAAACTGTGAGTGGATC 24 nt
TP53_g2 spacer ACCAGCAGCTCCTACACCGG (A로 시작 → G 추가)
F CACCGACCAGCAGCTCCTACACCGG 25 nt
R AAACCCGGTGTAGGAGCTGCTGGTC 25 nt
g1의 CACCG에서 G는 spacer의 첫 염기이고, g2의 CACCG에서 G는 덧붙인 개시
염기다. 눈으로는 구분이 안 된다. 그래서 도구는 덧붙인 G만 초록색으로 표시하고,
그 글에 몇 쌍이 25-mer인지 아래에 따로 적는다.
2. spacer 안의 BbsI 사이트
이건 알고 있어도 확인을 건너뛰기 쉬운 항목이다. PX459 클로닝은 BbsI로 벡터를
열고 올리고를 끼우는데, spacer 자체에 BbsI 인식서열(GAAGAC 또는 그 역상보
GTCTTC)이 들어 있으면 Golden Gate 반응 중에 삽입물이 계속 다시 잘린다.
반응이 진행될수록 원하는 산물이 사라지는 구조다.
라이브러리에 등재된 가이드라도 이 문제에서 자유롭지 않다. 스크리닝용 합성 방식에서는 문제가 되지 않던 서열이 개별 BbsI 클로닝에서는 걸린다.
도구는 가이드마다 양쪽 방향을 다 확인해서 사용 가능 / BbsI 사이트 — 클로닝 불가로
표시한다. “클로닝 가능한 것 모두 담기” 버튼은 걸린 가이드를 애초에 담지 않는다.
그래도 수동으로 담으면 주문 목록 상단에 경고가 남는다. 대안까지 같이 안내한다 —
그 가이드가 꼭 필요하면 BsmBI를 쓰는 벡터(lentiCRISPRv2 등)로 옮기면 된다.
그 밖에 넣은 것
옛 유전자 이름. TKOv3는 2016년 기준 심볼을 쓴다. 그동안 이름이 바뀐 유전자가
많아서, 지금 쓰는 이름으로 검색하면 없다고 나오는 경우가 생긴다. HGNC 기준으로
이전 이름 41,267건을 매칭해 뒀다. MLL을 넣으면 KMT2A로 찾아 주고, 입력한 이름이
라이브러리에서 어떤 이름으로 등록돼 있는지 함께 표시한다. 그래도 없으면 비단백코딩
유전자이거나 라이브러리에 없는 유전자다 — 이때는 비슷한 이름 후보와 HGNC 검색
링크를 준다.
가이드를 고르는 데 필요한 정보. 표적 엑손, GC 함량, hg19/GRCh37 좌표를 같이 보여 준다. 유전자당 가이드가 4개 미만이면 그것도 표시한다.
주문 목록. 여러 유전자를 담아 두고 두 가지 CSV로 내보낼 수 있다.
- 주문용 CSV —
Name,Sequence두 열만. 합성 업체 양식에 그대로 붙여 넣는다. - 설계 기록 CSV — 랩노트 보관용. spacer, 엑손, 좌표, GC, G를 덧붙였는지, BbsI 충돌 여부, 올리고 두 개, 담은 날짜까지 남는다. 파일 끝에 라이브러리 출처와 올리고 규칙의 출처를 주석으로 박아 둔다. 나중에 “이 올리고 어디서 나온 거지”를 묻지 않기 위한 것이다.
탭으로 구분된 형태로 클립보드 복사도 된다. 엑셀에서 한글이 깨지지 않게 CSV에는 BOM을 넣었다.
실험 전에 알아 둘 것
- 올리고는 인산화하지 않아도 된다. 일반 desalted 프라이머로 주문하면 된다.
- 좌표는 hg19/GRCh37 기준이다. hg38로 작업하고 있다면 변환해서 봐야 한다.
- 라이브러리의 가이드는 스크리닝에서 검증된 것이지만, 오프타깃을 따로 확인한 결과는 아니다. 표현형이 중요한 실험이라면 별도로 확인하는 편이 안전하다.
- 브라우저에서 gzip 압축 해제(
DecompressionStream)를 쓴다. Chrome, Edge, 최신 Firefox에서 열린다. 지원하지 않는 브라우저에서는 그 사실을 안내한다.
서버로 아무것도 보내지 않는다
전부 브라우저 안에서 계산한다. 검색한 유전자 이름도, 주문 목록도 서버로 가지
않는다. 검색 기록과 주문 목록은 그 브라우저의 localStorage에만 남는다 —
같은 브라우저로 다시 열면 담아 둔 것이 그대로 있고, 다른 기기에서는 보이지
않는다. 브라우저가 저장을 막아 둔 환경이면 그 사실을 화면에 알린다.
발행하지 않은 표적을 검색해도 밖으로 나가지 않는다는 뜻이다. 이 도구를 단일 HTML 파일로 만든 이유이기도 하다.
아직 확인되지 않은 것
- BbsI 외의 제한효소는 표시하지 않는다. 내부적으로 BsmBI 사이트도 계산하지만 화면에는 내보내지 않고 있다 — BsmBI 벡터를 쓰는 사람에게 필요한 정보라 다음에 노출할지 고민 중이다.
- TKOv3 외의 라이브러리(Brunello, GeCKOv2 등)는 아직 넣지 않았다.
- 좌표를 hg38로 함께 보여주는 것이 나을지 판단이 서지 않았다.
출처와 근거:
- 라이브러리 — Hart T, et al. Evaluation and Design of Genome-Wide CRISPR/SpCas9 Knockout Screens. G3 2017. Addgene: Moffat CRISPR knockout TKOv3
- 올리고 규칙 — Ran FA, et al. Genome engineering using the CRISPR-Cas9 system. Nat Protoc 2013
- 유전자 이름 매칭 — HGNC