--- title: "18-ortholog-lists" output: html_document date: "2025-04-09" --- ```{r} # Required packages library(httr) library(jsonlite) library(dplyr) library(stringr) library(purrr) library(RCurl) library(BiocManager) library(rentrez) ``` ```{r cars} # Step 1: Get the list of Mollusca species from OrthoDB species_url <- "https://data.orthodb.org/current/download/odb12v1_species.tab.gz" dest_file <- "/home/shared/8TB_HDD_02/graceleuchtenberger/Github/byssus-exp-analysis/output/Top_gene_summaries/ortho_species.tab.gz" # Download the file download.file(species_url, destfile = dest_file, mode = "wb") # Read the gzipped tab-delimited file species_df <- read.delim(gzfile(dest_file), header = FALSE, sep = "\t") species_df <- species_df[, 1:4] # Filter for Mollusca species mollusca_species <- c(6500, 370345, 6526, 112525,55810, 100452, 6565, 29159, 558553, 45954,188477,1093978, 80821, 2589376, 703304, 1735272, 6454,36100,356393, 225164, 6596, 6573, 6604,6549,6550, 29158, 42192, 37653, 2607531, 37623, 6465, 87960, 88005, 6579, 109671, 259542, 400727, 158019, 31201, 220873, 80829, 80833) mollusca_species <- as.integer(mollusca_species) mollusca_species <- as.data.frame(mollusca_species) colnames(mollusca_species) <- c("orthodb_id") mollusca_taxids <- left_join(mollusca_species, species_df, by = "orthodb_id") bivalve_species <- c(6565, 29159, 558553, 45954, 80821, 2589376, 356393, 6596, 6573, 6604,6549,6550, 29158, 42192, 37623, 6579, 31201, 220873, 80829, 80833) bivalve_species <- as.integer(bivalve_species) bivalve_species <- as.data.frame(bivalve_species) colnames(bivalve_species) <- c("orthodb_id") bivalve_taxids <- left_join(bivalve_species, mollusca_taxids, by = "orthodb_id") ``` ```{r} get_orthologs_for_uniprot <- function(topgene_summs, bivalve_taxids){ uniprot_ids <- topgene_summs$UniProt_ID topgene_summs$bivalve_validation <- NA # Initialize new column for (i in seq_along(uniprot_ids)){ tryCatch({ # OrthoDB search gene_URL <- paste0("https://data.orthodb.org/v12/search?query=", uniprot_ids[i], "&take=10000&level=33208") ortho_group <- GET(gene_URL) if (ortho_group$status_code != 200) next ortho_json <- content(ortho_group, as = "text", encoding = "UTF-8") ortho <- fromJSON(ortho_json, flatten = TRUE) if (length(ortho$data) == 0) next groupID <- ortho$data[[1]] # Get orthologs group_url <- paste0("https://data.orthodb.org/v12/orthologs?id=", groupID) print(group_url) group_response <- GET(group_url) if (group_response$status_code != 200) next group_json <- content(group_response, as = "text", encoding = "UTF-8") group_data <- fromJSON(group_json, flatten = TRUE) group_data <- as.data.frame(group_data) # Filter for bivalves mollusc_list <- bivalve_taxids[bivalve_taxids$orthodb_key %in% group_data$data.organism.id, c("orthodb_key", "species_name")] mollusc_listicle <- as.list(mollusc_list$species_name) topgene_summs$bivalve_validation[i] <- paste(mollusc_listicle, collapse = ", ") }, error = function(e) { message(sprintf("Error on UniProt ID '%s': %s", uniprot_ids[i], e$message)) next # Continue to next ID }) } return(topgene_summs) } ``` ```{r} # Replace this with your actual vector of UniProt IDs top_genes_summs <- read.csv("/home/shared/8TB_HDD_02/graceleuchtenberger/Github/byssus-exp-analysis/output/Top_gene_summaries/GOW_topgene_summs.csv") GOW_topgene_summs_biv <- get_orthologs_for_uniprot(top_genes_summs, bivalve_taxids) write.csv(GOW_topgene_summs_biv, "/home/shared/8TB_HDD_02/graceleuchtenberger/Github/byssus-exp-analysis/output/Top_gene_summaries/GOW_topgene_summs_ortho.csv") ``` ```{r} top_genes_summs <- read.csv("/home/shared/8TB_HDD_02/graceleuchtenberger/Github/byssus-exp-analysis/output/Top_gene_summaries/GOA_topgene_summs.csv") GOA_topgene_summs_biv <- get_orthologs_for_uniprot(top_genes_summs, bivalve_taxids) write.csv(GOA_topgene_summs_biv, "/home/shared/8TB_HDD_02/graceleuchtenberger/Github/byssus-exp-analysis/output/Top_gene_summaries/GOA_topgene_summs_ortho.csv") ``` ```{r} top_genes_summs <- read.csv("/home/shared/8TB_HDD_02/graceleuchtenberger/Github/byssus-exp-analysis/output/Top_gene_summaries/GDO_topgene_summs.csv") GDO_topgene_summs_biv <- get_orthologs_for_uniprot(top_genes_summs, bivalve_taxids) write.csv(GDO_topgene_summs_biv, "/home/shared/8TB_HDD_02/graceleuchtenberger/Github/byssus-exp-analysis/output/Top_gene_summaries/GDO_topgene_summs_ortho.csv") ``` ```{r} top_genes_summs <- read.csv("/home/shared/8TB_HDD_02/graceleuchtenberger/Github/byssus-exp-analysis/output/Top_gene_summaries/FOW_topgene_summs.csv") FOW_topgene_summs_biv <- get_orthologs_for_uniprot(top_genes_summs, bivalve_taxids) write.csv(FOW_topgene_summs_biv, "/home/shared/8TB_HDD_02/graceleuchtenberger/Github/byssus-exp-analysis/output/Top_gene_summaries/FOW_topgene_summs_ortho.csv") ``` ```{r} top_genes_summs <- read.csv("/home/shared/8TB_HDD_02/graceleuchtenberger/Github/byssus-exp-analysis/output/Top_gene_summaries/FOA_topgene_summs.csv") FOA_topgene_summs_biv <- get_orthologs_for_uniprot(top_genes_summs, bivalve_taxids) write.csv(FOA_topgene_summs_biv, "/home/shared/8TB_HDD_02/graceleuchtenberger/Github/byssus-exp-analysis/output/Top_gene_summaries/FOA_topgene_summs_ortho.csv") ``` ```{r} top_genes_summs <- read.csv("/home/shared/8TB_HDD_02/graceleuchtenberger/Github/byssus-exp-analysis/output/Top_gene_summaries/FDO_topgene_summs.csv") FDO_topgene_summs_biv <- get_orthologs_for_uniprot(top_genes_summs, bivalve_taxids) write.csv(FDO_topgene_summs_biv, "/home/shared/8TB_HDD_02/graceleuchtenberger/Github/byssus-exp-analysis/output/Top_gene_summaries/FDO_topgene_summs_ortho.csv") ```