Nattokinase (NK) produced by Bacillus subtilis subsp. natto (B. subtilis natto) is known to degrade fibrinogen in plasma. Based on this fact, a method called fibrinolysis assay is usually used to quantify NK [1]. This method is a technique in which a halo is formed by placing a culture medium containing NK on a fibrin sheet in a petri dish, and the NK activity can be visually confirmed by observing the size of the halo.
However, the unit of FU is usually used to quantify NK activity, and to estimate FU from the visual size of the halo, it is necessary to conduct several experiments to obtain a reference curve. Moreover, this method is a statistical method, and it may be difficult to improve the curve when errors occur.
Therefore, we developed a new mathematical model to estimate FU deterministically from the halo radius by fibrinolysis assay. This deterministic mathematical model is expected to provide explanatory power and facilitate the search for sources of error. Moreover, since our model can estimate FU at different concentrations once the biological parameters are determined, it is expected to minimize the experimenter’s man-hours compared to the reference curve method.
Next, our team used NB medium (Nutrients Broth medium), which contains a large amount of amino acids, for the culture of B. subtilis natto. Although metabolic pathway analysis has been conducted in media containing Glucose and Glycerol, metabolism under NB medium has not been analyzed [2]. Since NB medium generally does not contain sugar, it is possible that amino acids in NB medium are directly utilized for NK production without moving metabolic pathways such as the glycolytic system.
Therefore, we used Flux Balance Analysis to clarify the metabolic pathway by which B. subtilis natto produces NK in the NB medium. This study will provide a concrete understanding of the culture of B. subtilis natto in the NB medium, which has not been understood so far, and will make it possible to arrange the optimal medium for NK production in future studies.
We implemented two main types of modeling to better understand Nattokinase (NK) quantification and production.
The first model focuses on predicting NK concentration based on the fibrin degradation radius observed in the halo assay, a common method for NK quantification. This approach uses partial differential equations to perform an inverse prediction, as described in the FU Prediction section.
The second model analyzes the metabolic pathways through which B. subtilis natto produces NK in NB medium. For this, we conducted a simulation using Flux Balance Analysis (FBA), detailed in the Metabolism Analysis section.
First, we derived a partial differential equation for the relationship between NK and fibrin with two-dimensional space and time as variables by making the following assumptions and definitions based on previous studies [3, 4]. Next, we estimated the parameters included in the partial differential equation based on experiments.
Definition 1.
where is the concentration of NK at a spatial point in the petri dish, is the concentration of the fibrin-NK action site before degradation, and is the concentration of the fibrin-NK action site after degradation. The degradation is assumed to be an irreversible reaction.
Assumption 1.
that is, we assume that the time-initial value space of
is uniform.
Assumption 2.
The action sites of NK on fibrin are as shown in the figure [Fig.
1], …-[node]-[action site]-[node]-[action site]-[action
site]-[node]-[action site]-… [3]; i.e., assuming that the action
site exists as a “point” on the fibrin fiber, it is possible to
reduce the discussion to a reaction kinetics discussion by focusing
only on the action site. In other words, the law of mass action can
be used.
Figure 1: Shows the action site of fibrin and NK, which are thought to be in a chain structure.
Assumption 3.
The
spreads in space by natural diffusion. The total amount of
in the petri dish is always constant because NK is not decomposed in
the petri dish.
Assumption 4.
Fibrin shall retain its performance as a porous medium because of
its fibrous form [4].
First, let’s look at the diffusion term. Diffusion usually has the property of infinite propagation and is quickly distributed in space. However, since infinite propagation in a petri dish is unlikely, the diffusion term is described as diffusion in a porous medium using Assumption 4, rather than ordinary diffusion, to give it finite propagation.
The following is a system of partial differential equations, where the reaction term is denoted by :
Here, represents the diffusion coefficient, which depends on the function , and is given by , where is a constant, as seen in the porous medium equation.
Next, we derive the reaction term based on the Michaelis-Menten equation, where the reaction mechanism is as follows:
To isolate the reaction term, we consider an ordinary differential equation (ODE) involving only the time derivative. We focus on the concentrations of the complex (between and ) and the product :
Assuming that reaches a steady state, i.e., , we can substitute this into the second equation to obtain:
where and .
Finally, the following system of partial differential equations is derived from the above considerations:
We developed a mathematical model to describe the degradation radius observed in the halo assay as a function of NK concentration. By fitting this model to experimental data, we estimated the parameters , , and , which are crucial for understanding the diffusion and reaction kinetics of NK in the fibrin gel. We used Python to calculate and visualize our model numerically.
We started by converting the observed diameters from the halo assay into radii and storing the corresponding FU values. Since we did not have experimental data available, we referenced data from literature values[8].
# Experimental data: FU and corresponding diameter (in cm)
FU_data = np.array([0, 2, 5, 10, 25, 50])
diameter_data = np.array([0, 0.55, 0.60, 0.70, 0.89, 1.21])
# Convert diameter to radius (in cm)
radius_data = diameter_data / 2
We define a function to predict the degradation radius based on the model parameters and FU.
# Define the model function to predict the radius
def predict_radius(FU, m, V_max, K_m):
# Convert FU to initial NK concentration
E0 = FU_to_concentration(FU)
# Effective diffusion coefficient based on porous medium equation
D_eff = m * E0 ** (m - 1)
# Reaction term influenced by Michaelis-Menten kinetics
alpha = V_max / (K_m + E0)
# Predict radius (simplified model)
R = np.sqrt((2 * D_eff * t) / alpha)
return R
Mathematical explanation:
We define an objective function that computes the sum of squared errors between the observed radii and the radii predicted by the model. The goal is to minimize this error.
# Objective function to minimize
def objective(params):
m, V_max, K_m = params
R_pred = predict_radius(FU_data, m, V_max, K_m)
error = radius_data - R_pred
return np.sum(error ** 2)
Using the scipy.optimize.minimize
function, we optimize
the parameters to minimize the objective function.
# Initial guesses for the parameters
initial_params = [1.5, 1e-3, 1e-6]
# Bounds for the parameters to ensure physical feasibility
bounds = [(1.0, 3.0), # m > 1 for porous medium
(1e-5, 1e-1), # V_max positive
(1e-8, 1e-4)] # K_m positive
# Perform the optimization
result = minimize(objective, initial_params, bounds=bounds)
# Extract the estimated parameters
m_est, V_max_est, K_m_est = result.x
With the estimated parameters, we developed a method to estimate the FU of an unknown sample from the observed degradation radius. This inverse problem involves solving for FU given a radius, using the model and parameters.
We define a function to estimate FU from the observed radius by finding the root of the equation that equates the predicted radius to the observed radius.
# Function to estimate FU from observed radius
def estimate_FU_from_radius(R_observed, m, V_max, K_m):
# Define the function whose root we want to find
def func(FU):
R_pred = predict_radius(FU, m, V_max, K_m)
return R_pred - R_observed
# Set reasonable bounds for FU (e.g., 0 to 1000 FU)
FU_min = 0
FU_max = 1000
# Use root-finding method
try:
FU_est = brentq(func, FU_min, FU_max)
except ValueError:
# If the function does not change sign in the interval, return NaN
FU_est = np.nan
return FU_est
We solve for FU in the equation:
We apply the estimation function to each observed radius.
# Estimate FU for each observed radius
estimated_FU = []
for R_obs in radius_data:
FU_est = estimate_FU_from_radius(R_obs, m_est, V_max_est, K_m_est)
estimated_FU.append(FU_est)
estimated_FU = np.array(estimated_FU)
In this study, we successfully estimated parameters , , and governing the diffusion and reaction kinetics of NK in the fibrin gel using our mathematical model. Subsequently, we developed a method to estimate FU from observed degradation radii in the halo assay.
Using the provided experimental data and our diffusion-reaction model, we performed parameter estimation to determine the values of , , and . The optimization process minimized the sum of squared errors between the observed degradation radii and those predicted by the model.
Estimated parameter values:
The estimated parameters were used to predict the degradation radii corresponding to the experimental FU values. The predicted radii closely matched the observed data, indicating a good fit for the model.
Figure 2: Comparison between experimental degradation radii and model-predicted radii using the estimated parameters.
Performance Metrics:
These metrics demonstrate the model accurately captures the relationship between FU and degradation radius, with an value indicating a high degree of correlation.
Using the results from the parameter estimation, we simulated the spatial distribution of Nattokinase (E) and its degradation product (v) over time. It solves a diffusion-reaction system within a circular region using a numerical grid and tracks how the concentration of NK and its product evolves due to both diffusion and reaction processes. The results are visualized as heat maps, showing the concentration of NK and its degradation product in two separate plots after a specified simulation time.
Figure 3: Spatial Distribution of Nattokinase (E) and Degradation Product (v) After Simulating for 8 Arbitrary Time Units
With estimated parameters, we developed an inverse method to estimate FU from observed degradation radii. This method employs a root-finding algorithm to solve for FU given a specific radius, leveraging the established relationship from our diffusion-reaction model.
Applying the FU estimation method to the observed radii, yielded the following estimated FU values [Table 1]:
Observed Radius (cm) | Actual FU | Estimated FU |
---|---|---|
0.00 | 0 | 0.00 |
0.275 | 2 | 2.05 |
0.300 | 5 | 4.95 |
0.350 | 10 | 10.10 |
0.445 | 25 | 24.80 |
0.605 | 50 | 50.20 |
Table 1: Comparison of actual FU values and estimated FU values from observed degradation radii.
Figure 4: Scatter plot comparing actual FU values with those estimated from observed radii.
The estimated FU values closely align with the actual FU measurements, demonstrating the reliability and accuracy of our estimation method. The minimal discrepancies observed are within the experimental error margins, validating the effectiveness of the model in quantifying NK activity based solely on the halo assay measurements.
Statistical Summary:
These statistics underscore the high precision of FU estimations derived from our model.
We have enhanced our program to allow users to input arbitrary degradation radii, enabling the tool to provide corresponding estimated FU based on our calibrated model. When measuring the NK on the Petri dish, it spread out in an elliptical shape, so the average of the major and minor axes was taken, assuming it to be a circle, and estimates were made based on the experimental results. Estimated FU values are shown below [Fig.5].
Figure 5: FU is estimated from the experimental data. The data were taken every 4 hours for 16hrs, 20hrs, and 24hrs.
By fitting our model to the experimental data, we obtained estimates for the parameters , , and . These parameters provide insights into:
The model’s predictions closely matched the experimental data, indicating that our assumptions and simplifications were reasonable for this system.
Utilizing the estimated parameters, we successfully estimated the FU from observed degradation radii. The estimated FU values were in good agreement with the actual FU values, demonstrating the model’s effectiveness in quantifying NK activity based solely on the halo assay measurements.
Although our calculations showed precision to a large extent, there are some assumptions and limitations we have to be aware of, which includes
First, we obtained metabolic pathway data in SBML format for B. subtilis from AGORA[5] (filename: “Bacillus_subtilis_str_168.xml”). Flux Balance Analysis was performed using COBRApy [6]. To theoretically set the NB medium, we set only the amino acids from the initial medium set in COBRApy at max flux (flux: 1000.0) and set all other fluxes to 0.0 to simulate the NB medium. The NB + Glucose medium, which was not tested in this study, was also simulated using the same method as the NB medium to clarify the optimal medium for future NK production.
The following is the COBRApy code and procedure.
We start by loading AGORA data into COBRApy, which provides the metabolic models for the analysis.
sbml_path = "Bacillus_subtilis_str_168.xml"
model = read_sbml_model(sbml_path)
Since we want to implement NB medium in COBRApy, we rewrite the pre-defined medium environment so that all 20 amino acids can be imported with the same maximum and minimum values.
mediums = model.medium
non_amino_acids = [Please check on our GitHub repository]
for key, value in mediums.items():
for lis in non_amino_acids:
if lis == key:
mediums[key] = 0.0
else:
continue
# Check the output to identify the wrong amino acids
aa = 0
for v in mediums.values():
if v != 0:
aa += 1
model.medium = mediums
We add a reaction to the loaded data that enables the uptake of all 20 amino acids derived from the NB medium simultaneously.
# Set the new Reaction for NK output
NK_reaction = Reaction("NK_output")
NK_reaction.name = "NK_output"
NK_reaction.subsystem = "Pseudo production of NK"
NK_reaction.lower_bound = 0
NK_reaction.upper_bound = 1000
NK_reaction
We calculate the usage of each of the 20 amino acids based on the amino acid sequence of NK [7] and assign the appropriate stoichiometric coefficients to the reaction defined in the previous step.
import collections
nk_aa = "This data from NCBI protein databank ABM97611.1"
one_to_full_name = {
"A": "L-alanine",
"R": "L-arginine",
"N": "L-asparagine",
"D": "L-aspartic acid",
"C": "L-cysteine",
"Q": "L-glutamine",
"E": "L-glutamic acid",
"G": "L-glycine",
"H": "L-histidine",
"I": "L-isoleucine",
"L": "L-leucine",
"K": "L-lysine",
"M": "L-methionine",
"F": "L-phenylalanine",
"P": "L-proline",
"S": "L-serine",
"T": "L-threonine",
"W": "L-tryptophan",
"Y": "L-tyrosine",
"V": "L-valine"
}
c = dict(collections.Counter(nk_aa))
counted_dict = {}
for k, v in c.items():
counted_dict[one_to_full_name[k]] = v
A new reaction is added to represent the secretion of NK, based on the results from the previous step.
nattokinase = Metabolite("Nattokinase", name="nattokinase", compartment="c")
metabolites_dict = {}
for k in counted_dict.keys():
for i in range(len(model.metabolites)):
if (k == model.metabolites[i].name) & (model.metabolites[i].compartment == "c"):
metabolites_dict[model.metabolites[i]] = -int(counted_dict[k])
# Add the NK
metabolites_dict[nattokinase] = 1
NK_reaction.add_metabolites(metabolites_dict)
# print(metabolites_dict)
NK_reaction.reaction
# Balanced for analysis
exchange_nattokinase = Reaction('EX_nattokinase')
exchange_nattokinase.name = 'Exchange reaction for Nattokinase'
exchange_nattokinase.lower_bound = 0
exchange_nattokinase.upper_bound = 1000
exchange_nattokinase.add_metabolites({nattokinase: -1})
model.add_reactions([exchange_nattokinase])
model.add_reactions([NK_reaction])
The reaction for NK secretion created in the previous step is set as the objective for optimization in COBRApy.
model.objective = "NK_output"
We run the optimization step, which is a standard COBRApy operation, to analyze the flux distributions.
solution = model.optimize()
We set a threshold value of and filter out the reactions, selecting only those with a higher flux value for further analysis.
fluxes = solution.fluxes
active_reactions = [reaction for reaction in model.reactions if abs(fluxes[reaction.id]) > 1e-6]
active_metabolites = set()
for reaction in active_reactions:
active_metabolites.update(reaction.metabolites)
active_model = Model("Active_Model")
active_model.add_metabolites(active_metabolites)
active_model.add_reactions(active_reactions)
active_model.objective = model.objective
write_sbml_model(active_model, "active_model.xml")
print(active_model.summary())
active_subsystems = set()
for reaction in active_reactions:
if reaction.subsystem:
active_subsystems.add(reaction.subsystem)
print("Utilized Subsystem:")
for subsystem in active_subsystems:
print(subsystem)
A version of the NB medium with added glucose is created for comparison, following the same steps as described above.
First, the Flux and the number of Reaction pathways utilized in each medium are shown below: the Flux was 13.09 in the NB-only medium, suggesting that the Flux increased to 21.89 when Glucose was added to NB [Table 2]. The number of Reaction pathways was 22 mutually, indicating that NK production must go through about 22 reaction pathways.
Medium | Flux | Reaction number |
---|---|---|
NB only | 13.09 | 22 |
NB + Glucose | 21.89 | 22 |
Table 2: Comparison of Flux and Reaction Count in Different Media Table 2 shows the flux values for the two media conditions. The flux for ‘NB only’ was 13.09, while for ‘NB + Glucose,’ it was 21.89. Both conditions share the same reaction count, with 22 reactions.
Then, we examined the specific differences in reaction pathways between the two media environments. First, among the 22 reaction pathways, four pathways were identified as ‘Respiration’, ‘Glycerophospholipid metabolism’, ‘Fructose and mannose metabolism’, and ‘Unassigned’ in the NB + Glucose medium, but not in the NB + Glucose medium [Table 2]. mannose metabolism’, and ‘Unassigned’ [Table 3]. Among the 22 reaction pathways, the pathways that were passed through in the NB + Glucose medium but not in the NB medium were ‘Pyrimidine synthesis’, ‘Sulfur metabolism’, ‘Pyrimidine catabolism’, ‘Methionine and cysteine metabolism’ [Table 2].
Pathways not utilized in: | Pathway 1 | Pathway 2 | Pathway 3 | Pathway 4 |
---|---|---|---|---|
NB + Glucose medium | Respiration | Glycerophospholipid metabolism | Fructose and mannose metabolism | Unassigned |
NB medium | Pyrimidine synthesis | Sulfur metabolism | Pyrimidine catabolism | Methionine and cysteine metabolism |
Table 3: Pathways Unutilized in Each Medium
The results suggest that flux was relatively higher in the NB + Glucose culture environment than in the NB-only culture environment. The reason for the higher flux in the NB + Glucose medium is shown in [Table 2], which indicates that in the NB + Glucose medium, B. subtilis natto was more sensitive to amino acids such as “Sulfur metabolism” and “Methionine and Cysteine metabolism” than B. subtilis natto. This may be because B. subtilis natto can produce amino acids necessary for NK production inside the bacteria via pathways related to amino acid production such as “Sulfur metabolism” and “Methionine and Cysteine metabolism” in the NB + Glucose medium. Furthermore, the results in [Table 2] suggest that the bacteria produce sugars inside their bodies using “Fructose and Mannose metabolism” because NB medium alone is insufficient to produce sugars. However, this pathway is known to be suppressed during NK production [2]. This may be the reason why the metabolic pathway cannot be optimized for NK production, and this may be the cause of the low flux in the medium of NB alone. These results suggest that it is appropriate to use a medium containing sugar when culturing NK-producing B. subtilis natto in the future.
[1] Dabbagh, F., Negahdaripour, M., Berenjian, A., Behfar, A.,
Mohammadi, F., Zamani, M., … & Ghasemi, Y. (2014). Nattokinase:
production and application.
Applied microbiology and biotechnology, 98,
9199-9206.
[2] Unrean, P., & Nguyen, N. H. (2013). Metabolic pathway
analysis and kinetic studies for production of nattokinase in
Bacillus subtilis. Bioprocess and biosystems engineering,
36, 45-56.
[3] Weng, Y., Yao, J., Sparks, S., & Wang, K. Y. (2017).
Nattokinase: an oral antithrombotic agent for the prevention of
cardiovascular disease.
International journal of molecular sciences,
18(3), 523.
[4] Wufsus, A. R., Macera, N. E., & Neeves, K. B. (2013). The
hydraulic permeability of blood clots as a function of fibrin and
platelet density. Biophysical journal, 104(8),
1812-1823.
[5] Heinken, A., Acharya, G., Ravcheev, D. A., Hertel, J., Nyga, M.,
Okpala, O. E., … & Thiele, I. (2020). AGORA2: Large scale
reconstruction of the microbiome highlights wide-spread
drug-metabolising capacities. BioRxiv, 2020-11.
[6] Ebrahim, A., Lerman, J. A., Palsson, B. O., & Hyduke, D. R.
(2013). COBRApy: constraints-based reconstruction and analysis for
python. BMC systems biology, 7, 1-6.
[7] NCBI database Accession: ABM97611.1:
https://www.ncbi.nlm.nih.gov/protein/ABM97611.1
[8] Pinontoan, R., Sanjaya, A., & Jo, J. (2021). Fibrinolytic
characteristics of Bacillus subtilis G8 isolated from natto.
Bioscience of Microbiota, Food and Health, 40(3),
144-149.
© 2024 - Content on this site is licensed under a Creative Commons Attribution 4.0 International license
The repository used to create this website is available at gitlab.igem.org/2024/grand-tokyo.