# Generation and analysis of conference designs

In this notebook, we show how to generate conference designs and calculate properties of these designs. For details on conference designs and their properties, see Properties of conference designs and A Classification Criterion for Definitive Screening Designs, Schoen et al., 2018 and [Enumeration and Classification of Definitive Screening Designs] (in preparation).

Load required libraries and define the class of conference designs to enumerate.

[3]:

import oapackage

conference_class = oapackage.conference_t(12, 6, 0)
print(conference_class)

conference class: number of rows 12, number of columns 6


Define the root array and extend the lists of conference designs.

[4]:

conference_designs = [[conference_class.create_root_three_columns()]]

for ii, ncols in enumerate(range(4, 8)):
arrays = oapackage.extend_conference(conference_designs[ii], conference_class, verbose=0)
conference_designs.append(arrays)
print("extension resulted in %d designs with %d columns" % (len(arrays), ncols))

extension resulted in 9 designs with 4 columns
extension resulted in 42 designs with 5 columns
extension resulted in 123 designs with 6 columns
extension resulted in 184 designs with 7 columns


## Calculate properties of conference designs

Here, we show how to calculate relevant properties of conference designs. Select a 12-run 7-factor conference design generated previously.

[5]:

design = conference_designs[4][0]
design.showarray()

array:
0   1   1   1   1   1   1
1   0  -1  -1  -1  -1  -1
1   1   0  -1  -1   1   1
1   1   1   0   1  -1  -1
1   1   1  -1   0  -1   1
1   1  -1   1   1   0  -1
1   1  -1   1  -1   1   0
1  -1   1   1  -1   1  -1
1  -1   1   1  -1  -1   1
1  -1   1  -1   1   1  -1
1  -1  -1   1   1  -1   1
1  -1  -1  -1   1   1   1


A sensible criterion to evaluate conference designs is the so-called $$F_4$$-vector (Schoen et al., 2019). We can compute the $$F_4$$-vector of a conference design as follows.

[6]:

design.FvaluesConference(4)

[6]:

(0, 25, 10)


Schoen et al., 2019 showed that conference designs are good building blocks for definitive screening designs (Xiao et al. 2012). The Orthogonal Array package can construct a definitive screening design from a conference design.

[9]:

dsd = oapackage.conference2DSD(design)
dsd.showarray()

array:
0   1   1   1   1   1   1
1   0  -1  -1  -1  -1  -1
1   1   0  -1  -1   1   1
1   1   1   0   1  -1  -1
1   1   1  -1   0  -1   1
1   1  -1   1   1   0  -1
1   1  -1   1  -1   1   0
1  -1   1   1  -1   1  -1
1  -1   1   1  -1  -1   1
1  -1   1  -1   1   1  -1
1  -1  -1   1   1  -1   1
1  -1  -1  -1   1   1   1
0  -1  -1  -1  -1  -1  -1
-1   0   1   1   1   1   1
-1  -1   0   1   1  -1  -1
-1  -1  -1   0  -1   1   1
-1  -1  -1   1   0   1  -1
-1  -1   1  -1  -1   0   1
-1  -1   1  -1   1  -1   0
-1   1  -1  -1   1  -1   1
-1   1  -1  -1   1   1  -1
-1   1  -1   1  -1  -1   1
-1   1   1  -1  -1   1  -1
-1   1   1   1  -1  -1  -1
0   0   0   0   0   0   0


For the resulting definitive screening design, the Orthogonal Array package can compute some statistical properties based on projections into a smaller number of factors.

[7]:

PEC4, PIC4, PPC4 = oapackage.conference.conferenceProjectionStatistics(design, ncolumns=4, verbose=1)

conferenceProjectionStatistics: projection to 4 columns: PEC 0.286 PIC 3.111 PPC 0.458