利用MAGeCK算法处理CRISPR Screen数据

简介: 上次文章结尾时候提到了MAGeCK RRA算法处理,这次我们就来学习一下,Model-based Analysis of Genome-wide CRISPR-Cas9 Knockout(MAGeCK) 是一个可以从全基因组CRISPR-CAS9筛查技术中识别重要基因计算工具。Mageck是由Wei Li 和 Shirley Liu lab共同开发维护的。

Tutorial地址:https://sourceforge.net/p/mageck/wiki/

Paper:Li, et al. MAGeCK enables robust identification of essential genes from genome-scale CRISPR/Cas9 knockout screens. Genome Biology 15:554 (2014)

安装

Conda安装(推荐)

conda create -c bioconda -n mageckenv mageck  # 环境中python版本要大于3
source activate mageckenv
conda update mageck
source deactivate

Docker安装

可以follow这个流程https://sourceforge.net/p/mageck/wiki/demo/#tutorial-3-run-mageck-on-docker-image

源码安装

最新版的MAGeCK(0.5.9)下载地址为:https://sourceforge.net/projects/mageck/files/latest/download

tar xvzf mageck-0.5.4.tar.gz
cd mageck-0.5.4
python setup.py install
## 如果你想要安装MAGeCK安装到你自己的目录下
python setup.py install --user
## $HOME是你的root目录
python setup.py install --prefix=$HOME
## 设置环境变量
export PATH=$PATH:$HOME/bin

MAGECK RRA算法

下载测试数据

我们直接使用 Genome-wide recessive genetic screening in mammalian cells with a lentiviral CRISPR-guide RNA library这篇文章中的数据集中的两个样本为示例,在本文中,作者对小鼠ESC细胞进行了CRISPR / CAS9筛选,并鉴定了小鼠ESC细胞中必需的基因。

准备文件:

  1. 测序数据 :对照组 ERR376998 (one replicate of plasmid)、处理组 ERR376999 (one replicate of ESC)
  2. sgRNA库文件:yusa_library.csv 包含测序sgRNAid、序列、靶向基因

52b428829870bd8e64ef84e3b291c63.png

sgRNA文库

数据下载地址:http://www.ebi.ac.uk/ena/data/view/ERP003292

sgRNA库文件:https://sourceforge.net/projects/mageck/files/libraries/

数据的下载方式可以参考 一文。

数据下载后进行解压

gunzip ERR376998.fastq.gz
gunzip ERR376999.fastq.gz

count获取样本比对数据

mageck count -l yusa_library.csv -n escneg --sample-label "plasmid,ESC1" --fastq ERR376998.fastq  ERR376999.fastq
参数 解释
-l yusa_library.csv 提供的sgRNA信息包含sgRNA id,序列和靶向的基因(支持csv与tab分割)
-n demo 输出文件的前缀
--sample-label L1,CTRL L1 (test1.fastq) and CTRL (test2.fastq)两个样本的标签
--fastq test1.fastq test2.fastq 测序的fastq序列
--pdf-report 对测序数据的统计信息提供pdf报告文档
--trim-5 (可选) 切除5段接头序列

我们打开ERR376998文件可以看到各序列的前23个碱基是一致的,我们可以设置--trim-5参数手动切除这些序列,但是从version 0.5.6版本后, MAGeCK现在可以自动识别fastq文件中一致序列进行切除,因此这个参数是可选的。

5c4924c0c79a3639bf46421b4e39f83.png

test比较样本差异

当我们得到count矩阵后,就可以用test命令进行组间差异分析

mageck test -k escneg.count.txt -t ESC1 -c plasmid -n esccp
参数 解释
-k escneg.count.txt count命令得到的各样本read count矩阵
-t 指定处理组数据
-c 指定对照组数据
-n demo 输出文件的前缀

如果成功,可以看到"esccp.gene_summary.txt"文件, 可以看到两个核糖体基因 RPS5和RP19在阴性筛选的前几名

id      num     neg|score  neg|p-value   neg|fdr neg|rank        neg|goodsgrna   pos|score  pos|p-value   pos|fdr pos|rank  pos|goodsgrna
GTF2B   5       2.0462e-10      2.5851e-07      0.000707        1       5       1.0     1.0     1.0     19150   0
RPS5    5       5.9353e-10      2.5851e-07      0.000707        2       5       1.0     1.0     1.0     19149   0
RPL19   4       2.695e-09       2.5851e-07      0.000707        3       4       1.0     1.0     1.0     19148   0
KIF18B  5       1.0136e-08      2.5851e-07      0.000707        4       5       1.0     1.0     1.0     19146   0

如果我们想看阳性筛选排序,可以将第11列进行排序,发现 TPR53在前几名

## 排序
sort -k 11,11n esccp.gene_summary.txt | less
id      num     neg|score  neg|p-value   neg|fdr neg|rank        neg|goodsgrna   pos|score  pos|p-value   pos|fdr pos|rank  pos|goodsgrna
ZFP945  5       1.0     1.0     0.999999        19150   0       9.6166e-07      5.4287e-06      0.05198 1  5
TRP53   5       0.95411 0.95409 0.999999        17901   0       1.0347e-06      5.4287e-06      0.05198 2  4
PDAP1   5       0.85937 0.86223 0.999999        15753   1       7.6412e-06      2.8178e-05      0.174505  3       2

文件信息如下:

Column Content
id Gene ID
num The number of targeting sgRNAs for each gene
neg|score The RRA lo value of this gene in negative selection
neg|p-value The raw p-value (using permutation) of this gene in negative selection
neg|fdr The false discovery rate of this gene in negative selection
neg|rank The ranking of this gene in negative selection
neg|goodsgrna The number of "good" sgRNAs, i.e., sgRNAs whose ranking is below the alpha cutoff (determined by the --gene-test-fdr-threshold option), in negative selection.
neg|lfc The log2 fold change of this gene in negative selection. The way to calculate gene lfc is controlled by the --gene-lfc-method option
pos|score The RRA lo value of this gene in positive selection
pos|p-value The raw p-value (using permutation) of this gene in positive selection
pos|fdr The false discovery rate of this gene in positive selection
pos|rank The ranking of this gene in positive selection
pos|goodsgrna The number of "good" sgRNAs, i.e., sgRNAs whose ranking is below the alpha cutoff (determined by the --gene-test-fdr-threshold option), in positive selection.
pos|lfc The log fold change of this gene in positive selection

同样我们可以添加--pdf-report参数,生成一个统计报告,便于分享展示。

bb853d158b311157b8d4a5f49517ae2.png

【关于筛选】:这是一项重要步骤,根据研究目的不同,CRISRP共同量测序分为阳性筛选和阴性筛选。阳性筛选指的是施加一定筛选压力,经过文库扰动后野生型细胞致死,仅有获得抗性的细胞存活,与阳性筛选不同,阳性筛选是通过比较不同筛选时间点的sgRNA丰度差,获得缺失的sgRNA,分析所对应的基因,从而找出可能影响细胞生长的候选基因。

MAGeCK MLE算法

除了传统的RRA算法,从0.5版本以后,MAGeCK提供了一个新的算法MLE,计算一个称为beta score的指标代表基因的重要程度,其实和转录组中差异分析中的log fold change指标类似,相比于RRA算法,这种方法有以下优势:

  1. 每个基因只会得到一个分数,而不是RRA中的两个分数:一个用于阳性选择,一个用于阴性选择。
  2. 它允许在多种条件(多组情况)下直接比较。
  3. 它包含各个sgRNA的干扰效率信息。

构建design matrix文件

这个design matrix文件表明那个样本被哪个条件所影响,通常是一个二进制矩阵,指示哪个样本(第一列指示)受到哪个条件的影响(由第一行表示)。

对于以上的数据 对照组 ERR376998 (one replicate of plasmid)、处理组 ERR376999 (one replicate of ESC),我们可以构建这样的矩阵designmat.txt

Samples baseline        plasmid ESC1
plasmid 1       0       0
ESC1    1       1      0

注意:

  • 矩阵必须包含一个表头代表条件标签
  • 第一列是样本的标签
  • 第二列是必须是一个"baseline"列,所有值必须为1
  • 表里的数字必须是0 或 1
  • 必须设置一个初始状态的样本(比如day 0或者plasmid)

run the module

mageck mle -k escneg.count.txt -d designmat.txt -n yusa

执行成功后,会生成3列文件:log.file、 gene_summary file (包含 gene beta scores)、 sgrna_summary file (包含sgRNA efficiency probability predictions).,查看gene_summary.file:

c8646749150a8b35688f5bb5d2adaf5.png

文件信息如下:

Column Content
Gene Gene ID
sgRNA The number of targeting sgRNAs for each gene
plasmid|beta;ESC1|beta The beta scores of this gene in conditions "plasmid" and "ESC1", respectively. The conditions are specified in the design matrix as an input of the mle subcommand.
plasmid|p-value The raw p-value (using permutation) of this gene
plasmid|fdr The false discovery rate of this gene
plasmid|z The z-score associated with Wald test
plasmid|wald-p-value The p value using Wald test
plasmid|wald-fdr The false discovery rate of the Wald test

其他参数

plot

我们可以使用plot命令对单独挑选出的基因绘图

usage: mageck plot [-h] -k COUNT_TABLE -g GENE_SUMMARY [--genes GENES]
                   [-s SAMPLES] [-n OUTPUT_PREFIX]
                   [--norm-method {none,median,total}] [--keep-tmp]
Parameter Explanation
-k COUNT_TABLE, --count-table COUNT_TABLE Provide a tab-separated count table.
-g GENE_SUMMARY, --gene-summary GENE_SUMMARY The gene summary file generated by the test command.
-h, --help show this help message and exit
--genes GENES A list of genes to be plotted, separated by comma. Default: none.
-s SAMPLES, --samples SAMPLES A list of samples to be plotted, separated by comma. Default: using all samples in the count table.
-n OUTPUT_PREFIX, --output-prefix OUTPUT_PREFIX The prefix of the output file(s). Default sample1.
--norm-method {none,median,total} Method for normalization, default median.
--keep-tmp Keep intermediate files.

## 举例子 单独绘制 GRHL2 BIK这两个基因
mageck plot -k escneg.count.txt -g esccp.gene_summary.txt --genes GRHL2,BIK

0ab39ee4c1ff6f5352a2c462c8aebd2.png

可以看到plot命令将这两个基因每个sgRNA的变化,阳性和阴性筛选中按照P值和RRA score排序的图形绘制了除了,多个基因直接中间以,分割即可。

MAGECKGsea

MAGECKGSEA是使用C ++的基因设定富集分析(GSEA)的快速实现。与官方GSEA软件相比,主要优势是其易于使用和极快的运行速度。

作者这里也提供了gsea示例文件供我们练习:https://bitbucket.org/liulab/mageck/src/master/gsea/,其实只用到两个参数

mageckGSEA -r demo1.txt -g kegg.ribosome.gmt  -c 1 -p 10000
Parameter Explanation
-r rank_file, --rank_file rank_file (required) Rank file. The first column of the rank file must be the gene name.
-g gmt_file, --gmt_file gmt_file (required) The pathway annotation in GMT format.
-p perm_time, --perm_time perm_time Permutations, default 1000.
-c score_column The column for gene scores.

生成GSEA结果文件如下:

Pathway Size    ES  p   p_permutation   FDR Ranking Hits    LFC
KEGG_RIBOSOME   88  0.3262  0.00240772  0.0045  0.0045  0   32  0
Item Explanation
Pathway The name of the pathway
Size The size of the pathway, i.e., the number of genes
ES Enrichment Score (ES) in GSEA
p The p value of ES
p_permutation The permutation p value of ES (usually more accurate than p
FDR False Discovery Rate of p_permutation
Ranking The ranking of this pathway
Hits The number of genes that are ranked before ES score. See "Leading Edge" analysis of GSEA
LFC Log fold change (not implemented)

速度确实挺快,感觉可作为官方GSEA软件做基因集富集一种替代方式,只需要自己制作好GMT文件即可,不懂该格式的可以参考GSEA官网介绍:

Advanced tutorial

包含允许read mapping误差、纠正拷贝数变异影响、Docker iamge运行MAGeCK及更复杂设计实验条件下的操作,感兴趣看教程https://sourceforge.net/p/mageck/wiki/advanced_tutorial/

输入/出格式

更详细的参数介绍可直接看源文档

输入:https://sourceforge.net/p/mageck/wiki/input/

输出:https://sourceforge.net/p/mageck/wiki/output/

其它工具

除了MAGeCK, 该团队还开发了其他的软件与算法:

  • MAGeCK-VISPR: 制动CRISPR//Cas9筛查的开发的集质控,分析和可视化一体的workflow
  • MAGeCKFlute: 一个交互分析的pipelineR包
  • scMAGeCK: 一个结合单细胞转录组数据与Crispr筛查数据综合分析的计算模型
  • Vispr-online:在线版分析筛选数据集

后续有时间再来慢慢学习吧~~~

相关文章
|
4月前
|
存储 监控 算法
基于 C++ 哈希表算法实现局域网监控电脑屏幕的数据加速机制研究
企业网络安全与办公管理需求日益复杂的学术语境下,局域网监控电脑屏幕作为保障信息安全、规范员工操作的重要手段,已然成为网络安全领域的关键研究对象。其作用类似网络空间中的 “电子眼”,实时捕获每台电脑屏幕上的操作动态。然而,面对海量监控数据,实现高效数据存储与快速检索,已成为提升监控系统性能的核心挑战。本文聚焦于 C++ 语言中的哈希表算法,深入探究其如何成为局域网监控电脑屏幕数据处理的 “加速引擎”,并通过详尽的代码示例,展现其强大功能与应用价值。
99 2
|
5月前
|
数据采集 机器学习/深度学习 算法
别急着上算法,咱先把数据整明白:大数据分析的5个基本步骤,你都搞对了吗?
别急着上算法,咱先把数据整明白:大数据分析的5个基本步骤,你都搞对了吗?
205 4
|
2月前
|
存储 监控 算法
基于 Python 跳表算法的局域网网络监控软件动态数据索引优化策略研究
局域网网络监控软件需高效处理终端行为数据,跳表作为一种基于概率平衡的动态数据结构,具备高效的插入、删除与查询性能(平均时间复杂度为O(log n)),适用于高频数据写入和随机查询场景。本文深入解析跳表原理,探讨其在局域网监控中的适配性,并提供基于Python的完整实现方案,优化终端会话管理,提升系统响应性能。
68 4
|
7月前
|
机器学习/深度学习 算法 搜索推荐
联邦学习的未来:深入剖析FedAvg算法与数据不均衡的解决之道
随着数据隐私和数据安全法规的不断加强,传统的集中式机器学习方法受到越来越多的限制。为了在分布式数据场景中高效训练模型,同时保护用户数据隐私,联邦学习(Federated Learning, FL)应运而生。它允许多个参与方在本地数据上训练模型,并通过共享模型参数而非原始数据,实现协同建模。
|
3月前
|
机器学习/深度学习 算法
基于差分进化灰狼混合优化的SVM(DE-GWO-SVM)数据预测算法matlab仿真
本项目实现基于差分进化灰狼混合优化的SVM(DE-GWO-SVM)数据预测算法的MATLAB仿真,对比SVM和GWO-SVM性能。算法结合差分进化(DE)与灰狼优化(GWO),优化SVM参数以提升复杂高维数据预测能力。核心流程包括DE生成新种群、GWO更新位置,迭代直至满足终止条件,选出最优参数组合。适用于分类、回归等任务,显著提高模型效率与准确性,运行环境为MATLAB 2022A。
|
3月前
|
数据采集 算法 数据可视化
DROPP算法详解:专为时间序列和空间数据优化的PCA降维方案
DROPP(Dimensionality Reduction for Ordered Points via PCA)是一种专为有序数据设计的降维方法,通过结合协方差分析与高斯核函数调整,有效融入数据顺序特性。本文详细解析了DROPP的理论基础、实现步骤及其应用。算法核心在于利用相邻元素间的相似性特征,关注局部邻域信息以降低噪声影响,适用于时间序列或空间序列数据。文中通过模拟数据示例展示了算法的具体实现过程,并总结了其在气候研究和分子动力学等领域的广泛应用潜力。
124 0
DROPP算法详解:专为时间序列和空间数据优化的PCA降维方案
|
3月前
|
传感器 数据采集 人工智能
AI是如何收集体育数据的?从摄像头到算法,揭秘赛场背后的“数字间谍网“!
⚽ 你是否好奇:AI如何知道哈兰德每秒跑多快?教练的平板为何比裁判还清楚谁偷懒?本文揭秘AI收集体育数据的“黑科技”:视觉追踪、传感器网络、数据清洗与高阶分析。从高速摄像机捕捉梅西肌肉抖动,到GPS背心记录姆巴佩冲刺速度;从表情识别判断装伤,到量子计算模拟战术可能,AI正让体育更透明、精准。未来已来,2030年世界杯或将实现AI替代球探、裁判甚至教练!你认为AI数据收集算侵犯隐私吗?最想统计哪些奇葩指标?留言互动吧!
|
6月前
|
人工智能 编解码 算法
如何在Python下实现摄像头|屏幕|AI视觉算法数据的RTMP直播推送
本文详细讲解了在Python环境下使用大牛直播SDK实现RTMP推流的过程。从技术背景到代码实现,涵盖Python生态优势、AI视觉算法应用、RTMP稳定性及跨平台支持等内容。通过丰富功能如音频编码、视频编码、实时预览等,结合实际代码示例,为开发者提供完整指南。同时探讨C接口转换Python时的注意事项,包括数据类型映射、内存管理、回调函数等关键点。最终总结Python在RTMP推流与AI视觉算法结合中的重要性与前景,为行业应用带来便利与革新。
319 5
|
6月前
|
资源调度 算法 数据可视化
基于IEKF迭代扩展卡尔曼滤波算法的数据跟踪matlab仿真,对比EKF和UKF
本项目基于MATLAB2022A实现IEKF迭代扩展卡尔曼滤波算法的数据跟踪仿真,对比EKF和UKF的性能。通过仿真输出误差收敛曲线和误差协方差收敛曲线,展示三种滤波器的精度差异。核心程序包括数据处理、误差计算及可视化展示。IEKF通过多次迭代线性化过程,增强非线性处理能力;UKF避免线性化,使用sigma点直接处理非线性问题;EKF则通过一次线性化简化处理。
198 14
|
7月前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
237 12

热门文章

最新文章