Archive for the ‘Science’ Category

LaTeX Poster — “Bayesian Evaluation of Earth System Models Using Soil Respiration Data”

Saturday, January 28th, 2017

Download (PDF, 373KB)

Poster presented at regional conference today, SoCal Sysbio at my home institution, UCI.

LaTeX .tex file and beamerposter style file for the poster are included here. The template is based off of Philippe Dreuw and Thomas Deselaers’ original beamerposter template available at this link. Where my style file differs is that with some modifications, it no longer is limited to the Tango color palette and now also accepts dvipsnames and svgnames color names to increase the breadth of available colors.

I’ve been having a lot of fun with this project. Some details already on the poster, of course. An even briefer TLDR; of this is that I am trying to compare Earth System models (ESMs) in a Bayesian fashion to see which models are consistent with historical soil carbon dioxide flux data and are worth the effort to refine. I eyeballed some fits of the conventional and AWB soil carbon models under informative and realistic priors, and am proceeding to quantify the fits using Bayesian goodness of fit metrics. I will take a look at Bayes factors and posterior predictive p-values.

Thoughts on Li et al. 2014, “Soil carbon sensitivity to temperature and carbon use efficiency compared across microbial-ecosystem models of varying complexity.”

Saturday, July 9th, 2016

Ha, that is a long auto-generated URL. Given what has happened in the past few days, one has to chuckle at and cherish the little harmless things.

I read Li et al. 2014 from Biogeochemistry. This paper compares the output of several Earth system models including the “conventional model,” German (German et al., 2012), AWB (Allison et al., 2010), and MEND (Wang et al., 2013). The models differ in carbon pool structure and interactions, parameter values, and complexity — German has the fewest parameters and pools, while MEND has the most. The models were simulated under three separate microbial carbon use efficiency (CUE) scenarios. CUE is an important parameter in describing microbial function, and the effect of rising temperatures on the CUE of global microbial populations will be a key determinant of changes to the soil organic carbon (SOC) pool size in the coming century.

The three CUE scenarios tested were:

  1. A constant CUE scenario in which the CUE parameter stayed at 0.31 and did not depend on temperature
  2. A varied CUE scenario in which CUE monotonically decreases with temperature increase
  3. A varied CUE with thermal acclimation

Another key parameter that CUE depends on in all of the models in Li et al. (with the exception of the conventional model) is m, the CUE temperature response coefficient. CUE is given by

CUE(T) = CUE_{ref} + m * (T – T_{ref})

where T is temperature, CUE_{ref} is a set reference CUE value, and T_{ref} is a set reference temperature, in this 298.15 Kelvin.

Models were simulated at initial temperatures until they reached equilibrium and then perturbed with a 5 degree Celsius temperature increase.

Now, I won’t go into too much detail since I need to go to bed at some point, but there are several results in this paper that piqued my interest. For one, for regions initiated at low temperatures, the German, AWB, and MEND models predicted the decrease of SOC pool sizes. Regions initially seeded at higher temperatures saw smaller SOC losses, or even modest gains. This prediction aligns with experimental results predicting SOC losses in Arctic soils (Xue et al., 2016; Natali et al., 2011). Additionally, the observation of damped oscillations matched my own observations in simulations I have run, which makes sense as interactive coupling between SOC and microbial soil (MBC) pools is reminiscent of that observed in predator-prey models, so I was glad to see that confirmed.

Since I really have to go to bed now, I’ll jump straight to questions and future research directions that this paper has evoked. First, instead of a constant 50% thermal acclimation scenario (where m is halved in comparison to the varied CUE scenario), I wonder how changing m to be a function dependent on time (representing adapting mutations) would change things up. Second, this is a question less related to this paper, but with these Earth system biogeochemistry models, the carbon dioxide flux does not feed back into the pools in any way and is entirely separate from the input. How could the atmospheric carbon pool size be fit into these models? As a person new to this sub-field of Earth system biogeochemistry, I’m wondering why atmospheric carbon is not accounted for as an interactive pool in these models.

The Mathematical, Computational, and Systems Biology PhD Program at The University of California, Irvine

Sunday, November 22nd, 2015

Friends, Acquaintances, and Strangers,

I have not been active on my site for a while. When I have time in the near future (near being a year or so), I will revamp my web page to reflect my updated life direction.

I am working towards a science-related career and lifestyle as a graduate student in the Mathematical, Computational, and Systems Biology (MCSB) Gateway PhD program at the University of California, Irvine. I am very glad I chose this program over my other options and am having a blast learning math I missed out on as an undergrad. If you have stumbled upon this post because you are Googling about this program and are interested in applying, do not hesitate to ask me a question via my email, xiehw^at^uci.edu. (Replace ^at^ with the obvious required symbol. Just doing this to defeat some basic crawlers mining emails for spamming purposes.)

Cheers to health and publications,

Wally

XPP Code for Modified Moldakarimov Spiking Model

Tuesday, August 5th, 2014

Model is modified from original Moldakarimov model seen in this paper, “Competitive Dynamics in Cortical Responses” by Moldakarimov et al.

The below code should produce an image like this in XPP:XPP moldakarimov screenshot

#Moldakarimov model with two excitatory, two inhibitory neurons
#Parameters
par Jee = 0.0000771185, Jii = 0.0008748672024132885, Jei = 1.4090255443147903, Jiei = 0.013533455878780463, Jiec = 0.1269213277585255, AA = 34.259728192954, psi = 1.5371052948343185, fe = 0.006579634656629687, fi = 0.0021210156666630615
par te = 10, ti = 8, tge = 100, tgi = 80
par I1 = 0.8, I2 = 0.2, NC = 2, I1i=1, I2i=1
par cs1 = 9.114343343789908, cs2 = 0.00010877536894466077, cs3 = 0.00149053109891304, cs4 = -0.48447454404577495, cs0 = -0.3316691998368452
par VL = -65, VNa = 55, VK = -80, Vei = -80, Vee = 0, Vie = 0, Vii = -80
par gL = 0.05, gNa = 100, gK = 40, gCa = 0.975
#Equations
dVe1/dt = Iexte1 – (gL * (Ve1 – VL) + gK * ne1^4 * (Ve1 – VK) + gNa * minf(Ve1)^3 * he1 * (Ve1 – VNa)) – (Jee * ge1 * (Ve1 – Vee) / NC + Jei * gi1 * (Ve1 – Vei) / NC)
dVe2/dt = Iexte2 – (gL * (Ve2 – VL) + gK * ne2^4 * (Ve2 – VK) + gNa * minf(Ve2)^3 * he2 * (Ve2 – VNa)) – (Jee * ge2 * (Ve2 – Vee) / NC + Jei * gi2 * (Ve2 – Vei) / NC)
dhe1/dt = psi * (alphah(Ve1) * (1 – he1) – betah(Ve1) * he1)
dhe2/dt = psi * (alphah(Ve2) * (1 – he2) – betah(Ve2) * he2)
dne1/dt = psi * (alphan(Ve1) * (1 – ne1) – betan(Ve1) * ne1)
dne2/dt = psi * (alphan(Ve2) * (1 – ne2) – betan(Ve2) * ne2)
dse1/dt = (AA * sigma(Ve1) * (1 – se1) – se1) / te
dse2/dt = (AA * sigma(Ve2) * (1 – se2) – se2) / te
dphie1/dt = (-fe * sigma(Ve1) * phie1 + (1 – phie1)) / tge
dphie2/dt = (-fe * sigma(Ve2) * phie2 + (1 – phie2)) / tge
ge1 = se1 * phie1
ge2 = se2 * phie2
dVi1/dt = I1i-(gL * (Vi1 – VL) + gK * ni1^4 * (Vi1 – VK) + gNa * minf(Vi1)^3 * hi1 * (Vi1 – VNa)) – (Jii * gi1 * (Vi1 – Vii) / NC + Jiei * ge1 * (Vi1 – Vie) / NC + Jiec * ge2 * (Vi1 – Vie) / NC)
dVi2/dt = I2i-(gL * (Vi2 – VL) + gK * ni2^4 * (Vi2 – VK) + gNa * minf(Vi2)^3 * hi2 * (Vi2 – VNa)) – (Jii * gi2 * (Vi2 – Vii) / NC + Jiei * ge2 * (Vi2 – Vie) / NC + Jiec * ge1 * (Vi2 – Vie) / NC)
dhi1/dt = psi * (alphah(Vi1) * (1 – hi1) – betah(Vi1) * hi1)
dhi2/dt = psi * (alphah(Vi2) * (1 – hi2) – betah(Vi2) * hi2)
dni1/dt = psi * (alphan(Vi1) * (1 – ni1) – betan(Vi1) * ni1)
dni2/dt = psi * (alphan(Vi2) * (1 – ni2) – betan(Vi2) * ni2)
dsi1/dt = (AA * sigma(Vi1) * (1 – si1) – si1) / ti
dsi2/dt = (AA * sigma(Vi2) * (1 – si2) – si2) / ti
dphii1/dt = (-fi * sigma(Vi1) * phii1 + (1 – phii1)) / tgi
dphii2/dt = (-fi * sigma(Vi2) * phii2 + (1 – phii2)) / tgi
gi1 = si1 * phii1
gi2 = si2 * phii2

#Where

alpham(x) = 0.1 * (x + 30) / (1 – exp(-0.1 * (x + 30)))
betam(x) = 4 * exp((-x – 55) / 18)
alphan(x) = 0.01 * (x + 34) / (1 – exp(-0.1 * (x + 34)))
betan(x) = 0.125 * exp((-x – 44) / 80)
alphah(x) = 0.07 * exp((-x – 44) / 20)
betah(x) = 1 / (1 + exp(-0.01 * (x + 14)))
sigma(x) = 1 / (1 + exp((-x + 20) / 4))
minf(x) = alpham(x) / (alpham(x) + betam(x))
Iexte1 = cs0 + cs1 * I1 + cs2 * I1 ^ 2 + cs3 * I1 ^ 3 + cs4 * I1 ^ 4
Iexte2 = cs0 + cs1 * I2 + cs2 * I2 ^ 2 + cs3 * I2 ^ 3 + cs4 * I2 ^ 4

#Initial conditions

init Ve1 = -80
init Ve2 = -80
init Vi1 = -80
init Vi2 = -80

Adding Julia to your Windows Path

Sunday, July 27th, 2014

I installed Julia 0.3.0-RC1 onto my Windows 7 PC and then added C:\Program Files\Julia (where I installed Julia) to my PATH variable in my user profile environment variables list so that I could launch it in Command Prompt or PowerShell by typing “julia.” However, that did not work, returning the oft-seen “‘blah’ is not recognized as an internal or external command, operable program, or batch file.” I was a bit befuddled, then searched my system for the julia.exe. Turns out, it was located in C:\Program Files\Julia\bin.

Anyhow, if you add C:\path\to\Julia\bin to your user profile PATH, rather than just C:\path\to\Julia, you should be able to load Julia from a fresh launch of Command Prompt or PowerShell with “julia.”

juliapath

juliacommandprompt