循环肿瘤细胞 CTC 分析¶
一句话说明¶
CTC(循环肿瘤细胞)是从肿瘤脱落进入血液的完整肿瘤细胞,通过特殊方法从血液中捕获后做单细胞测序,可以研究肿瘤转移机制和实时监控病情变化。
核心知识点¶
1. CTC vs ctDNA¶
| 特征 | CTC | ctDNA |
|---|---|---|
| 本质 | 完整的肿瘤细胞 | DNA 碎片 |
| 数量 | 极少(1-10个/mL 血液) | 相对多 |
| 信息量 | 基因组+转录组+蛋白 | 仅基因组 |
| 捕获难度 | 高(需专门设备) | 低(常规提取) |
| 分析方法 | 单细胞测序 | 深度测序 |
| 优势 | 活细胞功能研究 | 灵敏度高 |
白话:ctDNA 是肿瘤细胞死后留下的"灰烬"(DNA碎片),CTC 是逃出肿瘤的"活兵"
2. CTC 捕获技术¶
- CellSearch:FDA 批准的 CTC 计数系统(基于 EpCAM 抗体)
- 微流控芯片:利用细胞大小/变形能力分选
- 免疫磁珠法:抗体-磁珠捕获
- DEPArray:单细胞分离到独立管中用于测序
- FACS 分选:荧光标记后流式分选
3. CTC 测序分析¶
- 单细胞全基因组扩增(WGA):MDA、MALBAC、PicoPLEX
- 扩增偏差:WGA 不均匀扩增导致假 CNV 和等位基因 dropout
- CNV 分析:最可靠的 CTC 分析类型(对扩增偏差相对不敏感)
- SNV 检测:受 WGA 噪音影响大,需要谨慎过滤
4. 临床应用¶
- 预后评估:CTC 计数 >= 5/7.5mL(乳腺癌、前列腺癌、结直肠癌预后差)
- 疗效监测:治疗过程中 CTC 数量变化
- 转移机制研究:分析转移相关基因表达
- 耐药机制:检测 CTC 中的耐药突变
实战代码¶
# === CTC 单细胞 CNV 分析 ===
import numpy as np # 数值计算
import pandas as pd # 数据处理
import matplotlib.pyplot as plt # 绑图
def ctc_cnv_analysis(bam_path, bin_size=500000):
"""
CTC 单细胞 CNV 分析(简化版)
基于固定窗口的读段计数方法
"""
import pysam # BAM处理
bam = pysam.AlignmentFile(bam_path, "rb")
# 按固定窗口统计读段数
bin_counts = {} # 存储每个bin的计数
for read in bam: # 遍历读段
if read.mapping_quality >= 20 and not read.is_duplicate:
chrom = read.reference_name # 染色体
pos = read.reference_start # 位置
bin_id = (chrom, pos // bin_size * bin_size) # bin标识
bin_counts[bin_id] = bin_counts.get(bin_id, 0) + 1
# 转为 DataFrame
df = pd.DataFrame([
{"chrom": k[0], "start": k[1], "count": v}
for k, v in bin_counts.items()
])
# GC 校正(简化版)
median_count = df["count"].median() # 中位数
df["ratio"] = df["count"] / median_count # 比值
df["log2"] = np.log2(df["ratio"] + 0.01) # log2变换
return df
# 可视化 CTC 全基因组 CNV
def plot_ctc_cnv(cnv_df, title="CTC CNV Profile"):
"""绘制 CTC 单细胞 CNV 图"""
# 按染色体排序
chrom_order = [f"chr{i}" for i in range(1, 23)] + ["chrX"]
cnv_df["chrom_idx"] = cnv_df["chrom"].map(
{c: i for i, c in enumerate(chrom_order)})
cnv_df = cnv_df.dropna(subset=["chrom_idx"])
cnv_df = cnv_df.sort_values(["chrom_idx", "start"])
# 绘图
fig, ax = plt.subplots(figsize=(16, 4))
x_pos = range(len(cnv_df)) # X坐标
colors = ["steelblue" if i % 2 == 0 else "coral"
for i in cnv_df["chrom_idx"].astype(int)]
ax.scatter(x_pos, cnv_df["log2"], # 散点图
c=colors, s=1, alpha=0.5)
ax.axhline(y=0, color="black", linewidth=0.5) # 基线
ax.axhline(y=0.58, color="red", linewidth=0.5, linestyle="--") # 扩增
ax.axhline(y=-1, color="blue", linewidth=0.5, linestyle="--") # 缺失
ax.set_ylabel("log2 ratio")
ax.set_title(title)
ax.set_ylim(-3, 3) # Y轴范围
plt.tight_layout()
plt.savefig("ctc_cnv.png", dpi=150)
# === CTC 单细胞 WGS 分析流程 ===
# 1. 单细胞扩增后的 FASTQ 质控
fastp -i CTC_R1.fq.gz -I CTC_R2.fq.gz \ # 输入
-o clean_R1.fq.gz -O clean_R2.fq.gz \ # 输出
--detect_adapter_for_pe # 自动检测接头
# 2. 比对到参考基因组
bwa mem -t 8 \ # 8线程
hg38.fa \ # 参考基因组
clean_R1.fq.gz clean_R2.fq.gz | \ # 输入
samtools sort -o ctc.bam # 排序输出
# 3. 去除 PCR 重复(WGA 产生大量重复)
picard MarkDuplicates \
I=ctc.bam \ # 输入
O=ctc_dedup.bam \ # 输出
M=dup_metrics.txt \ # 重复统计
REMOVE_DUPLICATES=true # 删除重复
# 4. 检查 WGA 覆盖均匀性
picard CollectWgsMetrics \
I=ctc_dedup.bam \ # 输入
O=wgs_metrics.txt \ # 输出
R=hg38.fa # 参考基因组
# 5. 使用 Ginkgo 或 SCOPE 做单细胞 CNV
# Ginkgo 是专门为单细胞 CNV 设计的工具
# 在线版:http://qb.cshl.edu/ginkgo
# 6. 使用 CopywriteR 做 CNV 分析
# (R 脚本)
cat > run_cnv.R << 'RSCRIPT'
library(CopywriteR) # 单细胞CNV工具
# 运行 CopywriteR
CopywriteR(
sample.control = data.frame(
samples = "ctc_dedup.bam", # CTC BAM
controls = "bulk_normal.bam" # 正常对照BAM
),
destination.folder = "cnv_output/", # 输出目录
reference.folder = "ref_folder/", # 参考文件夹
bp.param = BiocParallel::MulticoreParam(workers = 4)
)
RSCRIPT
面试常问点¶
★ CTC 分析最大的技术挑战是什么?¶
参考答案:两大挑战:(1) 稀有性——每毫升血液中可能只有 1-10 个 CTC,混在几十亿个血细胞中(比"大海捞针"还难),需要非常高效的富集和分离技术;(2) 全基因组扩增(WGA)的偏差——单细胞的 DNA 量极少(~6 pg),必须扩增才能测序,但 WGA 会引入扩增偏差(某些区域过度扩增、某些区域丢失),导致 CNV 有噪音、SNV 有假阳性和等位基因丢失(allelic dropout)。所以 CTC 的 CNV 分析比 SNV 分析更可靠。
★ CTC 计数有什么临床意义?¶
参考答案:FDA 批准 CellSearch 系统用于转移性乳腺癌、前列腺癌和结直肠癌的 CTC 计数。以乳腺癌为例:治疗前 CTC >= 5 个/7.5mL 血液的患者预后显著差于 < 5 个的患者。治疗过程中 CTC 数量下降提示治疗有效,持续升高提示可能需要换方案。CTC 计数是独立的预后因素,和影像学评估互补。
速查卡片¶
| 问题 | 答案 |
|---|---|
| CTC 全称 | Circulating Tumor Cells |
| 血液中数量 | 极少(1-10个/mL) |
| 捕获方法 | CellSearch, 微流控, FACS |
| WGA 方法 | MDA, MALBAC, PicoPLEX |
| 最可靠分析 | CNV(对扩增偏差不敏感) |
| 临床阈值 | >= 5 个/7.5mL(预后差) |
| vs ctDNA | 完整细胞 vs DNA碎片 |
| CNV 工具 | Ginkgo, SCOPE, CopywriteR |
| 主要挑战 | 稀有性 + WGA偏差 |
| FDA 设备 | CellSearch |