library(data.table)
library(ggplot2)
library(tidyr)
#create function to play around with parameters--
#I can plug in any parameters and get the shape of the unfolding curve
ufold<-function(Tm=40,slope=1,min=0,x=seq(30,70,.1)){
y=min+(1-min)/(1+exp((-slope*(Tm-x))))
return(y)
}
\[Fraction\ non-denatured = min + \frac{(1-min)}{(1+exp^{(-slope * (Tm-Temperature)})}\] There are three parameters:
I varied Tm values from 30-60 and held min and slope as the same.
#create a data set, wide format, varying different Tm values
a4<-data.frame(x=seq(30,70,.1),Tm30=ufold(Tm=30),Tm40=ufold(),Tm50=ufold(Tm=50),Tm60=ufold(Tm=60))
a5<-gather(a4,param,y,Tm30:Tm60) # make it long format
ggplot(a5,aes(x=x,y=y,colour=param))+
geom_line()+#facet_wrap(~param)+
xlab("Temperature in Celcius")+ylab("Fraction non-denatured")
Thoughts: Changes in the melting temperature or Tm towards higher values means that the protein unfolds at a higher temperature. It is more thermally stable.
I varied slope values from 0.05- 10 and held Tm and min as the same.
#create a data set, wide format, varying different slopes
a<-data.frame(x=seq(30,70,.1),slope0.05=ufold(slope=.05),slope0.1=ufold(slope=.1),
slope0.5=ufold(slope=.5),slope10=ufold(slope=10))
a1<-gather(a,param,y,slope0.05:slope10) # make it long format
#all in 1 plot
ggplot(a1,aes(x=x,y=y,colour=param))+
geom_line()+#facet_wrap(~param)+
xlab("Temperature in Celcius")+ylab("Fraction non-denatured")
# plot, with slope parameter as a facet
#ggplot(a1,aes(x=x,y=y,colour=param))+
# geom_line()+facet_wrap(~param)+
# xlab("Temperature in Celcius")+ylab("Fraction non-denatured")
Thoughts: Changes in the slope isn’t given much thought in the unfolding literature (that I’ve read at least). However, I’d interpret this as the rate of unfolding and it is possible for a protein to be similar in their melting temperature, but the rate change could lead to differences in stability at the lower and higher end of the temperature gradient. For example, if a protein has the same Tm, a lower slope value leads to higher stability above Tm, but lower stability below the Tm.
I varied min parameter values from 0-0.3 and held Tm and min as the same.
#create a data set, wide format, varying different min values
a2<-data.frame(x=seq(30,70,.1),min0=ufold(min=0),min.1=ufold(min=.1),min.2=ufold(min=.2),min.3=ufold(min=.3))
a3<-gather(a2,param,y,min0:min.3) # make it long format
ggplot(a3,aes(x=x,y=y,colour=param))+
geom_line()+#facet_wrap(~param)+
xlab("Temperature in Celcius")+ylab("Fraction non-denatured")
Thoughts: Overall stability of the protein. It is the minimum value of unfolding over the temperature gradient that is surveyed. Not all proteins can completely unfold. What is the reason for this? Not sure.
sessionInfo()
## R version 4.3.2 (2023-10-31 ucrt)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 19045)
##
## Matrix products: default
##
##
## locale:
## [1] LC_COLLATE=English_United States.utf8
## [2] LC_CTYPE=English_United States.utf8
## [3] LC_MONETARY=English_United States.utf8
## [4] LC_NUMERIC=C
## [5] LC_TIME=English_United States.utf8
##
## time zone: America/New_York
## tzcode source: internal
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] tidyr_1.3.0 ggplot2_3.4.3 data.table_1.14.8
##
## loaded via a namespace (and not attached):
## [1] vctrs_0.6.3 cli_3.6.1 knitr_1.43 rlang_1.1.1
## [5] xfun_0.40 highr_0.10 purrr_1.0.2 generics_0.1.3
## [9] jsonlite_1.8.7 labeling_0.4.2 glue_1.6.2 colorspace_2.1-0
## [13] htmltools_0.5.6 sass_0.4.7 fansi_1.0.4 scales_1.2.1
## [17] rmarkdown_2.24 grid_4.3.2 evaluate_0.21 munsell_0.5.0
## [21] jquerylib_0.1.4 tibble_3.2.1 fastmap_1.1.1 yaml_2.3.7
## [25] lifecycle_1.0.3 compiler_4.3.2 dplyr_1.1.2 pkgconfig_2.0.3
## [29] rstudioapi_0.15.0 farver_2.1.1 digest_0.6.33 R6_2.5.1
## [33] tidyselect_1.2.0 utf8_1.2.3 pillar_1.9.0 magrittr_2.0.3
## [37] bslib_0.5.1 withr_2.5.0 tools_4.3.2 gtable_0.3.4
## [41] cachem_1.0.8