pyod 3.3.0__tar.gz → 3.4.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.
- {pyod-3.3.0/pyod.egg-info → pyod-3.4.0}/PKG-INFO +4 -4
- {pyod-3.3.0 → pyod-3.4.0}/README.rst +3 -3
- {pyod-3.3.0 → pyod-3.4.0}/pyod/mcp_server.py +461 -283
- {pyod-3.3.0 → pyod-3.4.0}/pyod/skills/od_expert/references/workflow.md +237 -220
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/_nl_feedback.py +451 -349
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/_quality_metrics.py +500 -408
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/ad_engine.py +1639 -1224
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/investigation.py +76 -75
- {pyod-3.3.0 → pyod-3.4.0}/pyod/version.py +1 -1
- {pyod-3.3.0 → pyod-3.4.0/pyod.egg-info}/PKG-INFO +4 -4
- {pyod-3.3.0 → pyod-3.4.0}/LICENSE +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/MANIFEST.in +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/__init__.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/cli.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/__init__.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/_pyg_utils.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/_ts_utils.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/abod.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ae1svm.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/alad.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/anogan.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/auto_encoder.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/base.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/base_dl.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/cblof.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/cd.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/cof.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/combination.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/copod.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/deep_svdd.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/devnet.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/dif.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ecod.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/embedding.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/feature_bagging.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/gaal_base.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/gmm.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/hbos.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/hdbscan.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/iforest.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/inne.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/kde.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/knn.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/kpca.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/lmdd.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/loci.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/loda.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/lof.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/lscp.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/lunar.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/mad.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/mcd.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/mo_gaal.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ocsvm.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/pca.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/pyg_anomalous.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/pyg_anomalydae.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/pyg_cola.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/pyg_conad.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/pyg_dominant.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/pyg_guide.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/pyg_radar.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/pyg_scan.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/qmcd.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/rgraph.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/rod.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/sampling.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/sklearn_base.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/so_gaal.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/so_gaal_new.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/sod.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/sos.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/suod.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/thresholds.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ts_anomaly_transformer.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ts_kshape.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ts_lstm.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ts_matrix_profile.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ts_od.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ts_sand.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ts_spectral_residual.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/vae.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/models/xgbod.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/skills/__init__.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/skills/od_expert/SKILL.md +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/skills/od_expert/__init__.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/skills/od_expert/references/graph.md +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/skills/od_expert/references/pitfalls.md +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/skills/od_expert/references/tabular.md +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/skills/od_expert/references/text_image.md +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/skills/od_expert/references/time_series.md +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/__init__.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/_detector_factory.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/_kb_router.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/auto_model_selector.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/data.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/encoders/__init__.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/encoders/huggingface.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/encoders/openai_encoder.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/encoders/sentence_transformer.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/example.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/knowledge/__init__.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/knowledge/algorithms.json +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/knowledge/benchmarks.json +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/knowledge/papers.json +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/knowledge/routing_rules.json +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/AE1SVM.json +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/ALAD.json +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/AnoGAN.json +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/AutoEncoder.json +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/Deep SVDD.json +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/DevNet.json +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/LUNAR.json +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/MO-GAAL.json +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/SO-GAAL.json +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/VAE.json +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/__init__.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/stat_models.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/torch_utility.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/utility.py +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod.egg-info/SOURCES.txt +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod.egg-info/dependency_links.txt +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod.egg-info/entry_points.txt +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod.egg-info/requires.txt +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyod.egg-info/top_level.txt +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/pyproject.toml +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/requirements.txt +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/setup.cfg +0 -0
- {pyod-3.3.0 → pyod-3.4.0}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyod
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.4.0
|
|
4
4
|
Summary: A Python library for anomaly detection across tabular, time series, graph, text, and image data. 60+ detectors, benchmark-backed ADEngine orchestration, and an agentic workflow for AI agents.
|
|
5
5
|
Author-email: Yue Zhao <yzhao062@gmail.com>
|
|
6
6
|
License-Expression: BSD-2-Clause
|
|
@@ -122,7 +122,7 @@ Python Outlier Detection (PyOD) 3
|
|
|
122
122
|
|
|
123
123
|
-----
|
|
124
124
|
|
|
125
|
-
**PyOD is
|
|
125
|
+
**PyOD is agent-ready.** Claude Code and Codex can use the ``od-expert`` skill to drive ADEngine investigations, while MCP-compatible agents can query PyOD's detector knowledge and planning tools. The classic ``fit``/``predict`` API stays unchanged.
|
|
126
126
|
|
|
127
127
|
-----
|
|
128
128
|
|
|
@@ -133,7 +133,7 @@ Pillar What it means
|
|
|
133
133
|
=========================== ========================================================================================
|
|
134
134
|
Multi-Modal 60+ detectors across **tabular, time series, graph, text, and image** data, one API
|
|
135
135
|
Full Lifecycle From raw data to explained anomalies and next-step guidance in a single call
|
|
136
|
-
Agentic
|
|
136
|
+
Agentic ``od-expert`` turns natural-language requests into ADEngine workflows; MCP exposes structured tools for other agents
|
|
137
137
|
Most Used 38+ million downloads; benchmark-backed routing (ADBench, TSB-AD, BOND, NLP-ADBench)
|
|
138
138
|
=========================== ========================================================================================
|
|
139
139
|
|
|
@@ -191,7 +191,7 @@ Layer Name When to use
|
|
|
191
191
|
3 Agentic Investigation You want an AI agent to drive OD through natural conversation `Layer 3 walkthrough <https://pyod.readthedocs.io/en/latest/examples/agentic.html>`__
|
|
192
192
|
========= ===================== ====================================================================== =======================================
|
|
193
193
|
|
|
194
|
-
Layers 2 and 3 are powered by ``ADEngine``, PyOD's intelligent orchestration core. Layer 3
|
|
194
|
+
Layers 2 and 3 are powered by ``ADEngine``, PyOD's intelligent orchestration core. The full multi-turn Layer 3 investigation flow is available through the ``od-expert`` skill for Claude Code and Codex. The MCP server (``python -m pyod.mcp_server``) exposes ten stateless tools for MCP-compatible LLMs, spanning knowledge queries (``list_detectors``, ``explain_detector``, ``compare_detectors``, ``get_benchmarks``), planning (``profile_data``, ``plan_detection``, ``build_detector``), and detection (``run_detection``, ``analyze_results``, ``explain_findings``); stateful ``investigate`` / ``iterate`` MCP tools are deferred.
|
|
195
195
|
|
|
196
196
|
.. image:: https://raw.githubusercontent.com/yzhao062/pyod/development/docs/figs/agentic-demo.png
|
|
197
197
|
:alt: PyOD 3 agentic investigation demo on cardiotocography dataset
|
|
@@ -53,7 +53,7 @@ Python Outlier Detection (PyOD) 3
|
|
|
53
53
|
|
|
54
54
|
-----
|
|
55
55
|
|
|
56
|
-
**PyOD is
|
|
56
|
+
**PyOD is agent-ready.** Claude Code and Codex can use the ``od-expert`` skill to drive ADEngine investigations, while MCP-compatible agents can query PyOD's detector knowledge and planning tools. The classic ``fit``/``predict`` API stays unchanged.
|
|
57
57
|
|
|
58
58
|
-----
|
|
59
59
|
|
|
@@ -64,7 +64,7 @@ Pillar What it means
|
|
|
64
64
|
=========================== ========================================================================================
|
|
65
65
|
Multi-Modal 60+ detectors across **tabular, time series, graph, text, and image** data, one API
|
|
66
66
|
Full Lifecycle From raw data to explained anomalies and next-step guidance in a single call
|
|
67
|
-
Agentic
|
|
67
|
+
Agentic ``od-expert`` turns natural-language requests into ADEngine workflows; MCP exposes structured tools for other agents
|
|
68
68
|
Most Used 38+ million downloads; benchmark-backed routing (ADBench, TSB-AD, BOND, NLP-ADBench)
|
|
69
69
|
=========================== ========================================================================================
|
|
70
70
|
|
|
@@ -122,7 +122,7 @@ Layer Name When to use
|
|
|
122
122
|
3 Agentic Investigation You want an AI agent to drive OD through natural conversation `Layer 3 walkthrough <https://pyod.readthedocs.io/en/latest/examples/agentic.html>`__
|
|
123
123
|
========= ===================== ====================================================================== =======================================
|
|
124
124
|
|
|
125
|
-
Layers 2 and 3 are powered by ``ADEngine``, PyOD's intelligent orchestration core. Layer 3
|
|
125
|
+
Layers 2 and 3 are powered by ``ADEngine``, PyOD's intelligent orchestration core. The full multi-turn Layer 3 investigation flow is available through the ``od-expert`` skill for Claude Code and Codex. The MCP server (``python -m pyod.mcp_server``) exposes ten stateless tools for MCP-compatible LLMs, spanning knowledge queries (``list_detectors``, ``explain_detector``, ``compare_detectors``, ``get_benchmarks``), planning (``profile_data``, ``plan_detection``, ``build_detector``), and detection (``run_detection``, ``analyze_results``, ``explain_findings``); stateful ``investigate`` / ``iterate`` MCP tools are deferred.
|
|
126
126
|
|
|
127
127
|
.. image:: https://raw.githubusercontent.com/yzhao062/pyod/development/docs/figs/agentic-demo.png
|
|
128
128
|
:alt: PyOD 3 agentic investigation demo on cardiotocography dataset
|