Semiadaptive Designs
An semiadaptive design is a design that requires a fixed number of rounds of tests more than one. A one round test is nonadaptive, while an open ended design is fully adaptive.
Semiadaptive designs were first popularized by
Dorfman in 1943 for screening for syphilis in blood in military recruits. Since then, numerous variants have been developed. Below we provide a listing and description of some of these methods.
Dorfman Pooling
Dorfman pooling involves two steps:
 1pass pooling: All of the samples are divided into a specific number of pools based on the expected prevalence of a positive test. Each sample is tested only once. The pool size (s) is determined by a function that minimizes the expected total number of assays given the expected prevalence (p).
\[ (1p)^s \ln (1p)\frac{1}{s^2}=0\]
Broder and Kumar in 2020 provide a closed form solution to this expression that uses the Lambert W function:
\[s=\frac{2W( \frac{1}{2} \sqrt{ \ln (1p)}) }{ \ln (1p)}\]
Example pool sizes are shown below:
Prevalence (p)  Pool size (s) 
0.001  32 
0.005  15 
0.01  10 
0.02  8 
0.03  6 
0.04  5 
0.05  5 
0.07  4 
0.1  4 
0.12  3 
0.18  3 
Optimal Pool Size for Dorfman Design

1:1 retest of positive pool: Each pool that tests positive is then individually retested.
BK Double Pooling
Broder and Kumar in 2020 suggested an improved double pooling first step which uses larger pool sizes. This design is described below.
 2pass pooling: The first step is to test each sample twice in a nonadaptive test using larger pool sizes. Broader and Kumar identify the optimal pool size (s) given the prevalence (p) as the smallest pool size that best satisfies the following expression:
\[\frac{2}{s^2} =  2(1p)^s (1(1p)^{s1}) \ln (1p)\]
This expression does not have a clean closed form solution but is readily solved numerically to yield the following pool sizes:
Prevalence (p)  Pool size (s) 
0.001  106 
0.005  38 
0.01  25 
0.02  16 
0.03  13 
0.04  11 
0.05  10 
0.07  8 
0.1  7 
0.12  6 
0.18  5 
Optimal Pool Size BKDouble Design
Triple Pooling
Following the pattern in BKdouble Broder and Kumar in 2020 we can extend the logic to three pools:
 3pass pooling: The first step is to test each sample three times in a nonadaptive test using larger pool sizes. The optimal pool size (s) given the prevalence (p) as the smallest pool size that best satisfies the following expression:
\[(p1)^3+(1p)^s(p1+(1p)^s)^2s^2 \ln(1p)\]
This expression does not have a clean closed form solution but is readily solved numerically to yield the following pool sizes:
Prevalence (p)  Pool size (s) 
0.001  196 
0.005  62 
0.01  39 
0.02  24 
0.03  18 
0.04  15 
0.05  13 
0.07  11 
0.1  9 
0.12  8 
0.18  6 
Optimal Pool Size Triple Design
Divide and test (DT)
In contrast to the previous design, divide and test (DT) is a multistep pooling design. In this design the set of n samples is first divided up into pools, and then the positive pools are themselved run as subpools. In general, this multistep design results in fewer total assays.
As with the other designs, the pool size (s) is dictated by the prevalance (p) assuming p<0.5:
\[s= 2^{ \log_{2}( 1/p 1)} \]
If a pool is positive, then divide the pool in half (binary search) and retest each subpool to identify the positive samples
Note that this method can be further refined as in Hwang's generalized binary splitting (GBS). In GBS, the prevalance is defined as a fixed number of positive cases (D+), so the prevalance is estiamted as N/D+. After each round of screening, the total number of samples (N) and positive samples (D+) are adjusted so as to progressively improve their estiamte of the resulting population. This strategy is akin of card counting where the composition of the deck is already assumed to be known. Unfortunately in practice we only have the prevalence and not D+, so GBS can fail if we incorrectly assume D+.
TO DO
 add in additional post processing methods such as listed in this paper including: subpool halving, Sterrett's procedure, or Matrix testing
 Discussion of square arrays (i.e. "array testing" or "matrix testing" )here . This talks about array testing where rows and columns are tested individually (a 2 replicate prescreen)
 Discussion of streaming process vs batch of streaming process vs batch