Chapter 11 Applied thermochemistry: acid-base equilibria
Chapter summary:
- An acid is a molecule which can donate a hydrogen ion H+ and a base is an element that can accept a H+
- The level of pH dictates which of the conjugate acid and base forms are preponderant in a solution
- Reversely, pH is also dependent upon the concentrations of elements in a solution
- Graphical methods are very useful methods to visualize concentrations and to calculate pH
- The differences in orders of magnitude in concentrations allow to make very useful approximations in chemistry to calculate preponderant concentrations as well as the pH of solutions
11.1 The Brønsted–Lowry acid–base theory
According to the Brønsted-Lowry theory, an acid is any species that is capable of donating a hydrogen ion H+, and a base is any species capable of accepting a hydrogen ion, which requires a lone pair of electrons to bond to the H+ (Wikipedia_contributors2018-fr?). An acid necessarily contains an atom of hydrogen. The two forms exchanging a hydrogen ion a referred to as conjugate acid and base.
Technically, a proton or hydrogen ion cannot exist unhydrated in water solution. And technically, in water, a hydrogen ion is hydrated to produce the hydronium ion:
\[\begin{equation} H_2O + hydrogen \space ion \rightleftharpoons H_3O^+ \hspace{2.5cm} K_0 \tag{11.1} \end{equation}\]
So technically, donating a hydrogen ion for an acid necessarily involves the molecule of water as in the equilibrium (11.2)
\[\begin{equation} acid + H_2O \rightleftharpoons H_3O^+ + conjugate \: base \hspace{2.5cm} K_1 \tag{11.2} \end{equation}\]
One can dissociate, however this reaction in two elementary reactions as
\[\begin{equation} acid \rightleftharpoons hydrogen \space ion + conjugate \: base \hspace{2.5cm} K_2 \\ H_2O + hydrogen \space ion \rightleftharpoons H_3O^+ \hspace{2.5cm} K_0 \tag{11.3} \end{equation}\]
Because the activity of water is essentially constant in dilute aqueous solutions, the hydration of the hydrogen ion can be ignored in defining acid-base equilibria (Stumm and Morgan 1996). The thermodynamic convention sets the standard free energy change ΔG° for reaction (11.1) equal to zero, or its rate constant K0=1. So from now on, the molecule of water is purposely omitted in acid-base reactions herein, and the hydrated hydrogen ion is written as H+.
In the equilibrium (11.4) below, the acid is represented as HA. It can donate a hydrogen ion H+. The anion A- is referred to as the conjugate base.
\[\begin{equation} HA \rightleftharpoons A^- + H^+ \hspace{2.5cm} K_A \tag{11.4} \end{equation}\]
Another example of an acid, is illustrated in equilibrium (11.5) where the acid is an anion (cation in the generic example below), and the conjugate base is an uncharged molecule.
\[\begin{equation} HA^+ \rightleftharpoons A + H^+ \tag{11.5} \end{equation}\]
Some molecules can be both an acid and a base: they are referred to as being amphoteric. Water is the most famous amphoteric molecule as it can donate a hydrogen ion to yield a hydroxide OH-, or gain an electron to form the hydronium cation H3O+ as illustrated in equilibria (11.6)
\[\begin{equation} H_2O \rightleftharpoons OH^- + H^+ \\ H_2O + H^+ \rightleftharpoons H_3O^+ \tag{11.6} \end{equation}\]
By convention, however, the acid conjugate is always placed on the left of the equilibria, and the conjugate base and the hydrogen ion H+ are placed on the right side of the equilibrium.
11.2 Acid-base equilibrium parameters
11.2.1 KA
Like for all chemical reactions, it is possible to write down the equilibrium constant as the product of the activities of the products divided by the product of the activities of the reactants as in equation (11.7):
\[\begin{equation} K_A = \frac{\{A^-\}\{H^+\}}{\{HA\}} \tag{11.7} \end{equation}\]
where the activity of HA is written as \(\{HA\}\).
For natural waters, a very good approximation of an element chemical activities is its concentration and the expression of KA can be expressed as in equation (11.8):
\[\begin{equation} K_A = \frac{[A^-][H^+]}{[HA]} \tag{11.8} \end{equation}\]
where, e.g., the concentration of HA can be written as \([HA]\).
11.2.2 pKA
When the concentration of both conjugate acids and bases are equal in a solution, the expression of KA in equation (11.8) is simplified into
\[\begin{equation} K_A = [H^+] \tag{11.9} \end{equation}\]
Taking the negative of the common logarithm (base 10) on both side yields:
\[\begin{equation} -log(K_A) = -log \left([H^+]\right) \tag{11.10} \end{equation}\]
The right side of equation (11.10) is the definition of the pH. By analogy, one can define a new term
\[\begin{equation} pK_A = -log(K_A) \tag{11.11} \end{equation}\]
which corresponds to the pH value at which the concentrations of the conjugate acid and base are equal.
11.3 Self-ionization of water
In all aqueous solutions, the following reaction (11.12), referred to as the autoprotolysis must be considered:
\[\begin{equation} H_2O + H_2O \rightleftharpoons OH^- + H_3O^+ \tag{11.12} \end{equation}\]
Since in dilute solution the activity of water \({ \{H_2O \} = 1}\) the equilibrium constant for equilibrium (11.12), often referred to as the ‘ion product’ or ‘ionic product’ of water can be written as:
\[\begin{equation} K_w = \{OH^-\} \{H_3O^+\} \equiv \{OH^-\} \{H^+\} \tag{11.13} \end{equation}\]
According to Stumm and Morgan (1996),
at 25°C, Kw = 1.008 × 10-14 and the pH = 7.00 corresponds to the exact neutrality in pure water ([H+] = [OH-])
Technically, Kw changes with temperature, according to equation (11.14) (Harned and Owen 1958)
\[\begin{equation} log K_w = \frac{-4470.99}{T} + 6.0875 - 0.01706 T \tag{11.14} \end{equation}\]
With temperatures T expressed in °K. One can see in Figure 11.1 that the pH at exact neutrality varies with T°C reaching 7.37 at 5°C and decreasing down to about 6.84 at 35°C. So contrary to the common understanding that pH at neutrality is equal to 7, it actually changes with temperature, and not on an insignificant way. This is a reason why it is preferrable to calibrate pH probes using pH buffer solutions in the lab near 25°C. For all calculation purposes in this chapter, we will assume that the temperature is at 25°C, and we can therefore take that pH=7 at neutrality and that log Kw=-14.
11.4 Strong vs. weak acids
The concept of ionization of water defines the limits within which water activity remains equal to one, while the hydroxyde OH- and hydronium H3O+ or simpler hydrogen ion H+ coexist. At pH=0, all the ionization is in the form of H+, and conversely, at pH=14, all the autoprololysis of water yields only OH-. Beyond these limits, i.e., pH less than 0 and greater than 14, one cannot consider these dilute solutions in water anymore.
So all acids for which the pKA (i.e., -log(KA)) is beyond the 0 to 14 values, are considered strong acids or strong bases. This means that in dilute solutions, the acid (or the base) can be considered entirely dissociated into its conjugate base (or acid). To better understand this, let us take nitric acid for which the pKA=-1.4. This means that there is as much HNO3 as there is NO3- at pH=-1.4. So for dilute solutions, we can consider that all HNO3 has been dissociated into NO3-, and that in fact there is no measurable HNO3 in solution.
Conversely, all other acids for which the pKA is within 0 and 14 are considered weak acids, because depending on the pH, they can either be in the HA or A- forms, if we take our generic equilibrium example (11.4). It turns out that many inorganic nutrients of interest and all organic acids are weak acids. This property makes them undergo transformations depending on the controlling pH, but also makes them play a very significant role in buffering the ambient pH. These weak acids are in large part responsible for the relative narrow range of pH in natural waters included in most cases between 4.5 and 8.5.
11.5 Mono- and polyprotic acids mole fractions
The first equilibrium (11.4) illustrates the case of a monoprotic acid, i.e., that can donate only one hydrogen ion. For our purposes, important monoprotic acids include \(HSO_4^{2-}\) and \(NH_4^+\). Among the inorganic nutrients important to environmental and ecological engineering, several are polyprotic acids, namely, phosphates, carbonates, and hydrogen sulfides. Polyprotic acids are acids that can donate more than one hydrogen ion. Because they have the ability to donate or gain a hydrogen ion, these polyprotic acids, with other species, play a very special role in buffering the pH of streams, ground, lake, and sea waters, as well as that of soil pore water.
The mono- and polyprotic acids mentioned above can take several forms, depending on the pH. Reversely, some of the biogeochemical processes at play, e.g., in streams or a wetland soil, will tend to add or remove some of the conjugate forms, possibly modifying the local pH over time. An important tool to understand the role played by environmentally important weak acids is to calculate the relative molar fraction of each of the conjugate forms as a function of pH. In the following, we will illustrate how to calculate the molar fraction for an example triprotic acid, as well as in the general case of an acid able to donate n hydrogen ions. Results of the general case apply to the monoprotic acids as well.
11.5.1 Triprotic acid example
Let us take a generic triprotic acid able to donate up to three hydrogen ions. Three equilibrium reactions coexist in solution, in addition to the autoprotolysis of water (11.15). Before we start the calculations of the molar fractions, let us establish some simple methodological rules that greatly help solve many of chemistry problems. Always:
- Write all the reaction equilibria at play and the corresponding equilibrium constants
- list all the ionic and the non-ionic forms at play
- Establish the electroneutrality of the solution by balancing the positive and negative charges of the ions at play
- Establish the conservation of mass when possible
- Equilibria at play:
\[\begin{equation} H_3A \rightleftharpoons H_2A^- + H^+ \hspace{2.5cm} K_1 = \frac{[H_2A^-][H^+]}{[H_3A]}\\ H_2A^- \rightleftharpoons HA^{2-} + H^+ \hspace{2.5cm} K_2 = \frac{[H_2A^-][H^+]}{[HA^{2-}]}\\ HA^{2-} \rightleftharpoons A^{3-} + H^+ \hspace{2.5cm} K_3 = \frac{[HA^{2-}][H^+]}{[A^{3-}]}\\ H_2O \rightleftharpoons OH^- + H^+ \hspace{2.5cm} K_w = [H^+][OH^-] \tag{11.15} \end{equation}\]
- List of the ionic forms:
- cations: \(H^+\)
- anions: \(H_2A^-\), \(HA^{2-}\), \(A^{3-}\), \(OH^-\)
- all other forms: \(H_3A\), \(H_2O\)
- Electroneutrality of the solution:
- \([H^+] = [H_2A^-] + 2\times[HA^{2-}] + 3\times[A^{3-}] + [OH^-]\)
- The factor 2 before \(2\times[HA^{2-}]\) expresses the relative contribution of the concentration \([HA^{2-}]\) to the total negative charge. The same is true for \(3\times[A^{3-}]\).
- Conservation of mass:
- The summation of all the conjugate forms is often referred to as ‘total concentration’ or \(C_T\)
- \(C_T = [H_3A] + [H_2A^-] + [HA^{2-}] + [A^{3-}]\)
After establishing the constraints of the system, it is possible to evaluate the relative abundance of each of the conjugate forms, i.e., the molar fraction or the ratio between concentrations of each form and \(C_T\), the total concentration of all the forms. To get there, let us first express each of the conjugate forms as a function of \([H_3A]\). Using the equations for the reaction constants, and combining the expressions of \(K_1\), \(K_2\), and \(K_3\) from (11.15), it is possible to obtain:
\[\begin{equation} [H_2A^-] = [H_3A] \frac{K_1}{[H^+]} \\ [HA^{2-}] = [H_3A] \frac{K_1K_2}{[H^+]^2} \\ [A^{3-}] = [H_3A] \frac{K_1K_2K_3}{[H^+]^3} \\ \tag{11.16} \end{equation}\]
Replacing the expressions of each conjugate forms in (11.16) above, the equation of the conservation of mass then becomes:
\[\begin{equation} C_T = [H_3A] \times \left( 1 + \frac{K_1}{[H^+]} + \frac{K_1K_2}{[H^+]^2} + \frac{K_1K_2K_3}{[H^+]^3}\right) \tag{11.17} \end{equation}\]
or
\[\begin{equation} C_T = [H_3A] \times \left( \frac{[H^+]^3 + K_1[H^+]^2 + K_1K_2[H^+] + K_1K_2K_3}{[H^+]^3}\right) \tag{11.18} \end{equation}\]
The molar fraction \(\alpha_0\) of the fully hydrogen ionated acid can be expressed as:
\[\begin{equation} \alpha_0 = \frac{[H_3A]}{C_T} \tag{11.19} \end{equation}\]
or
\[\begin{equation} \alpha_0 = \frac{[H^+]^3}{[H^+]^3 + K_1[H^+]^2 + K_1K_2[H^+] + K_1K_2K_3} \tag{11.20} \end{equation}\]
By analogy, and using the reaction constant equations, the other molar fractions can be expressed as:
\[\begin{equation} \alpha_1 = \frac{[H_2A^-]}{C_T} = \frac{K_1[H^+]^2}{[H^+]^3 + K_1[H^+]^2 + K_1K_2[H^+] + K_1K_2K_3} \tag{11.21} \end{equation}\]
\[\begin{equation} \alpha_2 = \frac{[HA^{2-}]}{C_T} = \frac{K_1K_2[H^+]}{[H^+]^3 + K_1[H^+]^2 + K_1K_2[H^+] + K_1K_2K_3} \tag{11.22} \end{equation}\]
\[\begin{equation} \alpha_3 = \frac{[A^{3-}]}{C_T} = \frac{K_1K_2K_3}{[H^+]^3 + K_1[H^+]^2 + K_1K_2[H^+] + K_1K_2K_3} \tag{11.23} \end{equation}\]
Notice that for all molar fractions, the denominator does not change, only the numerator does.
11.5.2 Generalized polyprotic acid mole fractions
The example above can be used to draw the general case of a polyprotic acid which can donate n hydrogen ions (including for n = 1). Using the same methodology as before :
- Equilibria at play:
\[\begin{equation} H_nA \rightleftharpoons H_{n-1}A^- + H^+ \hspace{0.6cm} K_{a1} = \frac{[H_{n-1}A^-][H^+]}{[H_nA]} \hspace{0.6cm} [H_{n-1}A^-] = [H_nA] \frac {K_{a1}}{[H^+]}\\ H_{n-1}A^- \rightleftharpoons H_{n-2}A^{2-} + H^+ \hspace{0.6cm} K_{a2} = \frac{[H_{n-2}A^{2-}][H^+]}{[H_{n-1}A]} \hspace{0.6cm} [H_{n-2}A^-] = [H_nA] \frac {K_{a1}K_{a2}}{[H^+]^2}\\ \\ \vdots \hspace{6cm} \vdots \hspace{6cm} \vdots\\ \\ HA^{(n-1)-} \rightleftharpoons A^{n-} + H^+ \hspace{0.6cm} K_{an} = \frac{[A^{n-}][H^+]}{[HA^{(n-1)-}]} \hspace{0.6cm} [A^{n-}] = [H_nA] \frac {K_{a1}K_{a2} \ldots K_{an}}{[H^+]^n}\\ \tag{11.24} \end{equation}\]
- List of the ionic forms:
- cations: \(H^+\)
- anions: \(H_{n-1}A^-\), \(H_{n-2}A^{2-}\), … , \(A^{n-}\), \(OH^-\)
- all other forms: \(H_nA\), \(H_2O\)
- Electroneutrality of the solution:
- \([H^+] = [H_{n-1}A^-] + 2\times[H_{n-2}A^{2-}] \space + \space ... \space + \space n\times[A^{n-}] + [OH^-]\)
- Conservation of mass:
- The summation of all the conjugate forms is often referred to as ‘total concentration’ or \(C_T\)
- \(C_T = [H_nA] + [H_{n-1}A^-] + ... + [A^{n-}]\)
The generalized equation for the mole fraction \(i\)
\[\begin{equation} \alpha_i = \frac{[H_{n-i}A^{(n-i)-}]}{C_T} \\ \\ \\ \alpha_i = \frac{K_{a1}K_{a2} \ldots K_{ai}[H^+]^{n-i}}{[H^+]^n + K_{a1}[H^+]^{n-1} + K_1K_2[H^+]^{n-2} + \dots + K_{a1}K_{a2}\dots K_{an}} \tag{11.25} \end{equation}\]
11.5.3 Graphical illustration of mole fractions of ecologically relevant weak acids
<IP_ADDRESS> Mole fraction for ammonium/ammonia
Now that we have defined the expressions for the molar fraction of weak acids, it is time to apply the generalized equation (11.25) to ecologically relevant weak acids. Let us start with ammonium \(NH_4^+\) and its conjugate base \(NH_3\). At 25°C, the pKA is 9.28, or at pH = 9.28, \([NH_4^+] = [NH_3]\). At pH less than pKA, \(NH_4^+\) is the preponderant form, and at pH greater than pKA, \(NH_3\) becomes the preponderant form. One can see in Figure 11.2, that at pH less than 8, the molar fraction of ammonia is less than 5% of the total \([NH_4^+] + [NH_3]\) (sometimes referred to as Total Amoniacal Nitrogen, or TAN). For this reason, in most natural waters, \([NH_4^+]\) is by far the most preponderant form. Because in most natural waters, the concentrations of \(NH_4^+\) is relatively low (~< 0.2 mg N/L), there is very little loss of ammonia through volatilization. However, in animal waste water such as hog lagoons as they exist in North Carolina, ammonia volatilization is important. The pH of these lagoons range from 6.5 to 8.5 for an average of 7.8 (Barker, Zublena, and Walls 1994), yielding 3% of the TAN as ammonia. However, the total TAN concentration can easily reach 1000 to 2000 mg N/L, resulting in \([NH_3]\) between 30 and 60 mg N/L. The potential for ammonia volatilization is thus very high and occurs despite low molar fractions.
Now, technically an important piece of information should have been added for the ammonium/ammonia molar fraction graph. Because ammonia is a gas that can equilibrate with the atmosphere, and is therefore an open system, the graph illustrated in Figure 11.2 corresponds to the case of a ‘closed system’, and in particular a system not directly open to the atmosphere. In reality, because of the pH range in natural waters, and the fact that ammonium is by far the most preponderant form, even when open to the atmosphere, the ammonium/ammonia equilibrium behaves very much like a closed system, in the case of low total ammoniacal concentrations.
<IP_ADDRESS> Mole fraction for phosphate and its conjugated acids
The phosphate anion (\(PO_4^{3-}\)) has three conjugate acids, and is the dehydrogen ionated form of the triprotic phosphoric acid. The pKA of the conjugate forms are at 25°C 2.12, 7.21, and 12.67. The preponderant forms present at pH between 4.5 and 8.5 are thus dihydrogen (\(H_2PO_4^-\)) and hydrogen (\(HPO_4^{2-}\)) phosphates (Figure 11.3). The byproduct of microbial respiration that finds its way into natural waters is thus rarely if ever \(PO_4^{3-}\) unlike presented in Chapter 8… The \(PO_4^{3-}\) form is still commonly used as a generic ‘phosphate’ molecule, regardless of pH considerations.
<IP_ADDRESS> Mole fraction for sulfate and hydrogen sulfate
In most natural waters with pH between 4.5 and 8.5, sulfate is the preponderant form, and in the vast majority of cases, there is very little \(HSO_4^-\) (Figure 11.4). This figure also suggests that sulfuric acid (\(H_2SO_4^{2-}\)) does not exist in dilute waters in this form.
<IP_ADDRESS> Mole fraction of dissolved dihydrogen sulfide and conjugate bases
Now, for dihydrogen sulfide and carbon dioxide/carbonic acid, the volatile forms are present in very significant amounts for pH of natural waters. Because the molar fraction equation (11.25) only applies in closed systems, one might suggest that natural systems are in fact open systems, such that equation (11.25) just should not be used. True for open waters. However, there are lots of other ‘captive’ waters such as groundwater or sediment porewater, that are not directly open to the atmosphere and for which it is possible to use the molar fraction equation (11.25).
The pKa of the dihydrogen sulfide/hydrogen sulfide is 7.02 at 25°C, and there is still about 10% of \(H_2S_(aq)\) at pH=8 (Figure 11.5). The sulfide ion \(S^{2-}\), for most natural waters is not present and for the normal range of pH of natural waters, the two significant forms are \(H_2S_(aq)\) and \(HS^-\). There are consequences on bubble formation or gas ebullition in aquatic sediments as we shall see herein.
<IP_ADDRESS> Mole fraction of hydrated carbon dioxide and carbonates
Similarly to the hydrogen sulfide diprotic acid, carbon dioxide in water can become hydrated and becomes the diprotic carbonic acid, which can donate up to two electrons. For the normal range of pH of natural waters, the two significant forms are \(H_2CO_3^o\) and \(HCO_3^-\) (Figure 11.6), where
\[\begin{equation} \{H_2CO_3^o\} = \{CO_{2(aq)}\} + \{H_2CO_3\}\\ \tag{11.26} \end{equation}\]The reason for combining \(CO_{2(aq)}\) and the true carbonic acid \(H_2CO_3\) into one composite \(H_2CO_3^o\) is to make apparent the diprotic nature of the carbonate system, i.e., it makes the protolysis of \(H_2CO_3^o\) more apparent considering the three species \(H_2CO_3^o\), \(HCO_3^{-}\), and \(CO_3^{2-}\) as in the equilibria below (equation (11.27)):
\[\begin{equation} H_2CO_3^o \rightleftharpoons HCO_3^- + H^+ \\ HCO_3^- \rightleftharpoons CO_3^{2-} + H^+ \tag{11.27} \end{equation}\]But why not using carbonic acid proper (\(H_2CO_3\)) rather than this composite \(H_2CO_3^o\)? It is because the hydration of dissolved carbon dioxide into carbonic acid (equation (11.28)) occurs but the equilibrium is skewed towards the left with less than 0.3% of the carbon dioxide hydrated into \([H_2CO_3]\) (equilibrium constant K - equation (11.28) - values range from 350 to 990, with 650 commonly used (Stumm and Morgan 1996)).
\[\begin{equation} CO_{2(aq)} + H_2O \rightleftharpoons H_2CO_3 \hspace{3.5cm} K = \frac{\{CO_{2(aq)}\}}{\{H_2CO_3\}}\\ \tag{11.28} \end{equation}\]The composite \(H_2CO_3^o\) is thus a notation to remind student chemists that in reality, there is relatively little carbonic acid in solution, and although \(CO_{2(aq)}\) would better represent the actual species in water, protolysis is only apparent from a hydrated \(CO_{2(aq)}\). One might wonder then how \(CO_{2(aq)}\) dissociates into \(HCO_3^{-}\)… It does not, the true carbonic acid \(H_2CO_3\) is the one that undergoes protolysis (i.e., the release of a hydrogen ion).
The kinetics of the series of reactions illustrated in equation (11.29) show that the limiting reaction is the hydration of the \(CO_{2(aq)}\) into \(H_2CO_3\), but that the overall effective hydration equilibrium from \(CO_{2(aq)}\) into \(HCO_3^-\) takes no more than a few minutes to establish (Stumm and Morgan 1996).
\[\begin{equation} CO_{2(aq)} + H_2O \hspace{0.5cm} \underset{fast}{\stackrel{slow}{\rightleftharpoons}} \hspace{0.5cm} H_2CO_3 \underset{}{\stackrel{very fast}{\rightleftharpoons}} H^+ + HCO_3^{-} \\ \tag{11.29} \end{equation}\]Several byproducts of respiratory processes are gases: \(CO_2\), \(N_2\), \(N_2O\), \(H_2S\) and \(CH_4\). One of the consequences on wetland sediment porewater chemistry, is that the pH being relatively acidic, most of the inorganic sulfur and carbon byproduct of respiration are in the \(H_2S_{(aq)}\) form and \(CO_{2(aq)}\), rather than in their conjugate bases. For a given dissolved gas concentration, there corresponds, at equilibrium, an equivalent partial pressure in the gas phase above that water. The two are related by the Henry’s law (Henry and Banks 1803) that essentially says that the quantity of an ideal gas that dissolves in a definite volume of liquid is directly proportional to the pressure of the gas above it. This applying to all gases that might be dissolved in water (list above plus \(O_2\) although not in anaerobic sediment) such that one can add all the corresponding partial pressures of all the gases. If the summation of the partial pressures of all the dissolved gases becomes greater than one atmosphere plus the height of the water column above, then the solubility of all the gases is exceeded, and gas bubbles form (more details in chapter 13 dedicated to dissolved gases).
<IP_ADDRESS> Mole fraction of common polyprotic organic acids
Many weak acids are involved at the cellular level and participate in buffering the solution into which the organelles “bathe” in cells. These include di- and triprotic acids. Oxalic (Figure 11.7), malonic, succinic, and fumaric acids are C2, C3, and C4 diprotic acids with carboxyl groups located on the outer carbons.
Base conjugates are usually the preponderant forms at intracellular pH (7-7.4), so malonic (Figure 11.8), succinic (Figure 11.9), and fumaric (Figure 11.10) acids are thus usually referred to as malate, succinate, and fumarate, which are all involved in the citric acid cycle.
In the last step of the citric acid, the oxalo-acetate (Figure 5.28) incorporates an acetate to form the triprotic citric acid (Figure 11.11), the molecule at the center of the citric acid cycle. All these acids do not seem to be able to provide that much buffering capacity for intracellular pH as they are all in their most basic conjugate form. However at pH 7, 20% of the citrate is in the AH2- form.
Another interesting example of a potential triprotic acid is uric acid (Figure 11.12). Actually, it is somewhat surprising that it would behave as an acid at all, as it does not contain any carboxylic acid. However, the hydroxyl of the imidazol moeity does lose a hydrogen ion, but the other hydroxyl groups do not. In reality, uric acid does not behave like a polyprotic acid, but as a monoprotic acid…
Uric acid is a product of the metabolic breakdown of purine nucleotides, and is normally found in urine. Uric acid further decomposes in urea and a C3 molecule. The curious in you will write the Lewis dot structure and realize that the carbon in urea has zero electrons for itself, and so is the case for two of the carbons on uric acid, although it is an organic molecule! This means that all the energy has been squeezed out, which is not too surprising for a molecule that essentially is a waste product.
11.6 Equilibrium calculations using a graphical method
The graphical representation of the molar fraction highlights well the clear preponderant form for a given pH range, and the relative percentage of several forms for other pH values. Molar fractions are also independent of the total concentration. When the molar fractions are less than 1%, this method gives little graphical information on the relative abundance of the forms at play as the lines overlap each other.
Because the variation of pH represents variations of orders of magnitude in the hydrated hydrogen ion concentrations, the concentrations of conjugate forms can vary by orders of magnitude as a function of pH. The representation of the \(log(conc) = f(pH)\) opens the opportunity to graphically represent concentrations as a function of pH. As it turns out, this method can then be used to calculate pH values of a solution that would have been made from the addition of a salt.
11.6.1 Logarithm of concentrations as a function of pH
For this, let us first consider the theoretical salt AHCl added to one liter of water, which fully dissociates into \(AH^+ + Cl^-\), with \(AH^+\) being a weak acid. The goal of this exercise is to be able to graphically represent \(log(conc) = f(pH)\) for both conjugate forms \(AH^+\) and \(A\). For this, let us use the systematic method previously presented.
- Equilibria at play:
\[\begin{equation} AH^+ \rightleftharpoons A + H^+ \hspace{2.5cm} K_A = \frac{[A][H^+]}{[AH^+]}\\ \tag{11.30} \end{equation}\]
- List of the ionic forms:
- cations: \(H^+\), \(AH^+\)
- anions: \(OH^-\), \(Cl^-\)
- all other forms: \(A\), \(H_2O\)
- Electroneutrality of the solution:
- \([H^+] + [AH^+] = [Cl^-] + [OH^-]\)
- Conservation of mass:
- \(C_T = [AH^+] + [A]\)
Using the conservation of mass equation, one can write:
\[\begin{equation} C_T = [AH^+] \times \left( 1 + \frac{K_A}{[H^+]} \right) \tag{11.31} \end{equation}\]
or
\[\begin{equation} C_T = [AH^+] \times \left( \frac{K_A + [H^+]}{[H^+]} \right) \tag{11.32} \end{equation}\]
This yields to the expression of both \([AH^+]\) and \([A]\):
\[\begin{equation} [AH^+] = \frac{C_T. [H^+]}{K_A + [H^+]} \\ [A] = \frac{C_T. K_A}{K_A + [H^+]} \tag{11.33} \end{equation}\]
The denominator of the expressions of \([AH^+]\) and \([A]\) is a summation, which does not go very well with the use of logarithms. Using XXIst century technology, this really is not a problem and one can plot \(log(conc) = f(pH)\) with ease. But at the time when people were using slide rules, this was not so easy. The point is not to go back in time, but rather reflect on what it is that these expressions are telling and this involves the understanding of the physical meaning of what the equations represent.
Again, the goal here is to get a better representation of how the concentrations change as a function of pH. In the denominator \(K_A + [H^+]\), the \([H^+]\) varies on a logarithm scale as pH increases since \([H^+] = 10^{-pH}\). As a result, \([H^+]\) can increase or decrease very rapidly as a function of pH. The denominator can thus but dominated by either \(K_A\) or \([H^+]\). This means that in some cases, the summation in the denominator might be simplified by one of the two terms. The next step consists in defining for what pH values these conditions would be met.
- Case number 1: \([H^+] \gg K_A\)
For chemists, such a condition is traditionally approximated when \(K_A > 10 \times [H^+]\).
A series of equations ensues:
\[\begin{equation} [H^+] > 10 \times K_A \\ log([H^+]) > log(10) + log(K_A) \\ -log([H^+]) < -log(10) - log(K_A) \\ \tag{11.34} \end{equation}\]or when
\[\begin{equation} pH < pK_A - 1 \tag{11.35} \end{equation}\]
So in this case, one can simplify the expressions of \([AH^+]\) and \([A]\) by:
\[\begin{equation} [AH^+] \approx C_T \hspace{3.5cm} [A] \approx \frac{C_T. K_A}{[H^+]} \\ \tag{11.36} \end{equation}\]
- Case number 2: \(K_A \gg [H^+]\)
This condition is approximated when \(K_A > 10 \times [H^+]\).
A series of equations ensues:
\[\begin{equation} K_A > 10 \times [H^+] \\ log(K_A) > log(10) + log([H^+]) \\ - log(K_A) < -1 - log([H^+]) \\ \tag{11.37} \end{equation}\]or when
\[\begin{equation} pH > pK_A + 1 \tag{11.38} \end{equation}\]
So in this case, one can simplify the expressions of \([AH^+]\) and \([A]\) by:
\[\begin{equation} [AH^+] \approx \frac{C_T. [H^+]}{K_A} \hspace{3.5cm} [A] \approx C_T \\ \tag{11.39} \end{equation}\]
- Case number 3: \([AH^+]=[A]\)
When the \([AH^+]\) and \([A]\) are equal, one can write:
\[\begin{equation} C_T = 2 \times [AH^+] \\ [AH^+]=[A]= \frac{C_T}{2}\\ \tag{11.40} \end{equation}\]
\[\begin{equation} K_A = [H^+] \\ pH = pK_A \tag{11.41} \end{equation}\]Let us now summarize these findings and calculate the \(log(conc) = f(pH)\) in table 11.1. The expressions of \(log[AH^+]\) and \(log[A]\) have been purposely left as \(C^{st} - pH\) and \(C^{st} + pH\), respectively, with \(C^{st}\) standing for a constant value. This is to emphasize that one does not need to numerically calculate the value of the constants, as one has all needed information to make a robust graphical representation of \(log(conc) = f(pH)\).
| pH < pKA - 1 | pH = pKA | pH > pKA + 1 | |||
|---|---|---|---|---|---|
| \([H^+]\) | \(10^{-pH}\) | \(10^{-pH}\) | \(10^{-pH}\) | ||
| \([OH^-]\) | \(10^{-14+pH}\) | \(10^{-14+pH}\) | \(10^{-14+pH}\) | ||
| \([AH^+]\) | \(C_T\) | \(\frac{C_T}{2}\) | \(\frac{C_T . [H^+]}{K_A}\) | ||
| \([A]\) | \(\frac{C_T . K_A}{[H^+]}\) | \(\frac{C_T}{2}\) | \(C_T\) | ||
| \(log[H^+]\) | \(-pH\) | \(-pH\) | \(-pH\) | ||
| \(log[OH^-]\) | \(-14+pH\) | \(-14+pH\) | \(-14+pH\) | ||
| \(log[AH^+]\) | \(log(C_T)\) | \(log(C_T) - log(2)\) | \(C^{st} - pH\) | ||
| \(log[A]\) | \(C^{st} + pH\) | \(log(C_T) - log(2)\) | \(log(C_T)\) |
The expressions show that for \(pH<pK_A-1\) and \(pH>pK_A+1\), \(log[AH^+]\) and \(log[A]\) follow straight lines of slope -1, 0, or +1 as a function of pH. It is thus possible to draw linear asymptotic lines, litterally, which the \(log[AH^+]\) and \(log[A]\) lines should follow for \(pH<pK_A-1\) and \(pH>pK_A+1\). The actual \(log[AH^+]\) and \(log[A]\) lines would then deviate from the asymptotic lines for \(pK_A-1<pH<pK_A+1\) and crossing at \(logC_T - 0.3\) at \(pH=pK_A\).
An example graph of \(log(conc) = f(pH)\) is provided in Figure 11.13. This is generally referred to at the Bjerrum plot. The lines \(log[H^+] = -pH\) and \(log[OH^-] = -14+pH\) are first plotted (in grey in Figure 11.13). The next step is to draw the asymptotic lines (dotted lines in Figure 11.13). These appear as straight lines as a function of pH as their equations indicate (Table 11.1). In reality, it is possible to extend these lines up to pH=pKA. Indeed asymptotic lines both intersect at \(log[AH^+]=C_T\) and \(log[A]=C_T\) at \(pH=pK_A\) (Figure 11.13). To draw these asymptotic lines, one needs to find this intersection and then draw either horizontal lines or lines with slopes of -1 or +1 as applicable. This is the reason why one does not need to know the numerical values of the \(C^{st}\) (constant) in the equations in Table 11.1. In reality, drawing the \(log[H^+]\) and \(log[OH^-]\) curves follows the same procedure. These two lines must meet at \(log(conc)=-7\) at \(pH=7\), and have slopes of -1 and +1, respectively.
The next step consists in superimposing the \(log[AH^+]\) and \(log[A]\) curves on the asymptotic lines outside of the \(pK_A \pm 1\) area. The next step consists in drawing the point where the two curves \(log[AH^+]\) and \(log[A]\) meet at \(pH=pK_A\), i.e., at \(log(C_T)-0.3\). Then one would manually connect the \(log[AH^+]\) and \(log[A]\) curves through the \(log(C_T)-0.3\) at \(pH=pK_A\) point, such as the tangent of the curves at \(pH=pK_A-1\) and \(pH=pK_A+1\) match the linear portions outside of the \(pK_A \pm 1\) area. Obviously for this book, the manual drawing of this curve cannot be achieved and the actual \(log(conc) = f(pH)\) have been plotted for \([AH^+]\) and \([A]\). One can observe that the actual curve apparently deviates from the asymptotic lines curves not at \(pK_A \pm 1\) but rather at \(pK_A \pm 1.4\).
11.6.2 Graphical approach to calculate pH for a monoprotic acid
The graphical approach illustrated in Figure 11.13 gives a nice way to quickly see whether some ion concentrations are much smaller than other, and whether one can assume some forms to be negligible compared to others.
So in the example above, combining the electroneutrality equation to that of the conversion of mass, and realizing that \([Cl^-]=C_T\) yields:
\[\begin{equation} [H^+] + [AH^+] = [Cl^-] + [OH^-] \\ [H^+] + [AH^+] = [AH^+] + [A] + [OH^-] \\ [H^+] = [A] + [OH^-] \tag{11.42} \end{equation}\]So now, this is where it is important to be able to assess the physical reality of the \([A] + [OH^-]\) summation. It is easy to visualize on Figure 11.13 the relative importance of \([A]\) vs \([OH^-]\). In the figure, and for \(pH<pK_A\), \([OH^-] \leq 10^{-5} [A]\). One can safely assume that \([A] + [OH^-] \approx [A]\). Hence, in these cases, \([H^+] \approx [A]\), which means that pH can be graphically determined at the intersection between the \(log[H^+]\) and \(log[A]\) lines (Figure 11.14). The conditions for this graphical determination are that the \(log[A]\) curve be in its linear portion and that at the intersection, \([A]>10[OH^-]\). Figure 11.14 is an interactive graph where one can rapidly graphically determine pH as a function of variable \(pK_A\) and \(C_T\).
Now, the graphs in Figures 11.13 and 11.14 were derived for an \(AHCl\) hypothetical salt fully dissociating into \(AH^+\), \(A\) and \(Cl^-\). An analogous analysis can be derived for a weak base salt of formula \(ANa\) which would fully dissociate into \(HA\), \(A^-\) and \(Na^+\). In this case, the combination of the electroneutrality and conservation of mass would yield \([H^+] + [HA] = [OH^-]\). Using the same reasoning as before, pH can be graphically determined at the intersection between the \(log[OH^-]\) and \(log[HA]\) lines, and provided that the \(log[HA]\) curve be in its linear portion and that at the intersection \([HA]>10[H^+]\).
Notice that when a hypothetical \(AHCl\) salt is added to solution, the pH tends to be acidic, and reversely, when a \(ANa\) salt is added, the pH tends to be basic. This is expected as the salts fully dissociate into, \(AH^+\) and \(Cl^-\), and \(A^-\) and \(Na^+\), in the first and second cases, respectively. In the first case, the initial form is thus the acid conjugate form \(AH^+\) which is first in solution, and that later dissociates into its conjugate base, thus releasing \(H^+\) and hence lowering the pH. In the second case, the conjugate base \(A^-\) is released in water first and consumes \(H^+\) to form its conjugate acid \(HA\), hence increasing the pH.
11.6.3 Graphical approach to calculate pH for a triprotic acid
Following the same procedure as that presented for a monoprotic acid, there are interesting points to highlight when plotting \(log(conc)=f(pH)\) for a triprotic acid. It turns out that phosphate triprotic base has a particular relevance for ecological engineering, so it is interesting to use phosphate as an illustration on how to derive \(log(conc) = f(pH)\) and graphically calculate pH for polyprotic acid/bases. Equation (11.17) derived above for a triprotic acid is:
\[\begin{equation} C_T = [H_3A] \times \left( 1 + \frac{K_1}{[H^+]} + \frac{K_1K_2}{[H^+]^2} + \frac{K_1K_2K_3}{[H^+]^3}\right) \tag{11.17} \end{equation}\]
For a monoprotic acid, the last two terms to the right did not exist, and it was relatively easy to express \([AH^+]\) and \([A]\) as in equation (11.33):
\[\begin{equation} [AH^+] = \frac{C_T. [H^+]}{K_A + [H^+]} \\ [A] = \frac{C_T. K_A}{K_A + [H^+]} \tag{11.33} \end{equation}\]
and then find the conditions for which the denominator could be simplified when \(K_A \gg [H^+]\) or \([H^+] \gg K_A\). But with the two extra terms in (11.17), this cannot be done as easily. The solution to this problem is, again, to realize the relative importance of the different terms in (11.17) and make simplifications and approximations that are amply sufficient to obtain robust graphical representations of the \(log(conc)=f(pH)\). Indeed, one can make the hypothesis that for pH near pK1, \([H_3A]\) and \([H_2A^-]\) are by far the most prepoderant forms, such that the conservation of mass equation:
\[\begin{equation} C_T = [H_3A] + [H_2A^-] + [HA^{2-}] + [A^{3-}] \tag{11.43} \end{equation}\]
can be approximated into
\[\begin{equation} C_T \approx [H_3A] + [H_2A^-] \tag{11.44} \end{equation}\]
This is now a familiar problem which has already been solved for a monoprotic acid, for \(pH < pK_1 - 1\) and for \(pH > pK_1 + 1\) (Table 11.1). For example, for \(pH < pK_1 - 1\) and by analogy to results summarized in Table 11.1, all concentrations can be approximated by:
\[\begin{equation} [H_3A] \approx C_T \\ [H_2A^-] \approx \frac{C_T.K_1}{[H^+]} \\ [HA^{2-}] \approx \frac{C_T.K_1.K_2}{[H^+]^2} \\ [A^{3-}] \approx \frac{C_T.K_1.K_2.K_3}{[H^+]^3} \tag{11.45} \end{equation}\]
Obviously, the conservation of mass equation can be simplified the same way for pH near pK2, where \([H_2A^-]\) and \([HA^{2-}]\) can be hypothesized to be largely preponderant, and similarly for pH near pK3, where \([HA^{2-}]\) and \([A^{3-}]\) can be hypothesized to be preponderant. In the end, it is possible, for given pH ranges outside of the \(pK_x \pm 1\) to simplify the equations of each of the conjugate acid forms, and the expression of \(log(conc)=f(pH)\). For a triprotic acid, this is summarized in Table 11.2 below.
| pH < pK1-1 | pK1+1< pH < pK2-1 | pK2+1< pH < pK3-1 | pH > pK3+1 | ||||
|---|---|---|---|---|---|---|---|
| \([H^+]\) | \(10^{-pH}\) | \(10^{-pH}\) | \(10^{-pH}\) | \(10^{-pH}\) | |||
| \([OH^-]\) | \(10^{-14+pH}\) | \(10^{-14+pH}\) | \(10^{-14+pH}\) | \(10^{-14+pH}\) | |||
| \([H_3A]\) | \(C_T\) | \(\frac{C_T.[H^+]}{K_1}\) | \(\frac{C_T.[H^+]^2}{K_1.K_2}\) | \(\frac{C_T.[H^+]^3}{K_1.K_2.K_3}\) | |||
| \([H_2A^-]\) | \(\frac{C_T.K_1}{[H^+]}\) | \(C_T\) | \(\frac{C_T.[H^+]}{K_2}\) | \(\frac{C_T.[H^+]^2}{K_2.K_3}\) | |||
| \([HA^{2-}]\) | \(\frac{C_T.K_1.K_2}{[H^+]^2}\) | \(\frac{C_T.K_2}{[H^+]}\) | \(C_T\) | \(\frac{C_T.[H^+]}{K_3}\) | |||
| \([A^{3-}]\) | \(\frac{C_T.K_1.K_2.K_3}{[H^+]^3}\) | \(\frac{C_T.K_2.K_3}{[H^+]^2}\) | \(\frac{C_T.K_3}{[H^+]}\) | \(C_T\) | |||
| \(log[H^+]\) | \(-pH\) | \(-pH\) | \(-pH\) | \(-pH\) | |||
| \(log[OH^-]\) | \(-14+pH\) | \(-14+pH\) | \(-14+pH\) | \(-14+pH\) | |||
| \(log[H_3A]\) | \(log(C_T)\) | \(C^{st} - pH\) | \(C^{st} - 2pH\) | \(C^{st} - 3pH\) | |||
| \(log[H_2A^-]\) | \(C^{st} + pH\) | \(log(C_T)\) | \(C^{st} - pH\) | \(C^{st} - 2pH\) | |||
| \(log[HA^{2-}]\) | \(C^{st} + 2pH\) | \(C^{st} + pH\) | \(log(C_T)\) | \(C^{st} - pH\) | |||
| \(log[A^{3-}]\) | \(C^{st} + 3pH\) | \(C^{st} + 2pH\) | \(C^{st} + pH\) | \(log(C_T)\) |
Similarly to the case for monoprotic acids, the equations for the \(log(conc)=f(pH)\) in Table 11.2 are sometimes truncated into, e.g., \(C^{st} + pH\), \(C^{st}\) meaning ‘constant’. The reason for this is that these equations correspond to the equations of the straight lines that serve as asymptotic lines for the actual \(log(conc)\) curves. For sections with the slopes of ±1, these straight lines intersect at \(pK_x\). To draw the straight lines with the slopes of ±2, one may consider two facts:
- the linear sections with the slopes of ±2 intersect at \(\frac{pK_x+ pK_{x+1}}{2}\) for \(log(conc) = log(C_T)\) for x=1 and x=2 (not shown in Figure 11.16 for clarity reasons), or,
- the sections with the slopes of ±2 intersect the linear sections with the slopes ±1 at \(pK_x\) (shown in Figure 11.16).
It is thus possible to draw all these asymptotic lines as illustrated in Figure 11.16 below for the conjugate acids of phosphate \(PO_4^{3-}\). Following the principles described in section 11.6.2 above, the \(log(conc)\) curves follow the asymptotic lines outside the \(pH=pK_x \pm 1\). The actual curves illustrated in Figure 11.16 actually deviate from the asymptotic lines for \(pH=pK_x \pm 1.4\) as already observed in Figure 11.13. Again, this is of minor importance to graphically determine the pH of a solution.
One can also verify that for pH near pKx, there are two preponderant forms, and that other forms are at least 105 times lower, which justifies the approach used to simplify the equation of conservation of mass (equation (11.43)) to only two terms (e.g., equation (11.44)). Notice that the curves for the equations \(C^{st} \pm 3pH\) are off the chart and do not appear on Figure 11.16.
With this graph in hand, and for \(C_T = 10^{-3.2}M\) as illustrated in Figure 11.16, it becomes possible to graphically evaluate the pH of a solution in which a weak acid salt, e.g., \(NaH_2PO_4\), or a weak base salt, e.g., \(CaHPO_4\) would be added in solution for a final \(C_T = 10^{-3.2}M\).
In the case of the \(NaH_2PO_4\) salt added, combining the electroneutrality and conservation of mass equations would yield:
\[\begin{equation} [H_3PO_4] + [H^+] = [HPO_4^{2-}] + 2 [PO_4^{3-}] + [OH^-] \tag{11.46} \end{equation}\]
One can seen on Figure 11.16 that for this \(C_T\), \([H_3PO_4] < 10[H^+]\), and \(2 [PO_4^{3-}] + [OH^-] \ll [HPO_4^{2-}]\), such that equation (11.46) can be approximated as \([H^+] \approx [HPO_4^{2-}]\). This means that the pH would correspond to that of the intersection between the \(log[H^+]\) and \(log[HPO_4^{2-}]\) lines.
In the case of \(CaHPO_4\) salt added, combining the electroneutrality and conservation of mass equations would yield:
\[\begin{equation} 2[H_3PO_4] + [H_2PO_4^-] + [H^+] = [PO_4^{3-}] + [OH^-] \tag{11.47} \end{equation}\]
One can seen on Figure 11.16 that for this \(C_T\), \(2[H_3PO_4] + [H^+] \ll [H_2PO_4^-]\), and that \([PO_4^{3-}] \ll [OH^-]\), such that equation (11.47) can be approximated as \([H_2PO_4^-] \approx [OH^-]\). This means that in this case the pH would correspond to that of the intersection between the \(log[H_2PO_4^-]\) and \(log[OH^-]\) lines.
Such pH determinations can be done for a variety of \(C_T\) values corresponding to the addition of the weak acid \(NaH_2PO_4\) salt, and to the addition of the weak base salt \(CaHPO_4\). Several conditions must be met, including that the simplifications described above apply, and that the curves cross on their linear portions. An illustration of the possibilities, or not, of graphically determining the pH is provided in Figure 11.17.
11.6.4 Dissolved CO2 and carbonates in a closed system
Before this chapter, \(CO_2\) has been treated in this book as the waste product of respiration, and the entry level of the conversion of photonic energy into chemical energy. Carbon dioxide has additional major roles: in this chapter, we will introduce its impact on pH of surface and sediment waters.
There are four major ideas for which the equilibria involving \(CO_2\) and the carbonates matters:
- Because all organotrophic respiratory processes produce \(CO_2\) as a waste product (see sections 8.2; summary Figure 8.15), the potential to have dissolved \(CO_2\) in surface and sediment water is high.
- \(CO_2\) is a very soluble gas that readily dissolves in water (details in chapter 13; summary Figure 13.4).
- Dissolved carbon dioxide reacts with water to theoretically form carbonic acid. However, the equilibrium is balanced towards \(CO_2\) rather than \(H_2CO_3\), and there is little actual carbonic acid in water. Its ability to release hydrogen ions (\(H^+\)) is not affected, however, and \(CO_2\) practically participate in releasing \(H^+\) and can be viewed as a diprotic acid (details in section <IP_ADDRESS> above).
- Carbonate (\(CO_3^{2-}\)) reacts with cations such as \(Ca^{2+}\), \(Mg^{2+}\), \(Na^{+}\), \(K^+\), and \(Fe^{2+}\) to form carbonate rocks and minerals. Upon dissolution, these solids may add the conjugate base of the diprotic carbonic acid to the overall equilibria, and thus play a role in the pH of water.
In the case of a closed system, such as would be the case for sediment porewater, one may apply the general equations and concepts described above to the dissolved \(CO_2\) and carbonate equilibria. In section <IP_ADDRESS>, we saw that in reality the hydration of \(CO_{2(aq)}\) into carbonic acid \(H_2CO_3\) is slow such that about 0.3% of \(CO_2\) gets hydrated into carbonic acid (Stumm and Morgan 1996). Howver, the deprotonation of carbonic acid is rather efficient (see equation (11.29)), such that it is customary to introduce the conceptual \(H_2CO_3^o\), which behaves like a diprotic acid:
\[\begin{equation} \{H_2CO_3^o\} = \{CO_{2(aq)}\} + \{H_2CO_3\}\\ \tag{11.26} \end{equation}\]
- Equilibria at play:
\[\begin{equation} H_2CO_3^o \rightleftharpoons HCO_3^- + H^+ \hspace{2.5cm} K_{a1} = \frac{[HCO_3^-][H^+]}{[H_2CO_3^o]}\\ HCO_3^- \rightleftharpoons CO_3^{2-} + H^+ \hspace{2.5cm} K_{a2} = \frac{[CO_3^{2-}][H^+]}{[HCO_3^-]}\\ H_2O \rightleftharpoons OH^- + H^+ \hspace{2.5cm} K_{w} = [OH^-][H^+] \tag{11.48} \end{equation}\]
- List of the chemical forms at play:
- cations: \(H^+\)
- anions: \(OH^-\), \(HCO_3^-\), \(CO_3^{2-}\)
- all other forms: \(H_2CO_3^o\), \(H_2O\)
- Electroneutrality of the solution:
- \([H^+] = 2 \times [CO_3^{2-}] + [HCO_3^-] + [OH^-]\)
- Conservation of mass (closed system):
- \(DIC = [H_2CO_3^o] + [HCO_3^-] + [CO_3^{2-}]\)
In the case of carbonates and carbon dioxide, the \(C_T\) term previously used and standing for ‘total concentration’ is appropriately replaced by the term Dissolved Inorganic Carbon (DIC), as noted above. Remember that in \(DIC = [CO_{2(aq)}] + [H_2CO_3] + [HCO_3^-] + [CO_3^{2-}]\).
Applying the general terms derived in Table 11.2, the approximate terms for \([H_2CO_3^o]\), \([HCO_3^-]\), and \([CO_3^{2-}]\) can be expressed as a function of pH, DIC, \(K_{a1}\), and \(K_{a2}\) in Table 11.3 below. The log(conc) terms are plotted as a function of pH on the Bjerrum plot below in Figure 11.18 below
| pH < pKa1-1 | pKa1+1< pH < pKa2-1 | pH > pKa2+1 | |||
|---|---|---|---|---|---|
| \([H^+]\) | \(10^{-pH}\) | \(10^{-pH}\) | \(10^{-pH}\) | ||
| \([OH^-]\) | \(10^{-14+pH}\) | \(10^{-14+pH}\) | \(10^{-14+pH}\) | ||
| \([H_2CO_3^o]\) | \(DIC\) | \(\frac{DIC.[H^+]}{K_{a1}}\) | \(\frac{DIC.[H^+]^2}{K_{a1}.K_{a2}}\) | ||
| \([HCO_3^-]\) | \(\frac{DIC.K_{a1}}{[H^+]}\) | \(DIC\) | \(\frac{DIC.[H^+]}{K_{a2}}\) | ||
| \([CO_3^{2-}]\) | \(\frac{DIC.K_{a1}.K_{a2}}{[H^+]^2}\) | \(\frac{DIC.K_{a2}}{[H^+]}\) | \(DIC\) | ||
| \(log[H^+]\) | \(-pH\) | \(-pH\) | \(-pH\) | ||
| \(log[OH^-]\) | \(-14+pH\) | \(-14+pH\) | \(-14+pH\) | ||
| \(log[H_2CO_3^o]\) | \(log(DIC)\) | \(C^{st} - pH\) | \(C^{st} - 2pH\) | ||
| \(log[HCO_3^-]\) | \(C^{st} + pH\) | \(log(DIC)\) | \(C^{st} - pH\) | ||
| \(log[CO_3^{2-}]\) | \(C^{st} + 2pH\) | \(C^{st} + pH\) | \(log(DIC)\) |
This chapter is still under construction


Sokoban!
Select Level
Tutorial
Level 1
Level 2
Level 3
Start
Welcome to Sokoban!
Let's push some boxes
Select level
Click Start to play
Use arrow keys to control
Have fun! :)


Please, make your selection:
Model:
----Select a model----
Iphone 7 Plus
iPhone 11
iPhone XR
Colour:
----Select a colour----
Black
Gold
White
Quantity:
Unit price:
You selected the following
Model:
Colour:
Quantity:
Total price:
Submit


{% for off in offersList %}
{% for usr in usersList %}
{% ifequal off.offer_owner usr.user_email %}
{% ifequal "Industrial" usr.user_category %}
{% with "Photos/"|add:off.offer_photourl as image_name %}
{% load staticfiles %}
{% for off in offersList %}
{% for usr in usersList %}
{% ifequal off.offer_owner usr.user_email %}
{% ifequal "Academic" usr.user_category %}
{% with "Photos/"|add:off.offer_photourl as image_name %}
{% load staticfiles %}


Just pay one time service fee for chatbot installation on your website, No recurring charge
Lead Generation Chatbot
Real estate Chatbot
Product showcase chatbot
Customer Support chatbot
Conversational Chatbot
Click the chat icon at the right side bottom of this page to see demo of a Conversational Chatbot. This chatbot can handle the electricity bill related queries of a website visitor. (Enter registered mobile number as<PHONE_NUMBER> when prompted )


I've encountered some type of problem. Please try your request later. We are deeply sorry for any inconvenience.Sincerely,The gS team


Mpsettings
settings.Services
Mpsettings Factory
| string | Returns device ID. |
| string | Returns name of device. |
| string | Returns the devicePin. |
| string | Sets device id. |
| string | Sets name of device and returns new name. |
| string | Sets a user-chosen Pin to save their app settings. |


BAOBAB is a platform investigating alternative channels
for the distribution and dissemination of photography.
Baobab is an experimental multimedia platform created to challenge the future of photography.
The goal of Baobab is to push authors to take ownership of their own photographic and professional careers, by stimulating hands-on experiences to be taken into the next step of their creative development.
We (Kirsten Bosma, Pietro Bulfoni, and Daniel Siegersma- founders of the platform) offer a range of activities and educational experiences that aim to strengthen the photographers’ capacities to reflect, create and craft a story.
From how to gather financial support, to how to sequence a series of images; from how to pitch a concept, to its translation into a photo book of any sort.
Web designer and developer
Zahari Dimitrov
Publisher
Baobab Magazine
Editorial Office
The Hague
The Netherlands,
+31652881110
<EMAIL_ADDRESS>www.baobabmagazine.eu
Copyright
Baobab Magazine 2016, The Hague
All rights reserved
The medium of photography commonly presents itself in two dimensions, but a whole process of thought, experimentation, and failure builds towards its creation, to the making of a final message.
By creating exhibitions, talks, and workshops, Baobab responds to the need to bring ideas together. These hands-on experiences are a stimulus necessary in order for a photographer to reach the desired audience.
Baobab promotes various independent activities, while also initiating commercial and educational projects.
Along with these activities we produce an annual magazine, a sort of cook book where many different ingredients end up creating each time a new recipe.
Through the collaboration with different graphic designers and student guest editors, Baobab creates opportunities where new narratives can be explored.
Three guest-editors, each from a different school are asked to decide upon the content, form and picture-edit of the magazine. The material they’ll need to work with is generated in the three academies / schools they come from. Together with a Graphic Designer they are in full control over all these decisions. Not only the challenge the construction of a magazine, but also to challenge the idea of what a magazine is. Consequently every issue of Baobab magazine will be different because of this way of working with guest editors.
A celebration of the short term project. A space for all the works that are made for the academy and for the development of ourselves. Many of these projects gather dust under a bed, in a closet, or at someone who has more space than we do. In this issue we desire to elevate those projects, photographs and writings, to celebrate their existence and their contribution to the process of becoming a photographer.
Participants
Editor-in-chief: Pietro Bulfoni, Daniël Siegersma
Graphic Design: Jan Egbers, Céline Hurka
Featured writing: Tobias Keunecke, Trees Heil
Featured photography: Alberto Maserin, Alex Aleshin, Hein Budding, Anna Charalampidi, Anna Kieblesz, Filippo Ciriani, Hanane El Ouardani, Linnéa Gerrits, Melissa Schriek, Sabine Rovers, Stella Loning, Sydney Rahimtoola, Tibor Dieters, Tobias Keunecke, Tommy Smits, Trees Heil, Victoria Chaushyan, Vikor Naumovski.
A mass. A vibrant high amount of something, becoming one. Yet when spending slightly more time observing it, units and individuals start to appear. A diversity becomes noticeable. Bound in the fullness they are a part of, members are not similar to each other, but they fade simultaneously. It’s difficult not to join the pursuit of torpour.
A lethargy refers in the animal kingdom to a period of rest, inactivity, which is necessary to the cycle of life. Somehow lethargy conserves energy, especially during winter. In a similar manner it affects humans with different weights in approximative periods of life. If a pair of hands is no longer able to cover the eyes of its owner, the blur of a panorama still needs to be viewed. We found the instance in which the natural lightning in the far background would have synced with the flash of our point of view, yet again eyes were closed, unable to witness serendipity.
Participants
Editors: Kirsten Bosma, Pietro Bulfoni, Daniël Siegersma
Featured writing: Alex Avgud
Featured photography: Suzanne Schols, Fabian Kasper, Sabine Rovers, Linus Kropp, Katarina Juričić, Jeanne Aubert, Eva Borsboom, Io Sivertsen, Clara Bercher, Vladimir Vidanovski, Anna Kieblesz, Filippo Maria Ciriani, Melissa Carnemolla, Silvy Crespo, Joël Hunn, Anna Charalampidi, Antonia Mayer, Elisa Cappellari, Naomi van Heck, Davide Degano, Linda Zhengová, Tasha Orlova, Marysia Swietlicka, Rosa Alvarez Solano, Nina Schollaardt, Melissa Schriek, Stan Heerkens, Yentl van Toledo, Sungjae Joo, Dessislav Lilkov
On the occasion of the European elections, Baobab Magazine’s third issue Content Union reflects on the state of our continent. 25 students from both the BA and the MA course portray a series of untold stories and off the radar identities. From the biggest fake-city turned into a military playground in Germany to the copycat architectural style of Romas in Macedonia, passing through the political stances of musical genres like Flamenco in Spain to Turbo Folk in Serbia. The ambition of this issue is neither to criticize nor to to praise but rather to question past and present, me and you, aesthetics and politics, with the purpose of bending the narrative of the future.
— The Guest Editors
Participants
Guest editors: Guglielmo Giomi, Katarina Juričić, Marco Verhoogt
Graphic Design: Edward July
Featured writing: Mads Holm, Ties Veerman, Nina Schollaardt, Olga Roszkowska, Milutin Markovic, Alex Cabeza, Mafalda Rakos, Tibor Dieters,
Linnea Frandsen
Featured photography: Mads Holm, Elisa Cappellari, Frederik Danielsen, Will Achterberg, Nola Minolfi, Ben Maier, Ties Veerman, Nina Schollaardt, Femke Juffermans, Antoni Czarczynski, Loulou van Staaveren, Alexandra Petcu, Thijs van Stigt, Sean Sandoval, Antonia Mayer, Guillaume Louvet, Loretta Monique, Olga Roszkowska, Milutin Markovic, Alex Cabeza, Malte Uchtmann, Alex Avgud, Mafalda Rakos, Tibor Dieters, Linnea Frandsen, Steyn van Rongen


fast_ml fast_ml-2013 knowledge-graph by maker-knowledge-mining
1 fast ml-2013-12-28-Regularizing neural networks with dropout and with DropConnect
Introduction: We continue with CIFAR-10-based competition at Kaggle to get to know DropConnect. It’s supposed to be an improvement over dropout. And dropout is certainly one of the bigger steps forward in neural network development. Is DropConnect really better than dropout? TL;DR DropConnect seems to offer results similiar to dropout. State of the art scores reported in the paper come from model ensembling. Dropout Dropout , by Hinton et al., is perhaps a biggest invention in the field of neural networks in recent years. It adresses the main problem in machine learning, that is overfitting. It does so by “dropping out” some unit activations in a given layer, that is setting them to zero. Thus it prevents co-adaptation of units and can also be seen as a method of ensembling many networks sharing the same weights. For each training example a different set of units to drop is randomly chosen. The idea has a biological inspiration . When a child is conceived, it receives half its genes f
2 fast ml-2013-12-15-A-B testing with bayesian bandits in Google Analytics
Introduction: A/B testing is a way to optimize a web page. Half of visitors see one version, the other half another, so you can tell which version is more conducive to your goal - for example selling something. Since June 2013 A/B testing can be conveniently done with Google Analytics. Here’s how. This article is not quite about machine learning. If you’re not interested in testing, scroll down to the bayesian bandits section . Google Content Experiments We remember Google Website Optimizer from a few years ago. It wasn’t exactly user friendly or slick, but it felt solid and did the job. Unfortunately, at one point in time Google pulled the plug, leaving Genetify as a sole free (and open source) tool for multivariate testing. Multivariate means testing a few elements on a page simultanously. At that time they launched Content Experiments in Google Analytics, but it was a giant step backward. Content experiments were very primitive and only allowed rudimentary A/B split testing. It i
3 fast ml-2013-12-07-13 NIPS papers that caught our eye
Introduction: Recently Rob Zinkov published his selection of interesting-looking NIPS papers . Inspired by this, we list some more. Rob seems to like Bayesian stuff, we’re more into neural networks. If you feel like browsing, Andrej Karpathy has a page with all NIPS 2013 papers . They are categorized by topics discovered by running LDA. When you see an interesting paper, you can discover ones ranked similiar by TF-IDF. Here’s what we found. Understanding Dropout Pierre Baldi, Peter J. Sadowski Dropout is a relatively new algorithm for training neural networks which relies on stochastically dropping out neurons during training in order to avoid the co-adaptation of feature detectors. We introduce a general formalism for studying dropout on either units or connections, with arbitrary probability values, and use it to analyze the averaging and regularizing properties of dropout in both linear and non-linear networks. For deep neural networks, the averaging properties of dropout are characte
4 fast ml-2013-11-27-Object recognition in images with cuda-convnet
Introduction: Object recognition in images is where deep learning, and specifically convolutional neural networks, are often applied and benchmarked these days. To get a piece of the action, we’ll be using Alex Krizhevsky’s cuda-convnet , a shining diamond of machine learning software, in a Kaggle competition. Continuing to run things on a GPU, we turn to applying convolutional neural networks for object recognition. This kind of network was developed by Yann LeCun and it’s powerful, but a bit complicated: Image credit: EBLearn tutorial A typical convolutional network has two parts. The first is responsible for feature extraction and consists of one or more pairs of convolution and subsampling/max-pooling layers, as you can see above. The second part is just a classic fully-connected multilayer perceptron taking extracted features as input. For a detailed explanation of all this see unit 9 in Hugo LaRochelle’s neural networks course . Daniel Nouri has an interesting story about
5 fast ml-2013-11-18-CUDA on a Linux laptop
Introduction: After testing CUDA on a desktop , we now switch to a Linux laptop with 64-bit Xubuntu. Getting CUDA to work is harder here. Will the effort be worth the results? If you have a laptop with a Nvidia card, the thing probably uses it for 3D graphics and Intel’s built-in unit for everything else. This technology is known as Optimus and it happens to make things anything but easy for running CUDA on Linux. The problem is with GPU drivers, specifically between Linux being open-source and Nvidia drivers being not. This strained relation at one time prompted Linus Torvalds to give Nvidia a finger with great passion. Installing GPU drivers Here’s a solution for the driver problem. You need a package called bumblebee . It makes a Nvidia card accessible to your apps. To install drivers and bumblebee , try something along these lines: sudo apt-get install nvidia-current-updates sudo apt-get install bumblebee Note that you don’t need drivers that come with a specific CUDA rel
6 fast ml-2013-11-02-Maxing out the digits
Introduction: Recently we’ve been investigating the basics of Pylearn2 . Now it’s time for a more advanced example: a multilayer perceptron with dropout and maxout activation for the MNIST digits. Maxout explained If you’ve been following developments in deep learning, you know that Hinton’s most recent recommendation for supervised learning, after a few years of bashing backpropagation in favour of unsupervised pretraining, is to use classic multilayer perceptrons with dropout and rectified linear units. For us, this breath of simplicity is a welcome change. Rectified linear is f(x) = max( 0, x ) . This makes backpropagation trivial: for x > 0, the derivative is one, else zero. Note that ReLU consists of two linear functions. But why stop at two? Let’s take max. out of three, or four, or five linear functions… And so maxout is a generalization of ReLU. It can approximate any convex function. Now backpropagation is easy and dropout prevents overfitting, so we can train a deep
7 fast ml-2013-10-28-How much data is enough?
Introduction: A Reddit reader asked how much data is needed for a machine learning project to get meaningful results. Prof. Yaser Abu-Mostafa from Caltech answered this very question in his online course . The answer is that as a rule of thumb, you need roughly 10 times as many examples as there are degrees of freedom in your model. In case of a linear model, degrees of freedom essentially equal data dimensionality (a number of columns). We find that thinking in terms of dimensionality vs number of examples is a convenient shortcut. The more powerful the model, the more itâ€™s prone to overfitting and so the more examples you need. And of course the way of controlling this is through validation. Breaking the rules In practice you can get away with less than 10x, especially if your model is simple and uses regularization. In Kaggle competitions the ratio is often closer to 1:1, and sometimes dimensionality is far greater than a number of examples, depending on how you pre-process the data
8 fast ml-2013-10-09-Big data made easy
Introduction: An overview of key points about big data. This post was inspired by a very good article about big data by Chris Stucchio (linked below). The article is about hype and technology.  Big data is hype Everybody talks about big data; nobody knows exactly what it is. That’s pretty much the definition of hype. Google Trends suggest that the term took off at the beginning of 2011 (and the searches are coming mainly from Asia, curiously). Now, to put things in context: Big data is right there (or maybe not quite yet?) with other slogans like web 2.0 , cloud computing and social media . In effect, big data is a generic term for: data science machine learning data mining predictive analytics and so on. Don’t believe us? What about James Goodnight, the CEO of SAS : The term big data is being used today because computer analysts and journalists got tired of writing about cloud computing. Before cloud computing it was data warehousing or
9 fast ml-2013-10-06-Pylearn2 in practice
Introduction: What do you get when you mix one part brilliant and one part daft? You get Pylearn2, a cutting edge neural networks library from Montreal that’s rather hard to use. Here we’ll show how to get through the daft part with your mental health relatively intact. Pylearn2 comes from the Lisa Lab in Montreal , led by Yoshua Bengio. Those are pretty smart guys and they concern themselves with deep learning. Recently they published a paper entitled Pylearn2: a machine learning research library [arxiv] . Here’s a quote: Pylearn2 is a machine learning research library - its users are researchers . This means (…) it is acceptable to assume that the user has some technical sophistication and knowledge of machine learning. The word research is possibly the most common word in the paper. There’s a reason for that: the library is certainly not production-ready. OK, it’s not that bad. There are only two difficult things: getting your data in getting predictions out What’
10 fast ml-2013-09-19-What you wanted to know about AUC
Introduction: AUC, or Area Under Curve, is a metric for binary classification. It’s probably the second most popular one, after accuracy. Unfortunately, it’s nowhere near as intuitive. That is, until you have read this article. Accuracy deals with ones and zeros, meaning you either got the class label right or you didn’t. But many classifiers are able to quantify their uncertainty about the answer by outputting a probability value. To compute accuracy from probabilities you need a threshold to decide when zero turns into one. The most natural threshold is of course 0.5. Let’s suppose you have a quirky classifier. It is able to get all the answers right, but it outputs 0.7 for negative examples and 0.9 for positive examples. Clearly, a threshold of 0.5 won’t get you far here. But 0.8 would be just perfect. That’s the whole point of using AUC - it considers all possible thresholds. Various thresholds result in different true positive/false positive rates. As you decrease the threshold, you get
11 fast ml-2013-09-09-Predicting solar energy from weather forecasts plus a NetCDF4 tutorial
Introduction: Kaggle again. This time, solar energy prediction. We will show how to get data out of NetCDF4 files in Python and then beat the benchmark. The goal of this competition is to predict solar energy at Oklahoma Mesonet stations (red dots) from weather forecasts for GEFS points (blue dots): We’re getting a number of NetCDF files, each holding info about one variable, like expected temperature or precipitation. These variables have a few dimensions: time: the training set contains information about 5113 consecutive days. For each day there are five forecasts for different hours. location: location is described by latitude and longitude of GEFS points weather models: there are 11 forecasting models, called ensembles NetCDF4 tutorial The data is in NetCDF files, binary format apparently popular for storing scientific data. We will access it from Python using netcdf4-python . To use it, you will need to install HDF5 and NetCDF4 libraries first. If you’re on Wind
12 fast ml-2013-09-03-Our followers and who else they follow
Introduction: Recently we hit 400 followers mark on Twitter. To celebrate we decided to do some data mining on you , specifically to discover who our followers are and who else they follow. For your viewing pleasure we packaged the results nicely with Bootstrap. Here’s some data science in action. Our followers This table show our 20 most popular followers as measeared by their follower count. The occasional question marks stand for non-ASCII characters. Each link opens a new window. Followers Screen name Name Description 8685 pankaj Pankaj Gupta I lead the Personalization and Recommender Systems group at Twitter. Founded two startups in the past. 5070 ogrisel Olivier Grisel Datageek, contributor to scikit-learn, works with Python / Java / Clojure / Pig, interested in Machine Learning, NLProc, {Big|Linked|Open} Data and braaains! 4582 thuske thuske & 4442 ram Ram Ravichandran So
13 fast ml-2013-08-23-A bag of words and a nice little network
Introduction: In this installment we will demonstrate how to turn text into numbers by a method known as a bag of words . We will also show how to train a simple neural network on resulting sparse data for binary classification. We will achieve the first feat with Python and scikit-learn, the second one with sparsenn . The example data comes from a Kaggle competition, specifically Stumbleupon Evergreen. The subject of the contest is to classify webpage content as either evergreen or not. The train set consist of about 7k examples. For each example we have a title and a body for a webpage and then about 20 numeric features describing the content (usually, because some tidbits are missing). We will use text only: extract body and turn it into a bag of words in libsvm format. In case you don’t know, libsvm is pretty popular for storing sparse data as text. It looks like this: 1 94:1 298:1 474:1 492:1 1213:1 1536:1 (...) First goes the label and then indexes of non-zero features. It’
14 fast ml-2013-08-12-Accelerometer Biometric Competition
Introduction: Can you recognize users of mobile devices from accelerometer data? It’s a rather non-standard problem (we’re dealing with time series here) and an interesting one. So we wrote some code and ran EC2 and then wrote more and ran EC2 again. After much computation we had our predictions, submitted them and achieved AUC = 0.83. Yay! But there’s a twist to this story. An interesting thing happened when we mistyped a command. Instead of computing AUC from a validation test set and raw predictions, we computed it using a training set: auc.py train_v.vw r.txt And got 0.86. Now, the training file has a very different number of lines from the test file, but our script only cares about how many lines are in a predictions file, so as long as the other file has at least that many, it’s OK. Turns out you can use this set or that set and get pretty much the same good result with each. That got us thinking. We computed a mean of predictions for each device. Here’s the plot: And here’
15 fast ml-2013-07-14-Running things on a GPU
Introduction: You’ve heard about running things on a graphics card, but have you tried it? All you need to taste the speed is a Nvidia card and some software. We run experiments using Cudamat and Theano in Python. GPUs differ from CPUs in that they are optimized for throughput instead of latency. Here’s a metaphor: when you play an online game, you want fast response times, or low latency. Otherwise you get lag. However when you’re downloading a movie, you don’t care about response times, you care about bandwidth - that’s throughput. Massive computations are similiar to downloading a movie in this respect. The setup We’ll be testing things on a platform with an Intel Dual Core CPU @3Ghz and either GeForce 9600 GT, an old card, or GeForce GTX 550 Ti, a more recent card. See the appendix for more info on GPU hardware. Software we’ll be using is Python. On CPU it employs one core*. That is OK in everyday use because while one core is working hard, you can comfortably do something else becau
16 fast ml-2013-07-09-Introducing phraug
Introduction: Recently we proposed to pre-process large files line by line. Now it’s time to introduce phraug *, a set of Python scripts based on this idea. The scripts mostly deal with format conversion (CSV, libsvm, VW) and with few other tasks common in machine learning. With phraug you currently can convert from one format to another: csv to libsvm csv to Vowpal Wabbit libsvm to csv libsvm to Vowpal Wabbit tsv to csv And perform some other file operations: count lines in a file sample lines from a file split a file into two randomly split a file into a number of similiarly sized chunks save a continuous subset of lines from a file (for example, first 100) delete specified columns from a csv file normalize (shift and scale) columns in a csv file Basically, there’s always at least one input file and usually one or more output files. An input file always stays unchanged. If you’re familiar with Unix, you may notice that some of these tasks are easily ach
17 fast ml-2013-07-05-Processing large files, line by line
Introduction: Perhaps the most common format of data for machine learning is text files. Often data is too large to fit in memory; this is sometimes referred to as big data. But do you need to load the whole data into memory? Maybe you could at least pre-process it line by line. We show how to do this with Python. Prepare to read and possibly write some code. The most common format for text files is probably CSV. For sparse data, libsvm format is popular. Both can be processed using csv module in Python. import csv i_f = open( input_file, 'r' ) reader = csv.reader( i_f ) For libsvm you just set the delimiter to space: reader = csv.reader( i_f, delimiter = ' ' ) Then you go over the file contents. Each line is a list of strings: for line in reader: # do something with the line, for example: label = float( line[0] ) # .... writer.writerow( line ) If you need to do a second pass, you just rewind the input file: i_f.seek( 0 ) for line in re
18 fast ml-2013-06-19-Go non-linear with Vowpal Wabbit
Introduction: Vowpal Wabbit now supports a few modes of non-linear supervised learning. They are: a neural network with a single hidden layer automatic creation of polynomial, specifically quadratic and cubic, features N-grams We describe how to use them, providing examples from the Kaggle Amazon competition and for the kin8nm dataset. Neural network The original motivation for creating neural network code in VW was to win some Kaggle competitions using only vee-dub , and that goal becomes much more feasible once you have a strong non-linear learner. The network seems to be a classic multi-layer perceptron with one sigmoidal hidden layer. More interestingly, it has dropout. Unfortunately, in a few tries we haven’t had much luck with the dropout. Here’s an example of how to create a network with 10 hidden units: vw -d data.vw --nn 10 Quadratic and cubic features The idea of quadratic features is to create all possible combinations between original features, so that
19 fast ml-2013-06-01-Amazon aspires to automate access control
Introduction: This is about Amazon access control challenge at Kaggle. Either we’re getting smarter, or the competition is easy. Or maybe both. You can beat the benchmark quite easily and with AUC of 0.875 you’d be comfortably in the top twenty percent at the moment. We scored fourth in our first attempt - the model was quick to develop and back then there were fewer competitors. Traditionally we use Vowpal Wabbit . Just simple binary classification with the logistic loss function and 10 passes over the data. It seems to work pretty well even though the classes are very unbalanced: there’s only a handful of negatives when compared to positives. Apparently Amazon employees usually get the access they request, even though sometimes they are refused. Let’s look at the data.  We were thoroughly thrilled to learn that the winner, doubleshot , used sparse filtering, apparently following our cue. His score in terms of accuracy is 0.702, ours 0.645, and the best benchmark 0.525. We ranked 15th out of 217, a few places ahead of the Toronto team consisting of Charlie Tang and Nitish Srivastava . To their credit, Charlie has won the two remaining Challenges in Representation Learning . Not-so-deep learning The difference to our previous, beating-the-benchmark attempt is twofold: one layer instead of two for supervised learning, VW instead of a random forest Somewhat suprisingly, one layer works better than two. Even more surprisingly, with enough units you can get 0.634 using a linear model (Vowpal Wabbit, of course, One-Against-All). In our understanding, that’s the point of overcomplete representations*, which Stanford people seem to care much about. Recall The secret of the big guys and the pape
21 fast ml-2013-05-12-And deliver us from Weka
22 fast ml-2013-05-01-Deep learning made easy
23 fast ml-2013-04-17-Regression as classification
24 fast ml-2013-04-10-Gender discrimination
25 fast ml-2013-03-25-Dimensionality reduction for sparse binary data - an overview
26 fast ml-2013-03-18-Large scale L1 feature selection with Vowpal Wabbit
27 fast ml-2013-03-07-Choosing a machine learning algorithm
28 fast ml-2013-02-27-Dimensionality reduction for sparse binary data
29 fast ml-2013-02-18-Predicting advertised salaries
30 fast ml-2013-02-07-The secret of the big guys
31 fast ml-2013-01-17-A very fast denoising autoencoder
32 fast ml-2013-01-14-Feature selection in practice
33 fast ml-2013-01-12-Intro to random forests
34 fast ml-2013-01-07-Machine learning courses online
35 fast ml-2013-01-04-Madelon: Spearmint's revenge


Dart Drag and Drop Rectangles
In the following `canvas` you can drag and drop rectangles!
Reference
One click to (de)select
Double click to draw new rectangle
One click and move to drag
Sorry, your browser is not supported.


Welcome to your
Frontend Template
For a guide and recipes on how to configure /
customize this project,
check out the
project documentation.


This is a very interactive website that is allowing you to pop your date of birth and display your name
This Application is helping Akan Naming so that they can know their real name since their naming system is dependent to days
Fill the form to get your Akan name:
| Day of the Week | Female Name | Male Name |
|---|---|---|
| Sunday | Akosua | Kwasi |
| Monday | Adwoa | Kudwo |
| Tuesday | Abenaa | Kwabena |
| Wednesday | Akua | Kwaku |
| Thursday | Yaa | Yaw |
| Friday | Afua | Kofi |
| Saturday | Ama | Kwame |


2 different armbar setups, std with legs over ops head, alt with leg under head almost a neck crank
Use foot into ops upper hip, with lots of weight to control them.
Turn lower leg up so it's over ops abs getting ready for triangle control around ops waist
Escaping, get your head to the floor on the weak side, clear the legs, sit on the knee


Encoding
1.0
Type
:: Name
1.0
BaseEncoding
:: ( Name | =
"MacRomanEncoding"
or =
"MacExpertEncoding"
or =
"WinAnsiEncoding"
)
1.0
Differences
:: Array


Stacey Solomon 'can’t stop crying' as she shares adorable snaps of baby Rex 24 Nov 2019, 18:59 by Clara Kelly (Image: instagram) (Image: instagram) (Image: instagram)


Name :
DOB :
Contact :
Create Password :
Comfirm Password :
Gender :
City / Town :
Pincode :
Address :
Choose a question :
I am Male Female
Pick up a Question What is the last name of the teacher who gave you your first failing grade? What was the name of your elementary / primary school? In what city or town does your nearest sibling live? What time of the day were you born? (hh:mm) What is your pet’s name?


#assign DbJson = "true">
Ebean provides @DbJson
and @DbJsonB
for mapping properties as
JSON documents into Postgres JSON, Postgres JSONB, CLOB, VARCHAR or BLOB.
Both Postgres
and Oracle
(and shortly MySql
) provide
functions/expressions for querying and manipulating the JSON.
Ebean also has ElasticSearch
integration so even without the built in database
support we can use that integration to effectively replicate to ElasticSearch and use it
to search our data.
What these capabilities do is enable designers/developers to mix unstructured (or semi-structured) document content with our typically highly structured data.
An example use case might be storing 'user preferences' where the data naturally comes in as JSON, has potentially deep nesting and where we only need limited queries/expressions on the document attributes. In this type of case the use of unstructured document storage as JSON can be a good fit.
If the mapping is to String
, Long
or Map<String,Object>
types
then Ebean will use it's built in JSON support to handle the marshalling to/from JSON.
With these types note that Ebean will use ModifyAware
collections so that it knows if the
property is dirty
and needs to be included in an update. If the type is not ModifyAware then
it must be treated as dirty and included in an update.
If the type mapped is not one of String
, Long
or Map<String,Object>
types
then Ebean will use Jackson ObjectMapper to handle the marshalling to/from JSON.
In this case jackson-databind
becomes a required dependency.
Note that when we use Jackson for marshalling the property type is not ModifyAware
and that
means that it must be treated as dirty
and included in updates. It will only be included in
updates if the property is actually loaded of course and so if you know a use case will not update the content
it can be worth while to not load it in the first place (with the additional benefit that it won't be automatically
included in the update).
An ObjectMapper instance can be configured on ServerConfig via setObjectMapper()
. If an ObjectMapper is
not specified in this way an instance will be created for use by Ebean (If Jackson ObjectMapper is
detected in the classpath).
When Postgres is not used then fallback is to store JSON into VARCHAR, CLOB or BLOB database types.
If the length
attribute is specified like @DbJson(length=1000)
or @DbJsonB(length=1000)
then VARCHAR is the fallback type and the length defined is the
length of the varchar column definition.
The storage can be explicitly defined using the storage
attribute.
The default fallback for JSON and JSONB types is CLOB and this is used when both the length and storage attributes are not defined.
Refer to json-in-db documentation for details on the query expressions and how those translate for both Postgres and Oracle expressions.


Hello and welcome! My name is Lukas Nord and I am a Software Developer in the Twin Cities Area. I have a passion for using software to solve problems and to make fun things! I have ten years of experience working in the Information Technology sector and have a wide variety of experience in customer facing roles, project management, technical solutions, and a thirst for continuous learning. I feel right at home when I'm learning new tools to tackle the challenges I am presented with and Software Development is right where I want to be.
Clifton Strengths Finder
Communication, Input, Learner, Woo, Includer
What I'm UsingI started my career learning JavaScript so I could build powerful web applications. Lately, I've been using TypeScript and have been really enjoying it.
AngularJS was my first experience with a front-end framework. I use Angular 4+ for some projects currently.
Vue is a fantastic front-end to work with. I use this professionally every day.
I'm working on leveling up my React skills. I'm familar enough to navigate around the code and do simple things.
Node.js has been a fantastic environment for learning backend development. I frequently pair it with Express and Passport.js when building web applications.
SQL drives most every project I work on personally and professionally. I also enjoy working with MongoDB!


An Accredited Center
At Trusted Friends we believe that every child is capable of excellence. That is why we are committed to pursuing and maintaining our status as an accredited daycare center. By seeking national accreditation, you know that Trusted Friends is striving to give your family the very best daycare experience.
What is Accreditation?
Every daycare center must meet the state's minimum license requirements. We go beyond that. When a daycare center is awarded national accreditation they are meeting a higher standard that demonstrates its expertise in:
- Classroom Management
- Curriculum Development
- Health and Safety
- Parental Support
- Community Involvement
- Teacher Certification
- Administrative Oversight
- Financial Statements
Our commitment to accreditation gives you assurance we provide a positive educational experience for your child.
How does Accreditation Work?
Every other year we go through an intense review by recognized and esteemed national accreditation agencies. Their positive reports (available for inspection) confirm that we are providing a clean, safe, and positive environment for our children. Accreditation verifies that our teachers are qualified and fully engaged in giving our children a first-class educational experience.
Once we've completed the entire accreditation self-study process, trained professionals from our accrediting agencies conduct on-site visits to validate our compliance with national early childhood education standards. But accreditation doesn't just take place every two years. It's an ongoing process of self-evaluation, discussion, and parental reviews.
We encourage parents to help us improve our center and become better stewards for their children. You can part of the accreditation process as we work together to make Trusted Friends a great neighborhood center.
Who Provides Accreditation?
There are several national organizations that provide accreditation services. Who a center chooses for oversight is important. Trusted Friends pursues national accreditation from three of the most respected national early childhood accreditation agencies:
- National Association for Youth Care
- United Accreditation for Early Care and Education
- National Daycare Accreditation
Feel free to contact us to discuss accreditation and learn more about our standards for care and education.


Preparation time
less than 30 mins
Cooking time
30 mins to 1 hour
Serves
Serves 6
Dietary
For the chutney, heat two tablespoons of vegetable oil in a frying pan over a medium heat. Add the ginger, chilli, lime zest and garlic and fry for 3-4 minutes, or until softened.
Stir in the ground cinnamon, ground coriander, sugar, cider vinegar, lime juice and mangoes. Bring the mixture to the boil, then reduce the heat until the mixture is simmering. Continue to simmer for 20-30 minutes, or until the mixture has reduced and has the consistency of jam. (NB: The chutney makes double the amount needed for this recipe. The remaining chutney can be kept in sterilised jars in the fridge for up to 3 weeks.)
Meanwhile, for the pakora, boil the onion slices in a pan of salted water for 2-3 minutes. Add the broccoli and cauliflower florets and continue to boil for 1-2 minutes, or until the onions are tender. Drain well and set aside.
For the batter, mix together the flour, chilli, ground turmeric, cayenne pepper and seasoning in a bowl until well combined. Gradually add the water in a thin stream, whisking continuously, until a thick batter forms. (NB: You may not need to use all of the water.)
Heat the oil in a deep heavy-based frying pan until a breadcrumb sizzles and turns brown when dropped into it. (CAUTION: hot oil can be dangerous. Do not leave unattended.)
Dip the blanched cauliflower florets and broccoli into the batter, then lower spoonfuls of the sliced onion into the batter.
Carefully lower the battered vegetables into the hot oil in batches and fry for 4-5 minutes, or until crisp and golden-brown. Remove from the heat using a slotted spoon and set aside to drain on kitchen paper. Repeat the process with the remaining battered vegetables.
To serve, divide the pakora among four serving baskets. Serve the yoghurt (if using) and mango chutney in dipping bowls alongside.


Ali
Writing a short bio is like having 1000 fishes and having to choose no more than a handful...
But... although hard it is not impossible...
Imagine a bio where one talks not about themselves... but rather their floating thoughts on irrelevant matters.
For example; would you trust someone if their name was Zeke?
Or... would you eat seafood if it had claws and many legs?? If you would, you better do it before Sasha eats everything!!!
- Bachelor's Degree in Islamic Studies, Jordanian University.
- Freelance graphic design and branding
- Freelance English-Arabic translation
- Freelance Ghostwriter
- Freelance freelancer in freelancing about freelancification
Education and Work Experience
- Zeit w za3tar
- Zeit w za3tar
- Zeit w za3tar
- Zeit w za3tar
- Zeit w za3tar... yes, I love it that much!
- Fettuccine
- Cheesecake
- Zeit w za3tar again!
- Some chocolate doesn't hurt!!! And don't forget Peanut Butter!
- And Zeit w za3tar!!!!!!!!!!


City of Independence Water Use
Water Use at a Glance
Year to Date
Month to Date
Daily Average
Home
Graph
Table
Administrator Panel
Select a file to upload
Only files with .txt and no file extensions are allowed.
Day
Week
Month
Per Day
Month to Date
Per Week
Year to Date
Per Month
Year to Date
Day
Week
Month
Day
Week
Month
test day
test week
test year


My Name is Ann Cooper-Milne. I have a Bachelor of Science in Athletic Training and an Associate of Applied Science is Physical Therapy Assisting. In combination, I have practiced over 16 years. I currently work in an outpatient physical therapy setting.
Along with my 2 degrees, I am certifed in Integrative Dry Needling and Instrument Assisted Soft Tissue Mobilization through Smart Tools Plus. Why am I leaving healthcare you ask? Well, I don't intend on leaving healthcare, rather I want to expand my knowledge and begin working in other areas of the healthcare industry. I am certain with my healthcare knowledge I can help an up and coming healthcare business provide a better user experience.


Emily Deng is an International Studies-Economics honors student and a Computer Science minor. Graduating in June 2015, Emily looks forward to entering industry as a Professional Services Analyst with Informatica.


Register to add your own happy hour:
Cats are restricted from the distribution and consumption of alcohol
Username
Password
Verify Password


About Project Pierce
Project Pierce is a website project created with the intent of giving Stevens students the ability to review and create recipes based on foods offered at Pierce in the hopes of getting a little more bang out of your meal plan.
Our Food For Your Thought
Project Pierce is a website project created with the intent of giving Stevens students the ability to review and create recipes based on foods offered at Pierce in the hopes of getting a little more bang out of your meal plan.
Find recipes for the type of food you want to make or find at Pierce by clicking on the respective button on the nav bar.
Just visit our Google Form to submit your own recipe for us to spread to the Stevens community!


{% extends "layout.html" %} {% load static from staticfiles %} {% block title %}Manakin | About Us{% endblock %} {% block css %} {% endblock %} {% block jquery %} {% endblock %} {% block about %}selected{% endblock %} {% block content %}
Manakin products was founded in 2015 in order to deliver a High Quality Products to it's costumers.
We devote ourselves to creating the
Best Buying Experience for the smart buyer.
In Manakin, We work as a team in order to give a
Top Customer Service to all of our customers.
Sign up to our newsletter to get the latest news, sales and products


Reports methods of which the body is contained in a single
synchronized statement. The lock expression
for this synchronized statement must be
equal to this for instance methods
or ClassName.class for static methods. In
such cases the synchronized statements may be replaced by their contents and the
containing method marked synchronized.
Powered by InspectionGadgets


--- layout: minimal title: "About me" permalink: /about/index.html description: "Some description about Lorem Ipsum..." ---
PHP................


|
KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
|
Public Member Functions | |
| def | __init__ (self, KratosMultiphysics.Model model, KratosMultiphysics.Parameters parameters) |
| Reduce nodal reaction forces and torques on stacked slab domains. More... | |
| def | ExecuteFinalizeSolutionStep (self) |
Static Public Member Functions | |
| def | GetDefaultParameters () |
| def | ParseOutput (pathlib.Path fileName) |
| Get output values from a file written by this process (temporary implementation). More... | |
Public Attributes | |
| model_part | |
| moment_reference_point | |
| bottom_point | |
| top_point | |
| time_domain | |
| number_of_slabs | |
| is_open_domain | |
| output_name_stub | |
| def compute_level_force_process.ComputeLevelForceProcess.__init__ | ( | self, | |
| KratosMultiphysics.Model | model, | ||
| KratosMultiphysics.Parameters | parameters | ||
| ) |
Reduce nodal reaction forces and torques on stacked slab domains.
A region of space between 'bottom_point' and 'top_point' is subdivided into 'number_of_slabs' parallel slabs. Then, nodes from the specified model part are sorted into sub model parts based on which slab they are located in. Finally, for each sub model part, the reaction forces are summed up, and their torque (plus MOMENT if applicable) is reduced to 'moment_reference_point'. The reduced values are written to output files for each sub model part. Default parameters: { "model_part_name" : "", "moment_reference_point" : [0.0, 0.0, 0.0], "bottom_point" : [0.0, 0.0, 0.0], "top_point" : [0.0, 0.0, 0.0], "number_of_slabs" : 1, "open_domain" : false, "time_domain" : [0.0, 1e100], "output_name_stub" : "slab_" }
| def compute_level_force_process.ComputeLevelForceProcess.ExecuteFinalizeSolutionStep | ( | self | ) |
|
static |
|
static |
Get output values from a file written by this process (temporary implementation).
| compute_level_force_process.ComputeLevelForceProcess.bottom_point |
| compute_level_force_process.ComputeLevelForceProcess.is_open_domain |
| compute_level_force_process.ComputeLevelForceProcess.model_part |
| compute_level_force_process.ComputeLevelForceProcess.moment_reference_point |
| compute_level_force_process.ComputeLevelForceProcess.number_of_slabs |
| compute_level_force_process.ComputeLevelForceProcess.output_name_stub |
| compute_level_force_process.ComputeLevelForceProcess.time_domain |
| compute_level_force_process.ComputeLevelForceProcess.top_point |


SetWindowCallback()
语法
SetWindowCallback(@ProcedureName() [, #Window])概要
For experienced programmers only. It's only supported on Microsoft Windows.
Normal events should be handled with the regular WaitWindowEvent() or WindowEvent().
This function associates a callback to handle the events of the all open windows. All the events are caught by this callback and can be processed here. To set a callback for a specific window only, the optional parameter can be used to pass the PB window number.
To remove/disable a previous set Callback just call SetWindowCallback(0 [, #Window]).
Warning: this way is lowlevel. Incorrect handling of the messages in the callback can interfere with PB's own message processing.
参数
@ProcedureName() The callback procedure to use. It must have 4 parameters. Here is a sample code to use a callback correctly: Procedure MyWindowCallback(WindowID, Message, WParam, LParam) Result = #PB_ProcessPureBasicEvents ; ; you code here ; ProcedureReturn Result EndProcedureHere you see a working example checking some window parameters (using Windows API constants):Procedure WinCallback(hWnd, uMsg, WParam, LParam) ; Windows fills the parameter automatically, which we will use in the callback... If uMsg = #WM_SIZE Select WParam Case #SIZE_MINIMIZED Debug "Window was minimized" Case #SIZE_RESTORED Debug "Window was restored" Case #SIZE_MAXIMIZED Debug "Window was maximized" EndSelect EndIf ProcedureReturn #PB_ProcessPureBasicEvents EndProcedure If OpenWindow(0, 0, 0, 200, 100, "Messages", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget) SetWindowCallback(@WinCallback()) ; activate the callback Repeat Select WaitWindowEvent() Case #PB_Event_CloseWindow End EndSelect ForEver EndIf#Window (optional) A specific window to associate the callback to. If omitted the callback will be called for any window.
返回值
无.
已支持操作系统
Windows


Hello World!
This is KXtract
Please select an option
Login
Logout
Podcast List
Episode List
Episode for Podcast 1
Transcription for Podcast 1 Episode 1
Clear Local File Cache
Refresh Episodes
Test Error Page


{extend name="mobile/base/base"} {block name="title"}Manuals index list{/block} {block name="seo"} {/block} {block name="style"} {/block} {block name="banner"} {include file="mobile/base/banner" /} {/block} {block name="body"}
| Manual Name | Update |
|---|---|
| {$vo.title} | {$vo.create_time|strtotime|date="m/d/Y",###} |
There are no products released under this category, please contact our salesmen for details. You can also send an email to<EMAIL_ADDRESS>for more information.


You’ll Fall in Love with Data or Your Money Back
#AAJAlovedata, #AAJA13
Two tools to help you:
- Google Refine
- Google Spreadsheets
Using Google Refine
to find and report a story
The story
The graphics
The data: 246,000 tows
The problem: Messy spellings
The solution: Google Refine
A walk through
Google Refine
- Cleaning data
- Counting data
- Exporting data
Using Google Spreadsheets to find and report a story
To follow along
- Open up Google Chrome
- View the data at bit.ly/hunting-data
- Make a copy of it so you can edit it yourself
The data: 255 hunting accidents in Wisconsin
The problem:
What's the story?
Data analysis in (Google) Spreadsheets
- Prepping your data
- Finding Trends
- Asking questions about your results
What have we found?
- Same party injuries account for 50% of accidents
- The number of accidents per year is decreasing
- The top 5 reasons for accidents


Projects Fat Jar FatJar simple API to quick prototyping and portable web services More Info website Restful Server Restful WS Java EE Server Application, async, complex, cluster, generic, websocket examples. More Info Restful Client Restful Client Application for async, complex, cluster, generic, websocket requests. More Info Light Gap A light weight web application developed from scratch using standard html, css and js. More Info JVM Memory JVM memory management examples, Weak, Soft and Phantom references. More Info OSGI DM Dependency management library bundle for OSGI with @Inject annotation. More Info Service Executor Web services with WebSocket and Restful APIs, supports multiple languages. More Info REST Swagger Restful web service and on the fly Swagger API generation example project. More Info Design Patterns Creational, Structural and Behavioral design patterns, UMLs and examples. More Info Event Dispatcher Configurable and extensible event dispatch library with no dependencies. More Info Data Structures Implementation of list, queue, stack data structures with command query principle. More Info Service Executor Web services with WebSocket and Restful APIs, supports multiple languages. More Info DbC Design by Contract methodology sample implementation with Invariant, Requires and Ensures. More Info ZeroMQ ZeroMQ examples for Request Response, Publish Subscribe and Parallel Pipeline. More Info MVC Interface MVC over interface project, executing same application with Swing/JavaFX and Spring or no DI. More Info CQRS Server Restful WS java CQRS(Command Query Responsibility Segregation) server sample. More Info