乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      測序了,然后呢(四)OrgDb與富集分析

       生物_醫(yī)藥_科研 2019-01-22

        今天是生信星球陪你的第256天


         大神一句話,菜鳥跑半年。我不是大神,但我可以縮短你走彎路的半年~

         就像歌兒唱的那樣,如果你不知道該往哪兒走,就留在這學(xué)點(diǎn)生信好不好~

         這里有豆豆和花花的學(xué)習(xí)歷程,從新手到進(jìn)階,生信路上有你有我!

      豆豆寫于19.1.20-21

      為什么要搞全基因組測序(一)

      測序了,然后呢(二)基因功能注釋

      測序了,然后呢(三)功能注釋整合流程

      要進(jìn)行GO或者KEGG富集分析,就需要知道每個(gè)基因?qū)?yīng)什么樣的GO/KEGG分類,OrgDb就是存儲(chǔ)不同數(shù)據(jù)庫基因ID之間對(duì)應(yīng)關(guān)系,以及基因與GO等注釋的對(duì)應(yīng)關(guān)系的 R 軟件包

      如果自己研究的物種不在http:///packages/release/BiocViews.html#___OrgDb 之列,很大可能就需要自己構(gòu)建OrgDb,然后用clusterProfiler分析

      所以本次的內(nèi)容都是基于非模式生物

      --------------------------------------------------------------------------

      發(fā)推送的時(shí)候花花和豆豆就在看我們十二期的學(xué)員們?cè)诤啎谄咛斓母邢耄吹暮酶袆?dòng),謝謝你們的支持,看到你們真的沒有白付出,我們很欣慰。
      今天其實(shí)很累,但是寫推送讓我重回活力,我愛寫推送,我愛和你們交流
      感謝所有關(guān)注我們的小伙伴,我們會(huì)更加努力,招財(cái)貓送你們好運(yùn)?。。?/p>

      分類

      非模式生物要想找到自己的注釋包,又分成兩類:

      • 一類是在AnnotationHub(https:///packages/release/bioc/html/AnnotationHub.html)中存在的,例如棉鈴蟲

      • 另一類是在AnnotationHub也不存在相應(yīng)物種,就需要用AnnotationForge( https:///packages/release/bioc/html/AnnotationForge.html )來自己構(gòu)建

      第一類:利用AnnotationHub得到org.db

      下面我以棉鈴蟲為例

      首先下載并加載AnnotationHub

      options('repos'= c(CRAN='https://mirrors.tuna./CRAN/'))
      options(BioC_mirror='http://mirrors.ustc.edu.cn/bioc/')

      if (!requireNamespace('BiocManager', quietly = TRUE))
          install.packages('BiocManager')
      BiocManager::install('AnnotationHub', version = '3.8')
      library(AnnotationHub)

      然后加載現(xiàn)有的物種database

      hub <>#這一步受限于網(wǎng)速,不成功的話多試幾次
      # 調(diào)用圖形界面查看物種
      display(hub) 
      # 或者根據(jù)物種拉丁文名稱查找
      query(hub,'helicoverpa')
      #   'object[['AH66950']]' 

                  title                                      
        AH66950 | org.Helicoverpa_armigera.eg.sqlite         
        AH66951 | org.Heliothis_(Helicoverpa)_armigera.eg....
      # 這里AH66950是我們需要的
      # 然后下載這個(gè)sqlite數(shù)據(jù)庫
      ha.db <>'AH66950']]
      #查看前幾個(gè)基因(Entrez命名)
      head(keys(ha.db))
      #查看包含的基因數(shù)
      length(keys(ha.db)) 
      #查看包含多少種ID
      columns(ha.db)
      #查看前幾個(gè)基因的ID
      select(ha.db, keys(ha.db)[1:3], 
             c('REFSEQ''SYMBOL'), #想獲取的ID
             'ENTREZID')
      #得到結(jié)果
        ENTREZID         REFSEQ SYMBOL
      1  9977712 YP_004021052.1   COX1
      2  9977713 YP_004021053.1   COX2
      3  9977714 YP_004021054.1   ATP8
      #保存到文件
      saveDb(ha.db, 'Harms-AH66950.sqlite')
      #之后再使用直接加載進(jìn)來
      maize.db <>'Harms-AH66950.sqlite')
      annotation_hub圖形界面

      參考:https://mp.weixin.qq.com/s/lHKZtzpN2k9uPN7e6HjH3w

      第二類:利用AnnotationForge得到org.db

      通過上次的推送(功能注釋整合流程),我們知道了怎樣利用eggnog-mapper去人工構(gòu)建注釋、富集橋梁

      上次選取的是一個(gè)病毒的小例子,這次可以用芝麻(Sesame)做演示

      先下載蛋白序列

      wget http://www./SesameFG/BLAST_search/G608_contig_2014-08-29.FgeneSH.pep.rar
      # 解壓后上傳

      因?yàn)榻y(tǒng)計(jì)了下有38406條序列,因此使用diamond來進(jìn)行功能注釋

      # 前提是自己安裝好eggnog-mapper并且下載好相應(yīng)的數(shù)據(jù)庫
      emapper.py -m diamond \
                 -i sesame.fa \
                 -o diamond \
                 --cpu 19
      # 得到如下信息,然后進(jìn)行處理,只保留表頭query_name這一行的注釋信息,去掉頭尾的# 等信息
      sed -i '/^# /d' diamond.emapper.annotations 
      sed -i 's/#//' diamond.emapper.annotations 
      sesame-diamond

      關(guān)于結(jié)果解釋:https://github.com/jhcepas/eggnog-mapper/wiki/Results-Interpretation

      其中關(guān)于COG的介紹:倒數(shù)第二列

      COG functional categories: COG functional category inferred from best matching OG 【會(huì)給出一個(gè)大寫字母,每一個(gè)大寫字母都有自己的解釋:COG_explanation】

      STEP1:自己構(gòu)建的話,首先需要讀入文件

      egg_f <>'diamond.emapper.annotations'
      egg <>'\t')
      egg[egg=='']<>NA #這個(gè)代碼來自花花的指導(dǎo)(將空行變成NA,方便下面的去除)

      STEP2: 從文件中挑出基因query_name與eggnog注釋信息

      gene_info <- egg %>%
              dplyr::select(GID = query_name, GENENAME = `eggNOG annot`) %>% na.omit()

      STEP3-1:挑出query_name與GO注釋信息

      gterms <- egg %>%
              dplyr::select(query_name, GO_terms) %>% na.omit()

      STEP3-2:我們想得到query_name與GO號(hào)的對(duì)應(yīng)信息

      # 先構(gòu)建一個(gè)空的數(shù)據(jù)框(弄好大體的架構(gòu),表示其中要有GID =》query_name,GO =》GO號(hào), EVIDENCE =》默認(rèn)IDA)
      # 關(guān)于IEA:就是一個(gè)標(biāo)準(zhǔn),除了這個(gè)標(biāo)準(zhǔn)以外還有許多。IEA就是表示我們的注釋是自動(dòng)注釋,無需人工檢查http://wiki./index.php/Inferred_from_Electronic_Annotation_(IEA)
      # 兩種情況下需要用IEA:1. manually constructed mappings between external classification systems and GO terms; 2.automatic transfer of annotation to orthologous gene products.
      gene2go <>
                               GO = character(),
                               EVIDENCE = character())

      # 然后向其中填充:注意到有的query_name對(duì)應(yīng)多個(gè)GO,因此我們以GO號(hào)為標(biāo)準(zhǔn),每一行只能有一個(gè)GO號(hào),但query_name和Evidence可以重復(fù)
      for (row in 1:nrow(gterms)) {
              gene_terms <>'GO_terms'], ',', simplify = FALSE)[[1]]  
              gene_id <>'query_name'][[1]]
              tmp <>
                                    GO = gene_terms,
                                    EVIDENCE = rep('IEA', length(gene_terms)))
              gene2go <>
          }  

      STEP4-1: 挑出query_name與KEGG注釋信息

      gene2ko <- egg %>%
              dplyr::select(GID = query_name, KO = KEGG_KOs) %>%
              na.omit()

      STEP4-2: 得到pathway2name, ko2pathway

      這一步不需要管代碼什么意思,只需要知道它可以幫我們得到以上兩個(gè)文件就好

      if(F){
          # 需要下載 json文件(這是是經(jīng)常更新的)
          # https://www./kegg-bin/get_htext?ko00001
          # 代碼來自:http://www./course/225/task/4861/show
          library(jsonlite)
          library(purrr)
          library(RCurl)

          update_kegg <>function(json = 'ko00001.json') {
              pathway2name <>
              ko2pathway <>

              kegg <>

              for (a in seq_along(kegg[['children']][['children']])) {
                  A <>'children']][['name']][[a]]

                  for (b in seq_along(kegg[['children']][['children']][[a]][['children']])) {
                      B <>'children']][['children']][[a]][['name']][[b]] 

                      for (c in seq_along(kegg[['children']][['children']][[a]][['children']][[b]][['children']])) {
                          pathway_info <>'children']][['children']][[a]][['children']][[b]][['name']][[c]]

                          pathway_id <>'ko[0-9]{5}')[1]
                          pathway_name <>' \\[PATH:ko[0-9]{5}\\]''') %>% str_replace('[0-9]{5} ''')
                          pathway2name <>

                          kos_info <>'children']][['children']][[a]][['children']][[b]][['children']][[c]][['name']]

                          kos <>'K[0-9]*')[,1]

                          ko2pathway <>
                      }
                  }
              }

              save(pathway2name, ko2pathway, file = 'kegg_info.RData')
          }

          update_kegg(json = 'ko00001.json')

      }

      STEP5:  利用GO將gene與pathway聯(lián)系起來,然后挑出query_name與pathway注釋信息

      load(file = 'kegg_info.RData')
      gene2pathway <- gene2ko %>% left_join(ko2pathway, by = 'KO') %>% 
              dplyr::select(GID, Pathway) %>%
              na.omit()

      STEP6: 制作自己的Orgdb

      # 查詢物種的Taxonomy,例如要查sesame
      # https://www.ncbi.nlm./taxonomy/?term=sesame
      tax_id = '4182'
      genus = 'Sesamum' 
      species = 'indicum'

      makeOrgPackage(gene_info=gene_info,
                         go=gene2go,
                         ko=gene2ko,
                         pathway=gene2pathway,
                         version='0.0.1',
                         outputDir = '.',
                         tax_id=tax_id,
                         genus=genus,
                         species=species,
                         goTable='go')
      sesame.orgdb <>'org.', str_to_upper(str_sub(genus, 11)) , species, '.eg.db', sep = '')

      有了Orgdb就可以做富集分析了

      # enrichGO最主要的目的就是將基因編號(hào)轉(zhuǎn)換成GO號(hào)
      ego <>
                      #模式物種
                      #OrgDb = org.Mm.eg.db,
                      #非模式物種,例如芝麻
                      OrgDb = sesame.orgdb,
                      ont = 'BP'#或MF或CC
                      pAdjustMethod = 'BH',
                      #pvalueCutoff  = 0.01,
                      qvalueCutoff  = 0.01
      # 同理也能做enrichKEGG

      剩下的可以參考:http:///packages/release/bioc/vignettes/clusterProfiler/inst/doc/clusterProfiler.html#supported-organisms

      最后,如果不想構(gòu)建orgdb還想做富集分析

      滿足需求永遠(yuǎn)是第一生產(chǎn)力,如果你只想用一次,那么clusterProfiler的enricher可以學(xué)習(xí)一下

      主要的兩個(gè)參數(shù)需要注意:gene 是基因ID,TERM2GENE 是GO/KEGG terms與基因ID的對(duì)應(yīng),例如上面圖片中的GO_terms、KEGG_KOs等eggnog-mapper結(jié)果,提取出來就好。對(duì)于沒有對(duì)應(yīng)terms的基因ID,那我們就把它們?nèi)サ簟?/p>

      參考:http://guangchuangyu./2015/05/use-clusterprofiler-as-an-universal-enrichment-analysis-tool/


        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多