An ENGINE WITH ACTIVITY allows for the possibility that some
components (or genes) in an expression engine (or tissue) might be
transcriptionally inactive. Thus, the true biological signal
S_gi should really be viewed as a mixture:
\(S_gi = z_g * delta_0 + (1 - z_g) * T_gi\)
where delta_0 = a point mass at zero;
T_gi = a random variable supported on the positive real line;
z_g ~ Binom(pi) defines the activity state (1 = on, 0 = off)
The rand
method for an EngineWithActivity is a little bit
tricky, since we do two things at once. First, we use the
base
slot to exponentiate the random variables generated by
the underlying Engine on the log scale. We treat base = 0
as
a special case, which means that we should continue to work on
the scale of the Engine. Second, we mask any inactive component
by replacing the generated values with 0
.
Note that this is terribly inefficient if we only have a single
homogeneous population, since we generate a certain amount of
data only to throw it away. The power comes when we allow
cancer disregulation to turn a block on or off, when the
underlying data reappears.