Plots dose/response data as mean responses to a dose with standard errors. Fits sigmoidal curve to data, calculating EC50 and the Hill Coefficient, then plots the sigmoid along with a label indicating the EC50.
Ritchie Smith (2020). doseResponse (https://www.mathworks.com/matlabcentral/fileexchange/33604-doseresponse), MATLAB Central File Exchange. Retrieved .
Works beautifully, very useful and elegant function
What if I have many EC50 curves to generate, all at the same concentrations? What would be the best way to iterate this script across those samples?
a. Several minor issues in this code:
1. in the help documents, line 6: 'man' should be 'mean'
2. as Spencer Scott pointed out, the initial guess for the ec50 should not be midResponse
b. The issue Katie raised is worth clarifying. The doubt that x should be the denominator is solved by the parameters beta(1) and beta(2). It is easy to see that by a transformation, these two forms of the sigmoid equation are equivalent. It is just that you get different beta(1) and beta(2) with different meanings. However, this code should specify this fact.
c. The normalization method (simply dividing the response by mean response at 0) does not seems to be specifically necessary. Including those points in the dose response curve seems to be a better option.
In addition to the the beta(3) problem mentioned before, it looks to me that the sigmoid model might also be incorrect.
In the file, it is:
But reading through literature, it seems like x should be the denominator instead of the numerator in the fraction, so it should read:
I'm new to this subject, so please feel free to advise if I am wrong.
I had some problems with this probably because my response *increases* as my dose increases. However, it seems to have worked when I changed beta(3) to not be *midResponse*, but rather *midDose* which is actually what EC50 should be anyway. (EC50 = dosage at half response, not just half response)
Came across this as I am looking for a Matlab solution to MTT assay measurements for IC50.
I have run this code, with the response being the live cell count and getting really weird results (negative numbers) and I know the numbers work with the excel model provided to me by the MTT assay tech.
I am guessing my inputs are not correct for this code and was wondering if you could clarify. Thanks!
It's very easy to use and the developer responded very quickly and fixed a bug within 1 hour - Now that's what I call great service!
Thank you very much for sharing this code.
The dose vector may now contain 0 values. These are handled as controls, and the average value of the corresponding responses will be used to normalise all other responses.
Updated to smooth drawing of sigmoid over all ranges of concentrations, with thanks to Lasse Nørfeldt for pointing it out.
Inspired by: dose_response