Repository navigation
BrucellaID 1.2.0
The k-mer copy threshold now rises with the sequencing depth. mash dist -m 2 keeps every k-mer a read set holds twice — and an error k-mer turns up about depth × error rate times, so past roughly 50x the errors reach two copies on their own and crowd the true k-mers out of the bottom-1000 sketch. The distance then grows with the depth instead of with the genetic distance, and above about 240x the sample got no call at all. The threshold is now derived from each sample — one more required copy per 20x of coverage, within [2, 20] — with the coverage estimated from the read files in a tenth of a second, without decompressing them. Below about 50x nothing changes. --min-kmer-copies N pins any fixed value, including the old 2.
Validated at depth, and on real reads. The validation now simulates two genomes at 150x and 250x, where the derived threshold keeps 1000/1000 sketch hashes and the old fixed 2 kept 728–902, and runs the four public ENA libraries of the tutorial next to the simulated samples: each must give the species its submitter gave it, the sequence type it is known to carry, and the same reference as the simulated sample of its own reference genome. All 22 pass — and the fix shows on real data: SRR8550484 (~69x) moves from 422/1000 shared hashes at distance 0.0248 to 775/1000 at 0.0065. The numbers are in the wiki.
See an example report — it now says which threshold each sample got and the coverage it came from, as do brucellaid.json (min_kmer_copies, estimated_coverage) and the PDF.
Upgrading: no report or table changed shape. Results change only on read sets above about 50x, where they were the ones being distorted: distances shrink toward what an assembly would give, shared hashes rise, and a sample deep enough to have been ND can get its call back.
The full list is in the changelog.