项目目的
利用CBE的碱基编辑能将正常氨基酸密码子转换成终止密码子的性能,设计出针对人类、猪、小鼠的全部基因的CBE-STOP芯片。通过TRAP系统的细胞内测试,检测分析所有gRNA介导的STOP效率,最终建立人类、猪、小鼠的CBE-STOP的gRNA效率数据库,供做base-editing相关研究的科研人员使用。
算法
- 找出human、pig、mouse的所有已知基因及其全长序列,建立3个基因数据集(所有protein coding gene,不包含非编码RNA基因),这里直接使用物种的exon序列即可;
- 提取所有基因的前3个exon,如果只有1-3个exon的,保留所有exon(需要过滤掉在UTR上的外显子,还需要过滤掉外显子长度小于23bp的);
- 找出前3个外显子中所有正义和反义链上的gRNA(20 bp序列).
- 做一定程度的过滤:
- 去除23bp中有BsmBI(5‘-CGTCTC-3‘,5‘-GAGACG-3‘)酶切位点的gRNA
- 去除23bp中有4个及以上连续T的gRNA
- GC content(20bp)在40%~90%之间
- 记录脱靶数目
- 在每条剩余的gRNA(4-8)bp序列上寻找CGA,CAG,CAA,TGG(反向互补),并判断其是否为潜在的综止密码子
- 组装
具体实现步骤
step_1
过滤外显子,从Ensembl上获取所有编码基因的所有外显子序eg:AllExonSeq.fa
,外显子信息eg:AllExonInfo.txt
首先从信息文件入手,每个外显子去除UTR部分同时要保证序列长度是大于23bp的并且只保留前3个外显子并和序列merge在一起
首先,用R简单过滤信息表格较为方便
library(readr) |
然后,用python脚本读取fasta序列,并利用pandas库和信息表整合
import pandas as pd |
step_2
exon序列小调
这里获取的序列如果是反向序列的话,就会造成后期寻找gRNA的不便,为此,我们先把所有的exon序列转换为统一的方向
import pandas as pd |
接着,外显子序列数目巨大,很难放在一起寻找gRNA,因此,我们先将该序列拆分,每分留6000条序列
seqkit split2 allexoninzhengliantop3.fa -s 6000 -f |
事实证明,做这一步反而让后面的分析变得麻烦了
step_3
运行FlashFry软件发现所有的gRNA并打分,
首先,要在ENSEMBL上下载完整的HG38基因组并构建索引
axel -n 50 ftp://ftp.ensembl.org/pub/release-100/fasta/homo_sapiens/dna/Homo_sapiens.GRCh38.dna_sm.primary_assembly.fa.gz |
然后,分别对10份序列设计gRNA并打分
java -Xmx10g -jar /dellfsqd2/ST_LBI/USER/panxiaoguang/app/FlashFry/bin/flashfry \ |
step_4
对打分结果做初步过滤,主要包括GC含量,BSMB1位点,4个以上连续T
用R语言内置函数对数据表过滤很方便,这里额外获取了gRNA的基因,正负链以及在基因组上的位置信息
library(readr) |
step_5
最后一步过滤,要求在gRNA4-8bp空间内具有stop位点,这里采用python脚本去下载好的ATG开头的CDS基因集中反向MAP,正反向 ** (这里的正反向不是基因的正反向,而是gRNA和cds方向的一致性,如果基因在正链上,那么gRNA正向设计的为顺,反向设计为逆;如果基因在负链上,那么gRNA正向设计的为逆,反向设计为顺) ** gRNA要分别运算,最后获取可用的gRNA和其对应的stop 位点。
为了加速最后一步过滤,分成三步完成,最核心的一步采用pypy
step_1.py
import pandas as pd |
step_2.py
import re |
step_3.py
import pandas as pd |
最后整合的shell为:
|
组装
library(readr) |