The Binding of Symmetric Ligands 
to an Infinite Linear Lattice by Alan R. Wolfe

This Mathematica  notebook calculates and plots the Scatchard plot, neighbor-effect parameter, conditional probabilities, and cluster length distribution  for the symmetric ligand case.  It can only be used after the appropriate initialization notebook has been evaluated.  To perform the calculations, simply set the input variables to the desired values and execute the Action-Evaluate Notebook command.  This may be repeated with different values for the input variables.

INPUT VARIABLES:

points = 10; k = 2; n = 2; w = 3;

(* Choose expression for neighbor-effect parameter and 
    determine value of rSat *) 
ne ; rSatDetermine ; Print [ "rSat = ", rSat//N ] ; 
Print [ "initial slope = ", initialSlope //N ] ;

INPUT VARIABLES - cluster length plots:

rCluster2D = 0.9; maxLength2D = 6; 
points3D = 10; maxLength3D = 5;

rCluster2D*rSat is the r value for which 2D cluster length distribution 
     data will be displayed.  
points3D is the number of equally spaced r values greater than zero 
     for which the cluster length distribution will be displayed in 
     the 3D plots.  
maxLength is the maximum cluster length that will be considered.

(* Set up arrays for 3D cluster length distribution plots *) 
clusterArray = Table [ 0, {maxLength3D} ] ; 
clusterArray3D = Table [ clusterArray, {points3D+1} ] ; 
ligandArray3D = clusterArray3D ;

(* CALCULATE THE NEIGHBOR-EFFECT PARAMETER AND 
SCATCHARD PLOT  *)  scroll = 1

(* Initialize output arrays *)
xAxisInterval = rSat/(points) ; 
abscissa = Range [0, points-1] ; abscissa2 = {} ; 
points2 = points ; 
AppendTo [ abscissa2, points2 - 1/2] ; points = points+1 ;
AppendTo [ abscissa2, points2 - 1/4] ; points = points+1 ;
abscissa = xAxisInterval Join [ abscissa, abscissa2 ] ; 
(* Evaluate the neighbor-effect parameter *)
ordinate = Map [ Function [ zz, r = zz ; x = r/(1 - n r) ; 
     {rLf, e, x, ff} ], abscissa ] ; 
AppendTo [ abscissa, rSat ] ; 
AppendTo [ ordinate, {0, w, 0, 0} ] ;

(* DISPLAY THE SCATCHARD PLOT *)  scroll = 1

makePlot [ 1, 0, "r/Lf", "Scatchard plot" ]

(* PLOT THE NEIGHBOR-EFFECT PARAMETER *)  scroll = 1

makePlot [ 2, 1, "e", "neighbor-effect" ]

(* CALCULATE AND PLOT THE CONDITIONAL PROBABILITIES *)  scroll = 1

(* ff *)

makePlot [ 4, 0, "ff", "" ]

(* bf *)

makeCPplot [ bf, "   bf" ]

(* fb *)

makeCPplot [ fb, "   fb" ]

(* bb *)

makeCPplot [  bb, "   bb" ]

(* CALCULATE, PRINT AND PLOT 3D CLUSTER LENGTH DATA *) scroll = 1

(* calculate and print *)

points3DArray = Range [0, points3D ] ; 
maxLength = maxLength3D ; 
clusterArray = Table [ 0, {maxLength} ] ; 
ligandArray = clusterArray ; 
clusterLengthArray = Range [1, maxLength ] ; 
printHeadings ; 
Map [ Function [ ij, 
     rCluster = (ij/points3D) ; 
     clusterDistribution ; 
     clusterArray3D[[ij+1]] = clusterArray ; 
     ligandArray3D[[ij+1]] = ligandArray ], 
points3DArray ] ; 
chooseTicks ;

(* plot fraction of clusters, left view *)

threeDplot [ 2.2, -2.4, 1.0, "length         ", "          r/rSat", 
     "f clus.", clusterArray3D, tickArray1 ] ;

(* plot fraction of clusters, right view *)

threeDplot [ 2.2, 2.4, 1.0, "         length", "r/rSat          ", 
     "f clus.", clusterArray3D, tickArray0 ] ;

(* plot fraction of clusters, center view *)

threeDplot [ 2.2, -0.001, 1.0, "     length", "r/rSat", 
     "f clus.", clusterArray3D, tickArray ] ;

(* plot fraction of ligands, left view *)

threeDplot [ 2.2, -2.4, 1.0, "length         ", "          r/rSat", 
     "f lig.", ligandArray3D, tickArray1 ] ;

(* plot fraction of ligands, right view *)

threeDplot [ 2.2, 2.4, 1.0, "         length", "r/rSat          ", 
     "f lig.", ligandArray3D, tickArray0 ] ;

(* plot fraction of ligands, center view *)

threeDplot [ 2.2, -0.001, 1.0, "     length", "r/rSat", 
     "f lig.", ligandArray3D, tickArray ] ;

(* CALCULATE, PRINT AND PLOT 2D CLUSTER LENGTH DATA *) scroll = 1

rCluster = rCluster2D ; 
maxLength = maxLength2D ; 
clusterArray = Table [ 0, {maxLength} ] ; 
ligandArray = clusterArray ; 
clusterLengthArray = Range [1, maxLength ] ; 
printHeadings ; 
clusterDistribution ;

Print [ "average cluster length = " , averageClusterLength ] ; 
Print [ "r = ", r, "; bb = ", bbCLUSTER, "; bf = ", bfCluster ] ;

twoDplot [ "fraction clusters", maxClusters, clusterArray ] ;

twoDplot [ "fraction ligands", maxLigands, ligandArray ] ;

rCluster2D

rCluster2D = 0.99; maxLength2D = 7;

Note - if the values of rCluster2D (= r/rSat) and/or maxLength2D 
are changed and the cell assigning these values is executed, the 
cluster length distribution can be recalculated for the new value(s) 
by selecting the group of cells above this group and executing the 
"Action-Evaluate Selection" command (use menu or "enter" key).