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.
Files changed (129) hide show
  1. {pyod-3.3.0/pyod.egg-info → pyod-3.4.0}/PKG-INFO +4 -4
  2. {pyod-3.3.0 → pyod-3.4.0}/README.rst +3 -3
  3. {pyod-3.3.0 → pyod-3.4.0}/pyod/mcp_server.py +461 -283
  4. {pyod-3.3.0 → pyod-3.4.0}/pyod/skills/od_expert/references/workflow.md +237 -220
  5. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/_nl_feedback.py +451 -349
  6. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/_quality_metrics.py +500 -408
  7. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/ad_engine.py +1639 -1224
  8. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/investigation.py +76 -75
  9. {pyod-3.3.0 → pyod-3.4.0}/pyod/version.py +1 -1
  10. {pyod-3.3.0 → pyod-3.4.0/pyod.egg-info}/PKG-INFO +4 -4
  11. {pyod-3.3.0 → pyod-3.4.0}/LICENSE +0 -0
  12. {pyod-3.3.0 → pyod-3.4.0}/MANIFEST.in +0 -0
  13. {pyod-3.3.0 → pyod-3.4.0}/pyod/__init__.py +0 -0
  14. {pyod-3.3.0 → pyod-3.4.0}/pyod/cli.py +0 -0
  15. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/__init__.py +0 -0
  16. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/_pyg_utils.py +0 -0
  17. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/_ts_utils.py +0 -0
  18. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/abod.py +0 -0
  19. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ae1svm.py +0 -0
  20. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/alad.py +0 -0
  21. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/anogan.py +0 -0
  22. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/auto_encoder.py +0 -0
  23. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/base.py +0 -0
  24. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/base_dl.py +0 -0
  25. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/cblof.py +0 -0
  26. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/cd.py +0 -0
  27. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/cof.py +0 -0
  28. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/combination.py +0 -0
  29. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/copod.py +0 -0
  30. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/deep_svdd.py +0 -0
  31. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/devnet.py +0 -0
  32. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/dif.py +0 -0
  33. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ecod.py +0 -0
  34. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/embedding.py +0 -0
  35. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/feature_bagging.py +0 -0
  36. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/gaal_base.py +0 -0
  37. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/gmm.py +0 -0
  38. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/hbos.py +0 -0
  39. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/hdbscan.py +0 -0
  40. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/iforest.py +0 -0
  41. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/inne.py +0 -0
  42. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/kde.py +0 -0
  43. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/knn.py +0 -0
  44. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/kpca.py +0 -0
  45. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/lmdd.py +0 -0
  46. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/loci.py +0 -0
  47. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/loda.py +0 -0
  48. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/lof.py +0 -0
  49. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/lscp.py +0 -0
  50. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/lunar.py +0 -0
  51. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/mad.py +0 -0
  52. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/mcd.py +0 -0
  53. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/mo_gaal.py +0 -0
  54. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ocsvm.py +0 -0
  55. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/pca.py +0 -0
  56. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/pyg_anomalous.py +0 -0
  57. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/pyg_anomalydae.py +0 -0
  58. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/pyg_cola.py +0 -0
  59. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/pyg_conad.py +0 -0
  60. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/pyg_dominant.py +0 -0
  61. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/pyg_guide.py +0 -0
  62. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/pyg_radar.py +0 -0
  63. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/pyg_scan.py +0 -0
  64. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/qmcd.py +0 -0
  65. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/rgraph.py +0 -0
  66. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/rod.py +0 -0
  67. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/sampling.py +0 -0
  68. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/sklearn_base.py +0 -0
  69. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/so_gaal.py +0 -0
  70. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/so_gaal_new.py +0 -0
  71. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/sod.py +0 -0
  72. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/sos.py +0 -0
  73. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/suod.py +0 -0
  74. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/thresholds.py +0 -0
  75. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ts_anomaly_transformer.py +0 -0
  76. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ts_kshape.py +0 -0
  77. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ts_lstm.py +0 -0
  78. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ts_matrix_profile.py +0 -0
  79. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ts_od.py +0 -0
  80. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ts_sand.py +0 -0
  81. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/ts_spectral_residual.py +0 -0
  82. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/vae.py +0 -0
  83. {pyod-3.3.0 → pyod-3.4.0}/pyod/models/xgbod.py +0 -0
  84. {pyod-3.3.0 → pyod-3.4.0}/pyod/skills/__init__.py +0 -0
  85. {pyod-3.3.0 → pyod-3.4.0}/pyod/skills/od_expert/SKILL.md +0 -0
  86. {pyod-3.3.0 → pyod-3.4.0}/pyod/skills/od_expert/__init__.py +0 -0
  87. {pyod-3.3.0 → pyod-3.4.0}/pyod/skills/od_expert/references/graph.md +0 -0
  88. {pyod-3.3.0 → pyod-3.4.0}/pyod/skills/od_expert/references/pitfalls.md +0 -0
  89. {pyod-3.3.0 → pyod-3.4.0}/pyod/skills/od_expert/references/tabular.md +0 -0
  90. {pyod-3.3.0 → pyod-3.4.0}/pyod/skills/od_expert/references/text_image.md +0 -0
  91. {pyod-3.3.0 → pyod-3.4.0}/pyod/skills/od_expert/references/time_series.md +0 -0
  92. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/__init__.py +0 -0
  93. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/_detector_factory.py +0 -0
  94. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/_kb_router.py +0 -0
  95. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/auto_model_selector.py +0 -0
  96. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/data.py +0 -0
  97. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/encoders/__init__.py +0 -0
  98. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/encoders/huggingface.py +0 -0
  99. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/encoders/openai_encoder.py +0 -0
  100. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/encoders/sentence_transformer.py +0 -0
  101. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/example.py +0 -0
  102. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/knowledge/__init__.py +0 -0
  103. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/knowledge/algorithms.json +0 -0
  104. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/knowledge/benchmarks.json +0 -0
  105. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/knowledge/papers.json +0 -0
  106. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/knowledge/routing_rules.json +0 -0
  107. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/AE1SVM.json +0 -0
  108. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/ALAD.json +0 -0
  109. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/AnoGAN.json +0 -0
  110. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/AutoEncoder.json +0 -0
  111. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/Deep SVDD.json +0 -0
  112. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/DevNet.json +0 -0
  113. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/LUNAR.json +0 -0
  114. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/MO-GAAL.json +0 -0
  115. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/SO-GAAL.json +0 -0
  116. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/VAE.json +0 -0
  117. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/__init__.py +0 -0
  118. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/stat_models.py +0 -0
  119. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/torch_utility.py +0 -0
  120. {pyod-3.3.0 → pyod-3.4.0}/pyod/utils/utility.py +0 -0
  121. {pyod-3.3.0 → pyod-3.4.0}/pyod.egg-info/SOURCES.txt +0 -0
  122. {pyod-3.3.0 → pyod-3.4.0}/pyod.egg-info/dependency_links.txt +0 -0
  123. {pyod-3.3.0 → pyod-3.4.0}/pyod.egg-info/entry_points.txt +0 -0
  124. {pyod-3.3.0 → pyod-3.4.0}/pyod.egg-info/requires.txt +0 -0
  125. {pyod-3.3.0 → pyod-3.4.0}/pyod.egg-info/top_level.txt +0 -0
  126. {pyod-3.3.0 → pyod-3.4.0}/pyproject.toml +0 -0
  127. {pyod-3.3.0 → pyod-3.4.0}/requirements.txt +0 -0
  128. {pyod-3.3.0 → pyod-3.4.0}/setup.cfg +0 -0
  129. {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.0
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 now agentic.** Any AI agent can drive an expert-level anomaly detection investigation on your data in plain English. The classic ``fit``/``predict`` API stays unchanged.
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 Ask in plain English, and AI agents run expert-level detection without OD expertise
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 adds two agentic activation paths: the ``od-expert`` skill for Claude Code and Codex, and an MCP server (``python -m pyod.mcp_server``) that works with any MCP-compatible LLM out of the box. See the Install block above for detailed setup instructions.
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 now agentic.** Any AI agent can drive an expert-level anomaly detection investigation on your data in plain English. The classic ``fit``/``predict`` API stays unchanged.
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 Ask in plain English, and AI agents run expert-level detection without OD expertise
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 adds two agentic activation paths: the ``od-expert`` skill for Claude Code and Codex, and an MCP server (``python -m pyod.mcp_server``) that works with any MCP-compatible LLM out of the box. See the Install block above for detailed setup instructions.
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