devtools::install_github("slowkow/tftargets")

BiocManager::install("ChIPseeker")
BiocManager::install("EnsDb.Mmusculus.v79")
library(dplyr)
library(readxl)
library(janitor)
library(igraph)
library(tidyr)
library(viridis)
library(purrr)
library(writexl)
trans <- read_excel("C:/Users/tsever/Desktop/trans.xlsx", 
    sheet = "Sheet1")

# JASPAR database : 261 curated nonredundant TFs
MMTFJ <- read_excel("C:/Users/tsever/Desktop/trans.xlsx", 
    sheet = "Sheet2")

# Animal TFDB 3.0 : 1636 TFs
MMTFA <- read_excel("C:/Users/tsever/Desktop/trans.xlsx", 
    sheet = "Sheet3")

# Animal TFDB 3.0 : 970 cofactors
MMcoTFA <- read_excel("C:/Users/tsever/Desktop/trans.xlsx", 
    sheet = "Sheet4")

# TRRUST Mus musculus database
TRRUSTmm <- read_excel("C:/Users/tsever/Desktop/trans.xlsx", 
    sheet = "Sheet5")
trans <- clean_names(trans)
MMTFJ <- clean_names(MMTFJ)
MMTFA <- clean_names(MMTFA)
MMcoTFA <- clean_names(MMcoTFA)

#odfiltriramo trans tabelo, da ostanejo samo tisti, ki imajo vec kot 3 nad 10 vrednosti per group per organ

all_non_na <- trans %>% filter_at(vars(liver_leg_ko_vs_wt_without_lg016_log_fold_change_5,kidney_leg_ko_vs_wt_log_fold_change_7, spleen_leg_ko_vs_wt_log_fold_change_9),any_vars(!is.na(.)))   #poiscemo tiste, ki imajo vsej eno non NA vrednost pri fold change

#odfiltriramo tiste, ki imajo vsaj 3 NA na skupino
#za vsak organ posebi to nardimo
liver_ko_0s <- rowSums((all_non_na[,c("liver_ko_1","liver_ko_2","liver_ko_3", "liver_ko_4", "liver_ko_5")] == 0))
liver_wt_0s <- rowSums((all_non_na[,c("liver_wt_1","liver_wt_2","liver_wt_3", "liver_wt_4", "liver_wt_5")] == 0))
filtered_all_liver_0s <- all_non_na[(liver_ko_0s <= 3) & (liver_wt_0s <= 3), ]

kidney_ko_0s <- rowSums((all_non_na[,c("kidney_ko_1","kidney_ko_2","kidney_ko_3", "kidney_ko_4", "kidney_ko_5")] == 0))
kidney_wt_0s <- rowSums((all_non_na[,c("kidney_wt_1","kidney_wt_2","kidney_wt_3", "kidney_wt_4", "kidney_wt_5")] == 0))
filtered_all_kidney_0s <- all_non_na[(kidney_ko_0s <= 3) & (kidney_wt_0s <= 3), ]

spleen_ko_0s <- rowSums((all_non_na[,c("spleen_ko_1","spleen_ko_2","spleen_ko_3", "spleen_ko_4", "spleen_ko_5")] == 0))
spleen_wt_0s <- rowSums((all_non_na[,c("spleen_wt_1","spleen_wt_2","spleen_wt_3", "spleen_wt_4", "spleen_wt_5")] == 0))
filtered_all_spleen_0s <- all_non_na[(spleen_ko_0s <= 3) & (spleen_wt_0s <= 3), ]

#zdruzimo tabele locenih organov v eno
merg <-  merge(filtered_all_kidney_0s , filtered_all_liver_0s, all = T)
merg <- merge(merg , filtered_all_spleen_0s , all = T)

#odfiltriramo tiste vrstice, ki imajo vec kot tri manj kot 10 na skupino
#za vsak organ posebi
liver_ko_10s <- rowSums(merg[,c("liver_ko_1","liver_ko_2","liver_ko_3", "liver_ko_4", "liver_ko_5")] <10, na.rm = TRUE )
liver_wt_10s <- rowSums(merg[,c("liver_wt_1","liver_wt_2","liver_wt_3", "liver_wt_4", "liver_wt_5")] <10, na.rm = TRUE )
filtered_all_liver_10s <- merg[(liver_ko_10s <= 3) & (liver_wt_10s <= 3), ]

kidney_ko_10s <- rowSums(merg[,c("kidney_ko_1","kidney_ko_2","kidney_ko_3", "kidney_ko_4", "kidney_ko_5")] <10, na.rm = TRUE )
kidney_wt_10s <- rowSums(merg[,c("kidney_wt_1","kidney_wt_2","kidney_wt_3", "kidney_wt_4", "kidney_wt_5")] <10, na.rm = TRUE )
filtered_all_kidney_10s <- merg[(kidney_ko_10s <= 3) & (kidney_wt_10s <= 3), ]

spleen_ko_10s <- rowSums(merg[,c("spleen_ko_1","spleen_ko_2","spleen_ko_3", "spleen_ko_4", "spleen_ko_5")] <10, na.rm = TRUE )
spleen_wt_10s <- rowSums(merg[,c("spleen_wt_1","spleen_wt_2","spleen_wt_3", "spleen_wt_4", "spleen_wt_5")] <10, na.rm = TRUE )
filtered_all_spleen_10s <- merg[(spleen_ko_10s <= 3) & (spleen_wt_10s <= 3), ]

#zdruzimo tabele locenih organov v eno
merg <-  merge(filtered_all_kidney_10s , filtered_all_liver_10s, all = T)
merg_all_10s <- merge(merg , filtered_all_spleen_10s , all = T)



#write_xlsx(merg,"L:/trans_10s.xlsx") #izvizimo excel tabelo

JASPAR

JASPAR is a database of transcription factor binding profiles that includes information on TFs and their target genes in various species. The database contains computationally predicted DNA-binding specificities of TFs, as well as experimentally validated binding motifs. JASPAR has a large collection of TF binding profiles and is widely used in computational analyses of gene regulation. However, since the binding specificities of TFs are often inferred from DNA sequence data and may not be experimentally verified, the accuracy and reliability of the data in JASPAR may be somewhat lower compared to the data in AnimalTFDB. JASPAR contains binding profiles for 679 unique TFs in Mus musculus.

#najprej za JASPAR database

tf <- merge(trans, MMTFJ, by = "gene_name") #poiscemo, kateri so franskripcijski faktorji
tf <- tf[!duplicated(tf$gene_name),] #odstranimo duplikate

tf_non_na <- tf %>% filter_at(vars(liver_leg_ko_vs_wt_without_lg016_log_fold_change_5,kidney_leg_ko_vs_wt_log_fold_change_7, spleen_leg_ko_vs_wt_log_fold_change_9),any_vars(!is.na(.)))   #poiscemo tiste, ki imajo vsej eno non NA vrednost pri fold change
#odfiltriramo tiste, ki imajo vsaj 3 NA na skupino
#za vsak organ posebi to nardimo
liver_ko_0s <- rowSums((tf_non_na[,c("liver_ko_1","liver_ko_2","liver_ko_3", "liver_ko_4", "liver_ko_5")] == 0))
liver_wt_0s <- rowSums((tf_non_na[,c("liver_wt_1","liver_wt_2","liver_wt_3", "liver_wt_4", "liver_wt_5")] == 0))
filtered_tf_liver_0s <- tf_non_na[(liver_ko_0s <= 3) & (liver_wt_0s <= 3), ]

kidney_ko_0s <- rowSums((tf_non_na[,c("kidney_ko_1","kidney_ko_2","kidney_ko_3", "kidney_ko_4", "kidney_ko_5")] == 0))
kidney_wt_0s <- rowSums((tf_non_na[,c("kidney_wt_1","kidney_wt_2","kidney_wt_3", "kidney_wt_4", "kidney_wt_5")] == 0))
filtered_tf_kidney_0s <- tf_non_na[(kidney_ko_0s <= 3) & (kidney_wt_0s <= 3), ]

spleen_ko_0s <- rowSums((tf_non_na[,c("spleen_ko_1","spleen_ko_2","spleen_ko_3", "spleen_ko_4", "spleen_ko_5")] == 0))
spleen_wt_0s <- rowSums((tf_non_na[,c("spleen_wt_1","spleen_wt_2","spleen_wt_3", "spleen_wt_4", "spleen_wt_5")] == 0))
filtered_tf_spleen_0s <- tf_non_na[(spleen_ko_0s <= 3) & (spleen_wt_0s <= 3), ]

#zdruzimo tabele locenih organov v eno
merg <-  merge(filtered_tf_kidney_0s , filtered_tf_liver_0s, all = T)
merg <- merge(merg , filtered_tf_spleen_0s , all = T)

#ohranimo sam gene name ib fold change 
tf_non_na_filtered_JASPAR <- merg[c("gene_name","liver_leg_ko_vs_wt_without_lg016_log_fold_change_5" , "kidney_leg_ko_vs_wt_log_fold_change_7" , "spleen_leg_ko_vs_wt_log_fold_change_9")]
#odfiltriramo tiste vrstice, ki imajo vec kot tri manj kot 10 na skupino
#za vsak organ posebi
liver_ko_10s <- rowSums(merg[,c("liver_ko_1","liver_ko_2","liver_ko_3", "liver_ko_4", "liver_ko_5")] <10, na.rm = TRUE )
liver_wt_10s <- rowSums(merg[,c("liver_wt_1","liver_wt_2","liver_wt_3", "liver_wt_4", "liver_wt_5")] <10, na.rm = TRUE )
filtered_tf_liver_10s <- merg[(liver_ko_10s <= 3) & (liver_wt_10s <= 3), ]

kidney_ko_10s <- rowSums(merg[,c("kidney_ko_1","kidney_ko_2","kidney_ko_3", "kidney_ko_4", "kidney_ko_5")] <10, na.rm = TRUE )
kidney_wt_10s <- rowSums(merg[,c("kidney_wt_1","kidney_wt_2","kidney_wt_3", "kidney_wt_4", "kidney_wt_5")] <10, na.rm = TRUE )
filtered_tf_kidney_10s <- merg[(kidney_ko_10s <= 3) & (kidney_wt_10s <= 3), ]

spleen_ko_10s <- rowSums(merg[,c("spleen_ko_1","spleen_ko_2","spleen_ko_3", "spleen_ko_4", "spleen_ko_5")] <10, na.rm = TRUE )
spleen_wt_10s <- rowSums(merg[,c("spleen_wt_1","spleen_wt_2","spleen_wt_3", "spleen_wt_4", "spleen_wt_5")] <10, na.rm = TRUE )
filtered_tf_spleen_10s <- merg[(spleen_ko_10s <= 3) & (spleen_wt_10s <= 3), ]

#zdruzimo tabele locenih organov v eno
merg <-  merge(filtered_tf_kidney_10s , filtered_tf_liver_10s, all = T)
merg <- merge(merg , filtered_tf_spleen_10s , all = T)

#ohranimo sam gene name ib fold change 
tf_sub_10_filtered_JASPAR <- merg[c("gene_name","liver_leg_ko_vs_wt_without_lg016_log_fold_change_5" , "kidney_leg_ko_vs_wt_log_fold_change_7" , "spleen_leg_ko_vs_wt_log_fold_change_9")]

AnimalTFDB

AnimalTFDB is a manually curated database that focuses on animal TFs and their regulatory targets. The curation process involves collecting and integrating data from various sources, including published literature, high-throughput experiments, and other databases, to provide a comprehensive and accurate representation of TFs and their functions. The database provides annotations and functional information for each TF, including information on their DNA-binding domains, subcellular localization, expression patterns, and functional roles in various biological processes. The emphasis on manual curation ensures a high degree of accuracy and reliability of the information in AnimalTFDB. AnimalTFDB lists 2,704 transcription factors (TFs) for Mus musculus.

#potlej se za AnimalTFDB database

tf <- merge(trans, MMTFA, by = "gene_name") #poiscemo, kateri so franskripcijski faktorji
tf <- tf[!duplicated(tf$gene_name),] #odstranimo duplikate

tf_non_na <- tf %>% filter_at(vars(liver_leg_ko_vs_wt_without_lg016_log_fold_change_5,kidney_leg_ko_vs_wt_log_fold_change_7, spleen_leg_ko_vs_wt_log_fold_change_9),any_vars(!is.na(.)))   #poiscemo tiste, ki imajo vsej eno non NA vrednost pri fold change
#odfiltriramo tiste, ki imajo vsaj 3 NA na skupino
#za vsak organ posebi to nardimo
liver_ko_0s <- rowSums((tf_non_na[,c("liver_ko_1","liver_ko_2","liver_ko_3", "liver_ko_4", "liver_ko_5")] == 0))
liver_wt_0s <- rowSums((tf_non_na[,c("liver_wt_1","liver_wt_2","liver_wt_3", "liver_wt_4", "liver_wt_5")] == 0))
filtered_tf_liver_0s <- tf_non_na[(liver_ko_0s <= 3) & (liver_wt_0s <= 3), ]

kidney_ko_0s <- rowSums((tf_non_na[,c("kidney_ko_1","kidney_ko_2","kidney_ko_3", "kidney_ko_4", "kidney_ko_5")] == 0))
kidney_wt_0s <- rowSums((tf_non_na[,c("kidney_wt_1","kidney_wt_2","kidney_wt_3", "kidney_wt_4", "kidney_wt_5")] == 0))
filtered_tf_kidney_0s <- tf_non_na[(kidney_ko_0s <= 3) & (kidney_wt_0s <= 3), ]

spleen_ko_0s <- rowSums((tf_non_na[,c("spleen_ko_1","spleen_ko_2","spleen_ko_3", "spleen_ko_4", "spleen_ko_5")] == 0))
spleen_wt_0s <- rowSums((tf_non_na[,c("spleen_wt_1","spleen_wt_2","spleen_wt_3", "spleen_wt_4", "spleen_wt_5")] == 0))
filtered_tf_spleen_0s <- tf_non_na[(spleen_ko_0s <= 3) & (spleen_wt_0s <= 3), ]

#zdruzimo tabele locenih organov v eno
merg <-  merge(filtered_tf_kidney_0s , filtered_tf_liver_0s, all = T)
merg <- merge(merg , filtered_tf_spleen_0s , all = T)

#ohranimo sam gene name ib fold change 
tf_non_na_filtered_AnimalTFDB <- merg[c("gene_name","liver_leg_ko_vs_wt_without_lg016_log_fold_change_5" , "kidney_leg_ko_vs_wt_log_fold_change_7" , "spleen_leg_ko_vs_wt_log_fold_change_9")]
#odfiltriramo tiste vrstice, ki imajo vec kot tri manj kot 10 na skupino
#za vsak organ posebi
liver_ko_10s <- rowSums(merg[,c("liver_ko_1","liver_ko_2","liver_ko_3", "liver_ko_4", "liver_ko_5")] <10, na.rm = TRUE )
liver_wt_10s <- rowSums(merg[,c("liver_wt_1","liver_wt_2","liver_wt_3", "liver_wt_4", "liver_wt_5")] <10, na.rm = TRUE )
filtered_tf_liver_10s <- merg[(liver_ko_10s <= 3) & (liver_wt_10s <= 3), ]

kidney_ko_10s <- rowSums(merg[,c("kidney_ko_1","kidney_ko_2","kidney_ko_3", "kidney_ko_4", "kidney_ko_5")] <10, na.rm = TRUE )
kidney_wt_10s <- rowSums(merg[,c("kidney_wt_1","kidney_wt_2","kidney_wt_3", "kidney_wt_4", "kidney_wt_5")] <10, na.rm = TRUE )
filtered_tf_kidney_10s <- merg[(kidney_ko_10s <= 3) & (kidney_wt_10s <= 3), ]

spleen_ko_10s <- rowSums(merg[,c("spleen_ko_1","spleen_ko_2","spleen_ko_3", "spleen_ko_4", "spleen_ko_5")] <10, na.rm = TRUE )
spleen_wt_10s <- rowSums(merg[,c("spleen_wt_1","spleen_wt_2","spleen_wt_3", "spleen_wt_4", "spleen_wt_5")] <10, na.rm = TRUE )
filtered_tf_spleen_10s <- merg[(spleen_ko_10s <= 3) & (spleen_wt_10s <= 3), ]

#zdruzimo tabele locenih organov v eno
merg <-  merge(filtered_tf_kidney_10s , filtered_tf_liver_10s, all = T)
merg <- merge(merg , filtered_tf_spleen_10s , all = T)

#ohranimo sam gene name ib fold change 
tf_sub_10_filtered_AnimalTFDB <- merg[c("gene_name","liver_leg_ko_vs_wt_without_lg016_log_fold_change_5" , "kidney_leg_ko_vs_wt_log_fold_change_7" , "spleen_leg_ko_vs_wt_log_fold_change_9")]

AnimalcoTFDB

#transckripcijski kofaktorji it AnimalTFDB

tf <- merge(trans, MMcoTFA, by = "gene_name") #poiscemo, kateri so franskripcijski faktorji
tf <- tf[!duplicated(tf$gene_name),] #odstranimo duplikate

tf_non_na <- tf %>% filter_at(vars(liver_leg_ko_vs_wt_without_lg016_log_fold_change_5,kidney_leg_ko_vs_wt_log_fold_change_7, spleen_leg_ko_vs_wt_log_fold_change_9),any_vars(!is.na(.)))   #poiscemo tiste, ki imajo vsej eno non NA vrednost pri fold change
#odfiltriramo tiste, ki imajo vsaj 3 NA na skupino
#za vsak organ posebi to nardimo
liver_ko_0s <- rowSums((tf_non_na[,c("liver_ko_1","liver_ko_2","liver_ko_3", "liver_ko_4", "liver_ko_5")] == 0))
liver_wt_0s <- rowSums((tf_non_na[,c("liver_wt_1","liver_wt_2","liver_wt_3", "liver_wt_4", "liver_wt_5")] == 0))
filtered_tf_liver_0s <- tf_non_na[(liver_ko_0s <= 3) & (liver_wt_0s <= 3), ]

kidney_ko_0s <- rowSums((tf_non_na[,c("kidney_ko_1","kidney_ko_2","kidney_ko_3", "kidney_ko_4", "kidney_ko_5")] == 0))
kidney_wt_0s <- rowSums((tf_non_na[,c("kidney_wt_1","kidney_wt_2","kidney_wt_3", "kidney_wt_4", "kidney_wt_5")] == 0))
filtered_tf_kidney_0s <- tf_non_na[(kidney_ko_0s <= 3) & (kidney_wt_0s <= 3), ]

spleen_ko_0s <- rowSums((tf_non_na[,c("spleen_ko_1","spleen_ko_2","spleen_ko_3", "spleen_ko_4", "spleen_ko_5")] == 0))
spleen_wt_0s <- rowSums((tf_non_na[,c("spleen_wt_1","spleen_wt_2","spleen_wt_3", "spleen_wt_4", "spleen_wt_5")] == 0))
filtered_tf_spleen_0s <- tf_non_na[(spleen_ko_0s <= 3) & (spleen_wt_0s <= 3), ]

#zdruzimo tabele locenih organov v eno
merg <-  merge(filtered_tf_kidney_0s , filtered_tf_liver_0s, all = T)
merg <- merge(merg , filtered_tf_spleen_0s , all = T)

#ohranimo sam gene name z fold change 
tf_non_na_filtered_AnimalcoTFDB <- merg[c("gene_name","liver_leg_ko_vs_wt_without_lg016_log_fold_change_5" , "kidney_leg_ko_vs_wt_log_fold_change_7" , "spleen_leg_ko_vs_wt_log_fold_change_9")]
#odfiltriramo tiste vrstice, ki imajo vec kot tri manj kot 10 na skupino
#za vsak organ posebi
liver_ko_10s <- rowSums(merg[,c("liver_ko_1","liver_ko_2","liver_ko_3", "liver_ko_4", "liver_ko_5")] <10, na.rm = TRUE )
liver_wt_10s <- rowSums(merg[,c("liver_wt_1","liver_wt_2","liver_wt_3", "liver_wt_4", "liver_wt_5")] <10, na.rm = TRUE )
filtered_tf_liver_10s <- merg[(liver_ko_10s <= 3) & (liver_wt_10s <= 3), ]

kidney_ko_10s <- rowSums(merg[,c("kidney_ko_1","kidney_ko_2","kidney_ko_3", "kidney_ko_4", "kidney_ko_5")] <10, na.rm = TRUE )
kidney_wt_10s <- rowSums(merg[,c("kidney_wt_1","kidney_wt_2","kidney_wt_3", "kidney_wt_4", "kidney_wt_5")] <10, na.rm = TRUE )
filtered_tf_kidney_10s <- merg[(kidney_ko_10s <= 3) & (kidney_wt_10s <= 3), ]

spleen_ko_10s <- rowSums(merg[,c("spleen_ko_1","spleen_ko_2","spleen_ko_3", "spleen_ko_4", "spleen_ko_5")] <10, na.rm = TRUE )
spleen_wt_10s <- rowSums(merg[,c("spleen_wt_1","spleen_wt_2","spleen_wt_3", "spleen_wt_4", "spleen_wt_5")] <10, na.rm = TRUE )
filtered_tf_spleen_10s <- merg[(spleen_ko_10s <= 3) & (spleen_wt_10s <= 3), ]

#zdruzimo tabele locenih organov v eno
merg <-  merge(filtered_tf_kidney_10s , filtered_tf_liver_10s, all = T)
merg <- merge(merg , filtered_tf_spleen_10s , all = T)

#ohranimo sam gene name ib fold change 
tf_sub_10_filtered_AnimalcoTFDB <- merg[c("gene_name","liver_leg_ko_vs_wt_without_lg016_log_fold_change_5" , "kidney_leg_ko_vs_wt_log_fold_change_7" , "spleen_leg_ko_vs_wt_log_fold_change_9")]

gene targets

posicemo tarce teg TF

JASPAR

Liver

target_JASPAR <- merge(tf_sub_10_filtered_JASPAR , TRRUSTmm , by = "gene_name")

target_JASPAR_liver <- data.frame(target_JASPAR$gene_name , target_JASPAR$target , target_JASPAR$liver_leg_ko_vs_wt_without_lg016_log_fold_change_5, target_JASPAR$mode) #en data frame, ki ma sam fold change za liver

colnames(target_JASPAR_liver) = c("gene_name", "target", "liver_fc", "mode") #spremenino imena stolpcev

target_JASPAR_liver <- drop_na(target_JASPAR_liver) #odstranimo vrstive z NA, tak nam ostanejo samo podatki za jetra

# naredimo dva data.frama : imata dva stolpca, en z geni in en z njihovomi tarcami. vrstni red stolpcev v obeh df je obraten
gene_df_Jl <- data.frame(target_JASPAR_liver$gene_name , target_JASPAR_liver$target  , target_JASPAR_liver$mode, target_JASPAR_liver$liver_fc ) 
target_df_Jl <- data.frame(target_JASPAR_liver$target , target_JASPAR_liver$gene_name  , target_JASPAR_liver$mode, target_JASPAR_liver$liver_fc)
all_edges_Jl <- rbind(gene_df_Jl, target_df_Jl)
colnames(all_edges_Jl) = c("gene_name","target",  "mode", "liver_fc") 
all_edges_Jl2 <- all_edges_Jl[order(all_edges_Jl$liver_fc),] #razporedimo jih po narascajocem fold change

# Create the graph
graphJl <- graph_from_data_frame(all_edges_Jl2, directed = TRUE)

# Set edge color and shape based on condition
rbPal <- colorRampPalette(c('pink','lightblue')) #naredimo barvno paleto
col <- rbPal(10)[as.numeric(cut(unique(gene_df_Jl[,4]),breaks = 10))] #dolocimo barve za vse node



edge_colors <- ifelse(all_edges_Jl$mode == "Activation", "green",
                      ifelse(all_edges_Jl$mode == "Repression", "red", "black"))
edge_shapes <- ifelse(all_edges_Jl$mode  == "Activation", "triangle",
                      ifelse(all_edges_Jl$mode  == "Repression", "circle", "none"))
node_colors <- setNames(paste(col), unique(all_edges_Jl2$gene_name )) #naredimo character class object z imeni genov v zgorni vrstici in barvami v spodni

all_node_names <- names(V(graphJl)) #zrihtamo barve, nodi ki nimajo dolocen barve so sivi (tarce)
all_node_colors <- rep("gray", length(all_node_names))
for (i in 1:length(all_node_names)) {
  node_name <- all_node_names[i]
  if (node_name %in% names(node_colors)) {
    all_node_colors[i] <- node_colors[node_name]
  }
}

# Plot the graphs
plot(graphJl,
     edge.arrow.size = 0.9,
     edge.color = edge_colors,
     vertex.size = 8,
     vertex.color = all_node_colors,
     vertex.label.cex = 2,
     label.color = "black",
     edge.width =2)

Kidney

target_JASPAR_kidney <- data.frame(target_JASPAR$gene_name , target_JASPAR$target , target_JASPAR$kidney_leg_ko_vs_wt_log_fold_change_7, target_JASPAR$mode) #en data frame, ki ma sam fold change za kidney

colnames(target_JASPAR_kidney) = c("gene_name", "target", "kidney_fc", "mode") #spremenino imena stolpcev

target_JASPAR_kidney <- drop_na(target_JASPAR_kidney) #odstranimo vrstive z NA, tak nam ostanejo samo podatki za jetra

# naredimo dva data.frama : imata dva stolpca, en z geni in en z njihovomi tarcami. vrstni red stolpcev v obeh df je obraten
gene_df_Kl <- data.frame(target_JASPAR_kidney$gene_name , target_JASPAR_kidney$target  , target_JASPAR_kidney$mode, target_JASPAR_kidney$kidney_fc ) 
target_df_Kl <- data.frame(target_JASPAR_kidney$target , target_JASPAR_kidney$gene_name  , target_JASPAR_kidney$mode, target_JASPAR_kidney$kidney_fc)
all_edges_Kl <- rbind(gene_df_Kl, target_df_Kl)
colnames(all_edges_Kl) = c("gene_name","target",  "mode", "kidney_fc") 
all_edges_Kl2 <- all_edges_Kl[order(all_edges_Kl$kidney_fc),] #razporedimo jih po narascajocem fold change

# Create the graph
graphKl <- graph_from_data_frame(all_edges_Kl2, directed = TRUE)

# Set edge color and shape based on condition
rbPal <- colorRampPalette(c('pink','lightblue')) #naredimo barvno paleto
col <- rbPal(10)[as.numeric(cut(unique(gene_df_Kl[,4]),breaks = 10))] #dolocimo barve za vse node



edge_colors <- ifelse(all_edges_Kl2$mode == "Activation", "green",
                      ifelse(all_edges_Kl2$mode == "Repression", "red", "black"))
edge_shapes <- ifelse(all_edges_Kl2$mode  == "Activation", "triangle",
                      ifelse(all_edges_Kl2$mode  == "Repression", "circle", "none"))
node_colors <- setNames(paste(col), unique(all_edges_Kl2$gene_name )) #naredimo character class object z imeni genov v zgorni vrstici in barvami v spodni

all_node_names <- names(V(graphKl)) #zrihtamo barve, nodi ki nimajo dolocen barve so sivi (tarce)
all_node_colors <- rep("gray", length(all_node_names))
for (i in 1:length(all_node_names)) {
  node_name <- all_node_names[i]
  if (node_name %in% names(node_colors)) {
    all_node_colors[i] <- node_colors[node_name]
  }
}

# Plot the graphs
plot(graphKl,
     edge.arrow.size = 0.9,
     edge.color = edge_colors,
     vertex.size = 8,
     vertex.color = all_node_colors,
     vertex.label.cex = 2,
     label.color = "black",
     edge.width =2)

Spleen

target_JASPAR_spleen <- data.frame(target_JASPAR$gene_name , target_JASPAR$target , target_JASPAR$spleen_leg_ko_vs_wt_log_fold_change_9, target_JASPAR$mode) #en data frame, ki ma sam fold change za spleen

colnames(target_JASPAR_spleen) = c("gene_name", "target", "spleen_fc", "mode") #spremenino imena stolpcev

target_JASPAR_spleen <- drop_na(target_JASPAR_spleen) #odstranimo vrstive z NA, tak nam ostanejo samo podatki za jetra

# naredimo dva data.frama : imata dva stolpca, en z geni in en z njihovomi tarcami. vrstni red stolpcev v obeh df je obraten
gene_df_Sl <- data.frame(target_JASPAR_spleen$gene_name , target_JASPAR_spleen$target  , target_JASPAR_spleen$mode, target_JASPAR_spleen$spleen_fc ) 
target_df_Sl <- data.frame(target_JASPAR_spleen$target , target_JASPAR_spleen$gene_name  , target_JASPAR_spleen$mode, target_JASPAR_spleen$spleen_fc)
all_edges_Sl <- rbind(gene_df_Sl, target_df_Sl)
colnames(all_edges_Sl) = c("gene_name","target",  "mode", "spleen_fc") 
all_edges_Sl2 <- all_edges_Sl[order(all_edges_Sl$spleen_fc),] #razporedimo jih po narascajocem fold change
all_edges_Sl2 <- unique(all_edges_Sl2)

# Create the graph
d<-as.data.frame(all_edges_Sl2, what = "both")
graphSl <- graph_from_data_frame(d, directed = TRUE)

# Set edge color and shape based on condition
rbPal <- colorRampPalette(c('pink','lightblue')) #naredimo barvno paleto
col <- rbPal(10)[as.numeric(cut(unique(gene_df_Sl[,4]),breaks = 10))] #dolocimo barve za vse node



edge_colors <- ifelse(all_edges_Sl2$mode == "Activation", "green",
                      ifelse(all_edges_Sl2$mode == "Repression", "red", "black"))
#edge_shapes <- ifelse(all_edges_Sl2$mode  == "Activation", "triangle",
#                     ifelse(all_edges_Sl2$mode  == "Repression", "circle", "none"))
node_colors <- setNames(paste(col), unique(all_edges_Sl2$gene_name )) #naredimo character class object z imeni genov v zgorni vrstici in barvami v spodni

all_node_names <- names(V(graphSl)) #zrihtamo barve, nodi ki nimajo dolocen barve so sivi (tarce)
all_node_colors <- rep("gray", length(all_node_names))
for (i in 1:length(all_node_names)) {
  node_name <- all_node_names[i]
  if (node_name %in% names(node_colors)) {
    all_node_colors[i] <- node_colors[node_name]
  }
}

# Plot the graphs
plot(graphSl,
     vertex.label.color = "black",
     vertex.label.cex = 2,
     edge.arrow.size = 2,
     vertex.size = 8,
     vertex.color = all_node_colors,
     edge.color = edge_colors,
     edge.width =2
     )

tkplot(graphSl,
     vertex.label.color = "black",
     vertex.label.cex = 1,
     edge.arrow.size = 1,
     vertex.size = 20,
     vertex.color = all_node_colors,
     edge.color = edge_colors,
     edge.width =2
     )
## [1] 1

plot(graph, edge.arrow.size = 0.5, vertex.size = 10, vertex.color = all_node_colors, edge.color = edge_colors, edge.arrow.mode = edge_shapes, edge.arrow.width = 1.5, edge.arrow.ends = c(triangle_shape, circle_shape))

AnimalTFDB

target_animaltfdb <- merge(tf_sub_10_filtered_AnimalTFDB , TRRUSTmm , by = "gene_name")

target_JASPAR_liver <- data.frame(target_JASPAR$gene_name , target_JASPAR$target , target_JASPAR$liver_leg_ko_vs_wt_without_lg016_log_fold_change_5, target_JASPAR$mode) #en data frame, ki ma sam fold change za liver

colnames(target_JASPAR_liver) = c("gene_name", "target", "liver_fc", "mode") #spremenino imena stolpcev

target_JASPAR_liver <- drop_na(target_JASPAR_liver) #odstranimo vrstive z NA, tak nam ostanejo samo podatki za jetra

# naredimo dva data.frama : imata dva stolpca, en z geni in en z njihovomi tarcami. vrstni red stolpcev v obeh df je obraten
gene_df_Jl <- data.frame(target_JASPAR_liver$gene_name , target_JASPAR_liver$target  , target_JASPAR_liver$mode, target_JASPAR_liver$liver_fc ) 
target_df_Jl <- data.frame(target_JASPAR_liver$target , target_JASPAR_liver$gene_name  , target_JASPAR_liver$mode, target_JASPAR_liver$liver_fc)
all_edges_Jl <- rbind(gene_df_Jl, target_df_Jl)
colnames(all_edges_Jl) = c("gene_name","target",  "mode", "liver_fc") 
all_edges_Jl2 <- all_edges_Jl[order(all_edges_Jl$liver_fc),] #razporedimo jih po narascajocem fold change

# Create the graph
graph <- graph_from_data_frame(all_edges_Jl2, directed = TRUE)

# Set edge color and shape based on condition
rbPal <- colorRampPalette(c('pink','lightblue')) #naredimo barvno paleto
col <- rbPal(10)[as.numeric(cut(unique(gene_df_Jl[,4]),breaks = 10))] #dolocimo barve za vse node



edge_colors <- ifelse(all_edges_Jl$mode == "Activation", "green",
                      ifelse(all_edges_Jl$mode == "Repression", "red", "black"))
edge_shapes <- ifelse(all_edges_Jl$mode  == "Activation", "triangle",
                      ifelse(all_edges_Jl$mode  == "Repression", "circle", "none"))
node_colors <- setNames(paste(col), unique(all_edges_Jl2$gene_name )) #naredimo character class object z imeni genov v zgorni vrstici in barvami v spodni

all_node_names <- names(V(graph)) #zrihtamo barve, nodi ki nimajo dolocen barve so sivi (tarce)
all_node_colors <- rep("gray", length(all_node_names))
for (i in 1:length(all_node_names)) {
  node_name <- all_node_names[i]
  if (node_name %in% names(node_colors)) {
    all_node_colors[i] <- node_colors[node_name]
  }
}


lo <- layout_with_kk(graph) # create a layout
lo <- norm_coords(lo, ymin=-10, ymax=10, xmin=-10, xmax=10)


# Plot the graph
plot(graph, layout = lo, edge.arrow.size = 0.9, edge.color = edge_colors, vertex.size = 8, vertex.color = all_node_colors, vertex.label.cex = 2, label.color = "black", edge.width =2)



## AnimalcoTFDB


```r
target_animalcotfdb <- merge(tf_sub_10_filtered_AnimalcoTFDB , TRRUSTmm , by = "gene_name")