metosite

January 2023 Release

We are delighted to announce a new installment of MetOSite. The January 2023 release collects some very interesting contributions made during the past year 2022. Thus, He and coworkers presented strong evidence that the redox state of M239 controls the oligomerization state of pyruvate kinase M2 and the enzymatic activity of the protein. These authors also proved that the oxidation of M239 has direct implications on the metastatic capacity of pancreatic adenocarcinoma cells (Molecular Cell 82:3045-3060).

Another important contribution to the field of methionyl residues modification that appeared in 2022 came from the laboratory of Sina Ghaemmaghami at the University of Rochester. These authors identified, by mass spectrometry, over 280 novel sites for in vivo methionine oxidation in the brain of mice. They present very convincing evidence that under normal conditions, methionine sulfoxidation may be a biologically regulated process rather than a result of stochastic chemical damage (J. Proteome Res. 21:1495-1509).

Finally, work published in 2019 and describing the impact of methionine oxidation on the biological properties of diverse helicases (Sci. Adv. 5(8):eaax1031) has been reviewed and relevant data have now been incorporated to the current release of the MetOSite database.

metosite

January 2021 MetOSite Release

We are pleased to announce that a new release of MetOSite is now available. Among the new MetO sites incorporated to the database, we would like to highlight methionine 308 from the Ca2+/calmodulin-dependent protein kinase II (CaMKII). CaMKII is a serine/threonine kinase that plays very relevant roles in the cardiomuscular physiology, and which has been related to a number of human diseases.

During the past 2020, the laboratory of Mark E. Anderson at the Johns Hopkins University, in collaboration with other laboratories (Rodney L. Levine at the NIH in Bethesda, Alex L. Holodkin at the Johns Hopkins University and Vadim N. Gladyshev at the Harvard Medical School) published in the Journal of Clinical Investigation (130:4663-4678) a paper that constitutes a real breakthrough in the area of redox signaling. In this paper, summarized in a short video by Mark Anderson, the authors show that:

• MICAL 1, a methionine monooxygenase thought to exclusively target actin, can stereospecifically oxidize CaMKII Met308 to methionine sulfoxide (Met308-O-R). Met308 is a highly conserved residue in the CaM-binding domain of CaMKII.
• This oxidation decreased CaM binding and CaMKII activity, while the absence of MICAL 1 in mice caused cardiac arrhythmias and premature death due to CaMKII hyperactivation.
• MSRB, a methionine reductase, can reduce Met308-O-R back to methionine.

Therefore, the coordinate action of MICAL 1 and MSRB seems to control the stereospecific redox status of Met308, which is revealed as a key regulator of fight-or-flight response.

Sin categoría

How to access the API of MetOSite using Python

Python is one of the most widely used programming languages by data scientiest. Therefore, Python is a fine choice to analyse the data supplied by MetOSite. In this tutorial we will show how to pull data into the Python environment from our database (DB) using its API.

The MetOSite‘s API offers a number of end-point functions. However, the procedure to invoke them and parse the data they will return is similar in all of them:

  • Make a “GET” request to pull raw data into our Python environment.
  • Parse raw data through JavaScript Object Notification (JSON) into a usable format.

Getting a summary of MetOSite data

To illustrate this two-steps procedure with a straightforward example, let us suppose we want to obtain a dataframe containing a summary (statistics) of the data found into MetOSite: what species are represented and with how many proteins and with how many MetO sites contributes each of these species.

For this task we will use the Request library:

import requests

Afterwards, we are ready to make our first “GET” request:

if  __name__ == '__main__':

    call = 'https://metosite.uma.es/api/summaries/species' # The API url
    response = requests.get(call)

    if response.status_code == 200:   
        json_species = response.json() # This is a list of dictionary
    else:
        print(response)

The object we have called json_species is a list of dictionaries, where each dictionary has three keys (species, proteins and sites) and three values (the species’ name, the number of proteins and the number of sites). This list can be easily converted to a dataframe using the Pandas library:

import pandas as pd
df_species = pd.DataFrame(json_species)

So, this df_species we have created is just the dataframe that we were looking for from the beginning.

df_species.set_index('species').head()
proteinssites
species
Arabidopsis thaliana386530
Aspergillus nidulans11
Bacillus cereus219500
Bacillus licheniformis11
Bos taurus210

Alternatively, we can get a summary putting the focus on the oxidants instead of the species. In this case the end-point function from the API that we have to call is not species but oxidant:

if  __name__ == '__main__':

    call = 'https://metosite.uma.es/api/summaries/oxidant' # The API url
    response = requests.get(call)

    if response.status_code == 200:   
        json_oxidants = response.json() # This is a list of dictionary
    else:
        print(response)

df_oxidants = pd.DataFrame(json_oxidants)
df_oxidants.set_index('oxidant').head(6)
sites
oxidant
Lipid hydroperoxides (LOOH)1
NOR31
chloramine-T7
peroxinitrite (ONOO)1
high light irradiation528
hydrogen peroxide (H2O2)2572

Getting all the sites involved in PPI effects

Now that we have gained confidence in our abilities to access MetOSite through its API, we can face a task a bit more elaborated.

Basically, what we want to do is to filter the DB to keep only those entries related to changes in a biological property such as the ability to stabilize/destabilize protein-protein interactions. In order to understand how the API filters the DB using the end-point search, we have to introduce previously some basic ideas related to the Groups and Functional Categories.

Each MetO site is assigned to one of three possible Groups. Group 1 is composed of all those MetO sites coming from high-throughput studies, reason for which nothing is known about the effect of their sulfoxidation on the protein’s properties, just because it has not been addressed. On the contrary, the effect of the oxidation of residues belonging to Group 2 has been assessed, but no effect could be found. Finally, Group 3 encompasses all the methionine sites whose sulfoxidation has been reported to have an effect on at least one of the six following biological properties:

  • Gain of activity
  • Loss of activity
  • Gain of protein-protein interaction
  • Loss of protein-protein interaction
  • Effect on protein stability
  • Effect on subcellular localization

Each of these six properties can be considered as a binary variable. Thus, a value of 1 for any of them means that experimental evidence supporting such an effect has been published. On the contrary, a value of 0 only means that we have not found experimental evidence to support such an effect. In this way, attending to these variables, we have Functional Categories (FCs). In other words, the FC of a given MetO site can be encoded by a vector of dimension 6. It should be noted that a site with a vector (0,0,0,0,0,0), meaning that no effect has been described for the oxidation of that site, can belong to Group 1 or Group 2. That is, actually we will deal with FCs.

Making use of the mapping end-point function

Thus, to know what FCs correspond with sites involved in changes of protein-protein interaction (PPI), we will make use of an ancillary end-point function called mapping. This function takes two arguments. The first one is related to the Group. For instance, the string 001 is interpreted as we are only interested in Group 3. If instead of 001 we pass 101 as the first argument, then mapping will interprets that we want to filter out Group 2 and kepp the groups 1 and 3. The second argument that should be passed to mapping is a 6-dimensional vector that provides information about the effect on the six biological properties listed above. For instance, with the point (0,0,1,1,0,0) we would retrieve those sites for which a gain and loss of PPI has been reported (probably with different partners), but no other effect on the remaining properties has been described. On the other hand, if we have a site causing a gain of PPI and a loss of PPI but also a gain of activity, then the rigth argument would be (1,0,1,1,0,0). Please, note that the first and second coordinates point to the gain and loss of activity, respectively, and so on (keeping the order of the list given above).

What if we are interested in those sites that when oxidized lead to a gain and a loss of PPI but we do not care about the four remaining properties (that may or may not be affected). In this case, the right argument would be (2,2,1,1,2,2). As the insightful reader would have intuited, the integer 2 means: it does not matter whether the property has been described to be affected or not. For instance, (2,0,1,1,0,0) = (0,0,1,1,0,0) (1,0,1,1,0,0).

In the case we are developing herein, we are interested in those MetO sites involved in gain and/or loss of PPI without any other consideration. So, these sites are encoded as follows (2,2,1,2,2,2) (2,2,2,1,2,2). At this point, we are in conditions to use knowingly the mapping end-point

groups = '001' # only Group 3 is goint to be relevant for us

## ------------------------- Sites gaining PPI ----------------------------- ##

categories = '221222' # Note we use neither parenthesis nor commas.
call = 'https://metosite.uma.es/api/sites/mapping/'+groups+'/'+categories

if  __name__ == '__main__':

    response = requests.get(call)

    if response.status_code == 200:   
        gPPI = response.json() # list containing the requested FCs
    else:
        print(response)

## -------------------------- Sites losing PPI ----------------------------- ##

categories = '222122' # Note we use neither parenthesis nor commas.
call = 'https://metosite.uma.es/api/sites/mapping/'+groups+'/'+categories

if  __name__ == '__main__':

    response = requests.get(call)

    if response.status_code == 200:   
        lPPI = response.json() # list containing the requested FCs
    else:
        print(response)

## ------------------------- Joining btoh sets ----------------------------- ##
fcPPI = (gPPI + lPPI)
fcPPI.sort()
fcPPI = set(fcPPI)
print(fcPPI)
print('\t')
print('There are ' + str(len(fcPPI)) + ' funtional categories we are interested in')

{5, 6, 9, 10, 11, 12, 17, 18, 19, 20, 21, 24, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65}

There are 48 functional categories we are interested in.

Now that we know there are 48 different functional categories that meet the requiriments (be involved in PPI), we can move to find the MetO sites present into MetOSite that belong to any of these FCs.

Making use of the search end-point function

This function takes three arguments: (i) the first one is related to the FCs we wish to retrieve,
(ii) the second one allows us to filter using a taxon criterium, that is, the organism(s) we are interested in, and (iii) the third criterium is related to the oxidant(s) we want to consider.

Because the FCs we are going to pass to the search function need to be separated from each other by the symbol &, we are going to write a function that will make the formatting work for us:

def format_FC(fc):
    formatted_fc = ''
    for c in fc:
        formatted_fc = formatted_fc + str(c) + '&'   
    formatted_fc = formatted_fc[:-1]
    return(formatted_fc)

So, let’s use that function to format the set of 48 FCs we got previously, and then make use of the search end-point function:

ffc = format_FC(fcPPI) # formatted FCs related to PPI
organism = '-1' # meaning we don't care about the organism
oxidant = '-1' # meaning we don't care about the oxidant

call = 'https://metosite.uma.es/api/sites/search/'+ffc+'/'+organism+'/'+oxidant

if __name__ == '__main__':

    response = requests.get(call)

    if response.status_code == 200:
        json_results = response.json()
    else:
        print(response)


ppi_results = pd.DataFrame(json_results)
ppi_results.set_index('prot_name').head(5)
met_posmet_vivo_vitroorg_oxidantorg_spprot_idreg_id
prot_name
Amyloid beta-peptide(1-42)35vitrohydrogen peroxide (H2O2)Homo sapiensP0506710
Apolipoprotein D93vitrolipid hydroperoxides (LOOH)Homo sapiensP0509012
Cofilin-1115vitrotaurine chloramine (TnCl)Homo sapiensP2352818
alpha-Actin46bothmical-catalyzedOryctolagus cuniculusP6813518
Actin-5C44bothmical-catalyzedDrosophila melanogasterP1098718

Thus, the object we have named ppi_results is the dataframe we wanted.

Final remarks

This tutorial does not pretend to be exhaustive, on the contrary, it aims to be a primer from which the user can continue on his/her own, exploring how to communicate with the API of MetOSite. We encourage the user to explore the other end-points that will find here.

Further readings

For further details you may want to check this tutorial.


metosite

How to access the API of MetOSite using R

How to access the API of MetOSite using the R language

R is an excellent language for statistics and data analyses. Therefore, R is a fine choice to analyse the data supplied by MetOSite. In this tutorial we will show how to pull data into R from our database (DB) using its API.

The MetOSite‘s API offers a number of end-point functions. However, the procedure to invoke them and parse the data they will return is similar in all of them:

  • Make a “GET” request to pull raw data into our R environment.
  • Parse raw data through JavaScript Object Notification (JSON) into a usable format (most of the time a dataframe)

Getting a summary of MetOSite data

To illustrate this two-steps procedure with a straightforward example, let us suppose we want to obtain a dataframe containing a summary (statistics) of the data found into MetOSite: what species are represented and with how many proteins and with how many MetO sites contributes each of these species.

But before we begin our task, we will need to download and install two R packages: httr and jsonlite, which will assist us in our purposes.

# install.packages("httr") 
# install.packages("jsonlite")
require(httr)
require(jsonlite)

Afterwards, we are ready to make our first “GET” request.

call <- 'https://metosite.uma.es/api/summaries/species' # This is the API URL
response <- httr::GET(call)

The response to the API call, which has been placed in the object we have named as response, is actually a list containing many different items with most of it being administrative information from the API in which we are not interested. To get the data we really want, we are going to use another httr function that will perform the process named ‘deserialization’, which will offer us the data we are searching for in a json format.

if (response$status_code == 200){
  json_species <- httr::content(response, 'text')
} else {
  print(response$status_code)
}

This converts the raw data from our API call into JSON format. However, if we want to analyse these data using R, it would be convenient to parse the JSON using the jsonlite package we have previouly installed.

df_species <- jsonlite::fromJSON(json_species, flatten = TRUE)
## Error in jsonlite::fromJSON(json_species, flatten = TRUE): objeto 'json_species' no encontrado
head(df_species)
## Error in head(df_species): objeto 'df_species' no encontrado

So, df_species is the dataframe that were looking for from the beginning.

Alternatively, we can get a sammary putting the focus on the oxidants instead of the species. In this case the end-point function from the API that we have to call is not species but oxidant:

call <- 'https://metosite.uma.es/api/summaries/oxidant' # This is the API URL
response <- httr::GET(call)

if (response$status_code == 200){
  json_oxidants <- httr::content(response, 'text')
  df_oxidants <- jsonlite::fromJSON(json_oxidants, flatten = TRUE)
} else {
  print(response$status_code)
}
head(df_oxidants)

Getting all the sites involved in PPI effects

Now that we have gained confidence in our abilities to access MetOSite through its API, we can face a task a bit more elaborated.

Basically what we want to do is to filter the DB to keep only those entries related to changes in a biological property such as the ability to stabilize or destabilize protein-protein interactions. In order to understand how the API filters the DB using the end-point search, we have to introduce previously some basic ideas related to Groups and Functional Categories.

Each MetO site is assigned to one of three possible Groups. Group 1 is composed of all those MetO sites coming from high-throughput studies for which nothing is known about the effect of their sulfoxidation just because it has not been addressed. On the contrary, the effect of the oxidation of residues belonging to Group 2 has been assesed, but no effect could be found. Finally, Group 3 encompasses all the methionine sites whose sulfoxidation has been reported to have an effect on at least one of the following six biological properties:

  • Gain of activity
  • Loss of activity
  • Gain of protein-protein interaction
  • Loss of protein-protein interaction
  • Effect on protein stability
  • Effect on subcellular localization

Each of these six properties can be considered as a binary variable. Thus, a value of 1 for any of these variable means that experimental evidence supporting such an effect has been published. On the contrary, a value of 0 only means that we have not found experimental evidence to support such an effect. In this way, attending to these variables, we have Functional Categories (FCs). In other words, the FC of a given MetO site can be enconded by a vector of dimension 6. It should be noted that a site with a vector (0,0,0,0,0,0), meaning that no effect has been described for the oxidation of that site, can belong to Group 1 or to Group 2. That is, actually we will deal with FCs.

Making use of the mapping end-point function

Thus, to know what Functional Categories correspond with sites involving any effect (either gain or loss) on protein-protein interaction, we will make use of an ancillary end-point function called mapping. This function takes two arguments. The first one is related to the functional groups. For instance, the string 001 is interpreted as we are only interested in the Group 3. If instead of 001 we pass 101 as the first argument, then mapping will interprets that we want to filter out group 2, and focus on groups 1 and 3. The second argument that should be passed to mapping is a 6-dimensional vector providing information about the effect on the six biological properties. For instance, with the point (0,0,1,1,0,0) we would retrieve those sites for which a gain and a loss of PPI has been reported (probability with different partners), but no other effect on the remaining properties has been described. On the other hand, if we have a site causing a gain of PPI and a loss of PPI but also a gain of activity, then the right argument would be (1,0,1,1,0,0). Please, note that the first and second coordinates point to the gain and loss of activity, respectiviely, and so on (keeping the order of the list given above).

What if we are in those sites with a gain and a loss of PPI but we do not care about the 4 remaining properties (that may be affected or not). In this case, the right argument would be (2,2,1,1,2,2). As the insightful reader would have intuited the integer 2 means: it does not matter whether the property has been described to be affected or not. For instance, (2,0,1,1,0,0) = (0,0,1,1,0,0) (1,0,1,1,0,0).

In the example we are developing herein, we are interested in those MetO sites involved in gain and/or loss of PPI withouth any other consideration. So, these sites are encoded as follows: (2,2,1,2,2,2) (2,2,2,1,2,2). At this point, we are in condition to use knowingly the mapping end-point.

groups <- '001'

## ---------------------- Sites gaining PPI ------------------------  ##

categories <- '221222' # Note we use neither parenthesis nor commas.
call <- paste('https://metosite.uma.es/api/sites/mapping/',  
              groups, '/', categories, sep = "")
gPPI <- httr::GET(call)
gPPI <- httr::content(gPPI, 'text')
gPPI <- jsonlite::fromJSON(gPPI, flatten = TRUE)

## ---------------------- Sites losing PPI ------------------------  ##

categories <- '222122' # Note we use neither parenthesis nor commas.
call <- paste('https://metosite.uma.es/api/sites/mapping/', 
              groups, '/', categories, sep = "")
lPPI <- httr::GET(call)
lPPI <- httr::content(lPPI, 'text')
lPPI <- jsonlite::fromJSON(lPPI, flatten = TRUE)

## ------------------ Joining both sets --------------------------- ##
fcPPI <- union(gPPI, lPPI)
fcPPI <- fcPPI[order(fcPPI)]
print(fcPPI)

Now, that we know that there are 48 different functional categories that meet the requeriments, we can move to find all the MetO sites present into MetOSite belonging to these categories.

Making use of the search end-point function

This function takes three arguments: (i) the first is related to the functional categories we want to retrieve, (ii) the second one allows to filter using a taxon criterium the organism(s) we are interested in, and
(iii) the third criterium is related to the oxidant(s) we want to consider.

Because the FCs we are going to pass to the search function need to be separated from each other by the symbol &, we are going to write a function that will make the formatting work for us:

format_FC <- function(fc){
  formatted.fc <- c()
  count <- 0
  for (i in fc){
    count <- count + 1
    if (count < length(fc)){ 
        formatted.fc <- paste(formatted.fc, i, '&', sep = "")
    } else {
        formatted.fc <- paste(formatted.fc, i, sep = "")
    }
  }
  return(formatted.fc)
}

So, let’s use that function to format the set of 48 FCs we got previously, and then make use of the search end-point function:

ffc <- format_FC(fcPPI) # formatted FCs related to PPI
## Error in format_FC(fcPPI): no se pudo encontrar la función "format_FC"
organism <- '-1' # meaning we don't care about the organism
oxidant <- '-1'  # meaning we don't care about the oxidant

call <- paste('https://metosite.uma.es/api/sites/search/',
              ffc, '/', organism, '/', oxidant, sep = "")
## Error in paste("https://metosite.uma.es/api/sites/search/", ffc, "/", : objeto 'ffc' no encontrado
response <-  httr::GET(call)
## Error in as.character(url): cannot coerce type 'special' to vector of type 'character'
json.entries <- httr::content(response, 'text')
## Error in is.response(x): objeto 'response' no encontrado
ppi.results <- jsonlite::fromJSON(json.entries, flatten = TRUE)
## Error in jsonlite::fromJSON(json.entries, flatten = TRUE): objeto 'json.entries' no encontrado
# That's the data frame we wanted.
head(ppi.results)[1:5,c(1:3,5)]
## Error in head(ppi.results): objeto 'ppi.results' no encontrado

Final remarks

This tutorial does not pretend to be exhaustive, on the contrary it aims to be a primer from which the user can continue on his own to communicate with the API of MetOSite by means of the R language. We encourage the user to explore the other end-points that will find at (https://metosite.uma.es/api-docs)

Further readings

For further details we recomend the reading of the following article that we have found very helpful:

https://www.programmableweb.com/news/how-to-access-any-restful-api-using-r-language/how-to/2017/07/21

Copyright © 2018 The MetOSite team

metosite

Methionine in Proteins

Methionine is a sulfur-containing amino acid that is present in peptides and proteins. Over the last 20 years, research from several laboratories supports the concept that methionine serves as an important cellular antioxidant, stabilizes the structure of proteins, participates in the sequence-independent recognition of protein surfaces, and can act as a regulatory switch through reversible oxidation and reduction. Herein we do not intend to comprehensively review all these evidences. On the contrary, when writing this brief document, we have kept in mind a curious reader with a field of expertise different than the one being the focus of this review. Thus, the current document aims to be a primer for those readers wiling to broaden their perspectives.

Methionine: hydrophobic but also unbranched and polarizable

Methionine in proteins is often thought to be a generic hydrophobic residue. In fact, this is the way most Biochemistry textbooks describe this amino acid. Not surprisingly, many biologists regard this amino acid as one functionally replaceable with another hydrophobic residue such as leucine, isoleucine or valine. However, unlike other hydrophobic residues the side chain of methionine is unbranched providing ample flexibility.

Molecular structure of the amino acids with aliphatic side chain

This extra-flexibility is not an idle property. When several methionines are arranged on one side of an amphiphilic -helix, these flexible residues provide a malleable nonpolar surface that can adapt itself to peptide binding partners of varying sequence. This seems to be the case of calmodulin (P0DP23) and the signal recognition particle 54 kDa subunit (P61011). These proteins share two relevant features: (i) they contain structural domains that are unusually rich in methionine residues, and (ii) they are able to interact, in a specific way, with many protein partners that are diverse in sequence among them.

Being important as it is, the lack of branching is not the only property that contributes to the uniqueness of this amino acid. One obvious consequence is derived from the fact that the polarizability of sulfur in its lower oxidation states is substantially larger than the polarizabilities of typical hydrocarbon moieties. As a consequence, during protein-protein interactions one can expect that London dispersion forces make greater contributions when sulfur is in place of carbon [1].

Methionine residues are subjected to reversible oxidation and reduction

The sulfur atom from methionine can be readily oxidized to form the corresponding sulfoxide, converting, in this way, an apolar side chain into a highly polar one.

Comparison of the side chain of Met (apolar) and MetO (polar)

Methionine sulfoxide can then be reduced back to methionine. In this way, the interconversion of Met and MetO, in vivo, constitutes a process involving two different reactions, each one with its own forward and backward unidirectional rates. These redox reactions can be enzyme-catalyzed. Thus, Met forms MetO by adding oxygen to its sulfur atom in a reaction that can be catalyzed at least for two different enzymes: methionine sulfoxide reductase A (MsrA, a bifunctional enzyme) that, when operating in the oxidizing direction, yield the S epimer of methionine sulfoxide (Met-S-O) [2]; and Mical, an enzyme that also exhibits stereospcificity, but, in this case, catalyzing the formation of the R epimer (Met-R-O) [3]. The reduction back to methionine of these MetO epimers is mediated by MsrA and MsrB, respectively.

Reversible enzyme-catalyzed interconversion of Met and MetO

This reversible post-translational covalent modification of methionyl residues can have far-reaching biological implications as we will outline next.

Methionine residues in proteins can act as endogenous antioxidants

The oxidation of certain methionine residues of a protein may have no effect on the activity of the same. A historical and paradigmatic example of that is provided by α2macroglobulin (A2M), a high molecular weight (~725 kDa) plasma proteinase inhibitor that targets a wide variety of proteinases. Each subunit of A2M consumes 8 molecules of chloramine (an oxidant) without any loss of anti-proteinase function. During a second phase of oxidative modification, the A2M is inactivated with loss of activity proceeding in a manner directly proportional to the consumption of chlorinated oxidants. At this point, each subunit consumed 16 mol of chloramine, but only 14 Met residues were oxidized [4].

Further studies demonstrated that a single tryptophan residue in each subunit was being oxidized by the remaining chloramine and that the decrease in total tryptophan residues (from 11 to 10) was directly proportional to loss of anti-proteinase activity in tandem with the dissociation of the tetrameric A2M into dimers [4].

The ability of A2M to tolerate oxidation of 8 methionyl residues without loss of activity led to the hypothesis in which these residues functioned as antioxidants that protected the critical tryptophan residue from oxidation. The subsequent observation that the sulfoxidation of certain methionine positions in other proteins had no apparent effect on the activity of these proteins, led to Levine and co-workers to the more general hypothesis that methionine residues on the protein surfaces may act as reactive species of oxygen (ROS) sinks, and therefore function as antioxidants [5].

Reversible methionine oxidation as a sink of ROS

Although ROS are generated in diverse cellular compartments, the vast majority of ROS production can be traced back to the mitochondrion. Not surprisingly, this organelle display a variety of ROS scavenging systems [6]. In this line, the reassignment of the AUA codon from isoleucine to methionine, observed in the genetic code of mammalian mitochondria, has been interpreted as an adaptive process leading to antioxidant methionine accumulation in respiratory chain complexes [7]. Indeed, while the average methionine content of the proteins encoded by the nuclear genome (nDNA) is around 2 %, this percentage rises to 6 % when the proteins analyzed are those encoded by the mitochondrial genome (mtDNA).

If mitochondrial methionine residues serve as a ROS sink, then the proteins from animals subjected to high oxidative stress should accumulate methionine more effectively than their orthologous proteins from species exposed to lower oxidative stress. To address this hypothesis, we carried out a meta-examination of mitochondrial genomes from mammalian species using longevity as an inverse proxy of the ROS production rate [8]. Our analyses unveiled a hitherto unnoticed observation: mitochondrially encoded polypeptides from short-lived species were enriched in methionine when compared with their long-lived counterparts. Furthermore, we showed evidence suggesting that methionine addition to proteins in short-lived species, rather than methionine loss from proteins in long-lived species, was behind the reported difference in methionine usage [9].

Sulfoxidation of selected methionine residues mediates the regulation of various cellular processes

Like phosphorylation, methionine sulfoxidation can be regarded as a post-translational modification able to play a role in cell signaling and regulating cellular processes. Thus, in MetOSite we have distinguished between those methionines whose oxidation does not impact the properties of the protein, and consequently they may play a role as endogenous antioxidants, from those other methionines that may be signaling competent because when oxidatively modified they affect at least one of the properties listed in the table shown below. In this table, the number of MetO sites found in MetOSite affecting the indicated property, as well as the number of different proteins and species involved are provided.

Affected PropertyProteinsSitesSpecies
Gain of Activity15209
Loss of Activity419820
Gain of Protein-Protein Interaction231
Loss of Protein-Protein Interaction296014
Effect on Protein Stability24448
Effect on Subcellular Location343

It should be noted that the same site can affect simultaneously to different properties. For instance, the oxidation of Met-80 from cytochrome c (P00004) inhibits electron transport but increases the peroxidase activity of the protein and, in addition, influences the subcellular location of the protein. That is, this single site computes in gain of activity, loss of activity and effect on subcellular location.

In line with a relevant role for methionine in cell signaling, many examples of regulation by methionine oxidation have been described in the literature, including activation of the transcription factor HypT in prokaryotes [10] and regulation of the transcriptional factor NirA in Aspergillus nidulans. In the latter case, the sulfoxidation affects the distribution of the protein between nucleus and cytoplasm [11]. Another remarkable example of regulatory effect is that of calmodulin Met76 modification that modulates the effectivity to activate its target CaMKIIα [12]. No less remarkable is the sulfoxidation-mediated regulation of actin assembly [13-15]. Finally, there are also examples in the literature of cellular responses controlled by changes in susceptibility to proteolysis of target proteins via methionine modification [16-18]. An extensive review about methionine sulfoxidation as a regulatory strategy can be found at [19].

Cross-talk between methionine sulfoxidation and O-phosphorylation

In addition to the cases cited above, in which the sulfoxidation of methionine residues seems to have a direct effect on the activity of the modified protein, there are other cases in which methionine oxidation may impact the function of the target protein acting as a coupling agent between the oxidative signal and the phosphorylation status of that protein. For instance, it has been reported that the oxidation of Met538 within the phosphorylation motif of nitrate reductase (P11035) inhibits the phosphorylation of the nearby site Ser534, which would avoid the inactivation of nitrate reductase [20].

When the co-occurrence of these two types of PTMs (sulfoxidation and phosphorylation) within the human proteome was analyzed, as many as 98 % of the proteins containing oxidized methionine after an oxidative insult were also phosphoproteins. Furthermore, phosphoserine (pSer) and MetO sites cluster together in a statistically significant way when compare to Ser and Met. In addition, this proximity between modification sites could not be accounted for by their co-localization within unstructured regions because it was faithfully reproduced in a smaller sample of structured proteins [21]. This results strongly suggests that methionine sulfoxidation in the phosphorylation motifs it is not a random process directed by mass action, but on the contrary it is a highly specific and selective process.

The conclusion that methionine oxidation within phosphorylation motifs is a specific process was further supported by gene ontology (GO) term enrichment analysis. The results of such analysis suggest that the oxidation of methionine located within phosphorylation motifs is a highly selective process among stress-related proteins [21].

Protein kinases and protein phosphatase can be directly regulated by methionine modification

The phosphorylation status of a given protein can be modified through methionine oxidation in several ways. For instance, the oxidation of methionine residues around the phosphoaceptor can alters the affinity of protein kinases and protein phosphatase by the sulfoxidized substrate. That is, it is the substrate that undergoes the methionine modification (as we have discussed in the previous section). A different alternative is to modify the activities of protein kinases and protein phosphatases by methionine sulfoxidation.
In this regard, the activities of calcineurin and CaMKII, a protein phosphatase and a protein kinase, respectively, are both regulated by the redox state of specific methionines present in their sequences (see MetOSite entries Q08209 and Q6PHZ2, respectively). It is interesting to note that both activities are dependent on Ca2+ cations and calmodulin, and both are modulated, in addition, by oxidative signals, but they do so in the opposite direction. That is, while the oxidation of Met406 of calcineurin interferes with the binding of calmodulin and its subsequent activation [22], the oxidation of the pair Met281, Met282 in the regulatory domain of CaMKII entails an activation of the kinase activity independently of the calcium levels and of binding to calmodulins [23].

References

  1. Gellman SH (1991) On the role of methionine residues in the sequence-independent recognition of nonpolar protein surfaces. Biochemistry 30:6633–6636.
  2. Lim JC, You Z, Kim G, Levine RL (2011) Methionine sulfoxide reductase A is a stereospecific methionine oxidase. Proc Natl Acad Sci USA 108:10462–10477.
  3. Manta B, Gladyshev VN (2017) Regulated methionine oxidation by monooxygenases. Free Radic Biol Med 109:141–155.
  4. Reddy VY, Desrocheres PE, Pizzo SV, Gonias SL, Sahakian JA, Levine RL, Weiss SJ (1994) Oxidative dissociation of human alpha2-macrogobulin tetramers into dysfunctional dimers. J Biol Chem 269:4683–4691.
  5. Levine RL, Mosoni L, Berlett BS, Stadtman ER (1996) Methionine residues as endogenous antioxidants in proteins. Proc Natl Acad Sci USA 93:15036–15040.
  6. Balaban RS, Nemoto S, Finkel T (2005) Mitochondria, oxidants, and aging. Cell 120:483–495.
  7. Bender A, Hajieva P, Moosmann B (2008) Adaptive antioxidant methionine accumulation in respiratory chain complexes explains the use of a deviant genetic code in mitochondria. Proc Natl Acad Sci USA 105:16496–16501.
  8. Aledo JC (2014) Life-history constraints on the mechanisms that control the rate of ROS production. Current Genomics 15:217–230.
  9. Aledo JC, Li Y, de Magalhães JP, Ruíz-Camacho M, Pérez-Claros JA (2011) Mitochondrially encoded methionine is inversely related to longevity in mammals. Aging Cell 10:198–207.
  10. Drazic A, Miura H, Peschek J, Le Y, Bach N, Kriehuber T, Winter J (2013) Methionine oxidation activates a transcription factor in response to oxidative stress. Proc Natl Acad Sci USA 110:9493–9498.
  11. Gallmetzer A, Silvestrini L, Schinko T, Gesslbauer B, Hortschansky P, Dattenböck C, Muro-Pastor MI, Kungl A, Brakhage AA, Scazzocchio C, et al. (2015) Reversible Oxidation of a Conserved Methionine in the Nuclear Export Sequence Determines Subcellular Distribution and Activity of the Fungal Nitrate Regulator NirA Hynes M, editor. PLoS Genetics 11:e1005297–27.
  12. Marimoutou M, Springer D, Liu C, Kim G, Levine R (2018) Oxidation of Methionine 77 in Calmodulin Alters Mouse Growth and Behavior. Antioxidants 7:140–16.
  13. Hung R-J, Pak CW, Terman JR (2011) Direct redox regulation of F-actin assembly and disassembly by Mical. Science 334:1710–1713.
  14. Hung R-J, Spaeth CS, Yesilyurt HG, Terman JR (2013) SelR/MsrB reverses Mical-mediated oxidation of actin to regulate F-actin dynamics. Nat Cell Biol 15:1445–1454.
  15. Lee BC, Péterfi Z, Hoffmann FW, Moore RE, Kaya A, Avanesov A, Tarrago L, Zhou Y, Weerapana E, Fomenko DE, et al. (2013) MsrB1 and MICALs Regulate Actin Assembly and Macrophage Function via Reversible Stereoselective Methionine Oxidation. Mol Cell 51:397–404.
  16. Kanayama A, Inoue JI, Sugita-Konishi Y, Shimizu M, Miyamoto Y (2002) Oxidation of I B at Methionine 45 Is One Cause of Taurine Chloramine-induced Inhibition of NF- B Activation. J Biol Chem 277:24049–24056.
  17. Fu X, Chen J, Gallagher R, Chung DW, López JA (2011) Shear stress–induced unfolding of VWF accelerates oxidation of key methionine residues in the A1A2A3 region. Blood 118:5283–5291.
  18. Stephan JR, Yu F, Costello RM, Bleier BS, Nolan EM (2018) Oxidative Post-Translational Modifications Accelerate Proteolytic Degradation of Calprotectin. J Am Chem Soc 140:17444–17455.
  19. Lim JM, Kim G, Levine RL (2019) Methionine in Proteins: It’s Not Just for Protein Initiation Anymore. Neurochem Res 44:247–257.
  20. Hardin SC, Larue CT, Oh M-H, Jain V, Huber SC (2009) Coupling oxidative signals to protein phosphorylation via methionine oxidation in Arabidopsis. Biochem. J. 422:305–312.
  21. Veredas FJ, Cantón FR, Aledo JC (2017) Methionine residues around phosphorylation sites are preferentially oxidized in vivo under stress conditions. Sci Rep 7:1–14.
  22. Carruthers NJ, Stemmer PM (2008) Methionine Oxidation in the Calmodulin-Binding Domain of Calcineurin Disrupts Calmodulin Binding and Calcineurin Activation. Biochemistry 47:3085–3095.
    Erickson JR, Joiner MA, Guan X, Kutschke W, Yang J, Oddis CV, Bartlett RK, Lowe JS, ODonnell S, Aykin-Burns N, et al. (2008) A dynamic pathway for calcium-independent activation of CaMKII by methionine oxidation. Cell 133:462–474.
metosite

Functional Categories

Each MetO site can be assigned to one of three possible groups, depending on the answer to the following question:

Does the oxidation of this methionine has an effect on any biological property of the protein?

Group 1: The answer is “We do not know because it has not been addressed”. This group is composed mainly for those MetO sites coming from high-througput studies and nothing is known about the effect of their sulfoxidation just because it has not been addressed.

Group 2: The answer is “No, we could not find any effect even though we searched for it”. This group is formed for those methionines that are postulated to function as ROS sink (Proc. Natl. Acad. Sci. USA 93: 15036).

Group 3: The answer is “Yes, a change in some property has been described”. This group is populated for those methionines that may fulfil a role in cellular signaling by affecting at least one of the following biological properties:

  • Gain of Activity
  • Loss of Activity
  • Gain of Protein-Protein Interaction
  • Loss of Protein-Protein Interaction
  • Effect on Protein Stability
  • Effect on Subcellular Location

On the other hand, each MetO site can be univocally assigned to one of 65 possible Funtional Categories (FC), according to the table shown below. It should be noted that in the following table a value of 1 for any of the six biological properties means that experimental evidence supporting such an effect has been published. On the contrary, a value of 0 only means that we have not found experimental evidence to support such an effect.

FC Group Activity Gain Activity Loss PPI Gain PPI Loss Stability Re-Localization
1 1 0 0 0 0 0 0
2 2 0 0 0 0 0 0
3 3 1 0 0 0 0 0
4 3 0 1 0 0 0 0
5 3 0 0 1 0 0 0
6 3 0 0 0 1 0 0
7 3 0 0 0 0 1 0
8 3 0 0 0 0 0 1
9 3 0 0 0 1 0 1
10 3 0 0 0 1 1 0
11 3 0 0 1 0 0 1
12 3 0 0 1 0 1 0
13 3 0 1 0 0 0 1
14 3 0 1 0 0 1 0
15 3 1 0 0 0 0 1
16 3 1 0 0 0 1 0
17 3 0 0 1 1 0 0
18 3 0 1 0 1 0 0
19 3 0 1 1 0 0 0
20 3 1 0 0 1 0 0
21 3 1 0 1 0 0 0
22 3 1 1 0 0 0 0
23 3 0 0 0 0 1 1
24 3 0 0 0 1 1 1
25 3 0 0 1 0 1 1
26 3 0 1 0 0 1 1
27 3 1 0 0 0 1 1
28 3 0 0 1 1 0 1
29 3 0 0 1 1 1 0
30 3 1 1 1 0 0 0
31 3 0 1 0 1 0 1
32 3 0 1 0 1 1 0
33 3 0 1 1 0 0 1
34 3 0 1 1 0 1 0
35 3 1 0 0 1 0 1
36 3 1 0 0 1 1 0
37 3 1 0 1 0 0 1
38 3 1 0 1 0 1 0
39 3 1 1 0 0 0 1
40 3 1 1 0 0 1 0
41 3 0 1 1 1 0 0
42 3 1 0 1 1 0 0
43 3 1 1 0 1 0 0
44 3 0 0 1 1 1 1
45 3 0 1 0 1 1 1
46 3 0 1 1 0 1 1
47 3 1 0 0 1 1 1
48 3 1 0 1 0 1 1
49 3 1 1 0 0 1 1
50 3 0 1 1 1 0 1
51 3 0 1 1 1 1 0
52 3 1 0 1 1 0 1
53 3 1 0 1 1 1 0
54 3 1 1 0 1 0 1
55 3 1 1 0 1 1 0
56 3 1 1 1 1 0 0
57 3 1 1 1 0 0 1
58 3 1 1 1 0 1 0
59 3 0 1 1 1 1 1
60 3 1 0 1 1 1 1
61 3 1 1 0 1 1 1
62 3 1 1 1 0 1 1
63 3 1 1 1 1 0 1
64 3 1 1 1 1 1 0
65 3 1 1 1 1 1 1
Sin categoría

When do you need temporary directory and files in R and how to use them

When temporary files in R become handy

Every time you need to download a file from anywhere, to extract data from it and then to throw it away you have to decide where to save this file. There could be many options, for example, to save in working directory or in home directory. It looks simple but you have to check whether a file with similar name already exists. Then you need to hold list of all temporary files to remove them later.

How to use tempdir() and tempfile()

R provides you with special infrastructure for temp files. When you start a new R session a temporary directory is created. Location of the directory depends on your system and configuration. Function tempdir() returns path to the current temporary directory.

On OS X system its output could look like this:

tempdir()

## [1] "/var/folders/2h/92ky134s63b1th57p4gc66vw0000gn/T//RtmpYGQWVA"

On normal exit R cleans up this directory, so don’t put there nonreproducible data.

Now you know the place where to hold temporary stuff.

Next question is how to name temporary files. You can hardcode names in your script. For instance:

url <- "http://uniprot.org/uniprot/P01009.fasta"
download.file(url, destfile = paste(tempdir(), '/P01009.fas', sep = ""), quiet = TRUE)

But again, sometimes it is more convenient to use specialized R tool for it.

The function tempfile() generates file names what are very likely to be unique among calls to ‘tempfile’ in an R session. The function takes three arguments: the file name, the directory name and the file extension.

url <- "http://uniprot.org/uniprot/P01009.fasta"
destfile <- tempfile(pattern = 'P00109',
                     tmpdir = tempdir(),
                     fileext = '.fas')
download.file(url, destfile, quiet = TRUE)

The path to the save fasta file is, in my case:

destfile

## [1] "/var/folders/2h/92ky134s63b1th57p4gc66vw0000gn/T//RtmpYGQWVA/P001093f582c589a85.fas"

By default, when using tempfile() you get a filename with pattern file without extension located in per-session temporary directory.

download.file(url, destfile = tempfile(), quiet = TRUE)
tempfile()

## [1] "/var/folders/2h/92ky134s63b1th57p4gc66vw0000gn/T//RtmpYGQWVA/file3f5864277557"

In this way we can use file names from tempfile() to save our temporary files. When we don’t need them any more, they can deletee with unlink() R function.

unlink(paste(tempdir(), "/*.fas", sep = ""))

Disclose

Everything is in the web! and that is good, but it is also part of the problem: sometimes to find a gold nugget you have to put tons of scum aside. I don’t have the philosopher’s stone, rather I am a miner who after much searching wants to share with you what, after much searching, has shone like gold to me. In other words, herein I echo what other have written and I’ve found it interesting. Therefore, I don’t claim any authorship, and reference to the source is provided here.

metosite

Reversible Oxidation of Methionine and The Regulation of Membraneless Organelles

Alongside classic organelles such as mitochondria and lysosomes, there exist numerous membraneless organelles present as liquid droplets within the cell, contributing to its compartimentalization.

These dynamic structures are condensates of macromolecules that are reversibly assembled in response to stimuli, during a process termed liquid–liquid phase separation. In recent years, phase separation has gain interest as a novel principle of cellular organization and regulation.

Indeed, the resulting assemblies concentrate certain molecules while excluding others, and hence, can speed up or slow down biochemical reactions and contribute to compartmentalize the biological processes taking place within the living cell. However, when it comes to how cells form these structures in a regulated way, there are still more questions than answers. For this reason, we would like to highlight a recent breakthrough in this area, with the identification of reversible methionine oxidation as a redox sensor involved in the dynamic assembly of membraneless organelles.

Liquid–liquid phase separation can be regulated by reversible methionine oxidation.

Stress granules are dense aggregations in the cytosol composed of proteins and RNAs that appear when cells are under stress. A relevant constituent of the stress granules is ataxin-2, an intrinsically disordered protein with an increasingly larger number of known molecular functions. Recently, the group led by Benjamin Tu has unraveled a prominent role for methionyl residues from Pbp1 (the yeast orthologous of ataxin-2) in the formation of intracellular drop-like condensates. These researchers have presented convincing evidences that methionine residues from the low-complexity domain of Pbp1 are components of a redox sensor, which constitutes a receptor for ROS produced by mitochondria in response to the nutrient environment. These authors showed that:

  • These methionine residues are required, both in vivo and in vitro, for the formation of condensates.
  • Oxidation, in both test tube reactions and living cells, of these residues leads to the melting of these liquid-like droplets.
  • In vitro, hydrogen peroxide-mediated melting of these structures is fully reverted by the enzymatic reduction of methionine oxidation in the presence of MsrA and MsrB (methionine sulfoxide reductase enzymes).

Owing to the fact that the low-complexity domain of human ataxin-2 presents 18 evolutionary conserved methionines, one can speculate that the human protein may perform an analogous mechanistic function to that described above for Pbp1 in the yeast.

The question that arises is: could other membraneless organelles exploit this redox property of methionine residues to regulate their assembly? Resorting to the arguments developed by the great biologist François Jacob, evolution always starts with what is already available and reuses successful designs repeatedly in slightly modified variations. Once we know that reversible methionine sulfoxidation is a successful solution to assemble tailored microenvironments that are established and maintained without the need of membranous structures, it is very likely that new and exciting findings are awaiting us ahead.

Further readings

Redox state controls phase separation of the yeast ataxin-2 protein via reversible oxidation of its methionine-rich low-complexity domain. Cell. 2019; 177:711–721.

The molecular language of membraneless organelles. J Biol Chem. 2019; 294:7115–7127.

Methionine in proteins: the Cinderella of the proteinogenic amino acids. Protein Sci. 2019; 28:1785-1796.