콘텐츠로 이동

조기·후기 발병 대장암 비교 실습: EOCRC 특이 발현 후보 찾기

이 실습에서 답할 질문은 하나입니다.

종양과 인접 정상조직 사이의 발현 변화는 조기 발병 대장암과 후기 발병 대장암에서 얼마나 비슷하며, 젊은 환자군에서 더 두드러지는 유전자는 무엇인가?

조기 발병 대장암(early-onset colorectal cancer, EOCRC)은 보통 50세가 되기 전에 진단된 대장암을 뜻합니다. 비교할 후기 발병 대장암(later-onset colorectal cancer, LOCRC)은 이 연구에서 50세를 넘겨 진단된 환자군입니다. 둘은 서로 다른 암 종류가 아니라 진단 연령으로 나눈 연구 집단입니다.

먼저 후기 발병 대장암 실습처럼 각 환자의 Tumor와 Normal을 비교합니다. 이번에는 이 분석을 두 연령군에서 따로 실행한 뒤, 같은 유전자의 log2FoldChange를 나란히 놓습니다.

사용할 데이터는 두 GEO accession에 나뉘어 있습니다.

연령군GEO 데이터환자RNA-seq 샘플한 환자의 샘플
EOCRCGSE19600621명42개Tumor 1개와 Normal 1개
LOCRCGSE25184522명44개Tumor 1개와 Normal 1개

두 데이터 모두 환자에게서 수술로 절제한 종양 조직과 인접한 비종양 조직을 한 쌍씩 사용합니다. 암세포만 분리한 데이터가 아니라 여러 세포가 섞인 bulk RNA-seq이므로, 차이는 암세포의 발현과 조직 안의 세포 구성 변화를 함께 반영합니다. 대조군의 의미는 종양 조직과 인접 정상조직에서 설명합니다.

EOCRC 파일 GSE196006_raw_counts.csv.gz의 첫 두 환자 열은 다음처럼 생겼습니다. 값은 설명을 위해 만든 수가 아니라 실제 파일의 첫 세 유전자에서 가져왔습니다.

gene IDX15.018_L0_G821_htseq.outX15.018_L7_G821_htseq.outX15.130_B0_G821_htseq.outX15.130_B7_G821_htseq.out
ENSG000000000032,9353,3262,620331
ENSG0000000000533189391
ENSG000000004191,1244,1568171,126

15.01815.130은 환자 ID입니다. 파일 이름의 끝부분에서 0은 Normal, 7은 Tumor를 뜻합니다. 가운데 L, B 같은 문자는 조직 위치 정보이므로 condition으로 해석하지 않습니다.

LOCRC 파일은 24C_htseq.out, 24N_htseq.out처럼 이름 규칙이 다릅니다. 여기서는 C가 cancer, 즉 Tumor이고 N이 Normal입니다. 두 파일 모두 행은 Ensembl gene ID, 열은 샘플, 값은 정수 HTSeq raw count입니다.

두 파일을 바로 합치지 않는 이유

섹션 제목: “두 파일을 바로 합치지 않는 이유”

EOCRC와 LOCRC는 서로 다른 GEO 실험에서 만들어졌습니다. 따라서 GSE196006GSE251845를 한 count matrix로 붙이면 연령군과 실험 배치가 완전히 겹칩니다. 그림에서 두 연령군이 분리돼도 나이 때문인지, library 제작 시기나 시퀀싱 조건 같은 배치 차이 때문인지 구분할 수 없습니다.

이 실습에서는 두 count 표를 직접 합치지 않습니다. 각 코호트 안에서 Tumor − Normal 변화를 먼저 계산하고, 그 변화량을 유전자 ID로 연결합니다.

EOCRC 21쌍 → paired DESeq2 → 유전자별 EOCRC log2FC
LOCRC 22쌍 → paired DESeq2 → 유전자별 LOCRC log2FC
두 결과표를 gene ID로 join → 같은 유전자의 변화량 비교

환자 안의 비교는 배치의 큰 차이를 일부 피하는 데 도움이 되지만, 두 코호트의 실험 차이를 없애 주지는 않습니다. 따라서 여기서 찾는 것은 EOCRC 특이 후보이지, 연령이 그 차이의 원인이라는 확정 결과가 아닙니다.

  1. EOCRC 21쌍과 LOCRC 22쌍이 파일 이름에서 정확히 복원되는가?
  2. 각 코호트 안에서 Tumor와 Normal의 전체 발현 패턴이 구분되는가?
  3. 같은 유전자의 Tumor−Normal 변화 방향은 두 코호트에서 얼마나 비슷한가?
  4. 논문이 제시한 8개 유전자는 현재 재현 조건에서도 EOCRC 쪽 변화가 더 큰가?
  5. 코호트 평균으로 보인 차이가 환자 여러 명에게 반복되는가?

이 페이지는 원 논문의 전체 분석을 복제하지 않습니다. 공개된 두 HTSeq count 표로 유전자 수준의 발현 변화를 비교합니다.

2. 에이전트에게 실습 환경 준비시키기

섹션 제목: “2. 에이전트에게 실습 환경 준비시키기”

Codex CLI나 Claude Code를 실행한 뒤 아래 프롬프트를 복사해 전달합니다. 에이전트는 두 코호트를 함께 관리하되 분석은 분리된 상태로 유지합니다.

실습 환경 설정 프롬프트
EOCRC와 LOCRC RNA-seq 비교 실습 환경을 준비해줘.

요구사항:
1. 현재 폴더가 이미 eocrc-locrc 프로젝트인지 확인해. 아니라면 현재 폴더 아래에 eocrc-locrc를 만들고 그 안에서 작업해.
2. uv가 설치되어 있는지 확인해. 설치되어 있지 않다면 임의로 설치하지 말고 공식 설치 방법만 알려준 뒤 멈춰.
3. uv init --bare --python 3.11로 프로젝트를 초기화해.
4. uv add "pydeseq2==0.5.4" pandas matplotlib seaborn scikit-learn adjustText gprofiler-official을 실행해.
5. analysis.py와 outputs 디렉터리를 만들어. analysis.py에는 아직 분석 코드를 넣지 마.
6. .gitignore에 .venv/, data/, __pycache__/를 추가해. outputs는 결과를 확인할 수 있도록 제외하지 마.
7. uv run python으로 Python, PyDESeq2, pandas, matplotlib의 버전을 출력해 설치 상태를 검증해.
8. 생성하거나 수정한 파일과 주요 패키지 버전을 보고하고 멈춰.

전역 Python 환경이나 저장소의 다른 파일은 수정하지 마.

준비가 끝나면 data/는 아직 없고 analysis.py는 비어 있습니다. 다음 프롬프트부터 앞 단계의 코드를 지우지 않고 이어서 작성합니다.

3. 프롬프트로 두 코호트를 한 단계씩 비교하기

섹션 제목: “3. 프롬프트로 두 코호트를 한 단계씩 비교하기”

첫 단계에서는 파일 이름을 metadata로 바꾸고 43명의 Tumor와 Normal 짝이 모두 있는지 확인합니다. EOCRC와 LOCRC의 이름 규칙이 다르므로 하나의 정규식으로 억지로 처리하지 않습니다.

1단계 프롬프트: 데이터 다운로드와 구조 확인
EOCRC와 LOCRC 데이터 구조를 확인하는 단계만 진행해줘.

1. 프로젝트 루트에 data 디렉터리를 만들어.
2. 다음 두 파일을 내려받고 gzip 검증을 해. 이미 있고 검증을 통과하면 다시 받지 마.
 - data/GSE196006_raw_counts.csv.gz
   https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE196006&format=file&file=GSE196006_raw_counts.csv.gz
 - data/GSE251845_htseq_raw_counts.csv.gz
   https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE251845&format=file&file=GSE251845_htseq_raw_counts.csv.gz
3. 각 파일을 첫 열이 index가 되게 읽고, __로 시작하는 HTSeq 특수 카운터를 분리한 뒤 샘플이 행이 되게 전치해.
4. EOCRC 샘플 이름은 X15.018_L0_G821_htseq.out 같은 형태야. 환자 ID는 15.018, 0은 Normal, 7은 Tumor로 해석해. 가운데 알파벳을 condition으로 쓰지 마.
5. LOCRC 샘플 이름은 24C_htseq.out 같은 형태야. C는 Tumor, N은 Normal로 해석하고 35c처럼 소문자인 이름도 대문자로 정규화해.
6. cohort, patient, condition 열이 있는 metadata를 코호트별로 만들어.
7. 다음 조건을 assert로 검증해.
 - EOCRC는 42개 샘플, 21명, Tumor 21개와 Normal 21개
 - LOCRC는 44개 샘플, 22명, Tumor 22개와 Normal 22개
 - 모든 환자에게 Tumor와 Normal이 하나씩 존재
 - 각 count matrix와 metadata의 행 순서가 동일
8. 두 파일의 원본 크기, 특수 카운터, metadata 앞부분과 환자별 샘플 수를 출력하고 한국어로 설명한 뒤 멈춰.

아직 count 표를 합치거나 저발현 필터, DESeq2, PCA를 실행하지 마.

정상적으로 읽으면 두 파일 모두 특수 행을 포함해 60,605행입니다. 샘플 축은 EOCRC 42개와 LOCRC 44개가 됩니다. 이 단계에서 특히 확인할 것은 0/7C/N을 같은 방식으로 처리하지 않았다는 점입니다.

각 코호트에서 환자별 기준선 차이를 모델에 넣습니다. 두 모델 모두 design formula~ patient + condition이지만, 환자 ID와 size factor, dispersion은 코호트 안에서 따로 계산합니다.

2단계 프롬프트: 코호트별 paired DESeq2와 PCA
이전 데이터 검증 코드를 유지하고 코호트별 paired DESeq2와 PCA만 추가해줘.

1. 코호트마다 해당 코호트의 샘플 중 3개 이상에서 count가 10 이상인 유전자만 유지해. 두 코호트의 필터를 따로 계산해.
2. EOCRC와 LOCRC 각각 DeseqDataSet을 design="~ patient + condition", n_cpus=1로 만들고 deseq2를 실행해.
3. 두 모델 모두 condition의 Normal을 기준으로 Tumor 대 Normal contrast를 계산해.
4. 결과를 outputs/eocrc-tumor-vs-normal.csv와 outputs/locrc-tumor-vs-normal.csv에 저장해. Ensembl gene ID를 index로 보존해.
5. 각 DeseqDataSet에서 use_design=False로 VST를 계산하고, 코호트마다 별도의 PCA를 계산해. 두 PCA를 좌우 패널로 그리되 한 PCA의 좌표에 다른 코호트 샘플을 넣지 마.
6. Normal은 청록색 원, Tumor는 주황색 삼각형으로 표시하고 outputs/cohort-pca.png에 180 dpi로 저장해.
7. 코호트별 필터 통과 유전자 수, padj < 0.05와 abs(log2FoldChange) >= 1을 함께 만족한 수, PC1과 PC2 설명 분산을 출력해.
8. uv run python analysis.py로 실행하고 그림을 확인해. 각 코호트 안의 Tumor와 Normal 분리, 겹침과 멀리 떨어진 샘플을 한국어로 설명한 뒤 멈춰.

두 count matrix를 합쳐 하나의 PCA나 DESeq2 모델을 만들지 마.

EOCRC 42개와 LOCRC 44개 샘플을 각각 VST 변환해 그린 두 PCA 패널

현재 실험의 outputs/cohort-pca.png. 왼쪽과 오른쪽은 서로 별도로 계산한 PCA이므로 두 패널의 좌표값을 직접 비교하지 않습니다.

이번 실행에서는 EOCRC에서 21,650개, LOCRC에서 24,116개 유전자가 저발현 필터를 통과했습니다. padj < 0.05|log2FC| >= 1을 함께 만족한 유전자는 각각 4,570개와 8,256개였습니다.

EOCRC의 PC1은 24.73%, PC2는 14.58%의 분산을 설명했습니다. LOCRC에서는 PC1이 34.03%, PC2가 9.46%였습니다. 두 코호트 모두 Tumor와 Normal이 주로 PC1 방향에서 갈라지지만 EOCRC에는 반대 조건 쪽에 가까운 샘플과 멀리 떨어진 샘플도 보입니다.

PCA는 condition을 답으로 주지 않고 샘플 사이의 큰 변화 방향을 찾습니다. 따라서 분리는 종양 여부가 전체 발현 차이의 큰 부분과 대응한다는 뜻입니다. 분리가 완벽하지 않다고 실패한 분석은 아니며, 멀리 떨어진 샘플도 품질과 임상 정보를 확인하기 전에 제거하지 않습니다.

3-3. 유전자별 변화량을 같은 좌표에 놓기

섹션 제목: “3-3. 유전자별 변화량을 같은 좌표에 놓기”

두 결과표를 Ensembl gene ID로 inner join하면 같은 유전자의 변화량을 한 행에서 읽을 수 있습니다. 가로축은 LOCRC의 Tumor 대 Normal log2FC, 세로축은 EOCRC의 같은 값입니다.

3단계 프롬프트: EOCRC와 LOCRC log2FC 비교
이전 분석을 유지하고 두 코호트의 유전자별 log2FoldChange 비교만 추가해줘.

1. eocrc와 locrc 결과표에서 baseMean, log2FoldChange, lfcSE, pvalue, padj를 가져와 Ensembl gene ID로 inner join해.
2. 각 열에 eo_와 lo_ 접두사를 붙이고 lfc_difference = eo_log2FoldChange - lo_log2FoldChange를 계산해.
3. log2FoldChange가 결측이거나 무한대인 행은 그림에서 제외하되 결과 파일에서는 원래 값을 보존해.
4. x축은 LOCRC log2FoldChange, y축은 EOCRC log2FoldChange로 산점도를 그려. 점 하나는 공통 유전자 하나야.
5. y=x 점선과 x=0, y=0 기준선을 그어. 점이 점선 위에 있으면 EOCRC 변화가 더 양의 방향이고, 아래에 있으면 더 음의 방향이라는 뜻이야.
6. 두 log2FoldChange의 Pearson 상관계수를 계산해.
7. 비교표를 outputs/eo-vs-lo-lfc-comparison.csv, 그림을 outputs/lfc-comparison.png에 180 dpi로 저장해.
8. 공통 유전자 수, 상관계수, 네 사분면과 y=x 점선의 의미를 출력해.
9. uv run python analysis.py로 실행하고 전체 점 구름이 대각선에 얼마나 가까운지 한국어로 설명한 뒤 멈춰.

상관계수가 높다는 사실을 두 코호트가 동일하다거나 EOCRC 특이 유전자가 없다는 뜻으로 확대하지 마.

LOCRC log2FC를 가로축, EOCRC log2FC를 세로축에 놓은 유전자별 산점도. 대부분의 점이 대각선을 따른다.

현재 실험의 outputs/lfc-comparison.png. 회색 점은 공통 유전자, 주황색 점은 원 논문이 제시한 8개 유전자입니다.

유한한 log2FC를 가진 공통 유전자는 21,420개였고 두 변화량의 Pearson 상관계수는 0.930이었습니다. 점 구름이 왼쪽 아래에서 오른쪽 위로 이어지는 것은 암 조직에서 증가하거나 감소하는 큰 발현 변화가 두 연령군에 대체로 공통이라는 뜻입니다.

그래프는 다음처럼 읽습니다.

위치
오른쪽 위두 코호트 모두 Tumor에서 증가
왼쪽 아래두 코호트 모두 Tumor에서 감소
왼쪽 위LOCRC에서는 감소, EOCRC에서는 증가
오른쪽 아래LOCRC에서는 증가, EOCRC에서는 감소
y=x 가까이두 코호트의 변화량이 비슷함
y=xEOCRC 변화량이 LOCRC보다 더 양의 방향
y=x 아래EOCRC 변화량이 LOCRC보다 더 음의 방향

대각선에서 멀리 떨어진 점이 EOCRC 후보를 찾는 출발점입니다. 다만 거리만으로 후보를 정하지 않고 각 코호트의 baseMean, padj와 환자별 값을 함께 확인합니다.

원 논문은 EOCRC에서 변하지만 LOCRC에서는 거의 변하지 않는 유전자를 집합 조건으로 좁혀 8개 signature를 제시했습니다. 유전자는 ALDOB, FBXL16, IL1RN, MSLN, RAC3, SLC38A11, WBSCR27, WNT11입니다.

WBSCR27은 현재 공식 symbol이 METTL27로 바뀌었지만, 논문과 결과를 대조할 수 있도록 그림에는 당시 이름을 유지합니다. Ensembl gene ID는 ENSG00000165171입니다.

4단계 프롬프트: 논문 기준과 8개 유전자 비교
이전 분석을 유지하고 논문의 EOCRC 후보 규칙과 8-gene signature 확인만 추가해줘.

1. 다음 symbol과 Ensembl gene ID 매핑을 코드에 명시해. 원문 대조를 위해 WBSCR27 이름을 유지하되 현재 symbol이 METTL27이라는 주석을 남겨.
 ALDOB=ENSG00000136872, FBXL16=ENSG00000127585,
 IL1RN=ENSG00000136689, MSLN=ENSG00000102854,
 RAC3=ENSG00000169750, SLC38A11=ENSG00000169507,
 WBSCR27=ENSG00000165171, WNT11=ENSG00000085741
2. 이 실습에서는 방향에 상관없이 EOCRC significant를 eo_padj < 0.05, abs(eo_log2FoldChange) > 1, eo_baseMean > 50으로 정의해.
3. LOCRC unchanged는 lo_padj > 0.2, abs(lo_log2FoldChange) < 0.7, lo_baseMean > 50으로 정의해.
4. 위 두 조건과 abs(lfc_difference) > 1.5를 모두 만족하는 행을 paper_like_candidate로 표시해.
5. 3단계 산점도에서 paper_like_candidate는 청록색, 발표된 8개 유전자는 주황색으로 덧그려 이름을 표시해.
6. 8개 유전자마다 LOCRC와 EOCRC log2FoldChange를 두 점으로 표시하고 선으로 연결한 그림을 outputs/signature-eight-genes.png에 저장해.
7. 8개의 두 log2FoldChange, 두 padj, lfc_difference와 paper_like_candidate 통과 여부를 표로 출력해.
8. 현재 패키지와 필터에서 통과한 후보 수와 이름을 출력해.
9. uv run python analysis.py로 실행하고 논문의 8개가 그대로 다시 선택되는지 확인해. 다르면 숨기지 말고 필터, DESeq2 구현, 버전과 전처리 차이가 후보 집합을 바꿀 수 있다고 설명한 뒤 멈춰.

논문에 나온 8개라는 이유로 현재 결과의 기준을 몰래 바꾸지 마.

논문이 제시한 EOCRC 8-gene signature의 LOCRC와 EOCRC log2FoldChange 비교

현재 실험의 outputs/signature-eight-genes.png. 회색은 LOCRC, 주황색은 EOCRC의 Tumor 대 Normal 변화량입니다.

8개 모두 EOCRC 점이 LOCRC 점보다 오른쪽에 있거나, SLC38A11처럼 더 왼쪽에 있습니다. 즉 원 논문이 보고한 것과 같은 방향으로 EOCRC에서 변화가 더 두드러지는 경향이 나타납니다.

geneEOCRC log2FCEOCRC padjLOCRC log2FCLOCRC padjEO−LO 차이
ALDOB1.870.000240.720.1331.16
FBXL160.810.0084-0.230.4421.05
IL1RN1.180.00250.450.2590.73
MSLN1.850.0000250.090.8511.76
RAC30.580.031-0.090.7380.68
SLC38A11-1.550.000042-0.610.182-0.94
WBSCR270.960.00180.260.3510.70
WNT111.130.00450.360.3530.77

하지만 이 실습에서 통일한 집합 조건을 모두 통과한 유전자는 MSLN 하나였습니다. 나머지 7개도 방향은 비슷하지만 |EO−LO| > 1.5, EOCRC의 |log2FC| > 1, LOCRC의 |log2FC| < 0.7 같은 경계 중 하나를 넘지 못했습니다.

이 결과는 논문이 틀렸다는 뜻도, 코드를 원하는 답에 맞춰 고쳐야 한다는 뜻도 아닙니다. 원 논문은 R DESeq2 결과와 별도의 paired Wilcoxon 검정, 논문에 기록된 선택 절차를 사용했습니다. 이 페이지는 PyDESeq2 0.5.4와 명시한 저발현 필터를 사용합니다. 경계 기반 후보 목록은 구현, 버전, 필터와 결측값 처리에 민감하므로 전체 수치와 재현 환경을 함께 기록해야 합니다.

3-5. 8개 유전자를 환자별로 펼쳐 보기

섹션 제목: “3-5. 8개 유전자를 환자별로 펼쳐 보기”

코호트의 log2FC 하나는 환자 21명이나 22명의 변화를 요약한 값입니다. 평균 차이 뒤에 환자마다 같은 방향이 반복되는지 확인하려면 normalized count를 다시 환자 쌍으로 펼칩니다.

5단계 프롬프트: 8개 유전자의 환자별 변화 heatmap
이전 분석을 유지하고 8-gene signature의 환자별 paired 변화 heatmap만 추가해줘.

1. 각 코호트의 DeseqDataSet에서 normed_counts를 가져와.
2. 8개 유전자마다 같은 환자의 값을 condition으로 pivot해 paired_log2_delta = log2(Tumor + 1) - log2(Normal + 1)을 계산해.
3. cohort, patient, symbol, paired_log2_delta를 outputs/signature-patient-deltas.csv에 저장해.
4. 행은 8개 유전자, 열은 환자가 되게 EOCRC와 LOCRC heatmap을 위아래 패널로 그려.
5. 0을 중심으로 같은 색 범위를 사용해. 양수는 빨간색, 음수는 파란색, 0 근처는 흰색으로 표시해.
6. 그림을 outputs/signature-patient-heatmap.png에 180 dpi로 저장해.
7. 유전자마다 각 코호트에서 양수인 환자 수와 음수인 환자 수, median paired_log2_delta를 출력해.
8. uv run python analysis.py로 실행하고 그림을 확인해. 코호트 평균과 환자별 이질성이 함께 보이는 사례를 한국어로 설명한 뒤 멈춰.

paired_log2_delta를 DESeq2 모델의 log2FoldChange와 같은 값이라고 설명하지 마.

EOCRC 21명과 LOCRC 22명에서 논문의 8개 유전자별 Tumor−Normal paired log2 변화를 표시한 heatmap

현재 실험의 outputs/signature-patient-heatmap.png. 열 하나는 환자 한 명, 빨간색은 그 환자의 Tumor에서 높음, 파란색은 Normal에서 높음을 뜻합니다.

EOCRC의 MSLN 행은 빨간 칸이 많아 코호트 수준의 양의 log2FC가 여러 환자에게 반복되는 모습을 보여 줍니다. 그러나 같은 행에도 흰색이나 파란색 칸이 있고, 다른 유전자도 환자마다 변화 크기와 방향이 다릅니다. 8개 이름을 하나의 고정된 EOCRC 유형처럼 읽지 않아야 하는 이유입니다.

heatmap의 paired_log2_delta는 환자 한 명의 normalized count 두 개를 직접 변환해 뺀 값입니다. DESeq2의 log2FoldChange는 모든 환자와 count 분포, dispersion을 함께 사용한 모델 추정값이므로 둘은 정확히 같지 않습니다.

4. 논문의 나머지 분석은 무엇이 더 필요한가

섹션 제목: “4. 논문의 나머지 분석은 무엇이 더 필요한가”

원 논문은 유전자 count 비교에서 멈추지 않았습니다. 다음 분석으로 EOCRC와 LOCRC 차이를 더 좁혔습니다.

분석논문이 물은 질문HTSeq gene count만으로 가능한가
48개 EOCRC 특이 유전자의 GO enrichment후보들이 어떤 기능에 모이는가후보 목록이 있으면 가능
TCGA 생존 분석8-gene score가 생존과 연관되는가불가능, 임상 생존 데이터가 추가로 필요
xCell deconvolutionbulk 조직의 세포 구성 점수가 다른가가능하지만 별도 signature와 검증 필요
alternative splicingEOCRC 특이 transcript isoform이 있는가불가능, 정렬 파일과 exon·junction 정보가 필요
HOTAIRM1 splicing 확인특정 splice event가 연령군에 따라 다른가불가능, gene count 한 줄에는 isoform 정보가 없음
neoantigen 예측비정상 splice peptide가 MHC-I에 결합할 수 있는가불가능, transcript 서열, 번역, HLA type과 결합 예측이 필요

특히 HTSeq gene count는 한 유전자의 여러 transcript를 한 값으로 합칩니다. 따라서 HOTAIRM1의 전체 count가 있어도 어느 exon이 포함됐는지, 새로운 peptide가 생기는지 알 수 없습니다. gene-level DEG 실습의 결과를 splicing이나 neoantigen 결론으로 확장하지 않습니다.

원 논문은 8-gene signature 외에도 EOCRC에 특이적으로 달라진 48개 유전자, 면역 관련 기능, RNA splicing factor의 차이와 7개 잠재적 neoantigen event를 보고했습니다. 이 결과는 다음 실습의 출발점이지, 현재 count 비교만으로 다시 확인된 결론은 아닙니다.

그래프를 모두 본 뒤 답해 볼 질문

섹션 제목: “그래프를 모두 본 뒤 답해 볼 질문”
  1. 두 count matrix를 바로 합치면 연령군과 무엇이 겹치는가?
  2. 각 코호트에서 ~ patient + condition을 사용한 이유는 무엇인가?
  3. log2FC 산점도의 y=x 위와 아래는 각각 무엇을 뜻하는가?
  4. 전체 유전자의 log2FC 상관이 높아도 EOCRC 후보를 찾을 수 있는 이유는 무엇인가?
  5. EOCRC에서 유의하고 LOCRC에서 유의하지 않다는 사실만으로 두 효과가 다르다고 결론 낼 수 없는 이유는 무엇인가?
  6. 원 논문의 8개 중 현재 집합 필터를 통과한 유전자가 하나뿐인 결과를 어떻게 보고해야 하는가?
  7. gene-level HTSeq count로 alternative splicing과 neoantigen을 직접 검증할 수 없는 이유는 무엇인가?

재현할 때는 두 GEO 파일의 다운로드 날짜, Python과 PyDESeq2 버전, 저발현 필터, design, contrast, 후보 경계와 gene symbol 매핑 날짜를 함께 기록합니다. 특히 WBSCR27처럼 이름이 바뀐 유전자는 symbol만 저장하지 말고 Ensembl gene ID를 같이 남깁니다.