22 분 소요

1. 19챕터는 무엇을 하려는 장인가요?

19챕터는 시퀀싱 기계가 만들어낸 원자료를 처음으로 확인하고 정리하는 장입니다. 여기서 원자료란 주로 .fastq.gz 파일을 말합니다. 이 파일 안에는 기계가 읽은 수많은 짧은 DNA 또는 RNA 조각의 서열과, 각 염기를 얼마나 믿을 수 있는지에 대한 품질 정보가 들어 있습니다.

이 장에서 핵심은 “분석을 시작하기 전에 데이터가 멀쩡한지 확인하는 것”입니다. 분석 결과가 이상할 때 많은 초보자는 뒤쪽의 복잡한 알고리즘부터 의심합니다. 하지만 실제로는 처음 FASTQ 품질이 나쁘거나, 어댑터가 남아 있거나, 파일 쌍이 맞지 않거나, 압축 파일이 깨졌거나, 샘플명이 뒤섞인 경우도 많습니다.

FASTQ 처리는 요리 전 재료 손질과 비슷합니다. 고기를 굽기 전에 포장 상태를 확인하고, 상한 부분이 없는지 보고, 불필요한 포장재를 제거하고, 필요한 만큼 손질해야 합니다. 시퀀싱 데이터도 마찬가지입니다. 바로 분석에 넣기 전에 품질을 확인하고, 필요하면 어댑터나 낮은 품질 부분을 잘라내야 합니다.

FASTQ 처리의 전체 흐름

19장에서 나오는 대표 도구는 FastQC와 cutadapt입니다. FastQC는 FASTQ 파일의 품질 보고서를 만들어줍니다. cutadapt는 어댑터 서열이나 낮은 품질의 끝부분을 잘라내는 도구입니다. 이 둘은 “검사하고, 손질하고, 다시 검사하는” 흐름으로 이해하면 됩니다.


2. .fastq.gz는 어떤 파일인가요?

.fastq.gz는 FASTQ 파일을 gzip 방식으로 압축한 파일입니다. 확장자를 나누어 보면 이해하기 쉽습니다.

.fastq는 파일의 내용 형식을 뜻합니다. 이 안에는 read 이름, 염기서열, 구분선, 품질 점수가 4줄씩 반복되어 들어 있습니다. .gz는 gzip으로 압축되어 있다는 뜻입니다. 파일 크기를 줄이기 위해 압축한 것입니다.

R1.fastq.gz라는 파일은 “FASTQ 형식의 데이터를 gzip으로 압축한 파일”입니다.

초보자가 여기서 조심해야 할 점은, 압축 파일이라고 해서 무조건 압축을 풀어야 하는 것은 아니라는 점입니다. 생명정보학 도구들은 .fastq.gz 파일을 그대로 읽을 수 있는 경우가 많습니다. 예를 들어 FastQC, cutadapt, BWA-MEM2는 gzip 압축 FASTQ를 직접 처리할 수 있습니다.

하지만 내용을 눈으로 잠깐 확인하고 싶을 때는 zcat 같은 명령어를 씁니다.

zcat R1.fastq.gz | less

여기서 zcat은 압축을 실제 파일로 풀지 않고 화면으로 내용을 흘려보내는 역할을 합니다. less는 긴 내용을 한 화면씩 천천히 보는 도구입니다. 가운데의 |는 파이프입니다. 앞 명령어의 출력을 뒤 명령어의 입력으로 넘긴다는 뜻입니다.

처음에는 이 문법이 낯설 수 있습니다. 이렇게 읽으면 됩니다.

“압축된 FASTQ 내용을 화면으로 꺼낸 다음, 그 내용을 less로 천천히 보겠습니다.”


3. FASTQ 한 read는 왜 4줄인가요?

FASTQ 파일은 4줄이 한 묶음입니다. 이 한 묶음이 read 하나입니다. read는 시퀀싱 기계가 읽어낸 짧은 서열 조각입니다.

FASTQ 한 read는 항상 4줄입니다

예를 들어 다음과 같은 형태가 반복됩니다.

@M04695:276:000000000-J9Y5P:1:1101:9698:1015 1:N:0:1
NAGACGACTCTCCCCGCTATAGATN
+
#8ACCGGGGGGEF@CFGGGGFGGG#

첫 번째 줄은 read 이름표입니다. 어느 장비, 어느 런, 어느 위치에서 읽힌 read인지 같은 정보가 들어갈 수 있습니다. 처음에는 이 긴 이름표를 모두 해석할 필요는 없습니다. “각 read를 구분하는 ID”라고 이해하면 됩니다.

두 번째 줄은 실제 염기서열입니다. A, C, G, T, N 같은 글자가 나옵니다. A, C, G, T는 DNA 염기입니다. N은 기계가 정확히 어떤 염기인지 판단하기 어려웠다는 뜻으로 볼 수 있습니다.

세 번째 줄은 +입니다. 이 줄은 서열 부분과 품질 부분을 구분하는 표시입니다.

네 번째 줄은 품질 점수입니다. 사람이 보기에는 #8ACCGG... 같은 이상한 문자들이지만, 사실 각 문자는 숫자 품질 점수를 압축해서 표현한 것입니다. 두 번째 줄의 첫 번째 염기에는 네 번째 줄의 첫 번째 품질 문자가 대응되고, 두 번째 염기에는 두 번째 품질 문자가 대응됩니다.

그래서 FASTQ 파일을 읽을 때는 항상 “4줄씩 끊어 읽기”가 기본입니다. 전체 줄 수를 4로 나누면 read 수를 대략 계산할 수 있습니다.

zcat R1.fastq.gz | wc -l

이 명령어는 압축된 FASTQ의 전체 줄 수를 셉니다. read 하나가 4줄이므로, 나온 줄 수를 4로 나누면 read 개수가 됩니다.


4. 품질 점수는 “기계가 얼마나 자신 있어 하는지”입니다

시퀀싱 기계가 DNA를 읽을 때 항상 완벽하게 읽는 것은 아닙니다. 어떤 위치에서는 신호가 선명하고, 어떤 위치에서는 신호가 흐릴 수 있습니다. 그래서 FASTQ에는 염기서열뿐 아니라 각 염기의 품질 점수도 함께 들어갑니다.

품질 점수는 보통 Phred 점수라고 부릅니다. 3장 선수지식에서 이미 다룬 개념이므로 여기서는 실습에 필요한 감각만 잡겠습니다.

Phred 품질 점수의 감각

Q20은 오류 확률이 약 1%라는 뜻입니다. Q30은 오류 확률이 약 0.1%라는 뜻입니다. 숫자가 높을수록 더 믿을 만합니다. FastQC 보고서에서 read의 위치별 품질이 전반적으로 높은지, 뒤쪽으로 갈수록 급격히 떨어지는지 확인하는 이유가 여기에 있습니다.

NGS read는 뒤쪽으로 갈수록 품질이 떨어지는 경우가 흔합니다. 기계가 긴 조각을 읽을수록 신호가 점점 흐려질 수 있기 때문입니다. 그래서 분석 전에 낮은 품질의 끝부분을 자르는 품질 기반 트리밍을 하기도 합니다.

다만 무조건 많이 자르는 것이 좋은 것은 아닙니다. 너무 많이 자르면 read가 짧아져서 나중에 참조 유전체에 정렬하기 어려워질 수 있습니다. 데이터 전처리는 “더 깨끗하게 만드는 것”과 “쓸 수 있는 정보를 너무 많이 버리지 않는 것” 사이의 균형입니다.

품질 문자는 Phred+33 방식으로 숫자로 바꿔 읽습니다

FASTQ 네 번째 줄의 품질 문자는 사람이 보기에는 I, F, # 같은 문자입니다. 하지만 컴퓨터 안에서는 각 문자마다 숫자 코드가 있습니다. 생명정보학 실습에서는 보통 Phred+33 방식을 많이 만납니다.

Phred 점수 = ASCII 코드값 - 33

예를 들어 문자 I의 ASCII 코드값이 73이라면 Phred 점수는 다음처럼 계산합니다.

73 - 33 = 40

I는 Q40을 뜻합니다. 문자 #의 ASCII 코드값은 35이므로 35 - 33 = 2, 즉 Q2입니다. Q2는 매우 낮은 품질이고, Q40은 매우 높은 품질입니다.

처음부터 ASCII 표를 외울 필요는 없습니다. 본편 실습에서 중요한 것은 “품질 문자는 그냥 장식 문자가 아니라 숫자 품질 점수를 문자로 바꿔 저장한 것”이라는 감각입니다.


5. R1과 R2는 왜 두 파일로 나뉘나요?

Paired-end 시퀀싱에서는 DNA 조각 하나의 양쪽 끝을 읽습니다. 한쪽 끝에서 읽은 read들이 R1 파일에 들어가고, 반대쪽 끝에서 읽은 read들이 R2 파일에 들어갑니다.

Paired-end 파일의 감각

예를 들어 다음처럼 두 파일이 있을 수 있습니다.

sample_R1.fastq.gz
sample_R2.fastq.gz

이 두 파일은 아무렇게나 독립된 파일이 아닙니다. R1 파일의 n번째 read와 R2 파일의 n번째 read는 같은 DNA 조각에서 나온 짝입니다. 그래서 두 파일의 read 수가 같아야 합니다. 만약 R1과 R2의 줄 수가 다르거나, 순서가 어긋나면 paired-end 분석에서 문제가 생깁니다.

왜 양쪽 끝을 읽을까요? 이유는 위치 추정이 더 쉬워지기 때문입니다. 짧은 read 하나만으로는 유전체의 여러 위치에 비슷하게 붙을 수 있습니다. 하지만 양쪽 끝의 read가 서로 적절한 거리와 방향으로 붙으면 “이 DNA 조각은 여기에서 왔겠구나”라고 더 자신 있게 판단할 수 있습니다.

비유하면 찢어진 책 조각 하나만 있으면 어느 페이지인지 찾기 어렵지만, 같은 종이의 앞쪽과 뒤쪽 조각을 함께 가지고 있으면 원래 위치를 더 잘 추정할 수 있는 것과 비슷합니다.


6. FastQC는 무엇을 알려주나요?

FastQC는 FASTQ 파일의 품질을 여러 관점에서 검사하고 HTML 보고서로 만들어주는 도구입니다. HTML 보고서는 웹 브라우저로 열어볼 수 있습니다.

FastQC를 단일 파일에 실행하면 다음처럼 씁니다.

fastqc R1.fastq.gz

paired-end 파일 두 개를 한 번에 검사할 수도 있습니다.

fastqc R1.fastq.gz R2.fastq.gz

FastQC는 많은 항목을 보여주지만, 처음에는 모든 그래프를 완벽히 해석하려고 하지 않아도 됩니다. 먼저 다음 항목을 중심으로 보면 됩니다.

FastQC 보고서에서 먼저 볼 것

Per base sequence quality는 read의 각 위치별 품질을 보여줍니다. 앞부분은 품질이 높고 뒷부분은 낮아지는 패턴이 흔합니다. 품질이 전체적으로 너무 낮으면 분석 결과를 믿기 어려워집니다.

Adapter Content는 어댑터 서열이 read 안에 남아 있는지를 보여줍니다. 어댑터가 많이 남아 있으면 cutadapt 같은 도구로 제거해야 합니다.

GC Content는 G와 C 염기의 비율 분포를 보여줍니다. 생물종이나 실험 종류에 따라 예상되는 분포가 있는데, 너무 이상하면 오염이나 라이브러리 문제를 의심할 수 있습니다.

Sequence Duplication Levels는 같은 read가 얼마나 많이 반복되는지 보여줍니다. 중복이 높다고 항상 나쁜 것은 아니지만, PCR 중복이나 라이브러리 다양성 부족을 의심할 수 있습니다.

FastQC 결과에는 PASS, WARN, FAIL 같은 표시가 나옵니다. 하지만 이 표시만 보고 기계적으로 판단하면 안 됩니다. 어떤 실험에서는 WARN이 자연스러울 수 있고, 어떤 실험에서는 PASS가 나와도 생물학적으로 이상할 수 있습니다. FastQC는 “판사”라기보다 “검진표”에 가깝습니다.

FastQC에서 Per sequence quality scores는 read 하나하나의 평균 품질 점수가 어떤 분포를 보이는지 알려줍니다. 대부분의 read가 높은 점수에 몰려 있으면 좋지만, 낮은 점수 read가 많으면 전처리나 실험 품질을 의심해야 합니다.

Overrepresented sequences는 특정 서열이 비정상적으로 많이 반복되는지 보여줍니다. 어댑터 조각, 프라이머, 오염 서열, 지나치게 많이 증폭된 조각이 나타날 수 있습니다.

Per base sequence content는 read 위치별 A, T, G, C 비율을 보여줍니다. 특정 실험에서는 앞부분 편향이 자연스러울 수 있지만, 전체적으로 이상한 패턴이 강하면 라이브러리 문제를 의심할 수 있습니다.

이 항목들을 볼 때도 원칙은 같습니다. FastQC는 “자동 채점기”가 아니라 “어디를 더 확인해야 하는지 알려주는 검진표”입니다.


7. 어댑터 오염은 왜 생기나요?

NGS 라이브러리를 만들 때 DNA 조각 양끝에는 어댑터(adapter)라는 인공 서열이 붙습니다. 어댑터는 시퀀싱 장비가 DNA 조각을 잡고 읽을 수 있게 해주는 손잡이 같은 것입니다.

문제는 DNA insert가 read 길이보다 짧을 때 생깁니다. 기계가 읽어야 할 실제 DNA 조각을 다 읽고도 계속 읽어버리면, 반대쪽 어댑터 서열까지 읽힐 수 있습니다. 이렇게 read 안에 어댑터가 남은 상태를 어댑터 오염이라고 합니다.

어댑터 트리밍의 의미

어댑터 서열은 생물체의 유전체에서 온 정보가 아닙니다. 실험 과정에서 붙인 인공 서열입니다. 이것이 남아 있으면 나중에 참조 유전체 정렬이나 변이 분석을 방해할 수 있습니다. 그래서 분석 전에 제거하는 것이 보통입니다.

cutadapt는 이런 어댑터를 찾아서 잘라내는 도구입니다. paired-end 파일에서 양쪽 read의 어댑터를 제거하려면 다음처럼 실행할 수 있습니다.

cutadapt \
  -a AGATCGGAAGAG \
  -A AGATCGGAAGAG \
  -o trimmed_R1.fastq.gz \
  -p trimmed_R2.fastq.gz \
  R1.fastq.gz R2.fastq.gz

여기서 -a는 R1 쪽 어댑터를 지정하는 옵션이고, -A는 R2 쪽 어댑터를 지정하는 옵션입니다. -o는 잘라낸 R1 결과 파일 이름이고, -p는 잘라낸 R2 결과 파일 이름입니다.

처음에는 옵션이 많아서 무서워 보일 수 있습니다. 하지만 구조를 나누어 보면 단순합니다.

“R1과 R2 원본 파일을 넣고, 어댑터 서열을 찾아 제거한 뒤, trimmed_R1과 trimmed_R2라는 새 파일로 저장하겠습니다.”

품질이 낮은 끝부분까지 함께 자르고 싶으면 -q 20 같은 옵션을 추가할 수 있습니다.

cutadapt \
  -a AGATCGGAAGAG \
  -A AGATCGGAAGAG \
  -q 20 \
  -o trimmed_R1.fastq.gz \
  -p trimmed_R2.fastq.gz \
  R1.fastq.gz R2.fastq.gz

중요한 습관은 원본을 덮어쓰지 않는 것입니다. 원본 FASTQ는 그대로 두고, 전처리된 파일은 trimmed_ 같은 이름을 붙여 새로 저장하는 것이 좋습니다. 그래야 문제가 생겼을 때 다시 돌아갈 수 있습니다.

poly-A 꼬리와 반복 서열도 잘라낼 수 있습니다

RNA-seq 같은 데이터에서는 read 끝에 A가 길게 반복되는 poly-A tail이 남아 있을 수 있습니다. 예를 들어 AAAAAAAAAA...처럼 A가 길게 이어지는 부분입니다. 이 부분이 분석 목적에 방해되면 cutadapt로 잘라낼 수 있습니다.

본편에서 A{100} 같은 표현을 만나면 “A가 100번 반복되는 긴 꼬리 패턴” 정도로 읽으면 됩니다. 정규표현식 감각이 조금 들어가지만, 핵심은 단순합니다. 생물학적 의미를 해석하려는 부분과 실험 과정에서 남은 기술적 흔적을 구분해 정리하는 것입니다.


8. 19장에서 명령어를 읽는 법

19장에서는 다음과 같은 명령어가 나옵니다.

for i in `seq 1 2`; do fastqc R${i}.fastq.gz; done

초보자에게는 이 한 줄이 매우 복잡해 보입니다. 하지만 의미는 단순합니다.

seq 1 2는 1과 2를 만들어냅니다. for i in ...는 그 숫자를 하나씩 i에 넣어 반복합니다. R${i}.fastq.gz는 i가 1일 때 R1.fastq.gz, i가 2일 때 R2.fastq.gz가 됩니다. 따라서 이 명령어는 R1과 R2 파일에 대해 FastQC를 반복 실행합니다.

즉 다음 두 줄을 짧게 쓴 것입니다.

fastqc R1.fastq.gz
fastqc R2.fastq.gz

반복문은 생명정보학에서 매우 자주 나옵니다. 샘플이 2개가 아니라 20개, 200개일 수도 있기 때문입니다. 사람이 하나씩 명령어를 치면 실수하기 쉽고 시간이 오래 걸립니다. 반복문은 같은 작업을 여러 파일에 안정적으로 적용하는 방법입니다.

다만 처음에는 한 줄짜리 반복문보다, 먼저 파일 하나에 대해 명령어가 제대로 되는지 확인하는 것이 좋습니다. 그다음 여러 파일에 반복 적용하면 됩니다. 실전에서는 작은 샘플로 먼저 테스트하고, 그다음 전체 데이터에 적용하는 습관이 중요합니다.


9. 19장에 들어가기 전 최소 체크리스트

19장을 읽기 전에 다음 질문에 답할 수 있으면 좋습니다.

질문 이해해야 할 답
FASTQ는 몇 줄이 read 하나인가요? 4줄입니다. ID, 서열, +, 품질 점수입니다.
.fastq.gz는 무엇인가요? FASTQ 파일을 gzip으로 압축한 파일입니다.
R1과 R2는 어떤 관계인가요? 같은 DNA 조각의 양쪽 끝에서 읽은 paired-end 파일입니다.
FastQC는 무엇을 하나요? FASTQ 품질을 보고서로 보여줍니다.
cutadapt는 무엇을 하나요? 어댑터나 낮은 품질 부분을 잘라냅니다.
전처리 뒤에는 무엇을 해야 하나요? FastQC를 다시 실행해 개선 여부를 확인해야 합니다.

문제 풀이

NGS 시퀀싱과 FASTQ 파일 처리

0 / 31
Gemini AI 채점

주관식 답안은 Gemini API로 채점합니다. API 키는 이 브라우저에만 저장됩니다.

API KEY 미등록
  1. 1. [쉬움] 객관식

    .fastq.gz 파일에 대한 설명으로 가장 적절한 것은 무엇인가?

    선택지
  2. 2. [쉬움] 객관식

    FASTQ에서 read 하나가 가지는 기본 줄 수는 몇 줄인가?

    선택지
  3. 3. [쉬움] 객관식

    FASTQ 네 번째 줄의 의미로 가장 적절한 것은 무엇인가?

    선택지
  4. 4. [쉬움] 객관식

    R1과 R2 파일의 관계로 가장 적절한 것은 무엇인가?

    선택지
  5. 5. [보통] 객관식

    FastQC의 역할로 가장 적절한 것은 무엇인가?

    선택지
  6. 6. [보통] 객관식

    어댑터 오염이 생기는 이유로 가장 적절한 것은 무엇인가?

    선택지
  7. 7. [보통] 객관식

    트리밍 후 FastQC를 다시 실행해야 하는 이유로 가장 적절한 것은 무엇인가?

    선택지
  8. 8. [어려움] 객관식

    FASTQ 전처리에서 가장 위험한 태도로 적절한 것은 무엇인가?

    선택지
  9. 1. [쉬움] 객관식

    다음 FASTQ 조각에서 서열에 해당하는 줄은 무엇인가?

    @read001
    ACGTACGT
    +
    FFFFFFFF
    
    선택지
  10. 2. [쉬움] 객관식

    다음 FASTQ 조각에서 품질 점수 문자열에 해당하는 줄은 무엇인가?

    @read001
    ACGTACGT
    +
    FFFFFFFF
    
    선택지
  11. 3. [쉬움] 객관식

    다음 명령어의 목적에 가장 가까운 것은 무엇인가?

    fastqc sample_R1.fastq.gz
    
    선택지
  12. 4. [쉬움] 객관식

    다음 FASTQ 조각에서 하나의 read가 어떤 구조를 갖는지 가장 적절하게 설명한 것은 무엇인가?

    @read001
    ACGTACGT
    +
    FFFFFFFF
    
    선택지
  13. 5. [보통] 객관식

    다음 명령어가 하는 일로 가장 적절한 것은 무엇인가?

    for i in `seq 1 2`; do fastqc R${i}.fastq.gz; done
    
    선택지
  14. 6. [보통] 객관식

    다음 cutadapt 명령어를 해석한 내용으로 가장 적절한 것은 무엇인가?

    cutadapt \
      -a AGATCGGAAGAG \
      -A AGATCGGAAGAG \
      -q 20 \
      -o trimmed_R1.fastq.gz \
      -p trimmed_R2.fastq.gz \
      R1.fastq.gz R2.fastq.gz
    
    선택지
  15. 7. [보통] 객관식

    다음 paired-end 파일명에서 같은 샘플의 짝으로 가장 적절한 것은 무엇인가?

    tumor_R1.fastq.gz
    
    선택지
  16. 8. [보통] 객관식

    다음 cutadapt 명령어에서 -o의 역할로 가장 적절한 것은 무엇인가?

    cutadapt -a AGATCGGAAGAGC -o trimmed.fastq.gz raw.fastq.gz
    
    선택지
  17. 9. [어려움] 객관식

    paired-end 트리밍에서 가장 주의해야 할 점으로 적절한 것은 무엇인가?

    선택지
  18. 10. [어려움] 객관식

    다음 명령어에서 문제로 볼 수 있는 것은 무엇인가?

    cutadapt -a ADAPTER -o sample.fastq.gz sample.fastq.gz
    
    선택지
  19. 11. [어려움] 객관식

    FastQC 보고서에서 Per base sequence quality가 read 끝으로 갈수록 급격히 낮아질 때 가장 적절한 대응은 무엇인가?

    선택지
  20. 12. [어려움] 객관식

    다음 흐름에서 빠진 확인 단계로 가장 적절한 것은 무엇인가?

    raw FASTQ → cutadapt → trimmed FASTQ → alignment
    
    선택지
  21. 21. [보통] 객관식

    FASTQ 품질 문자 I의 ASCII 코드값이 73이고 Phred+33 방식을 쓴다. Phred 점수는 얼마인가?

    선택지
  22. 22. [보통] 객관식

    FASTQ 품질 문자 #의 ASCII 코드값이 35이고 Phred+33 방식을 쓴다. Phred 점수는 얼마인가?

    선택지
  23. 23. [쉬움] 객관식

    Q30의 품질 감각으로 가장 적절한 것은 무엇인가?

    선택지
  24. 24. [보통] 객관식

    FASTQ 한 read의 4줄 구조로 가장 적절한 것은 무엇인가?

    선택지
  25. 25. [보통] 객관식

    cutadapt 명령어에서 -q 20의 의미로 가장 적절한 것은 무엇인가?

    선택지
  26. 26. [어려움] 객관식

    FastQC의 Overrepresented sequences 항목이 경고를 보일 때 의심할 수 있는 것으로 가장 적절한 것은 무엇인가?

    선택지
  27. 27. [어려움] 객관식

    paired-end FASTQ를 전처리할 때 가장 적절한 태도는 무엇인가?

    선택지
  28. 28. [어려움] 객관식

    본편에서 A{100} 같은 표현을 poly-A 처리 맥락에서 만났을 때 가장 적절한 해석은 무엇인가?

    선택지
  29. 주관식 1. [쉬움] 주관식 · Gemini 채점

    FASTQ read 하나의 4줄 구조를 순서대로 설명하라.

  30. 주관식 2. [보통] 주관식 · Gemini 채점

    R1/R2 paired-end 파일을 다룰 때 주의해야 할 점을 설명하라.

  31. 주관식 3. [어려움] 주관식 · Gemini 채점

    FASTQ 전처리의 기본 흐름을 품질 확인, 어댑터 제거, 재확인 관점에서 설명하라.