https://github.com/aimergdiaz/sociovirology_lab

In this laboratory practice, we will investigate how variations in viral genetics lead to a differential impact on plant growth and defense trade-off using the compatible Nicotiana benthamiana / Turnip Mosaic Virus pathosystem.

https://github.com/aimergdiaz/sociovirology_lab

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (6.8%) to scientific vocabulary
Last synced: 9 months ago · JSON representation

Repository

In this laboratory practice, we will investigate how variations in viral genetics lead to a differential impact on plant growth and defense trade-off using the compatible Nicotiana benthamiana / Turnip Mosaic Virus pathosystem.

Basic Info
  • Host: GitHub
  • Owner: AimerGDiaz
  • License: gpl-3.0
  • Language: TeX
  • Default Branch: main
  • Size: 481 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed over 1 year ago
Metadata Files
Readme License

README.md

Growth & Defense trade-off in Nicotiana benthamiana and Turnip Mosaic

Virus interaction

Introduction

Plant viruses occur globally and have a profound impact on plant evolution, population structure, and agricultural practices. As obligate biotrophs, these intracellular nanorganisms depend entirely on their hosts survival to complete their replication cycle, propagate, and disperse. In response, plants have evolved an array of defenses to counteract viral infection, often leading to a trade-off between growth and defense. This trade-off is central to plant-virus interactions, as mounting a defense response frequently comes at the cost of reduced growth and reproduction [1]. Understanding how plants prioritize growth or defense in viral infection context is essential to developing effective crop protection methods, making it a pressing issue in agricultural research.

In this laboratory practice, we will investigate how variations in viral genetics lead to a differential impact on plant growth and defense trade-off using the compatible Nicotiana benthamiana / Turnip Mosaic Virus pathosystem.

Nicotiana benthamiana, a species susceptible to a wide range of viruses, serves as an important model organism for research in molecular plant sciences and genetics. The single-stranded RNA virus Turnip Mosaic Virus (TuMV) is a widespread plant pathogen known to infect a broad range of host species, causing significant agricultural losses. Today We will infect N. benthamiana plants with two TuMV constructs: TuMV-6K2-GFP (6K2G) and TuMV-HCPro expressing free GFP (HCG) to evaluate the growth-defense trade-off. These constructs allow us to assess how specific viral proteins influence the growth and defense balance. By infecting individual plants with each construct and with a mix of both constructs, we aim to determine which virus and growth effects prevail under mixed infections. As a negative control, plants will be infiltrated with Agrobacterium expressing free GFP to account for agroinfiltration effects.

The two viral constructs of our growth impact contest are:

  • TuMV 6K2-GFP (6K2G) construct developed by [2]

  • TuMV HCPro expressing free GFP (HCG) construct developed by [3]

Polyprotein structure of three viral constructs of TuMV. On top, Wild type configuration of TuMV genome. 6K2G construct expresses an additional copy of the membrane-associated 6K2 protein with a GFP attached to its C-terminal region. HCPro deletion or HCPro construct expresses a cleavable free GFP instead of the viral protease HC.

We will then determine disease symptoms by evaluating at 15 days post-infection the degree of GFP expression using a UV torch in plant leaves and quantifying viral accumulation to compare these traits between the two viral strains as well with the combinatory treatment exploring the relationships between TuMV genetics and their growth impact on N. benthamiana

Results

Relative fresh weight

``` r TuMVFW <- read.csv("Data/BI1293FWRelative.csv", sep = ",", header = T) TuMVFW$Construct <- factor(TuMV_FW$Construct, levels = c("Mock","GFP", "Hcpro","6K2", "HCproX6K2"))

Average per contruct

averageweights <- ddply(TuMVFW, .(Construct), summarize, AvgWeight = mean(FW.g.))
average
weightscontrol <- subset(averageweights, Construct == "Mock")

Relative weigth to GFP average

TuMVFW$RelativeWeight <- TuMVFW$FW.g. / averageweightscontrol$AvgWeight

colors <- c( "6K2" = "#67001F", "HCproX6K2" = "#CE1256", "Hcpro" = "#DF65B0" , "GFP" = "#C994C7", "Mock" = "black")

Plot

TuMVFWplot <- ggplot(TuMVFW, aes(x=Construct, y=RelativeWeight,fill = Construct)) + geombar(position = positiondodge(width = 0.9), stat = 'summary' ) + geomerrorbar(position = positiondodge(width = 0.9),stat = 'summary', width = 0.4,alpha = 0.5) + geomjitter( stat = 'identity', shape = 16, position = positionjitterdodge(0.15), size = 0.8, alpha = 0.5, color = "grey20") + labs(title = "Disease severity in fresh weight loss of 15dpi Plants", y = "Relative Fresh weight (mg)", x = "Agroinfiltration construct" ) + scalefillmanual(values = colors) + themeclassic(basesize = 14) + theme(axis.text.x = elementtext(angle = 90), legend.position = "bottom", plot.title = elementtext(hjust = 0.5))

Adding signifance test

comparisons <- list( c( "Mock", "Hcpro"), c("Mock","GFP"), c( "Mock","6K2"), c("Mock","HCproX6K2"), c("6K2","HCproX6K2"))

TuMVFWplotsig <- TuMVFWplot + statcomparemeans(comparisons = comparisons, method = "t.test", label = "p.signif") TuMVFWplotsig ```

## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

<!-- -->

r ggsave(device = svg, "Results/FreshWeight_TuMV.svg", plot = TuMV_FW_plot_sig, width=8, height=6)

## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

Why is the lab called Sociovirology ?

GFP and Viral titers preliminar analysis

``` r qPCRsraw <- read.table( "Data/NbTuMVGFPCP6K2.csv", sep = ",", header = T) qPCRsfil <- qPCRsraw[qPCRsraw$Cq != "N/A",] qPCRsfil$Cq <- as.numeric(qPCRsfil$Cq) qPCRsfilavg <- ddply(qPCRsfil, .(Primer, Genotype,Replicate), summarize, AvgCt = mean(Cq) ) qPCRsPP2A <- qPCRsfilavg[qPCRsfilavg$Primer =="PP2A",] qPCRsTarget <- qPCRsfilavg[qPCRsfilavg$Primer !="PP2A",]

qPCRsDCt <- merge(x = qPCRsPP2A , y = qPCRsTarget, by =c("Genotype","Replicate")) qPCRsDCt$DCt <- qPCRsDCt$AvgCt.y - qPCRsDCt$AvgCt.x

qPCRsDCt$log2DDCt <- 2^-( qPCRsDCt$DCt )

qPCRsDCt$Primer.y <- factor(qPCRsDCt$Primer.y , levels = c("GFP","6K2-GFP","TuMV CP")) TuMVtitters <- ggplot(qPCRsDCt, aes(x = Genotype, y = log2DDCt, fill = Genotype , group = Genotype)) + geombar(position = positiondodge(width = 0.9), stat = 'summary', fun.data = meanse, alpha = 0.6) + geomerrorbar(position = positiondodge(width = 0.9), stat = 'summary', fun.data = meanse, width = 0.4) + facetwrap(~ Primer.y , scales = "free") + ylab("Relative expression to PP2A") + xlab("Gene expressed") + geompoint(position = positiondodge(width = 0.9), alpha = 0.5, size = 0.8, color = "grey20" ) + themeclassic(basesize = 14) + theme(axis.text.x = elementtext(angle = 90,size = 14)) TuMV_titters ```

<!-- -->

Lab practice 2024: GFP and Viral titers

``` r qPCRsraw <- read.table( "Data/AllResults.csv", sep = "\t", header = T)

qPCRsfilavg <- ddply(qPCRsraw, .(Primer, Construct,SampleGroup), summarize, AvgCt = mean(CQ), SdCt = sd(CQ) )

qPCRsavgsd <- merge(qPCRsraw,qPCRsfilavg, by =c("Primer","Construct","SampleGroup") )

write.csv(qPCRsfilavg, "Results/qPCRsavgsd") qPCRsPP2A <- qPCRsfilavg[qPCRsfil_avg$Primer =="PP2A",]

PP2ACQ<- ggplot(qPCRsPP2A, aes(x = SampleGroup, y = AvgCt, fill = Construct , group = Construct)) + geombar(position = positiondodge(width = 0.9), stat = 'summary', fun.data = meanse, alpha = 0.6) + geomerrorbar(position = positiondodge(width = 0.9), stat = 'summary', fun.data = meanse, width = 0.4) + facetwrap(~ Construct , scales = "free") + geompoint(position = positiondodge(width = 0.9), alpha = 0.5, size = 0.8, color = "grey20" ) + themeclassic(basesize = 14) PP2ACQ ```

<!-- -->

r ggsave(device = svg, "Results/PP2A_CQ.svg", plot = PP2A_CQ, width=10, height=6) qPCRs_avg_sd_fil <- qPCRs_avg_sd[!grepl("6K2_ERV|HX6_FEM|HX6_5",qPCRs_avg_sd$Sample_Group),] qPCRs_PP2A_fil <- qPCRs_avg_sd_fil[qPCRs_avg_sd_fil$Primer =="PP2A",] PP2A_CQ_fil <-ggplot(qPCRs_PP2A_fil, aes(x = Sample_Group, y = Avg_Ct, fill = Construct , group = Construct)) + geom_bar(position = position_dodge(width = 0.9), stat = 'summary', fun.data = mean_se, alpha = 0.6) + geom_errorbar(position = position_dodge(width = 0.9), stat = 'summary', fun.data = mean_se, width = 0.4) + facet_wrap(~ Construct , scales = "free") + geom_point(position = position_dodge(width = 0.9), alpha = 0.5, size = 0.8, color = "grey20" ) + theme_classic(base_size = 14) PP2A_CQ_fil

<!-- -->

``` r ggsave(device = svg, "Results/PP2ACQfil.svg", plot = PP2ACQfil, width=10, height=6)

qPCRsTarget <- qPCRsavgsdfil[qPCRsavgsd_fil$Primer !="PP2A",]

qPCRsTargetCQ<- ggplot(qPCRsTarget, aes(x = SampleGroup, y = AvgCt, fill = Construct , group = Construct)) + geombar(position = positiondodge(width = 0.9), stat = 'summary', fun.data = meanse, alpha = 0.6) + geomerrorbar(position = positiondodge(width = 0.9), stat = 'summary', fun.data = meanse, width = 0.4) + facetwrap(~ Construct , scales = "free") ggsave(device = svg, "Results/qPCRsTargetCQ.svg", plot = qPCRsTargetCQ, width=10, height=6)

qPCRsfilavg <- qPCRsfilavg[!grepl("6K2ERV|HX6FEM|HX65",qPCRsfilavg$SampleGroup),] write.csv(qPCRsfilavg, "Results/qPCRsavgsd_filtered.csv")

qPCRsfilPP2A <- qPCRsfilavg[qPCRsfilavg$Primer =="PP2A",] qPCRsfilTarget <- qPCRsfilavg[qPCRsfilavg$Primer !="PP2A",]

qPCRsDCt <- merge(x = qPCRsfilPP2A , y = qPCRsfilTarget, by =c("Construct","SampleGroup"))

qPCRsDCt$DCt <- qPCRsDCt$AvgCt.y - qPCRsDCt$Avg_Ct.x

qPCRsDCt$RelExpr <- 2^-( qPCRsDCt$DCt )

qPCRsDCt$Primer.y <- mgsub(pattern = c("6K2","CP"), replacement = c("6K2-GFP","TuMV-CP"), x = qPCRsDCt$Primer.y ) qPCRsDCt$Construct <- gsub(pattern = "HX6", "6K2xDHC", qPCRsDCt$Construct)

qPCRsDCt$Construct <- factor(qPCRsDCt$Construct , levels = c("GFP","HCPro","6K2","6K2xDHC")) qPCRsDCt$Primer.y <- factor(qPCRsDCt$Primer.y , levels = c("GFP","6K2-GFP","TuMV-CP"))

TuMVRENoCP <- ggplot(qPCRsDCt[qPCRsDCt$Primer.y != "TuMV-CP",], aes(x = Construct, y = RelExpr, fill = Construct , group = Construct)) + geombar(position = positiondodge(width = 0.9), stat = 'summary', fun.data = meanse, alpha = 0.6) + geomerrorbar(position = positiondodge(width = 0.9), stat = 'summary', fun.data = meanse, width = 0.4) + facetwrap(~ Primer.y , scales = "free") + ylab("Relative expression to PP2A") + xlab("Plant agroinfiltrated") + geomtextrepel( color ="red", aes(label = SampleGroup, hjust = -0.05, vjust = -0.05)) + geompoint(position = positiondodge(width = 0.9), alpha = 0.5, size = 0.8, color = "grey20" ) + themeclassic(basesize = 14) + theme(axis.text.x = elementtext(angle = 90,size = 14), legend.title = elementblank(),legend.position = "none") ggsave(device = svg, "Results/TuMVRENoCP.svg", plot = TuMVRENoCP, width=10, height=6) TuMVRENoCP ```

<!-- -->

r TuMV_RE_CP <- ggplot(qPCRs_DCt[qPCRs_DCt$Primer.y == "TuMV-CP",], aes(x = Construct, y = log2(RelExpr), fill = Construct , group = Construct)) + geom_bar(position = position_dodge(width = 0.9), stat = 'summary', fun.data = mean_se, alpha = 0.6) + geom_errorbar(position = position_dodge(width = 0.9), stat = 'summary', fun.data = mean_se, width = 0.4) + facet_wrap(~ Primer.y , scales = "free") + ylab("Relative expression to PP2A") + xlab("Plant agroinfiltrated") + geom_text_repel( color ="red", aes(label = Sample_Group, hjust = -0.05, vjust = -0.05)) + geom_point(position = position_dodge(width = 0.9), alpha = 0.5, size = 0.8, color = "grey20" ) + theme_classic(base_size = 14) + theme(axis.text.x = element_text(angle = 90,size = 14), legend.title = element_blank(),legend.position = "none") ggsave(device = svg, "Results/TuMV_RE_CP.svg", plot = TuMV_RE_CP, width=10, height=6) TuMV_RE_CP

<!-- -->

r ggsave(device = svg, "Results/qPCRs_DDCt_plot.svg", plot = qPCRs_DDCt_plot, width=10, height=6) ggsave(device = svg, "Results/qPCRs_DDCt_others_plot.svg", plot = qPCRs_DDCt_plot_others, width=10, height=6)

>

Which virus prevailed in the contest ?

``` r TuMVRECP <- ggplot(qPCRsDCt[qPCRsDCt$Primer.y == "TuMV-CP",], aes(x = Construct, y = log2(RelExpr), fill = Construct , group = Construct)) + geombar(position = positiondodge(width = 0.9), stat = 'summary', fun.data = meanse, alpha = 0.6) + geomerrorbar(position = positiondodge(width = 0.9), stat = 'summary', fun.data = meanse, width = 0.4) + facetwrap(~ Primer.y , scales = "free") + ylab("Log2 Relative expression to PP2A") + xlab("Plant agroinfiltrated") + geompoint(position = positiondodge(width = 0.9), alpha = 0.5, size = 0.8, color = "grey20" ) + themeclassic(basesize = 14) + theme(axis.text.x = elementtext(angle = 90,size = 14), legend.title = element_blank(),legend.position = "none")

comparisons <- list( c("GFP","HCPro"), c("HCPro", "6K2xDHC"), c( "HCPro", "6K2"), c("6K2", "6K2xDHC"))

qPCRsDCtsigplot <- TuMVRECP + statcomparemeans(comparisons = comparisons, method = "t.test", label = "p.signif") qPCRsDCtsigplot ```

<!-- -->

r ggsave(device = svg, "Results/TuMV_RE_CP_Sig.svg", plot = qPCRs_DCt_sig_plot, width=10, height=6)

Correlation analysis

r library("ggstatsplot", quietly = T)

## You can cite this package as:
##      Patil, I. (2021). Visualizations with statistical details: The 'ggstatsplot' approach.
##      Journal of Open Source Software, 6(61), 3167, doi:10.21105/joss.03167

``` r GFPphenotypeexpression <- read.table( "Data/BI1293GFPperCMcor.csv", sep = ",", header = T) Corplot <- ggplot(data = GFPphenotypeexpression, aes(x = CQ.GFP, y = AreaGFP.cm2.)) + geompoint() +
statcor( method = "pearson", digits = 2)+ geomtextrepel( color ="red", aes(label = Construct, hjust = -0.05, vjust = -0.05)) + themeclassic(basesize = 14) + theme(axis.text.x = elementtext(angle = 45, vjust = 1, hjust=1, size = 10), axis.text.y = element_text(size = 10))

Cor_plot ```

<!-- -->

r #ggstatsplot::ggscatterstats(data = GFP_phenotype_expression, x = CQ.GFP, y = GFP.cm2, bf.message = F) + theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

References

1\. Karasov TL, Chae E, Herman JJ, Bergelson J. Mechanisms to mitigate the trade-off between growth and defense. The Plant Cell. 2017;29:66680.
2\. Thivierge K, Cotton S, Dufresne PJ, Mathieu I, Beauchemin C, Ide C, et al. Eukaryotic elongation factor 1A interacts with turnip mosaic virus RNA-dependent RNA polymerase and VPg-pro in virus-induced vesicles. Virology. 2008;377:21625.
3\. Hafrn A, stn S, Hochmuth A, Svenning S, Johansen T, Hofius D. Turnip mosaic virus counteracts selective autophagy of the viral silencing suppressor HCpro. Plant physiology. 2018;176:64962.

Owner

  • Name: Aimer_G_Diaz
  • Login: AimerGDiaz
  • Kind: user

GitHub Events

Total
  • Push event: 21
  • Create event: 2
Last Year
  • Push event: 21
  • Create event: 2