Blood manifest: 70 samples
Loaded 33,067,020 rows from 70 blood samples in 40.5s
GC reference: 472,386 probes
Sex chrom homology mask: 1494 probes
Pass 1: 4-feat blood GAM (16 workers)...
20/70 blood samples, 24s, R²=0.5315
40/70 blood samples, 35s, R²=0.4783
60/70 blood samples, 48s, R²=0.5659
70/70 blood samples, 56s, R²=0.5073
Sex: 45 female, 25 male, 0 unknown
/usr/local/bin/build_norm_reference.py:247: RuntimeWarning: All-NaN slice encountered
probe_coverage_median = np.nanmedian(blood_matrix, axis=1)
/usr/local/lib/python3.12/site-packages/numpy/lib/_nanfunctions_impl.py:1593: RuntimeWarning: All-NaN slice encountered
return fnb._ureduce(a,
Probe coverage: 471,794/472,386 valid probes
Preliminary 5-feat GAM on blood (16 workers)...
20/70 blood prelim 5-feat, 36s, R²=0.9340
40/70 blood prelim 5-feat, 60s, R²=0.9349
60/70 blood prelim 5-feat, 80s, R²=0.9146
70/70 blood prelim 5-feat, 88s, R²=0.9365
/usr/local/bin/build_norm_reference.py:335: RuntimeWarning: All-NaN slice encountered
prelim_median = np.nanmedian(prelim_matrix, axis=1)
/usr/local/lib/python3.12/site-packages/numpy/lib/_nanfunctions_impl.py:1593: RuntimeWarning: All-NaN slice encountered
return fnb._ureduce(a,
Probe mask: 15,102 masked (3.2%) — 9,496 low cov, 7,919 high var, 4,229 extreme
Wrote batch_reference.parquet (472,386 probes) to ./batch_reference.parquet
Wrote sex_calls.csv (70 samples) to ./sex_calls.csv
Wrote feature_stats.csv (70 samples) to ./feature_stats.csv
Build reference complete in 385.7s total