Information submitted through the support site is private but is not hosted within your secure CDD Vault. Please do not include sensitive intellectual property in your support requests.

Setting up a Dose Response Protocol

This article covers the details of dose/concentration response protocol set-up from raw data. We'll assume here that you've created protocols before, so if you have not, you can start with this introductory tutorial instead. Dose-response calculation entails the following steps:

Raw Data

Normalization of data

Fit parameters: Min, Max, Hill Slope

Fit validation: Activity Threshold

Data Calculations: EC50, IC50, etc

 Initial Setup

Once you've created a new protocol that has a name and a project but not much else, you will need to enter your readout definitions. Click on the Add dose-response calculation, and you will be presented with a form where you will build your calculation(s) (below picture showing only representative top portion of the form).

To Add a dose-response calculation, fill in the form working from top to bottom. Start by defining the raw data to be imported, followed by data normalization, fit parameters and validation, and finally the calculated end-point.


Raw Data

X axis: Concentrations should be entered in real units such as µM, M, mg/ml, etc. Do not convert concentration to log of concentration. Units for all of the data in this protocol should be consistent; you will not be able to set one experiment in ug/uL and another in uM (note how you always can use µ instead of u for denoting micro).

Y axis: If you plan to normalize your raw data against controls using CDD's built-in normalization, your raw data will be whatever you collect directly from your instrument: Fluorescense, Luminescense, Optical Density, etc. If you will be importing normalized or calculated data, name this readout with the final name you wish to appear on the plots (e.g. slope, ratio, %control).



Complete the normalization section of the form even if you don't plan to use CDD for data normalization. Just choose either the "already normalized" or "no controls" option.

To eliminate plate to plate variation, normalize data by calculating % Inhibition or % Activation based on the positive and negative controls. You'll need to import plate and well data as well as you control data, and we'll go over this here and here. You will also need to assign a name to the normalized readout and choose %inhibition or %activation calculation.

Here's how % Inhibition is calculated: inhibition.png

Here's how % Activation is calculated:activation.png

And here's how to define these calculations in your readout definition form:

  1. Choose a normalization option
  2. Choose calculation type "% inhibition or activation"
  3. Name your normalization appropriately

The drop-down for normalization includes the following options which will influence the fit validation as well as plot scales, so choose one that best describes your data:

Normalize within each plate (shown above)- both positive and negative controls are run on each screening plate. Controls will be averaged per plate, and test data normalization will be performed per plate. This will help remove any plate-to-plate variation.

Normalize within each run - positive and negative controls are present on one or on some plates. All controls will be averaged together across plates before test data are normalized.

Already normalized - if you perform another normalization that is not supported by CDD, this is the best option to use. 

No controls (do not normalize) - choose this option if you're using raw data that will not have a consistent scale.


Fit parameters: Min, Max, and Hill Slope

The curve fit is performed using the standard Hill equation, or the four parameter logistic curve:



  Response is the measured response on the Y axis.

  Baseline response is the minimum response at the bottom of the plateau.

  Maximum response is the maximum response at the top of the plateau.

  EC50 is the concentration at 50% response

  Concentration is the measured drug concentration on the X axis.

  Hill Slope is the Hill coefficient that describes the steepness of the curve.


Using this equation, we perform nonlinear regression with the  Levenberg–Marquardt algorithm. 


We give you the option to set rules around finding the best fit parameters: 

Use best fit - float all parameters, allowing the fit algorithm to automatically fit any value.

Lock fit parameters (shown above)- gives you the ability to define a set of parameters that  uniformly applied across all curves in the protocol. The curve fitter will optimize the parameters as usual, except it will enforce the ranges you have specified. You can restrict parameters to a range, but allow them to float within that range. You can define an explicit range (“from”), or a lower (“≥”) or upper (“≤”) bound of each of the three curve fit parameters, in addition to the existing exact number (“=”) option. For example, if you would like all curves in your inhibition assay to have a positive slope, you can set the Hill slope to be ≥ 0.


Fit validation: Activity Threshold

You can set the range of activity that defines inactive compounds, so that bogus IC50s will not be calculated for compounds that show insufficient activity. Instead, the reported value for these curves will be “> highest tested concentration”. This setting is part of the dose-response readout definition, and has two options:

At least one point must be OUTSIDE of the set range, in order for CDD Vault to calculate an IC50. If none of the points fall outside the set range, the reported value for these curves will be “> highest tested concentration”

  • “3 standard deviations from the negative control mean.” For raw data that is being normalized against controls within CDD Vault, the active compounds may be set to float depending on the imported negative control values.
  • “Custom” setting may be used for any curve fit.

Here are a couple of examples for this setting:

Inhibition assay

You are dealing with normalized data, so the range of activity will be from 0% to 100% inhibition. Your compounds should always exhibit inhibitory activity or no activity- there is no chance of activation.

You are measuring IC50.

The activity threshold would be set to < 50%. This means that if all of the measured activity values are < 50%, CDD will report IC50 > highest measured concentration.


Activation assay

You are dealing with normalized data, so the range of activity will be from 0% to 100% activation (you've selected "subtract normalized value from 100%" option when setting up the normalization above) . Your compounds should always exhibit activation activity or no activity- there is no chance of inhibition.

You are measuring EC50.

The activity threshold would be set to < 50%. This means that if all of the measured activity values are < 50%, CDD will report EC50 > highest measured concentration.


Mixed assay: inhibitors and activators

You are dealing with normalized data, but compounds may be either inhibitors (0% to 100% inhibition), or activators (-100% to 0% inhibition) so the range of activity will be from -100% to 100%, and EC50 can be at -50% or 50%

The activity threshold would be set from -50 to 50%. This means that if all of the measured activity values are from -50% to 50%, CDD will report EC50 > highest measured concentration.

 Hang in there, you're almost done!


Data Calculations: EC50, IC50, IC99, etc

Select one of the pre-defined end-point calculations, or create your own custom calculation by entering a name and specifying the desired intersection. 

For those of you who want more than one calculation for a given data set, we allow you to add additional calculations so you can easily compare without re-importing your data. Are you unsure whether an IC99 or IC98 provides a better approximation of the IC value? Add as many calculations as you want, look at the plots, then remove the ones you don't need. The plots and the calculated data will be automatically updated in the background.

Don't forget to set the display format to the desired number of decimal places or significant figures. This works just like in Excel - the underlying calculations are performed on the full values, but the displayed result is rounded per your display settings.


Now you're done. Don't forget to click "add/update calculation" at the bottom of the form. Here's what the complete form looks like for our example.


Related articles:

Dose Response Import File

Plate Control Layout

Activity and Curve Validation



Have more questions? Submit a request


Please sign in to leave a comment.