19강 / 20강

실습 종합 — 코드랩 0~3단계를 줄 단위로

<code>rosie_mct_mrna_vaccine_codelab.ipynb</code> · 3시간 워크숍의 앞 절반

실습 종합 — 코드랩 0~3단계를 줄 단위로
지금까지 배운 열여덟 강이 이 네 개의 셀 안에 들어 있습니다.

워크숍에서 여는 노트북은 Google Colab 에서 런타임 → 모두 실행 으로 그대로 돕니다. 여기서는 앞 네 단계를 줄 단위로 읽습니다.

단계하는 일이 강의
0도구 설치 — bwa · minimap2 · samtools · bcftools12강
1Ensembl 에서 개 KIT 유전자좌 20 kb 받기6·7강
2합성 FASTQ 만들기 + 드라이버 심기8·9·10강
3정렬 → 정렬(sort) → 중복표시 → 커버리지11~17강

0단계 — 왜 도구를 '찾는' 코드가 필요한가

def _resolve_tools():
    micromamba = os.path.expanduser("~/.ghbio-micromamba/envs/ghbio-gen/bin")
    for n in ("bwa", "minimap2", "samtools", "bcftools"):
        p = shutil.which(n)

Colab 에서는 관리자 권한이 있으므로 apt install 이 됩니다. 학교 서버나 연구실 워크스테이션에서는 대개 안 됩니다. 그래서 이미 설치된 것을 찾는 길을 함께 둡니다.

이것이 재현성의 첫 단추입니다 — "내 컴퓨터에서는 되는데" 를 없애는 일입니다.

2단계 — '심어 두고 다시 찾기'

simulate_reads(ref, out_r1, out_r2, coverage, read_len,
               driver_pos0, driver_alt, vaf, err=0.002, insert=350, seed=1)

정상(혈액)은 야생형만, 종양은 드라이버를 VAF 0.847 로 가진 리드를 만듭니다.

이 방식의 값어치는 정답을 알고 있다는 것입니다. 파이프라인이 그것을 되찾아 내면 파이프라인이 옳게 돈다는 뜻입니다. 실제 데이터에서는 절대 알 수 없는 확인입니다.

기대값을 먼저 적어 두고 돌리는 것. 워크숍에서 학생에게 가장 먼저 가르치는 습관입니다.
Python 브라우저에서 실행
0~3단계를 눌러 가며 따라가 보세요. 각 단계가 무엇을 만들고 무엇을 확인해야 하는지 나옵니다.
불러오는 중…

3단계 — 한 줄씩

명령무엇확인할 것
samtools faidx kit_locus.fa참조 색인 (7강) .fai 가 생겼는가
bwa index kit_locus.fa정렬용 FM-index (11강) .bwt .sa .amb .ann .pac 다섯 개
bwa mem -R '@RG…'정렬 (12강) 읽기 그룹이 붙었는가 — samtools view -H
samtools sort -o …좌표 정렬 (13강) 헤더에 SO:coordinate
samtools indexBAM 색인 (13강) .bai 가 생겼는가
samtools markdup중복 표시 (16강) 중복률이 얼마인가
samtools depth커버리지 (17강) 종양 : 정상 ≈ 2 : 1 인가
이 일곱 줄이 이 권의 요약입니다. BAM 하나를 믿을 수 있게 만드는 것이 I 권이 한 일입니다.
Python 브라우저에서 실행
🤔 확인 문제
2단계에서 변이를 '심어 두고' 4단계에서 '다시 찾는' 방식의 값어치는?
🤔 확인 문제
3단계가 끝난 뒤 반드시 확인해야 할 것으로 가장 중요한 것은?