美文网首页生信
利用R处理基因组数据

利用R处理基因组数据

作者: 小潤澤 | 来源:发表于2020-03-19 16:53 被阅读0次

    基本操作

    比方说我们读入人类基因组文件


    左半部分
    右半部分
    genes=read.table("hg19_gene_table.txt", comment="", header=TRUE)
    #统计基因数量
    nrow(genes)
    #统计基因长度
    geneLen=genes$txEnd - genes$txStart
    #寻找最长的基因
    idx=which.max(geneLen)
    genes[idx, ]
    #寻找最长的外显子
    idx=which.max(nExon)
    

    利用BSgenome

    对于刚安装R的同学,安装BSgenome可能会报错,那是没有安装Rtools的原因,对于win用户,安装Rtools可以直接在官网上下载,然后手动安装,然后配制环境变量到Rtools安装的那个路径

    利用Rstudio可以直接进行安装,安装Rtools是通过installr来实现的

    install.packages("installr")
    install.packages("stringr")    ###依赖包
    library(stringr)
    library(installr)
    
    install.Rtools()
    

    然后选择下合适的Rtools版本即可
    我们进入正题

    library(BSgenome)
    available.genomes()
    library(BSgenome.Hsapiens.UCSC.hg19)
    
    #提取一号染色体
    Seq= Hsapiens [["chr1"]]
    #统计ATCG的数量
    bases=alphabetFrequency(Seq,baseOnly=TRUE)
    bases[1:4]
    #统计碱基占比和GC含量
    ntotBases=sum(bases[1:4])
    baseFreq=bases[1:4]/ntotBases
    GCcontent=baseFreq["C"]+baseFreq["G"]
    
    #把含有cg的位置匹配下来
    cg=matchPattern("CG", Seq)
    ncg=length(cg)
    
    #以1号染色体为例
    ##计算每1000bp窗口GC含量密度
    ss=seq(1, length(Seq), by=1000) #划分窗口
    ss=ss[-length(ss)] ## remove the last one
    Seq.set=DNAStringSet(Seq, start=ss, end=ss+999) #每1000bp的序列,构造对象
    ff=alphabetFrequency(Seq.set, baseOnly=TRUE) #统计每1000bp每个碱基的频率
    pCG=(ff[,"C"]+ff[,"G"])/rowSums(ff)
    hist(pCG[pCG>0],100)
    
    ff hist
    library(GenomicFeatures)
    txdb=makeTxDbFromUCSC(genom="hg19",tablename="refGene") ## 提供个接口,连接hg.19
    genes.hg19 = genes(txdb)
    
    ## get transcriptional start site.
    ## Note that txEnd is the start site for genes on "-" strand
    tss=start(genes.hg19)
    idx=which(strand(genes.hg19)=="-")
    tss[idx]=end(genes.hg19)[idx]
    

    加载时需要事先先安装RMariaDB这个接口

    #创造GRanges对象,提取TSS
    allchrs = as.character(seqnames(genes.hg19))
    idx=c(grep("random", allchrs),grep("hap", allchrs))
    ## create ranges with TSS +/- 500 bp
    TSS=GRanges(seqnames=Rle(allchrs[-idx]), ranges=IRanges(tss[-idx]-500,tss[-idx]+500))
    

    那么要看看CG出现的区段,是否与TSS有交互,那么由cg和TSS这两个对象中,提取相应位置,写成一张表,做个判断就可以了,结合甲基化测序数据,那么就知道哪些TSS有被甲基化

    相关文章

      网友评论

        本文标题:利用R处理基因组数据

        本文链接:https://www.haomeiwen.com/subject/mfvkyhtx.html