Each strand displacement was performed three times with different concentrations of invading strands. We assumed that they have the same rate constant and different yields, so each rate constant fitting model has four parameters: rate constant k, yield y1 in the first experiment with 20 nM invading strand, yield y2 in the second experiment with 30 nM invading strand and yield y3 in the third experiment with 40 nM invading strand. Parameters of models were fitted using least_squares method in lmfit library () to minimize the root mean squared error (RMSE) between experimental data Y(t) and simulated data F (t, k, y1, y2, y3), where simulated data was calculated by odeint function in scipy library () at time t with four parameters.