Supplementary Description of Algorithm

Supplementary Description of Algorithm EnumOccurrences in
“Unraveling Complex Temporal Associations in Cellular Systems across
Multiple Time-Series Microarray Datasets”
Wenyuan Li, Min Xu and Xianghong Jasmine Zhou∗
The algorithm EnumOccurrences can be intuitively described as a search process that discovers all the subvectors y of a time-series vector x whose rank vector is equal to r, i.e., ry = r. We developed an efficient,
depth-first search algorithm to recursively match elements of r and y. This process matches each element of r
with every possible element of y, going through the elements of r one by one until the entire rank vector has been
checked. Note that in our algorithm, the elements of r and y are always matched from highest to lowest.
Figure 1 gives an example of the above process. For simplicity, we replace x with its rank vector. Firstly, let the
highest value (3) of r match the highest value (5) of x (see “Node 1 at Level 1”). Since the second highest value
(2) of r is two positions forward, we must move at least two positions forward in x to identify the second match
element. Two candidate values (1 and 4) in x satisfy this second match, as shown in Nodes 1 and 2 at Level 2. These
possibilities are the children of the Level 1 node. We proceed to investigate the third match element. The relative
position of the 3rd highest value (1) in r is “between the previous two matched values”. In “Node 1 at Level 2”, we
apply this rule and identify two candidate elements in x: the values 3 and 1. These trends become the two nodes of
Level 3. In “Node 2 at Level 2”, however, we fail to find matched values when following the rule. At Level 3 we
have matched all three elements of r to y, so all nodes at Level 3 are solutions. Certainly, we could return to the
beginning and go through the same search process from Node 2 or Node 3 of Level 1. However, this particular case
would not provide any additional matched trends.
A formal description of the above process is given in Algorithm 1. We use the Routine “match” (Line 2) to
calculate how the i-th matched element branches to possible matches for element (i + 1), as detailed above. The
Algorithm EnumOccurrences traverses the search tree in the depth-first order. This tree has k = length(r)
levels, and many nodes are pruned due to early termination during match actions, as shown in Figure 1. The great
advantage of this algorithm is that anti-monotonic constraints can prune large swathes of the search space (i.e.,
search nodes as shown in Fig. 1).
Algorithm 1 EnumOccurrences
Input:
(1) x = [x1 , . . . , xn ], a times-series vector
(2) r = [r1 , . . . , rk ], rank order of a trend
(3) Θ1 , threshold set of all anti-monotonic constraints, such as θI ∈ Θ1
Output:
Wm×k , occurrence matrix r in x.
Sort both x and r in descending order to get their index vectors Ix and Ir respectively. Together with Θ1 and
W , Ix and Ir are global variables.
2: for all beginIx = 1 to (n − k + 1) do
3:
match(beginIx, 1);
4: end for
1:
∗
To whom correspondence should be addressed. Molecular and Computational Biology, Department of Biological Sciences, University
of Southern California
1
Value
Time Series: x
Trend: r
Rank vector:
3 1 2
Time
2 5 3 1 4
1
Rank vector:
The searching space is
represented by a tree . We
search this tree by the depth first order.
Node 1 at Level 1
Rank vector:
3 1 2
Rank vector:
Node 2 at Level 1
2 5 3 1 4
Rank vector:
2 5 31 4
Node 3 at Level 1
Rank vector:
Time Series: x
Time Series: x
2 5 31 4
Time Series: x
2
Go forward at least 2
positions
Level
Trend: r
Trend: r
Level
Trend: r
Rank vector:
Rank vector:
3 1
No jump
2
Level
3 1 2
Jump backward
between 2 positions
3
Node 1 at Level 2
Rank vector:
Node 2 at Level 2
2 5 3 1 4
Time Series: x
Rank vector:
2 5 3 1 4
Time Series: x
Node 1 at Level 3
Rank
vector:
Node 2 at Level 3
T1 T2 T3 T4 T5
2 5 3 1 4
Time Series: x
Rank
vector:
T1 T2 T3 T4 T5
2 5 3 1 4
Time Series: x
W=
T1 T2 T3 T4 T5
T2 T3 T5
T2 T4 T5
T1 T2 T3 T4 T5
Figure 1: An example showing how the match routine (Line 3 of Algorithm 1 – EnumOccurrences) traverses
the search space.
2