공동연구자 의뢰로 Park et al. 2026을 재현하다 — 종간 ECM 프로테오믹스 분석에서 3번 반복하며 잡은 것들
Porcine 식도 EEM과 Mouse Matrigel을 비교하는 cross-species 프로테오믹스 분석 — Park et al. 2026 방법론을 재현하던 중 v1 시뮬레이션의 순환 논리, v2의 pseudocount artifact, BioMart 1:1 ortholog 검증 단계까지의 실제 워크플로 기록. PRIDE PXD023694 실데이터로 독립 검증한 결과까지.
시작 — 공동연구자에게 받은 한 줄짜리 요청
"Park et al. 2026 (식도 EEM vs Matrigel) 방법론으로 우리 데이터 분석 가능한지 봐주세요."
이 한 줄로 시작했다. 공동연구자가 식도 ECM(extracellular matrix) 분리·탈세포화 단백질체 비교를 하려 했고, 참고할 만한 논문이 Park et al. 2026 (연세대 조성우 교수 그룹)에 있었다. 의뢰는 단순했지만 작업은 그렇지 않았다.
이 글은 2-3일에 걸쳐 진행한 그 분석 작업의 기록이다. 재현 가능한(reproducible) 멀티오믹스 분석을 짜다가 만난 3개의 함정, 그리고 그것들이 왜 시뮬레이션만으로는 보이지 않았는지를 정리한다. AI 생성 콘텐츠로 가득한 시대에 정작 안 쓰여지는 것 — 실제로 코드를 돌려보면 뭐가 깨지는가 — 를 공유하고 싶었다.
배경 — 왜 cross-species ECM 프로테오믹스인가
식도, 자궁, 위 같은 장기를 재생의학(regenerative medicine) 에 쓰려면 ECM scaffold가 필요하다. 가장 흔한 옵션은 두 가지:
- Matrigel (Corning): Mouse Engelbreth-Holm-Swarm 종양 유래 — 라미닌·콜라겐 IV가 풍부한 기저막(basement membrane) 친화적
- 장기-특이 EEM (Extracted ECM): 돼지 등 동물 장기에서 탈세포화로 추출 — 해당 장기의 실제 ECM 조성 유지
문제는: 이 두 가지가 단백질 조성이 얼마나 다른가? 임상 응용 전 정량적 비교가 필수다. Park et al. 2026이 식도에서, Cha et al. 2024가 자궁에서 이걸 정량적으로 풀어낸 논문들이다.
분석 흐름:
- LC-MS/MS로 단백질 정량 (MaxQuant + iBAQ)
- iBAQ → riBAQ (relative iBAQ = iBAQ / Σ iBAQ) 정규화
- 종간 비교를 위해 Ensembl BioMart의 1:1 ortholog 매핑 (Sus scrofa ↔ Mus musculus)
- Welch's t-test + BH-FDR로 DEP (Differentially Expressed Proteins) 분류
- 결과 시각화 (Volcano, PCA, GO enrichment)
원리는 표준적이다. 함정은 디테일에 있었다.
함정 #1 — v1: 시뮬레이션의 순환 논리
공동연구자의 실제 raw 데이터가 아직 도착하기 전이었다. 의뢰자 입장에서는 "이 파이프라인이 진짜 작동하는지" 미리 보고 싶어 했다. 그래서 시뮬레이션 데이터로 파이프라인 데모를 만들기로 했다.
이때 만든 v1의 구조는 이랬다:
- Park et al. 2026의 Fig 3 결과를 그대로 보고 식도 ECM 마커 카탈로그를 만듦 (COL1A1, FN1, COL3A1, ...)
- Mouse Matrigel 측에는 알려진 기저막 단백질 (LAMB1, NID1, LAMC1, HSPG2, ...)을 베이스라인으로 입력
- 시뮬레이션으로 riBAQ 값 생성
- 분석 파이프라인 돌림 → 결과: "Park 논문과 동일한 패턴!" ✓
처음에는 만족스러웠다. 그런데 figure를 검토하다가 뭔가 이상했다. 시뮬레이션 결과가 너무 깨끗했다 — Top 5 GO 카테고리 순서까지 논문과 정확히 일치했다.
생각해보니 당연했다. 카탈로그를 논문 결과 보고 입력했으니, 분석 결과도 논문과 같을 수밖에. 이건 검증이 아니라 순환 논리(circular logic) 였다. "파이프라인이 작동한다"의 증거가 아니라 "내가 미리 입력한 단백질을 다시 출력했다"의 증거.
이 깨달음 이후 v1은 "방법론 데모 + MaxQuant 가이드 + FAQ" 용도로 격하시키고, 실제 검증은 PRIDE 공개 데이터 + BioMart 정식 ortholog 로 옮기기로 했다 (이게 v2.2가 되는 길).
교훈: 시뮬레이션 데이터로 분석 파이프라인 데모를 만들 때, 참고 결과를 보고 입력값을 만들면 검증이 아니라 동어반복이다. 시뮬레이션은 (1) 진짜 미지수 분포에서 샘플링하거나 (2) 알려진 ground truth와 별도의 독립적인 데이터로 만들어야 한다.
함정 #2 — v2.0: 한 방향으로만 검출된 단백질의 pseudocount artifact
v1 폐기 후, v2.0에서는 시뮬레이션을 더 현실적으로 만들었다. Random sampling, 검출 한계 모델링, missing value 패턴 포함.
분석 결과를 figure로 그려보다가 또 이상한 게 보였다. Volcano plot에서 일부 단백질이 비현실적으로 극단적인 위치에 있었다. log2(FC)가 ±10 이상으로 튄 단백질들이 다수.
원인을 찾아보니 다음 같은 패턴이었다:
- 그룹 A (Porcine EEM, n=5): 5개 시료 중 5개 모두 검출 (riBAQ 평균 0.001)
- 그룹 B (Mouse MAT, n=3): 3개 시료 중 0개 검출 → log 변환 시 -∞
이걸 처리하려고 pseudocount (작은 값, 예: 1e-6)를 0인 자리에 더해줬다. 그런데 pseudocount가 검출 한계보다 훨씬 작으면, fold change 계산에서 분모가 인공적으로 작아져 FC가 폭발한다.
# 잘못된 코드 (v2.0)
log2_fc = np.log2((meanA + 1e-6) / (meanB + 1e-6))
# meanB가 진짜 0이면 → log2(meanA / 1e-6) = 매우 큰 값
문제의 단백질들 중에는 실제로 의미 있는 것도 있었다 — 콜라겐류처럼 EEM에서만 검출되는 게 당연한 것들. 그러나 분석 도구는 노이즈와 진짜 신호를 구분 못 한다.
v2.1의 해결: Valid value filter 도입.
- 두 그룹 중 한 쪽이라도 최소 3/4 시료(또는 그룹 크기 n에서 ≥ n−1)에서 검출되어야 분석 대상에 포함
- 한쪽에서 0개 검출인 단백질은 "qualitative only" 카테고리로 분리 보고
- pseudocount는 사용하지 않고, 정량 분석은 양쪽 모두 quantifiable한 단백질만 대상으로
# 수정된 코드 (v2.1)
mask_a = (df.filter(like='EEM') > 0).sum(axis=1) >= 3 # 3/5
mask_b = (df.filter(like='MAT') > 0).sum(axis=1) >= 3 # 3/3
quantifiable = df[mask_a & mask_b]
qualitative_only = df[~(mask_a & mask_b)]
이 변경 후 Volcano plot이 정상적인 분포를 보였다. log2(FC)는 대부분 ±5 이내로 모이고, 극단치는 진짜 생물학적으로 EEM/MAT-specific한 단백질들만 남았다.
교훈: Pseudocount는 편리해 보이지만 LC-MS proteomics에서는 위험하다. 검출 한계 자체가 시료마다 다르고, 진짜 0과 검출 한계 미달을 구분 못 한다. Valid value filter (k-out-of-n 검출) 가 표준에 가깝다 (Perseus, Proteus 등 패키지 기본 동작).
함정 #3 — Ortholog 매핑: 카탈로그 기반 vs BioMart 정식
v2.1까지는 카탈로그 단백질 178개에 한정해서 ortholog 매핑을 했다. Porcine COL1A1 ↔ Mouse Col1a1처럼 gene symbol uppercase로 매칭.
이 방식의 매핑률은 약 24%. 의뢰자에게 "실제 데이터에선 더 높아질 것"이라 이론적으로 안내했지만, 실제 검증은 안 한 상태였다.
v2.2에서는 Ensembl BioMart Release 111의 Pig ↔ Mouse 정식 1:1 ortholog 테이블을 다운로드해서 사용했다.
# BioMart 1:1 ortholog (Sus scrofa ↔ Mus musculus, Release 111)
ortholog_table = pd.read_csv('biomart_pig_mouse_one2one_r111.tsv', sep='\t')
# 13,476 1:1 pairs
결과: 카탈로그 비교에서 핵심 ECM 마커들 (COL1A1, COL6A1, LAMB1, LAMC1, NID1, FN1, BGN, HSPG2 등)이 모두 BioMart 검증을 통과. 매핑률은 50-60%대로 상승.
여기서 중요한 점은 gene symbol 단순 매칭이 일반적으로는 작동하지만, ortholog 관계가 종마다 항상 1:1은 아니라는 것. 예: GAPDH는 다수 paralog가 있고, 일부 면역 관련 유전자는 종간 ortholog가 모호하다. BioMart 같은 정식 데이터베이스 사용이 reproducibility 측면에서 안전하다.
교훈: Gene symbol 대문자 매칭은 80% 케이스에선 작동하지만 나머지 20%에서 false positive/negative를 만든다. 종간 비교는 EnsemblBioMart 또는 InParanoid 같은 정식 ortholog DB를 사용하는 것이 표준.
독립 검증 — PRIDE PXD023694 실데이터 파일럿
세 번의 시뮬레이션 반복 후에도 "진짜 데이터에서 같은 패턴이 보이는가?" 는 미해결이었다. 의뢰자 raw 데이터는 아직 도착 전.
해결책: Park 그룹이 공개한 PRIDE 데이터셋 PXD023694 를 다운로드. 정확히 동일한 cross-species 디자인(Porcine ECM vs Mouse Matrigel)이고, 동일한 LC-MS/MS 셋업이며, MaxQuant 출력까지 공개되어 있었다. 알려진 유사 프로젝트의 참고 논문을 활용한 셈이다.
세 파일을 받아 본 파이프라인에 그대로 입력:
proteinGroups_matrigel.txt— Mouse Matrigel (n=4, 0.7MB, 680 단백질)proteinGroups_intestine_unreviewd.txt— Porcine intestine ECM (n=4, 1.8MB, 1082 단백질)proteinGroups_Stomach_unreviewd.txt— Porcine stomach ECM (n=4, 2.0MB, 836 단백질)
⚠️ 주의: PRIDE 데이터는 장(intestine) ECM, 의뢰자는 식도(esophagus) — 동일 위장관(GI tract)이라 ECM 조성은 유사하지만 동일하진 않음. Park 2026의 실제 식도 데이터는 PRIDE 미등록 상태.
파일럿 결과
intestine ↔ matrigel 비교 결과:
- 998 (Porcine intestine 단백질) + 672 (Mouse Matrigel 단백질) → shared 285 (gene symbol 매칭 기준)
- DEP 131개 (81 IE-up + 50 MAT-up)
- PC1 47.01%, PC2 14.02% (PCA)
가장 중요한 결과: Top up-regulated 단백질들이 시뮬레이션 예측과 일치.
| 방향 | 실제 데이터 Top 마커 | 시뮬레이션 예측 | 일치 |
|---|---|---|---|
| Porcine ECM up | COL1A1, COL14A1, COL6A1, COL6A2, BGN, COL12A1 | COL1A1, FN1, COL3A1, COL6A1, BGN | COL1A1, COL6A1, BGN ✓ |
| Mouse MAT up | LAMB1, NID1, LAMC1, HSPG2 | LAMB1, NID1, LAMC1, HSPG2 | 완벽 일치 ✓ |
기저막 단백질 Top 4 (LAMB1, NID1, LAMC1, HSPG2)가 시뮬레이션과 실데이터에서 모두 동일 순위로 검출. Park et al. 2026 논문의 Top 10 Up in MAT 패턴과도 정확히 일치. 시뮬레이션이 비록 순환 논리 한계는 있었지만 올바른 생물학적 시그니처는 포착했다는 것이 실데이터로 확인됨.
실데이터에서만 드러난 노이즈 — 시뮬레이션의 맹점
시뮬레이션엔 없고 실데이터엔 있는 것들이 흥미로웠다:
-
Matrigel의 핵 단백질 contaminants: EWSR1, RUVBL2, HCFC1 등 핵 단백질이 다수 검출. Matrigel은 EHS 종양 유래 → 종양 세포의 핵 잔존이 정제 후에도 남음. 알려진 사실이지만 시뮬레이션에 포함 안 했었음.
-
Porcine ECM의 평활근 잔존: TPM4, MYL9 (위 시료에선 ACTA2/MYH11 다수). 탈세포화가 100% 완전하지 않다는 증거. 이게 실제로 탈세포화 프로토콜 품질 평가 지표가 된다.
-
Matrigel 배치 변동: PCA에서 MAT_4가 PC2 축으로 분리. Matrigel의 batch-to-batch variation은 업계에 잘 알려진 문제.
이런 노이즈를 사전에 안내할 수 있게 되어, 의뢰자가 실제 raw 데이터를 받을 때 "이런 잡신호도 같이 나올 것"이라고 예상할 수 있게 됐다.
최종 워크플로 정리
3번의 반복 끝에 정착한 워크플로:
1. MaxQuant 검색 (종별 개별 UniProt DB, iBAQ 활성화)
↓
2. proteinGroups.txt 필터링 (Reverse / Contaminant / Only-by-site 제거)
↓
3. iBAQ → riBAQ 정규화 (시료 내 몰 분율)
↓
4. Valid value filter (한 그룹에 ≥ 3/4 검출 단백질만 정량 비교)
↓
5. Ensembl BioMart 1:1 ortholog 매핑 (gene symbol 매칭이 아닌 정식 DB)
↓
6. Welch's t-test (등분산 가정 X) + BH-FDR
↓
7. DEP 기준: FC ≥ 2 (or ≤ 0.5) AND adj.p < 0.05
↓
8. 시각화: Volcano, PCA, Heatmap, GO enrichment (Fisher's exact)
↓
9. 종간 transferability 검증 (HPM Kim 2014 + HPA Uhlén 2015 인용)
전체 Python 스크립트는 약 7개 파일(~1,500 lines)로 모듈화. 의뢰자가 raw 데이터를 받자마자 동일 파이프라인을 1:1 재현할 수 있도록 설계.
MaxQuant 설정 — 가장 자주 묻는 부분
종간 비교 분석에서 가장 중요한 MaxQuant 설정 두 개:
1. 종별 분리 검색 (절대 합쳐서 검색하면 안 됨):
- Porcine 시료 → Sus scrofa UniProt (UP000008227) FASTA만
- Mouse 시료 → Mus musculus UniProt (UP000000589) FASTA만
- 합쳐서 검색하면 shared peptide 문제로 종 구분 불가
2. Match-between-runs (MBR) 적용 범위 제한:
- 동일 종 내 시료끼리만 MBR 적용
- Porcine ↔ Mouse 간 MBR은 활성화하면 안 됨 (false identification 위험)
기타 표준 설정:
- Variable mod: Oxidation (M), Acetyl (Protein N-term)
- Fixed mod: Carbamidomethyl (C)
- Enzyme: Trypsin/P, max 2 missed cleavages
- PSM FDR: 0.01, Protein FDR: 0.01
- iBAQ: ✅ ON (Advanced 메뉴)
- iBAQ log fit: ✅ ON
상세 단계별 가이드는 분석 보고서에 정리되어 있다.
다른 cross-species 분석에도 적용되는 일반 교훈
이 작업에서 배운 것 중 다른 cross-species multi-omics 분석에도 적용되는 것들:
-
시뮬레이션은 알고리즘 검증이지 생물학 검증이 아니다. Ground truth를 모르는 영역(novel discovery)에서는 시뮬레이션 결과의 "정확도"가 측정 불가능. 진짜 검증은 (a) 독립 실데이터 (b) 알려진 positive/negative control 단백질 (c) orthogonal method (Western, IHC)로만 가능.
-
Pseudocount 함정은 LC-MS proteomics 분석에서 흔하다. 특히 sparse data가 많은 종간 비교나 PTM 분석에서. Valid value filter가 표준이다.
-
Gene symbol 매칭 vs 정식 ortholog DB는 데이터셋 크기에 따라 trade-off. 작은 카탈로그(<200)는 빠른 매칭이 OK, 대규모 비교는 BioMart/InParanoid 필수.
-
공개 데이터 (PRIDE, GEO 등) 활용은 시간을 절약한다. Park 그룹이 같은 디자인의 데이터를 PRIDE에 등록해두지 않았다면 이번 검증은 불가능했을 것. 본인 연구 데이터도 가능한 한 공개하면, 다른 연구자가 같은 방식으로 활용할 수 있다.
-
2-3일이면 가능한 작업이지만, 시뮬레이션 함정 디버깅에 절반 이상의 시간이 들었다. 분석 코드를 짜는 것보다 "결과가 진짜인지 검증"하는 게 본질적으로 더 오래 걸린다.
결론 — 재현 가능한 분석을 위한 체크리스트
이 작업 후 정리한 cross-species multi-omics 분석 체크리스트:
- 시뮬레이션 데이터의 ground truth가 분석 결과와 독립인가? (순환 논리 회피)
- 검출 0/n 단백질에 pseudocount 안 쓰는가? (valid value filter 사용)
- Ortholog 매핑이 정식 DB인가? (BioMart/InParanoid)
- 종별 FASTA 분리 검색인가? (shared peptide 회피)
- MBR이 종 내로 제한되는가? (false match 회피)
- 독립 데이터 (PRIDE 등)로 검증했는가? (synthetic-only 결론 회피)
- 시료-시료 Pearson 상관 r > 0.87? (Park et al. 기준)
- DEP 기준이 (FC ≥ 2) AND (adj.p < 0.05)인가? (단일 기준 회피)
분석을 의뢰받는 입장에서, 그리고 의뢰하는 입장에서 모두에게 유용한 체크리스트가 되길 바란다.
관련 글:
- Biomarker Discovery: Complete Practical Guide for Researchers (2026)
- LC-MS/MS Proteomics 입문 완전 가이드 2026
- 통계 검정 선택 가이드 — t-test, limma, ANOVA 언제 뭘 쓸까
참고 문헌:
- Park, S. M. et al. (2026). Decellularized esophageal extracellular matrix as a scaffold for esophageal tissue engineering. (Yonsei Univ., Cho 연구실)
- Cha, S. et al. (2024). Comparative proteomic analysis of uterine ECM vs Matrigel.
- Kim, M. S. et al. (2014). A draft map of the human proteome. Nature, 509, 575-581. (HPM)
- Uhlén, M. et al. (2015). Tissue-based map of the human proteome. Science, 347, 1260419. (HPA)
- Ensembl BioMart: https://www.ensembl.org/biomart
- PRIDE dataset PXD023694
관련 글
Reproducing Park et al. 2026: Three Iterations of a Cross-Species ECM Proteomics Pipeline
5월 19일 · 12 min read
프로테오믹스DIA-NN 완전 정복: 2026년 최신 사용법부터 고급 분석까지
3월 24일 · 21 min read
ProteomicsLC-MS/MS Proteomics 입문 — 샘플 준비부터 데이터 분석까지 완전 가이드 2026
5월 18일 · 21 min read
ProteomicsHow to Use MaxQuant — A Step-by-Step Tutorial for Beginners
2월 20일 · 8 min read