Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
a8412aa
A3: bit-identical ROC AUC without sklearn's overhead in SimilarPatter…
Sep 27, 2026
3c5defa
A7: re-merge A1 (forked Leiden seeds) and A2 (numpy _density_adaptati…
Sep 27, 2026
719b0d6
A10: re-merge A5 (per-pattern hoist in SimilarPatternsCollapser) onto A7
Sep 27, 2026
c3c0db7
A12: re-merge A4 (inverted-index cosine kNN) onto A10
Sep 27, 2026
dbc79b1
A15: re-merge A8 (batched get_2d_data_from_patterns) and A9 (forked p…
Sep 27, 2026
3999f54
A18: re-merge A13 (vectorized Jaccard kernel) and A11 (serial nogil g…
Sep 27, 2026
93ff9c2
A22: re-merge A19 (Leiden graph with each undirected edge once) onto A18
Sep 27, 2026
e843b13
A23: vectorize _filter_by_correlation (per-row Spearman and neighbour…
Sep 27, 2026
3116b1e
A25: re-merge A21 (numba kernels compiled in forked children into the…
Sep 27, 2026
6f6bda0
A28: batched re-merge: A20 (stacked jaccard per seqlet) and A23's blo…
Sep 27, 2026
f66893d
A31: re-merge A26 (per-cluster pattern building forked) and A27 (pear…
Sep 27, 2026
faba188
A35: re-merge A30 (lazy SeqletSet averages) onto A31
Sep 28, 2026
a0d4256
A40: batched re-merge: A36 (chunked igraph edges, -97 MB peak RSS) an…
Sep 28, 2026
b891ee1
A43: drain: A16 (collapser pair statistics in forked workers) onto A40
Sep 28, 2026
6df222b
A45: drain: A34's vectorized single-offset Jaccard with A39/A41's com…
Sep 28, 2026
3098d19
A46: drain: A42 (free arrays earlier in cli, _sparse_knn, _density_ad…
Sep 28, 2026
26c1ebc
A47: pin leidenalg==0.11.0 in pyproject.toml (user request)
Sep 28, 2026
0ac8cd0
B2: exact, faster seqlet extraction at 20k
Sep 28, 2026
f60cb59
B7: re-merge: B3 (density adaptation without per-row loops) onto B2
Sep 28, 2026
6a68482
B8: re-merge: B5 (collapser pair statistics without the 3.5 GB burst)…
Sep 28, 2026
05abcda
B12 (1/2): re-merge B4 (cosine kNN stage) onto B8
Sep 28, 2026
fdcb8ce
B12 (2/2): re-merge B6 (seqlet Jaccard kernel) onto B8 + B4
Sep 28, 2026
ef62539
B15: re-merge: B9 (negative metacluster in a forked child) onto B12
Sep 28, 2026
c935c67
B21 (1/3): re-merge B14 (subpattern affinity build) onto B15
Sep 28, 2026
2c5530f
B21 (2/3): re-merge B16 (pattern building and correlation filter) ont…
Sep 28, 2026
53213e5
B21 (3/3): re-merge B17 (B11 + B13) without B11's weights hunk onto B…
Sep 28, 2026
f27cb7c
B24: re-merge: B19 (collapser merging, file-based child results, refi…
Sep 28, 2026
1773a52
B26: drain: B22 (start-up imports) onto B24
Sep 28, 2026
1b17ac7
B28 (1/2): drain B23 as folded in B27 onto B26
Sep 28, 2026
7cb4deb
B28 (2/2): drain B25 (Jaccard kernel _fwd_rev_best8) onto B26 + B27
Sep 28, 2026
c3e8cf1
A1: remove tests that fail only because of B28's signature and API ch…
Oct 4, 2026
b9825a8
B2: cosine kNN stage at 50k: where the 5.1 s goes, and a faster exact…
Oct 5, 2026
e7eeafd
B2: cosine kNN stage at 50k: where the 5.1 s goes, and a faster exact…
Oct 5, 2026
14e7cd8
B5: re-merge: B3 (largest pattern's affinity first, other patterns in…
Oct 5, 2026
4141f50
B9: batched re-merge: B7 (kNN posting lists, prefetch, gkmer casts) a…
Oct 5, 2026
4a7ce4f
B8 (1/2): pattern expansions and trims on coordinates in merging and …
Oct 5, 2026
3f7e076
B8 (2/2): subpatterns and unpacked patterns add their sums up with th…
Oct 5, 2026
778c04a
B11: start-up, input loading and seqlet extraction before the first s…
Oct 5, 2026
7e4377e
B17: numpy's BSD-3-Clause notice above _pairwise_sum, a translation o…
Oct 12, 2026
b6ea059
Honor runtime thread limits and require Python 3.9
chang-m-yun Oct 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@ modisco
- GitHub Actions runs the full test suite, including the CLI tests, on
Python 3.9 through 3.13 for every pull request and push to master.

- Process scheduling and background compilation respect runtime thread
limits set with numba.set_num_threads(). Explicit worker budgets are retained.

- Require Python 3.9 or newer, matching the pinned Leiden/igraph dependencies
and the process APIs used by the optimized pipeline.



Version 2.5.2
Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ Related tools:

## Installation

TF-MoDISco requires Python 3.9 or newer. Leiden is pinned to version 0.11.0
to keep clustering results consistent; its igraph dependency requires Python 3.9 or newer.

You can install TF-MoDISco using `pip install modisco`

## Running TF-MoDISco (test)
Expand Down
17 changes: 15 additions & 2 deletions modiscolite/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import importlib

from . import aggregator
from . import affinitymat
from . import extract_seqlets
Expand All @@ -7,10 +9,21 @@
from . import util
from . import tfmodisco
from . import cluster
from . import report
from . import meme_writer
from . import bed_writer
from . import fasta_writer
from . import descriptive_report

__version__ = '2.5.2'


# The report modules load matplotlib, pandas, logomaker, memelite and jinja2,
# which only the report commands use, so they are imported on first access
# (modiscolite.report, from modiscolite import descriptive_report).
_LAZY = ('report', 'descriptive_report')


def __getattr__(name):
if name in _LAZY:
return importlib.import_module('.' + name, __name__)
raise AttributeError('module {!r} has no attribute {!r}'.format(__name__,
name))
Loading
Loading