Load packages
library(UpSetR)
library(tidyr)
library(dplyr)
library(reshape)
library(pheatmap)
STEP 1 Load DEGs list from DESeq2
sample.list <- read.table("/Users/Leon/OneDrive - Cornell University/Projects/6_Cotton/7_Upset_plot/Accession.list", sep ="\t", header = F)
colnames(sample.list )[1] <- "Name"
sample.list
#Load all down-regulated genes for each accession
for (i in 1:nrow(sample.list)){
sample.df <- read.table(paste0("/Users/Leon/OneDrive - Cornell University/Projects/6_Cotton/7_Upset_plot/0_data/",sample.list[i,1], "_data.tsv.log2FC-down.gene.list"), header = T, sep = " ")
colnames(sample.df)[1] <- "Name"
colnames(sample.df)[2] <- "Log2FC"
assign(paste0(sample.list[i,1],"_down"), sample.df)
}
#Load all up-regulated genes for each accession
for (i in 1:nrow(sample.list)){
sample.df <- read.table(paste0("/Users/Leon/OneDrive - Cornell University/Projects/6_Cotton/7_Upset_plot/0_data/",sample.list[i,1], "_data.tsv.log2FC-up.gene.list"), header = T, sep = " ")
colnames(sample.df)[1] <- "Name"
colnames(sample.df)[2] <- "Log2FC"
assign(paste0(sample.list[i,1],"_up"), sample.df)
}
head(sample.df, 30)
STEP 2 Load non-duplicted gene list across accesssions
Up.list <- read.table("/Users/Leon/OneDrive - Cornell University/Projects/6_Cotton/7_Upset_plot/combine_nonduplicated_up.csv", header = F)
Down.list <- read.table("/Users/Leon/OneDrive - Cornell University/Projects/6_Cotton/7_Upset_plot/combine_nonduplicated_down.csv", header = F)
colnames(Up.list)[1] <- "Name"
colnames(Down.list)[1] <- "Name"
head(Up.list, 20)
head(Down.list, 20)
STEP 3 join each list genes for Down-regualted genes with master
table
#for down-regulated DEGs
for (i in 1:nrow(sample.list)){
synteny.df <- left_join(Down.list,get(paste0(sample.list[i,1], "_down")),by = "Name")
synteny.df <- as.data.frame(synteny.df[,2])
colnames(synteny.df) <- sample.list[i,1]
assign(paste0("sub_DEGs_down_",sample.list[i,1]),synteny.df)
}
#Combined all dfs
merge_list1 <- lapply(ls(pattern = "sub_DEGs_down"), get)
down_combine <- bind_cols(merge_list1)
#Replace NA into 0
down_combine[is.na(down_combine)] <- 0
down_combine <- cbind(Down.list,down_combine)
colnames(down_combine)[1] <- "Name"
down_combine_upset <- down_combine
#Replace all values not equal with 1
for (i in 2:ncol(down_combine)){
down_combine_upset[,i] <- replace(x = down_combine_upset[,i],
down_combine_upset[,i] != 0.000000 ,
values = 1)
}
head(down_combine, 50)
head(down_combine_upset, 50)
write.csv(down_combine_upset, "/Users/Leon/OneDrive - Cornell University/Projects/6_Cotton/7_Upset_plot/down_meta_upset.csv", row.names = F)
write.csv(down_combine, "/Users/Leon/OneDrive - Cornell University/Projects/6_Cotton/7_Upset_plot/down_meta.csv", row.names = F)
STEP 3 join each list genes for Up-regualted genes with master
table
#for up-regulated DEGs
for (i in 1:nrow(sample.list)){
synteny.df <- left_join(Up.list,get(paste0(sample.list[i,1], "_up")),by = "Name")
synteny.df <- as.data.frame(synteny.df[,2])
colnames(synteny.df) <- sample.list[i,1]
assign(paste0("sub_DEGs_up_",sample.list[i,1]),synteny.df)
}
#Combined all dfs
merge_list2 <- lapply(ls(pattern = "sub_DEGs_up"), get)
up_combine <- bind_cols(merge_list2)
#Replace NA into 0
up_combine[is.na(up_combine)] <- 0
up_combine <- cbind(Up.list,up_combine)
colnames(up_combine)[1] <- "Name"
up_combine_upset <- up_combine
#Replace all values not equal with 1
for (i in 2:ncol(up_combine)){
up_combine_upset[,i] <- replace(x = up_combine_upset[,i],
up_combine_upset[,i] != 0.000000 ,
values = 1)
}
### View header of the table
head(up_combine, 50)
head(up_combine_upset, 50)
write.csv(up_combine_upset, "/Users/Leon/OneDrive - Cornell University/Projects/6_Cotton/7_Upset_plot/up_meta_upset.csv", row.names = F)
write.csv(up_combine, "/Users/Leon/OneDrive - Cornell University/Projects/6_Cotton/7_Upset_plot/up_logFC.csv", row.names = F)
STEP 4 Create Pheatmap for up-down regulated genes from stress and
control condition
#For up-regualted genes
rownames(up_combine)=up_combine$Name
up_combine_ph <- up_combine[,-1]
#Plot heatMap
pheatmap(up_combine_ph,
cluster_rows = F, labels_row = NULL, annotation_names_row = F)
#################################################################################################################
#For down-regualted genes
rownames(down_combine)=down_combine$Name
down_combine_ph <- down_combine[,-1]
#Plot heatMap
pheatmap(down_combine_ph,
cluster_rows = F, labels_row = NULL, annotation_names_row = F)
Create the upset plot
#Specifiy orders based on kinship
Kinship <- c("VIR_7153_D_10",
"TIPO_CHACO_UA_4_4",
"AC_134_CB_4029",
"CB_4012_KING_KARAJAZSY",
"TAM_91C_34",
"VIR_7065_ALLEN_333",
"PLAINS",
"DP_493",
"LOCKETT_BXL",
"VIR_6615_MCU_5",
"WESTERN_STORMPROOF",
"RN96625_1",
"PD_3",
"VIR_7223",
"FUNTUA_FT_5",
"VIR_7094_COKER_310",
"COKER_310",
"TAM_86III_26",
"DP_393",
"TAM_94WE_37S",
"FM_958"
)
upset(up_combine_upset,
nsets = 23,
order.by = c("freq","degree"),
decreasing = c(F,F),
sets = Kinship,
mb.ratio = c(0.5, 0.5),
number.angles = 0,
text.scale = 1.1,
point.size = 2.8,
line.size = 1,
matrix.color = "steelblue",
sets.bar.color = "tomato"
)

upset(down_combine_upset,
nintersects = 200,
nsets = 23,
order.by = c("freq", "degree"),
decreasing = c(TRUE,FALSE),
sets = Kinship,
keep.order = T,
mb.ratio = c(0.5, 0.5),
number.angles = 0,
text.scale = 1.1,
point.size = 1,
line.size = 0.6,
matrix.color = "steelblue",
sets.bar.color = "tomato"
)

upset(down_combine_upset,
nintersects = 200,
nsets = 23,
order.by = c("freq", "degree"),
decreasing = c(FALSE,TRUE),
sets = Kinship,
keep.order = T,
mb.ratio = c(0.5, 0.5),
number.angles = 0,
text.scale = 1.1,
point.size = 1,
line.size = 0.6,
matrix.color = "steelblue",
sets.bar.color = "tomato"
)
