Promiscuous ligand-receptor binding

In this case study, we demonstrate how to use EQTK and be used to efficiently investigate promiscuous ligand-receptor binding. We use the term “promiscuous” because more than one ligand may bind a given receptor. Antebi, et al. (Cell, 2017) studied this system in their paper on combinatorial signaling in the bone morphogenetic protein signaling pathway.

We will specifically study what Antebi and coworkers refer to as the (2,2,2) system, in which each of two ligands may sequentially bind to one of two type A receptors and one of two type B receptors.

To start the analysis, we import Numpy and EQTK, and additionally HoloViews for plotting, also setting some nice defaults for the plots. We will also import Numba, which we will use to just-in-time compile our code.

import numpy as np
import pandas as pd

import tqdm

import eqtk

import holoviews as hv
WARNING:param.main: pandas could not register all extension types imports failed with the following error: cannot import name 'ABCIndexClass' from 'pandas.core.dtypes.generic' (/Users/bois/opt/anaconda3/lib/python3.8/site-packages/pandas/core/dtypes/