==========================================================================
SECTION II-A   DATASET STRUCTURE
==========================================================================
rows x columns                    : 7182 x 14
thickness levels                  : [np.int64(200), np.int64(300), np.int64(400), np.int64(500), np.int64(600), np.int64(700), np.int64(800)]
rows per thickness level          : [1026]
ETL codes / HTL codes / FTO states: 8 / 10 / 2
distinct compositions             : 16
full Cartesian product            : 17920
coverage                          : 40.1 %
'nip' distinct values             : 1  (constant)

==========================================================================
SECTION III-A   TARGET LEAKAGE
==========================================================================
identity PCE = Voc*Jsc*FF/100
  mean |error| : 3.251e-05 percentage points
  max  |error| : 4.775e-02 percentage points
  R^2          : 0.9999999945

==========================================================================
SECTION II-A   CONFLICTING SPECIFICATIONS
==========================================================================
rows sharing a design key     : 140
conflicting groups            : 70
groups with differing outputs : 70
ETL codes involved            : [np.int64(3)]
median dPCE / dJsc / dFF / dVoc: 1.121 pp / 0.896 mA/cm2 / 0.713 / 0.002 V
unique configurations         : 7112  (removed 70)

==========================================================================
SECTION III-B   RANDOM-SPLIT PERFORMANCE
==========================================================================
  LEAKY Ridge   R2=  0.9746  RMSE=  1.217
  LEAKY RF      R2=  0.9991  RMSE=  0.234
  LEAKY HistGB  R2=  0.9991  RMSE=  0.228
  CLEAN Ridge   R2=  0.4068  RMSE=  5.879
  CLEAN RF      R2=  0.9957  RMSE=  0.498
  CLEAN HistGB  R2=  0.9920  RMSE=  0.684

==========================================================================
TABLE I   SIZE-MATCHED EXTRAPOLATIVE DEGRADATION
==========================================================================
  Thickness  Dummy   n= 4064/ 3048 R2=   -0.044  RMSE=   8.294  MAE=  7.486  ref=  7.626  D=   1.09+-0.01
  Thickness  Ridge   n= 4064/ 3048 R2=    0.301  RMSE=   6.786  MAE=  5.524  ref=  5.897  D=   1.15+-0.01
  Thickness  RF      n= 4064/ 3048 R2=    0.987  RMSE=   0.909  MAE=  0.737  ref=  0.665  D=   1.37+-0.08
  Thickness  HistGB  n= 4064/ 3048 R2=    0.980  RMSE=   1.134  MAE=  0.930  ref=  0.743  D=   1.53+-0.02
  Bromide    Dummy   n= 4872/ 2240 R2=   -0.831  RMSE=   9.832  MAE=  8.945  ref=  7.637  D=   1.29+-0.01
  Bromide    Ridge   n= 4872/ 2240 R2=  -46.763  RMSE=  50.211  MAE= 44.880  ref=  5.881  D=   8.54+-0.09
  Bromide    RF      n= 4872/ 2240 R2=   -1.928  RMSE=  12.433  MAE= 10.886  ref=  0.600  D=  20.85+-1.62
  Bromide    HistGB  n= 4872/ 2240 R2=   -1.877  RMSE=  12.324  MAE= 10.767  ref=  0.709  D=  17.39+-0.50
  ETL        Dummy   n= 5460/ 1652 R2=   -0.004  RMSE=   7.478  MAE=  6.661  ref=  7.634  D=   0.98+-0.01
  ETL        Ridge   n= 5460/ 1652 R2=    0.090  RMSE=   7.122  MAE=  6.048  ref=  5.890  D=   1.21+-0.01
  ETL        RF      n= 5460/ 1652 R2=    0.499  RMSE=   5.282  MAE=  3.357  ref=  0.511  D=  10.37+-0.60
  ETL        HistGB  n= 5460/ 1652 R2=    0.449  RMSE=   5.542  MAE=  3.589  ref=  0.697  D=   7.97+-0.36
  HTL        Dummy   n= 5047/ 2065 R2=   -0.012  RMSE=   7.591  MAE=  6.560  ref=  7.639  D=   0.99+-0.01
  HTL        Ridge   n= 5047/ 2065 R2=    0.370  RMSE=   5.990  MAE=  4.781  ref=  5.895  D=   1.02+-0.01
  HTL        RF      n= 5047/ 2065 R2=    0.871  RMSE=   2.706  MAE=  1.579  ref=  0.581  D=   4.71+-0.48
  HTL        HistGB  n= 5047/ 2065 R2=    0.882  RMSE=   2.594  MAE=  1.641  ref=  0.723  D=   3.59+-0.15
  max seed sd: R2 0.0114   RMSE 0.0603

==========================================================================
FIGURE 1   THICKNESS DISTANCE CURVE (train 200-400 nm)
==========================================================================
  Ridge   +100 nm  R2=  0.381  D= 1.046
  Ridge   +200 nm  R2=  0.311  D= 1.135
  Ridge   +300 nm  R2=  0.188  D= 1.255
  Ridge   +400 nm  R2=  0.007  D= 1.406
  RF      +100 nm  R2=  0.989  D= 1.024
  RF      +200 nm  R2=  0.974  D= 1.640
  RF      +300 nm  R2=  0.961  D= 2.067
  RF      +400 nm  R2=  0.949  D= 2.379
  HistGB  +100 nm  R2=  0.981  D= 1.326
  HistGB  +200 nm  R2=  0.966  D= 1.844
  HistGB  +300 nm  R2=  0.952  D= 2.221
  HistGB  +400 nm  R2=  0.941  D= 2.502
  figure written

SECTION II-A   CODE-TO-MATERIAL KEY (etl_htl_layers_description.xlsx)
ETL type  Number in dataset     HTL type  Number in dataset.1
    PCBM                1.0          C60                    1
    TiO2                2.0         Cu2O                    2
     ZnO                3.0          CuI                    3
     CdS                4.0 Spiro-OMeTAD                    4
     WO3                5.0        CuSCN                    5
     WS2                6.0          NiO                    6
    IGZO                7.0         P3HT                    7
    SnO2                8.0       CuSbS2                    8
     NaN                NaN    PEDOT:PSS                    9
     NaN                NaN          CuO                   10
     NaN                NaN         MoO3                   11

SECTION III-D   BROMIDE PER-LEVEL D (train Br in {0.00, 0.05})
  RF Br=0.15  D=  8.86   [size-matched baseline]
  RF Br=0.51  D=  1.97   [size-matched baseline]
  RF Br=0.85  D=  8.56   [size-matched baseline]
  RF Br=3.00  D= 18.11   [size-matched baseline]

==========================================================================
TABLE II   WITHIN-SPLIT DISTANCE-ERROR RANK CORRELATION
==========================================================================
  geometric descriptor: continuous standardised + FULL-vocabulary one-hot
split   Bromide    ETL    HTL  Thickness
model                                   
HistGB   +0.363 +0.091 +0.087     +0.249
RF       +0.362 +0.169 +0.107     +0.339
Ridge    +0.820 +0.178 +0.021     +0.075
  n per split: {'Thickness': 3048, 'Bromide': 2240, 'ETL': 1652, 'HTL': 2065}
  pooled rho (RF) = +0.413   n = 9005   [reported only as inadequate]
  beyond distance 2.0: 1560, of which bromide 1470
  nearest bin (<=0.5): splits present [np.str_('Thickness')]

  minimum attainable distance for an unseen categorical level:
    full-vocabulary encoder      : min 1.4142  median 1.4142   (= sqrt 2)
    training-fitted, ignore      : min 1.0000  median 1.0000   (= 1)

==========================================================================
DEDUPLICATION SENSITIVITY (RF, 100 trees, 3 seeds)
==========================================================================
rule        first    full    last    mean
split                                    
Bromide     23.50   23.16   23.31   21.29
ETL         10.14   10.29    9.97    9.86
HTL          5.20    5.07    5.14    4.78
Thickness    1.52    1.52    1.51    1.46

==========================================================================
SECTION III-F   COMPOSITION -> MATERIAL PARAMETERS
==========================================================================
  compositions matched to the material table: 10 of 16
  bandgap range (matched)   : 1.52 - 2.30 eV
  training compositions (Br<=0.05): Eg 1.52-1.71 eV, mobilities 0.10-20.50
  Br=0.15: Eg [1.6, 1.55, 1.65]  mu_e [0.13, 2.0, 10.0]  mu_h [126.9, 2.0, 10.0]
  Br=0.51: Eg [1.61]  mu_e [1.0]  mu_h [1.0]
  Br=0.85: Eg [2.04]  mu_e [10.0]  mu_h [10.0]
  Br=3.00: Eg [2.3]  mu_e [20.0]  mu_h [20.0]

==========================================================================
DONE. Outputs in /home/claude/zenodo/results
==========================================================================
