TwistTier4:1001-2000Oligos除去10%的NTC,实际上的容量是300个基因(包括两个reporter)
打折前:1,645.00USD
打折后:1,325.00USD
2024年09月17日
正式开始smallfocuslibraryscreen
LibraryMode
240genes6gRNApergene160NTC(240*6*10/9*10%)Half#No-SiteControls+half#IntergenicControls
addreportergRNAafterCRIPSRpick(hereismKate2)
checkall6mKate2gRNAintwoplasmids
getresultsfromCRISPRpickandcopygenenameandgRNAtothenewExcelfile
addgRNAforreporter
gototwisttomaketheorder
参考:/Users/zhixinli/PartnersHealthCareDropbox/ZhixinLi/LI-LAB-v0/MES-lab/CRISPRscreen
2024年09月06日
准备做一个focusedlibraryCRISPRscreen做一个强有力的验证。
ordertheoligosfromTwistCompany
2024年08月27日
后来在回家的路上我才慢慢意识到,samplesize的重要性,这个已经是genome-wide的screen了,与GWAS异曲同工,GWAS是population的数据,缺点是sample的异质性太强,所以需要很大的samplesize才能找到显著的hit。
回到CRISPRscreen,有时我们只有1vs1的样本数,最多的时候就是3vs3,虽然样本本身没有异质性,但CRISPR这套系统的异质性也很强,Cas9是否表达,侵染了到底几个gRNA?细胞间是否存在相互作用?测序深度是否足够?
所有这些不确定因素导致CRISPRscreen的结果非常dirty,SOX9和KRT20本身因为是直接的Target,所以富集也毫无意外,其他的间接的则没有那么明显。
所以,我的结论:目前该lab对CRISPRscreen的理解和掌控其实是在非常肤浅的程度,数据基本无法利用。
如果是我,我会首先无脑加大样本量,去掉所有复杂的设计(这套系统准确度根本就不高),直接来个20-50组mKateHigh和Low的两组,这样我才敢说有足够的power来产生足够可信的hit。
实验方向的优化也是可以的,只是更加的费时费力,需要精通实验的experts。
这个lab其实非常菜,大部分时候仅仅停留在能懂的层次,偶尔进入会做的层次,但远远没达到精通的地步,这就导致太理论化、理想化,复杂fancy的设计,出来的全是一堆狗屁不同的结果。
举几个例子:
2024年08月22日
这次算是彻底把CRISPRScreen的原理和数据搞清楚了,但也开始意识到数据的局限性,以及实验设计的重要性。
核心就是让Cas9在cellline/organoid里表达,然后把sgRNA库导入进细胞,一般是处理3-7天,然后收集特定的细胞(可以直接是viabilityorflowsorting),靶向扩增sgRNA,测序分析。
目前主要有两种readout:
建库时,一般为了省钱,都会pool在一起,然后拆分fastq。
然后用MAGeCKcount来生成每个sgRNA的readcount的table。
最后就是MAGeCK的rra或者mle来分析数据,处理的数据就是每个基因多个sgRNA,会综合考虑然后生成一个log2FC,然后生成Rank。
深度理解CRISPRScreen数据
在看原始数据的时候有很多tricky的地方,这个非常类似RNA-seq数据,连normalization都可以用CPM,不同的是一个gene有多个sgRNA。
稍微有点复杂的就是:
彻底搞懂之后,我发现CRISPRScreen很容易非常差,一些条件必须满足,否咋数据可信度很差:
有的分析取rank(P-value),有的取beta,有的就用log2FC。
我个人是觉得可信度不大,一个常识就是只有样本量足够大,RNA-seq的DEGP-value才有power。
这里的结果就只有一个样本,单样本DEG,你信吗?然后sgRNA数量多,数据参差不齐,出来的结果有个鬼的可信度。
有个做了3个replicate,还算比较合理。
关于SOX9和KRT20dualreporter
SOX9-》KRT20这个regulation本身是存在的,所以筛KRT20本身也会筛SOX9,反之则不成立。
数据分析参考:projects/SOX9_KRT20_CRISPR_Screen/whole_genome_CRISPR_screen.ipynb
分析工具:
Paper参考:
可视化:
工具篇:MAGeCKFlute-IntegrativeanalysispipelineforpooledCRISPRfunctionalgeneticscreens
安装折腾了几个小时,debug核心,根据关键提示Google,筛选找到答案即可。
error:
Error:packageornamespaceloadfailedfor‘depmap’:.onLoadfailedinloadNamespace()for'depmap',details:call:(function(cond)error:errorinevaluatingtheargument'x'inselectingamethodforfunction'query':Failedtocollectlazytable.Causedbyerrorin`db_collect()`:!Argumentsin`...`mustbeused.Problematicargument:..1=InfDidyoumisspellanargumentnameError:loadingfailedExecutionhaltedERROR:loadingfailedSolved:downgradingdbplyrsolvesthisissue
devtools::install_version("dbplyr",version="2.3.4")
系统性的学习一下CRISPRscreen的数据分析
这次比较麻烦,需要从Undetermined的fastq开始,问题就是index是RC,当时没有考虑到。
自己做有点麻烦,如果直接用最短的index,会出现很多假阳性,所以必须extend。
index在read的header里,因为是dualindex,所以需要准备indexfastq,然后用工具提取即可,一晚上能搞完80G+80G的pairedfastqs。
fastq非常dirty,需要先trim一下,fastp一下,80G只剩下65G。【完全可以不做】下面的方法花里胡哨,其实没啥用。
Findatarfileintheabovelocation.Ithas12samplesfromHEK293Tandanexcelwithsampleinformation.
Itrimmedthereadsusingfastptoremoveadapters,poly-Gtailsandlow-qualitybases.IusedPEARtomergematepairstomakeasinglereadbasedondefaultoverlapparameters.
Thefastq.gzfilesyouhavenow,treatthemassingleendreadfiles.Ibelieveyouhavetheinzoliaguidefileforannotation,IsharedthesimplecsvforMAGECXinthesamefolder.WillkeepHT29datainthesamefolderonceIamdonepreprocessingit.
【可以略过,没必要做merge,知道有这么个工具就行】
其次就是merge,因为测序长度可能超过了insertsize,所以需要寻找overlap,然后merge,这个PEAR可以做。【bbmerge.sh也能做,但比较旧】
R1---------------------------><-------------------------R2
但PEAR会剩下很多unassembled的reads,这时候就用BBtools合并一下,reformat.sh,就是粗暴的拼接。【reformat就是简单的cat,并不是RC后paste】
reformat.shin1=sample_R1.fq.gzin2=sample_R2.fq.gzout=sample.fq.gz
所以强制改了PEAR的参数,使用所有的reads,这样就不会有unassembled的reads了。
pear-n0-e-p1.0-v0-j20-fmerged.fq.unassembled.forward.fastq-rmerged.fq.unassembled.reverse.fastq-ounassembled
搞完之后,就可以跑MAGeCK的pipeline了。
condacreate-cbioconda-ncrispr_screenmageckcondaactivatecrispr_screencondaupdatemageck
可以直接用pairedfastq
mageckcount-llibrary.txt-nprefix--sample-labelA,B,C,D--fastqA_1.fq.gzB_1.fq.gzC_1.fq.gzD_1.fq.gz--fastq-2A_2.fq.gzB_2.fq.gzC_2.fq.gzD_2.fq.gz
首先要准备cas12_library_all.csv文件
这次的cas12lib比较特殊,是四个20bp的sgRNA被拼接成了一个sgRNA,我试了用bowtie2和hisat2去比对到全长sgRNA,基本是0比对。
condainstallbioinfo::hisatcondainstallbioconda::hisat2hisat2-build../library_ref.fastagRNA_refhisat2-p15-t--very-sensitive\-x/home/zz950/projects/demultiplexing/demultiplexed/sgRNA_ref/gRNA_ref\-1fastq/D7_1uM_1_1.fq\-2fastq/D7_1uM_1_2.fq\-SD7_1uM_1.sam2>D7_1uM_1.GenomeMapStat.xlsbowtie2-build../bowtie2_ref.fastagRNA_refbowtie2-x/home/zz950/projects/demultiplexing/demultiplexed/sgRNA_ref_bowtie2/gRNA_ref-1fastq/D7_1uM_1_1.fq-2fastq/D7_1uM_1_2.fq-p15-SD7_1uM_1.sam
所以不得不拆分成四个sgRNA,然后继续用mageck来分析
mageck说是可以用fastq2,其实基本所有的信息都在fastq1里面,用了pairedfastq反而会报错。
我们的样本
D7_1uM_1D7_1uM_2D7_DMSO_1D7_DMSO_2D2_DMSO_1D2_DMSO_2D2_0.1uM_1D2_0.1uM_2Plasmid
一行命令搞定:
mageckcount-l../cas12_library_all.csv-nresults/all.cas12--sample-labelD7_1uM_1,D7_1uM_2,D7_DMSO_1,D7_DMSO_2,D2_DMSO_1,D2_DMSO_2,D2_0.1uM_1,D2_0.1uM_2,Plasmid--fastqD7_1uM_1_1.fqD7_1uM_2_1.fqD7_DMSO_1_1.fqD7_DMSO_2_1.fqD2_DMSO_1_1.fqD2_DMSO_2_1.fqD2_0.1uM_1_1.fqD2_0.1uM_2_1.fqPlasmid_1.fq#用了会报错--fastq-2D7_1uM_1_2.fqD7_1uM_2_2.fqD7_DMSO_1_2.fqD7_DMSO_2_2.fqD2_DMSO_1_2.fqD2_DMSO_2_2.fqD2_0.1uM_1_2.fqD2_0.1uM_2_2.fqPlasmid_2.fq
对每个样本单独做也行
mageckcount-l../cas12_library_all.csv-nresults/D7_1uM_1--sample-labelD7_1uM_1--fastqD7_1uM_1_1.fqmageckcount-l../cas12_library_all.csv-nresults/D7_1uM_2--sample-labelD7_1uM_2--fastqD7_1uM_2_1.fq--fastq-2D7_1uM_2_2.fqmageckcount-l../cas12_library_all.csv-nresults/D7_DMSO_1--sample-labelD7_DMSO_1--fastqD7_DMSO_1_1.fq--fastq-2D7_DMSO_1_2.fqmageckcount-l../cas12_library_all.csv-nresults/D7_DMSO_2--sample-labelD7_DMSO_2--fastqD7_DMSO_2_1.fqmageckcount-l../cas12_library_all.csv-nresults/D2_DMSO_1--sample-labelD2_DMSO_1--fastqD2_DMSO_1_1.fq--fastq-2D2_DMSO_1_2.fqmageckcount-l../cas12_library_all.csv-nresults/D2_DMSO_2--sample-labelD2_DMSO_2--fastqD2_DMSO_2_1.fqmageckcount-l../cas12_library_all.csv-nresults/D2_0.1uM_1--sample-labelD2_0.1uM_1--fastqD2_0.1uM_1_1.fqmageckcount-l../cas12_library_all.csv-nresults/D2_0.1uM_2--sample-labelD2_0.1uM_2--fastqD2_0.1uM_2_1.fqmageckcount-l../cas12_library_all.csv-nresults/Plasmid--sample-labelPlasmid--fastqPlasmid_1.fq--fastq-2Plasmid_2.fq
OK,得到countmatrix了,可以做下游分析了。
讨论之后,发现必须要用top2gRNA作为construct,来计数。count也没有减少多少。
mageckcount-l../cas12_library_top2.csv-nresults/all.top2.cas12--sample-labelD7_1uM_1,D7_1uM_2,D7_DMSO_1,D7_DMSO_2,D2_DMSO_1,D2_DMSO_2,D2_0.1uM_1,D2_0.1uM_2,Plasmid--fastqD7_1uM_1_1.fqD7_1uM_2_1.fqD7_DMSO_1_1.fqD7_DMSO_2_1.fqD2_DMSO_1_1.fqD2_DMSO_2_1.fqD2_0.1uM_1_1.fqD2_0.1uM_2_1.fqPlasmid_1.fq
magecktest-kall.top2.cas12.count.merge.txt-tD7_1uM-cD7_DMSO-nD7_compmagecktest-kall.top2.cas12.count.merge.txt-tD2_0.1uM-cD2_DMSO-nD2_comp
但因为我们的plasmid数据不行,暂时就不对比了。
下游分析代码:projects/demultiplexing/demultiplexed/cas12_SOX9_dTAG_CRISPR_screen.ipynb
从novogene得到了新的demultiplexing数据,对比了一下,数据量差不多,但是还是以他们为金标准,重新分析一遍吧,也挺快的。
mageckcount-l../../cas12_library_top2.csv-nresults/all.2gRNA.cas12--sample-labelD7_1uM_1,D7_1uM_2,D7_DMSO_1,D7_DMSO_2,D2_DMSO_1,D2_DMSO_2,D2_0.1uM_1,D2_0.1uM_2--fastqD7_1uM_R1_1.fqD7_1uM_R2_1.fqD7_DMSO_R1_1.fqD7_DMSO_R2_1.fqD2_DMSO_R1_1.fqD2_DMSO_R2_1.fqD2_100nM_R1_1.fqD2_100nM_R2_1.fq#--fastq-2D7_1uM_R1_2.fqD7_1uM_R2_2.fqD7_DMSO_R1_2.fqD7_DMSO_R2_2.fqD2_DMSO_R1_2.fqD2_DMSO_R2_2.fqD2_100nM_R1_2.fqD2_100nM_R2_2.fqmagecktest-kall.2gRNA.cas12.count.merge.txt-tD7_1uM-cD7_DMSO-nD7_compmagecktest-kall.2gRNA.cas12.count.merge.txt-tD2_0.1uM-cD2_DMSO-nD2_comp
mageckcount-l../../cas12_library_top2.csv-nresults/all.2gRNA.cas12--sample-labelD7_1uM_1,D7_1uM_2,D7_DMSO_1,D7_DMSO_2,D2_DMSO_1,D2_DMSO_2,D2_0.1uM_1,D2_0.1uM_2,Plasmid--fastqD7_1uM_R1_1.fqD7_1uM_R2_1.fqD7_DMSO_R1_1.fqD7_DMSO_R2_1.fqD2_DMSO_R1_1.fqD2_DMSO_R2_1.fqD2_100nM_R1_1.fqD2_100nM_R2_1.fqInzolia_Plasmid_1.fq#--fastq-2D7_1uM_R1_2.fqD7_1uM_R2_2.fqD7_DMSO_R1_2.fqD7_DMSO_R2_2.fqD2_DMSO_R1_2.fqD2_DMSO_R2_2.fqD2_100nM_R1_2.fqD2_100nM_R2_2.fq
CRISRP共同量测序分为阳性筛选和阴性筛选。
阳性筛选指施加一定的筛选压力,经文库扰动后野生型细胞致死,仅有获得抗性的细胞存活。
MAGeCKisdesignedtoidentifypositivelyandnegativelyselectedsgRNAsandgenesingenome-scaleCRISPR/Cas9knockoutexperiments.
Genesarerankedbythep.negfield(bydefault).
结果解读
Outputfilespecification
两种不同的compare方法
magecktest-kall.2gRNA.cas12.count.merge.txt-tD7_1uM-cD7_DMSO-nD7_compmagecktest-kall.2gRNA.cas12.count.merge.txt-tD2_0.1uM-cD2_DMSO-nD2_compmageckmle-kall.2gRNA.cas12.count.merge.txt-dD2_designmatrix.txt-nD2_mle_compmageckmle-kall.2gRNA.cas12.count.merge.txt-dD7_designmatrix.txt-nD7_mle_comp
第一种rra就是肯定有两种结果,一是positive,一是negative;
第二种就是mle,只有一个beta,出来的火山图比较奇怪,可以对比一下;