• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    同等学历教学

    同等学历教学

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      同等学历教学

      同等学历教学

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      老俊俊的生信笔记

      • 首页
      • 博客
      • 老俊俊的生信笔记
      • 自己模仿画个– m6A distribution on transcript

      自己模仿画个– m6A distribution on transcript

      • 发布者 weinfoadmin
      • 分类 老俊俊的生信笔记
      • 日期 2021年9月10日
      • 评论 0评论

      感谢老俊俊的大力支持。我们会每日跟新,欢迎您关注老俊俊的生信笔记。

      1自己模仿画个– m6A distribution on transcript

      前不久看到一篇发表在 Cell Reports 抗病毒和m6A相关的文章

      Post-transcriptional regulation of antiviral gene expression by N6-methyladenosine

      通讯作者是 Stacy M. Horner ,杜克大学医学中心的分子遗传学和微生物学助理教授

      文章里有几个图挺好看的,图注是 Read coverage plots ,红色线代表 IP ,黑色代表 Input ,线周围都有各自颜色的区间代表生物学重复的方差,黄色区间是鉴定到的 m6A peak 区域。

      2尝试以下模仿这种类似的图行用 ggplot2 绘制一个。

      假如有四个比对排序好的 bam 文件四个,[ Input1、Input2、IP1、IP2 ] 。( bam文件是比对到转录组序列上的 )

      • 首先获得每个 bam 的测序深度
      # 生成的文件比较大,-a 参数表示输入每个位置的测序深度
      $ samtools depth -a Input1.bam Input2.bam IP1.bam IP2.bam > test_depth.txt
      # 查看生成的文件内容
      $ less test.txt
      NUDT4_ENSG00000173598_ENST00000337179_440_983_9753      1       0       0       0       0
      NUDT4_ENSG00000173598_ENST00000337179_440_983_9753      2       0       0       0       0
      NUDT4_ENSG00000173598_ENST00000337179_440_983_9753      3       0       0       0       0

      第一列:[基因名[-[gene id]-[transcript id]-[cds_start]-[cds_stop]
      第二列:转录本位置
      第三列至第五列:各个 bam 文件的测序 depth

      • 随便挑选个 METTL3 基因出来画
      $ grep 'METTL3' test_depth.txt > mettl3_depth.txt
      $ less
      METTL3_ENSG00000165819_ENST00000298717_117_1857_1980    1       0       0       1       2
      METTL3_ENSG00000165819_ENST00000298717_117_1857_1980    2       0       0       5       3
      METTL3_ENSG00000165819_ENST00000298717_117_1857_1980    3       0       0       9       4

      step1、接下来在 Rstudio 里操作

      # 读入数据
      mettl3_depth <- read.delim("C:/Users/admin/Desktop/mettl3_depth.txt", header=FALSE)
      # 取出 input 和 ip 组
      input <- mettl3_depth[,c(1,2,3,4)]
      ip <- mettl3_depth[,c(1,2,5,6)]
      # 计算均值和标准差
      input$mean <- apply(input[,c(3,4)], 1, mean)
      input$sd <- apply(input[,c(3,4)], 1, sd)
      input$samp <- 'Input'

      ip$mean <- apply(ip[,c(3,4)], 1, mean)
      ip$sd <- apply(ip[,c(3,4)], 1, sd)
      ip$samp <- 'Ip'
      colnames(ip)[3:4] <- c('V3','V4')
      # 合并
      p_dat <- rbind(ip,input)
      # 查看最后合并后的数据
      head(p_dat)
                                                          V1 V2 V3 V4 mean        sd samp
      1 METTL3_ENSG00000165819_ENST00000298717_117_1857_1980  1  1  2  1.5 0.7071068   Ip
      2 METTL3_ENSG00000165819_ENST00000298717_117_1857_1980  2  5  3  4.0 1.4142136   Ip
      3 METTL3_ENSG00000165819_ENST00000298717_117_1857_1980  3  9  4  6.5 3.5355339   Ip
      4 METTL3_ENSG00000165819_ENST00000298717_117_1857_1980  4  9  5  7.0 2.8284271   Ip
      5 METTL3_ENSG00000165819_ENST00000298717_117_1857_1980  5  9  6  7.5 2.1213203   Ip
      6 METTL3_ENSG00000165819_ENST00000298717_117_1857_1980  6  9  6  7.5 2.1213203   Ip

      step2、准备好数据后可以绘图了

      # 加载需要的R包
      library(ggplot2)
      library(ggprism)
      # 绘图
      p1 <- ggplot(p_dat,aes(x=V2,y=mean)) +
        geom_rect(aes(xmin=117,ymin=-Inf,xmax=1857,ymax=Inf),fill='grey95',alpha=.35) +
        geom_line(aes(color=samp),size=1) +
        theme_prism(border = T,base_size = 16,base_line_size=1) +
        xlab('') + ylab('Read Coverage') +
        labs(title = 'MeRIP-seq read Distribution') +
        #主题细节调整
        theme(axis.title.y = element_text(size = 18),
              plot.title = element_text(,hjust = .5,size = 18),
              legend.position = c(0.1,0.9),
              legend.background = element_blank(),
              legend.text = element_text(size = 14,face = 'bold'),
              legend.key.width = unit(1.5,'cm'),
              legend.key.height = unit(1,'cm')) +
        # 给线添加方差区间
        geom_ribbon(aes(ymin=mean - sd,ymax=mean + sd,fill=samp),alpha=.3,show.legend = F) +
        # 调整颜色
        scale_color_manual(values = c('black','red')) +
        scale_fill_manual(values = c('black','red')) +
        # 添加黄色高亮区域(文章里应该是m6a存在的peak区域),我这随便选两个
        geom_rect(aes(xmin=650,ymin=-Inf,xmax=750,ymax=Inf),fill='yellow',alpha=.002) +
        geom_rect(aes(xmin=1400,ymin=-Inf,xmax=1600,ymax=Inf),fill='yellow',alpha=.002)
        
      p1

      step3、接下来转录本的结构怎么画呢?这里还是使用 geom_rect 函数

      # 绘制转录本结构图
      p2 <- ggplot(p_dat,aes(x=V2,y=mean)) +
        # 绘制 5UTR 区
        geom_rect(aes(xmin=0,ymin=0.05,xmax=117,ymax=0.1),fill='grey50') +
        # 绘制 CDS 区
        geom_rect(aes(xmin=117,ymin=0.025,xmax=1857,ymax=0.125),fill='grey50') +
        # 绘制 3UTR 区
        geom_rect(aes(xmin=1857,ymin=0.05,xmax=1980,ymax=0.1),fill='grey50') +
        # 主题细节调整
        theme_classic() + xlab('METTL3') + ylab('') +
        theme_prism(border = F,base_size = 16) +
        scale_y_continuous(limits = c(0,0.2)) +
        theme(axis.line = element_line(colour = 'white'),
              axis.text  = element_text(colour = 'white'),
              axis.title.x = element_text(face = 'italic',vjust = 10),
              axis.ticks = element_line(colour = 'white')) +
        # 添加注释标签
        geom_text(aes(label="5'UTR",x=117/2,y=0.17),size=4) +
        geom_text(aes(label="CDS",x=(1857-117)/2 + 117,y=0.17),size=4) +
        geom_text(aes(label="3'UTR",x=(1980-1857)/2 + 1857,y=0.17),size=4)
        
      p2

      step4、拼图

      # 加载拼图的包
      library(patchwork)
      p1 + p2 + plot_layout(ncol = 1, heights = c(8, 1))

      emmm…,是不是有那个味道了,后续再 Ai 里稍微修一下就行了。

      3绘图后记

      阅读这篇文献的 STAR METHODS 部分,发现作者绘图用的是一个 CovFuzze 的 python 脚本做的

      githup 网址 :https://github.com/al-mcintyre/CovFuzze [1]

      安装方法:

      $ pip install covfuzze

      用法介绍:

      # required arguments:
        -o OUT, --out OUT     output prefix (incl. dir) 
        --bams BAMS [BAMS ...] 
                              bam files (separated by spaces) 
        --bed BED             bed file for region(s) of interest  
        -l LABELS [LABELS ...], --labels LABELS [LABELS ...] 
                              labels associated with bams - if replicates, use same 
                              labels
      # optional arguments:
        -h, --help            show this help message and exit 
        -g GENE, --gene GENE  gene name (default = GeneDoe) 
        --gtf GTF             gtf file for gene to plot cds as shaded regions separated by exon
        -p PEAKS, --peaks PEAKS 
                              bed file with peaks
        -n NSUBPLOTS, --nsubplots NSUBPLOTS 
                              number of subplots- bams will be split evenly based on 
                              the order given (default = 1) 
        --normalize           normalize by gene length/summed coverage (default = False)
        --scale               scale y axis separately for each subplot (default = False)

      用法示例:

      $ covfuzze -o ./zikvtest --bams zikv_test1.bam zikv_test2.bam --bed zikvPR.bed -l input input --gene zikvPR -n 1 

      出来的图是这样的

      我研究了以下并不是很懂他这个画图的具体原理是什么,应该是根据比对到基因组上的 bam 文件,使用提供的 bed 位置信息计数再画图,暂时还不知道这个脚本怎么把 5UTR、CDS、3UTR 分别计数再合并起来统计绘图的,此外一个基因含有多个转录本,这个怎么处理呢?

      大家感兴趣的可以去尝试一下。

      欢迎小伙伴留言评论!


      点击我留言!

      今天的分享就到这里了,敬请期待下一篇!

      最后欢迎大家分享转发,您的点赞是对我的鼓励和肯定!

      如果觉得对您帮助很大,打赏一下吧!

      参考资料

      [1]

      https://github.com/al-mcintyre/CovFuzze : https://github.com/al-mcintyre/CovFuzze


      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      shiny CountToTPM/FPKM
      2021年9月10日

      下一篇文章

      怎么把 shiny App 做成 exe 文件进行分发
      2021年9月10日

      你可能也喜欢

      8-1651542331
      跟着Nature学绘图(2) 箱线图-累积分布曲线图
      2 5月, 2022
      9-1651542322
      Julia 笔记之字符串
      2 5月, 2022
      0-1651542343
      Julia 笔记之数学运算和初等函数
      1 5月, 2022

      留言 取消回复

      要发表评论,您必须先登录。

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?