From b8c18ec67077bee32da37eafc17ed879434b1638 Mon Sep 17 00:00:00 2001 From: Valentin Loux Date: Tue, 6 Apr 2021 10:42:18 +0200 Subject: [PATCH 01/11] org.*.db update --- tools/proteore_goprofiles/goprofiles.xml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/tools/proteore_goprofiles/goprofiles.xml b/tools/proteore_goprofiles/goprofiles.xml index 693794eb..3a0548c0 100644 --- a/tools/proteore_goprofiles/goprofiles.xml +++ b/tools/proteore_goprofiles/goprofiles.xml @@ -1,13 +1,12 @@ (Human, Mouse) [goProfiles] - R - bioconductor-org.hs.eg.db - bioconductor-org.mm.eg.db - - bioconductor-annotationdbi - bioconductor-biobase - bioconductor-goprofiles + R + bioconductor-org.hs.eg.db + bioconductor-org.mm.eg.db + bioconductor-annotationdbi + bioconductor-biobase + bioconductor-goprofiles From 621cbba0228d82134064b0253ac6a1ff65f39416 Mon Sep 17 00:00:00 2001 From: Valentin Loux Date: Tue, 6 Apr 2021 10:47:05 +0200 Subject: [PATCH 02/11] version --- tools/proteore_goprofiles/goprofiles.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/proteore_goprofiles/goprofiles.xml b/tools/proteore_goprofiles/goprofiles.xml index 3a0548c0..149de486 100644 --- a/tools/proteore_goprofiles/goprofiles.xml +++ b/tools/proteore_goprofiles/goprofiles.xml @@ -1,4 +1,4 @@ - + (Human, Mouse) [goProfiles] R From e9e4508c005acb2ffde0f490cffce66675821430 Mon Sep 17 00:00:00 2001 From: Valentin Loux Date: Tue, 6 Apr 2021 13:44:26 +0200 Subject: [PATCH 03/11] Lint R --- .gitignore | 4 +- tools/proteore_goprofiles/goprofiles.R | 243 +++++++++++++------------ 2 files changed, 133 insertions(+), 114 deletions(-) diff --git a/.gitignore b/.gitignore index 8833821f..8feba070 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,6 @@ tool_test_output.html tool_test_output.json .vscode bioconda_recipes -.gitignore \ No newline at end of file +.gitignore +.Rproj.user +.Rhistory diff --git a/tools/proteore_goprofiles/goprofiles.R b/tools/proteore_goprofiles/goprofiles.R index a68941b3..88777be3 100644 --- a/tools/proteore_goprofiles/goprofiles.R +++ b/tools/proteore_goprofiles/goprofiles.R @@ -1,12 +1,14 @@ -options(warn=-1) #TURN OFF WARNINGS !!!!!! +options(warn = -1) #TURN OFF WARNINGS !!!!!! # Load necessary libraries -suppressMessages(library(goProfiles,quietly = TRUE)) +suppressMessages(library(goProfiles, quietly = TRUE)) # Read file and return file content as data.frame -read_file <- function(path,header){ - file <- try(read.csv(path,header=header, sep="\t",stringsAsFactors = FALSE, quote="\"", check.names = F),silent=TRUE) - if (inherits(file,"try-error")){ +read_file <- function(path, header) { + file <- try(read.csv(path, header = header, + sep = "\t", stringsAsFactors = FALSE, + quote = "\"", check.names = F), silent = TRUE) + if (inherits(file, "try-error")) { stop("File not found !") }else{ return(file) @@ -14,27 +16,28 @@ read_file <- function(path,header){ } #convert a string to boolean -str2bool <- function(x){ - if (any(is.element(c("t","true"),tolower(x)))){ - return (TRUE) - }else if (any(is.element(c("f","false"),tolower(x)))){ - return (FALSE) +str2bool <- function(x) { + if (any(is.element(c("t", "true"), tolower(x)))) { + return(TRUE) + }else if (any(is.element(c("f", "false"), tolower(x)))) { + return(FALSE) }else{ return(NULL) } } -check_ids <- function(vector,type) { - uniprot_pattern = "^([OPQ][0-9][A-Z0-9]{3}[0-9]|[A-NR-Z][0-9]([A-Z][A-Z0-9]{2}[0-9]){1,2})$" - entrez_id = "^([0-9]+|[A-Z]{1,2}_[0-9]+|[A-Z]{1,2}_[A-Z]{1,4}[0-9]+)$" +check_ids <- function(vector, type) { + uniprot_pattern <- + "^([OPQ][0-9][A-Z0-9]{3}[0-9]|[A-NR-Z][0-9]([A-Z][A-Z0-9]{2}[0-9]){1,2})$" + entrez_id <- "^([0-9]+|[A-Z]{1,2}_[0-9]+|[A-Z]{1,2}_[A-Z]{1,4}[0-9]+)$" if (type == "Entrez"){ - return(grepl(entrez_id,vector)) + return(grepl(entrez_id, vector)) } else if (type == "UniProt") { - return(grepl(uniprot_pattern,vector)) + return(grepl(uniprot_pattern, vector)) } } -getprofile = function(ids, id_type, level, duplicate,species) { +getprofile <- function(ids, id_type, level, duplicate, species) { #################################################################### # Arguments # - ids: list of input IDs @@ -43,89 +46,100 @@ getprofile = function(ids, id_type, level, duplicate,species) { # - duplicate: if the duplicated IDs should be removed or not (TRUE/FALSE) # - species #################################################################### - + library(species, character.only = TRUE, quietly = TRUE) - - if (species=="org.Hs.eg.db"){ - package=org.Hs.eg.db - } else if (species=="org.Mm.eg.db"){ - package=org.Mm.eg.db - } else if (species=="org.Rn.eg.db"){ - package=org.Rn.eg.db + + if (species == "org.Hs.eg.db") { + package <- org.Hs.eg.db + } else if (species == "org.Mm.eg.db") { + package <- org.Mm.eg.db + } else if (species == "org.Rn.eg.db") { + package <- org.Rn.eg.db } - + # Check if level is number if (! as.numeric(level) %% 1 == 0) { stop("Please enter an integer for level") } else { - level = as.numeric(level) + level <- as.numeric(level) } - #genes = as.vector(file[,ncol]) - + + # Extract Gene Entrez ID if (id_type == "Entrez") { - id = select(package, ids, "ENTREZID", multiVals = "first") + id <- select(package, ids, "ENTREZID", multiVals = "first") } else { - id = select(package, ids, "ENTREZID", "UNIPROT", multiVals = "first") + id <- select(package, ids, "ENTREZID", "UNIPROT", multiVals = "first") + } + if (duplicate) { + id <- unique(id) } - if (duplicate) { id = unique(id) } - genes_ids = id$ENTREZID[which( ! is.na(id$ENTREZID))] - NAs = id$UNIPROT[which(is.na(id$ENTREZID))] # IDs that have NA ENTREZID - + genes_ids <- id$ENTREZID[which(!is.na(id$ENTREZID))] + nas <- id$UNIPROT[which(is.na(id$ENTREZID))] # IDs that have NA ENTREZID + # Create basic profiles - profile.CC = basicProfile(genes_ids, onto='CC', level=level, orgPackage=species, empty.cats=F, ord=T, na.rm=T) - profile.BP = basicProfile(genes_ids, onto='BP', level=level, orgPackage=species, empty.cats=F, ord=T, na.rm=T) - profile.MF = basicProfile(genes_ids, onto='MF', level=level, orgPackage=species, empty.cats=F, ord=T, na.rm=T) - profile.ALL = basicProfile(genes_ids, onto='ANY', level=level, orgPackage=species, empty.cats=F, ord=T, na.rm=T) - # Print profile - # printProfiles(profile) - + profile.CC <- + basicProfile(genes_ids, onto = "CC", level = level, + orgPackage = species, empty.cats = F, ord = T, na.rm = T) + profile.BP <- + basicProfile(genes_ids, onto = "BP", level = level, + orgPackage = species, empty.cats = F, ord = T, na.rm = T) + profile.MF <- + basicProfile(genes_ids, onto = "MF", level = level, + orgPackage = species, empty.cats = F, ord = T, na.rm = T) + profile.ALL <- + basicProfile(genes_ids, onto = "ANY", level = level, + orgPackage = species, empty.cats = F, ord = T, na.rm = T) + return(c(profile.CC, profile.MF, profile.BP, profile.ALL)) } #return height and width of plot in inches from profile -plot_size_from_nb_onto <- function(profile){ - width=10 - range = seq(25, 2000, by=25) - names(range) = seq(5,242, by=3) - nb_onto = round(nrow(profile[[1]])/25)*25 - if (nb_onto < 25) {nb_onto = 25} - if (nb_onto <= 2000) { - height= as.integer(names(which(range==nb_onto))) - } else { - height=250 - } - return (c(width,height)) +plot_size_from_nb_onto <- function(profile) { + width <- 10 + range <- seq(25, 2000, by = 25) + names(range) <- seq(5, 242, by = 3) + nb_onto <- round(nrow(profile[[1]]) / 25) * 25 + if (nb_onto < 25) { + nb_onto <- 25 + } + if (nb_onto <= 2000) { + height <- as.integer(names(which(range == nb_onto))) + } else { + height <- 250 + } + return(c(width, height)) } -make_plot <- function(profile,percent,title,onto,plot_opt){ - - tmp <- plot_size_from_nb_onto (profile) +make_plot <- function(profile, percent, title, onto, plot_opt) { + + tmp <- plot_size_from_nb_onto(profile) width <- tmp[1] height <- tmp[2] - + if (plot_opt == "PDF") { - file_name=paste("profile_",onto,".pdf",collapse="",sep="") - pdf(file_name, width=width, heigh=height) - } else if (plot_opt == "JPEG"){ - file_name=paste("profile_",onto,".jpeg",collapse="",sep="") - jpeg(file_name,width=width, height=height, units = "in", res=100) - } else if (plot_opt == "PNG"){ - file_name=paste("profile_",onto,".png",collapse="",sep="") - png(file_name,width=width, height=height, units = "in", res=100) + file_name <- paste("profile_", onto, ".pdf", collapse = "", sep = "") + pdf(file_name, width = width, height = height) + } else if (plot_opt == "JPEG") { + file_name <- paste("profile_", onto, ".jpeg", collapse = "", sep = "") + jpeg(file_name, width = width, height = height, units = "in", res = 100) + } else if (plot_opt == "PNG") { + file_name <- paste("profile_", onto, ".png", collapse = "", sep = "") + png(file_name, width = width, height = height, units = "in", res = 100) } - plotProfiles(profile, percentage=percent, multiplePlots=FALSE, aTitle=title) + plotProfiles(profile, percentage = percent, + multiplePlots = FALSE, aTitle = title) dev.off() } -goprofiles = function() { +goprofiles <- function() { args <- commandArgs(TRUE) - if(length(args)<1) { + if (length(args) < 1) { args <- c("--help") } - + # Help section - if("--help" %in% args) { + if ("--help" %in% args) { cat("Selection and Annotation HPA Arguments: --input_type: type of input (list of id or filename) @@ -141,63 +155,66 @@ goprofiles = function() { --duplicate: remove dupliate input IDs (true/false) --text_output: text output filename \n --species") - q(save="no") + q(save = "no") } - + # Parse arguments - parseArgs <- function(x) strsplit(sub("^--", "", x), "=") - argsDF <- as.data.frame(do.call("rbind", parseArgs(args))) - args <- as.list(as.character(argsDF$V2)) - names(args) <- argsDF$V1 - - #save(args,file="/home/dchristiany/proteore_project/ProteoRE/tools/goprofiles/args.Rda") - #load("/home/dchristiany/proteore_project/ProteoRE/tools/goprofiles/args.Rda") - - id_type = args$id_type - input_type = args$input_type + parse_args <- function(x) strsplit(sub("^--", "", x), "=") + args_df <- as.data.frame(do.call("rbind", parse_args(args))) + args <- as.list(as.character(args_df$V2)) + names(args) <- args_df$V1 + + + id_type <- args$id_type + input_type <- args$input_type if (input_type == "text") { - input = unlist(strsplit(strsplit(args$input, "[ \t\n]+")[[1]],";")) + input <- unlist(strsplit(strsplit(args$input, "[ \t\n]+")[[1]], ";")) } else if (input_type == "file") { - filename = args$input - ncol = args$ncol + filename <- args$input + ncol <- args$ncol # Check ncol if (! as.numeric(gsub("c", "", ncol)) %% 1 == 0) { stop("Please enter an integer for level") } else { - ncol = as.numeric(gsub("c", "", ncol)) + ncol <- as.numeric(gsub("c", "", ncol)) } - header = str2bool(args$header) + header <- str2bool(args$header) # Get file content - file = read_file(filename, header) + file <- read_file(filename, header) # Extract Protein IDs list - input = unlist(strsplit(as.character(file[,ncol]),";")) + input <- unlist(strsplit(as.character(file[, ncol]), ";")) } - input = input [which(!is.na(gsub("NA",NA,input)))] - - if (! any(check_ids(input,id_type))){ - stop(paste(id_type,"not found in your ids list, please check your IDs in input or the selected column of your input file")) + input <- input [which(!is.na(gsub("NA", NA, input)))] + + if (! any(check_ids(input, id_type))) { + stop(paste(id_type, + "not found in your ids list, please check your IDs in input + or the selected column of your input file")) } - - ontoopt = strsplit(args$onto_opt, ",")[[1]] - onto_pos = as.integer(gsub("BP",3,gsub("MF",2,gsub("CC",1,ontoopt)))) - plotopt = args$plot_opt - level = args$level - per = as.logical(args$per) - title = args$title - duplicate = str2bool(args$duplicate) - text_output = args$text_output - species=args$species - - profiles = getprofile(input, id_type, level, duplicate,species) - + + ontoopt <- strsplit(args$onto_opt, ",")[[1]] + onto_pos <- as.integer(gsub("BP", 3, gsub("MF", 2, gsub("CC", 1, ontoopt)))) + plotopt <- args$plot_opt + level <- args$level + per <- as.logical(args$per) + title <- args$title + duplicate <- str2bool(args$duplicate) + text_output <- args$text_output + species <- args$species + + profiles <- getprofile(input, id_type, level, duplicate, species) + for (index in onto_pos) { - onto = names(profiles[index]) - profile=profiles[index] - make_plot(profile,per,title,onto,plotopt) - text_output=paste("goProfiles_",onto,"_",title,".tsv",sep="",collapse="") - profile = as.data.frame(profile) - profile <- as.data.frame(apply(profile, c(1,2), function(x) gsub("^$|^ $", NA, x))) #convert "" and " " to NA - write.table(profile, text_output, sep="\t", row.names = FALSE, quote=FALSE, col.names = T) + onto <- names(profiles[index]) + profile <- profiles[index] + make_plot(profile, per, title, onto, plotopt) + text_output <- paste("goProfiles_", onto, "_", + title, ".tsv", sep = "", collapse = "") + profile <- as.data.frame(profile) + profile <- as.data.frame(apply(profile, c(1, 2), + function(x) gsub("^$|^ $", NA, x))) #convert "" and " " to NA + write.table(profile, text_output, sep = "\t", + row.names = FALSE, quote = FALSE, col.names = T) } } From 2a5dedd74f49935680d4700a7988c8f50629f957 Mon Sep 17 00:00:00 2001 From: Valentin Loux Date: Tue, 6 Apr 2021 14:09:31 +0200 Subject: [PATCH 04/11] Last linting R --- tools/proteore_goprofiles/goprofiles.R | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/tools/proteore_goprofiles/goprofiles.R b/tools/proteore_goprofiles/goprofiles.R index 88777be3..397805cf 100644 --- a/tools/proteore_goprofiles/goprofiles.R +++ b/tools/proteore_goprofiles/goprofiles.R @@ -27,10 +27,12 @@ str2bool <- function(x) { } check_ids <- function(vector, type) { + # nolint start uniprot_pattern <- "^([OPQ][0-9][A-Z0-9]{3}[0-9]|[A-NR-Z][0-9]([A-Z][A-Z0-9]{2}[0-9]){1,2})$" entrez_id <- "^([0-9]+|[A-Z]{1,2}_[0-9]+|[A-Z]{1,2}_[A-Z]{1,4}[0-9]+)$" - if (type == "Entrez"){ + # nolint end + if (type == "Entrez") { return(grepl(entrez_id, vector)) } else if (type == "UniProt") { return(grepl(uniprot_pattern, vector)) @@ -50,11 +52,11 @@ getprofile <- function(ids, id_type, level, duplicate, species) { library(species, character.only = TRUE, quietly = TRUE) if (species == "org.Hs.eg.db") { - package <- org.Hs.eg.db + package <- org.Hs.eg.db #nolint } else if (species == "org.Mm.eg.db") { - package <- org.Mm.eg.db + package <- org.Mm.eg.db #nolint } else if (species == "org.Rn.eg.db") { - package <- org.Rn.eg.db + package <- org.Rn.eg.db #nolint } # Check if level is number @@ -67,15 +69,15 @@ getprofile <- function(ids, id_type, level, duplicate, species) { # Extract Gene Entrez ID if (id_type == "Entrez") { - id <- select(package, ids, "ENTREZID", multiVals = "first") + id <- select(package, ids, "ENTREZID", multiVals = "first") #nolint } else { - id <- select(package, ids, "ENTREZID", "UNIPROT", multiVals = "first") + id <- select(package, ids, "ENTREZID", "UNIPROT", multiVals = "first") #nolint } if (duplicate) { id <- unique(id) } genes_ids <- id$ENTREZID[which(!is.na(id$ENTREZID))] - nas <- id$UNIPROT[which(is.na(id$ENTREZID))] # IDs that have NA ENTREZID + nas <- id$UNIPROT[which(is.na(id$ENTREZID))] # IDs that have NA ENTREZID #nolint # Create basic profiles profile.CC <- From d0024a728f004e09a55884e988f1d57533c84d7f Mon Sep 17 00:00:00 2001 From: Valentin Loux Date: Tue, 6 Apr 2021 14:55:26 +0200 Subject: [PATCH 05/11] Requirements update --- tools/proteore_goprofiles/goprofiles.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tools/proteore_goprofiles/goprofiles.xml b/tools/proteore_goprofiles/goprofiles.xml index 149de486..94ee7fa2 100644 --- a/tools/proteore_goprofiles/goprofiles.xml +++ b/tools/proteore_goprofiles/goprofiles.xml @@ -1,13 +1,13 @@ (Human, Mouse) [goProfiles] - R - bioconductor-org.hs.eg.db - bioconductor-org.mm.eg.db - bioconductor-annotationdbi - bioconductor-biobase - bioconductor-goprofiles - + R + bioconductor-org.hs.eg.db + bioconductor-org.mm.eg.db + bioconductor-annotationdbi + bioconductor-biobase + bioconductor-go.db + bioconductor-goprofiles From 9d697a415e0cab09744105ed6cda497d04623b20 Mon Sep 17 00:00:00 2001 From: Valentin Loux Date: Tue, 6 Apr 2021 16:14:14 +0200 Subject: [PATCH 06/11] requirements --- tools/proteore_goprofiles/goprofiles.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/proteore_goprofiles/goprofiles.xml b/tools/proteore_goprofiles/goprofiles.xml index 94ee7fa2..ed28a16e 100644 --- a/tools/proteore_goprofiles/goprofiles.xml +++ b/tools/proteore_goprofiles/goprofiles.xml @@ -1,7 +1,7 @@ (Human, Mouse) [goProfiles] - R + r-base bioconductor-org.hs.eg.db bioconductor-org.mm.eg.db bioconductor-annotationdbi From 263f698289928eeef6c8daab41e26e3cd0cad6c2 Mon Sep 17 00:00:00 2001 From: Valentin Loux Date: Tue, 6 Apr 2021 17:05:40 +0200 Subject: [PATCH 07/11] test update (file names) --- tools/proteore_goprofiles/goprofiles.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/proteore_goprofiles/goprofiles.xml b/tools/proteore_goprofiles/goprofiles.xml index ed28a16e..aa9c2c8f 100644 --- a/tools/proteore_goprofiles/goprofiles.xml +++ b/tools/proteore_goprofiles/goprofiles.xml @@ -134,9 +134,9 @@ - - - + + + From 674e1620d3fbd249fe8dd2c2fc1ff6fd1c906b20 Mon Sep 17 00:00:00 2001 From: Valentin Loux Date: Tue, 6 Apr 2021 17:22:14 +0200 Subject: [PATCH 08/11] Update help & test output --- tools/proteore_goprofiles/test-data/GO_Profile_text_output.tsv | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tools/proteore_goprofiles/test-data/GO_Profile_text_output.tsv diff --git a/tools/proteore_goprofiles/test-data/GO_Profile_text_output.tsv b/tools/proteore_goprofiles/test-data/GO_Profile_text_output.tsv new file mode 100644 index 00000000..e69de29b From 6bc2c32177acd823d5025bc90a562e6e6b2a233a Mon Sep 17 00:00:00 2001 From: Valentin Loux Date: Tue, 6 Apr 2021 17:22:24 +0200 Subject: [PATCH 09/11] Update help & test output --- tools/proteore_goprofiles/goprofiles.xml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tools/proteore_goprofiles/goprofiles.xml b/tools/proteore_goprofiles/goprofiles.xml index aa9c2c8f..77f26b6e 100644 --- a/tools/proteore_goprofiles/goprofiles.xml +++ b/tools/proteore_goprofiles/goprofiles.xml @@ -182,11 +182,12 @@ Text output: with the following information GO category description (e.g.BP.Desc .. class:: infomark Packages used: - - bioconductor-org.hs.eg.db v3.5.0 - - bioconductor-org.mm.eg.db v3.5.0 - - bioconductor-annotationdbi v1.40.0 - - bioconductor-biobase v2.98.0 - - goprofiles v1.38.0 + - bioconductor-org.hs.eg.db v3.12.0 + - bioconductor-org.mm.eg.db v3.12.0 + - bioconductor-annotationdbi v1.52.0 + - bioconductor-biobase v2.50.0 + - bioconductor-go.db v3.12.1 + - goprofiles v1.52.0 ----- From 3332c930660a6603545659c89bc6c07eaa3c6cdd Mon Sep 17 00:00:00 2001 From: combesf Date: Thu, 3 Jun 2021 15:40:21 +0200 Subject: [PATCH 10/11] Bjorn suggestions --- tools/proteore_goprofiles/.shed.yml | 11 +------ tools/proteore_goprofiles/goprofiles.xml | 41 +++++++++++------------- 2 files changed, 20 insertions(+), 32 deletions(-) diff --git a/tools/proteore_goprofiles/.shed.yml b/tools/proteore_goprofiles/.shed.yml index b164f850..061751af 100644 --- a/tools/proteore_goprofiles/.shed.yml +++ b/tools/proteore_goprofiles/.shed.yml @@ -2,13 +2,4 @@ categories: [Proteomics] description: ProteoRE goProfiles long_description: Statistical analysis of functional profiles name: proteore_goprofiles -owner: proteore -include: - - README.rst - - goprofiles.R - - goprofiles.xml - - test-data/ID_Converted_FKW_Lacombe_et_al_2017_OK.txt - - test-data/GO_Profile_text_output.txt - - test-data/profile.BP.pdf - - test-data/profile.CC.pdf - - test-data/profile.MF.pdf \ No newline at end of file +owner: galaxyp diff --git a/tools/proteore_goprofiles/goprofiles.xml b/tools/proteore_goprofiles/goprofiles.xml index 77f26b6e..ee27cfc6 100644 --- a/tools/proteore_goprofiles/goprofiles.xml +++ b/tools/proteore_goprofiles/goprofiles.xml @@ -1,4 +1,4 @@ - + (Human, Mouse) [goProfiles] r-base @@ -9,30 +9,27 @@ bioconductor-go.db bioconductor-goprofiles - - - - $log + --id_type='$input.id_type' + --onto_opt='$onto_opt' + --plot_opt='$plot_opt' + --level='$level' + --per='$per' + --title='$title' + --duplicate='$duplicate' + --text_output='$text_output' + --species='$species' > $log ]]> From f325f91c17f4d26df8949d0ab6dd840ce284a307 Mon Sep 17 00:00:00 2001 From: combesf Date: Thu, 3 Jun 2021 16:02:48 +0200 Subject: [PATCH 11/11] typo --- tools/proteore_goprofiles/goprofiles.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/proteore_goprofiles/goprofiles.xml b/tools/proteore_goprofiles/goprofiles.xml index ee27cfc6..e972ceb0 100644 --- a/tools/proteore_goprofiles/goprofiles.xml +++ b/tools/proteore_goprofiles/goprofiles.xml @@ -9,7 +9,7 @@ bioconductor-go.db bioconductor-goprofiles -