Nonlinear Fitting with System Function

Video Image.png Video Text Image.png Website blog icon circle.png Blog Image 33x33px.png


The NLFit dialog is an interactive tool which allows you to monitor the fitting procedure during the non-linear fitting process. This tutorial fits the Michaelis-Menten function, which is a basic model in Enzyme Kinetics, and shows you some basic features of the NLFit dialog. During the fitting, we will illustrate how to perform a Global Fit, which allows you to fit two datasets simultaneously and share some parameter values.

Minimum Origin Version Required: Origin 8.0 SR6

What you will learn

This tutorial will show you how to:

  • Import a single ASCII file.
  • Perform a global fit with shared parameters.
  • Select a fitting range and fit part of the data.
  • Use the Command Window to perform a simple calculation.


Import the file

Open a new workbook. Select Help: Open Folder: Sample Folder... to open the "Samples" folder. In this folder, open the Curve Fitting subfolder and find the file Enzyme.dat. Drag-and-drop this file into the empty worksheet to import it.

Tutorial NLFit 001.png

Plotting the Data

Select columns B and C and plot as a scatter plot by clicking the Scatter.png button.

Tutorial NLFit 002 SR6.png

Fitting with the Michaelis-Menten Function

The single-substrate Michaelis-Menten function is a basic model used in enzyme kinetics studies.


The parameter v is the reaction velocity, [S] is the substrate concentration, V_{max} is the maximal velocity, and K_m represents the Michaelis constant. Parameters V_{max} and K_m are important enzyme properties and their values can be determined by fitting the M-M function to a v vs. [S] curve. While there is no M-M fitting function in Origin, we can use a more general model, the built-in Hill function to perform the fit:


where n is the cooperative sites. For a single-substrate model, we fix n=1, thus simplifying the model so that it behaves like the M-M function.

There are two curves, one is the reaction without an Inhibitor and the other is the reaction with a Competitive Inhibitor. We will use the NLFit tool to fit these two curves simultaneously. Since for competitive inhibition reactions, the maximum velocity is the same as with no inhibition, we can share the V_{max} value during the fitting procedure and perform a Global Fit.

  1. With the graph active, select the menu item Analysis: Fitting: Nonlinear Curve Fit to bring up the NLFit dialog. Select Hill function from Growth/Sigmoidal category on the Settings: Function Selection page.
    Tutorial NLFit 003 SR6.png
  2. On the Settings: Data Selection page, click the triangular button next to the Input Data and choose Add all plots in active page to set the data range.
    Tutorial NLFit 004 SR6.png
  3. Select Global Fit from Multi-Data Fit Mode drop-down list on the Settings: Data Selection page.
    Tutorial NLFit 005 SR6.png
  4. Switch to the Parameters tab, check the Share box on the Vmax row. These Share check boxes are only available when using Global Fit mode. Check the Fixed box for n and n_2, and make sure their values are 1.
    Tutorial NLFit 006 SR6.png
  5. Click the Fit button to generate the analysis reports. A table of fit parameters is pasted to the original graph (only the fit parameter values table is shown in the following figure.)
    Tutorial NLFit 007 SR6.png

From the fit result, we can conclude that the maximum velocity is 2162.8 \mu M/min. The value of K_m for the no inhibitor model is 1.78\mu M. The value K_m for the competitive inhibitor model is 4.18\mu M.

Fitting Lineweaver-Burk Plot

As we know, the model parameters can also be estimated by the Lineweaver–Burk or double-reciprocal plot. The Lineweaver–Burk plot takes the reciprocal of both sides of the M-M function and plots by 1/v vs. 1/[S]:


This is actually a linear function:

Tutorial NLFit L-B Plot.png

We will use the No Inhibitor data to illustrate how to calculate K_m and V_{max} by L-B plot.

  1. Go back to the raw data worksheet and add two more columns by clicking the Add New Columns.png button. Right-click on column D and select Set As: X from the context fly-out menu to set it as an X column. Right-click on column D again and select Set Column Values to bring up the Set Values dialog. In the dialog edit box, enter: 1/Col(A) and set the Recalculate mode as None, since we don't need to auto update the reciprocal values in this example.
    Similarly, set column E's values as 1/Col(B). Enter the long name for column D & E as 1/[S] & 1/V, respectively. And then we have:
    Tutorial NLFit 009 SR6.png
  2. Highlight columns D & E and click Scatter.png button to create a scatter plot.
    Tutorial NLFit 010 SR6.png
    From the above equation, we know there is a linear relationship between 1/v and 1/[S], so we can use the NLFit tool to fit a straight line on this plot. (You can also use the Fit Linear tool from Analysis: Fitting: Fit Linear)
  3. Bring up the NLFit dialog again, select Line function from Polynomial category, and then click the Fit button Fit.png directly to generate results.
    Tutorial NLFit 011 SR6.png
    From the plot, one may doubt that this is the best fit curve since there is a point located far away. Actually, the right side of L-B plot is low substrate concentrations area, the measurement error may be large, so we'd better exclude these points during fitting.
    Tutorial NLFit 012 SR6.png
  4. Click the lock icon on the graph upper-left corner, and select Change Parameters to bring back NLFit dialog.
    Tutorial NLFit 013 SR6.png
    In Settings: Data Selection page, click the Triangle Button.png button on Input Data node, and then choose Reselect All Data from Graph from fly-out menu.
    Tutorial NLFit 014 SR6.png
    Then the NLFit dialog rolls up and your cursors become Tutorial NLFit 015.png when you move to the graph page. Click and draw a rectangle to select data points you want to fit. The input range is labeled by vertical lines. You can also click-and-move these lines to change the input range.
    Tutorial NLFit 015 SR6.png
    Click the Tutorial NLFit 018.png button on Select Data in Graph window to go back to NLFit dialog.
    Tutorial NLFit 016 SR6.png
  5. Click the Fit button on the NLFit dialog to recalculate the result. You can see from the graph that the report table was updated.
    Tutorial NLFit 017 SR6.png
  6. Since the intercept of the fitted curve is 1/V_{max}, it is equal to 4.76191E-4 in this example. To get the V_{max} value, select Window: Command Window to open the command window, type
    1/4.76191E-4 =
    and press ENTER:
    Tutorial NLFit 018 SR6.png
    Origin returns the value 2099, which is close to what we got above, 2160. (When fitting the hill function above, we shared V_{max} when fitting two datasets. If you fit the No Inhibitor data only, this value will be closer.)