### Introduction

**Why do we assume symmetry in our concentration-effect relationship?**

I recently came across an article published by Piet Hein van der Graaf and Rik Schoemaker from 1999 on the use of **asymmetry **in concentration-effect curves.

“Analysis of asymmetry of agonist concentration–effect curves”: https://www.sciencedirect.com/science/article/pii/S105687199900026X

They make a valid point on an assumption we commonly do not investigate: a logistic or a Hill model assumes a **symmetric **relationship. However, is it really?

They analysed different concentration-effect curves with a1-adrenoceptor agonists in rat aorta and showed that a asymmetrical curve was able to better fit the data than the ‘standard’ symmetrical hill equation. So what does it mean to include asymmetry in a relationship?

### Terminology

To understand asymmetry, it is important to know the following terminology:

**Mid-point: **also called the EC50, in which half of the effect is reached.

**Inflection point:** as wikipedia puts it, “a point on a continuous plane curve at which the curve changes from being concave (concave downward) to convex(concave upward), or vice versa”

**Equations**

I found out that one complicating factor in exploring and understanding asymmetry equations is that there are different parameterizations of the formula’s available. In this post I will use the parameterization as presented in:

Assessing the (a)symmetry of concentration-effect curves:empirical versus mechanistic models

Let’s start with a standard Hill equation, which we can rewrite as:

Since this curve is symmetrical, the mid-point ánd the inflection point are equal.

We can use the **Richards function** (*Richards, F. J. (1959). “A Flexible Growth Function for Empirical Use”. Journal of Experimental Botany. 10 (2): 290–300. doi:10.1093/jxb/10.2.290*) to introduce asymmetry in our relationship with the parameter * s*.

In this equation, when s == 1, we return to the previous (symmetrical) Hill equation. In all other scenario’s, the concentration-effect relationship is asymmetrical.

We can calculate the mid-point (x50) and the inflection point (xi) using the following equations:

**Application**

Let’s use R to simulate some scenario’s with this Richards function! First define the previously described equations in R

# Richards equation E = a/((1+10^(m*(xb-x)))^s) # mid-point x50 = xb - (1/m)*log10(2^(1/s)-1) # Inflection point xi = xb + (1/m) * log10(s)

This will give us the effect (E) at different values for x, the mid-point (x50) and the inflection point (xi).

If we simulate a range of concentrations over multiple orders of magnitude (e.g. from 10^{-10} to 10^{10}) and define our parameter objects, we can simulate the effect at these concentrations:

x<-seq(-10,10,length.out = 100) a <- 1 m <- 1 xb <- 0 s <- 0.5 # Richards equation E = a/((1+10^(m*(xb-x)))^s) # Mid-point x50 = xb - (1/m)*log10(2^(1/s)-1) # Effect at mid-point E50 = a/2 # Inflection point xi = xb + (1/m) * log10(s) # Effect at inflection point Ei = a/((1+10^(m*(xb-xi)))^s) # Data frame with C-E df<-data.frame(logC=x,E=E) # Data frame with mid-point and inflection point points <-data.frame(Point='Mid-point',x=10^x50,E=E50) row <-data.frame(Point='Inflection point',x= 10^xi,E=Ei) points <- rbind(points,row)

Remember that x equals the log10 of [A], which we can backtransform to [A].

We can now use ggplot2 to plot these results:

library(ggplot2) ggplot(df,aes(x=10^logC,y=E))+ geom_line() + theme_bw()+ xlab("Log10 [Concentration]")+ ylab('Effect')+ geom_point(data=points,aes(x=x,y=E,shape=Point),size=3)+ scale_shape_manual(values=c(1,3))+ scale_x_log10()

or in a case where s = 0.1

### Asymmetry in PMX models

Due to the existence of asymmetrical curves in biology, it would be interesting to investigate asymmetrical concentration-effect relationships in population PK/PD models. The difference between the mid-point and the inflection point can give an indication on the severity of this asymmetry in the curve and whether, if at all, there is a significant difference with a parsimonious symmetrical relationship (EMAX/Hill).

### Shiny simulations

We can create a very simple Shiny application to have an interactive interface to explore different parameter values:

**ui.R**

library(shiny) # Define UI for application that draws a histogram shinyUI(fluidPage( # Application title titlePanel("Asymmetry function simulation"), # Sidebar with a slider input for number of bins sidebarLayout( sidebarPanel( numericInput("a","Emax",min = 0,value = 1), numericInput("m","Hill coefficient",min = 0.1,value = 1), numericInput("xb","Log10 Xb",value = 0), numericInput("s","Asymmetry factor",min = 0.1,value = 1,step = 0.1), numericInput("min_C","Log10 minimal concentration",value = -10), numericInput("max_C","Log10 maximal concentration",min = 0,value = 10) ), # Show a plot of the generated distribution mainPanel( plotOutput("distPlot") ) ) ))

**server.R**

library(shiny) shinyServer(function(input, output) { c_range <- reactive({ x<-seq(input$min_C,input$max_C,length.out = 100) return(x) }) df <- reactive({ # Richards equation E = input$a/((1+10^(input$m*(input$xb-c_range())))^input$s) df<-data.frame(logC=c_range(),E=E) return(df) }) points <- reactive({ # Mid-point x50 = input$xb - (1/input$m)*log10(2^(1/input$s)-1) # Effect at mid-point E50 = input$a/2 # Inflection point xi = input$xb + (1/input$m) * log10(input$s) # Effect at inflection point Ei = input$a/((1+10^(input$m*(input$xb-xi)))^input$s) points <-data.frame(Point='Mid-point',x=10^x50,E=E50) row <-data.frame(Point='Inflection point',x= 10^xi,E=Ei) points <- rbind(points,row) return(points) }) output$distPlot <- renderPlot({ ggplot(df(),aes(x=10^logC,y=E))+ geom_line() + theme_bw()+ xlab("Concentration")+ ylab('Effect')+ geom_point(data=points(),aes(x=x,y=E,shape=Point),size=3)+ scale_shape_manual(values=c(1,3))+ scale_x_log10() }) })

**Acknowledgments**

I would like to thank Hadi Taghvafardfor his input on asymmetrical equations.

**COMMENT**

Any suggestions or typo’s? Leave a comment or contact me at info@pmxsolutions.com!