2  Ordered Panel

The R code chunks in Chapter 2 require loading the ordPanel package and executing all R code chunks in Chapter 1,

library(ordPanel)

The example data and statistical analyses presented in Chapter 2 were previously published in a peer-reviewed manuscript by Zezulinski et al. (2025).

NoteData Example

Zezulinski D, Hoteit M, Kaplan D, Simeone A, Zhan T, Doria C, Ahmed F, Roberts L, Block T, Sayeed A (2025). “Detection of circulating mRNA variants in hepatocellular carcinoma patients using targeted RNAseq.” Liver Cancer. ISSN 2235-1795, doi:10.1159/000545366 https://doi.org/10.1159/000545366.

The creation of an ordered panel of variant-signatures should be described in a peer-reviewed manuscript as Tip 2.1.

Tip 2.1: Ordered Panel

An ordered panel of variant-signatures is constructed using a small training cohort, typically comprising fewer than 50 <positive> and 50 <negative> <subjects>. The procedure consists of the following steps:

  1. Exclude the signatures that identify none of the <positive.subjects> (e.g., Listing 2.1) in the training cohort;
  2. Exclude the signatures that identify 1-or-more <negative.subjects> (e.g., Listing 2.1) in the training cohort;
  3. Sort the remaining signatures by the number of <positive.subjects> identified in the training cohort, from most to least;
  4. Sequentially retain variant-signatures such that each retained signature identifies at least one additional <positive.subjects> beyond the cumulative total identified by all preceding signatures.

These steps are summarized in a flow chart (e.g., Figure 2.1). The decision rule of an ordered panel is straightforward: a new subject is classified as positive if at least one included variant-signature is present.

An ordered panel facilitates the selection of an ordered sub-panel. Specifically, an investigator may reduce the size of an ordered-panel by retaining the variant-signatures at the top of the ordered-panel and excluding those at the bottom. The true- and false-positive rates in the training cohort are summarized both for individual signature and for each possible ordered sub-panel selected by an investigator (e.g., Table 2.1).

The ordered-panel framework and methodology are implemented in the ordPanel package (Zhan (2026), v0.1.0.20260306) for R version 4.5.2 (2025-10-31) (R Core Team 2025).

2.1 False(+) ≤0 per Signature

Listing 2.1 creates an ordered panel of variant-signatures (Section 1.2) controlled at zero false positive per signature using the following steps.

  1. The first call to the function subset() (Section 5.4) selects the signatures that identify at least one positive subjects in the training cohort (Section 5.3).
  2. The second call to the function subset() selects the signatures that identify none of the negative subjects in the training cohort (Section 5.3).
  3. The third call to the function sort_by() (Section 5.5) sorts the signatures by the number of positive subjects identified in the training cohort (Section 5.3), in decreasing order.
  4. The final call to the function subset() sequentially retains variant-signatures such that each retained signature identifies at least one additional positive subjects beyond the cumulative total identified by all preceding signatures (Section 5.6).
Listing 2.1: Ordered panel controlled at zero false positive per signature (Zezulinski et al. 2025)
p0 = m |>
  subset(subset = sum1 > 0L) |>
  subset(subset = sum0 <= 0L, append.label = TRUE) |>
  sort_by(y = ~ sum1, decreasing = TRUE) |>
  subset(subset = diff(cumsum1) > 0L)
p0
# Signature False(+) ≤0/31
# Panel of 23 Variant-Signatures from
# 50 positive subjects
# 31 negative subjects

Figure 2.1 (Listing 2.2) presents a flow chart illustrating the creation of the ordered panel Listing 2.1.

Listing 2.2: Flow chart of Listing 2.1. (Zezulinski et al. 2025)
p0 |>
  plot()
Figure 2.1: Flow Chart of Listing 2.1. (Zezulinski et al. 2025)

Table 2.1 (Listing 2.3) displays the variant-signatures included in the ordered panel Listing 2.1 and summarizes the true- and false- positive rates for each individual signature, as well as for each ordered sub-panel selected by an investigator. Variant-signatures that include more than one variant are highlighted in light-yellow color.

Listing 2.3: Variant-signatures in Listing 2.1. (Zezulinski et al. 2025)
p0 |>
  flextable::as_flextable()
Table 2.1: Variant-Signatures in Ordered Panel Listing 2.1. (Zezulinski et al. 2025)

Variant-Signature

Variant(s) in Signature

Individual Signature

Ordered Sub-Panel
Signature False(+) ≤0/31

True(+)

False(+)

Sub-Panel True(+)

Sub-Panel False(+)

Signature 1

chr17:7176997 C>T

12/50

0/31

24.0% =12/50

0.0% =0/31

Signature 2

chr11:118583356 G>A

10/50

0/31

42.0% =21/50

0.0% =0/31

Signature 3

chr12:49269877 C>T

6/50

0/31

46.0% =23/50

0.0% =0/31

Signature 4

chr11:102350873 T>A
chr11:102350877 A>C

5/50

0/31

50.0% =25/50

0.0% =0/31

Signature 5

chr3:9789723 C>T

5/50

0/31

58.0% =29/50

0.0% =0/31

Signature 6

chrX:47199344 G>A

5/50

0/31

60.0% =30/50

0.0% =0/31

Signature 7

chr1:29053204 TA>T

4/50

0/31

64.0% =32/50

0.0% =0/31

Signature 8

chr1:29053290 C>A
chr1:29053291 A>G
chr1:29053294 G>C
chr1:29053295 C>T

4/50

0/31

66.0% =33/50

0.0% =0/31

Signature 11

chr17:7313221 G>A

4/50

0/31

68.0% =34/50

0.0% =0/31

Signature 12

chr19:10115113 C>T

4/50

0/31

70.0% =35/50

0.0% =0/31

Signature 13

chr19:10252243 G>T
chr19:10252246 G>T

4/50

0/31

74.0% =37/50

0.0% =0/31

Signature 14

chr19:10252358 G>C

4/50

0/31

76.0% =38/50

0.0% =0/31

Signature 17

chr19:55092500 C>T

4/50

0/31

78.0% =39/50

0.0% =0/31

Signature 19

chr5:141583561 T>A

4/50

0/31

80.0% =40/50

0.0% =0/31

Signature 20

chr8:144098748 A>T
chr8:144098750 G>C

4/50

0/31

82.0% =41/50

0.0% =0/31

Signature 22

chr1:11054996 C>A

3/50

0/31

84.0% =42/50

0.0% =0/31

Signature 23

chr1:160999732 C>T

3/50

0/31

86.0% =43/50

0.0% =0/31

Signature 31

chr11:64800903 A>C

3/50

0/31

90.0% =45/50

0.0% =0/31

Signature 32

chr12:8946388 C>G

3/50

0/31

92.0% =46/50

0.0% =0/31

Signature 33

chr14:105249697 C>T

3/50

0/31

94.0% =47/50

0.0% =0/31

Signature 37

chr16:71921451 A>C

3/50

0/31

96.0% =48/50

0.0% =0/31

Signature 50

chr19:12747525 C>A

3/50

0/31

98.0% =49/50

0.0% =0/31

Signature 57

chr19:58551755 G>A
chr19:58551758 C>A

3/50

0/31

100.0% =50/50

0.0% =0/31

2.2 False(+) ≤1 per Signature

Listing 2.4 creates an ordered panel controlled at one or fewer false positive per signature using the same procedure described above.

Listing 2.4: Ordered panel controlled at one-or-less false positive per signature (Zezulinski et al. 2025)
p1 = m |>
  subset(subset = sum1 > 0L) |>
  subset(subset = sum0 <= 1L, append.label = TRUE) |>
  sort_by(y = ~ sum1, decreasing = TRUE) |>
  subset(subset = diff(cumsum1) > 0L)
p1
# Signature False(+) ≤1/31
# Panel of 18 Variant-Signatures from
# 50 positive subjects
# 31 negative subjects

Figure 2.2 (Listing 2.5) presents a flow chart illustrating the creation of the ordered panel Listing 2.4.

Listing 2.5: Flow chart of Listing 2.4. (Zezulinski et al. 2025)
p1 |>
  plot()
Figure 2.2: Flow Chart of Listing 2.4. (Zezulinski et al. 2025)

Table 2.2 (Listing 2.6) displays the variant-signatures in the ordered panel Listing 2.4 and summarizes the true- and false- positive rates for each individual signature, as well as for each ordered sub-panel selected by an investigator.

Listing 2.6: Variant-signatures in Listing 2.4. (Zezulinski et al. 2025)
p1 |>
  flextable::as_flextable()
Table 2.2: Variant-Signatures in Ordered Panel Listing 2.4. (Zezulinski et al. 2025)

Variant-Signature

Variant(s) in Signature

Individual Signature

Ordered Sub-Panel
Signature False(+) ≤1/31

True(+)

False(+)

Sub-Panel True(+)

Sub-Panel False(+)

Signature 1

chr17:7176997 C>T

12/50

0/31

24.0% =12/50

0.0% =0/31

Signature 340

chr18:51196776 G>C

12/50

1/31

40.0% =20/50

3.2% =1/31

Signature 2

chr11:118583356 G>A

10/50

0/31

56.0% =28/50

3.2% =1/31

Signature 341

chr5:141582348 C>G

8/50

1/31

66.0% =33/50

6.5% =2/31

Signature 342

chr17:43015806 C>T

7/50

1/31

72.0% =36/50

9.7% =3/31

Signature 343

chr19:1080497 C>A

7/50

1/31

74.0% =37/50

9.7% =3/31

Signature 5

chr3:9789723 C>T

5/50

0/31

78.0% =39/50

9.7% =3/31

Signature 346

chr19:38840293 C>T

5/50

1/31

80.0% =40/50

12.9% =4/31

Signature 7

chr1:29053204 TA>T

4/50

0/31

82.0% =41/50

12.9% =4/31

Signature 8

chr1:29053290 C>A
chr1:29053291 A>G
chr1:29053294 G>C
chr1:29053295 C>T

4/50

0/31

84.0% =42/50

12.9% =4/31

Signature 11

chr17:7313221 G>A

4/50

0/31

86.0% =43/50

12.9% =4/31

Signature 14

chr19:10252358 G>C

4/50

0/31

88.0% =44/50

12.9% =4/31

Signature 17

chr19:55092500 C>T

4/50

0/31

90.0% =45/50

12.9% =4/31

Signature 348

chr1:12001541 C>T

4/50

1/31

92.0% =46/50

16.1% =5/31

Signature 349

chr10:17693290 A>AA

4/50

1/31

94.0% =47/50

19.4% =6/31

Signature 350

chr11:118583892 C>A

4/50

1/31

96.0% =48/50

22.6% =7/31

Signature 31

chr11:64800903 A>C

3/50

0/31

98.0% =49/50

22.6% =7/31

Signature 32

chr12:8946388 C>G

3/50

0/31

100.0% =50/50

22.6% =7/31

2.3 False(+) ≤2 per Signature

Listing 2.7 creates an ordered panel controlled at two or fewer false positive per signature using the same procedure described above.

Listing 2.7: Ordered panel controlled at two-or-less false positives per signature (Zezulinski et al. 2025)
p2 = m |>
  subset(subset = sum1 > 0L) |>
  subset(subset = sum0 <= 2L, append.label = TRUE) |>
  sort_by(y = ~ sum1, decreasing = TRUE) |>
  subset(subset = diff(cumsum1) > 0L)
p2
# Signature False(+) ≤2/31
# Panel of 17 Variant-Signatures from
# 50 positive subjects
# 31 negative subjects

Figure 2.3 (Listing 2.8) presents a flow chart illustrating the creation of the ordered panel Listing 2.7.

Listing 2.8: Flow chart of Listing 2.7. (Zezulinski et al. 2025)
p2 |>
  plot()
Figure 2.3: Flow Chart of Listing 2.7. (Zezulinski et al. 2025)

Table 2.3 (Listing 2.9) displays the variant-signatures in the ordered panel Listing 2.7 and summarizes the true- and false- positive rates for each individual signature, as well as for each ordered sub-panel selected by an investigator.

Listing 2.9: Variant-signatures in Listing 2.7. (Zezulinski et al. 2025)
p2 |>
  flextable::as_flextable()
Table 2.3: Variant-Signatures in Ordered Panel Listing 2.7. (Zezulinski et al. 2025)

Variant-Signature

Variant(s) in Signature

Individual Signature

Ordered Sub-Panel
Signature False(+) ≤2/31

True(+)

False(+)

Sub-Panel True(+)

Sub-Panel False(+)

Signature 1

chr17:7176997 C>T

12/50

0/31

24.0% =12/50

0.0% =0/31

Signature 340

chr18:51196776 G>C

12/50

1/31

40.0% =20/50

3.2% =1/31

Signature 815

chr17:50094891 GAGGAT>G

11/50

2/31

52.0% =26/50

9.7% =3/31

Signature 2

chr11:118583356 G>A

10/50

0/31

62.0% =31/50

9.7% =3/31

Signature 341

chr5:141582348 C>G

8/50

1/31

72.0% =36/50

12.9% =4/31

Signature 816

chrX:154442587 T>A

8/50

2/31

74.0% =37/50

16.1% =5/31

Signature 342

chr17:43015806 C>T

7/50

1/31

78.0% =39/50

19.4% =6/31

Signature 343

chr19:1080497 C>A

7/50

1/31

80.0% =40/50

19.4% =6/31

Signature 817

chr17:1651476 A>G

7/50

2/31

82.0% =41/50

25.8% =8/31

Signature 819

chr21:44856223 C>T

7/50

2/31

84.0% =42/50

29.0% =9/31

Signature 5

chr3:9789723 C>T

5/50

0/31

88.0% =44/50

29.0% =9/31

Signature 346

chr19:38840293 C>T

5/50

1/31

90.0% =45/50

32.3% =10/31

Signature 827

chr7:64978289 G>A

5/50

2/31

92.0% =46/50

38.7% =12/31

Signature 14

chr19:10252358 G>C

4/50

0/31

94.0% =47/50

38.7% =12/31

Signature 17

chr19:55092500 C>T

4/50

0/31

96.0% =48/50

38.7% =12/31

Signature 349

chr10:17693290 A>AA

4/50

1/31

98.0% =49/50

41.9% =13/31

Signature 32

chr12:8946388 C>G

3/50

0/31

100.0% =50/50

41.9% =13/31

2.4 False(+) ≤3 per Signature

Listing 2.10 creates an ordered panel controlled at three or fewer false positive per signature using the same procedure described above.

Listing 2.10: Ordered panel controlled at three-or-less false positives per signature (Zezulinski et al. 2025)
p3 = m |>
  subset(subset = sum1 > 0L) |>
  subset(subset = sum0 <= 3L, append.label = TRUE) |>
  sort_by(y = ~ sum1, decreasing = TRUE) |>
  subset(subset = diff(cumsum1) > 0L)
p3
# Signature False(+) ≤3/31
# Panel of 16 Variant-Signatures from
# 50 positive subjects
# 31 negative subjects

Figure 2.4 (Listing 2.11) presents a flow chart illustrating the creation of the ordered panel Listing 2.10.

Listing 2.11: Flow chart of Listing 2.10. (Zezulinski et al. 2025)
p3 |>
  plot()
Figure 2.4: Flow Chart of Listing 2.10. (Zezulinski et al. 2025)

Table 2.4 (Listing 2.12) displays the variant-signatures in the ordered panel Listing 2.10 and summarizes the true- and false- positive rates for each individual signature, as well as for each ordered sub-panel selected by an investigator.

Listing 2.12: Variant-signatures in Listing 2.10. (Zezulinski et al. 2025)
p3 |>
  flextable::as_flextable()
Table 2.4: Variant-Signatures in Ordered Panel Listing 2.10. (Zezulinski et al. 2025)

Variant-Signature

Variant(s) in Signature

Individual Signature

Ordered Sub-Panel
Signature False(+) ≤3/31

True(+)

False(+)

Sub-Panel True(+)

Sub-Panel False(+)

Signature 1

chr17:7176997 C>T

12/50

0/31

24.0% =12/50

0.0% =0/31

Signature 340

chr18:51196776 G>C

12/50

1/31

40.0% =20/50

3.2% =1/31

Signature 815

chr17:50094891 GAGGAT>G

11/50

2/31

52.0% =26/50

9.7% =3/31

Signature 1042

chr13:45516236 A>G

11/50

3/31

64.0% =32/50

16.1% =5/31

Signature 2

chr11:118583356 G>A

10/50

0/31

70.0% =35/50

16.1% =5/31

Signature 341

chr5:141582348 C>G

8/50

1/31

76.0% =38/50

19.4% =6/31

Signature 816

chrX:154442587 T>A

8/50

2/31

78.0% =39/50

22.6% =7/31

Signature 1043

chr16:71922614 C>A

8/50

3/31

80.0% =40/50

29.0% =9/31

Signature 342

chr17:43015806 C>T

7/50

1/31

84.0% =42/50

29.0% =9/31

Signature 343

chr19:1080497 C>A

7/50

1/31

86.0% =43/50

29.0% =9/31

Signature 819

chr21:44856223 C>T

7/50

2/31

88.0% =44/50

29.0% =9/31

Signature 1045

chr16:2037561 G>A

7/50

3/31

90.0% =45/50

32.3% =10/31

Signature 5

chr3:9789723 C>T

5/50

0/31

94.0% =47/50

32.3% =10/31

Signature 827

chr7:64978289 G>A

5/50

2/31

96.0% =48/50

38.7% =12/31

Signature 17

chr19:55092500 C>T

4/50

0/31

98.0% =49/50

38.7% =12/31

Signature 349

chr10:17693290 A>AA

4/50

1/31

100.0% =50/50

38.7% =12/31