- ClinVar variant_summary.txt.gz loader for F ACMG (fallback VUS if missing)
- online default --min-vaf 0.20 when not --offline and not specified (configurable)
- fix pathlib import, offline GTF 1:1 pick best
- 3501 -> 141 at VAF>20% (offline 141 rows, 16K Excel)
- flag C>T/G>A at read ends (end<=10) as FFPE-suspect, strand bias as supporting evidence
- outputs: candidate_variants.tsv [is_ffpe_suspect,ffpe_reason], clean_variants.tsv,
ffpe_suspect_variants.tsv, candidate_CtoT/GtoA_clean.bed
- optional --vcf: produce .clean.vcf (without damaged) and .ffpe_flagged.vcf;
with --keep-damaged mark FILTER=FFPE instead of removing
- auto-create BAM/FASTA index if missing, improved error messages
- ffpe_damage_v2.py: normalized C>T/G>A profiling (all 12 substitutions,
R1/R2 and strand profiles, 5'/3' read-end distance, BED tracks, plots)
- ffpe_compare.py: low/moderate/high classification vs control samples
- make_test_data.py: synthetic BAM with known damage for validation