首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AnnotationForge函数makeOrgPackage中出现“重复行”错误

AnnotationForge函数makeOrgPackage中出现“重复行”错误
EN

Stack Overflow用户
提问于 2020-09-06 04:15:03
回答 1查看 89关注 0票数 0

我正在使用AnnotationForge包创建一个有机体包,特别是makeOrgPackage函数。我一直在关注这段视频:https://www.bioconductor.org/packages/release/bioc/vignettes/AnnotationForge/inst/doc/MakingNewOrganismPackages.html

当我调用函数时:

代码语言:javascript
运行
复制
makeOrgPackage(gene_info=PA14Sym, chromosome=PA14Chr, go=PA14Go,
               version="0.1",
               maintainer="myname <email@university.edu>",
               author="myname <email@university.edu>",
               outputDir = ".",
               tax_id="208963",
               genus="Pseudomonas",
               species="aeruginosa",
               goTable="go")

我收到这个错误:

代码语言:javascript
运行
复制
Error in FUN(X[[i]], ...) : data.frames in '...' cannot contain duplicated rows

"...“指的是包含注释数据的数据帧集合。我已经确保这些数据帧与vignette中的示例具有完全相同的结构。在"gene_info“和”“dfs中,我删除了所有重复的行。

" GO“df在"GID”(基因ID)列中有重复的值,但是所有的GO值都是唯一的,并且我检查了没有重复的行。例如:

代码语言:javascript
运行
复制
    GID         GO          EVIDENCE
1   PA14_00010  GO:0005524  ISM
2   PA14_00010  GO:0006270  ISM
3   PA14_00010  GO:0006275  ISM
4   PA14_00010  GO:0043565  ISM
5   PA14_00010  GO:0003677  ISM
6   PA14_00010  GO:0003688  ISM
7   PA14_00020  GO:0003677  ISM
8   PA14_00020  GO:0006260  ISM

vignette提供的样本finch数据也是如此;重复的GID,但唯一的GO编号。令人沮丧的是,当我对vignette中的样本数据运行makeOrgPackage函数时,没有出现错误。这里我漏掉了什么?

完整的脚本:

代码语言:javascript
运行
复制
# Load in GO annotated PA14 file, downloaded from Psuedomonas.com
PA14file <- read.csv("../data/GO_annotations/GO_PA14.csv")
colnames(PA14file)
> colnames(PA14file)
[1] "LocusTag"                "GeneName"                "ProductDescription"     
 [4] "StrainName"              "Accession"               "GOTerm"                 
 [7] "Namespace"               "GOEvidenceCode"          "EvidenceOntologyECOCode"
[10] "EvidenceOntologyTerm"    "SimilarToBindsTo"        "PMID"                   
[13] "chrom" 

# PA14 only has 1 chromosome, so create a new column and populate it with 1s.
PA14file$chrom <- '1'

# Create gene_info df, remove duplicate rows
PA14Sym <- PA14file[,c("LocusTag", "GeneName", "ProductDescription")]
PA14Sym <- PA14Sym[PA14Sym[,"GeneName"]!="-",]
PA14Sym <- PA14Sym[PA14Sym[,"ProductDescription"]!="-",]
colnames(PA14Sym) <- c("GID","SYMBOL","GENENAME")
PA14Sym <- PA14Sym[!duplicated(PA14Sym), ]

# Create chromosome df, remove duplicate rows
PA14Chr <- PA14file[,c("LocusTag", "chrom")]
PA14Chr <- PA14Chr[PA14Chr[,"chrom"]!="-",]
colnames(PA14Chr) <- c("GID","CHROMOSOME")
PA14Chr %>% distinct(GID, .keep_all = TRUE)
PA14Chr <- PA14Chr[!duplicated(PA14Chr), ]

# Create go df
PA14Go <- PA14file[,c("LocusTag", "Accession", "GOEvidenceCode")]
PA14Go <- PA14Go[PA14Go[,"GOEvidenceCode"]!="",]
colnames(PA14Go) <- c("GID","GO","EVIDENCE")

# Call the function
makeOrgPackage(gene_info=PA14Sym, chromosome=PA14Chr, go=PA14Go,
               version="0.1",
               maintainer="myname <email@university.edu>",
               author="myname <email@university.edu>",
               outputDir = ".",
               tax_id="208963",
               genus="Pseudomonas",
               species="aeruginosa",
               goTable="go")
EN

回答 1

Stack Overflow用户

发布于 2021-05-31 17:17:42

我今天也遇到了这个问题,在我改为使用dplyr中的distinct()之后,这个函数就可以正常工作了(我的函数与您的函数相同)。

只需尝试在创建的每个部分的尾部添加一段%>% dplyr::distinct(),或者在所有操作之后使用dplyr::distinct()来删除变量中的重复项。

在您的案例中:

代码语言:javascript
运行
复制
library(dplyr)
PA14Sym <- dplyr::distinct(PA14Sym)
PA14Chr <- dplyr::distinct(PA14Chr)
PA14Go <- dplyr::distinct(PA14Go)

希望这些对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63758111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档