Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do models use GLC and ACE at the same time #27

Open
hgscott opened this issue Sep 6, 2023 · 32 comments
Open

Do models use GLC and ACE at the same time #27

hgscott opened this issue Sep 6, 2023 · 32 comments
Assignees

Comments

@hgscott
Copy link
Collaborator

hgscott commented Sep 6, 2023

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.

@hgscott hgscott self-assigned this Sep 6, 2023
@hgscott
Copy link
Collaborator Author

hgscott commented Sep 6, 2023

Daniel mentioned a paper by Markus Basan (sp?) that looks at glucose vs acetate fermentation.

@hgscott
Copy link
Collaborator Author

hgscott commented Sep 6, 2023

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.

@hgscott
Copy link
Collaborator Author

hgscott commented Sep 20, 2023

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:

Image

Image

Image

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?

@hgscott
Copy link
Collaborator Author

hgscott commented Sep 20, 2023

Daniel says to calculate the uptake rates of Glucose and Acetate from the NMR data.

@hgscott
Copy link
Collaborator Author

hgscott commented Sep 22, 2023

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.

@hgscott
Copy link
Collaborator Author

hgscott commented Sep 22, 2023

Zac thinks that the acetate may be going directly into the TCA cycle through acetyl-coA.

@hgscott
Copy link
Collaborator Author

hgscott commented Sep 22, 2023

Zac also notes that the 3hb bi-cycle (?) is more highly expressed on acetate.

@hgscott
Copy link
Collaborator Author

hgscott commented Sep 26, 2023

Represent data not as agraph, chose the reactiosn that have the highest change and put values in a table.

@hgscott
Copy link
Collaborator Author

hgscott commented Oct 24, 2023

Cannot make progress on this until the new MS2 model can grow on the expected carbon source(s).

@hgscott
Copy link
Collaborator Author

hgscott commented May 1, 2024

Reverted to an older model that grows on both and am using that.

To do:

  • Debug PIL installation for using matplotlib
  • Visualize the results better
    • Plot all fluxes, not just things involving glucose/acetate
    • Order the bars
      • By flux in glucose
      • By largest change
    • Scatterplot of values in glucose vs in acetate
  • What reactions are most different glucose vs acetate
  • Simulate with and without limited oxygen
  • Use the same proportion of glucose & acetate as in the experiments
  • When comparing fluxes on glucose & acetate to the individuals- may need to do the sum on the individual carbon sources (like looking at epistatic effects)

@hgscott
Copy link
Collaborator Author

hgscott commented May 1, 2024

I'm not sure how feasible it will be to ever get all 800+ reactions on the same plot with readable labels:
all_fluxes_acetate_only

Might just need to abandon the bar chart idea.

@hgscott
Copy link
Collaborator Author

hgscott commented May 2, 2024

So I made a plotly scatterplot where the full reaction name shows when you hover over the dot:
image

@hgscott
Copy link
Collaborator Author

hgscott commented May 2, 2024

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:
image

@hgscott
Copy link
Collaborator Author

hgscott commented May 2, 2024

As I mentioned earlier, I am skeptical of those large negative fluxes for acetate transport.

@hgscott
Copy link
Collaborator Author

hgscott commented May 2, 2024

They look like they are forming some sort of EEGC
image

@hgscott
Copy link
Collaborator Author

hgscott commented May 2, 2024

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:
image

Then I added the ATP maintenance and synthesis reactions to the side, and every reaction involving acetate on the bottom:
image

@hgscott
Copy link
Collaborator Author

hgscott commented May 2, 2024

These are the Escher maps for

The glucose only growth:
glc_only_map

And the acetate only growth:
ace_only_map

But I'm not really sure how to interpret from here what is going on.

@hgscott
Copy link
Collaborator Author

hgscott commented May 2, 2024

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)
image

rxn00225_c0: Right of 175 (greenish/teal in both, but opposite directions)
image

IGNORE rxn00545_c0: 3rd on the right (lavender in glucose, teal in acetate)

  • I miss typed when making the map- the reaction doesn't involved acetate

@hgscott
Copy link
Collaborator Author

hgscott commented May 2, 2024

To me, that seems like:

  • Glucose is producing acetate, just to cycle it and build the proton gradient
    • Acetate is produced by
      • rxn13143_c0 (-0.707)
      • rxn00225_c0 (-11.1)
      • rxn00265_c0 (-2.93)
      • rxn03146_c0 (0.0603)
    • Acetate is then consumed by
      • rxn00175_c0 (7.36)
      • rxn01484_c0 (-0.124)

But those fluxes don't add up...

@hgscott
Copy link
Collaborator Author

hgscott commented May 2, 2024

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.

@hgscott
Copy link
Collaborator Author

hgscott commented May 2, 2024

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.
glc_only_pfba_map

For growth on acetate only, pFBA did decrease the amount of acetate cycling that was going on, but it was still very high.
ace_only_pfba_map

@hgscott
Copy link
Collaborator Author

hgscott commented May 7, 2024

I removed the acetate/proton symporter from the model and reran FBA on that new model file to regenerate all the plots. See here.

@hgscott
Copy link
Collaborator Author

hgscott commented May 8, 2024

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).

@hgscott
Copy link
Collaborator Author

hgscott commented May 8, 2024

Right now, it looks like the reaction can only go in the reverse (i.e. c --> e).
image

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>

@hgscott
Copy link
Collaborator Author

hgscott commented May 8, 2024

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">

@hgscott
Copy link
Collaborator Author

hgscott commented May 8, 2024

Doing that seemed to still fix the cycle problems.

Growth on glucose:
image

Growth on acetate:
image

@hgscott
Copy link
Collaborator Author

hgscott commented May 9, 2024

Does look like there is co-utilization even when there is limited O2:
image

@hgscott
Copy link
Collaborator Author

hgscott commented May 13, 2024

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).

Image

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.

@hgscott
Copy link
Collaborator Author

hgscott commented Jun 5, 2024

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).
Image

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):
Image

Here's the map with the fluxes for growth on acetate:
Image

Here are the two maps side by side with some notes on top:
Image

@hgscott
Copy link
Collaborator Author

hgscott commented Jun 6, 2024

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:

  • Can't save to png via a command, only via clicking
  • In the widget, and when saved to HTML open, hovering over the reaction/metabolite doesn't bring up any other information

@hgscott
Copy link
Collaborator Author

hgscott commented Jun 6, 2024

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.

Image

@hgscott
Copy link
Collaborator Author

hgscott commented Jun 12, 2024

Daniel liked the Escher map, but asked if we could label with the human-friendly names rather than the modelSEED IDs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant