A: Write function for optimizing the plateau values determined during editing (only needs to work with data where time-invariant and radially invariant noise has already been removed):

1. identify graphically/numerically/etc where the scan has a horizontal region (at the plateau)
2. average a certain # of points from horizontal regions to get a more reliable plateau value
3. exclude late scans that do not have a reliable plateau
4. generate a linear fit of included plateau values:

(eq1) log (Cp) = -2 swavg ω2 t + log (C0), determine swavg, C0 by linear fit

1. predict theoretical plateau (Cpt) for the scans that were excluded in (3) using the swavg and C0 determined in eq1.

B: Initial van Holde - Weischet distribution:

1. evenly divide span (plateauscan - baseline, for each scan) into n divisions and find intercepts to determine radius, and use that radius to determine a apparent s-value for that position. use: (eq2) sapp = log(rboundary/rmeniscus)/[ω2 * tcorr]
2. plot sapp for each boundary division against the inverse square root of timecorr
3. do a linear fit of each corresponding division and extrapolate to yintercept (infinite time, or zero on the inverse time scale.

C: Account for differential radial dilution of each species.

1. take s-values from initial vHW distribution and calculate the plateau concentration for each species i based on eq1 where C0 is the value obtained for each scan j when calculating: (eq3) Cpij = [(C0 - baseline)/division] exp(-2 * si * ω2 * tj) (Cpij values are plateau concentrations when the species is considered in isolation, i.e., this species' partial concentration)
2. Check plateau consistency for all scans: Cptj = Σ (from j=1 to n) Cpij. Add up differences and equally distribute it over all plateaus Cpij so that this equation is satisfied.
3. Calculate new division positions in each scan for each species half way in between the two plateaus. Let this be the division concentration Cdij. Cdij = Σ(from 1 to i-1)(Cpij) + (Cpij/2)
4. repeat van Holde - Weischet calculation to obtain a new set of si and store si in a separate array.

D: repeat C until no more change in the si array (based on user-selected iteration number).

E: Back-diffusion correction (eliminate regions of the boundary that are affected by the back diffusion). The idea is to assume that every particle is spherical (i.e., maximum diffusion, although this can be decreased by the user) and to use the smallest particle found by the van Holde - Weischet extrapolation to state the worst case. Calculate the diffusion coefficient for this particle according to eq4.

(eq4) D = (RT)/(9 π η N sqrt((2 ssmallest υbar η)/(1-υbar ρ)))

where η is the viscosity provided by the user

• R is the gas constant (8.314e7), should be a defined constant in UltraScan
• N is avogadros # (also defined in UltraScan)
• υbar is provided by the user
• ρ is the density of the solvent, provided by the user
• T is temperature in Kelvin (273.15+Texperiment)

F: Calculate the diffusion distance based on D and time, and exclude the points on the right of this boundary for each scan.