Refactored the niptmer scoring implementation into a thinner exported API plus explicit internal model stages to reduce legacy drift and make the port easier to verify.
Added file-oriented niptmer workflow utilities for the legacy sample-level contract:
Replaced the legacy add_rows.pl counting step with a native R implementation built on bundled GenomeTester4 wrappers.
Added internal paired-FASTQ handling in niptmer_make_sample_list() so the package concatenates multiple FASTQs for one sample before list generation, matching the pipeline contract.
Made niptmer_interpret() sex chromosome call thresholds configurable via sex_call_spec instead of keeping the legacy values hardcoded in the public function body.
Quality and Compatibility
Added early validation for duplicated sample identifiers in prepared count tables and coverage matrices.
Expanded tinytest coverage for the file-oriented niptmer workflow, including artifact writers, duplicate/shape failures, wrapper cleanup behavior, paired FASTQ parity, and end-to-end GT4-backed sample execution.
Regenerated README examples so the documented niptmer usage now shows the step-level utilities and the thin end-to-end wrapper.