# Definição de matrizes
<- matrix(c(1, -308, 1, -318), ncol = 2, byrow = TRUE) # matriz A;
A # o sinal negativo decorre da função possuir inclinação negativa
<- matrix(c(4.4, -5.2), ncol = 1) # matriz b b
Biotermodinâmica
Bioenergética
- Estabilidade de biopolímeros;
- Interação ligante-receptor;
- Transporte de biomoléculas e íons;
- Mudanças conformacionais em biomacromoléculas;
- Associação de biopolímeros;
- Transferência de elétrons em proteínas;
- Combustão e síntese de biomoléculas;
- Geração de energia metabólica.
\[ \Delta G = \Delta H - T * \Delta S \tag{1}\]
Para isto é necessário determinar-se o valor de \(\Delta\)G da transição de fase, o que pode ser realizado de diversas maneiras, e a partir de metodologia igualmente diversificada. Assim, por meio de medidas espectroscópicas (absorção molecular, fluorescência, luminescência), hidrodinâmicas (viscosimetria, coeficiente de sedimentação, pressão osmótica), eletroquímicas (potenciometria, voltametria), ou de atividade biológica, dentre muitas, é possível quantificar o parâmetro termodinâmico \(\Delta\)G. Esse, por sua vez, pode ser extraído das relações que seguem, considerando-se uma transição de dois estados:
\[ N \rightleftarrows D \tag{2}\]
\[ K_{eq} = \frac{[D]}{[N]} \tag{3}\]
\[ \Delta G = - R*T*ln(K_{eq}) \tag{4}\]
Onde \(K_{eq}\), [D], e [N] representam, respectivamente, a constante de equilíbrio de desnaturação da proteina, bem como as concentrações dessa na forma desnaturada e nativa.
Em \(35^{o}\)C: \(\Delta\)G\(_{desn}\) = \(\Delta\)H\(_{desn}\) - 308 * \(\Delta\)S\(_{desn}\) = +4,4 kJ \(mol^{-1}\)
Em \(45^{o}\)C: \(\Delta\)G\(_{desn}\) = \(\Delta\)H\(_{desn}\) - 318 * \(\Delta\)S\(_{desn}\) = -5,2 kJ \(mol^{-1}\)
Outra solução, mais prática e computacional, envolve a resolução do sistema de equações lineares, tal como segue:
\[ a_{11}*x_1 + a_{12} * x_2 = b_1 \\ a_{21}*x_1 + a_{22} * x_2 = b_2 \tag{5}\]
Onde \(x_1\) e \(x_2\) representam, respectivamente, \(\Delta\)H\(_{desn}\) e \(\Delta\)S\(_{desn}\).
\[ a_{11}*x_1 + a_{12} * x_2 = b_1 \\ a_{21}*x_1 + a_{22} * x_2 = b_2 \tag{6}\]
\[ A = \begin{bmatrix} a_{11} & a_{12}\\ a_{21} & a_{22} \end{bmatrix} , \]
\[ x = \begin{bmatrix} b_1\\ b_2 \end{bmatrix} , \]
\[ b = \begin{bmatrix} x_1\\ x_2 \end{bmatrix} \]
\[ A * x = b \tag{7}\]
\[ x = A^{-1} * b \tag{8}\]
Solução de sistema de equações lineares no R
R
, define-se inicialmente a matriz para A e a matriz para b tal que:\[ A = \begin{bmatrix} 1 & -308\\ 1 & -318 \end{bmatrix} , \]
\[ b = \begin{bmatrix} +4,4\\ -5,2 \end{bmatrix} \]
solve
:# Solução matricial para sistema linear
solve(A) %*% b # # a operação %*% indica o produto escalar de dois
[,1]
[1,] 300.08
[2,] 0.96
# vetores ("dot product")
\[ \begin{pmatrix} 1 \\ 2 \\ 3 \\ \end{pmatrix} * \begin{pmatrix} 1 & 2 & 3 \\ \end{pmatrix} = \begin{pmatrix} 1 & 2 & 3 \\ 2 & 4 & 6 \\ 3 & 6 & 9 \\ \end{pmatrix} \tag{9}\]
Dessa forma, tal como visto no capítulo de Enzimas, poderíamos solucionar os parâmetros \(\Delta\)H\(_{desn}\) e \(\Delta\)SH\(_{desn}\) por ajuste linear. De fato, uma das expressões de Van’t Hoff que definem esta relação linear é:
\[ ln \, K_{eq} = - \frac{\Delta H}{R} * \frac{1}{T} + \frac{\Delta S}{R} \tag{10}\]
De fato, a solução matricial de ajuste linear pode ser obtida a partir da relação abaixo:
\[ \beta = (X^T \; X)^{-1} \; X^T*y \tag{11}\]
lm
sejam extraídos por outras funções do algoritmo de cálculos matriciais/estatísticos. Na Equação 11 o termo entre parênteses envolve a operação de inversão da matriz. Em álgebra linear não existe a operação de divisão para matrizes, mas somente a multiplicação de uma matriz por um escalar ou pela inversa de outra. E mesmo assim, somente se tratar-se de uma matriz quadrada. Dessa forma o termo (X\(^{T}\) X)\(^{-1}\) só pode ser calculado com inversão matricial. No R
essa ação é dada pelo comando solve
.Com dantes, é vital importância também que a matriz X contendo a variável independente seja criada com valores unitários à esquerda, tal como segue:
\[ X = \begin{bmatrix} 1 & x_{1}\\ 1 & x_{2}\\ 1 & x_{3}\\ ... & ... \end{bmatrix} \]
# Solução matricial para os parâmetros cinéticos de Lineweaver-Burk
# Repetindo os dados para as variáveis de Lineweaver-Burk
<- seq(0.1, 1, length.out = 20) # gera uma sequência com 20 pontos
S # entre 0 e 1 para valores de substrato
<- 10
Vm <- 0.5 # parâmetros cinéticos
Km set.seed(1500) # estabelece a mesma semente aleatória do gráfico direto
# de Michaelis-Menten, para reproducibilidade dos pontos
<- runif(20, 0, 1) # comando para erro uniforme (no. de pontos, min, max)
erro <- Vm * S / (Km + S) + erro # equação de Michaelis-Menten
v <- 1 / S # cria variáveis para o duplo-recíproco
inv.S <- 1 / v
inv.v
# Criação das matrizes A e b
<- matrix(c(rep(1, 20), inv.S), nrow = 20, byrow = FALSE) # cria matriz
A2 # com valor unitário necessário antes da variável independente
<- as.matrix(inv.v, nrow = 1, byrow = FALSE) # vetor b
b2
# Solução matricial do ajuste linear
<- solve(t(A2) %*% A2) %*% t(A2) %*% b2
beta beta
[,1]
[1,] 0.11363419
[2,] 0.03277244
lm
do R
.Matrizes e R
Dessa forma, é interessante uma rápida panorâmica no potencial de matrizes que o
R
possui.# Algumas manipulações com matrizes
## Identificação de linhas e colunas
<- matrix(c(-308, -318),
res nrow = 2, byrow = TRUE, # definição de matriz
dimnames = list(c("Delta H", "Delta S"), "kJ/mol")
) res
kJ/mol
Delta H -308
Delta S -318
## Operações aritméticas
<- matrix(c(1, 2, 3, 4), nrow = 2, byrow = T)
m1 <- matrix(c(4, 5, 6, 7), nrow = 2, byrow = T)
m2 + 5 m1
[,1] [,2]
[1,] 6 7
[2,] 8 9
- 7 # soma ou subtração em escalar m2
[,1] [,2]
[1,] -3 -2
[2,] -1 0
^2 m1
[,1] [,2]
[1,] 1 4
[2,] 9 16
sin(m2) # potência ou trigonometria
[,1] [,2]
[1,] -0.7568025 -0.9589243
[2,] -0.2794155 0.6569866
+ m2 # soma de elementos em matrizes de igual dimensão m1
[,1] [,2]
[1,] 5 7
[2,] 9 11
* m2 # multiplicação de elementos em matrizes de igual dimensão m1
[,1] [,2]
[1,] 4 10
[2,] 18 28
%*% m2 # produto cruzado de matrizes ("dot product" de vetores) m1
[,1] [,2]
[1,] 16 19
[2,] 36 43
det(m1) # determinante da matriz
[1] -2
t(m2) # transposição da matriz
[,1] [,2]
[1,] 4 6
[2,] 5 7
diag(m1) # matriz diagonal
[1] 1 4
solve(m2) # inverso da matriz
[,1] [,2]
[1,] -3.5 2.5
[2,] 3.0 -2.0
eigen(m1) # autovalor ("eingenvalue") e autovetor ("eigenvector") da matriz
eigen() decomposition
$values
[1] 5.3722813 -0.3722813
$vectors
[,1] [,2]
[1,] -0.4159736 -0.8245648
[2,] -0.9093767 0.5657675
R
também permite várias outras operações utilizadas em cálculo numérico e simbólico que utilizam matrizes, tais como as funções kronecker
(multiplicação matricial), svd
(Single Decomposition Value), qr
(Decomposição QR), e chol
(Decomposição de Cholesky).Solução de parâmetros termodinâmicos de estabilidade enzimática
\[ \begin{cases}\Delta G^\ddagger = \Delta H^\ddagger-T* \Delta S^\ddagger \\ ln(\frac{kcat*h}{K_B*T})=-\frac{1}{RT}*\Delta H^\ddagger + \frac{1}{R}*\Delta S^\ddagger \end{cases} \tag{12}\]
Onde os termos com \(\ddagger\) simbolizam as variações de quantidades referentes à ativação (ou desativação) da enzima (estado de transição do complexo ativado), \(K_{B}\) representa a constante de Boltzmann (1,381x10\(^{-23}\) JK\(^{-1}\)), h a constante de Planck (6,686x10\(^{-34}\) J*s), e R a constante geral dos gases (8,314 JK\(^{-1}\) mol\(^{-1}\)). Nem sempre é possível convergir uma solução matricial pela simples utilização de multiplicação cruzada (dot product).
\[ \Delta G^{\ddagger}=65920\, J\,mol^{-1} \\ T = 328 K \\ kcat = 217 s^{-1} \tag{13}\]
\[ A = \begin{bmatrix} 1 & -328\\ -3.67e-4 & 0.120\\ \end{bmatrix} , \]
\[ b = \begin{bmatrix} 65920\\ -24.17\\ \end{bmatrix} \]
# Tentativa de solução matricial simples em dados publicados
# (Appl. Microbiol. Biotechnol, 73, 1290, 2007):
<- matrix(c(1, -3.67e-4, -328, 0.120), nrow = 2, byrow = TRUE)
A <- matrix(c(65921, -24.17), nrow = 2)
b solve(A) %*% b
[,1]
[1,] -21038593
[2,] -57505488910
solve
também sofre de resolução para o problema, incorrendo em erro se executada, tal como no trecho que segue. Observe também a possibilidade distinta para a construção das matrizes.<- data.frame(c(1, -3.67e-4), c(-328, 0.120))
Aframe <- as.matrix(Aframe)
A <- as.matrix(c(65921, -24.17))
b solve(t(A) %*% A) %*% t(A) %*% b
R
, tal como o rootSolve
já utilizado ou o nleqslv
empregado anteriormente. Nesse sentido, a minimização de busca de raízes para o sistema de equações pode ser demonstrada a seguir:# Minimização para raízes de sistema de equações termodinâmicas
library(rootSolve)
<- 328
T <- 8.314
R <- 6.626e-34
h <- 1.381e-23
kb <- 217
kcat <- -R * T * log((kcat * h) / (kb * T)) # 65920 J/mol
DG <- function(x) c(x[1] - T * x[2] - DG, x[2] / R - x[1] / (R * T) -
model log((kcat * h) / (kb * T)))
<- multiroot(model, start = c(50000, 50000))) (ss
$root
[1] 40843.50837 -76.45441
$f.root
[1] 2.110028e-09 -7.744916e-13
$iter
[1] 3
$estim.precis
[1] 1.055401e-09
Comparando-se os valores, os autores encontraram \(\Delta\) H\(^{\ddagger}\) = 33,3 kJmol\(^{-1}\) e \(\Delta\) S\(^{\ddagger}\) = -99,8 Jmol\(^{-1}\)K\(^{-1}\). Perceba a semelhança dos resultados obtidos pela minimização de raízes com os parâmetros encontrados pelos autores. A obtenção do valor de \(\Delta\) H\(^{\ddagger}\) para esses, contudo, foi obtida somente a partir da obtenção do valor experimental de energia de ativação de Arrhenius (Ea), pela inclinação de um gráfico linearizado da taxa de reação, tal como segue:
\[ k = A *e^{-Ea/RT} \\ ln(k) = \frac{\Delta S^{\ddagger}}{R} - \frac{\Delta H^{\ddagger}}{R} * \frac{1}{T} \tag{14}\]
\[ k = f(kcat) = e^{-\Delta G^{\ddagger}/RT} \tag{15}\]
require(rootSolve)
<- 328
T <- 8.314
R <- 6.626e-34
h <- 1.381e-23
kb <- 217
kcat <- 66000
DG <- function(x) c(x[1] - T * x[2] - DG, x[2] / R - x[1] / (R * T) -
model log((kcat * h) / (kb * T)))
<- multiroot(model, start = c(50000, 50000))) (ss
$root
[1] 51579492242 157254348
$f.root
[1] 177.50881195 -0.09422566
$iter
[1] 3
$estim.precis
[1] 88.80152
Entalpia De Reação Por Matrizes
\[ 0 = \sum_{i=1}^{N} \nu_i B_i \tag{16}\]
\[ 2 C_2H_2(g)+ 5 O_2(g) \rightleftarrows 4 CO_2(g) + 2 H_2O(l), \\ \Delta_fH^o = -2600 \, kJ/mol\\ 2 C_2H6(g) + 7 O_2(g) \rightleftarrows 4 CO_2(g) + 6 H_2O(l), \\ \; \Delta_fH^o = -3210 \, kJ/mol \\ H_2(g) + \frac{1}{2} O_2(g) \rightleftarrows H_2O(l), \\ ; \Delta_fH^o = -286 \, kJ/mol\\ C_2H_2(g) + 2H_2(g) \rightleftarrows C_2H_6(g), \\ \; \Delta_fH^o = ? \tag{17}\]
Matematicamente a Lei de Hess pode ser expressa como:
\[ \Delta_fH^o = \sum_{n=1}^{\infty} \nu \Delta_fH^o_P - \sum_{n=1}^{\infty} \nu \Delta_fH^o_R \tag{18}\]
Onde \(\nu\) representa a estequiometria da reação, ou seja, o número de mols de cada composto/elemento, enquanto P e R referem-se à Produto e Reagente.
Para isso, é necessário 1) compor as matrizes A e b, 2) calcular o vetor de coeficients beta, e 3) efetuar o produto escalar (%*%) de beta com uma matriz formada pelos valores de entalpia de formação. O racional para compor as matrizes envolve elencar cada composto com sua estequiometria de reação, e exige que para reagentes seja conferido valor negativo, enquanto que para produtos, valor positivo.
A tabela abaixo ilustra essa construção para o problema em questão.
library(knitr) # para gerar a tabela
<- c("C2H2", "O2", "CO2", "H2O", "C2H6", "H2") # elenco dos compostos
comp # envolvidos
<- c(-2, -5, +4, +2, 0, 0) # estequiometria (reação1)
rea1 <- c(0, -7, +4, +6, -2, 0) # estequiometria (reação2)
rea2 <- c(0, -0.5, 0, +1, 0, -1) # estequiometria (reação3)
rea3 <- c(-1, 0, 0, 0, +1, -2) # estequiometria da reação com entalpia
incog # desconhecida
<- data.frame(comp, rea1, rea2, rea3, incog) # dataframe com os
tab_esteq # resultados
colnames(tab_esteq) <- c("composto", "reação 1", "reação 2", "reação 3",
"etano") # nomeia as colunas
::kable(tab_esteq, caption = "Estequiometria reacional para uma solução
knitr matricial de formação de etano (C2H6).", "pipe") # tabela
composto | reação 1 | reação 2 | reação 3 | etano |
---|---|---|---|---|
C2H2 | -2 | 0 | 0.0 | -1 |
O2 | -5 | -7 | -0.5 | 0 |
CO2 | 4 | 4 | 0.0 | 0 |
H2O | 2 | 6 | 1.0 | 0 |
C2H6 | 0 | -2 | 0.0 | 1 |
H2 | 0 | 0 | -1.0 | -2 |
# Solução matricial para entalpia de formação
<- matrix(c(-2, 0, 0, -5, -7, -0.5, 4, 4, 0, 2, 6, 1, 0, -2, 0, 0, 0, -1),
A nrow = 6, byrow = T) # cria matrix das reações com variação de
# entalpia conhecida
<- matrix(c(-1, 0, 0, 0, 1, -2), nrow = 6, byrow = T) # cria matriz dos
b # coeficientes estequiométricos da reação com variação de entalpia
# desconhecida
<- solve(t(A) %*% A) %*% t(A) %*% b # cálcula beta
beta <- matrix(c(-2600, -3210, -286), nrow = 1, byrow = T) # cria matriz
energ # com os valores de entalpia
<- energ %*% beta
etano cat("Valor para deltaHr etano: ", etano, " kJ/mol")
Valor para deltaHr etano: -267 kJ/mol
Quantidades Termodinâmicas Por Ajuste Polinomial
Não obstante, não poderíamos utilizar as relações lineares de matrizes ou ajustes lineares para solucionar parâmetros quantitativos em situações que não repousassem no comportamento linear entre as variáveis, tal como referido pela Equação 10, por exemplo.
# Dependência de T com deltaG para insulina e receptor
<- c(5.29, 10.07, 15.23, 20.21, 25.11, 30.29, 37.39) + 273
T # dados de temperatura, em graus Kelvin
<- c(11.74, 12.17, 12.46, 12.73, 12.88, 12.98, 13.13) * -1e3
dG # dados de -deltaG, em kcal/mol
plot(T, dG,
xlab = "T, K", ylab = expression(paste(Delta, "G, kcal/mol"))
)

# Ajuste polinomial de parâmetros termodinâmicos
<- lm(dG ~ poly(T, 3, raw = TRUE)) # ajuste a polinômio de 3o. grau;
pol3 # "raw=TRUE" é essencial
# Alternativamente, pode-se também ajustar polinômios como
# pol3<-lm(dG ~ T + I(T^2)+I(T^3))
summary(pol3)
Call:
lm(formula = dG ~ poly(T, 3, raw = TRUE))
Residuals:
1 2 3 4 5 6 7
2.350 -13.432 26.731 -16.407 -8.577 12.164 -2.829
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.970e+05 2.449e+05 3.663 0.0352 *
poly(T, 3, raw = TRUE)1 -8.836e+03 2.498e+03 -3.537 0.0385 *
poly(T, 3, raw = TRUE)2 2.866e+01 8.492e+00 3.375 0.0433 *
poly(T, 3, raw = TRUE)3 -3.105e-02 9.613e-03 -3.230 0.0482 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 21.6 on 3 degrees of freedom
Multiple R-squared: 0.999, Adjusted R-squared: 0.9981
F-statistic: 1045 on 3 and 3 DF, p-value: 5.02e-05
plot(T, dG,
xlab = "T, K", ylab = expression(paste(Delta, "G, kcal/mol"))
# gráfico de T x deltaG
)lines(T, fitted(pol3), col = "red") # curva ajustada sobre os dados

\[ A = \begin{bmatrix} 1 & 278.29\\ 1 & 283.07\\ 1 & 288.23\\ 1 & 293.21\\ 1 & 298.11\\ 1 & 303.29\\ 1 & 310.39\\ \end{bmatrix} , \] \[ b = \begin{bmatrix} -11740\\ -12170\\ -12460\\ -12730\\ -12880\\ -12980\\ -13130\\ \end{bmatrix} \]
\[ matriz \,V = \begin{bmatrix} 1 & x_1 & x_1^2 & x_1^3 & ... \\ 1 & x_2 & x_2^2 & x_2^3 & ... \\ 1 & x_3 & x_3^2 & x_3^3 & ...\\ 1 & ...& ... & ... & ...\\ \end{bmatrix} , \]
R
possui um pacote para automatizar essa transformação, matrixcalc
, exemplificado no trecho de código abaixo:Agora basta aplicar a mesma relação matricial da Equação 8, no caso, para quatro pontos intercalados dos dados experimentais acima, e portanto produzindo um polinômio de 4o grau:
# Ajuste polinomial de 4o. grau para parâmetros termodinâmicos
<- c(5.29, 15.23, 25.11, 37.39) + 273 # dados de temperatura,
T # em graus Kelvin
<- c(11.74, 12.46, 12.88, 13.13) * -1e3 #
dG
library(matrixcalc)
# Criação das matrizes A (Vandermonde) e b
<- as.matrix(dG, nrow = 4, byrow = TRUE) # vetor b
b <- vandermonde.matrix(alpha = T, n = 4)
A # função para criar matriz de alternância (Vandermonde) A
[,1] [,2] [,3] [,4]
[1,] 1 278.29 77445.32 21552259
[2,] 1 288.23 83076.53 23945149
[3,] 1 298.11 88869.57 26492908
[4,] 1 310.39 96341.95 29903579
<- solve(A) %*% b
sol.vnd # coeficientes polinomiais (4o. grau) sol.vnd
[,1]
[1,] 5.095658e+05
[2,] -4.886799e+03
[3,] 1.525183e+01
[4,] -1.589352e-02
polynom
:library(polynom) # converte vetor de coeficientes em polinômio simbólico
<- as.polynomial(sol.vnd)
p <- as.function(p) # permite converter o polinômio pra função curve
p2 plot(T, dG)
curve(p2, from = 273, to = 315, add = TRUE) # curva polinomial suave
R
(lm
) como pela solução matricial acima, revele boa adesão do modelo aos dados experimentais, como representado pela Figura 2 e pela tabela de resultados acima, não há correlação de parâmetros termodinâmicos, posto tratar-se de um modelo matemático empírico, e não analítico para o sistema.Entretanto, é possível obter uma boa aproximação das quantidades \(\Delta\)H (entalpia), \(\Delta\)S (entropia) e \(\Delta\)Cp (capacidade calorífica) que modelam fenomenologicamente o comportamento termodinâmico em determinada temperatura, por relações próprias entre essas quantidades [@edelhoch1976thermodynamic].
\[ \Delta S = -(\frac{\partial \Delta G}{\partial T})_p \tag{19}\]
\[ \Delta G = a+bT+cT^2+dT^3 \tag{20}\]
Assim, o valor de \(\Delta\)S pode ser obtido pela primeira derivada da relação empírica acima (Equação 20):
\[ \Delta S = -(\frac{\partial \Delta G}{\partial T})_p = -b-2cT-3dT^2 \tag{21}\]
O valor de \(\Delta\)H, por sua vez, pode agora ser extraído da Equação 22 aqui repetida, juntamente com a Equação 20:
\[ \Delta G = \Delta H - T * \Delta S \tag{22}\]
\[ \Delta H = \Delta G +T * \Delta S \tag{23}\]
\[ \Delta H = (a+bT+cT^2+dT^3) +T(-b-2cT-3dT^2) \tag{24}\]
\[ \Delta H = a-cT^2-2dT^3 \tag{25}\]
\[ \Delta Cp = -(\frac{\partial \Delta H}{\partial T})_p \tag{26}\]
Ou seja, o valor de \(\Delta\)Cp pode ser aproximado pela primeira derivada de \(\Delta\)H (Equação 24) sobre T. Ou seja:
\[ \Delta Cp = -2cT-6dT^2 \tag{27}\]
# Solução polinomial de parâmetros termodinâmicos para interação de
# insulina com receptor
<- c(5.29, 10.07, 15.23, 20.21, 25.11, 30.29, 37.39) +
T 273 # dados de temperatura, em graus Kelvin
<- c(11.74, 12.17, 12.46, 12.73, 12.88, 12.98, 13.13) *
dG -1e3 # dados de -deltaG, em kcal/mol
# Ajuste a polinômio de 2o. grau
<- lm(dG ~ poly(T, 3, raw = TRUE)) # ajuste a polinômio de 3o. grau
pol3
<- 298 # temperatura de referência, em graus Kelvin
Tref
# Cálculos
<- coef(pol3)[1] + coef(pol3)[2] * Tref + coef(pol3)[3] *
dG ^2 + coef(pol3)[4] * Tref^3 # deltaG
Tref<- -coef(pol3)[2] - 2 * coef(pol3)[3] * Tref - 3 * coef(pol3)[4] *
dS ^2 # deltaS
Tref<- coef(pol3)[1] - coef(pol3)[3] * Tref^2 - 2 * coef(pol3)[4] *
dH ^3 # deltaH
Tref<- -2 * coef(pol3)[3] * Tref - 6 * coef(pol3)[4] * Tref^2 # deltaCp
dCp
# Parâmetros em 298 K
cat("valor de deltaG: ", dG, "cal/mol", "\n")
valor de deltaG: -12868.43 cal/mol
cat("Valor de deltaS: ", dS, "cal/mol/K", "\n")
Valor de deltaS: 27.29257 cal/mol/K
cat("Valor de deltaH: ", dH, "cal/mol", "\n")
Valor de deltaH: -4735.248 cal/mol
cat("valor de deltaCp: ", dCp, "cal/mol/K", "\n")
valor de deltaCp: -537.5956 cal/mol/K
Estabilidade Termodinâmica de Biopolímeros
\[ f_D+f_N = 1 \tag{28}\]
O que resulta em:
\[ f_N = 1 - f_D \tag{29}\]
\[ S = f_N * S_N +f_D * S_D \tag{30}\]
\[ f_D = \frac{S_i-S_N}{S_D-S_N} \tag{31}\]
Onde Si representa o sinal no ponto i.
\[ K_D = \frac{[D]}{[N]}=\frac{f_D}{f_N} \tag{32}\]
\[ K_D = \frac{f_D}{1-f_D} \tag{33}\]
E, portanto,
\[ \Delta G_D = -RT*ln\;K_D \tag{34}\]
\[ \Delta G(T) = \Delta H_m(\frac{Tm-T}{Tm})-\Delta Cp[Tm-T(1-ln \; \frac{Tm}{T})]) \tag{35}\]
# Curva de desnaturação para proteína
<- 85
Tm <- 180
dHm <- 3
dCp <- 0:80
x
curve(dHm * (1 - x / Tm) + dCp * ((x - Tm - x * log(x / Tm)))
xlim = c(0, 80)) # Nicholson1996; Sholz2009 ,
Relação Quantitativa Estrutura-Função (QSAR) e Ajuste Multilinear
\[ pIC_{50}=x_0+x_1*S+x_2*W \] {#eq:eqTIBO}
Onde pIC\(_{50}\) representa a atividade biológica aferida (-log IC\(_{50}\)), S indexa valores de solubilidade, e W refere-se a parâmetro de largura do primeiro átomo do grupo substituinte. Esses dados são tabelados abaixo:
# Dados de tabulação para QSAR
<- c("H", "Cl", "SCH3", "OCH3", "CN", "CHO", "Br", "CH3", "CCH")
grupo # grupos substituintes em TIBO
<- c(3.53, 4.24, 4.09, 3.45, 2.96, 2.89, 4.39, 4.03, 3.8) # parâmetro de solubilidade
S <- c(1, 1.8, 1.7, 1.35, 1.6, 1.6, 1.95, 1.6, 1.6)
W # parâmetro de largura de grupo
<- c(7.36, 8.37, 8.3, 7.47, 7.25, 6.73, 8.52, 7.87, 7.53)
pIC50 # atividade biológica de TIBO
<- data.frame(grupo, S, W, pIC50)
tab.tibo ::kable(tab.tibo, caption = "dados multivariáveis de atividade
knitr biológica de TIBO e parâmetros preditivos.", "pipe") # tabela
grupo | S | W | pIC50 |
---|---|---|---|
H | 3.53 | 1.00 | 7.36 |
Cl | 4.24 | 1.80 | 8.37 |
SCH3 | 4.09 | 1.70 | 8.30 |
OCH3 | 3.45 | 1.35 | 7.47 |
CN | 2.96 | 1.60 | 7.25 |
CHO | 2.89 | 1.60 | 6.73 |
Br | 4.39 | 1.95 | 8.52 |
CH3 | 4.03 | 1.60 | 7.87 |
CCH | 3.80 | 1.60 | 7.53 |
R
permite fazê-lo por ao menos duas formas: função interna de ajuste linear (lm
) ou álgebra matricial.Ajuste linear múltiplo por função lm
:
# Ajuste multilinear em QSAR
<- lm(tab.tibo$pIC50 ~ tab.tibo$S + tab.tibo$W)
lm.tibo # comando para ajuste multilinear;
# Alternativamente,
# lm.tibo <- lm(cbind(S,W)~pIC50)
summary(lm.tibo)
Call:
lm(formula = tab.tibo$pIC50 ~ tab.tibo$S + tab.tibo$W)
Residuals:
Min 1Q Median 3Q Max
-0.27636 -0.15649 0.02922 0.08911 0.24761
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.5903 0.5435 6.606 0.000579 ***
tab.tibo$S 0.9571 0.1519 6.300 0.000746 ***
tab.tibo$W 0.3619 0.3020 1.199 0.275888
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.2045 on 6 degrees of freedom
Multiple R-squared: 0.912, Adjusted R-squared: 0.8826
F-statistic: 31.07 on 2 and 6 DF, p-value: 0.0006826
R
(*dataframe $ vetor). Essa é maneira mais simples, pois independe de pacotes extras (como o dplyr
), embora seja menos legível.\[ y=5,75+0,14*S+0,95*W \tag{36}\]
Ajuste linear múltiplo por matrizes:
\[ X = \begin{bmatrix} 1 & S_{1} & W_{1} \\ 1 & S_{2} & W_{2}\\ 1 & S_{3} & W_{3}\\ ... & ... \end{bmatrix} \]
# Criação das matrizes A e b
<- matrix(c(rep(1, 9), S, W), nrow = 9, byrow = FALSE)
A # cria matriz com valor unitário necessário antes da variável independente
<- as.matrix(pIC50, nrow = 1, byrow = FALSE) # vetor b
b
# Solução matricial do ajuste linear
<- solve(t(A) %*% A) %*% t(A) %*% b
beta beta
[,1]
[1,] 3.5902556
[2,] 0.9571092
[3,] 0.3619292
Esse procedimento matricial multilinear também pode ser aplicado em outros tipo de análise multivariável, como experimento fatorial e metodologia de superfície de resposta. Isso decorre da própria natureza desses sistemas, quando lineares. Veja as aplicações abaixo. Mesmo para metodologia de superfície de resposta quadrática (onde os parâmetros variam com o quadrado das variáveis preditoras), também é possível a solução matricial (Equação 11).
\[ y = b_0+b_1*x, \, ajuste\ linear \\ y = b_0+b_1*x_1+b_2*x_2+...+b_n*x_n, \, ajuste \, multilinear \\ y = b_0+b_1*x_1+b_2*x_2+...+b_n*x_n, \, metodologia \, de \, superfície \, de \, resposta \, linear \\ y = b_0+b_1*x_1+b_2*x_2+b_{12}*x_1*x_2, \, planejamento \, fatorial \, 2^2 \\ y = b_0+b_1*x_1+b_2*x_2+b_3*x_3+b_{12}*x_1*x_2+,b_{13}*x_1*x_3+b_{23}*x_2*x_3+b_{123}*x_1*x_2*x3 \, experimento \, fatorial \, 2^3 \\ y = b_0+b_1*x_1+b_2*x_2+b_{11}*x_1^2+b_{22}*x_2^2+b_{12}*x_1*x_2, \, metodologia \, de \,superfície \, de \, resposta \, quadrática \\ \tag{37}\]
Uma palavra sobre matrizes e aplicações
\[ y = \sum_{n=1}^{\infty} (x_1*x_2) \tag{38}\]