跳转至

CRISPR筛选分析MAGeCK

一句话概述

MAGeCK是CRISPR-Cas9全基因组筛选数据分析的"行业标准"工具——白话说就是:当你用CRISPR一次性敲除几万个基因,然后看哪些基因对细胞生存最关键时,MAGeCK就是帮你从海量数据中找出"关键基因"的计算工具。


核心知识点表格

知识点说明
CRISPR筛选原理用sgRNA文库同时靶向数万基因,通过正/负筛选找关键基因
sgRNA文库如Brunello(人)、Brie(鼠),每个基因4条sgRNA,含1000条对照
正筛选处理后活下来的细胞中富集的基因(如耐药基因)
负筛选处理后消失的细胞中丢失的基因(如必需基因)
MAGeCK count把FASTQ reads比对到sgRNA文库,统计每条sgRNA的read数
MAGeCK test (RRA)Robust Rank Aggregation,从sgRNA排名推断基因重要性
MAGeCK mle最大似然估计,计算beta score(类似log fold change)
MAGeCKFluteR包,提供质控、拷贝数校正、通路富集等下游分析
beta scoreMLE输出的基因效应值,正=正选择,负=负选择
BAGEL2替代工具,负筛选中利用先验知识提高信噪比

各步骤详解

第一步:理解CRISPR筛选实验

白话解释: 想象你有一座城市(细胞群),城市里每栋房子(细胞)都被随机安装了一种"拆迁炸弹"(sgRNA,靶向不同基因)。加药后,有些房子倒了(基因被敲除后细胞死了),有些没倒。统计最后还站着的和倒了的,就知道哪些基因对抗药性/存活重要。

实验流程:
1. 细胞 → 感染sgRNA病毒文库(每个细胞获得1条sgRNA)
2. 扩增2-3天 → 收集基线样本(Day0/T0)
3. 加药处理 / 继续培养 → 收集终点样本(Day14/T14)
4. 提取基因组DNA → PCR扩增sgRNA区域 → 测序
5. 分析:比较T0 vs T14的sgRNA丰度变化

第二步:安装MAGeCK

白话解释: MAGeCK是Python写的命令行工具,用conda安装最方便。需要Python 3环境。

# 方法1:conda安装(推荐)
conda create -n mageck python=3.9        # 创建Python 3.9环境
conda activate mageck                    # 激活环境
pip install mageck                       # pip安装MAGeCK

# 方法2:从源码安装
git clone https://github.com/liulab-dfci/MAGeCK.git  # 克隆仓库
cd MAGeCK                                # 进入目录
python setup.py install                  # 安装

# 验证安装
mageck -v                                # 显示版本号

# 安装MAGeCKFlute(R包,用于下游分析)
# 在R中运行:
# BiocManager::install("MAGeCKFlute")

第三步:MAGeCK count——sgRNA计数

白话解释: 把测序得到的reads"认回"到它们对应的sgRNA。就像考试后,把每张答题卡归还给对应的学生。

# mageck count:从FASTQ统计每条sgRNA的read数
mageck count \                           # 计数命令
  -l library.csv \                       # sgRNA文库文件(sgRNA名, 序列, 基因名)
  -n sample_output \                     # 输出文件名前缀
  --sample-label "Day0,Day14_ctrl,Day14_drug" \  # 样本标签
  --fastq Day0.fastq.gz Day14_ctrl.fastq.gz Day14_drug.fastq.gz \  # FASTQ文件
  --norm-method median                   # 归一化方法:中位数比值法

# 输出文件说明:
# sample_output.count.txt        → sgRNA计数矩阵
# sample_output.count_normalized.txt → 归一化后的计数
# sample_output.countsummary.txt → 质控统计(mapping率等)

# sgRNA文库文件格式(library.csv):
# sgRNA_name        sgRNA_sequence      Gene
# GENE1_sg1         ACGTACGTACGTACGTACGT  GENE1
# GENE1_sg2         TGCATGCATGCATGCATGCA  GENE1
# Non-Targeting_1   AAAAAAAAAAAAAAAAAAAAA NonTargetingControl

质控检查:

# 查看计数统计结果
cat sample_output.countsummary.txt       # 查看每个样本的mapping率

# 关键指标:
# - Mapped ratio > 60%    → 好
# - Gini index < 0.2      → sgRNA分布均匀,好
# - Zero-count sgRNAs < 1% → 文库覆盖充分

第四步:MAGeCK test (RRA)——基因排名

白话解释: RRA(Robust Rank Aggregation)是MAGeCK的核心算法。它看每个基因的4条sgRNA是不是"一致地"变多或变少。如果4条sgRNA都显著减少,说明这个基因确实重要(不是偶然)。

# mageck test:RRA方法检测显著基因
mageck test \                            # 统计检验命令
  -k sample_output.count.txt \           # 输入:sgRNA计数矩阵
  -t Day14_drug \                        # 处理组样本名
  -c Day0 \                              # 对照组样本名
  -n drug_vs_day0 \                      # 输出前缀
  --normcounts-to-file                   # 输出归一化计数

# 主要输出文件:
# drug_vs_day0.gene_summary.txt  → 基因级别结果(最重要!)
# drug_vs_day0.sgrna_summary.txt → sgRNA级别结果

# gene_summary.txt关键列:
# id            → 基因名
# neg|score     → 负选择得分(越小越显著)
# neg|p-value   → 负选择p值
# neg|fdr       → 负选择FDR校正后p值
# neg|rank      → 负选择排名
# pos|score     → 正选择得分
# pos|p-value   → 正选择p值
# pos|fdr       → 正选择FDR

第五步:MAGeCK mle——高级分析

白话解释: MLE(最大似然估计)比RRA更强大,可以同时比较多个条件,输出beta score(类似fold change)。适合复杂实验设计。

# 准备design matrix(实验设计矩阵)
# design_matrix.txt:
# Samples    baseline    treatment
# Day0       1           0
# Day14_ctrl 1           0
# Day14_drug 1           1

# 运行MAGeCK MLE
mageck mle \                             # MLE命令
  -k sample_output.count.txt \           # 输入计数矩阵
  -d design_matrix.txt \                 # 实验设计矩阵
  -n mle_result \                        # 输出前缀
  --norm-method median \                 # 归一化方法
  --control-sgrna NonTargetingControl    # 对照sgRNA标识

# 输出:mle_result.gene_summary.txt
# 关键列:
# Gene                → 基因名
# treatment|beta      → beta score(正=正选择,负=负选择)
# treatment|p-value   → p值
# treatment|fdr       → FDR
# treatment|wald-p-value → Wald检验p值

第六步:MAGeCKFlute下游分析(R)

白话解释: MAGeCKFlute是R包,帮你做质控、画图、跑通路富集分析。

library(MAGeCKFlute)                     # 加载MAGeCKFlute

# ===== 方法1:用RRA结果(FluteRRA) =====
# 读取gene summary文件
fluterra <- ReadRRA(
  "drug_vs_day0.gene_summary.txt"        # RRA结果文件
)

# 火山图:展示正/负选择基因
VolcanoView(
  fluterra,                              # 数据
  x = "Score",                           # x轴:RRA score
  y = "FDR",                             # y轴:FDR
  Label = "id"                           # 标签:基因名
)

# 通路富集分析
enrich_neg <- EnrichAB(
  fluterra$id[fluterra$neg.fdr < 0.05],  # 负选择显著基因
  organism = "hsa"                       # 人类基因
)

# ===== 方法2:用MLE结果(FluteMLE) =====
mle_data <- ReadBeta("mle_result.gene_summary.txt")  # 读取MLE结果

# 拷贝数校正(重要!基因拷贝数影响筛选结果)
# 高拷贝数基因在CRISPR筛选中可能假阳性
FluteMLE(
  mle_data,                              # MLE beta scores
  treatname = "treatment",               # 处理组名
  organism = "hsa",                      # 物种
  incorporateDepmap = FALSE              # 是否整合DepMap数据
)

常见报错与解决

报错原因解决方案
mageck count: 0 reads mapped文库文件中sgRNA序列与FASTQ不匹配检查sgRNA序列方向、是否含adapter
Python version errorPython版本兼容性问题使用conda安装推荐的Python 3版本,或用bioconda渠道安装
No significant genes found筛选效果弱或样本不够降低FDR阈值,或增加生物学重复
design matrix error设计矩阵格式不对确保tab分隔,列名对应sample label
Gini index too high (>0.5)sgRNA分布极不均匀检查文库质量,可能需要重新感染
negative control not found对照sgRNA名称不匹配检查文库文件中NonTargeting的命名

速查表

# ========== MAGeCK分析速查 ==========

# 1. sgRNA计数
mageck count -l library.csv -n output --sample-label "T0,T14" --fastq T0.fq T14.fq

# 2. RRA检验(简单两组比较)
mageck test -k output.count.txt -t Treatment -c Control -n result

# 3. MLE分析(多条件比较)
mageck mle -k output.count.txt -d design.txt -n result

# 4. 查看结果
head result.gene_summary.txt             # 基因排名
# 负选择:看neg|fdr列 < 0.05的基因(必需基因/药物靶点)
# 正选择:看pos|fdr列 < 0.05的基因(耐药基因/抑制子)

# 5. R下游分析
# library(MAGeCKFlute)
# flute <- ReadRRA("result.gene_summary.txt")
# VolcanoView(flute)

面试高频问题

Q1: CRISPR筛选中正选择和负选择分别是什么?

正选择(positive selection):处理后某些sgRNA的reads增多,说明对应基因被敲除后让细胞获得了生长优势(如耐药)。负选择(negative selection):某些sgRNA的reads减少或消失,说明对应基因是细胞存活所必需的。MAGeCK同时检测两个方向。

Q2: MAGeCK的RRA和MLE有什么区别?什么时候用哪个?

RRA:简单的两组比较(对照 vs 处理),基于sgRNA排名聚合,适合入门。MLE:最大似然估计,输出beta score,可以处理复杂实验设计(多时间点、多条件),还能纳入对照sgRNA校正。简单实验用RRA,复杂实验用MLE。

Q3: 为什么需要拷贝数校正?

CRISPR切割高拷贝数区域(如癌细胞中的扩增区域)会产生多个DNA双链断裂,导致细胞死亡——这不是因为基因功能丧失,而是因为"被切太多次"。所以高拷贝数基因在负筛选中容易出现假阳性。MAGeCKFlute可以用DepMap数据做拷贝数校正。

Q4: sgRNA文库的设计有什么讲究?

主流文库:Brunello(人,~77,000条sgRNA,每基因4条)、Brie(鼠)。关键要素:(1) 每个基因至少3-4条sgRNA以增加可靠性;(2) 包含1000+非靶向对照sgRNA;(3) 选择高效sgRNA(GC含量40-70%、无脱靶位点)。

Q5: 除了MAGeCK,还有哪些CRISPR筛选分析工具?

BAGEL2:贝叶斯方法,利用已知必需基因作为先验,负筛选时信噪比更高。CRISPRcleanR:专门处理拷贝数偏差。JACKS:联合分析多个筛选实验的sgRNA效率。CasTLE:考虑sgRNA效率差异的假设检验。MAGeCK是使用最广泛的,多数发表论文选用MAGeCK。