tessera-ml 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 (38) hide show
  1. tessera-ml-0.2.0/LICENSE +29 -0
  2. tessera-ml-0.2.0/MANIFEST.in +8 -0
  3. tessera-ml-0.2.0/PKG-INFO +139 -0
  4. tessera-ml-0.2.0/README.md +92 -0
  5. tessera-ml-0.2.0/pyproject.toml +83 -0
  6. tessera-ml-0.2.0/setup.cfg +4 -0
  7. tessera-ml-0.2.0/tessera/__init__.py +13 -0
  8. tessera-ml-0.2.0/tessera/core/__init__.py +88 -0
  9. tessera-ml-0.2.0/tessera/core/checkpoint.py +354 -0
  10. tessera-ml-0.2.0/tessera/core/community.py +1397 -0
  11. tessera-ml-0.2.0/tessera/core/fusion.py +289 -0
  12. tessera-ml-0.2.0/tessera/core/network.py +374 -0
  13. tessera-ml-0.2.0/tessera/core/parallel.py +255 -0
  14. tessera-ml-0.2.0/tessera/core/regime_divergence.py +454 -0
  15. tessera-ml-0.2.0/tessera/core/response_landscape.py +1131 -0
  16. tessera-ml-0.2.0/tessera/core/safety.py +132 -0
  17. tessera-ml-0.2.0/tessera/core/similarity.py +410 -0
  18. tessera-ml-0.2.0/tessera/core/sparse_similarity.py +425 -0
  19. tessera-ml-0.2.0/tessera/core/validation.py +1500 -0
  20. tessera-ml-0.2.0/tessera/core/vectorized.py +104 -0
  21. tessera-ml-0.2.0/tessera/models/__init__.py +27 -0
  22. tessera-ml-0.2.0/tessera/models/autoencoder.py +295 -0
  23. tessera-ml-0.2.0/tessera/models/ensemble.py +423 -0
  24. tessera-ml-0.2.0/tessera/models/gnn.py +223 -0
  25. tessera-ml-0.2.0/tessera/models/lstm.py +199 -0
  26. tessera-ml-0.2.0/tessera/synthetic/__init__.py +23 -0
  27. tessera-ml-0.2.0/tessera/synthetic/landscape.py +502 -0
  28. tessera-ml-0.2.0/tessera/synthetic/outcomes.py +794 -0
  29. tessera-ml-0.2.0/tessera/synthetic/visualize.py +343 -0
  30. tessera-ml-0.2.0/tessera_ml.egg-info/PKG-INFO +139 -0
  31. tessera-ml-0.2.0/tessera_ml.egg-info/SOURCES.txt +36 -0
  32. tessera-ml-0.2.0/tessera_ml.egg-info/dependency_links.txt +1 -0
  33. tessera-ml-0.2.0/tessera_ml.egg-info/requires.txt +24 -0
  34. tessera-ml-0.2.0/tessera_ml.egg-info/top_level.txt +1 -0
  35. tessera-ml-0.2.0/tests/plot_landscape.py +443 -0
  36. tessera-ml-0.2.0/tests/test_generator.py +147 -0
  37. tessera-ml-0.2.0/tests/test_pipeline.py +157 -0
  38. tessera-ml-0.2.0/tests/test_workflow.py +218 -0
@@ -0,0 +1,29 @@
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2025-2026, João F. R. Tonini
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are met:
8
+
9
+ 1. Redistributions of source code must retain the above copyright notice, this
10
+ list of conditions and the following disclaimer.
11
+
12
+ 2. Redistributions in binary form must reproduce the above copyright notice,
13
+ this list of conditions and the following disclaimer in the documentation
14
+ and/or other materials provided with the distribution.
15
+
16
+ 3. Neither the name of the copyright holder nor the names of its
17
+ contributors may be used to endorse or promote products derived from
18
+ this software without specific prior written permission.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,8 @@
1
+ include LICENSE
2
+ include README.md
3
+ include pyproject.toml
4
+ recursive-include tessera *.py
5
+ recursive-include tests *.py
6
+ recursive-exclude data *
7
+ recursive-exclude results *
8
+ recursive-exclude paper *
@@ -0,0 +1,139 @@
1
+ Metadata-Version: 2.1
2
+ Name: tessera-ml
3
+ Version: 0.2.0
4
+ Summary: Topological Entity Similarity Structure for Emergent Response Analysis
5
+ Author-email: "João F. R. Tonini" <jtonini@richmond.edu>
6
+ License: BSD-3-Clause
7
+ Project-URL: Homepage, https://github.com/jtonini/tessera
8
+ Project-URL: Repository, https://github.com/jtonini/tessera
9
+ Project-URL: Documentation, https://github.com/jtonini/tessera#readme
10
+ Project-URL: Issues, https://github.com/jtonini/tessera/issues
11
+ Keywords: machine-learning,graph-neural-networks,similarity-networks,community-detection,binary-classification,regime-divergence,network-topology
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.9
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Topic :: Scientific/Engineering
21
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
22
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
23
+ Requires-Python: >=3.9
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: numpy>=1.21
27
+ Requires-Dist: scipy>=1.7
28
+ Requires-Dist: pandas>=1.3
29
+ Requires-Dist: scikit-learn>=1.0
30
+ Requires-Dist: matplotlib>=3.5
31
+ Provides-Extra: ml
32
+ Requires-Dist: torch>=2.0; extra == "ml"
33
+ Requires-Dist: torch-geometric>=2.3; extra == "ml"
34
+ Requires-Dist: leidenalg>=0.9; extra == "ml"
35
+ Requires-Dist: igraph>=0.10; extra == "ml"
36
+ Provides-Extra: full
37
+ Requires-Dist: torch>=2.0; extra == "full"
38
+ Requires-Dist: torch-geometric>=2.3; extra == "full"
39
+ Requires-Dist: leidenalg>=0.9; extra == "full"
40
+ Requires-Dist: igraph>=0.10; extra == "full"
41
+ Requires-Dist: xgboost>=1.7; extra == "full"
42
+ Requires-Dist: ripser>=0.6; extra == "full"
43
+ Provides-Extra: dev
44
+ Requires-Dist: pytest>=7.0; extra == "dev"
45
+ Requires-Dist: black>=23.0; extra == "dev"
46
+ Requires-Dist: ruff>=0.1; extra == "dev"
47
+
48
+ # TESSERA
49
+
50
+ **Topological Entity Similarity Structure for Emergent Response Analysis**
51
+
52
+ A domain-general framework for detecting and exploiting geometric structure
53
+ in multi-dimensional feature spaces for predictive classification.
54
+
55
+ *Targeting: Nature Computational Science*
56
+
57
+ ## Core Hypothesis
58
+
59
+ When entities are characterized by multi-dimensional features and outcomes
60
+ depend on relational position in feature space, similarity network topology
61
+ carries predictive information that direct feature-based classifiers miss.
62
+
63
+ ## Three Failure Geometries
64
+
65
+ TESSERA detects geometrically distinct response regions in entity similarity
66
+ space:
67
+
68
+ 1. **Ecotone** — responses cluster at boundaries between stable operational
69
+ domains (analogous to ecological transition zones)
70
+ 2. **Isolated cluster** — responses occupy a distinct region, separate from
71
+ main domains
72
+ 3. **Diffuse** — responses scattered within domains, driven by individual
73
+ feature thresholds
74
+
75
+ ## Three Demonstration Domains
76
+
77
+ | | Ecology | Manufacturing | HPC |
78
+ |---|---|---|---|
79
+ | **Entity** | Reef survey | Production run | Job |
80
+ | **Features** | Environmental conditions | Sensor measurements | Resource usage |
81
+ | **Outcome** | Bleaching | Defect | Failure |
82
+ | **Dataset** | Global Coral Bleaching DB | UCI SECOM | Synthetic / NØMAD |
83
+ | **N** | ~35,000 | 1,567 | 5,000+ |
84
+
85
+ ## Validation Protocol
86
+
87
+ 1. **Phase 1 — Ablation**: GNN vs. MLP, RF, XGBoost, LogReg (justify network)
88
+ 2. **Phase 2 — Similarity**: 7 measures compared (Simpson, Cosine, Bray-Curtis,
89
+ Jaccard, Pearson, Euclidean, Mahalanobis)
90
+ 3. **Phase 3 — Bin sensitivity**: n_bins = 2, 3, 4, 5 (Simpson only)
91
+ 4. **Phase 4 — Temporal**: 5-fold temporal cross-validation
92
+
93
+ ## Project Structure
94
+
95
+ ```
96
+ tessera/
97
+ ├── __init__.py # Package init (v0.1.0)
98
+ ├── core/
99
+ │ ├── __init__.py
100
+ │ ├── similarity.py # 7 similarity measures
101
+ │ └── network.py # Graph construction (threshold, kNN, weighted)
102
+ ├── synthetic/
103
+ │ ├── __init__.py
104
+ │ ├── landscape.py # Feature space topology builder
105
+ │ ├── outcomes.py # Failure pattern assignment (3 types + mixed)
106
+ │ └── visualize.py # Diagnostic plots
107
+ ├── data_acquisition.py # Real dataset download & preprocessing
108
+ ├── test_generator.py # Synthetic data validation
109
+ └── test_pipeline.py # End-to-end pipeline test
110
+ ```
111
+
112
+ ## Current Status
113
+
114
+ - [x] Synthetic data generator (3 patterns + mixed, with entity injection)
115
+ - [x] Similarity engine (7 measures, vectorized)
116
+ - [x] Network construction (threshold, kNN, weighted)
117
+ - [x] Pipeline validation (data → similarity → graph)
118
+ - [ ] GNN model
119
+ - [ ] Real dataset acquisition (coral bleaching, SECOM)
120
+ - [ ] Validation pipeline (4 phases)
121
+ - [ ] Methods section
122
+ - [ ] Results
123
+ - [ ] Introduction, Discussion, Conclusions
124
+
125
+ ## Paper Writing Order
126
+
127
+ 1. Methods
128
+ 2. Results
129
+ 3. Introduction
130
+ 4. Discussion
131
+ 5. Conclusions
132
+ 6. Abstract (last)
133
+
134
+ ## References
135
+
136
+ - van Woesik, R. & Kratochwill, C. (2022). A global coral-bleaching database,
137
+ 1980–2020. *Scientific Data*, 9(20).
138
+ - McCann, M. & Johnston, A. (2008). SECOM Dataset. UCI ML Repository.
139
+ - Tonini, J. (2025). NØMAD-HPC. *Journal of Open Research Software*.
@@ -0,0 +1,92 @@
1
+ # TESSERA
2
+
3
+ **Topological Entity Similarity Structure for Emergent Response Analysis**
4
+
5
+ A domain-general framework for detecting and exploiting geometric structure
6
+ in multi-dimensional feature spaces for predictive classification.
7
+
8
+ *Targeting: Nature Computational Science*
9
+
10
+ ## Core Hypothesis
11
+
12
+ When entities are characterized by multi-dimensional features and outcomes
13
+ depend on relational position in feature space, similarity network topology
14
+ carries predictive information that direct feature-based classifiers miss.
15
+
16
+ ## Three Failure Geometries
17
+
18
+ TESSERA detects geometrically distinct response regions in entity similarity
19
+ space:
20
+
21
+ 1. **Ecotone** — responses cluster at boundaries between stable operational
22
+ domains (analogous to ecological transition zones)
23
+ 2. **Isolated cluster** — responses occupy a distinct region, separate from
24
+ main domains
25
+ 3. **Diffuse** — responses scattered within domains, driven by individual
26
+ feature thresholds
27
+
28
+ ## Three Demonstration Domains
29
+
30
+ | | Ecology | Manufacturing | HPC |
31
+ |---|---|---|---|
32
+ | **Entity** | Reef survey | Production run | Job |
33
+ | **Features** | Environmental conditions | Sensor measurements | Resource usage |
34
+ | **Outcome** | Bleaching | Defect | Failure |
35
+ | **Dataset** | Global Coral Bleaching DB | UCI SECOM | Synthetic / NØMAD |
36
+ | **N** | ~35,000 | 1,567 | 5,000+ |
37
+
38
+ ## Validation Protocol
39
+
40
+ 1. **Phase 1 — Ablation**: GNN vs. MLP, RF, XGBoost, LogReg (justify network)
41
+ 2. **Phase 2 — Similarity**: 7 measures compared (Simpson, Cosine, Bray-Curtis,
42
+ Jaccard, Pearson, Euclidean, Mahalanobis)
43
+ 3. **Phase 3 — Bin sensitivity**: n_bins = 2, 3, 4, 5 (Simpson only)
44
+ 4. **Phase 4 — Temporal**: 5-fold temporal cross-validation
45
+
46
+ ## Project Structure
47
+
48
+ ```
49
+ tessera/
50
+ ├── __init__.py # Package init (v0.1.0)
51
+ ├── core/
52
+ │ ├── __init__.py
53
+ │ ├── similarity.py # 7 similarity measures
54
+ │ └── network.py # Graph construction (threshold, kNN, weighted)
55
+ ├── synthetic/
56
+ │ ├── __init__.py
57
+ │ ├── landscape.py # Feature space topology builder
58
+ │ ├── outcomes.py # Failure pattern assignment (3 types + mixed)
59
+ │ └── visualize.py # Diagnostic plots
60
+ ├── data_acquisition.py # Real dataset download & preprocessing
61
+ ├── test_generator.py # Synthetic data validation
62
+ └── test_pipeline.py # End-to-end pipeline test
63
+ ```
64
+
65
+ ## Current Status
66
+
67
+ - [x] Synthetic data generator (3 patterns + mixed, with entity injection)
68
+ - [x] Similarity engine (7 measures, vectorized)
69
+ - [x] Network construction (threshold, kNN, weighted)
70
+ - [x] Pipeline validation (data → similarity → graph)
71
+ - [ ] GNN model
72
+ - [ ] Real dataset acquisition (coral bleaching, SECOM)
73
+ - [ ] Validation pipeline (4 phases)
74
+ - [ ] Methods section
75
+ - [ ] Results
76
+ - [ ] Introduction, Discussion, Conclusions
77
+
78
+ ## Paper Writing Order
79
+
80
+ 1. Methods
81
+ 2. Results
82
+ 3. Introduction
83
+ 4. Discussion
84
+ 5. Conclusions
85
+ 6. Abstract (last)
86
+
87
+ ## References
88
+
89
+ - van Woesik, R. & Kratochwill, C. (2022). A global coral-bleaching database,
90
+ 1980–2020. *Scientific Data*, 9(20).
91
+ - McCann, M. & Johnston, A. (2008). SECOM Dataset. UCI ML Repository.
92
+ - Tonini, J. (2025). NØMAD-HPC. *Journal of Open Research Software*.
@@ -0,0 +1,83 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68.0,<69.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "tessera-ml"
7
+ version = "0.2.0"
8
+ description = "Topological Entity Similarity Structure for Emergent Response Analysis"
9
+ readme = "README.md"
10
+ requires-python = ">=3.9"
11
+ license = {text = "BSD-3-Clause"}
12
+ authors = [
13
+ {name = "João F. R. Tonini", email = "jtonini@richmond.edu"},
14
+ ]
15
+ keywords = [
16
+ "machine-learning",
17
+ "graph-neural-networks",
18
+ "similarity-networks",
19
+ "community-detection",
20
+ "binary-classification",
21
+ "regime-divergence",
22
+ "network-topology",
23
+ ]
24
+ classifiers = [
25
+ "Development Status :: 4 - Beta",
26
+ "Intended Audience :: Science/Research",
27
+ "Operating System :: OS Independent",
28
+ "Programming Language :: Python :: 3",
29
+ "Programming Language :: Python :: 3.9",
30
+ "Programming Language :: Python :: 3.10",
31
+ "Programming Language :: Python :: 3.11",
32
+ "Programming Language :: Python :: 3.12",
33
+ "Topic :: Scientific/Engineering",
34
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
35
+ "Topic :: Scientific/Engineering :: Information Analysis",
36
+ ]
37
+ dependencies = [
38
+ "numpy>=1.21",
39
+ "scipy>=1.7",
40
+ "pandas>=1.3",
41
+ "scikit-learn>=1.0",
42
+ "matplotlib>=3.5",
43
+ ]
44
+
45
+ [project.optional-dependencies]
46
+ ml = [
47
+ "torch>=2.0",
48
+ "torch-geometric>=2.3",
49
+ "leidenalg>=0.9",
50
+ "igraph>=0.10",
51
+ ]
52
+ full = [
53
+ "torch>=2.0",
54
+ "torch-geometric>=2.3",
55
+ "leidenalg>=0.9",
56
+ "igraph>=0.10",
57
+ "xgboost>=1.7",
58
+ "ripser>=0.6",
59
+ ]
60
+ dev = [
61
+ "pytest>=7.0",
62
+ "black>=23.0",
63
+ "ruff>=0.1",
64
+ ]
65
+
66
+ [project.urls]
67
+ Homepage = "https://github.com/jtonini/tessera"
68
+ Repository = "https://github.com/jtonini/tessera"
69
+ Documentation = "https://github.com/jtonini/tessera#readme"
70
+ Issues = "https://github.com/jtonini/tessera/issues"
71
+
72
+ [tool.setuptools.packages.find]
73
+ include = ["tessera*"]
74
+
75
+ [tool.ruff]
76
+ line-length = 100
77
+ target-version = "py39"
78
+
79
+ [tool.ruff.lint]
80
+ select = ["E", "F", "W", "I"]
81
+
82
+ [tool.pytest.ini_options]
83
+ testpaths = ["tests"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,13 @@
1
+ """
2
+ TESSERA - Topological Entity Similarity Structure for Emergent Response Analysis
3
+
4
+ A domain-general framework for detecting and exploiting geometric structure
5
+ in multi-dimensional feature spaces for predictive classification.
6
+
7
+ Modules:
8
+ - tessera.core: Similarity, network, community detection, regime divergence
9
+ - tessera.synthetic: Synthetic data generation
10
+ - tessera.models: GNN, LSTM, Autoencoder, Ensemble
11
+ """
12
+
13
+ __version__ = "0.2.0"
@@ -0,0 +1,88 @@
1
+ """
2
+ TESSERA Core Module
3
+
4
+ Similarity computation, network construction, community detection,
5
+ regime divergence analysis, temporal persistence, and response
6
+ landscape spatial methods.
7
+ """
8
+
9
+ from .similarity import SimilarityEngine, compute_similarity_batch
10
+ from .network import NetworkBuilder, TesseraGraph
11
+ from .community import (
12
+ CommunityDetector,
13
+ CommunityStructure,
14
+ NJTree,
15
+ PersistenceResult,
16
+ CommunityPersistenceAnalyzer,
17
+ StochasticEventDiagnostics,
18
+ StochasticEventReport,
19
+ EntityDisplacement,
20
+ )
21
+ from .regime_divergence import RegimeDivergenceComputer, RegimeDivergenceMap
22
+ from .response_landscape import (
23
+ ReferenceLandscapeBuilder,
24
+ ResponseSurface,
25
+ GradientFieldAnalyzer,
26
+ GradientAnalysis,
27
+ PersistentHomologyAnalyzer,
28
+ TopologicalFeatures,
29
+ SpatialScanStatistic,
30
+ ScanResult,
31
+ )
32
+ from .fusion import SimilarityFusion, FusionResult
33
+ from .parallel import TesseraParallel, parallel_config, ParallelConfig
34
+ from .safety import safe_array, safe_similarity_matrix, safe_probabilities
35
+ from .checkpoint import CheckpointManager, get_or_create_checkpoint
36
+ from .sparse_similarity import SparseSimilarity, SparseKNNResult, compute_sparse_knn_batch
37
+ from .validation import (
38
+ AblationRunner,
39
+ AblationResult,
40
+ SimilarityComparisonRunner,
41
+ SimilarityComparisonResult,
42
+ BinSensitivityRunner,
43
+ BinSensitivityResult,
44
+ TemporalCVRunner,
45
+ TemporalCVResult,
46
+ compute_metrics,
47
+ EvalMetrics,
48
+ )
49
+
50
+ __all__ = [
51
+ "SimilarityEngine",
52
+ "compute_similarity_batch",
53
+ "NetworkBuilder",
54
+ "TesseraGraph",
55
+ "CommunityDetector",
56
+ "CommunityStructure",
57
+ "NJTree",
58
+ "PersistenceResult",
59
+ "CommunityPersistenceAnalyzer",
60
+ "StochasticEventDiagnostics",
61
+ "StochasticEventReport",
62
+ "EntityDisplacement",
63
+ "RegimeDivergenceComputer",
64
+ "RegimeDivergenceMap",
65
+ "ReferenceLandscapeBuilder",
66
+ "ResponseSurface",
67
+ "GradientFieldAnalyzer",
68
+ "GradientAnalysis",
69
+ "PersistentHomologyAnalyzer",
70
+ "TopologicalFeatures",
71
+ "SpatialScanStatistic",
72
+ "ScanResult",
73
+ "SimilarityFusion",
74
+ "FusionResult",
75
+ "TesseraParallel",
76
+ "parallel_config",
77
+ "ParallelConfig",
78
+ "AblationRunner",
79
+ "AblationResult",
80
+ "SimilarityComparisonRunner",
81
+ "SimilarityComparisonResult",
82
+ "BinSensitivityRunner",
83
+ "BinSensitivityResult",
84
+ "TemporalCVRunner",
85
+ "TemporalCVResult",
86
+ "compute_metrics",
87
+ "EvalMetrics",
88
+ ]