Release Notes
Table of contents
v1.0.1 — pip-install fix
1.0.0 listed cgranges (Heng Li’s C interval index) as a dependency, but
cgranges is not published on PyPI, so pip install genomeblocks failed
with No matching distribution found for cgranges.
cgrangesis no longer a pip dependency. When it isn’t importable, genomeblocks now uses a pure-Python interval index with identical overlap results, sopip install genomeblocksworks out of the box. Installcgranges(conda, orpip install git+https://github.com/lh3/cgranges) for the fast C path on large sets.
If you installed 1.0.0 from PyPI and hit the error, upgrade:
pip install -U genomeblocks.
v1.0.0 — first stable release
genomeblocks v1.0 is the first release with a frozen public surface, a full
synthetic test suite, and complete module documentation. The public API is the
set of names re-exported from the top-level package plus the Atlas class:
from genomeblocks import (
Locus, Exon, CDS, UTR, # single intervals
Loci, # interval container + set algebra
Gene, Transcript, Genes, # gene models / GTF parsing
Architecture, # chromatin-contact graph
Atlas, # GIGGLE-style enrichment
signal, tmm, compare_heatmap, # bigWig signal
scan_motifs, make_genome, # motif scanning
browser, # region viewer
coverage, # BAM per-base coverage
)
Public surface
The building blocks and their entry points:
| Block | Build from | Key methods |
|---|---|---|
Loci |
.make(bed), .tile, .from_frame |
& \| - ^, slop, sort, merge, nearest, signal, enrich, liftover |
Genes |
.make(gtf), .make_ucsc |
annotations, nearest_genes |
Architecture |
.make(bedpe) |
add_mcool, normalize, annotate, strength, prime_hubs |
Atlas |
.make(beds) |
search, bootstrap, save/load |
signal |
loci.signal(bigwigs) |
tmm, plot_heatmap, compare_heatmap |
browser |
browser(region, tracks) |
mixed bigWig / BAM / bed / bedpe / gene tracks |
Correctness fixes since the pre-1.0 code
Locusordering across chromosomes.>and>=returned the less-than result across chromosomes, soa > bandb > acould disagree with<. Cross-chromosome comparisons are now consistent. Within-chromosome ordering (and thereforeLoci.sort/merge) was already correct.Locusis now hashable (by its UID), so aLocuscan be used in asetor as adictkey — matching its value-like__eq__.Architecture.copy()/subgraph()preserve property types. Types were inferred from a sampled Python value, but graph-tool returns booleans as ints, soboolvertex/edge properties were silently copied asdouble. Property maps now keep their exact graph-tool value type (and empty graphs keep their properties too).Genes.makeno longer crashes on a genericUTRfeature without a CDS. A non-coding transcript (or aUTRline preceding itsCDS) used to raiseIndexError; the 5′/3′ inference now falls back safely.- Signal memory guard checks RAM, not disk. The
signal()size check now compares the requested cube against available physical memory (it previously measured free space on/), and raises a clearerMemoryError.
browser import is now unambiguous
The region-viewer drawing code moved from genomeblocks/browser.py to
genomeblocks/browserview.py, so the public name browser is always the
callable — the old 'module' object is not callable footgun (where a stray
import genomeblocks.browser shadowed the function) is gone:
from genomeblocks import browser # the function
from genomeblocks.browserview import browser # equivalent
Testing
The suite is fully synthetic — no external genome / bigWig / ChIP-Atlas data —
and covers both unit helpers and end-to-end pipelines (a real bigWig written
in-test and read back through both signal backends, motif scanning on a planted
PWM, Atlas enrichment, a Loci → Genes → Architecture pipeline, and a
headless browser() render):
pip install -e ".[test]"
pytest
graph-tool must be importable for the Architecture tests (it is the one
conda-only dependency).
Upgrade notes
There is no prior stable release to migrate from — v1.0 is the baseline. If you
were tracking main before the 1.0 tag, note that several exploratory
Architecture methods (make_spread, make_clique, cluster, focus, …),
the Tags layer, and a handful of Genes helpers were removed in the run-up to
1.0. Use the public surface in the table above.