Skip to content

migec 2.0.0a1

Pre-release
Pre-release

Choose a tag to compare

@mikessh mikessh released this 13 Aug 11:26
· 101 commits to master since this release

First published build of the C++20 rewrite of MIGEC and MAGERI.

pip install --pre migec

What works

All three stages, validated against real data on four layouts:

layout data result
bulk amplicon with an anchor HIV-1 Primer ID, SRR1763769 pattern recovered by migec suggest unaided; consensus places at HXB2 2,328-2,595
10x droplet, cell barcodes sc5p_v2_hs_PBMC_1k VDJ-T 100% of 3,155,166 reads assigned, 221,024 barcodes, 813 cells called
dual-end barcodes MAGERI's design 24 nt UMI from twelve bases at each end
TSO500 read structures 5M5S+T fgbio/Picard syntax, UMI on both mates
  • checkout - barcode extraction with a pattern table, an inline --bc-pattern, or an fgbio --read-structure. 1.18 M reads/s at 16 threads, output byte-identical at any thread count.
  • refine - barcode error correction using the evidence that survives at one read per molecule: the barcode's own base quality and payload agreement, not only the count ratio. Whitelists with a measured background prior. OrdMag cell calling.
  • assemble - one consensus per molecule, with emitted quality capped by a measured RT/first-cycle-PCR floor of 1.5e-4 rather than the 1e-6 that gets assumed.
  • suggest, subsample, sheet.

Numbers that are measured rather than assumed

  • The RT/PCR quality floor: 1.54e-4 [1.36e-4, 1.74e-4], so no emitted quality above ~Q38.
  • The MIG-split threshold: 8.68, bootstrap 95% CI [8.42, 9.14] - the nominal p < 0.01 over-calls by 19x because reads are not exchangeable.
  • What the reported Phred is worth: slope 1.04 over 46.3 M constant pattern bases.
  • At ~1 read per UMI, 80% of barcode errors have no observable parent and cannot be corrected by any method. migec says so instead of reporting a corrected count it has no evidence for.

Why an alpha

The roadmap's remaining items are real: index hopping from the i7 x i5 table, .mig bucket output from checkout (which is what would bound the UMI counters at NovaSeq scale), and the published benchmark comparisons against MIGEC v1, MAGERI, UMI-tools, Calib and fgbio.

Java users of the Groovy MIGEC 1.2.9 want the jars on the 1.2.9 release; that code is archived on branch legacy-v1 and at tag v1-final.