This release deliberately contains backwards-incompatible changes. To avoid automatically picking up releases like this, you can pin the exact version of higlass-python
in your pyproject.toml
or requirements.txt
file .
HiGlass now uses Jupyter's built-in communication system to serve tilesets, removing the need for hg.server
. Previously, hg.server
ran a background HTTP server, but it caused issues on remote machines (e.g., authentication, port configuration).
This update removes hg.server
and replaces it with a Jupyter comms-based approach, leveraging existing WebSocket connections. This makes HiGlass more robust across different environments and simplifies setup.
If HiGlass already works for you, nothing should change! If you previously used hg.server.enable_proxy
, you can simple remove that line in your code:
-- hg.server.enable_proxy()
This is a new feature, so please report any issues!
With the removal of hg.server
, HiGlass now provides a simpler way to define custom tilesets.
Instead of hg.server.add(tileset)
, you can now subclass hg.Tileset
:
from dataclasses import dataclass
import higlass as hg
from clodius.tiles import cooler
@dataclass
class MyCustomCoolerTileset(hg.Tileset):
path: str
datatype = "matrix"
def tiles(self, tile_ids):
return cooler.tiles(self.path, tile_ids)
def info(self):
return cooler.tileset_info(self.path)
tileset = MyCustomCoolerTileset("test.mcool")
hg.view(tileset.track())
hg.Tileset
automatically registers the tileset via Jupyter comms and provides a .track()
method to create a HiGlass track with the correct tileset information.
higlass.fuse
was an incomplete and poorly documented feature that added complexity without clear benefits. Filehandle-like interfaces now provide a more reliable alternative. If you relied on this feature, please open an issue!
Full Changelog: v1.2.1...v1.3.0