Open hgscott opened 10 months ago
Daniel mentioned a paper by Markus Basan (sp?) that looks at glucose vs acetate fermentation.
A more difficult/longer-term interesting thing to do is to see what biomass components are coming from which carbon source. If you were doing a wet lab experiment, you could label the sources with different isotopes and see where they end up. How do we do the equivalent in FBA? Follow the fluxes? Escher maps would be very useful.
I set up COBRA simulations with media that either have only glucose, only acetate or both with:
# Glucose-only medium
glc_medium = {'EX_cpd00027_e0': 10, # D-Glucose_e0
# Not sure what value to use for oxygen
'EX_cpd00007_e0': 1000, # O2_e0
# Remaining minimal media components
'EX_cpd00058_e0': 1000, # Cu2+_e0
'EX_cpd00971_e0': 1000, # Na+_e0
'EX_cpd00063_e0': 1000, # Ca2+_e0
'EX_cpd00048_e0': 1000, # Sulfate_e0
'EX_cpd10516_e0': 1000, # fe3_e0
'EX_cpd00254_e0': 1000, # Mg_e0
'EX_cpd00009_e0': 1000, # Phosphate_e0
'EX_cpd00205_e0': 1000, # K+_e0
'EX_cpd00013_e0': 1000, # NH3_e0
'EX_cpd00099_e0': 1000, # Cl-_e0
'EX_cpd00030_e0': 1000, # Mn2+_e0
'EX_cpd00075_e0': 1000, # Nitrite_e0
'EX_cpd00001_e0': 1000, # H2O_e0
'EX_cpd00635_e0': 1000, # Cbl_e0
'EX_cpd00034_e0': 1000, # Zn2+_e0
'EX_cpd00149_e0': 1000, # Co2+_e0
}
# Acetate-only medium
ace_medium = {'EX_cpd00029_e0': 10, # Acetate_e0
'EX_cpd00007_e0': 1000, # O2_e0
# Remaining minimal media components
'EX_cpd00058_e0': 1000, # Cu2+_e0
'EX_cpd00971_e0': 1000, # Na+_e0
'EX_cpd00063_e0': 1000, # Ca2+_e0
'EX_cpd00048_e0': 1000, # Sulfate_e0
'EX_cpd10516_e0': 1000, # fe3_e0
'EX_cpd00254_e0': 1000, # Mg_e0
'EX_cpd00009_e0': 1000, # Phosphate_e0
'EX_cpd00205_e0': 1000, # K+_e0
'EX_cpd00013_e0': 1000, # NH3_e0
'EX_cpd00099_e0': 1000, # Cl-_e0
'EX_cpd00030_e0': 1000, # Mn2+_e0
'EX_cpd00075_e0': 1000, # Nitrite_e0
'EX_cpd00001_e0': 1000, # H2O_e0
'EX_cpd00635_e0': 1000, # Cbl_e0
'EX_cpd00034_e0': 1000, # Zn2+_e0
'EX_cpd00149_e0': 1000, # Co2+_e0
}
# Mediem with both glucose and acetate
mix_medium = {'EX_cpd00027_e0': 10, # D-Glucose_e0
'EX_cpd00029_e0': 10, # Acetate_e0
'EX_cpd00007_e0': 1000, # O2_e0
# Remaining minimal media components
'EX_cpd00058_e0': 1000, # Cu2+_e0
'EX_cpd00971_e0': 1000, # Na+_e0
'EX_cpd00063_e0': 1000, # Ca2+_e0
'EX_cpd00048_e0': 1000, # Sulfate_e0
'EX_cpd10516_e0': 1000, # fe3_e0
'EX_cpd00254_e0': 1000, # Mg_e0
'EX_cpd00009_e0': 1000, # Phosphate_e0
'EX_cpd00205_e0': 1000, # K+_e0
'EX_cpd00013_e0': 1000, # NH3_e0
'EX_cpd00099_e0': 1000, # Cl-_e0
'EX_cpd00030_e0': 1000, # Mn2+_e0
'EX_cpd00075_e0': 1000, # Nitrite_e0
'EX_cpd00001_e0': 1000, # H2O_e0
'EX_cpd00635_e0': 1000, # Cbl_e0
'EX_cpd00034_e0': 1000, # Zn2+_e0
'EX_cpd00149_e0': 1000, # Co2+_e0
}
And then I plotted the fluxes of all reactions involving glucose or acetate as bar charts:
I want to dig more into those really large negative fluxes, because at first look it looks like the cell is exporting acetate even when growing on acetate?
Daniel says to calculate the uptake rates of Glucose and Acetate from the NMR data.
Markus says that the glyoxylate shunt alone is not enough to explain co-utilization, there has to be some other thing. In H. pylori there was half of the shunt present, but it was actually doing some totally different pathway.
Zac thinks that the acetate may be going directly into the TCA cycle through acetyl-coA.
Zac also notes that the 3hb bi-cycle (?) is more highly expressed on acetate.
Represent data not as agraph, chose the reactiosn that have the highest change and put values in a table.
Cannot make progress on this until the new MS2 model can grow on the expected carbon source(s).
Reverted to an older model that grows on both and am using that.
To do:
I'm not sure how feasible it will be to ever get all 800+ reactions on the same plot with readable labels:
Might just need to abandon the bar chart idea.
So I made a plotly scatterplot where the full reaction name shows when you hover over the dot:
I made a CSV with the fluxes of the reactions in each and sorted by difference in the fluxes, here are the top few rows:
As I mentioned earlier, I am skeptical of those large negative fluxes for acetate transport.
They look like they are forming some sort of EEGC
It's hard to tell exactly what is going on with the acetate transporters, so I will make an Escher map focusing on just those reactions.
Here is what just those core export/transport reactions look like:
Then I added the ATP maintenance and synthesis reactions to the side, and every reaction involving acetate on the bottom:
These are the Escher maps for
The glucose only growth:
And the acetate only growth:
But I'm not really sure how to interpret from here what is going on.
The downstream reactions that looked different between the two at first glance were:
rxn00175_c0: 3rd on the left (teal in glucose, 0 in acetate)
rxn00225_c0: Right of 175 (greenish/teal in both, but opposite directions)
IGNORE rxn00545_c0: 3rd on the right (lavender in glucose, teal in acetate)
To me, that seems like:
But those fluxes don't add up...
I checked the E. coli model (iJO1366.json), and that had the diffusion reaction (ACtex in the big nomenclature) but no other transport reactions for acetate, so I think we are good to remove the proton symporter reaction.
Daniel also said to try and look at the pFBA solution.
For growth on glucose only, pFBA decreased the cycling from 150 flux through each reaction to 127.
For growth on acetate only, pFBA did decrease the amount of acetate cycling that was going on, but it was still very high.
I removed the acetate/proton symporter from the model and reran FBA on that new model file to regenerate all the plots. See here.
Mary Ann/Rogier said that the symporter should probably be there, but should only be able to function going "down" the proton gradient (i.e. moving protons from outside the cell, where they are high, to inside the cell, where they are low).
Right now, it looks like the reaction can only go in the reverse (i.e. c --> e).
The reaction is marked as "reversible=true", but I don't think that is affecting the bounds.
Here's the entry for the symporter reaction:
<reaction metaid="meta_R_rxn05488_c0" sboTerm="SBO:0000655" id="R_rxn05488_c0" name="acetate reversible transport via proton symport_c0" reversible="true" fast="false" fbc:lowerFluxBound="cobra_default_lb" fbc:upperFluxBound="cobra_0_bound">
<annotation>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
<rdf:Description rdf:about="#meta_R_rxn05488_c0">
<bqbiol:is>
<rdf:Bag>
<rdf:li rdf:resource="https://identifiers.org/seed.reaction/rxn05488"/>
<rdf:li rdf:resource="https://identifiers.org/bigg.reaction/BPH1"/>
<rdf:li rdf:resource="https://identifiers.org/bigg.reaction/ACt2rpp"/>
<rdf:li rdf:resource="https://identifiers.org/bigg.reaction/ACt6"/>
<rdf:li rdf:resource="https://identifiers.org/bigg.reaction/ACt2r"/>
<rdf:li rdf:resource="https://identifiers.org/bigg.reaction/ACt2pp"/>
<rdf:li rdf:resource="https://identifiers.org/bigg.reaction/ADY2"/>
<rdf:li rdf:resource="https://identifiers.org/metanetx.reaction/MNXR95429"/>
<rdf:li rdf:resource="https://identifiers.org/biocyc/META:TRANS-RXN0-571"/>
<rdf:li rdf:resource="https://identifiers.org/ec-code/2.A.1.13.-"/>
</rdf:Bag>
</bqbiol:is>
</rdf:Description>
</rdf:RDF>
</annotation>
<listOfReactants>
<speciesReference species="M_cpd00067_e0" stoichiometry="1" constant="true"/>
<speciesReference species="M_cpd00029_e0" stoichiometry="1" constant="true"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="M_cpd00029_c0" stoichiometry="1" constant="true"/>
<speciesReference species="M_cpd00067_c0" stoichiometry="1" constant="true"/>
</listOfProducts>
</reaction>
I edited that first line of the definition to only allow flux in the forward direction, so that the symporter can only be used for import:
<reaction metaid="meta_R_rxn05488_c0" sboTerm="SBO:0000655" id="R_rxn05488_c0" name="acetate reversible transport via proton symport_c0" reversible="false" fast="false" fbc:lowerFluxBound="cobra_0_bound" fbc:upperFluxBound="cobra_default_ub">
Doing that seemed to still fix the cycle problems.
Growth on glucose:
Growth on acetate:
Does look like there is co-utilization even when there is limited O2:
I made a more digestible graphic comparing E. coli and Amac's growth on single and mixed sources (here mix means the same amount of glucose and acetate as when they were alone).
There seems to be slight co-utilization in E. coli and not perfect co-utilization in Amac. Not sure what is going on/what even is expected.
I made this Escher map that includes glycolysis, the TCA cycle, the glyoxylate shunt (lines highlighting the connection to acetyl-coA, the very first reaction of the Ethylmalonyl-CoA pathway (and a pointer of where it would enter the TCA cycle), and all of the other reactions that involve acetate.
Here the lines are colored to indicate whether that reaction is present in the model (KBase model with the wrong gene calls, and some gap filling).
Here is the map with the fluxes for growth on glucose (Careful with the colors, the thin red, still indicates that that reaction is missing from the model):
Here's the map with the fluxes for growth on acetate:
Here are the two maps side by side with some notes on top:
I have a notebook that makes the maps for the glucose, acetate, and the different mixtures: https://github.com/C-CoMP-STC/mit1002-cue-simulations/blob/e5dff8cec3670b64a825e355e4de2c50fcbe3179/mit1002_full/glc_and_ace/make_escher_plots.ipynb
Annoying things:
I thought it would be cool to show one map that shows the difference between fluxes on two scenarios, I tried just literally subtracting one from the other, but I'm not sure that's the right way to do it.
Daniel liked the Escher map, but asked if we could label with the human-friendly names rather than the modelSEED IDs.
Daniel was surprised that Zac said that ALT is using both carbon sources at the same time- thought that you could only choose one or the other.
He said to run COMETS with regular FBA (not pFBA) with the mixed carbon sources and no constraints and see if it uses both.
If it can't use both, that may be a sign that using the two carbon sources at the same time is coming from different sub-populations in the lab.