3-state unfolding Savuka tutorial

Here is an example of a 3-state fit.  The data files are 3state.01.asc and 3state.02.asc  . The parameters used to synthesize the data are in 3state.true.par.  Please see the file tutorial.txt for an older but (relatively) more complete tutorial.  The aim for this tutorial is to read in the two denaturation curves and fit them globally to a three state denaturation model.  Characters that the user enters are in bold.  Program output/feedback is in regular font.  My added comments to this log file are in italics.Some quick notes:

  • All Savuka commands consist of a two or three letter command followed by switches and/or input parameters.
  • The command switch (much like those in Unix) must be entered on the command line (contains the prompt “SA>”)
  • The input parameters may be entered on the command line also.  If parameters are not given on the command line, the program will prompt the user for all parameters required by the command and optional switches.  In other words, if you are not sure what the input arguments are for a command you can simply hit return and expect to be prompted.  If you are unsure of which switch to use, consult the help manual.
  • The latest version of the help manual is online and may be accessed by entering help  or help command).
  • Savuka uses PGPLOT and GrWin (on Windows) for its graphic engine.  It can also handle X11 on Unix machines.

protein 12% savuka
                  SAVUKA   Version 5.2.0
                    7/16/99  Irix/Linux

                 Copyright(C) 1991, 1996
          David G. Lambright and Osman Bilsel
  Enter:  "help"     to:   get info about commands
          "exit"           quit Savuka
          "clear -s"       re-dimension work space
          "!"              shell to system

  Questions?  E-mail osman@protein.chem.psu.edu

 MAX # OF BUFFERS=   256,  MAX # OF POINTS=  2048
SA> rea 3state.01.asc                                  # Read the data file 3state.01.asc.  Format is ASCII xy pairs. 
FIRST LINE TO READ = [  1 ]                            # The absence of an entry indicates that I accepted the default (1).
NUMBER OF LINES TO READ = [  2048 ]
STORE EVERY NTH LINE = [  1 ]
ROW VALUE ASSOCIATED WITH COLUMN = [  0.0000000E+00 ]  # The row-value is for multidimensional data (up to 5-dimensions).
SA> rea 3state.02.asc
FIRST LINE TO READ = [  1 ]
NUMBER OF LINES TO READ = [  2048 ]
STORE EVERY NTH LINE = [  1 ]
ROW VALUE ASSOCIATED WITH COLUMN = [  0.0000000E+00 ]
SA> dir                                   # The data is placed in buffers (similar to columns in a spreadsheet)
BUFFER  #POINTS ROW-VALUE            REMARKS
------  ------- ---------  --------------------------------
    1      50  0.0000E+00  3state.01.asc
    2      50  0.0000E+00  3state.02.asc
SA> pl      # define the active region (similar to selecting a block in a spreadsheet). 
FIRST BUFFER = [  1 ]
LAST BUFFER = [  2 ]
FIRST POINT = [  1 ]
LAST POINT = [  128 ] 50
 NOTE: USE "EXP" TO ACTIVATE PLOT LIMITS
SA> dr 1 2    # display the data graphically on the screen.  This command overlays all data on one plot.

SA> fun       # select a function to fit to the data.
 FUN> DEFINE A MODEL FUNCTION BY SELECTING ANY
 FUN> SEQUENCE OF THE FOLLOWING SUB-FUNCTIONS.

  Generic functions:
    CONSTANT (ADDITIVE) ........................1
    CONSTANT (MULTIPLICATIVE) .................30
    ZERO-TIME SHIFT ...........................26
    LINEAR ....................................27
    QUADRATIC .................................28
    EXPONENTIAL ................................2
    STRETCHED EXPONENTIAL ......................3
    GAUSSIAN ...................................4
    LORENTZIAN ................................40
    SIN  (A*sin(b*pi*x + d)  ..................80
    STERN-VOLMER (F/Fo) .......................55
  Exponentials convolved with Gaussians:
    CONSTANT W/ PULSE, t<to ....................5
    CONSTANT W/ PULSE, t>to ....................6
    EXPONENTIAL W/ PULSE .......................7
ENTER <CR> FOR MORE, "Q" TO QUIT DISPLAY:
  Kinetic models (w/o denaturant dependence):
    2A -> B -> C ...............................8
    2A -> 2B -> C ..............................9
    U <-> I <-> N .............................46
    U <-> I1 <-> I2 <-> N .....................24
    I1 <-> I2 <-> I3 <-> I4 <-> I5 ............44
    A + B -> C -> D  ..........................34
    A + B -> C -> D  with k-1 -> Kd ...........68
    2A -> B -> C  with k-1 -> Keq..............51
  Kinetic models (with denaturant dependence):
    2A -> B -> C ..............................10
    2U -> I -> N -> 2U ........................18
    2U <=> 2I <-> N <-> 2U ....................64
    2U <=> I <-> N <-> 2U .....................71
    2U -> 2I -> N -> 2U .......................19
    U <-> I <-> N .............................47
    U <-> I1 <-> I2 <-> N .....................25
    I1 <-> I2 <-> I3 <-> I4 <-> I5 ............45
ENTER <CR> FOR MORE, "Q" TO QUIT DISPLAY:
  Combined kinetic/equil models (w/ denat):
    U <-> I1 <-> I2* <-> I3 <-> N .............54
    U* <-> I1* <-> I2* <-> I3 <-> N ...........56
    U* <-> I1* <-> I2* <-> I3 <-> N (fix conc).70
    (U <-> I1)abc <-> N .......................66
    {U}abc <-> {I1}abc <-> N ..................67
    {U}abc <-> {I1}abc <-> {N}abc .............75
    {U}abc <-> {I1}abc <-> {N}abc .............77
    {U}abc <-> {I1}abc <-> {I2}abc <-> {N}abc..74
    {U}abcd <-> {I1}abcd <-> {I2}abcd<->{N}bc..84
    {U}abcd <-> {I1}abcd <-> {I2}abcd<->{N}ab..86
    {U}abcd <-> {I1}abcd <-> {I2}abcd<->{N}bc..91
    2U <-> N ..................................97
  Kinetic models (thermal):
    A -> B ....................................52
    2A -> B -> C ..............................83
  Kinetic models (denaturant + thermal):
    A -> B (Tanford denat binding).............53
    A -> B (linear).,,,,,,,,,,,,,,,............82
    2U <-> N ..................................96
  Equilibrium unfolding (denaturant):
    N <-> U  ..................................14
    N <-> I <-> U (w/ Z-value approx.).........11
    N <-> I <-> U (w/o Z-value approx.)........88
    N <-> I1 <-> I2 <-> U .....................21
    N <-> I1 <-> I2 <-> U (w/o Z-value approx.)89
    N <-> I1 (<-> D) <-> I2 <-> U .............79
    N <-> 2U ..................................15
    N <-> I <-> 2U ............................16
    N <-> 2I<-> 2U ............................69
    N <-> 3U  .................................41
    N3X3 <-> 3U + 3X  .........................72
    N <-> 4U ........ .........................93
    N <-> 2I <-> 4U ...........................95
  Equilibrium unfolding (denaturant;anisotropy):
    N <-> U  ..................................48
    N <-> I <-> U .............................49
    N <-> I1 <-> I2 <-> U .....................85
    N <-> I <-> U (w/o Z-value approx.)........92
    N <-> I1 <-> I2 <-> I3 <-> U ..............87
  Equilibrium unfolding (thermal):
    N -> U ....................................35
    N -> I -> U ...............................36
    N -> 2U ...................................37
    N -> I -> 2U ..............................38
    N -> 2I -> 2U .............................39
    N <-> 3U  .................................43
  Equilibrium unfolding (thermal+denaturant):
    N -> 2U ...................................94
ENTER <CR> FOR MORE, "Q" TO QUIT DISPLAY:
  Ultracentrifugation:
    Eq sedimentation single ideal species .....59
    Eq sedimentation single non-ideal species..60
    Monomer-dimer eq sedimentation ............57
    Monomer-dimer-trimer-tetramer eq sediment..58
  Custom models:
    Trp Repressor kinetic model 1 .............12
    Trp Repressor kinetic model 2 .............13
    Ras P21-ternary complex 2-state eq unfold..42
    Ras P21-binary  complex 2-state eq unfold..61
    Ras P21+APOP21 complex 2-state eq unfold...62
    2M + nH <-> MHn <-> DHn ...................33
    Exponential w/ denaturant dependence.......22
    N <-> I <-> 2U  KIN->EQ ...................17
    I1 <-> I2 <-> I3 <-> I4 <-> I5  KIN->EQ....50
    2-Site binding model ......................76
    Glorias 2-active form w 3-ionizable grps ..78
  Time-resolved anisotropy models:
    Ivv or Ivh, EXPONENTIAL ...................20
    Ivv or Ivh, GLOBALIZED A -> B .............23
    Ivv or Ivh, GLOBALIZED A -> B -> C ........29
    Ivv or Ivh, GLOBALIZED {A} -> {B} -> C.....90
    Ivv or Ivh, GLOBALIZED B <-> A -> C .......31
    Ivv or Ivh, ELLIPSOID .....................32
SUB-FUNCTION # (ENTER "0" TO END) = [  0 ] 11            # function 11 is the 3-state equilibrium model
SUB-FUNCTION # (ENTER "0" TO END) = [  0 ]
SA> lp                                                   # list parameters of the model

 LP> ENTER "0" WHEN DONE
LP> ENTER BUFFER NUMBER = [  1 ]                  # each parameter is described by a buffer number and parameter number
 BUFFER    1  [ 0.0000000E+00] 3state.01.asc      # each parameter also has a link, either to itself or another parameter
     1           Gni (Kcal/mol)            0.000000       1     1 VAR
     2       Ani (Kcal/mol/[D])            0.000000       1     2 VAR
     3           Giu (Kcal/mol)            0.000000       1     3 VAR
     4       Aiu (Kcal/mol/[D])            0.000000       1     4 VAR
     5 SLOPE OF NATIVE BASELINE            0.000000       1     5 VAR
     6 Y-INT OF NATIVE BASELINE            0.000000       1     6 VAR
     7 SLOPE OF UNFOLDED BASELIN           0.000000       1     7 VAR
     8 Y-INT OF UNFOLDED BASELIN           0.000000       1     8 VAR
     9              Z PARAMETER            0.000000       1     9 VAR
    10          TEMPERATURE (K)            0.000000       1    10 FIXED

 LP> ENTER "0" WHEN DONE
LP> ENTER BUFFER NUMBER = [  2 ]
 BUFFER    2  [ 0.0000000E+00] 3state.02.asc       #  buffer parameter var/fixed
     1           Gni (Kcal/mol)            0.000000       1     1 VAR # note that this parameter is linked to Gni of buff 1
     2       Ani (Kcal/mol/[D])            0.000000       1     2 VAR #  "     "    "      "      "    "    " Ani  "   "  "
     3           Giu (Kcal/mol)            0.000000       1     3 VAR # etc.
     4       Aiu (Kcal/mol/[D])            0.000000       1     4 VAR
     5 SLOPE OF NATIVE BASELINE            0.000000       2     5 VAR # by default, optical properties are not global.
     6 Y-INT OF NATIVE BASELINE            0.000000       2     6 VAR
     7 SLOPE OF UNFOLDED BASELIN           0.000000       2     7 VAR
     8 Y-INT OF UNFOLDED BASELIN           0.000000       2     8 VAR
     9              Z PARAMETER            0.000000       2     9 VAR
    10          TEMPERATURE (K)            0.000000       1    10 FIXED # temperature is global and fixed.

 LP> ENTER "0" WHEN DONE
LP> ENTER BUFFER NUMBER = [  3 ] 0
SA> ap            # alter/adjust parameters, allows you to enter parameter values/initial guesses.

 AP> ENTER "0" WHEN DONE
AP> ENTER BUFFER NUMBER = [  1 ]
 AP> BUFFER NUMBER     1          [ 0.0000000E+00]
 AP> <CR> TO RETAIN CURRENT VALUES
Gni (Kcal/mol) = [  0.0000000E+00 ] 4
Ani (Kcal/mol/[D]) = [  0.0000000E+00 ] 1
Giu (Kcal/mol) = [  0.0000000E+00 ] 7
Aiu (Kcal/mol/[D]) = [  0.0000000E+00 ] 2
SLOPE OF NATIVE BASELINE = [  0.0000000E+00 ]
Y-INT OF NATIVE BASELINE = [  0.0000000E+00 ]
SLOPE OF UNFOLDED BASELINE = [  0.0000000E+00 ]
Y-INT OF UNFOLDED BASELINE = [  0.0000000E+00 ] 11
Z PARAMETER = [  0.0000000E+00 ] .6
TEMPERATURE (K) = [  0.0000000E+00 ] 298.15

 AP> ENTER "0" WHEN DONE
AP> ENTER BUFFER NUMBER = [  2 ]
 AP> BUFFER NUMBER     2          [ 0.0000000E+00]
 AP> <CR> TO RETAIN CURRENT VALUES
Gni (Kcal/mol) = [      4.0000000 ]    # note how the linked parameters are automatically updated: it's the same parameter
Ani (Kcal/mol/[D]) = [      1.0000000 ]
Giu (Kcal/mol) = [      7.0000000 ]
Aiu (Kcal/mol/[D]) = [      2.0000000 ]
SLOPE OF NATIVE BASELINE = [  0.0000000E+00 ]
Y-INT OF NATIVE BASELINE = [  0.0000000E+00 ]
SLOPE OF UNFOLDED BASELINE = [  0.0000000E+00 ]
Y-INT OF UNFOLDED BASELINE = [  0.0000000E+00 ] 11
Z PARAMETER = [  0.0000000E+00 ] .3
TEMPERATURE (K) = [    298.1500000 ]

 AP> ENTER "0" WHEN DONE
AP> ENTER BUFFER NUMBER = [  3 ] 0
SA> mod    # calculate the model function
SA> sd 1    # change the plotting so that the data and model are superimposed. (How good are the initial guesses?)
SA> dr 1 2


SA> rms -p 1 -last 10    # let's estimate the noise level in the data from the last 10 points.  -p 1 indicates linear.
FIRST BUFFER = [  1 ]
LAST BUFFER = [  2 ]
 POLYNOMIAL COEFICIENTS
 SA> C(0) =  0.9121461E+01
 SA> C(1) = -0.8887876E-01
 BUFFER=    1  RMS DEVIATION=     0.0170229  AVERAGE=     0.0000000
 POLYNOMIAL COEFICIENTS
 SA> C(0) =  0.9092176E+01
 SA> C(1) = -0.1034156E+00
 BUFFER=    2  RMS DEVIATION=     0.0326645  AVERAGE=     0.0000000
SA> fit        # all set to start a least squares fit.  This uses the Marquardt algorithm.
ITERATION LIMIT = [  10 ]
 ITERATIONS=    0, RCHISQ= 19952.8249714
 ITERATIONS=    1, RCHISQ=  1194.4691027, %CHANGE=  94.01353
 ITERATIONS=    2, RCHISQ=  1025.1202235, %CHANGE=  14.17775
 ITERATIONS=    3, RCHISQ=   899.5766963, %CHANGE=  12.24671
 ITERATIONS=    4, RCHISQ=   813.7570586, %CHANGE=   9.54000
 ITERATIONS=    5, RCHISQ=   758.0014120, %CHANGE=   6.85163
 ITERATIONS=    6, RCHISQ=   654.9079986, %CHANGE=  13.60069
 ITERATIONS=    7, RCHISQ=   513.8801550, %CHANGE=  21.53399
 ITERATIONS=    8, RCHISQ=   361.4956974, %CHANGE=  29.65370
 ITERATIONS=    9, RCHISQ=   190.5288375, %CHANGE=  47.29430
 ITERATIONS=   10, RCHISQ=    93.3173257, %CHANGE=  51.02194

 %-----------FIT INFO AND STATISTICS-----------%

    DATA FROM FILE 3state.01.asc
    RANGE OF POINTS USED FOR FIT:    1   50
    MARQUARDT NON-LINEAR LEAST-SQUARES FIT
    NUMERICAL PARTIAL DERIVATIVES
    MATRIX INVERSION BY GAUSS-JORDAN
    CORRESPONDING DATA RANGE:       0.0000,       9.0000
    ITERATION LIMIT REACHED BEFORE CONVERGENCE
    FIT TOLERANCE =   1.0000000000000000E-04
    TOTAL # OF DATA POINTS =          100
    TOTAL # OF VAR PARAMETERS =           14
    NO. DEGREES OF FREEDOM =           86
    CHI-SQUARED=    8025.290006970623
    REDUCED CHI-SQUARED =    93.31732566244911
    GOODNESS OF FIT =   0.0000000000000000E+00

 %---------------   PARAMETERS  ---------------%
                                    value             stddev     dependency

 >> BUFFER     1 [   0.00000E+00] 3state.01.asc
            Gni (Kcal/mol) =      3.0393096  +/-      0.2655361  0.9514315
----- ENTER <CR> TO CONTINUE OR Q TO QUIT -----  :
        Ani (Kcal/mol/[D]) =      1.5838682  +/-      0.1114942  0.9418988
            Giu (Kcal/mol) =      7.2939581  +/-      1.3015531  0.9625408
        Aiu (Kcal/mol/[D]) =      1.7726415  +/-      0.3088753  0.9619133
  SLOPE OF NATIVE BASELINE =     -0.8172158  +/-      0.2879918  0.8787121
  Y-INT OF NATIVE BASELINE =      1.2169147  +/-      0.1122522  0.6606653
 SLOPE OF UNFOLDED BASELIN =     -0.0107279  +/-      0.0281425  0.8862934
 Y-INT OF UNFOLDED BASELIN =      9.3120813  +/-      0.1996915  0.9021817
               Z PARAMETER =      0.9160288  +/-      0.0206363  0.8134253
           TEMPERATURE (K) =    298.1500000

 >> BUFFER     2 [   0.00000E+00] 3state.02.asc
            Gni (Kcal/mol) =      3.0393096  +/-      0.2655361  0.9514315
        Ani (Kcal/mol/[D]) =      1.5838682  +/-      0.1114942  0.9418988
----- ENTER <CR> TO CONTINUE OR Q TO QUIT -----  :
            Giu (Kcal/mol) =      7.2939581  +/-      1.3015531  0.9625408
        Aiu (Kcal/mol/[D]) =      1.7726415  +/-      0.3088753  0.9619133
  SLOPE OF NATIVE BASELINE =     -0.5685914  +/-      0.2963942  0.8670376
  Y-INT OF NATIVE BASELINE =      1.1900560  +/-      0.1986495  0.6804628
 SLOPE OF UNFOLDED BASELIN =      0.0790031  +/-      0.0652208  0.9034655
 Y-INT OF UNFOLDED BASELIN =      8.6038054  +/-      0.4773007  0.9142960
               Z PARAMETER =      0.5522232  +/-      0.0559888  0.8516585
           TEMPERATURE (K) =    298.1500000

 FILE FOR STATISTICS:
FILE ALREADY EXISTS, OVERWRITE? [N]:
SA> fit    # didn't converge.  Let's try some more iterations.
ITERATION LIMIT = [  10 ]
 ITERATIONS=    0, RCHISQ=    93.3173257
 ITERATIONS=    1, RCHISQ=    61.5332220, %CHANGE=  34.06024
 ITERATIONS=    2, RCHISQ=    42.5853628, %CHANGE=  30.79289
 ITERATIONS=    3, RCHISQ=    26.1556747, %CHANGE=  38.58060
 ITERATIONS=    4, RCHISQ=     1.6750747, %CHANGE=  93.59575
 ITERATIONS=    5, RCHISQ=     0.9804490, %CHANGE=  41.46834
 ITERATIONS=    6, RCHISQ=     0.9803469, %CHANGE=   0.01042
 ITERATIONS=    7, RCHISQ=     0.9803469, %CHANGE=   0.00000

 %-----------FIT INFO AND STATISTICS-----------%

    DATA FROM FILE 3state.01.asc
    RANGE OF POINTS USED FOR FIT:    1   50
    MARQUARDT NON-LINEAR LEAST-SQUARES FIT
    NUMERICAL PARTIAL DERIVATIVES
    MATRIX INVERSION BY GAUSS-JORDAN
    CORRESPONDING DATA RANGE:       0.0000,       9.0000
    CHISQ CONVERGED IN            7 ITERATIONS
    FIT TOLERANCE =   1.0000000000000000E-04
    TOTAL # OF DATA POINTS =          100
    TOTAL # OF VAR PARAMETERS =           14
    NO. DEGREES OF FREEDOM =           86
    CHI-SQUARED=    84.30983142524234
    REDUCED CHI-SQUARED =   0.9803468770377016                # This is close to 1, a pretty good fit.
    GOODNESS OF FIT =   0.5313977911240007

 %---------------   PARAMETERS  ---------------%
                                    value             stddev     dependency

 >> BUFFER     1 [   0.00000E+00] 3state.01.asc
            Gni (Kcal/mol) =      6.0507302  +/-      0.0560609  0.9545390
----- ENTER <CR> TO CONTINUE OR Q TO QUIT -----  :
        Ani (Kcal/mol/[D]) =      3.0154808  +/-      0.0270514  0.9531400
            Giu (Kcal/mol) =      3.9656738  +/-      0.0625010  0.9593446
        Aiu (Kcal/mol/[D]) =      0.9886546  +/-      0.0149034  0.9578601
  SLOPE OF NATIVE BASELINE =      0.1212495  +/-      0.0156092  0.8182932
  Y-INT OF NATIVE BASELINE =      0.9931683  +/-      0.0110327  0.6779617
 SLOPE OF UNFOLDED BASELIN =     -0.0903052  +/-      0.0039520  0.9159318
 Y-INT OF UNFOLDED BASELIN =      9.9357623  +/-      0.0298294  0.9304619
               Z PARAMETER =      0.7530495  +/-      0.0035151  0.8453717
           TEMPERATURE (K) =    298.1500000

 >> BUFFER     2 [   0.00000E+00] 3state.02.asc
            Gni (Kcal/mol) =      6.0507302  +/-      0.0560609  0.9545390
        Ani (Kcal/mol/[D]) =      3.0154808  +/-      0.0270514  0.9531400
----- ENTER <CR> TO CONTINUE OR Q TO QUIT -----  :
            Giu (Kcal/mol) =      3.9656738  +/-      0.0625010  0.9593446
        Aiu (Kcal/mol/[D]) =      0.9886546  +/-      0.0149034  0.9578601
  SLOPE OF NATIVE BASELINE =      0.1361729  +/-      0.0201031  0.8488802
  Y-INT OF NATIVE BASELINE =      0.9764976  +/-      0.0189499  0.6971704
 SLOPE OF UNFOLDED BASELIN =     -0.1036810  +/-      0.0089232  0.9258739
 Y-INT OF UNFOLDED BASELIN =     10.0264725  +/-      0.0688860  0.9352576
               Z PARAMETER =      0.2413364  +/-      0.0065508  0.8412052
           TEMPERATURE (K) =    298.1500000

 FILE FOR STATISTICS: 3state.fit.sta    # This saves the output we just saw to a file. Values are correct.
SA> wp 3state.fit.par    # save the parameter file.  This is the most important thing to save.
SA> sca 1 2 1            # let's scan through the curves one by one (instead of overlaying).

SA> sd 2                 # let's change the plot style so that residuals are drawn also.
SA> sca 1 2 1


SA> wr 3state.01.mod     # we can save the fit curve and the residuals to separate xy ascii files.
WR> FORMAT (XY,XYE) [XY]:
WR> BUFFER# TO WRITE = [  1 ]
WR> DATA(D), MODEL(M), OR RESIDUALS(R)?: m
SA> wr 3state.02.mod
WR> FORMAT (XY,XYE) [XY]:
WR> BUFFER# TO WRITE = [  1 ] 2
WR> DATA(D), MODEL(M), OR RESIDUALS(R)?: m
SA>
SA> wr 3state.01.res
WR> FORMAT (XY,XYE) [XY]:
WR> BUFFER# TO WRITE = [  1 ]
WR> DATA(D), MODEL(M), OR RESIDUALS(R)?: r
SA> wr 3state.02.res
WR> FORMAT (XY,XYE) [XY]:
WR> BUFFER# TO WRITE = [  1 ] 2
WR> DATA(D), MODEL(M), OR RESIDUALS(R)?: r
SA>
SA>
SA> quit    # exit Savuka and return to Unix shell.