diff --git a/2021/09/11/bioinfo_synteny_WGDI/index.html b/2021/09/11/bioinfo_synteny_WGDI/index.html index e442a6273c..199badbffb 100644 --- a/2021/09/11/bioinfo_synteny_WGDI/index.html +++ b/2021/09/11/bioinfo_synteny_WGDI/index.html @@ -32,8 +32,8 @@ - + @@ -666,8 +666,8 @@

- + diff --git a/2021/10/29/bioinfo_align_pep2cds/index.html b/2021/10/29/bioinfo_align_pep2cds/index.html index 9306cd2a54..c8a4b8f2e3 100644 --- a/2021/10/29/bioinfo_align_pep2cds/index.html +++ b/2021/10/29/bioinfo_align_pep2cds/index.html @@ -33,8 +33,8 @@ - + @@ -418,8 +418,8 @@

- + diff --git a/2021/11/27/bioinfo_synteny_MCScanX/index.html b/2021/11/27/bioinfo_synteny_MCScanX/index.html index 3ee593aa41..b39d3d0da7 100644 --- a/2021/11/27/bioinfo_synteny_MCScanX/index.html +++ b/2021/11/27/bioinfo_synteny_MCScanX/index.html @@ -33,10 +33,10 @@ + - @@ -591,10 +591,10 @@

+ - diff --git a/2022/03/22/omics_genome_submit/index.html b/2022/03/22/omics_genome_submit/index.html index 61129aab82..1e1b625c45 100644 --- a/2022/03/22/omics_genome_submit/index.html +++ b/2022/03/22/omics_genome_submit/index.html @@ -534,7 +534,7 @@

genomes@ncbi.nlm.nih.gov)让帮忙修改这个错误。 +
  • 建议重跑table2asn,报错持续存在就写邮件把sample.sqn和运行的命令行发给NCBI(genomes@ncbi.nlm.nih.gov)让帮忙修改这个错误。
  • SEQ_FEAT.BadInternalCharacter
      diff --git a/2022/06/16/bioinfo_fileformat_gb2tbl/index.html b/2022/06/16/bioinfo_fileformat_gb2tbl/index.html index 35ed6d1b2f..0446492597 100644 --- a/2022/06/16/bioinfo_fileformat_gb2tbl/index.html +++ b/2022/06/16/bioinfo_fileformat_gb2tbl/index.html @@ -31,8 +31,8 @@ - + @@ -470,8 +470,8 @@


      diff --git a/css/main.css b/css/main.css index e191872da0..31e83744c8 100644 --- a/css/main.css +++ b/css/main.css @@ -1197,7 +1197,7 @@ pre .javascript .function { } .links-of-author a::before, .links-of-author span.exturl::before { - background: #38050d; + background: #99cd90; border-radius: 50%; content: ' '; display: inline-block; diff --git a/search.xml b/search.xml index 92ddfadd27..0640d32db3 100644 --- a/search.xml +++ b/search.xml @@ -699,116 +699,6 @@ BiocManager的版本与R版本一一对应,安装时如果版本不对会有 VennDiagram - - 批量计算Ka和Ks - /2022/09/07/bioinfo_Ks_batch.calculation.Ks/ -
  • - -

    1. ParaAT

    参考blog.ParaAT:https://yanzhongsino.github.io/2021/10/29/bioinfo_align_pep2cds/

    -

    2. KaKs_Calculator 2.0

    KaKs_Calculator 2.0工具包包含了17种计算Ka和Ks的方法,包含Gamma系列,并可识别基于蛋白编码序列的滑动窗口,基于C++和Java,在Windows和Linux平台都可使用。

    -

    3. Ka和Ks计算

    -

    用还会用到两个脚本:

    - -

    4. 软件准备

      -
    1. 安装ParaAT.pl
    2. -
    - -
    wget ftp://download.big.ac.cn/bigd/tools/ParaAT2.0.tar.gz
    tar -zxf ParaAT2.0.tar.gz
    cd ParaAT2.0
    ParaAT.pl -h
    - -
      -
    1. 安装KaKs_Calculator2.0
      KaKs_Calculator2.0下载地址:https://sourceforge.net/projects/kakscalculator2/?source=typ_redirect
    2. -
    -
    wget https://altushost-swe.dl.sourceforge.net/project/kakscalculator2/KaKs_Calculator2.0.tar.gz
    tar -zxf KaKs_Calculator2.0.tar.gz
    chmod 777 ./KaKs_Calculator2.0/bin/Linux/KaKs_Calculator
    chmod 777 ./KaKs_Calculator2.0/src/AXTConvertor
    - - -

    5. 文件准备

    ParaAT.pl需要三个输入文件,参考blog.ParaAT:https://yanzhongsino.github.io/2021/10/29/bioinfo_align_pep2cds/

    -
      -
    1. sample.id
    2. -
    - -
      -
    1. cds.fa
    2. -
    - -
      -
    1. pep.fa
    2. -
    - -

    6. 操作步骤

    6.1. 用ParaAT获取基因对比对序列

    ParaAT比对sample.id指定的基因对的氨基酸序列,并转化成比对的CDS序列,并可指定输出为axt格式。

    -
      -
    1. 命令
    2. -
    -
    echo "24" >proc #指定ParaAT.pl使用线程
    ParaAT.pl -g -t -h sample.id -n cds.fa -a pep.fa -m mafft -p proc -f axt -o sample.paraat 2> paraat.log & #用ParaAT.pl调用mafft做每对基因的蛋白比对,并把蛋白比对转化成cds比对,输出axt格式。-g移除比对有gap的密码子,-t移除mismatched codons;-o指定生成目录;
    - -
      -
    1. notes
    2. -
    - -

    6.2. 用KaKs_Calculator计算基因对的Ka、Ks和4dtv值

    ParaAT.pl的-k参数只能指定KaKs_Calculator的MA模型计算kaks值,如果需要指定其他的模型,则可以手动运行计算。

    -

    KaKs_Calculator可计算比对好的CDS序列的Ka和Ks。

    -
      -
    1. 计算Ka和Ks
    2. -
    - -
      -
    1. 计算4dtv
    2. -
    - -
      -
    1. 合并和整理结果
    2. -
    - -

    7. references

      -
    1. ParaAT paper:https://www.sciencedirect.com/science/article/pii/S0006291X12003518
    2. -
    3. KaKs_Calculator2.0 github:https://github.com/kullrich/kakscalculator2
    4. -
    5. KaKs_Calculator2.0 paper:https://www.sciencedirect.com/science/article/pii/S1672022910600083?via%3Dihub
    6. -
    -
    - -]]> - - bioinfo - Ks - - - Ks - Ka - 4dtv - ParaAT - KaKs_Calculator - - 鉴定全基因复制事件(WGD)后保留的复制基因 /2022/10/18/bioinfo_WGD_geneRetention/ @@ -1311,6 +1201,116 @@ BiocManager的版本与R版本一一对应,安装时如果版本不对会有 trimAl + + 批量计算Ka和Ks + /2022/09/07/bioinfo_Ks_batch.calculation.Ks/ + + +

    1. ParaAT

    参考blog.ParaAT:https://yanzhongsino.github.io/2021/10/29/bioinfo_align_pep2cds/

    +

    2. KaKs_Calculator 2.0

    KaKs_Calculator 2.0工具包包含了17种计算Ka和Ks的方法,包含Gamma系列,并可识别基于蛋白编码序列的滑动窗口,基于C++和Java,在Windows和Linux平台都可使用。

    +

    3. Ka和Ks计算

    +

    用还会用到两个脚本:

    + +

    4. 软件准备

      +
    1. 安装ParaAT.pl
    2. +
    + +
    wget ftp://download.big.ac.cn/bigd/tools/ParaAT2.0.tar.gz
    tar -zxf ParaAT2.0.tar.gz
    cd ParaAT2.0
    ParaAT.pl -h
    + +
      +
    1. 安装KaKs_Calculator2.0
      KaKs_Calculator2.0下载地址:https://sourceforge.net/projects/kakscalculator2/?source=typ_redirect
    2. +
    +
    wget https://altushost-swe.dl.sourceforge.net/project/kakscalculator2/KaKs_Calculator2.0.tar.gz
    tar -zxf KaKs_Calculator2.0.tar.gz
    chmod 777 ./KaKs_Calculator2.0/bin/Linux/KaKs_Calculator
    chmod 777 ./KaKs_Calculator2.0/src/AXTConvertor
    + + +

    5. 文件准备

    ParaAT.pl需要三个输入文件,参考blog.ParaAT:https://yanzhongsino.github.io/2021/10/29/bioinfo_align_pep2cds/

    +
      +
    1. sample.id
    2. +
    + +
      +
    1. cds.fa
    2. +
    + +
      +
    1. pep.fa
    2. +
    + +

    6. 操作步骤

    6.1. 用ParaAT获取基因对比对序列

    ParaAT比对sample.id指定的基因对的氨基酸序列,并转化成比对的CDS序列,并可指定输出为axt格式。

    +
      +
    1. 命令
    2. +
    +
    echo "24" >proc #指定ParaAT.pl使用线程
    ParaAT.pl -g -t -h sample.id -n cds.fa -a pep.fa -m mafft -p proc -f axt -o sample.paraat 2> paraat.log & #用ParaAT.pl调用mafft做每对基因的蛋白比对,并把蛋白比对转化成cds比对,输出axt格式。-g移除比对有gap的密码子,-t移除mismatched codons;-o指定生成目录;
    + +
      +
    1. notes
    2. +
    + +

    6.2. 用KaKs_Calculator计算基因对的Ka、Ks和4dtv值

    ParaAT.pl的-k参数只能指定KaKs_Calculator的MA模型计算kaks值,如果需要指定其他的模型,则可以手动运行计算。

    +

    KaKs_Calculator可计算比对好的CDS序列的Ka和Ks。

    +
      +
    1. 计算Ka和Ks
    2. +
    + +
      +
    1. 计算4dtv
    2. +
    + +
      +
    1. 合并和整理结果
    2. +
    + +

    7. references

      +
    1. ParaAT paper:https://www.sciencedirect.com/science/article/pii/S0006291X12003518
    2. +
    3. KaKs_Calculator2.0 github:https://github.com/kullrich/kakscalculator2
    4. +
    5. KaKs_Calculator2.0 paper:https://www.sciencedirect.com/science/article/pii/S1672022910600083?via%3Dihub
    6. +
    +
    + +]]>
    + + bioinfo + Ks + + + Ks + Ka + 4dtv + ParaAT + KaKs_Calculator + +
    蛋白质比对转换成CDS比对 —— ParaAT,PAL2NAL /2021/10/29/bioinfo_align_pep2cds/ @@ -1398,8 +1398,8 @@ BiocManager的版本与R版本一一对应,安装时如果版本不对会有 biosoft tutorial - ParaAT sequence alignment + ParaAT protein CDS PAL2NAL @@ -1933,210 +1933,15 @@ BiocManager的版本与R版本一一对应,安装时如果版本不对会有 - 富集分析:(五)clusterProfiler:Visualization - /2022/04/28/bioinfo_enrichment_clusterProfiler.visualization/ - - -

    (全文约4000字)

    -

    clusterProfiler相关的博客共有三篇,共同食用,效果更好 :wink: :

    - -

    1. 可视化的输入数据

    clusterProfiler的可视化一般只支持clusterProfiler富集分析结果的可视化,通过认识clusterProfiler可视化接受的输入数据的格式,可以修改其他富集分析结果文件的格式,来用clusterProfiler进行可视化绘图。

    -

    1.1. 可视化输入数据格式

      -
    1. 查看ego格式
      clusterProfiler的可视化包接受的输入数据是前面富集分析得到的结果(比如ego/kk),用str(ego)class(ego)可以看到ego的格式是叫enrichResult的R的数据类型。
      library(clusterProfiler)
      > class(ego) #查看ego的数据类型/类
      [1] "enrichResult"
      attr(,"package")
      [1] "DOSE"
    2. -
    -

    如果手头没有ego数据,可以用clusterProfiler的样例数据快速得到一个edo,与ego格式一样。

    -
    library(clusterProfiler)
    data(geneList) #导入示例数据
    de <- names(geneList)[abs(geneList) > 2] #得到差异表达的基因
    edo <- enrichDGN(de) #进行富集分析
    class(ego) #查看edo的数据类型/类
    + 富集分析:(一)概述 + /2021/11/12/bioinfo_enrichment_intro/ + -
      -
    1. enrichResult(R的class类型)格式
      在DOSE包中查到,enrichResult具体格式如下:

      -
      setClass("enrichResult",
      representation=representation(
      result = "data.frame",
      pvalueCutoff = "numeric",
      pAdjustMethod = "character",
      qvalueCutoff = "numeric",
      organism = "character",
      style="margin: 0px; padding: 0px; color: rgb(221, 17, 68);">"character",
      gene = "character",
      keytype = "character",
      universe = "character",
      gene2Symbol = "character",
      geneSets = "list",
      readable = "logical"
      ),
      prototype=prototype(readable = FALSE)
      )
      +

      (全文约​6600字)

      +

      1. 富集分析

      1.1. 富集分析概念

        +
      1. 富集分析
        富集分析,本质上是对数据的分布检验,如果分布集中在某个区域,则认为富集。
        常用的分布检验方法有卡方检验、Fisher精确检验以及KS检验等方法。

      2. -
      3. result变量格式
        enrichResult中最重要的是result,是储存富集结果的dataframe。
        result变量与clusterProfiler富集分析中保存ego的结果文件是一致的。

        -
      4. -
      -
      ego@result[c(13,14),] #查看ego的result变量的13,14行
      ONTOLOGY ID Description GeneRatio BgRatio pvalue p.adjust qvalue geneID Count
      13 BP GO:0010051 xylem and phloem pattern formation 3/349 129/16975 1.431350e-05 0.001294821 0.001099880 mc40782/mc40784/mc40918 3
      14 BP GO:0048598 embryonic morphogenesis 2/349 131/16975 1.673394e-05 0.001405651 0.001194023 mc40784/mc40918 2
      - -

      一般而言result有9列。这里因为用enrichGO富集时ont参数选择ALL,结果就会在第一列前多一列ONTOLOGY。

      -
        -
      • 第一列是ID,也就是富集通路的编号(GO:0010222);
      • -
      • 第二列是Description,也就是富集通路的名称;
      • -
      • 第三列是GeneRatio,也就是要富集的基因中在对应通路中的比例;
      • -
      • 第4列是BgRation,也就是对应通过的基因在全基因组注释中的比例;
      • -
      • 第5,6,7列都是统计检验的结果;
      • -
      • 第8列是geneID,也就是富集到基因的名字,多个geneID是以斜线隔开的;
      • -
      • 第9列是Count,也就是富集到的基因数目。
      • -
      -

      1.2. 输入数据准备

      根据不同情况为clusterProfiler的可视化准备输入数据。

      -
        -
      1. 接着clusterProfiler富集分析做可视化
        如果是接着clusterProfiler的enrichGO(),gseGO(),enricher(),gseGO()等函数的结果ego,不要关闭R环境,在R里直接进行用于下一步可视化即可。

        -
      2. -
      3. 保存的clusterProfiler富集分析结果做可视化

        -
      4. -
      -
        -
      • 如果是clusterProfiler的enrichGO(),gseGO(),enricher(),gseGO()等函数的结果ego保存成的文件,已关闭R环境。
      • -
      • 可导入文件,新建enrichResult对象ego,再进行下一步可视化。
      • -
      • 这里假设用R命令write.table(as.data.frame(ego),"go_enrich.csv",sep="\t",row.names =F,quote=F)保存egogo_enrich.csv文件。
        data<-read.table("go_enrich.csv",sep="\t",header=T,quote="")
        head(data,2) #查看data前2行
        ONTOLOGY ID Description GeneRatio
        1 BP GO:0010222 stem vascular tissue pattern formation 12/349
        2 BP GO:0010588 cotyledon vascular tissue pattern formation 12/349
        BgRatio pvalue p.adjust qvalue
        1 29/16975 1.792157e-13 2.107577e-10 1.790270e-10
        2 39/16975 1.122611e-11 6.600951e-09 5.607145e-09
        geneID
        1 mc11300/mc11301/mc19080/mc19081/mc26300/mc31693/mc37850/mc40780/mc40781/mc40782/mc40784/mc40918
        2 mc11300/mc11301/mc19080/mc19081/mc26300/mc31693/mc37850/mc40780/mc40781/mc40782/mc40784/mc40918
        Count
        1 12
        2 12

        geneID_all <- unlist(apply(as.matrix(data$geneID),1,function(x) unlist(strsplit(x,'/')))) #得到富集到的所用geneID

        ego<-new("enrichResult", result=data, gene=geneID_all, pvalueCutoff=0.01,pAdjustMethod="BH",qvalueCutoff=0.05,ontology="BP",keytype="GID",universe='Unknown',geneSets=list(),organism="Unknown",readable=FALSE) #把data内容赋值给ego的result,geneID_all赋值给gene,每个富集到的GO对应的gene集应该赋值给geneSets(数据是字典(键值对是GOID和geneIDs)组成的列表,这里直接给了空的),ontology与enrichGO分析的ont参数一致,这里的pvalueCutoff=0.01,pAdjustMethod="BH",qvalueCutoff=0.05根据富集分析参数的设置,或者随意设置或者不设置也不会影响可视化。
      • -
      -
        -
      1. 其他来源富集分析结果可视化
        如果是其他软件的富集分析结果,可以根据ego的result变量格式进行修改格式,改成go_enrich.csv相同的格式的文件,再按照上面的步骤导入文件,并保存到新建的ego对象。即可用clusterProfiler的可视化包可视化其他软件的富集分析结果了。
      2. -
      -

      2. 功能富集结果可视化

      下面的可视化大多基于在R中已获得富集分析的结果ego。

      -

      2.1. enrichplot包

      enrichplot包有几种可视化方法来解释富集结果,支持clusterProfiler获得的ORA和GSEA富集结果。

      -

      2.1.1. 安装和载入

      安装和载入enrichplot包

      -
      BiocManager::install("enrichplot")
      library(enrichplot)
      - -

      2.1.2. 可视化包

        -
      • 推荐dotplot或barplot可视化前10个GO Terms条目。
      • -
      • 推荐goplot有向无环图查看富集的GO Terms间的关系。
      • -
      -
        -
      1. 可视化barplot —— 条形图
        将富集分数(例如p 值)和基因计数或比率描述为条形高度和颜色。横轴为该GO term下的差异基因个数,纵轴为富集到的GO Terms的描述信息, showCategory指定展示的GO Terms的个数为20个,默认展示显著富集的top10个,即p.adjust最小的10个。
      2. -
      -

      barplot(ego, showCategory=20, title="EnrichmentGO_MF")

      -

      使用mutate导出的其他变量也可以用作条形高度或颜色。

      -
      mutate(ego, qscore = -log(p.adjust, base=10)) %>% 
      barplot(x="qscore")
      - - - -

      Figure 1. Bar plot of enriched terms
      from clusterProfiler book

      -
        -
      1. 可视化dotplot —— 点阵图
        dotplot(edo, showCategory=30) + ggtitle("dotplot for ORA")
      2. -
      -

      dotplot(edo2, showCategory=30) + ggtitle("dotplot for GSEA")

      -

      散点图,横坐标为GeneRatio,纵坐标为富集到的GO Terms的描述信息,showCategory指定展示的GO Terms的个数,默认展示显著富集的top10个,即p.adjust最小的10个。

      - - -

      Figure 2. Dot plot of enriched terms
      from clusterProfiler book

      -
        -
      1. 可视化cnetplot —— 类别网络图
        cnetplot 将基因和生物学概念(例如 GO 术语或 KEGG 通路)的联系描述为一个网络(有助于查看哪些基因涉及富集通路和可能属于多个注释类别的基因)。对于基因和富集的GO terms之间的对应关系进行展示,如果一个基因位于一个GO Terms下,则将该基因与GO连线。图中灰色的点代表基因,黄色的点代表富集到的GO terms, 默认画top5富集到的GO terms, GO 节点的大小对应富集到的基因个数。
      2. -
      -

      cnetplot(ego, categorySize = "pvalue", foldChange = gene_list

      -
      ## convert gene ID to Symbol
      edox <- setReadable(ego, 'org.Hs.eg.db', 'ENTREZID')
      p1 <- cnetplot(edox, foldChange=geneList)
      ## categorySize can be scaled by 'pvalue' or 'geneNum'
      p2 <- cnetplot(edox, categorySize="pvalue", foldChange=geneList)
      p3 <- cnetplot(edox, foldChange=geneList, circular = TRUE, colorEdge = TRUE)
      cowplot::plot_grid(p1, p2, p3, ncol=3, labels=LETTERS[1:3], rel_widths=c(.8, .8, 1.2))
      - - - -

      Figure 3. Network plot of enriched terms
      from clusterProfiler book

      -
        -
      1. 可视化heatplot —— 类热图功能分类
        同样使用edox。
        heatplot类似cnetplot,而显示为热图的关系。
        如果用户想要显示大量重要术语,那么类别网络图可能会过于复杂。在heatplot能够简化结果和更容易识别的表达模式。
      2. -
      -
      p1 <- heatplot(edox, showCategory=5)
      p2 <- heatplot(edox, foldChange=geneList, showCategory=5)
      cowplot::plot_grid(p1, p2, ncol=1, labels=LETTERS[1:2])
      - - - -

      Figure 4. Heatmap plot of enriched terms
      from clusterProfiler book

      -
        -
      1. 可视化treeplot —— 树状图
        treeplot()函数执行丰富术语的层次聚类。它依赖于pairwise_termsim()函数计算的丰富项的成对相似性,默认情况下使用 Jaccard 的相似性指数 (JC)。如果支持,用户还可以使用语义相似度值(例如,GO、DO和MeSH)。
      2. -
      -

      默认聚合方法treeplot()是ward.D,用户可以通过hclust_method参数指定其他方法(例如,’average’、’complete’、’median’、’centroid’等。

      -

      treeplot()函数会将树切割成几个子树(由nCluster参数指定(默认为 5))并使用高频词标记子树。

      -
      edox2 <- pairwise_termsim(edox)
      p1 <- treeplot(edox2)
      p2 <- treeplot(edox2, hclust_method = "average")
      aplot::plot_list(p1, p2, tag_levels='A')
      - - - -

      Figure 5. Tree plot of enriched terms
      from clusterProfiler book

      -
        -
      1. 可视化emapplot —— 富集图
        对于富集到的GO terms之间的基因重叠关系进行展示,如果两个GO terms系的差异基因存在重叠,说明这两个节点存在overlap关系,在图中用线条连接起来。每个节点是一个富集到的GO term, 默认画top30个富集到的GO terms, 节点大小对应该GO terms下富集到的差异基因个数,节点的颜色对应p.adjust的值,从小到大,对应蓝色到红色。
      2. -
      -
      ego2 <- pairwise_termsim(ego)
      p1 <- emapplot(ego2)
      p2 <- emapplot(ego2, cex_category=1.5)
      p3 <- emapplot(ego2, layout="kk")
      p4 <- emapplot(ego2, cex_category=1.5,layout="kk")
      cowplot::plot_grid(p1, p2, p3, p4, ncol=2, labels=LETTERS[1:4])
      - - - -

      Figure 6. Plot for results obtained from hypergeometric test and gene set enrichment analysis. default (A), cex_category=1.5 (B), layout=”kk” (C) and cex_category=1.5,layout=”kk” (D).
      from clusterProfiler book

      -
        -
      1. 可视化upsetplot —— upset图
        upsetplot是cnetplot可视化基因和基因集之间复杂关联的替代方法。它强调不同基因集之间的基因重叠。
      2. -
      -

      upsetplot(ego)

      - - -

      Figure 7. Upsetplot for over-representation analysis.
      from clusterProfiler book

      -
        -
      1. 可视化ridgeplot —— 脊线图
        ridgeplot将可视化核心富集基因的表达分布为GSEA富集类别。它帮助用户解释上调/下调的途径。
      2. -
      -

      ridgeplot(ego)

      - - -

      Figure 8. Ridgeplot for gene set enrichment analysis.
      from clusterProfiler book

      -

      2.2. 可视化plotGOgraph/goplot —— 有向无环图

        -
      1. plotGOgraph(ego, firstSigNodes=10)
      2. -
      -
        -
      • 有向无环图(Directed acyclic graph, DAG),矩形代表富集到的top10个GO Terms,颜色从黄到红,对应p值从大到小。和topGO做富集分析的DAG图一样。
      • -
      -

      当enrichGO富集分析时ont参数选了ALL时,结果文件会在第一列前增加一列ONTOLOGY为子类,这时直接用于plotGOgraph画图会报错。
      试了下,下面两种方案还是会报错Error in if (!ont %in% c(“BP”, “MF”, “CC”)) { :argument is of length zero。。还是尽量在enrichGO分析时就用ont=”BP”吧。

      -
        -
      • 可以在结果文件中筛选出特定子类(比如BP)的结果行,并删除第一列ONTOLOGY后保存文件,再读进R用于plotGOgraph画图。
      • -
      • 也可以在R内用命令ego2<-ego%>%filter(ONTOLOGY== "BP")筛选BP子类,接着用ego3<-ego2%>%select(!ONTOLOGY)或者ego3<-ego2[,-1]删除第一列(即ONTOLOGY列),然后用plotGOgraph(ego3)作图。
      • -
      - - -

      Figure 9. DAG图
      from clusterProfiler blog

      -
        -
      1. goplot(ego, showCategory = 10)
      2. -
      -
        -
      • igraph布局方式的有向无环图
      • -
      - - -

      Figure 10. goplot的DAG图
      from clusterProfiler book

      -

      2.3. 可视化 —— wordcloud

      词云的方式显示结果

      -
      install.packages("wordcloud")
      library(wordcloud)
      wcdf <- read.table(text = ego$GeneRatio, sep = "/")[1]
      wcdf$term <- ego[,2]
      wordcloud(words = wcdf$term, freq = wcdf$V1, scale=(c(4, .1)), colors=brewer.pal(8, "Dark2"), max.words = 25)
      - - - -

      Figure 11. wordcloud词云图
      from NGS Analysis ebook

      -

      3. 导出可视化结果

        -
      1. Rstudio
      2. -
      -

      如果是在Rstudio中,可以直接看到绘图结果,导出需要的文件格式即可。

      -
        -
      1. 代码导出
        pdf("ego.pdf") #如果保存png,就改成png("ego.png")
        ego_fig<-barplot(x) #画图函数
        print(ego_fig) #画到pdf文件
        dev.off() #关闭pdf画板
      2. -
      -

      4. references

        -
      1. clusterProfiler github:https://github.com/YuLab-SMU/clusterProfiler
      2. -
      3. clusterProfiler paper:https://www.cell.com/the-innovation/fulltext/S2666-6758(21)00066-7?_returnURL=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS2666675821000667%3Fshowall%3Dtrue
      4. -
      5. clusterProfiler book:http://yulab-smu.top/biomedical-knowledge-mining-book/index.html
      6. -
      7. clusterProfiler manual:https://bioconductor.org/packages/devel/bioc/manuals/clusterProfiler/man/clusterProfiler.pdf
      8. -
      9. clusterProfiler ducumentation:https://guangchuangyu.github.io/software/clusterProfiler/documentation/
      10. -
      11. 其他来源结果可视化:https://cloud.tencent.com/developer/article/1613815
      12. -
      13. wordcloud:https://learn.gencore.bio.nyu.edu/rna-seq-analysis/over-representation-analysis/
      14. -
      -
      -
        -
      • 欢迎关注微信公众号:生信技工
      • -
      • 公众号主要分享生信分析、生信软件、基因组学、转录组学、植物进化、生物学概念等相关内容,包括生物信息学工具的基本原理、操作步骤和学习心得。
      • -
      - -]]> - - bioinfo - enrichment - - - gene set enrichment analysis - GSEA - enrichment analysis - over representation analysis - ORA - clusterProfiler - visualization - - - - 富集分析:(一)概述 - /2021/11/12/bioinfo_enrichment_intro/ - - -

      (全文约​6600字)

      -

      1. 富集分析

      1.1. 富集分析概念

        -
      1. 富集分析
        富集分析,本质上是对数据的分布检验,如果分布集中在某个区域,则认为富集。
        常用的分布检验方法有卡方检验、Fisher精确检验以及KS检验等方法。

        -
      2. -
      3. 生物信息学领域的富集分析
        背景基因集(N) 下获得 一组特定基因集(S) ,S可能是基因列表,表达图谱,基因芯片等形式。在预先构建好基因注释数据库(例如GO,KEGG等)已对背景基因集(N)根据生物功能或过程进行分类的前提下,通过统计学算法找出有那些显著区别于背景基因集(N)的类别(生物组成/功能/过程),或者找出这组特定基因集间在生物组成/功能/过程的共性,经过聚类后去除冗余得到基因富集结果的过程,即为富集分析。

        +
      4. 生物信息学领域的富集分析
        背景基因集(N) 下获得 一组特定基因集(S) ,S可能是基因列表,表达图谱,基因芯片等形式。在预先构建好基因注释数据库(例如GO,KEGG等)已对背景基因集(N)根据生物功能或过程进行分类的前提下,通过统计学算法找出有那些显著区别于背景基因集(N)的类别(生物组成/功能/过程),或者找出这组特定基因集间在生物组成/功能/过程的共性,经过聚类后去除冗余得到基因富集结果的过程,即为富集分析。

      可以这样简单理解富集分析在做什么。全国人口的户籍作为背景数据,我们通过富集分析可以知道相对于全国背景,客家人是不是明显在广东聚集。比如如果广东的客家人数/全国客家人数这个比值远超过广东人数/全国人数的比值,那么我们可以说客家人在广东是富集的。

      @@ -2427,15 +2232,212 @@ BiocManager的版本与R版本一一对应,安装时如果版本不对会有
    2. GO overview:http://geneontology.org/docs/ontology-documentation/
    3. KEGG:https://en.wikipedia.org/wiki/KEGG
    4. clusterProfiler github:https://github.com/YuLab-SMU/clusterProfiler
    5. -
    6. universal enrichment analysis using clusterProfiler:http://yulab-smu.top/biomedical-knowledge-mining-book/universal-api.html
    7. +
    8. universal enrichment analysis using clusterProfiler:http://yulab-smu.top/biomedical-knowledge-mining-book/universal-api.html
    9. +
    10. clusterProfiler paper:https://www.cell.com/the-innovation/fulltext/S2666-6758(21)00066-7?_returnURL=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS2666675821000667%3Fshowall%3Dtrue
    11. +
    +
    +
      +
    • 欢迎关注微信公众号:生信技工
    • +
    • 公众号主要分享生信分析、生信软件、基因组学、转录组学、植物进化、生物学概念等相关内容,包括生物信息学工具的基本原理、操作步骤和学习心得。
    • +
    +]]>
    + + bioinfo + enrichment + + + gene set enrichment analysis + GSEA + topGO + enrichment analysis + over representation analysis + ORA + clusterProfiler + KOBAS-i + GOEAST + +
    + + 富集分析:(五)clusterProfiler:Visualization + /2022/04/28/bioinfo_enrichment_clusterProfiler.visualization/ + + +

    (全文约4000字)

    +

    clusterProfiler相关的博客共有三篇,共同食用,效果更好 :wink: :

    + +

    1. 可视化的输入数据

    clusterProfiler的可视化一般只支持clusterProfiler富集分析结果的可视化,通过认识clusterProfiler可视化接受的输入数据的格式,可以修改其他富集分析结果文件的格式,来用clusterProfiler进行可视化绘图。

    +

    1.1. 可视化输入数据格式

      +
    1. 查看ego格式
      clusterProfiler的可视化包接受的输入数据是前面富集分析得到的结果(比如ego/kk),用str(ego)class(ego)可以看到ego的格式是叫enrichResult的R的数据类型。
      library(clusterProfiler)
      > class(ego) #查看ego的数据类型/类
      [1] "enrichResult"
      attr(,"package")
      [1] "DOSE"
    2. +
    +

    如果手头没有ego数据,可以用clusterProfiler的样例数据快速得到一个edo,与ego格式一样。

    +
    library(clusterProfiler)
    data(geneList) #导入示例数据
    de <- names(geneList)[abs(geneList) > 2] #得到差异表达的基因
    edo <- enrichDGN(de) #进行富集分析
    class(ego) #查看edo的数据类型/类
    + +
      +
    1. enrichResult(R的class类型)格式
      在DOSE包中查到,enrichResult具体格式如下:

      +
      setClass("enrichResult",
      representation=representation(
      result = "data.frame",
      pvalueCutoff = "numeric",
      pAdjustMethod = "character",
      qvalueCutoff = "numeric",
      organism = "character",
      style="margin: 0px; padding: 0px; color: rgb(221, 17, 68);">"character",
      gene = "character",
      keytype = "character",
      universe = "character",
      gene2Symbol = "character",
      geneSets = "list",
      readable = "logical"
      ),
      prototype=prototype(readable = FALSE)
      )
      +
    2. +
    3. result变量格式
      enrichResult中最重要的是result,是储存富集结果的dataframe。
      result变量与clusterProfiler富集分析中保存ego的结果文件是一致的。

      +
    4. +
    +
    ego@result[c(13,14),] #查看ego的result变量的13,14行
    ONTOLOGY ID Description GeneRatio BgRatio pvalue p.adjust qvalue geneID Count
    13 BP GO:0010051 xylem and phloem pattern formation 3/349 129/16975 1.431350e-05 0.001294821 0.001099880 mc40782/mc40784/mc40918 3
    14 BP GO:0048598 embryonic morphogenesis 2/349 131/16975 1.673394e-05 0.001405651 0.001194023 mc40784/mc40918 2
    + +

    一般而言result有9列。这里因为用enrichGO富集时ont参数选择ALL,结果就会在第一列前多一列ONTOLOGY。

    + +

    1.2. 输入数据准备

    根据不同情况为clusterProfiler的可视化准备输入数据。

    +
      +
    1. 接着clusterProfiler富集分析做可视化
      如果是接着clusterProfiler的enrichGO(),gseGO(),enricher(),gseGO()等函数的结果ego,不要关闭R环境,在R里直接进行用于下一步可视化即可。

      +
    2. +
    3. 保存的clusterProfiler富集分析结果做可视化

      +
    4. +
    + +
      +
    1. 其他来源富集分析结果可视化
      如果是其他软件的富集分析结果,可以根据ego的result变量格式进行修改格式,改成go_enrich.csv相同的格式的文件,再按照上面的步骤导入文件,并保存到新建的ego对象。即可用clusterProfiler的可视化包可视化其他软件的富集分析结果了。
    2. +
    +

    2. 功能富集结果可视化

    下面的可视化大多基于在R中已获得富集分析的结果ego。

    +

    2.1. enrichplot包

    enrichplot包有几种可视化方法来解释富集结果,支持clusterProfiler获得的ORA和GSEA富集结果。

    +

    2.1.1. 安装和载入

    安装和载入enrichplot包

    +
    BiocManager::install("enrichplot")
    library(enrichplot)
    + +

    2.1.2. 可视化包

    +
      +
    1. 可视化barplot —— 条形图
      将富集分数(例如p 值)和基因计数或比率描述为条形高度和颜色。横轴为该GO term下的差异基因个数,纵轴为富集到的GO Terms的描述信息, showCategory指定展示的GO Terms的个数为20个,默认展示显著富集的top10个,即p.adjust最小的10个。
    2. +
    +

    barplot(ego, showCategory=20, title="EnrichmentGO_MF")

    +

    使用mutate导出的其他变量也可以用作条形高度或颜色。

    +
    mutate(ego, qscore = -log(p.adjust, base=10)) %>% 
    barplot(x="qscore")
    + + + +

    Figure 1. Bar plot of enriched terms
    from clusterProfiler book

    +
      +
    1. 可视化dotplot —— 点阵图
      dotplot(edo, showCategory=30) + ggtitle("dotplot for ORA")
    2. +
    +

    dotplot(edo2, showCategory=30) + ggtitle("dotplot for GSEA")

    +

    散点图,横坐标为GeneRatio,纵坐标为富集到的GO Terms的描述信息,showCategory指定展示的GO Terms的个数,默认展示显著富集的top10个,即p.adjust最小的10个。

    + + +

    Figure 2. Dot plot of enriched terms
    from clusterProfiler book

    +
      +
    1. 可视化cnetplot —— 类别网络图
      cnetplot 将基因和生物学概念(例如 GO 术语或 KEGG 通路)的联系描述为一个网络(有助于查看哪些基因涉及富集通路和可能属于多个注释类别的基因)。对于基因和富集的GO terms之间的对应关系进行展示,如果一个基因位于一个GO Terms下,则将该基因与GO连线。图中灰色的点代表基因,黄色的点代表富集到的GO terms, 默认画top5富集到的GO terms, GO 节点的大小对应富集到的基因个数。
    2. +
    +

    cnetplot(ego, categorySize = "pvalue", foldChange = gene_list

    +
    ## convert gene ID to Symbol
    edox <- setReadable(ego, 'org.Hs.eg.db', 'ENTREZID')
    p1 <- cnetplot(edox, foldChange=geneList)
    ## categorySize can be scaled by 'pvalue' or 'geneNum'
    p2 <- cnetplot(edox, categorySize="pvalue", foldChange=geneList)
    p3 <- cnetplot(edox, foldChange=geneList, circular = TRUE, colorEdge = TRUE)
    cowplot::plot_grid(p1, p2, p3, ncol=3, labels=LETTERS[1:3], rel_widths=c(.8, .8, 1.2))
    + + + +

    Figure 3. Network plot of enriched terms
    from clusterProfiler book

    +
      +
    1. 可视化heatplot —— 类热图功能分类
      同样使用edox。
      heatplot类似cnetplot,而显示为热图的关系。
      如果用户想要显示大量重要术语,那么类别网络图可能会过于复杂。在heatplot能够简化结果和更容易识别的表达模式。
    2. +
    +
    p1 <- heatplot(edox, showCategory=5)
    p2 <- heatplot(edox, foldChange=geneList, showCategory=5)
    cowplot::plot_grid(p1, p2, ncol=1, labels=LETTERS[1:2])
    + + + +

    Figure 4. Heatmap plot of enriched terms
    from clusterProfiler book

    +
      +
    1. 可视化treeplot —— 树状图
      treeplot()函数执行丰富术语的层次聚类。它依赖于pairwise_termsim()函数计算的丰富项的成对相似性,默认情况下使用 Jaccard 的相似性指数 (JC)。如果支持,用户还可以使用语义相似度值(例如,GO、DO和MeSH)。
    2. +
    +

    默认聚合方法treeplot()是ward.D,用户可以通过hclust_method参数指定其他方法(例如,’average’、’complete’、’median’、’centroid’等。

    +

    treeplot()函数会将树切割成几个子树(由nCluster参数指定(默认为 5))并使用高频词标记子树。

    +
    edox2 <- pairwise_termsim(edox)
    p1 <- treeplot(edox2)
    p2 <- treeplot(edox2, hclust_method = "average")
    aplot::plot_list(p1, p2, tag_levels='A')
    + + + +

    Figure 5. Tree plot of enriched terms
    from clusterProfiler book

    +
      +
    1. 可视化emapplot —— 富集图
      对于富集到的GO terms之间的基因重叠关系进行展示,如果两个GO terms系的差异基因存在重叠,说明这两个节点存在overlap关系,在图中用线条连接起来。每个节点是一个富集到的GO term, 默认画top30个富集到的GO terms, 节点大小对应该GO terms下富集到的差异基因个数,节点的颜色对应p.adjust的值,从小到大,对应蓝色到红色。
    2. +
    +
    ego2 <- pairwise_termsim(ego)
    p1 <- emapplot(ego2)
    p2 <- emapplot(ego2, cex_category=1.5)
    p3 <- emapplot(ego2, layout="kk")
    p4 <- emapplot(ego2, cex_category=1.5,layout="kk")
    cowplot::plot_grid(p1, p2, p3, p4, ncol=2, labels=LETTERS[1:4])
    + + + +

    Figure 6. Plot for results obtained from hypergeometric test and gene set enrichment analysis. default (A), cex_category=1.5 (B), layout=”kk” (C) and cex_category=1.5,layout=”kk” (D).
    from clusterProfiler book

    +
      +
    1. 可视化upsetplot —— upset图
      upsetplot是cnetplot可视化基因和基因集之间复杂关联的替代方法。它强调不同基因集之间的基因重叠。
    2. +
    +

    upsetplot(ego)

    + + +

    Figure 7. Upsetplot for over-representation analysis.
    from clusterProfiler book

    +
      +
    1. 可视化ridgeplot —— 脊线图
      ridgeplot将可视化核心富集基因的表达分布为GSEA富集类别。它帮助用户解释上调/下调的途径。
    2. +
    +

    ridgeplot(ego)

    + + +

    Figure 8. Ridgeplot for gene set enrichment analysis.
    from clusterProfiler book

    +

    2.2. 可视化plotGOgraph/goplot —— 有向无环图

      +
    1. plotGOgraph(ego, firstSigNodes=10)
    2. +
    + +

    当enrichGO富集分析时ont参数选了ALL时,结果文件会在第一列前增加一列ONTOLOGY为子类,这时直接用于plotGOgraph画图会报错。
    试了下,下面两种方案还是会报错Error in if (!ont %in% c(“BP”, “MF”, “CC”)) { :argument is of length zero。。还是尽量在enrichGO分析时就用ont=”BP”吧。

    + + + +

    Figure 9. DAG图
    from clusterProfiler blog

    +
      +
    1. goplot(ego, showCategory = 10)
    2. +
    + + + +

    Figure 10. goplot的DAG图
    from clusterProfiler book

    +

    2.3. 可视化 —— wordcloud

    词云的方式显示结果

    +
    install.packages("wordcloud")
    library(wordcloud)
    wcdf <- read.table(text = ego$GeneRatio, sep = "/")[1]
    wcdf$term <- ego[,2]
    wordcloud(words = wcdf$term, freq = wcdf$V1, scale=(c(4, .1)), colors=brewer.pal(8, "Dark2"), max.words = 25)
    + + + +

    Figure 11. wordcloud词云图
    from NGS Analysis ebook

    +

    3. 导出可视化结果

      +
    1. Rstudio
    2. +
    +

    如果是在Rstudio中,可以直接看到绘图结果,导出需要的文件格式即可。

    +
      +
    1. 代码导出
      pdf("ego.pdf") #如果保存png,就改成png("ego.png")
      ego_fig<-barplot(x) #画图函数
      print(ego_fig) #画到pdf文件
      dev.off() #关闭pdf画板
    2. +
    +

    4. references

      +
    1. clusterProfiler github:https://github.com/YuLab-SMU/clusterProfiler
    2. clusterProfiler paper:https://www.cell.com/the-innovation/fulltext/S2666-6758(21)00066-7?_returnURL=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS2666675821000667%3Fshowall%3Dtrue
    3. +
    4. clusterProfiler book:http://yulab-smu.top/biomedical-knowledge-mining-book/index.html
    5. +
    6. clusterProfiler manual:https://bioconductor.org/packages/devel/bioc/manuals/clusterProfiler/man/clusterProfiler.pdf
    7. +
    8. clusterProfiler ducumentation:https://guangchuangyu.github.io/software/clusterProfiler/documentation/
    9. +
    10. 其他来源结果可视化:https://cloud.tencent.com/developer/article/1613815
    11. +
    12. wordcloud:https://learn.gencore.bio.nyu.edu/rna-seq-analysis/over-representation-analysis/

    -]]>
    + +]]> bioinfo enrichment @@ -2443,13 +2445,11 @@ BiocManager的版本与R版本一一对应,安装时如果版本不对会有 gene set enrichment analysis GSEA - topGO enrichment analysis over representation analysis ORA clusterProfiler - KOBAS-i - GOEAST + visualization
    @@ -2821,6 +2821,86 @@ BiocManager的版本与R版本一一对应,安装时如果版本不对会有 GFF3toolkit + + 软件mitogenomics用于线粒体基因组相关格式转换 + /2022/06/30/bioinfo_fileformat_mitogenomics/ + + +

    mitogenomics简介

    +

    软件安装

      +
    1. git下载
      git clone https://github.com/IMEDEA/mitogenomics

      +
    2. +
    3. 脚本

      +
    4. +
    + +
      +
    1. 依赖
    2. +
    + +

    软件mitogenomics

    脚本mitos2fasta.py

    python 3 版本,用于转化基因序列为比对到线粒体基因组序列的格式。

    +
      +
    1. 命令
      mitos2fasta.py -m mito.fa -g genes.fa -c Y > assembly.fa

      +
    2. +
    3. 输入输出

      +
    4. +
    + +

    aln2tbl.py

    python 3 版本,用于转化比对到线粒体基因组序列的基因序列(即mitos2fasta.py的输出)为tbl格式。

    +

    aln2tbl-legacy.py是aln2tbl.py的python2版本,功能一样。

    +
      +
    1. 命令
      aln2tbl.py -f assembly.fa -g genes.txt -c 1 > sample.tbl

      +
    2. +
    3. 输入输出

      +
    4. +
    + +

    references

      +
    1. https://github.com/IMEDEA/mitogenomics
    2. +
    +
    + +]]>
    + + bioinfo + fileformat + mitogenome + + + mitogenome + organelle + mitogenomics + aln2tbl.py + aln2tbl-legacy.py + mitos2fasta.py + tbl + +
    转换GenBank文件为tbl格式,为提交注释做准备 /2022/06/16/bioinfo_fileformat_gb2tbl/ @@ -2956,8 +3036,8 @@ BiocManager的版本与R版本一一对应,安装时如果版本不对会有 fileformat - GenBank tbl + GenBank organellar genome genome annotation genome submit @@ -2969,86 +3049,6 @@ BiocManager的版本与R版本一一对应,安装时如果版本不对会有 Genbank2Sequin.py - - 软件mitogenomics用于线粒体基因组相关格式转换 - /2022/06/30/bioinfo_fileformat_mitogenomics/ - - -

    mitogenomics简介

    -

    软件安装

      -
    1. git下载
      git clone https://github.com/IMEDEA/mitogenomics

      -
    2. -
    3. 脚本

      -
    4. -
    - -
      -
    1. 依赖
    2. -
    - -

    软件mitogenomics

    脚本mitos2fasta.py

    python 3 版本,用于转化基因序列为比对到线粒体基因组序列的格式。

    -
      -
    1. 命令
      mitos2fasta.py -m mito.fa -g genes.fa -c Y > assembly.fa

      -
    2. -
    3. 输入输出

      -
    4. -
    - -

    aln2tbl.py

    python 3 版本,用于转化比对到线粒体基因组序列的基因序列(即mitos2fasta.py的输出)为tbl格式。

    -

    aln2tbl-legacy.py是aln2tbl.py的python2版本,功能一样。

    -
      -
    1. 命令
      aln2tbl.py -f assembly.fa -g genes.txt -c 1 > sample.tbl

      -
    2. -
    3. 输入输出

      -
    4. -
    - -

    references

      -
    1. https://github.com/IMEDEA/mitogenomics
    2. -
    -
    - -]]>
    - - bioinfo - fileformat - mitogenome - - - mitogenome - organelle - tbl - mitogenomics - aln2tbl.py - aln2tbl-legacy.py - mitos2fasta.py - -
    分析基因家族扩张和收缩 —— CAFE5 /2021/10/29/bioinfo_gene.family_CAFE5/ @@ -4845,98 +4845,29 @@ BiocManager的版本与R版本一一对应,安装时如果版本不对会有
    list.files()

    library(ggtree)
    library(treeio)
    library(ggplot2)
    library(ape)

    qc <- read.tree("RESULT.labeled.tre.qc")
    qd <- read.tree("RESULT.labeled.tre.qd")
    qi <- read.tree("RESULT.labeled.tre.qi")


    # process node labels of above three labeled trees
    # qc tree
    tree <- qc
    tree$node.label <- gsub("qc=","",tree$node.label)
    View(tree$node.label)
    write.tree(tree,"tree_qc.tre")
    # qd tree
    tree <- qd
    tree$node.label <- gsub("qd=","",tree$node.label)
    View(tree$node.label)
    write.tree(tree,"tree_qd.tre")
    # qi tree
    tree <- qi
    tree$node.label <- gsub("qi=","",tree$node.label)
    View(tree$node.label)
    write.tree(tree,"tree_qi.tre")


    # read 3 modified tree files for QC/QD/QI
    tree_qc <- read.newick("tree_qc.tre", node.label='support')
    tree_qd <- read.newick("tree_qd.tre", node.label='support')
    tree_qi <- read.newick("tree_qi.tre", node.label='support')


    # add a customized label for internode or inter-branch, i.e., qc/qd/qI
    score_raw = paste(tree_qc@data$support,"/",tree_qd@data$support,"/",tree_qi@data$support,sep="")
    score = gsub("NA/NA/NA","",score_raw)
    score = gsub("NA","-",score)
    View(score)


    # set labeled QC tree as the main plot tree
    tree <- tree_qc
    tree@data$score <- score


    #####################################################
    # Partitioning quartet concordance. QC values were divided into four categories and this
    # information was used to color circle points.

    # drop the internodes without QC vaule
    root <- tree@data$node[is.na(tree@data$support)]

    pdf(file="00.treeQC_rect_circ.pdf", width = 16, height = 18)

    # (1)color circle points
    ggtree(tree, size=0.5) +
    geom_tiplab(size=2) + xlim(0, 0.12) +
    geom_nodepoint(aes(subset=!isTip & node != root, fill=cut(support, c(1, 0.2, 0, -0.05, -1))),
    shape=21, size=4) +
    theme_tree(legend.position=c(0.9, 0.18)) +
    scale_fill_manual(values=c("#2F4F4F", "#98F898", "#FFCC99","#FF6600"),
    guide="legend", name="Quartet Concordance(QC)",
    breaks=c("(0.2,1]","(0,0.2]","(-0.05,0]","(-1,-0.05]"),
    labels=expression(QC>0.2, 0 < QC * " <= 0.2", -0.05 < QC * " <= 0", QC <= -0.05))

    # (2)color branch
    ggtree(tree, aes(color=cut(support, c(1, 0.2, 0, -0.05, -1))), layout="circular", size=1) +
    theme_tree(legend.position=c(0.85, 0.24)) +
    scale_colour_manual(values=c("#2F4F4F", "#98F898", "#FFCC99","#FF6600"),
    breaks=c("(0.2,1]","(0,0.2]","(-0.05,0]","(-1,-0.05]"),
    na.translate=T, na.value="gray",
    guide="legend", name="Quartet Concordance(QC)",
    labels=expression(QC>0.2, 0 < QC * " <= 0.2", -0.05 < QC * " <= 0", QC <= -0.05))

    # (3)color circle points and label each internode with QC/QD/QI
    ggtree(tree, size=0.5) +
    geom_tiplab(size=2) + xlim(0, 0.12) +
    geom_nodepoint(aes(subset=!isTip & node != root, fill=cut(support, c(1, 0.2, 0, -0.05, -1))),
    shape=21, size=4) +
    theme_tree(legend.position=c(0.9, 0.18)) +
    scale_fill_manual(values=c("#2F4F4F", "#98F898", "#FFCC99","#FF6600"),
    guide="legend", name="Quartet Concordance(QC)",
    breaks=c("(0.2,1]","(0,0.2]","(-0.05,0]","(-1,-0.05]"),
    labels=expression(QC>0.2, 0 < QC * " <= 0.2", -0.05 < QC * " <= 0", QC <= -0.05))+
    geom_text(aes(label=score, x=branch), size=2, vjust=-.5)

    dev.off()
    -

    3. 案例

    -

    4. references

      -
    1. Quartet Sampling软件github:https://github.com/fephyfofum/quartetsampling
    2. -
    3. paper:https://bsapubs.onlinelibrary.wiley.com/doi/full/10.1002/ajb2.1016
    4. -
    5. https://github.com/ShuiyinLIU/QS_visualization
    6. -
    -
    - -]]> - - bioinfo - phylogeny - - - phylogeny - phylogenomics - phylogenetic discordance - Quartet Sampling - -
    - - 用R包castor的get_subtree_with_tips函数提取子树 - /2023/03/13/bioinfo_phylogeny_castor_extract.subtrees/ - - -

    1. R包castor

    R包castor是一个可以对包含超百万类群(tips)的系统发育树进行操作的程序,功能包括修剪、重新定根、计算最近共同祖先、计算tips与树根的距离、计算成对距离等等。

    -

    系统发育信号和平均性状深度(性状保守性)的计算,离散性状的祖先状态重建和隐藏性状预测,性状进化的模拟和拟合模型,拟合和模拟多样化模型,以Newick格式树的标定时间,比较树,读取和写入树。

    -

    安装R包castor:install.packages("castor")

    -

    2. R包castor的get_subtree_with_tips函数

    R包castor的get_subtree_with_tips函数用于根据子集类群列表从一棵大树中提取子树。

    -

    2.1. 介绍get_subtree_with_tips函数

      -
    1. get_subtree_with_tips(tree,only_tips=NULL,omit_tips=NULL,collapse_monofurcations = TRUE,force_keep_root = FALSE))

      -
    2. -
    3. 参数说明

      -
    4. -
    - -

    2.2. get_subtree_with_tips函数的使用

      -
    1. 输入
    2. -
    - -
      -
    1. 提取子树
    2. -
    -
    library(treeio)
    library(castor)

    tree<-read.newick("species.tre") # 读取物种树
    sub_list<-scan("subtree.list",what="") # 读取类群列表,保存为字符向量
    sub<-get_subtree_with_tips(tree,only_tips = sub_list) # 提取子树
    write.tree(sub$subtree,file="species_subtree.tre") # 把提取的子树写入species_subtree.tre文件,newick格式
    - -

    2.3. 批量提取子树

    由于get_subtree_with_tips函数只接受单棵树的phylo数据类群作为输入,如果需要从multiphylo的多棵树中统一提取子集则需要借助get_subtrees.R脚本。

    -
      -
    1. 批量提取
    2. -
    -
    library(treeio)
    library(castor)
    trees<-read.newick("genes.trees") # 读取多棵树的genes.trees文件,trees为multiphylo。
    sub_list<-scan("subtree.list",what="") # 读取类群列表,保存为字符向量
    source("get_subtrees.R") # 运行get_subtrees.R脚本,子树保存在genes_subtree.tre文件中
    - -
      -
    1. get_subtrees.R脚本,这里设定共有2700棵树
    2. -
    -
    for ( i in 1:2700) {
    tree<-trees[[i]]
    sub<-get_subtree_with_tips(tree,only_tips = sub_list)
    write.tree(sub$subtree,file="genes_subtree.tre",append = TRUE)
    }
    - -

    3. 提取后

    提取子树生成的species_subtree.tre文件中的枝长有时会有:NaN符号,用子树跑PhyloNetworks的时候会报错LoadError: Expected right parenthesis after left parenthesis 6 but readN是因为识别不了NaN,需要把子树中的这个符号:NaN删除。

    -

    建议用sed -i -E "s/:[0-9.Na]+//g" species_subtree.tre命令把枝长信息都删除。

    +

    3. 案例

    4. references

      -
    1. castor包的manual:https://cran.r-project.org/web/packages/castor/castor.pdf
    2. -
    3. castor包的paper:https://academic.oup.com/bioinformatics/article/34/6/1053/4582279?login=true
    4. +
    5. Quartet Sampling软件github:https://github.com/fephyfofum/quartetsampling
    6. +
    7. paper:https://bsapubs.onlinelibrary.wiley.com/doi/full/10.1002/ajb2.1016
    8. +
    9. https://github.com/ShuiyinLIU/QS_visualization

    -]]>
    +]]> bioinfo phylogeny - R package phylogeny - evolutionary tree - castor - get_subtree_with_tips + phylogenomics + phylogenetic discordance + Quartet Sampling
    @@ -5188,6 +5119,75 @@ BiocManager的版本与R版本一一对应,安装时如果版本不对会有 r8s + + 用R包castor的get_subtree_with_tips函数提取子树 + /2023/03/13/bioinfo_phylogeny_castor_extract.subtrees/ + + +

    1. R包castor

    R包castor是一个可以对包含超百万类群(tips)的系统发育树进行操作的程序,功能包括修剪、重新定根、计算最近共同祖先、计算tips与树根的距离、计算成对距离等等。

    +

    系统发育信号和平均性状深度(性状保守性)的计算,离散性状的祖先状态重建和隐藏性状预测,性状进化的模拟和拟合模型,拟合和模拟多样化模型,以Newick格式树的标定时间,比较树,读取和写入树。

    +

    安装R包castor:install.packages("castor")

    +

    2. R包castor的get_subtree_with_tips函数

    R包castor的get_subtree_with_tips函数用于根据子集类群列表从一棵大树中提取子树。

    +

    2.1. 介绍get_subtree_with_tips函数

      +
    1. get_subtree_with_tips(tree,only_tips=NULL,omit_tips=NULL,collapse_monofurcations = TRUE,force_keep_root = FALSE))

      +
    2. +
    3. 参数说明

      +
    4. +
    + +

    2.2. get_subtree_with_tips函数的使用

      +
    1. 输入
    2. +
    + +
      +
    1. 提取子树
    2. +
    +
    library(treeio)
    library(castor)

    tree<-read.newick("species.tre") # 读取物种树
    sub_list<-scan("subtree.list",what="") # 读取类群列表,保存为字符向量
    sub<-get_subtree_with_tips(tree,only_tips = sub_list) # 提取子树
    write.tree(sub$subtree,file="species_subtree.tre") # 把提取的子树写入species_subtree.tre文件,newick格式
    + +

    2.3. 批量提取子树

    由于get_subtree_with_tips函数只接受单棵树的phylo数据类群作为输入,如果需要从multiphylo的多棵树中统一提取子集则需要借助get_subtrees.R脚本。

    +
      +
    1. 批量提取
    2. +
    +
    library(treeio)
    library(castor)
    trees<-read.newick("genes.trees") # 读取多棵树的genes.trees文件,trees为multiphylo。
    sub_list<-scan("subtree.list",what="") # 读取类群列表,保存为字符向量
    source("get_subtrees.R") # 运行get_subtrees.R脚本,子树保存在genes_subtree.tre文件中
    + +
      +
    1. get_subtrees.R脚本,这里设定共有2700棵树
    2. +
    +
    for ( i in 1:2700) {
    tree<-trees[[i]]
    sub<-get_subtree_with_tips(tree,only_tips = sub_list)
    write.tree(sub$subtree,file="genes_subtree.tre",append = TRUE)
    }
    + +

    3. 提取后

    提取子树生成的species_subtree.tre文件中的枝长有时会有:NaN符号,用子树跑PhyloNetworks的时候会报错LoadError: Expected right parenthesis after left parenthesis 6 but readN是因为识别不了NaN,需要把子树中的这个符号:NaN删除。

    +

    建议用sed -i -E "s/:[0-9.Na]+//g" species_subtree.tre命令把枝长信息都删除。

    +

    4. references

      +
    1. castor包的manual:https://cran.r-project.org/web/packages/castor/castor.pdf
    2. +
    3. castor包的paper:https://academic.oup.com/bioinformatics/article/34/6/1053/4582279?login=true
    4. +
    +
    + +]]>
    + + bioinfo + phylogeny + + + R package + phylogeny + evolutionary tree + castor + get_subtree_with_tips + +
    绘制进化树 —— R包treeio+ggtree /2022/01/24/bioinfo_phylogeny_ggtree/ @@ -6414,10 +6414,10 @@ BiocManager的版本与R版本一一对应,安装时如果版本不对会有 biosoft ggplot2 + WGD Ks ParaAT KaKs_Calculator - WGD divergence time paml synteny @@ -6559,6 +6559,177 @@ BiocManager的版本与R版本一一对应,安装时如果版本不对会有 jcvi + + 使用Rldeogram的ideogram函数画两物种的同线性图 + /2022/08/03/bioinfo_synteny_plot_Rldeogram/ + + +

    1. 使用Rldeogram的ideogram函数画两物种的共线性图

    1.1. 输入文件

      +
    1. karyotype.txt
    2. +
    +
      +
    • Chr: 染色体号
    • +
    • Start: 起始
    • +
    • End: 终止
    • +
    • fill: 染色体填充色
    • +
    • species:物种名
    • +
    • size: 物种名字体大小
    • +
    • color: 物种名字体颜色
    • +
    +

    文件示例:

    +
    Chr Start      End   fill species size  color
    1 1 23037639 FF8C00 Grape 12 252525
    2 1 18779884 FF8C00 Grape 12 252525
    3 1 17934068 FF8C00 Grape 12 252525
    4 1 17349521 FF8C00 Grape 12 252525
    1 1 22042719 4682B4 Populus 12 252525
    2 1 19858802 4682B4 Populus 12 252525
    3 1 19278319 4682B4 Populus 12 252525
    + +
      +
    1. synteny.txt
    2. +
    +
      +
    • Species_1:物种1染色体号
    • +
    • Start_1,End_1:物种1染色体区域位置
    • +
    • Species_2:物种2染色体号
    • +
    • Start_2,End_2:物种2染色体区域位置
    • +
    +

    文件示例:

    +
    Species_1  Start_1    End_1 Species_2 Start_2   End_2   fill
    1 12226377 12267836 1 5900307 5827251 cccccc
    1 5635667 5667377 2 4459512 4393226 cccccc
    1 7916366 7945659 3 8618518 8486865 cccccc
    2 8214553 8242202 1 5964233 6027199 cccccc
    3 2330522 2356593 1 6224069 6138821 cccccc
    3 10861038 10886821 2 8099058 8011502 cccccc
    4 9487312 9540261 3 7657579 7701112 cccccc
    + +

    1.2. 运行

    install.packages('RIdeogram') #安装RIdeogram
    library('RIdeogram') #载入RIdeogram
    ka <- read.table("karyotype.txt",sep="\t",header = TRUE,stringsAsFactors = F) #读取karyotype.txt文件
    sy <- read.table("synteny.txt",sep="\t",header = TRUE,stringsAsFactors = F) #读取synteny.txt文件
    ideogram(karyotype = ka, synteny = sy) #使用ideogram函数,生成chromosome.svg文件用于绘图
    convertSVG("chromosome.svg", device = "pdf",dpi=1600) #转化成chromosome.pdf文件,还可选择转化的格式:tiff,png,jpg,分辨率1600。
    + +

    1.3. 结果

    结果如下图:

    + + +

    Figure 1. Rldeogram绘制的同线性图

    +

    2. references

      +
    1. https://www.jianshu.com/p/07ae1fe18071
    2. +
    +
    +
      +
    • 欢迎关注微信公众号:生信技工
    • +
    • 公众号主要分享生信分析、生信软件、基因组学、转录组学、植物进化、生物学概念等相关内容,包括生物信息学工具的基本原理、操作步骤和学习心得。
    • +
    +]]>
    + + bioinfo + synteny + plot + + + R package + R + plot + synteny + Rldeogram + ideogram + +
    + + 转录因子(transcription factor,TF)基础及WGD后保留的TF分析 + /2022/10/18/bioinfo_transcriptionFactor/ + + + +

    1. 转录因子(transcription factor)

    转录因子(transcription factor,TF)是一种蛋白质,它通过与特定DNA序列结合来控制遗传信息从DNA到信使RNA的转录速率。

    +

    TFs 的功能是调节——打开和关闭——基因,以确保它们在所需的细胞中在正确的时间和正确的数量表达。TF 组以协调的方式发挥作用,在整个生命过程中指导细胞分裂、细胞生长和细胞死亡;胚胎发育过程中的细胞迁移和组织;并且间歇性地响应来自细胞外的信号,例如激素。人类基因组中有多达 1600 个 TF 。转录因子是蛋白质组和调节组的成员。

    +

    2. 植物转录因子数据库PlantTFDB

    植物转录因子数据库PlantTFDB是北京大学生物信息学中心研发的数据库和网站,目前包括165个植物物种的转录因子。

    +

    目前数据库已更新到v5.0,在网站http://planttfdb.gao-lab.org/index.php可以查看、下载和使用植物转录因子数据库。

    +

    网站的功能包括:

    +
      +
    1. 上传核酸或蛋白质的fasta序列,在线做转录因子的注释。
    2. +
    3. 上传核酸或蛋白质的fasta序列,在线与数据库做blastx或blastp比对。
    4. +
    5. 下载特定植物的TF列表,CDS或蛋白质序列。
    6. +
    7. 查询特定TF和TF家族的功能描述。
    8. +
    +

    3. 转录因子相关分析

    转录因子分析可以应用的场景很多,这里介绍全基因组复制事件(WGD)后转录因子保留的分析。

    +

    3.1. WGD后保留TF的分析

    3.1.1. 思路

    除了直接看WGD后保留的基因中包含了什么种类和多少数量的TF外,还可以通过利用转录因子数据库PlantTFDB来做WGD后保留的每种TF的保留模式的进一步分析。

    +
      +
    1. 参考
    2. +
    + +
      +
    1. 基本思路
    2. +
    + +
      +
    1. R值的计算公式:$$Rvalue=(Rs⁄Ts)/(Ra⁄Ta)=RsTa/TsRa$$,其中:
    2. +
    + +

    3.1.2. 准备文件

      +
    1. Orthogroups.txt
    2. +
    + +
      +
    1. dup_wgd.og
    2. +
    + +
      +
    1. 下载Ath_TF_list.txt并转化成Ath_TF_list.og
    2. +
    +
    cat Ath_TF_list.txt|sed '1d'|cut -f2 >ath_2.tem # 提取第二列geneID
    cat Ath_TF_list.txt |sed '1d'|cut -f3|sort|uniq >ath.tf # 提取第三列Family
    for i in $(cat ath_2.tem); do echo $i >>ath.og && grep $i /path/to/OrthoFinder/Results_xx/Orthogroups/Orthogroups.txt|cut -d ":" -f1 >>ath.og ; done # 根据geneID提取orthogroups
    sed -i -e '1i\Gene_ID\torthogroups_ID' -e "s/ /\t/g" ath.og # 在ath.og文件首行前插入标题行,并把列间分隔的空格改成tab分隔。
    paste Ath_TF_list.txt ath.og >Ath_TF_list.og # 横向拼接Ath_TF_list.txt和ath.og两个文件
    head Ath_TF_list.og && tail Ath_TF_list.og # 检查一下首尾的第二列和第四列是不是一样,看有没有拼接错误
    + +

    3.1.3. 统计R相关参数

      +
    1. 这里的Ta、Ra、Ts、Rs可以用两种数量来代表,一种是统计TF_ID的数量,另一种是统计Orthogroups的数量。
    2. +
    + +
      +
    1. 对每一个ath.tf里的Family,统计Ta,Ra,Rs和Ts值
    2. +
    +
    for i in $(cat ath.tf);
    do
    ta = $(($(cat Ath_TF_list.ogs|wc -l)-1)) # 统计Ta值(有标题行,结果需要减1)
    ra = $(grep -f dup_wgd.og Ath_TF_list.ogs|wc -l) # 统计Ra值
    rs=$(grep -f dup_wgd.og Ath_TF_list.ogs |awk -v awka="$i" '$3 == awka {print$0}'|wc -l);
    ts=$(awk -v awka="$i" '$3 == awka {print $0}' Ath_TF_list.ogs |wc -l);
    echo "${i} ${rs} ${ts} ${ra} ${ta}" >> ath_r.tem
    done
    + +
      +
    1. 有了Ta,Ra,Rs和Ts值,接下来就可以计算Rvalue=(Rs⁄Ts)/(Ra⁄Ta)了。
    2. +
    + +

    3.1.4. 绘制热图

    热图绘制可以参考博客https://yanzhongsino.github.io/2022/11/06/R_plot_heatmap

    + +

    用R包pheatmap绘制热图,简单快捷。(notes: 画热图这里的代码还需根据数据格式调整)

    +
    df<-read.table("tf_rvalue.txt",sep= " ", header = T,row.names = 1)
    df_row <- hclust(dist(df)) #对行聚类
    df <- df[df_row$order,] #按行聚类结果排序
    df_column <- hclust(dist(t(df))) #对列聚类
    df <- df[,df_column$order] #按列聚类结果排序

    BiocManager::install("pheatmap")
    library(pheatmap)
    pheatmap(df,color = colorRampPalette(c("lightgreen", "yellow","orange","red"))(20),legend_breaks = c(1:4), legend_labels = c("1.0","2.0","3.0","4.0"), border_color="white",treeheight_row = 50, treeheight_col = 8, display_numbers = TRUE, number_color = "black",main = "TF heatmap",cellwidth = 50, cellheight = 10)
    # 其中color = colorRampPalette(c("lightgreen", "yellow","orange","red"))(20) #设置颜色渐变,值从低到高依次是浅绿色-黄色-橙色-红色,共20个颜色。
    + +

    4. references

      +
    1. wiki:transcription factor: https://en.wikipedia.org/wiki/Transcription_factor
    2. +
    3. PlantTFDB: http://planttfdb.gao-lab.org/index.php
    4. +
    5. paper: https://www.sciencedirect.com/science/article/pii/S1674205219303594
    6. +
    +
    + +]]>
    + + bioinfo + transcription factor + + + WGD + transcription factor + PlantTFDB + +
    分析基因组共线性、计算Ks和鉴定WGD —— WGDI /2021/09/11/bioinfo_synteny_WGDI/ @@ -6895,184 +7066,13 @@ BiocManager的版本与R版本一一对应,安装时如果版本不对会有 biosoft - Ks WGD + Ks synteny colinearity WGDI - - 使用Rldeogram的ideogram函数画两物种的同线性图 - /2022/08/03/bioinfo_synteny_plot_Rldeogram/ - - -

    1. 使用Rldeogram的ideogram函数画两物种的共线性图

    1.1. 输入文件

      -
    1. karyotype.txt
    2. -
    -
      -
    • Chr: 染色体号
    • -
    • Start: 起始
    • -
    • End: 终止
    • -
    • fill: 染色体填充色
    • -
    • species:物种名
    • -
    • size: 物种名字体大小
    • -
    • color: 物种名字体颜色
    • -
    -

    文件示例:

    -
    Chr Start      End   fill species size  color
    1 1 23037639 FF8C00 Grape 12 252525
    2 1 18779884 FF8C00 Grape 12 252525
    3 1 17934068 FF8C00 Grape 12 252525
    4 1 17349521 FF8C00 Grape 12 252525
    1 1 22042719 4682B4 Populus 12 252525
    2 1 19858802 4682B4 Populus 12 252525
    3 1 19278319 4682B4 Populus 12 252525
    - -
      -
    1. synteny.txt
    2. -
    -
      -
    • Species_1:物种1染色体号
    • -
    • Start_1,End_1:物种1染色体区域位置
    • -
    • Species_2:物种2染色体号
    • -
    • Start_2,End_2:物种2染色体区域位置
    • -
    -

    文件示例:

    -
    Species_1  Start_1    End_1 Species_2 Start_2   End_2   fill
    1 12226377 12267836 1 5900307 5827251 cccccc
    1 5635667 5667377 2 4459512 4393226 cccccc
    1 7916366 7945659 3 8618518 8486865 cccccc
    2 8214553 8242202 1 5964233 6027199 cccccc
    3 2330522 2356593 1 6224069 6138821 cccccc
    3 10861038 10886821 2 8099058 8011502 cccccc
    4 9487312 9540261 3 7657579 7701112 cccccc
    - -

    1.2. 运行

    install.packages('RIdeogram') #安装RIdeogram
    library('RIdeogram') #载入RIdeogram
    ka <- read.table("karyotype.txt",sep="\t",header = TRUE,stringsAsFactors = F) #读取karyotype.txt文件
    sy <- read.table("synteny.txt",sep="\t",header = TRUE,stringsAsFactors = F) #读取synteny.txt文件
    ideogram(karyotype = ka, synteny = sy) #使用ideogram函数,生成chromosome.svg文件用于绘图
    convertSVG("chromosome.svg", device = "pdf",dpi=1600) #转化成chromosome.pdf文件,还可选择转化的格式:tiff,png,jpg,分辨率1600。
    - -

    1.3. 结果

    结果如下图:

    - - -

    Figure 1. Rldeogram绘制的同线性图

    -

    2. references

      -
    1. https://www.jianshu.com/p/07ae1fe18071
    2. -
    -
    -
      -
    • 欢迎关注微信公众号:生信技工
    • -
    • 公众号主要分享生信分析、生信软件、基因组学、转录组学、植物进化、生物学概念等相关内容,包括生物信息学工具的基本原理、操作步骤和学习心得。
    • -
    -]]>
    - - bioinfo - synteny - plot - - - R package - R - plot - synteny - Rldeogram - ideogram - -
    - - 转录因子(transcription factor,TF)基础及WGD后保留的TF分析 - /2022/10/18/bioinfo_transcriptionFactor/ - - - -

    1. 转录因子(transcription factor)

    转录因子(transcription factor,TF)是一种蛋白质,它通过与特定DNA序列结合来控制遗传信息从DNA到信使RNA的转录速率。

    -

    TFs 的功能是调节——打开和关闭——基因,以确保它们在所需的细胞中在正确的时间和正确的数量表达。TF 组以协调的方式发挥作用,在整个生命过程中指导细胞分裂、细胞生长和细胞死亡;胚胎发育过程中的细胞迁移和组织;并且间歇性地响应来自细胞外的信号,例如激素。人类基因组中有多达 1600 个 TF 。转录因子是蛋白质组和调节组的成员。

    -

    2. 植物转录因子数据库PlantTFDB

    植物转录因子数据库PlantTFDB是北京大学生物信息学中心研发的数据库和网站,目前包括165个植物物种的转录因子。

    -

    目前数据库已更新到v5.0,在网站http://planttfdb.gao-lab.org/index.php可以查看、下载和使用植物转录因子数据库。

    -

    网站的功能包括:

    -
      -
    1. 上传核酸或蛋白质的fasta序列,在线做转录因子的注释。
    2. -
    3. 上传核酸或蛋白质的fasta序列,在线与数据库做blastx或blastp比对。
    4. -
    5. 下载特定植物的TF列表,CDS或蛋白质序列。
    6. -
    7. 查询特定TF和TF家族的功能描述。
    8. -
    -

    3. 转录因子相关分析

    转录因子分析可以应用的场景很多,这里介绍全基因组复制事件(WGD)后转录因子保留的分析。

    -

    3.1. WGD后保留TF的分析

    3.1.1. 思路

    除了直接看WGD后保留的基因中包含了什么种类和多少数量的TF外,还可以通过利用转录因子数据库PlantTFDB来做WGD后保留的每种TF的保留模式的进一步分析。

    -
      -
    1. 参考
    2. -
    - -
      -
    1. 基本思路
    2. -
    - -
      -
    1. R值的计算公式:$$Rvalue=(Rs⁄Ts)/(Ra⁄Ta)=RsTa/TsRa$$,其中:
    2. -
    - -

    3.1.2. 准备文件

      -
    1. Orthogroups.txt
    2. -
    - -
      -
    1. dup_wgd.og
    2. -
    - -
      -
    1. 下载Ath_TF_list.txt并转化成Ath_TF_list.og
    2. -
    -
    cat Ath_TF_list.txt|sed '1d'|cut -f2 >ath_2.tem # 提取第二列geneID
    cat Ath_TF_list.txt |sed '1d'|cut -f3|sort|uniq >ath.tf # 提取第三列Family
    for i in $(cat ath_2.tem); do echo $i >>ath.og && grep $i /path/to/OrthoFinder/Results_xx/Orthogroups/Orthogroups.txt|cut -d ":" -f1 >>ath.og ; done # 根据geneID提取orthogroups
    sed -i -e '1i\Gene_ID\torthogroups_ID' -e "s/ /\t/g" ath.og # 在ath.og文件首行前插入标题行,并把列间分隔的空格改成tab分隔。
    paste Ath_TF_list.txt ath.og >Ath_TF_list.og # 横向拼接Ath_TF_list.txt和ath.og两个文件
    head Ath_TF_list.og && tail Ath_TF_list.og # 检查一下首尾的第二列和第四列是不是一样,看有没有拼接错误
    - -

    3.1.3. 统计R相关参数

      -
    1. 这里的Ta、Ra、Ts、Rs可以用两种数量来代表,一种是统计TF_ID的数量,另一种是统计Orthogroups的数量。
    2. -
    - -
      -
    1. 对每一个ath.tf里的Family,统计Ta,Ra,Rs和Ts值
    2. -
    -
    for i in $(cat ath.tf);
    do
    ta = $(($(cat Ath_TF_list.ogs|wc -l)-1)) # 统计Ta值(有标题行,结果需要减1)
    ra = $(grep -f dup_wgd.og Ath_TF_list.ogs|wc -l) # 统计Ra值
    rs=$(grep -f dup_wgd.og Ath_TF_list.ogs |awk -v awka="$i" '$3 == awka {print$0}'|wc -l);
    ts=$(awk -v awka="$i" '$3 == awka {print $0}' Ath_TF_list.ogs |wc -l);
    echo "${i} ${rs} ${ts} ${ra} ${ta}" >> ath_r.tem
    done
    - -
      -
    1. 有了Ta,Ra,Rs和Ts值,接下来就可以计算Rvalue=(Rs⁄Ts)/(Ra⁄Ta)了。
    2. -
    - -

    3.1.4. 绘制热图

    热图绘制可以参考博客https://yanzhongsino.github.io/2022/11/06/R_plot_heatmap

    - -

    用R包pheatmap绘制热图,简单快捷。(notes: 画热图这里的代码还需根据数据格式调整)

    -
    df<-read.table("tf_rvalue.txt",sep= " ", header = T,row.names = 1)
    df_row <- hclust(dist(df)) #对行聚类
    df <- df[df_row$order,] #按行聚类结果排序
    df_column <- hclust(dist(t(df))) #对列聚类
    df <- df[,df_column$order] #按列聚类结果排序

    BiocManager::install("pheatmap")
    library(pheatmap)
    pheatmap(df,color = colorRampPalette(c("lightgreen", "yellow","orange","red"))(20),legend_breaks = c(1:4), legend_labels = c("1.0","2.0","3.0","4.0"), border_color="white",treeheight_row = 50, treeheight_col = 8, display_numbers = TRUE, number_color = "black",main = "TF heatmap",cellwidth = 50, cellheight = 10)
    # 其中color = colorRampPalette(c("lightgreen", "yellow","orange","red"))(20) #设置颜色渐变,值从低到高依次是浅绿色-黄色-橙色-红色,共20个颜色。
    - -

    4. references

      -
    1. wiki:transcription factor: https://en.wikipedia.org/wiki/Transcription_factor
    2. -
    3. PlantTFDB: http://planttfdb.gao-lab.org/index.php
    4. -
    5. paper: https://www.sciencedirect.com/science/article/pii/S1674205219303594
    6. -
    -
    - -]]>
    - - bioinfo - transcription factor - - - WGD - transcription factor - PlantTFDB - -
    结构变异分析软件:Assemblytics /2022/08/02/bioinfo_variation_SV_Assemblytics/ @@ -7471,47 +7471,6 @@ BiocManager的版本与R版本一一对应,安装时如果版本不对会有 404 page - - 博客日常撰写和备份 - /2021/04/20/blog_maintenance/ - - -

    在根据博客hexo建站,github.io发布,多终端同步配置了hexo网站(使用next主题)的基础上,记录了博客日常撰写、备份。

    -

    1. blog的categories和tags

    categories和tags的记录

    -
    ---
    title: blog
    date: 2021-04-20 16:50:00
    categories:

    - bio
    - concept
    - taxon
    - bioinfo
    - experiment
    - theory
    - knowledge

    - biosoft

    - omics
    - genome
    - transcriptome
    - plastome
    - mitochondrion

    - plot
    - R

    - computer
    - system
    - windows
    - linux
    - program language
    - python
    - R
    - perl
    - java
    - C
    - IDE
    - vim
    - VScode
    - git
    - script
    - web

    - linux
    - basics
    - shell
    - text processing
    - operation and maintenance

    - blog


    tags:
    - genome assemble
    - genome annotation
    - phylogeny
    - divergence time
    - WGD
    - HGT
    - molecular experiment
    - homolog
    - ortholog
    - paralog
    - xenolog
    - analog
    - orthology
    - orthogroup
    - gene family
    ---
    - -

    2. 日常blog撰写和备份操作

    在做好blog搭建后,blog撰写和日常管理可参考这部分内容。

    -

    2.1. blog同步

    养成习惯,每次开始撰写blog前都通过git bash进入工作区,进行git pull命令把github端的hexo分支的更新(更新可能是其他终端上提交的)同步到本地,实现多终端的内容完全同步。
    但如果本地有未提交的更新,则千万不要用git pull,否则会覆盖本地更新;直接进入下一步;直到使用git add .git commit -m "submit"git push origin hexo提交备份本地更新到github端的hexo分支后才可以使用git pull(一般是在其他终端,把github的hexo分支更新拉到其他终端设备使用)。

    -

    2.2. blog撰写

    在本地source/_posts下添加和修改md文档实现blog的日常撰写和修改。

    -

    使用命令hexo new "newpostname"可以在hexo/source/_posts下新建一个newpostname.md的文件,这个文件以scaffolds/post.md为模板,修改scaffolds/post.md文件可以修改hexo new命令生成的新blog文件样式。

    -

    2.3. blog备份

    只要blog有更改或者新增,或者配置文件有修改,即工作区(即本地的hexo目录或github.io目录)有文件修改,则建议对文件进行备份到GitHub端的hexo分支。
    用三条命令git add .git commit -m "submit"git push origin hexo备份工作区,包括md博客源文件和hexo部署到github端的hexo分支。三条命令执行前建议通过hexo clean清除缓存和public目录,以免备份不需要的文件。

    -

    2.4. blog发布

    可根据自身需求决定是否发布blog到github.io网站,一般写的blog完整程度比较高时可以发布。使用hexo clean & hexo g -d命令,根据source/_posts下的博客源文件生成public目录(网站html并同步到github端的master分支,即发布blog到github.io网站。

    -

    总结一下,在配置好写作环境后的任意一台终端的日常工作流应该是:

    -
      -
    1. git pull同步远程github库的hexo更新到本地
    2. -
    3. hexo new "newblog"在source/_posts/下添加md格式的blog,或者修改已有的blog
    4. -
    5. git add .,git commit -m "commit notes",git push把修改备份到github端
    6. -
    7. 下次写作重复以上三个步骤
    8. -
    9. 直至blog完善成熟后,用命令hexo clean & hexo g -d生成网站并部署到github.io
    10. -
    -
    -
      -
    • 欢迎关注微信公众号:生信技工
    • -
    • 公众号主要分享生信分析、生信软件、基因组学、转录组学、植物进化、生物学概念等相关内容,包括生物信息学工具的基本原理、操作步骤和学习心得。
    • -
    -]]>
    - - blog - - - blog - hexo - github - markdown - sync - website maintenance - -
    hexo建站,github.io发布,多终端同步 /2018/06/05/blog_hexo.github/ @@ -7785,6 +7744,47 @@ BiocManager的版本与R版本一一对应,安装时如果版本不对会有 deploy website + + 博客日常撰写和备份 + /2021/04/20/blog_maintenance/ + + +

    在根据博客hexo建站,github.io发布,多终端同步配置了hexo网站(使用next主题)的基础上,记录了博客日常撰写、备份。

    +

    1. blog的categories和tags

    categories和tags的记录

    +
    ---
    title: blog
    date: 2021-04-20 16:50:00
    categories:

    - bio
    - concept
    - taxon
    - bioinfo
    - experiment
    - theory
    - knowledge

    - biosoft

    - omics
    - genome
    - transcriptome
    - plastome
    - mitochondrion

    - plot
    - R

    - computer
    - system
    - windows
    - linux
    - program language
    - python
    - R
    - perl
    - java
    - C
    - IDE
    - vim
    - VScode
    - git
    - script
    - web

    - linux
    - basics
    - shell
    - text processing
    - operation and maintenance

    - blog


    tags:
    - genome assemble
    - genome annotation
    - phylogeny
    - divergence time
    - WGD
    - HGT
    - molecular experiment
    - homolog
    - ortholog
    - paralog
    - xenolog
    - analog
    - orthology
    - orthogroup
    - gene family
    ---
    + +

    2. 日常blog撰写和备份操作

    在做好blog搭建后,blog撰写和日常管理可参考这部分内容。

    +

    2.1. blog同步

    养成习惯,每次开始撰写blog前都通过git bash进入工作区,进行git pull命令把github端的hexo分支的更新(更新可能是其他终端上提交的)同步到本地,实现多终端的内容完全同步。
    但如果本地有未提交的更新,则千万不要用git pull,否则会覆盖本地更新;直接进入下一步;直到使用git add .git commit -m "submit"git push origin hexo提交备份本地更新到github端的hexo分支后才可以使用git pull(一般是在其他终端,把github的hexo分支更新拉到其他终端设备使用)。

    +

    2.2. blog撰写

    在本地source/_posts下添加和修改md文档实现blog的日常撰写和修改。

    +

    使用命令hexo new "newpostname"可以在hexo/source/_posts下新建一个newpostname.md的文件,这个文件以scaffolds/post.md为模板,修改scaffolds/post.md文件可以修改hexo new命令生成的新blog文件样式。

    +

    2.3. blog备份

    只要blog有更改或者新增,或者配置文件有修改,即工作区(即本地的hexo目录或github.io目录)有文件修改,则建议对文件进行备份到GitHub端的hexo分支。
    用三条命令git add .git commit -m "submit"git push origin hexo备份工作区,包括md博客源文件和hexo部署到github端的hexo分支。三条命令执行前建议通过hexo clean清除缓存和public目录,以免备份不需要的文件。

    +

    2.4. blog发布

    可根据自身需求决定是否发布blog到github.io网站,一般写的blog完整程度比较高时可以发布。使用hexo clean & hexo g -d命令,根据source/_posts下的博客源文件生成public目录(网站html并同步到github端的master分支,即发布blog到github.io网站。

    +

    总结一下,在配置好写作环境后的任意一台终端的日常工作流应该是:

    +
      +
    1. git pull同步远程github库的hexo更新到本地
    2. +
    3. hexo new "newblog"在source/_posts/下添加md格式的blog,或者修改已有的blog
    4. +
    5. git add .,git commit -m "commit notes",git push把修改备份到github端
    6. +
    7. 下次写作重复以上三个步骤
    8. +
    9. 直至blog完善成熟后,用命令hexo clean & hexo g -d生成网站并部署到github.io
    10. +
    +
    +
      +
    • 欢迎关注微信公众号:生信技工
    • +
    • 公众号主要分享生信分析、生信软件、基因组学、转录组学、植物进化、生物学概念等相关内容,包括生物信息学工具的基本原理、操作步骤和学习心得。
    • +
    +]]>
    + + blog + + + blog + hexo + github + markdown + sync + website maintenance + +
    博客撰写的语法和技巧 /2022/04/15/blog_markdown_grammer/ @@ -9099,133 +9099,6 @@ BiocManager的版本与R版本一一对应,安装时如果版本不对会有 awk - - 基因组注释(四):非编码RNA的注释-用Infernal软件对Rfam 12进行RNA注释 - /2022/04/22/omics_genome.annotation_ncRNA/ - - -

    1. ncRNA

    非编码RNA(Non-coding RNA, ncRNA) 包括rRNA,tRNA,snRNA,snoRNA 和microRNA 等不编码蛋白质的RNA,它们转录后直接在RNA 水平上就能行使各自的生物学功能,并不需要翻译成蛋白质。

    -

    2. 注释软件

    -

    如果不是专门研究ncRNA,可以用Infernal注释所有ncRNA。如果需要更精细的注释,则可以选择特定软件注释特定RNA。

    -

    这篇博客是介绍用Infernal程序与Rfam数据库一起用来注释与数据库中已知ncRNA同源的序列(这里用来注释完整的基因组)。注释结果包括tRNA,rRNA,snRNA,snoRNA和miRNA等。

    -

    3. Infernal

    Infernal全称是”INFERence of RNA ALignment”,是一个用来检索DNA序列数据库中RNA序列和结构相似性的软件,通过协方差模型covariance models (CMs)来实现。

    -

    3.1. 安装Infernal

    conda install -c bioconda infernal
    现在安装的是v1.1.4

    -

    安装后可使用的命令包括:

    - -

    4. Rfam

    Rfam是RNA family数据库,包括ncRNA序列和ncRNA的二级结构,每个family用多序列比对和协方差模型covariance model (CM)来表示。

    -
      -
    1. 下载Rfam数据库
    2. -
    - -
      -
    1. 下载clanin
    2. -
    - -

    5. 注释ncRNA

    5.1. 建库

    -

    5.2. 注释

      -
    1. 序列索引
      推荐的参数:
    2. -
    -

    nohup cmscan -Z 512 --cut_ga --rfam --nohmmonly --fmt 2 --tblout sample.tblout -o sample.result --clanin Rfam.clanin Rfam.cm genome.fa &

    - -

    note:-o sample.result要放在Rfam.cm genome.fa前面,否则报错。

    -

    此步骤耗时参考:250Mb基因组,默认线程,耗时2.5h。

    -
      -
    1. 结果文件
    2. -
    - -

    5.3. 整理结果

    5.3.1. 将注释结果整理成gff3文件

    gff3文件可用于提交注释到数据库。

    -

    用perl脚本infernal-tblout2gff.pl实现,脚本来自https://www.cnblogs.com/jessepeng/p/15392809.html。

    -

    perl infernal-tblout2gff.pl --cmscan --fmt2 sample.tblout >sample.infernal.ncRNA.gff3

    -

    5.3.2. 统计各类ncRNA总数

      -
    1. 整理注释结果文件sample.tblout
      提取必需的列,非重叠区域或重叠区域得分高的区域
      awk 'BEGIN{OFS="\t";}{if(FNR==1) print "target_name\taccession\tquery_name\tquery_start\tquery_end\tstrand\tscore\tEvalue"; if(FNR>2 && $20!="=" && $0!~/^#/) print $2,$3,$4,$10,$11,$12,$17,$18; }' sample.tblout >sample.tblout.xls

      -
    2. -
    3. 下载rfam注释

      -
    4. -
    - -

    rfam注释文件rfam_anno.txt包含了所有rfam的类型type和功能描述description信息。

    -
      -
    1. 统计ncRNA注释结果
      awk 'BEGIN{OFS=FS="\t"}ARGIND==1{a[$2]=$5;}ARGIND==2{type=a[$1]; if(type=="") type="Others"; count[type]+=1;}END{for(type in count) print type, count[type];}' rfam_anno.txt sample.tblout.xls >sample.ncRNA.statistic
    2. -
    -

    sample.ncRNA.statistic输出示例:

    -
     riboswitch	1
    ribozyme 1
    tRNA 699
    Others 41
    miRNA 188
    antisense 4
    rRNA 233
    snRNA 698
    - -
      -
    1. 统计细分分类
    2. -
    - -

    比如:snRNA包括snoRNA和splicing,snoRNA包括CD-box,HACA-box和scaRNA。下面用统计CD-box这个细分分类的ncRNA举例。

    - -

    6. references

      -
    1. https://www.cnblogs.com/jessepeng/p/15392809.html
    2. -
    3. http://www.360doc.com/content/18/1119/05/52645714_795799901.shtml
    4. -
    5. https://genehub.wordpress.com/2019/08/08/%E6%A4%8D%E7%89%A9%E5%9F%BA%E5%9B%A0%E7%BB%84ncrna%E9%A2%84%E6%B5%8B%EF%BC%88trna%E3%80%81rrna%E3%80%81snrna%E3%80%81mirna%EF%BC%89/
    6. -
    7. http://embracethesky.cn/2018/07/08/%e4%bd%bf%e7%94%a8infernal%e5%af%b9rfam-12%e8%bf%9b%e8%a1%8crna%e6%b3%a8%e9%87%8a/#more-99
    8. -
    -
    - -]]>
    - - omics - genome - annotation - - - genome - genome annotation - ncRNA - Infernal - Rfam - -
    基因组注释(三):基因功能注释 /2021/05/17/omics_genome.annotation_function/ @@ -9597,6 +9470,133 @@ BiocManager的版本与R版本一一对应,安装时如果版本不对会有 GFAP + + 基因组注释(四):非编码RNA的注释-用Infernal软件对Rfam 12进行RNA注释 + /2022/04/22/omics_genome.annotation_ncRNA/ + + +

    1. ncRNA

    非编码RNA(Non-coding RNA, ncRNA) 包括rRNA,tRNA,snRNA,snoRNA 和microRNA 等不编码蛋白质的RNA,它们转录后直接在RNA 水平上就能行使各自的生物学功能,并不需要翻译成蛋白质。

    +

    2. 注释软件

    +

    如果不是专门研究ncRNA,可以用Infernal注释所有ncRNA。如果需要更精细的注释,则可以选择特定软件注释特定RNA。

    +

    这篇博客是介绍用Infernal程序与Rfam数据库一起用来注释与数据库中已知ncRNA同源的序列(这里用来注释完整的基因组)。注释结果包括tRNA,rRNA,snRNA,snoRNA和miRNA等。

    +

    3. Infernal

    Infernal全称是”INFERence of RNA ALignment”,是一个用来检索DNA序列数据库中RNA序列和结构相似性的软件,通过协方差模型covariance models (CMs)来实现。

    +

    3.1. 安装Infernal

    conda install -c bioconda infernal
    现在安装的是v1.1.4

    +

    安装后可使用的命令包括:

    + +

    4. Rfam

    Rfam是RNA family数据库,包括ncRNA序列和ncRNA的二级结构,每个family用多序列比对和协方差模型covariance model (CM)来表示。

    +
      +
    1. 下载Rfam数据库
    2. +
    + +
      +
    1. 下载clanin
    2. +
    + +

    5. 注释ncRNA

    5.1. 建库

    +

    5.2. 注释

      +
    1. 序列索引
      推荐的参数:
    2. +
    +

    nohup cmscan -Z 512 --cut_ga --rfam --nohmmonly --fmt 2 --tblout sample.tblout -o sample.result --clanin Rfam.clanin Rfam.cm genome.fa &

    + +

    note:-o sample.result要放在Rfam.cm genome.fa前面,否则报错。

    +

    此步骤耗时参考:250Mb基因组,默认线程,耗时2.5h。

    +
      +
    1. 结果文件
    2. +
    + +

    5.3. 整理结果

    5.3.1. 将注释结果整理成gff3文件

    gff3文件可用于提交注释到数据库。

    +

    用perl脚本infernal-tblout2gff.pl实现,脚本来自https://www.cnblogs.com/jessepeng/p/15392809.html。

    +

    perl infernal-tblout2gff.pl --cmscan --fmt2 sample.tblout >sample.infernal.ncRNA.gff3

    +

    5.3.2. 统计各类ncRNA总数

      +
    1. 整理注释结果文件sample.tblout
      提取必需的列,非重叠区域或重叠区域得分高的区域
      awk 'BEGIN{OFS="\t";}{if(FNR==1) print "target_name\taccession\tquery_name\tquery_start\tquery_end\tstrand\tscore\tEvalue"; if(FNR>2 && $20!="=" && $0!~/^#/) print $2,$3,$4,$10,$11,$12,$17,$18; }' sample.tblout >sample.tblout.xls

      +
    2. +
    3. 下载rfam注释

      +
    4. +
    + +

    rfam注释文件rfam_anno.txt包含了所有rfam的类型type和功能描述description信息。

    +
      +
    1. 统计ncRNA注释结果
      awk 'BEGIN{OFS=FS="\t"}ARGIND==1{a[$2]=$5;}ARGIND==2{type=a[$1]; if(type=="") type="Others"; count[type]+=1;}END{for(type in count) print type, count[type];}' rfam_anno.txt sample.tblout.xls >sample.ncRNA.statistic
    2. +
    +

    sample.ncRNA.statistic输出示例:

    +
     riboswitch	1
    ribozyme 1
    tRNA 699
    Others 41
    miRNA 188
    antisense 4
    rRNA 233
    snRNA 698
    + +
      +
    1. 统计细分分类
    2. +
    + +

    比如:snRNA包括snoRNA和splicing,snoRNA包括CD-box,HACA-box和scaRNA。下面用统计CD-box这个细分分类的ncRNA举例。

    + +

    6. references

      +
    1. https://www.cnblogs.com/jessepeng/p/15392809.html
    2. +
    3. http://www.360doc.com/content/18/1119/05/52645714_795799901.shtml
    4. +
    5. https://genehub.wordpress.com/2019/08/08/%E6%A4%8D%E7%89%A9%E5%9F%BA%E5%9B%A0%E7%BB%84ncrna%E9%A2%84%E6%B5%8B%EF%BC%88trna%E3%80%81rrna%E3%80%81snrna%E3%80%81mirna%EF%BC%89/
    6. +
    7. http://embracethesky.cn/2018/07/08/%e4%bd%bf%e7%94%a8infernal%e5%af%b9rfam-12%e8%bf%9b%e8%a1%8crna%e6%b3%a8%e9%87%8a/#more-99
    8. +
    +
    + +]]>
    + + omics + genome + annotation + + + genome + genome annotation + ncRNA + Infernal + Rfam + +
    基因组注释(一):重复序列注释 /2021/08/02/omics_genome.annotation_repeat/ @@ -12666,7 +12666,7 @@ BiocManager的版本与R版本一一对应,安装时如果版本不对会有
  • SEQ_FEAT.TransLen
  • SEQ_FEAT.BadInternalCharacter