r - AnnotationForge 函数 makeOrgPackage 中的“重复行”错误
问题描述
我正在使用 AnnotationForge 包创建一个有机体包,特别是函数 makeOrgPackage。我一直在关注这个小插曲:https ://www.bioconductor.org/packages/release/bioc/vignettes/AnnotationForge/inst/doc/MakingNewOrganismPackages.html
当我调用函数时:
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")
我收到此错误:
Error in FUN(X[[i]], ...) : data.frames in '...' cannot contain duplicated rows
“...”是指包含注释数据的数据框集。我已确保这些数据帧与小插图中的示例具有完全相同的结构。在“gene_info”和“chromosome” dfs 中,我删除了所有重复的行。
“go” df 在“GID”(基因 ID)列中具有重复值,但所有 GO 值都是唯一的,并且我检查过不存在重复的行。例如:
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
插图提供的样本雀科数据也是如此;重复的 GID,但唯一的 GO 编号。令人沮丧的是,当我为小插图中的示例数据运行 makeOrgPackage 函数时,没有错误。我在这里想念什么?
完整脚本:
# 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")
解决方案
我今天也遇到了这个问题,刚改用dplyr中的distinct()后,这个函数就可以正常工作了。(我的函数和你的一样。)
%>% dplyr::distinct()
只需尝试在所有操作之后在创建或使用的每个部分的尾部添加一块,dplyr::distinct()
以删除变量中的重复项。
在你的情况下:
library(dplyr)
PA14Sym <- dplyr::distinct(PA14Sym)
PA14Chr <- dplyr::distinct(PA14Chr)
PA14Go <- dplyr::distinct(PA14Go)
希望这些可以帮助你。
推荐阅读
- python - 根据R中的特定列值提取行
- angular - 如何通过rxjs从对象数组中过滤出元素数组
- dictionary - 我可以使用 defer 删除地图的元素吗?
- javascript - Axios mock - 多个嵌套的 axios 请求 - 问题以及如何测试它?
- python - QhullError:QH6154 Qhull 精度错误:初始单纯形是平坦的(面 1 与内点共面)
- neo4j - Neo4j:标签传播算法(LPA)结果中迭代的含义
- amazon-web-services - AppSync GraphQL 将 1-1 映射到现有的 GraphQL API
- java - 我们如何以编程方式隐藏android中的应用程序?
- mysql - 从 Ubuntu 18.04 升级到 20.04 后启动 MySQL 服务器的问题
- java - 我如何证明该算法给出了在办公桌抽屉中找到欧元的正确概率?