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

Transport of Thiamine Di- and Monophosphate Between Cytosol and Mitochondria #783

Closed
4 tasks done
Devlin-Moyer opened this issue Dec 23, 2023 · 3 comments · Fixed by #815
Closed
4 tasks done

Transport of Thiamine Di- and Monophosphate Between Cytosol and Mitochondria #783

Devlin-Moyer opened this issue Dec 23, 2023 · 3 comments · Fixed by #815
Labels

Comments

@Devlin-Moyer
Copy link
Collaborator

Devlin-Moyer commented Dec 23, 2023

Current behavior:

I realized that the changes I proposed in #695 would leave SLC25A19 (ENSG00000125454) associated with no reactions, but, as I mentioned in #695, it is known to mediate antiport of thiamine diphosphate (MAM02984m) and thiamine monophosphate (MAM02983m) across the inner mitochondrial membrane. These are all of the existing [c] to [m] transport reactions for thiamine diphosphate and thiamine monophosphate:

ID Reaction
MAR01789 2 H2O [m] + thiamin-PP [c] --> 2 H2O [c] + thiamin-PP [m]
MAR04205 H+ [i] + thiamin-PP [c] --> H+ [m] + thiamin-PP [m]
MAR08747 2 hydroxide [m] + thiamin-PP [c] --> 2 hydroxide [c] + thiamin-PP [m]
MAR01788 H2O [m] + thiamin-P [c] <=> H2O [c] + thiamin-P [m]
MAR08745 hydroxide [c] + thiamin-P [m] <=> hydroxide [m] + thiamin-P [c]

Most of the above reactions have no associated references, and those that do are associated with one or both of these papers.

Expected feature/value/output:

The first paper found that isolated rat liver mitochondria probably transport thiamine diphosphate and thiamine monophosphate across their membranes by exchanging one for the other, but do not mention cotransport with water, hydroxide, or protons, and do not associate this transport with any particular protein or gene.

The second paper found that mitochondria isolated from human cells with mutations in SLC19A2 cannot uptake (unphosphorylated) thiamine, but can still uptake thiamine diphosphate. They did not measure transport of thiamine monophosphate, and do not mention antiport of either metabolite with water, hydroxide, or protons.

SLC25A19 currently seems to be the only human protein known to transport either thiamine di- or monophosphate into or out of mitochondria, and Uniprot cites this paper (specifically figure 6), which concluded that SLC25A19 mediates antiport of thiamine diphosphate with and thiamine monophosphate with each other and with dATP, not cotransport with water, hydroxide, or protons. I think all of the above reactions should be replaced with three reactions: one representing antiport of thiamine diphosphate with thiamine monophosphate, one representing antiport of thiamine diphosphate with dATP, and one representing antiport of thiamine monophosphate with dATP, all associated with SLC25A19.

Proposed changes:

  • Create a new reaction: MAM02983c + MAM02984m <-> MAM02983m + MAM02984c, GPR: ENSG00000125454, references: PMID:17035501
  • Create a new reaction: MAM01642c + MAM02983m <-> MAM01642m + MAM02983c, GPR: ENSG00000125454, references: PMID:17035501
  • Create a new reaction: MAM01642c + MAM02984m <-> MAM01642m + MAM02984c, GPR: ENSG00000125454, references: PMID:17035501
  • Remove MAR01788, MAR01789, MAR04205, MAR08745, and MAR08747 for lacking evidence to support their existence and being functionally redundant with the three new reactions above
@JHL-452b
Copy link
Collaborator

Nice Result! I have checked all the information mentioned here and agree with your proposal.

But I have one doubt. In the current model, there is H2O-mediated reverse transport of thiamine diphosphate (MAM02984m) and thiamine monophosphate (MAM02983m) across the mitochondrial intima, which is basically equivalent to these two mets can freely enter and exit the mitochondria. However, in your proposal, thiamine diphosphate (MAM02984m) and thiamine monophosphate (MAM02983m) cannot freely across the inner mitochondrial membrane. Whether this will cause some simulations to change is unclear.

@Devlin-Moyer
Copy link
Collaborator Author

Devlin-Moyer commented Apr 4, 2024

I did FVA on version 1.18 of Human-GEM, made the proposed changes to the [c] <-> [m] thiamine transport reactions, did FVA again, and found that there were only 2 reactions whose ranges of possible fluxes changed:

Reaction ID Reaction Equation Min Flux w/o Changes Max Flux w/o Changes Min Flux w/Changes Max Flux w/Changes
MAR13027 chloride [m] + hydroxide [c] ⇔ chloride [c] + hydroxide [m] -1000.0 1000.0 0.0 0.0
MAR13077 chloride [c] ⇔ chloride [m] -1000.0 1000.0 0.0 0.0

The only reactions that hydroxide [m] (MAM02147m) participates in are MAR08745, MAR08747, and MAR13027, so removing both MAR08745 and MAR08747 turns MAR13027 into a dead-end. MAR13027 and MAR13077 are the only two reactions that chloride [m] (MAM01442m) participates in, so blocking one blocks the other. I find it likely that there are other ways that chloride can move across the mitochondrial membranes, but since it's already incapable of doing anything in [m], I don't think it's a problem to make these changes to the thiamin (di)phosphate transport reactions and address the fact that these changes make MAR13027 and MAR13077 into dead-ends in a future issue.

No net flux of thiamin-PP between [c] and [m] is possible before making the proposed changes, but net fluxes of up to 2,000 in either direction are possible after making the proposed changes. No net flux of thiamin-P between [c] and [m] is possible with or without the proposed changes; I'm not sure why. It would be ideal if we figured out what's preventing fluxes of thiamin-P into or out of [m], but since that is already a problem, I feel like it's not unreasonable to make the proposed changes to the transport reactions and figure out what else is wrong with Human-GEM's representation of thiamine metabolism later.

Python code I used to generate the results described above
import sys
from optlang.glpk_interface import Configuration
import cobra

try:
    threads = int(sys.argv[1])
except:
    sys.exit('provide number of threads to use')

Configuration()
old_model = cobra.io.load_json_model('generic_models/Human-GEMv1.18.json')
# do FVA on version 1.18 of Human-GEM
old_fva = cobra.flux_analysis.flux_variability_analysis(
    old_model, processes = threads
).applymap(lambda x: round(x, 3))

# remove existing thiamine-PP and thiamine-P [c] <-> [m] transport reactions
new_model = old_model.copy()
new_model.remove_reactions([
    'MAR01788', 'MAR01789', 'MAR04205', 'MAR08745', 'MAR08747'
])

# create the three proposed new reactions
thpp_c = new_model.metabolites.get_by_id('MAM02984c')
thp_c = new_model.metabolites.get_by_id('MAM02983c')
datp_c = new_model.metabolites.get_by_id('MAM01642c')
thpp_m = new_model.metabolites.get_by_id('MAM02984m')
thp_m = new_model.metabolites.get_by_id('MAM02983m')
datp_m = new_model.metabolites.get_by_id('MAM01642m')
rxn_1 = cobra.Reaction('thp_thpp', lower_bound = -1000, upper_bound = 1000)
rxn_1.add_metabolites({thp_c : -1, thpp_m : -1, thp_m : 1, thpp_c : 1})
rxn_2 = cobra.Reaction('datp_thp', lower_bound = -1000, upper_bound = 1000)
rxn_2.add_metabolites({datp_c : -1, thp_m : -1, datp_m : 1, thp_c : 1})
rxn_3 = cobra.Reaction('datp_thpp', lower_bound = -1000, upper_bound = 1000)
rxn_3.add_metabolites({datp_c : -1, thpp_m : -1, datp_m : 1, thpp_c : 1})
new_model.add_reactions([rxn_1, rxn_2, rxn_3])

import sys
from optlang.glpk_interface import Configuration
import cobra

try:
    threads = int(sys.argv[1])
except:
    sys.exit('provide number of threads to use')

Configuration()
old_model = cobra.io.load_json_model('generic_models/Human-GEMv1.18.json')
# do FVA on version 1.18 of Human-GEM
old_fva = cobra.flux_analysis.flux_variability_analysis(
    old_model, processes = threads
).applymap(lambda x: round(x, 3))

# remove existing thiamine-PP and thiamine-P [c] <-> [m] transport reactions
new_model = old_model.copy()
new_model.remove_reactions(['MAR01788', 'MAR01789', 'MAR08745', 'MAR08747'])

# create the three proposed new reactions
thpp_c = new_model.metabolites.get_by_id('MAM02984c')
thp_c = new_model.metabolites.get_by_id('MAM02983c')
datp_c = new_model.metabolites.get_by_id('MAM01642c')
thpp_m = new_model.metabolites.get_by_id('MAM02984m')
thp_m = new_model.metabolites.get_by_id('MAM02983m')
datp_m = new_model.metabolites.get_by_id('MAM01642m')
rxn_1 = cobra.Reaction('thp_thpp', lower_bound = -1000, upper_bound = 1000)
rxn_1.add_metabolites({thp_c : -1, thpp_m : -1, thp_m : 1, thpp_c : 1})
rxn_2 = cobra.Reaction('datp_thp', lower_bound = -1000, upper_bound = 1000)
rxn_2.add_metabolites({datp_c : -1, thp_m : -1, datp_m : 1, thp_c : 1})
rxn_3 = cobra.Reaction('datp_thpp', lower_bound = -1000, upper_bound = 1000)
rxn_3.add_metabolites({datp_c : -1, thpp_m : -1, datp_m : 1, thpp_c : 1})
new_model.add_reactions([rxn_1, rxn_2, rxn_3])
new_thp_max = (
    new_fva.at['thp_thpp', 'maximum'] - new_fva.at['datp_thp', 'maximum']
)
msg = 'Range of possible net fluxes of thiamine monophosphate from [c] to [m] '
msg += f'went from ({old_thp_min} to {old_thp_max}) to ({new_thp_min} to '
msg += f'{new_thp_max}) after making changes to transport reactions.'
print(msg)

# identify reactions whose ranges of possible fluxes changed
old_fva = old_fva.rename(columns = {'minimum' : 'old_min', 'maximum' : 'old_max'})
new_fva = new_fva.rename(columns = {'minimum' : 'new_min', 'maximum' : 'new_max'})
both_fva = old_fva.merge(new_fva, left_index = True, right_index = True)
changed = both_fva[
    (both_fva['old_min'] != both_fva['new_min']) |
    (both_fva['old_max'] != both_fva['new_max'])
]
print(f'{len(changed)} reactions\' ranges of possible fluxes changed:')
print(changed)

@Devlin-Moyer
Copy link
Collaborator Author

Fixed by #815

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

Successfully merging a pull request may close this issue.

2 participants