From f0051c3c15a5e23c6bafefcfa105fffd5a3f34c2 Mon Sep 17 00:00:00 2001 From: Jens Preussner Date: Wed, 1 Mar 2017 14:14:33 +0100 Subject: [PATCH] Added circuit example to Readme --- .Rbuildignore | 1 + README.md | 69 ++++++++++++++++++++++++++++++++- construct.png | Bin 0 -> 8088 bytes data/circuit_data_discrete.rda | Bin 568 -> 594 bytes 4 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 construct.png diff --git a/.Rbuildignore b/.Rbuildignore index 91114bf..4b3f9f2 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -1,2 +1,3 @@ ^.*\.Rproj$ ^\.Rproj\.user$ +^data-raw$ diff --git a/README.md b/README.md index 58de4d0..94e28cd 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,6 @@ Given three random vectors `x1`, `x2` and `z`, the PID can be calculated from th ```r library(rPID) -library(infotheo) z <- rnorm(100) x1 <- rnorm(100) @@ -27,13 +26,79 @@ x2d <- discretize(x2) decomposition <- pid(zd, x1d, x2d) ``` +## Example: Genetic circuits + +![Genetic circuit](https://github.molgen.mpg.de/raw/loosolab/rPID/master/construct.png) + +Let's assume that the proteins AmtR (green) and SrpR (blue) can form a heterodimer to act on the YFP promoter (red) and drive YFP expression. +They are connected in a AND gated genetic circuit, which means that either expression of AmtR or SrpR alone does not express YFP. + +The corresponding expression truth table looks like this: + +| AmtR expression | SrpR expression | YFP expression | +| --------------- | --------------- | -------------- | +| low | low | low | +| high | low | low | +| low | high | low | +| high | high | high | + +Now assume we collected expression data for AmtR, SrpR and YFP from 400 cells, with all expression combinations present in 100 cells, respectively. + +```r +data(circuit_data) +head(circuit_data) +``` + +The correlation values alone do lead to the association of YFP with AmtR or SrpR: + +```r +cor(circuit_data$YFP, circuit_data$AmtR, method="pearson") +# [1] 0.3688194 +cor(circuit_data$YFP, circuit_data$SrpR, method="pearson") +# [1] 0.3539511 +``` + +However, using partial information decomposition, we can explore three way interactions and quantify unique, synergistic and redundant information between the target varibal (`z = YFP`) and the set of two source variables (`x1 = AmtR, x2 = SrpR`): + +```r +# Use discretized expression data +data(circuit_data_discrete) + +pid(z = circuit_data_discrete$YFP, x1 = circuit_data_discrete$AmtR, x2 = circuit_data_discrete$SrpR) +# $unique_x1 +# [1] 0.0370862 +# +# $unique_x2 +# [1] 0.0368186 +# +# $synergy +# [1] 0.597708 +# +# $redundancy +# [1] 0.3251131 +``` + +The very high value of synergy hints that only both source variables together are able to provide full information about the target variable. +Please feel free to explore other combinations of source and target variables: + +```r +# No unique or synergistic information, total redundancy: +pid(z = circuit_data_discrete$YFP, x1 = circuit_data_discrete$AmtR, x2 = circuit_data_discrete$AmtR) + +# No synergistic information, most of the information is unique to x1: +pid(z = circuit_data_discrete$YFP, x1 = circuit_data_discrete$YFP, x2 = circuit_data_discrete$SrpR) + +# High synergistic information and unique information from x2: +pid(z = circuit_data_discrete$SrpR, x1 = circuit_data_discrete$AmtR, x2 = circuit_data_discrete$YFP) +``` + ## Installation and prerequisites To install the package, use: ```r library(devtools) -install.packages("infotheo") +install.packages("entropy") install_github("loosolab/rPID", host="github.molgen.mpg.de") ``` diff --git a/construct.png b/construct.png new file mode 100644 index 0000000000000000000000000000000000000000..3c5a6cb57aad70248fecdc38d43f668f4c3f3967 GIT binary patch literal 8088 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 Y)FQ;SYWRw-he;=Kmb4i&;z&t zaDX1}BAOZv000000LU0(0ymazlist7xIm^}WoL=UWl2>!CCn_`5<8Krzmv?fm$Gy2;9}anTz3)7qFPD4m z@4Ml zZpm|X&bv8P(l%Y&Uqe&QEhT*X?^g6_O?)lS1-rfT#*Z8(eEi~g?ayb=<=)Njb_h1# zB5L#BeDQMSd@IH0Tzs6zcWA`hfkbZ`)^!9*Es@-ratNY4d9hhR6O%1b2p<-OcwzgE zGq6<=yaYt~*GfDQ6%mmU6L($u65@1$1R!FhR7V^tDxz8;nNSFae{C8Ga~_MAPPi)2?-EFM1l*CTVx+#N^HnBLKv{7>09atIBVGVN06+jh z0Z;>&0CunegK9-HC;$UM&@vB3p@0UB4H!mE28}cZ2|ZGZB>*(_00000+De|Gp`%8C zXk-8b7yxL{(S&5sXwyJv$NkzZUwu``vA*)(g|8VcN$Xovy=9l!Il0bWFMQ(nG@O#VopCu)p068tpF0Uf$rX-n$#S~qaV}~q z=^HNXud7qeEhT+C?YtDGzE)G_Uvj`nYRut9C`Ot8MR^`4}j+GEiv7 zqSi|mjiX{rGYmDDV#P*`(uJ5!6B8818dwb_6q%UKFhtTZvrI-!6wOIe2}ns|P?>~G z!jXUO=1q$ghQb7jOsrL;5JF{*Bw|WRN-ZQ&NhA|YV5Eg8rb!8s%qFpcBng;8WHz8U@r