-
A chemical-genetic interaction map of smallmolecules using
high-throughput imaging incancer cellsMarco Breinig, Felix A.
Klein, Wolfgang Hu-ber and Michael BoutrosAccepted for publication
at Molecular Sys-tems Biology
Felix A. Klein[1em] European Molecular Biology Laboratory
(EMBL),Heidelberg, [email protected]
October 31, 2017
Contents
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 31.1 Data avalability . . . . . . . . . . . . . . . . . .
. . . . . . . . 3
1.2 Accessing the data contained in the PGPC package . . . . . .
. . 3
2 Image and data processing . . . . . . . . . . . . . . . . . .
. . . 52.1 Image processing on cluster . . . . . . . . . . . . . .
. . . . . 5
2.2 Data extraction and conversion . . . . . . . . . . . . . . .
. . . 6
2.3 Annotation . . . . . . . . . . . . . . . . . . . . . . . . .
. . . 7
2.4 Removal/Filtering of empty wells and features . . . . . . .
. . . . 8
2.5 Generalized logarithm transformation . . . . . . . . . . . .
. . . 9
3 Feature selection and calculation of interactions . . . . . .
. . . 103.1 Quality control of features . . . . . . . . . . . . . .
. . . . . . . 10
3.2 Feature selection by stability . . . . . . . . . . . . . . .
. . . . 12
3.3 Calculation of interactions. . . . . . . . . . . . . . . . .
. . . . 14
4 Display of phenotypes as ’phenoprints’ . . . . . . . . . . . .
. . 15
-
PGCP, 2014
5 Display of interactions as star plots. . . . . . . . . . . . .
. . . . 205.1 Scaled to the range of 0 to 1 . . . . . . . . . . . .
. . . . . . . 20
5.2 Using the absolute values of an interaction. . . . . . . . .
. . . . 25
6 Clustering of cell lines . . . . . . . . . . . . . . . . . . .
. . . . . 306.1 Clustering cell lines based on features. . . . . .
. . . . . . . . . 30
6.2 Clustering cell lines based on interaction terms . . . . . .
. . . . 32
7 Compound - cell line interaction network . . . . . . . . . . .
. . 347.1 Extract significant interactions for visualization. . . .
. . . . . . . 34
7.1.1 Removing controls from the interactions. . . . . . . . . .
. . 357.1.2 Pleiotropic degree . . . . . . . . . . . . . . . . . .
. . . 377.1.3 Grouping of features into feature classes. . . . . .
. . . . . . 427.1.4 Interaction map export for Cytoscape . . . . .
. . . . . . . . 43
8 Heat maps of interaction profiles . . . . . . . . . . . . . .
. . . . 45
9 Clustering of interaction profiles . . . . . . . . . . . . . .
. . . . 489.1 Clustering of interaction profiles using the filtered
data . . . . . . . 48
9.1.1 Reordered dendrogram . . . . . . . . . . . . . . . . . . .
49
9.2 Structural similarity of compounds. . . . . . . . . . . . .
. . . . 509.2.1 Chemical similarity heat map ordered by interaction
profile simi-
larity . . . . . . . . . . . . . . . . . . . . . . . . . . .
529.2.2 Combined cluster heat map . . . . . . . . . . . . . . . . .
53
9.3 Clustering of interaction profiles using the filtered data
of a singleparental cell line . . . . . . . . . . . . . . . . . . .
. . . . . . 55
9.4 Clustering of interaction profiles using the filtered cell
number asfeature.. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 57
10 Correlation between interaction profiles of shared drug
targets. 6010.1 Using the target selectivity for grouping . . . . .
. . . . . . . . . 60
10.2 Using the chemical similarity for grouping . . . . . . . .
. . . . . 63
11 Follow-up: Drug combinations . . . . . . . . . . . . . . . .
. . . 6811.1 Quality control . . . . . . . . . . . . . . . . . . .
. . . . . . . 70
11.2 Interactions / Synergies . . . . . . . . . . . . . . . . .
. . . . . 7211.2.1 Analysis functions . . . . . . . . . . . . . . .
. . . . . . 7211.2.2 Investigating drug synergies . . . . . . . . .
. . . . . . . . 7711.2.3 Investigating drug synergies, DLD cell
line. . . . . . . . . . . 81
12 Follow-up: Proteasome inhibition assay . . . . . . . . . . .
. . . 8512.0.1 Data processing and quality control. . . . . . . . .
. . . . . 8512.0.2 Viability normalization . . . . . . . . . . . .
. . . . . . . 8612.0.3 Proteasome activity normalization . . . . .
. . . . . . . . . 8812.0.4 Result summary . . . . . . . . . . . . .
. . . . . . . . . 89
13 Session Info . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 92
2
-
PGCP, 2014
1 Introduction
This document is associated with the R package PGPC, which
contains the input data andthe R code for the statistical analysis
presented in the following paper:
Systems pharmacology by integrating image-based phenotypic
profiling and chemical-geneticinteraction mappingMarco Breinig,
Felix A. Klein, Wolfgang Huber, and Michael Boutrosin
preparation
The figures of the paper and the intermediate results are
reproduced in this vignette. Inter-mediate results are stored in
the folder "result" created in the current working directory.
library("PGPC")
if(!file.exists(file.path("result","data")))
dir.create(file.path("result","data"),recursive=TRUE)
if(!file.exists(file.path("result","Figures")))
dir.create(file.path("result","Figures"),recursive=TRUE)
To reduce the computational effort required, the package
contains some analysis resultsalready in precomputed form. However,
the corresponding code junks are contained in thisdocument, and
they can be executed to recompute all results except the initial
image analysis.For the inital image analysis approximately 3 TB of
image data were processed. We providethe analysis of one single
well to show the steps used in the initial image analysis.
1.1 Data avalability
Complementary views on this dataset are available through
different repositories. The imagedata files are available from the
BioStudies database at the European Bioinformatics
Institute(EMBL-EBI) under the accession S-BSMS-PGPC1. An
interactive front-end for explorationof the images is provided by
the IDR database (http://dx.doi.org/10.17867/10000101).
The authors are hosting an interactive webpage to browse images
and interaction profiles athttp://dedomena.embl.de/PGPC.
The bulk data can also be provided on hard disk drives upon
request.
1.2 Accessing the data contained in the PGPC package
The final data object can be loaded by
data("interactions", package="PGPC")
A description of this object is given in the following Section
together with further data objectsthat are contained within this
package. Additional information on the objects can be obtainedfrom
the R documentation by invoking the help page.
?interactions
The package contains the following data objects:
3
http://wwwdev.ebi.ac.uk/biostudies/studies/S-BSMS-PGPC1http://dx.doi.org/10.17867/10000101http://dedomena.embl.de/PGPC
-
PGCP, 2014
ftrs
data.frame with the feature data extracted from the images using
imageHTS.
datamatrixTransformed
Feature data represented as a list containing array D and list
anno. D is a four-dimensional array of the filtered feature data
that passed quality control. The di-mensions represent:
1. drug
2. cell line
3. replicate
4. feature
To select the second feature of the first replicate of the third
drug of the fourth cellline use:value=datamatrixfull$D[3,4,1,2]
To select all values of the drugs, cell lines and replicates for
the first feature use:values=datamatrixfull$D[, , ,1]
anno is annotation of the dimensions of D, represented as a list
containing a data.framenamed drug, a data.frame named line, a
vector named repl and a vector named ftr.Use $ to access the
elements (e. g. anno$drug).
selected
list of 4 elements containing the results of the feature
selection. The elements are, thevector selected of selected
features, the vector correlation of their correlation, thevector
ratioPositive with the fraction of positive correlations for each
iteration anda list correlationAll which contains the correlations
of all features at each iterationstep.
interactions
list containing the list anno, array D, array res, list effect
and array pVal.
res is a four-dimensional array of the interaction terms and has
the same dimensionsas D. The dimensions represent:
1. drug
2. cell line
3. replicate
4. feature
effect contains the drug and cell line effect as
three-dimensional array
drug and line with the following dimensions:
1. drug/cell line
2. replicate
3. feature
pVal is an array containing the p-values, adjusted p-values and
correlation betweenreplicates of interactions. The dimensions
represent:
1. drug
2. cell line
4
-
PGCP, 2014
3. p-value, adjusted p-value, correlation
4. feature
2 Image and data processing
2.1 Image processing on cluster
The images were processed using the R packages imageHTS and
EBImage [1] adaptingprevious strategies [2, 3, 4]. The following
code shows the processing script that was usedto segment the images
and extract features. The calculations were parallelized by
splittingthe wells defined by the unique identifiers unames into
different processes. The object ftrscontains all the extracted
features and is included in this package.
In the following code serverURL is the path to the folder which
contains the example filesand images in the local installation of
the PGPC package. localPath is a temporary localworking directory
for the results. If you want to keep the results beyound the R
session changethis path to a directory on your machine. If you want
to run this example code approximatly150 MB free space are required
for the 1 example wells. For the whole screen of 36864
wellsapproximately 5 TB were required. The required annotation and
image files are automaticallyretrieved from the provided serverURL
if they are not found in the local directory.
localPath = tempdir()
serverURL = system.file("extdata", package = "PGPC")
imageConfFile = file.path("conf", "imageconf.txt")
## circumvent memory problem on 32bit windows by segementing
only spot 1.
if(.Platform$OS.type == "windows" & R.Version()$arch ==
"i386")
imageConfFile = file.path("conf", "imageconf_windows32.txt")
x = parseImageConf(imageConfFile, localPath=localPath,
serverURL=serverURL)
unames = getUnames(x) ## select all wells for processing
unames = c("045-01-C23") ## select single well for
demonstration
segmentWells(x, unames, file.path("conf",
"segmentationpar.txt"))
PGPC:::extractFeaturesWithParameter(x,
unames,
file.path("conf", "featurepar.txt"))
summarizeWellsExtended(x, unames, file.path("conf",
"featurepar.txt"))
## PGPC:::mergeProfiles(x) only needed if wells were processed
in parallel
ftrs = readHTS(x, type="file",
filename=file.path("data", "profiles.tab"),
format="tab")
5
-
PGCP, 2014
Images were processed in parallel on a cluster and the
corresponding session info is providedhere:
R version 3.0.1 (2013-05-16)
Platform: x86_64-unknown-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8
[4] LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8
LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=C LC_NAME=C LC_ADDRESS=C
[10] LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=C
attached base packages:
[1] parallel grid stats graphics grDevices utils datasets
methods base
other attached packages:
[1] PGPC_0.1.1 SearchTrees_0.5.2 ggplot2_0.9.3.1
imageHTS_1.10.0
[5] cellHTS2_2.24.0 locfit_1.5-9.1 hwriter_1.3 vsn_3.28.0
[9] genefilter_1.42.0 EBImage_4.2.1 LSD_2.5 ellipse_0.3-8
[13] schoolmath_0.4 colorRamps_2.3 limma_3.16.4
splots_1.26.0
[17] geneplotter_1.38.0 lattice_0.20-15 annotate_1.38.0
AnnotationDbi_1.22.5
[21] Biobase_2.20.0 BiocGenerics_0.6.0 gplots_2.11.0.1
MASS_7.3-26
[25] KernSmooth_2.23-10 caTools_1.14 gdata_2.12.0.2
gtools_2.7.1
[29] RColorBrewer_1.0-5 BiocInstaller_1.10.2
loaded via a namespace (and not attached):
[1] abind_1.4-0 affy_1.38.1 affyio_1.28.0 bitops_1.0-5
[5] Category_2.26.0 class_7.3-7 colorspace_1.2-2 DBI_0.2-7
[9] dichromat_2.0-0 digest_0.6.3 e1071_1.6-1 graph_1.38.0
[13] GSEABase_1.22.0 gtable_0.1.2 IRanges_1.18.1 jpeg_0.1-4
[17] labeling_0.1 munsell_0.4 plyr_1.8 png_0.1-4
[21] prada_1.36.0 preprocessCore_1.22.0 proto_0.3-10
RBGL_1.36.2
[25] reshape2_1.2.2 robustbase_0.9-7 rrcov_1.3-3
RSQLite_0.11.4
[29] scales_0.2.3 splines_3.0.1 stats4_3.0.1 stringr_0.6.2
[33] survival_2.37-4 tiff_0.1-4 tools_3.0.1 XML_3.96-1.1
[37] xtable_1.7-1
2.2 Data extraction and conversion
The ftrs object is included in this vignette and the following
code junks can be executed togenerate the results described in the
following.
The extracted feature data are represented in data.frame where
each row corresponds to awell in the screen defined by the unique
identifier uname in the first column. All remainingcolumns
represent the extracted features. There are 36864 wells (12 cell
lines * 2 replicates* 4 plates * 384 wells).
data("ftrs", package="PGPC")
dim(ftrs)
ftrnames = colnames(ftrs[,-1])
For further processing the data are transformed into an
array.
6
-
PGCP, 2014
makeArray
-
PGCP, 2014
line
-
PGCP, 2014
levels = apply(D, 4, function(x) length(unique(c(x))))
D = D[,,,!(levels < 2000)]
anno$ftr = anno$ftr[-which(levels < 2000)]
datamatrixWithAnnotation = list(D=D, anno=anno)
save(datamatrixWithAnnotation,
file=file.path("result","data","datamatrixWithAnnotation.rda"),
compress="xz")
2.5 Generalized logarithm transformation
The data is transformed to a logarithmic scale using a so-called
generalized logarithm trans-formation [5]:
f(x; c) = log
(x+√x2 + c2
2
). 1
This avoids singularities for values equal to or smaller than 0.
We use the 5% quantile asparameter c. In the cases where the 5%
quantile is zero we use 0.05 times the maximum asparameter c.
glog
-
PGCP, 2014
1372 chemical compounds× 12 cell line× 2 biological replicate×
385 phenotypic features
A precomputed version of the datamatrixTransformed is available
from the package and canbe loaded bydata("datamatrixTransformed",
package="PGPC").
3 Feature selection and calculation of interactions
3.1 Quality control of features
To assess the reproducibility of a feature, we calculate the
correlation of each feature fromthe replicates.
getCorrelation
-
PGCP, 2014
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●
●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
0 100 200 300 400
0.0
0.4
0.8
feature
corr
elat
ion
coef
ficie
nt
●
●
●
●
●
●
nnseg.dna.m.eccentricity.qt.0.01nseg.0.m.cx.mean
Figure 1: Correlation of featuresThis figure is the basis for
Figure 1B in the paper.
for (i in seq_along(selection)){
plot(c(datamatrixTransformed$D[,,1,match(selection[i],
datamatrixTransformed$anno$ftr)]),
c(datamatrixTransformed$D[,,2,match(selection[i],
datamatrixTransformed$anno$ftr)]),
xlab="replicate 1",
ylab="replicate 2",
main = selection[i],
pch=20,
col="#00000033",
asp=1)
}
10 12 14 16
11.0
12.0
13.0
14.0
n
replicate 1
repl
icat
e 2
−2.5 −2.0 −1.5
−2.
2−
2.0
−1.
8−
1.6
nseg.dna.m.eccentricity.qt.0.01
replicate 1
repl
icat
e 2
9.5 10.0 10.5
9.6
9.7
9.8
9.9
10.1
nseg.0.m.cx.mean
replicate 1
repl
icat
e 2
Figure 2: Correlation of feature n,
nseg.dna.m.eccentricity.qt.0.01 and nseg.0.m.cx.mean
Features with a correlation lower than 0.7 were removed from
further analysis.
## remove columns with low correlation or few levels
remove = correlation$name[correlation$cor < 0.7]
D = datamatrixTransformed$D[,,, -match(remove,
datamatrixTransformed$anno$ftr)]
anno = datamatrixTransformed$anno
anno$ftr = anno$ftr[-match(remove, anno$ftr)]
datamatrixFiltered = list(D=D, anno=anno)
save(datamatrixFiltered,
file=file.path("result","data","datamatrixFiltered.rda"),
compress="xz")
rm(datamatrixTransformed)
The data are now represented in the 4-dimensional array D with
dimensions
11
-
PGCP, 2014
1372 chemical compounds× 12 cell line× 2 biological replicate×
310 phenotypic features
3.2 Feature selection by stability
The data contains features that are partially redundant.
Therefore we aim to select thefeatures that contain the least
redundant information. As first step we center and scale
thefeatures, using the median as a measure of location and the
median absolute deviation as ameasure of spread. The features are
selected as described by Laufer et al. [4] starting withcell number
as first selected feature.
D = apply(datamatrixFiltered$D,
2:4,
function(x) { (x - median(x,na.rm=TRUE)) / mad(x, na.rm=TRUE) }
)
D[!is.finite(D)] = 0
dim(D) = c(prod(dim(D)[1:2]),2,dim(D)[4])
forStabilitySelection = list(D=D,
Sample = 1:prod(dim(D)[1:2]),
phenotype = datamatrixFiltered$anno$ftr)
preselect=c("n")
selected
-
PGCP, 2014
col = ifelse(ratioPositive > 0.5,
brewer.pal(3,"Pastel1")[2], brewer.pal(3,"Pastel1")[1]),
ylab = "information gain")
Cel
l num
ber
Cel
l maj
or a
xis
Act
in H
aral
ick
text
ure
(1)
Nuc
lear
maj
or a
xis
Nuc
lear
−A
ctin
ecc
entr
icity
SD
Act
in H
aral
ick
text
ure
SD
(1)
Nuc
lear
Har
alic
k te
xtur
e (1
)N
ucle
ar e
ccen
tric
ity5%
qua
ntile
of c
ell r
adiu
s5%
qua
ntile
of N
ucle
ar−
Act
in in
tens
ityA
ctin
ecc
entr
icity
Nuc
lear
ecc
entr
icity
SD
Nuc
lear
Har
alic
k te
xtur
e S
D (
1)N
ucle
ar−
Act
in H
aral
ick
text
ure
(1)
Act
in H
aral
ick
text
ure
(2)
Nuc
lear
−A
ctin
Har
alic
k te
xtur
e S
D (
1)N
ucle
ar H
aral
ick
text
ure
SD
(2)
Nuc
lear
−A
ctin
inte
nsity
MA
DA
ctin
Har
alic
k te
xtur
e S
D (
2)5%
qua
ntile
of N
ucle
ar r
adiu
s99
% q
uant
ile o
f Nuc
lear
rad
ius
Loca
l cel
l den
sity
SD
99%
qua
ntile
of c
ell m
ajor
axi
sN
ucle
ar H
aral
ick
text
ure
SD
(3)
Nuc
lear
are
aN
ucle
ar−
Act
in m
ajor
axi
sA
ctin
Har
alic
k te
xtur
e S
D (
3)N
ucle
ar H
aral
ick
text
ure
(2)
1% q
uant
ile o
f Nuc
lear
−A
ctin
inte
nsity
Nuc
lear
−A
ctin
Har
alic
k te
xtur
e (2
)95
% q
uant
ile o
f nuc
lear
are
a95
% q
uant
ile o
f Nuc
lear
−A
ctin
maj
or a
xis
Nuc
lear
−A
ctin
Har
alic
k te
xtur
e S
D (
2)N
ucle
ar−
Act
in H
aral
ick
text
ure
SD
(3)
99%
qua
ntile
of N
ucle
ar−
Act
in e
ccen
tric
ity99
% q
uant
ile o
f cel
l rad
ius
1% q
uant
ile o
f nuc
lear
inte
nsity
Act
in e
ccen
tric
ity S
DN
ucle
ar−
Act
in H
aral
ick
text
ure
SD
(4)
1% q
uant
ile o
f cel
l maj
or a
xis
info
rmat
ion
gain
0.0
0.2
0.4
0.6
0.8
Figure 3: Correlation of selected feature after subtraction of
the information containted in the previ-ously selected features
par(mfrow=c(2,1))
barplot(ratioPositive-0.5,
names.arg=PGPC:::hrNames(selectedFtrs),
las=2,
col = ifelse(ratioPositive > 0.5,
brewer.pal(3,"Pastel1")[2], brewer.pal(3,"Pastel1")[1]),
offset=0.5,
ylab = "fraction positive correlated")
#abline(a=0.5,0)
selectedFtrs=selectedFtrs[ratioPositive > 0.5]
D = datamatrixFiltered$D[,,,match(selectedFtrs,
datamatrixFiltered$anno$ftr)]
anno = datamatrixFiltered$anno
anno$ftr = anno$ftr[match(selectedFtrs, anno$ftr)]
datamatrixSelected = list(D=D, anno=anno)
save(datamatrixSelected,
file=file.path("result","data","datamatrixSelected.rda"),
compress="xz")
Cel
l num
ber
Cel
l maj
or a
xis
Act
in H
aral
ick
text
ure
(1)
Nuc
lear
maj
or a
xis
Nuc
lear
−A
ctin
ecc
entr
icity
SD
Act
in H
aral
ick
text
ure
SD
(1)
Nuc
lear
Har
alic
k te
xtur
e (1
)N
ucle
ar e
ccen
tric
ity5%
qua
ntile
of c
ell r
adiu
s5%
qua
ntile
of N
ucle
ar−
Act
in in
tens
ityA
ctin
ecc
entr
icity
Nuc
lear
ecc
entr
icity
SD
Nuc
lear
Har
alic
k te
xtur
e S
D (
1)N
ucle
ar−
Act
in H
aral
ick
text
ure
(1)
Act
in H
aral
ick
text
ure
(2)
Nuc
lear
−A
ctin
Har
alic
k te
xtur
e S
D (
1)N
ucle
ar H
aral
ick
text
ure
SD
(2)
Nuc
lear
−A
ctin
inte
nsity
MA
DA
ctin
Har
alic
k te
xtur
e S
D (
2)5%
qua
ntile
of N
ucle
ar r
adiu
s99
% q
uant
ile o
f Nuc
lear
rad
ius
Loca
l cel
l den
sity
SD
99%
qua
ntile
of c
ell m
ajor
axi
sN
ucle
ar H
aral
ick
text
ure
SD
(3)
Nuc
lear
are
aN
ucle
ar−
Act
in m
ajor
axi
sA
ctin
Har
alic
k te
xtur
e S
D (
3)N
ucle
ar H
aral
ick
text
ure
(2)
1% q
uant
ile o
f Nuc
lear
−A
ctin
inte
nsity
Nuc
lear
−A
ctin
Har
alic
k te
xtur
e (2
)95
% q
uant
ile o
f nuc
lear
are
a95
% q
uant
ile o
f Nuc
lear
−A
ctin
maj
or a
xis
Nuc
lear
−A
ctin
Har
alic
k te
xtur
e S
D (
2)N
ucle
ar−
Act
in H
aral
ick
text
ure
SD
(3)
99%
qua
ntile
of N
ucle
ar−
Act
in e
ccen
tric
ity99
% q
uant
ile o
f cel
l rad
ius
1% q
uant
ile o
f nuc
lear
inte
nsity
Act
in e
ccen
tric
ity S
DN
ucle
ar−
Act
in H
aral
ick
text
ure
SD
(4)
1% q
uant
ile o
f cel
l maj
or a
xisfrac
tion
posi
tive
corr
elat
ed
0.2
0.4
0.6
0.8
1.0
Figure 4: Fraction of positive correlationsThis figure is the
basis for Figure 1C and Appendix Figure S2A in the paper.
The feature selection algorithm selected 20 features which are
kept for further analysis.
The final data are now represented in the 4-dimensional array D
with dimensions
13
-
PGCP, 2014
1372 chemical compounds× 12 cell line× 2 biological replicate×
20 phenotypic features
3.3 Calculation of interactions
Te cell number is scaled to the dynamic range between positive
(Paclitaxel) and negativecontrols (DMSO) for each cell line and
replicate, to account for the different proliferationrates of the
cell lines. For this purpose the median of the control wells is
calculated and usedfor the scaling of cell number.
neg = grepl("neg", datamatrixSelected$anno$drug$GeneID)
pos = grepl("Paclitaxel",
datamatrixSelected$anno$drug$GeneID)
negMedians = apply(datamatrixSelected$D[neg,,,1], c(2,3),
median)
posMedians = apply(datamatrixSelected$D[pos,,,1], c(2,3),
median)
Nnorm = (datamatrixSelected$D[,,,1] - rep(posMedians,
each=dim(datamatrixSelected$D)[1])) /
(rep(negMedians, each=dim(datamatrixSelected$D)[1]) -
rep(posMedians, each=dim(datamatrixSelected$D)[1]))
datamatrixSelected$D[,,,1]
-
PGCP, 2014
We use an additive model on glog-transformed data to calculate
interactions following pre-vious approaches [6, 7, 3, 4]. The fit
is implemented using the medpolish function, whichfits an additive
model using Tukey’s median polish procedure. The residuals from
this fitrepresent the interactions.
interactions = getInteractions(datamatrixSelected,
datamatrixSelected$anno$ftr,
eps = 1e-4,
maxiter = 100)
save(interactions,
file=file.path("result","data", "interactions.rda"),
compress="xz")
## check consistency
PGPC:::checkConsistency("interactions")
4 Display of phenotypes as ’phenoprints’
To visualize the phenotypes represented by the extracted
features, we display the features asradar plots called
’phenoprints’. For this representation, each feature is scaled by
the medianabsolut deviation observed and then linearly transformed
to the interval 0 to 1.
The phenoprints for several drugs are shown for the two parental
cell lines and the CTNNB1wt, cell line. Also the phenoprint for one
DMSO control well is shown for all cell lines.
if(!exists("interactions")) data(interactions,
package="PGPC")
D = interactions$D
D2 = D
dim(D2) = c(prod(dim(D2)[1:2]),dim(D2)[3],dim(D2)[4])
SD = apply(D2, 3, function(m) apply(m, 2, mad, na.rm=TRUE))
MSD = apply(SD, 2, function(x) { median(x,na.rm=TRUE) } )
pAdjusted = interactions$pVal[,,,2]
bin
-
PGCP, 2014
"Etoposide", "Amsacrine", "Colchicine",
"BIX"),
GeneID = c("neg ctr DMSO", "79902", "80101",
"80082", "79817", "79926",
"79294", "79028", "79184",
"80002"),
stringsAsFactors=FALSE)
drugPheno$annotationName =
interactions$anno$drug$Name[match(drugPheno$GeneID,
interactions$anno$drug$GeneID)]
drugPositions nuclear shape
#12 nseg.dna.m.eccentricity.sd --> nuclear shape
#7 nseg.dna.h.var.s2.mean --> nuclear texture
#13 nseg.dna.h.idm.s1.sd --> nuclear texture
#17 nseg.dna.h.cor.s2.sd --> nuclear texture
#1 n --> cell number
#6 cseg.act.h.f12.s2.sd --> cellular texture
#15 cseg.act.h.asm.s2.mean --> cellular texture
#18 cseg.dnaact.b.mad.mean --> cellular texture
#16 cseg.dnaact.h.den.s2.sd --> cellular texture
#10 cseg.dnaact.b.mean.qt.0.05 --> cellular texture
#3 cseg.act.h.cor.s1.mean --> cellular texture
#19 cseg.act.h.idm.s2.sd --> cellular texture
#14 cseg.dnaact.h.f13.s1.mean --> cellular texture
#9 cseg.0.s.radius.min.qt.0.05 --> cellular shape
#5 cseg.dnaact.m.eccentricity.sd --> cellular shape
#11 cseg.act.m.eccentricity.mean --> cellular shape
#2 cseg.act.m.majoraxis.mean --> cellular shape
#20 nseg.0.s.radius.max.qt.0.05 --> nuclear shape
#8 nseg.0.m.eccentricity.mean --> nuclear shape
orderFtr
-
PGCP, 2014
main = "Phenotypes of HCT116 P1",
draw.segments = FALSE,
scale=FALSE)
par007
-
PGCP, 2014
Phenotypes of HCT116 P1
DMSO PD98 Vinblastin
Vincristine Ouabain Rottlerin
Etoposide Amsacrine Colchicine
BIX
Nuclear major axis
Nuclear eccentricity SD
Nuclear Haralick texture (1)
Nuclear Haralick texture SD (1)Nuclear Haralick texture SD
(2)Cell numberActin Haralick texture SD (1)
Actin Haralick texture (2)
Nuclear−Actin intensity MAD
Nuclear−Actin Haralick texture SD (1)
5% quantile of Nuclear−Actin intensity
Actin Haralick texture (1)
Nuclear−Actin Haralick texture (1)
Actin Haralick texture SD (2)5% quantile of cell
radiusNuclear−Actin eccentricity SDActin eccentricity
Cell major axis
5% quantile of Nuclear radius
Nuclear eccentricity
Phenotypes of HCT116 P2
DMSO PD98 Vinblastin
Vincristine Ouabain Rottlerin
Etoposide Amsacrine Colchicine
BIX
Nuclear major axis
Nuclear eccentricity SD
Nuclear Haralick texture (1)
Nuclear Haralick texture SD (1)Nuclear Haralick texture SD
(2)Cell numberActin Haralick texture SD (1)
Actin Haralick texture (2)
Nuclear−Actin intensity MAD
Nuclear−Actin Haralick texture SD (1)
5% quantile of Nuclear−Actin intensity
Actin Haralick texture (1)
Nuclear−Actin Haralick texture (1)
Actin Haralick texture SD (2)5% quantile of cell
radiusNuclear−Actin eccentricity SDActin eccentricity
Cell major axis
5% quantile of Nuclear radius
Nuclear eccentricity
Phenotypes of CTNNB1 wt
DMSO PD98 Vinblastin
Vincristine Ouabain Rottlerin
Etoposide Amsacrine Colchicine
BIX
Nuclear major axis
Nuclear eccentricity SD
Nuclear Haralick texture (1)
Nuclear Haralick texture SD (1)Nuclear Haralick texture SD
(2)Cell numberActin Haralick texture SD (1)
Actin Haralick texture (2)
Nuclear−Actin intensity MAD
Nuclear−Actin Haralick texture SD (1)
5% quantile of Nuclear−Actin intensity
Actin Haralick texture (1)
Nuclear−Actin Haralick texture (1)
Actin Haralick texture SD (2)5% quantile of cell
radiusNuclear−Actin eccentricity SDActin eccentricity
Cell major axis
5% quantile of Nuclear radius
Nuclear eccentricity
Figure 5: Phenoprints of the two parental cell lines and the
CTNNB1 WT backgroundThis figure is the basis for Figure 1E-K,
Figure 2A and Appendix Figure S2B in the paper.
18
-
PGCP, 2014
Phenotypes of DMSO control for all cell lines
AKT1/2 MEK2 AKT1
CTNNB1 wt HCT116 P2 P53
PTEN PI3KCA wt KRAS wt
BAX MEK1 HCT116 P1
Figure 6: Phenoprints of the all cell lines for a DMSO
controlThis figure is the basis for Expanded View Figure EV2 in the
paper.
19
-
PGCP, 2014
5 Display of interactions as star plots.
Similar to the phenotypes, the interaction profiles are
displayed as star plots for the differentfeatures.
5.1 Scaled to the range of 0 to 1
The interactions are scaled by the median absolute deviation and
linearly transformed to theinterval 0 to 1 for this display. A ring
scale is used to represent the features.
#### plot interactions for 1 drug as radar plot of all
celllines
#### including ftrs as segments...
if(!exists("interactions")) data(interactions,
package="PGPC")
int = interactions$res
dim(int) = c(prod(dim(int)[1:2]),dim(int)[3],dim(int)[4])
dim(int)
## [1] 16464 2 20
SD = apply(int, 3, function(m) apply(m, 2, mad, na.rm=TRUE))
MSD = apply(SD, 2, function(x) { median(x,na.rm=TRUE) } )
pAdjusted = interactions$pVal[,,,2]
bin
-
PGCP, 2014
"nseg.0.m.majoraxis.mean",
"nseg.0.m.eccentricity.mean",
"nseg.0.s.radius.max.qt.0.05",
"cseg.act.m.majoraxis.mean" ,
"cseg.act.m.eccentricity.mean",
"cseg.dnaact.m.eccentricity.sd",
"cseg.0.s.radius.min.qt.0.05",
"cseg.act.h.idm.s2.sd",
"cseg.dnaact.h.f13.s1.mean",
"cseg.act.h.cor.s1.mean",
"cseg.dnaact.b.mean.qt.0.05",
"cseg.dnaact.h.den.s2.sd",
"cseg.dnaact.b.mad.mean",
"cseg.act.h.asm.s2.mean",
"cseg.act.h.f12.s2.sd" )
## define background colors for phenogroups
backgroundColors = c("black",
rep("grey60", 3),
rep("grey40", 4),
rep("grey20", 4),
rep("grey80", 8))
## order of mutations for plot
mutationOrder = c("HCT116 P1", "HCT116 P2", "PI3KCA wt",
"AKT1", "AKT1/2", "PTEN", "KRAS wt",
"MEK1", "MEK2", "CTNNB1 wt", "P53", "BAX")
### plot radar for each drug showing all cell lines
for(i in seq_len(nrow(drugPheno))){
drugPosition
-
PGCP, 2014
pAdjustedThresh = 0.01
## order features and cell lines
featureDf$feature = factor(featureDf$feature,
levels=ftrLevels,
ordered=TRUE)
featureDf$line 2) {
colors = c("red", "black")
featureDf
-
PGCP, 2014
stat="identity") +
coord_polar(start=-pi/nlevels(featureDf$feature)) +
ylim(c(0,maxInt*1.2)) +
geom_bar(aes(feature, value),
data = featureDf[featureDf$pAdjusted < pAdjustedThresh,],
fill="red",
stat="identity") +
geom_point(aes(feature, maxInt*1.1),
data = featureDf[featureDf$pAdjusted < pAdjustedThresh,],
pch=8,
col=2) +
theme_new + labs(title = paste0("Interactions of ",
drugPheno$name[i]))
print(starplot)
}
CTNNB1 wt P53 BAX
KRAS wt MEK1 MEK2
AKT1 AKT1/2 PTEN
HCT116 P1 HCT116 P2 PI3KCA wt
0.000.250.500.75
0.000.250.500.75
0.000.250.500.75
0.000.250.500.75
feature
max
Int *
1.2
Interactions of Bendamustine
(a) Interaction profile of Bendamustine.This figure is the basis
for Figure 4A in thepaper.
CTNNB1 wt P53 BAX
KRAS wt MEK1 MEK2
AKT1 AKT1/2 PTEN
HCT116 P1 HCT116 P2 PI3KCA wt
0.000.250.500.75
0.000.250.500.75
0.000.250.500.75
0.000.250.500.75
feature
max
Int *
1.2
Interactions of Disulfiram
(b) Interaction profile of Disulfiram. Thisfigure is the basis
for Figure 4C in the pa-per.
CTNNB1 mut CTNNB1 wt
0.0
0.3
0.6
0.9
feature
max
Int *
1.2
Interactions of Colchicine
(c) Interaction profile of Colchicine in theparental cell line
and the CTNNB1 WTbackground. This figure is the basis forFigure 2B
in the paper.
CTNNB1 mut CTNNB1 wt
0.00
0.25
0.50
0.75
1.00
feature
max
Int *
1.2
Interactions of BIX01294
(d) Interaction profile of BIX01294 in theparental cell line and
the CTNNB1 WTbackground. This figure is the basis forFigure 2B in
the paper.
Figure 7: Interaction profiles
Here we plot the scaled profiles for all compounds with
significant interactions. This wasprovided as Appendix Figure 6 and
the code is not executed for the generation of this vignette.
#### plot interactions for 1 drug as radar plot of all
celllines
#### including ftrs as segments...
featureDf
-
PGCP, 2014
function(i){
tmp=data.frame(int[i,,])
tmp$GeneID = dimnames(int)[[1]][i]
tmp$line
-
PGCP, 2014
#theme_new$axis.text$size = rel(0.2)
theme_new$axis.text.x = element_blank()
barColor = "lightblue"
allplots
-
PGCP, 2014
#### plot interactions for 1 drug as radar plot of all
celllines
#### including ftrs as segments...
int = apply(interactions$res, c(1, 2, 4), mean)
for (i in 1:dim(int)[3]) {
int[,,i] = int[,,i] / MSD[i]
}
## use abs value and replace values larger than 10 by 10
direction
-
PGCP, 2014
pAdjustedThresh = 0.01
## order features and cell lines
featureDf$feature = factor(featureDf$feature,
levels=ftrLevels,
ordered=TRUE)
featureDf$line 2) {
colors = c("red", "black")
featureDf
-
PGCP, 2014
CTNNB1 wt P53 BAX
KRAS wt MEK1 MEK2
AKT1 AKT1/2 PTEN
HCT116 P1 HCT116 P2 PI3KCA wt
0102030
0102030
0102030
0102030
feature
max
Int *
1.2 direction
negative
positive
Interactions of Bendamustine
(a) Interaction profile of Bendamustine.This figure is the basis
for Appendix FigureS7A in the paper.
CTNNB1 wt P53 BAX
KRAS wt MEK1 MEK2
AKT1 AKT1/2 PTEN
HCT116 P1 HCT116 P2 PI3KCA wt
05
1015
05
1015
05
1015
05
1015
featurem
axIn
t * 1
.2 direction
negative
positive
Interactions of Disulfiram
(b) Interaction profile of Disulfiram. Thisfigure is the basis
for Appendix Figure S7Bin the paper.
CTNNB1 mut CTNNB1 wt
0
10
20
30
40
feature
max
Int *
1.2 direction
negative
positive
Interactions of Colchicine
(c) Interaction profile of Colchicine in theparental cell line
and the CTNNB1 WTbackground. This figure is the basis forAppendix
Figure S3 in the paper.
CTNNB1 mut CTNNB1 wt
0
20
40
60
feature
max
Int *
1.2 direction
negative
positive
Interactions of BIX01294
(d) Interaction profile of BIX01294 in theparental cell line and
the CTNNB1 WTbackground. This figure is the basis forAppendix
Figure S3 in the paper.
Figure 8: Interaction profiles
Here we plot the profiles for all compounds with significant
interactions using absolute valuesand color coding the direction of
the interactions. This was provided as Appendix Figure 7and the
code is not executed for the generation of this vignette.
#### plot interactions for 1 drug as radar plot of all
celllines
#### including ftrs as segments...
featureDf
-
PGCP, 2014
directionDf
-
PGCP, 2014
subset=subset(featureDf, GeneID %in% id)
subset$maxInt = ifelse(max(subset$value) < maxValue,
maxValue,
max(subset$value))
starplot
-
PGCP, 2014
if(!exists("interactions"))
data("interactions", package="PGPC")
drugAnno = interactions$anno$drug
filterFDR = function(d, pAdjusted, pAdjustedThresh = 0.1){
select = pAdjusted
-
PGCP, 2014
col=colorRampPalette(c("darkblue", "white"))(64),
breaks = c(seq(0,0.5999,length.out=64),0.6),
margin=c(9,9))
tmp = par(mar=c(5, 4, 4, 10) + 0.1)
plot(as.dendrogram(hc), horiz=TRUE)
par(tmp)
save(celllineDist, file=file.path("result",
"celllineDist.rda"))
AK
T1/
2
CT
NN
B1
wt
KR
AS
wt
P53
PT
EN
ME
K1
PI3
KC
A w
t
ME
K2
BA
X
AK
T1
HC
T11
6 P
2
HC
T11
6 P
1
AKT1/2
CTNNB1 wt
KRAS wt
P53
PTEN
MEK1
PI3KCA wt
MEK2
BAX
AKT1
HCT116 P2
HCT116 P1
0 0.1 0.3 0.5
Value
05
1015
20
Color Keyand Histogram
Cou
nt
0.30 0.25 0.20 0.15 0.10 0.05 0.00
AKT1/2
CTNNB1 wt
KRAS wt
P53
PTEN
MEK1
PI3KCA wt
MEK2
BAX
AKT1
HCT116 P2
HCT116 P1
Figure 9: Clustering of cell lines based on the raw values of
the selected featuresThis figure is the basis for Appendix Figure
S5B in the paper.
6.2 Clustering cell lines based on interaction terms
Here we do the same analysis as above, just the interaction
scores are used this time.
PI = interactions$res
PI2 = PI ##aperm(PI, c(1,3,2,4,5))
dim(PI2) = c(prod(dim(PI2)[1:2]),dim(PI2)[3],dim(PI2)[4])
SD = apply(PI2, 3, function(m) apply(m, 2, mad, na.rm=TRUE))
MSD = apply(SD, 2, function(x) { median(x,na.rm=TRUE) } )
## normalize by mean SD
PI = apply(interactions$res, c(1, 2, 4), mean)
for (i in 1:dim(PI)[3]) {
PI[,,i] = PI[,,i] / MSD[i]
}
dimnames(PI) = list(template =
interactions$anno$drug$GeneID,
query = interactions$anno$line$mutation,
phenotype = interactions$anno$ftr)
PIfilter = filterFDR(PI, pAdjusted, pAdjustedThresh)
32
-
PGCP, 2014
## combine controls
PIfilter = apply(PIfilter, c(2,3),
function(x) tapply(x, dimnames(PIfilter)$template, mean))
PIfilter = PIfilter[!grepl("ctr", dimnames(PIfilter)[[1]]) |
dimnames(PIfilter)[[1]] %in% ctrlToKeep,,]
celllineCorrelation = PGPC:::getCorr(aperm(PIfilter, c(2, 1,
3)),
drugAnno)
celllineDist = PGPC:::trsf(celllineCorrelation)
hccelllineDist
-
PGCP, 2014
7 Compound - cell line interaction network
7.1 Extract significant interactions for visualization.
In this section we calculate some statistics from the obtained
interaction data and generatea table of drug-cell line interactions
for visualizing them graph network in Cytoscype [8].
We start by extracting all interactions with an adjusted p-value
< 0.01.
library(PGPC)
data(interactions, package="PGPC")
drugAnno = interactions$anno$drug
d = interactions
pAdjusted = interactions$pVal[,,,2]
dimnames(pAdjusted) = list(template =
paste(interactions$anno$drug$GeneID),
query = interactions$anno$line$mutation,
phenotype = interactions$anno$ftr)
pAdjustedThresh = 0.01
result = NULL
for (ftr in seq_along(interactions$anno$ftr)){
pAdjusted = d$pVal[,,ftr,2]
top = pAdjusted
-
PGCP, 2014
selTreatment[selTreatment == 0] = dim(top)[1]
drug = d$anno$drug[selTreatment,]
line = d$anno$line[which(top) %/% dim(top)[1]+1,]
topHits = data.frame(ftr = d$anno$ftr[ftr],
uname = gsub("-", "-01-", uname),
GeneID = drug$GeneID,
r1,
r2,
rMean,
pAdjusted = pAdjusted[which(top)],
stringsAsFactors=FALSE)
topHits = cbind(topHits, line)
topHits = cbind(topHits,
drugAnno[match(topHits$GeneID, drugAnno$GeneID),
-match("GeneID",names(drugAnno))])
topHits = topHits[order(topHits$pAdjusted),]
rownames(topHits) = 1:nrow(topHits)
result=rbind(result, topHits)
}
## add controls to names
result$Name[grep("ctr", result$GeneID)]
-
PGCP, 2014
mutationOrder = c("HCT116 P1", "HCT116 P2", "PI3KCA wt",
"AKT1", "AKT1/2", "PTEN", "KRAS wt",
"MEK1", "MEK2", "CTNNB1 wt", "P53", "BAX")
## number of total interactions per cell line
noIntPerLine = table(result$mutation)
noIntPerLine = noIntPerLine[mutationOrder]
tmp = par(mar=c(6, 4, 4, 2) + 0.1)
mp
-
PGCP, 2014
inte
ract
ing
drug
s pe
r ce
ll lin
e
020
4060
8010
012
0
HCT1
16 P
1
HCT1
16 P
2
PI3K
CA w
tAK
T1
AKT1
/2
PTEN
KRAS
wt
MEK
1
MEK
2
CTNN
B1 w
tP5
3BA
X
Figure 12: Number of drugs with at least one specific
interaction per cell line
par(tmp)
## percentage of all possible interactions (removing
controls)
nrow(result) /
((dim(interactions$res)[1] -
sum(grepl("ctr", interactions$anno$drug$GeneID)))
*prod(dim(interactions$res)[c(2,4)]))
## [1] 0.007703109
## percentage of drugs showing an interactions (removing
controls)
length(unique(result$GeneID)) /
(dim(interactions$res)[1] -
sum(grepl("ctr", interactions$anno$drug$GeneID)))
## [1] 0.1512539
7.1.2 Pleiotropic degree
Here we define and calculate the pleiotropic degree. It is the
number of cell lines that interactwith a given drug.
## pleiotropy degree
pleiotropicDegree = sapply(unique(result$GeneID),
function(drug)
length(unique(subset(result, GeneID==drug)$name)))
mp
-
PGCP, 2014
pleiotropy degree
num
ber
of d
rugs
020
4060
80
1 2 3 4 5 6 7 8 9 10 11 12
Figure 13: Pleiotropic degree per cell lineThis figure is the
basis for Figure 2D in the paper.
## 90 17 14 7 7 2 6 12 9 17 4 8
For some features the pleiotropic degree shows a correlatin with
the drug main effect. Thisis especially the case for cell
number.
## pleiotropic degree vs. drug effect
drugEffect = apply(interactions$effect$drug, c(1,3), mean)
dimnames(drugEffect) = list(interactions$anno$drug$GeneID,
interactions$anno$ftr)
for(ftr in colnames(drugEffect)){
plot(pleiotropicDegree,
drugEffect[match(names(pleiotropicDegree),
rownames(drugEffect)), ftr],
main=ftr,
ylab ="drug effect")
}
38
-
PGCP, 2014
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●●●
●●●● ●●●●
●
●
●
●●●
●●●
●●●●
●
●●●●●●●●●
●●
●
●●●●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●●●●●
●● ●
●
●●
●
●●
●
●
●
●
●
●
● ●
●●
●
●●
●●●
●
●●●
●●●
2 4 6 8 10 12
−1.
0−
0.8
−0.
6−
0.4
−0.
20.
0
n
pleiotropicDegree
drug
effe
ct
●●●
● ●●●
●
●
●●
●●
●●
●
●
●●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●● ●
●
●●●
●
●●● ●
●●●●●● ●
●●●
●
●●●● ●
●●
●
●●●●●●●●●
●●●●●●●●●●●●
●●●●●
●
●●●● ●●●●●●●●●
●
●●
●
●●●● ●
●
●● ●●●●
● ●● ●●●●●●●●●●●●●●
2 4 6 8 10 12
−0.
4−
0.2
0.0
0.2
0.4
0.6
cseg.act.m.majoraxis.mean
pleiotropicDegree
drug
effe
ct
●● ●●● ●●
●●● ● ● ●●●
●●●
● ●●
● ● ●
●
●●
●
●
● ●● ●●
● ●● ●
●●
●
●
●●●
● ●● ●
●
● ● ●●●
●●
●
●
● ●● ●●●●●●●
●●
●●●
●
●●
● ●●
● ●●
●● ●●●●●
● ● ●●● ●● ●●●
●●●●●●●
●●●●●●●●● ●●● ●●●
●●●●●●●●●●●●●●●●●●● ●●●●● ●●●●● ●●●●●●●●●● ●● ●●●●●
●●●● ●●●●● ●● ●●●●●●●●●●●●●●
2 4 6 8 10 12
−1.
2−
0.8
−0.
40.
0
cseg.act.h.cor.s1.mean
pleiotropicDegree
drug
effe
ct
●●
●
●
●
●
●
●
●● ●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●●
●
●
●●●
● ●●● ●●●●●●● ●●●●
●
●●
●
● ●
●● ●●●●●●●●●●
●●●
●●●●●●
●●●
●●●●● ●●
●●●●●
●●
●
●●●●
●
●●
●
●●●●
●●●●
●
●●●
●●● ●
●●●●●●
●
●●●●●●
2 4 6 8 10 12
−0.
2−
0.1
0.0
0.1
0.2
nseg.0.m.majoraxis.mean
pleiotropicDegree
drug
effe
ct
●●●
● ●
●
● ●
●
●●
●
●●●
●
●
●●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●●
● ●
●
●
●
●
●●
●
● ●
●
●
●
●
●●
●●
● ●
●
●●● ●
●
●
●
●
●
● ●
●
●
●● ●●
●
● ●●●
●●● ●
●
●●
●
● ●●● ●●●●●●● ●●●●
●
●●●● ●●● ●●●●●●●●●●●●●●●●●●●●●● ●●●●● ●●●●● ●●●●●●●●●● ●●
●●●●●
●●●● ●●●●● ●● ●●●●●●●●●●●●●●
2 4 6 8 10 12
−0.
6−
0.5
−0.
4−
0.3
−0.
2−
0.1
0.0
cseg.dnaact.m.eccentricity.sd
pleiotropicDegree
drug
effe
ct
●
●
●
●●
●●
●
●
●●
● ●
●●
●●
●
●
●●
●
●●
●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●●
●●
●●●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●●
●
●
●
●●
●●●
●
●●
●
●●●
●●●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●●●
● ●●
●
●
●●
●●●
●●●
●●●●
●
●
●
●
●●
●
●●
●●
●●
●
●
●●
●
●●
●●
●
●
●
●
2 4 6 8 10 12
−0.
20.
00.
20.
40.
60.
81.
0
cseg.act.h.f12.s2.sd
pleiotropicDegree
drug
effe
ct
39
-
PGCP, 2014
●●
●●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●●●
● ●
●
●
●
●
●
●
●
●
●●●●●●
●
●●●●
●
●
●
●
●
●●
● ●
●●
●
●
●●
●
●
●●●
●●●●●
●
●
●
●
● ●
●
●●●
●
●
●●
● ●●●●
●
●●
●●
●
●
●●
●●●
●
●●
●
●
●
●
●●
●
●●
●
●●
●●●●●●
●●●●●
2 4 6 8 10 12
−1.
00.
00.
51.
01.
52.
02.
5
nseg.dna.h.var.s2.mean
pleiotropicDegree
drug
effe
ct
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●●
●
●
●
●● ●●●●
●
●
●
●
●●
●
●●
●
●●
●
●●●
●
●●
●
●●
●●
●
●●
●
●
●
●
●●●
●
●
●
●●●
●●●
●
●
●●●●●
●
● ●
●●●
●
●
●
●●
●
●
●●●
●
●●
●
●
●●●●●●●●●●●
2 4 6 8 10 12
−0.
050.
000.
050.
10
nseg.0.m.eccentricity.mean
pleiotropicDegree
drug
effe
ct
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●●
●●
●
●
●
● ●
●
●●●
●
●●●●●●
●
●●
● ●
●●●●
●
●●
●
●●●●●●●●●●●●
●●●●●●●●● ●●●●● ●●●●
●
●
●●●
●
●●●●●
●● ●●●
●●
●●●●
●
●●●● ●●
●●
●●
●●●
●●
●●●●●
2 4 6 8 10 12
−1.
5−
1.0
−0.
50.
0
cseg.0.s.radius.min.qt.0.05
pleiotropicDegree
drug
effe
ct
●●
●●
●●
●
●●
● ● ● ●●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●●●
●●●
●
●
●●
●
●
●
●●
●
●●
●
●
●
● ●●●●●●
●
●
●●●
●
●
●●●
●●●●●● ●●●●
●
●
●
●● ●●● ●●●●●●●●●●●●●●●●●
●●●●● ●●●●●
●●●●●
●●●●●●●●●● ●●
●●●●●
●●
●●●
●●●● ●● ●●●●●●●●●●●●●●
2 4 6 8 10 12
−2
−1
01
23
4
cseg.dnaact.b.mean.qt.0.05
pleiotropicDegree
drug
effe
ct
●●●
●●
●
●
●
●●● ●
●●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ● ●
●
●
●●●
●
●
●
●
● ●
●
●●●
●
●
●
●●●
●●
●
●
●
●
●
●
●
●
●
●●
●● ●
●●
●●
●●●
●
●
●●
●●
●●●
●●●●●●● ●●●●
●
●
●
●
●●●●
●
●●●●●●●●●●●●●●●●
●●●●● ●●●●● ●●●●●
●●●●
●●●●●●
●●●
●●●●
●●
●●
●●●●● ●● ●●●●●●●●●●●●●●
2 4 6 8 10 12
−0.
15−
0.05
0.00
0.05
0.10
cseg.act.m.eccentricity.mean
pleiotropicDegree
drug
effe
ct
●●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●●
●
●
●●
●
● ●
●●
●●
●●
●
●
●●●
●
●●
●
●
●●
●
●●
●
●●
●
●
●
●●
●
●
●●●
●
●
●●●
●
●
●●
●●
●
●●
●
●
●
●●
●
●●●
●
●
●●●
●●
●●
●● ●
●
●
●●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●●●●
●●●●
●
●
2 4 6 8 10 12
−0.
050.
000.
050.
100.
15
nseg.dna.m.eccentricity.sd
pleiotropicDegree
drug
effe
ct
40
-
PGCP, 2014
●
●
●
● ● ●
●
●
●● ●
●
●●● ●
●●
●
●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●●●
●●
●
●● ●●
●●●●
●●●●●
●●●●● ●
●●●●
●
●●●
●●●
●
●●
●●●●●●
●●●
●●●
●
●
●●
●
●●●
●
●●●
● ●●●●●●●●●● ●● ●●●●
●
●●●● ●●●●●
●● ●●●
●
●
●
●●●●●
●●●
2 4 6 8 10 12
−0.
3−
0.2
−0.
10.
00.
10.
20.
3
nseg.dna.h.idm.s1.sd
pleiotropicDegree
drug
effe
ct
●●
●
●
● ●●
●
●
●● ● ●
●●
●●
●●
●●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●● ●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●●
●
●
●
●
●●
●
●●
●
●
●
● ●●
●
●●●
●
●
●● ●●●●●●●●
●●●●
●●●
●
●
●
●
●●
●
●● ●●●●●●●●●●●●●●●●●
●●●●● ●●●●●
●●●●● ●●●●●●●●●● ●● ●●●●●
●●
●●
●
●●●● ●● ●●●●●●●●●●●
●●●
2 4 6 8 10 12
−0.
30−
0.20
−0.
100.
00
cseg.dnaact.h.f13.s1.mean
pleiotropicDegree
drug
effe
ct
●
●
●
●
● ●
●
●
●
● ●●
●●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●● ● ●
●
●●
● ●●
●
●
●
●
●●●
●
●●●●
●
●
●
●
●
●●● ●
●●
●●●●
●
●
●
●●
●
●●●
●
●●●
●
●
●
●
●
●●
●
●
●●●●●●
●
●●●
●●
●
●
● ●
●●
●
●
●●
●
● ●
●
●●● ●
● ●●●
●●●●●●
●●
●●
●
2 4 6 8 10 12
01
23
cseg.act.h.asm.s2.mean
pleiotropicDegree
drug
effe
ct
●●
●
● ●
●● ●
●●
●●
●●
●
●
●
●●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
● ●
●
●
●
●●
●●
●●
●
●
●
●● ●
●
●●
●●
●
●●
●
●●●
●●●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●●
●●
●
●●
●
●●●●●●
●
●
●
●●
●●●
●
●●●● ●●●
●
●●●●●
●
●●
●
●●●●
●
●
●●
●●●
●
● ●●●
●●●●
●
●●●●●●●●
2 4 6 8 10 12
−0.
4−
0.2
0.0
0.2
cseg.dnaact.h.den.s2.sd
pleiotropicDegree
drug
effe
ct
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
● ●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●
●●
●
●
●●●
●●
●
●
●
●
●
●●
●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●●
●
●
●●
●●
●
●
●
●
●
●●●
●
●
●
●
●
2 4 6 8 10 12
−0.
10.
00.
10.
2
nseg.dna.h.cor.s2.sd
pleiotropicDegree
drug
effe
ct
41
-
PGCP, 2014
●
●●
●
●
●
●
●●
● ●
●
●●●
●
●
●
●
●
●● ●
●
●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●● ●
●
●
●●●
●●●●●●
●
●●●
●
●●●●
●●●
●●●●●
●●●●●●●●
●●●●●●●
●●
●●●●●
●
●●●●●
●●●●●●●●●
●●
●●●●●
●
●
●●
●●●●● ●● ●●●●●●●●●●●●●●
2 4 6 8 10 12
01
23
4
cseg.dnaact.b.mad.mean
pleiotropicDegree
drug
effe
ct
●●
●
● ●
●●
●
●● ●
●●
●● ●
●
●
●
●●●●
●
●
●●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
● ●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●● ●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●
●●
●●
●
●
●●●●
●●
●
●
●●●
●
●●●
●
●●●●●● ●
●●●
●●●
●
●
●●● ●
●●
●
●●●●●●●●●
●●●
●●●
●
●
●
●
●
●●●
●
●●●
●●
●●●●●●●●●
●
● ●●●●
●
●●●● ●
●●●
●●● ●●
●●●
●
●●●●
●
●●●
2 4 6 8 10 12
−0.
8−
0.6
−0.
4−
0.2
0.0
0.2
0.4
cseg.act.h.idm.s2.sd
pleiotropicDegree
drug
effe
ct
●●●
● ●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
● ●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●●
● ●
●●●
●●●
●
●
●●
●
●●●●
●●● ●●●
●
●
●●●●●
●●●●●●●●●●●●
●●●
●
●
●
●●●●
●●●●●●●●●●
●●
●
●●●
●
●
●
●
●●
●●
●
●
●● ●●●●●
●
●●●●●●●
●
2 4 6 8 10 12
−0.
15−
0.05
0.05
0.15
nseg.0.s.radius.max.qt.0.05
pleiotropicDegree
drug
effe
ct
7.1.3 Grouping of features into feature classes.
First the number of interactions for each feature is calculated.
Then the features are groupedinto feature classes and the number of
interactions for each class is calculated. Finally theoverlap
between feature classes is computed and represented as a venn
diagram and barplot.
## no of interactions per feature
noIntPerFtr = table(result$ftr)[interactions$anno$ftr]
tmp = par(mar=c(9, 4, 4, 2) + 0.1)
mp
-
PGCP, 2014
significant = lapply(unique(result$ftrClass),
function(selectedFtr)
unique(subset(result, ftrClass==selectedFtr)$uname))
names(significant) = unique(result$ftrClass)
## merging the interactions for each category
plot(venn(significant))
overlap = sapply(names(significant),
function(class1){
sapply(names(significant), function(class2){
length(intersect(significant[[class1]],
significant[[class2]]))
})
})
barplot(overlap,
beside=TRUE,
legend=names(significant),
args.legend=list(x="topleft"))
tota
l int
erac
tions
per
feat
ure
050
150
250
n
cseg
.act.
m.m
ajora
xis.m
ean
cseg
.act.
h.co
r.s1.
mea
n
nseg
.0.m
.majo
raxis
.mea
n
cseg
.dna
act.m
.ecc
entri
city.s
d
cseg
.act.
h.f1
2.s2
.sd
nseg
.dna
.h.va
r.s2.
mea
n
nseg
.0.m
.ecc
entri
city.m
ean
cseg
.0.s.
radiu
s.min.
qt.0
.05
cseg
.dna
act.b
.mea
n.qt
.0.0
5
cseg
.act.
m.e
ccen
tricit
y.mea
n
nseg
.dna
.m.e
ccen
tricit
y.sd
nseg
.dna
.h.id
m.s1
.sd
cseg
.dna
act.h
.f13.
s1.m
ean
cseg
.act.
h.as
m.s2
.mea
n
cseg
.dna
act.h
.den
.s2.sd
nseg
.dna
.h.co
r.s2.
sd
cseg
.dna
act.b
.mad
.mea
n
cseg
.act.
h.idm
.s2.sd
nseg
.0.s.
radiu
s.max
.qt.0
.05
(a) Total interactions per feature.
cell number
cell shape
cellular texture
nuclear shapenuclear texture
0
12
79
20448
0
2
10
1715
6
74
36
66
0
0
0
01
1
186
17
980
0
0
5
58
6
(b) Overlap of interactions in the 5 phe-notypic classes. This
figure is the basis forFigure 2C in the paper.
cell number cell shape cellular texture nuclear shape nuclear
texture
cell numbercell shapecellular texturenuclear shapenuclear
texture
010
020
030
040
050
0
(c) Overlap of interactions in the 5 pheno-typic classes shown
as bar plots.
Figure 14: Distributions and overlap of interactions per
feature
7.1.4 Interaction map export for Cytoscape
To obtain a interaction map for display in Cytoscape we remove
all drugs that only show aninteraction for one feature in a given
cell line. Also ambigous drugs showing interactions with3 or more
cell lines are removed.
## remove low confidence interactions
result 1])
subset(tmp, GeneID %in% selectedDrug)
}))
43
-
PGCP, 2014
## remove ambiguous interactions
noLinesPerDrug = sapply(unique(result$GeneID),
function(drug)
length(unique(subset(result, GeneID==drug)$name)))
unambigDrugs = names(noLinesPerDrug[noLinesPerDrug i))
The results are saved and used as input to Cytoscape for
visualization. The interactions fordifferent features are combined
into Phenogroups and also merged completely. In the lattercase
number of feature classes is calculated. We used the results with
phenogroups as inputto Cytoscape.
write.table(result, file=file.path("result",
"cytoscapeExportFiltered.txt"),
sep="\t",
row.names=FALSE)
############################
## transform to pheno groups
44
-
PGCP, 2014
############################
result$ftr = PGPC:::hrClass(result$ftr)
columnsToRemove = c("r1", "r2", "rMean", "pAdjusted")
result = unique(result[,-match(columnsToRemove,
names(result))])
write.table(result,
file=file.path("result",
"cytoscapeExportFilteredPhenoGroups.txt"),
sep="\t",
row.names=FALSE)
#########################
## combine features
#########################
result = do.call(rbind,
lapply(unique(result$uname),
function(u){
tmp = subset(result, uname==u)
ftr = tmp$ftr
tmp = unique(tmp[,-match(c("ftr", "ftrClass"),
names(tmp))])
tmp$cellnumber =
ifelse("cell number" %in% ftr, 1, 0)
tmp$cellshape =
ifelse("cell shape" %in% ftr, 1, 0)
tmp$celltexture =
ifelse("cellular texture" %in% ftr, 1, 0)
tmp$nuclearshape =
ifelse("nuclear shape" %in% ftr, 1, 0)
tmp$nucleartexture =
ifelse("nuclear texture" %in% ftr, 1, 0)
tmp$noFtrClasses = length(ftr)
tmp
}))
write.table(result, file=file.path("result",
"cytoscapeExportFilteredFtrsCombined.txt"),
sep="\t",
row.names=FALSE)
8 Heat maps of interaction profiles
In this section we display the interaction profiles as heatmaps.
In order to visualize theinteractions of all features in one plot
the interaction terms are scaled by the median andmedian absolute
deviation for each feature.
if(!exists("interactions")){
data("interactions", package="PGPC")
}
PI = interactions$res
45
-
PGCP, 2014
PI2 = PI ##aperm(PI, c(1,3,2,4,5))
dim(PI2) = c(prod(dim(PI2)[1:2]),dim(PI2)[3],dim(PI2)[4])
SD = apply(PI2, 3, function(m) apply(m, 2, mad, na.rm=TRUE))
MSD = apply(SD, 2, function(x) { median(x,na.rm=TRUE) } )
## normalize by mean SD
PI = apply(interactions$res, c(1, 2, 4), mean)
for (i in 1:dim(PI)[3]) {
PI[,,i] = PI[,,i] / MSD[i]
}
dimnames(PI) = list(template =
interactions$anno$drug$GeneID,
query = interactions$anno$line$mutation,
phenotype = interactions$anno$ftr)
myColors = c(`Blue`="cornflowerblue",
`Black`="#000000",
`Yellow`="yellow")
colBY = colorRampPalette(myColors)(513)
cuts = c(-Inf,
seq(-6, -2, length.out=(length(colBY)-3)/2),
0.0,
seq(2, 6, length.out=(length(colBY)-3)/2),
+Inf)
ppiw = .25
ppih = 1.4
fac = 2.2
d = dim(PI)
ordTempl = PGPC:::orderDim(PI, 1)
ordQuery = PGPC:::orderDim(PI, 2)
ordFeat = PGPC:::orderDim(PI, 3)
PGPC:::myHeatmap(PI[ordTempl, ordQuery, ordFeat],
cuts=cuts,
fontsize=10,
col=colBY)
Next we focus on the interactions with a FDR below 0.01. Also
all controls are removed,except Paclitaxel, U0126 and Vinblastin.
The mean values accross the control wells arecalculated for the
selected controls.
filterFDR = function(d, pAdjusted, pAdjustedThresh = 0.1){
select = pAdjusted
-
PGCP, 2014
cse
g.0.
s.ra
dius
.min
.qt.0
.05
nse
g.dn
a.h.
idm
.s1.
sd
cse
g.dn
aact
.m.e
ccen
tric
ity.s
d
cse
g.ac
t.m.e
ccen
tric
ity.m
ean
nse
g.0.
m.e
ccen
tric
ity.m
ean
nse
g.dn
a.h.
cor.s
2.sd
cse
g.ac
t.h.c
or.s
1.m
ean
cse
g.ac
t.h.id
m.s
2.sd
nse
g.0.
s.ra
dius
.max
.qt.0
.05
cse
g.ac
t.m.m
ajor
axis
.mea
n
nse
g.0.
m.m
ajor
axis
.mea
n
cse
g.dn
aact
.b.m
ean.
qt.0
.05
cse
g.dn
aact
.h.f1
3.s1
.mea
n
nse
g.dn
a.m
.ecc
entr
icity
.sd
nse
g.dn
a.h.
var.s
2.m
ean
cse
g.dn
aact
.b.m
ad.m
ean
n cse
g.dn
aact
.h.d
en.s
2.sd
cse
g.ac
t.h.f1
2.s2
.sd
cse
g.ac
t.h.a
sm.s
2.m
ean
Figure 15: Heatmap of interaction profiles for all drugs
pAdjustedThreshold = 0.01
pAdjusted = interactions$pVal[,,,2]
PIfilter = filterFDR(PI,
pAdjusted,
pAdjustedThresh = pAdjustedThreshold)
PIfilter = apply(PIfilter, c(2,3),
function(x) tapply(x, dimnames(PIfilter)$template, mean))
ctrlToKeep = c("ctrl Paclitaxel", "ctrl U0126", "ctrl
Vinblastin")
### some other contrls:
# ctrlToKeep = c("ctrl Paclitaxel", "ctrl U0126", "ctrl
Vinblastin", "ctrl IWP", "ctrl DAPT")
PIfilter = PIfilter[!grepl("ctr", dimnames(PIfilter)[[1]]) |
dimnames(PIfilter)[[1]] %in% ctrlToKeep,,]
ordTempl = PGPC:::orderDim(PIfilter, 1)
ordQuery = PGPC:::orderDim(PIfilter, 2)
ordFeat = PGPC:::orderDim(PIfilter, 3)
PGPC:::myHeatmap(PIfilter[ordTempl,ordQuery,ordFeat],
cuts=cuts,
fontsize=10,
col=colBY)
drugAnno = interactions$anno$drug
subset = drugAnno[drugAnno$compoundID %in%
dimnames(PIfilter)[[1]] &
!grepl("ctr", drugAnno$GeneID),]
write.table(subset[, c("Name", "GeneID", "Selectivity",
"Selectivity_updated")],
file=file.path("result",
"annotation_selected_compounds.txt"),
sep="\t",
47
-
PGCP, 2014
nse
g.dn
a.h.
var.s
2.m
ean
cse
g.dn
aact
.b.m
ad.m
ean
nse
g.0.
m.e
ccen
tric
ity.m
ean
nse
g.dn
a.h.
cor.s
2.sd
cse
g.0.
s.ra
dius
.min
.qt.0
.05
cse
g.dn
aact
.b.m
ean.
qt.0
.05
nse
g.dn
a.m
.ecc
entr
icity
.sd
nse
g.dn
a.h.
idm
.s1.
sd
cse
g.dn
aact
.h.d
en.s
2.sd
cse
g.ac
t.h.f1
2.s2
.sd
cse
g.ac
t.h