COG_names <- function(df,UniqueCOGs = "UniqueCOGs"){
# see https://stackoverflow.com/questions/9521009/
# loads the categories object into env; otherwise, tests wont work
#data(categories, envir=environment())
#data(funGroups, envir=environment())
df <- as.data.frame(df)
# ensure that only one listed per row
if (any(grepl(" ",df$UniqueCOGs ))){
warning("No more than a single COG should be provided per row! If multiple CDS on a sequence, split into multiple rows. For now, we will select the first... ")
# select the first one only
for(i in 1: nrow(df)){
df[i, UniqueCOGs] <- strsplit(df[i, UniqueCOGs], " ")[[1]][1]
}
}
df <- dplyr::left_join(df, categories, by=c(UniqueCOGs = "COG"))
df <- dplyr::rename(df, Code = "func", COG_Name = "name")
df <- dplyr::left_join(df, funGroups, by= "Code")
df <- dplyr::rename(df, COG_Category = "Name")
# for(i in 1:len){
# # print(df$Group)
#
# if(!is.null(df[i,UniqueCOGs]) & !is.na(df[i,UniqueCOGs]) & as.character(df[i,UniqueCOGs]) != "" & any(stringr::str_detect(categories$COG,as.character(df[i,UniqueCOGs])))){
# # print(i)
# res <- categories[stringr::str_detect(categories$COG,as.character(df[,UniqueCOGs][i])),]
# df$COG_Name[i] <- res$name
# df$GroupLetters[i] <- res$func
# # print(df$GroupLetter[i])
# GL <- unlist(strsplit(df$GroupLetters[i],""))
# for(letter in GL){
#
# res <- funGroups[stringr::str_detect(funGroups$Code,letter),]
# # print(res$Name)
# df$COG_Categorys[i] <- ifelse(df$COG_Categorys[i]=="",
# res$Name,
# paste(df$COG_Categorys[i],res$Name,sep = ";")
# )
# } # close loop through letters
#
# } # close if statement
#
# } # close for loop through reads
#
#
# df$COG_Category <- df$COG_Categorys
# print(df)
return(df)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.