Modeling our Project
Basic Idea
Here we provide a simple but efficient mathematical model to interpret our data. In this model, we tried to exclude the influence of cross interactions and get high accurate result.
Assumption
Any abstract model requires proper assumptions to approximate real system. Here are our basic assumptions.
- Fluorence intensity is proportional to the binding efficiency of ion with vector
- Any responsing curve fits Hill equation.
- When different kinds of ion exist in the detection system, they will not influence others’ responsing behaviour.
The first assumption is natural. Consider the whole responsing process as a computation module which consists of input, processing layer, and output. Therefore, the input is the number of ions. Processing layer is to produce fluorence protein when the ions successfully bound with vector. Output is the number of fluorence protein. The only thing affect the output is the probability of ion binding, which is determined by input. In average, we have the following:
𝐼∝𝐻(𝑥)
Here 𝐼 refers to intensity and 𝐻(𝑥) refers to the probability of binding. 𝑥 stands for the concentration of ion.
The second assumption helps us to calculate the probability in assumption one, which is based on a simplified but well-established biochemical model. In short, Hill equation reflects the binding of ligands to macromolecules, as a function of the ligand concentration. It can be written as:
𝑃𝑎𝑐𝑡𝑖𝑣𝑒=𝐻𝑎(𝑥)=𝑥𝑛𝑘𝑛𝑎+𝑥𝑛𝑃𝑖𝑛ℎ𝑖𝑏𝑖𝑡𝑖𝑣𝑒=𝐻𝑖(𝑥)=𝑘𝑛𝑖𝑘𝑛𝑖+𝑥𝑛
To explain the physical meaning of those parameters, here we briefly introduce the model. Suppose an “on” state of processing layer requires 𝑛 binding ions, and corresponding chemical reaction can be written as:
𝑃+𝑛𝐼⇌𝑛𝑃𝐼
And the dissociation constant can be expressed as: 𝐾𝑑=[𝑃][𝐼]𝑛[𝑛𝑃𝐼]
What we focus on is the probability of binding, which can be calculated by the proportion of [𝑛𝑃𝐼] over all states. To simplify, we only consider two states: all binding([𝑃]) and no binding([𝑛𝑃𝐼]).Therefore the probability is:
𝑃=[𝑛𝑃𝐼][𝑃]+[𝑛𝑃𝐼]=[𝑃][𝐼]𝑛𝐾𝑑[𝑃]+[𝑃][𝐼]𝑛𝐾𝑑=[𝐼]𝑛𝐾𝑑+[𝐼]𝑛=[𝐼]𝑛𝑘𝑛𝑎+[𝐼]𝑛
Since 𝐾𝑑 is a positive constant, it can be rewritten in power form:𝐾𝑑=𝑘𝑛𝑎. So the probability is the function of ion concentration. This is exactly the second assumption.
By integrating assumption 1 and 2, it is easy to find out the function of intensity:
𝐼=𝐼𝑚𝑎𝑥[𝐼]𝑛𝑘𝑛𝑎+[𝐼]𝑛
𝐼𝑚𝑎𝑥 is the maximum intensity the system can get.
The third assumption ensures a linear model system. Since each kind of ion has its unique responsing curve to each detector, the final intensity will be the addition of intensity from all kinds of ion. This assumption ensure that the intensity for each ion will only depend on the concentration of their own and will not be influenced by other ions. Therefore, the intensity for 𝑖𝑡ℎ detector should be:
𝐼𝑖=∑𝑗(𝐼𝑚𝑎𝑥)𝑖𝑗𝐻𝑖𝑗(𝑥𝑗)
Here 𝐻𝑖𝑗 is the responsing curve of 𝑗𝑡ℎ ion to 𝑖𝑡ℎ vector.
Model
Based on the analysis in assumption, the model system is clear. For 𝑖𝑡ℎ the detector should be:
𝐼𝑖=∑𝑗(𝐼𝑚𝑎𝑥)𝑖𝑗𝐻𝑖𝑗(𝑥𝑗)
Here 𝐻𝑖𝑗 is the responsing curve of 𝑗𝑡ℎ ion to 𝑖𝑡ℎ vector.
To analyze our data, we should first determine the all coeffcients in the expression and then use those standard functions to calculate the actual concentrations in an unknown sample.
Determine Coefficients
During the experiment, we have tested how the detectors response to ions by a concentration gradient. To couple the experiment with model, it is necessary to do some transformation on fitting equation.
Generally, 𝐼𝑗=(𝐼𝑚𝑎𝑥)𝐻(𝑥) can be rewritten as:
log(𝐼𝐼𝑚𝑎𝑥−𝐼)=𝑛log(𝑘𝑎)−𝑛log(𝐼)
In this form, we can easily get a linear relation between our input concerntration and output. The question is how to find out 𝐼𝑚𝑎𝑥 in this equation because this value determine the reprocessed data of output. Another question is, due to the large scale of our data, to ease the workload of proceesing such data. To meet the needs of these two question, define the ratio between output data and the maximum of all output data as the standard output. As following shows:
𝑜𝑢𝑡𝑝𝑢𝑡=𝐼1,𝐼2,···,𝐼𝑛
𝐼′𝑜𝑢𝑡𝑝𝑢𝑡={𝐼′1,𝐼′2,···,𝐼′𝑛}𝑤ℎ𝑖𝑐ℎ𝐼′𝑖=𝐼𝑖max𝐼𝑜𝑢𝑡𝑝𝑢𝑡
The elements in 𝐼′𝑜𝑢𝑡𝑝𝑢𝑡 fit following equation:
log𝐼′𝑖max𝐼𝑜𝑢𝑡𝑝𝑢𝑡𝐼𝑚𝑎𝑥−𝐼′𝑖max𝐼𝑜𝑢𝑡𝑝𝑢𝑡=𝑛log𝑥𝑖−𝑛log𝑘
We define the value of 𝐼𝑚𝑎𝑥max𝐼𝑜𝑢𝑡𝑝𝑢𝑡 as a parameter 𝑃𝐼𝑚𝑎𝑥. So the equation we actually simulate is following one:
log𝑦′𝑖𝑃𝐼𝑚𝑎𝑥−𝑦′𝑖=𝑛log𝑥𝑖−𝑛log𝑘
Use Mathematica, the following code is shown:
outputdata = {Output1, Output2, Output3, Output4, Output5, Output6, Output7};
Processeddata = outputdata/Max[outputdata] // N;
data' = {{Log10[10^(-10)], Processeddata[[1]]}, {Log10[10^(-9)],
Processeddata[[2]]}, {Log10[10^(-8)],
Processeddata[[3]]}, {Log10[10^(-7)],
Processeddata[[4]]}, {Log10[10^(-6)],
Processeddata[[5]]}, {Log10[10^(-5)],
Processeddata[[6]]}, {Log10[10^(-4)], Processeddata[[7]]}};
data = {{data'[[1, 1]], data'[[1, 2]]}, {data'[[2, 1]],
data'[[2, 2]]}, {data'[[3, 1]], data'[[3, 2]]}, {data'[[4, 1]],
data'[[4, 2]]}, {data'[[5, 1]], data'[[5, 2]]}, {data'[[6, 1]],
data'[[6, 2]]}, {data'[[7, 1]], data'[[7, 2]]}};
solu = Flatten[
Solve[Log10[(y*PImax)/(1 - (y*PImax))] == n*x - n*logk, y]];
fitparameter = (FindFit[data, y /. solu, {PImax, logk, n}, x])
fit = y /. solu /. fitparameter;
Show[ListPlot[data, PlotStyle -> Red], Plot[fit, {x, -11, 0}],
PlotRange -> {0, 1}]
Data Analysis
In last section, we successfully got statistics of each detector. Now they will be used to analyze an unknown sample.
Denote the concentration of each ion in the sample is 𝑋𝑛.
For each detector:
𝐼𝑖=∑𝑗(𝐼𝑚𝑎𝑥)𝑖𝑗𝐻𝑖𝑗(𝑋𝑗)𝑓𝑜𝑟 𝑖=1,2,3,···,𝑛
Which {(𝐼𝑚𝑎𝑥)𝑖𝑗𝐻𝑖𝑗(𝑥)} has been determined for all 𝑖,𝑗. {𝐼𝑖} is the output of unknown sample in 𝑖𝑡ℎ detector.
Now we have 𝑛 equation for 𝑛 variables, it should determined the value of all variables. But unfortunately, this is not a linear system and more importantly, the technique we used to get linear form in last section cannot be transplanted here. A general way to solve such an nonlinear system is so-called “Netwon Iteration Method”.
First rewrite the model as:
∑𝑗(𝐼𝑚𝑎𝑥)𝑖𝑗𝐻𝑖𝑗(𝑋𝑗)−𝐼𝑖=0
Define:
𝐹(𝑋)=⎛⎝⎜⎜⎜⎜𝐹1(𝑋)𝐹2(𝑋)···𝐹𝑛(𝑋)⎞⎠⎟⎟⎟⎟;𝑋=⎛⎝⎜⎜⎜⎜𝑥1𝑥2···𝑥𝑛⎞⎠⎟⎟⎟⎟𝐹𝑖(𝑋)=∑𝑗(𝐼𝑚𝑎𝑥)𝑖𝑗𝐻𝑖𝑗(𝑥𝑗)−𝐼𝑖,𝑓𝑜𝑟 𝑖=1,2,3,···,𝑛∴𝐹(𝑋)=0
Now calculate the Jacobian matrix:
𝐽(𝑋)=⎛⎝⎜⎜⎜⎜⎜⎜∂𝐹1(𝑋)∂𝑥1∂𝐹2(𝑋)∂𝑥1···∂𝐹𝑛(𝑋)∂𝑥1∂𝐹1(𝑋)∂𝑥1∂𝐹2(𝑋)∂𝑥1···∂𝐹𝑛(𝑋)∂𝑥1············∂𝐹1(𝑋)∂𝑥𝑛∂𝐹2(𝑋)∂𝑥𝑛···∂𝐹𝑛(𝑋)∂𝑥𝑛⎞⎠⎟⎟⎟⎟⎟⎟∂𝐹𝑖(𝑋)∂𝑥𝑗=∂∂𝑥𝑗(∑𝑗(𝐼𝑚𝑎𝑥)𝑖𝑗𝐻𝑖𝑗(𝑥𝑗)−𝐼𝑖)=(𝐼𝑚𝑎𝑥)𝑖𝑗∂∂𝑥𝑗𝐻𝑖𝑗(𝑥𝑗)
Once Jacobian matrix is determined, take iteration:
𝑥𝑛+1=𝑥𝑛−𝐽−1(𝑥𝑛)𝐹(𝑥𝑛)
Theoretically we have
lim𝑛→+∞𝑥𝑛=⎛⎝⎜⎜⎜⎜𝑋1𝑋2···𝑋𝑛⎞⎠⎟⎟⎟⎟
This is exactly the newton iteration method.
Notice
The iteration method does not always works well, which is depending on the property of iteration functions. For some nonlinear system, the approximation could be useful in a very ting neighborhood. Such neighborhood determines the flexibility of intial value choosing. If the initial value is choosen far from the solution and the solving system is bad, then the iteration will be deficient. Therefore, to choose proper position and proper inital value to start iteration algorithm is critial to final result.
How to choose initial value
To get a good initial value for iteration, a proper range of solution should be guessed. Based on the biological property of detectors, the cross talk between target ion and untarget ion should be low. In extreme, the response of a wonderful detector to untarget ion should be a constant. First get rid of all posible background, and then solve the equation only with target ion.
That means to solve 𝑥0𝑖 in following:
(𝐼𝑚𝑎𝑥)𝑖𝑖𝐻𝑖𝑖(𝑥𝑖)=𝐼𝑖−∑𝑖≠𝑗(𝐼𝑚𝑎𝑥)𝑖𝑗
For all 𝑖=1,2,···,𝑛
Then we got initial value for iteration:
𝑥0=⎛⎝⎜⎜⎜⎜𝑥01𝑥02···𝑥0𝑛⎞⎠⎟⎟⎟⎟
How to choose data?
In our test, the sample can be diluted to 10X or even 100X according to its quality. Therefore, we can choose the data that benefits to the data processing. From analysis, we want to make a robust approximation, which means a small perturbation will not lead to a big change of result. So the region with large derivative should be avoided. One thing should be noticed that since the inputs in algorithm are the detector results and outputs are deduced from response curves, the derivative of the inverse functions of the curve, not response curve, should be considered. Therefore, we choose the detector results with biggest change as the “proper” data. To define the “Change”, here considers the difference between adjacent data points.
Example
Here we provide an example for 2 variables:
H[n_, k_, x_, V_] := V*x^n/(k^n + x^n)(*Hill Function*);
DH[n_, k_, x_, V_] := (
V*k^n n x^(-1 + n))/(k^n + x^
n)^2(*Derivative of Hill Function*);
M = {{0.003,0.0007}}
(*Initial Value,Determine by "Solve[5*x^2/((10^-3)^2+x^2)\\[Equal]4.5,x];Solve[7*x^2/((10^-3.5)^2+x^2)\[Equal]6,x]"*);
For[i = 1, i < 10, i++, x1 = M[[i, 1]]; x2 = M[[i, 2]];
g1 = H[2, 10^(-3), x1, 5] + H[2, 10^(-1), x2, 4] - 4.5;
g2 = H[2, 10^(-2), x1, 3] + H[2, 10^(-3.5), x2, 7] - 6;
{x1d, y1d} = {x1, x2} -
Inverse[{{DH[2, 10^(-3), x1, 5],
DH[2, 10^(-1), x2, 4]}, {DH[2, 10^(-2), x1, 3],
DH[2, 10^(-3.5), x2, 7]}}].{g1, g2};
AppendTo[M, {x1d, y1d}]](*Newton Method*); Print[M[[10]]]
Result:{0.00299939,0.000679022}
Compared to original:{0.003,0.0007}
Good approximation.
Modeling our Project
Basic Idea
Here we provide a simple but efficient mathematical model to interpret our data. In this model, we tried to exclude the influence of cross interactions and get high accurate result.
Assumption
Any abstract model requires proper assumptions to approximate real system. Here are our basic assumptions.
The first assumption is natural. Consider the whole responsing process as a computation module which consists of input, processing layer, and output. Therefore, the input is the number of ions. Processing layer is to produce fluorence protein when the ions successfully bound with vector. Output is the number of fluorence protein. The only thing affect the output is the probability of ion binding, which is determined by input. In average, we have the following:
𝐼∝𝐻(𝑥) 𝐼 refers to intensity and 𝐻(𝑥) refers to the probability of binding. 𝑥 stands for the concentration of ion.
Here
The second assumption helps us to calculate the probability in assumption one, which is based on a simplified but well-established biochemical model. In short, Hill equation reflects the binding of ligands to macromolecules, as a function of the ligand concentration. It can be written as:
𝑃𝑎𝑐𝑡𝑖𝑣𝑒=𝐻𝑎(𝑥)=𝑥𝑛𝑘𝑛𝑎+𝑥𝑛𝑃𝑖𝑛ℎ𝑖𝑏𝑖𝑡𝑖𝑣𝑒=𝐻𝑖(𝑥)=𝑘𝑛𝑖𝑘𝑛𝑖+𝑥𝑛
To explain the physical meaning of those parameters, here we briefly introduce the model. Suppose an “on” state of processing layer requires𝑛 binding ions, and corresponding chemical reaction can be written as:
𝑃+𝑛𝐼⇌𝑛𝑃𝐼 𝐾𝑑=[𝑃][𝐼]𝑛[𝑛𝑃𝐼] [𝑛𝑃𝐼] over all states. To simplify, we only consider two states: all binding([𝑃] ) and no binding([𝑛𝑃𝐼] ).Therefore the probability is:
𝑃=[𝑛𝑃𝐼][𝑃]+[𝑛𝑃𝐼]=[𝑃][𝐼]𝑛𝐾𝑑[𝑃]+[𝑃][𝐼]𝑛𝐾𝑑=[𝐼]𝑛𝐾𝑑+[𝐼]𝑛=[𝐼]𝑛𝑘𝑛𝑎+[𝐼]𝑛 𝐾𝑑 is a positive constant, it can be rewritten in power form:𝐾𝑑=𝑘𝑛𝑎 . So the probability is the function of ion concentration. This is exactly the second assumption.
And the dissociation constant can be expressed as:
What we focus on is the probability of binding, which can be calculated by the proportion of
Since
By integrating assumption 1 and 2, it is easy to find out the function of intensity:
𝐼=𝐼𝑚𝑎𝑥[𝐼]𝑛𝑘𝑛𝑎+[𝐼]𝑛
𝐼𝑚𝑎𝑥 is the maximum intensity the system can get.
The third assumption ensures a linear model system. Since each kind of ion has its unique responsing curve to each detector, the final intensity will be the addition of intensity from all kinds of ion. This assumption ensure that the intensity for each ion will only depend on the concentration of their own and will not be influenced by other ions. Therefore, the intensity for𝑖𝑡ℎ detector should be:
𝐼𝑖=∑𝑗(𝐼𝑚𝑎𝑥)𝑖𝑗𝐻𝑖𝑗(𝑥𝑗) 𝐻𝑖𝑗 is the responsing curve of 𝑗𝑡ℎ ion to 𝑖𝑡ℎ vector.
Here
Model
Based on the analysis in assumption, the model system is clear. For𝑖𝑡ℎ the detector should be:
𝐼𝑖=∑𝑗(𝐼𝑚𝑎𝑥)𝑖𝑗𝐻𝑖𝑗(𝑥𝑗) 𝐻𝑖𝑗 is the responsing curve of 𝑗𝑡ℎ ion to 𝑖𝑡ℎ vector.
Here
To analyze our data, we should first determine the all coeffcients in the expression and then use those standard functions to calculate the actual concentrations in an unknown sample.
Determine Coefficients
During the experiment, we have tested how the detectors response to ions by a concentration gradient. To couple the experiment with model, it is necessary to do some transformation on fitting equation.
Generally,𝐼𝑗=(𝐼𝑚𝑎𝑥)𝐻(𝑥) can be rewritten as:
log(𝐼𝐼𝑚𝑎𝑥−𝐼)=𝑛log(𝑘𝑎)−𝑛log(𝐼) 𝐼𝑚𝑎𝑥 in this equation because this value determine the reprocessed data of output. Another question is, due to the large scale of our data, to ease the workload of proceesing such data. To meet the needs of these two question, define the ratio between output data and the maximum of all output data as the standard output. As following shows:
In this form, we can easily get a linear relation between our input concerntration and output. The question is how to find out
The elements in𝐼′𝑜𝑢𝑡𝑝𝑢𝑡 fit following equation:
log𝐼′𝑖max𝐼𝑜𝑢𝑡𝑝𝑢𝑡𝐼𝑚𝑎𝑥−𝐼′𝑖max𝐼𝑜𝑢𝑡𝑝𝑢𝑡=𝑛log𝑥𝑖−𝑛log𝑘 𝐼𝑚𝑎𝑥max𝐼𝑜𝑢𝑡𝑝𝑢𝑡 as a parameter 𝑃𝐼𝑚𝑎𝑥 . So the equation we actually simulate is following one:
log𝑦′𝑖𝑃𝐼𝑚𝑎𝑥−𝑦′𝑖=𝑛log𝑥𝑖−𝑛log𝑘
We define the value of
Use Mathematica, the following code is shown:
outputdata = {Output1, Output2, Output3, Output4, Output5, Output6, Output7}; Processeddata = outputdata/Max[outputdata] // N; data' = {{Log10[10^(-10)], Processeddata[[1]]}, {Log10[10^(-9)], Processeddata[[2]]}, {Log10[10^(-8)], Processeddata[[3]]}, {Log10[10^(-7)], Processeddata[[4]]}, {Log10[10^(-6)], Processeddata[[5]]}, {Log10[10^(-5)], Processeddata[[6]]}, {Log10[10^(-4)], Processeddata[[7]]}}; data = {{data'[[1, 1]], data'[[1, 2]]}, {data'[[2, 1]], data'[[2, 2]]}, {data'[[3, 1]], data'[[3, 2]]}, {data'[[4, 1]], data'[[4, 2]]}, {data'[[5, 1]], data'[[5, 2]]}, {data'[[6, 1]], data'[[6, 2]]}, {data'[[7, 1]], data'[[7, 2]]}}; solu = Flatten[ Solve[Log10[(y*PImax)/(1 - (y*PImax))] == n*x - n*logk, y]]; fitparameter = (FindFit[data, y /. solu, {PImax, logk, n}, x]) fit = y /. solu /. fitparameter; Show[ListPlot[data, PlotStyle -> Red], Plot[fit, {x, -11, 0}], PlotRange -> {0, 1}]
Data Analysis
In last section, we successfully got statistics of each detector. Now they will be used to analyze an unknown sample.
Denote the concentration of each ion in the sample is𝑋𝑛 .
For each detector:
𝐼𝑖=∑𝑗(𝐼𝑚𝑎𝑥)𝑖𝑗𝐻𝑖𝑗(𝑋𝑗)𝑓𝑜𝑟 𝑖=1,2,3,···,𝑛 {(𝐼𝑚𝑎𝑥)𝑖𝑗𝐻𝑖𝑗(𝑥)} has been determined for all 𝑖,𝑗 . {𝐼𝑖} is the output of unknown sample in 𝑖𝑡ℎ detector.
Which
Now we have𝑛 equation for 𝑛 variables, it should determined the value of all variables. But unfortunately, this is not a linear system and more importantly, the technique we used to get linear form in last section cannot be transplanted here. A general way to solve such an nonlinear system is so-called “Netwon Iteration Method”.
New Form
First rewrite the model as:
∑𝑗(𝐼𝑚𝑎𝑥)𝑖𝑗𝐻𝑖𝑗(𝑋𝑗)−𝐼𝑖=0
𝐹(𝑋)=⎛⎝⎜⎜⎜⎜𝐹1(𝑋)𝐹2(𝑋)···𝐹𝑛(𝑋)⎞⎠⎟⎟⎟⎟;𝑋=⎛⎝⎜⎜⎜⎜𝑥1𝑥2···𝑥𝑛⎞⎠⎟⎟⎟⎟𝐹𝑖(𝑋)=∑𝑗(𝐼𝑚𝑎𝑥)𝑖𝑗𝐻𝑖𝑗(𝑥𝑗)−𝐼𝑖,𝑓𝑜𝑟 𝑖=1,2,3,···,𝑛∴𝐹(𝑋)=0
𝐽(𝑋)=⎛⎝⎜⎜⎜⎜⎜⎜∂𝐹1(𝑋)∂𝑥1∂𝐹2(𝑋)∂𝑥1···∂𝐹𝑛(𝑋)∂𝑥1∂𝐹1(𝑋)∂𝑥1∂𝐹2(𝑋)∂𝑥1···∂𝐹𝑛(𝑋)∂𝑥1············∂𝐹1(𝑋)∂𝑥𝑛∂𝐹2(𝑋)∂𝑥𝑛···∂𝐹𝑛(𝑋)∂𝑥𝑛⎞⎠⎟⎟⎟⎟⎟⎟∂𝐹𝑖(𝑋)∂𝑥𝑗=∂∂𝑥𝑗(∑𝑗(𝐼𝑚𝑎𝑥)𝑖𝑗𝐻𝑖𝑗(𝑥𝑗)−𝐼𝑖)=(𝐼𝑚𝑎𝑥)𝑖𝑗∂∂𝑥𝑗𝐻𝑖𝑗(𝑥𝑗)
𝑥𝑛+1=𝑥𝑛−𝐽−1(𝑥𝑛)𝐹(𝑥𝑛)
lim𝑛→+∞𝑥𝑛=⎛⎝⎜⎜⎜⎜𝑋1𝑋2···𝑋𝑛⎞⎠⎟⎟⎟⎟
Define:
Now calculate the Jacobian matrix:
Once Jacobian matrix is determined, take iteration:
Theoretically we have
This is exactly the newton iteration method.
Notice
The iteration method does not always works well, which is depending on the property of iteration functions. For some nonlinear system, the approximation could be useful in a very ting neighborhood. Such neighborhood determines the flexibility of intial value choosing. If the initial value is choosen far from the solution and the solving system is bad, then the iteration will be deficient. Therefore, to choose proper position and proper inital value to start iteration algorithm is critial to final result.
How to choose initial value
To get a good initial value for iteration, a proper range of solution should be guessed. Based on the biological property of detectors, the cross talk between target ion and untarget ion should be low. In extreme, the response of a wonderful detector to untarget ion should be a constant. First get rid of all posible background, and then solve the equation only with target ion.
That means to solve𝑥0𝑖 in following:
(𝐼𝑚𝑎𝑥)𝑖𝑖𝐻𝑖𝑖(𝑥𝑖)=𝐼𝑖−∑𝑖≠𝑗(𝐼𝑚𝑎𝑥)𝑖𝑗 𝑖=1,2,···,𝑛
For all
Then we got initial value for iteration:
𝑥0=⎛⎝⎜⎜⎜⎜𝑥01𝑥02···𝑥0𝑛⎞⎠⎟⎟⎟⎟
How to choose data?
In our test, the sample can be diluted to 10X or even 100X according to its quality. Therefore, we can choose the data that benefits to the data processing. From analysis, we want to make a robust approximation, which means a small perturbation will not lead to a big change of result. So the region with large derivative should be avoided. One thing should be noticed that since the inputs in algorithm are the detector results and outputs are deduced from response curves, the derivative of the inverse functions of the curve, not response curve, should be considered. Therefore, we choose the detector results with biggest change as the “proper” data. To define the “Change”, here considers the difference between adjacent data points.
Example
Here we provide an example for 2 variables:
H[n_, k_, x_, V_] := V*x^n/(k^n + x^n)(*Hill Function*); DH[n_, k_, x_, V_] := ( V*k^n n x^(-1 + n))/(k^n + x^ n)^2(*Derivative of Hill Function*); M = {{0.003,0.0007}} (*Initial Value,Determine by "Solve[5*x^2/((10^-3)^2+x^2)\\[Equal]4.5,x];Solve[7*x^2/((10^-3.5)^2+x^2)\[Equal]6,x]"*); For[i = 1, i < 10, i++, x1 = M[[i, 1]]; x2 = M[[i, 2]]; g1 = H[2, 10^(-3), x1, 5] + H[2, 10^(-1), x2, 4] - 4.5; g2 = H[2, 10^(-2), x1, 3] + H[2, 10^(-3.5), x2, 7] - 6; {x1d, y1d} = {x1, x2} - Inverse[{{DH[2, 10^(-3), x1, 5], DH[2, 10^(-1), x2, 4]}, {DH[2, 10^(-2), x1, 3], DH[2, 10^(-3.5), x2, 7]}}].{g1, g2}; AppendTo[M, {x1d, y1d}]](*Newton Method*); Print[M[[10]]]
Result:{0.00299939,0.000679022}
Compared to original:{0.003,0.0007}
Good approximation.