seqtree 0.1.0__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. {seqtree-0.1.0 → seqtree-0.2.0}/PKG-INFO +8 -3
  2. {seqtree-0.1.0 → seqtree-0.2.0}/README.md +7 -2
  3. {seqtree-0.1.0 → seqtree-0.2.0}/include/seqtree/seqtree.hpp +1 -1
  4. {seqtree-0.1.0 → seqtree-0.2.0}/pyproject.toml +1 -1
  5. seqtree-0.2.0/src/structural.inc +31 -0
  6. seqtree-0.1.0/src/structural.inc +0 -31
  7. {seqtree-0.1.0 → seqtree-0.2.0}/.gitattributes +0 -0
  8. {seqtree-0.1.0 → seqtree-0.2.0}/.gitignore +0 -0
  9. {seqtree-0.1.0 → seqtree-0.2.0}/CMakeLists.txt +0 -0
  10. {seqtree-0.1.0 → seqtree-0.2.0}/LICENSE +0 -0
  11. {seqtree-0.1.0 → seqtree-0.2.0}/ROADMAP.md +0 -0
  12. {seqtree-0.1.0 → seqtree-0.2.0}/appendix/.gitignore +0 -0
  13. {seqtree-0.1.0 → seqtree-0.2.0}/appendix/.latexmkrc +0 -0
  14. {seqtree-0.1.0 → seqtree-0.2.0}/appendix/Makefile +0 -0
  15. {seqtree-0.1.0 → seqtree-0.2.0}/appendix/epitope_detection.pdf +0 -0
  16. {seqtree-0.1.0 → seqtree-0.2.0}/appendix/evalue.pdf +0 -0
  17. {seqtree-0.1.0 → seqtree-0.2.0}/appendix/evalue.tex +0 -0
  18. {seqtree-0.1.0 → seqtree-0.2.0}/appendix/evalue_matrix.pdf +0 -0
  19. {seqtree-0.1.0 → seqtree-0.2.0}/appendix/mhc1_rocpr.pdf +0 -0
  20. {seqtree-0.1.0 → seqtree-0.2.0}/appendix/mhc2_rocpr.pdf +0 -0
  21. {seqtree-0.1.0 → seqtree-0.2.0}/appendix/refs.bib +0 -0
  22. {seqtree-0.1.0 → seqtree-0.2.0}/include/seqtree/kmer_index.hpp +0 -0
  23. {seqtree-0.1.0 → seqtree-0.2.0}/include/seqtree/types.hpp +0 -0
  24. {seqtree-0.1.0 → seqtree-0.2.0}/python/seqtree/__init__.py +0 -0
  25. {seqtree-0.1.0 → seqtree-0.2.0}/python/seqtree/control.py +0 -0
  26. {seqtree-0.1.0 → seqtree-0.2.0}/python/seqtree/data/control_human_trb_aa.txt.gz +0 -0
  27. {seqtree-0.1.0 → seqtree-0.2.0}/python/seqtree/evalue.py +0 -0
  28. {seqtree-0.1.0 → seqtree-0.2.0}/python/seqtree/layout.py +0 -0
  29. {seqtree-0.1.0 → seqtree-0.2.0}/python/seqtree/pmhc.py +0 -0
  30. {seqtree-0.1.0 → seqtree-0.2.0}/python/seqtree/pmhc_evalue.py +0 -0
  31. {seqtree-0.1.0 → seqtree-0.2.0}/python/seqtree/py.typed +0 -0
  32. {seqtree-0.1.0 → seqtree-0.2.0}/src/_bindings.cpp +0 -0
  33. {seqtree-0.1.0 → seqtree-0.2.0}/src/blosum62.inc +0 -0
  34. {seqtree-0.1.0 → seqtree-0.2.0}/src/codec.cpp +0 -0
  35. {seqtree-0.1.0 → seqtree-0.2.0}/src/engine_seqtm.cpp +0 -0
  36. {seqtree-0.1.0 → seqtree-0.2.0}/src/engine_seqtrie.cpp +0 -0
  37. {seqtree-0.1.0 → seqtree-0.2.0}/src/engines.hpp +0 -0
  38. {seqtree-0.1.0 → seqtree-0.2.0}/src/index.cpp +0 -0
  39. {seqtree-0.1.0 → seqtree-0.2.0}/src/kmer_index.cpp +0 -0
  40. {seqtree-0.1.0 → seqtree-0.2.0}/src/pam100.inc +0 -0
  41. {seqtree-0.1.0 → seqtree-0.2.0}/src/pam250.inc +0 -0
  42. {seqtree-0.1.0 → seqtree-0.2.0}/src/positional_matrix.cpp +0 -0
  43. {seqtree-0.1.0 → seqtree-0.2.0}/src/searcher.cpp +0 -0
  44. {seqtree-0.1.0 → seqtree-0.2.0}/src/substitution_matrix.cpp +0 -0
  45. {seqtree-0.1.0 → seqtree-0.2.0}/src/trie.cpp +0 -0
  46. {seqtree-0.1.0 → seqtree-0.2.0}/src/trie.hpp +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: seqtree
3
- Version: 0.1.0
3
+ Version: 0.2.0
4
4
  Summary: Fast fuzzy search over biological sequences (C++ core, Python bindings)
5
5
  Keywords: sequence-search,fuzzy-matching,CDR3,immunology,bioinformatics,trie
6
6
  Author-Email: ISALGO laboratory <mikhail.shugay@gmail.com>
@@ -59,8 +59,13 @@ to their own payloads (V gene, MHC, counts) and filter.
59
59
  Beyond search, seqtree ships:
60
60
 
61
61
  - **Substitution matrices** — built-in `identity`, `BLOSUM62`, `PAM250`, `PAM100`, and `structural`
62
- (TeXshade sidechain volume + hydropathy), plus custom matrices via
63
- `SubstitutionMatrix.from_similarity` (Gram-distance penalty `s(a,a)+s(b,b)−2·s(a,b)`).
62
+ a **Miyazawa–Jernigan interaction-strength** matrix: each residue's strength `q(a)=mean_b e(a,b)`
63
+ is read off the MJ contact potential, so substitutions between residues of like interaction strength
64
+ are cheap. It separates strong (hydrophobic `F W C L Y M I V`) from weak (polar/charged
65
+ `S Q D E K`) interactors — the strong/weak-interactor axis of TCR-recognition models
66
+ ([Košmrlj et al., *PNAS* 2008](https://doi.org/10.1073/pnas.0808081105); MJ contact energies from
67
+ Miyazawa & Jernigan, *J Mol Biol* 1996) — letting dissimilar-but-chemically-equivalent loops align.
68
+ Plus custom matrices via `SubstitutionMatrix.from_similarity` (Gram penalty `s(a,a)+s(b,b)−2·s(a,b)`).
64
69
  - **E-values / significance** — calibrate hit counts against a background control repertoire
65
70
  (`load_control` + `evalues`), the TCRNET approach on a finite-sample footing. See the
66
71
  [E-value guide](https://antigenomics.github.io/seqtree/evalue.html).
@@ -26,8 +26,13 @@ to their own payloads (V gene, MHC, counts) and filter.
26
26
  Beyond search, seqtree ships:
27
27
 
28
28
  - **Substitution matrices** — built-in `identity`, `BLOSUM62`, `PAM250`, `PAM100`, and `structural`
29
- (TeXshade sidechain volume + hydropathy), plus custom matrices via
30
- `SubstitutionMatrix.from_similarity` (Gram-distance penalty `s(a,a)+s(b,b)−2·s(a,b)`).
29
+ a **Miyazawa–Jernigan interaction-strength** matrix: each residue's strength `q(a)=mean_b e(a,b)`
30
+ is read off the MJ contact potential, so substitutions between residues of like interaction strength
31
+ are cheap. It separates strong (hydrophobic `F W C L Y M I V`) from weak (polar/charged
32
+ `S Q D E K`) interactors — the strong/weak-interactor axis of TCR-recognition models
33
+ ([Košmrlj et al., *PNAS* 2008](https://doi.org/10.1073/pnas.0808081105); MJ contact energies from
34
+ Miyazawa & Jernigan, *J Mol Biol* 1996) — letting dissimilar-but-chemically-equivalent loops align.
35
+ Plus custom matrices via `SubstitutionMatrix.from_similarity` (Gram penalty `s(a,a)+s(b,b)−2·s(a,b)`).
31
36
  - **E-values / significance** — calibrate hit counts against a background control repertoire
32
37
  (`load_control` + `evalues`), the TCRNET approach on a finite-sample footing. See the
33
38
  [E-value guide](https://antigenomics.github.io/seqtree/evalue.html).
@@ -39,7 +39,7 @@ public:
39
39
  static SubstitutionMatrix blosum62();
40
40
  static SubstitutionMatrix pam250(); // EMBOSS EPAM250 (NCBI log-odds)
41
41
  static SubstitutionMatrix pam100(); // EMBOSS EPAM100 (NCBI log-odds)
42
- static SubstitutionMatrix structural(); // TeXshade volume+hydropathy similarity
42
+ static SubstitutionMatrix structural(); // Miyazawa-Jernigan interaction-strength similarity
43
43
  // Convert a similarity matrix (row-major, size*size) to penalties via the Gram /
44
44
  // squared-distance transform pen[a][b] = sim[a][a] + sim[b][b] - 2*sim[a][b].
45
45
  static SubstitutionMatrix from_similarity(uint8_t size, const int32_t* sim);
@@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build"
4
4
 
5
5
  [project]
6
6
  name = "seqtree"
7
- version = "0.1.0"
7
+ version = "0.2.0"
8
8
  description = "Fast fuzzy search over biological sequences (C++ core, Python bindings)"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -0,0 +1,31 @@
1
+ // Miyazawa-Jernigan interaction-strength similarity (strong/weak interactors; 0..10).
2
+ // Row/column order: A R N D C Q E G H I L K M F P S T W Y V B Z X *
3
+ // Generated by bench/gen_matrices.py -- do not edit by hand.
4
+ static const int32_t kStructuralSize = 24;
5
+ static const int32_t kStructural[24 * 24] = {
6
+ // A R N D C Q E G H I L K M F P S T W Y V B Z X *
7
+ 10, 9, 9, 7, 6, 8, 7, 10, 9, 6, 6, 5, 6, 5, 9, 8, 9, 6, 6, 7, 8, 7, 7, 0,
8
+ 9, 10, 10, 8, 4, 9, 8, 8, 8, 5, 4, 6, 5, 4, 10, 10, 9, 4, 5, 6, 9, 9, 7, 0,
9
+ 9, 10, 10, 8, 4, 9, 8, 8, 8, 5, 4, 6, 5, 4, 10, 10, 9, 4, 5, 6, 9, 9, 7, 0,
10
+ 7, 8, 8, 10, 3, 9, 10, 7, 6, 3, 3, 8, 3, 2, 8, 9, 8, 3, 3, 4, 9, 9, 6, 0,
11
+ 6, 4, 4, 3, 10, 4, 2, 6, 7, 9, 10, 1, 9, 9, 4, 4, 5, 10, 10, 8, 4, 3, 6, 0,
12
+ 8, 9, 9, 9, 4, 10, 9, 8, 7, 4, 4, 7, 4, 3, 9, 10, 9, 3, 4, 5, 9, 9, 7, 0,
13
+ 7, 8, 8, 10, 2, 9, 10, 6, 6, 3, 2, 8, 3, 2, 8, 8, 7, 2, 3, 4, 9, 9, 6, 0,
14
+ 10, 8, 8, 7, 6, 8, 6, 10, 9, 7, 6, 5, 6, 5, 8, 8, 9, 6, 6, 8, 8, 7, 7, 0,
15
+ 9, 8, 8, 6, 7, 7, 6, 9, 10, 7, 7, 4, 7, 6, 8, 7, 8, 6, 7, 8, 7, 6, 7, 0,
16
+ 6, 5, 5, 3, 9, 4, 3, 7, 7, 10, 9, 1, 10, 9, 5, 5, 6, 9, 10, 9, 4, 4, 7, 0,
17
+ 6, 4, 4, 3, 10, 4, 2, 6, 7, 9, 10, 1, 10, 9, 4, 4, 5, 10, 10, 8, 4, 3, 6, 0,
18
+ 5, 6, 6, 8, 1, 7, 8, 5, 4, 1, 1, 10, 1, 0, 6, 6, 6, 0, 1, 2, 7, 8, 4, 0,
19
+ 6, 5, 5, 3, 9, 4, 3, 6, 7, 10, 10, 1, 10, 9, 5, 5, 5, 9, 10, 9, 4, 4, 7, 0,
20
+ 5, 4, 4, 2, 9, 3, 2, 5, 6, 9, 9, 0, 9, 10, 4, 4, 4, 10, 9, 8, 3, 2, 6, 0,
21
+ 9, 10, 10, 8, 4, 9, 8, 8, 8, 5, 4, 6, 5, 4, 10, 10, 9, 4, 5, 6, 9, 9, 7, 0,
22
+ 8, 10, 10, 9, 4, 10, 8, 8, 7, 5, 4, 6, 5, 4, 10, 10, 9, 4, 4, 6, 9, 9, 7, 0,
23
+ 9, 9, 9, 8, 5, 9, 7, 9, 8, 6, 5, 6, 5, 4, 9, 9, 10, 5, 5, 7, 9, 8, 7, 0,
24
+ 6, 4, 4, 3, 10, 3, 2, 6, 6, 9, 10, 0, 9, 10, 4, 4, 5, 10, 9, 8, 3, 3, 6, 0,
25
+ 6, 5, 5, 3, 10, 4, 3, 6, 7, 10, 10, 1, 10, 9, 5, 4, 5, 9, 10, 9, 4, 3, 6, 0,
26
+ 7, 6, 6, 4, 8, 5, 4, 8, 8, 9, 8, 2, 9, 8, 6, 6, 7, 8, 9, 10, 5, 5, 7, 0,
27
+ 8, 9, 9, 9, 4, 9, 9, 8, 7, 4, 4, 7, 4, 3, 9, 9, 9, 3, 4, 5, 9, 9, 7, 0,
28
+ 7, 9, 9, 9, 3, 9, 9, 7, 6, 4, 3, 8, 4, 2, 9, 9, 8, 3, 3, 5, 9, 9, 6, 0,
29
+ 7, 7, 7, 6, 6, 7, 6, 7, 7, 7, 6, 4, 7, 6, 7, 7, 7, 6, 6, 7, 7, 6, 7, 0,
30
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,
31
+ };
@@ -1,31 +0,0 @@
1
- // TeXshade structural similarity (sidechain volume + hydropathy; 0..10).
2
- // Row/column order: A R N D C Q E G H I L K M F P S T W Y V B Z X *
3
- // Generated by bench/gen_matrices.py -- do not edit by hand.
4
- static const int32_t kStructuralSize = 24;
5
- static const int32_t kStructural[24 * 24] = {
6
- // A R N D C Q E G H I L K M F P S T W Y V B Z X *
7
- 10, 3, 5, 6, 3, 5, 6, 8, 3, 3, 3, 5, 5, 5, 8, 8, 8, 3, 3, 8, 6, 6, 5, 0,
8
- 3, 10, 5, 3, 3, 5, 5, 5, 6, 3, 3, 8, 3, 1, 5, 5, 5, 3, 1, 3, 4, 5, 4, 0,
9
- 5, 5, 10, 8, 3, 5, 6, 5, 6, 3, 1, 6, 1, 3, 3, 8, 6, 0, 5, 3, 9, 6, 5, 0,
10
- 6, 3, 8, 10, 1, 6, 8, 6, 5, 1, 1, 5, 3, 1, 5, 6, 5, 0, 3, 5, 9, 7, 4, 0,
11
- 3, 3, 3, 1, 10, 1, 0, 5, 3, 3, 3, 0, 3, 5, 3, 6, 3, 5, 5, 3, 2, 0, 3, 0,
12
- 5, 5, 5, 6, 1, 10, 6, 3, 6, 1, 3, 6, 3, 1, 5, 5, 5, 1, 3, 3, 6, 8, 4, 0,
13
- 6, 5, 6, 8, 0, 6, 10, 6, 3, 1, 1, 6, 3, 3, 5, 5, 5, 1, 1, 6, 7, 8, 4, 0,
14
- 8, 5, 5, 6, 5, 3, 6, 10, 1, 3, 3, 3, 1, 3, 6, 8, 6, 5, 3, 6, 6, 4, 5, 0,
15
- 3, 6, 6, 5, 3, 6, 3, 1, 10, 3, 5, 5, 3, 3, 5, 5, 3, 1, 5, 1, 6, 4, 4, 0,
16
- 3, 3, 3, 1, 3, 1, 1, 3, 3, 10, 8, 3, 6, 6, 3, 3, 5, 5, 5, 3, 2, 1, 4, 0,
17
- 3, 3, 1, 1, 3, 3, 1, 3, 5, 8, 10, 3, 8, 6, 5, 3, 3, 6, 5, 3, 1, 2, 4, 0,
18
- 5, 8, 6, 5, 0, 6, 6, 3, 5, 3, 3, 10, 3, 1, 3, 5, 6, 1, 1, 5, 6, 6, 4, 0,
19
- 5, 3, 1, 3, 3, 3, 3, 1, 3, 6, 8, 3, 10, 5, 3, 4, 5, 5, 3, 6, 2, 3, 4, 0,
20
- 5, 1, 3, 1, 5, 1, 3, 3, 3, 6, 6, 1, 5, 10, 5, 5, 3, 5, 8, 6, 2, 2, 4, 0,
21
- 8, 5, 3, 5, 3, 5, 5, 6, 5, 3, 5, 3, 3, 5, 10, 6, 6, 3, 3, 6, 4, 5, 5, 0,
22
- 8, 5, 8, 6, 6, 5, 5, 8, 5, 3, 3, 5, 4, 5, 6, 10, 8, 3, 5, 6, 7, 5, 6, 0,
23
- 8, 5, 6, 5, 3, 5, 5, 6, 3, 5, 3, 6, 5, 3, 6, 8, 10, 1, 3, 6, 6, 5, 5, 0,
24
- 3, 3, 0, 0, 5, 1, 1, 5, 1, 5, 6, 1, 5, 5, 3, 3, 1, 10, 5, 5, 0, 1, 3, 0,
25
- 3, 1, 5, 3, 5, 3, 1, 3, 5, 5, 5, 1, 3, 8, 3, 5, 3, 5, 10, 5, 4, 2, 4, 0,
26
- 8, 3, 3, 5, 3, 3, 6, 6, 1, 3, 3, 5, 6, 6, 6, 6, 6, 5, 5, 10, 4, 4, 5, 0,
27
- 6, 4, 9, 9, 2, 6, 7, 6, 6, 2, 1, 6, 2, 2, 4, 7, 6, 0, 4, 4, 9, 6, 4, 0,
28
- 6, 5, 6, 7, 0, 8, 8, 4, 4, 1, 2, 6, 3, 2, 5, 5, 5, 1, 2, 4, 6, 8, 4, 0,
29
- 5, 4, 5, 4, 3, 4, 4, 5, 4, 4, 4, 4, 4, 4, 5, 6, 5, 3, 4, 5, 4, 4, 4, 0,
30
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,
31
- };
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes