saltify: calculator for ammonium sulfate precipitation
We can fractionate an aqueous extract of a biological sample by salting-out and (NH4)2SO4 has just the necessary solubility. Below, I describe a simple function for calculating the amount of ammonium sulfate to add into a certain volume of extract in order to obtain a desired percentage of saturation.
Ammonium sulfate calculator function
Following (Wingfield, 1998), the mass of ammonium sulfate in grams to add for obtaining the desired percentage of saturation is given by the following equation:
\[ \mathrm{mass\ (g)} = \frac{mass_{Sat}\times(M_2-M_1)}{M_{Sat}-(\nu/1000\times132.14\times M_{Sat}\times M_2)} \]
Where \(mass_{Sat}\) is the number of grams per liter in a saturated solution of ammonium sulfate, \(M_2\) is the desired molarity, \(M_1\) is the starting molarity, \(M_{Sat}\) is the molarity of a saturated solution of ammonium sulfate, and \(\nu\) is the specific volume of ammonium sulfate (mL/g). Also, take into account that \(mass_{Sat}\), \(M_{Sat}\), and \(\nu\) all vary with temperature.
saltify <-
function(initial_volume, desired_percentage, starting_percentage,
temperature) {
library(tidyverse)
# Density and molarity of ammonium sulfate solutions
AS <- tibble(temperature = c(0, 10, 20, 25), # degree Celsius
specVol = c(0.5281, 0.5357, 0.5414, 0.5435), # mL/g
sat = c(515.35, 524.60, 536.49, 541.80), # g
Msat = c(3.90, 3.97, 4.06, 4.10) # mol/L
)
# Use a linear model to obtain temperature values ranging from 0 to 25
m1 <- lm(specVol~temperature, data = AS)
m2 <- lm(sat~temperature, data = AS)
m3 <- lm(Msat~temperature, data = AS)
ASlm <- tibble(temperature = c(0:25))
AS <- tibble(temperature = c(0:25),
specVol = predict(object = m1, newdata = ASlm),
sat = predict(object = m2, newdata = ASlm),
Msat = predict(object = m3, newdata = ASlm)
)
G <- cbind.data.frame(temperature = AS$temperature,
values = rep(NA, length(AS$temperature)))
for (i in 1:length(AS$temperature)) {
M1 <- starting_percentage/100*AS$Msat[i]
M2 <- desired_percentage/100*AS$Msat[i]
G$values[i] <-
AS$sat[i]*(M2-M1)/(AS$Msat[i]-(AS$specVol[i]/1000*132.14*AS$Msat[i]*M2))
}
G$values <- G$values*initial_volume/1000
return(paste("You need to add ",
round(G[G$temperature == temperature, "values"],
digits = 2),
" g of ammonium sulfate to an initial volume of ",
initial_volume,
" mL in order to increase the ammonium sulfate saturation from ",
starting_percentage, "%", " to ", desired_percentage, "% at ",
temperature, "°C.", sep = ""))
}
# Example
saltify(initial_volume = 112,
desired_percentage = 90,
starting_percentage = 60,
temperature = 18)
## [1] "You need to add 24.23 g of ammonium sulfate to an initial volume of 112 mL in order to increase the ammonium sulfate saturation from 60% to 90% at 18°C."
About evobioqR::saltify()
The calculator from EnCor Biotechnology Inc. provided inspiration for the development of my function. I use parameters of ammonium sulfate collected from the literature to create a linear model that can predict how much ammonium sulfate should be added to achieve a desired percentage of saturation considering all temperature values in the range from 0 to 25\(^\circ\)C. Values calculated are close enough to the values presented in well-known tables for preparation of ammonium sulfate solutions (Wood, 1976).
Feel free to use my calculator, but read the following disclaimer paragraph that ChatGPT wrote for me. An updated version of the calculator will be available through my R package evobioqR.
Disclaimer: This software application has been developed with the intention of aiding researchers in saving time and enhancing efficiency. While I believe it to be accurate and dependable, I cannot guarantee its suitability for every purpose or its compatibility with every system. Therefore, by using this program, you acknowledge and accept that I cannot be held liable for any consequences or issues that may arise from its use. I encourage users to verify results and exercise caution when relying solely on this program for critical tasks.