To aid in interpretation, we establish a bit of notation. For building block positions, we refer to the position closest to the DNA tag as p 1 , the middle position as p 2 and the position furthest from the DNA tag as p 3 (Figure ). Each of these building block positions is called a monosynthon. We denote the set of all building blocks for a given position as BB p i , where 1 ≤ i ≤ 3 in this study. Individual building blocks are denoted as bb x , where x is the identifier, ID, assigned to each unique building block. We refer to two building block positions considered jointly, also known as a disynthon, using the notation BB p i BB p j . In our definition, the two positions considered for a disynthon do not need to be adjacent. Finally, we denote trisynthons as BB p 1 BB p 2 BB p 3 . To specify a subset, we use a vertical bar from set-building notation where a vertical bar is read as "such that" and the subset conditions are to the right of the bar. For example, {BB p 1 BB p 2 | BB p 1 = bb 1 } is a subset of the the combinations of building blocks found in positions 1 and 2 and is read as "disynthons in position 1 and 2 such that position one is building block ID 1." 2.1.2. Each position in the library contains a small number of highly productive building blocks. Firstly, to compare building blocks quantitatively, we require a metric to characterize a desirable versus undesirable building block. We define the productivity of a building block or the probability of activity, P(active), as the fraction of compounds that are active when a given building block occurs in a particular position. In this study, we use a binary cutoff for the activity of compounds, where "active" signifies we detected a non-zero DNA count for the trisynthon in experiment (see Section 4.2 for more details). To illustrate how we calculate P(active), we provide the following example.