gene ID 转换工具

作者: caokai001 | 来源:发表于2019-05-07 14:35 被阅读4次

    昨天对于基因ID转换烦恼了一晚上,差异peak 有些没有注释到基因,对应的位置用NA补上了。


    差异peak 对于的基因列表

    于是google 找工具。
    ID 转换工具
    ID工具集合
    在线工具 ---对大文件只能粘贴,但是不会破溃

    gprofiler-小量的基因ID转换网站推荐这个,速度比较快,但是上万个基因会卡死

    于是尝试工具的API 接口,来转换.
    (mygene 权哥推荐的,自己尝试了gprofiler)

    开始!

    1.mygene python API

    ###Convert gene ID
    ##python3 接受参数:usage python 脚本名 输入文件 
    ##refrence https://www.biostars.org/p/22/
    ##在线工具需要联网
    import glob
    import pandas as pd
    import sys
    import mygene
    mg = mygene.MyGeneInfo()
    
    A=[]
    with open(sys.argv[1],"r") as f:
        for line in f.readlines():
            A.append(line.strip())
    ##A=A[1:5]
    mg = mygene.MyGeneInfo()
    B=mg.querymany(A,scopes="ensembltranscript",fields=[ "entrezgene", "symbol","name","alias"],species="human",as_dataframe=True)
    B.to_csv(str(sys.argv[1])+".convert.csv")
    
    运行:
    for i in *.genelist;do (nohup python gene_convert.py $i &);done
    

    2.gprofiler R包+并行计算

    ###usage : Rscript 脚本.r input.file output.file
    library("gProfileR")
    library("dplyr")
    library("parallel")  ###并行计算
    library ("plyr")
    args=commandArgs(T)
    input.file<-args[1]
    output.file<-args[2]
    
    A=read.table(input.file)
    A=head(A$V1,20)
    ###定义转换ID函数
    fun <- function(x){
      T<-gconvert(x, organism = "hsapiens", target="ENTREZGENE", filter_na =F)
      T<-tbl_df(T)#%>%arrange(alias.number)
      return(T)
    }
    ##可用核心数目
    cl.cores <- detectCores()
    #利用并行计算
    cl <- makeCluster(3)  # 初始化四核心集群
    clusterEvalQ(cl,library("gProfileR"))
    clusterEvalQ(cl,library("dplyr"))
    results <- parLapply(cl,A,fun)#调用parLapply并行计算平方函数
    df <- ldply (results, data.frame)#整合结果
    stopCluster(cl) # 关闭集群
    write.table(df,output.file,quote=FALSE,row.names=FALSE,sep=",")
    
    tips:

    1.mygene 发现output 行数比我genelis行数多,不知道啥问题。
    2.clusterEvalQ(cl,library("gProfileR")) 是将包加载到节点上去,library("parallel") 只能加载基础包。

    biomaRt

    library(biomaRt)
    mart <- useDataset("hsapiens_gene_ensembl", useMart("ensembl"))
    genes <- getBM(
         filters="ensembl_gene_id",
         attributes=c("ensembl_gene_id", "entrezgene"),
         values=ensembl.genes,
         mart=mart)
    

    参考:

    解决并行找不到包
    R 多线程

    image.png
    list 转换data frame
    并行计算R

    相关文章

      网友评论

        本文标题:gene ID 转换工具

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