35 분 소요

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

25챕터는 단일세포 RNA 시퀀싱, 즉 scRNA-seq 데이터를 직접 분석하는 실습입니다. bulk RNA-seq에서는 한 조직이나 샘플 전체의 평균 발현량을 봅니다. 반면 scRNA-seq에서는 세포 하나하나의 유전자 발현량을 봅니다.

쉽게 말하면 bulk RNA-seq는 “반 전체 학생들의 평균 키”를 보는 것이고, scRNA-seq는 “학생 한 명 한 명의 키”를 모두 보는 것과 비슷합니다. 평균만 보면 반에 키 큰 학생이 많은지, 키 작은 학생이 많은지, 여러 집단이 섞여 있는지 알기 어렵습니다. 하지만 학생별 데이터를 보면 자연스럽게 무리가 보입니다. 생명정보학에서는 이 “학생 한 명 한 명”이 세포이고, “키와 몸무게 같은 여러 특성”이 유전자 발현량입니다.

단일세포 전사체 분석의 전체 흐름

25장에서 실습하는 흐름은 대략 다음과 같습니다.

먼저 세포 × 유전자 행렬을 만듭니다. 각 행은 세포이고, 각 열은 유전자입니다. 각 칸에는 해당 세포에서 해당 유전자가 얼마나 읽혔는지를 나타내는 count가 들어갑니다.

그다음 전처리를 합니다. 세포마다 읽힌 전체 read 수가 다르기 때문에 정규화를 하고, 숫자의 분포를 다루기 쉽게 로그 변환을 합니다.

그다음 PCA를 통해 수천 개 유전자 정보를 더 적은 축으로 요약합니다. 이후 KNN 그래프를 만들고, Leiden 알고리즘으로 비슷한 세포끼리 클러스터를 나눕니다. 마지막으로 UMAP으로 2차원 그림을 그려 사람이 눈으로 볼 수 있게 합니다.

이 흐름을 한 문장으로 줄이면 다음과 같습니다.

세포별 유전자 발현량 표를 정리해서, 비슷한 세포끼리 묶고, 각 세포 무리가 어떤 세포 유형인지 추정하는 장입니다.


2. Cell × Gene matrix는 무엇인가요?

단일세포 분석에서 가장 중요한 출발점은 Cell × Gene matrix입니다. matrix는 표라고 생각하시면 됩니다. 행과 열이 있는 숫자 표입니다.

Cell × Gene Matrix

Cell × Gene matrix에서는 행이 세포입니다. 예를 들어 Cell_0, Cell_1, Cell_2 같은 식입니다. 열은 유전자입니다. 예를 들어 Gene_0, Gene_1, Gene_2 같은 식입니다. 각 칸의 숫자는 “이 세포에서 이 유전자의 RNA 조각이 몇 번 관측되었는가”를 뜻합니다.

원문에서는 시뮬레이션 데이터를 만들 때 20개의 세포 유형, 각 세포 유형당 100개 세포, 총 500개 유전자를 사용합니다. 그러면 총 세포 수는 2,000개가 됩니다. 이 경우 데이터 표의 크기는 2,000행 × 500열입니다.

이 숫자 표를 볼 때 초보자가 꼭 기억해야 할 점은 하나입니다.

단일세포 분석에서 세포 하나는 “유전자 수만큼의 숫자를 가진 하나의 점”입니다.

예를 들어 유전자가 500개라면, 세포 하나는 500개의 숫자를 가진 점입니다. 현실에서는 유전자가 수천 개에서 수만 개일 수 있습니다. 그래서 사람이 직접 눈으로 볼 수 없습니다. PCA와 UMAP 같은 차원 축소 방법이 필요한 이유가 여기에 있습니다.

Cell × Gene matrix는 이후 모든 분석의 출발점입니다. 정규화도 이 표에 대해 하고, PCA도 이 표를 바탕으로 하고, 클러스터링도 이 표에서 출발합니다. 그래서 단일세포 분석을 이해하려면 먼저 “세포 × 유전자 숫자 표”라는 감각이 잡혀야 합니다.


3. scRNA-seq count는 왜 일반적인 숫자와 다르게 봐야 하나요?

scRNA-seq 데이터의 count는 평범한 시험 점수 같은 숫자가 아닙니다. 여러 가지 이유로 매우 불균형하고 흔들림이 큽니다.

첫째, 세포마다 읽힌 총량이 다릅니다. 어떤 세포는 RNA 조각이 많이 읽혔고, 어떤 세포는 적게 읽혔을 수 있습니다. 이것은 그 세포가 실제로 모든 유전자를 적게 발현해서일 수도 있지만, 실험 과정에서 적게 포획되었기 때문일 수도 있습니다.

둘째, 유전자별 발현량 차이가 매우 큽니다. 어떤 유전자는 거의 모든 세포에서 많이 발현됩니다. 어떤 유전자는 특정 세포에서만 조금 발현됩니다. 어떤 유전자는 대부분 0입니다.

셋째, 단일세포 데이터에는 dropout 현상이 있습니다. 실제로는 발현되었지만 실험 과정에서 잡히지 않아 0으로 기록되는 경우가 있습니다. 초보자는 dropout을 “진짜 0인지, 측정 과정에서 놓친 0인지 헷갈리는 문제”라고 이해하면 됩니다.

원문에서는 실제 데이터 분석 전에 음이항 분포를 이용해 시뮬레이션 데이터를 만듭니다. 음이항 분포는 단일세포 발현 count처럼 평균보다 분산이 큰 데이터를 흉내 내는 데 자주 쓰입니다. 꼭 수식을 완벽히 이해할 필요는 없습니다. 중요한 것은 이것입니다.

scRNA-seq count는 깔끔한 숫자가 아니라, 실험 잡음과 생물학적 차이가 함께 섞인 숫자입니다.

그래서 분석 전에 정규화, 로그 변환, 필터링, 차원 축소 같은 과정이 필요합니다.


4. 마커 유전자와 배경 유전자는 무엇인가요?

원문 시뮬레이션에서는 각 세포 유형마다 마커 유전자를 지정합니다. 마커 유전자는 어떤 세포 유형을 알아보는 데 도움이 되는 유전자입니다.

예를 들어 어떤 세포 유형 A에서만 Gene_37이 유독 높게 발현된다고 합시다. 그러면 Gene_37은 세포 유형 A의 마커 유전자 후보가 됩니다. 사람으로 비유하면 특정 직업군이 주로 쓰는 도구나 복장 같은 것입니다. 소방관에게 방화복이 중요한 단서가 되고, 의사에게 흰 가운이 단서가 될 수 있는 것처럼, 세포 유형에도 특징적인 유전자 발현 패턴이 있습니다.

배경 유전자는 특정 세포 유형만의 특징을 강하게 보여주지 않는 유전자입니다. 모든 세포에서 조금씩 발현되거나, 분석 목적상 세포 유형 구분에 큰 도움이 되지 않는 유전자일 수 있습니다.

마커 유전자를 찾는 이유는 클러스터의 정체를 해석하기 위해서입니다. Leiden 알고리즘이 세포를 0번, 1번, 2번 같은 클러스터로 나누어도, 그 숫자만으로는 그 클러스터가 어떤 세포인지 알 수 없습니다. 그래서 각 클러스터에서 높게 발현되는 마커 유전자를 찾아 “아, 이 클러스터는 뉴런일 가능성이 높겠구나”, “이 클러스터는 면역세포일 가능성이 있겠구나”라고 해석합니다.

즉 클러스터링은 무리를 나누는 일이고, 마커 유전자 해석은 그 무리에 이름을 붙이는 일입니다.


5. 라이브러리 크기 정규화는 왜 하나요?

원문에서는 세포마다 전체 count 합을 계산한 뒤, 각 세포의 발현량을 라이브러리 크기로 나누고 중앙값에 맞춥니다. 이 과정을 라이브러리 크기 정규화라고 볼 수 있습니다.

정규화와 로그 변환

라이브러리 크기는 한 세포에서 읽힌 RNA 조각의 총량입니다. 어떤 세포는 총 count가 100,000이고, 어떤 세포는 20,000일 수 있습니다. 이때 단순히 원본 count만 비교하면 총량이 큰 세포가 모든 유전자를 더 많이 발현하는 것처럼 보일 수 있습니다.

하지만 실제로 중요한 것은 “전체 중에서 이 유전자가 상대적으로 얼마나 많이 읽혔는가”일 때가 많습니다. 그래서 각 세포의 총량 차이를 어느 정도 맞춰주는 과정이 필요합니다.

비유하자면, 두 사람이 장을 봤는데 한 사람은 10만 원어치를 샀고 다른 사람은 2만 원어치를 샀다고 해봅시다. 사과를 각각 1만 원, 5천 원 샀다면 단순 금액으로는 첫 사람이 사과를 더 많이 산 것입니다. 하지만 전체 장보기에서 사과가 차지하는 비율로 보면 첫 사람은 10%, 두 번째 사람은 25%입니다. 정규화는 이런 비율 감각을 만들기 위한 과정입니다.

단일세포 데이터에서도 마찬가지입니다. 원본 count를 그대로 비교하기보다, 세포별 총량 차이를 보정한 뒤 비교해야 세포 간 발현 패턴을 더 공정하게 볼 수 있습니다.


6. 로그 변환은 왜 하나요?

로그 변환은 숫자의 폭을 줄이는 과정입니다. 원문에서는 np.log1p(df_normalized)를 사용합니다. log1p(x)log(1+x)입니다. 왜 굳이 1을 더할까요? count에는 0이 많기 때문입니다. 로그는 0에 대해 바로 계산하기 어렵기 때문에 1을 더한 뒤 로그를 씌웁니다.

예를 들어 어떤 유전자의 발현량이 1, 10, 100, 1000처럼 차이가 난다고 합시다. 원본 숫자에서는 1000이 너무 커서 작은 값들의 차이가 잘 보이지 않습니다. 로그 변환을 하면 큰 숫자는 눌리고, 작은 숫자들 사이의 차이도 상대적으로 보기 쉬워집니다.

로그 변환은 “큰 목소리를 조금 낮추고, 작은 목소리도 들리게 만드는 과정”이라고 생각하시면 됩니다.

물론 로그 변환이 모든 문제를 해결하는 것은 아닙니다. 하지만 단일세포 분석에서는 발현량 분포가 한쪽으로 매우 치우쳐 있기 때문에, 로그 변환을 통해 분석과 시각화를 더 안정적으로 만드는 경우가 많습니다.


7. 평균-분산 관계는 왜 확인하나요?

원문에서는 유전자별 평균과 분산을 계산해 산점도로 그립니다. 평균은 해당 유전자가 전반적으로 얼마나 많이 발현되는지를 나타내고, 분산은 세포마다 그 유전자의 발현량이 얼마나 많이 흔들리는지를 나타냅니다.

단일세포 데이터에서는 평균이 큰 유전자가 분산도 큰 경향을 보입니다. 많이 발현되는 유전자는 값의 변동 폭도 커지기 쉽습니다. 그래서 단순히 “분산이 큰 유전자”를 고르면, 그냥 평균이 큰 유전자만 골라질 위험이 있습니다.

이 개념은 나중에 고변이 유전자, 즉 HVG를 고를 때 중요합니다. HVG는 세포 유형을 구분하는 데 정보가 많은 유전자를 뜻합니다. 모든 유전자를 다 쓰면 잡음도 많고 계산도 무거워집니다. 그래서 발현 패턴 차이를 잘 보여주는 유전자를 골라 분석하는 것이 유리합니다.

원문 25장에서는 직접 평균-분산 관계를 그림으로 확인하고, Scanpy 분석에서는 highly_variable_genes 함수를 사용합니다. 초보자는 다음처럼 이해하면 됩니다.

평균-분산 관계를 보는 이유는 “어떤 유전자가 진짜로 세포 차이를 잘 보여주는가?”를 판단하기 위해서입니다.


8. PCA는 왜 먼저 하나요?

PCA는 고차원 데이터를 몇 개의 큰 축으로 요약하는 방법입니다. 이 개념은 11장 선수지식에서 더 자세히 다뤘습니다. 여기서는 25장을 읽기 위한 직관만 잡으면 됩니다.

단일세포 데이터는 유전자가 수천 개 이상일 수 있습니다. 세포 하나를 수천 개 숫자로 표현하는 셈입니다. 이 상태에서 바로 비슷한 세포를 찾으려고 하면 계산도 무겁고 잡음도 많습니다. 그래서 먼저 PCA를 사용해 중요한 변화 방향을 앞쪽 몇 개 축으로 요약합니다.

원문에서는 PCA를 50차원으로 줄입니다. 즉 원래 500개 유전자의 정보를 50개의 PC 값으로 요약하는 것입니다. 실제 분석에서는 수천 개 유전자를 30~50개 정도의 주성분으로 줄이는 일이 흔합니다.

PCA를 비유하면, 학생을 평가할 때 수십 개 항목을 전부 보는 대신 “학업 성향”, “운동 성향”, “예술 성향”처럼 큰 축 몇 개로 요약하는 것과 비슷합니다. 물론 모든 정보를 완벽히 보존하지는 못하지만, 중요한 구조를 더 잘 볼 수 있게 해줍니다.

PCA를 먼저 하는 이유는 다음과 같습니다.

  • 잡음을 줄이기 위해서입니다.
  • 계산량을 줄이기 위해서입니다.
  • UMAP과 KNN 그래프가 더 안정적으로 작동하도록 하기 위해서입니다.
  • 유전자 하나하나보다 전체 발현 패턴을 기준으로 세포를 비교하기 위해서입니다.

9. KNN 그래프는 무엇인가요?

KNN은 k-nearest neighbors, 즉 k개의 가장 가까운 이웃이라는 뜻입니다. 단일세포 분석에서는 각 세포마다 발현 패턴이 비슷한 이웃 세포를 찾아 연결합니다. 이 연결들을 모으면 그래프가 됩니다.

그래프는 점과 선으로 이루어진 구조입니다. 점은 세포이고, 선은 “두 세포가 비슷하다”는 연결입니다. 예를 들어 n_neighbors=15라면 각 세포는 대략 가장 비슷한 15개의 세포와 연결됩니다.

KNN 그래프가 중요한 이유는 Leiden 클러스터링과 UMAP이 이 그래프를 기반으로 작동하기 때문입니다. 즉 단일세포 분석에서 “비슷한 세포끼리 가까이 둔다”는 생각은 KNN 그래프에서 시작됩니다.

초보자는 KNN 그래프를 “세포들의 친구 관계도”라고 생각하면 됩니다. 발현 패턴이 비슷한 세포끼리 친구로 연결합니다. 친구 관계가 빽빽한 무리는 하나의 세포 집단일 가능성이 높습니다.

여기서 k 값을 너무 작게 잡으면 연결이 너무 끊어질 수 있습니다. 너무 크게 잡으면 서로 다른 집단까지 한데 묶일 수 있습니다. 그래서 n_neighbors는 분석 결과에 영향을 주는 중요한 파라미터입니다.


10. UMAP과 Leiden은 무엇이 다른가요?

UMAP과 Leiden은 자주 함께 나오지만 역할이 다릅니다.

PCA, UMAP, Leiden은 역할이 다릅니다

UMAP은 시각화 방법입니다. 고차원 공간에 있는 세포들을 2차원 그림 위에 배치합니다. 사람이 눈으로 세포 무리를 볼 수 있게 해줍니다. UMAP에서 가까운 점들은 대체로 발현 패턴이 비슷한 세포입니다.

Leiden은 클러스터링 알고리즘입니다. KNN 그래프에서 서로 촘촘하게 연결된 세포 무리를 찾아 번호를 붙입니다. 예를 들어 어떤 세포들은 클러스터 0, 어떤 세포들은 클러스터 1, 어떤 세포들은 클러스터 2로 분류됩니다.

중요한 것은 UMAP 그림 자체가 클러스터링을 하는 것이 아니라는 점입니다. UMAP은 보여주는 역할이고, Leiden은 나누는 역할입니다. 물론 둘 다 KNN 그래프와 관련이 있기 때문에 결과가 비슷하게 보일 수 있지만, 목적은 다릅니다.

초보자가 헷갈리지 않으려면 다음 문장을 기억하면 됩니다.

UMAP은 “그림으로 보여주기”이고, Leiden은 “세포 무리 나누기”입니다.


11. resolution 파라미터는 무엇인가요?

Leiden 클러스터링에서 resolution은 클러스터를 얼마나 잘게 나눌지 정하는 값입니다. 원문 실습에서는 resolution을 0.5, 1.0, 2.0으로 바꿔 보면서 클러스터 수의 변화를 관찰하라고 합니다.

resolution이 낮으면 큰 덩어리로 묶이는 경향이 있습니다. 예를 들어 여러 하위 세포 유형이 하나의 큰 클러스터로 묶일 수 있습니다. resolution이 높으면 더 잘게 나뉩니다. 하나의 세포 유형 안에서도 상태가 조금 다른 세포들이 여러 클러스터로 나뉠 수 있습니다.

이것은 카메라 줌과 비슷합니다. 멀리서 보면 산 전체가 하나로 보입니다. 조금 더 확대하면 능선이 보입니다. 더 확대하면 나무와 바위까지 보입니다. resolution은 이런 확대 정도와 비슷합니다.

하지만 resolution이 높다고 무조건 좋은 것은 아닙니다. 너무 잘게 나누면 생물학적으로 의미 없는 작은 군집이 생길 수 있습니다. 반대로 너무 낮으면 중요한 세포 하위 유형을 놓칠 수 있습니다.

따라서 좋은 분석에서는 resolution을 하나만 믿지 않고, 여러 값을 비교하고, 마커 유전자와 생물학적 지식을 함께 사용해 해석합니다.


12. Wilcoxon rank-sum 검정은 왜 쓰나요?

원문에서는 두 클러스터 간 차등 발현 유전자를 찾기 위해 Wilcoxon rank-sum 검정을 사용합니다. 이 검정은 두 집단의 값 분포가 서로 다른지 비교하는 통계 방법입니다.

여기서 두 집단은 예를 들어 클러스터 0의 세포들과 클러스터 1의 세포들입니다. 어떤 유전자에 대해 클러스터 0의 세포들은 값이 높고, 클러스터 1의 세포들은 값이 낮다면, 이 유전자는 두 클러스터를 구분하는 데 도움이 될 수 있습니다.

왜 평균만 비교하지 않을까요? 단일세포 데이터는 0이 많고 분포가 찌그러져 있습니다. 평균 하나만 보면 이상치나 분포 모양 때문에 오해할 수 있습니다. Wilcoxon rank-sum 검정은 실제 값 자체보다 순위를 사용하기 때문에, 정규분포를 강하게 가정하지 않고 두 집단을 비교할 수 있습니다.

초보자는 이 검정을 “두 반의 시험 점수 순위가 전반적으로 다른지 보는 방법”이라고 생각하면 됩니다. 한두 명의 극단적인 점수보다 전체적인 순위 차이를 봅니다.

원문에서는 여러 유전자를 동시에 검사하므로 Bonferroni correction도 적용합니다. 이것은 많은 유전자를 검사할수록 우연히 유의해 보이는 결과가 늘어나기 때문에, 기준을 더 엄격하게 만드는 보정입니다. 다중검정 보정 개념은 24장 선수지식에서 더 자세히 다뤘습니다.


13. Volcano plot과 heatmap은 여기서도 왜 나오나요?

Volcano plot과 heatmap은 24장에서 bulk RNA-seq 차등 발현 분석을 할 때도 나왔습니다. 25장에서는 클러스터 간 차등 발현 유전자를 찾을 때 다시 등장합니다.

Volcano plot은 x축에 변화량, y축에 통계적 유의성을 둔 그림입니다. 오른쪽 위나 왼쪽 위에 있는 유전자는 변화량도 크고 통계적으로도 유의한 후보입니다.

Heatmap은 여러 세포와 여러 유전자의 발현 패턴을 색으로 보여줍니다. 원문에서는 클러스터링 결과로 세포를 정렬한 뒤 heatmap을 그립니다. 이때 같은 클러스터의 세포들이 비슷한 색 패턴을 보이면, 클러스터링 결과가 어느 정도 설득력 있어 보입니다.

마커 유전자는 세포 무리의 이름표 후보입니다

여기서 중요한 것은 그림을 “예쁘게 보는 것”이 아닙니다. 그림은 분석 결과가 말이 되는지 확인하는 도구입니다.

  • Volcano plot은 어떤 유전자가 클러스터를 구분하는지 보여줍니다.
  • Heatmap은 선택된 유전자들이 실제로 세포 무리별 패턴을 보이는지 보여줍니다.
  • Dot plot은 클러스터별 마커 유전자의 발현 정도와 발현 세포 비율을 함께 보여줍니다.

14. Scanpy는 무엇이고 왜 쓰나요?

Scanpy는 Python 기반의 단일세포 분석 패키지입니다. 원문 앞부분에서는 numpy, pandas, scikit-learn, UMAP, leidenalg 등을 사용해 분석 단계를 직접 구현합니다. 하지만 실제 연구에서는 매번 모든 과정을 직접 구현하기보다 Scanpy 같은 패키지를 많이 사용합니다.

Scanpy는 단일세포 분석에 필요한 기능을 하나의 흐름으로 제공합니다. 예를 들어 다음 기능들이 포함됩니다.

  • 데이터 로드
  • 품질 관리 지표 계산
  • 세포와 유전자 필터링
  • 정규화와 로그 변환
  • 고변이 유전자 선택
  • 스케일링
  • PCA
  • 이웃 그래프 구성
  • UMAP
  • Leiden 클러스터링
  • 마커 유전자 탐색
  • 다양한 시각화

원문에서는 adata = sc.read_h5ad("data.h5ad")처럼 h5ad 파일을 읽습니다. h5ad는 AnnData 객체를 저장한 파일 형식입니다. AnnData는 단일세포 데이터를 담기 위해 자주 쓰이는 자료구조입니다.

초보자는 Scanpy를 “단일세포 분석용 종합 도구상자”라고 생각하면 됩니다. 망치, 드라이버, 줄자, 전동공구를 따로 챙기는 대신, 한 공구함에 넣어 둔 것입니다.


15. AnnData와 h5ad는 무엇인가요?

AnnData는 단일세포 데이터 분석에서 자주 사용하는 데이터 객체입니다. h5ad는 그 AnnData 객체를 파일로 저장한 형식입니다.

AnnData에는 보통 다음 정보가 들어갑니다.

위치 의미 쉬운 설명
adata.X 발현 행렬 세포 × 유전자 숫자 표입니다.
adata.obs 세포 정보 각 세포의 이름, 세포 유형, 클러스터, QC 정보 등입니다.
adata.var 유전자 정보 각 유전자의 이름, 고변이 여부, 미토콘드리아 유전자 여부 등입니다.
adata.obsm 다차원 좌표 PCA 좌표, UMAP 좌표 같은 값입니다.
adata.layers 여러 버전의 행렬 raw count, normalized count 등을 따로 보관할 수 있습니다.

이 구조를 이해하면 Scanpy 코드가 훨씬 덜 낯설어집니다.

예를 들어 adata.obs['cell_type']은 각 세포의 세포 유형 라벨입니다. adata.var_names는 유전자 이름 목록입니다. adata.obsm['X_pca']는 PCA 결과 좌표입니다. adata.obsm['X_umap']은 UMAP 결과 좌표입니다.

단일세포 분석에서 AnnData는 “분석 노트가 붙어 있는 데이터 상자”라고 이해하면 좋습니다. 원본 발현값뿐 아니라, 분석 중간 결과와 세포 정보, 유전자 정보를 함께 담아 둡니다.


16. 미토콘드리아 유전자 비율은 왜 보나요?

원문 Scanpy 분석에서는 미토콘드리아 유전자 비율을 계산합니다.

adata.var['mt'] = adata.var_names.str.startswith('MT-')
sc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], percent_top=None, log1p=False, inplace=True)

미토콘드리아 유전자는 보통 MT-로 시작합니다. 세포가 손상되거나 죽어가는 경우, 전체 RNA 중 미토콘드리아 유전자 비율이 비정상적으로 높게 나타날 수 있습니다. 그래서 단일세포 분석에서는 미토콘드리아 유전자 비율을 QC 지표로 자주 봅니다.

QC는 quality control, 즉 품질 관리입니다. 품질이 너무 낮은 세포를 그대로 분석에 넣으면 클러스터링 결과가 왜곡될 수 있습니다. 예를 들어 죽어가는 세포들이 하나의 이상한 클러스터를 만들 수 있습니다. 그러면 생물학적으로 의미 있는 세포 유형으로 착각할 위험이 있습니다.

단일세포 분석의 기본 QC 지표는 보통 다음과 같습니다.

QC 지표 의미 너무 낮거나 높으면 생길 수 있는 문제
total_counts 세포별 전체 count 너무 낮으면 정보가 부족할 수 있습니다.
n_genes_by_counts 검출된 유전자 수 너무 낮으면 빈약한 세포, 너무 높으면 doublet 가능성이 있습니다.
pct_counts_mt 미토콘드리아 유전자 비율 너무 높으면 손상 세포일 수 있습니다.

25장을 읽기 전에는 “QC는 분석 전에 이상한 세포를 걸러내기 위한 안전장치”라고 이해하면 됩니다.


17. 작은 숫자로 단일세포 행렬을 읽는 연습

단일세포 분석에서는 행렬의 크기와 숫자 비율을 읽는 감각이 중요합니다. 예를 들어 세포 유형이 20개이고 각 유형마다 100개 세포가 있다면 총 세포 수는 다음과 같습니다.

20개 세포 유형 × 100개 세포 = 2,000개 세포

유전자가 500개라면 cell × gene matrix의 크기는 다음과 같습니다.

2,000개 세포 × 500개 유전자

이런 shape 감각이 있어야 Scanpy에서 adata.X.shape 같은 값을 봤을 때 데이터가 정상적으로 만들어졌는지 판단할 수 있습니다.

라이브러리 크기 정규화도 작은 숫자로 보면 쉽습니다.

Cell A: 전체 count 1,000개, GeneX count 100개 → GeneX 비율 10%
Cell B: 전체 count   500개, GeneX count 100개 → GeneX 비율 20%

두 세포 모두 GeneX count가 100으로 같지만, 전체 read 수가 다르기 때문에 의미는 다릅니다. 그래서 세포마다 총 count 차이를 맞춰주는 정규화가 필요합니다.

마지막으로 PCA, KNN, Leiden, UMAP의 역할은 섞으면 안 됩니다. PCA는 유전자 수천 개 정보를 적은 축으로 요약하고, KNN은 비슷한 세포끼리 연결하며, Leiden은 그 연결망에서 군집을 찾고, UMAP은 그 결과를 사람이 보기 쉬운 2차원 그림으로 보여줍니다.

18. 25챕터 들어가기 전 최소 체크리스트

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

  • scRNA-seq와 bulk RNA-seq의 차이는 무엇인가요?
  • Cell × Gene matrix에서 행과 열은 각각 무엇인가요?
  • count 값은 왜 그대로 비교하면 위험한가요?
  • 라이브러리 크기 정규화는 왜 필요한가요?
  • 로그 변환은 숫자를 어떻게 바꾸나요?
  • 마커 유전자는 무엇이며 왜 중요한가요?
  • PCA는 왜 먼저 하나요?
  • KNN 그래프에서 점과 선은 각각 무엇인가요?
  • UMAP과 Leiden의 역할은 어떻게 다른가요?
  • resolution 값이 높아지면 클러스터는 보통 어떻게 변하나요?
  • Wilcoxon rank-sum 검정은 무엇을 비교하나요?
  • Scanpy와 AnnData는 각각 어떤 역할을 하나요?
  • 미토콘드리아 유전자 비율은 왜 QC 지표로 사용되나요?

이 질문들이 이해된다면 25장의 코드는 단순한 Python 예제가 아니라, 세포별 발현 데이터를 세포 집단 해석으로 바꾸는 분석 파이프라인으로 보일 것입니다.


문제 풀이

단일세포 전사체 분석

0 / 29
Gemini AI 채점

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

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

    25챕터의 단일세포 전사체 분석이 다루는 기본 단위로 가장 적절한 것을 고르라.

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

    Cell × Gene matrix에 대한 설명으로 가장 적절한 것을 고르라.

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

    마커 유전자(marker gene)의 의미로 가장 적절한 것을 고르라.

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

    라이브러리 크기 정규화가 필요한 이유로 가장 적절한 것을 고르라.

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

    로그 변환을 사용하는 주된 이유로 가장 적절한 것을 고르라.

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

    PCA를 단일세포 분석 초반에 쓰는 이유로 가장 적절한 것을 고르라.

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

    UMAP과 Leiden clustering의 차이로 가장 적절한 것을 고르라.

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

    KNN 그래프의 기본 의미로 가장 적절한 것을 고르라.

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

    resolution 파라미터가 Leiden clustering에서 갖는 의미로 가장 적절한 것을 고르라.

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

    Wilcoxon rank-sum 검정이 marker gene 탐색에 쓰이는 이유로 가장 적절한 것을 고르라.

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

    Scanpy가 단일세포 분석에서 제공하는 역할로 가장 적절한 것을 고르라.

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

    AnnData와 h5ad에 대한 설명으로 가장 적절한 것을 고르라.

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

    미토콘드리아 유전자 비율을 QC에서 확인하는 이유로 가장 적절한 것을 고르라.

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

    단일세포 count 자료에서 dropout 문제가 중요한 이유로 가장 적절한 것을 고르라.

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

    평균-분산 관계를 단일세포 분석에서 확인하는 이유로 가장 적절한 것을 고르라.

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

    클러스터별 marker gene을 해석할 때 가장 타당한 태도를 고르라.

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

    PCA 50차원 정도를 사용한 뒤 UMAP과 clustering을 수행하는 전략의 이유로 가장 적절한 것을 고르라.

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

    Volcano plot과 heatmap이 단일세포 marker gene 분석에서도 쓰이는 이유로 가장 적절한 것을 고르라.

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

    단일세포 분석에서 normalization, log transform, HVG selection, PCA의 순서가 갖는 의미로 가장 적절한 것을 고르라.

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

    클러스터 수가 지나치게 많게 나온 경우 가장 먼저 의심하거나 조절할 요소로 적절한 것을 고르라.

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

    세포 유형 20개가 있고 각 유형마다 세포 100개가 있다. 총 세포 수로 가장 적절한 것을 고르라.

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

    세포 2,000개와 유전자 500개로 cell × gene matrix를 만들었다. matrix shape로 가장 적절한 것을 고르라.

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

    다음 두 세포의 GeneX 원본 count는 모두 100이다. 정규화가 필요한 이유로 가장 적절한 것을 고르라.

    Cell A 전체 count = 1,000, GeneX count = 100
    Cell B 전체 count =   500, GeneX count = 100
    
    선택지
  24. 24. [보통] 객관식

    PCA, KNN, Leiden, UMAP의 역할 연결로 가장 적절한 것을 고르라.

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

    Cell × Gene matrix의 의미를 설명하라.

  26. 주관식 2. [쉬움] 주관식 · Gemini 채점

    라이브러리 크기 정규화와 로그 변환을 하는 이유를 설명하라.

  27. 주관식 3. [보통] 주관식 · Gemini 채점

    PCA, KNN graph, UMAP, Leiden clustering의 흐름을 설명하라.

  28. 주관식 4. [보통] 주관식 · Gemini 채점

    마커 유전자를 이용해 세포 유형을 추론할 때 조심해야 할 점을 설명하라.

  29. 주관식 5. [어려움] 주관식 · Gemini 채점

    미토콘드리아 유전자 비율과 dropout이 단일세포 분석 해석에 주는 영향을 설명하라.