7강 / 20강
좌표계 — FASTA · .fai · chr1 인가 1 인가
참조 유전체를 실제로 여는 일 · 코드랩 1단계
참조 유전체는 FASTA 파일 하나입니다. 생김새는 놀랄 만큼 단순합니다.
>13 dna:chromosome chromosome:CanFam3.1:13:1:94715083:1 REF
ACGTTTCAGGATCCAAGGTTACGGATCCAAGGTTACGGATCCAAGGTTAC
GGATCCAAGGTTACGGATCCAAGGTTACGNNNNNNNNNNNNNNNNNNNNN
…
ACGTTTCAGGATCCAAGGTTACGGATCCAAGGTTACGGATCCAAGGTTAC
GGATCCAAGGTTACGGATCCAAGGTTACGNNNNNNNNNNNNNNNNNNNNN
…
> 로 시작하는 줄이 이름이고, 그다음 줄들이 서열입니다.
줄바꿈은 사람이 보기 좋으라고 넣은 것이라 뜻이 없습니다.
N 은 "여기가 무엇인지 모른다"입니다. 6강에서 본 메우지 못한 구멍이 이렇게 보입니다.
이 산수 때문에 FASTA 는 모든 줄의 길이가 같아야 합니다. 손으로 편집하다 줄 하나를 흐트러뜨리면 색인이 통째로 어긋납니다.
Python
브라우저에서 실행
함정 하나 — chr13 인가 13 인가
Ensembl 방식
13 · X · MT접두사가 없다. Ensembl REST 와 GTF 가 이 방식
UCSC 방식
chr13 · chrX · chrM접두사가 붙는다. IGV 기본 · 대부분의 브라우저
두 방식을 섞으면 어떻게 되느냐 — 프로그램이 오류를 내지 않습니다. 그냥 "그런 염색체는 없다" 고 보고 결과가 0줄이 나옵니다.
워크숍 노트북 1단계가 Ensembl REST 에서 서열을 받아오므로, 그 결과는 접두사가 없는 쪽입니다. 그 위에 UCSC 방식의 BED 파일을 얹으면 아무것도 안 걸립니다.
실무에서 가장 흔한 조용한 사고입니다. 파이프라인을 짤 때 이름 규칙을 한 번 정하고 끝까지 지키는 것이 답입니다.
Python
브라우저에서 실행
D816V 의 '816' 은 단백질 좌표입니다. DNA 좌표에서 여기까지 오는 길에 칸이 여럿 있습니다.
Python
브라우저에서 실행
코드랩 1단계가 하는 일
req = urllib.request.Request(base + f"/lookup/symbol/{species}/KIT?expand=0", …)
info = json.load(urllib.request.urlopen(req, timeout=60))
srn, start, end = info["seq_region_name"], info["start"], info["end"]
info = json.load(urllib.request.urlopen(req, timeout=60))
srn, start, end = info["seq_region_name"], info["start"], info["end"]
Ensembl REST 에 "개의 KIT 유전자가 어디 있느냐" 를 묻고, 답으로 온 좌표를 써서 그 둘레 20 kb 를 잘라 옵니다.
species 를 canis_lupus_familiaris 와 canis_familiaris
둘 다 시도하는 것이 눈여겨볼 대목입니다. 같은 종을 두 이름으로 부르는
시기가 있었고, 어느 이름이 살아 있는지는 서버 판마다 다릅니다.
그리고 인터넷이 막히면 결정론적 합성 서열로 자동 대체합니다. 교실에서 열 명 중 한 명은 네트워크가 막히기 때문입니다.
🤔 확인 문제
FASTA 의
.fai 색인이 하는 일은?해설
.fai 는 이름·길이·오프셋·줄당 염기수·줄당 바이트수 다섯 열입니다. 이것만 있으면 2.4 GB 파일을 훑지 않고 원하는 자리를 바로 꺼냅니다. 이 산수가 성립하려면 모든 줄의 길이가 같아야 합니다.🤔 확인 문제
Ensembl 방식 FASTA(
13)에 UCSC 방식 BED(chr13)를 얹으면?해설 가장 흔하고 가장 조용한 사고입니다. 프로그램은 '그런 염색체는 없다'고 판단해 그 줄을 버리고, 성공적으로 종료합니다. 결과가 0줄이거나 줄어들 뿐입니다. 파이프라인마다 이름 규칙을 한 번 정하고 끝까지 지키는 것이 유일한 예방책입니다.
🤔 확인 문제
BED 형식은 어떻게 셉니까?
해설 BED 는 0부터, 끝 제외(half-open)입니다. FASTA·SAM·VCF·GFF 는 1부터, 끝 포함입니다. 앞 세 글자가 BED 로는
0 3, VCF 로는 1..3 입니다. 이 한 칸이 아미노산 번호를 바꾸고, 그러면 네오항원 서열이 통째로 달라집니다.